{"version":3,"file":"chunks/59132eabf730cc.js","mappings":"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","sources":["webpack:///./node_modules/@atlassiansox/bxpkit-pricing-rich-text/src/utils/intl.ts","webpack:///./node_modules/@atlassiansox/bxpkit-pricing-rich-text/src/pricing-rich-text.tsx","webpack:///./resources/js/react/cms-components/pricing-calculator/PricingCalculatorRichText.tsx","webpack:///./resources/js/react/cms-components/pricing-calculator/use-geo-currency.ts","webpack:///./resources/js/react/contexts/bundle-context.ts"],"sourcesContent":["import { InjectedIntl } from 'react-intl';\n\nexport type FormatCurrencyOptions = {\n readonly value: number;\n readonly currency: string;\n readonly intl: InjectedIntl;\n\n readonly minimumFractionDigits?: number;\n readonly maximumFractionDigits?: number;\n};\n\nexport function formatCurrency({\n value,\n currency,\n intl,\n minimumFractionDigits = defaultMinimumFractionDigits(value),\n maximumFractionDigits = minimumFractionDigits\n}: FormatCurrencyOptions): string {\n return intl.formatNumber(value, {\n style: 'currency',\n currency,\n minimumFractionDigits,\n maximumFractionDigits\n });\n}\n\nfunction defaultMinimumFractionDigits(value: number) {\n if (Number.isInteger(value)) {\n return 0;\n } else {\n return 2;\n }\n}\n","import { PricingPeriod } from '@atlassian/bxp-product-pricing';\nimport { usePricing } from '@atlassiansox/bxpkit-core';\nimport React, { ReactType } from 'react';\nimport {\n FormattedHTMLMessage,\n InjectedIntlProps,\n injectIntl\n} from 'react-intl';\nimport { formatCurrency } from './utils';\n\nexport type PricingRichTextProps = {\n readonly id: string;\n\n readonly productKey: string;\n readonly units: number;\n readonly period: PricingPeriod;\n readonly currencyIsoCode: string;\n\n readonly tagName?: ReactType;\n};\n\nfunction PricingRichText({\n id,\n productKey,\n units,\n period,\n currencyIsoCode,\n tagName,\n intl\n}: PricingRichTextProps & InjectedIntlProps) {\n const pricing = usePricing(productKey, units, period, currencyIsoCode);\n if (pricing.isPending) {\n return null;\n } else {\n const {\n total,\n breakdown,\n currencyIsoCode: returnedCurrencyIsoCode\n } = pricing.value;\n const { tier, unitPrice } = breakdown[breakdown.length - 1];\n const previousTier =\n breakdown.length > 1 ? breakdown[breakdown.length - 2] : null;\n const { unitLimitLower, unitLimitUpper } = tier;\n const unitLimitDifference = unitLimitUpper\n ? unitLimitUpper - (unitLimitLower || 1) + 1\n : null;\n const previousUnitLimitUpper = previousTier\n ? previousTier.tier.unitLimitUpper\n : null;\n const formattedUnitPrice = formatCurrency({\n value: unitPrice,\n currency: returnedCurrencyIsoCode,\n intl\n });\n\n return (\n \n );\n }\n}\n\nexport default injectIntl(PricingRichText);\n","import { PricingRichText } from \"@atlassiansox/bxpkit-pricing-rich-text\";\nimport { ProductPricingStoreContext } from \"@atlassiansox/bxpkit-product-pricing-store\";\nimport React from \"react\";\nimport { IntlProvider } from \"react-intl\";\n\nimport useGeoCurrency, { LOCALE_TO_CURRENCY } from \"./use-geo-currency\";\nimport { useBundleContext } from \"../../contexts/bundle-context\";\n\nconst PricingCalculatorRichText = ({\n period,\n productKey,\n labels,\n numUnits,\n id\n}) => {\n const setCurrencyIsoCode = LOCALIZED_PRICING_USE_GEO_CURRENCY\n ? null\n : LOCALE_TO_CURRENCY.US;\n const currency = useGeoCurrency(setCurrencyIsoCode);\n const { pricingStore } = useBundleContext();\n\n return (\n !currency.isPending && (\n \n \n \n \n \n )\n );\n};\n\nexport default PricingCalculatorRichText;\n","import { useAsync } from \"@atlassiansox/bxpkit-core\";\nimport Environment from '../../../common/environment';\n\nconst LOCALE_CACHE_KEY = \"bxp.currentLocale\";\nconst DEFAULT_LOCALE = \"US\";\nexport const LOCALE_TO_CURRENCY = {\n US: \"USD\",\n JP: \"JPY\"\n};\n\nexport default function useGeoCurrency(setCurrencyIsoCode) {\n return useAsync(() => {\n if (setCurrencyIsoCode) return Promise.resolve(setCurrencyIsoCode);\n\n const currentLocale = sessionStorage.getItem(LOCALE_CACHE_KEY);\n const localePromise = currentLocale\n ? Promise.resolve(currentLocale)\n : fetch(`${Environment.getWacIntegrationUrl()}/endpoint/location`)\n .then(response => response.json())\n .then(json => json.countryIsoCode || DEFAULT_LOCALE)\n .catch(() => DEFAULT_LOCALE);\n\n return localePromise.then(locale => {\n sessionStorage.setItem(LOCALE_CACHE_KEY, locale);\n return LOCALE_TO_CURRENCY[locale] || LOCALE_TO_CURRENCY[DEFAULT_LOCALE];\n });\n }, []);\n}\n","import { createContext, useContext } from \"react\";\nimport { ProductCatalogClient, CCPProductCatalogClient } from \"@atlassiansox/asc-product-catalog\";\nimport { ProductPricingStore } from \"@atlassiansox/bxp-product-pricing\";\n\nconst productCatalogClient = new ProductCatalogClient({\n space: LOCALIZED_PRICING_CONTENTFUL_SPACE,\n environment: LOCALIZED_PRICING_CONTENTFUL_ENVIRONMENT,\n accessToken: LOCALIZED_PRICING_CONTENTFUL_ACCESS_TOKEN,\n});\n\nconst ccpProductCatalogClient = new CCPProductCatalogClient({\n space: LOCALIZED_PRICING_CONTENTFUL_SPACE,\n environment: LOCALIZED_CCP_PRICING_CONTENTFUL_ENVIRONMENT,\n accessToken: LOCALIZED_CCP_PRICING_CONTENTFUL_ACCESS_TOKEN,\n});\n\nconst pricingStore = new ProductPricingStore({ productCatalogClient,ccpProductCatalogClient });\n\nexport const BundleContext = createContext({\n productCatalogClient,\n pricingStore\n});\n\nexport function useBundleContext() {\n return useContext(BundleContext);\n}\n"],"names":["defaultMinimumFractionDigits","value","Number","isInteger","injectIntl","id","productKey","units","period","currencyIsoCode","tagName","intl","pricing","usePricing","isPending","total","breakdown","returnedCurrencyIsoCode","tier","unitPrice","length","previousTier","unitLimitLower","unitLimitUpper","unitLimitDifference","previousUnitLimitUpper","formattedUnitPrice","currency","minimumFractionDigits","maximumFractionDigits","formatNumber","style","formatCurrency","React","FormattedHTMLMessage","values","labels","numUnits","setCurrencyIsoCode","LOCALIZED_PRICING_USE_GEO_CURRENCY","LOCALE_TO_CURRENCY","useGeoCurrency","pricingStore","useBundleContext","locale","document","documentElement","lang","messages","LOCALE_CACHE_KEY","US","JP","useAsync","Promise","resolve","currentLocale","sessionStorage","getItem","fetch","Environment","then","response","json","countryIsoCode","setItem","productCatalogClient","ProductCatalogClient","space","LOCALIZED_PRICING_CONTENTFUL_SPACE","environment","LOCALIZED_PRICING_CONTENTFUL_ENVIRONMENT","accessToken","LOCALIZED_PRICING_CONTENTFUL_ACCESS_TOKEN","ccpProductCatalogClient","CCPProductCatalogClient","LOCALIZED_CCP_PRICING_CONTENTFUL_ENVIRONMENT","LOCALIZED_CCP_PRICING_CONTENTFUL_ACCESS_TOKEN","ProductPricingStore","BundleContext","createContext","useContext"],"sourceRoot":""}