{"version":3,"file":"recentlyviewedproducts.50cb9b8abd9ed9d98c1e.js","mappings":"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","sources":["webpack://front-end-build-system/./src/smartpak/misc.js","webpack://front-end-build-system/./src/smartpak/recentlyviewedproducts.js","webpack://front-end-build-system/./src/views/productclasspage/tes/recentlyviewed.js","webpack://front-end-build-system/./src/views/recentlyviewedproducts/index.js","webpack://front-end-build-system/external var \"jQuery\"","webpack://front-end-build-system/external var \"ko\""],"sourcesContent":["export function cleanTitle(text, flag) {\n var output = text;\n if (flag === 'cm') {\n output = output.replace(/\\s/g, '_');\n output = output.replace(/<[A-Za-z0-9]+[^>]*>|<\\/[A-Za-z0-9]+[^>]*>/g, '');\n }\n // eslint-disable-next-line no-useless-escape\n output = output.replace(/|<\\/sup>|®|™|\\'|\\\"|<[A-Za-z0-9]+[^>]*>|<\\/[A-Za-z0-9]+[^>]*>/g, '');\n return output;\n}\n\nexport function reviewCountDisplay(reviews, isCapitalized) {\n var reviewTxt = isCapitalized ? ' Review' : ' review';\n return reviews == 1 ? reviewTxt : reviewTxt + 's';\n}\n\nexport function defaultImageName(data, defaultValue) {\n if (!data) {\n return !defaultValue ? '' : defaultValue;\n }\n\n if (\n data.IsWesternDefaultImage &&\n data.IsWesternDefaultImage === true &&\n smartPak.cdProfileCookie.isWesternDiscipline\n ) {\n return data.ImageWestern.length ? data.ImageWestern : data.ImagePath;\n }\n\n return data.ImagePath;\n}\n\nexport function possessiveName(name) {\n var hasPluralEnding = name.substr(name.length - 1).toLowerCase() === 's',\n hasEndingS = name + \"'\",\n hasNoEndingS = name + \"'s\";\n\n return hasPluralEnding ? hasEndingS : hasNoEndingS;\n}\n","const COOKIE_NAME = 'speRecentlyViewed',\r\n recentlyViewedProducts = {\r\n recentViewUpdate: function(productClassIds, productClassId) {\r\n var max = 24,\r\n expireInDays = 90,\r\n arr = productClassIds.slice(0, max - 1);\r\n\r\n arr.unshift(productClassId);\r\n\r\n smartPak.cookie.write(COOKIE_NAME, arr, expireInDays);\r\n },\r\n getRecentlyViewedProductClassIds: function() {\r\n var cookie = smartPak.cookie.read(COOKIE_NAME);\r\n return cookie ? filterExisting(cookie.split(',')) : null;\r\n },\r\n updateRecentlyViewedProductClasses: function(productClassId) {\r\n if (typeof productClassId === 'undefined') {\r\n return;\r\n }\r\n\r\n var productClassIds = this.getRecentlyViewedProductClassIds(),\r\n ids = productClassIds ? productClassIds : [],\r\n duplicateIndex = $.inArray(productClassId, ids);\r\n\r\n if (duplicateIndex > -1) {\r\n ids.splice(duplicateIndex, 1);\r\n }\r\n\r\n this.recentViewUpdate(ids, productClassId);\r\n },\r\n _showBvReviewStars: function(element) {\r\n var $reviewStars = $(element);\r\n\r\n $reviewStars.removeClass('jsHide');\r\n $reviewStars.find('svg').removeAttr('style');\r\n },\r\n _waitForContainer: function(element, callback) {\r\n var starContainer = element + ' .bv_stars_button_container';\r\n\r\n waitForElement(starContainer, function() {\r\n callback(element);\r\n });\r\n },\r\n _displayBvReviews: function(element) {\r\n this._waitForContainer(\r\n element,\r\n function() {\r\n var $numReviews = $(element + ' .bv_numReviews_component_container');\r\n\r\n $numReviews.each(\r\n function(index, item) {\r\n this._displayBvReviewCount(item);\r\n }.bind(this)\r\n );\r\n\r\n this._showBvReviewStars(element);\r\n }.bind(this)\r\n );\r\n },\r\n _reAddBvElement: function(element) {\r\n $(element).each(function(index, item) {\r\n var $item = $(item),\r\n hasBvElement = $item.find('.bv_stars_button_container').length > 0,\r\n $parent,\r\n clone;\r\n\r\n if (!hasBvElement) {\r\n $parent = $item.parent();\r\n clone = $item.clone();\r\n\r\n clone.removeClass(element.replace(/\\./gi, ''));\r\n clone.addClass('restartReviewStars');\r\n\r\n // Permantly remove and then add the BV div and have the div be activated after added\r\n $parent.html('').html(clone);\r\n $parent.html('').html(clone);\r\n }\r\n });\r\n\r\n this._displayBvReviews('.restartReviewStars');\r\n },\r\n _displayBvReviewCount: function(item) {\r\n var $container = $(item),\r\n numberOfReviews = $container.find('meta[itemprop=\"reviewCount\"]').attr('content'),\r\n hasStars = numberOfReviews > 0,\r\n $reviews = $container.find('.bv_text'),\r\n reviewCopy = $reviews.attr('aria-label');\r\n\r\n if (hasStars) {\r\n $reviews.html(reviewCopy);\r\n $container.parent().removeClass('jsHide');\r\n } else {\r\n $container.parent().addClass('jsHide');\r\n }\r\n },\r\n loadBvReviewStars: function(element) {\r\n this._displayBvReviews(element);\r\n\r\n setTimeout(\r\n function() {\r\n this._reAddBvElement(element);\r\n }.bind(this),\r\n 2000\r\n );\r\n }\r\n };\r\n\r\nfunction filterExisting(items) {\r\n return $.grep(items, function(n) {\r\n return n;\r\n });\r\n}\r\n\r\nfunction waitForElement(selector, callback) {\r\n var allowedAttempts = 20,\r\n timeout = 200,\r\n attempt = 1;\r\n\r\n function checkForElement() {\r\n var $element = $(selector);\r\n\r\n if (attempt <= allowedAttempts) {\r\n if ($element.length) {\r\n callback($element);\r\n } else {\r\n attempt++;\r\n setTimeout(checkForElement, timeout);\r\n }\r\n }\r\n }\r\n\r\n checkForElement();\r\n}\r\n\r\nexport default recentlyViewedProducts;\r\n","import {cleanTitle, defaultImageName} from '../../../smartpak/misc.js';\r\nimport $ from 'jquery';\r\nimport ko from 'knockout';\r\nimport recentlyViewedProducts from '../../../smartpak/recentlyviewedproducts';\r\n\r\nlet ids;\r\n\r\n// eslint-disable-next-line no-empty-function\r\nfunction error() {}\r\n\r\nconst prodId = smartPak.pageData.productId,\r\n maxProductCount = 3,\r\n recentlyViewed = {\r\n _recentlyViewedProducts: recentlyViewedProducts,\r\n _recentlyViewedProductClassIds: function () {\r\n ids = ids ? ids : recentlyViewed._recentlyViewedProducts.getRecentlyViewedProductClassIds();\r\n return ids;\r\n },\r\n _isProductClass: function (url) {\r\n return url && /p(s|t)\\/(.+)(\\d+)/gi.test(url);\r\n },\r\n _idsTodisplay: function () {\r\n var isProdCount = this._isProductClass(location.href);\r\n\r\n if (isProdCount) {\r\n return $.isArray(recentlyViewed._recentlyViewedProductClassIds())\r\n ? ids.slice(0, maxProductCount).join('!')\r\n : '';\r\n }\r\n return $.isArray(recentlyViewed._recentlyViewedProductClassIds()) ? ids.join('!') : '';\r\n },\r\n _hasRecentlyViewedProducts: function () {\r\n return $.isArray(recentlyViewed._recentlyViewedProductClassIds()) && ids.length > 0;\r\n },\r\n _containsOneSameProductClassId: function () {\r\n return (\r\n recentlyViewed._hasRecentlyViewedProducts() &&\r\n recentlyViewed._recentlyViewedProductClassIds().length === 1 &&\r\n recentlyViewed._recentlyViewedProductClassIds()[0] === prodId\r\n );\r\n },\r\n _hide: function () {\r\n $('#recentlyViewedCon').hide();\r\n $('.dashedRight').toggleClass('dashedRight');\r\n },\r\n _show: function (dataItems) {\r\n var $list = $('#recentViewList'),\r\n recentProd;\r\n\r\n if ($list.length) {\r\n if (this._isProductClass(location.href)) {\r\n recentProd = ko.dataFor(document.getElementById('productClassCon'));\r\n\r\n recentProd.updateRecentlyViewedProducts(dataItems);\r\n } else {\r\n ko.applyBindings(\r\n {\r\n products: dataItems\r\n },\r\n $list.get(0)\r\n );\r\n }\r\n }\r\n },\r\n _formatData: function (data) {\r\n var dataItems = $.map(data, function (item) {\r\n return $.extend(item, {\r\n Title: cleanTitle(item.Title),\r\n thumbnail: defaultImageName(item, item.ImagePath) + '?width=120',\r\n medium: defaultImageName(item, item.ImagePath) + '?width=300',\r\n Url: item.Url,\r\n Id: item.Id\r\n });\r\n });\r\n\r\n return dataItems;\r\n },\r\n _display: function (data) {\r\n var formattedDataItems = recentlyViewed._formatData(data);\r\n\r\n recentlyViewed._show(formattedDataItems);\r\n },\r\n _processRecentlyViewedProducts: function (data) {\r\n if (data && data.length) {\r\n recentlyViewed._display(data);\r\n }\r\n },\r\n _getProductClassData: function (delimitedIDs, success, error) {\r\n var DELIMITER = '!';\r\n\r\n return smartPak.api.product.getProductClassDTOList(delimitedIDs.split(DELIMITER)).done(success).fail(error);\r\n },\r\n init: function (productId) {\r\n if (!recentlyViewed._hasRecentlyViewedProducts() || recentlyViewed._containsOneSameProductClassId()) {\r\n recentlyViewed._hide();\r\n } else if ($.isArray(ids)) {\r\n this._getProductClassData(recentlyViewed._idsTodisplay())\r\n .done(recentlyViewed._processRecentlyViewedProducts.bind(this))\r\n .fail(error);\r\n }\r\n\r\n recentlyViewed._recentlyViewedProducts.updateRecentlyViewedProductClasses(productId || prodId);\r\n recentlyViewed._recentlyViewedProducts.loadBvReviewStars('.productReviewStars');\r\n }\r\n };\r\n\r\nexport default recentlyViewed;\r\n","import recentlyViewed from '../productclasspage/tes/recentlyviewed';\n\nconst $back = document.querySelector('.btnBack');\n\nif($back){\n $back.addEventListener('click', () => window.history.back());\n}\n\nrecentlyViewed.init();","module.exports = jQuery;","module.exports = ko;"],"names":["cleanTitle","text","flag","output","replace","defaultImageName","data","defaultValue","IsWesternDefaultImage","smartPak","cdProfileCookie","isWesternDiscipline","ImageWestern","length","ImagePath","possessiveName","name","substr","toLowerCase","COOKIE_NAME","recentViewUpdate","productClassIds","productClassId","arr","slice","max","unshift","cookie","write","getRecentlyViewedProductClassIds","items","read","split","$","grep","n","updateRecentlyViewedProductClasses","ids","this","duplicateIndex","inArray","splice","_showBvReviewStars","element","$reviewStars","removeClass","find","removeAttr","_waitForContainer","callback","selector","attempt","checkForElement","$element","setTimeout","waitForElement","_displayBvReviews","each","index","item","_displayBvReviewCount","bind","_reAddBvElement","$parent","clone","$item","parent","addClass","html","$container","hasStars","attr","$reviews","reviewCopy","loadBvReviewStars","error","prodId","pageData","productId","recentlyViewed","_recentlyViewedProducts","recentlyViewedProducts","_recentlyViewedProductClassIds","_isProductClass","url","test","_idsTodisplay","location","href","join","_hasRecentlyViewedProducts","_containsOneSameProductClassId","_hide","hide","toggleClass","_show","dataItems","$list","ko","document","getElementById","updateRecentlyViewedProducts","products","get","_formatData","Title","thumbnail","medium","Url","Id","_display","formattedDataItems","_processRecentlyViewedProducts","_getProductClassData","delimitedIDs","success","api","product","getProductClassDTOList","done","fail","init","$back","querySelector","addEventListener","window","history","back","module","exports","jQuery"],"sourceRoot":""}