{"version":3,"file":"js/app.f5dd8f6f48643fedcd08.js","mappings":"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","sources":["webpack:///./node_modules/@flashpointbv/solar-datalayer/dist/index.js","webpack:///./resources/area/web/default/js/components/catalog/product/ProductConfiguration.vue?8363","webpack:///./resources/area/web/default/js/components/catalog/product/ProductConfiguration.vue","webpack:///./resources/area/web/default/js/components/catalog/product/ProductConfiguration.vue?856c","webpack:///./resources/area/web/default/js/components/catalog/product/ProductConfiguration.vue?6332"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SolarDataLayer = exports.WishlistEvents = exports.CartEvents = void 0;\nvar CartEvents;\n(function (CartEvents) {\n CartEvents[\"ADD\"] = \"add_to_cart\";\n CartEvents[\"REMOVE\"] = \"remove_from_cart\";\n})(CartEvents = exports.CartEvents || (exports.CartEvents = {}));\nvar WishlistEvents;\n(function (WishlistEvents) {\n WishlistEvents[\"ADD\"] = \"add_to_wishlist\";\n WishlistEvents[\"REMOVE\"] = \"remove_from_wishlist\";\n})(WishlistEvents = exports.WishlistEvents || (exports.WishlistEvents = {}));\nclass SolarDataLayer {\n /**\n * Create new dataLayer element when there is none\n */\n constructor() {\n this.dataLayer = window.dataLayer || [];\n }\n /**\n *\n * @param config\n * @param currency\n */\n static init(config, currency) {\n if (SolarDataLayer.instance) {\n return SolarDataLayer.instance;\n }\n if (config) {\n SolarDataLayer.config = Object.assign(Object.assign({}, SolarDataLayer.config), config);\n }\n if (currency) {\n SolarDataLayer.currency = currency;\n }\n SolarDataLayer.instance = new SolarDataLayer();\n return SolarDataLayer.instance;\n }\n /**\n *\n * @param value\n */\n static dataLayerValue(value) {\n return value || '';\n }\n /**\n * Reset dataLayer\n */\n static resetDataLayer() {\n window.dataLayer.push({ 'ecommerce': null });\n }\n /**\n *\n * @param value\n */\n static formatPrice(value) {\n const price = typeof value === 'string' ? parseFloat(value) : value;\n const multiplier = Math.pow(10, 2);\n return (Math.round(price * multiplier) / multiplier);\n }\n /**\n *\n * @param categories\n * @param position\n */\n static resolveCategory(categories, position) {\n return categories[position] || '';\n }\n /**\n *\n * @param oldPrice\n * @param price\n */\n static getSalePrice(oldPrice, price) {\n return oldPrice !== price ? oldPrice - price : '';\n }\n /**\n *\n * @param product\n */\n static defaultProductInformation(product) {\n const config = SolarDataLayer.config;\n const productData = {\n 'item_name': SolarDataLayer.dataLayerValue(product[config['item_name']]),\n 'item_id': SolarDataLayer.dataLayerValue(product[config['item_id']]),\n 'item_group_id': SolarDataLayer.dataLayerValue(product[config['item_group_id']]),\n 'item_brand': SolarDataLayer.dataLayerValue(product[config['item_brand']]),\n 'item_variant': SolarDataLayer.dataLayerValue(product[config['item_variant']]),\n 'currency': SolarDataLayer.currency,\n 'price': SolarDataLayer.dataLayerValue(SolarDataLayer.formatPrice(product[config['price']])),\n 'discount': SolarDataLayer.getSalePrice(SolarDataLayer.formatPrice(product[config['old_price']]), SolarDataLayer.formatPrice(product[config['price']]))\n };\n let categoryData = {};\n for (let i = 0; i < 5; i++) {\n categoryData[`item_category${i > 0 ? i + 1 : ''}`] = SolarDataLayer.resolveCategory(Object.prototype.hasOwnProperty.call(product, config['item_categories']) ? product[config['item_categories']] : [], i);\n }\n return Object.assign(Object.assign({}, productData), categoryData);\n }\n /**\n *\n * @param product\n */\n static quoteProductInformation(product) {\n const config = SolarDataLayer.config;\n const productData = {\n 'item_name': SolarDataLayer.dataLayerValue(product[config['item_name']]),\n 'item_id': SolarDataLayer.dataLayerValue(Object.prototype.hasOwnProperty.call(product['extension_attributes'], 'product_id') ? product['extension_attributes']['product_id'] : product['item_id']),\n 'item_group_id': SolarDataLayer.dataLayerValue(product[config['item_group_id']]),\n 'item_brand': SolarDataLayer.dataLayerValue(product['extension_attributes'][config['item_brand']]),\n 'item_variant': SolarDataLayer.dataLayerValue(product['extension_attributes'][config['item_variant']]),\n 'currency': SolarDataLayer.currency,\n 'price': SolarDataLayer.dataLayerValue(SolarDataLayer.formatPrice(product['price_incl_tax'])),\n 'discount': SolarDataLayer.getSalePrice(SolarDataLayer.formatPrice(product['extension_attributes']['from_price']), SolarDataLayer.formatPrice(product['price_incl_tax'])),\n 'quantity': SolarDataLayer.dataLayerValue(product['qty'])\n };\n let categoryData = {};\n //Check if category data is present on the quote item\n const categoryItemsRaw = product['extension_attributes'][config['item_categories']];\n if (categoryItemsRaw) {\n const categoryItems = typeof categoryItemsRaw === 'object' ? categoryItemsRaw : JSON.parse(categoryItemsRaw);\n for (let i = 0; i < 5; i++) {\n categoryData[`item_category${i > 0 ? i + 1 : ''}`] = SolarDataLayer.resolveCategory(categoryItems, i);\n }\n }\n return Object.assign(Object.assign({}, productData), categoryData);\n }\n /**\n *\n * @param products\n * @param listType\n * @param config\n */\n addObservableViewItemsList(products, listType, config = null) {\n if (config) {\n SolarDataLayer.observableConfig = Object.assign(Object.assign({}, SolarDataLayer.observableConfig), config);\n }\n SolarDataLayer.productList = products;\n SolarDataLayer.listType = listType;\n const observerOptions = {\n root: null,\n rootMargin: '0px',\n threshold: 0\n };\n const observer = new IntersectionObserver(SolarDataLayer.addViewItemsListEntries, observerOptions);\n const rootElement = document.getElementById(SolarDataLayer.observableConfig['listSelector'] || 'impressions-observable');\n const itemsPerRow = SolarDataLayer.isMobile ? SolarDataLayer.observableConfig['itemsPerRowMobile'] : SolarDataLayer.observableConfig['itemsPerRowDesktop'];\n if (rootElement) {\n const observeTargets = rootElement.querySelectorAll('[data-index]');\n for (let i = 0; i < observeTargets.length; i++) {\n if (i % itemsPerRow === 0) {\n observer.observe(observeTargets[i]);\n }\n }\n }\n }\n /**\n *\n * @param entries\n * @param observer\n */\n static addViewItemsListEntries(entries, observer) {\n const productsClone = SolarDataLayer.productList;\n const itemsPerRow = SolarDataLayer.isMobile ? SolarDataLayer.observableConfig['itemsPerRowMobile'] : SolarDataLayer.observableConfig['itemsPerRowDesktop'];\n entries.map(entry => {\n if (entry.isIntersecting && entry.target.hasAttribute('data-index')) {\n const itemIndex = parseInt(entry.target.getAttribute('data-index'));\n SolarDataLayer.init().addViewItemsList(productsClone.slice(itemIndex, itemIndex + itemsPerRow), SolarDataLayer.listType, itemIndex);\n observer.unobserve(entry.target);\n }\n });\n }\n /**\n *\n * @param products\n * @param listType\n * @param index\n */\n addViewItemsList(products, listType, index = 0) {\n if (!window.dataLayer.filter(e => e['event'] === 'view_item_list').length) {\n SolarDataLayer.resetDataLayer();\n }\n let items = [];\n products.forEach((product) => {\n index++;\n const productData = {\n 'item_list_id': listType.replace(/ /g, '_').toLowerCase(),\n 'item_list_name': listType,\n 'index': index,\n };\n items.push(Object.assign({}, productData, SolarDataLayer.defaultProductInformation(product)));\n });\n window.dataLayer.push({\n 'event': 'view_item_list',\n 'ecommerce': {\n 'items': items\n }\n });\n }\n /**\n *\n * @param product\n * @param index\n * @param listType\n */\n addSelectItem(product, index, listType) {\n SolarDataLayer.resetDataLayer();\n let items = [];\n const productData = {\n 'item_list_id': listType.replace(/ /g, '_').toLowerCase(),\n 'item_list_name': listType,\n 'index': index,\n };\n items.push(Object.assign({}, productData, SolarDataLayer.defaultProductInformation(product)));\n window.dataLayer.push({\n 'event': 'select_item',\n 'ecommerce': {\n 'currency': SolarDataLayer.currency,\n 'items': items\n }\n });\n }\n /**\n *\n * @param product\n */\n addViewItem(product) {\n SolarDataLayer.resetDataLayer();\n let extraOptions = {};\n if (product['product_type'] === 'bundle' && Object.prototype.hasOwnProperty.call(product, 'bundle_options')) {\n let items = [];\n product['bundle_options'].forEach((bundleProduct) => {\n items.push(SolarDataLayer.defaultProductInformation(bundleProduct));\n });\n extraOptions = {\n productType: 'bundle',\n bundleItems: items\n };\n }\n window.dataLayer.push({\n 'event': 'view_item',\n 'ecommerce': {\n 'currency': SolarDataLayer.currency,\n 'items': [Object.assign(Object.assign({}, SolarDataLayer.defaultProductInformation(product)), extraOptions)]\n }\n });\n }\n /**\n * Add or remove items from cart\n *\n * @param product\n * @param event\n * @param qty\n * @param cartValue\n */\n addAddToCart(product, event = CartEvents.ADD, qty = 1, cartValue = 0) {\n SolarDataLayer.resetDataLayer();\n let items = [];\n const productData = {\n 'quantity': qty,\n };\n if (event === CartEvents.ADD) {\n items.push(Object.assign({}, productData, SolarDataLayer.defaultProductInformation(product)));\n }\n else {\n items.push(Object.assign({}, productData, SolarDataLayer.quoteProductInformation(product)));\n }\n window.dataLayer.push({\n 'event': event,\n 'ecommerce': {\n 'currency': SolarDataLayer.currency,\n 'value': cartValue > 0 ? SolarDataLayer.formatPrice(cartValue) : null,\n 'items': items\n }\n });\n }\n /**\n *\n * Add or remove items from wishlist\n *\n * @param product\n * @param event\n */\n addAddToWishlist(product, event = WishlistEvents.ADD) {\n SolarDataLayer.resetDataLayer();\n window.dataLayer.push({\n 'event': event,\n 'ecommerce': {\n 'items': SolarDataLayer.defaultProductInformation(product)\n }\n });\n }\n /**\n *\n * @param products\n * @param cartValue\n * @param couponCode\n */\n addViewCart(products, cartValue, couponCode = '') {\n SolarDataLayer.resetDataLayer();\n let items = [];\n products.forEach((product, index) => {\n const productData = {\n 'index': index,\n 'coupon': couponCode\n };\n items.push(Object.assign({}, productData, SolarDataLayer.quoteProductInformation(product)));\n });\n window.dataLayer.push({\n 'event': 'view_cart',\n 'ecommerce': {\n 'currency': SolarDataLayer.currency,\n 'value': SolarDataLayer.formatPrice(cartValue),\n 'items': items\n }\n });\n }\n /**\n *\n * @param products\n * @param cartValue\n * @param couponCode\n */\n addBeginCheckout(products, cartValue, couponCode = '') {\n SolarDataLayer.resetDataLayer();\n let items = [];\n products.forEach((product, index) => {\n const productData = {\n 'index': index,\n 'coupon': couponCode\n };\n items.push(Object.assign({}, productData, SolarDataLayer.quoteProductInformation(product)));\n });\n window.dataLayer.push({\n 'event': 'begin_checkout',\n 'ecommerce': {\n 'currency': SolarDataLayer.currency,\n 'value': SolarDataLayer.formatPrice(cartValue),\n 'items': items\n }\n });\n }\n /**\n *\n * @param products\n * @param cartValue\n * @param shippingTier\n * @param couponCode\n */\n addAddShippingInfo(products, cartValue, shippingTier = '', couponCode = '') {\n SolarDataLayer.resetDataLayer();\n let items = [];\n products.forEach((product, index) => {\n const productData = {\n 'index': index,\n 'coupon': couponCode\n };\n items.push(Object.assign({}, productData, SolarDataLayer.quoteProductInformation(product)));\n });\n window.dataLayer.push({\n 'event': 'add_shipping_info',\n 'ecommerce': {\n 'currency': SolarDataLayer.currency,\n 'value': SolarDataLayer.formatPrice(cartValue),\n 'coupon': couponCode,\n 'shipping_tier': shippingTier,\n 'items': items\n }\n });\n }\n /**\n *\n * @param products\n * @param cartValue\n * @param paymentType\n * @param couponCode\n */\n addAddPaymentInfo(products, cartValue, paymentType = '', couponCode = '') {\n SolarDataLayer.resetDataLayer();\n let items = [];\n products.forEach((product, index) => {\n const productData = {\n 'index': index,\n 'coupon': couponCode\n };\n items.push(Object.assign({}, productData, SolarDataLayer.quoteProductInformation(product)));\n });\n window.dataLayer.push({\n 'event': 'add_payment_info',\n 'ecommerce': {\n 'currency': SolarDataLayer.currency,\n 'value': SolarDataLayer.formatPrice(cartValue),\n 'coupon': couponCode,\n 'payment_type': paymentType,\n 'items': items\n }\n });\n }\n /**\n *\n * @param products\n * @param transactionId\n * @param affiliation\n * @param cartValue\n * @param tax\n * @param shipping\n * @param couponCode\n */\n addPurchase(products, transactionId, affiliation = '', cartValue, tax, shipping, couponCode = '') {\n SolarDataLayer.resetDataLayer();\n let items = [];\n products.forEach((product, index) => {\n const productData = {\n 'index': index,\n 'coupon': couponCode,\n 'affiliation': affiliation\n };\n items.push(Object.assign({}, productData, SolarDataLayer.quoteProductInformation(product)));\n });\n window.dataLayer.push({\n 'event': 'purchase',\n 'ecommerce': {\n 'transaction_id': transactionId,\n 'affiliation': affiliation,\n 'value': SolarDataLayer.formatPrice(cartValue),\n 'tax': SolarDataLayer.formatPrice(tax),\n 'shipping': SolarDataLayer.formatPrice(shipping),\n 'currency': SolarDataLayer.currency,\n 'coupon': couponCode,\n 'items': items\n }\n });\n }\n}\nexports.SolarDataLayer = SolarDataLayer;\nSolarDataLayer.currency = 'EUR';\nSolarDataLayer.config = {\n 'item_id': 'product_id',\n 'item_group_id': 'item_group_id',\n 'item_name': 'name',\n 'item_variant_id': '',\n 'item_brand': 'manufacturer',\n 'item_categories': 'category_names',\n 'item_variant': '',\n 'price': 'final_price_incl_tax',\n 'old_price': 'price_incl_tax',\n};\n/**\n * Product list used to store list items for observable implementation\n *\n * @protected\n */\nSolarDataLayer.productList = [];\n/**\n * listType used to store the list type for observable implementation\n *\n * @protected\n */\nSolarDataLayer.listType = '';\n/**\n * Default config for observable item list\n *\n * @protected\n */\nSolarDataLayer.observableConfig = {\n 'listSelector': 'impressions-observable',\n 'itemsPerRowDesktop': 4,\n 'itemsPerRowMobile': 2\n};\n/**\n *\n * @protected\n */\nSolarDataLayer.isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n","\nimport {Component, Vue, Prop} from 'vue-property-decorator';\nimport ServiceContainer from '@flashpointbv/solar-service-container';\nimport VueI18n from 'vue-i18n';\nimport TranslateResult = VueI18n.TranslateResult;\nimport {SolarDataLayer} from '@flashpointbv/solar-datalayer/dist';\n\n\n@Component(\n {\n name: 'catalog-product-configuration',\n components: ServiceContainer().getComponents()\n }\n)\n\nexport default class extends Vue {\n @Prop() private readonly productData: object;\n @Prop({default: () => []}) private wishlistItems: Array;\n @Prop({default: () => []}) private stockData: Array;\n\n private expandDescription: boolean = false;\n\n private get storeStockCount(): Number {\n return this.stockData.filter((stock) => stock['quantity'] > 0).length;\n }\n\n private created(): void {\n this.$store.dispatch('CatalogProduct/getProductData', this.productData);\n SolarDataLayer.init().addViewItem(this.productData);\n }\n\n private get hasOverflow() {\n const description = this.$refs.description as HTMLElement;\n if(!description){\n return false;\n }\n return description?.clientHeight >= 100;\n }\n\n private toggleDescription() {\n this.expandDescription = !this.expandDescription;\n }\n}\n","import { render, staticRenderFns } from \"./ProductConfiguration.vue?vue&type=template&id=6d09259a&\"\nimport script from \"./ProductConfiguration.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductConfiguration.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[0]!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductConfiguration.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[0]!../../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductConfiguration.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('section',[(_vm.productData['short_description'])?_c('div',{ref:'description',staticClass:\"global__content --clean\",class:{ '--active': _vm.expandDescription },domProps:{\"innerHTML\":_vm._s(_vm.productData['short_description'])}}):_vm._e(),_vm._v(\" \"),(_vm.$refs.description && _vm.hasOverflow)?_c('button',{staticClass:\"--link --arrow --down\",class:{'--up': _vm.expandDescription, '--down': !_vm.expandDescription },on:{\"click\":_vm.toggleDescription}},[(!_vm.expandDescription)?_c('span',[_vm._v(\"\\n \"+_vm._s(_vm.$t('Read more'))+\"\\n \")]):_c('span',[_vm._v(\"\\n \"+_vm._s(_vm.$t('Read less'))+\"\\n \")])]):_vm._e(),_vm._v(\" \"),_c('catalog-product-price',{attrs:{\"product-data\":_vm.productData}}),_vm._v(\" \"),_c('div',{staticClass:\"product__configuration\"},[_c('div',{staticClass:\"product__option\"},[_c(`catalog-product-${_vm.productData['product_type']}`,{tag:\"component\"})],1),_vm._v(\" \"),_c('wishlist-toggle',{attrs:{\"product-id\":_vm.productData['product_id'],\"wishlist-items\":_vm.wishlistItems}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"],"names":["CartEvents","WishlistEvents","Object","defineProperty","exports","value","SolarDataLayer","constructor","this","dataLayer","window","static","config","currency","instance","assign","push","price","parseFloat","multiplier","Math","pow","round","categories","position","oldPrice","product","productData","dataLayerValue","formatPrice","getSalePrice","categoryData","i","resolveCategory","prototype","hasOwnProperty","call","categoryItemsRaw","categoryItems","JSON","parse","addObservableViewItemsList","products","listType","observableConfig","productList","observer","IntersectionObserver","addViewItemsListEntries","root","rootMargin","threshold","rootElement","document","getElementById","itemsPerRow","isMobile","observeTargets","querySelectorAll","length","observe","entries","productsClone","map","entry","isIntersecting","target","hasAttribute","itemIndex","parseInt","getAttribute","init","addViewItemsList","slice","unobserve","index","filter","e","resetDataLayer","items","forEach","replace","toLowerCase","defaultProductInformation","addSelectItem","addViewItem","extraOptions","bundleProduct","productType","bundleItems","addAddToCart","event","ADD","qty","cartValue","quoteProductInformation","addAddToWishlist","addViewCart","couponCode","addBeginCheckout","addAddShippingInfo","shippingTier","addAddPaymentInfo","paymentType","addPurchase","transactionId","affiliation","tax","shipping","test","navigator","userAgent","Vue","expandDescription","storeStockCount","stockData","stock","created","$store","dispatch","hasOverflow","description","$refs","clientHeight","toggleDescription","Prop","default","Array","Component","name","components","getComponents","render","_vm","_c","_self","_setupProxy","ref","staticClass","class","domProps","_s","_e","_v","on","$t","attrs","tag","wishlistItems","staticRenderFns"],"sourceRoot":""}