var __defProp=Object.defineProperty,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__publicField=(e,t,n)=>(__defNormalProp(e,"symbol"!=typeof t?t+"":t,n),n);!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["v-money3"]={},e.Vue)}(this,(function(e,t){"use strict";var n={debug:!1,masked:!1,prefix:"",suffix:"",thousands:",",decimal:".",precision:2,disableNegative:!1,disabled:!1,min:null,max:null,allowBlank:!1,minimumNumberOfCharacters:0,modelModifiers:{number:!1},shouldRound:!0};const i=["+","-"],r=["decimal","thousands","prefix","suffix"];function o(e){return Math.max(0,Math.min(e,1e3))}function u(e,t){return e=e.padStart(t+1,"0"),0===t?e:`${e.slice(0,-t)}.${e.slice(-t)}`}function a(e){return(e=e?e.toString():"").replace(/\D+/g,"")||"0"}function l(e,t){return i.includes(e)?(console.warn(`v-money3 "${t}" property don't accept "${e}" as a value.`),!1):!/\d/g.test(e)||(console.warn(`v-money3 "${t}" property don't accept "${e}" (any number) as a value.`),!1)}function s(e){for(const t of r){e[t]=e[t].replace(/\d+/g,"");for(const n of i)e[t]=e[t].replaceAll(n,"")}return e}function d(e){return e.length-(e.indexOf(".")+1)}function c(e){return e.replace(/^(-?)0+(?!\.)(.+)/,"$1$2")}function m(e){return/^-?[\d]+$/g.test(e)}function f(e){return/^-?[\d]+(\.[\d]+)$/g.test(e)}function p(e,t,n){return t>e.length-1?e:e.substring(0,t)+n+e.substring(t+1)}function v(e,t){const n=t-d(e);if(n>=0)return e;let i=e.slice(0,n);const r=e.slice(n);if("."===i.charAt(i.length-1)&&(i=i.slice(0,-1)),parseInt(r.charAt(0),10)>=5){for(let e=i.length-1;e>=0;e-=1){const t=i.charAt(e);if("."!==t&&"-"!==t){const n=parseInt(t,10)+1;if(n<10)return p(i,e,n);i=p(i,e,"0")}}return`1${i}`}return i}function g(e){return new Event(e,{bubbles:!0,cancelable:!1})}function b({debug:e=!1},...t){e&&console.log(...t)}class h{constructor(e){__publicField(this,"number",0n),__publicField(this,"decimal",0),this.setNumber(e)}getNumber(){return this.number}getDecimalPrecision(){return this.decimal}setNumber(e){this.decimal=0,"bigint"==typeof e?this.number=e:"number"==typeof e?this.setupString(e.toString()):this.setupString(e)}toFixed(e=0,t=!0){let n=this.toString();const i=e-this.getDecimalPrecision();return i>0?(n.includes(".")||(n+="."),n.padEnd(n.length+i,"0")):i<0?t?v(n,e):n.slice(0,i):n}toString(){let e=this.number.toString();if(this.decimal){let t=!1;return"-"===e.charAt(0)&&(e=e.substring(1),t=!0),e=e.padStart(e.length+this.decimal,"0"),e=`${e.slice(0,-this.decimal)}.${e.slice(-this.decimal)}`,e=c(e),(t?"-":"")+e}return e}lessThan(e){const[t,n]=this.adjustComparisonNumbers(e);return t<n}biggerThan(e){const[t,n]=this.adjustComparisonNumbers(e);return t>n}isEqual(e){const[t,n]=this.adjustComparisonNumbers(e);return t===n}setupString(e){if(m(e=c(e)))this.number=BigInt(e);else{if(!f(e))throw new Error(`BigNumber has received and invalid format for the constructor: ${e}`);this.decimal=d(e),this.number=BigInt(e.replace(".",""))}}adjustComparisonNumbers(e){let t;t="BigNumber"!==e.constructor.name?new h(e):e;const n=this.getDecimalPrecision()-t.getDecimalPrecision();let i=this.getNumber(),r=t.getNumber();return n>0?r=t.getNumber()*10n**BigInt(n):n<0&&(i=this.getNumber()*10n**BigInt(-1*n)),[i,r]}}function y(e,t=n,i=""){b(t,"utils format() - caller",i),b(t,"utils format() - input1",e),null==e?e="":"number"==typeof e?e=t.shouldRound?e.toFixed(o(t.precision)):e.toFixed(o(t.precision)+1).slice(0,-1):t.modelModifiers&&t.modelModifiers.number&&m(e)&&(e=Number(e).toFixed(o(t.precision))),b(t,"utils format() - input2",e);const r=t.disableNegative?"":e.indexOf("-")>=0?"-":"";let l=e.replace(t.prefix,"").replace(t.suffix,"");b(t,"utils format() - filtered",l),!t.precision&&"."!==t.thousands&&f(l)&&(l=v(l,0),b(t,"utils format() - !opt.precision && isValidFloat()",l));const s=a(l);b(t,"utils format() - numbers",s),b(t,"utils format() - numbersToCurrency",r+u(s,t.precision));const d=new h(r+u(s,t.precision));b(t,"utils format() - bigNumber1",d.toString()),t.max&&d.biggerThan(t.max)&&d.setNumber(t.max),t.min&&d.lessThan(t.min)&&d.setNumber(t.min);const c=d.toFixed(o(t.precision),t.shouldRound);if(b(t,"utils format() - bigNumber2",d.toFixed(o(t.precision))),/^0(\.0+)?$/g.test(c)&&t.allowBlank)return"";let[p,g]=c.split(".");const y=void 0!==g?g.length:0;p=p.padStart(t.minimumNumberOfCharacters-y,"0"),p=function(e,t){return e.replace(/(\d)(?=(?:\d{3})+\b)/gm,`$1${t}`)}(p,t.thousands);const x=t.prefix+function(e,t,n){return t?e+n+t:e}(p,g,t.decimal)+t.suffix;return b(t,"utils format() - output",x),x}function x(e,t=n,i=""){b(t,"utils unformat() - caller",i),b(t,"utils unformat() - input",e);const r=t.disableNegative?"":e.indexOf("-")>=0?"-":"",l=e.replace(t.prefix,"").replace(t.suffix,"");b(t,"utils unformat() - filtered",l);const s=a(l);b(t,"utils unformat() - numbers",s);const d=new h(r+u(s,t.precision));b(t,"utils unformat() - bigNumber1",s.toString()),t.max&&d.biggerThan(t.max)&&d.setNumber(t.max),t.min&&d.lessThan(t.min)&&d.setNumber(t.min);let c=d.toFixed(o(t.precision),t.shouldRound);return t.modelModifiers&&t.modelModifiers.number&&(c=parseFloat(c)),b(t,"utils unformat() - output",c),c}const N=(e,t,n)=>{if(b(t,"directive setValue() - caller",n),!function(e){for(const t of r)if(!l(e[t],t))return!1;return!0}(t))return void b(t,"directive setValue() - validateRestrictedOptions() return false. Stopping here...",e.value);let i=e.value.length-(e.selectionEnd||0);e.value=y(e.value,t,n),i=Math.max(i,t.suffix.length),i=e.value.length-i,i=Math.max(i,t.prefix.length),function(e,t){const n=()=>{e.setSelectionRange(t,t)};e===document.activeElement&&(n(),setTimeout(n,1))}(e,i),e.dispatchEvent(g("change"))},w=(e,t)=>{const n=e.currentTarget,i="Backspace"===e.code||"Delete"===e.code,r=n.value.length-(n.selectionEnd||0)==0;if(b(t,"directive onkeydown() - el.value",n.value),b(t,"directive onkeydown() - backspacePressed",i),b(t,"directive onkeydown() - isAtEndPosition",r),t.allowBlank&&i&&r&&0===x(n.value,t,"directive onkeydown allowBlank")&&(b(t,'directive onkeydown() - set el.value = ""',n.value),n.value="",n.dispatchEvent(g("change"))),b(t,"directive onkeydown() - e.key",e.key),"+"===e.key){b(t,"directive onkeydown() - unformat el.value",n.value);let e=x(n.value,t,"directive onkeydown +");"string"==typeof e&&(e=parseFloat(e)),e<0&&(n.value=String(-1*e))}},k=(e,t)=>{const n=e.currentTarget;b(t,"directive oninput()",n.value),/^[1-9]$/.test(n.value)&&(n.value=u(n.value,o(t.precision)),b(t,"directive oninput() - is 1-9",n.value)),N(n,t,"directive oninput")};var S={mounted(e,t){if(!t.value)return;const i=s({...n,...t.value});if(b(i,"directive mounted() - opt",i),"INPUT"!==e.tagName.toLocaleUpperCase()){const t=e.getElementsByTagName("input");1!==t.length||(e=t[0])}e.onkeydown=e=>{w(e,i)},e.oninput=e=>{k(e,i)},b(i,"directive mounted() - el.value",e.value),N(e,i,"directive mounted")},updated(e,t){if(!t.value)return;const i=s({...n,...t.value});e.onkeydown=e=>{w(e,i)},e.oninput=e=>{k(e,i)},b(i,"directive updated() - el.value",e.value),b(i,"directive updated() - opt",i),N(e,i,"directive updated")},beforeUnmount(e){e.onkeydown=null,e.oninput=null,e.onfocus=null}};const B=["id","value","disabled"];const M={inheritAttrs:!1,name:"Money3",directives:{money3:S}},$=t.defineComponent({...M,props:{debug:{required:!1,type:Boolean,default:!1},id:{required:!1,type:[Number,String],default:()=>{const e=t.getCurrentInstance();return e?e.uid:null}},modelValue:{required:!0,type:[Number,String]},modelModifiers:{required:!1,type:Object,default:()=>({number:!1})},masked:{type:Boolean,default:!1},precision:{type:Number,default:()=>n.precision},decimal:{type:String,default:()=>n.decimal,validator:e=>l(e,"decimal")},thousands:{type:String,default:()=>n.thousands,validator:e=>l(e,"thousands")},prefix:{type:String,default:()=>n.prefix,validator:e=>l(e,"prefix")},suffix:{type:String,default:()=>n.suffix,validator:e=>l(e,"suffix")},disableNegative:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},max:{type:[Number,String],default:()=>n.max},min:{type:[Number,String],default:()=>n.min},allowBlank:{type:Boolean,default:()=>n.allowBlank},minimumNumberOfCharacters:{type:Number,default:()=>n.minimumNumberOfCharacters},shouldRound:{type:Boolean,default:()=>n.shouldRound}},emits:["update:model-value"],setup:function(e,{emit:n}){const i=e,{modelValue:r,modelModifiers:u,masked:a,precision:l,shouldRound:d}=t.toRefs(i);b(i,"component setup()",i);let c=r.value;u.value&&u.value.number&&(c=d.value?Number(r.value).toFixed(o(l.value)):Number(r.value).toFixed(o(l.value)+1).slice(0,-1));const m=t.ref(y(c,i,"component setup"));b(i,"component setup() - data.formattedValue",m.value),t.watch(r,(function(e){b(i,"component watch() -> value",e);const t=y(e,s({...i}),"component watch");t!==m.value&&(b(i,"component watch() changed -> formatted",t),m.value=t)}));let f=null;function p(e){let t;b(i,"component change() -> evt.target.value",e.target.value),t=a.value&&!u.value.number?e.target.value:x(e.target.value,s({...i}),"component change"),t!==f&&(f=t,b(i,"component change() -> update:model-value",t),n("update:model-value",t))}const v=t.useAttrs(),g=t.computed((()=>{const e={...v};return delete e["onUpdate:modelValue"],e}));return(e,n)=>{const r=t.resolveDirective("money3");return t.withDirectives((t.openBlock(),t.createElementBlock("input",t.mergeProps({id:i.id},t.unref(g),{type:"tel",class:"v-money3",value:m.value,disabled:i.disabled,onChange:p}),null,16,B)),[[r,{precision:t.unref(l),decimal:i.decimal,thousands:i.thousands,prefix:i.prefix,suffix:i.suffix,disableNegative:i.disableNegative,min:i.min,max:i.max,allowBlank:i.allowBlank,minimumNumberOfCharacters:i.minimumNumberOfCharacters,debug:i.debug,modelModifiers:t.unref(u),shouldRound:t.unref(d)}]])}}});var C={install(e){e.component("money3",$),e.directive("money3",S)}};e.BigNumber=h,e.Money=$,e.Money3=$,e.Money3Component=$,e.Money3Directive=S,e.VMoney=S,e.VMoney3=S,e.default=C,e.format=y,e.unformat=x,Object.defineProperty(e,"__esModule",{value:!0}),e[Symbol.toStringTag]="Module"}));
