{"version":3,"file":"product-specifications-fragment.js?v=4775efa8aa18fb37ace3","mappings":"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","sources":["webpack://RdoWeb/./ResourcePackages/Main/assets/src/scripts/stores/mutations.js","webpack://RdoWeb/./ResourcePackages/Main/assets/src/scripts/stores/product-store.js","webpack://RdoWeb/./ResourcePackages/Main/assets/src/scripts/mixins/product-mixin.js","webpack://RdoWeb/./ResourcePackages/Main/assets/src/scripts/widgets/product/specifications-fragment.js"],"sourcesContent":["export let Mutations = Object.freeze({\r\n ProductStore: Object.freeze({\r\n FETCH_PRODUCT: \"FETCH_PRODUCT\",\r\n FETCH_CROSS_SELL_PRODUCTS: \"FETCH_CROSS_SELL_PRODUCTS\",\r\n FETCH_SIMILAR_PRODUCTS: \"FETCH_SIMILAR_PRODUCTS\",\r\n FETCH_PROGRAMS: \"FETCH_PROGRAMS\",\r\n FETCH_PROMOTIONS: \"FETCH_PROMOTIONS\",\r\n FETCH_SPECIFICATIONS: \"FETCH_SPECIFICATIONS\",\r\n FETCH_COMPARE_FIELDS: \"FETCH_COMPARE_FIELDS\",\r\n PRODUCT_FETCHED: \"PRODUCT_FETCHED\"\r\n })\r\n});","import Vue from 'vue';\r\nimport Vuex from \"vuex\";\r\nimport { Constants } from '../functions/constants';\r\nimport { StringUtils } from '../functions/string-utils';\r\nimport { ProductService } from '../services/product-service';\r\nimport { Mutations } from './mutations';\r\nimport { parseValue, parseValueAsArray, getPricing } from '../functions/product-model';\r\nimport { ArrayUtils } from '../functions/array-utils';\r\nimport { ProductDecorator } from \"../functions/product-decorator\";\r\n\r\nVue.use(Vuex);\r\n\r\nexport const productStore = new Vuex.Store({\r\n state: {\r\n isProductFetched: false,\r\n product: {},\r\n similarProducts: [],\r\n crossSellProducts: [],\r\n programInfo: [],\r\n promotionInfo: [],\r\n specifications: [],\r\n compareFields: []\r\n },\r\n getters: {\r\n warranty: state => {\r\n if (!state.product?.warranty)\r\n return {};\r\n\r\n let parsedWarranty = StringUtils.jsonTryParse(state.product?.warranty);\r\n return (parsedWarranty) ? parsedWarranty : {};\r\n },\r\n getFromWarranty: (state, getters) => (key) => {\r\n if (!state.isProductFetched || typeof key !== \"string\")\r\n return null;\r\n\r\n return getters.warranty[key];\r\n },\r\n customFields: state => {\r\n return state.product?.customFields;\r\n },\r\n getCustomField: (state, getters) => (key) => {\r\n if (!state.isProductFetched || typeof key !== \"string\")\r\n return null;\r\n\r\n let customFieldValue = getters.customFields.find(f => f.name === key)?.value;\r\n return (customFieldValue) ? customFieldValue : null;\r\n },\r\n betterTogetherIds: (state, getters) => {\r\n let crossSellProductIds = parseValueAsArray(getters.getCustomField(Constants.ALGOLIA.PRODUCT.CROSS_SELL), Constants.PRODUCT.CARROT_SEPARATOR);\r\n\r\n return ArrayUtils.isNotEmpty(crossSellProductIds) ? crossSellProductIds : [];\r\n },\r\n relatedProducts: (state, getters) => {\r\n\r\n let relatedProducts = parseValueAsArray(getters.getCustomField(Constants.ALGOLIA.PRODUCT.SIMILAR_PRODUCT_IDS), Constants.PRODUCT.CARROT_SEPARATOR);\r\n\r\n\r\n return ArrayUtils.isNotEmpty(relatedProducts) ? relatedProducts : [];\r\n },\r\n programs: (state, getters) => {\r\n return parseValueAsArray(getters.getFromWarranty(Constants.ALGOLIA.PRODUCT.PROGRAM_TEXT), Constants.PRODUCT.CARROT_SEPARATOR);\r\n },\r\n promoFeatures: (state, getters) => {\r\n return parseValueAsArray(getters.getFromWarranty(Constants.ALGOLIA.PRODUCT.PROMO_TEXT), Constants.PRODUCT.CARROT_SEPARATOR);\r\n },\r\n },\r\n actions: {\r\n async getProduct({ commit, dispatch, getters, state }, data) {\r\n const productService = new ProductService();\r\n const product = await productService.getProduct(data?.productId);\r\n\r\n commit(Mutations.ProductStore.FETCH_PRODUCT, { ...data.model, ...product });\r\n if (product) {\r\n commit(Mutations.ProductStore.PRODUCT_FETCHED, true);\r\n await dispatch(\"getProgramInfo\");\r\n await dispatch(\"getPromotionInfo\");\r\n await dispatch(\"getCrossSellProducts\");\r\n await dispatch(\"getSpecifications\");\r\n\r\n if (getters.relatedProducts?.length)\r\n await dispatch(\"getCompareDefinitions\");\r\n\r\n if (state.compareFields?.length)\r\n await dispatch(\"getSimilarProducts\");\r\n }\r\n },\r\n async getProgramInfo({ commit, getters }) {\r\n const productService = new ProductService();\r\n const programNames = getters.programs;\r\n if (!programNames?.length)\r\n return false;\r\n\r\n const programInfo = await productService.getProgramData(programNames);\r\n if (programInfo)\r\n commit(Mutations.ProductStore.FETCH_PROGRAMS, programInfo);\r\n },\r\n async getPromotionInfo({ commit, getters }) {\r\n const productService = new ProductService();\r\n const featureNames = getters.promoFeatures;\r\n if (!featureNames?.length)\r\n return false;\r\n\r\n const promotions = await productService.getPromotionData(featureNames);\r\n if (promotions)\r\n commit(Mutations.ProductStore.FETCH_PROMOTIONS, promotions);\r\n },\r\n\r\n async getCrossSellProducts({ commit, getters }) {\r\n const productService = new ProductService();\r\n const crossSellProductIds = getters.betterTogetherIds;\r\n const crossSellProducts = await productService.getCrossSellProducts(crossSellProductIds);\r\n\r\n commit(Mutations.ProductStore.FETCH_CROSS_SELL_PRODUCTS, crossSellProducts);\r\n },\r\n\r\n async getSpecifications({ commit, getters }) {\r\n const productService = new ProductService();\r\n const family = parseValue(getters.getCustomField(Constants.ALGOLIA.PRODUCT.FAMILY));\r\n if (!family)\r\n return false;\r\n\r\n const specifications = await productService.getSpecifications(family);\r\n if (specifications)\r\n commit(Mutations.ProductStore.FETCH_SPECIFICATIONS, specifications);\r\n },\r\n async getCompareDefinitions({ commit, getters }, data) {\r\n const productService = new ProductService();\r\n const family = parseValue(getters.getCustomField(Constants.ALGOLIA.PRODUCT.FAMILY));\r\n if (!family)\r\n return false;\r\n\r\n const compareDefinitions = await productService.getCompareDefinitions(family);\r\n if (compareDefinitions)\r\n commit(Mutations.ProductStore.FETCH_COMPARE_FIELDS, compareDefinitions);\r\n },\r\n async getSimilarProducts({ commit, getters }, data) {\r\n const productService = new ProductService();\r\n const similarProductIds = getters.relatedProducts;\r\n const similarProducts = await productService.getRelatedProducts(similarProductIds);\r\n\r\n if (similarProducts) {\r\n commit(Mutations.ProductStore.FETCH_SIMILAR_PRODUCTS, similarProducts);\r\n }\r\n }\r\n },\r\n mutations: {\r\n FETCH_PRODUCT(state, product) {\r\n state.product = product;\r\n },\r\n FETCH_CROSS_SELL_PRODUCTS(state, crossSellProducts) {\r\n state.crossSellProducts = crossSellProducts;\r\n },\r\n FETCH_PROGRAMS(state, programInfo) {\r\n state.programInfo = programInfo;\r\n },\r\n FETCH_PROMOTIONS(state, promotionInfo) {\r\n state.promotionInfo = promotionInfo;\r\n },\r\n FETCH_SPECIFICATIONS(state, specifications) {\r\n state.specifications = specifications;\r\n },\r\n PRODUCT_FETCHED(state, isProductFetched) {\r\n state.isProductFetched = isProductFetched;\r\n },\r\n FETCH_COMPARE_FIELDS(state, compareFields) {\r\n state.compareFields = compareFields;\r\n },\r\n FETCH_SIMILAR_PRODUCTS(state, similarProducts) {\r\n state.similarProducts = similarProducts;\r\n }\r\n }\r\n});","import { mapState, mapGetters } from 'vuex';\r\nimport { Constants } from \"../functions/constants\";\r\nimport { getProductName, parseValue, parseValueAsArray, getPricing, getEmptyProductPrice } from \"../functions/product-model\";\r\nimport { productStore } from \"../stores/product-store\";\r\nimport { ProductDecorator } from \"../functions/product-decorator\";\r\n\r\nexport const productMixin = {\r\n store: productStore,\r\n methods: {\r\n shouldShowPrice: function (isBusinessCustomer) {\r\n if (!this.productDetails)\r\n return false;\r\n\r\n return this.productDetails.shouldShowPrice(isBusinessCustomer);\r\n }\r\n },\r\n computed: {\r\n ...mapState({\r\n isProductFetched: state => state.isProductFetched,\r\n product: state => state.product\r\n }),\r\n ...mapGetters({\r\n warranty: 'warranty',\r\n getFromWarranty: 'getFromWarranty',\r\n customFields: 'customFields',\r\n getCustomField: 'getCustomField',\r\n programs: 'programs',\r\n promoFeatures: 'promoFeatures'\r\n }),\r\n productDetails: function () {\r\n var options = {\r\n product: this.product\r\n };\r\n this.product.productDetails = new ProductDecorator(options);\r\n return this.product.productDetails;\r\n },\r\n family: function () {\r\n return parseValue(this.getCustomField(Constants.ALGOLIA.PRODUCT.FAMILY));\r\n },\r\n bulletOne: function () {\r\n return parseValue(this.getFromWarranty(Constants.ALGOLIA.PRODUCT.BULLET1));\r\n },\r\n bulletTwo: function () {\r\n return parseValue(this.getFromWarranty(Constants.ALGOLIA.PRODUCT.BULLET2));\r\n },\r\n bulletThree: function () {\r\n return parseValue(this.getFromWarranty(Constants.ALGOLIA.PRODUCT.BULLET3));\r\n },\r\n bulletFour: function () {\r\n return parseValue(this.getFromWarranty(Constants.ALGOLIA.PRODUCT.BULLET4));\r\n },\r\n bulletFive: function () {\r\n return parseValue(this.getFromWarranty(Constants.ALGOLIA.PRODUCT.BULLET5));\r\n },\r\n shippingFulfillmentBullet: function () {\r\n return parseValue(this.getFromWarranty(Constants.ALGOLIA.PRODUCT.SHIPPING_FULLFILLMENT_BULLET));\r\n },\r\n backorderAvailabilityBullet: function () {\r\n return parseValue(this.getFromWarranty(Constants.ALGOLIA.PRODUCT.BACKORDER_AVAILABILITY_BULLET));\r\n },\r\n productLimitationBullet: function () {\r\n return parseValue(this.getFromWarranty(Constants.ALGOLIA.PRODUCT.PRODUCT_LIMITATION_BULLET));\r\n },\r\n addedFeesBullet: function () {\r\n return parseValue(this.getFromWarranty(Constants.ALGOLIA.PRODUCT.ADDED_FEES_BULLET));\r\n },\r\n youTubeVideos: function () {\r\n return parseValueAsArray(this.getFromWarranty(Constants.ALGOLIA.PRODUCT.YOUTUBE));\r\n },\r\n vimeoVideos: function () {\r\n return parseValueAsArray(this.getFromWarranty(Constants.ALGOLIA.PRODUCT.VIMEO));\r\n },\r\n price: function () {\r\n return this.product ?.prices ?.price ?.value;\r\n },\r\n description: function () {\r\n return this.product ?.description;\r\n },\r\n productPrice: function () {\r\n if (!this.productDetails) \r\n return getEmptyProductPrice();\r\n\r\n var pricingObject = this.productDetails.getPrices();\r\n var pricing = getPricing(pricingObject ?.price ?.value, pricingObject ?.retailPrice ?.value, pricingObject ?.salePrice ?.value);\r\n return pricing;\r\n },\r\n productDetailUrl: function () {\r\n return GlobalApp.generalSettings.productDetailsPageUrl;\r\n },\r\n isPart: function () {\r\n return this.productDetails.isPart();\r\n },\r\n isEquipment: function () {\r\n return this.productDetails.isEquipment();\r\n },\r\n isNewEquipment: function () {\r\n return this.productDetails.isNewEquipment();\r\n },\r\n isUsedEquipment: function () {\r\n return this.productDetails.isUsedEquipment();\r\n },\r\n skuText: function () {\r\n if (this.isNewEquipment) {\r\n return this.productDetails.getModel()\r\n }\r\n\r\n if (this.isUsedEquipment || this.isPart) {\r\n return this.productDetails.getSku()\r\n }\r\n\r\n return \"\"\r\n },\r\n }\r\n}","import { mapState } from \"vuex\";\r\nimport { WidgetInitializer } from \"../../functions/widget-initializer\";\r\nimport { Constants } from \"../../functions/constants\";\r\nimport { NumberUtils } from \"../../functions/number-utils\";\r\nimport { parseAsTwoValues, parseValueAsArray } from \"../../functions/product-model\";\r\nimport { productMixin } from \"../../mixins/product-mixin\";\r\nimport { ConfigUtils } from \"../../functions/config-utils\";\r\n\r\nvar widgetInitializer = new WidgetInitializer(Constants.COMPONENTS.PRODUCT_SPECIFICATIONS_FRAGMENT);\r\nGlobalApp.registerInitializationHandler(Constants.COMPONENTS.PRODUCT_SPECIFICATIONS_FRAGMENT, function () {\r\n widgetInitializer.initialize(initSpecificationFragment);\r\n});\r\n\r\nfunction initSpecificationFragment(element) {\r\n var config = ConfigUtils.getConfigFor(element);\r\n\r\n var vueApp = new Vue({\r\n el: '#' + element.id,\r\n mixins: [productMixin],\r\n data: {\r\n selectedSpec: 0,\r\n specPanelShown: false,\r\n scrollableNav: false,\r\n data_loaded: false\r\n },\r\n methods: {\r\n checkNavlinksLength: function () {\r\n var that = this;\r\n this.$nextTick(function () {\r\n setTimeout(() => {\r\n var links = that.$refs.nav_link,\r\n nav_line = that.$refs.nav_line;\r\n if (links && nav_line) {\r\n var navWidth = nav_line.clientWidth,\r\n linksWidth = 0;\r\n for (var i = 0; i < links.length && !that.scrollableNav; i++) {\r\n linksWidth += links[i].clientWidth;\r\n that.scrollableNav = linksWidth > navWidth\r\n }\r\n }\r\n }, 1000)\r\n })\r\n },\r\n cleanSpecData: function (str) {\r\n const toReturn = NumberUtils.getNumberFromString(str);\r\n if (this.isPart && toReturn && toReturn.indexOf('Pound') > -1) {\r\n return toReturn.replace('Pound', 'lbs');\r\n }\r\n return toReturn;\r\n },\r\n cleanSpecTitle: function (str) {\r\n\r\n if (this.isPart && str === 'Weight') {\r\n return 'Shipping Weight'\r\n }\r\n return str;\r\n }\r\n },\r\n computed: {\r\n ...mapState({\r\n specifications: state => state.specifications\r\n }),\r\n specsFullData: function () {\r\n if (!this.warranty || !this.specifications || !Object.keys(this.warranty)?.length || !this.specifications?.length)\r\n return [];\r\n\r\n var specArray = this.specifications;\r\n specArray.map((el) => {\r\n let order = parseValueAsArray(el.spec_sort_order);\r\n el.spec_data = order\r\n .filter(s => this.warranty[s])\r\n .map(el => parseAsTwoValues(this.warranty[el]));\r\n });\r\n return specArray.filter((el) => {\r\n return el.spec_data.length\r\n })\r\n },\r\n noSpecs: function () {\r\n return !this.specsFullData.length || !this.specsFullData[0].spec_data.length\r\n },\r\n specsTitle: function () {\r\n if (this.isUsedEquipment)\r\n return `${this.product?.brand?.name} ${this.productDetails.getModel()} Specifications`;\r\n else\r\n return this.isEquipment ? `${this.product?.brand?.name} ${this.skuText} Specifications` : \"Specifications\";\r\n\r\n },\r\n },\r\n watch: {\r\n specsFullData: {\r\n deep: true,\r\n handler(newVal, oldVal) {\r\n this.data_loaded = true;\r\n if (newVal && newVal.length > 0) {\r\n this.checkNavlinksLength()\r\n }\r\n }\r\n },\r\n specPanelShown: {\r\n handler(newVal, oldVal) {\r\n if (newVal && window.isMobile) {\r\n document.body.classList.add('spec_panel_shown')\r\n } else {\r\n document.body.classList.remove('spec_panel_shown')\r\n }\r\n }\r\n }\r\n },\r\n created: function () {\r\n }\r\n });\r\n\r\n return vueApp.$el;\r\n}"],"names":["Mutations","Object","freeze","ProductStore","FETCH_PRODUCT","FETCH_CROSS_SELL_PRODUCTS","FETCH_SIMILAR_PRODUCTS","FETCH_PROGRAMS","FETCH_PROMOTIONS","FETCH_SPECIFICATIONS","FETCH_COMPARE_FIELDS","PRODUCT_FETCHED","Vue","Vuex","productMixin","store","state","isProductFetched","product","similarProducts","crossSellProducts","programInfo","promotionInfo","specifications","compareFields","getters","warranty","_state$product","_state$product2","parsedWarranty","StringUtils","jsonTryParse","getFromWarranty","key","customFields","_state$product3","getCustomField","_getters$customFields","customFieldValue","find","f","name","value","betterTogetherIds","crossSellProductIds","parseValueAsArray","Constants","ALGOLIA","PRODUCT","CROSS_SELL","CARROT_SEPARATOR","ArrayUtils","isNotEmpty","relatedProducts","SIMILAR_PRODUCT_IDS","programs","PROGRAM_TEXT","promoFeatures","PROMO_TEXT","actions","getProduct","_ref","data","_asyncToGenerator","_getters$relatedProdu","_state$compareFields","productService","ProductService","productId","commit","_objectSpread","model","dispatch","length","getProgramInfo","_ref2","programNames","getProgramData","getPromotionInfo","_ref3","featureNames","promotions","getPromotionData","getCrossSellProducts","_ref4","getSpecifications","_ref5","family","parseValue","FAMILY","getCompareDefinitions","_ref6","compareDefinitions","getSimilarProducts","_ref7","similarProductIds","getRelatedProducts","mutations","methods","shouldShowPrice","isBusinessCustomer","this","productDetails","computed","mapState","mapGetters","options","ProductDecorator","bulletOne","BULLET1","bulletTwo","BULLET2","bulletThree","BULLET3","bulletFour","BULLET4","bulletFive","BULLET5","shippingFulfillmentBullet","SHIPPING_FULLFILLMENT_BULLET","backorderAvailabilityBullet","BACKORDER_AVAILABILITY_BULLET","productLimitationBullet","PRODUCT_LIMITATION_BULLET","addedFeesBullet","ADDED_FEES_BULLET","youTubeVideos","YOUTUBE","vimeoVideos","VIMEO","price","_this$product","prices","description","_this$product2","productPrice","_pricingObject$price","_pricingObject$retail","_pricingObject$salePr","getEmptyProductPrice","pricingObject","getPrices","getPricing","retailPrice","salePrice","productDetailUrl","GlobalApp","generalSettings","productDetailsPageUrl","isPart","isEquipment","isNewEquipment","isUsedEquipment","skuText","getModel","getSku","widgetInitializer","WidgetInitializer","COMPONENTS","PRODUCT_SPECIFICATIONS_FRAGMENT","initSpecificationFragment","element","ConfigUtils","getConfigFor","el","id","mixins","selectedSpec","specPanelShown","scrollableNav","data_loaded","checkNavlinksLength","that","$nextTick","setTimeout","links","$refs","nav_link","nav_line","navWidth","clientWidth","linksWidth","i","cleanSpecData","str","toReturn","NumberUtils","getNumberFromString","indexOf","replace","cleanSpecTitle","specsFullData","_Object$keys","_this$specifications","keys","specArray","map","order","spec_sort_order","spec_data","filter","s","parseAsTwoValues","noSpecs","specsTitle","concat","brand","watch","deep","handler","newVal","oldVal","window","isMobile","document","body","classList","add","remove","created","$el","registerInitializationHandler","initialize"],"sourceRoot":""}