@razorpay/blade 11.1.1 → 11.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/build/lib/native/components/Amount/Amount.js +4 -3
  2. package/build/lib/native/components/Amount/Amount.js.map +1 -1
  3. package/build/lib/native/components/Amount/amountTokens.js +2 -2
  4. package/build/lib/native/components/Amount/amountTokens.js.map +1 -1
  5. package/build/lib/native/components/Dropdown/Dropdown.js +1 -1
  6. package/build/lib/native/components/Dropdown/Dropdown.js.map +1 -1
  7. package/build/lib/web/development/components/Amount/Amount.js +107 -106
  8. package/build/lib/web/development/components/Amount/Amount.js.map +1 -1
  9. package/build/lib/web/development/components/Amount/amountTokens.js +1 -415
  10. package/build/lib/web/development/components/Amount/amountTokens.js.map +1 -1
  11. package/build/lib/web/development/components/Dropdown/Dropdown.js +1 -1
  12. package/build/lib/web/development/components/Dropdown/Dropdown.js.map +1 -1
  13. package/build/lib/web/development/components/Input/BaseInput/BaseInputTagSlot.web.js +15 -1
  14. package/build/lib/web/development/components/Input/BaseInput/BaseInputTagSlot.web.js.map +1 -1
  15. package/build/lib/web/production/components/Amount/Amount.js +107 -106
  16. package/build/lib/web/production/components/Amount/Amount.js.map +1 -1
  17. package/build/lib/web/production/components/Amount/amountTokens.js +1 -415
  18. package/build/lib/web/production/components/Amount/amountTokens.js.map +1 -1
  19. package/build/lib/web/production/components/Dropdown/Dropdown.js +1 -1
  20. package/build/lib/web/production/components/Dropdown/Dropdown.js.map +1 -1
  21. package/build/lib/web/production/components/Input/BaseInput/BaseInputTagSlot.web.js +15 -1
  22. package/build/lib/web/production/components/Input/BaseInput/BaseInputTagSlot.web.js.map +1 -1
  23. package/build/types/components/index.d.ts +4 -384
  24. package/build/types/components/index.native.d.ts +4 -384
  25. package/package.json +6 -3
