{"version":3,"file":"chunks/8f36754a5aadcf.js","mappings":";opBACA,8hGAAAA,GAAA,wBAAAA,EAAA,sBAAAA,GAAA,iBAAAA,GAAA,0oDAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,4bAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,yhBAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,qGAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,6zCAGA,IACMC,EAAS,SAAAC,GAAU,MACvB,CACE,qBACA,gBACA,QACA,cACA,gBACAC,KAAI,SAAAC,GAAG,OAAIF,EAAWG,cAAX,UARI,uBAQJ,OAAyCD,QAElDE,EAAuB,SAACC,EAAQC,EAAUC,GAAnB,OAC1BF,EAAOG,UAAYD,EAAaE,QAC/B,SAACC,EAAD,OAAWC,EAAX,EAAWA,eAAgBC,EAA3B,EAA2BA,eAAgBC,EAA3C,EAA2CA,MAA3C,OACEH,EAAM,yBACYG,EADZ,MAAN,WAEGC,EAAAA,EAAAA,KAAiBC,EAAAA,EAAAA,IAAmBJ,EAAgBC,IAFvD,YAE2EN,GAF3E,cAIF,KAGEU,EAAS,gCAAG,WAAOC,EAASC,EAASC,EAAiBC,GAA1C,4GAOZrB,EAAOkB,GAPK,SAEdI,EAFc,KAGdC,EAHc,KAIdC,EAJc,KAKdC,EALc,KAMdC,EANc,cAS6BP,EAT7B,gBASRQ,EATQ,EASRA,aAAcnB,EATN,EASMA,aATN,EAUWa,EAAUO,MAAM,KAAK1B,KAAI,SAAA2B,GAAC,OAAIC,SAASD,MAVlD,SAUXE,EAVW,KAUAC,EAVA,KAWVC,EAAWzB,EAAauB,GAE9B,CAACT,EAAWI,GAAeQ,SACzB,SAAAC,GAAE,OAAKA,EAAGC,WAAYC,EAAAA,EAAAA,IAAsBJ,EAAUE,EAAGC,cAG3Db,EAAea,UAAYT,EAC3BH,EAAQY,WAAYrB,EAAAA,EAAAA,IAAiBkB,EAASnB,OAE9CT,EACEoB,EACAL,EACAZ,EAAa8B,MAAMP,EAAWC,IAGhCP,EAAac,iBACX,UACA,YAA2B,IAAdC,EAAc,EAAxBC,OAAUD,MACXE,EAAAA,EAAAA,WAAoB,gCAAiC,CACnDC,sBAAuBC,OAAOnB,EAAaoB,gBAAgB,GAAGT,UAAUU,QAAQ,SAAU,KAC1FC,cAAeH,OAAOJ,GACtBb,aAAcA,EACdqB,eAAgB,8BAChBC,eAAgB,6BAElBzB,EAAQY,WAAYrB,EAAAA,EAAAA,IAAiByB,MAIzCtB,EAAQgC,UAAUC,OAAO,WAxCT,0NAAH,4DA2CMC,EAAAA,GACnB,WAAYlC,EAAZ,GAA8D,IAAvCC,EAAuC,EAAvCA,QAASC,EAA8B,EAA9BA,gBAAiBC,EAAa,EAAbA,uGAAa,SAC5DJ,EAAUC,EAASC,EAASC,EAAiBC,mLCnEjD,IAAMgC,EAAwB,MAExBC,EAA0B,CAC9BC,WAAY,aACZC,WAAY,cAGDnB,EAAwB,SAAC,EAEpCoB,GACG,QACH,KAAiC,CAD9B,EAFD7C,eAEC,EAFeC,gBAGgDX,KAChE,SAACwD,GAAD,OAAc3C,EAAAA,EAAAA,IAAiB2C,QADjC,g0BAAOH,EAAP,KAAmBC,EAAnB,KAIA,OAAOG,EAAAA,EAAAA,IACL,CAAEJ,WAAAA,EAAYC,WAAAA,GACdC,EACAH,IAIStC,EAAqB,SAACJ,EAAgBC,GACjD,OAAOA,GAAc,UAAuBD,EAAvB,MAKVgD,EAAc,SAAC9C,GAAD,IAAQa,EAAR,uDAAuB0B,EAAvB,OACzB1B,IAAiB0B,GACP,IAAVvC,IACCA,EAAQ,GAAM,GAAKA,EA9BG,IA+BnBA,EAAM+C,QAAQ,GACd/C","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 =>\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, 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, { 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","REPLACE_TIER_LIMITS_MAP","lowerLimit","upperLimit","inputText","limitVal","replaceText","formatPrice","toFixed"],"sourceRoot":""}