{"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":""}