{"version":3,"file":"bundle-content-components.min.js","sources":["bundle-content-components.js"],"sourcesContent":["\"use strict\";\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var content;\r\n (function (content) {\r\n function initColorSwap(containerEl, swapEl) {\r\n if (!swapEl)\r\n swapEl = containerEl;\r\n var bgColor = swapEl.style.backgroundColor;\r\n var color = swapEl.style.color;\r\n var swapColor = function () {\r\n if (swapEl.style.backgroundColor === bgColor) {\r\n swapEl.style.backgroundColor = color;\r\n swapEl.style.color = bgColor;\r\n }\r\n else {\r\n swapEl.style.backgroundColor = bgColor;\r\n swapEl.style.color = color;\r\n }\r\n };\r\n var disposableEvents = eXpress.utils.compositeDisposable([\r\n eXpress.html.addEventListener(containerEl, 'mouseover', swapColor),\r\n eXpress.html.addEventListener(containerEl, 'mouseout', swapColor)\r\n ]);\r\n return {\r\n dispose: function () { return disposableEvents.dispose(); }\r\n };\r\n }\r\n content.initColorSwap = initColorSwap;\r\n })(content = components.content || (components.content = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var content;\r\n (function (content) {\r\n function createExternalEditor(editorElement, priceElement, deps) {\r\n var castedEditorElement = editorElement;\r\n var externalOrder;\r\n var currentPvc;\r\n var amount = 1;\r\n var quantityParam = eXpress.utils.getParameter(\"quantity\", window.location.href, false);\r\n if (quantityParam)\r\n amount = Number(quantityParam);\r\n var getPrice = deps.getPrice, getPvcByExternalCode = deps.getPvcByExternalCode, addToBasket = deps.addToBasket;\r\n var countColoredImages = function (text) {\r\n var textItems = text.split(';');\r\n var regex = new RegExp(\"^([0-9]{2,})([a-zA-Z])$\");\r\n return textItems.filter(function (t) { return t !== '*' && regex.test(t) && t.slice(-1).toLowerCase() === 'p'; }).length;\r\n };\r\n castedEditorElement.addEventListener(\"onOrderChanged\", function (event) {\r\n });\r\n castedEditorElement.onUpdate = function (o) {\r\n externalOrder = o;\r\n getPvcByExternalCode(o.itemcode).then(function (res) {\r\n currentPvc = res;\r\n getPrice(currentPvc, amount, countColoredImages(o.telegramtext)).then(function (res) {\r\n priceElement.innerHTML = eXpress.utils.getPriceString(res.price.amount, res.price.currency);\r\n updatePriceToolTips(res);\r\n });\r\n });\r\n };\r\n var updatePriceToolTips = function (data) {\r\n var tooltip = eXpress.html.querySelector(document, '.technical-price-tooltip', false);\r\n if (!tooltip)\r\n return;\r\n var priceContainer = eXpress.html.querySelector(tooltip, '.technical-price-container', true);\r\n var priceTemplate = eXpress.html.querySelectorAll(tooltip, '.technical-price-template')[0];\r\n priceContainer.innerHTML = \"\";\r\n priceContainer.appendChild(priceTemplate);\r\n data.priceItems.forEach(function (item) {\r\n if (!item.description && !item.calculationDescription && !item.itemTotal)\r\n return;\r\n var newCloneFromTemplate = priceTemplate.cloneNode(true);\r\n newCloneFromTemplate.style.display = \"\";\r\n var description = eXpress.html.querySelector(newCloneFromTemplate, '.technical-price-tooltip-description', true);\r\n item.description ? description.innerHTML = item.description : description.remove();\r\n var calculation = eXpress.html.querySelector(newCloneFromTemplate, '.technical-price-tooltip-calculation', true);\r\n item.calculationDescription ? calculation.innerHTML = item.calculationDescription : calculation.remove();\r\n var result = eXpress.html.querySelector(newCloneFromTemplate, '.technical-price-tooltip-result', true);\r\n item.itemTotal ? result.innerHTML = item.itemTotal : result.remove();\r\n priceContainer.append(newCloneFromTemplate);\r\n });\r\n };\r\n document.addEventListener('DOMContentLoaded', function () {\r\n castedEditorElement.order = {\r\n itemcode: castedEditorElement.dataset[\"externalcode\"] || '',\r\n telegramtext: castedEditorElement.dataset[\"text\"] || '',\r\n };\r\n var priceTooltipEls = eXpress.html.querySelectorAll(document, \".technical-price-tooltip\");\r\n var tooltips = priceTooltipEls.map(function (tooltip) {\r\n return {\r\n buttonEl: eXpress.html.querySelector(tooltip, '.technical-price-tooltip-close', true),\r\n containerEl: eXpress.html.querySelector(tooltip, '.technical-price-tooltip-collapsible', true)\r\n };\r\n });\r\n tooltips.forEach(components.main.initTooltip);\r\n var addToBaskets = document.getElementsByClassName('technical-to-basket');\r\n for (var i = 0; i < addToBaskets.length; i++) {\r\n addToBaskets[i].classList.remove('u-hide');\r\n addToBaskets[i].addEventListener('click', function () {\r\n if (externalOrder) {\r\n addToBasket(externalOrder.itemcode, externalOrder.telegramtext, amount, countColoredImages(externalOrder.telegramtext));\r\n }\r\n });\r\n }\r\n });\r\n }\r\n content.createExternalEditor = createExternalEditor;\r\n })(content = components.content || (components.content = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var content;\r\n (function (content) {\r\n var Device;\r\n (function (Device) {\r\n Device[Device[\"Desktop\"] = 1] = \"Desktop\";\r\n Device[Device[\"Tablet\"] = 2] = \"Tablet\";\r\n Device[Device[\"Mobile\"] = 3] = \"Mobile\";\r\n })(Device = content.Device || (content.Device = {}));\r\n function createHighlightedTiles(containerEl) {\r\n var desktopTileEls = eXpress.html.querySelectorAll(containerEl, \".o-highlighted-tiles__tile:not(.hide-on-desktop):not(.u-hide-on-desktop)\");\r\n var tabletTileEls = eXpress.html.querySelectorAll(containerEl, \".o-highlighted-tiles__tile:not(.hide-on-tablet):not(.u-hide-on-tablet)\");\r\n var truncateEls = eXpress.html.querySelectorAll(containerEl, '.technical-shave');\r\n var tileEl = eXpress.html.querySelectorAll(containerEl, '.o-highlighted-tiles__tile')[0];\r\n var headerAndTilesEl = eXpress.html.querySelector(containerEl, '.o-highlighted-tiles__header_and_tiles', true);\r\n var titleEl = eXpress.html.querySelector(headerAndTilesEl, '.m-header__title', false);\r\n var subTitleEl = eXpress.html.querySelector(headerAndTilesEl, '.m-header__subtitle', false);\r\n var textEl = eXpress.html.querySelector(headerAndTilesEl, '.m-header__text', false);\r\n var eventDisposable;\r\n var currentDevice;\r\n var getDevice = function () {\r\n if (window.innerWidth <= 767) {\r\n return Device.Mobile;\r\n }\r\n else if (window.innerWidth > 768 && window.innerWidth < 960) {\r\n return Device.Tablet;\r\n }\r\n else {\r\n return Device.Desktop;\r\n }\r\n };\r\n var outerHeight = function (el, includeOffset) {\r\n if (includeOffset === void 0) { includeOffset = true; }\r\n var height = includeOffset ? el.offsetHeight : 0;\r\n var style = getComputedStyle(el);\r\n height += parseInt(style.marginTop || '0', 10) + parseInt(style.marginBottom || '0', 10);\r\n return height;\r\n };\r\n var calculateTruncateMaxHeight = function () {\r\n var maxHeight = 0;\r\n maxHeight = outerHeight(tileEl);\r\n titleEl && (maxHeight -= outerHeight(titleEl));\r\n subTitleEl && (maxHeight -= outerHeight(subTitleEl));\r\n textEl && (maxHeight -= outerHeight(textEl, false));\r\n return maxHeight;\r\n };\r\n var getTruncateOptions = function () {\r\n currentDevice = getDevice();\r\n var options = {};\r\n switch (currentDevice) {\r\n case Device.Desktop:\r\n switch (desktopTileEls.length) {\r\n case 0:\r\n case 3:\r\n options.lines = 3;\r\n options.maxHeight = undefined;\r\n break;\r\n default:\r\n options.maxHeight = calculateTruncateMaxHeight();\r\n options.lines = undefined;\r\n break;\r\n }\r\n break;\r\n case Device.Tablet:\r\n switch (tabletTileEls.length) {\r\n case 1:\r\n options.maxHeight = calculateTruncateMaxHeight();\r\n options.lines = undefined;\r\n break;\r\n default:\r\n options.lines = 2;\r\n options.maxHeight = undefined;\r\n break;\r\n }\r\n break;\r\n default:\r\n options.lines = 2;\r\n options.maxHeight = undefined;\r\n break;\r\n }\r\n return options;\r\n };\r\n var onResize = function () {\r\n return currentDevice !== getDevice() &&\r\n truncatedEls.forEach(function (t) { return t.updateConfig(getTruncateOptions()); });\r\n };\r\n var truncatedEls = [];\r\n var init = function () {\r\n truncatedEls = truncateEls.map(function (el) { return content.createTruncate(el, getTruncateOptions()); });\r\n eventDisposable = eXpress.html.addEventListener(window, \"resize\", eXpress.utils.debounce(onResize, 250));\r\n };\r\n document.documentMode\r\n ? eXpress.utils.wait(250).then(function () { return init(); })\r\n : init();\r\n return {\r\n dispose: function () {\r\n eventDisposable.dispose();\r\n truncatedEls.forEach(function (t) { return t.dispose(); });\r\n }\r\n };\r\n }\r\n content.createHighlightedTiles = createHighlightedTiles;\r\n })(content = components.content || (components.content = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var content;\r\n (function (content) {\r\n var ProductSlider = (function () {\r\n function ProductSlider(containerEl, deps) {\r\n this.configSquareSlider = {\r\n slidesToShow: 6,\r\n infinite: false,\r\n arrows: false,\r\n vertical: false,\r\n verticalSwiping: false,\r\n slide: '.technical-slideToShow',\r\n variableWidth: true,\r\n responsive: [\r\n {\r\n breakpoint: 1024,\r\n settings: {\r\n vertical: false,\r\n verticalSwiping: false,\r\n slidesToShow: 5,\r\n slidesToScroll: 1,\r\n infinite: false\r\n }\r\n },\r\n {\r\n breakpoint: 960,\r\n settings: {\r\n vertical: false,\r\n verticalSwiping: false,\r\n slidesToShow: 4,\r\n slidesToScroll: 1,\r\n infinite: false\r\n }\r\n },\r\n {\r\n breakpoint: 768,\r\n settings: {\r\n vertical: false,\r\n verticalSwiping: false,\r\n slidesToShow: 3,\r\n slidesToScroll: 1,\r\n infinite: false\r\n }\r\n },\r\n {\r\n breakpoint: 600,\r\n settings: {\r\n vertical: false,\r\n verticalSwiping: false,\r\n slidesToShow: 2,\r\n slidesToScroll: 1,\r\n infinite: false\r\n }\r\n },\r\n {\r\n breakpoint: 415,\r\n settings: {\r\n vertical: false,\r\n verticalSwiping: false,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n infinite: false\r\n }\r\n }\r\n ]\r\n };\r\n this.configLandscapeSlider = {\r\n slidesToShow: 3,\r\n infinite: false,\r\n arrows: false,\r\n vertical: false,\r\n verticalSwiping: false,\r\n variableWidth: true,\r\n slide: '.technical-slideToShow',\r\n responsive: [\r\n {\r\n breakpoint: 960,\r\n settings: {\r\n vertical: false,\r\n verticalSwiping: false,\r\n slidesToShow: 2,\r\n slidesToScroll: 1,\r\n infinite: false\r\n }\r\n },\r\n {\r\n breakpoint: 600,\r\n settings: {\r\n vertical: false,\r\n verticalSwiping: false,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n infinite: false\r\n }\r\n },\r\n {\r\n breakpoint: 450,\r\n settings: {\r\n vertical: false,\r\n verticalSwiping: false,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n infinite: false\r\n }\r\n }\r\n ]\r\n };\r\n this.sliderEls = eXpress.html.querySelectorAll(containerEl, \".technical-slider\");\r\n var isMobile = deps.isMobile;\r\n this.isMobile = isMobile;\r\n this.mobile = this.isMobile();\r\n this.docWidth = window.innerWidth;\r\n this.ioSlider = this.createIntersectionObserver();\r\n }\r\n ProductSlider.prototype.initProductSliders = function () {\r\n if (this.sliderEls) {\r\n this.setVisibleSlides();\r\n var sliders = this.initSliders();\r\n if (sliders > 0) {\r\n this.addHandlers();\r\n }\r\n }\r\n };\r\n ProductSlider.prototype.setVisibleSlides = function () {\r\n var _this = this;\r\n this.sliderEls.forEach(function (el) {\r\n var technicalSlides = eXpress.html.querySelectorAll(el, \".technical-slide\");\r\n var technicalSlideElsCount = technicalSlides.length;\r\n technicalSlides.forEach(function (slide) { return slide.classList.remove(\"m-product-slider__slide--center-mobile\"); });\r\n var hideMobileSlideElsCount = eXpress.html.querySelectorAll(el, \".u-hide-on-mobile-full\").length;\r\n technicalSlides.forEach(function (slide) {\r\n if (_this.mobile && technicalSlideElsCount - hideMobileSlideElsCount === 1 && !slide.classList.contains(\"u-hide-on-mobile-full\"))\r\n $(slide).addClass(\"m-product-slider__slide--center-mobile\");\r\n if (!slide.classList.contains(\"technical-slideToShow\")) {\r\n $(slide).addClass(\"technical-slideToShow\");\r\n }\r\n });\r\n });\r\n if (this.mobile) {\r\n this.sliderEls.forEach(function (el) {\r\n eXpress.html.querySelectorAll(el, \".u-hide-on-mobile-full\").forEach(function (slide) { return $(slide).removeClass(\"technical-slideToShow\"); });\r\n });\r\n }\r\n else {\r\n this.sliderEls.forEach(function (el) {\r\n eXpress.html.querySelectorAll(el, \".u-hide-on-desktop\").forEach(function (slide) { return $(slide).removeClass(\"technical-slideToShow\"); });\r\n });\r\n }\r\n };\r\n ProductSlider.prototype.initSliders = function () {\r\n var _this = this;\r\n var slidersToInit = this.sliderEls\r\n .filter(function (el) {\r\n return eXpress.html.querySelectorAll(el, \".technical-slideToShow\").length >= 2\r\n && $(el).data(\"slider-format\") !== undefined;\r\n });\r\n if (this.ioSlider) {\r\n slidersToInit.forEach(function (el) { return _this.ioSlider.observe(el); });\r\n }\r\n else {\r\n slidersToInit.filter(function (el) { return $(el).data(\"slider-format\").toLowerCase() === \"square\"; }).forEach(function (el) {\r\n _this.initSquareSlider(el);\r\n });\r\n slidersToInit.filter(function (el) { return $(el).data(\"slider-format\").toLowerCase() === \"landscape\"; }).forEach(function (el) {\r\n _this.initLandscapeSlider(el);\r\n });\r\n }\r\n return slidersToInit.length;\r\n };\r\n ProductSlider.prototype.initSquareSlider = function (el) {\r\n this.initSliderWithConfig(el, this.configSquareSlider);\r\n };\r\n ProductSlider.prototype.initLandscapeSlider = function (el) {\r\n this.configLandscapeSlider.slidesToShow = $(el).data(\"slidestoshow\");\r\n this.initSliderWithConfig(el, this.configLandscapeSlider);\r\n };\r\n ProductSlider.prototype.initSliderWithConfig = function (el, config) {\r\n $(el).slick(config);\r\n this.addEmptySlideToLandscapeSliderIfNeeded(el);\r\n this.resizeSlidesToHighestWhenFirstSlideImageIsLoaded(el);\r\n this.addOnAfterChange(el);\r\n };\r\n ProductSlider.prototype.createIntersectionObserver = function () {\r\n var _this = this;\r\n if (('InterSectionObserver' in window || 'IntersectionObserverEntry' in window && 'intersectionRatio' in window.IntersectionObserverEntry.prototype)) {\r\n return new IntersectionObserver(function (entries, observer) {\r\n entries.forEach(function (entry) {\r\n if (entry.isIntersecting) {\r\n if ($(entry.target).data(\"slider-format\").toLowerCase() === \"square\")\r\n _this.initSquareSlider(entry.target);\r\n if ($(entry.target).data(\"slider-format\").toLowerCase() === \"landscape\")\r\n _this.initLandscapeSlider(entry.target);\r\n observer.unobserve(entry.target);\r\n }\r\n });\r\n }, { rootMargin: \"0px 0px 0px 0px\" });\r\n }\r\n };\r\n ProductSlider.prototype.addEmptySlideToLandscapeSliderIfNeeded = function (slider) {\r\n var parent = eXpress.html.getParentWithClassName(slider, \"m-product-slider\");\r\n if (parent) {\r\n var slidesToShow = $(slider).slick('slickGetOption', 'slidesToShow');\r\n var currentSlideEl = eXpress.html.querySelectorAll(slider, \".slick-slide\")[0];\r\n var sliderWidth = eXpress.html.querySelector(slider, \".slick-list\", true).getBoundingClientRect().width;\r\n var slideWidth = currentSlideEl.getBoundingClientRect().width;\r\n var slideRightMargin = parseInt(window.getComputedStyle(currentSlideEl).marginRight || \"0\", 10);\r\n var leftOver = sliderWidth - (slideWidth * parseInt(slidesToShow + \"\" || \"1\", 10)) - (slideRightMargin * (parseInt(slidesToShow + \"\" || \"1\", 10) - 1));\r\n var emptySlide = eXpress.html.querySelector(slider, \".technical-empty-slide\", false);\r\n var shouldAddEmptySlide = leftOver < 0 && Math.abs(leftOver) > slideWidth * 0.1;\r\n if (!emptySlide && shouldAddEmptySlide) {\r\n $(slider).slick('slickAdd', '
');\r\n }\r\n }\r\n };\r\n ProductSlider.prototype.removeEmptySlide = function (slider) {\r\n var emptySlide = eXpress.html.querySelector(slider, \".technical-empty-slide\", false);\r\n var emptySlideIndex = -1;\r\n if (emptySlide && emptySlide.dataset && emptySlide.dataset.slickIndex) {\r\n emptySlideIndex = +emptySlide.dataset.slickIndex;\r\n $(slider).slick('slickRemove', emptySlideIndex);\r\n }\r\n };\r\n ProductSlider.prototype.onWindowResize = function () {\r\n var _this = this;\r\n if (window.innerWidth === this.docWidth)\r\n return;\r\n this.docWidth = window.innerWidth;\r\n this.sliderEls.filter(function (el) { return $(el).data(\"slider-format\").toLowerCase() === \"landscape\" && el.classList.contains(\"slick-initialized\"); }).forEach(function (el) { return _this.removeEmptySlide(el); });\r\n if (this.mobile !== this.isMobile()) {\r\n this.mobile = this.isMobile();\r\n this.setVisibleSlides();\r\n this.sliderEls.forEach(function (el) {\r\n var visibleSlides = eXpress.html.querySelectorAll(el, \".technical-slideToShow\");\r\n if (visibleSlides.length < 2 && el.classList.contains(\"slick-initialized\")) {\r\n $(el).slick(\"unslick\");\r\n }\r\n else if (visibleSlides.length >= 2 && el.classList.contains(\"slick-initialized\")) {\r\n $(el).slick('resize');\r\n $(el).slick('refresh');\r\n _this.addEmptySlideToLandscapeSliderIfNeeded(el);\r\n _this.resizeSlidesToHighestWhenFirstSlideImageIsLoaded(el);\r\n _this.addOnAfterChange(el);\r\n }\r\n else {\r\n if (_this.ioSlider) {\r\n _this.ioSlider.observe(el);\r\n }\r\n else {\r\n if ($(el).data(\"slider-format\").toLowerCase() === \"square\")\r\n _this.initSquareSlider(el);\r\n if ($(el).data(\"slider-format\").toLowerCase() === \"landscape\")\r\n _this.initLandscapeSlider(el);\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n this.sliderEls.filter(function (el) { return el.classList.contains(\"slick-initialized\"); }).forEach(function (el) {\r\n _this.addEmptySlideToLandscapeSliderIfNeeded(el);\r\n _this.resizeSlidesToHighestWhenFirstSlideImageIsLoaded(el);\r\n });\r\n }\r\n };\r\n ProductSlider.prototype.resizeSlidesToHighestWhenFirstSlideImageIsLoaded = function (sliderEl) {\r\n var _this = this;\r\n var me = this;\r\n var classToRemove = this.isMobile() ? 'u-hide-on-mobile-full' : 'u-hide-on-desktop';\r\n var slideEls = eXpress.html.querySelectorAll(sliderEl, \".technical-slide:not(.\" + classToRemove + \")\");\r\n if (slideEls.length === 0)\r\n return;\r\n var img = eXpress.html.querySelector(slideEls[0], \".technical-slide-imageContainer img\", true);\r\n if (img.classList.contains(\"loaded\")) {\r\n this.resizeSlidesToHighest(sliderEl, slideEls);\r\n }\r\n else {\r\n if ('MutationObserver' in window) {\r\n var observer_1 = new MutationObserver(function (mutations) {\r\n mutations.forEach(function (mutation) {\r\n if (mutation.attributeName === \"class\") {\r\n var el = mutation.target;\r\n if (el.classList.contains(\"loaded\")) {\r\n me.resizeSlidesToHighest(sliderEl, slideEls);\r\n observer_1.disconnect();\r\n }\r\n }\r\n });\r\n });\r\n observer_1.observe(img, { attributes: true });\r\n }\r\n else {\r\n if (!img.classList.contains('loaded') && !img.classList.contains('loading')) {\r\n if (!img.onload)\r\n img.onload = function () { _this.resizeSlidesToHighest(sliderEl, slideEls); };\r\n return;\r\n }\r\n }\r\n }\r\n };\r\n ProductSlider.prototype.resizeSlidesToHighest = function (sliderEl, slideEls) {\r\n var _this = this;\r\n var slideImageHeight = 0;\r\n var maxHeightSlideEl = 0;\r\n var maxHeightSlideTitleEl = 0;\r\n var maxHeightSlideTitleTitleEl = 0;\r\n var maxHeightSlideTitleSubTitleEl = 0;\r\n var bottomLinkHeight;\r\n var imageEls = eXpress.html.querySelectorAll(sliderEl, \".technical-slide-imageContainer img\");\r\n imageEls.forEach(function (imgEl) {\r\n if (imgEl.classList.contains('loaded')) {\r\n _this.removeAspectRatio(imgEl);\r\n }\r\n else {\r\n if (!imgEl.onload)\r\n imgEl.onload = function () { _this.removeAspectRatio(imgEl); };\r\n }\r\n });\r\n slideEls.forEach(function (slideEl) {\r\n var titleEl = eXpress.html.querySelector(slideEl, \".technical-slide-title\", false);\r\n if (slideEl.style.removeProperty) {\r\n slideEl.style.removeProperty(\"height\");\r\n if (titleEl)\r\n titleEl.style.removeProperty(\"height\");\r\n }\r\n else {\r\n slideEl.style.height = '';\r\n if (titleEl)\r\n titleEl.style.height = '';\r\n }\r\n });\r\n slideEls.forEach(function (slideEl) {\r\n if (!eXpress.html.isElementVisible(slideEl))\r\n return;\r\n var heightSlideTitleTitleEl = 0;\r\n var heightSlideTitleSubTitleEl = 0;\r\n var imageContainerEl = eXpress.html.querySelector(slideEl, \".technical-slide-imageContainer\", true);\r\n var img = eXpress.html.querySelector(imageContainerEl, \"img\", true);\r\n if (slideEls[0] === slideEl && !img.classList.contains('loaded') && !img.classList.contains('loading'))\r\n return;\r\n var heightSlideTitleEl = 0;\r\n var title = eXpress.html.querySelector(slideEl, \".technical-tile-title\", false);\r\n if (title)\r\n heightSlideTitleEl += eXpress.html.getHeightWithMargins(title);\r\n var subTitle = eXpress.html.querySelector(slideEl, \".technical-tile-subtitle\", false);\r\n if (subTitle)\r\n heightSlideTitleEl += eXpress.html.getHeightWithMargins(subTitle);\r\n var heightSlideEl = slideEl.offsetHeight;\r\n if (heightSlideEl > maxHeightSlideEl)\r\n maxHeightSlideEl = heightSlideEl;\r\n if (heightSlideTitleEl > maxHeightSlideTitleEl)\r\n maxHeightSlideTitleEl = heightSlideTitleEl;\r\n if (heightSlideTitleTitleEl > maxHeightSlideTitleTitleEl)\r\n maxHeightSlideTitleTitleEl = heightSlideTitleTitleEl;\r\n if (heightSlideTitleSubTitleEl > maxHeightSlideTitleSubTitleEl)\r\n maxHeightSlideTitleSubTitleEl = heightSlideTitleSubTitleEl;\r\n if (slideEls[0] === slideEl)\r\n slideImageHeight = imageContainerEl.offsetHeight;\r\n });\r\n slideEls.forEach(function (slideEl) {\r\n var titleEl = eXpress.html.querySelector(slideEl, \".technical-slide-title\", false);\r\n slideEl.style.height = \"\".concat(maxHeightSlideEl, \"px\");\r\n if (titleEl)\r\n titleEl.style.height = \"\".concat(maxHeightSlideTitleEl, \"px\");\r\n });\r\n bottomLinkHeight = maxHeightSlideEl - (maxHeightSlideTitleEl + slideImageHeight);\r\n if (bottomLinkHeight < 0)\r\n bottomLinkHeight = 0;\r\n var bottomValue = (bottomLinkHeight + (slideImageHeight / 2)) - 14;\r\n this.setPositionButtons(sliderEl, bottomValue);\r\n };\r\n ProductSlider.prototype.removeAspectRatio = function (imageEl) {\r\n var imgContainerEl = eXpress.html.getParentWithClassName(imageEl, \"technical-slide-imageContainer\");\r\n if (imgContainerEl)\r\n imgContainerEl.style.removeProperty(\"--aspect-ratio\");\r\n };\r\n ProductSlider.prototype.setPositionButtons = function (sliderEl, bottomValue) {\r\n if (!sliderEl)\r\n return;\r\n var arrows = $(sliderEl).slick(\"slickGetOption\", \"arrows\");\r\n if (!arrows) {\r\n var prevButtonString = '';\r\n var nextButtonString = '';\r\n $(sliderEl).slick(\"slickSetOption\", {\r\n arrows: true,\r\n prevArrow: prevButtonString,\r\n nextArrow: nextButtonString,\r\n responsive: [\r\n {\r\n breakpoint: 1024,\r\n settings: {\r\n arrows: true,\r\n prevArrow: prevButtonString,\r\n nextArrow: nextButtonString,\r\n }\r\n },\r\n {\r\n breakpoint: 960,\r\n settings: {\r\n arrows: true,\r\n prevArrow: prevButtonString,\r\n nextArrow: nextButtonString,\r\n }\r\n },\r\n {\r\n breakpoint: 768,\r\n settings: {\r\n arrows: true,\r\n prevArrow: prevButtonString,\r\n nextArrow: nextButtonString,\r\n }\r\n },\r\n {\r\n breakpoint: 600,\r\n settings: {\r\n arrows: true,\r\n prevArrow: prevButtonString,\r\n nextArrow: nextButtonString,\r\n }\r\n },\r\n {\r\n breakpoint: 450,\r\n settings: {\r\n arrows: true,\r\n prevArrow: prevButtonString,\r\n nextArrow: nextButtonString,\r\n }\r\n },\r\n {\r\n breakpoint: 415,\r\n settings: {\r\n arrows: true,\r\n prevArrow: prevButtonString,\r\n nextArrow: nextButtonString,\r\n }\r\n }\r\n ]\r\n }, false);\r\n $(sliderEl).slick('refresh');\r\n }\r\n else {\r\n var buttonsEls = eXpress.html.querySelectorAll(sliderEl, \".technical-slide-button\");\r\n buttonsEls.forEach(function (sliderButtonEl) {\r\n sliderButtonEl.style.bottom = \"\".concat(bottomValue, \"px\");\r\n });\r\n }\r\n };\r\n ProductSlider.prototype.addOnAfterChange = function (sliderEl) {\r\n $(sliderEl).on(\"afterChange\", function (event, slick, currentSlide) {\r\n var buttonsEls = eXpress.html.querySelectorAll(sliderEl, \".technical-slide-button\");\r\n buttonsEls.forEach(function (buttonEl) {\r\n if (buttonEl.classList.contains(\"slick-disabled\") && !buttonEl.classList.contains(\"a-button--disabled\"))\r\n buttonEl.classList.add(\"a-button--disabled\");\r\n else\r\n buttonEl.classList.remove(\"a-button--disabled\");\r\n });\r\n });\r\n };\r\n ProductSlider.prototype.addHandlers = function () {\r\n window.addEventListener('resize', eXpress.utils.debounce(this.onWindowResize.bind(this), 250));\r\n };\r\n return ProductSlider;\r\n }());\r\n content.ProductSlider = ProductSlider;\r\n })(content = components.content || (components.content = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var content;\r\n (function (content) {\r\n function createReviewBar(containerEl, dependencies) {\r\n var onClick = dependencies.onClick, clearActiveBar = dependencies.clearActiveBar;\r\n var barEl = eXpress.html.querySelector(containerEl, \".m-review-bars__review-bar\", true);\r\n var quantityEl = eXpress.html.querySelector(containerEl, \".m-review-bars__reviews-quantity\", true);\r\n var enabledClass = \"m-review-bars__review-link\";\r\n var disabledClass = \"m-review-bars__review-no-link\";\r\n var activeClass = \"m-review-bars__review-link--active\";\r\n var startValue = 0;\r\n var isEnabled = function () { return containerEl.classList.contains(enabledClass); };\r\n var isDisabled = function () { return containerEl.classList.contains(disabledClass); };\r\n function getStartValue() {\r\n return +(containerEl.getAttribute('data-star-value') || 0);\r\n }\r\n var onClickEvent = function () {\r\n clearActiveBar();\r\n containerEl.classList.add(activeClass);\r\n onClick(startValue);\r\n };\r\n var enable = function () {\r\n if (isDisabled())\r\n containerEl.classList.remove(disabledClass);\r\n containerEl.classList.add(enabledClass);\r\n containerEl.addEventListener(\"click\", onClickEvent);\r\n };\r\n var updateBarPercentage = function (totalNumberOfReviews, starAmount) {\r\n var barActiveEl = eXpress.html.querySelector(barEl, \".m-review-bars__review-bar-active\", true);\r\n var percentage = totalNumberOfReviews > 0 ? starAmount * 100 / totalNumberOfReviews : 0;\r\n barActiveEl.style.width = percentage + \"%\";\r\n };\r\n var disable = function () {\r\n if (isEnabled())\r\n containerEl.classList.remove(enabledClass);\r\n containerEl.classList.add(disabledClass);\r\n containerEl.removeEventListener(\"click\", onClickEvent);\r\n };\r\n var update = function (totalNumberOfReviews, amount) {\r\n quantityEl.innerHTML = amount + \"\";\r\n updateBarPercentage(totalNumberOfReviews, amount);\r\n if (amount > 0 && isDisabled())\r\n enable();\r\n if (amount === 0 && isEnabled())\r\n disable();\r\n };\r\n var init = function () {\r\n deInit();\r\n startValue = getStartValue();\r\n if (isEnabled())\r\n containerEl.addEventListener(\"click\", onClickEvent);\r\n };\r\n var deInit = function () {\r\n if (isEnabled())\r\n containerEl.removeEventListener(\"click\", onClickEvent);\r\n };\r\n var dispose = function () {\r\n deInit();\r\n };\r\n init();\r\n return {\r\n dispose: dispose,\r\n update: update,\r\n startValue: startValue\r\n };\r\n }\r\n content.createReviewBar = createReviewBar;\r\n })(content = components.content || (components.content = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var content;\r\n (function (content) {\r\n function createReviewBars(containerEl, dependencies) {\r\n var eventDisposable;\r\n var onClick = dependencies.onClick;\r\n var reviewBarEls = eXpress.html.querySelectorAll(containerEl, '.m-review-bars__review-link, .m-review-bars__review-no-link');\r\n var reviewBarComponents = [];\r\n var reviewBarsTotalLinkEl = eXpress.html.querySelector(containerEl, '.m-review-bars__reviews-link', true);\r\n var clearActiveBar = function () { return reviewBarEls.forEach(function (el) { return eXpress.html.removeClass(el, 'm-review-bars__review-link--active'); }); };\r\n var deinit = function () { return eventDisposable && eventDisposable.dispose(); };\r\n var updateAmounts = function (totalReviews, starAmounts, resetActiveBar) {\r\n if (resetActiveBar === void 0) { resetActiveBar = false; }\r\n var replaceAmountBetweenParentheses = function (text, amount) {\r\n return text.replace(/ \\([0-9]*?\\)/g, ' (' + amount + ')');\r\n };\r\n if (resetActiveBar)\r\n clearActiveBar();\r\n reviewBarComponents.forEach(function (barcomponent) {\r\n var reviewStar = starAmounts.find(function (x) { return x.key === barcomponent.startValue; });\r\n barcomponent.update(totalReviews, !reviewStar ? 0 : reviewStar.value);\r\n });\r\n var innerTextEl = eXpress.html.querySelector(reviewBarsTotalLinkEl, 'span', true);\r\n innerTextEl.innerText = replaceAmountBetweenParentheses(innerTextEl.innerText, totalReviews + \"\");\r\n };\r\n var init = function () {\r\n deinit();\r\n reviewBarEls.forEach(function (el) {\r\n reviewBarComponents.push(content.createReviewBar(el, { onClick: onClick, clearActiveBar: clearActiveBar }));\r\n });\r\n eventDisposable = eXpress.utils.compositeDisposable([\r\n eXpress.html.addEventListener(reviewBarsTotalLinkEl, \"click\", function () {\r\n onClick(0);\r\n clearActiveBar();\r\n }),\r\n ]);\r\n };\r\n var dispose = function () {\r\n deinit();\r\n };\r\n init();\r\n return {\r\n dispose: dispose,\r\n updateAmounts: updateAmounts\r\n };\r\n }\r\n content.createReviewBars = createReviewBars;\r\n })(content = components.content || (components.content = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var content;\r\n (function (content) {\r\n function createShowMoreButton(containerEl, options) {\r\n var onClick = function () { return options.onClick(); };\r\n var enable = function () {\r\n var buttonEl = eXpress.html.querySelector(containerEl, \".a-button\");\r\n containerEl.removeEventListener(\"click\", onClick);\r\n containerEl.addEventListener(\"click\", onClick);\r\n if (buttonEl)\r\n buttonEl.classList.add(\"a-button--active\");\r\n };\r\n var disable = function () {\r\n containerEl.removeEventListener(\"click\", onClick);\r\n };\r\n var show = function () {\r\n containerEl.style.display = '';\r\n };\r\n var hide = function () {\r\n containerEl.style.display = 'none';\r\n };\r\n var dispose = function () {\r\n disable();\r\n };\r\n enable();\r\n return {\r\n show: show,\r\n hide: hide,\r\n enable: enable,\r\n disable: disable,\r\n dispose: dispose,\r\n };\r\n }\r\n content.createShowMoreButton = createShowMoreButton;\r\n function createPaginationControl(containerEl, options) {\r\n var buttonTemplateEl = containerEl.querySelector(\".m-review-blocks-controls__button\");\r\n var leftControlEL = buttonTemplateEl.cloneNode(true);\r\n eXpress.html.querySelector(leftControlEL, 'button', true)\r\n .className += \" icon-arrow-left m-review-blocks-controls__pagination-button\";\r\n eXpress.html.hide(leftControlEL);\r\n var rightControlEL = buttonTemplateEl.cloneNode(true);\r\n eXpress.html.querySelector(rightControlEL, 'button', true)\r\n .className += \" icon-arrow-right m-review-blocks-controls__pagination-button\";\r\n eXpress.html.hide(rightControlEL);\r\n var reviewBlocksControlEl = document.getElementsByClassName('m-review-blocks-controls');\r\n reviewBlocksControlEl[1].insertAdjacentElement('afterbegin', leftControlEL);\r\n reviewBlocksControlEl[1].insertAdjacentElement('beforeend', rightControlEL);\r\n eXpress.html.remove(buttonTemplateEl);\r\n var numberedButtonEls = [];\r\n var amountOfPagesToShow = parseInt(containerEl.getAttribute('data-amount-of-pages'), 10) || 5;\r\n var numberOfPages = options.numberOfPages;\r\n var indexOffset = 0;\r\n var selectedPage;\r\n var onNumberedButtonClicked = function (e) {\r\n var buttonEl = e.currentTarget;\r\n options.onClick(parseInt(buttonEl.textContent, 10));\r\n };\r\n var showArrowControl = function (show, el) {\r\n if (show) {\r\n eXpress.html.show(el);\r\n el.removeEventListener(\"click\", onClickArrowControl);\r\n el.addEventListener(\"click\", onClickArrowControl);\r\n }\r\n else {\r\n eXpress.html.hide(el);\r\n el.removeEventListener(\"click\", onClickArrowControl);\r\n }\r\n };\r\n var updatePaginations = function (pages, pageNumber) {\r\n if (pageNumber) {\r\n if (pageNumber === 1)\r\n indexOffset = 0;\r\n selectedPage = pageNumber;\r\n }\r\n if (pages)\r\n numberOfPages = pages;\r\n numberedButtonEls = [];\r\n eXpress.html.querySelectorAll(containerEl, \".m-review-blocks-controls__button.numbered-control\")\r\n .forEach(eXpress.html.remove);\r\n var indexCondition = Math.min((numberOfPages + 1), (amountOfPagesToShow + 1 + indexOffset));\r\n for (var index = 1 + indexOffset; index < indexCondition; index++) {\r\n var buttonCloneEl = buttonTemplateEl.cloneNode(true);\r\n buttonCloneEl.classList.add('numbered-control');\r\n if (selectedPage === index) {\r\n var activeButtonEl = eXpress.html.querySelector(buttonCloneEl, \".a-button\");\r\n if (activeButtonEl)\r\n activeButtonEl.classList.add(\"a-button--active\");\r\n }\r\n else {\r\n buttonCloneEl.addEventListener(\"click\", onNumberedButtonClicked);\r\n }\r\n eXpress.html.querySelector(buttonCloneEl, '.a-button--review', true)\r\n .insertAdjacentText('beforeend', index.toString());\r\n numberedButtonEls.push(buttonCloneEl);\r\n }\r\n var docFrag = document.createDocumentFragment();\r\n docFrag.append.apply(docFrag, numberedButtonEls);\r\n rightControlEL.parentNode.insertBefore(docFrag, rightControlEL);\r\n toggleArrowControls();\r\n };\r\n var toggleArrowControls = function () {\r\n showArrowControl((amountOfPagesToShow + indexOffset) < numberOfPages, rightControlEL);\r\n showArrowControl((indexOffset - amountOfPagesToShow) >= 0, leftControlEL);\r\n };\r\n var onClickArrowControl = function (e) {\r\n var controlEl = e.currentTarget;\r\n var isLeft = controlEl.querySelector('.icon-arrow-left');\r\n if (isLeft)\r\n indexOffset -= amountOfPagesToShow;\r\n else\r\n indexOffset += amountOfPagesToShow;\r\n updatePaginations();\r\n };\r\n updatePaginations(numberOfPages, 1);\r\n return {\r\n updatePaginations: updatePaginations,\r\n dispose: function () {\r\n leftControlEL.removeEventListener(\"click\", onClickArrowControl);\r\n rightControlEL.removeEventListener(\"click\", onClickArrowControl);\r\n numberedButtonEls.forEach(function (e) { return e.removeEventListener(\"click\", onNumberedButtonClicked); });\r\n }\r\n };\r\n }\r\n content.createPaginationControl = createPaginationControl;\r\n })(content = components.content || (components.content = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var content;\r\n (function (content) {\r\n function createReviewBlocks(containerEl, options) {\r\n var productReviewsNameLabel = options.productReviewsNameLabel, _a = options.productReviewsAnonymousLabel, productReviewsAnonymousLabel = _a === void 0 ? \"Anonymous\" : _a;\r\n var reviewTemplateEl = eXpress.html.querySelector(containerEl, '.m-review-block.template', true);\r\n eXpress.html.remove(reviewTemplateEl);\r\n var createUserReview = function (review) {\r\n var reviewTemplateCloneEl = reviewTemplateEl.cloneNode(true);\r\n var reviewStarsEl = eXpress.html.querySelector(reviewTemplateCloneEl, \".m-review-blocks__stars\", true);\r\n var fullStarsEl = eXpress.html.querySelector(reviewStarsEl, \".a-review-stars__full\", true);\r\n fullStarsEl.style.width = \"\".concat(review.score * 100 / 5, \"%\");\r\n if (review.comment)\r\n eXpress.html.querySelector(reviewTemplateCloneEl, \".m-review-blocks__review\", true)\r\n .insertAdjacentText('beforeend', review.comment);\r\n var reviewerBlockEL = eXpress.html.querySelector(reviewTemplateCloneEl, \".m-review-blocks__reviewer\", true);\r\n if (productReviewsNameLabel) {\r\n var name_1 = \"\".concat(review.firstName || \"\", \" \").concat(review.lastName || \"\");\r\n eXpress.html.querySelector(reviewerBlockEL, \".m-review-blocks__reviewer-name\", true)\r\n .insertAdjacentText('beforeend', \"\".concat(productReviewsNameLabel.replace('{0}', name_1.trim() || productReviewsAnonymousLabel)));\r\n }\r\n else {\r\n eXpress.html.querySelector(reviewerBlockEL, \".m-review-blocks__reviewer-name\", true).style.display = 'none';\r\n }\r\n if (review.reviewDate)\r\n eXpress.html.querySelector(reviewerBlockEL, \".m-review-blocks__review-date\", true)\r\n .insertAdjacentText('beforeend', review.reviewDate);\r\n var commentBlockEl = eXpress.html.querySelector(reviewTemplateCloneEl, \".m-review-blocks__answer-block\", true);\r\n if (review.feedback && review.feedbackDate) {\r\n eXpress.html.querySelector(commentBlockEl, \".m-review-blocks__answer-block__answer-date\", true)\r\n .insertAdjacentText('beforeend', review.feedbackDate);\r\n eXpress.html.querySelector(commentBlockEl, \".m-review-blocks__answer-block__answer\", true)\r\n .insertAdjacentHTML(\"beforeend\", \"\".concat(review.feedback, \"\"));\r\n }\r\n else {\r\n eXpress.html.remove(commentBlockEl);\r\n }\r\n eXpress.html.show(reviewTemplateCloneEl);\r\n return reviewTemplateCloneEl;\r\n };\r\n var addReviews = function (productCategoryReviews, replace) {\r\n if (replace === void 0) { replace = false; }\r\n var reviewEls = productCategoryReviews.map(function (r) { return createUserReview(r); });\r\n if (replace)\r\n clear();\r\n containerEl.append.apply(containerEl, reviewEls);\r\n };\r\n var clear = function () { return containerEl.innerHTML = ''; };\r\n return {\r\n addReviews: addReviews,\r\n clear: clear,\r\n };\r\n }\r\n content.createReviewBlocks = createReviewBlocks;\r\n })(content = components.content || (components.content = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var content;\r\n (function (content) {\r\n function createReviewLanguageSelect(containerEl, dependencies) {\r\n var eventDisposable;\r\n var onSelect = dependencies.onSelect;\r\n var languageSelectEl = eXpress.html.querySelector(containerEl, \".technical-review-language-selector\", true);\r\n var deInit = function () { return eventDisposable && eventDisposable.dispose(); };\r\n var init = function () {\r\n deInit();\r\n eventDisposable = eXpress.utils.compositeDisposable([\r\n eXpress.html.addEventListener(languageSelectEl, \"change\", function () {\r\n onSelect(languageSelectEl.value);\r\n }),\r\n ]);\r\n };\r\n var dispose = function () {\r\n deInit();\r\n };\r\n function selectedLanguage() {\r\n return languageSelectEl.value;\r\n }\r\n var updateAmounts = function (reviewAmounts) {\r\n var totalReviews = 0;\r\n var languagesCount = 0;\r\n var replaceAmountBetweenParentheses = function (text, amount) {\r\n return text.replace(/ \\([0-9]*?\\)/g, ' (' + amount + ')');\r\n };\r\n [].slice.call(languageSelectEl.options).forEach(function (o) {\r\n var option = o;\r\n if (option.value === \"all\") {\r\n totalReviews = reviewAmounts.filter(function (r) { return r.key === option.value; })[0].value;\r\n option.text = replaceAmountBetweenParentheses(option.text, totalReviews + \"\");\r\n }\r\n else if (option.value !== \"other\" && option.value !== \"all\") {\r\n var languageCount = reviewAmounts.filter(function (r) { return r.key === option.value; })[0].value;\r\n languagesCount += languageCount;\r\n option.text = replaceAmountBetweenParentheses(option.text, languageCount + \"\");\r\n }\r\n else if (option.value === \"other\") {\r\n option.text = replaceAmountBetweenParentheses(option.text, (totalReviews - languagesCount) + \"\");\r\n }\r\n });\r\n };\r\n init();\r\n return {\r\n dispose: dispose,\r\n updateAmounts: updateAmounts,\r\n selectedLanguage: selectedLanguage\r\n };\r\n }\r\n content.createReviewLanguageSelect = createReviewLanguageSelect;\r\n })(content = components.content || (components.content = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var content;\r\n (function (content) {\r\n function initShowMoreElements(containerEl, buttonEl, parameter, elementselector) {\r\n var elementElsDesktop = eXpress.html.querySelectorAll(containerEl, (elementselector ? elementselector : '.technical-showmore') + '.u-hide-on-desktop-full');\r\n var elementElsMobile = eXpress.html.querySelectorAll(containerEl, (elementselector ? elementselector : '.technical-showmore') + '.u-hide-on-mobile-full');\r\n var batchsizeDesktop = parseInt(buttonEl.dataset['batchsizeDesktop'] || '999', 10);\r\n var batchsizeMobile = parseInt(buttonEl.dataset['batchsizeMobile'] || '999', 10);\r\n var currentPage = parseInt(buttonEl.dataset.currentpage || '0', 0);\r\n if (elementElsDesktop.length === 0 && elementElsMobile.length === 0)\r\n return;\r\n var showElements = function (sizeMobile, sizeDesktop) {\r\n var toShowDesktop = elementElsDesktop.splice(0, sizeDesktop);\r\n toShowDesktop.forEach(function (e) { return e.classList.remove('u-hide-on-desktop-full'); });\r\n if (elementElsDesktop.length === 0) {\r\n if (buttonEl.parentElement && !buttonEl.classList.contains('technical-no-hide-parrent'))\r\n buttonEl.parentElement.classList.add('u-hide-on-desktop-full');\r\n else\r\n buttonEl.classList.add('u-hide-on-desktop-full');\r\n }\r\n var toShowMobile = elementElsMobile.splice(0, sizeMobile);\r\n toShowMobile.forEach(function (e) { return e.classList.remove('u-hide-on-mobile-full'); });\r\n if (elementElsMobile.length === 0) {\r\n if (buttonEl.parentElement && !buttonEl.classList.contains('technical-no-hide-parrent'))\r\n buttonEl.parentElement.classList.add('u-hide-on-mobile-full');\r\n else\r\n buttonEl.classList.add('u-hide-on-mobile-full');\r\n }\r\n };\r\n var showMore = function () {\r\n currentPage = currentPage + 1;\r\n buttonEl.dataset.currentpage = currentPage.toString();\r\n var url = location.href;\r\n url = eXpress.utils.updateParameter(parameter ? parameter : \"currentpage\", buttonEl.dataset.currentpage, url);\r\n history.replaceState(null, '', url.toLowerCase());\r\n showElements(batchsizeMobile, batchsizeDesktop);\r\n };\r\n var disposableEvents = eXpress.utils.compositeDisposable([\r\n eXpress.html.addEventListener(buttonEl, 'click', showMore)\r\n ]);\r\n return {\r\n dispose: function () { return disposableEvents.dispose(); }\r\n };\r\n }\r\n content.initShowMoreElements = initShowMoreElements;\r\n })(content = components.content || (components.content = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var content;\r\n (function (content) {\r\n function createTruncate(containerEl, opts) {\r\n var lineHeight = Math.ceil(opts.lineHeight ? opts.lineHeight : parseFloat(window.getComputedStyle(containerEl).lineHeight || \"0\"));\r\n var lines = Math.ceil(opts.lines ? opts.lines : 1);\r\n var maxHeight = Math.ceil(opts.maxHeight ? opts.maxHeight : lineHeight * lines);\r\n var defaults = {\r\n ellipsis: '\\u2026 ',\r\n showMore: $('.technical-shave-more')[0].outerHTML,\r\n showLess: $('.technical-shave-less')[0].outerHTML,\r\n lineHeight: lineHeight,\r\n lines: lines,\r\n maxHeight: maxHeight < lineHeight ? lineHeight : maxHeight\r\n };\r\n if (eXpress.html.hasClass(containerEl, \"truncate-loading-1-line\"))\r\n eXpress.html.removeClass(containerEl, \"truncate-loading-1-line\");\r\n if (eXpress.html.hasClass(containerEl, \"truncate-loading-5-lines--pcp\"))\r\n eXpress.html.removeClass(containerEl, \"truncate-loading-5-lines--pcp\");\r\n var $containerEl = $(containerEl);\r\n var onClick = function (ev) {\r\n var currentEl = ev.target;\r\n if (currentEl.classList.contains(\"technical-shave-more\")) {\r\n if (opts.eventTrackingMethod && opts.openEventAction)\r\n opts.eventTrackingMethod(opts.openEventAction);\r\n $containerEl.truncate('expand');\r\n }\r\n else if (currentEl.classList.contains(\"technical-shave-less\")) {\r\n if (opts.eventTrackingMethod && opts.closeEventAction)\r\n opts.eventTrackingMethod(opts.closeEventAction);\r\n $containerEl.truncate('collapse');\r\n containerEl.scrollIntoView();\r\n }\r\n };\r\n var updateConfig = function (newOpts) {\r\n $containerEl.truncate('config', __assign(__assign({}, newOpts), defaults));\r\n $containerEl.truncate('collapse');\r\n };\r\n var updateContent = function (html) {\r\n $containerEl.truncate('update', html);\r\n $containerEl.truncate('collapse');\r\n };\r\n var collapse = function () {\r\n $containerEl.truncate('collapse');\r\n };\r\n $containerEl.truncate(__assign(__assign({}, opts), defaults));\r\n containerEl.addEventListener('click', onClick);\r\n return {\r\n dispose: function () { return containerEl.removeEventListener('click', onClick); },\r\n updateConfig: updateConfig,\r\n updateContent: updateContent,\r\n collapse: collapse\r\n };\r\n }\r\n content.createTruncate = createTruncate;\r\n })(content = components.content || (components.content = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var content;\r\n (function (content) {\r\n function createUserReviews(containerEl, deps, options) {\r\n var getReviewsAsync = deps.getReviewsAsync;\r\n var totalAmountOfReviews = deps.totalAmountOfReviews;\r\n var _a = options.numberOfReviewsToShow, numberOfReviewsToShow = _a === void 0 ? 5 : _a, _b = options.startPageOffset, startPageOffset = _b === void 0 ? 0 : _b;\r\n var _c = options.showLoadMoreButton, showLoadMoreButton = _c === void 0 ? true : _c;\r\n var productReviewsNameLabel = options.productReviewsNameLabel, productReviewsAnonymousLabel = options.productReviewsAnonymousLabel;\r\n var pageNumber = 0 + startPageOffset;\r\n var activeFilter = undefined;\r\n var activeLanguage = undefined;\r\n var reviewLanguageSelect;\r\n var reviewBlocksComponent = components.content.createReviewBlocks(eXpress.html.querySelector(containerEl, '.m-review-blocks', true), {\r\n productReviewsNameLabel: productReviewsNameLabel,\r\n productReviewsAnonymousLabel: productReviewsAnonymousLabel\r\n });\r\n var mobileControlEl = eXpress.html.querySelector(containerEl, '.m-review-blocks-controls.u-hide-on-desktop-full', true);\r\n var desktopControlEl = eXpress.html.querySelector(containerEl, '.m-review-blocks-controls.u-hide-on-mobile-full', true);\r\n var numberOfPages = Math.ceil(totalAmountOfReviews / numberOfReviewsToShow);\r\n var loadNextPage = function (page, filter, language, reset) {\r\n if (reset === void 0) { reset = false; }\r\n pageNumber++;\r\n var activeLanguageChanged = false;\r\n if (reset) {\r\n pageNumber = 1;\r\n showLoadMoreButton = true;\r\n loadMoreButtonComponent.show();\r\n loadMoreButtonComponent.enable();\r\n }\r\n if (page)\r\n pageNumber = page;\r\n if (filter !== undefined)\r\n activeFilter = filter;\r\n if (language !== undefined) {\r\n activeLanguageChanged = activeLanguage !== language;\r\n if (activeLanguageChanged)\r\n activeFilter = undefined;\r\n activeLanguage = language;\r\n }\r\n else {\r\n if (reviewLanguageSelect && reviewLanguageSelect.selectedLanguage) {\r\n activeLanguage = reviewLanguageSelect.selectedLanguage;\r\n }\r\n }\r\n loadMoreButtonComponent.disable();\r\n getReviewsAsync(pageNumber, activeFilter, activeLanguage)\r\n .then(function (res) {\r\n var reviews = res.productCategoryReviews;\r\n reviewBlocksComponent.addReviews(reviews, reset);\r\n totalAmountOfReviews = res.totalAmountOfReviews;\r\n showLoadMoreButton = totalAmountOfReviews >= pageNumber * numberOfReviewsToShow;\r\n if (reviewBarsComponent && res.starAmounts) {\r\n reviewBarsComponent.updateAmounts(res.totalAmountOfReviews, res.starAmounts, activeLanguageChanged);\r\n if (activeFilter) {\r\n var filteredAmount = res.starAmounts.filter(function (a) { return a.key === activeFilter; })[0];\r\n if (filteredAmount) {\r\n totalAmountOfReviews = filteredAmount.value;\r\n showLoadMoreButton = totalAmountOfReviews >= pageNumber * numberOfReviewsToShow;\r\n }\r\n }\r\n }\r\n })\r\n .always(function () {\r\n if (!showLoadMoreButton) {\r\n loadMoreButtonComponent.hide();\r\n loadMoreButtonComponent.disable();\r\n }\r\n else\r\n loadMoreButtonComponent.enable();\r\n paginationControlComponent.updatePaginations(Math.ceil(totalAmountOfReviews / numberOfReviewsToShow), pageNumber);\r\n });\r\n };\r\n var paginationControlComponent = components.content.createPaginationControl(desktopControlEl, {\r\n numberOfPages: numberOfPages,\r\n onClick: function (page) { return loadNextPage(page, undefined, undefined, true); },\r\n });\r\n var loadMoreButtonComponent = components.content.createShowMoreButton(mobileControlEl, {\r\n onClick: loadNextPage,\r\n });\r\n var reviewBarsComponent = components.content.createReviewBars(eXpress.html.querySelector(containerEl, '.m-review-bars', true), {\r\n onClick: function (filter) { return loadNextPage(undefined, filter, undefined, true); }\r\n });\r\n var languageSelectorContainerEl = eXpress.html.querySelector(containerEl, '.technical-review-language-selector-container', false);\r\n if (languageSelectorContainerEl)\r\n reviewLanguageSelect = components.content.createReviewLanguageSelect(languageSelectorContainerEl, {\r\n onSelect: function (lang) { return loadNextPage(undefined, undefined, lang, true); }\r\n });\r\n if (!showLoadMoreButton) {\r\n loadMoreButtonComponent.hide();\r\n }\r\n var isMobileControl = function () { return !eXpress.html.isElementVisible(desktopControlEl); };\r\n var isMobile = isMobileControl();\r\n var onWindowResize = function () {\r\n var isMobileOnResize = isMobileControl();\r\n if (isMobile !== isMobileOnResize) {\r\n loadNextPage(1, activeFilter, activeLanguage, true);\r\n isMobile = isMobileOnResize;\r\n }\r\n };\r\n window.addEventListener('resize', onWindowResize);\r\n return {\r\n dispose: function () { return window.removeEventListener('resize', onWindowResize); },\r\n };\r\n }\r\n content.createUserReviews = createUserReviews;\r\n })(content = components.content || (components.content = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var content;\r\n (function (content) {\r\n function createUsps(containerEl) {\r\n var iconEls = eXpress.html.querySelectorAll(containerEl, '.m-usp__icon');\r\n var icons = {};\r\n eXpress.utils.getInlineSvgsAsync(iconEls\r\n .filter(function (el) { return !!el.getAttribute('data-icon-url'); })\r\n .map(function (el) { return el.getAttribute('data-icon-url'); }))\r\n .then(function (res) {\r\n res.forEach(function (icon) { return icons[icon.url] = icon.svg; });\r\n iconEls.forEach(function (el) {\r\n var icon = icons[el.getAttribute('data-icon-url').replace(\"Icon.\", \"\").toLowerCase()];\r\n icon && el.insertAdjacentHTML(\"beforeend\", icon);\r\n });\r\n });\r\n }\r\n content.createUsps = createUsps;\r\n })(content = components.content || (components.content = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\nvar eXpress;\r\n(function (eXpress) {\r\n var components;\r\n (function (components) {\r\n var content;\r\n (function (content) {\r\n function initVideoPlayer(videoContainerEl, autoplayOnClick) {\r\n if (autoplayOnClick === void 0) { autoplayOnClick = true; }\r\n var playerEl = eXpress.html.querySelector(videoContainerEl, '.technical-video-frame', true);\r\n var overlayEl = eXpress.html.querySelector(videoContainerEl, '.technical-video-overlay', false);\r\n var onOverlayClick = function (ev) {\r\n ev.preventDefault();\r\n if (playerEl.src.toLowerCase().indexOf('youtube') > -1) {\r\n hideOverlay();\r\n playPauseYoutubeVideo('play');\r\n }\r\n if (playerEl.src.toLowerCase().indexOf('vimeo') > -1) {\r\n var param = eXpress.utils.getParameter('autoplay', playerEl.src.toLowerCase());\r\n if (!param)\r\n if (playerEl.src.indexOf('?') > -1)\r\n playerEl.src = playerEl.src + '&autoplay=1';\r\n else\r\n playerEl.src = playerEl.src + '?autoplay=1';\r\n else\r\n eXpress.utils.updateParameter('autoplay', '1', playerEl.src.toLowerCase());\r\n hideOverlay();\r\n }\r\n };\r\n var playPauseYoutubeVideo = function (action) {\r\n if (action === \"play\") {\r\n hideOverlay();\r\n postMessageToPlayer({\r\n \"event\": \"command\",\r\n \"func\": \"playVideo\",\r\n });\r\n }\r\n else {\r\n showOverlay();\r\n postMessageToPlayer({\r\n \"event\": \"command\",\r\n \"func\": \"pauseVideo\",\r\n });\r\n }\r\n };\r\n var hideOverlay = function () {\r\n if (overlayEl)\r\n overlayEl.classList.add(\"u-hide\");\r\n };\r\n var showOverlay = function () {\r\n if (overlayEl)\r\n overlayEl.classList.remove(\"u-hide\");\r\n };\r\n var postMessageToPlayer = function (command) {\r\n if (playerEl && playerEl.contentWindow) {\r\n playerEl.contentWindow.postMessage(JSON.stringify(command), \"*\");\r\n }\r\n };\r\n var init = function () {\r\n if (overlayEl && autoplayOnClick)\r\n eXpress.html.addEventListener(overlayEl, 'click', onOverlayClick);\r\n };\r\n init();\r\n return {\r\n dispose: function () { if (overlayEl)\r\n eXpress.html.addEventListener(overlayEl, 'click', onOverlayClick); },\r\n playPauseYoutubeVideo: function (action) { return playPauseYoutubeVideo(action); },\r\n showOverlay: showOverlay,\r\n isOverlayVisible: function () {\r\n return overlayEl && !overlayEl.classList.contains(\"u-hide\");\r\n }\r\n };\r\n }\r\n content.initVideoPlayer = initVideoPlayer;\r\n })(content = components.content || (components.content = {}));\r\n })(components = eXpress.components || (eXpress.components = {}));\r\n})(eXpress || (eXpress = {}));\r\n"],"names":["eXpress","components","content","initColorSwap","containerEl","swapEl","bgColor","style","backgroundColor","color","swapColor","disposableEvents","utils","compositeDisposable","html","addEventListener","dispose","createExternalEditor","editorElement","priceElement","deps","externalOrder","castedEditorElement","amount","quantityParam","getParameter","window","location","href","Number","getPrice","getPvcByExternalCode","addToBasket","countColoredImages","text","textItems","split","regex","RegExp","filter","t","test","slice","toLowerCase","length","event","onUpdate","o","itemcode","then","res","telegramtext","innerHTML","getPriceString","price","currency","updatePriceToolTips","data","tooltip","querySelector","document","priceContainer","priceTemplate","querySelectorAll","appendChild","priceItems","forEach","item","description","calculationDescription","itemTotal","newCloneFromTemplate","cloneNode","display","remove","calculation","result","append","order","dataset","map","buttonEl","main","initTooltip","addToBaskets","getElementsByClassName","i","classList","Device","createHighlightedTiles","eventDisposable","currentDevice","desktopTileEls","tabletTileEls","truncateEls","tileEl","headerAndTilesEl","titleEl","subTitleEl","textEl","getDevice","innerWidth","Mobile","Tablet","Desktop","outerHeight","el","includeOffset","height","offsetHeight","getComputedStyle","parseInt","marginTop","marginBottom","calculateTruncateMaxHeight","maxHeight","getTruncateOptions","options","lines","undefined","onResize","truncatedEls","updateConfig","init","createTruncate","debounce","documentMode","wait","ProductSlider","this","configSquareSlider","slidesToShow","infinite","arrows","vertical","verticalSwiping","slide","variableWidth","responsive","breakpoint","settings","slidesToScroll","configLandscapeSlider","sliderEls","isMobile","mobile","docWidth","ioSlider","createIntersectionObserver","prototype","initProductSliders","setVisibleSlides","initSliders","addHandlers","_this","technicalSlides","technicalSlideElsCount","hideMobileSlideElsCount","contains","$","addClass","removeClass","slidersToInit","observe","initSquareSlider","initLandscapeSlider","initSliderWithConfig","config","slick","addEmptySlideToLandscapeSliderIfNeeded","resizeSlidesToHighestWhenFirstSlideImageIsLoaded","addOnAfterChange","IntersectionObserverEntry","IntersectionObserver","entries","observer","entry","isIntersecting","target","unobserve","rootMargin","slider","getParentWithClassName","currentSlideEl","sliderWidth","getBoundingClientRect","width","slideWidth","slideRightMargin","marginRight","leftOver","emptySlide","shouldAddEmptySlide","Math","abs","removeEmptySlide","emptySlideIndex","slickIndex","onWindowResize","visibleSlides","sliderEl","me","classToRemove","slideEls","img","resizeSlidesToHighest","observer_1","MutationObserver","mutations","mutation","attributeName","disconnect","attributes","onload","bottomLinkHeight","slideImageHeight","maxHeightSlideEl","maxHeightSlideTitleEl","imgEl","removeAspectRatio","slideEl","removeProperty","isElementVisible","imageContainerEl","heightSlideTitleEl","title","getHeightWithMargins","subTitle","heightSlideEl","concat","bottomValue","setPositionButtons","imageEl","imgContainerEl","sliderButtonEl","bottom","prevButtonString","nextButtonString","prevArrow","nextArrow","on","currentSlide","add","bind","createReviewBar","dependencies","onClick","clearActiveBar","barEl","quantityEl","enabledClass","disabledClass","startValue","isEnabled","isDisabled","onClickEvent","deInit","removeEventListener","getStartValue","getAttribute","update","totalNumberOfReviews","starAmount","percentage","updateBarPercentage","createReviewBars","reviewBarEls","reviewBarComponents","reviewBarsTotalLinkEl","deinit","push","updateAmounts","totalReviews","starAmounts","resetActiveBar","barcomponent","reviewStar","find","x","key","value","innerTextEl","innerText","replace","createShowMoreButton","enable","disable","show","hide","createPaginationControl","buttonTemplateEl","leftControlEL","className","rightControlEL","reviewBlocksControlEl","insertAdjacentElement","selectedPage","numberedButtonEls","amountOfPagesToShow","numberOfPages","indexOffset","onNumberedButtonClicked","e","currentTarget","textContent","showArrowControl","onClickArrowControl","updatePaginations","pages","pageNumber","indexCondition","min","index","buttonCloneEl","activeButtonEl","insertAdjacentText","toString","docFrag","createDocumentFragment","apply","parentNode","insertBefore","toggleArrowControls","createReviewBlocks","productReviewsNameLabel","_a","productReviewsAnonymousLabel","reviewTemplateEl","clear","addReviews","productCategoryReviews","reviewEls","r","review","reviewTemplateCloneEl","reviewStarsEl","score","comment","reviewerBlockEL","name_1","firstName","lastName","trim","reviewDate","commentBlockEl","feedback","feedbackDate","insertAdjacentHTML","createUserReview","createReviewLanguageSelect","onSelect","languageSelectEl","reviewAmounts","languagesCount","replaceAmountBetweenParentheses","call","option","languageCount","selectedLanguage","initShowMoreElements","parameter","elementselector","elementElsDesktop","elementElsMobile","batchsizeDesktop","batchsizeMobile","currentPage","currentpage","sizeMobile","sizeDesktop","url","updateParameter","history","replaceState","splice","parentElement","__assign","Object","assign","s","n","arguments","p","hasOwnProperty","opts","lineHeight","ceil","parseFloat","defaults","ellipsis","showMore","outerHTML","showLess","hasClass","$containerEl","ev","currentEl","eventTrackingMethod","openEventAction","truncate","closeEventAction","scrollIntoView","newOpts","updateContent","collapse","createUserReviews","reviewLanguageSelect","getReviewsAsync","totalAmountOfReviews","numberOfReviewsToShow","_b","startPageOffset","_c","showLoadMoreButton","activeFilter","activeLanguage","reviewBlocksComponent","mobileControlEl","desktopControlEl","loadNextPage","page","language","reset","activeLanguageChanged","loadMoreButtonComponent","reviews","reviewBarsComponent","filteredAmount","a","always","paginationControlComponent","languageSelectorContainerEl","lang","isMobileControl","isMobileOnResize","createUsps","iconEls","icons","getInlineSvgsAsync","icon","svg","initVideoPlayer","videoContainerEl","autoplayOnClick","playerEl","overlayEl","onOverlayClick","preventDefault","src","indexOf","hideOverlay","playPauseYoutubeVideo","action","postMessageToPlayer","func","showOverlay","command","contentWindow","postMessage","JSON","stringify","isOverlayVisible"],"mappings":"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"}