{"version":3,"file":"productPrices.1d1012ee04da82f9faad.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
\r\n \r\n
\r\n
\r\n \r\n {getPrimaryPriceWording()}\r\n {'GBP'}\r\n \r\n {formatCurrency(\r\n product.pricingInfo.primaryPrice.value,\r\n transactionalCurrency\r\n )}\r\n \r\n {!showSecondaryPrice && (\r\n \r\n {product.pricingInfo.primaryPriceText}\r\n \r\n )}\r\n
\r\n {showSecondaryPrice && (\r\n
\r\n {'GBP'}\r\n \r\n {formatCurrency(\r\n product.pricingInfo.secondaryPrice.value,\r\n transactionalCurrency\r\n )}\r\n {' '}\r\n \r\n {product.pricingInfo.secondaryPriceText}\r\n \r\n
\r\n )}\r\n
\r\n
\r\n {displayWasPrice && (\r\n
\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 \r\n {product.pricingInfo.primaryPriceText}\r\n \r\n )}\r\n
\r\n )}\r\n {product.pricingInfo.primarySavings > 0 && (\r\n \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 \r\n )}\r\n
\r\n
\r\n {!product.directDelivery && product.stockInfo && (\r\n \r\n )}\r\n \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 \r\n Your contract price\r\n \r\n );\r\n } else if (isHeaderDiscounted) {\r\n return (\r\n \r\n Your discount price\r\n \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 \r\n Out of stock\r\n \r\n\r\n {stockInfo.isDelayedStock && showMessages && (\r\n

\r\n \r\n {' '}\r\n {stockInfo.expectedBackInStockMessage}\r\n \r\n

\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

\r\n \r\n {' '}\r\n {stockInfo.thirdPartyDirectDeliveryMessage}\r\n \r\n

\r\n )}\r\n \r\n );\r\n };\r\n\r\n const preOrder = () => {\r\n return (\r\n <>\r\n \r\n Pre-order\r\n \r\n {showMessages && (\r\n

\r\n Order now, delivery expected in\r\n \r\n {' '}\r\n {preOrderDateFormatted}\r\n \r\n

\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
\r\n
\r\n {stockInfo.isInStock && (\r\n
\r\n In stock\r\n {stockInfo.inStockDeliveryMessage !== '' &&\r\n !suppressStockDeliveryMessage &&\r\n !isRestricted &&\r\n !isThirdPartyDDelivery && (\r\n \r\n {' - '}\r\n {stockInfo.inStockDeliveryMessage}\r\n \r\n )}\r\n
\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
{delayedStock()}
\r\n )}\r\n {stockInfo.isInStock && isThirdPartyDDelivery && (\r\n
\r\n {delayedStockThirdParty()}\r\n
\r\n )}\r\n
\r\n
\r\n )}\r\n {stockInfo.isStockRelevant && !singleLine && stockInfo?.isPreOrder && (\r\n
\r\n
{preOrder()}
\r\n
\r\n )}\r\n {stockInfo.isStockRelevant && singleLine && stockInfo?.isPreOrder && (\r\n
\r\n
\r\n
{preOrder()}
\r\n
\r\n
\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":""}