analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
98 lines (97 loc) • 3.27 kB
JavaScript
// src/utils/brazilianFormatters.ts
var MASK_TYPE = /* @__PURE__ */ ((MASK_TYPE2) => {
MASK_TYPE2["CNPJ"] = "CNPJ";
MASK_TYPE2["CPF"] = "CPF";
MASK_TYPE2["PHONE"] = "PHONE";
MASK_TYPE2["CEP"] = "CEP";
return MASK_TYPE2;
})(MASK_TYPE || {});
var MASK_MAX_DIGITS = {
["CNPJ" /* CNPJ */]: 14,
["CPF" /* CPF */]: 11,
["PHONE" /* PHONE */]: 11,
["CEP" /* CEP */]: 8
};
var extractDigits = (value) => value.replaceAll(/\D/g, "");
var onlyDigits = (value, type) => extractDigits(value).slice(0, MASK_MAX_DIGITS[type]);
function formatCnpj(value) {
const digits = extractDigits(value);
if (digits.length !== MASK_MAX_DIGITS["CNPJ" /* CNPJ */]) return value;
return digits.replace(
/^(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/,
"$1.$2.$3/$4-$5"
);
}
function formatCpf(value) {
const digits = extractDigits(value);
if (digits.length !== MASK_MAX_DIGITS["CPF" /* CPF */]) return value;
return digits.replace(/^(\d{3})(\d{3})(\d{3})(\d{2})$/, "$1.$2.$3-$4");
}
function formatPhone(value) {
const digits = extractDigits(value);
if (digits.length === 11) {
return digits.replace(/^(\d{2})(\d{5})(\d{4})$/, "($1) $2-$3");
}
if (digits.length === 10) {
return digits.replace(/^(\d{2})(\d{4})(\d{4})$/, "($1) $2-$3");
}
return value;
}
function formatCep(value) {
const digits = extractDigits(value);
if (digits.length !== MASK_MAX_DIGITS["CEP" /* CEP */]) return value;
return digits.replace(/^(\d{5})(\d{3})$/, "$1-$2");
}
function maskCnpjInput(value) {
const digits = onlyDigits(value, "CNPJ" /* CNPJ */);
return digits.replace(/^(\d{2})(\d)/, "$1.$2").replace(/^(\d{2})\.(\d{3})(\d)/, "$1.$2.$3").replace(/^(\d{2})\.(\d{3})\.(\d{3})(\d)/, "$1.$2.$3/$4").replace(/^(\d{2})\.(\d{3})\.(\d{3})\/(\d{4})(\d)/, "$1.$2.$3/$4-$5");
}
function maskCpfInput(value) {
const digits = onlyDigits(value, "CPF" /* CPF */);
return digits.replace(/^(\d{3})(\d)/, "$1.$2").replace(/^(\d{3})\.(\d{3})(\d)/, "$1.$2.$3").replace(/^(\d{3})\.(\d{3})\.(\d{3})(\d)/, "$1.$2.$3-$4");
}
function maskPhoneInput(value) {
const digits = onlyDigits(value, "PHONE" /* PHONE */);
if (digits.length === 0) return "";
if (digits.length <= 2) return `(${digits}`;
if (digits.length <= 6) return digits.replace(/^(\d{2})(\d{0,4})/, "($1) $2");
if (digits.length <= 10)
return digits.replace(/^(\d{2})(\d{4})(\d{0,4})/, "($1) $2-$3");
return digits.replace(/^(\d{2})(\d{5})(\d{0,4})/, "($1) $2-$3");
}
function maskCepInput(value) {
const digits = onlyDigits(value, "CEP" /* CEP */);
return digits.replace(/^(\d{5})(\d)/, "$1-$2");
}
var MASKERS = {
["CNPJ" /* CNPJ */]: maskCnpjInput,
["CPF" /* CPF */]: maskCpfInput,
["PHONE" /* PHONE */]: maskPhoneInput,
["CEP" /* CEP */]: maskCepInput
};
var FORMATTERS = {
["CNPJ" /* CNPJ */]: formatCnpj,
["CPF" /* CPF */]: formatCpf,
["PHONE" /* PHONE */]: formatPhone,
["CEP" /* CEP */]: formatCep
};
function applyInputMask(value, type) {
return MASKERS[type](value);
}
function formatDocument(value, type) {
return FORMATTERS[type](value);
}
export {
MASK_TYPE,
formatCnpj,
formatCpf,
formatPhone,
formatCep,
maskCnpjInput,
maskCpfInput,
maskPhoneInput,
maskCepInput,
applyInputMask,
formatDocument
};
//# sourceMappingURL=chunk-3RR6WIPO.mjs.map