@@ -1 +1 @@
1
- {"version":3,"file":"BaseInputTagSlot.web.js","sources":["../../../../../../../src/components/Input/BaseInput/BaseInputTagSlot.web.tsx"],"sourcesContent":["import React from 'react';\nimport type { BaseInputTagSlotProps } from './types';\nimport { BASEINPUT_DEFAULT_HEIGHT } from './baseInputConfig';\nimport BaseBox from '~components/Box/BaseBox';\nimport { Text } from '~components/Typography';\nimport { castWebType, makeSize } from '~utils';\nimport { useIsomorphicLayoutEffect } from '~utils/useIsomorphicLayoutEffect';\nimport { useIsMobile } from '~utils/useIsMobile';\nimport { MetaConstants } from '~utils/metaAttribute';\nimport { size } from '~tokens/global';\n\nconst MINUMUM_INPUT_SPACE = 30;\nconst PLUS_X_MORE_TEXT_WIDTH = 60;\nconst TAG_MAX_WIDTH: number = size['140'];\n\nconst useVisibleTagsCount = ({\n slotRef,\n tags,\n maxTagRows,\n visibleTagsCountRef,\n showAllTags,\n labelPrefix,\n}: {\n slotRef: React.RefObject<HTMLDivElement>;\n tags: BaseInputTagSlotProps['tags'];\n maxTagRows: BaseInputTagSlotProps['maxTagRows'];\n visibleTagsCountRef: BaseInputTagSlotProps['visibleTagsCountRef'];\n showAllTags: BaseInputTagSlotProps['showAllTags'];\n labelPrefix: BaseInputTagSlotProps['labelPrefix'];\n}): number => {\n const [visibleTagsCount, setVisibleTagsCount] = React.useState(0);\n const visibleTagsCountStateRef = React.useRef<number>(0);\n\n useIsomorphicLayoutEffect(() => {\n if (!tags || labelPrefix) {\n setVisibleTagsCount(0);\n return;\n }\n\n if (maxTagRows === 'multiple' || showAllTags) {\n visibleTagsCountRef.current = tags.length;\n setVisibleTagsCount(tags.length);\n return;\n }\n\n const inputTagsSlotWidth = slotRef.current?.clientWidth;\n visibleTagsCountStateRef.current = 0;\n let totalTagsWidth = 0;\n\n if (!inputTagsSlotWidth) {\n return;\n }\n\n const allTagsEl = slotRef.current?.querySelectorAll(\n `[data-blade-component=\"${MetaConstants.Tag}\"]`,\n );\n\n const totalAvailableSpaceForTags =\n inputTagsSlotWidth - (MINUMUM_INPUT_SPACE + PLUS_X_MORE_TEXT_WIDTH);\n\n if (allTagsEl.length !== tags.length) {\n // some weird edge cases in controlled select where tags are not rendered in children\n // we assume 140px (max-width of tag as width of all tags)\n const tagsCount = Math.floor((totalAvailableSpaceForTags / TAG_MAX_WIDTH) * tags.length);\n visibleTagsCountRef.current = tagsCount;\n setVisibleTagsCount(tagsCount);\n return;\n }\n\n for (const tagEl of allTagsEl) {\n totalTagsWidth += tagEl.clientWidth;\n if (totalTagsWidth >= totalAvailableSpaceForTags) {\n break;\n } else {\n visibleTagsCountStateRef.current++;\n }\n }\n\n visibleTagsCountRef.current = visibleTagsCountStateRef.current;\n setVisibleTagsCount(visibleTagsCountStateRef.current);\n }, [tags?.length, showAllTags]);\n\n return visibleTagsCount;\n};\n\nconst getSelectedTextWithoutTags = ({\n items,\n labelPrefix,\n}: {\n items: number;\n labelPrefix?: string;\n}): string => {\n if (labelPrefix) {\n return `${labelPrefix} (${items} Selected)`;\n }\n\n return `${items} Selected`;\n};\n\nconst BaseInputTagSlot = ({\n renderAs,\n children,\n tags,\n maxTagRows,\n showAllTags,\n setShouldIgnoreBlurAnimation,\n handleOnInputClick,\n isDropdownTrigger,\n visibleTagsCountRef,\n labelPrefix,\n isDisabled,\n}: BaseInputTagSlotProps): React.ReactElement => {\n const hasTags = tags && tags.length > 0;\n const slotRef = React.useRef<HTMLDivElement>(null);\n const visibleTagsCount = useVisibleTagsCount({\n slotRef,\n tags,\n maxTagRows,\n visibleTagsCountRef,\n showAllTags,\n labelPrefix,\n });\n\n React.useEffect(() => {\n slotRef.current?.scrollTo?.({\n top:\n maxTagRows === 'multiple' || maxTagRows === 'expandable' ? slotRef.current.scrollHeight : 0,\n left: maxTagRows === 'single' ? slotRef.current.scrollWidth : 0,\n behavior: 'smooth',\n });\n }, [tags?.length, maxTagRows]);\n\n React.useEffect(() => {\n if (!showAllTags) {\n slotRef.current?.scrollTo?.({\n top: 0,\n left: 0,\n behavior: 'smooth',\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [showAllTags]);\n\n const visibleTags = React.useMemo(() => {\n return showAllTags ? tags : tags?.slice(0, visibleTagsCount);\n }, [showAllTags, tags, visibleTagsCount]);\n\n const invisibleTagsCount = React.useMemo(() => {\n if (tags && visibleTags) {\n return tags.length - visibleTags.length;\n }\n\n return 0;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tags?.length, visibleTags?.length]);\n\n const isMobile = useIsMobile();\n\n if (!isDropdownTrigger) {\n // If its not dropdown trigger, we don't need to render tag containers\n return children;\n }\n\n // tag height changes in mobile and desktop so we keep different paddings to make it look as expected\n const paddingYWithTags = isMobile ? 'spacing.1' : 'spacing.2';\n\n return (\n <BaseBox\n ref={slotRef}\n className=\"tags-slot\"\n paddingY={paddingYWithTags}\n paddingLeft=\"spacing.4\"\n display=\"flex\"\n flex=\"1\"\n flexWrap={maxTagRows === 'single' ? 'nowrap' : 'wrap'}\n overflowX=\"auto\"\n overflowY={showAllTags || maxTagRows === 'multiple' ? 'auto' : 'hidden'}\n minHeight={makeSize(BASEINPUT_DEFAULT_HEIGHT)}\n onMouseDown={() => {\n setShouldIgnoreBlurAnimation?.(true);\n }}\n onClick={(e) => {\n handleOnInputClick(castWebType(e));\n }}\n onMouseUp={() => {\n setShouldIgnoreBlurAnimation?.(false);\n }}\n >\n {visibleTags}\n {tags && !showAllTags && invisibleTagsCount ? (\n <Text\n color={isDisabled ? 'surface.text.gray.disabled' : 'surface.text.gray.subtle'}\n alignSelf=\"center\"\n marginY=\"spacing.2\"\n marginRight=\"spacing.4\"\n variant=\"body\"\n size=\"small\"\n weight=\"regular\"\n >\n <BaseBox as=\"span\" whiteSpace=\"nowrap\">\n {visibleTags?.length === 0\n ? getSelectedTextWithoutTags({\n items: invisibleTagsCount,\n labelPrefix,\n })\n : `+${invisibleTagsCount} More`}\n </BaseBox>\n </Text>\n ) : null}\n <BaseBox\n marginTop=\"-4px\"\n minWidth={hasTags && renderAs === 'button' ? undefined : makeSize(MINUMUM_INPUT_SPACE)}\n width={hasTags && renderAs === 'button' ? makeSize(size['1']) : '100%'}\n >\n {children}\n </BaseBox>\n </BaseBox>\n );\n};\n\nexport { BaseInputTagSlot };\n"],"names":["MINUMUM_INPUT_SPACE","PLUS_X_MORE_TEXT_WIDTH","TAG_MAX_WIDTH","size","useVisibleTagsCount","_ref","slotRef","tags","maxTagRows","visibleTagsCountRef","showAllTags","labelPrefix","_React$useState","React","useState","_React$useState2","_slicedToArray","visibleTagsCount","setVisibleTagsCount","visibleTagsCountStateRef","useRef","useIsomorphicLayoutEffect","_slotRef$current","_slotRef$current2","current","length","inputTagsSlotWidth","clientWidth","totalTagsWidth","allTagsEl","querySelectorAll","concat","MetaConstants","Tag","totalAvailableSpaceForTags","tagsCount","Math","floor","_iterator","_createForOfIteratorHelper","_step","s","n","done","tagEl","value","err","e","f","getSelectedTextWithoutTags","_ref2","items","BaseInputTagSlot","_ref3","renderAs","children","setShouldIgnoreBlurAnimation","handleOnInputClick","isDropdownTrigger","isDisabled","hasTags","useEffect","_slotRef$current3","_slotRef$current3$scr","scrollTo","call","top","scrollHeight","left","scrollWidth","behavior","_slotRef$current4","_slotRef$current4$scr","visibleTags","useMemo","slice","invisibleTagsCount","isMobile","useIsMobile","paddingYWithTags","_jsxs","BaseBox","ref","className","paddingY","paddingLeft","display","flex","flexWrap","overflowX","overflowY","minHeight","makeSize","BASEINPUT_DEFAULT_HEIGHT","onMouseDown","onClick","castWebType","onMouseUp","_jsx","Text","color","alignSelf","marginY","marginRight","variant","weight","as","whiteSpace","marginTop","minWidth","undefined","width"],"mappings":"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"}
1
+ {"version":3,"file":"BaseInputTagSlot.web.js","sources":["../../../../../../../src/components/Input/BaseInput/BaseInputTagSlot.web.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport type { BaseInputTagSlotProps } from './types';\nimport { BASEINPUT_DEFAULT_HEIGHT } from './baseInputConfig';\nimport BaseBox from '~components/Box/BaseBox';\nimport { Text } from '~components/Typography';\nimport { castWebType, makeSize } from '~utils';\nimport { useIsomorphicLayoutEffect } from '~utils/useIsomorphicLayoutEffect';\nimport { useIsMobile } from '~utils/useIsMobile';\nimport { MetaConstants } from '~utils/metaAttribute';\nimport { size } from '~tokens/global';\n\nconst MINUMUM_INPUT_SPACE = 30;\nconst PLUS_X_MORE_TEXT_WIDTH = 60;\nconst TAG_MAX_WIDTH: number = size['140'];\n\nconst useVisibleTagsCount = ({\n slotRef,\n tags,\n maxTagRows,\n visibleTagsCountRef,\n showAllTags,\n labelPrefix,\n}: {\n slotRef: React.RefObject<HTMLDivElement>;\n tags: BaseInputTagSlotProps['tags'];\n maxTagRows: BaseInputTagSlotProps['maxTagRows'];\n visibleTagsCountRef: BaseInputTagSlotProps['visibleTagsCountRef'];\n showAllTags: BaseInputTagSlotProps['showAllTags'];\n labelPrefix: BaseInputTagSlotProps['labelPrefix'];\n}): number => {\n const [visibleTagsCount, setVisibleTagsCount] = React.useState(0);\n const visibleTagsCountStateRef = React.useRef<number>(0);\n\n useIsomorphicLayoutEffect(() => {\n if (!tags || labelPrefix) {\n setVisibleTagsCount(0);\n return;\n }\n\n if (maxTagRows === 'multiple' || showAllTags) {\n visibleTagsCountRef.current = tags.length;\n setVisibleTagsCount(tags.length);\n return;\n }\n\n const inputTagsSlotWidth = slotRef.current?.clientWidth;\n visibleTagsCountStateRef.current = 0;\n let totalTagsWidth = 0;\n\n if (!inputTagsSlotWidth) {\n return;\n }\n\n const allTagsEl = slotRef.current?.querySelectorAll(\n `[data-blade-component=\"${MetaConstants.Tag}\"]`,\n );\n\n const totalAvailableSpaceForTags =\n inputTagsSlotWidth - (MINUMUM_INPUT_SPACE + PLUS_X_MORE_TEXT_WIDTH);\n\n if (allTagsEl.length !== tags.length) {\n // some weird edge cases in controlled select where tags are not rendered in children\n // we assume 140px (max-width of tag as width of all tags)\n const tagsCount = Math.floor((totalAvailableSpaceForTags / TAG_MAX_WIDTH) * tags.length);\n visibleTagsCountRef.current = tagsCount;\n setVisibleTagsCount(tagsCount);\n return;\n }\n\n for (const tagEl of allTagsEl) {\n totalTagsWidth += tagEl.clientWidth;\n if (totalTagsWidth >= totalAvailableSpaceForTags) {\n break;\n } else {\n visibleTagsCountStateRef.current++;\n }\n }\n\n visibleTagsCountRef.current = visibleTagsCountStateRef.current;\n setVisibleTagsCount(visibleTagsCountStateRef.current);\n }, [tags?.length, showAllTags]);\n\n return visibleTagsCount;\n};\n\nconst getSelectedTextWithoutTags = ({\n items,\n labelPrefix,\n}: {\n items: number;\n labelPrefix?: string;\n}): string => {\n if (labelPrefix) {\n return `${labelPrefix} (${items} Selected)`;\n }\n\n return `${items} Selected`;\n};\n\nconst TagSlotContainer = styled(BaseBox)(() => {\n return {\n // hides the scrollbar of tagslot\n '::-webkit-scrollbar': {\n display: 'none',\n },\n '-ms-overflow-style': 'none',\n 'scrollbar-width': 'none',\n };\n});\n\nconst BaseInputTagSlot = ({\n renderAs,\n children,\n tags,\n maxTagRows,\n showAllTags,\n setShouldIgnoreBlurAnimation,\n handleOnInputClick,\n isDropdownTrigger,\n visibleTagsCountRef,\n labelPrefix,\n isDisabled,\n}: BaseInputTagSlotProps): React.ReactElement => {\n const hasTags = tags && tags.length > 0;\n const slotRef = React.useRef<HTMLDivElement>(null);\n const visibleTagsCount = useVisibleTagsCount({\n slotRef,\n tags,\n maxTagRows,\n visibleTagsCountRef,\n showAllTags,\n labelPrefix,\n });\n\n React.useEffect(() => {\n slotRef.current?.scrollTo?.({\n top:\n maxTagRows === 'multiple' || maxTagRows === 'expandable' ? slotRef.current.scrollHeight : 0,\n left: maxTagRows === 'single' ? slotRef.current.scrollWidth : 0,\n behavior: 'smooth',\n });\n }, [tags?.length, maxTagRows]);\n\n React.useEffect(() => {\n if (!showAllTags) {\n slotRef.current?.scrollTo?.({\n top: 0,\n left: 0,\n behavior: 'smooth',\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [showAllTags]);\n\n const visibleTags = React.useMemo(() => {\n return showAllTags ? tags : tags?.slice(0, visibleTagsCount);\n }, [showAllTags, tags, visibleTagsCount]);\n\n const invisibleTagsCount = React.useMemo(() => {\n if (tags && visibleTags) {\n return tags.length - visibleTags.length;\n }\n\n return 0;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tags?.length, visibleTags?.length]);\n\n const isMobile = useIsMobile();\n\n if (!isDropdownTrigger) {\n // If its not dropdown trigger, we don't need to render tag containers\n return children;\n }\n\n // tag height changes in mobile and desktop so we keep different paddings to make it look as expected\n const paddingYWithTags = isMobile ? 'spacing.1' : 'spacing.2';\n\n return (\n <TagSlotContainer\n ref={slotRef}\n className=\"tags-slot\"\n paddingY={paddingYWithTags}\n paddingLeft=\"spacing.4\"\n display=\"flex\"\n flex=\"1\"\n flexWrap={maxTagRows === 'single' ? 'nowrap' : 'wrap'}\n overflowX=\"auto\"\n overflowY={showAllTags || maxTagRows === 'multiple' ? 'auto' : 'hidden'}\n minHeight={makeSize(BASEINPUT_DEFAULT_HEIGHT)}\n onMouseDown={() => {\n setShouldIgnoreBlurAnimation?.(true);\n }}\n onClick={(e) => {\n handleOnInputClick(castWebType(e));\n }}\n onMouseUp={() => {\n setShouldIgnoreBlurAnimation?.(false);\n }}\n >\n {visibleTags}\n {tags && !showAllTags && invisibleTagsCount ? (\n <Text\n color={isDisabled ? 'surface.text.gray.disabled' : 'surface.text.gray.subtle'}\n alignSelf=\"center\"\n marginY=\"spacing.2\"\n marginRight=\"spacing.4\"\n variant=\"body\"\n size=\"small\"\n weight=\"regular\"\n >\n <BaseBox as=\"span\" whiteSpace=\"nowrap\">\n {visibleTags?.length === 0\n ? getSelectedTextWithoutTags({\n items: invisibleTagsCount,\n labelPrefix,\n })\n : `+${invisibleTagsCount} More`}\n </BaseBox>\n </Text>\n ) : null}\n <BaseBox\n marginTop=\"-4px\"\n minWidth={hasTags && renderAs === 'button' ? undefined : makeSize(MINUMUM_INPUT_SPACE)}\n width={hasTags && renderAs === 'button' ? makeSize(size['1']) : '100%'}\n >\n {children}\n </BaseBox>\n </TagSlotContainer>\n );\n};\n\nexport { BaseInputTagSlot };\n"],"names":["MINUMUM_INPUT_SPACE","PLUS_X_MORE_TEXT_WIDTH","TAG_MAX_WIDTH","size","useVisibleTagsCount","_ref","slotRef","tags","maxTagRows","visibleTagsCountRef","showAllTags","labelPrefix","_React$useState","React","useState","_React$useState2","_slicedToArray","visibleTagsCount","setVisibleTagsCount","visibleTagsCountStateRef","useRef","useIsomorphicLayoutEffect","_slotRef$current","_slotRef$current2","current","length","inputTagsSlotWidth","clientWidth","totalTagsWidth","allTagsEl","querySelectorAll","concat","MetaConstants","Tag","totalAvailableSpaceForTags","tagsCount","Math","floor","_iterator","_createForOfIteratorHelper","_step","s","n","done","tagEl","value","err","e","f","getSelectedTextWithoutTags","_ref2","items","TagSlotContainer","styled","BaseBox","withConfig","displayName","componentId","display","BaseInputTagSlot","_ref3","renderAs","children","setShouldIgnoreBlurAnimation","handleOnInputClick","isDropdownTrigger","isDisabled","hasTags","useEffect","_slotRef$current3","_slotRef$current3$scr","scrollTo","call","top","scrollHeight","left","scrollWidth","behavior","_slotRef$current4","_slotRef$current4$scr","visibleTags","useMemo","slice","invisibleTagsCount","isMobile","useIsMobile","paddingYWithTags","_jsxs","ref","className","paddingY","paddingLeft","flex","flexWrap","overflowX","overflowY","minHeight","makeSize","BASEINPUT_DEFAULT_HEIGHT","onMouseDown","onClick","castWebType","onMouseUp","_jsx","Text","color","alignSelf","marginY","marginRight","variant","weight","as","whiteSpace","marginTop","minWidth","undefined","width"],"mappings":"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"}
@@ -1,7 +1,8 @@
1
- import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
1
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
2
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
3
3
  import React__default from 'react';
