@ultraviolet/plus
Version:
Ultraviolet Plus
38 lines (37 loc) • 1.08 kB
JavaScript
"use client";
import { jsx } from "@emotion/react/jsx-runtime";
import { useMemo, useCallback, createContext, useContext } from "react";
import EstimateCostLocales from "./locales/en.js";
const EstimateCostContext = createContext({
locales: EstimateCostLocales,
formatNumber: () => ""
});
const useEstimateCost = () => useContext(EstimateCostContext);
const EstimateCostProvider = ({
children,
locales,
currency,
numberLocales
}) => {
const newLocales = useMemo(() => locales ? {
...EstimateCostLocales,
...locales
} : EstimateCostLocales, [locales]);
const formatNumber = useCallback((number, options) => {
const numberFormat = new Intl.NumberFormat(numberLocales, {
style: "currency",
currency,
...options
});
return numberFormat.format(number);
}, [currency, numberLocales]);
const value = useMemo(() => ({
locales: newLocales,
formatNumber
}), [formatNumber, newLocales]);
return /* @__PURE__ */ jsx(EstimateCostContext.Provider, { value, children });
};
export {
EstimateCostProvider,
useEstimateCost
};