koval-ui
Version:
React components collection with minimalistic design. Supports theming, layout, and input validation.
1 lines • 4.89 kB
Source Map (JSON)
{"version":3,"file":"NumberDecimal.cjs","sources":["../../../../src/lib/Number/NumberDecimal.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, Notations, CompactDisplayModes, SignDisplayModes} from './types.ts';\n\nexport type Props = DataAttributes &\n LibraryProps &\n Omit<NumberProps, 'unitDisplay' | 'unit' | 'currency' | 'currencyDisplay' | 'currencySign'>;\n\nexport const NumberDecimal = 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 ...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.decimal,\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 }).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 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\nNumberDecimal.displayName = 'NumberDecimal';\n"],"names":["NumberDecimal","forwardRef","value","className","localeProp","localeMatcher","LocaleMatchers","digitsConfig","notation","Notations","compactDisplay","CompactDisplayModes","grouping","signDisplay","SignDisplayModes","nativeProps","ref","userLocale","useBrowserLocale","locale","formattedValue","useMemo","Styles","_a","_b","_c","_d","_e","jsx","classNames","classes"],"mappings":"mSAeaA,EAAgBC,EAAA,WACzB,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,GAAGC,GAEPC,IACC,eACD,MAAMC,EAAaC,EAAAA,iBAAiB,EAC9BC,EAASf,GAA0Ba,EACnCG,EAAiBC,EAAA,QACnB,IAAA,eACI,OAAAnB,EACM,IAAI,KAAK,aAAaiB,EAAQ,CAC1B,cAAAd,EACA,MAAOiB,EAAO,OAAA,QACd,sBAAsBC,EAAAhB,EAAa,UAAb,YAAAgB,EAAsB,QAC5C,uBAAuBC,EAAAjB,EAAa,WAAb,YAAAiB,EAAuB,QAC9C,0BAA0BC,EAAAlB,EAAa,cAAb,YAAAkB,EAA0B,QACpD,0BAA0BC,EAAAnB,EAAa,cAAb,YAAAmB,EAA0B,QACpD,uBAAuBC,EAAApB,EAAa,WAAb,YAAAoB,EAAuB,QAC9C,SAAAnB,EACA,eAAAE,EACA,YAAaE,EACb,YAAAC,CAAA,CACH,EAAE,OAAOX,CAAK,EACf,IACV,CACIQ,GACAa,EAAAhB,EAAa,WAAb,YAAAgB,EAAuB,SACvBC,EAAAjB,EAAa,WAAb,YAAAiB,EAAuB,SACvBC,EAAAlB,EAAa,UAAb,YAAAkB,EAAsB,SACtBC,EAAAnB,EAAa,cAAb,YAAAmB,EAA0B,SAC1BC,EAAApB,EAAa,cAAb,YAAAoB,EAA0B,QAC1Bf,EACAO,EACAd,EACAG,EACAK,EACAX,CAAA,CAER,EACA,OACIA,GACI0B,EAAA,IAAC,OAAA,CACI,GAAGb,EACJ,MAAOK,EACP,UAAWS,EAAWC,UAAQ,OAAQ3B,CAAS,EAC/C,IAAAa,EACC,SAAAI,CAAA,CACL,CAAA,CAIhB,EAEApB,EAAc,YAAc"}