{"version":3,"file":"product-compare-full.js?v=dff38db09913ef84b1c3","mappings":"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","sources":["webpack://RdoWeb/./ResourcePackages/Main/assets/src/scripts/filters/to-currency.js","webpack://RdoWeb/./ResourcePackages/Main/assets/src/scripts/widgets/product-compare-full.js","webpack://RdoWeb/./ResourcePackages/Main/assets/src/scripts/components/PricingInfo.vue","webpack://RdoWeb/ResourcePackages/Main/assets/src/scripts/components/PricingInfo.vue","webpack://RdoWeb/./ResourcePackages/Main/assets/src/scripts/components/PricingInfo.vue?46a6","webpack://RdoWeb/./ResourcePackages/Main/assets/src/scripts/components/PricingInfo.vue?5e63","webpack://RdoWeb/./node_modules/vue-loader/lib/runtime/componentNormalizer.js"],"sourcesContent":["// Based on https://stackoverflow.com/a/48550430\r\nimport { widgetInitialisation } from \"../functions/widget-init\";\r\nimport { NumberUtils } from \"../functions/number-utils\";\r\n\r\nwidgetInitialisation(initToCurrencyFilter);\r\nwidgetInitialisation(initToCurrencyNoCentsFilter);\r\n\r\nfunction initToCurrencyFilter() {\r\n Vue.filter('toCurrency', function (value, options) {\r\n options = options || {};\r\n\r\n var minimumFractionDigits = '2';\r\n if (typeof options.minimumFractionDigits === \"number\") {\r\n minimumFractionDigits = options.minimumFractionDigits.toString();\r\n }\r\n\r\n if (typeof value !== \"number\") {\r\n var parsedValue = NumberUtils.tryParse(value);\r\n if (parsedValue === null)\r\n return value;\r\n\r\n value = parsedValue;\r\n }\r\n\r\n var currencyCode = options.currencyCode || 'USD';\r\n\r\n var formatter = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: currencyCode,\r\n minimumFractionDigits: minimumFractionDigits\r\n });\r\n\r\n return formatter.format(value);\r\n });\r\n}\r\n\r\nfunction initToCurrencyNoCentsFilter() {\r\n Vue.filter('toCurrencyNoCents', function (value, options) {\r\n options = options || {};\r\n\r\n var minimumFractionDigits = '0';\r\n if (typeof options.minimumFractionDigits === \"number\") {\r\n minimumFractionDigits = options.minimumFractionDigits.toString();\r\n }\r\n\r\n if (typeof value !== \"number\") {\r\n var parsedValue = NumberUtils.tryParse(value);\r\n if (parsedValue === null)\r\n return value;\r\n\r\n value = parsedValue;\r\n }\r\n\r\n var currencyCode = options.currencyCode || 'USD';\r\n\r\n var formatter = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: currencyCode,\r\n minimumFractionDigits: minimumFractionDigits\r\n });\r\n\r\n return formatter.format(parseInt(value,10));\r\n });\r\n}","import { WidgetInitializer } from \"../functions/widget-initializer\";\r\nimport { ConfigUtils } from \"../functions/config-utils\";\r\nimport { RouteUtils } from \"../functions/route-utils\";\r\nimport { Constants } from \"../functions/constants\";\r\nimport { ArrayUtils } from \"../functions/array-utils\";\r\nimport { ProductDecorator } from \"../functions/product-decorator\";\r\nimport PricingInfo from \"../components/PricingInfo\";\r\n\r\nconst widgetInitializer = new WidgetInitializer(Constants.COMPONENTS.PRODUCT_COMPARE_FULL);\r\nGlobalApp.registerInitializationHandler(Constants.COMPONENTS.PRODUCT_COMPARE_FULL, function () {\r\n widgetInitializer.initialize(initProductCompareApp);\r\n});\r\n\r\nfunction initProductCompareApp(element) {\r\n const config = ConfigUtils.getConfigFor(element);\r\n\r\n let vueApp = new Vue({\r\n el: '#' + element.id,\r\n data: {\r\n initializationReadyHook: GlobalApp.getInitializationReadyHook(),\r\n isLoading: true,\r\n isError: false,\r\n references: [],\r\n results: [],\r\n productIds: [],\r\n features: [],\r\n shouldGetDynamicPrices: false\r\n },\r\n components: { PricingInfo },\r\n computed: {\r\n config: () => config,\r\n resultsLength: function () {\r\n return this.results.length\r\n },\r\n compare_features: function () {\r\n if (!this.results) return [];\r\n\r\n const lines = 5;\r\n var features = [];\r\n\r\n for (var i = 1; i < lines + 1; i++) {\r\n var feature_line = [];\r\n this.results.map(elem => {\r\n feature_line.push(elem.Document[`feature_bullet_${i}`]?.value[0] ? elem.Document[`feature_bullet_${i}`].value[0] : '')\r\n });\r\n if (feature_line.some(el => el)) {\r\n features.push({\r\n title: `Feature ${i}`,\r\n values: feature_line\r\n })\r\n }\r\n }\r\n return features\r\n }\r\n },\r\n methods: {\r\n async init() {\r\n const comparisonResults = await this.getComparisonResults();\r\n if (ArrayUtils.isNotEmpty(comparisonResults)) {\r\n this.results = comparisonResults;\r\n var anyItemIsPart = false;\r\n var anyItemHasPricing = false;\r\n\r\n for (var i = 0; i < this.results.length; i++) {\r\n let item = this.results[i];\r\n item.productDetails = new ProductDecorator(item);\r\n\r\n if (!anyItemIsPart)\r\n anyItemIsPart = item.productDetails.isPart();\r\n\r\n if (!anyItemHasPricing)\r\n anyItemHasPricing = item.productDetails.isEquipment() || item.productDetails.isPart();\r\n\r\n item.IsPriceReloading = item.productDetails.isPart() || item.productDetails.isEquipment();\r\n item.productPricing = item.productDetails.getPricingDetails();\r\n }\r\n\r\n if (anyItemIsPart && this.shouldGetDynamicPrices)\r\n GlobalApp.ProductService.populateDynamicPrices(this.results, true);\r\n else if (anyItemHasPricing) {\r\n GlobalApp.ProductService.populateProductPrices(this.results, true);\r\n }\r\n }\r\n\r\n this.isLoading = false;\r\n },\r\n async getComparisonResults() {\r\n const payload = {\r\n \"clientGuid\": this.config.clientId,\r\n \"Ids\": this.productIds\r\n };\r\n\r\n const requestOptions = {\r\n method: 'POST',\r\n mode: 'cors',\r\n cache: 'no-cache',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(payload)\r\n };\r\n\r\n // TODO: Use the fetch-client.js instead here\r\n const response = await fetch(this.config.productCompareApiUrl, requestOptions);\r\n const data = await response.json();\r\n\r\n if (!response.ok) {\r\n console.warn(Constants.ERROR_MESSAGES.SOMETHING_WENT_WRONG, data);\r\n return Promise.reject(data);\r\n }\r\n\r\n if (data?.Results?.length)\r\n return data.Results;\r\n\r\n return [];\r\n },\r\n parseImageBackground: function (item) {\r\n var image = item.Document?.image?.value[0];\r\n if (!image) image = this.config.widgetConstants.defaultThumbnailUrl;\r\n return `background-image:url(${image})`\r\n },\r\n getBullets: function (item) {\r\n var bullets = [];\r\n for (var i = 1; i < 4; i++) {\r\n var bullet = \"feature_bullet_\" + i;\r\n if (item.Document[bullet]) {\r\n bullets.push(item.Document[bullet].value[0])\r\n }\r\n }\r\n return bullets\r\n },\r\n getDetailUrl: function (item) {\r\n return GlobalApp.generalSettings.productDetailsPageUrl + item.Document?.url_detail.value[0]\r\n },\r\n getReferenceEntities() {\r\n var refData = GlobalApp.RdoApiClient.fetchJson(Constants.REFERENCE_ENTITIES.API_ENDPOINTS.COMPARE_PRODUCTS, {\r\n method: 'GET'\r\n }).then((data) => {\r\n return JSON.parse(data);\r\n }).catch((error) => {\r\n console.warn(Constants.ERROR_MESSAGES.SOMETHING_WENT_WRONG, error);\r\n });\r\n return refData\r\n },\r\n async removeItemFromCompare(itemId) {\r\n if (this.productIds.length === 1) {\r\n window.history.back();\r\n } else {\r\n this.productIds = this.productIds.filter((el) => el !== itemId)\r\n await this.init();\r\n }\r\n },\r\n showCents: function (item) {\r\n return item.productDetails?.isPart();\r\n }\r\n },\r\n\r\n async created() {\r\n this.shouldGetDynamicPrices = await GlobalApp.CustomerService.shouldGetDynamicPrices();\r\n\r\n let pids = RouteUtils.getQueryParamValue(Constants.PRODUCTS_COMPARE.QUERY_STRING_KEY);\r\n if (pids) {\r\n this.productIds = pids.split(\",\").slice(0, Constants.PRODUCTS_COMPARE.NUMBER_OF_SLOTS);\r\n await this.init();\r\n }\r\n\r\n this.initializationReadyHook(element.id);\r\n }\r\n });\r\n\r\n return vueApp.$el;\r\n}","var render = function render(_c, _vm) {\n return _vm.props.show\n ? _c(\n \"div\",\n { staticClass: \"pricing_info\", class: _vm.props.extraClasses },\n [\n _vm.props.isNewEquipment &&\n _vm.props.priceObject.main &&\n _vm.props.priceObject.main > 0 &&\n _vm.props.priceObject.main != 0.01\n ? _c(\"span\", { staticClass: \"starting_at\" }, [\n _vm._v(\"Starting At\"),\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.props.loading\n ? _c(\n \"div\",\n {\n staticClass: \"awaiting_overlay displayed partial dots_loader\",\n },\n [_c(\"p\", { attrs: { loader: \"loading\" } })]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.props.priceObject.crossed &&\n _vm.props.showOld &&\n !_vm.props.loading\n ? _c(\"div\", { staticClass: \"crossPriceBox onSaleBadgeMarker\" }, [\n _vm.props.priceObject.main &&\n _vm.props.priceObject.main > 0 &&\n _vm.props.priceObject.main != 0.01 &&\n !_vm.props.loading\n ? _c(\"span\", {\n staticClass: \"price\",\n domProps: {\n textContent: _vm._s(\n _vm.props.noCents\n ? _vm.$options.filters.toCurrencyNoCents(\n _vm.props.priceObject.main\n )\n : _vm.$options.filters.toCurrency(\n _vm.props.priceObject.main\n )\n ),\n },\n })\n : _c(\"span\", { staticClass: \"price call_for_price\" }, [\n _vm._v(\"Call for Price\"),\n ]),\n _vm._v(\" \"),\n _c(\"span\", {\n staticClass: \"old_price\",\n domProps: {\n textContent: _vm._s(\n _vm.props.noCents\n ? _vm.$options.filters.toCurrencyNoCents(\n _vm.props.priceObject.crossed\n )\n : _vm.$options.filters.toCurrency(\n _vm.props.priceObject.crossed\n )\n ),\n },\n }),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"cross_price_break\" }),\n _vm._v(\" \"),\n _vm.props.priceObject.saving\n ? _c(\"span\", {\n staticClass: \"price_saving\",\n domProps: {\n textContent: _vm._s(\n \"Save \" +\n _vm.$options.filters.toCurrency(\n _vm.props.priceObject.saving\n )\n ),\n },\n })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"span\",\n {\n staticClass: \"pi_onsale_badge\",\n staticStyle: { display: \"none\" },\n },\n [_vm._v(\"On Sale\")]\n ),\n ])\n : _c(\"div\", [\n _vm.props.priceObject.main &&\n _vm.props.priceObject.main > 0 &&\n _vm.props.priceObject.main != 0.01 &&\n !_vm.props.loading\n ? _c(\"span\", {\n staticClass: \"price\",\n domProps: {\n textContent: _vm._s(\n _vm.props.noCents\n ? _vm.$options.filters.toCurrencyNoCents(\n _vm.props.priceObject.main\n )\n : _vm.$options.filters.toCurrency(\n _vm.props.priceObject.main\n )\n ),\n },\n })\n : _c(\"span\", { staticClass: \"price call_for_price\" }, [\n _vm._v(\"Call for Price\"),\n ]),\n ]),\n ]\n )\n : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","<template functional>\r\n <div v-if=\"props.show\" class=\"pricing_info\" :class=\"props.extraClasses\">\r\n <span class=\"starting_at\" v-if=\"props.isNewEquipment && props.priceObject.main && props.priceObject.main > 0 && props.priceObject.main != 0.01\">Starting At</span>\r\n <div class=\"awaiting_overlay displayed partial dots_loader\" v-if=\"props.loading\">\r\n <p loader=\"loading\"></p>\r\n </div>\r\n <div v-if=\"props.priceObject.crossed && props.showOld && !props.loading\" class=\"crossPriceBox onSaleBadgeMarker\">\r\n <span class=\"price\" v-if=\"props.priceObject.main && props.priceObject.main > 0 && props.priceObject.main != 0.01 && !props.loading\"\r\n v-text=\"props.noCents ? $options.filters.toCurrencyNoCents(props.priceObject.main) : $options.filters.toCurrency(props.priceObject.main)\"></span>\r\n <span class=\"price call_for_price\" v-else>Call for Price</span>\r\n <span class=\"old_price\" \r\n v-text=\"props.noCents ? $options.filters.toCurrencyNoCents(props.priceObject.crossed) : $options.filters.toCurrency(props.priceObject.crossed)\"></span>\r\n <span class=\"cross_price_break\"></span>\r\n <span v-if=\"props.priceObject.saving\" class=\"price_saving\" v-text=\"'Save ' + $options.filters.toCurrency(props.priceObject.saving)\"></span> \r\n <span class=\"pi_onsale_badge\" style=\"display: none\">On Sale</span>\r\n </div>\r\n\r\n <div v-else >\r\n <span class=\"price\" v-if=\"props.priceObject.main && props.priceObject.main > 0 && props.priceObject.main != 0.01 && !props.loading\"\r\n v-text=\"props.noCents ? $options.filters.toCurrencyNoCents(props.priceObject.main) : $options.filters.toCurrency(props.priceObject.main)\"></span>\r\n <span class=\"price call_for_price\" v-else>Call for Price</span>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n import { getEmptyProductPrice } from \"../functions/product-model\";\r\n import '../filters/to-currency';\r\n\r\n export default {\r\n name: \"PricingInfo\",\r\n functional: true,\r\n props: {\r\n show: {\r\n type: Boolean,\r\n default: true\r\n },\r\n priceObject: {\r\n type: Object,\r\n default: getEmptyProductPrice()\r\n },\r\n extraClasses: {\r\n type: String,\r\n default: ''\r\n },\r\n showOld: {\r\n type: Boolean,\r\n default: true\r\n },\r\n loading: {\r\n type: Boolean,\r\n default: false\r\n },\r\n isNewEquipment: {\r\n type: Boolean,\r\n default: false\r\n },\r\n noCents: {\r\n type: Boolean,\r\n default: false\r\n },\r\n },\r\n };\r\n</script>","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PricingInfo.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PricingInfo.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PricingInfo.vue?vue&type=template&id=f2c57a7a&functional=true\"\nimport script from \"./PricingInfo.vue?vue&type=script&lang=js\"\nexport * from \"./PricingInfo.vue?vue&type=script&lang=js\"\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 true,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent(\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */,\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options =\n typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n"],"names":["widgetInitialisation","Vue","filter","value","options","minimumFractionDigits","toString","parsedValue","NumberUtils","tryParse","currencyCode","Intl","NumberFormat","style","currency","format","parseInt","widgetInitializer","WidgetInitializer","Constants","COMPONENTS","PRODUCT_COMPARE_FULL","initProductCompareApp","element","config","ConfigUtils","getConfigFor","el","id","data","initializationReadyHook","GlobalApp","getInitializationReadyHook","isLoading","isError","references","results","productIds","features","shouldGetDynamicPrices","components","PricingInfo","computed","resultsLength","this","length","compare_features","i","lines","feature_line","map","elem","_elem$Document","push","Document","concat","some","title","values","methods","init","_this","_asyncToGenerator","comparisonResults","getComparisonResults","ArrayUtils","isNotEmpty","anyItemIsPart","anyItemHasPricing","item","productDetails","ProductDecorator","isPart","isEquipment","IsPriceReloading","productPricing","getPricingDetails","ProductService","populateDynamicPrices","populateProductPrices","_this2","_data$Results","payload","clientId","requestOptions","method","mode","cache","headers","body","JSON","stringify","response","fetch","productCompareApiUrl","json","ok","Results","console","warn","ERROR_MESSAGES","SOMETHING_WENT_WRONG","Promise","reject","parseImageBackground","_item$Document","image","widgetConstants","defaultThumbnailUrl","getBullets","bullets","bullet","getDetailUrl","_item$Document2","generalSettings","productDetailsPageUrl","url_detail","getReferenceEntities","RdoApiClient","fetchJson","REFERENCE_ENTITIES","API_ENDPOINTS","COMPARE_PRODUCTS","then","parse","catch","error","removeItemFromCompare","itemId","_this3","window","history","back","showCents","_item$productDetails","created","_this4","CustomerService","pids","RouteUtils","getQueryParamValue","PRODUCTS_COMPARE","QUERY_STRING_KEY","split","slice","NUMBER_OF_SLOTS","$el","registerInitializationHandler","initialize","render","_c","_vm","props","show","staticClass","class","extraClasses","isNewEquipment","priceObject","main","_v","_e","loading","attrs","loader","crossed","showOld","domProps","textContent","_s","noCents","$options","filters","toCurrencyNoCents","toCurrency","saving","staticStyle","display","_withStripped","name","functional","type","Boolean","default","Object","getEmptyProductPrice","String","normalizeComponent","scriptExports","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","call","_registeredComponents","add","_ssrRegister","$root","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","exports"],"sourceRoot":""}