4
- import { subtleFontSizes, normalAmountSizes, amountLineHeights, getCurrencyAbbreviations, currencyIndicatorMapping, currencyPositionMapping } from './amountTokens.js';
4
+ import { formatNumber, formatNumberByParts } from '@razorpay/i18nify-js/currency';
5
+ import { subtleFontSizes, normalAmountSizes, amountLineHeights } from './amountTokens.js';
5
6
  import '../Box/BaseBox/index.js';
6
7
  import '../../utils/index.js';
7
8
  import '../../utils/metaAttribute/index.js';
@@ -37,7 +38,7 @@ var getTextColorProps = function getTextColorProps(_ref) {
37
38
  return props;
38
39
  };
39
40
  var AmountValue = function AmountValue(_ref2) {
40
- var value = _ref2.value,
41
+ var amount = _ref2.amount,
41
42
  _ref2$size = _ref2.size,
42
43
  size = _ref2$size === void 0 ? 'medium' : _ref2$size,
43
44
  _ref2$type = _ref2.type,
@@ -51,9 +52,6 @@ var AmountValue = function AmountValue(_ref2) {
51
52
  var affixFontSize = isAffixSubtle ? subtleFontSizes[type][size] : normalAmountSizes[type][size];
52
53
  var numberFontFamily = type === 'body' ? 'text' : 'heading';
53
54
  if (suffix === 'decimals' && isAffixSubtle) {
54
- var integer = value.split('.')[0];
55
- var decimal = value.split('.')[1];
56
-
57
55
  // Native does not support alignItems of Text inside a div, instead we need to wrap is in a Text
58
56
  var AmountWrapper = isReactNative ? Text : React__default.Fragment;
59
57
  return /*#__PURE__*/jsxs(AmountWrapper, {
@@ -64,7 +62,7 @@ var AmountValue = function AmountValue(_ref2) {
64
62
  color: amountValueColor,
65
63
  fontFamily: numberFontFamily,
66
64
  as: isReactNative ? undefined : 'span',
67
- children: integer
65
+ children: amount.integer
68
66
  }), /*#__PURE__*/jsxs(BaseText, {
69
67
  fontWeight: weight,
70
68
  fontSize: affixFontSize,
@@ -72,7 +70,7 @@ var AmountValue = function AmountValue(_ref2) {
72
70
  color: amountValueColor,
73
71
  as: isReactNative ? undefined : 'span',
74
72
  opacity: isAffixSubtle ? opacity[8] : 1,
75
- children: [".", decimal || '00']
73
+ children: [amount.decimal, amount.fraction]
76
74
  })]
77
75
  });
78
76
  }
@@ -82,99 +80,93 @@ var AmountValue = function AmountValue(_ref2) {
82
80
  fontFamily: numberFontFamily,
83
81
  color: amountValueColor,
84
82
  lineHeight: amountLineHeights[type][size],
85
- children: value
86
- });
87
- };
88
-
89
- // This function rounds a number to a specified number of decimal places
90
- // and floors the result.
91
- var getFlooredFixed = function getFlooredFixed(value, decimalPlaces) {
92
- var factor = Math.pow(100, decimalPlaces);
93
- var roundedValue = Math.floor(value * factor) / factor;
94
- return Number(roundedValue.toFixed(decimalPlaces));
95
- };
96
- var addCommas = function addCommas(amountValue, currency) {
97
- var decimalPlaces = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
98
- // If the currency is 'INR', set the locale to 'en-IN' (Indian English).
99
- // Otherwise, set the locale to 'en-US' (U.S. English).
100
- var locale = currency === 'INR' ? 'en-IN' : 'en-US';
101
- return amountValue.toLocaleString(locale, {
102
- minimumFractionDigits: decimalPlaces
83
+ children: amount.formatted
103
84
  });
104
85
  };
105
86
  /**
106
- * This function returns the humanized amount
107
- * ie: for INR 2000 => 2K
108
- * for MYR 2000000 => 2M
87
+ * Returns a parsed object based on the suffix passed in parameters
88
+ * === Logic ===
89
+ * value = 12500.45
90
+ * if suffix === 'decimals' => {
91
+ "formatted": "12,500.45",
92
+ "integer": "12,500",
93
+ "decimal": ".",
94
+ "fraction": "45",
95
+ "isPrefixSymbol": false,
96
+ "rawParts": [{"type": "integer","value": "12"},{"type": "group","value": ","},{"type": "integer","value": "500"},{"type": "decimal","value": "."},{"type": "fraction","value": "45"}]
97
+ }
98
+ * else if suffix === 'humanize' => { formatted: "1.2T" }
99
+ * else => { formatted: "1,23,456" }
100
+ * @returns {AmountType}
109
101
  */
