{"version":3,"file":"static/chunks/5176.4191033bd4f78a00.js","mappings":"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","sources":["webpack://_N_E/./components/applications/pip/components/DynamicPrice/index.jsx","webpack://_N_E/./components/icons/IconOffer.jsx","webpack://_N_E/./thirdparty/Affirm/index.jsx","webpack://_N_E/./components/applications/pip/components/DynamicPrice/DynamicPrice.module.scss"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport PropTypes from 'prop-types';\nimport ProductPrice from 'components/product/ProductPrice';\nimport { useContext, useEffect, useMemo, useState } from \"react\";\nimport { ProductOptionContext } from \"components/applications/pip/contexts/ProductOptionContext\";\nimport { calculateSetUpCharges, calculateUpCharges, getTradePrice } from 'components/applications/pip/helpers/PIP.helpers';\nimport Affirm from 'thirdparty/Affirm';\nimport { IconOffer } from 'components/icons/IconOffer';\nimport Style from './DynamicPrice.module.scss';\n\n\nfunction DynamicPrice({ \n productData, \n qty, \n showAffirm, \n onlyPrice = false, \n showWasPrice = true,\n isTrade \n}){\n const [ state, dispatch ] = useContext(ProductOptionContext);\n const [ price, setPrice ] = useState(0);\n\n\n useEffect(() => {\n dispatch({\n type: \"setPrice\",\n data: price\n })\n\n }, [ price ])\n\n\n\n useEffect(() => {\n const total = productData?.price * qty;\n\n if( isTrade ){\n const tradePrice = getTradePrice(total, productData?.custom_fields?.trade_discount)\n setPrice(tradePrice)\n\n }else if( !Object.values(state.sets).length && !Object.values(state?.options).length ){ \n setPrice(total)\n }\n\n }, [ qty ])\n\n\n\n\n // for regular products\n useEffect(() => {\n const optionValues = Object.values(state?.options);\n\n if( optionValues.length ){\n const totalUpCharges = calculateUpCharges({ \n qty, \n options: optionValues,\n price: productData?.price\n })\n\n if( isTrade ){\n const tradePrice = getTradePrice(totalUpCharges, productData?.custom_fields?.trade_discount)\n setPrice(tradePrice)\n\n }else{\n setPrice(totalUpCharges)\n }\n }\n\n }, [ state?.options, qty, productData?.price, isTrade])\n\n\n\n // for sets\n useEffect(() => {\n\n // when we have both the products object and set product_id keys\n // if( state?.sets.hasOwnProperty(\"products\") && Object.keys(state?.sets).some(set => !isNaN(set)) ){ \n \n if( state?.sets.hasOwnProperty(\"products\") ){ \n const totalUpCharges = calculateSetUpCharges({\n qty,\n sets: { ...state.sets },\n excludeGlobal: productData?.product_id.toString()\n });\n\n if( isTrade ){\n const tradePrice = getTradePrice(totalUpCharges, productData?.custom_fields?.trade_discount)\n setPrice(tradePrice)\n\n }else{\n setPrice(totalUpCharges)\n }\n }\n \n\n }, [\n state.sets,\n qty,\n isTrade\n ])\n\n\n const hasFreeShippingIcon = useMemo(() => {\n return productData?.custom_fields?.free_shipping_icon === \"Yes\" || \n (productData?.custom_fields?.free_shipping_icon && productData?.custom_fields?.free_shipping_icon !== \"No\")\n\n }, [ productData?.custom_fields?.free_shipping_icon ])\n\n\n return(\n <>\n {onlyPrice ? \n \n :\n <>\n
\n \n\n {(productData?.custom_fields?.minimum_order_qty_per_unit && qty === 1 ) && (\n \n /per {productData?.custom_fields?.minimum_order_qty_per_unit}\n  — with a {productData?.minimum_qty} {productData?.custom_fields?.minimum_order_qty_per_unit} minimum purchase\n \n )}\n\n {!productData?.custom_fields?.minimum_order_qty_per_unit && (\n \n {(isTrade && productData?.custom_fields?.trade_discount) ? (\n \n \n \n {productData?.custom_fields?.trade_discount !== \"0\" ? (\n \n {productData?.custom_fields?.trade_discount}\n {!productData?.custom_fields?.trade_discount.toLowerCase().includes(\"not eligible\") && \"% Trade Discount Applied\"}\n \n ):(\n Not eligible for trade pricing\n )}\n \n \n ):\n \n {(hasFreeShippingIcon && !isTrade) && ( \" with Free Shipping\" )}\n \n } \n\n \n )}\n
\n \n\n {showAffirm && (\n \n )}\n \n }\n \n )\n}\n\n\nDynamicPrice.propTypes = {\n productData: PropTypes.object,\n qty: PropTypes.number,\n showAffirm: PropTypes.bool,\n isProductSet: PropTypes.bool,\n onlyPrice: PropTypes.bool\n}\n\n\nexport default DynamicPrice;","\nexport function IconOffer(props){\n return(\n \n \n \n )\n}","\"use client\"\n\nimport Script from \"next/script\";\nimport clsx from \"clsx\";\nimport utils from 'styles/globals/utils.module.scss';\nimport { useEffect, useRef, useState } from \"react\";\n\n\nfunction Affirm({ price, pageType = \"product\" }){\n const affirmRef = useRef()\n const [ hasAd, setAd ] = useState(false)\n\n\n useEffect(() => {\n if( affirmRef?.current?.offsetHeight ){\n setAd(true)\n }\n\n try{\n window.affirm.ui.ready(function(){\n window.affirm.ui.refresh();\n });\n \n }catch(err){}\n \n\n }, [affirmRef.current?.offsetHeight])\n\n\n return(\n <> \n \n \n \n \n )\n}\n\nexport default Affirm;","// extracted by mini-css-extract-plugin\nmodule.exports = {\"block\":\"DynamicPrice_block__V_A_w\",\"price\":\"DynamicPrice_price__6jQV_\",\"promoText\":\"DynamicPrice_promoText__SAf_A\",\"icon\":\"DynamicPrice_icon__ZT8i1\",\"subLine\":\"DynamicPrice_subLine__phXTZ\"};"],"names":["DynamicPrice","productData","qty","showAffirm","onlyPrice","showWasPrice","isTrade","state","dispatch","useContext","ProductOptionContext","price","setPrice","useState","useEffect","type","data","total","getTradePrice","custom_fields","trade_discount","Object","values","sets","length","options","optionValues","totalUpCharges","calculateUpCharges","tradePrice","hasOwnProperty","calculateSetUpCharges","excludeGlobal","product_id","toString","hasFreeShippingIcon","useMemo","free_shipping_icon","ProductPrice","className","Style","rrp","retail_price","div","isUpdating","minimum_order_qty_per_unit","small","em","minimum_qty","span","IconOffer","width","height","strong","toLowerCase","includes","Affirm","propTypes","PropTypes","props","svg","xmlSpace","viewBox","aria-label","path","d","pageType","affirmRef","useRef","hasAd","setAd","current","offsetHeight","window","affirm","ui","ready","refresh","err","clsx","utils","data-amount","data-page-type","ref","Script","id","strategy"],"sourceRoot":"","ignoreList":[]}