{"version":3,"sources":["webpack:///./javascript/bcom/pages/pip/pipApp/dimensions/Fractions.js","webpack:///./Content/javascripts/modules/header/bdc/header-bdc.js","webpack:///./Content/javascripts/modules/responsive/scroll-to-top.js","webpack:///./Content/javascripts/components/bdc-accordion.js","webpack:///./Content/javascripts/components/bdc-tabs.js","webpack:///./Content/javascripts/binding-handlers/select-element-content.js","webpack:///./javascript/bcom/components/ProductPod/ProductPod.js","webpack:///./Content/javascripts/react/site-bdc/sharedPreviouslyViewedProducts/index.js","webpack:///./javascript/bcom/pages/pip/pipApp/previousProducts/PreviouslyViewedProducts.js","webpack:///./javascript/bcom/pages/pip/pipApp/previousProducts/previousProductsUtil.js","webpack:///./javascript/bcom/pages/pip/pipApp/previousProducts/PreviousProductsDesktop.js","webpack:///./javascript/bcom/components/Shimmer/Shimmer.js","webpack:///./javascript/bcom/pages/pip/pipApp/previousProducts/PreviousProductsMobile.js","webpack:///./javascript/bcom/pages/pip/pipApp/previousProducts/NoPreviousProducts.js"],"names":["fractionValues","0","0.125","0.25","0.375","0.5","0.625","0.75","0.875","separateValue","value","wholeValue","parseInt","fractionValue","parseFloat","Math","floor","renderAsFraction","isNaN","prettyRenderFraction","separatedValues","define","$","globals","ko","HeaderViewModel","PreviouslyViewedProducts","unveil","baseURL","window","location","protocol","host","requestURL","document","querySelector","dataset","lazyUrl","get","response","after","then","module","Footer","default","getCECHours","Enews","ReactDOM","render","getElementById","updateContentOffset","globalBannerHeight","outerHeight","topnavHeight","searchBarHeight","internalUserBarHeight","is","breakpoint","length","headerViewModel","postMeasureCookie","Cookies","postMeasureOptions","JSON","parse","f","PlpFilters","applyBindings","addEventListener","e","input","placeholder","Modals","toggleScrollTop","scrollTop","show","hide","ssm","getState","active","on","animate","scroll","append","$selectedAccordion","this","closest","find","currentChecked","val","attr","prop","each","height","next","bindingHandlers","selectElementContent","init","element","valueAccessor","allBindingsAccessor","viewModel","bindingContext","click","range","selection","body","createTextRange","moveToElementText","select","getSelection","createRange","selectNodeContents","removeAllRanges","addRange","ProductPod","props","product","IsOnSale","IsFeatured","className","Price","Message","PercDiscount","StockSku","IsTieredPromo","saleAndPrice","formatPricing","FinalPrice","Url","MediaUrl","Name","BrandName","Width","Height","hasFinalPrice","presentationHeight","presentationWidth","href","style","textDecoration","color","rel","minWidth","maxWidth","minHeight","renderSaleOrFeaturedBanner","offset","once","alt","src","width","renderPriceMessaging","price","toFixed","Component","propTypes","shape","string","number","bool","isRequired","ProductPodShimmer","state","currentPage","isLoading","pageSize","products","totalPages","handlePageTransition","bind","hasNext","hasPrevious","fetchProducts","initializeComponent","totalItems","ceil","Array","isArray","setState","shouldTransition","nextPage","startIndex","endIndex","minDeviceWidth","slice","onNext","onPrevious","maxDeviceWidth","PureComponent","getLocalStorageProducts","store","localStorageProducts","axios","post","data","updatePreviousProducts","previousProducts","oldProducts","filter","p","productId","newProducts","concat","set","exports","PreviousProductsDesktop","id","display","top","role","tabIndex","onClick","map","key","ProductId","arrayOf","func","Shimmer","cls","oneOfType","PreviousProductsMobile"],"mappings":"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","file":"76-b78ba52823f3c39e284b.js","sourcesContent":["const fractionValues = {\r\n  0: '0/0',\r\n  0.125: '1/8',\r\n  0.25: '1/4',\r\n  0.375: '3/8',\r\n  0.5: '1/2',\r\n  0.625: '5/8',\r\n  0.75: '3/4',\r\n  0.875: '7/8',\r\n};\r\n\r\nconst separateValue = (value) => ({\r\n  wholeValue: parseInt(value, 10),\r\n  fractionValue: parseFloat(value - Math.floor(value)),\r\n});\r\n\r\nconst renderAsFraction = ({ wholeValue, fractionValue }) => {\r\n  if (isNaN(wholeValue)) {\r\n    return 0;\r\n  } else if (fractionValue === 0) {\r\n    return wholeValue;\r\n  }\r\n  return `${wholeValue} ${fractionValues[fractionValue]}`;\r\n};\r\n\r\nconst prettyRenderFraction = (value) => {\r\n  const separatedValues = separateValue(value);\r\n  return renderAsFraction(separatedValues);\r\n};\r\n\r\nexport { fractionValues, separateValue, renderAsFraction, prettyRenderFraction };\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\n\r\ndefine([\r\n  \"jquery\",\r\n  \"globals\",\r\n  \"knockout\",\r\n  \"header-view-model\",\r\n  \"../../../react/site-bdc/sharedPreviouslyViewedProducts/index\",\r\n  \"select-element-content\",\r\n  \"scroll-to-top\",\r\n  \"accordion\",\r\n  \"tabs\",\r\n  \"sticky-kit\",\r\n  \"internal-user-sticky\",\r\n  \"unveil\"],\r\nfunction ($, globals, ko, HeaderViewModel, PreviouslyViewedProducts) {\r\n\r\n  const initializeEmailSubscription = () => {\r\n    import(/* webpackChunkName: \"enews\" */ '../../../../../javascript/_shared/components/Enews').then((module) => {\r\n      const Enews = module.default;\r\n      ReactDOM.render(<Enews />, document.getElementById('gcc-enews'));\r\n    });\r\n  };\r\n\r\n  const initializeFooter = () => {\r\n    import(/* webpackChunkName: \"footer\" */ '../../../../../javascript/bcom/header-footer/Footer').then((module) => {\r\n      const { default: Footer } = module;\r\n      const footer = new Footer();\r\n      footer.getCECHours();\r\n    });\r\n  };\r\n\r\n  $('#FooterLoaderImg').unveil(600, null, () => {\r\n    const baseURL = `${window.location.protocol}//${window.location.host}/Home/GetPageSection?Requestedpage=`;\r\n    const requestURL = document.querySelector('#FooterLoaderImg').dataset.lazyUrl;\r\n    $.get(`${baseURL}${requestURL}`, (response) => {\r\n      $('#FooterLoaderImg').after(response);\r\n      initializeFooter();\r\n      initializeEmailSubscription();\r\n    });\r\n  });\r\n\r\n  let updateContentOffset = function() {\r\n    let height;\r\n    var globalBannerHeight = $('#gcc-global-banner').outerHeight() || 0;\r\n    var topnavHeight = $('#gcc-header').outerHeight() || 0;\r\n    var searchBarHeight = $('#gcc-header-search').outerHeight() || 0;\r\n    var internalUserBarHeight = $('#internal-user-sticky').is(':visible') ? $('#internal-user-sticky').outerHeight() : 0;\r\n    if (globals.breakpoint.value === 'small' || globals.breakpoint.value === 'medium') {\r\n      height = (topnavHeight + searchBarHeight + globalBannerHeight + internalUserBarHeight);\r\n    } else {\r\n      height = (topnavHeight + globalBannerHeight + internalUserBarHeight);\r\n    }\r\n  }\r\n\r\n  if ($('#bc-captive-header').length > 0) {\r\n    var headerViewModel = new HeaderViewModel();\r\n    var postMeasureCookie = Cookies.get('postMeasureOptions');\r\n    if (postMeasureCookie) {\r\n      var postMeasureOptions = JSON.parse(postMeasureCookie);\r\n      if (postMeasureOptions) {\r\n        var f = $(\"#gcc-inline-search-hidden\").get(0);\r\n        if (f && postMeasureOptions.PlpFilters) {\r\n          f.value = postMeasureOptions.PlpFilters;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  if ($('#gcc-header').length > 0) {\r\n    var headerViewModel = new HeaderViewModel();\r\n    ko.applyBindings(headerViewModel, $(\"#gcc-header\").get(0));\r\n    updateContentOffset();\r\n    window.addEventListener(\"resize\", function(e) {\r\n      updateContentOffset();\r\n    });\r\n    window.addEventListener(\"orientationchange\", function() {\r\n      updateContentOffset();\r\n    });\r\n  }\r\n\r\n  if($('#gcc-prvprodmount').length > 0) {\r\n    PreviouslyViewedProducts.default();\r\n  }\r\n\r\n  //For lazy loading listen to the custom event\r\n  document.addEventListener('onPreviousProductsSectionLoad', function (e) {\r\n    if ($('#gcc-prvprodmount').length > 0) {\r\n      PreviouslyViewedProducts.default();\r\n    }\r\n  });\r\n\r\n  const input = document.getElementById('gcc-typeahead-input');\r\n  if (input) {\r\n\t  input.addEventListener('click', () => {\r\n\t\tif (!document.getElementById('gcc-typeahead').dataset.placeholder) {\r\n\t\t  import(/* webpackChunkName: \"searchBar\" */ '../../../../../javascript/bcom/header-footer/SearchBar/index').then((module) => {\r\n\t\t\t  module.default();\r\n\t\t  });\r\n\t\t}\r\n\t  });\r\n  }\r\n\r\n  import(/* webpackChunkName: \"enews\" */ '../../../../../javascript/bcom/modals').then((module) => {\r\n    const Modals = module.default;\r\n    ReactDOM.render(<Modals />, document.getElementById('bc-modals'));\r\n  });\r\n\r\n  $('img[data-src]').unveil();\r\n});\r\n","define([\r\n  \"globals\",\r\n  \"jquery\"],\r\nfunction(globals, $) {\r\n\r\n  var toggleScrollTop = function () {\r\n    if ($(window).scrollTop() > 700) {\r\n      $(\".bdc-btn-scroll-top\").show();\r\n    } else {\r\n      $(\".bdc-btn-scroll-top\").hide();\r\n    }\r\n  };\r\n\r\n  // Toggles \"Scroll To Top\" button on mobile\r\n  if (globals.ssm.getState(\"mobile\").active) {\r\n    toggleScrollTop();\r\n    $(document).on(\"click\", \".bdc-btn-scroll-top\", function () {\r\n      $(\"html, body\").animate({ scrollTop: 0 }, \"fast\");\r\n    });\r\n    $(window).scroll(function () {\r\n      toggleScrollTop();\r\n    });\r\n  }\r\n\r\n});\r\n","define([\r\n  \"jquery\"],\r\nfunction ($) {\r\n\r\n  \"use strict\";\r\n\r\n  /**\r\n   * The accordion component used in Blinds.com is 100% CSS using the input[type=radio]\r\n   * element to mimic its visual behavior. However, this CSS approach does not allow\r\n   * the user to close one accordion item once it's opened. To make that work, these\r\n   * few lines of JavaScript are needed.\r\n   */\r\n  $(\".bdc-accordion\").append(\"<input type='hidden' class='bdc-accordion-selected' />\");\r\n  $(\".bdc-accordion-item-radio\").on(\"click\", function () {\r\n    var $selectedAccordion = $(this).closest(\".bdc-accordion\").find(\".bdc-accordion-selected\");\r\n    var currentChecked = $selectedAccordion.val();\r\n    $selectedAccordion.val($(this).attr(\"id\"));\r\n    if (currentChecked === $(this).attr(\"id\")) {\r\n      $(this).prop(\"checked\", false);\r\n      $selectedAccordion.val(\"\");\r\n    }\r\n  });\r\n\r\n});\r\n","define([\r\n  \"jquery\"],\r\nfunction ($) {\r\n\r\n  \"use strict\";\r\n\r\n  $(function() {\r\n    $(\".bdc-tabs\").each(function() {\r\n      $(this).height($(this).find(\"li:first\").outerHeight() + $(this).find(\".bdc-tabs-content:visible\").outerHeight());\r\n    });\r\n    $(\"body\").on(\"click\", \".bdc-tabs-head\", function() {\r\n      var tabElement = $(this).closest(\".bdc-tabs\");\r\n      tabElement.height($(this).next().outerHeight() + $(this).next().next().outerHeight());\r\n    });\r\n  });\r\n\r\n});\r\n","define([\r\n  \"jquery\",\r\n  \"knockout\"],\r\nfunction($, ko) {\r\n\r\n  \"use strict\";\r\n\r\n  ko.bindingHandlers.selectElementContent = {\r\n\r\n    init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n\r\n      $(element).click(function() {\r\n        var doc = document;\r\n        var range;\r\n        var selection;\r\n        if (doc.body.createTextRange) {\r\n          range = document.body.createTextRange();\r\n          range.moveToElementText(element);\r\n          range.select();\r\n        } else if (window.getSelection) {\r\n          selection = window.getSelection();\r\n          range = document.createRange();\r\n          range.selectNodeContents(element);\r\n          selection.removeAllRanges();\r\n          selection.addRange(range);\r\n        }\r\n      });\r\n\r\n    }\r\n  };\r\n\r\n});\r\n","/* eslint-disable jsx-a11y/no-noninteractive-element-to-interactive-role */\r\nimport React, { Component } from 'react';\r\nimport { shape, string, bool, number } from 'prop-types';\r\nimport LazyLoad from 'react-lazyload';\r\nimport Shimmer from '../Shimmer/Shimmer';\r\nimport { prettyRenderFraction } from '../../pages/pip/pipApp/dimensions/Fractions';\r\n\r\nclass ProductPod extends Component {\r\n  static formatPricing(price) {\r\n    if (price === 'N/A' || price === '-1') {\r\n      return 'N/A';\r\n    }\r\n\r\n    return `$${parseFloat(price).toFixed(2)}`;\r\n  }\r\n\r\n  renderSaleOrFeaturedBanner() {\r\n    const {\r\n      product: { IsOnSale, IsFeatured },\r\n    } = this.props;\r\n\r\n    if (IsOnSale) return <div className=\"gcc-tag gcc-tag-sale absolute f7 fw7 top-1 left-0\">Sale</div>;\r\n\r\n    if (IsFeatured) return <div className=\"gcc-tag gcc-tag-featured absolute f7 fw7 top-1 left-0\">Featured</div>;\r\n\r\n    return null;\r\n  }\r\n\r\n  renderPriceMessaging() {\r\n    const {\r\n      product: { IsOnSale, Price, Message, PercDiscount, StockSku, IsTieredPromo = false },\r\n    } = this.props;\r\n\r\n    if (StockSku) return null;\r\n\r\n    const noDiscountAndPrice = PercDiscount === 0 && Price !== 'N/A';\r\n\r\n    if (noDiscountAndPrice)\r\n      return (\r\n        <div>\r\n          <small className=\"gcc-text f7\">Starting At</small>\r\n        </div>\r\n      );\r\n\r\n    const saleAndPrice = IsOnSale && Price !== 'N/A';\r\n\r\n    if (IsTieredPromo) {\r\n      return (\r\n        <div className=\"flex flex-column\">\r\n          <small className=\"red b mb2 f7\">{Message}</small>\r\n          <small className=\"gcc-text mb1 f8\">WITH MINIMUM PURCHASE</small>\r\n        </div>\r\n      );\r\n    }\r\n\r\n    if (saleAndPrice) {\r\n      return (\r\n        <div>\r\n          <small className=\" gcc-text strike f7\">{ProductPod.formatPricing(Price)}</small>\r\n          <small className=\"red b ml1 mb1 f7\">{Message}</small>\r\n        </div>\r\n      );\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  render() {\r\n    const {\r\n      product: { FinalPrice, Url, MediaUrl, Name, BrandName, Width, Height, Price },\r\n    } = this.props;\r\n    const hasFinalPrice = !(FinalPrice === 'N/A' || FinalPrice === '');\r\n    const presentationHeight = prettyRenderFraction(Height, true);\r\n    const presentationWidth = prettyRenderFraction(Width, true);\r\n\r\n    return (\r\n      <a\r\n        href={Url}\r\n        className=\"flex items-stretch\"\r\n        style={{ textDecoration: 'inherit', color: 'inherit' }}\r\n        rel=\"nofollow\"\r\n      >\r\n        <article\r\n          className=\"gcc-prdwdg-mini gcc-box-1 mh3 flex flex-wrap flex-column mb2\"\r\n          style={{ minWidth: 185, maxWidth: 185, minHeight: 272 }}\r\n        >\r\n          <figure className=\"relative w-100\">\r\n            {this.renderSaleOrFeaturedBanner()}\r\n            <LazyLoad offset={100} height={150} once>\r\n              <img\r\n                alt={Name}\r\n                src={MediaUrl}\r\n                width=\"185\"\r\n                className=\"br3 br--top\"\r\n                style={{ width: 185, height: 150, minHeight: 150 }}\r\n              />\r\n            </LazyLoad>\r\n          </figure>\r\n          <div className=\"w-100 flex-auto flex\">\r\n            <div className=\"flex flex-column w-100 ma2\">\r\n              <div className=\"gcc-text w-100 f7 lh-copy gray b\">{BrandName}</div>\r\n              <div className=\"w-100 flex-auto mb2\">\r\n                <div className=\"black f6 lh-title db\">{Name}</div>\r\n              </div>\r\n              <div className=\"w-100 pb0 pb2-ns\">\r\n                <div className=\"flex flex-wrap justify-between\">\r\n                  <div className=\"w-100 f7 gray mb1\">{this.renderPriceMessaging()}</div>\r\n                  <div className=\"w-50 f4\">\r\n                    {hasFinalPrice ? ProductPod.formatPricing(FinalPrice) : ProductPod.formatPricing(Price)}\r\n                  </div>\r\n                  <div className=\"gcc-text w-50 tr lh-title flex self-end justify-end gray f7\">\r\n                    {presentationWidth}&quot;x{presentationHeight}&quot;\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </article>\r\n      </a>\r\n    );\r\n  }\r\n}\r\n\r\nconst ProductPodShimmer = () => (\r\n  <div className=\"flex items-stretch\" style={{ textDecoration: 'inherit', color: 'inherit' }}>\r\n    <article\r\n      className=\"gcc-prdwdg-mini gcc-box-1 mh3 flex flex-wrap flex-column mb2\"\r\n      style={{ minWidth: 185, maxWidth: 185, minHeight: 272 }}\r\n    >\r\n      <Shimmer height=\"100%\" width=\"100%\" className=\"br3\" />\r\n    </article>\r\n  </div>\r\n);\r\n\r\nProductPod.propTypes = {\r\n  product: shape({\r\n    MediaUrl: string,\r\n    Name: string,\r\n    Width: number,\r\n    Height: number,\r\n    BrandName: string,\r\n    Url: string,\r\n    Message: string,\r\n    FinalPrice: string,\r\n    IsOnSale: bool.isRequired,\r\n    IsFeatured: bool.isRequired,\r\n    StockSku: string,\r\n  }).isRequired,\r\n};\r\n\r\nexport default ProductPod;\r\n\r\nexport { ProductPod, ProductPodShimmer };\r\n","import { render } from 'react-dom';\r\nimport React from 'react';\r\nimport PreviouslyViewedProducts from '../../../../../javascript/bcom/pages/pip/pipApp/previousProducts/PreviouslyViewedProducts';\r\n\r\nexport default function previouslyViewedProducts() {\r\n  render(<PreviouslyViewedProducts />, document.getElementById('gcc-prvprodmount'));\r\n}\r\n","import React, { PureComponent } from 'react';\r\nimport MediaQuery from 'react-responsive';\r\nimport { fetchProducts } from './previousProductsUtil';\r\nimport PreviousProductsDesktop from './PreviousProductsDesktop';\r\nimport PreviousProductsMobile from './PreviousProductsMobile';\r\nimport NoPreviousProducts from './NoPreviousProducts';\r\n\r\nclass PreviouslyViewedProducts extends PureComponent {\r\n  constructor() {\r\n    super();\r\n    this.state = {\r\n      currentPage: 1,\r\n      isLoading: true,\r\n      pageSize: 5,\r\n      products: [],\r\n      totalPages: 3,\r\n    };\r\n\r\n    this.handlePageTransition = this.handlePageTransition.bind(this);\r\n    this.hasNext = this.hasNext.bind(this);\r\n    this.hasPrevious = this.hasPrevious.bind(this);\r\n  }\r\n\r\n  async componentDidMount() {\r\n    const products = await fetchProducts();\r\n    this.initializeComponent(products);\r\n  }\r\n\r\n  async initializeComponent(products) {\r\n    const totalItems = products.length;\r\n    const totalPages = Math.ceil(totalItems / 5);\r\n\r\n    if (Array.isArray(products)) this.setState({ products });\r\n\r\n    this.setState({ totalPages, isLoading: false });\r\n  }\r\n\r\n  hasNext() {\r\n    const { currentPage, totalPages } = this.state;\r\n    return currentPage < totalPages;\r\n  }\r\n\r\n  hasPrevious() {\r\n    return this.state.currentPage > 1;\r\n  }\r\n\r\n  handlePageTransition(shouldTransition, nextPage) {\r\n    if (shouldTransition()) this.setState({ currentPage: nextPage });\r\n  }\r\n\r\n  render() {\r\n    const { isLoading, products, currentPage, pageSize } = this.state;\r\n    const startIndex = (currentPage - 1) * pageSize;\r\n    const endIndex = (currentPage - 1) * pageSize + pageSize;\r\n\r\n    if (products.length > 0) {\r\n      return (\r\n        <div>\r\n          <MediaQuery minDeviceWidth={1224}>\r\n            <PreviousProductsDesktop\r\n              hasNext={this.hasNext}\r\n              hasPrevious={this.hasPrevious}\r\n              isLoading={isLoading}\r\n              products={products.slice(startIndex, endIndex)}\r\n              onNext={() => this.handlePageTransition(this.hasNext, currentPage + 1)}\r\n              onPrevious={() => this.handlePageTransition(this.hasPrevious, currentPage - 1)}\r\n            />\r\n          </MediaQuery>\r\n          <MediaQuery maxDeviceWidth={1224}>\r\n            <PreviousProductsMobile\r\n              hasNext={this.hasNext}\r\n              isLoading={this.state.isLoading}\r\n              products={products.slice(0, endIndex)}\r\n              onNext={() => this.handlePageTransition(this.hasNext, currentPage + 1)}\r\n            />\r\n          </MediaQuery>\r\n        </div>\r\n      );\r\n    }\r\n    return <NoPreviousProducts isLoading={isLoading} />;\r\n  }\r\n}\r\n\r\nexport default PreviouslyViewedProducts;\r\n","import axios from 'axios';\r\nimport store from 'store';\r\n\r\nconst productKey = 'viewed-products-3';\r\nconst previousProductsMaxCount = 19;\r\n\r\nconst getLocalStorageProducts = () => store.get(productKey) || [];\r\n\r\nconst fetchProducts = async () => {\r\n  const localStorageProducts = getLocalStorageProducts();\r\n  if (localStorageProducts.length === 0) {\r\n    return [];\r\n  }\r\n  const products = await axios.post('/Catalog/PreviousViewedProduct/Get', localStorageProducts);\r\n  return products.data;\r\n};\r\n\r\nconst updateLocalStorage = (products) => store.set(productKey, products);\r\n\r\nconst updatePreviousProducts = async (product) => {\r\n  const previousProducts = await getLocalStorageProducts();\r\n  let oldProducts = previousProducts.filter((p) => product.productId !== p.productId);\r\n\r\n  oldProducts = oldProducts.slice(0, previousProductsMaxCount);\r\n\r\n  const newProducts = [product].concat(oldProducts);\r\n\r\n  updateLocalStorage(newProducts);\r\n};\r\n\r\nmodule.exports = {\r\n  fetchProducts,\r\n  updatePreviousProducts,\r\n};\r\n","import React from 'react';\r\nimport { bool, arrayOf, shape, func } from 'prop-types';\r\nimport { ProductPod } from '../../../../components/ProductPod/ProductPod';\r\n\r\nconst PreviousProductsDesktop = (props) => (\r\n  <section\r\n    className=\"gcc-prvprod cf relative mw9 center\"\r\n    style={{ minHeight: '355px' }}\r\n    id=\"prev viewed product carousel\"\r\n  >\r\n    <div\r\n      className=\"absolute left-0 right-0 center tc pa3 z-3 bg-light-gray br4 near-black b\"\r\n      style={{ display: props.isLoading ? 'block' : 'none', top: '50%', width: '200px' }}\r\n    >\r\n      Loading Products...\r\n    </div>\r\n    {!props.isLoading && (\r\n      <div\r\n        role=\"button\"\r\n        tabIndex={0}\r\n        onClick={props.onPrevious}\r\n        className={`pointer f2 absolute left-0 top-0 bottom-0 flex items-center ${\r\n          props.hasPrevious() ? 'black' : 'gray'\r\n        }`}\r\n      >\r\n        <span className=\"bdc-font bdc-font-arrow-left\" />\r\n      </div>\r\n    )}\r\n    <h2 className=\"f4 f3-ns w-100 tc mv4\">Previously Viewed Products</h2>\r\n    <div className={`flex justify-center w-100 ${props.isLoading ? 'o-20' : ''}`}>\r\n      {props.products && props.products.map((product) => <ProductPod key={product.ProductId} product={product} />)}\r\n    </div>\r\n    {!props.isLoading && (\r\n      <div\r\n        role=\"button\"\r\n        tabIndex={0}\r\n        onClick={props.onNext}\r\n        className={`pointer f2 absolute right-0 top-0 bottom-0 flex items-center ${props.hasNext() ? 'black' : 'gray'}`}\r\n      >\r\n        <span className=\"bdc-font bdc-font-arrow-right\" />\r\n      </div>\r\n    )}\r\n  </section>\r\n);\r\n\r\nPreviousProductsDesktop.propTypes = {\r\n  isLoading: bool.isRequired,\r\n  products: arrayOf(shape({})).isRequired,\r\n  hasNext: func.isRequired,\r\n  hasPrevious: func.isRequired,\r\n  onPrevious: func.isRequired,\r\n  onNext: func.isRequired,\r\n};\r\n\r\nexport default PreviousProductsDesktop;\r\n","import React from 'react';\r\nimport { number, oneOfType, string } from 'prop-types';\r\n\r\nconst Shimmer = (props) => {\r\n  const { height, width, className } = props;\r\n  const cls = `gradient ${className}`;\r\n  return (\r\n    <div className={cls} style={{ height, width }}>\r\n      <style>\r\n        {`\r\n          .gradient {\r\n            background: linear-gradient(90deg, #a6a6a6, #f9f8f8, #a6a6a6);\r\n            background-size: 200% 200%;\r\n\r\n            -webkit-animation: Animation 5s ease infinite;\r\n            -moz-animation: Animation 5s ease infinite;\r\n            animation: Animation 5s ease infinite;\r\n          }\r\n\r\n          @-webkit-keyframes Animation {\r\n            0% {\r\n              background-position: 10% 0%;\r\n            }\r\n            50% {\r\n              background-position: 91% 100%;\r\n            }\r\n            100% {\r\n              background-position: 10% 0%;\r\n            }\r\n          }\r\n          @-moz-keyframes Animation {\r\n            0% {\r\n              background-position: 10% 0%;\r\n            }\r\n            50% {\r\n              background-position: 91% 100%;\r\n            }\r\n            100% {\r\n              background-position: 10% 0%;\r\n            }\r\n          }\r\n          @keyframes Animation {\r\n            0% {\r\n              background-position: 10% 0%;\r\n            }\r\n            50% {\r\n              background-position: 91% 100%;\r\n            }\r\n            100% {\r\n              background-position: 10% 0%;\r\n            }\r\n          }\r\n        `}\r\n      </style>\r\n    </div>\r\n  );\r\n};\r\n\r\nShimmer.propTypes = {\r\n  height: oneOfType([number, string]).isRequired,\r\n  width: oneOfType([number, string]).isRequired,\r\n  className: string.isRequired,\r\n};\r\n\r\nexport default Shimmer;\r\n","import React from 'react';\r\nimport { func, bool, arrayOf, shape } from 'prop-types';\r\nimport { ProductPod } from '../../../../components/ProductPod/ProductPod';\r\n\r\nconst PreviousProductsMobile = (props) => (\r\n  <section className=\"gcc-prvprod cf relative\" style={{ minHeight: '355px' }} id=\"prev viewed product carousel\">\r\n    <div\r\n      className=\"absolute left-0 right-0 center tc pa3 z-3 bg-light-gray br4 near-black b\"\r\n      style={{ display: props.isLoading ? 'block' : 'none', top: '50%', width: '200px' }}\r\n    >\r\n      Loading Products...\r\n    </div>\r\n    <h2 className=\"f4 f3-ns w-100 tc mv4\">Previously Viewed Products</h2>\r\n    <div className=\"flex overflow-x-scroll momentum pb2\">\r\n      {props.products && props.products.map((product) => <ProductPod key={product.ProductId} product={product} />)}\r\n      {props.hasNext() && (\r\n        <div className=\"pr3 flex items-center\">\r\n          <div\r\n            role=\"button\"\r\n            tabIndex={0}\r\n            onClick={props.onNext}\r\n            className=\"gcc-btn gcc-btn-outline gcc-btn-primary-outline nowrap\"\r\n          >\r\n            Load more\r\n          </div>\r\n        </div>\r\n      )}\r\n    </div>\r\n  </section>\r\n);\r\n\r\nPreviousProductsMobile.propTypes = {\r\n  hasNext: func.isRequired,\r\n  isLoading: bool.isRequired,\r\n  products: arrayOf(shape({})).isRequired,\r\n  onNext: func.isRequired,\r\n};\r\n\r\nexport default PreviousProductsMobile;\r\n","import React from 'react';\r\nimport { bool } from 'prop-types';\r\n\r\nconst PreviousProductsDesktop = (props) => (\r\n  <section\r\n    className=\"gcc-prvprod cf relative mw9 center\"\r\n    style={{ minHeight: '355px' }}\r\n    id=\"prev viewed product carousel\"\r\n  >\r\n    <h2 className=\"f4 f3-ns w-100 tc mv4\">Previously Viewed Products</h2>\r\n    {!props.isLoading && (\r\n      <div className=\"flex flex-column items-center w-100\">\r\n        <p className=\"b tc mt4\">Looks like you don&apos;t have any previously viewed products.</p>\r\n        <p className=\"mv2 tc\">Why don&apos;t you checkout our latest sales?</p>\r\n        <a className=\"gcc-btn gcc-btn-secondary mv3\" href=\"/sale\">\r\n          View Our Latest Sales\r\n        </a>\r\n      </div>\r\n    )}\r\n  </section>\r\n);\r\n\r\nPreviousProductsDesktop.propTypes = {\r\n  isLoading: bool.isRequired,\r\n};\r\n\r\nexport default PreviousProductsDesktop;\r\n"],"sourceRoot":""}