110
- var getHumanizedAmount = function getHumanizedAmount(_ref3) {
111
- var value = _ref3.value,
112
- currency = _ref3.currency,
113
- _ref3$denominationPos = _ref3.denominationPosition,
114
- denominationPosition = _ref3$denominationPos === void 0 ? 'right' : _ref3$denominationPos;
115
- var amountValue = value;
116
- var abbreviations = getCurrencyAbbreviations(currency);
117
- var abbreviation = abbreviations.find(function (abbr) {
118
- return amountValue >= abbr.value;
119
- });
120
- if (abbreviation) {
121
- amountValue = amountValue / abbreviation.value;
122
- var formattedAmountValue = getFlooredFixed(amountValue, 2);
123
- if (denominationPosition === 'right') {
124
- return "".concat(addCommas(formattedAmountValue, currency)).concat(abbreviation.symbol);
102
+ var formatAmountWithSuffix = function formatAmountWithSuffix(_ref3) {
103
+ var suffix = _ref3.suffix,
104
+ value = _ref3.value;
105
+ try {
106
+ switch (suffix) {
107
+ case 'decimals':
108
+ {
109
+ var options = {
110
+ intlOptions: {
111
+ maximumFractionDigits: 2,
112
+ minimumFractionDigits: 2
113
+ }
114
+ };
115
+ return _objectSpread(_objectSpread({}, formatNumberByParts(value, options)), {}, {
116
+ formatted: formatNumber(value, options)
117
+ });
118
+ }
119
+ case 'humanize':
120
+ {
121
+ var formatted = formatNumber(value, {
122
+ intlOptions: {
123
+ notation: 'compact'
124
+ }
125
+ });
126
+ return {
127
+ formatted: formatted
128
+ };
129
+ }
130
+ default:
131
+ {
132
+ var _formatted = formatNumber(value, {
133
+ intlOptions: {
134
+ maximumFractionDigits: 0,
135
+ roundingMode: 'floor'
136
+ }
137
+ });
138
+ return {
139
+ formatted: _formatted
140
+ };
141
+ }
125
142
  }
126
- return "".concat(abbreviation.symbol).concat(addCommas(formattedAmountValue, currency));
127
- }
128
- return amountValue.toString();
129
- };
130
- var formatAmountWithSuffix = function formatAmountWithSuffix(_ref4) {
131
- var suffix = _ref4.suffix,
132
- value = _ref4.value,
133
- currency = _ref4.currency,
134
- denominationPosition = _ref4.denominationPosition;
135
- switch (suffix) {
136
- case 'decimals':
137
- {
138
- var decimalNumber = getFlooredFixed(value, 2);
139
- return addCommas(decimalNumber, currency, 2);
140
- }
141
- case 'humanize':
142
- {
143
- return getHumanizedAmount({
144
- value: value,
145
- currency: currency,
146
- denominationPosition: denominationPosition
147
- });
148
- }
149
- case 'none':
150
- {
151
- return addCommas(getFlooredFixed(value, 0), currency);
152
- }
153
- default:
154
- return addCommas(getFlooredFixed(value, 0), currency);
143
+ } catch (err) {
144
+ return {
145
+ formatted: "".concat(value)
146
+ };
155
147
  }
156
148
  };
157
- var _Amount = function _Amount(_ref5) {
158
- var value = _ref5.value,
159
- _ref5$suffix = _ref5.suffix,
160
- suffix = _ref5$suffix === void 0 ? 'decimals' : _ref5$suffix,
161
- _ref5$type = _ref5.type,
162
- type = _ref5$type === void 0 ? 'body' : _ref5$type,
163
- _ref5$size = _ref5.size,
164
- size = _ref5$size === void 0 ? 'medium' : _ref5$size,
165
- _ref5$weight = _ref5.weight,
166
- weight = _ref5$weight === void 0 ? 'regular' : _ref5$weight,
167
- _ref5$isAffixSubtle = _ref5.isAffixSubtle,
168
- isAffixSubtle = _ref5$isAffixSubtle === void 0 ? true : _ref5$isAffixSubtle,
169
- _ref5$isStrikethrough = _ref5.isStrikethrough,
170
- isStrikethrough = _ref5$isStrikethrough === void 0 ? false : _ref5$isStrikethrough,
171
- color = _ref5.color,
172
- _ref5$currencyIndicat = _ref5.currencyIndicator,
173
- currencyIndicator = _ref5$currencyIndicat === void 0 ? 'currency-symbol' : _ref5$currencyIndicat,
174
- _ref5$currency = _ref5.currency,
175
- currency = _ref5$currency === void 0 ? 'INR' : _ref5$currency,
176
- testID = _ref5.testID,
177
- styledProps = _objectWithoutProperties(_ref5, _excluded);
149
+ var _Amount = function _Amount(_ref4) {
150
+ var value = _ref4.value,
151
+ _ref4$suffix = _ref4.suffix,
152
+ suffix = _ref4$suffix === void 0 ? 'decimals' : _ref4$suffix,
153
+ _ref4$type = _ref4.type,
154
+ type = _ref4$type === void 0 ? 'body' : _ref4$type,
155
+ _ref4$size = _ref4.size,
156
+ size = _ref4$size === void 0 ? 'medium' : _ref4$size,
157
+ _ref4$weight = _ref4.weight,
158
+ weight = _ref4$weight === void 0 ? 'regular' : _ref4$weight,
159
+ _ref4$isAffixSubtle = _ref4.isAffixSubtle,
160
+ isAffixSubtle = _ref4$isAffixSubtle === void 0 ? true : _ref4$isAffixSubtle,
161
+ _ref4$isStrikethrough = _ref4.isStrikethrough,
162
+ isStrikethrough = _ref4$isStrikethrough === void 0 ? false : _ref4$isStrikethrough,
163
+ color = _ref4.color,
164
+ _ref4$currencyIndicat = _ref4.currencyIndicator,
165
+ currencyIndicator = _ref4$currencyIndicat === void 0 ? 'currency-symbol' : _ref4$currencyIndicat,
166
+ _ref4$currency = _ref4.currency,
167
+ currency = _ref4$currency === void 0 ? 'INR' : _ref4$currency,
168
+ testID = _ref4.testID,
169
+ styledProps = _objectWithoutProperties(_ref4, _excluded);
178
170
  if (false) {
179
171
  if (typeof value !== 'number') {
180
172
  throwBladeError({
@@ -211,19 +203,27 @@ var _Amount = function _Amount(_ref5) {
211
203
  });
212
204
  }
213
205
  }
214
- var currencySymbolOrCode = currencyIndicatorMapping[currency][currencyIndicator];
215
- var currencyPosition = currencyPositionMapping[currency] || 'left';
216
- var denominationPosition = currencyPosition === 'left' ? 'right' : 'left';
217
- var renderedValue = formatAmountWithSuffix({
218
- suffix: suffix,
219
- value: value,
220
- currency: currency,
221
- denominationPosition: denominationPosition
222
- });
223
206
  var _getTextColorProps = getTextColorProps({
224
207
  color: color
225
208
  }),
226
209
  amountValueColor = _getTextColorProps.amountValueColor;
210
+ var isPrefixSymbol, currencySymbol;
211
+ try {
212
+ var byParts = formatNumberByParts(value, {
213
+ currency: currency
214
+ });
215
+ isPrefixSymbol = byParts.isPrefixSymbol;
216
+ currencySymbol = byParts.currency;
217
+ } catch (err) {
218
+ isPrefixSymbol = true;
219
+ currencySymbol = currency;
220
+ }
221
+ var currencyPosition = isPrefixSymbol ? 'left' : 'right';
222
+ var renderedValue = formatAmountWithSuffix({
223
+ suffix: suffix,
224
+ value: value
225
+ });
226
+ var currencySymbolOrCode = currencyIndicator === 'currency-symbol' ? currencySymbol : currency;
227
227
  var currencyFontSize = isAffixSubtle ? subtleFontSizes[type][size] : normalAmountSizes[type][size];
228
228
  var isReactNative = getPlatformType() === 'react-native';
229
229
  return /*#__PURE__*/jsx(BaseBox, _objectSpread(_objectSpread(_objectSpread({
@@ -247,13 +247,14 @@ var _Amount = function _Amount(_ref5) {
247
247
  opacity: isAffixSubtle ? opacity[8] : 1,
248
248
  children: currencySymbolOrCode
249
249
  }), /*#__PURE__*/jsx(AmountValue, {
250
- value: renderedValue,
250
+ amount: renderedValue,
251
251
  amountValueColor: amountValueColor,
252
252
  type: type,
253
253
  weight: weight,
254
254
  size: size,
255
255
  isAffixSubtle: isAffixSubtle,
256
- suffix: suffix
256
+ suffix: suffix,
257
+ currency: currency
257
258
  }), currencyPosition === 'right' && /*#__PURE__*/jsx(BaseText, {
258
259
  marginLeft: "spacing.1",
259
260
  fontWeight: weight,
@@ -280,5 +281,5 @@ var Amount = /*#__PURE__*/assignWithoutSideEffects(_Amount, {
280
281
  componentId: 'Amount'
281
282
  });
282
283
 
283
- export { Amount, addCommas, formatAmountWithSuffix, getFlooredFixed, getHumanizedAmount };
284
+ export { Amount, formatAmountWithSuffix };
284
285
  //# sourceMappingURL=Amount.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Amount.js","sources":["../../../../../../src/components/Amount/Amount.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport React from 'react';\nimport type { AmountTypeProps, Currency } from './amountTokens';\nimport {\n normalAmountSizes,\n getCurrencyAbbreviations,\n currencyIndicatorMapping,\n subtleFontSizes,\n amountLineHeights,\n currencyPositionMapping,\n} from './amountTokens';\nimport type { BaseTextProps } from '~components/Typography/BaseText/types';\nimport BaseBox from '~components/Box/BaseBox';\nimport type { TestID } from '~utils/types';\nimport { getPlatformType } from '~utils';\nimport { metaAttribute, MetaConstants } from '~utils/metaAttribute';\nimport { getStyledProps } from '~components/Box/styledProps';\nimport type { StyledPropsBlade } from '~components/Box/styledProps';\nimport { assignWithoutSideEffects } from '~utils/assignWithoutSideEffects';\nimport { throwBladeError } from '~utils/logger';\nimport { objectKeysWithType } from '~utils/objectKeysWithType';\nimport { BaseText } from '~components/Typography/BaseText';\nimport { Text } from '~components/Typography';\nimport { opacity } from '~tokens/global';\nimport type { FontFamily } from '~tokens/global';\n\ntype AmountCommonProps = {\n /**\n * The value to be rendered within the component.\n *\n */\n value: number;\n /**\n * Sets the color of the amount.\n *\n * @default undefined\n */\n color?: BaseTextProps['color'];\n /**\n * Indicates what the suffix of amount should be\n *\n * @default 'decimals'\n */\n suffix?: 'decimals' | 'none' | 'humanize';\n /**\n * Makes the currency indicator(currency symbol/code) and decimal digits small and faded\n *\n * @default true\n */\n isAffixSubtle?: true | false;\n /**\n * Determines the visual representation of the currency, choose between displaying the currency symbol or code.\n *\n * @default 'currency-symbol'\n */\n currencyIndicator?: 'currency-symbol' | 'currency-code';\n /**\n * The currency of the amount. Note that this component\n * only displays the provided value in the specified currency, it does not perform any currency conversion.\n *\n * @default 'INR'\n * */\n currency?: Currency;\n /**\n * If true, the amount text will have a line through it.\n *\n * @default false\n */\n isStrikethrough?: boolean;\n} & TestID &\n StyledPropsBlade;\n\ntype ColorProps = {\n amountValueColor: BaseTextProps['color'];\n};\n\ntype AmountProps = AmountTypeProps & AmountCommonProps;\n\nconst getTextColorProps = ({ color }: { color: AmountProps['color'] }): ColorProps => {\n const props: ColorProps = {\n amountValueColor: 'surface.text.gray.normal',\n };\n if (!color) return props;\n props.amountValueColor = color;\n return props;\n};\n\ninterface AmountValue extends Omit<AmountProps, 'value'> {\n amountValueColor: BaseTextProps['color'];\n value: string;\n size: Exclude<AmountProps['size'], undefined>;\n}\n\nconst AmountValue = ({\n value,\n size = 'medium',\n type = 'body',\n weight = 'regular',\n amountValueColor,\n isAffixSubtle,\n suffix,\n}: AmountValue): ReactElement => {\n const isReactNative = getPlatformType() === 'react-native';\n const affixFontSize = isAffixSubtle ? subtleFontSizes[type][size] : normalAmountSizes[type][size];\n const numberFontFamily: keyof FontFamily = type === 'body' ? 'text' : 'heading';\n if (suffix === 'decimals' && isAffixSubtle) {\n const integer = value.split('.')[0];\n const decimal = value.split('.')[1];\n\n // Native does not support alignItems of Text inside a div, instead we need to wrap is in a Text\n const AmountWrapper = isReactNative ? Text : React.Fragment;\n\n return (\n <AmountWrapper>\n <BaseText\n fontSize={normalAmountSizes[type][size]}\n fontWeight={weight}\n lineHeight={amountLineHeights[type][size]}\n color={amountValueColor}\n fontFamily={numberFontFamily}\n as={isReactNative ? undefined : 'span'}\n >\n {integer}\n </BaseText>\n <BaseText\n fontWeight={weight}\n fontSize={affixFontSize}\n fontFamily={numberFontFamily}\n color={amountValueColor}\n as={isReactNative ? undefined : 'span'}\n opacity={isAffixSubtle ? opacity[8] : 1}\n >\n .{decimal || '00'}\n </BaseText>\n </AmountWrapper>\n );\n }\n return (\n <BaseText\n fontSize={normalAmountSizes[type][size]}\n fontWeight={weight}\n fontFamily={numberFontFamily}\n color={amountValueColor}\n lineHeight={amountLineHeights[type][size]}\n >\n {value}\n </BaseText>\n );\n};\n\n// This function rounds a number to a specified number of decimal places\n// and floors the result.\nexport const getFlooredFixed = (value: number, decimalPlaces: number): number => {\n const factor = 100 ** decimalPlaces;\n const roundedValue = Math.floor(value * factor) / factor;\n return Number(roundedValue.toFixed(decimalPlaces));\n};\n\nexport const addCommas = (amountValue: number, currency: Currency, decimalPlaces = 0): string => {\n // If the currency is 'INR', set the locale to 'en-IN' (Indian English).\n // Otherwise, set the locale to 'en-US' (U.S. English).\n const locale = currency === 'INR' ? 'en-IN' : 'en-US';\n return amountValue.toLocaleString(locale, { minimumFractionDigits: decimalPlaces });\n};\n/**\n * This function returns the humanized amount\n * ie: for INR 2000 => 2K\n * for MYR 2000000 => 2M\n */\nexport const getHumanizedAmount = ({\n value,\n currency,\n denominationPosition = 'right',\n}: {\n value: number;\n currency: Currency;\n denominationPosition?: 'left' | 'right';\n}): string => {\n let amountValue = value;\n const abbreviations = getCurrencyAbbreviations(currency);\n const abbreviation = abbreviations.find((abbr) => amountValue >= abbr.value);\n\n if (abbreviation) {\n amountValue = amountValue / abbreviation.value;\n const formattedAmountValue = getFlooredFixed(amountValue, 2);\n\n if (denominationPosition === 'right') {\n return `${addCommas(formattedAmountValue, currency)}${abbreviation.symbol}`;\n }\n\n return `${abbreviation.symbol}${addCommas(formattedAmountValue, currency)}`;\n }\n\n return amountValue.toString();\n};\n\ntype FormatAmountWithSuffixType = {\n suffix: AmountProps['suffix'];\n value: number;\n currency: Currency;\n denominationPosition?: 'left' | 'right';\n};\n\nexport const formatAmountWithSuffix = ({\n suffix,\n value,\n currency,\n denominationPosition,\n}: FormatAmountWithSuffixType): string => {\n switch (suffix) {\n case 'decimals': {\n const decimalNumber = getFlooredFixed(value, 2);\n return addCommas(decimalNumber, currency, 2);\n }\n case 'humanize': {\n return getHumanizedAmount({ value, currency, denominationPosition });\n }\n case 'none': {\n return addCommas(getFlooredFixed(value, 0), currency);\n }\n default:\n return addCommas(getFlooredFixed(value, 0), currency);\n }\n};\n\nconst _Amount = ({\n value,\n suffix = 'decimals',\n type = 'body',\n size = 'medium',\n weight = 'regular',\n isAffixSubtle = true,\n isStrikethrough = false,\n color,\n currencyIndicator = 'currency-symbol',\n currency = 'INR',\n testID,\n ...styledProps\n}: AmountProps): ReactElement => {\n if (__DEV__) {\n if (typeof value !== 'number') {\n throwBladeError({\n message: '`value` prop must be of type `number` for Amount.',\n moduleName: 'Amount',\n });\n }\n // @ts-expect-error neutral color should throw error\n if (color === 'neutral') {\n throwBladeError({\n message: '`neutral` color is not supported.',\n moduleName: 'Amount',\n });\n }\n\n const bodySizes = objectKeysWithType(normalAmountSizes.body);\n if ((type === 'body' || !type) && !bodySizes.includes(size)) {\n throwBladeError({\n message: `size=\"${size}\" is not allowed with type=\"body\"`,\n moduleName: 'Amount',\n });\n }\n\n const displaySizes = objectKeysWithType(normalAmountSizes.display);\n if (type === 'display' && !displaySizes.includes(size)) {\n throwBladeError({\n message: `size=\"${size}\" is not allowed with type=\"display\"`,\n moduleName: 'Amount',\n });\n }\n\n const headingSizes = objectKeysWithType(normalAmountSizes.heading);\n if (type === 'heading' && !headingSizes.includes(size)) {\n throwBladeError({\n message: `size=\"${size}\" is not allowed with type=\"heading\"`,\n moduleName: 'Amount',\n });\n }\n }\n\n const currencySymbolOrCode = currencyIndicatorMapping[currency][currencyIndicator];\n const currencyPosition = currencyPositionMapping[currency] || 'left';\n const denominationPosition = currencyPosition === 'left' ? 'right' : 'left';\n const renderedValue = formatAmountWithSuffix({ suffix, value, currency, denominationPosition });\n const { amountValueColor } = getTextColorProps({\n color,\n });\n\n const currencyFontSize = isAffixSubtle\n ? subtleFontSizes[type][size]\n : normalAmountSizes[type][size];\n const isReactNative = getPlatformType() === 'react-native';\n\n return (\n <BaseBox\n display={(isReactNative ? 'flex' : 'inline-flex') as never}\n flexDirection=\"row\"\n {...metaAttribute({ name: MetaConstants.Amount, testID })}\n {...getStyledProps(styledProps)}\n >\n <BaseBox\n display={(isReactNative ? 'flex' : 'inline-flex') as never}\n alignItems=\"baseline\"\n flexDirection=\"row\"\n position=\"relative\"\n >\n {currencyPosition === 'left' && (\n <BaseText\n marginRight=\"spacing.1\"\n fontWeight={weight}\n fontSize={currencyFontSize}\n color={amountValueColor}\n as={isReactNative ? undefined : 'span'}\n opacity={isAffixSubtle ? opacity[8] : 1}\n >\n {currencySymbolOrCode}\n </BaseText>\n )}\n <AmountValue\n value={renderedValue}\n amountValueColor={amountValueColor}\n type={type}\n weight={weight}\n size={size}\n isAffixSubtle={isAffixSubtle}\n suffix={suffix}\n />\n {currencyPosition === 'right' && (\n <BaseText\n marginLeft=\"spacing.1\"\n fontWeight={weight}\n fontSize={currencyFontSize}\n color={amountValueColor}\n as={isReactNative ? undefined : 'span'}\n opacity={isAffixSubtle ? opacity[8] : 1}\n >\n {currencySymbolOrCode}\n </BaseText>\n )}\n {isStrikethrough && (\n <BaseBox\n // @ts-expect-error - intentionally setting the border color to the color prop for this hacky strikethrough\n borderBottomColor={amountValueColor}\n borderBottomWidth={type === 'body' ? 'thin' : 'thicker'}\n borderBottomStyle=\"solid\"\n position=\"absolute\"\n width=\"100%\"\n top=\"50%\"\n />\n )}\n </BaseBox>\n </BaseBox>\n );\n};\n\nconst Amount = assignWithoutSideEffects(_Amount, {\n displayName: 'Amount',\n componentId: 'Amount',\n});\n\nexport type { AmountProps };\nexport { Amount };\n"],"names":["getTextColorProps","_ref","color","props","amountValueColor","AmountValue","_ref2","value","_ref2$size","size","_ref2$type","type","_ref2$weight","weight","isAffixSubtle","suffix","isReactNative","getPlatformType","affixFontSize","subtleFontSizes","normalAmountSizes","numberFontFamily","integer","split","decimal","AmountWrapper","Text","React","Fragment","_jsxs","children","_jsx","BaseText","fontSize","fontWeight","lineHeight","amountLineHeights","fontFamily","as","undefined","opacity","getFlooredFixed","decimalPlaces","factor","Math","pow","roundedValue","floor","Number","toFixed","addCommas","amountValue","currency","arguments","length","locale","toLocaleString","minimumFractionDigits","getHumanizedAmount","_ref3","_ref3$denominationPos","denominationPosition","abbreviations","getCurrencyAbbreviations","abbreviation","find","abbr","formattedAmountValue","concat","symbol","toString","formatAmountWithSuffix","_ref4","decimalNumber","_Amount","_ref5","_ref5$suffix","_ref5$type","_ref5$size","_ref5$weight","_ref5$isAffixSubtle","_ref5$isStrikethrough","isStrikethrough","_ref5$currencyIndicat","currencyIndicator","_ref5$currency","testID","styledProps","_objectWithoutProperties","_excluded","throwBladeError","message","moduleName","bodySizes","objectKeysWithType","body","includes","displaySizes","display","headingSizes","heading","currencySymbolOrCode","currencyIndicatorMapping","currencyPosition","currencyPositionMapping","renderedValue","_getTextColorProps","currencyFontSize","BaseBox","_objectSpread","flexDirection","metaAttribute","name","MetaConstants","Amount","getStyledProps","alignItems","position","marginRight","marginLeft","borderBottomColor","borderBottomWidth","borderBottomStyle","width","top","assignWithoutSideEffects","displayName","componentId"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8EA,IAAMA,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAAC,IAAA,EAA+D;AAAA,EAAA,IAAzDC,KAAK,GAAAD,IAAA,CAALC,KAAK,CAAA;AAChC,EAAA,IAAMC,KAAiB,GAAG;AACxBC,IAAAA,gBAAgB,EAAE,0BAAA;GACnB,CAAA;AACD,EAAA,IAAI,CAACF,KAAK,EAAE,OAAOC,KAAK,CAAA;EACxBA,KAAK,CAACC,gBAAgB,GAAGF,KAAK,CAAA;AAC9B,EAAA,OAAOC,KAAK,CAAA;AACd,CAAC,CAAA;AAQD,IAAME,WAAW,GAAG,SAAdA,WAAWA,CAAAC,KAAA,EAQgB;AAAA,EAAA,IAP/BC,KAAK,GAAAD,KAAA,CAALC,KAAK;IAAAC,UAAA,GAAAF,KAAA,CACLG,IAAI;AAAJA,IAAAA,IAAI,GAAAD,UAAA,KAAG,KAAA,CAAA,GAAA,QAAQ,GAAAA,UAAA;IAAAE,UAAA,GAAAJ,KAAA,CACfK,IAAI;AAAJA,IAAAA,IAAI,GAAAD,UAAA,KAAG,KAAA,CAAA,GAAA,MAAM,GAAAA,UAAA;IAAAE,YAAA,GAAAN,KAAA,CACbO,MAAM;AAANA,IAAAA,MAAM,GAAAD,YAAA,KAAG,KAAA,CAAA,GAAA,SAAS,GAAAA,YAAA;IAClBR,gBAAgB,GAAAE,KAAA,CAAhBF,gBAAgB;IAChBU,aAAa,GAAAR,KAAA,CAAbQ,aAAa;IACbC,MAAM,GAAAT,KAAA,CAANS,MAAM,CAAA;AAEN,EAAA,IAAMC,aAAa,GAAGC,eAAe,EAAE,KAAK,cAAc,CAAA;AAC1D,EAAA,IAAMC,aAAa,GAAGJ,aAAa,GAAGK,eAAe,CAACR,IAAI,CAAC,CAACF,IAAI,CAAC,GAAGW,iBAAiB,CAACT,IAAI,CAAC,CAACF,IAAI,CAAC,CAAA;EACjG,IAAMY,gBAAkC,GAAGV,IAAI,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;AAC/E,EAAA,IAAII,MAAM,KAAK,UAAU,IAAID,aAAa,EAAE;IAC1C,IAAMQ,OAAO,GAAGf,KAAK,CAACgB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACnC,IAAMC,OAAO,GAAGjB,KAAK,CAACgB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;;AAEnC;IACA,IAAME,aAAa,GAAGT,aAAa,GAAGU,IAAI,GAAGC,cAAK,CAACC,QAAQ,CAAA;IAE3D,oBACEC,IAAA,CAACJ,aAAa,EAAA;MAAAK,QAAA,EAAA,cACZC,GAAA,CAACC,QAAQ,EAAA;AACPC,QAAAA,QAAQ,EAAEb,iBAAiB,CAACT,IAAI,CAAC,CAACF,IAAI,CAAE;AACxCyB,QAAAA,UAAU,EAAErB,MAAO;AACnBsB,QAAAA,UAAU,EAAEC,iBAAiB,CAACzB,IAAI,CAAC,CAACF,IAAI,CAAE;AAC1CP,QAAAA,KAAK,EAAEE,gBAAiB;AACxBiC,QAAAA,UAAU,EAAEhB,gBAAiB;AAC7BiB,QAAAA,EAAE,EAAEtB,aAAa,GAAGuB,SAAS,GAAG,MAAO;AAAAT,QAAAA,QAAA,EAEtCR,OAAAA;AAAO,OACA,CAAC,eACXO,IAAA,CAACG,QAAQ,EAAA;AACPE,QAAAA,UAAU,EAAErB,MAAO;AACnBoB,QAAAA,QAAQ,EAAEf,aAAc;AACxBmB,QAAAA,UAAU,EAAEhB,gBAAiB;AAC7BnB,QAAAA,KAAK,EAAEE,gBAAiB;AACxBkC,QAAAA,EAAE,EAAEtB,aAAa,GAAGuB,SAAS,GAAG,MAAO;QACvCC,OAAO,EAAE1B,aAAa,GAAG0B,OAAO,CAAC,CAAC,CAAC,GAAG,CAAE;AAAAV,QAAAA,QAAA,EACzC,CAAA,GACE,EAACN,OAAO,IAAI,IAAI,CAAA;AAAA,OACT,CAAC,CAAA;AAAA,KACE,CAAC,CAAA;AAEpB,GAAA;EACA,oBACEO,GAAA,CAACC,QAAQ,EAAA;AACPC,IAAAA,QAAQ,EAAEb,iBAAiB,CAACT,IAAI,CAAC,CAACF,IAAI,CAAE;AACxCyB,IAAAA,UAAU,EAAErB,MAAO;AACnBwB,IAAAA,UAAU,EAAEhB,gBAAiB;AAC7BnB,IAAAA,KAAK,EAAEE,gBAAiB;AACxB+B,IAAAA,UAAU,EAAEC,iBAAiB,CAACzB,IAAI,CAAC,CAACF,IAAI,CAAE;AAAAqB,IAAAA,QAAA,EAEzCvB,KAAAA;AAAK,GACE,CAAC,CAAA;AAEf,CAAC,CAAA;;AAED;AACA;AACO,IAAMkC,eAAe,GAAG,SAAlBA,eAAeA,CAAIlC,KAAa,EAAEmC,aAAqB,EAAa;EAC/E,IAAMC,MAAM,GAAAC,IAAA,CAAAC,GAAA,CAAG,GAAG,EAAIH,aAAa,CAAA,CAAA;EACnC,IAAMI,YAAY,GAAGF,IAAI,CAACG,KAAK,CAACxC,KAAK,GAAGoC,MAAM,CAAC,GAAGA,MAAM,CAAA;EACxD,OAAOK,MAAM,CAACF,YAAY,CAACG,OAAO,CAACP,aAAa,CAAC,CAAC,CAAA;AACpD,EAAC;AAEM,IAAMQ,SAAS,GAAG,SAAZA,SAASA,CAAIC,WAAmB,EAAEC,QAAkB,EAAgC;AAAA,EAAA,IAA9BV,aAAa,GAAAW,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAd,SAAA,GAAAc,SAAA,CAAA,CAAA,CAAA,GAAG,CAAC,CAAA;AAClF;AACA;EACA,IAAME,MAAM,GAAGH,QAAQ,KAAK,KAAK,GAAG,OAAO,GAAG,OAAO,CAAA;AACrD,EAAA,OAAOD,WAAW,CAACK,cAAc,CAACD,MAAM,EAAE;AAAEE,IAAAA,qBAAqB,EAAEf,aAAAA;AAAc,GAAC,CAAC,CAAA;AACrF,EAAC;AACD;AACA;AACA;AACA;AACA;IACagB,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAAC,KAAA,EAQjB;AAAA,EAAA,IAPZpD,KAAK,GAAAoD,KAAA,CAALpD,KAAK;IACL6C,QAAQ,GAAAO,KAAA,CAARP,QAAQ;IAAAQ,qBAAA,GAAAD,KAAA,CACRE,oBAAoB;AAApBA,IAAAA,oBAAoB,GAAAD,qBAAA,KAAG,KAAA,CAAA,GAAA,OAAO,GAAAA,qBAAA,CAAA;EAM9B,IAAIT,WAAW,GAAG5C,KAAK,CAAA;AACvB,EAAA,IAAMuD,aAAa,GAAGC,wBAAwB,CAACX,QAAQ,CAAC,CAAA;AACxD,EAAA,IAAMY,YAAY,GAAGF,aAAa,CAACG,IAAI,CAAC,UAACC,IAAI,EAAA;AAAA,IAAA,OAAKf,WAAW,IAAIe,IAAI,CAAC3D,KAAK,CAAA;GAAC,CAAA,CAAA;AAE5E,EAAA,IAAIyD,YAAY,EAAE;AAChBb,IAAAA,WAAW,GAAGA,WAAW,GAAGa,YAAY,CAACzD,KAAK,CAAA;AAC9C,IAAA,IAAM4D,oBAAoB,GAAG1B,eAAe,CAACU,WAAW,EAAE,CAAC,CAAC,CAAA;IAE5D,IAAIU,oBAAoB,KAAK,OAAO,EAAE;AACpC,MAAA,OAAA,EAAA,CAAAO,MAAA,CAAUlB,SAAS,CAACiB,oBAAoB,EAAEf,QAAQ,CAAC,CAAAgB,CAAAA,MAAA,CAAGJ,YAAY,CAACK,MAAM,CAAA,CAAA;AAC3E,KAAA;AAEA,IAAA,OAAA,EAAA,CAAAD,MAAA,CAAUJ,YAAY,CAACK,MAAM,CAAA,CAAAD,MAAA,CAAGlB,SAAS,CAACiB,oBAAoB,EAAEf,QAAQ,CAAC,CAAA,CAAA;AAC3E,GAAA;AAEA,EAAA,OAAOD,WAAW,CAACmB,QAAQ,EAAE,CAAA;AAC/B,EAAC;IASYC,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAAC,KAAA,EAKO;AAAA,EAAA,IAJxCzD,MAAM,GAAAyD,KAAA,CAANzD,MAAM;IACNR,KAAK,GAAAiE,KAAA,CAALjE,KAAK;IACL6C,QAAQ,GAAAoB,KAAA,CAARpB,QAAQ;IACRS,oBAAoB,GAAAW,KAAA,CAApBX,oBAAoB,CAAA;AAEpB,EAAA,QAAQ9C,MAAM;AACZ,IAAA,KAAK,UAAU;AAAE,MAAA;AACf,QAAA,IAAM0D,aAAa,GAAGhC,eAAe,CAAClC,KAAK,EAAE,CAAC,CAAC,CAAA;AAC/C,QAAA,OAAO2C,SAAS,CAACuB,aAAa,EAAErB,QAAQ,EAAE,CAAC,CAAC,CAAA;AAC9C,OAAA;AACA,IAAA,KAAK,UAAU;AAAE,MAAA;AACf,QAAA,OAAOM,kBAAkB,CAAC;AAAEnD,UAAAA,KAAK,EAALA,KAAK;AAAE6C,UAAAA,QAAQ,EAARA,QAAQ;AAAES,UAAAA,oBAAoB,EAApBA,oBAAAA;AAAqB,SAAC,CAAC,CAAA;AACtE,OAAA;AACA,IAAA,KAAK,MAAM;AAAE,MAAA;QACX,OAAOX,SAAS,CAACT,eAAe,CAAClC,KAAK,EAAE,CAAC,CAAC,EAAE6C,QAAQ,CAAC,CAAA;AACvD,OAAA;AACA,IAAA;MACE,OAAOF,SAAS,CAACT,eAAe,CAAClC,KAAK,EAAE,CAAC,CAAC,EAAE6C,QAAQ,CAAC,CAAA;AACzD,GAAA;AACF,EAAC;AAED,IAAMsB,OAAO,GAAG,SAAVA,OAAOA,CAAAC,KAAA,EAaoB;AAAA,EAAA,IAZ/BpE,KAAK,GAAAoE,KAAA,CAALpE,KAAK;IAAAqE,YAAA,GAAAD,KAAA,CACL5D,MAAM;AAANA,IAAAA,MAAM,GAAA6D,YAAA,KAAG,KAAA,CAAA,GAAA,UAAU,GAAAA,YAAA;IAAAC,UAAA,GAAAF,KAAA,CACnBhE,IAAI;AAAJA,IAAAA,IAAI,GAAAkE,UAAA,KAAG,KAAA,CAAA,GAAA,MAAM,GAAAA,UAAA;IAAAC,UAAA,GAAAH,KAAA,CACblE,IAAI;AAAJA,IAAAA,IAAI,GAAAqE,UAAA,KAAG,KAAA,CAAA,GAAA,QAAQ,GAAAA,UAAA;IAAAC,YAAA,GAAAJ,KAAA,CACf9D,MAAM;AAANA,IAAAA,MAAM,GAAAkE,YAAA,KAAG,KAAA,CAAA,GAAA,SAAS,GAAAA,YAAA;IAAAC,mBAAA,GAAAL,KAAA,CAClB7D,aAAa;AAAbA,IAAAA,aAAa,GAAAkE,mBAAA,KAAG,KAAA,CAAA,GAAA,IAAI,GAAAA,mBAAA;IAAAC,qBAAA,GAAAN,KAAA,CACpBO,eAAe;AAAfA,IAAAA,eAAe,GAAAD,qBAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,qBAAA;IACvB/E,KAAK,GAAAyE,KAAA,CAALzE,KAAK;IAAAiF,qBAAA,GAAAR,KAAA,CACLS,iBAAiB;AAAjBA,IAAAA,iBAAiB,GAAAD,qBAAA,KAAG,KAAA,CAAA,GAAA,iBAAiB,GAAAA,qBAAA;IAAAE,cAAA,GAAAV,KAAA,CACrCvB,QAAQ;AAARA,IAAAA,QAAQ,GAAAiC,cAAA,KAAG,KAAA,CAAA,GAAA,KAAK,GAAAA,cAAA;IAChBC,MAAM,GAAAX,KAAA,CAANW,MAAM;AACHC,IAAAA,WAAW,GAAAC,wBAAA,CAAAb,KAAA,EAAAc,SAAA,CAAA,CAAA;AAEd,EAAA,IAAI,KAAO,EAAE;AACX,IAAA,IAAI,OAAOlF,KAAK,KAAK,QAAQ,EAAE;AAC7BmF,MAAAA,eAAe,CAAC;AACdC,QAAAA,OAAO,EAAE,mDAAmD;AAC5DC,QAAAA,UAAU,EAAE,QAAA;AACd,OAAC,CAAC,CAAA;AACJ,KAAA;AACA;IACA,IAAI1F,KAAK,KAAK,SAAS,EAAE;AACvBwF,MAAAA,eAAe,CAAC;AACdC,QAAAA,OAAO,EAAE,mCAAmC;AAC5CC,QAAAA,UAAU,EAAE,QAAA;AACd,OAAC,CAAC,CAAA;AACJ,KAAA;AAEA,IAAA,IAAMC,SAAS,GAAGC,kBAAkB,CAAC1E,iBAAiB,CAAC2E,IAAI,CAAC,CAAA;AAC5D,IAAA,IAAI,CAACpF,IAAI,KAAK,MAAM,IAAI,CAACA,IAAI,KAAK,CAACkF,SAAS,CAACG,QAAQ,CAACvF,IAAI,CAAC,EAAE;AAC3DiF,MAAAA,eAAe,CAAC;AACdC,QAAAA,OAAO,EAAAvB,SAAAA,CAAAA,MAAA,CAAW3D,IAAI,EAAmC,sCAAA,CAAA;AACzDmF,QAAAA,UAAU,EAAE,QAAA;AACd,OAAC,CAAC,CAAA;AACJ,KAAA;AAEA,IAAA,IAAMK,YAAY,GAAGH,kBAAkB,CAAC1E,iBAAiB,CAAC8E,OAAO,CAAC,CAAA;IAClE,IAAIvF,IAAI,KAAK,SAAS,IAAI,CAACsF,YAAY,CAACD,QAAQ,CAACvF,IAAI,CAAC,EAAE;AACtDiF,MAAAA,eAAe,CAAC;AACdC,QAAAA,OAAO,EAAAvB,SAAAA,CAAAA,MAAA,CAAW3D,IAAI,EAAsC,yCAAA,CAAA;AAC5DmF,QAAAA,UAAU,EAAE,QAAA;AACd,OAAC,CAAC,CAAA;AACJ,KAAA;AAEA,IAAA,IAAMO,YAAY,GAAGL,kBAAkB,CAAC1E,iBAAiB,CAACgF,OAAO,CAAC,CAAA;IAClE,IAAIzF,IAAI,KAAK,SAAS,IAAI,CAACwF,YAAY,CAACH,QAAQ,CAACvF,IAAI,CAAC,EAAE;AACtDiF,MAAAA,eAAe,CAAC;AACdC,QAAAA,OAAO,EAAAvB,SAAAA,CAAAA,MAAA,CAAW3D,IAAI,EAAsC,yCAAA,CAAA;AAC5DmF,QAAAA,UAAU,EAAE,QAAA;AACd,OAAC,CAAC,CAAA;AACJ,KAAA;AACF,GAAA;EAEA,IAAMS,oBAAoB,GAAGC,wBAAwB,CAAClD,QAAQ,CAAC,CAACgC,iBAAiB,CAAC,CAAA;AAClF,EAAA,IAAMmB,gBAAgB,GAAGC,uBAAuB,CAACpD,QAAQ,CAAC,IAAI,MAAM,CAAA;EACpE,IAAMS,oBAAoB,GAAG0C,gBAAgB,KAAK,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;EAC3E,IAAME,aAAa,GAAGlC,sBAAsB,CAAC;AAAExD,IAAAA,MAAM,EAANA,MAAM;AAAER,IAAAA,KAAK,EAALA,KAAK;AAAE6C,IAAAA,QAAQ,EAARA,QAAQ;AAAES,IAAAA,oBAAoB,EAApBA,oBAAAA;AAAqB,GAAC,CAAC,CAAA;EAC/F,IAAA6C,kBAAA,GAA6B1G,iBAAiB,CAAC;AAC7CE,MAAAA,KAAK,EAALA,KAAAA;AACF,KAAC,CAAC;IAFME,gBAAgB,GAAAsG,kBAAA,CAAhBtG,gBAAgB,CAAA;AAIxB,EAAA,IAAMuG,gBAAgB,GAAG7F,aAAa,GAClCK,eAAe,CAACR,IAAI,CAAC,CAACF,IAAI,CAAC,GAC3BW,iBAAiB,CAACT,IAAI,CAAC,CAACF,IAAI,CAAC,CAAA;AACjC,EAAA,IAAMO,aAAa,GAAGC,eAAe,EAAE,KAAK,cAAc,CAAA;EAE1D,oBACEc,GAAA,CAAC6E,OAAO,EAAAC,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAA;AACNX,IAAAA,OAAO,EAAGlF,aAAa,GAAG,MAAM,GAAG,aAAwB;AAC3D8F,IAAAA,aAAa,EAAC,KAAA;AAAK,GAAA,EACfC,aAAa,CAAC;IAAEC,IAAI,EAAEC,aAAa,CAACC,MAAM;AAAE5B,IAAAA,MAAM,EAANA,MAAAA;AAAO,GAAC,CAAC,CAAA,EACrD6B,cAAc,CAAC5B,WAAW,CAAC,CAAA,EAAA,EAAA,EAAA;IAAAzD,QAAA,eAE/BD,IAAA,CAAC+E,OAAO,EAAA;AACNV,MAAAA,OAAO,EAAGlF,aAAa,GAAG,MAAM,GAAG,aAAwB;AAC3DoG,MAAAA,UAAU,EAAC,UAAU;AACrBN,MAAAA,aAAa,EAAC,KAAK;AACnBO,MAAAA,QAAQ,EAAC,UAAU;AAAAvF,MAAAA,QAAA,GAElByE,gBAAgB,KAAK,MAAM,iBAC1BxE,GAAA,CAACC,QAAQ,EAAA;AACPsF,QAAAA,WAAW,EAAC,WAAW;AACvBpF,QAAAA,UAAU,EAAErB,MAAO;AACnBoB,QAAAA,QAAQ,EAAE0E,gBAAiB;AAC3BzG,QAAAA,KAAK,EAAEE,gBAAiB;AACxBkC,QAAAA,EAAE,EAAEtB,aAAa,GAAGuB,SAAS,GAAG,MAAO;QACvCC,OAAO,EAAE1B,aAAa,GAAG0B,OAAO,CAAC,CAAC,CAAC,GAAG,CAAE;AAAAV,QAAAA,QAAA,EAEvCuE,oBAAAA;AAAoB,OACb,CACX,eACDtE,GAAA,CAAC1B,WAAW,EAAA;AACVE,QAAAA,KAAK,EAAEkG,aAAc;AACrBrG,QAAAA,gBAAgB,EAAEA,gBAAiB;AACnCO,QAAAA,IAAI,EAAEA,IAAK;AACXE,QAAAA,MAAM,EAAEA,MAAO;AACfJ,QAAAA,IAAI,EAAEA,IAAK;AACXK,QAAAA,aAAa,EAAEA,aAAc;AAC7BC,QAAAA,MAAM,EAAEA,MAAAA;OACT,CAAC,EACDwF,gBAAgB,KAAK,OAAO,iBAC3BxE,GAAA,CAACC,QAAQ,EAAA;AACPuF,QAAAA,UAAU,EAAC,WAAW;AACtBrF,QAAAA,UAAU,EAAErB,MAAO;AACnBoB,QAAAA,QAAQ,EAAE0E,gBAAiB;AAC3BzG,QAAAA,KAAK,EAAEE,gBAAiB;AACxBkC,QAAAA,EAAE,EAAEtB,aAAa,GAAGuB,SAAS,GAAG,MAAO;QACvCC,OAAO,EAAE1B,aAAa,GAAG0B,OAAO,CAAC,CAAC,CAAC,GAAG,CAAE;AAAAV,QAAAA,QAAA,EAEvCuE,oBAAAA;AAAoB,OACb,CACX,EACAnB,eAAe,iBACdnD,GAAA,CAAC6E,OAAAA;AACC;AAAA,QAAA;AACAY,QAAAA,iBAAiB,EAAEpH,gBAAiB;AACpCqH,QAAAA,iBAAiB,EAAE9G,IAAI,KAAK,MAAM,GAAG,MAAM,GAAG,SAAU;AACxD+G,QAAAA,iBAAiB,EAAC,OAAO;AACzBL,QAAAA,QAAQ,EAAC,UAAU;AACnBM,QAAAA,KAAK,EAAC,MAAM;AACZC,QAAAA,GAAG,EAAC,KAAA;AAAK,OACV,CACF,CAAA;KACM,CAAA;AAAC,GAAA,CACH,CAAC,CAAA;AAEd,CAAC,CAAA;AAED,IAAMV,MAAM,gBAAGW,wBAAwB,CAACnD,OAAO,EAAE;AAC/CoD,EAAAA,WAAW,EAAE,QAAQ;AACrBC,EAAAA,WAAW,EAAE,QAAA;AACf,CAAC;;;;"}
1
+ {"version":3,"file":"Amount.js","sources":["../../../../../../src/components/Amount/Amount.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport React from 'react';\nimport type { CurrencyCodeType } from '@razorpay/i18nify-js/currency';\nimport { formatNumber, formatNumberByParts } from '@razorpay/i18nify-js/currency';\nimport type { AmountTypeProps } from './amountTokens';\nimport { normalAmountSizes, subtleFontSizes, amountLineHeights } from './amountTokens';\nimport type { BaseTextProps } from '~components/Typography/BaseText/types';\nimport BaseBox from '~components/Box/BaseBox';\nimport type { TestID } from '~utils/types';\nimport { getPlatformType } from '~utils';\nimport { metaAttribute, MetaConstants } from '~utils/metaAttribute';\nimport { getStyledProps } from '~components/Box/styledProps';\nimport type { StyledPropsBlade } from '~components/Box/styledProps';\nimport { assignWithoutSideEffects } from '~utils/assignWithoutSideEffects';\nimport { throwBladeError } from '~utils/logger';\nimport { objectKeysWithType } from '~utils/objectKeysWithType';\nimport { BaseText } from '~components/Typography/BaseText';\nimport { Text } from '~components/Typography';\nimport { opacity } from '~tokens/global';\nimport type { FontFamily } from '~tokens/global';\n\ntype AmountCommonProps = {\n /**\n * The value to be rendered within the component.\n *\n */\n value: number;\n /**\n * Sets the color of the amount.\n *\n * @default undefined\n */\n color?: BaseTextProps['color'];\n /**\n * Indicates what the suffix of amount should be\n *\n * @default 'decimals'\n */\n suffix?: 'decimals' | 'none' | 'humanize';\n /**\n * Makes the currency indicator(currency symbol/code) and decimal digits small and faded\n *\n * @default true\n */\n isAffixSubtle?: true | false;\n /**\n * Determines the visual representation of the currency, choose between displaying the currency symbol or code.\n *\n * Note: Currency symbol and code is determined by the locale set in user's browser or set via @razorpay/i18nify-react library.\n *\n * @default 'currency-symbol'\n */\n currencyIndicator?: 'currency-symbol' | 'currency-code';\n /**\n * The currency of the amount. Note that this component\n * only displays the provided value in the specified currency, it does not perform any currency conversion.\n *\n * @default 'INR'\n * */\n currency?: CurrencyCodeType;\n /**\n * If true, the amount text will have a line through it.\n *\n * @default false\n */\n isStrikethrough?: boolean;\n} & TestID &\n StyledPropsBlade;\n\ntype ColorProps = {\n amountValueColor: BaseTextProps['color'];\n};\n\ntype AmountProps = AmountTypeProps & AmountCommonProps;\n\nconst getTextColorProps = ({ color }: { color: AmountProps['color'] }): ColorProps => {\n const props: ColorProps = {\n amountValueColor: 'surface.text.gray.normal',\n };\n if (!color) return props;\n props.amountValueColor = color;\n return props;\n};\n\ntype AmountType = Partial<ReturnType<typeof formatNumberByParts>> & { formatted: string };\n\ninterface AmountValue extends Omit<AmountProps, 'value'> {\n amountValueColor: BaseTextProps['color'];\n amount: AmountType;\n size: Exclude<AmountProps['size'], undefined>;\n}\n\nconst AmountValue = ({\n amount,\n size = 'medium',\n type = 'body',\n weight = 'regular',\n amountValueColor,\n isAffixSubtle,\n suffix,\n}: AmountValue): ReactElement => {\n const isReactNative = getPlatformType() === 'react-native';\n const affixFontSize = isAffixSubtle ? subtleFontSizes[type][size] : normalAmountSizes[type][size];\n const numberFontFamily: keyof FontFamily = type === 'body' ? 'text' : 'heading';\n if (suffix === 'decimals' && isAffixSubtle) {\n // Native does not support alignItems of Text inside a div, instead we need to wrap is in a Text\n const AmountWrapper = isReactNative ? Text : React.Fragment;\n\n return (\n <AmountWrapper>\n <BaseText\n fontSize={normalAmountSizes[type][size]}\n fontWeight={weight}\n lineHeight={amountLineHeights[type][size]}\n color={amountValueColor}\n fontFamily={numberFontFamily}\n as={isReactNative ? undefined : 'span'}\n >\n {amount.integer}\n </BaseText>\n <BaseText\n fontWeight={weight}\n fontSize={affixFontSize}\n fontFamily={numberFontFamily}\n color={amountValueColor}\n as={isReactNative ? undefined : 'span'}\n opacity={isAffixSubtle ? opacity[8] : 1}\n >\n {amount.decimal}\n {amount.fraction}\n </BaseText>\n </AmountWrapper>\n );\n }\n\n return (\n <BaseText\n fontSize={normalAmountSizes[type][size]}\n fontWeight={weight}\n fontFamily={numberFontFamily}\n color={amountValueColor}\n lineHeight={amountLineHeights[type][size]}\n >\n {amount.formatted}\n </BaseText>\n );\n};\n\ntype FormatAmountWithSuffixType = {\n suffix: AmountProps['suffix'];\n value: number;\n};\n\n/**\n * Returns a parsed object based on the suffix passed in parameters\n * === Logic ===\n * value = 12500.45 \n * if suffix === 'decimals' => {\n \"formatted\": \"12,500.45\",\n \"integer\": \"12,500\",\n \"decimal\": \".\",\n \"fraction\": \"45\",\n \"isPrefixSymbol\": false,\n \"rawParts\": [{\"type\": \"integer\",\"value\": \"12\"},{\"type\": \"group\",\"value\": \",\"},{\"type\": \"integer\",\"value\": \"500\"},{\"type\": \"decimal\",\"value\": \".\"},{\"type\": \"fraction\",\"value\": \"45\"}]\n}\n * else if suffix === 'humanize' => { formatted: \"1.2T\" }\n * else => { formatted: \"1,23,456\" }\n * @returns {AmountType}\n */\nexport const formatAmountWithSuffix = ({\n suffix,\n value,\n}: FormatAmountWithSuffixType): AmountType => {\n try {\n switch (suffix) {\n case 'decimals': {\n const options = {\n intlOptions: {\n maximumFractionDigits: 2,\n minimumFractionDigits: 2,\n },\n };\n return {\n ...formatNumberByParts(value, options),\n formatted: formatNumber(value, options),\n };\n }\n case 'humanize': {\n const formatted = formatNumber(value, {\n intlOptions: {\n notation: 'compact',\n },\n });\n return {\n formatted,\n };\n }\n\n default: {\n const formatted = formatNumber(value, {\n intlOptions: {\n maximumFractionDigits: 0,\n roundingMode: 'floor',\n },\n });\n return {\n formatted,\n };\n }\n }\n } catch (err: unknown) {\n return {\n formatted: `${value}`,\n };\n }\n};\n\nconst _Amount = ({\n value,\n suffix = 'decimals',\n type = 'body',\n size = 'medium',\n weight = 'regular',\n isAffixSubtle = true,\n isStrikethrough = false,\n color,\n currencyIndicator = 'currency-symbol',\n currency = 'INR',\n testID,\n ...styledProps\n}: AmountProps): ReactElement => {\n if (__DEV__) {\n if (typeof value !== 'number') {\n throwBladeError({\n message: '`value` prop must be of type `number` for Amount.',\n moduleName: 'Amount',\n });\n }\n // @ts-expect-error neutral color should throw error\n if (color === 'neutral') {\n throwBladeError({\n message: '`neutral` color is not supported.',\n moduleName: 'Amount',\n });\n }\n\n const bodySizes = objectKeysWithType(normalAmountSizes.body);\n if ((type === 'body' || !type) && !bodySizes.includes(size)) {\n throwBladeError({\n message: `size=\"${size}\" is not allowed with type=\"body\"`,\n moduleName: 'Amount',\n });\n }\n\n const displaySizes = objectKeysWithType(normalAmountSizes.display);\n if (type === 'display' && !displaySizes.includes(size)) {\n throwBladeError({\n message: `size=\"${size}\" is not allowed with type=\"display\"`,\n moduleName: 'Amount',\n });\n }\n\n const headingSizes = objectKeysWithType(normalAmountSizes.heading);\n if (type === 'heading' && !headingSizes.includes(size)) {\n throwBladeError({\n message: `size=\"${size}\" is not allowed with type=\"heading\"`,\n moduleName: 'Amount',\n });\n }\n }\n\n const { amountValueColor } = getTextColorProps({\n color,\n });\n\n let isPrefixSymbol, currencySymbol;\n try {\n const byParts = formatNumberByParts(value, {\n currency,\n });\n isPrefixSymbol = byParts.isPrefixSymbol;\n currencySymbol = byParts.currency;\n } catch (err: unknown) {\n isPrefixSymbol = true;\n currencySymbol = currency;\n }\n\n const currencyPosition = isPrefixSymbol ? 'left' : 'right';\n const renderedValue = formatAmountWithSuffix({ suffix, value });\n const currencySymbolOrCode = currencyIndicator === 'currency-symbol' ? currencySymbol : currency;\n\n const currencyFontSize = isAffixSubtle\n ? subtleFontSizes[type][size]\n : normalAmountSizes[type][size];\n const isReactNative = getPlatformType() === 'react-native';\n\n return (\n <BaseBox\n display={(isReactNative ? 'flex' : 'inline-flex') as never}\n flexDirection=\"row\"\n {...metaAttribute({ name: MetaConstants.Amount, testID })}\n {...getStyledProps(styledProps)}\n >\n <BaseBox\n display={(isReactNative ? 'flex' : 'inline-flex') as never}\n alignItems=\"baseline\"\n flexDirection=\"row\"\n position=\"relative\"\n >\n {currencyPosition === 'left' && (\n <BaseText\n marginRight=\"spacing.1\"\n fontWeight={weight}\n fontSize={currencyFontSize}\n color={amountValueColor}\n as={isReactNative ? undefined : 'span'}\n opacity={isAffixSubtle ? opacity[8] : 1}\n >\n {currencySymbolOrCode}\n </BaseText>\n )}\n <AmountValue\n amount={renderedValue}\n amountValueColor={amountValueColor}\n type={type}\n weight={weight}\n size={size}\n isAffixSubtle={isAffixSubtle}\n suffix={suffix}\n currency={currency}\n />\n {currencyPosition === 'right' && (\n <BaseText\n marginLeft=\"spacing.1\"\n fontWeight={weight}\n fontSize={currencyFontSize}\n color={amountValueColor}\n as={isReactNative ? undefined : 'span'}\n opacity={isAffixSubtle ? opacity[8] : 1}\n >\n {currencySymbolOrCode}\n </BaseText>\n )}\n {isStrikethrough && (\n <BaseBox\n // @ts-expect-error - intentionally setting the border color to the color prop for this hacky strikethrough\n borderBottomColor={amountValueColor}\n borderBottomWidth={type === 'body' ? 'thin' : 'thicker'}\n borderBottomStyle=\"solid\"\n position=\"absolute\"\n width=\"100%\"\n top=\"50%\"\n />\n )}\n </BaseBox>\n </BaseBox>\n );\n};\n\nconst Amount = assignWithoutSideEffects(_Amount, {\n displayName: 'Amount',\n componentId: 'Amount',\n});\n\nexport type { AmountProps };\nexport { Amount };\n"],"names":["getTextColorProps","_ref","color","props","amountValueColor","AmountValue","_ref2","amount","_ref2$size","size","_ref2$type","type","_ref2$weight","weight","isAffixSubtle","suffix","isReactNative","getPlatformType","affixFontSize","subtleFontSizes","normalAmountSizes","numberFontFamily","AmountWrapper","Text","React","Fragment","_jsxs","children","_jsx","BaseText","fontSize","fontWeight","lineHeight","amountLineHeights","fontFamily","as","undefined","integer","opacity","decimal","fraction","formatted","formatAmountWithSuffix","_ref3","value","options","intlOptions","maximumFractionDigits","minimumFractionDigits","_objectSpread","formatNumberByParts","formatNumber","notation","roundingMode","err","concat","_Amount","_ref4","_ref4$suffix","_ref4$type","_ref4$size","_ref4$weight","_ref4$isAffixSubtle","_ref4$isStrikethrough","isStrikethrough","_ref4$currencyIndicat","currencyIndicator","_ref4$currency","currency","testID","styledProps","_objectWithoutProperties","_excluded","throwBladeError","message","moduleName","bodySizes","objectKeysWithType","body","includes","displaySizes","display","headingSizes","heading","_getTextColorProps","isPrefixSymbol","currencySymbol","byParts","currencyPosition","renderedValue","currencySymbolOrCode","currencyFontSize","BaseBox","flexDirection","metaAttribute","name","MetaConstants","Amount","getStyledProps","alignItems","position","marginRight","marginLeft","borderBottomColor","borderBottomWidth","borderBottomStyle","width","top","assignWithoutSideEffects","displayName","componentId"],"mappings":"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"}