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) 5.81 kB
import{DIRECTION as e,objectIncludes as t}from"../core/utils.js";import s from"../core/change-details.js";import a,{normalizeOpts as r}from"./factory.js";import i from"./base.js";import n from"../core/holder.js";class u extends i{static DEFAULTS;constructor(e){super({...u.DEFAULTS,...e}),this.currentMask=void 0}updateOptions(e){super.updateOptions(e)}_update(e){super._update(e),"mask"in e&&(this.exposeMask=void 0,this.compiledMasks=Array.isArray(e.mask)?e.mask.map((e=>{const{expose:t,...s}=r(e),i=a({overwrite:this._overwrite,eager:this._eager,skipInvalid:this._skipInvalid,...s});return t&&(this.exposeMask=i),i})):[])}_appendCharRaw(e,t){void 0===t&&(t={});const s=this._applyDispatch(e,t);return this.currentMask&&s.aggregate(this.currentMask._appendChar(e,this.currentMaskFlags(t))),s}_applyDispatch(e,t,a){void 0===e&&(e=""),void 0===t&&(t={}),void 0===a&&(a="");const r=t.tail&&null!=t._beforeTailState?t._beforeTailState._value:this.value,i=this.rawInputValue,n=t.tail&&null!=t._beforeTailState?t._beforeTailState._rawInputValue:i,u=i.slice(n.length),p=this.currentMask,h=new s,l=p?.state;if(this.currentMask=this.doDispatch(e,{...t},a),this.currentMask)if(this.currentMask!==p){if(this.currentMask.reset(),n){const e=this.currentMask.append(n,{raw:!0});h.tailShift=e.inserted.length-r.length}u&&(h.tailShift+=this.currentMask.append(u,{raw:!0,tail:!0}).tailShift)}else l&&(this.currentMask.state=l);return h}_appendPlaceholder(){const e=this._applyDispatch();return this.currentMask&&e.aggregate(this.currentMask._appendPlaceholder()),e}_appendEager(){const e=this._applyDispatch();return this.currentMask&&e.aggregate(this.currentMask._appendEager()),e}appendTail(e){const t=new s;return e&&t.aggregate(this._applyDispatch("",{},e)),t.aggregate(this.currentMask?this.currentMask.appendTail(e):super.appendTail(e))}currentMaskFlags(e){return{...e,_beforeTailState:e._beforeTailState?.currentMaskRef===this.currentMask&&e._beforeTailState?.currentMask||e._beforeTailState}}doDispatch(e,t,s){return void 0===t&&(t={}),void 0===s&&(s=""),this.dispatch(e,this,t,s)}doValidate(e){return super.doValidate(e)&&(!this.currentMask||this.currentMask.doValidate(this.currentMaskFlags(e)))}doPrepare(e,t){void 0===t&&(t={});let[s,a]=super.doPrepare(e,t);if(this.currentMask){let e;[s,e]=super.doPrepare(s,this.currentMaskFlags(t)),a=a.aggregate(e)}return[s,a]}doPrepareChar(e,t){void 0===t&&(t={});let[s,a]=super.doPrepareChar(e,t);if(this.currentMask){let e;[s,e]=super.doPrepareChar(s,this.currentMaskFlags(t)),a=a.aggregate(e)}return[s,a]}reset(){this.currentMask?.reset(),this.compiledMasks.forEach((e=>e.reset()))}get value(){return this.exposeMask?this.exposeMask.value:this.currentMask?this.currentMask.value:""}set value(e){this.exposeMask?(this.exposeMask.value=e,this.currentMask=this.exposeMask,this._applyDispatch()):super.value=e}get unmaskedValue(){return this.exposeMask?this.exposeMask.unmaskedValue:this.currentMask?this.currentMask.unmaskedValue:""}set unmaskedValue(e){this.exposeMask?(this.exposeMask.unmaskedValue=e,this.currentMask=this.exposeMask,this._applyDispatch()):super.unmaskedValue=e}get typedValue(){return this.exposeMask?this.exposeMask.typedValue:this.currentMask?this.currentMask.typedValue:""}set typedValue(e){if(this.exposeMask)return this.exposeMask.typedValue=e,this.currentMask=this.exposeMask,void this._applyDispatch();let t=String(e);this.currentMask&&(this.currentMask.typedValue=e,t=this.currentMask.unmaskedValue),this.unmaskedValue=t}get displayValue(){return this.currentMask?this.currentMask.displayValue:""}get isComplete(){return Boolean(this.currentMask?.isComplete)}get isFilled(){return Boolean(this.currentMask?.isFilled)}remove(e,t){const a=new s;return this.currentMask&&a.aggregate(this.currentMask.remove(e,t)).aggregate(this._applyDispatch()),a}get state(){return{...super.state,_rawInputValue:this.rawInputValue,compiledMasks:this.compiledMasks.map((e=>e.state)),currentMaskRef:this.currentMask,currentMask:this.currentMask?.state}}set state(e){const{compiledMasks:t,currentMaskRef:s,currentMask:a,...r}=e;t&&this.compiledMasks.forEach(((e,s)=>e.state=t[s])),null!=s&&(this.currentMask=s,this.currentMask.state=a),super.state=r}extractInput(e,t,s){return this.currentMask?this.currentMask.extractInput(e,t,s):""}extractTail(e,t){return this.currentMask?this.currentMask.extractTail(e,t):super.extractTail(e,t)}doCommit(){this.currentMask&&this.currentMask.doCommit(),super.doCommit()}nearestInputPos(e,t){return this.currentMask?this.currentMask.nearestInputPos(e,t):super.nearestInputPos(e,t)}get overwrite(){return this.currentMask?this.currentMask.overwrite:this._overwrite}set overwrite(e){this._overwrite=e}get eager(){return this.currentMask?this.currentMask.eager:this._eager}set eager(e){this._eager=e}get skipInvalid(){return this.currentMask?this.currentMask.skipInvalid:this._skipInvalid}set skipInvalid(e){this._skipInvalid=e}maskEquals(e){return Array.isArray(e)?this.compiledMasks.every(((s,a)=>{if(!e[a])return;const{mask:r,...i}=e[a];return t(s,i)&&s.maskEquals(r)})):super.maskEquals(e)}typedValueEquals(e){return Boolean(this.currentMask?.typedValueEquals(e))}}u.DEFAULTS={dispatch:(t,s,a,r)=>{if(!s.compiledMasks.length)return;const i=s.rawInputValue,n=s.compiledMasks.map(((n,u)=>{const p=s.currentMask===n,h=p?n.displayValue.length:n.nearestInputPos(n.displayValue.length,e.FORCE_LEFT);return n.rawInputValue!==i?(n.reset(),n.append(i,{raw:!0})):p||n.remove(h),n.append(t,s.currentMaskFlags(a)),n.appendTail(r),{index:u,weight:n.rawInputValue.length,totalInputPositions:n.totalInputPositions(0,Math.max(h,n.nearestInputPos(n.displayValue.length,e.FORCE_LEFT)))}}));return n.sort(((e,t)=>t.weight-e.weight||t.totalInputPositions-e.totalInputPositions)),s.compiledMasks[n[0].index]}},n.MaskedDynamic=u;export{u as default};