v-money3 3.25.1 → 3.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -113,6 +113,7 @@ app.directive('money3', Money3Directive)
113
113
  disabled: false,
114
114
  min: null,
115
115
  max: null,
116
+ setMaxIfBigger: true,
116
117
  allowBlank: false,
117
118
  treatZeroAsBlank: true,
118
119
  minimumNumberOfCharacters: 0,
@@ -178,6 +179,7 @@ To ensure proper functionality, you must use `v-model.lazy` for binding.
178
179
  disabled: false,
179
180
  min: null,
180
181
  max: null,
182
+ setMaxIfBigger: true,
181
183
  allowBlank: false,
182
184
  treatZeroAsBlank: true,
183
185
  minimumNumberOfCharacters: 0,
@@ -205,6 +207,34 @@ If you directly bind it, you're perfectly fine as well:
205
207
  <input :model-modifiers="{ number: true }" v-model.lazy="amount" v-money3="config" />
206
208
  ```
207
209
 
210
+ ### Use with wrapper components (Vuetify, Nuxt UI, Element Plus, …)
211
+
212
+ The directive works on any component that renders a single inner `<input>`. Apply it to the wrapper and it walks the host's DOM to find the inner input and attach its listeners there.
213
+
214
+ ```html
215
+ <template>
216
+ <!-- Vuetify -->
217
+ <v-text-field v-money3="config" v-model="amount" label="Amount" />
218
+
219
+ <!-- Nuxt UI -->
220
+ <UInput v-money3="config" v-model="amount" />
221
+
222
+ <!-- Element Plus -->
223
+ <el-input v-money3="config" v-model="amount" />
224
+ </template>
225
+ ```
226
+
227
+ Wrapper components attach their own `@input` listener to the inner input during render, before the directive's `mounted()` runs. Because DOM listener-order is registration-order, the wrapper's handler would otherwise fire on the raw pre-reformat keystroke value, leaving the host's `v-model` one character behind the displayed value (reported as an "off-by-10" in [#78](https://github.com/jonathanpmartins/v-money3/issues/78)). To fix this without framework-specific detection, the directive re-dispatches an `input` event after each reformat so the wrapper re-reads the post-format value. The re-dispatch only happens when the directive sits on a wrapper (`host !== <input>`); bare `<input v-money3>` is unaffected.
228
+
229
+ The synthetic event is dispatched with `bubbles: false`, so it only reaches listeners attached directly to the inner `<input>` (the wrapper's own `@input` handler). Ancestor listeners — e.g. an `@input` on a parent `<div>` or `<form>` — do not see it. If you do attach a listener directly to the inner input and want to skip the directive's re-dispatch, filter on the marker:
230
+
231
+ ```js
232
+ function onInput(e) {
233
+ if (e.__v_money3_synth__) return; // skip the directive's re-dispatch
234
+ // …your handler…
235
+ }
236
+ ```
237
+
208
238
  ## Properties
209
239
 
210
240
  | property | Required | Type | Default | Description |
@@ -219,6 +249,7 @@ If you directly bind it, you're perfectly fine as well:
219
249
  | disabled | false | Boolean | false | Disable the inner input tag |
220
250
  | min | false | Number | null | The min value allowed |
221
251
  | max | false | Number | null | The max value allowed |
252
+ | set-max-if-bigger | false | Boolean | true | When `true` (default), values above `max` are clamped down to `max`. Set to `false` to reject keystrokes that would exceed `max` — the input keeps its last valid value instead of jumping to the ceiling. No effect when `max` is `null` |
222
253
  | allow-blank | false | Boolean | false | If the field can start blank and be cleared out by user |
223
254
  | treat-zero-as-blank | false | Boolean | true | When `allow-blank` is true, controls whether zero is rendered as blank. Set to `false` to distinguish zero from blank (e.g. show `0.00` and only blank on empty input). Has no effect when `allow-blank` is false |
224
255
  | minimum-number-of-characters | false | Number | 0 | The minimum number of characters that the mask should show |
@@ -269,6 +300,7 @@ const config = {
269
300
  disabled: false,
270
301
  min: null,
271
302
  max: null,
303
+ setMaxIfBigger: true,
272
304
  allowBlank: false,
273
305
  treatZeroAsBlank: true,
274
306
  minimumNumberOfCharacters: 0,
@@ -64,6 +64,10 @@ declare const _default: import("vue").DefineComponent<{
64
64
  type: (NumberConstructor | StringConstructor)[];
65
65
  default: () => string | number | null;
66
66
  };
67
+ setMaxIfBigger: {
68
+ type: BooleanConstructor;
69
+ default: () => boolean;
70
+ };
67
71
  allowBlank: {
68
72
  type: BooleanConstructor;
69
73
  default: () => boolean;
@@ -152,6 +156,10 @@ declare const _default: import("vue").DefineComponent<{
152
156
  type: (NumberConstructor | StringConstructor)[];
153
157
  default: () => string | number | null;
154
158
  };
159
+ setMaxIfBigger: {
160
+ type: BooleanConstructor;
161
+ default: () => boolean;
162
+ };
155
163
  allowBlank: {
156
164
  type: BooleanConstructor;
157
165
  default: () => boolean;
@@ -186,6 +194,7 @@ declare const _default: import("vue").DefineComponent<{
186
194
  disabled: boolean;
187
195
  min: string | number;
188
196
  max: string | number;
197
+ setMaxIfBigger: boolean;
189
198
  allowBlank: boolean;
190
199
  treatZeroAsBlank: boolean;
191
200
  minimumNumberOfCharacters: number;
package/dist/options.d.ts CHANGED
@@ -10,6 +10,7 @@ export interface VMoneyOptions {
10
10
  disabled: boolean;
11
11
  min: number | string | null;
12
12
  max: number | string | null;
13
+ setMaxIfBigger: boolean;
13
14
  allowBlank: boolean;
14
15
  treatZeroAsBlank: boolean;
15
16
  minimumNumberOfCharacters: number;
package/dist/v-money3.mjs CHANGED
@@ -12,6 +12,7 @@ var m = {
12
12
  disabled: !1,
13
13
  min: null,
14
14
  max: null,
15
+ setMaxIfBigger: !0,
15
16
  allowBlank: !1,
16
17
  treatZeroAsBlank: !0,
17
18
  minimumNumberOfCharacters: 0,
@@ -216,7 +217,7 @@ function z(e, t = m, n = "") {
216
217
  let o = y(a);
217
218
  N(t, "utils format() - numbers", o), N(t, "utils format() - numbersToCurrency", i + v(o, r));
218
219
  let s = new R(i + v(o, r));
219
- N(t, "utils format() - bigNumber1", s.toString()), t.max !== null && t.max !== void 0 && t.max !== "" && s.biggerThan(t.max) && s.setNumber(t.max), t.min !== null && t.min !== void 0 && t.min !== "" && s.lessThan(t.min) && s.setNumber(t.min), t.disableNegative && s.lessThan(0) && s.setNumber(0);
220
+ N(t, "utils format() - bigNumber1", s.toString()), t.setMaxIfBigger !== !1 && t.max !== null && t.max !== void 0 && t.max !== "" && s.biggerThan(t.max) && s.setNumber(t.max), t.min !== null && t.min !== void 0 && t.min !== "" && s.lessThan(t.min) && s.setNumber(t.min), t.disableNegative && s.lessThan(0) && s.setNumber(0);
220
221
  let c = s.toFixed(r, t.shouldRound);
221
222
  if (N(t, "utils format() - bigNumber2", s.toFixed(r)), /^0(\.0+)?$/g.test(c) && t.allowBlank && t.treatZeroAsBlank) return "";
222
223
  let [l, u] = c.split("."), d = u === void 0 ? 0 : u.length, f = l.charAt(0) === "-", p = (f ? l.slice(1) : l).padStart(t.minimumNumberOfCharacters - d, "0");
@@ -233,7 +234,7 @@ function B(e, t = m, n = "") {
233
234
  let a = y(i);
234
235
  N(t, "utils unformat() - numbers", a);
235
236
  let o = new R(r + v(a, t.precision));
236
- N(t, "utils unformat() - bigNumber1", a.toString()), t.max !== null && t.max !== void 0 && t.max !== "" && o.biggerThan(t.max) && o.setNumber(t.max), t.min !== null && t.min !== void 0 && t.min !== "" && o.lessThan(t.min) && o.setNumber(t.min), t.disableNegative && o.lessThan(0) && o.setNumber(0);
237
+ N(t, "utils unformat() - bigNumber1", a.toString()), t.setMaxIfBigger !== !1 && t.max !== null && t.max !== void 0 && t.max !== "" && o.biggerThan(t.max) && o.setNumber(t.max), t.min !== null && t.min !== void 0 && t.min !== "" && o.lessThan(t.min) && o.setNumber(t.min), t.disableNegative && o.lessThan(0) && o.setNumber(0);
237
238
  let s = o.toFixed(_(t.precision), t.shouldRound);
238
239
  return t.modelModifiers && t.modelModifiers.number && (s = parseFloat(s)), N(t, "utils unformat() - output", s), s;
239
240
  }
@@ -247,54 +248,71 @@ var V = [
247
248
  "suffix",
248
249
  "min",
249
250
  "max",
251
+ "setMaxIfBigger",
250
252
  "allowBlank",
251
253
  "treatZeroAsBlank",
252
254
  "minimumNumberOfCharacters",
253
255
  "shouldRound",
254
256
  "modelModifiers"
255
- ], H = (e, t, n) => {
257
+ ], H = "__v_money3_last_valid__", U = "__v_money3_is_wrapper__", W = "__v_money3_synth__", G = (e, t, n) => {
256
258
  if (N(t, "directive setValue() - caller", n), !C(t)) {
257
259
  N(t, "directive setValue() - validateRestrictedOptions() return false. Stopping here...", e.value);
258
260
  return;
259
261
  }
260
262
  let r = e.value.length - (e.selectionEnd || 0), i = z(e.value, t, n);
261
- i !== e.value && (e.value = i, r = Math.max(r, t.suffix.length), r = e.value.length - r, r = Math.max(r, t.prefix.length), j(e, r), e.dispatchEvent(M("change")));
262
- }, U = (e, t) => {
263
+ if (t.setMaxIfBigger === !1 && t.max !== null && t.max !== void 0 && t.max !== "") {
264
+ let n = B(i, t, "directive setValue overflow check");
265
+ if (new R(String(n)).biggerThan(t.max)) {
266
+ let t = e[H];
267
+ typeof t == "string" && t !== e.value && (e.value = t);
268
+ return;
269
+ }
270
+ }
271
+ if (i === e.value) {
272
+ e[H] = i;
273
+ return;
274
+ }
275
+ if (e.value = i, e[H] = i, r = Math.max(r, t.suffix.length), r = e.value.length - r, r = Math.max(r, t.prefix.length), j(e, r), e.dispatchEvent(M("change")), e[U]) {
276
+ let t = new Event("input", { bubbles: !1 });
277
+ t[W] = !0, e.dispatchEvent(t);
278
+ }
279
+ }, K = (e, t) => {
263
280
  let n = e.currentTarget, r = e.code === "Backspace" || e.code === "Delete", i = n.value.length - (n.selectionEnd || 0) === 0;
264
- N(t, "directive onkeydown() - el.value", n.value), N(t, "directive onkeydown() - backspacePressed", r), N(t, "directive onkeydown() - isAtEndPosition", i), t.allowBlank && t.treatZeroAsBlank && r && i && parseFloat(String(B(n.value, t, "directive onkeydown allowBlank"))) === 0 && (N(t, "directive onkeydown() - set el.value = \"\"", n.value), n.value = "", n.dispatchEvent(M("change"))), N(t, "directive onkeydown() - e.key", e.key), e.key === "+" && n.value.indexOf("-") >= 0 && (N(t, "directive onkeydown() - flipping sign on el.value", n.value), n.value = n.value.replace("-", ""), H(n, t, "directive onkeydown +"));
265
- }, W = (e, t) => {
281
+ N(t, "directive onkeydown() - el.value", n.value), N(t, "directive onkeydown() - backspacePressed", r), N(t, "directive onkeydown() - isAtEndPosition", i), t.allowBlank && t.treatZeroAsBlank && r && i && parseFloat(String(B(n.value, t, "directive onkeydown allowBlank"))) === 0 && (N(t, "directive onkeydown() - set el.value = \"\"", n.value), n.value = "", n.dispatchEvent(M("change"))), N(t, "directive onkeydown() - e.key", e.key), e.key === "+" && n.value.indexOf("-") >= 0 && (N(t, "directive onkeydown() - flipping sign on el.value", n.value), n.value = n.value.replace("-", ""), G(n, t, "directive onkeydown +"));
282
+ }, q = (e, t) => {
283
+ if (e[W]) return;
266
284
  let n = e.currentTarget;
267
- N(t, "directive oninput()", n.value), /^[1-9]$/.test(n.value) && (n.value = v(n.value, _(t.precision)), N(t, "directive oninput() - is 1-9", n.value)), H(n, t, "directive oninput");
268
- }, G = (e, t) => {
285
+ N(t, "directive oninput()", n.value), /^[1-9]$/.test(n.value) && (n.value = v(n.value, _(t.precision)), N(t, "directive oninput() - is 1-9", n.value)), G(n, t, "directive oninput");
286
+ }, J = (e, t) => {
269
287
  let n = e.currentTarget;
270
288
  N(t, "directive onFocus()", n.value), t.focusOnRight && j(n, n.value.length - t.suffix.length);
271
- }, K = (e) => {
289
+ }, Y = (e) => {
272
290
  if (e.tagName.toLocaleUpperCase() !== "INPUT") {
273
291
  let t = e.getElementsByTagName("input");
274
292
  if (t.length !== 1) throw Error(`v-money3 requires 1 input, found ${t.length} elements.`);
275
293
  return t[0];
276
294
  }
277
295
  return e;
278
- }, q = (e, t) => {
296
+ }, ee = (e, t) => {
279
297
  e.onkeydown = (e) => {
280
- U(e, t);
298
+ K(e, t);
281
299
  }, e.oninput = (e) => {
282
- W(e, t);
300
+ q(e, t);
283
301
  }, e.onfocus = (e) => {
284
- G(e, t);
302
+ J(e, t);
285
303
  };
286
304
  };
287
- function J(e, t) {
305
+ function te(e, t) {
288
306
  return e ? V.some((n) => JSON.stringify(e[n]) !== JSON.stringify(t[n])) : !1;
289
307
  }
290
- var Y = "__v_money3_input__";
291
- function X(e) {
292
- let t = e[Y];
308
+ var X = "__v_money3_input__";
309
+ function Z(e) {
310
+ let t = e[X];
293
311
  if (t) return t;
294
- let n = K(e);
295
- return e[Y] = n, n;
312
+ let n = Y(e);
313
+ return e[X] = n, n;
296
314
  }
297
- var Z = {
315
+ var Q = {
298
316
  mounted(e, t) {
299
317
  if (!t.value) return;
300
318
  let n = w({
@@ -302,8 +320,8 @@ var Z = {
302
320
  ...t.value
303
321
  });
304
322
  N(n, "directive mounted() - opt", n);
305
- let r = X(e);
306
- q(r, n), N(n, "directive mounted() - el.value", r.value), H(r, n, "directive mounted");
323
+ let r = Z(e);
324
+ r[U] = e !== r, ee(r, n), N(n, "directive mounted() - el.value", r.value), G(r, n, "directive mounted");
307
325
  },
308
326
  updated(e, t) {
309
327
  if (!t.value) return;
@@ -312,30 +330,30 @@ var Z = {
312
330
  ...t.value
313
331
  });
314
332
  N(n, "directive updated() - opt", n), N(n, "directive updated() - host.value", e.value);
315
- let r = X(e);
316
- if (z(r.value, n, "directive updated check") !== r.value) {
317
- if (J(t.oldValue ? w({
333
+ let r = Z(e);
334
+ if (r[U] = e !== r, z(r.value, n, "directive updated check") !== r.value) {
335
+ if (te(t.oldValue ? w({
318
336
  ...m,
319
337
  ...t.oldValue
320
338
  }) : null, n) && r.value !== "") {
321
339
  console.warn("v-money3: runtime change of format options on the bare directive is unsupported and was skipped to avoid corrupting the value. Re-mount the directive or use the Money3 component instead.");
322
340
  return;
323
341
  }
324
- H(r, n, "directive updated");
342
+ G(r, n, "directive updated");
325
343
  }
326
344
  },
327
345
  beforeUnmount(e) {
328
- let t = e[Y] || e;
329
- t.onkeydown = null, t.oninput = null, t.onfocus = null, delete e[Y];
346
+ let t = e[X] || e;
347
+ t.onkeydown = null, t.oninput = null, t.onfocus = null, delete t[U], delete e[X];
330
348
  }
331
- }, Q = [
349
+ }, ne = [
332
350
  "id",
333
351
  "value",
334
352
  "disabled"
335
353
  ], $ = /* @__PURE__ */ n({
336
354
  inheritAttrs: !1,
337
355
  name: "Money3",
338
- directives: { money3: Z },
356
+ directives: { money3: Q },
339
357
  __name: "component",
340
358
  props: {
341
359
  debug: {
@@ -412,6 +430,10 @@ var Z = {
412
430
  type: [Number, String],
413
431
  default: () => m.min
414
432
  },
433
+ setMaxIfBigger: {
434
+ type: Boolean,
435
+ default: () => m.setMaxIfBigger
436
+ },
415
437
  allowBlank: {
416
438
  type: Boolean,
417
439
  default: () => m.allowBlank
@@ -467,6 +489,7 @@ var Z = {
467
489
  m.suffix,
468
490
  m.min,
469
491
  m.max,
492
+ m.setMaxIfBigger,
470
493
  m.allowBlank,
471
494
  m.treatZeroAsBlank,
472
495
  m.minimumNumberOfCharacters,
@@ -491,7 +514,7 @@ var Z = {
491
514
  value: C.value,
492
515
  disabled: m.disabled,
493
516
  onChange: k
494
- }), null, 16, Q)), [[a, {
517
+ }), null, 16, ne)), [[a, {
495
518
  precision: u(y),
496
519
  decimal: m.decimal,
497
520
  thousands: m.thousands,
@@ -500,6 +523,7 @@ var Z = {
500
523
  disableNegative: m.disableNegative,
501
524
  min: m.min,
502
525
  max: m.max,
526
+ setMaxIfBigger: m.setMaxIfBigger,
503
527
  allowBlank: m.allowBlank,
504
528
  treatZeroAsBlank: m.treatZeroAsBlank,
505
529
  minimumNumberOfCharacters: m.minimumNumberOfCharacters,
@@ -510,8 +534,8 @@ var Z = {
510
534
  }]]);
511
535
  };
512
536
  }
513
- }), ee = { install(e) {
514
- e.component("money3", $), e.directive("money3", Z);
537
+ }), re = { install(e) {
538
+ e.component("money3", $), e.directive("money3", Q);
515
539
  } };
516
540
  //#endregion
517
- export { R as BigNumber, $ as Money, $ as Money3, $ as Money3Component, Z as Money3Directive, Z as VMoney, Z as VMoney3, ee as default, z as format, B as unformat };
541
+ export { R as BigNumber, $ as Money, $ as Money3, $ as Money3Component, Q as Money3Directive, Q as VMoney, Q as VMoney3, re as default, z as format, B as unformat };
@@ -1 +1 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`vue`)):typeof define==`function`&&define.amd?define([`exports`,`vue`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e[`v-money3`]={},e.Vue))})(this,function(e,t){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});var n={debug:!1,masked:!1,prefix:``,suffix:``,thousands:`,`,decimal:`.`,precision:2,disableNegative:!1,disabled:!1,min:null,max:null,allowBlank:!1,treatZeroAsBlank:!0,minimumNumberOfCharacters:0,modelModifiers:{number:!1},shouldRound:!0,focusOnRight:!1,lazy:!0},r=[`+`,`-`],i=[`decimal`,`thousands`,`prefix`,`suffix`];function a(e){return Math.max(0,Math.min(e,100))}function o(e,t){return e=e.padStart(t+1,`0`),t===0?e:`${e.slice(0,-t)}.${e.slice(-t)}`}function s(e){return e=e?e.toString():``,e.replace(/\D+/g,``)||`0`}function c(e,t){return e.replace(/(\d)(?=(?:\d{3})+\b)/gm,`$1${t}`)}function l(e,t,n){return t?e+n+t:e}function u(e,t){return r.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):!0}function d(e){for(let t of i)if(!u(e[t],t))return!1;return!0}function f(e){for(let t of i){if(typeof e[t]!=`string`){e[t]=``;continue}e[t]=e[t].replace(/\d+/g,``);for(let n of r)e[t]=e[t].replaceAll(n,``)}return e}function p(e){return e.length-(e.indexOf(`.`)+1)}function m(e){return e.replace(/^(-?)0+(?!\.)(.+)/,`$1$2`)}function h(e){return/^-?[\d]+$/g.test(e)}function g(e){return/^-?[\d]+(\.[\d]+)$/g.test(e)}function _(e,t,n){return t>e.length-1?e:e.substring(0,t)+n+e.substring(t+1)}function v(e,t){let n=t-p(e);if(n>=0)return e;let r=e.slice(0,n),i=e.slice(n);if(r.charAt(r.length-1)===`.`&&(r=r.slice(0,-1)),parseInt(i.charAt(0),10)>=5){for(let e=r.length-1;e>=0;--e){let t=r.charAt(e);if(t!==`.`&&t!==`-`){let n=parseInt(t,10)+1;if(n<10)return _(r,e,n);r=_(r,e,`0`)}}return`1${r}`}return r}function y(e,t){let n=()=>{e===document.activeElement&&e.setSelectionRange(t,t)};e===document.activeElement&&(n(),setTimeout(n,1))}function b(e){return new Event(e,{bubbles:!0,cancelable:!1})}function x({debug:e=!1},...t){e&&console.log(...t)}function S(e){"@babel/helpers - typeof";return S=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},S(e)}function C(e,t){if(S(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(S(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function w(e){var t=C(e,`string`);return S(t)==`symbol`?t:t+``}function T(e,t,n){return(t=w(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var E=class e{constructor(e){T(this,`number`,0n),T(this,`decimal`,0),this.setNumber(e)}getNumber(){return this.number}getDecimalPrecision(){return this.decimal}setNumber(e){this.decimal=0,typeof e==`bigint`?this.number=e:typeof e==`number`?this.setupString(e.toString()):this.setupString(e)}toFixed(e=0,t=!0){let n=this.toString(),r=e-this.getDecimalPrecision();if(r>0)return n.includes(`.`)||(n+=`.`),n.padEnd(n.length+r,`0`);if(r<0){if(t)return v(n,e);let i=n.slice(0,r);return i.endsWith(`.`)?i.slice(0,-1):i}return 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=m(e),(t?`-`:``)+e}return e}lessThan(e){let[t,n]=this.adjustComparisonNumbers(e);return t<n}biggerThan(e){let[t,n]=this.adjustComparisonNumbers(e);return t>n}isEqual(e){let[t,n]=this.adjustComparisonNumbers(e);return t===n}setupString(e){if(e=m(e),h(e))this.number=BigInt(e);else if(g(e))this.decimal=p(e),this.number=BigInt(e.replace(`.`,``));else throw Error(`BigNumber has received an invalid format for the constructor: ${e}`)}adjustComparisonNumbers(t){let n;n=t instanceof e?t:new e(t);let r=this.getDecimalPrecision()-n.getDecimalPrecision(),i=this.getNumber(),a=n.getNumber();return r>0?a=n.getNumber()*10n**BigInt(r):r<0&&(i=this.getNumber()*10n**BigInt(r*-1)),[i,a]}};function D(e,t=n,r=``){x(t,`utils format() - caller`,r),x(t,`utils format() - input1`,e);let i=a(t.precision);if((e==null||e===``)&&t.allowBlank)return``;if(e==null)e=``;else if(typeof e==`number`)e=t.shouldRound?e.toFixed(i):e.toFixed(Math.min(i+1,100)).slice(0,-1);else if(t.modelModifiers&&t.modelModifiers.number&&h(e))e=Number(e).toFixed(i);else if(!t.disableNegative&&e===`-`)return e;x(t,`utils format() - input2`,e);let u=t.disableNegative?``:e.indexOf(`-`)>=0?`-`:``,d=e.replace(t.prefix,``).replace(t.suffix,``);x(t,`utils format() - filtered`,d),!i&&t.thousands!==`.`&&g(d)&&(d=v(d,0),x(t,`utils format() - !precision && isValidFloat()`,d));let f=s(d);x(t,`utils format() - numbers`,f),x(t,`utils format() - numbersToCurrency`,u+o(f,i));let p=new E(u+o(f,i));x(t,`utils format() - bigNumber1`,p.toString()),t.max!==null&&t.max!==void 0&&t.max!==``&&p.biggerThan(t.max)&&p.setNumber(t.max),t.min!==null&&t.min!==void 0&&t.min!==``&&p.lessThan(t.min)&&p.setNumber(t.min),t.disableNegative&&p.lessThan(0)&&p.setNumber(0);let m=p.toFixed(i,t.shouldRound);if(x(t,`utils format() - bigNumber2`,p.toFixed(i)),/^0(\.0+)?$/g.test(m)&&t.allowBlank&&t.treatZeroAsBlank)return``;let[_,y]=m.split(`.`),b=y===void 0?0:y.length,S=_.charAt(0)===`-`,C=(S?_.slice(1):_).padStart(t.minimumNumberOfCharacters-b,`0`);_=(S?`-`:``)+c(C,t.thousands);let w=t.prefix+l(_,y,t.decimal)+t.suffix;return x(t,`utils format() - output`,w),w}function O(e,t=n,r=``){if(x(t,`utils unformat() - caller`,r),x(t,`utils unformat() - input`,e),!t.disableNegative&&e===`-`)return x(t,`utils unformat() - return netagive symbol`,e),e;let i=t.disableNegative?``:e.indexOf(`-`)>=0?`-`:``,c=e.replace(t.prefix,``).replace(t.suffix,``);x(t,`utils unformat() - filtered`,c);let l=s(c);x(t,`utils unformat() - numbers`,l);let u=new E(i+o(l,t.precision));x(t,`utils unformat() - bigNumber1`,l.toString()),t.max!==null&&t.max!==void 0&&t.max!==``&&u.biggerThan(t.max)&&u.setNumber(t.max),t.min!==null&&t.min!==void 0&&t.min!==``&&u.lessThan(t.min)&&u.setNumber(t.min),t.disableNegative&&u.lessThan(0)&&u.setNumber(0);let d=u.toFixed(a(t.precision),t.shouldRound);return t.modelModifiers&&t.modelModifiers.number&&(d=parseFloat(d)),x(t,`utils unformat() - output`,d),d}var k=[`precision`,`decimal`,`thousands`,`prefix`,`suffix`,`min`,`max`,`allowBlank`,`treatZeroAsBlank`,`minimumNumberOfCharacters`,`shouldRound`,`modelModifiers`],A=(e,t,n)=>{if(x(t,`directive setValue() - caller`,n),!d(t)){x(t,`directive setValue() - validateRestrictedOptions() return false. Stopping here...`,e.value);return}let r=e.value.length-(e.selectionEnd||0),i=D(e.value,t,n);i!==e.value&&(e.value=i,r=Math.max(r,t.suffix.length),r=e.value.length-r,r=Math.max(r,t.prefix.length),y(e,r),e.dispatchEvent(b(`change`)))},j=(e,t)=>{let n=e.currentTarget,r=e.code===`Backspace`||e.code===`Delete`,i=n.value.length-(n.selectionEnd||0)===0;x(t,`directive onkeydown() - el.value`,n.value),x(t,`directive onkeydown() - backspacePressed`,r),x(t,`directive onkeydown() - isAtEndPosition`,i),t.allowBlank&&t.treatZeroAsBlank&&r&&i&&parseFloat(String(O(n.value,t,`directive onkeydown allowBlank`)))===0&&(x(t,`directive onkeydown() - set el.value = ""`,n.value),n.value=``,n.dispatchEvent(b(`change`))),x(t,`directive onkeydown() - e.key`,e.key),e.key===`+`&&n.value.indexOf(`-`)>=0&&(x(t,`directive onkeydown() - flipping sign on el.value`,n.value),n.value=n.value.replace(`-`,``),A(n,t,`directive onkeydown +`))},M=(e,t)=>{let n=e.currentTarget;x(t,`directive oninput()`,n.value),/^[1-9]$/.test(n.value)&&(n.value=o(n.value,a(t.precision)),x(t,`directive oninput() - is 1-9`,n.value)),A(n,t,`directive oninput`)},N=(e,t)=>{let n=e.currentTarget;x(t,`directive onFocus()`,n.value),t.focusOnRight&&y(n,n.value.length-t.suffix.length)},P=e=>{if(e.tagName.toLocaleUpperCase()!==`INPUT`){let t=e.getElementsByTagName(`input`);if(t.length!==1)throw Error(`v-money3 requires 1 input, found ${t.length} elements.`);return t[0]}return e},F=(e,t)=>{e.onkeydown=e=>{j(e,t)},e.oninput=e=>{M(e,t)},e.onfocus=e=>{N(e,t)}};function I(e,t){return e?k.some(n=>JSON.stringify(e[n])!==JSON.stringify(t[n])):!1}var L=`__v_money3_input__`;function R(e){let t=e[L];if(t)return t;let n=P(e);return e[L]=n,n}var z={mounted(e,t){if(!t.value)return;let r=f({...n,...t.value});x(r,`directive mounted() - opt`,r);let i=R(e);F(i,r),x(r,`directive mounted() - el.value`,i.value),A(i,r,`directive mounted`)},updated(e,t){if(!t.value)return;let r=f({...n,...t.value});x(r,`directive updated() - opt`,r),x(r,`directive updated() - host.value`,e.value);let i=R(e);if(D(i.value,r,`directive updated check`)!==i.value){if(I(t.oldValue?f({...n,...t.oldValue}):null,r)&&i.value!==``){console.warn(`v-money3: runtime change of format options on the bare directive is unsupported and was skipped to avoid corrupting the value. Re-mount the directive or use the Money3 component instead.`);return}A(i,r,`directive updated`)}},beforeUnmount(e){let t=e[L]||e;t.onkeydown=null,t.oninput=null,t.onfocus=null,delete e[L]}},B=[`id`,`value`,`disabled`],V=(0,t.defineComponent)({inheritAttrs:!1,name:`Money3`,directives:{money3:z},__name:`component`,props:{debug:{required:!1,type:Boolean,default:!1},id:{required:!1,type:[Number,String],default:()=>{let e=(0,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){return u(e,`decimal`)}},thousands:{type:String,default:()=>n.thousands,validator(e){return u(e,`thousands`)}},prefix:{type:String,default:()=>n.prefix,validator(e){return u(e,`prefix`)}},suffix:{type:String,default:()=>n.suffix,validator(e){return u(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},treatZeroAsBlank:{type:Boolean,default:()=>n.treatZeroAsBlank},minimumNumberOfCharacters:{type:Number,default:()=>n.minimumNumberOfCharacters},shouldRound:{type:Boolean,default:()=>n.shouldRound},focusOnRight:{type:Boolean,default:()=>n.focusOnRight}},emits:[`update:model-value`],setup(e,{emit:n}){let r=e,{modelValue:i,modelModifiers:o,masked:s,precision:c,shouldRound:l,focusOnRight:u}=(0,t.toRefs)(r);x(r,`component setup()`,r);let{value:d}=i;(r.disableNegative||d!==`-`)&&o.value&&o.value.number&&(d=l.value?Number(i.value).toFixed(a(c.value)):Number(i.value).toFixed(Math.min(a(c.value)+1,100)).slice(0,-1));let p=(0,t.ref)(D(d,r,`component setup`));x(r,`component setup() - data.formattedValue`,p.value);function m(e){x(r,`component watch() -> value`,e);let t=D(e,f({...r}),`component watch`);t!==p.value&&(x(r,`component watch() changed -> formatted`,t),p.value=t)}(0,t.watch)(i,m);let h=null,g=n;function _(){let e=f({...r}),t=i.value;if(t===`-`)return;let n=D(t,e,`component opts watch`);if(n!==p.value&&(p.value=n),s.value&&!(o.value&&o.value.number)){n!==t&&n!==h&&(h=n,g(`update:model-value`,n));return}let a=O(n,e,`component opts watch reunformat`),c=Number(t),l=Number(a);!Number.isNaN(c)&&!Number.isNaN(l)&&c!==l&&l!==h&&(h=l,g(`update:model-value`,a))}(0,t.watch)(()=>[r.precision,r.decimal,r.thousands,r.prefix,r.suffix,r.min,r.max,r.allowBlank,r.treatZeroAsBlank,r.minimumNumberOfCharacters,r.shouldRound],_),(0,t.watch)(()=>r.modelModifiers,_,{deep:!0}),(0,t.onMounted)(()=>{let e=f({...r}),t=O(p.value,e,`component mounted reconcile`),n=Number(i.value),a=Number(t);Number.isNaN(n)&&!Number.isNaN(a)&&a!==h&&(h=a,g(`update:model-value`,t))});function v(e){let t=e.target.value;x(r,`component change() -> evt.target.value`,t),s.value&&!o.value.number||(t=O(t,f({...r}),`component change`)),t!==h&&(h=t,x(r,`component change() -> update:model-value`,t),g(`update:model-value`,t))}let y=(0,t.useAttrs)(),b=(0,t.computed)(()=>{let e={...y};return delete e[`onUpdate:modelValue`],e});return(n,i)=>{let a=(0,t.resolveDirective)(`money3`);return(0,t.withDirectives)(((0,t.openBlock)(),(0,t.createElementBlock)(`input`,(0,t.mergeProps)({id:`${e.id}`},b.value,{type:`tel`,class:`v-money3`,value:p.value,disabled:r.disabled,onChange:v}),null,16,B)),[[a,{precision:(0,t.unref)(c),decimal:r.decimal,thousands:r.thousands,prefix:r.prefix,suffix:r.suffix,disableNegative:r.disableNegative,min:r.min,max:r.max,allowBlank:r.allowBlank,treatZeroAsBlank:r.treatZeroAsBlank,minimumNumberOfCharacters:r.minimumNumberOfCharacters,debug:r.debug,modelModifiers:(0,t.unref)(o),shouldRound:(0,t.unref)(l),focusOnRight:(0,t.unref)(u)}]])}}});e.BigNumber=E,e.Money=V,e.Money3=V,e.Money3Component=V,e.Money3Directive=z,e.VMoney=z,e.VMoney3=z,e.default={install(e){e.component(`money3`,V),e.directive(`money3`,z)}},e.format=D,e.unformat=O});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`vue`)):typeof define==`function`&&define.amd?define([`exports`,`vue`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e[`v-money3`]={},e.Vue))})(this,function(e,t){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});var n={debug:!1,masked:!1,prefix:``,suffix:``,thousands:`,`,decimal:`.`,precision:2,disableNegative:!1,disabled:!1,min:null,max:null,setMaxIfBigger:!0,allowBlank:!1,treatZeroAsBlank:!0,minimumNumberOfCharacters:0,modelModifiers:{number:!1},shouldRound:!0,focusOnRight:!1,lazy:!0},r=[`+`,`-`],i=[`decimal`,`thousands`,`prefix`,`suffix`];function a(e){return Math.max(0,Math.min(e,100))}function o(e,t){return e=e.padStart(t+1,`0`),t===0?e:`${e.slice(0,-t)}.${e.slice(-t)}`}function s(e){return e=e?e.toString():``,e.replace(/\D+/g,``)||`0`}function c(e,t){return e.replace(/(\d)(?=(?:\d{3})+\b)/gm,`$1${t}`)}function l(e,t,n){return t?e+n+t:e}function u(e,t){return r.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):!0}function d(e){for(let t of i)if(!u(e[t],t))return!1;return!0}function f(e){for(let t of i){if(typeof e[t]!=`string`){e[t]=``;continue}e[t]=e[t].replace(/\d+/g,``);for(let n of r)e[t]=e[t].replaceAll(n,``)}return e}function p(e){return e.length-(e.indexOf(`.`)+1)}function m(e){return e.replace(/^(-?)0+(?!\.)(.+)/,`$1$2`)}function h(e){return/^-?[\d]+$/g.test(e)}function g(e){return/^-?[\d]+(\.[\d]+)$/g.test(e)}function _(e,t,n){return t>e.length-1?e:e.substring(0,t)+n+e.substring(t+1)}function v(e,t){let n=t-p(e);if(n>=0)return e;let r=e.slice(0,n),i=e.slice(n);if(r.charAt(r.length-1)===`.`&&(r=r.slice(0,-1)),parseInt(i.charAt(0),10)>=5){for(let e=r.length-1;e>=0;--e){let t=r.charAt(e);if(t!==`.`&&t!==`-`){let n=parseInt(t,10)+1;if(n<10)return _(r,e,n);r=_(r,e,`0`)}}return`1${r}`}return r}function y(e,t){let n=()=>{e===document.activeElement&&e.setSelectionRange(t,t)};e===document.activeElement&&(n(),setTimeout(n,1))}function b(e){return new Event(e,{bubbles:!0,cancelable:!1})}function x({debug:e=!1},...t){e&&console.log(...t)}function S(e){"@babel/helpers - typeof";return S=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},S(e)}function C(e,t){if(S(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(S(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function w(e){var t=C(e,`string`);return S(t)==`symbol`?t:t+``}function T(e,t,n){return(t=w(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var E=class e{constructor(e){T(this,`number`,0n),T(this,`decimal`,0),this.setNumber(e)}getNumber(){return this.number}getDecimalPrecision(){return this.decimal}setNumber(e){this.decimal=0,typeof e==`bigint`?this.number=e:typeof e==`number`?this.setupString(e.toString()):this.setupString(e)}toFixed(e=0,t=!0){let n=this.toString(),r=e-this.getDecimalPrecision();if(r>0)return n.includes(`.`)||(n+=`.`),n.padEnd(n.length+r,`0`);if(r<0){if(t)return v(n,e);let i=n.slice(0,r);return i.endsWith(`.`)?i.slice(0,-1):i}return 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=m(e),(t?`-`:``)+e}return e}lessThan(e){let[t,n]=this.adjustComparisonNumbers(e);return t<n}biggerThan(e){let[t,n]=this.adjustComparisonNumbers(e);return t>n}isEqual(e){let[t,n]=this.adjustComparisonNumbers(e);return t===n}setupString(e){if(e=m(e),h(e))this.number=BigInt(e);else if(g(e))this.decimal=p(e),this.number=BigInt(e.replace(`.`,``));else throw Error(`BigNumber has received an invalid format for the constructor: ${e}`)}adjustComparisonNumbers(t){let n;n=t instanceof e?t:new e(t);let r=this.getDecimalPrecision()-n.getDecimalPrecision(),i=this.getNumber(),a=n.getNumber();return r>0?a=n.getNumber()*10n**BigInt(r):r<0&&(i=this.getNumber()*10n**BigInt(r*-1)),[i,a]}};function D(e,t=n,r=``){x(t,`utils format() - caller`,r),x(t,`utils format() - input1`,e);let i=a(t.precision);if((e==null||e===``)&&t.allowBlank)return``;if(e==null)e=``;else if(typeof e==`number`)e=t.shouldRound?e.toFixed(i):e.toFixed(Math.min(i+1,100)).slice(0,-1);else if(t.modelModifiers&&t.modelModifiers.number&&h(e))e=Number(e).toFixed(i);else if(!t.disableNegative&&e===`-`)return e;x(t,`utils format() - input2`,e);let u=t.disableNegative?``:e.indexOf(`-`)>=0?`-`:``,d=e.replace(t.prefix,``).replace(t.suffix,``);x(t,`utils format() - filtered`,d),!i&&t.thousands!==`.`&&g(d)&&(d=v(d,0),x(t,`utils format() - !precision && isValidFloat()`,d));let f=s(d);x(t,`utils format() - numbers`,f),x(t,`utils format() - numbersToCurrency`,u+o(f,i));let p=new E(u+o(f,i));x(t,`utils format() - bigNumber1`,p.toString()),t.setMaxIfBigger!==!1&&t.max!==null&&t.max!==void 0&&t.max!==``&&p.biggerThan(t.max)&&p.setNumber(t.max),t.min!==null&&t.min!==void 0&&t.min!==``&&p.lessThan(t.min)&&p.setNumber(t.min),t.disableNegative&&p.lessThan(0)&&p.setNumber(0);let m=p.toFixed(i,t.shouldRound);if(x(t,`utils format() - bigNumber2`,p.toFixed(i)),/^0(\.0+)?$/g.test(m)&&t.allowBlank&&t.treatZeroAsBlank)return``;let[_,y]=m.split(`.`),b=y===void 0?0:y.length,S=_.charAt(0)===`-`,C=(S?_.slice(1):_).padStart(t.minimumNumberOfCharacters-b,`0`);_=(S?`-`:``)+c(C,t.thousands);let w=t.prefix+l(_,y,t.decimal)+t.suffix;return x(t,`utils format() - output`,w),w}function O(e,t=n,r=``){if(x(t,`utils unformat() - caller`,r),x(t,`utils unformat() - input`,e),!t.disableNegative&&e===`-`)return x(t,`utils unformat() - return netagive symbol`,e),e;let i=t.disableNegative?``:e.indexOf(`-`)>=0?`-`:``,c=e.replace(t.prefix,``).replace(t.suffix,``);x(t,`utils unformat() - filtered`,c);let l=s(c);x(t,`utils unformat() - numbers`,l);let u=new E(i+o(l,t.precision));x(t,`utils unformat() - bigNumber1`,l.toString()),t.setMaxIfBigger!==!1&&t.max!==null&&t.max!==void 0&&t.max!==``&&u.biggerThan(t.max)&&u.setNumber(t.max),t.min!==null&&t.min!==void 0&&t.min!==``&&u.lessThan(t.min)&&u.setNumber(t.min),t.disableNegative&&u.lessThan(0)&&u.setNumber(0);let d=u.toFixed(a(t.precision),t.shouldRound);return t.modelModifiers&&t.modelModifiers.number&&(d=parseFloat(d)),x(t,`utils unformat() - output`,d),d}var k=[`precision`,`decimal`,`thousands`,`prefix`,`suffix`,`min`,`max`,`setMaxIfBigger`,`allowBlank`,`treatZeroAsBlank`,`minimumNumberOfCharacters`,`shouldRound`,`modelModifiers`],A=`__v_money3_last_valid__`,j=`__v_money3_is_wrapper__`,M=`__v_money3_synth__`,N=(e,t,n)=>{if(x(t,`directive setValue() - caller`,n),!d(t)){x(t,`directive setValue() - validateRestrictedOptions() return false. Stopping here...`,e.value);return}let r=e.value.length-(e.selectionEnd||0),i=D(e.value,t,n);if(t.setMaxIfBigger===!1&&t.max!==null&&t.max!==void 0&&t.max!==``){let n=O(i,t,`directive setValue overflow check`);if(new E(String(n)).biggerThan(t.max)){let t=e[A];typeof t==`string`&&t!==e.value&&(e.value=t);return}}if(i===e.value){e[A]=i;return}if(e.value=i,e[A]=i,r=Math.max(r,t.suffix.length),r=e.value.length-r,r=Math.max(r,t.prefix.length),y(e,r),e.dispatchEvent(b(`change`)),e[j]){let t=new Event(`input`,{bubbles:!1});t[M]=!0,e.dispatchEvent(t)}},P=(e,t)=>{let n=e.currentTarget,r=e.code===`Backspace`||e.code===`Delete`,i=n.value.length-(n.selectionEnd||0)===0;x(t,`directive onkeydown() - el.value`,n.value),x(t,`directive onkeydown() - backspacePressed`,r),x(t,`directive onkeydown() - isAtEndPosition`,i),t.allowBlank&&t.treatZeroAsBlank&&r&&i&&parseFloat(String(O(n.value,t,`directive onkeydown allowBlank`)))===0&&(x(t,`directive onkeydown() - set el.value = ""`,n.value),n.value=``,n.dispatchEvent(b(`change`))),x(t,`directive onkeydown() - e.key`,e.key),e.key===`+`&&n.value.indexOf(`-`)>=0&&(x(t,`directive onkeydown() - flipping sign on el.value`,n.value),n.value=n.value.replace(`-`,``),N(n,t,`directive onkeydown +`))},F=(e,t)=>{if(e[M])return;let n=e.currentTarget;x(t,`directive oninput()`,n.value),/^[1-9]$/.test(n.value)&&(n.value=o(n.value,a(t.precision)),x(t,`directive oninput() - is 1-9`,n.value)),N(n,t,`directive oninput`)},I=(e,t)=>{let n=e.currentTarget;x(t,`directive onFocus()`,n.value),t.focusOnRight&&y(n,n.value.length-t.suffix.length)},L=e=>{if(e.tagName.toLocaleUpperCase()!==`INPUT`){let t=e.getElementsByTagName(`input`);if(t.length!==1)throw Error(`v-money3 requires 1 input, found ${t.length} elements.`);return t[0]}return e},R=(e,t)=>{e.onkeydown=e=>{P(e,t)},e.oninput=e=>{F(e,t)},e.onfocus=e=>{I(e,t)}};function z(e,t){return e?k.some(n=>JSON.stringify(e[n])!==JSON.stringify(t[n])):!1}var B=`__v_money3_input__`;function V(e){let t=e[B];if(t)return t;let n=L(e);return e[B]=n,n}var H={mounted(e,t){if(!t.value)return;let r=f({...n,...t.value});x(r,`directive mounted() - opt`,r);let i=V(e);i[j]=e!==i,R(i,r),x(r,`directive mounted() - el.value`,i.value),N(i,r,`directive mounted`)},updated(e,t){if(!t.value)return;let r=f({...n,...t.value});x(r,`directive updated() - opt`,r),x(r,`directive updated() - host.value`,e.value);let i=V(e);if(i[j]=e!==i,D(i.value,r,`directive updated check`)!==i.value){if(z(t.oldValue?f({...n,...t.oldValue}):null,r)&&i.value!==``){console.warn(`v-money3: runtime change of format options on the bare directive is unsupported and was skipped to avoid corrupting the value. Re-mount the directive or use the Money3 component instead.`);return}N(i,r,`directive updated`)}},beforeUnmount(e){let t=e[B]||e;t.onkeydown=null,t.oninput=null,t.onfocus=null,delete t[j],delete e[B]}},U=[`id`,`value`,`disabled`],W=(0,t.defineComponent)({inheritAttrs:!1,name:`Money3`,directives:{money3:H},__name:`component`,props:{debug:{required:!1,type:Boolean,default:!1},id:{required:!1,type:[Number,String],default:()=>{let e=(0,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){return u(e,`decimal`)}},thousands:{type:String,default:()=>n.thousands,validator(e){return u(e,`thousands`)}},prefix:{type:String,default:()=>n.prefix,validator(e){return u(e,`prefix`)}},suffix:{type:String,default:()=>n.suffix,validator(e){return u(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},setMaxIfBigger:{type:Boolean,default:()=>n.setMaxIfBigger},allowBlank:{type:Boolean,default:()=>n.allowBlank},treatZeroAsBlank:{type:Boolean,default:()=>n.treatZeroAsBlank},minimumNumberOfCharacters:{type:Number,default:()=>n.minimumNumberOfCharacters},shouldRound:{type:Boolean,default:()=>n.shouldRound},focusOnRight:{type:Boolean,default:()=>n.focusOnRight}},emits:[`update:model-value`],setup(e,{emit:n}){let r=e,{modelValue:i,modelModifiers:o,masked:s,precision:c,shouldRound:l,focusOnRight:u}=(0,t.toRefs)(r);x(r,`component setup()`,r);let{value:d}=i;(r.disableNegative||d!==`-`)&&o.value&&o.value.number&&(d=l.value?Number(i.value).toFixed(a(c.value)):Number(i.value).toFixed(Math.min(a(c.value)+1,100)).slice(0,-1));let p=(0,t.ref)(D(d,r,`component setup`));x(r,`component setup() - data.formattedValue`,p.value);function m(e){x(r,`component watch() -> value`,e);let t=D(e,f({...r}),`component watch`);t!==p.value&&(x(r,`component watch() changed -> formatted`,t),p.value=t)}(0,t.watch)(i,m);let h=null,g=n;function _(){let e=f({...r}),t=i.value;if(t===`-`)return;let n=D(t,e,`component opts watch`);if(n!==p.value&&(p.value=n),s.value&&!(o.value&&o.value.number)){n!==t&&n!==h&&(h=n,g(`update:model-value`,n));return}let a=O(n,e,`component opts watch reunformat`),c=Number(t),l=Number(a);!Number.isNaN(c)&&!Number.isNaN(l)&&c!==l&&l!==h&&(h=l,g(`update:model-value`,a))}(0,t.watch)(()=>[r.precision,r.decimal,r.thousands,r.prefix,r.suffix,r.min,r.max,r.setMaxIfBigger,r.allowBlank,r.treatZeroAsBlank,r.minimumNumberOfCharacters,r.shouldRound],_),(0,t.watch)(()=>r.modelModifiers,_,{deep:!0}),(0,t.onMounted)(()=>{let e=f({...r}),t=O(p.value,e,`component mounted reconcile`),n=Number(i.value),a=Number(t);Number.isNaN(n)&&!Number.isNaN(a)&&a!==h&&(h=a,g(`update:model-value`,t))});function v(e){let t=e.target.value;x(r,`component change() -> evt.target.value`,t),s.value&&!o.value.number||(t=O(t,f({...r}),`component change`)),t!==h&&(h=t,x(r,`component change() -> update:model-value`,t),g(`update:model-value`,t))}let y=(0,t.useAttrs)(),b=(0,t.computed)(()=>{let e={...y};return delete e[`onUpdate:modelValue`],e});return(n,i)=>{let a=(0,t.resolveDirective)(`money3`);return(0,t.withDirectives)(((0,t.openBlock)(),(0,t.createElementBlock)(`input`,(0,t.mergeProps)({id:`${e.id}`},b.value,{type:`tel`,class:`v-money3`,value:p.value,disabled:r.disabled,onChange:v}),null,16,U)),[[a,{precision:(0,t.unref)(c),decimal:r.decimal,thousands:r.thousands,prefix:r.prefix,suffix:r.suffix,disableNegative:r.disableNegative,min:r.min,max:r.max,setMaxIfBigger:r.setMaxIfBigger,allowBlank:r.allowBlank,treatZeroAsBlank:r.treatZeroAsBlank,minimumNumberOfCharacters:r.minimumNumberOfCharacters,debug:r.debug,modelModifiers:(0,t.unref)(o),shouldRound:(0,t.unref)(l),focusOnRight:(0,t.unref)(u)}]])}}});e.BigNumber=E,e.Money=W,e.Money3=W,e.Money3Component=W,e.Money3Directive=H,e.VMoney=H,e.VMoney3=H,e.default={install(e){e.component(`money3`,W),e.directive(`money3`,H)}},e.format=D,e.unformat=O});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "v-money3",
3
- "version": "3.25.1",
3
+ "version": "3.26.0",
4
4
  "description": "Vue3 currency input/directive mask",
5
5
  "main": "./dist/v-money3.umd.js",
6
6
  "module": "./dist/v-money3.mjs",