@leaflink/stash 42.1.0 → 42.1.1

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.
@@ -1,9 +1,9 @@
1
1
  import { t as A, d as M } from "./debounce-6aca1ca9.js";
2
- import { g as N } from "./get-27d90892.js";
3
- import { toValue as d, computed as c, ref as x, watch as D, reactive as F, nextTick as S, readonly as V } from "vue";
2
+ import { g as V } from "./get-27d90892.js";
3
+ import { toValue as f, computed as c, ref as T, watch as D, reactive as F, nextTick as S, readonly as E } from "vue";
4
4
  import { DECIMAL_PRECISION as j, DEBOUNCE as C } from "./constants.js";
5
- import { t as g } from "./locale.js";
6
- import { i as h } from "./isDefined-2ce6cde4.js";
5
+ import { t as d } from "./locale.js";
6
+ import { i as g } from "./isDefined-2ce6cde4.js";
7
7
  import { r as R } from "./isObjectLike-54341556.js";
8
8
  import { t as w } from "./toString-7d5bf363.js";
9
9
  import "./_MapCache-65811284.js";
@@ -15,53 +15,53 @@ function B(t) {
15
15
  }
16
16
  function U(t, e) {
17
17
  e = e || {};
18
- const n = e.delimiter || ".", i = e.maxDepth, a = e.transformKey || B, u = {};
19
- function v(y, l, f) {
20
- f = f || 1, Object.keys(y).forEach(function(b) {
21
- const o = y[b], T = e.safe && Array.isArray(o), r = Object.prototype.toString.call(o), s = q(o), I = r === "[object Object]" || r === "[object Array]", m = l ? l + n + a(b) : a(b);
22
- if (!T && !s && I && Object.keys(o).length && (!e.maxDepth || f < i))
23
- return v(o, m, f + 1);
24
- u[m] = o;
18
+ const o = e.delimiter || ".", i = e.maxDepth, a = e.transformKey || B, u = {};
19
+ function h(v, y, l) {
20
+ l = l || 1, Object.keys(v).forEach(function(b) {
21
+ const r = v[b], N = e.safe && Array.isArray(r), n = Object.prototype.toString.call(r), s = q(r), I = n === "[object Object]" || n === "[object Array]", m = y ? y + o + a(b) : a(b);
22
+ if (!N && !s && I && Object.keys(r).length && (!e.maxDepth || l < i))
23
+ return h(r, m, l + 1);
24
+ u[m] = r;
25
25
  });
26
26
  }
27
- return v(t), u;
27
+ return h(t), u;
28
28
  }
29
29
  function ne(t = {}) {
30
30
  return {
31
31
  name: "email",
32
32
  validator(e) {
33
- return !h(e) || typeof e == "string" && /^\S+@\S+\.\S+$/.test(e);
33
+ return !g(e) || typeof e == "string" && /^\S+@\S+\.\S+$/.test(e);
34
34
  },
35
- message: t.message || g("ll.validation.email")
35
+ message: t.message || d("ll.validation.email")
36
36
  };
37
37
  }
38
38
  function oe(t) {
39
39
  return {
40
40
  name: "maxValue",
41
41
  validator(e) {
42
- const n = d(t.max);
43
- return !h(e) || Number(e) <= n;
42
+ const o = f(t.max);
43
+ return !g(e) || Number(e) <= o;
44
44
  },
45
- message: t.message || (() => g("ll.validation.maxValue", { max: String(d(t.max)) }))
45
+ message: t.message || (() => d("ll.validation.maxValue", { max: String(f(t.max)) }))
46
46
  };
47
47
  }
48
48
  function se(t) {
49
49
  return {
50
50
  name: "minValue",
51
51
  validator(e) {
52
- const n = d(t.min);
53
- return !h(e) || Number(e) >= n;
52
+ const o = f(t.min);
53
+ return !g(e) || Number(e) >= o;
54
54
  },
55
- message: t.message || (() => g("ll.validation.minValue", { min: String(d(t.min)) }))
55
+ message: t.message || (() => d("ll.validation.minValue", { min: String(f(t.min)) }))
56
56
  };
57
57
  }
58
58
  function ae(t = {}) {
59
59
  return {
60
60
  name: "positiveNumber",
61
61
  validator(e) {
62
- return !h(e) || Number(e) > 0;
62
+ return !g(e) || Number(e) > 0;
63
63
  },
64
- message: t.message || g("ll.validation.positiveNumber")
64
+ message: t.message || d("ll.validation.positiveNumber")
65
65
  };
66
66
  }
67
67
  var O = 1 / 0, $ = 17976931348623157e292;
@@ -75,18 +75,18 @@ function k(t) {
75
75
  return t === t ? t : 0;
76
76
  }
77
77
  function K(t) {
78
- var e = k(t), n = e % 1;
79
- return e === e ? n ? e - n : e : 0;
78
+ var e = k(t), o = e % 1;
79
+ return e === e ? o ? e - o : e : 0;
80
80
  }
81
81
  var _ = R.isFinite, L = Math.min;
82
82
  function Y(t) {
83
83
  var e = Math[t];
84
- return function(n, i) {
85
- if (n = A(n), i = i == null ? 0 : L(K(i), 292), i && _(n)) {
86
- var a = (w(n) + "e").split("e"), u = e(a[0] + "e" + (+a[1] + i));
84
+ return function(o, i) {
85
+ if (o = A(o), i = i == null ? 0 : L(K(i), 292), i && _(o)) {
86
+ var a = (w(o) + "e").split("e"), u = e(a[0] + "e" + (+a[1] + i));
87
87
  return a = (w(u) + "e").split("e"), +(a[0] + "e" + (+a[1] - i));
88
88
  }
89
- return e(n);
89
+ return e(o);
90
90
  };
91
91
  }
92
92
  var G = Y("round");
@@ -95,126 +95,131 @@ function ie(t = {}) {
95
95
  return {
96
96
  name: "price",
97
97
  validator(e) {
98
- const n = Number(e);
99
- return !h(e) || n !== 1 / 0 && n >= 0 && n === P(n, j.CURRENCY);
98
+ const o = Number(e);
99
+ return !g(e) || o !== 1 / 0 && o >= 0 && o === P(o, j.CURRENCY);
100
100
  },
101
- message: t.message || g("ll.validation.price")
101
+ message: t.message || d("ll.validation.price")
102
102
  };
103
103
  }
104
104
  function ue(t = {}) {
105
105
  return {
106
106
  name: "required",
107
107
  validator(e) {
108
- return h(typeof e == "string" ? e.trim() : e);
108
+ return g(typeof e == "string" ? e.trim() : e);
109
109
  },
110
- message: t.message || g("ll.validation.required")
110
+ message: t.message || d("ll.validation.required")
111
111
  };
112
112
  }
113
113
  function ce(t = {}) {
114
114
  return {
115
115
  name: "wholeNumber",
116
116
  validator(e) {
117
- return !h(e) || Number.isInteger(Number(e)) && Number(e) >= 0;
117
+ return !g(e) || Number.isInteger(Number(e)) && Number(e) >= 0;
118
118
  },
119
- message: t.message || g("ll.validation.wholeNumber")
119
+ message: t.message || d("ll.validation.wholeNumber")
120
120
  };
121
121
  }
122
122
  function me({
123
123
  rules: t,
124
124
  values: e
125
125
  }) {
126
- const i = c(() => Object.keys(U(t, { safe: !0 }))).value.reduce((r, s) => {
127
- const I = x(N(d(e), s)), m = (p) => {
128
- I.value = N(d(e), p);
129
- }, E = M(() => {
126
+ const i = c(() => Object.keys(U(t, { safe: !0 }))).value.reduce((n, s) => {
127
+ const I = T(V(f(e), s)), m = (x) => {
128
+ I.value = V(f(e), x);
129
+ }, p = M(() => {
130
130
  m(s);
131
131
  }, C.FAST);
132
132
  return D(
133
- () => N(d(e), s),
133
+ () => V(f(e), s),
134
134
  () => {
135
- E();
135
+ p();
136
136
  }
137
- ), r[s] = X({
137
+ ), n[s] = X({
138
138
  fieldName: s,
139
139
  fieldValue: I,
140
140
  flush: () => {
141
- E.cancel(), m(s);
141
+ p.cancel(), m(s);
142
142
  },
143
- rules: N(t, s)
144
- }), r;
145
- }, {}), a = c(() => Object.values(i)), u = c(() => a.value.some((r) => r.errors.length > 0)), v = c(() => a.value.some((r) => r.isTouched)), y = c(() => a.value.filter((r) => r.isDirty));
143
+ rules: V(t, s)
144
+ }), n;
145
+ }, {}), a = c(() => Object.values(i)), u = c(() => a.value.some((n) => n.errors.length > 0)), h = c(() => a.value.some((n) => n.isTouched)), v = c(() => a.value.filter((n) => n.isDirty));
146
146
  return F({
147
- validate: async function({ preventScroll: r } = {}) {
147
+ validate: async function({ preventScroll: n } = {}) {
148
148
  if (a.value.forEach((s) => {
149
149
  s.setTouched(!1), s.setTouched(!0);
150
- }), await S(), u.value && !r) {
151
- const s = Object.entries(i).find(([E, p]) => p.errorMessage), I = (s == null ? void 0 : s[0]) || "", m = document == null ? void 0 : document.querySelector(`[name=${I}]`);
150
+ }), await S(), u.value && !n) {
151
+ const s = Object.entries(i).find(([p, x]) => x.errorMessage), I = (s == null ? void 0 : s[0]) || "", m = document == null ? void 0 : document.querySelector(`[name=${I}]`);
152
152
  m && m.scrollIntoView({ behavior: "smooth" });
153
153
  }
154
154
  return !u.value;
155
155
  },
156
- getError: function(r) {
156
+ getError: function(n) {
157
157
  var s;
158
- return ((s = i[r]) == null ? void 0 : s.errorMessage) || "";
158
+ return ((s = i[n]) == null ? void 0 : s.errorMessage) || "";
159
159
  },
160
- touch: function(r) {
161
- if (!i[r])
162
- throw new Error(`In touch: fieldName "${r}" does not exist in the validation fields.`);
163
- i[r].setTouched();
160
+ touch: function(n) {
161
+ if (!i[n])
162
+ throw new Error(`In touch: fieldName "${n}" does not exist in the validation fields.`);
163
+ i[n].setTouched();
164
164
  },
165
165
  setAllUntouched: async function() {
166
- await S(), a.value.forEach((r) => {
167
- r.setTouched(!1);
166
+ await S(), a.value.forEach((n) => {
167
+ n.setTouched(!1);
168
168
  });
169
169
  },
170
- setInitialValues: function(r) {
170
+ setInitialValues: function(n) {
171
171
  a.value.forEach((s) => {
172
- s.setInitialValue(r[s.name]);
172
+ s.setInitialValue(n[s.name]);
173
173
  });
174
174
  },
175
175
  fields: i,
176
- dirtyFields: y,
176
+ dirtyFields: v,
177
177
  hasErrors: u,
178
- someTouched: v
178
+ someTouched: h
179
179
  });
180
180
  }
181
181
  function X({
182
182
  fieldName: t,
183
183
  fieldValue: e,
184
- rules: n,
184
+ rules: o,
185
185
  flush: i
186
186
  }) {
187
- const a = x(e.value), u = x(!1), v = c(() => (e.value ?? "") !== (a.value ?? "")), y = c(() => n.map((o) => ({
187
+ const a = T(e.value), u = T(!1), h = c(() => (e.value ?? "") !== (a.value ?? "")), v = c(() => u.value ? o.map((r) => ({
188
188
  fieldName: t,
189
- ruleName: o.name,
190
- isValid: o.validator(e.value),
191
- message: typeof o.message == "function" ? o.message(e.value) : o.message
192
- }))), l = c(() => u.value ? y.value.filter((o) => !o.isValid).map((o) => ({
193
- ruleName: o.ruleName,
194
- message: o.message
195
- })) : []);
196
- function f(o = !0) {
197
- i(), u.value = o;
189
+ ruleName: r.name,
190
+ isValid: r.validator(e.value),
191
+ message: typeof r.message == "function" ? r.message(e.value) : r.message
192
+ })) : []), y = c(
193
+ () => v.value.filter((r) => !r.isValid).map((r) => ({
194
+ ruleName: r.ruleName,
195
+ message: r.message
196
+ }))
197
+ );
198
+ function l(r = !0) {
199
+ i(), u.value = r;
198
200
  }
199
- function b(o) {
200
- a.value = o;
201
+ function b(r) {
202
+ a.value = r;
201
203
  }
202
204
  return F({
203
205
  name: t,
204
- currentValue: V(e),
205
- initialValue: V(a),
206
- isTouched: V(u),
207
- isDirty: V(v),
208
- errorMessage: c(() => l.value.length ? l.value[0].message : ""),
209
- errors: l,
206
+ currentValue: E(e),
207
+ initialValue: E(a),
208
+ isTouched: E(u),
209
+ isDirty: E(h),
210
+ errorMessage: c(() => {
211
+ var r, N;
212
+ return ((N = (r = y.value) == null ? void 0 : r[0]) == null ? void 0 : N.message) || "";
213
+ }),
214
+ errors: y,
210
215
  setInitialValue: b,
211
- setTouched: f
216
+ setTouched: l
212
217
  });
213
218
  }
214
219
  export {
215
220
  me as default,
216
221
  ne as email,
217
- h as isDefined,
222
+ g as isDefined,
218
223
  oe as maxValue,
219
224
  se as minValue,
220
225
  ae as positiveNumber,
@@ -1 +1 @@
1
- {"version":3,"file":"useValidation.js","sources":["../node_modules/flat/index.js","../src/composables/useValidation/ruleFactories/email.ts","../src/composables/useValidation/ruleFactories/maxValue.ts","../src/composables/useValidation/ruleFactories/minValue.ts","../src/composables/useValidation/ruleFactories/positiveNumber.ts","../node_modules/lodash-es/toFinite.js","../node_modules/lodash-es/toInteger.js","../node_modules/lodash-es/_createRound.js","../node_modules/lodash-es/round.js","../src/composables/useValidation/ruleFactories/price.ts","../src/composables/useValidation/ruleFactories/required.ts","../src/composables/useValidation/ruleFactories/wholeNumber.ts","../src/composables/useValidation/useValidation.ts"],"sourcesContent":["function isBuffer (obj) {\n return obj &&\n obj.constructor &&\n (typeof obj.constructor.isBuffer === 'function') &&\n obj.constructor.isBuffer(obj)\n}\n\nfunction keyIdentity (key) {\n return key\n}\n\nexport function flatten (target, opts) {\n opts = opts || {}\n\n const delimiter = opts.delimiter || '.'\n const maxDepth = opts.maxDepth\n const transformKey = opts.transformKey || keyIdentity\n const output = {}\n\n function step (object, prev, currentDepth) {\n currentDepth = currentDepth || 1\n Object.keys(object).forEach(function (key) {\n const value = object[key]\n const isarray = opts.safe && Array.isArray(value)\n const type = Object.prototype.toString.call(value)\n const isbuffer = isBuffer(value)\n const isobject = (\n type === '[object Object]' ||\n type === '[object Array]'\n )\n\n const newKey = prev\n ? prev + delimiter + transformKey(key)\n : transformKey(key)\n\n if (!isarray && !isbuffer && isobject && Object.keys(value).length &&\n (!opts.maxDepth || currentDepth < maxDepth)) {\n return step(value, newKey, currentDepth + 1)\n }\n\n output[newKey] = value\n })\n }\n\n step(target)\n\n return output\n}\n\nexport function unflatten (target, opts) {\n opts = opts || {}\n\n const delimiter = opts.delimiter || '.'\n const overwrite = opts.overwrite || false\n const transformKey = opts.transformKey || keyIdentity\n const result = {}\n\n const isbuffer = isBuffer(target)\n if (isbuffer || Object.prototype.toString.call(target) !== '[object Object]') {\n return target\n }\n\n // safely ensure that the key is\n // an integer.\n function getkey (key) {\n const parsedKey = Number(key)\n\n return (\n isNaN(parsedKey) ||\n key.indexOf('.') !== -1 ||\n opts.object\n )\n ? key\n : parsedKey\n }\n\n function addKeys (keyPrefix, recipient, target) {\n return Object.keys(target).reduce(function (result, key) {\n result[keyPrefix + delimiter + key] = target[key]\n\n return result\n }, recipient)\n }\n\n function isEmpty (val) {\n const type = Object.prototype.toString.call(val)\n const isArray = type === '[object Array]'\n const isObject = type === '[object Object]'\n\n if (!val) {\n return true\n } else if (isArray) {\n return !val.length\n } else if (isObject) {\n return !Object.keys(val).length\n }\n }\n\n target = Object.keys(target).reduce(function (result, key) {\n const type = Object.prototype.toString.call(target[key])\n const isObject = (type === '[object Object]' || type === '[object Array]')\n if (!isObject || isEmpty(target[key])) {\n result[key] = target[key]\n return result\n } else {\n return addKeys(\n key,\n result,\n flatten(target[key], opts)\n )\n }\n }, {})\n\n Object.keys(target).forEach(function (key) {\n const split = key.split(delimiter).map(transformKey)\n let key1 = getkey(split.shift())\n let key2 = getkey(split[0])\n let recipient = result\n\n while (key2 !== undefined) {\n if (key1 === '__proto__') {\n return\n }\n\n const type = Object.prototype.toString.call(recipient[key1])\n const isobject = (\n type === '[object Object]' ||\n type === '[object Array]'\n )\n\n // do not write over falsey, non-undefined values if overwrite is false\n if (!overwrite && !isobject && typeof recipient[key1] !== 'undefined') {\n return\n }\n\n if ((overwrite && !isobject) || (!overwrite && recipient[key1] == null)) {\n recipient[key1] = (\n typeof key2 === 'number' &&\n !opts.object\n ? []\n : {}\n )\n }\n\n recipient = recipient[key1]\n if (split.length > 0) {\n key1 = getkey(split.shift())\n key2 = getkey(split[0])\n }\n }\n\n // unflatten again for 'messy objects'\n recipient[key1] = unflatten(target[key], opts)\n })\n\n return result\n}\n","import { t } from '../../../locale';\nimport { ValidationMessage, ValidationRule } from '../useValidation.types';\nimport isDefined from '../utils/isDefined';\n\ninterface Config {\n message?: ValidationMessage;\n}\n\nexport default function email(config: Config = {}): ValidationRule {\n return {\n name: 'email',\n validator(value) {\n return !isDefined(value) || (typeof value === 'string' && /^\\S+@\\S+\\.\\S+$/.test(value));\n },\n message: config.message || t('ll.validation.email'),\n };\n}\n","import { MaybeRefOrGetter, toValue } from 'vue';\n\nimport { t } from '../../../locale';\nimport { ValidationMessage, ValidationRule } from '../useValidation.types';\nimport isDefined from '../utils/isDefined';\n\ninterface Config {\n max: MaybeRefOrGetter<number>;\n message?: ValidationMessage;\n}\n\nexport default function maxValue(config: Config): ValidationRule {\n return {\n name: 'maxValue',\n validator(value) {\n const max = toValue(config.max);\n\n return !isDefined(value) || Number(value) <= max;\n },\n message: config.message || (() => t('ll.validation.maxValue', { max: String(toValue(config.max)) })),\n };\n}\n","import { MaybeRefOrGetter, toValue } from 'vue';\n\nimport { t } from '../../../locale';\nimport { ValidationMessage, ValidationRule } from '../useValidation.types';\nimport isDefined from '../utils/isDefined';\n\ninterface Config {\n min: MaybeRefOrGetter<number>;\n message?: ValidationMessage;\n}\n\nexport default function minValue(config: Config): ValidationRule {\n return {\n name: 'minValue',\n validator(value) {\n const min = toValue(config.min);\n\n return !isDefined(value) || Number(value) >= min;\n },\n message: config.message || (() => t('ll.validation.minValue', { min: String(toValue(config.min)) })),\n };\n}\n","import { t } from '../../../locale';\nimport { ValidationMessage, ValidationRule } from '../useValidation.types';\nimport isDefined from '../utils/isDefined';\n\ninterface Config {\n message?: ValidationMessage;\n}\n\nexport default function positiveNumber(config: Config = {}): ValidationRule {\n return {\n name: 'positiveNumber',\n validator(value) {\n return !isDefined(value) || Number(value) > 0;\n },\n message: config.message || t('ll.validation.positiveNumber'),\n };\n}\n","import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n","import toFinite from './toFinite.js';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n","import root from './_root.js';\nimport toInteger from './toInteger.js';\nimport toNumber from './toNumber.js';\nimport toString from './toString.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsFinite = root.isFinite,\n nativeMin = Math.min;\n\n/**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\nfunction createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n}\n\nexport default createRound;\n","import createRound from './_createRound.js';\n\n/**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\nvar round = createRound('round');\n\nexport default round;\n","import round from 'lodash-es/round';\n\nimport { DECIMAL_PRECISION } from '../../../constants';\nimport { t } from '../../../locale';\nimport { ValidationMessage, ValidationRule } from '../useValidation.types';\nimport isDefined from '../utils/isDefined';\n\ninterface Config {\n message?: ValidationMessage;\n}\n\nexport default function price(config: Config = {}): ValidationRule {\n return {\n name: 'price',\n validator(value) {\n const price = Number(value);\n\n return (\n !isDefined(value) || (price !== Infinity && price >= 0 && price === round(price, DECIMAL_PRECISION.CURRENCY))\n );\n },\n message: config.message || t('ll.validation.price'),\n };\n}\n","import { t } from '../../../locale';\nimport { ValidationMessage, ValidationRule } from '../useValidation.types';\nimport isDefined from '../utils/isDefined';\n\ninterface Config {\n message?: ValidationMessage;\n}\n\nexport default function required(config: Config = {}): ValidationRule {\n return {\n name: 'required',\n validator(value) {\n return isDefined(typeof value === 'string' ? value.trim() : value);\n },\n message: config.message || t('ll.validation.required'),\n };\n}\n","import { t } from '../../../locale';\nimport { ValidationMessage, ValidationRule } from '../useValidation.types';\nimport isDefined from '../utils/isDefined';\n\ninterface Config {\n message?: ValidationMessage;\n}\n\nexport default function wholeNumber(config: Config = {}): ValidationRule {\n return {\n name: 'wholeNumber',\n validator(value) {\n return !isDefined(value) || (Number.isInteger(Number(value)) && Number(value) >= 0);\n },\n message: config.message || t('ll.validation.wholeNumber'),\n };\n}\n","import { flatten } from 'flat';\nimport debounce from 'lodash-es/debounce';\nimport get from 'lodash-es/get';\nimport { computed, ComputedRef, nextTick, reactive, readonly, Ref, ref, toValue, UnwrapRef, watch } from 'vue';\n\nimport { DEBOUNCE } from '../../constants';\nimport {\n UseValidationArgs,\n ValidationError,\n ValidationField,\n ValidationGroup,\n ValidationRule,\n} from './useValidation.types';\n\nexport default function useValidation<Values extends object>({\n rules,\n values,\n}: UseValidationArgs<Values>): ValidationGroup<Values> {\n const fieldNames = computed(() => Object.keys(flatten(rules, { safe: true })));\n\n const fields = fieldNames.value.reduce((map, fieldName) => {\n const fieldValue = ref(get(toValue(values), fieldName));\n\n // Having this function here allows us to update the fieldValue when the value of the field changes.\n // Also, passing `fieldValue` outside the `.reduce()` loop will cause a racing condition on `fieldValue` updates\n const updateFieldValue = (fieldName: string) => {\n fieldValue.value = get(toValue(values), fieldName);\n };\n\n const debouncedSetFieldValue = debounce(() => {\n updateFieldValue(fieldName);\n }, DEBOUNCE.FAST);\n\n watch(\n () => get(toValue(values), fieldName),\n () => {\n debouncedSetFieldValue();\n },\n );\n\n map[fieldName] = buildField<UnwrapRef<typeof fieldValue>>({\n fieldName,\n fieldValue,\n flush: () => {\n debouncedSetFieldValue.cancel();\n updateFieldValue(fieldName);\n },\n rules: get(rules, fieldName),\n });\n\n return map;\n }, {} as Record<string, ValidationField>);\n\n const fieldList = computed(() => Object.values(fields));\n\n const hasErrors = computed(() => {\n return fieldList.value.some((field) => field.errors.length > 0);\n });\n\n const someTouched = computed(() => {\n return fieldList.value.some((field) => field.isTouched);\n });\n\n const dirtyFields = computed(() => fieldList.value.filter((field) => field.isDirty));\n\n const validate: ValidationGroup<Values>['validate'] = async function ({ preventScroll } = {}) {\n fieldList.value.forEach((field) => {\n // Doing setTouched(true) on a field that already has isTouched as `true` will not trigger reactivity for that field. Therefore, setting isTouched to `false` for all fields ensures that setTouched(true) will trigger reactivity for every field, which will cause all validations to run and display any error messages.\n field.setTouched(false);\n field.setTouched(true);\n });\n await nextTick();\n\n if (hasErrors.value && !preventScroll) {\n const firstFieldWithError = Object.entries(fields).find(([_, field]) => field.errorMessage);\n const fieldName = firstFieldWithError?.[0] || '';\n const firstErrorElement = document?.querySelector(`[name=${fieldName}]`);\n\n if (firstErrorElement) {\n firstErrorElement.scrollIntoView({ behavior: 'smooth' });\n }\n }\n\n return !hasErrors.value;\n };\n\n const getError: ValidationGroup<Values>['getError'] = function (fieldName: string) {\n return fields[fieldName]?.errorMessage || '';\n };\n\n const touch: ValidationGroup<Values>['touch'] = function (fieldName: string) {\n if (!fields[fieldName]) {\n throw new Error(`In touch: fieldName \"${fieldName}\" does not exist in the validation fields.`);\n }\n\n fields[fieldName].setTouched();\n };\n\n const setAllUntouched: ValidationGroup<Values>['setAllUntouched'] = async function () {\n await nextTick(); // wait for field values to be reset\n fieldList.value.forEach((field) => {\n field.setTouched(false);\n });\n };\n\n const setInitialValues: ValidationGroup<Values>['setInitialValues'] = function (intialValues: Values) {\n fieldList.value.forEach((field) => {\n field.setInitialValue(intialValues[field.name]);\n });\n };\n\n return reactive({\n validate,\n getError,\n touch,\n setAllUntouched,\n setInitialValues,\n fields,\n dirtyFields,\n hasErrors,\n someTouched,\n });\n}\n\ninterface BuildFieldArgs<Value = unknown> {\n fieldName: string;\n fieldValue: ComputedRef<Value>;\n rules: ValidationRule[];\n flush: () => void;\n}\n\nfunction buildField<Value = unknown>({\n fieldName,\n fieldValue,\n rules,\n flush,\n}: BuildFieldArgs<Value>): ValidationField<Value> {\n /**\n * In order for `initialValue` to work properly, the `buildField` function must not be reactive; `buildField` should be called only once for each field when `useValidation` is called.\n */\n const initialValue = ref(fieldValue.value) as Ref<Value>;\n const isTouched = ref(false);\n const isDirty = computed(() => (fieldValue.value ?? '') !== (initialValue.value ?? ''));\n\n const results = computed(() => {\n return rules.map((rule) => {\n return {\n fieldName,\n ruleName: rule.name,\n isValid: rule.validator(fieldValue.value),\n message: typeof rule.message === 'function' ? rule.message(fieldValue.value) : rule.message,\n };\n });\n });\n\n const errors = computed<ValidationError[]>(() => {\n if (isTouched.value) {\n return results.value\n .filter((result) => !result.isValid)\n .map((result) => {\n return {\n ruleName: result.ruleName,\n message: result.message,\n };\n });\n }\n\n return [];\n });\n\n function setTouched(value = true) {\n // Flushing the debounced value to be updated right away.\n // So that, we can have reactivity for `rules` validation, `isTouched`, `isDirty`, among other values\n flush();\n\n isTouched.value = value;\n }\n\n function setInitialValue(value: Value) {\n initialValue.value = value;\n }\n\n return reactive({\n name: fieldName,\n currentValue: readonly(fieldValue),\n initialValue: readonly(initialValue),\n isTouched: readonly(isTouched),\n isDirty: readonly(isDirty),\n errorMessage: computed(() => (errors.value.length ? errors.value[0].message : '')),\n errors,\n setInitialValue,\n setTouched,\n });\n}\n\n// The ruleFactories are excluded from the main entrypoint in vite.config.ts, so they are exported here instead. This allows one import statement to be used for useValidation, its types, and all of the ruleFactories.\nexport { default as email } from './ruleFactories/email';\nexport { default as maxValue } from './ruleFactories/maxValue';\nexport { default as minValue } from './ruleFactories/minValue';\nexport { default as positiveNumber } from './ruleFactories/positiveNumber';\nexport { default as price } from './ruleFactories/price';\nexport { default as required } from './ruleFactories/required';\nexport { default as wholeNumber } from './ruleFactories/wholeNumber';\nexport * from './useValidation.types';\nexport { default as isDefined } from './utils/isDefined';\n"],"names":["isBuffer","obj","keyIdentity","key","flatten","target","opts","delimiter","maxDepth","transformKey","output","step","object","prev","currentDepth","value","isarray","type","isbuffer","isobject","newKey","email","config","isDefined","t","maxValue","max","toValue","minValue","min","positiveNumber","INFINITY","MAX_INTEGER","toFinite","toNumber","sign","toInteger","result","remainder","nativeIsFinite","root","nativeMin","createRound","methodName","func","number","precision","pair","toString","round","round$1","price","DECIMAL_PRECISION","required","wholeNumber","useValidation","rules","values","fields","computed","map","fieldName","fieldValue","ref","get","updateFieldValue","debouncedSetFieldValue","debounce","DEBOUNCE","watch","buildField","fieldList","hasErrors","field","someTouched","dirtyFields","reactive","preventScroll","nextTick","firstFieldWithError","_","firstErrorElement","_a","intialValues","flush","initialValue","isTouched","isDirty","results","rule","errors","setTouched","setInitialValue","readonly"],"mappings":"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","x_google_ignoreList":[0,5,6,7,8]}
1
+ {"version":3,"file":"useValidation.js","sources":["../node_modules/flat/index.js","../src/composables/useValidation/ruleFactories/email.ts","../src/composables/useValidation/ruleFactories/maxValue.ts","../src/composables/useValidation/ruleFactories/minValue.ts","../src/composables/useValidation/ruleFactories/positiveNumber.ts","../node_modules/lodash-es/toFinite.js","../node_modules/lodash-es/toInteger.js","../node_modules/lodash-es/_createRound.js","../node_modules/lodash-es/round.js","../src/composables/useValidation/ruleFactories/price.ts","../src/composables/useValidation/ruleFactories/required.ts","../src/composables/useValidation/ruleFactories/wholeNumber.ts","../src/composables/useValidation/useValidation.ts"],"sourcesContent":["function isBuffer (obj) {\n return obj &&\n obj.constructor &&\n (typeof obj.constructor.isBuffer === 'function') &&\n obj.constructor.isBuffer(obj)\n}\n\nfunction keyIdentity (key) {\n return key\n}\n\nexport function flatten (target, opts) {\n opts = opts || {}\n\n const delimiter = opts.delimiter || '.'\n const maxDepth = opts.maxDepth\n const transformKey = opts.transformKey || keyIdentity\n const output = {}\n\n function step (object, prev, currentDepth) {\n currentDepth = currentDepth || 1\n Object.keys(object).forEach(function (key) {\n const value = object[key]\n const isarray = opts.safe && Array.isArray(value)\n const type = Object.prototype.toString.call(value)\n const isbuffer = isBuffer(value)\n const isobject = (\n type === '[object Object]' ||\n type === '[object Array]'\n )\n\n const newKey = prev\n ? prev + delimiter + transformKey(key)\n : transformKey(key)\n\n if (!isarray && !isbuffer && isobject && Object.keys(value).length &&\n (!opts.maxDepth || currentDepth < maxDepth)) {\n return step(value, newKey, currentDepth + 1)\n }\n\n output[newKey] = value\n })\n }\n\n step(target)\n\n return output\n}\n\nexport function unflatten (target, opts) {\n opts = opts || {}\n\n const delimiter = opts.delimiter || '.'\n const overwrite = opts.overwrite || false\n const transformKey = opts.transformKey || keyIdentity\n const result = {}\n\n const isbuffer = isBuffer(target)\n if (isbuffer || Object.prototype.toString.call(target) !== '[object Object]') {\n return target\n }\n\n // safely ensure that the key is\n // an integer.\n function getkey (key) {\n const parsedKey = Number(key)\n\n return (\n isNaN(parsedKey) ||\n key.indexOf('.') !== -1 ||\n opts.object\n )\n ? key\n : parsedKey\n }\n\n function addKeys (keyPrefix, recipient, target) {\n return Object.keys(target).reduce(function (result, key) {\n result[keyPrefix + delimiter + key] = target[key]\n\n return result\n }, recipient)\n }\n\n function isEmpty (val) {\n const type = Object.prototype.toString.call(val)\n const isArray = type === '[object Array]'\n const isObject = type === '[object Object]'\n\n if (!val) {\n return true\n } else if (isArray) {\n return !val.length\n } else if (isObject) {\n return !Object.keys(val).length\n }\n }\n\n target = Object.keys(target).reduce(function (result, key) {\n const type = Object.prototype.toString.call(target[key])\n const isObject = (type === '[object Object]' || type === '[object Array]')\n if (!isObject || isEmpty(target[key])) {\n result[key] = target[key]\n return result\n } else {\n return addKeys(\n key,\n result,\n flatten(target[key], opts)\n )\n }\n }, {})\n\n Object.keys(target).forEach(function (key) {\n const split = key.split(delimiter).map(transformKey)\n let key1 = getkey(split.shift())\n let key2 = getkey(split[0])\n let recipient = result\n\n while (key2 !== undefined) {\n if (key1 === '__proto__') {\n return\n }\n\n const type = Object.prototype.toString.call(recipient[key1])\n const isobject = (\n type === '[object Object]' ||\n type === '[object Array]'\n )\n\n // do not write over falsey, non-undefined values if overwrite is false\n if (!overwrite && !isobject && typeof recipient[key1] !== 'undefined') {\n return\n }\n\n if ((overwrite && !isobject) || (!overwrite && recipient[key1] == null)) {\n recipient[key1] = (\n typeof key2 === 'number' &&\n !opts.object\n ? []\n : {}\n )\n }\n\n recipient = recipient[key1]\n if (split.length > 0) {\n key1 = getkey(split.shift())\n key2 = getkey(split[0])\n }\n }\n\n // unflatten again for 'messy objects'\n recipient[key1] = unflatten(target[key], opts)\n })\n\n return result\n}\n","import { t } from '../../../locale';\nimport { ValidationMessage, ValidationRule } from '../useValidation.types';\nimport isDefined from '../utils/isDefined';\n\ninterface Config {\n message?: ValidationMessage;\n}\n\nexport default function email(config: Config = {}): ValidationRule {\n return {\n name: 'email',\n validator(value) {\n return !isDefined(value) || (typeof value === 'string' && /^\\S+@\\S+\\.\\S+$/.test(value));\n },\n message: config.message || t('ll.validation.email'),\n };\n}\n","import { MaybeRefOrGetter, toValue } from 'vue';\n\nimport { t } from '../../../locale';\nimport { ValidationMessage, ValidationRule } from '../useValidation.types';\nimport isDefined from '../utils/isDefined';\n\ninterface Config {\n max: MaybeRefOrGetter<number>;\n message?: ValidationMessage;\n}\n\nexport default function maxValue(config: Config): ValidationRule {\n return {\n name: 'maxValue',\n validator(value) {\n const max = toValue(config.max);\n\n return !isDefined(value) || Number(value) <= max;\n },\n message: config.message || (() => t('ll.validation.maxValue', { max: String(toValue(config.max)) })),\n };\n}\n","import { MaybeRefOrGetter, toValue } from 'vue';\n\nimport { t } from '../../../locale';\nimport { ValidationMessage, ValidationRule } from '../useValidation.types';\nimport isDefined from '../utils/isDefined';\n\ninterface Config {\n min: MaybeRefOrGetter<number>;\n message?: ValidationMessage;\n}\n\nexport default function minValue(config: Config): ValidationRule {\n return {\n name: 'minValue',\n validator(value) {\n const min = toValue(config.min);\n\n return !isDefined(value) || Number(value) >= min;\n },\n message: config.message || (() => t('ll.validation.minValue', { min: String(toValue(config.min)) })),\n };\n}\n","import { t } from '../../../locale';\nimport { ValidationMessage, ValidationRule } from '../useValidation.types';\nimport isDefined from '../utils/isDefined';\n\ninterface Config {\n message?: ValidationMessage;\n}\n\nexport default function positiveNumber(config: Config = {}): ValidationRule {\n return {\n name: 'positiveNumber',\n validator(value) {\n return !isDefined(value) || Number(value) > 0;\n },\n message: config.message || t('ll.validation.positiveNumber'),\n };\n}\n","import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n","import toFinite from './toFinite.js';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n","import root from './_root.js';\nimport toInteger from './toInteger.js';\nimport toNumber from './toNumber.js';\nimport toString from './toString.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsFinite = root.isFinite,\n nativeMin = Math.min;\n\n/**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\nfunction createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n}\n\nexport default createRound;\n","import createRound from './_createRound.js';\n\n/**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\nvar round = createRound('round');\n\nexport default round;\n","import round from 'lodash-es/round';\n\nimport { DECIMAL_PRECISION } from '../../../constants';\nimport { t } from '../../../locale';\nimport { ValidationMessage, ValidationRule } from '../useValidation.types';\nimport isDefined from '../utils/isDefined';\n\ninterface Config {\n message?: ValidationMessage;\n}\n\nexport default function price(config: Config = {}): ValidationRule {\n return {\n name: 'price',\n validator(value) {\n const price = Number(value);\n\n return (\n !isDefined(value) || (price !== Infinity && price >= 0 && price === round(price, DECIMAL_PRECISION.CURRENCY))\n );\n },\n message: config.message || t('ll.validation.price'),\n };\n}\n","import { t } from '../../../locale';\nimport { ValidationMessage, ValidationRule } from '../useValidation.types';\nimport isDefined from '../utils/isDefined';\n\ninterface Config {\n message?: ValidationMessage;\n}\n\nexport default function required(config: Config = {}): ValidationRule {\n return {\n name: 'required',\n validator(value) {\n return isDefined(typeof value === 'string' ? value.trim() : value);\n },\n message: config.message || t('ll.validation.required'),\n };\n}\n","import { t } from '../../../locale';\nimport { ValidationMessage, ValidationRule } from '../useValidation.types';\nimport isDefined from '../utils/isDefined';\n\ninterface Config {\n message?: ValidationMessage;\n}\n\nexport default function wholeNumber(config: Config = {}): ValidationRule {\n return {\n name: 'wholeNumber',\n validator(value) {\n return !isDefined(value) || (Number.isInteger(Number(value)) && Number(value) >= 0);\n },\n message: config.message || t('ll.validation.wholeNumber'),\n };\n}\n","import { flatten } from 'flat';\nimport debounce from 'lodash-es/debounce';\nimport get from 'lodash-es/get';\nimport { computed, ComputedRef, nextTick, reactive, readonly, Ref, ref, toValue, UnwrapRef, watch } from 'vue';\n\nimport { DEBOUNCE } from '../../constants';\nimport {\n UseValidationArgs,\n ValidationError,\n ValidationField,\n ValidationGroup,\n ValidationRule,\n} from './useValidation.types';\n\nexport default function useValidation<Values extends object>({\n rules,\n values,\n}: UseValidationArgs<Values>): ValidationGroup<Values> {\n const fieldNames = computed(() => Object.keys(flatten(rules, { safe: true })));\n\n const fields = fieldNames.value.reduce((map, fieldName) => {\n const fieldValue = ref(get(toValue(values), fieldName));\n\n // Having this function here allows us to update the fieldValue when the value of the field changes.\n // Also, passing `fieldValue` outside the `.reduce()` loop will cause a racing condition on `fieldValue` updates\n const updateFieldValue = (fieldName: string) => {\n fieldValue.value = get(toValue(values), fieldName);\n };\n\n const debouncedSetFieldValue = debounce(() => {\n updateFieldValue(fieldName);\n }, DEBOUNCE.FAST);\n\n watch(\n () => get(toValue(values), fieldName),\n () => {\n debouncedSetFieldValue();\n },\n );\n\n map[fieldName] = buildField<UnwrapRef<typeof fieldValue>>({\n fieldName,\n fieldValue,\n flush: () => {\n debouncedSetFieldValue.cancel();\n updateFieldValue(fieldName);\n },\n rules: get(rules, fieldName),\n });\n\n return map;\n }, {} as Record<string, ValidationField>);\n\n const fieldList = computed(() => Object.values(fields));\n\n const hasErrors = computed(() => fieldList.value.some((field) => field.errors.length > 0));\n\n const someTouched = computed(() => fieldList.value.some((field) => field.isTouched));\n\n const dirtyFields = computed(() => fieldList.value.filter((field) => field.isDirty));\n\n const validate: ValidationGroup<Values>['validate'] = async function ({ preventScroll } = {}) {\n fieldList.value.forEach((field) => {\n // Doing setTouched(true) on a field that already has isTouched as `true` will not trigger reactivity for that field. Therefore, setting isTouched to `false` for all fields ensures that setTouched(true) will trigger reactivity for every field, which will cause all validations to run and display any error messages.\n field.setTouched(false);\n field.setTouched(true);\n });\n await nextTick();\n\n if (hasErrors.value && !preventScroll) {\n const firstFieldWithError = Object.entries(fields).find(([_, field]) => field.errorMessage);\n const fieldName = firstFieldWithError?.[0] || '';\n const firstErrorElement = document?.querySelector(`[name=${fieldName}]`);\n\n if (firstErrorElement) {\n firstErrorElement.scrollIntoView({ behavior: 'smooth' });\n }\n }\n\n return !hasErrors.value;\n };\n\n const getError: ValidationGroup<Values>['getError'] = function (fieldName: string) {\n return fields[fieldName]?.errorMessage || '';\n };\n\n const touch: ValidationGroup<Values>['touch'] = function (fieldName: string) {\n if (!fields[fieldName]) {\n throw new Error(`In touch: fieldName \"${fieldName}\" does not exist in the validation fields.`);\n }\n\n fields[fieldName].setTouched();\n };\n\n const setAllUntouched: ValidationGroup<Values>['setAllUntouched'] = async function () {\n await nextTick(); // wait for field values to be reset\n fieldList.value.forEach((field) => {\n field.setTouched(false);\n });\n };\n\n const setInitialValues: ValidationGroup<Values>['setInitialValues'] = function (intialValues: Values) {\n fieldList.value.forEach((field) => {\n field.setInitialValue(intialValues[field.name]);\n });\n };\n\n return reactive({\n validate,\n getError,\n touch,\n setAllUntouched,\n setInitialValues,\n fields,\n dirtyFields,\n hasErrors,\n someTouched,\n });\n}\n\ninterface BuildFieldArgs<Value = unknown> {\n fieldName: string;\n fieldValue: ComputedRef<Value>;\n rules: ValidationRule[];\n flush: () => void;\n}\n\nfunction buildField<Value = unknown>({\n fieldName,\n fieldValue,\n rules,\n flush,\n}: BuildFieldArgs<Value>): ValidationField<Value> {\n /**\n * In order for `initialValue` to work properly, the `buildField` function must not be reactive; `buildField` should be called only once for each field when `useValidation` is called.\n */\n const initialValue = ref(fieldValue.value) as Ref<Value>;\n const isTouched = ref(false);\n const isDirty = computed(() => (fieldValue.value ?? '') !== (initialValue.value ?? ''));\n\n const results = computed(() => {\n // Adding a check for `isTouched` to avoid running the validation rules on the initial load, when the field is not touched.\n // if receives a fieldValue with some value as default or not, rule validation should also be triggered only via `touch()` or `validate()` methods.\n if (!isTouched.value) {\n return [];\n }\n\n return rules.map((rule) => ({\n fieldName,\n ruleName: rule.name,\n isValid: rule.validator(fieldValue.value),\n message: typeof rule.message === 'function' ? rule.message(fieldValue.value) : rule.message,\n }));\n });\n\n const errors = computed<ValidationError[]>(() =>\n results.value\n .filter((result) => !result.isValid)\n .map((result) => {\n return {\n ruleName: result.ruleName,\n message: result.message,\n };\n }),\n );\n\n function setTouched(value = true) {\n // Flushing the debounced value to be updated right away.\n // So that, we can have reactivity for `rules` validation, `isTouched`, `isDirty`, among other values\n flush();\n\n isTouched.value = value;\n }\n\n function setInitialValue(value: Value) {\n initialValue.value = value;\n }\n\n return reactive({\n name: fieldName,\n currentValue: readonly(fieldValue),\n initialValue: readonly(initialValue),\n isTouched: readonly(isTouched),\n isDirty: readonly(isDirty),\n errorMessage: computed(() => errors.value?.[0]?.message || ''),\n errors,\n setInitialValue,\n setTouched,\n });\n}\n\n// The ruleFactories are excluded from the main entrypoint in vite.config.ts, so they are exported here instead. This allows one import statement to be used for useValidation, its types, and all of the ruleFactories.\nexport { default as email } from './ruleFactories/email';\nexport { default as maxValue } from './ruleFactories/maxValue';\nexport { default as minValue } from './ruleFactories/minValue';\nexport { default as positiveNumber } from './ruleFactories/positiveNumber';\nexport { default as price } from './ruleFactories/price';\nexport { default as required } from './ruleFactories/required';\nexport { default as wholeNumber } from './ruleFactories/wholeNumber';\nexport * from './useValidation.types';\nexport { default as isDefined } from './utils/isDefined';\n"],"names":["isBuffer","obj","keyIdentity","key","flatten","target","opts","delimiter","maxDepth","transformKey","output","step","object","prev","currentDepth","value","isarray","type","isbuffer","isobject","newKey","email","config","isDefined","t","maxValue","max","toValue","minValue","min","positiveNumber","INFINITY","MAX_INTEGER","toFinite","toNumber","sign","toInteger","result","remainder","nativeIsFinite","root","nativeMin","createRound","methodName","func","number","precision","pair","toString","round","round$1","price","DECIMAL_PRECISION","required","wholeNumber","useValidation","rules","values","fields","computed","map","fieldName","fieldValue","ref","get","updateFieldValue","debouncedSetFieldValue","debounce","DEBOUNCE","watch","buildField","fieldList","hasErrors","field","someTouched","dirtyFields","reactive","preventScroll","nextTick","firstFieldWithError","_","firstErrorElement","_a","intialValues","flush","initialValue","isTouched","isDirty","results","rule","errors","setTouched","setInitialValue","readonly","_b"],"mappings":"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","x_google_ignoreList":[0,5,6,7,8]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leaflink/stash",
3
- "version": "42.1.0",
3
+ "version": "42.1.1",
4
4
  "description": "LeafLink's design system.",
5
5
  "homepage": "https://stash.leaflink.com",
6
6
  "main": "./dist/index.ts",