{"version":3,"file":"efda3984.js","sources":["../../../node_modules/@shopify/hydrogen/dist/esnext/hooks/useMoney/hooks.js"],"sourcesContent":["import { useMemo } from 'react';\nimport { useLocalization } from '../useLocalization/useLocalization.js';\n/**\n * The `useMoney` hook takes a [MoneyV2 object](https://shopify.dev/api/storefront/reference/common-objects/moneyv2) and returns a\n * default-formatted string of the amount with the correct currency indicator, along with some of the parts provided by\n * [Intl.NumberFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat).\n */\nexport function useMoney(money) {\n const { locale } = useLocalization();\n const amount = parseFloat(money.amount);\n const options = useMemo(() => ({\n style: 'currency',\n currency: money.currencyCode,\n }), [money.currencyCode]);\n const defaultFormatter = useLazyFormatter(locale, options);\n const nameFormatter = useLazyFormatter(locale, {\n ...options,\n currencyDisplay: 'name',\n });\n const narrowSymbolFormatter = useLazyFormatter(locale, {\n ...options,\n currencyDisplay: 'narrowSymbol',\n });\n const withoutTrailingZerosFormatter = useLazyFormatter(locale, {\n ...options,\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n const withoutCurrencyFormatter = useLazyFormatter(locale);\n const withoutTrailingZerosOrCurrencyFormatter = useLazyFormatter(locale, {\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n const isPartCurrency = (part) => part.type === 'currency';\n // By wrapping these properties in functions, we only\n // create formatters if they are going to be used.\n const lazyFormatters = useMemo(() => ({\n original: () => money,\n currencyCode: () => money.currencyCode,\n localizedString: () => defaultFormatter().format(amount),\n parts: () => defaultFormatter().formatToParts(amount),\n withoutTrailingZeros: () => amount % 1 === 0\n ? withoutTrailingZerosFormatter().format(amount)\n : defaultFormatter().format(amount),\n withoutTrailingZerosAndCurrency: () => amount % 1 === 0\n ? withoutTrailingZerosOrCurrencyFormatter().format(amount)\n : withoutCurrencyFormatter().format(amount),\n currencyName: () => nameFormatter().formatToParts(amount).find(isPartCurrency)?.value ??\n money.currencyCode,\n currencySymbol: () => defaultFormatter().formatToParts(amount).find(isPartCurrency)?.value ??\n money.currencyCode,\n currencyNarrowSymbol: () => narrowSymbolFormatter().formatToParts(amount).find(isPartCurrency)\n ?.value ?? '',\n amount: () => defaultFormatter()\n .formatToParts(amount)\n .filter((part) => ['decimal', 'fraction', 'group', 'integer', 'literal'].includes(part.type))\n .map((part) => part.value)\n .join(''),\n }), [\n money,\n amount,\n nameFormatter,\n defaultFormatter,\n narrowSymbolFormatter,\n withoutCurrencyFormatter,\n withoutTrailingZerosFormatter,\n withoutTrailingZerosOrCurrencyFormatter,\n ]);\n // Call functions automatically when the properties are accessed\n // to keep these functions as an implementation detail.\n return useMemo(() => new Proxy(lazyFormatters, {\n get: (target, key) => Reflect.get(target, key)?.call(null),\n }), [lazyFormatters]);\n}\nfunction useLazyFormatter(locale, options) {\n return useMemo(() => {\n let memoized;\n return () => (memoized ??= new Intl.NumberFormat(locale, options));\n }, [locale, options]);\n}\n"],"names":["useMoney","money","locale","useLocalization","amount","options","useMemo","defaultFormatter","useLazyFormatter","nameFormatter","narrowSymbolFormatter","withoutTrailingZerosFormatter","withoutCurrencyFormatter","withoutTrailingZerosOrCurrencyFormatter","isPartCurrency","part","lazyFormatters","_b","_a","target","key","memoized"],"mappings":"0EAOO,SAASA,EAASC,EAAO,CAC5B,KAAM,CAAE,OAAAC,GAAWC,IACbC,EAAS,WAAWH,EAAM,MAAM,EAChCI,EAAUC,EAAAA,QAAAA,QAAQ,KAAO,CAC3B,MAAO,WACP,SAAUL,EAAM,YACnB,GAAG,CAACA,EAAM,YAAY,CAAC,EAClBM,EAAmBC,EAAiBN,EAAQG,CAAO,EACnDI,EAAgBD,EAAiBN,EAAQ,CAC3C,GAAGG,EACH,gBAAiB,MACzB,CAAK,EACKK,EAAwBF,EAAiBN,EAAQ,CACnD,GAAGG,EACH,gBAAiB,cACzB,CAAK,EACKM,EAAgCH,EAAiBN,EAAQ,CAC3D,GAAGG,EACH,sBAAuB,EACvB,sBAAuB,CAC/B,CAAK,EACKO,EAA2BJ,EAAiBN,CAAM,EAClDW,EAA0CL,EAAiBN,EAAQ,CACrE,sBAAuB,EACvB,sBAAuB,CAC/B,CAAK,EACKY,EAAkBC,GAASA,EAAK,OAAS,WAGzCC,EAAiBV,EAAAA,QAAAA,QAAQ,KAAO,CAClC,SAAU,IAAML,EAChB,aAAc,IAAMA,EAAM,aAC1B,gBAAiB,IAAMM,IAAmB,OAAOH,CAAM,EACvD,MAAO,IAAMG,IAAmB,cAAcH,CAAM,EACpD,qBAAsB,IAAMA,EAAS,IAAM,EACrCO,EAA+B,EAAC,OAAOP,CAAM,EAC7CG,EAAkB,EAAC,OAAOH,CAAM,EACtC,gCAAiC,IAAMA,EAAS,IAAM,EAChDS,EAAyC,EAAC,OAAOT,CAAM,EACvDQ,EAA0B,EAAC,OAAOR,CAAM,EAC9C,aAAc,IAAA,SAAM,OAAAa,GAAAC,EAAAT,EAAa,EAAG,cAAcL,CAAM,EAAE,KAAKU,CAAc,IAAzD,YAAAI,EAA4D,QAA5D,KAAAD,EAChBhB,EAAM,cACV,eAAgB,IAAA,SAAM,OAAAgB,GAAAC,EAAAX,EAAgB,EAAG,cAAcH,CAAM,EAAE,KAAKU,CAAc,IAA5D,YAAAI,EAA+D,QAA/D,KAAAD,EAClBhB,EAAM,cACV,qBAAsB,IAAM,SAAA,OAAAgB,GAAAC,EAAAR,IAAwB,cAAcN,CAAM,EAAE,KAAKU,CAAc,IAAjE,YAAAI,EACtB,QADsB,KAAAD,EACb,IACf,OAAQ,IAAMV,EAAkB,EAC3B,cAAcH,CAAM,EACpB,OAAQW,GAAS,CAAC,UAAW,WAAY,QAAS,UAAW,SAAS,EAAE,SAASA,EAAK,IAAI,CAAC,EAC3F,IAAKA,GAASA,EAAK,KAAK,EACxB,KAAK,EAAE,CACpB,GAAQ,CACAd,EACAG,EACAK,EACAF,EACAG,EACAE,EACAD,EACAE,CACR,CAAK,EAGD,OAAOP,kBAAQ,IAAM,IAAI,MAAMU,EAAgB,CAC3C,IAAK,CAACG,EAAQC,WAAQ,OAAAF,EAAA,QAAQ,IAAIC,EAAQC,CAAG,IAAvB,YAAAF,EAA0B,KAAK,MAC7D,CAAK,EAAG,CAACF,CAAc,CAAC,CACxB,CACA,SAASR,EAAiBN,EAAQG,EAAS,CACvC,OAAOC,EAAO,QAAA,QAAC,IAAM,CACjB,IAAIe,EACJ,MAAO,IAAOA,GAAA,KAAAA,IAAa,IAAI,KAAK,aAAanB,EAAQG,CAAO,CACxE,EAAO,CAACH,EAAQG,CAAO,CAAC,CACxB"}