{"version":3,"sources":["webpack:///external \"jQuery\"","webpack:///./_frontend/public/modules/configurator/gallery/gallery.js","webpack:///./_frontend/public/modules/configurator/gallery/gallery.scss?f2d1","webpack:///./_frontend/public/modules/configurator/gallery/sticky.scss?9839","webpack:///./_frontend/public/modules/configurator/gallery/item-router.js","webpack:///./_frontend/public/modules/configurator/gallery/item-holder-main.js","webpack:///./_frontend/public/modules/configurator/gallery/item-holder-thumb.js","webpack:///./_frontend/public/modules/configurator/gallery/item-holder-sticky.js","webpack:///./_frontend/public/modules/configurator/gallery/item-indicator.js","webpack:///./_frontend/public/modules/configurator/gallery/item-holder.js","webpack:///./_frontend/public/pages/product/product.js","webpack:///./_frontend/public/modules/configurator/configurator-product.js"],"names":["require","utils","ItemRouter","ItemIndicator","Gallery","args","that","media","inited","items","itemsIndicator","maxLayers","itemsInited","configurator","$window","$root","$","defaultImages","combaining","humanToMediaSize","humanToMediaSizeRelations","complexLayersCombinationItemsGlobal","getComplexLayersCombinationItemsGlobal","complexLayersCombinationItemsLocal","getComplexLayersCombinationItemsLocal","fields","currentItemIndex","options","gallery","appendTo","zoomActive","eId","generateEventId","stickyThumbnailsIsActive","isDesktop","length","console","warn","$previousBtn","$nextBtn","$zoomBtn","$zoomBtnIcon","find","$mainArea","$mainContainer","$thumbsContainer","add","$body","addClass","$indicatorsContainer","$productTitle","html","stickyGallery","stickyGalleryInMobile","stickyGalleryInited","$stickyGalleryContainer","$stickyGalleryCloseBtn","stickyGalleryToggleTimeout","on","newIndex","setActiveItem","toggleZoom","e","target","get","loadMaxLayers","loadReferenceSizes","init","remove","$parking","log","trigger","combinationItems","recipe","complexImagesLayers","Option_comb_related_image_Array_JSON__c__a","complexLayersRecipe","extend","forEach","field","fieldContent","WC_Option_associated_Layer_URLs__c__a","concat","clearTimeout","off","deepRemove","removeClass","each","$layer","attr","removeAttr","toggleClass","$galleryItem","clone","$img","outerHTML","combinationItem","layerItems","layerItem","zIndex","referenceSizes","humanSize","getMedia","width","height","complexLayersCombinationItems","selectedRadioDepNames","combination","matches","selectCombination","error","selectCombinationItem","includes","galleryIndex","undefined","galeryIndex","debug","URL","galleryItem","getItem","setLayerId","visibleRadioFields","depName","getDepName","push","getVisibleRadioFields","getSelectedRadioDepNames","processComplexLayersCombinations","uselocalCombination","WC_Use_Local_Comb_for_Associated_Layers__c","applyLayersChanges","initedItems","defaultImage","index","item","parseInt","onInited","onItemsInited","itemIndicator","setActive","combine","activeItem","activeItemIndicator","getItemIndicator","scale","parseFloat","setScale","thumb","medium","large","setSrc","layersIds","enable","window","ucma","PhotoSwipeTrigger","css","scrollTop","mainGalleryBottomOffset","offset","top","outerHeight","proxy","maybeToggleStickyGallery","toggleStickyGallery","stickyGalleryIsVisible","isMainGalleryVisible","$target","hasClass","closest","visible","initStickyGallery","setTimeout","onStickyGalletCloseOnClickOnBlank","module","exports","ItemHolderMain","ItemHolderThumb","ItemHolderSticky","setArray","hasUnappliedChanges","combined","holdersItems","active","itemHolderMain","itemRouter","holders","enabled","itemHolderThumb","itemHolderSticky","holderItem","holdersItem","imageId","ItemHolder","$layers","firstSetInited","isLazy","improveQueue","sizesSteps","getType","wasActive","setPrevious","previous","max_sizes","done","loaded","realImageSizes","layerId","tmp","getMediaAttributes","filter","eq","attributes","src","getTransparentPixel","srcset","style","getMaxSizes","onLoaded","onCombined","one","newImproveQueue","$updatedLayers","loadedLayers","queueItem","sizeIndex","indexOf","maxSizeIndex","$updatedLayer","ConfiguratorProduct","document","ready","mb2ls","phpVars","product","$formCart","$mb2lsInput","productId","val","$addToCartBtn","$confParking","$galleryParking","dev","urlQuery","getUrlQuery","adapter","$quantityInput","hasError","updateOrderItem","sfOrderItemId","onRootHtmlInserted","data","getCartData","preventDefault","stopPropagation","toggleProcessing","setErrorBoxesMessage","setNoticeBoxesMessage","clearAjaxFieldsErrors","urlSearchParams","URLSearchParams","location","search","requestingSource","itemType","rest","response","alert","message","saved_order_item","key","JSON_Data__c__a","fieldData","getFieldByKey","setValue","value","onChange","user_configuration","configuration","basic","getTemplatesData","templatesData","getComplexData","advanced","Configurator","PriceDisplay","$price","firstUpdatingGallary","priceTimeout","initialPriceUpdating","saveConfigurationXhr","getPriceXhr","priceType","pricesDisplays","priceFilter","regular","sale","b2b","margin","setPriceTemplateData","prices","mode","human_to_media_size_relations","default_gallery_images_ids","updateGallery","templatesDataReserved","prependTo","onChangeQuanity","initialUpdate","updateQuantity","updatePrice","updateHtmlElementsTemplates","abort","updateGalleryTimeout","destroy","notes","cartData","params","price","actual","c","parameter","origin","pathname","param","criticalHtml","getCriticalHtml","name","inArray","formatMoney","source","submitData","quantity","hiddenAttributes","priceAdditionObjects","getPriceAdditionObjects","removePriceAdditionObjects","initial","priceDisplay","setPrice","notice","errorSourceKeys","getFieldByTemplateId","isEnabledValidator","enableValidator","validatorAjaxErrors","isValid","processing","prop","updateComplexLayersCombinations"],"mappings":"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","file":"public-page-product.js?hash=1404c7","sourcesContent":["module.exports = jQuery;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"jQuery\"\n// module id = 1\n// module chunks = 0 1 3 4 5 6","require('./gallery.scss');\r\nrequire('./sticky.scss');\r\nconst utils = require('public/utils.js');\r\nconst ItemRouter = require('./item-router.js');\r\nconst ItemIndicator = require('./item-indicator.js');\r\n\r\n\r\n/**\r\n * @property {Array.<ItemRouter>} items\r\n * @property {Array} media\r\n * @property {ConfiguratorProduct} configurator\r\n */\r\nclass Gallery {\r\n    constructor(args)\r\n    {\r\n        const that = this;\r\n        that.args = args;\r\n        that.media = args.media;\r\n        that.inited = false;\r\n        that.items = [];\r\n        that.itemsIndicator = [];\r\n        that.maxLayers = 0;\r\n        that.itemsInited = true;\r\n        that.configurator = args.configurator;\r\n        that.$window = that.configurator.$window;\r\n        that.$root = $('<div class=\"mb2ls-gallery\">');\r\n        that.defaultImages = args.defaultImages;\r\n        that.combaining = false;\r\n        that.humanToMediaSize = args.humanToMediaSizeRelations;\r\n        that.complexLayersCombinationItemsGlobal = that.getComplexLayersCombinationItemsGlobal();\r\n        that.complexLayersCombinationItemsLocal = that.getComplexLayersCombinationItemsLocal(that.configurator.fields);\r\n        that.currentItemIndex = 0;\r\n        that.options = that.configurator.options.gallery;\r\n        that.$root.appendTo($('.mb2ls-gallery-parking'));\r\n        that.zoomActive = false;\r\n        that.eId = utils.generateEventId();\r\n        that.stickyThumbnailsIsActive = !utils.isDesktop();\r\n\r\n\r\n        if (that.$root.length === 0)\r\n        {\r\n            console.warn(`There is no '.mb2ls-gallery' item.`);\r\n            return;\r\n        }\r\n\r\n        that.$previousBtn =\r\n            $(`<div class=\"mb2ls-gallery__control mb2ls-gallery__control--previous\">\r\n<div class=\"mb2ls-gallery__control-button\">\r\n<i class=\"mb2ls-gallery__control-icon-arrow mb2ls-gallery__control-icon-arrow--left\"></i>\r\n</div>\r\n</div>`);\r\n        that.$nextBtn =\r\n            $(`<div class=\"mb2ls-gallery__control mb2ls-gallery__control--next\">\r\n<div class=\"mb2ls-gallery__control-button\">\r\n<i class=\"mb2ls-gallery__control-icon-arrow mb2ls-gallery__control-icon-arrow--right\"></i>\r\n</div>\r\n</div>`);\r\n\r\n\r\n        that.$zoomBtn =\r\n            $(`<div class=\"mb2ls-gallery__control mb2ls-gallery__control--zoom\">\r\n<div class=\"mb2ls-gallery__control-button mb2ls-gallery__control-button--zoom\">\r\n<i class=\"mb2ls-gallery__control-icon-zoom mb2ls-gallery__control-icon-zoom--in\"></i>\r\n</div>\r\n</div>`);\r\n        that.$zoomBtnIcon = that.$zoomBtn.find(`.mb2ls-gallery__control-icon-zoom`);\r\n\r\n        that.$mainArea = $('<div class=\"mb2ls-gallery__main-area\">');\r\n        that.$mainContainer = $('<div class=\"mb2ls-gallery__main-items-container\">');\r\n        that.$thumbsContainer = $('<div class=\"mb2ls-gallery__thumbs-items-container\">');\r\n        that.$mainContainer\r\n            .add(that.$nextBtn)\r\n            .add(that.$previousBtn)\r\n            .add(that.$zoomBtn)\r\n            .appendTo(that.$mainArea);\r\n\r\n\r\n        if (that.stickyThumbnailsIsActive)\r\n        {\r\n            that.configurator.$body.addClass('mb2ls-gallery-sticky-thumbnails-is-active');\r\n            that.$indicatorsContainer = $('<div class=\"mb2ls-gallery__inidicator-items-container\">');\r\n            that.$indicatorsContainer.appendTo(that.$mainArea);\r\n            const $productTitle = $('.product_title');\r\n            if ($productTitle.length > 0)\r\n            {\r\n                $('<div class=\"mb2ls-gallery__product-title\">')\r\n                    .html($productTitle.html())\r\n                    .appendTo(that.$mainArea);\r\n            }\r\n        }\r\n\r\n        //https://s.bavi.dev/wicO0/wOlOxeTe77.jpg\r\n        that.stickyGallery = that.options.stickyGalleryInMobile && !utils.isDesktop();\r\n        that.stickyGalleryInited = false;\r\n        if (that.stickyGallery)\r\n        {\r\n            that.$stickyGalleryContainer = $('<div class=\"mb2ls-sticky-gallery\">');\r\n            that.$stickyGalleryCloseBtn = $('<div class=\"mb2ls-sticky-gallery__closeBtn\">');\r\n        }\r\n        that.stickyGalleryToggleTimeout = 0;\r\n\r\n\r\n        //\"off\" deosn't required, because we remove the element\r\n        that.$nextBtn.on('click', function ()\r\n        {\r\n            let newIndex = that.currentItemIndex + 1;\r\n            if (newIndex > that.items.length - 1) newIndex = 0;\r\n            that.setActiveItem(newIndex);\r\n        });\r\n\r\n        //\"off\" deosn't required, because we remove the element\r\n        that.$previousBtn.on('click', function ()\r\n        {\r\n            let newIndex = that.currentItemIndex - 1;\r\n            if (newIndex < 0) newIndex = that.items.length - 1;\r\n            that.setActiveItem(newIndex);\r\n        });\r\n\r\n        //\"off\" deosn't required, because we remove the element\r\n        that.$zoomBtn.on('click', function ()\r\n        {\r\n            that.toggleZoom();\r\n        });\r\n\r\n        //\"off\" deosn't required, because we remove the element\r\n        that.$root.on('click', function (e)\r\n        {\r\n            if (!that.zoomActive) return;\r\n            if (e.target !== that.$root.get(0)) return;\r\n\r\n            that.toggleZoom();\r\n        });\r\n\r\n        if (that.complexLayersCombinationItemsGlobal.length || that.complexLayersCombinationItemsLocal.length)\r\n        {\r\n            that.loadMaxLayers();\r\n            that.loadReferenceSizes();\r\n        }\r\n        that.init();\r\n\r\n        //Remove critical HTML\r\n        that.$root.find('*').remove();\r\n\r\n        that.$mainArea.appendTo(that.$root);\r\n        if (!that.stickyThumbnailsIsActive)\r\n        {\r\n            that.$thumbsContainer.appendTo(that.$root);\r\n        } else\r\n        {\r\n            const $parking = $('<div class=\"mb2ls-gallery__thumbs-mobile-sticky-wrapper\">');\r\n            that.$thumbsContainer.appendTo($parking);\r\n            console.log('that.configurator.$root', that.configurator.$root);\r\n            $parking.appendTo(that.configurator.$root);\r\n        }\r\n\r\n        that.configurator.$body.trigger('mb2ls.configurator.gallery.inited', that.configurator);\r\n    }\r\n\r\n    getComplexLayersCombinationItemsGlobal()\r\n    {\r\n        const that = this;\r\n        let combinationItems = [];\r\n        if (\r\n            that.configurator.recipe.complexImagesLayers &&\r\n            that.configurator.recipe.complexImagesLayers.Option_comb_related_image_Array_JSON__c__a\r\n        )\r\n        {\r\n            const complexLayersRecipe =\r\n                $.extend(true, {}, that.configurator.recipe.complexImagesLayers.Option_comb_related_image_Array_JSON__c__a);\r\n            combinationItems = complexLayersRecipe.combinationItems;\r\n        }\r\n\r\n        return combinationItems;\r\n    }\r\n\r\n    /**\r\n     *\r\n     * @param fields {Array.<Field>}\r\n     * @returns {*[]}\r\n     */\r\n    getComplexLayersCombinationItemsLocal(fields)\r\n    {\r\n        const that = this;\r\n        let combinationItems = [];\r\n\r\n        fields.forEach(function (field)\r\n        {\r\n            const fieldContent = field.fieldContent;\r\n            if (!fieldContent.WC_Option_associated_Layer_URLs__c__a) return true;\r\n            if (!fieldContent.WC_Option_associated_Layer_URLs__c__a.combinationItems) return true;\r\n\r\n            combinationItems =\r\n                combinationItems.concat(fieldContent.WC_Option_associated_Layer_URLs__c__a.combinationItems);\r\n        });\r\n        return combinationItems;\r\n    }\r\n\r\n    destroy()\r\n    {\r\n        const that = this;\r\n        if (that.stickyGalleryToggleTimeout) clearTimeout(that.stickyGalleryToggleTimeout);\r\n        that.$window.off(`.${that.eId}`);\r\n        that.configurator.$body.off(`.${that.eId}`);\r\n        utils.deepRemove(that.$stickyGalleryContainer);\r\n        utils.deepRemove(that.$root);\r\n    }\r\n\r\n    toggleZoom()\r\n    {\r\n        const that = this;\r\n        if (that.zoomActive)\r\n        {\r\n            that.zoomActive = false;\r\n            that.$zoomBtnIcon.removeClass('mb2ls-gallery__control-icon-zoom--out');\r\n            that.$zoomBtnIcon.addClass('mb2ls-gallery__control-icon-zoom--in');\r\n\r\n            that.$mainArea.find('.mb2ls-gallery__item-layer').each(function ()\r\n            {\r\n                const $layer = $(this);\r\n                $layer.attr('sizes', $layer.attr('mb2ls-sizes'));\r\n                $layer.removeAttr('mb2ls-sizes');\r\n            });\r\n        } else\r\n        {\r\n            that.zoomActive = true;\r\n            that.$zoomBtnIcon.removeClass('mb2ls-gallery__control-icon-zoom--in');\r\n            that.$zoomBtnIcon.addClass('mb2ls-gallery__control-icon-zoom--out');\r\n\r\n            that.$mainArea.find('.mb2ls-gallery__item-layer').each(function ()\r\n            {\r\n                const $layer = $(this);\r\n                $layer.attr('mb2ls-sizes', $layer.attr('sizes'));\r\n                $layer.removeAttr('sizes');\r\n            });\r\n        }\r\n        that.$root.toggleClass('mb2ls-gallery--full-screen', that.zoomActive);\r\n        that.configurator.$body.toggleClass('mb2ls-gallery-full-screen', that.zoomActive);\r\n    }\r\n\r\n    getCriticalHtml()\r\n    {\r\n        const that = this;\r\n        const $root = $('<div class=\"mb2ls-gallery mb2ls-critical-html\">');\r\n        const $mainArea = $('<div class=\"mb2ls-gallery__main-area\">');\r\n        const $mainContainer = $('<div class=\"mb2ls-gallery__main-items-container\">');\r\n        const $galleryItem = that.$mainContainer.find('.mb2ls-gallery__item:nth-child(1)').clone();\r\n\r\n        $galleryItem.addClass('mb2ls-gallery__item--active');\r\n        $galleryItem.find('img').each(function ()\r\n        {\r\n            const $img = $(this);\r\n\r\n            //Remove transparent images\r\n            if ($img.attr('width') === '1')\r\n            {\r\n                $img.remove();\r\n                return true;\r\n            }\r\n\r\n            $img.attr('loading', false);\r\n\r\n            //The PageSpeed is better when sizes are fully defined\r\n            //$img.attr('sizes', '300px');\r\n\r\n            $img.removeAttr('data-id');\r\n        });\r\n\r\n        $galleryItem.appendTo($mainContainer);\r\n        $mainContainer.appendTo($mainArea);\r\n        $mainArea.appendTo($root);\r\n        return $root.get(0).outerHTML;\r\n    }\r\n\r\n    loadMaxLayers()\r\n    {\r\n        const that = this;\r\n        that.maxLayers = 0;\r\n        const combinationItems = that.complexLayersCombinationItemsGlobal.concat(\r\n            that.complexLayersCombinationItemsLocal\r\n        );\r\n\r\n        combinationItems.forEach(function (combinationItem)\r\n        {\r\n            if (!combinationItem.layerItems) return;\r\n\r\n            combinationItem.layerItems.forEach(function (layerItem)\r\n            {\r\n                if (layerItem.zIndex > that.maxLayers) that.maxLayers = layerItem.zIndex;\r\n            });\r\n        });\r\n    }\r\n\r\n    loadReferenceSizes()\r\n    {\r\n        const that = this;\r\n        that.referenceSizes = {};\r\n        for (let humanSize in that.humanToMediaSize)\r\n        {\r\n            const media = that.configurator.getMedia(that.defaultImages[0], humanSize);\r\n            that.referenceSizes[humanSize] = {\r\n                width: media[1],\r\n                height: media[2],\r\n            };\r\n        }\r\n    }\r\n\r\n    processComplexLayersCombinations(complexLayersCombinationItems, selectedRadioDepNames)\r\n    {\r\n        const that = this;\r\n        if (!selectedRadioDepNames.length) return;\r\n\r\n        complexLayersCombinationItems.forEach(function (combination)\r\n        {\r\n            let matches = 0;\r\n            if (!combination.selectCombination)\r\n            {\r\n                console.error(\r\n                    `There is no 'combination.selectCombination' - incorrect data structure in JSON.`,\r\n                    combination\r\n                );\r\n                return true;\r\n            }\r\n            combination.selectCombination.forEach(function (selectCombinationItem)\r\n            {\r\n                if (selectedRadioDepNames.includes(selectCombinationItem)) matches++;\r\n            });\r\n\r\n            // Should match all the items in combination - \"'a' and 'b' and 'c'\"\r\n            if (matches >= combination.selectCombination.length)\r\n            {\r\n                combination.layerItems.forEach(function (layerItem)\r\n                {\r\n                    //TODO: replace layerItem.galeryIndex with layerItem.galleryIndex,\r\n                    // don't forget to do the same in JSONs\r\n                    const galleryIndex = layerItem.galleryIndex !== undefined ? layerItem.galleryIndex : layerItem.galeryIndex;\r\n                    const debug = false;\r\n                    if (galleryIndex === 0 && debug)\r\n                    {\r\n                        console.log('combination.selectCombination:', combination.selectCombination);\r\n                        console.log('layerItem', layerItem);\r\n                        console.log('layerItem.URL', that.configurator.getMedia(layerItem.URL, 'mb2ls_300')[0]);\r\n                    }\r\n                    const galleryItem = that.getItem(galleryIndex);\r\n                    galleryItem.setLayerId(layerItem.zIndex - 1, layerItem.URL);\r\n                });\r\n            }\r\n        });\r\n    }\r\n\r\n    /**\r\n     *\r\n     * @param {Array.<RatioOptionsClassic|RatioOptionsCustom>} visibleRadioFields\r\n     * @returns {String[]}\r\n     */\r\n    getSelectedRadioDepNames(visibleRadioFields)\r\n    {\r\n        const selectedRadioDepNames = [];\r\n        visibleRadioFields.forEach((field) =>\r\n        {\r\n            const depName = field.getDepName();\r\n            if (!selectedRadioDepNames.includes(depName)) selectedRadioDepNames.push(depName);\r\n        });\r\n        return selectedRadioDepNames;\r\n    }\r\n\r\n    updateComplexLayersCombinations()\r\n    {\r\n        const that = this;\r\n        if (!that.inited) return;\r\n        if (!that.complexLayersCombinationItemsGlobal.length && !that.complexLayersCombinationItemsLocal.length) return;\r\n\r\n        const visibleRadioFields = that.configurator.getVisibleRadioFields();\r\n        const selectedRadioDepNames = that.getSelectedRadioDepNames(visibleRadioFields);\r\n\r\n        that.processComplexLayersCombinations(that.complexLayersCombinationItemsGlobal, selectedRadioDepNames);\r\n\r\n        visibleRadioFields.forEach((field) =>\r\n        {\r\n            let uselocalCombination = field.fieldContent.WC_Use_Local_Comb_for_Associated_Layers__c;\r\n            that.processComplexLayersCombinations(\r\n                that.getComplexLayersCombinationItemsLocal([field]),\r\n                uselocalCombination ? that.getSelectedRadioDepNames([field]) : selectedRadioDepNames\r\n            );\r\n        });\r\n        that.applyLayersChanges();\r\n    }\r\n\r\n    init()\r\n    {\r\n        const that = this;\r\n        let initedItems = 0;\r\n\r\n        that.defaultImages.forEach(function (defaultImage, index)\r\n        {\r\n            const item = new ItemRouter({\r\n                configurator: that.configurator,\r\n                index: parseInt(index),\r\n                gallery: that,\r\n                media: that.media,\r\n                maxLayers: that.maxLayers,\r\n                referenceSizes: that.referenceSizes,\r\n                $mainContainer: that.$mainContainer,\r\n                $thumbsContainer: that.$thumbsContainer,\r\n                onInited: function ()\r\n                {\r\n                    initedItems++;\r\n                    if (initedItems === that.defaultImages.length)\r\n                    {\r\n                        that.onItemsInited();\r\n                    }\r\n                }\r\n            });\r\n            let itemIndicator;\r\n            if (that.stickyThumbnailsIsActive)\r\n            {\r\n                itemIndicator = new ItemIndicator({\r\n                    index: parseInt(index),\r\n                    gallery: that,\r\n                    $indicatorsContainer: that.$indicatorsContainer,\r\n                });\r\n            }\r\n            if (index === 0)\r\n            {\r\n                item.setActive(true);\r\n                that.stickyThumbnailsIsActive && itemIndicator.setActive(true);\r\n            }\r\n            item.combine([defaultImage]);\r\n\r\n            that.items.push(item);\r\n            that.stickyThumbnailsIsActive && that.itemsIndicator.push(itemIndicator);\r\n        });\r\n\r\n        that.inited = true;\r\n    }\r\n\r\n    /**\r\n     * @param index\r\n     * @return {ItemRouter}\r\n     */\r\n    getItem(index)\r\n    {\r\n        const that = this;\r\n        return that.items[index];\r\n    }\r\n\r\n    /**\r\n     * @param index\r\n     * @return {ItemIndicator}\r\n     */\r\n    getItemIndicator(index)\r\n    {\r\n        const that = this;\r\n        return that.itemsIndicator[index];\r\n    }\r\n\r\n    setActiveItem(index)\r\n    {\r\n        const that = this;\r\n        const activeItem = that.getItem(index);\r\n        let activeItemIndicator;\r\n        if (that.stickyThumbnailsIsActive)\r\n        {\r\n            activeItemIndicator = that.getItemIndicator(index);\r\n        }\r\n        if (activeItem === undefined) return;\r\n\r\n        that.items.forEach(function (item)\r\n        {\r\n            item.setActive(false);\r\n        });\r\n        if (that.stickyThumbnailsIsActive)\r\n        {\r\n            that.itemsIndicator.forEach(function (item)\r\n            {\r\n                item.setActive(false);\r\n            });\r\n            activeItemIndicator.setActive(true);\r\n        }\r\n        activeItem.setActive(true);\r\n        that.currentItemIndex = index;\r\n    }\r\n\r\n    setScale(scale)\r\n    {\r\n        const that = this;\r\n        scale = parseFloat(scale);\r\n        if (scale <= 0.2 || scale > 4)\r\n        {\r\n            scale = 1;\r\n            console.warn(`Incorrect scale value.`);\r\n        }\r\n        that.items.forEach(function (item)\r\n        {\r\n            item.setScale(scale);\r\n        });\r\n    }\r\n\r\n    onItemsInited()\r\n    {\r\n        const that = this;\r\n        that.args.onInited();\r\n        that.itemsInited = true;\r\n    }\r\n\r\n    setItem(index, thumb, medium, large)\r\n    {\r\n        const that = this;\r\n        that.items[index].setSrc(thumb, medium, large);\r\n    }\r\n\r\n    applyLayersChanges()\r\n    {\r\n        const that = this;\r\n        that.items.forEach(function (item)\r\n        {\r\n            item.combine(item.layersIds);\r\n        });\r\n    }\r\n\r\n    togglePhotoswipe(enable)\r\n    {\r\n        $(window.ucma.PhotoSwipeTrigger).css('pointer-events', enable ? '' : 'none');\r\n    }\r\n\r\n    isMainGalleryVisible()\r\n    {\r\n        const that = this;\r\n        const scrollTop = that.$window.scrollTop();\r\n        const mainGalleryBottomOffset = that.$mainContainer.offset().top + that.$mainContainer.outerHeight();\r\n        return scrollTop < mainGalleryBottomOffset;\r\n    }\r\n\r\n    initStickyGallery()\r\n    {\r\n        const that = this;\r\n\r\n        //\"off\" is in \"destroy\"\r\n        that.$window.on(`scroll.${that.eId} resize.${that.eId}`, $.proxy(that.maybeToggleStickyGallery, that));\r\n\r\n        //\"off\" deosn't required, because we remove the element\r\n        that.$stickyGalleryCloseBtn.on('click', function ()\r\n        {\r\n            that.toggleStickyGallery(false);\r\n        });\r\n        that.$stickyGalleryCloseBtn.appendTo(that.$stickyGalleryContainer);\r\n        that.$stickyGalleryContainer.appendTo(that.configurator.$body);\r\n        that.stickyGalleryInited = true;\r\n    }\r\n\r\n    maybeToggleStickyGallery()\r\n    {\r\n        const that = this;\r\n        if (that.stickyGalleryIsVisible && that.isMainGalleryVisible()) that.toggleStickyGallery(false);\r\n    }\r\n\r\n    onStickyGalletCloseOnClickOnBlank(e)\r\n    {\r\n        const that = this;\r\n        const $target = $(e.target);\r\n        if (!$target.hasClass('mb2ls-sticky-gallery') && !$target.closest('.mb2ls-sticky-gallery').length)\r\n        {\r\n            that.toggleStickyGallery(false);\r\n        }\r\n    }\r\n\r\n    toggleStickyGallery(visible)\r\n    {\r\n        const that = this;\r\n        if (!that.stickyGalleryInited)\r\n        {\r\n            that.initStickyGallery();\r\n        }\r\n        that.stickyGalleryIsVisible = visible;\r\n        if (that.stickyGalleryToggleTimeout) clearTimeout(that.stickyGalleryToggleTimeout);\r\n\r\n        //\"clearTimeout\" is in \"destroy\"\r\n        that.stickyGalleryToggleTimeout = setTimeout(function ()\r\n        {\r\n            that.$stickyGalleryContainer.toggleClass('mb2ls-sticky-gallery--visible', visible);\r\n        }, !visible ? 200 : 0);\r\n\r\n        if (that.stickyGalleryIsVisible)\r\n        {\r\n            //\"off\" is in \"destroy\"\r\n            that.configurator.$body.on(`click.${that.eId}`, $.proxy(that.onStickyGalletCloseOnClickOnBlank, that));\r\n        } else\r\n        {\r\n            that.configurator.$body.off(`click.${that.eId}`);\r\n        }\r\n    }\r\n}\r\n\r\nmodule.exports = Gallery;\n\n\n// WEBPACK FOOTER //\n// ./_frontend/public/modules/configurator/gallery/gallery.js","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./_frontend/public/modules/configurator/gallery/gallery.scss\n// module id = 215\n// module chunks = 0","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./_frontend/public/modules/configurator/gallery/sticky.scss\n// module id = 216\n// module chunks = 0","const utils = require('public/utils.js');\r\nconst ItemHolderMain = require('./item-holder-main.js');\r\nconst ItemHolderThumb = require('./item-holder-thumb.js');\r\nconst ItemHolderSticky = require('./item-holder-sticky.js');\r\n\r\n/**\r\n * @property {ConfiguratorProduct} configurator\r\n * @property {Gallery} gallery\r\n * @property {Array.<ItemHolder>} holdersItems\r\n */\r\nclass ItemRouter {\r\n    constructor(args)\r\n    {\r\n        const that = this;\r\n        that.configurator = args.configurator;\r\n        that.$mainContainer = args.$mainContainer;\r\n        that.$thumbsContainer = args.$thumbsContainer;\r\n\r\n        that.layersIds = utils.setArray(args.maxLayers);\r\n        that.hasUnappliedChanges = false;\r\n        that.combined = false;\r\n        that.media = args.media;\r\n        that.gallery = args.gallery;\r\n        that.referenceSizes = args.referenceSizes;\r\n        that.index = args.index;\r\n        that.holdersItems = [];\r\n        that.active = false;\r\n\r\n        that.stickyGallery = false;\r\n        if (that.gallery.stickyGallery)\r\n        {\r\n            if (that.gallery.defaultImages.length >= 5)\r\n            {\r\n                if (that.index === 4) that.stickyGallery = true;\r\n            } else\r\n            {\r\n                if (that.index === 0) that.stickyGallery = true;\r\n            }\r\n        }\r\n\r\n        const itemHolderMain = new ItemHolderMain({\r\n            itemRouter: that,\r\n        });\r\n        itemHolderMain.$root.appendTo(that.$mainContainer);\r\n        that.holdersItems.push(itemHolderMain);\r\n\r\n\r\n        if (that.gallery.options.holders.thumb.enabled)\r\n        {\r\n            const itemHolderThumb = new ItemHolderThumb({\r\n                itemRouter: that,\r\n            });\r\n            itemHolderThumb.$root.appendTo(that.$thumbsContainer);\r\n            that.holdersItems.push(itemHolderThumb);\r\n        }\r\n\r\n        if (that.stickyGallery)\r\n        {\r\n            const itemHolderSticky = new ItemHolderSticky({\r\n                itemRouter: that,\r\n            });\r\n            itemHolderSticky.$root.appendTo(that.gallery.$stickyGalleryContainer);\r\n            that.holdersItems.push(itemHolderSticky);\r\n        }\r\n\r\n        if (typeof args.onInited === 'function') args.onInited();\r\n    }\r\n\r\n    setActive(active)\r\n    {\r\n        const that = this;\r\n        that.holdersItems.forEach(function (holderItem)\r\n        {\r\n            holderItem.setActive(active);\r\n        });\r\n        that.active = active;\r\n    }\r\n\r\n    setScale(scale)\r\n    {\r\n        const that = this;\r\n        that.holdersItems.forEach(function (holderItem)\r\n        {\r\n            holderItem.setScale(scale);\r\n        });\r\n    }\r\n\r\n    /**\r\n     * @param {Array} layersIds\r\n     */\r\n    combine(layersIds)\r\n    {\r\n        const that = this;\r\n        that.holdersItems.forEach(function (holdersItem)\r\n        {\r\n            holdersItem.combine(layersIds, function ()\r\n            {\r\n                //console.log('combined');\r\n            });\r\n        });\r\n    }\r\n\r\n    setLayerId(zIndex, imageId)\r\n    {\r\n        const that = this;\r\n        if (that.layersIds[zIndex] !== imageId)\r\n        {\r\n            that.layersIds[zIndex] = imageId;\r\n            that.hasUnappliedChanges = true;\r\n        }\r\n    }\r\n}\r\n\r\nmodule.exports = ItemRouter;\n\n\n// WEBPACK FOOTER //\n// ./_frontend/public/modules/configurator/gallery/item-router.js","const utils = require('public/utils.js');\r\nconst ItemHolder = require('./item-holder.js');\r\n\r\n\r\nclass ItemHolderMain extends ItemHolder {\r\n    constructor(args)\r\n    {\r\n        super(args);\r\n        const that = this;\r\n    }\r\n\r\n    isLazy()\r\n    {\r\n        const that = this;\r\n\r\n        //It's important for lazy HTML: we load the first image of gallery in background\r\n        return that.itemRouter.index !== 0;\r\n    }\r\n\r\n    setScale(scale)\r\n    {\r\n        const that = this;\r\n        that.$layers.css('transform', `scale(${scale})`);\r\n    }\r\n\r\n    onCombined()\r\n    {\r\n        const that = this;\r\n\r\n        if (!that.firstSetInited)\r\n        {\r\n            that.itemRouter.configurator.$root.trigger('mb2ls.gallery.itemHolderMain.firstSetInited');\r\n        }\r\n\r\n        //Restore lazy loading\r\n        if (!that.isLazy() && !that.firstSetInited)\r\n        {\r\n            that.$layers.attr('loading', 'lazy');\r\n        }\r\n\r\n        super.onCombined();\r\n    }\r\n\r\n    getType()\r\n    {\r\n        return 'main';\r\n    }\r\n}\r\n\r\nmodule.exports = ItemHolderMain;\n\n\n// WEBPACK FOOTER //\n// ./_frontend/public/modules/configurator/gallery/item-holder-main.js","const utils = require('public/utils.js');\r\nconst ItemHolder = require('./item-holder.js');\r\n\r\n\r\nclass ItemHolderThumb extends ItemHolder {\r\n    constructor(args)\r\n    {\r\n        super(args);\r\n        const that = this;\r\n\r\n        //\"off\" deosn't required, because we remove the element\r\n        that.$root.on('click', function ()\r\n        {\r\n            if (that.itemRouter.gallery.currentItemIndex !== that.itemRouter.index)\r\n            {\r\n                that.itemRouter.gallery.setActiveItem(that.itemRouter.index);\r\n            }\r\n            if (that.itemRouter.gallery.stickyThumbnailsIsActive && !that.itemRouter.gallery.zoomActive)\r\n            {\r\n                that.itemRouter.gallery.toggleZoom();\r\n            }\r\n        });\r\n    }\r\n\r\n    setScale()\r\n    {\r\n\r\n    }\r\n\r\n    getType()\r\n    {\r\n        return 'thumb';\r\n    }\r\n}\r\n\r\nmodule.exports = ItemHolderThumb;\n\n\n// WEBPACK FOOTER //\n// ./_frontend/public/modules/configurator/gallery/item-holder-thumb.js","const utils = require('public/utils.js');\r\nconst ItemHolder = require('./item-holder.js');\r\n\r\n\r\nclass ItemHolderSticky extends ItemHolder {\r\n    constructor(args)\r\n    {\r\n        super(args);\r\n        const that = this;\r\n\r\n        //\"off\" deosn't required, because we remove the element\r\n        that.$root.on('click', function ()\r\n        {\r\n            that.itemRouter.gallery.setActiveItem(that.itemRouter.index);\r\n        });\r\n    }\r\n\r\n    getType()\r\n    {\r\n        return 'sticky';\r\n    }\r\n}\r\n\r\nmodule.exports = ItemHolderSticky;\n\n\n// WEBPACK FOOTER //\n// ./_frontend/public/modules/configurator/gallery/item-holder-sticky.js","const utils = require('public/utils.js');\n\n/**\n * @property {ItemRouter} itemRouter\n */\nclass ItemIndicator {\n    constructor(args)\n    {\n        const that = this;\n        that.index = args.index;\n        that.gallery = args.gallery;\n        that.$indicatorsContainer = args.$indicatorsContainer;\n\n        that.$root = $('<div class=\"mb2ls-gallery__indicator-item\">');\n        that.$root.appendTo(that.$indicatorsContainer);\n        that.active = false;\n\n        that.$root.on('click', function ()\n        {\n            that.gallery.setActiveItem(that.index);\n        });\n    }\n\n    setActive(active)\n    {\n        const that = this;\n        that.active = active;\n        that.$root.toggleClass('mb2ls-gallery__indicator-item--active', active);\n    }\n}\n\nmodule.exports = ItemIndicator;\n\n\n// WEBPACK FOOTER //\n// ./_frontend/public/modules/configurator/gallery/item-indicator.js","const utils = require('public/utils.js');\r\n\r\n/**\r\n * @property {ItemRouter} itemRouter\r\n */\r\nclass ItemHolder {\r\n    constructor(args)\r\n    {\r\n        const that = this;\r\n        that.itemRouter = args.itemRouter;\r\n        that.$root = $('<div class=\"mb2ls-gallery__item\">');\r\n        that.$layers = $();\r\n        that.combined = true;\r\n        that.improveQueue = [];\r\n        that.sizesSteps = ['50px', '200px', '700px', '1900px'];\r\n        that.options = that.itemRouter.gallery.options.holders[that.getType()];\r\n        that.firstSetInited = false;\r\n        that.active = false;\r\n    }\r\n\r\n    getType()\r\n    {\r\n        console.warn(`Please define the type in a childe class.`);\r\n        return null;\r\n    }\r\n\r\n    setActive(active)\r\n    {\r\n        const that = this;\r\n        const wasActive = that.active;\r\n        that.active = active;\r\n        that.$root.toggleClass('mb2ls-gallery__item--active', active);\r\n        that.setPrevious(wasActive && !active);\r\n    }\r\n\r\n    setPrevious(previous)\r\n    {\r\n        const that = this;\r\n        that.$root.toggleClass('mb2ls-gallery__item--previous', previous);\r\n    }\r\n\r\n    setScale()\r\n    {\r\n\r\n    }\r\n\r\n    getMinSizes()\r\n    {\r\n        const that = this;\r\n        return '50px';\r\n    }\r\n\r\n    getMaxSizes()\r\n    {\r\n        const that = this;\r\n        return that.options.max_sizes;\r\n    }\r\n\r\n    isLazy()\r\n    {\r\n        return true;\r\n    }\r\n\r\n    combine(layersIds, done)\r\n    {\r\n        const that = this;\r\n        let loaded = 0;\r\n        that.combined = false;\r\n        that.improveQueue = [];\r\n        let realImageSizes;\r\n\r\n        layersIds.forEach(function (layerId, index)\r\n        {\r\n            if (realImageSizes) return true;\r\n            if (!layerId) return true;\r\n\r\n            const tmp = that.itemRouter.configurator.getMediaAttributes(layerId);\r\n            realImageSizes = {width: tmp.width, height: tmp.height};\r\n        });\r\n\r\n        layersIds.forEach(function (layerId, index)\r\n        {\r\n            let $layer = that.$layers.filter('.mb2ls-gallery__item-layer').eq(index);\r\n            let attributes;\r\n            if (!$layer.length)\r\n            {\r\n                $layer = $('<img class=\"mb2ls-gallery__item-layer\">');\r\n                $layer.attr('loading', that.isLazy() ? 'lazy' : '');\r\n                $layer.appendTo(that.$root);\r\n                that.$layers = that.$layers.add($layer);\r\n            }\r\n\r\n            if (layerId)\r\n            {\r\n                attributes = that.itemRouter.configurator.getMediaAttributes(layerId);\r\n            } else\r\n            {\r\n                attributes = {\r\n                    src: utils.getTransparentPixel(),\r\n                    srcset: '',\r\n                    width: '1',\r\n                    height: '1',\r\n                };\r\n                if (realImageSizes)\r\n                {\r\n                    attributes.width = realImageSizes.width;\r\n                    attributes.height = realImageSizes.height;\r\n                    attributes.style = `aspect-ratio: ${realImageSizes.width} / ${realImageSizes.height}`;\r\n                }\r\n            }\r\n\r\n            if ($layer.attr('srcset') === attributes.srcset) return true;\r\n\r\n            that.improveQueue.push({index: index});\r\n\r\n            $layer\r\n                .attr('src', attributes.src)\r\n                .attr('srcset', attributes.srcset)\r\n                .attr('sizes', that.getMaxSizes())\r\n                .attr('data-id', layerId);\r\n\r\n            //For proportions only (prevent a jumping)\r\n            $layer\r\n                .attr('width', attributes.width)\r\n                .attr('height', attributes.height);\r\n            if (attributes.style) $layer.attr('style', attributes.style);\r\n\r\n            that.onLoaded($layer, function ()\r\n            {\r\n                loaded++;\r\n                if (loaded >= layersIds.length)\r\n                {\r\n                    that.onCombined();\r\n                    done();\r\n                }\r\n            });\r\n        });\r\n    }\r\n\r\n    onCombined()\r\n    {\r\n        const that = this;\r\n        that.firstSetInited = true;\r\n        that.combined = true;\r\n    }\r\n\r\n    onLoaded($img, loaded)\r\n    {\r\n        $img.one(\"load\", function ()\r\n        {\r\n            loaded();\r\n        })\r\n    }\r\n\r\n    improveQuality(done)\r\n    {\r\n        const that = this;\r\n        let newImproveQueue = [];\r\n        let $updatedLayers = $();\r\n        let loadedLayers = 0;\r\n        that.improveQueue.forEach(function (queueItem, index)\r\n        {\r\n            const sizeIndex = that.sizesSteps.indexOf(that.$layers.eq(queueItem.index).attr('sizes'));\r\n            const maxSizeIndex = that.sizesSteps.indexOf(that.getMaxSizes());\r\n            if (sizeIndex > maxSizeIndex) return true;\r\n\r\n            const $updatedLayer = that.$layers.eq(queueItem.index);\r\n            $updatedLayer.attr('sizes', that.sizesSteps[sizeIndex + 1]);\r\n            $updatedLayers = $updatedLayers.add($updatedLayer);\r\n\r\n            if (sizeIndex < maxSizeIndex) newImproveQueue.push(queueItem);\r\n        });\r\n\r\n\r\n        $updatedLayers.each(function ()\r\n        {\r\n            that.onLoaded($(this), function ()\r\n            {\r\n                loadedLayers++;\r\n                if (loadedLayers >= $updatedLayers.length) done();\r\n            });\r\n        });\r\n\r\n        that.improveQueue = newImproveQueue;\r\n    }\r\n}\r\n\r\nmodule.exports = ItemHolder;\n\n\n// WEBPACK FOOTER //\n// ./_frontend/public/modules/configurator/gallery/item-holder.js","const utils = require('public/utils.js');\r\nconst ConfiguratorProduct = require('public/modules/configurator/configurator-product.js');\r\n\r\n$(document).ready(function ()\r\n{\r\n    //In use in a child theme (marked methods)\r\n    window.mb2ls.utils = utils;\r\n\r\n    const phpVars = window.mb2ls.phpVars.product;\r\n    const $formCart = $('form.cart');\r\n    const $mb2lsInput = $('<input type=hidden name=\"mb2ls\">');\r\n    const productId = $formCart.find('button[name=\"add-to-cart\"]').val();\r\n    const $addToCartBtn = $formCart.find('button[type=\"submit\"]');\r\n    const $confParking = $('.mb2ls-conf-parking');\r\n    const $galleryParking = $('.mb2ls-gallery-parking');\r\n    const dev = {};\r\n    const urlQuery = utils.getUrlQuery();\r\n    $mb2lsInput.appendTo($formCart);\r\n\r\n    const configurator = new ConfiguratorProduct({\r\n        productId: productId,\r\n        recipe: phpVars.adapter,\r\n        options: window.mb2ls.phpVars.options,\r\n        $quantityInput: $formCart.find('[name=\"quantity\"]'),\r\n        $addToCartBtn: $addToCartBtn,\r\n    });\r\n    if (configurator.hasError) return;\r\n\r\n    const updateOrderItem = !!configurator.sfOrderItemId;\r\n    if (updateOrderItem) $addToCartBtn.html(`Update Order Item`);\r\n    configurator.$root.appendTo($confParking);\r\n    configurator.onRootHtmlInserted();\r\n\r\n    configurator.$root.one('mb2ls.gallery.itemHolderMain.firstSetInited', function ()\r\n    {\r\n        $galleryParking.find('.mb2ls-gallery.mb2ls-critical-html').remove();\r\n    });\r\n\r\n\r\n    $formCart.on('submit', function (e)\r\n    {\r\n        const data = configurator.getCartData();\r\n\r\n        if (updateOrderItem)\r\n        {\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n            configurator.toggleProcessing(true);\r\n            configurator.setErrorBoxesMessage(false);\r\n            configurator.setNoticeBoxesMessage(false);\r\n            configurator.clearAjaxFieldsErrors();\r\n            const urlSearchParams = new URLSearchParams(window.location.search);\r\n            data.sfOrderItemId = configurator.sfOrderItemId;\r\n            data.requestingSource = urlSearchParams.get('requestingSource');\r\n            data.itemType = urlSearchParams.get('itemType');\r\n            console.log('data', data);\r\n\r\n            utils.rest(\r\n                'POST',\r\n                'product/orderItem',\r\n                data,\r\n                function (response)\r\n                {\r\n                    configurator.toggleProcessing(false);\r\n                    alert(`The order item (${configurator.sfOrderItemId}) is updated.`);\r\n                    //window.close();\r\n                },\r\n                function (message, response)\r\n                {\r\n                    configurator.setErrorBoxesMessage(message);\r\n                    configurator.toggleProcessing(false);\r\n                }\r\n            );\r\n        } else\r\n        {\r\n            console.log('data', data);\r\n            $mb2lsInput.val(JSON.stringify(data));\r\n        }\r\n    });\r\n\r\n    configurator.$root.one('mb2ls.processedRestrictions', function ()\r\n    {\r\n        //TODO: sometimes it might load incorrectly,\r\n        // maybe needs to execute it after all the initial calling \"mb2ls.processedRestrictions\" or\r\n        // load it the same way as we load that.configurator.recipe.defaults\r\n        //Load saved order item fields data\r\n        if (phpVars.adapter.saved_order_item)\r\n        {\r\n            for (let key in phpVars.adapter.saved_order_item.JSON_Data__c__a)\r\n            {\r\n                const fieldData = phpVars.adapter.saved_order_item.JSON_Data__c__a[key];\r\n                const field = configurator.getFieldByKey(key);\r\n                if (!field) continue;\r\n\r\n                field.setValue(fieldData.value);\r\n                field.onChange();\r\n            }\r\n        } else if (mb2ls.phpVars.product.adapter.user_configuration)\r\n        {\r\n            let fields = mb2ls.phpVars.product.adapter.user_configuration.data.configuration;\r\n\r\n            //Adapting for the old data structure\r\n            if (!fields)\r\n            {\r\n                fields = mb2ls.phpVars.product.adapter.user_configuration.data;\r\n            }\r\n\r\n            for (let key in fields)\r\n            {\r\n                const value = fields[key];\r\n                const field = configurator.getFieldByKey(key);\r\n                if (!field) continue;\r\n\r\n                field.setValue(value);\r\n                field.onChange();\r\n            }\r\n        }\r\n    });\r\n\r\n    dev.basic = {\r\n        getTemplatesData: function ()\r\n        {\r\n            return configurator.templatesData;\r\n        },\r\n        getComplexData: function ()\r\n        {\r\n            return configurator.getComplexData();\r\n        }\r\n    };\r\n\r\n    dev.advanced = {\r\n        configurator: configurator,\r\n        recipe: phpVars.adapter,\r\n    };\r\n\r\n    if (!window.mb2ls) window.mb2ls = {};\r\n    if (!window.mb2ls.dev) window.mb2ls.dev = dev;\r\n});\n\n\n// WEBPACK FOOTER //\n// ./_frontend/public/pages/product/product.js","const utils = require('public/utils.js');\r\nconst Configurator = require('./configurator.js');\r\nconst Gallery = require('./gallery/gallery.js');\r\nconst PriceDisplay = require('./price-display/price-display.js');\r\n\r\nif (!window.mb2ls) window.mb2ls = {};\r\nwindow.mb2ls.PriceDisplay = PriceDisplay;\r\n\r\n/**\r\n * @property {Array.<PriceDisplay>} pricesDisplays\r\n * @property {string} sfOrderItemId\r\n * @property {Gallery} gallery\r\n // * @property {string} wcOrderItemId\r\n // * @property {string} sfOrderId\r\n // * @property {string} wcOrderId\r\n */\r\nclass ConfiguratorProduct extends Configurator {\r\n    constructor(args)\r\n    {\r\n        super(args);\r\n        const that = this;\r\n        if (that.hasError) return;\r\n\r\n        const urlSearchParams = new URLSearchParams(window.location.search);\r\n\r\n        that.productId = args.productId;\r\n        that.$price = args.$price;\r\n        that.$quantityInput = args.$quantityInput;\r\n        that.$addToCartBtn = args.$addToCartBtn;\r\n        that.firstUpdatingGallary = true;\r\n        that.priceTimeout = null;\r\n        that.sfOrderItemId = urlSearchParams.get('itemID');\r\n        that.initialPriceUpdating = true;\r\n        that.saveConfigurationXhr = null;\r\n        that.getPriceXhr = null;\r\n        // that.wcOrderItemId = that.recipe.wc_order_item_id;\r\n        // that.sfOrderId = that.recipe.sf_order_id;\r\n        // that.wcOrderId = that.recipe.wc_order_id;\r\n        that.priceType = urlSearchParams.get('priceType');\r\n        if (that.priceType === null) that.priceType = 'regular';\r\n\r\n        that.pricesDisplays = [];\r\n        that.$body.trigger('mb2ls.configurator.pricesDisplaysInit', that);\r\n\r\n        // When the displays inited by a child theme\r\n        if (!that.pricesDisplays.length)\r\n        {\r\n            that.pricesDisplays.push(\r\n                new PriceDisplay({\r\n                    priceFilter: function (regular, sale)\r\n                    {\r\n                        const b2b = that.recipe.b2b;\r\n                        if (b2b)\r\n                        {\r\n                            sale = regular = regular  / 1.19 * b2b.margin;\r\n                        }\r\n                        return {regular, sale}\r\n                    }\r\n                })\r\n            );\r\n        }\r\n\r\n        that.setPriceTemplateData(that.recipe.prices.regular, that.recipe.prices.sale);\r\n\r\n        if (that.recipe.b2b && that.recipe.b2b.mode === 'customer')\r\n        {\r\n            that.$addToCartBtn.remove();\r\n        }\r\n\r\n        that.gallery = new Gallery({\r\n            configurator: that,\r\n            media: that.recipe.media,\r\n            humanToMediaSizeRelations: that.recipe.human_to_media_size_relations,\r\n\r\n            //needs to get sizes\r\n            defaultImages: that.recipe.default_gallery_images_ids,\r\n\r\n            onInited: function ()\r\n            {\r\n                that.updateGallery();\r\n            }\r\n        });\r\n\r\n        //Root keys only\r\n        that.templatesDataReserved.push('price');\r\n        that.templatesDataReserved.push('quantity');\r\n\r\n        that.pricesDisplays[0].$root.prependTo(that.$root);\r\n\r\n        that.$quantityInput.on(`change.${that.eId}`, $.proxy(that.onChangeQuanity, that));\r\n        that.initialUpdate();\r\n        that.$body.trigger('mb2ls.configurator.inited', that);\r\n        that.$root.trigger('mb2ls.inited', that);\r\n    }\r\n\r\n    removeCriticalHtml()\r\n    {\r\n        const that = this;\r\n        that.$root.closest('.mb2ls-conf-parking').find('.mb2ls-conf.mb2ls-critical-html').remove();\r\n    }\r\n\r\n    onChangeQuanity()\r\n    {\r\n        const that = this;\r\n        that.updateQuantity();\r\n        that.updatePrice();\r\n        that.updateHtmlElementsTemplates();\r\n        that.updateGallery();\r\n    }\r\n\r\n    destroy()\r\n    {\r\n        const that = this;\r\n        that.saveConfigurationXhr && that.saveConfigurationXhr.abort();\r\n        that.getPriceXhr && that.getPriceXhr.abort();\r\n\r\n        if (that.priceTimeout) clearTimeout(that.priceTimeout);\r\n        if (that.updateGalleryTimeout) clearTimeout(that.updateGalleryTimeout);\r\n        that.gallery.destroy();\r\n        that.$quantityInput.off(`.${that.eId}`);\r\n        super.destroy();\r\n    }\r\n\r\n    getCurrentConfigurationUrl(done, notes = null)\r\n    {\r\n        const that = this;\r\n        const cartData = that.getCartData();\r\n        const params = {};\r\n\r\n        for (let key in cartData.fields)\r\n        {\r\n            params[key] = cartData.fields[key].value;\r\n        }\r\n\r\n        that.saveConfigurationXhr = utils.rest(\r\n            'POST',\r\n            'product/saveConfiguration',\r\n            {\r\n                configuration: params,\r\n                cartData: cartData,\r\n                productId: that.productId,\r\n                price: {\r\n                    regular: that.templatesData.price.regular,\r\n                    sale: that.templatesData.price.sale,\r\n                    actual: that.recipe.b2b ? that.templatesData.price.actual / 1.19 * that.recipe.b2b.margin : that.templatesData.price.actual\r\n                },\r\n                notes: notes,\r\n            },\r\n            function (response)\r\n            {\r\n                const urlQuery = utils.getUrlQuery();\r\n                urlQuery.c = response.parameter;\r\n                done(`${window.location.origin}${window.location.pathname}?${$.param(urlQuery)}`);\r\n            },\r\n            function (message, response)\r\n            {\r\n                that.setErrorBoxesMessage(message);\r\n            }\r\n        );\r\n    }\r\n\r\n    getCriticalHtml()\r\n    {\r\n        const that = this;\r\n        const criticalHtml = super.getCriticalHtml();\r\n        criticalHtml.gallery = that.gallery.getCriticalHtml();\r\n        return criticalHtml;\r\n    }\r\n\r\n    setPriceTemplateData(regular, sale)\r\n    {\r\n        const that = this;\r\n        that.templatesData.price = {\r\n            actual: regular === null ? null : (sale < regular ? sale : regular),\r\n            regular: regular,\r\n            sale: sale,\r\n        };\r\n    }\r\n\r\n    onChangedField()\r\n    {\r\n        const that = this;\r\n        that.updatePrice();\r\n        super.onChangedField();\r\n        that.updateGallery();\r\n    }\r\n\r\n    onUpdateVisibilityHasChanges()\r\n    {\r\n        const that = this;\r\n        that.updatePrice();\r\n        super.onUpdateVisibilityHasChanges();\r\n        that.updateGallery();\r\n    }\r\n\r\n    onUpdatedTemplatesData()\r\n    {\r\n        const that = this;\r\n        that.updatePrice();\r\n        that.updateGallery();\r\n        super.onUpdatedTemplatesData();\r\n    }\r\n\r\n    initialUpdate()\r\n    {\r\n        const that = this;\r\n        that.updateQuantity();\r\n        super.initialUpdate();\r\n    }\r\n\r\n    formatTemplateOutput(name, value)\r\n    {\r\n        const that = this;\r\n        if ($.inArray(name, ['price.actual', 'price.regular', 'price.sale']) !== -1)\r\n        {\r\n            return utils.formatMoney(value);\r\n        }\r\n        return value;\r\n    }\r\n\r\n    getComplexData(source = null)\r\n    {\r\n        const that = this;\r\n        const submitData = super.getComplexData(source);\r\n        submitData.productId = that.productId;\r\n        submitData.quantity = that.templatesData.quantity;\r\n        submitData.priceType = that.priceType;\r\n        submitData.hiddenAttributes.priceAdditionObjects = {\r\n            value: that.getPriceAdditionObjects(submitData.fields)\r\n        };\r\n        submitData.fields = that.removePriceAdditionObjects(submitData.fields)\r\n\r\n        if (source === 'price') submitData.initial = that.initialPriceUpdating;\r\n        return submitData;\r\n    }\r\n\r\n    updateHtmlElementsTemplates()\r\n    {\r\n        const that = this;\r\n        super.updateHtmlElementsTemplates();\r\n        that.pricesDisplays.forEach((priceDisplay) =>\r\n        {\r\n            priceDisplay.setPrice(\r\n                that.templatesData.price.regular,\r\n                that.templatesData.price.sale\r\n            );\r\n        });\r\n    }\r\n\r\n    updatePrice()\r\n    {\r\n        const that = this;\r\n\r\n        //We have a default price and we display it immediately\r\n        //if (!that.initialPriceUpdating) that.setPriceTemplateData(null, null);\r\n\r\n        that.$body.toggleClass('mb2ls-price-updating', true);\r\n\r\n        that.toggleProcessing(true);\r\n        that.setErrorBoxesMessage(false);\r\n        that.setNoticeBoxesMessage(false);\r\n        that.clearAjaxFieldsErrors();\r\n\r\n        if (that.priceTimeout) clearTimeout(that.priceTimeout);\r\n\r\n        //\"clearTimeout\" is in \"destroy\"\r\n        that.priceTimeout = setTimeout(function ()\r\n        {\r\n            that.getPriceXhr && that.getPriceXhr.abort();\r\n            that.getPriceXhr = utils.rest(\r\n                'POST',\r\n                'configurator/price',\r\n                that.getComplexData('price'),\r\n                function (price)\r\n                {\r\n                    that.setPriceTemplateData(price.regular, price.sale);\r\n                    that.updateHtmlElementsTemplates();\r\n                    that.toggleProcessing(false);\r\n                    if (price.notice) that.setNoticeBoxesMessage(price.notice);\r\n                    that.initialPriceUpdating = false;\r\n                    that.$body.toggleClass('mb2ls-price-updating', false);\r\n                },\r\n                function (message, response)\r\n                {\r\n                    if (response && response.errorSourceKeys)\r\n                    {\r\n                        response.errorSourceKeys.forEach(function (item)\r\n                        {\r\n                            const field = that.getFieldByTemplateId(item.key);\r\n                            if (!field) return true;\r\n\r\n                            if (!field.isEnabledValidator()) field.enableValidator();\r\n                            field.validatorAjaxErrors.push(item.message);\r\n                            field.isValid();\r\n                        });\r\n                    }\r\n                    that.setErrorBoxesMessage(message);\r\n                    that.$body.toggleClass('mb2ls-price-updating', false);\r\n                }\r\n            );\r\n        }, 200);\r\n    }\r\n\r\n    toggleProcessing(processing)\r\n    {\r\n        const that = this;\r\n        that.$addToCartBtn.prop('disabled', processing ? true : '');\r\n    }\r\n\r\n    //Errors recieved from the SalesForce calc price API\r\n    clearAjaxFieldsErrors()\r\n    {\r\n        const that = this;\r\n        that.fields.forEach(function (field)\r\n        {\r\n            if (field.validatorAjaxErrors && field.validatorAjaxErrors.length)\r\n            {\r\n                field.validatorAjaxErrors = [];\r\n                field.isValid();\r\n            }\r\n        });\r\n    }\r\n\r\n    updateGallery()\r\n    {\r\n        const that = this;\r\n        if (that.updateGalleryTimeout) clearTimeout(that.updateGalleryTimeout);\r\n\r\n        //\"clearTimeout\" is in \"destroy\"\r\n        that.updateGalleryTimeout = setTimeout(function ()\r\n        {\r\n            that.gallery.updateComplexLayersCombinations();\r\n            that.updateGalleryTimeout = false;\r\n            if (that.gallery.stickyGallery && !that.firstUpdatingGallary && !that.gallery.isMainGalleryVisible())\r\n            {\r\n                that.gallery.toggleStickyGallery(true);\r\n            }\r\n            that.firstUpdatingGallary = false;\r\n        }, 200);\r\n    }\r\n}\r\n\r\nmodule.exports = ConfiguratorProduct;\n\n\n// WEBPACK FOOTER //\n// ./_frontend/public/modules/configurator/configurator-product.js"],"sourceRoot":""}