{"version":3,"file":"js/app.2dd67fa46ea43c467e19.js","mappings":"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","sources":["webpack:///./node_modules/@flashpointbv/solar-datalayer/dist/index.js","webpack:///./resources/area/web/default/js/components/catalog/ProductListItem.vue?988b","webpack:///./resources/area/admin/js/helpers/priceHelper.ts","webpack:///./resources/area/web/default/js/components/catalog/ProductListItem.vue","webpack:///./resources/area/web/default/js/components/catalog/ProductListItem.vue?2c0b","webpack:///./resources/area/web/default/js/components/catalog/ProductListItem.vue?1056"],"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 {mixins} from 'vue-class-component';\nimport {Component, Prop, Vue} from 'vue-property-decorator';\nimport ServiceContainer from '@flashpointbv/solar-service-container';\nimport {SolarDataLayer} from '@flashpointbv/solar-datalayer/dist';\nimport PriceHelper from \"../../../../../admin/js/helpers/priceHelper\";\n\n@Component({\n name: 'catalog-product-list-item',\n components: ServiceContainer().getComponents(),\n})\nexport default class ProductListItem extends mixins(PriceHelper) {\n @Prop({required: false}) readonly dataSource: string;\n @Prop({required: true}) readonly product: object;\n @Prop({default: null}) readonly type: string | null;\n @Prop({default: 'li'}) readonly componentTag: string;\n @Prop({default: () => []}) private wishlistItems: Array;\n\n private key: number = 0;\n\n private get listTypeClass(): string {\n switch (this.type) {\n case 'stock-overview':\n return 'small-24 --stock-overview';\n case 'wishlist':\n return 'small-24 medium-6 cell';\n default:\n return 'small-12 medium-8 cell';\n }\n }\n\n private get isDiscount() {\n return this.product['final_price_incl_tax'] !== this.product['price_incl_tax'];\n }\n\n private get imageSrc(): string {\n if (this.product['image'] === 'no_selection' || !this.product.hasOwnProperty('image')) {\n return '/area/web/default/assets/images/logo.svg';\n }\n return `${this.$solarCdnBaseUrl}/cdn/resize-extended/rs:fill/w:265/h:265/extend:true/background:255:255:255/bl:10.0/q:40/path/media/catalog/product${this.product['image']}`;\n }\n\n private get imageDataSrc(): string {\n if (this.product['image'] === 'no_selection' || !this.product.hasOwnProperty('image')) {\n return '/area/web/default/assets/images/logo.svg';\n }\n\n //updatekey because of bug where srcset doesn't get updated\n this.key++;\n\n return `${this.$solarCdnBaseUrl}/cdn/resize-extended/rs:fill/w:265/h:265/extend:true/background:255:255:255/path/media/catalog/product${this.product['image']} 1x,\n ${this.$solarCdnBaseUrl}/cdn/resize-extended/rs:fill/w:530/h:530/extend:true/background:255:255:255/path/media/catalog/product${this.product['image']} 2x`;\n }\n\n private mounted(): void {\n this.$forceUpdate();\n }\n\n private updated(): void {\n this.$eventBus.$emit('item-rendered', true);\n }\n\n private addProductClick(): void {\n SolarDataLayer.init().addSelectItem(this.product, this.$vnode.key as number, 'Product list');\n }\n\n private get showCta(): boolean {\n switch (this.type) {\n case 'stock-overview':\n return false;\n default:\n return true;\n }\n }\n\n private get promotionEndTime(): string {\n if (this.product['special_price_end_date'] || null) {\n let date = new Date(this.product['special_price_end_date']);\n\n return date.toLocaleDateString('nl-NL');\n }\n\n return '';\n }\n}\n","import {Component, Vue} from \"vue-property-decorator\";\n\ninterface Interface {\n parsePrice: Function;\n}\n@Component\nexport default class PriceHelper extends Vue {\n public parsePrice(price: number): string {\n if(!price){\n return '';\n }\n return price.toLocaleString(this.locale ?? 'nl-NL',{minimumFractionDigits: 2});\n }\n private get locale(): string {\n return this.$config.get('locale');\n }\n\n}\n","import { render, staticRenderFns } from \"./ProductListItem.vue?vue&type=template&id=576f9f20&\"\nimport script from \"./ProductListItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductListItem.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!./ProductListItem.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!./ProductListItem.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_vm.componentTag,{tag:\"component\",class:_vm.listTypeClass},[_c('div',{staticClass:\"product__tile\"},[_c('a',{class:{'disabled': _vm.type =='stock-overview' },attrs:{\"href\":_vm.product['url_key']},on:{\"click\":function($event){return _vm.addProductClick()}}},[(_vm.isDiscount)?_c('span',{staticClass:\"product__tile-label\"},[_vm._v(_vm._s(_vm.$t('Sale')))]):_vm._e(),_vm._v(\" \"),_c('wishlist-toggle',{attrs:{\"product-id\":_vm.product['product_id'],\"wishlist-items\":_vm.wishlistItems,\"type\":_vm.type}}),_vm._v(\" \"),_c('span',{staticClass:\"image__holder\"},[_c('img',{key:_vm.key,staticClass:\"lazyload\",attrs:{\"src\":_vm.imageSrc,\"data-srcset\":_vm.imageDataSrc,\"alt\":_vm.product['name'],\"height\":265,\"width\":265}})]),_vm._v(\" \"),_c('span',{staticClass:\"product__holder\"},[(_vm.product['manufacturer'])?_c('span',{staticClass:\"--manufacturer\",domProps:{\"innerHTML\":_vm._s(_vm.product['manufacturer'] || ' ')}}):_vm._e(),_vm._v(\" \"),_c('h4',[_vm._v(_vm._s(_vm.product['name']))]),_vm._v(\" \"),(_vm.product['product_type'] !== 'bundle')?_c('span',{staticClass:\"price__holder\"},[(_vm.isDiscount)?_c('span',{staticClass:\"--special\"},[_c('span',{staticClass:\"--price\"},[_c('span',{staticClass:\"--old\"},[_vm._v(_vm._s(_vm.parsePrice(_vm.product['price_incl_tax'])))]),_vm._v(\" \"),_c('span',{staticClass:\"--price\"},[_vm._v(_vm._s(_vm.parsePrice(_vm.product['final_price_incl_tax'])))])]),_vm._v(\" \"),_c('span',{staticClass:\"--message\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('Valid until'))+\"\\n \"+_vm._s(_vm.promotionEndTime)+\"\\n \")])]):_c('span',{staticClass:\"--price\"},[_vm._v(_vm._s(_vm.parsePrice(_vm.product['final_price_incl_tax'])))])]):_vm._e()])],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","ProductListItem","mixins","key","listTypeClass","type","isDiscount","imageSrc","$solarCdnBaseUrl","imageDataSrc","mounted","$forceUpdate","updated","$eventBus","$emit","addProductClick","$vnode","showCta","promotionEndTime","Date","toLocaleDateString","Prop","required","default","Array","Component","name","components","getComponents","PriceHelper","Vue","parsePrice","toLocaleString","locale","minimumFractionDigits","$config","get","render","_vm","_c","_self","_setupProxy","componentTag","tag","class","staticClass","attrs","on","$event","_v","_s","$t","_e","wishlistItems","domProps","staticRenderFns"],"sourceRoot":""}