{"version":3,"file":"chunks/3abc400683094f.js","mappings":"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","sources":["webpack:///./resources/js/components/generic/price-block-dropdown-localized.ts","webpack:///./resources/js/components/generic/pricing-utils.ts"],"sourcesContent":["import { getStrWithCommas } from \"../../utils/string\";\nimport { replaceTierLimitsText, sanitizeUpperLimit } from \"./pricing-utils\";\nimport tracking from '../../utils/tracking';\n\nconst CLS_PREFIX = \".localized_pricing_\";\nconst getEls = (parentNode: HTMLElement) =>\n [\n \"heading > .heading\",\n \"currency_code\",\n \"price\",\n \"tier_select\",\n \"primary_text\"\n ].map(sel => parentNode.querySelector(`${CLS_PREFIX}${sel}`));\n\nconst populateTierSelector = (tierEl, unitDesc, pricingTiers) =>\n (tierEl.innerHTML = pricingTiers.reduce(\n (domStr, { unitLimitLower, unitLimitUpper, price }) =>\n domStr +\n ``,\n \"\"\n ));\n\nconst onPricing = async (domRoot: HTMLElement, pricing, unitDescription, tierRange) => {\n const [\n headingEl,\n currencyCodeEl,\n priceEl,\n tierSelectEl,\n primaryTextEl\n ] = getEls(domRoot);\n\n const { currencyCode, pricingTiers } = await pricing;\n let [startTier, endTier] = tierRange.split(\"-\").map(t => parseInt(t));\n const initTier = pricingTiers[startTier];\n\n [headingEl, primaryTextEl].forEach(\n el => (el.innerText = replaceTierLimitsText(initTier, el.innerText))\n );\n\n currencyCodeEl.innerText = currencyCode;\n priceEl.innerText = getStrWithCommas(initTier.price);\n\n populateTierSelector(\n tierSelectEl,\n unitDescription,\n pricingTiers.slice(startTier, endTier)\n );\n\n tierSelectEl.addEventListener(\n \"change\",\n ({ target: { value } }) => {\n tracking.trackEvent('datacenter_page_user_tier_box', {\n numberOfUsersSelected: Number(tierSelectEl.selectedOptions[0].innerText.replace(/[^\\d]/g, '')),\n priceSelected: Number(value),\n currencyCode: currencyCode,\n eventContainer: 'priceBlockDropdownLocalized',\n eventComponent: 'priceBlockDropdownSelect'\n });\n priceEl.innerText = getStrWithCommas(value)\n }\n );\n\n domRoot.classList.remove(\"loading\");\n};\n\nexport default class PriceBlockDropdownLocalized {\n constructor(domRoot: HTMLElement, { pricing, unitDescription, tierRange }) {\n onPricing(domRoot, pricing, unitDescription, tierRange);\n }\n}\n","import { getStrWithCommas, replaceText } from \"../../utils/string\";\n\nconst DEFAULT_CURRENCY_CODE = \"USD\";\nconst FORMAT_MAX_PRICE = 10;\nconst REPLACE_TIER_LIMITS_MAP = {\n lowerLimit: \"lowerLimit\",\n upperLimit: \"upperlimit\",\n};\n\nexport const replaceTierLimitsText = (\n { unitLimitLower, unitLimitUpper },\n inputText\n) => {\n const [lowerLimit, upperLimit] = [unitLimitLower, unitLimitUpper].map(\n (limitVal) => getStrWithCommas(limitVal)\n );\n\n return replaceText(\n { lowerLimit, upperLimit },\n inputText,\n REPLACE_TIER_LIMITS_MAP\n );\n};\n\nexport const sanitizeUpperLimit = (unitLimitLower, unitLimitUpper) => {\n return unitLimitUpper ? unitLimitUpper : `${unitLimitLower}+`;\n};\n\n// show 2 decimal places in price if USD, not zero, and:\n// either a fractional amount or under $10\nexport const formatPrice = (price, currencyCode = DEFAULT_CURRENCY_CODE) =>\n currencyCode === DEFAULT_CURRENCY_CODE &&\n price !== 0 &&\n (price % 1 !== 0 || price < FORMAT_MAX_PRICE)\n ? price.toFixed(2)\n : price;\n"],"names":["i","getEls","parentNode","map","sel","querySelector","populateTierSelector","tierEl","unitDesc","pricingTiers","innerHTML","reduce","domStr","unitLimitLower","unitLimitUpper","price","getStrWithCommas","sanitizeUpperLimit","onPricing","domRoot","pricing","unitDescription","tierRange","headingEl","currencyCodeEl","priceEl","tierSelectEl","primaryTextEl","currencyCode","split","t","parseInt","startTier","endTier","initTier","forEach","el","innerText","replaceTierLimitsText","slice","addEventListener","value","target","tracking","numberOfUsersSelected","Number","selectedOptions","replace","priceSelected","eventContainer","eventComponent","classList","remove","PriceBlockDropdownLocalized","DEFAULT_CURRENCY_CODE","FORMAT_MAX_PRICE","REPLACE_TIER_LIMITS_MAP","lowerLimit","upperLimit","inputText","limitVal","replaceText","formatPrice","toFixed"],"sourceRoot":""}