koval-ui
Version:
React components collection with minimalistic design. Supports theming, layout, and input validation.
80 lines (79 loc) • 2.21 kB
JavaScript
"use client";
import { jsx as h } from "react/jsx-runtime";
import { forwardRef as I, useMemo as j } from "react";
import B from "classnames";
import { useBrowserLocale as G } from "../../internal/locale/useBrowserLocale.js";
import R from "./Number.module.css.js";
import { SignDisplayModes as V, CompactDisplayModes as d, Notations as k, Styles as q, LocaleMatchers as z } from "./types.js";
const A = I(
({
value: i,
className: y,
locale: t,
localeMatcher: a = z["best fit"],
digitsConfig: m = {
integer: {
minimum: 1
},
significant: {
minimum: 1,
maximum: 21
},
fraction: {}
},
notation: e = k.standard,
compactDisplay: r = d.short,
grouping: n,
signDisplay: s = V.auto,
...F
}, L) => {
var u, f, l, x, p;
const M = G(), c = t || M, o = j(
() => {
var D, N, b, S, w;
return i ? new Intl.NumberFormat(c, {
localeMatcher: a,
style: q.decimal,
minimumIntegerDigits: (D = m.integer) == null ? void 0 : D.minimum,
minimumFractionDigits: (N = m.fraction) == null ? void 0 : N.minimum,
minimumSignificantDigits: (b = m.significant) == null ? void 0 : b.minimum,
maximumSignificantDigits: (S = m.significant) == null ? void 0 : S.maximum,
maximumFractionDigits: (w = m.fraction) == null ? void 0 : w.maximum,
notation: e,
compactDisplay: r,
useGrouping: n,
signDisplay: s
}).format(i) : "";
},
[
r,
(u = m.fraction) == null ? void 0 : u.maximum,
(f = m.fraction) == null ? void 0 : f.minimum,
(l = m.integer) == null ? void 0 : l.minimum,
(x = m.significant) == null ? void 0 : x.maximum,
(p = m.significant) == null ? void 0 : p.minimum,
n,
c,
a,
e,
s,
i
]
);
return i && /* @__PURE__ */ h(
"span",
{
...F,
title: o,
className: B(R.number, y),
ref: L,
children: o
}
);
}
);
A.displayName = "NumberDecimal";
export {
A as NumberDecimal
};
//# sourceMappingURL=NumberDecimal.js.map