{"version":3,"file":"NumberPercent.cjs","sources":["../../../../src/lib/Number/NumberPercent.tsx"],"sourcesContent":["import {forwardRef, useMemo} from 'react';\nimport classNames from 'classnames';\n\nimport type {DataAttributes, LibraryProps} from '@/internal/LibraryAPI';\nimport {useBrowserLocale} from '@/internal/locale';\nimport classes from '@/lib/Number/Number.module.css';\n\nimport type {NumberProps} from './types.ts';\nimport {Styles} from './types.ts';\nimport {LocaleMatchers, SignDisplayModes} from './types.ts';\n\nexport type Props = DataAttributes &\n    LibraryProps &\n    Omit<\n        NumberProps,\n        | 'notation'\n        | 'compactDisplay'\n        | 'unitDisplay'\n        | 'unit'\n        | 'currency'\n        | 'currencyDisplay'\n        | 'currencySign'\n    >;\n\nexport const NumberPercent = forwardRef<HTMLSpanElement, Props>(\n    (\n        {\n            value,\n            className,\n            locale: localeProp,\n            localeMatcher = LocaleMatchers['best fit'],\n            digitsConfig = {\n                integer: {\n                    minimum: 1,\n                },\n                significant: {\n                    minimum: 1,\n                    maximum: 21,\n                },\n                fraction: {},\n            },\n            grouping,\n            signDisplay = SignDisplayModes.auto,\n            ...nativeProps\n        },\n        ref\n    ) => {\n        const userLocale = useBrowserLocale();\n        const locale = localeProp ? localeProp : userLocale;\n        const formattedValue = useMemo(\n            () =>\n                value\n                    ? new Intl.NumberFormat(locale, {\n                          localeMatcher,\n                          style: Styles.percent,\n                          minimumIntegerDigits: digitsConfig.integer?.minimum,\n                          minimumFractionDigits: digitsConfig.fraction?.minimum,\n                          minimumSignificantDigits: digitsConfig.significant?.minimum,\n                          maximumSignificantDigits: digitsConfig.significant?.maximum,\n                          maximumFractionDigits: digitsConfig.fraction?.maximum,\n                          useGrouping: grouping,\n                          signDisplay,\n                      }).format(value)\n                    : '',\n            [\n                digitsConfig.fraction?.maximum,\n                digitsConfig.fraction?.minimum,\n                digitsConfig.integer?.minimum,\n                digitsConfig.significant?.maximum,\n                digitsConfig.significant?.minimum,\n                grouping,\n                locale,\n                localeMatcher,\n                signDisplay,\n                value,\n            ]\n        );\n        return (\n            value && (\n                <span\n                    {...nativeProps}\n                    title={formattedValue}\n                    className={classNames(classes.number, className)}\n                    ref={ref}>\n                    {formattedValue}\n                </span>\n            )\n        );\n    }\n);\n\nNumberPercent.displayName = 'NumberPercent';\n"],"names":["NumberPercent","forwardRef","value","className","localeProp","localeMatcher","LocaleMatchers","digitsConfig","grouping","signDisplay","SignDisplayModes","nativeProps","ref","userLocale","useBrowserLocale","locale","formattedValue","useMemo","Styles","jsx","classNames","classes"],"mappings":"mSAwBaA,EAAgBC,EAAAA,WACzB,CACI,CACI,MAAAC,EACA,UAAAC,EACA,OAAQC,EACR,cAAAC,EAAgBC,EAAAA,eAAe,UAAU,EACzC,aAAAC,EAAe,CACX,QAAS,CACL,QAAS,CAAA,EAEb,YAAa,CACT,QAAS,EACT,QAAS,EAAA,EAEb,SAAU,CAAA,CAAC,EAEf,SAAAC,EACA,YAAAC,EAAcC,EAAAA,iBAAiB,KAC/B,GAAGC,CAAA,EAEPC,IACC,CACD,MAAMC,EAAaC,EAAAA,iBAAA,EACbC,EAASX,GAA0BS,EACnCG,EAAiBC,EAAAA,QACnB,IACIf,EACM,IAAI,KAAK,aAAaa,EAAQ,CAC1B,cAAAV,EACA,MAAOa,EAAAA,OAAO,QACd,qBAAsBX,EAAa,SAAS,QAC5C,sBAAuBA,EAAa,UAAU,QAC9C,yBAA0BA,EAAa,aAAa,QACpD,yBAA0BA,EAAa,aAAa,QACpD,sBAAuBA,EAAa,UAAU,QAC9C,YAAaC,EACb,YAAAC,CAAA,CACH,EAAE,OAAOP,CAAK,EACf,GACV,CACIK,EAAa,UAAU,QACvBA,EAAa,UAAU,QACvBA,EAAa,SAAS,QACtBA,EAAa,aAAa,QAC1BA,EAAa,aAAa,QAC1BC,EACAO,EACAV,EACAI,EACAP,CAAA,CACJ,EAEJ,OACIA,GACIiB,EAAAA,IAAC,OAAA,CACI,GAAGR,EACJ,MAAOK,EACP,UAAWI,EAAWC,UAAQ,OAAQlB,CAAS,EAC/C,IAAAS,EACC,SAAAI,CAAA,CAAA,CAIjB,CACJ,EAEAhB,EAAc,YAAc"}