{"version":3,"file":"NumberUnit.cjs","sources":["../../../../src/lib/Number/NumberUnit.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';\nimport {Units} from '@/internal/locale';\n\nimport type {NumberProps} from './types.ts';\nimport {Styles, UnitDisplayModes} from './types.ts';\nimport {LocaleMatchers, Notations, CompactDisplayModes, SignDisplayModes} from './types.ts';\n\nexport type Props = DataAttributes &\n    LibraryProps &\n    Omit<NumberProps, 'currency' | 'currencyDisplay' | 'currencySign'>;\n\nexport const NumberUnit = 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            notation = Notations.standard,\n            compactDisplay = CompactDisplayModes.short,\n            grouping,\n            signDisplay = SignDisplayModes.auto,\n            unit = Units.liter,\n            unitDisplay = UnitDisplayModes.short,\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.unit,\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                          notation,\n                          compactDisplay,\n                          useGrouping: grouping,\n                          signDisplay,\n                          unit,\n                          unitDisplay,\n                      }).format(value)\n                    : '',\n            [\n                compactDisplay,\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                notation,\n                signDisplay,\n                unit,\n                unitDisplay,\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\nNumberUnit.displayName = 'NumberUnit';\n"],"names":["NumberUnit","forwardRef","value","className","localeProp","localeMatcher","LocaleMatchers","digitsConfig","notation","Notations","compactDisplay","CompactDisplayModes","grouping","signDisplay","SignDisplayModes","unit","Units","unitDisplay","UnitDisplayModes","nativeProps","ref","userLocale","useBrowserLocale","locale","formattedValue","useMemo","Styles","_a","_b","_c","_d","_e","jsx","classNames","classes"],"mappings":"gVAgBaA,EAAaC,EAAA,WACtB,CACI,CACI,MAAAC,EACA,UAAAC,EACA,OAAQC,EACR,cAAAC,EAAgBC,iBAAe,UAAU,EACzC,aAAAC,EAAe,CACX,QAAS,CACL,QAAS,CACb,EACA,YAAa,CACT,QAAS,EACT,QAAS,EACb,EACA,SAAU,CAAA,CACd,EACA,SAAAC,EAAWC,EAAU,UAAA,SACrB,eAAAC,EAAiBC,EAAoB,oBAAA,MACrC,SAAAC,EACA,YAAAC,EAAcC,EAAiB,iBAAA,KAC/B,KAAAC,EAAOC,EAAM,MAAA,MACb,YAAAC,EAAcC,EAAiB,iBAAA,MAC/B,GAAGC,GAEPC,IACC,eACD,MAAMC,EAAaC,EAAAA,iBAAiB,EAC9BC,EAASnB,GAA0BiB,EACnCG,EAAiBC,EAAA,QACnB,IAAA,eACI,OAAAvB,EACM,IAAI,KAAK,aAAaqB,EAAQ,CAC1B,cAAAlB,EACA,MAAOqB,EAAO,OAAA,KACd,sBAAsBC,EAAApB,EAAa,UAAb,YAAAoB,EAAsB,QAC5C,uBAAuBC,EAAArB,EAAa,WAAb,YAAAqB,EAAuB,QAC9C,0BAA0BC,EAAAtB,EAAa,cAAb,YAAAsB,EAA0B,QACpD,0BAA0BC,EAAAvB,EAAa,cAAb,YAAAuB,EAA0B,QACpD,uBAAuBC,EAAAxB,EAAa,WAAb,YAAAwB,EAAuB,QAC9C,SAAAvB,EACA,eAAAE,EACA,YAAaE,EACb,YAAAC,EACA,KAAAE,EACA,YAAAE,CAAA,CACH,EAAE,OAAOf,CAAK,EACf,IACV,CACIQ,GACAiB,EAAApB,EAAa,WAAb,YAAAoB,EAAuB,SACvBC,EAAArB,EAAa,WAAb,YAAAqB,EAAuB,SACvBC,EAAAtB,EAAa,UAAb,YAAAsB,EAAsB,SACtBC,EAAAvB,EAAa,cAAb,YAAAuB,EAA0B,SAC1BC,EAAAxB,EAAa,cAAb,YAAAwB,EAA0B,QAC1BnB,EACAW,EACAlB,EACAG,EACAK,EACAE,EACAE,EACAf,CAAA,CAER,EACA,OACIA,GACI8B,EAAA,IAAC,OAAA,CACI,GAAGb,EACJ,MAAOK,EACP,UAAWS,EAAWC,UAAQ,OAAQ/B,CAAS,EAC/C,IAAAiB,EACC,SAAAI,CAAA,CACL,CAAA,CAIhB,EAEAxB,EAAW,YAAc"}