UNPKG

@visa/nova-react

Version:

Visa Product Design System Nova React library. Compatible with React ^19.

2 lines (1 loc) 1.3 kB
import{useState as a}from"react";import{cardValidators as r,removeNonDigits as d,findCardValidatorFromBinRegex as e,removeCharactersAfterMaxLength as t,formatCardNumberFromValidator as l,moduloCheck as n,cardNumberLengthCheck as i}from"./utils.mjs";export{cardValidatorsArray,defaultSpacingPattern,formatCardNumber}from"./utils.mjs";const o={allowedBrands:void 0,defaultCardNumber:"",filteredForBrands:void 0,trimToMaxLength:!0,validators:r},u=(u=o)=>{const{allowedBrands:m,defaultCardNumberInputValue:s,filteredForBrands:b,trimToMaxLength:f,validators:g}={defaultCardNumberInputValue:"",trimToMaxLength:!0,validators:r,...u},[N,c]=a(s),p=b?.length?b.map(a=>g[a]):Object.values(g),V=d(N),h=e(V,p),C=f?t(V,h?.maxLength):V,v=l(C,h),x=!!h,B=m?.length?m.includes(h?.brand||""):!!h?.brand,L=n(C),j=i(C,h?.lengths),I=x&&B&&L&&j;return{binValid:x,brand:h?.brand,brandValid:B,cardNumberInputValue:N,cardNumberValidator:h,cleanCardNumber:C,formattedCardNumber:v,lastDigitValid:L,lengthValid:j,onCardNumberChange:a=>c(a),valid:I}};u.displayName="useCardNumberValidation";export{i as cardNumberLengthCheck,r as cardValidators,u as default,e as findCardValidatorFromBinRegex,l as formatCardNumberFromValidator,n as moduloCheck,t as removeCharactersAfterMaxLength,d as removeNonDigits,u as useCardNumberValidation};