{"version":3,"file":"productPrices.c37888c35f377c87070f.js","sources":["webpack:///./Source/FECOM.Web.UI/Scripts/apps/product/components/ProductPrices.tsx","webpack:///./Source/FECOM.Web.UI/Scripts/components/CustomerDiscountText.tsx","webpack:///./Source/FECOM.Web.UI/Scripts/components/StockIndicator.tsx","webpack:///./Source/FECOM.Web.UI/Scripts/utilities/displayProductWasPrice.ts","webpack:///./node_modules/moment/locale sync en-gb"],"sourcesContent":["import { CustomerDiscountText } from '../../../components/CustomerDiscountText';\r\nimport StockIndicator from '../../../components/StockIndicator';\r\nimport {\r\n  PriceBreak,\r\n  ProductViewModel,\r\n  TransactionalCurrency,\r\n  Website\r\n} from '../../../types/generated';\r\nimport { displayProductWasPrice } from '../../../utilities/displayProductWasPrice';\r\nimport formatCurrency from '../../../utilities/formatCurrency';\r\n\r\nexport interface ProductPricesProps {\r\n  transactionalCurrency: TransactionalCurrency;\r\n  product: ProductViewModel;\r\n  isAdded: boolean;\r\n  showSecondaryPrice: boolean;\r\n  priceBreak: PriceBreak | undefined;\r\n  website: Website;\r\n}\r\n\r\nexport function ProductPrices({\r\n  transactionalCurrency,\r\n  product,\r\n  showSecondaryPrice\r\n}: ProductPricesProps) {\r\n  const displayWasPrice = displayProductWasPrice(\r\n    product.isContractPrice,\r\n    showSecondaryPrice,\r\n    product.pricingInfo\r\n  );\r\n\r\n  function getPrimaryPriceWording() {\r\n    if (displayWasPrice) {\r\n      if (product.isVariant) {\r\n        return 'NOW from ';\r\n      }\r\n      return 'NOW ';\r\n    } else if (product.isVariant) {\r\n      return 'From ';\r\n    }\r\n  }\r\n\r\n  return (\r\n    <div className=\"product-details\">\r\n      <CustomerDiscountText\r\n        isVariant={product.isVariant}\r\n        isContractPrice={product.isContractPrice}\r\n        isHeaderDiscounted={product.isHeaderDiscounted}\r\n        styleModifier={'--pdp'}\r\n      />\r\n      <div className=\"product-details__prices mb-2\">\r\n        <div className=\"product-details__price\">\r\n          <div\r\n            className={`product-price product-price--primary ${\r\n              displayWasPrice ? 'product-price product-price--primary-now' : ''\r\n            }`}\r\n          >\r\n            {getPrimaryPriceWording()}\r\n            <span className=\"d-none\">{'GBP'}</span>\r\n            <span className=\"product-price--primary-value\">\r\n              {formatCurrency(\r\n                product.pricingInfo.primaryPrice.value,\r\n                transactionalCurrency\r\n              )}\r\n            </span>\r\n            {!showSecondaryPrice && (\r\n              <span className=\"price-primary-text\">\r\n                {product.pricingInfo.primaryPriceText}\r\n              </span>\r\n            )}\r\n          </div>\r\n          {showSecondaryPrice && (\r\n            <div className={`product-price product-price--secondary`}>\r\n              <span className=\"d-none\">{'GBP'}</span>\r\n              <span>\r\n                {formatCurrency(\r\n                  product.pricingInfo.secondaryPrice.value,\r\n                  transactionalCurrency\r\n                )}\r\n              </span>{' '}\r\n              <span className=\"price-secondary-text\">\r\n                {product.pricingInfo.secondaryPriceText}\r\n              </span>\r\n            </div>\r\n          )}\r\n        </div>\r\n        <div className=\"product-details__price--additonal-details\">\r\n          {displayWasPrice && (\r\n            <div className=\"product-price product-price__was-price\">\r\n              Was{' '}\r\n              {`${product.isVariant ? 'from' : ''} ${formatCurrency(\r\n                product.pricingInfo.primaryWasPrice.value,\r\n                transactionalCurrency\r\n              )}`}\r\n              {!showSecondaryPrice && (\r\n                <span className=\"price-primary-text\">\r\n                  {product.pricingInfo.primaryPriceText}\r\n                </span>\r\n              )}\r\n            </div>\r\n          )}\r\n          {product.pricingInfo.primarySavings > 0 && (\r\n            <span className=\"savings\">\r\n              {product.isVariant || product.hasPriceBreak\r\n                ? 'Savings from '\r\n                : 'Save '}\r\n              {formatCurrency(\r\n                product.pricingInfo.primarySavings,\r\n                transactionalCurrency\r\n              )}\r\n            </span>\r\n          )}\r\n        </div>\r\n      </div>\r\n      {!product.directDelivery && product.stockInfo && (\r\n        <StockIndicator\r\n          stockInfo={product.stockInfo}\r\n          showMessages={true}\r\n          supplierID={product.supplierID}\r\n          isThirdPartyDDelivery={product.isThirdPartyDDelivery}\r\n          isRestricted={product.isRestricted}\r\n        />\r\n      )}\r\n    </div>\r\n  );\r\n}\r\n","export interface CustomerDiscountTextProps {\r\n  isVariant: boolean;\r\n  isContractPrice: boolean;\r\n  isHeaderDiscounted: boolean;\r\n  styleModifier: string | undefined;\r\n}\r\n\r\nexport function CustomerDiscountText({\r\n  isVariant,\r\n  isContractPrice,\r\n  isHeaderDiscounted,\r\n  styleModifier\r\n}: CustomerDiscountTextProps) {\r\n  const renderDiscountText = () => {\r\n    if (!isVariant) {\r\n      if (isContractPrice) {\r\n        return (\r\n          <div\r\n            className={`contract-list-item contract-list-item${styleModifier}`}\r\n          >\r\n            Your contract price\r\n          </div>\r\n        );\r\n      } else if (isHeaderDiscounted) {\r\n        return (\r\n          <div\r\n            className={`contract-list-item contract-list-item${styleModifier}`}\r\n          >\r\n            Your discount price\r\n          </div>\r\n        );\r\n      }\r\n    }\r\n  };\r\n  return <>{renderDiscountText()}</>;\r\n}\r\n","import { StockInfo, Supplier } from '../types/generated';\r\nimport moment from 'moment';\r\nimport classNames from 'classnames';\r\n\r\ninterface StockIndicatorProps {\r\n  stockInfo: StockInfo;\r\n  showMessages?: boolean;\r\n  singleLine?: boolean;\r\n  supplierID: number;\r\n  isThirdPartyDDelivery?: boolean | null;\r\n  isRestricted?: boolean | null;\r\n  suppressStockDeliveryMessage?: boolean | null;\r\n}\r\n\r\nconst StockIndicator = ({\r\n  stockInfo,\r\n  showMessages,\r\n  singleLine,\r\n  supplierID,\r\n  isThirdPartyDDelivery,\r\n  isRestricted,\r\n  suppressStockDeliveryMessage = false\r\n}: StockIndicatorProps) => {\r\n  const preOrderDateFormatted = moment(stockInfo?.preOrderDate).format(\r\n    'MMMM YYYY'\r\n  );\r\n\r\n  const outOfStockCssSuffix = stockInfo.isOutOfStock ? 'out' : 'delayed';\r\n\r\n  const singleLineClass = classNames({\r\n    'd-flex flex-column': singleLine\r\n  });\r\n\r\n  const customPadding = singleLine ? ' pr-1' : '';\r\n  const delayedStock = () => {\r\n    return (\r\n      <>\r\n        <div\r\n          className={`stock-indicator stock-indicator--${outOfStockCssSuffix}${customPadding}${\r\n            !singleLine && stockInfo.isDelayedStock && showMessages\r\n              ? ' flex-50'\r\n              : ''\r\n          }`}\r\n        >\r\n          Out of stock\r\n        </div>\r\n\r\n        {stockInfo.isDelayedStock && showMessages && (\r\n          <p className={`${singleLine ? 'mb-0' : 'mb-0 flex-50'}`}>\r\n            <span className=\"d-sm-block d-xl-inline\">\r\n              {' '}\r\n              {stockInfo.expectedBackInStockMessage}\r\n            </span>\r\n          </p>\r\n        )}\r\n      </>\r\n    );\r\n  };\r\n\r\n  const delayedStockThirdParty = () => {\r\n    return (\r\n      <>\r\n        {stockInfo.isInStock && isThirdPartyDDelivery && (\r\n          <p className=\"mb-0\">\r\n            <span className=\"d-sm-block d-xl-inline\">\r\n              {' '}\r\n              {stockInfo.thirdPartyDirectDeliveryMessage}\r\n            </span>\r\n          </p>\r\n        )}\r\n      </>\r\n    );\r\n  };\r\n\r\n  const preOrder = () => {\r\n    return (\r\n      <>\r\n        <div\r\n          className={`stock-indicator stock-indicator--preorder${customPadding}`}\r\n        >\r\n          Pre-order\r\n        </div>\r\n        {showMessages && (\r\n          <p className=\"mb-0\">\r\n            {': '}Order now, delivery expected in\r\n            <span className=\"d-sm-block d-xl-inline\">\r\n              {' '}\r\n              {preOrderDateFormatted}\r\n            </span>\r\n          </p>\r\n        )}\r\n      </>\r\n    );\r\n  };\r\n\r\n  return (\r\n    <>\r\n      {stockInfo.isStockRelevant &&\r\n        stockInfo?.stockLevel != null &&\r\n        !stockInfo?.isPreOrder &&\r\n        supplierID === Supplier.Findel && (\r\n          <div className=\"basket-row\">\r\n            <div className=\"basket-row__label w-100\">\r\n              {stockInfo.isInStock && (\r\n                <div className=\"stock-indicator\">\r\n                  In stock\r\n                  {stockInfo.inStockDeliveryMessage !== '' &&\r\n                    !suppressStockDeliveryMessage &&\r\n                    !isRestricted &&\r\n                    !isThirdPartyDDelivery && (\r\n                      <span>\r\n                        {' - '}\r\n                        {stockInfo.inStockDeliveryMessage}\r\n                      </span>\r\n                    )}\r\n                </div>\r\n              )}\r\n              {!singleLine &&\r\n                (stockInfo.isDelayedStock || stockInfo.isOutOfStock) && (\r\n                  <>{delayedStock()}</>\r\n                )}\r\n              {singleLine &&\r\n                (stockInfo.isDelayedStock || stockInfo.isOutOfStock) && (\r\n                  <div className={singleLineClass}>{delayedStock()}</div>\r\n                )}\r\n              {stockInfo.isInStock && isThirdPartyDDelivery && (\r\n                <div className={singleLineClass}>\r\n                  {delayedStockThirdParty()}\r\n                </div>\r\n              )}\r\n            </div>\r\n          </div>\r\n        )}\r\n      {stockInfo.isStockRelevant && !singleLine && stockInfo?.isPreOrder && (\r\n        <div className=\"basket-row\">\r\n          <div className=\"basket-row__label w-100\">{preOrder()}</div>\r\n        </div>\r\n      )}\r\n      {stockInfo.isStockRelevant && singleLine && stockInfo?.isPreOrder && (\r\n        <div className=\"basket-row\">\r\n          <div className=\"basket-row__label\">\r\n            <div className={singleLineClass}>{preOrder()}</div>\r\n          </div>\r\n        </div>\r\n      )}\r\n    </>\r\n  );\r\n};\r\n\r\nexport default StockIndicator;\r\n","import { PricingInfo } from '../types/generated';\r\n\r\nexport function displayProductWasPrice(\r\n  isContractPrice: boolean,\r\n  showSecondaryPrice: boolean,\r\n  pricingInfo: PricingInfo\r\n): boolean {\r\n  return (\r\n    !isContractPrice &&\r\n    pricingInfo.primaryWasPrice.value > 0 &&\r\n    pricingInfo.primaryWasPrice.value > pricingInfo.primaryPrice.value &&\r\n    (showSecondaryPrice\r\n      ? pricingInfo.secondaryWasPrice.value > 0 &&\r\n        pricingInfo.secondaryWasPrice.value > pricingInfo.secondaryPrice.value\r\n      : true)\r\n  );\r\n}\r\n","var map = {\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive en-gb\";"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AAOA;AACA;;;AAWA;AAIA;AAAA;AAAA;AACA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AAJA;AAMA;AAAA;AACA;AAAA;AAEA;AADA;AAMA;AAAA;AAAA;AACA;AAAA;AAAA;AAOA;AAAA;AAAA;AAdA;AAoBA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAMA;AAAA;AAAA;AARA;AArBA;AAmCA;AAAA;AAEA;AAAA;AAOA;AAAA;AAAA;AAPA;AAcA;AAAA;AAAA;AAhBA;AApCA;AAkEA;AACA;AACA;AACA;AACA;AALA;AAxEA;AAkFA;;;;;;;;;;;;;;;;;;ACtHA;AAKA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAEA;AADA;AAAA;AAMA;AACA;AAEA;AADA;AAAA;AAMA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACnCA;AACA;AACA;;;;;AAYA;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAIA;AAEA;AACA;AADA;AAIA;AACA;AAAA;AACA;AACA;AAEA;AADA;AAAA;AAWA;AAAA;AACA;AAAA;AAAA;AADA;AAZA;AAqBA;AACA;AACA;AACA;AACA;AAEA;AAAA;AACA;AAAA;AAAA;AADA;AAFA;AAWA;AACA;AACA;AACA;AACA;AAEA;AADA;AAAA;AAMA;AAAA;AAEA;AAAA;AAAA;AAFA;AAPA;AAiBA;AACA;AACA;AACA;AAKA;AAAA;AACA;AAAA;AAEA;AAAA;AAMA;AAAA;AANA;AAeA;AAAA;AAIA;AAAA;AAAA;AAGA;AAAA;AAAA;AAxBA;AADA;AAiCA;AAAA;AACA;AAAA;AAAA;AADA;AAKA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AADA;AADA;AA3CA;AAmDA;AACA;AACA;;;;;;;;;;;;ACnJA;AAAA;AAAA;AAKA;AASA;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;A","sourceRoot":""}