UNPKG

@gsretail.com/gui-core

Version:

A skeleton to create your own React component library using Rollup, TypeScript, Sass and Storybook

2 lines (1 loc) 1.74 kB
import t from"../core/holder.js";import e from"./pattern.js";import"../core/change-details.js";import"./base.js";import"./factory.js";import"./regexp.js";class r extends e{get _matchFrom(){return this.maxLength-String(this.from).length}constructor(t){super(t)}updateOptions(t){super.updateOptions(t)}_update(t){const{to:e=this.to||0,from:r=this.from||0,maxLength:s=this.maxLength||0,autofix:a=this.autofix,...i}=t;this.to=e,this.from=r,this.maxLength=Math.max(String(e).length,s),this.autofix=a;const h=String(this.from).padStart(this.maxLength,"0"),o=String(this.to).padStart(this.maxLength,"0");let n=0;for(;n<o.length&&o[n]===h[n];)++n;i.mask=o.slice(0,n).replace(/0/g,"\\0")+"0".repeat(this.maxLength-n),super._update(i)}get isComplete(){return super.isComplete&&Boolean(this.value)}boundaries(t){let e="",r="";const[,s,a]=t.match(/^(\D*)(\d*)(\D*)/)||[];return a&&(e="0".repeat(s.length)+a,r="9".repeat(s.length)+a),e=e.padEnd(this.maxLength,"0"),r=r.padEnd(this.maxLength,"9"),[e,r]}doPrepareChar(t,e){let r;if(void 0===e&&(e={}),[t,r]=super.doPrepareChar(t.replace(/\D/g,""),e),!this.autofix||!t)return r.skip=!this.isComplete,[t,r];const s=String(this.from).padStart(this.maxLength,"0"),a=String(this.to).padStart(this.maxLength,"0"),i=this.value+t;if(i.length>this.maxLength)return["",r];const[h,o]=this.boundaries(i);return Number(o)<this.from?[s[i.length-1],r]:Number(h)>this.to?"pad"===this.autofix&&i.length<this.maxLength?["",r.aggregate(this.append(s[i.length-1]+t,e))]:[a[i.length-1],r]:[t,r]}doValidate(t){const e=this.value;if(-1===e.search(/[^0]/)&&e.length<=this._matchFrom)return!0;const[r,s]=this.boundaries(e);return this.from<=Number(s)&&Number(r)<=this.to&&super.doValidate(t)}}t.MaskedRange=r;export{r as default};