UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

75 lines 2.45 kB
import React from 'react'; import { extendPropsWithContext } from "../../../shared/component-helper.js"; import { getCurrencySymbol } from "../../number-format/NumberUtils.js"; import InputMaskedContext from "../InputMaskedContext.js"; import { isRequestingLocaleSupport, isRequestingNumberMask, handlePercentMask, handleCurrencyMask, handleNumberMask, handleThousandsSeparator, handleDecimalSeparator, fromJSON } from "../InputMaskedUtils.js"; import { useTranslation } from "./useTranslation.js"; export const useNumberMaskParams = () => { var _currencyMask; const { props } = React.useContext(InputMaskedContext); const locale = useTranslation(); if (!isRequestingNumberMask(props)) { return { ...fromJSON(props.maskOptions) }; } let { numberMask, currencyMask, maskOptions } = props; const { asNumber, asPercent, asCurrency, value } = props; maskOptions = fromJSON(maskOptions); numberMask = numberMask === true ? {} : fromJSON(numberMask); currencyMask = currencyMask === true ? {} : fromJSON(currencyMask, { currency: currencyMask }); if (!((_currencyMask = currencyMask) !== null && _currencyMask !== void 0 && _currencyMask.currency)) { delete currencyMask.currency; } if (isRequestingLocaleSupport(props)) { const thousandsSeparatorSymbol = handleThousandsSeparator(locale); const decimalSymbol = handleDecimalSeparator(locale); if (asNumber || asPercent) { numberMask = extendPropsWithContext(numberMask, null, { decimalSymbol, thousandsSeparatorSymbol }); } else if (asCurrency) { var _currencyMask2; currencyMask = extendPropsWithContext(currencyMask, null, { decimalSymbol, thousandsSeparatorSymbol, currency: getCurrencySymbol(locale, typeof asCurrency === 'string' ? asCurrency : null, (_currencyMask2 = currencyMask) === null || _currencyMask2 === void 0 ? void 0 : _currencyMask2.currencyDisplay, value) }); } } let maskParams = null; if (numberMask) { maskParams = handleNumberMask({ maskOptions, numberMask }); if (asPercent) { maskParams = handlePercentMask({ props, locale, maskParams }); } } else if (currencyMask) { maskParams = handleCurrencyMask({ maskOptions, currencyMask }); } return maskParams; }; //# sourceMappingURL=useNumberMaskParams.js.map