react-hook-core 0.4.6 → 0.4.7
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/lib/com.js +33 -11
- package/lib/core.js +103 -160
- package/lib/diff.js +28 -30
- package/lib/edit.js +54 -112
- package/lib/error.js +53 -0
- package/lib/formutil.js +58 -72
- package/lib/index.js +110 -95
- package/lib/input.js +31 -32
- package/lib/merge.js +26 -16
- package/lib/reflect.js +140 -147
- package/lib/route.js +45 -53
- package/lib/search.js +231 -471
- package/lib/state.js +159 -168
- package/lib/update.js +69 -64
- package/lib/useEdit.js +421 -348
- package/lib/useMessage.js +20 -20
- package/lib/useSearch.js +437 -246
- package/lib/useView.js +127 -120
- package/lib/util.js +74 -85
- package/package.json +1 -1
- package/src/com.ts +44 -30
- package/src/core.ts +147 -324
- package/src/diff.ts +54 -24
- package/src/edit.ts +42 -121
- package/src/error.ts +55 -0
- package/src/formutil.ts +51 -62
- package/src/index.ts +129 -114
- package/src/input.ts +44 -38
- package/src/merge.ts +16 -13
- package/src/reflect.ts +100 -101
- package/src/route.ts +40 -40
- package/src/search.ts +123 -307
- package/src/state.ts +135 -124
- package/src/update.ts +41 -41
- package/src/useEdit.ts +450 -319
- package/src/useMessage.ts +21 -21
- package/src/useSearch.ts +493 -277
- package/src/useView.ts +122 -97
- package/src/util.ts +67 -66
package/src/reflect.ts
CHANGED
|
@@ -1,142 +1,142 @@
|
|
|
1
|
-
import { StringMap } from "./core";
|
|
2
1
|
import { NavigateFunction } from "react-router-dom"
|
|
2
|
+
import { StringMap } from "./core"
|
|
3
3
|
|
|
4
4
|
export function clone(obj: any): any {
|
|
5
5
|
if (!obj) {
|
|
6
|
-
return obj
|
|
6
|
+
return obj
|
|
7
7
|
}
|
|
8
8
|
if (obj instanceof Date) {
|
|
9
|
-
return new Date(obj.getTime())
|
|
9
|
+
return new Date(obj.getTime())
|
|
10
10
|
}
|
|
11
|
-
if (typeof obj !==
|
|
12
|
-
return obj
|
|
11
|
+
if (typeof obj !== "object") {
|
|
12
|
+
return obj
|
|
13
13
|
}
|
|
14
14
|
if (Array.isArray(obj)) {
|
|
15
|
-
const arr = []
|
|
15
|
+
const arr = []
|
|
16
16
|
for (const sub of obj) {
|
|
17
|
-
const c = clone(sub)
|
|
18
|
-
arr.push(c)
|
|
17
|
+
const c = clone(sub)
|
|
18
|
+
arr.push(c)
|
|
19
19
|
}
|
|
20
|
-
return arr
|
|
20
|
+
return arr
|
|
21
21
|
}
|
|
22
|
-
const x: any = {}
|
|
23
|
-
const keys = Object.keys(obj)
|
|
22
|
+
const x: any = {}
|
|
23
|
+
const keys = Object.keys(obj)
|
|
24
24
|
for (const k of keys) {
|
|
25
|
-
const v = obj[k]
|
|
25
|
+
const v = obj[k]
|
|
26
26
|
if (v instanceof Date) {
|
|
27
|
-
x[k] = new Date(v.getTime())
|
|
27
|
+
x[k] = new Date(v.getTime())
|
|
28
28
|
} else {
|
|
29
29
|
switch (typeof v) {
|
|
30
|
-
case
|
|
31
|
-
x[k] = clone(v)
|
|
32
|
-
break
|
|
30
|
+
case "object":
|
|
31
|
+
x[k] = clone(v)
|
|
32
|
+
break
|
|
33
33
|
default:
|
|
34
|
-
x[k] = v
|
|
35
|
-
break
|
|
34
|
+
x[k] = v
|
|
35
|
+
break
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
return x
|
|
39
|
+
return x
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
export function getDirectValue(obj: any, key: string): any {
|
|
43
43
|
if (obj && obj.hasOwnProperty(key)) {
|
|
44
|
-
return obj[key]
|
|
44
|
+
return obj[key]
|
|
45
45
|
}
|
|
46
|
-
return null
|
|
46
|
+
return null
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
export function setValue(obj: any, key: string, value: any): any {
|
|
50
|
-
let replaceKey = key.replace(/\[/g,
|
|
51
|
-
if (replaceKey.indexOf(
|
|
52
|
-
replaceKey = replaceKey.slice(1, replaceKey.length)
|
|
50
|
+
let replaceKey = key.replace(/\[/g, ".[").replace(/\.\./g, ".")
|
|
51
|
+
if (replaceKey.indexOf(".") === 0) {
|
|
52
|
+
replaceKey = replaceKey.slice(1, replaceKey.length)
|
|
53
53
|
}
|
|
54
|
-
const keys = replaceKey.split(
|
|
55
|
-
const firstKey = keys.shift()
|
|
54
|
+
const keys = replaceKey.split(".")
|
|
55
|
+
const firstKey = keys.shift()
|
|
56
56
|
if (!firstKey) {
|
|
57
|
-
return
|
|
57
|
+
return
|
|
58
58
|
}
|
|
59
|
-
const isArrayKey = /\[([0-9]+)\]/.test(firstKey)
|
|
59
|
+
const isArrayKey = /\[([0-9]+)\]/.test(firstKey)
|
|
60
60
|
if (keys.length > 0) {
|
|
61
|
-
const firstKeyValue = obj[firstKey] || {}
|
|
62
|
-
const returnValue = setValue(firstKeyValue, keys.join(
|
|
63
|
-
return setKey(obj, isArrayKey, firstKey, returnValue)
|
|
61
|
+
const firstKeyValue = obj[firstKey] || {}
|
|
62
|
+
const returnValue = setValue(firstKeyValue, keys.join("."), value)
|
|
63
|
+
return setKey(obj, isArrayKey, firstKey, returnValue)
|
|
64
64
|
}
|
|
65
|
-
return setKey(obj, isArrayKey, firstKey, value)
|
|
65
|
+
return setKey(obj, isArrayKey, firstKey, value)
|
|
66
66
|
}
|
|
67
67
|
const setKey = (_object: any, _isArrayKey: boolean, _key: string, _nextValue: any) => {
|
|
68
68
|
if (_isArrayKey) {
|
|
69
69
|
if (_object.length > _key) {
|
|
70
|
-
_object[_key] = _nextValue
|
|
70
|
+
_object[_key] = _nextValue
|
|
71
71
|
} else {
|
|
72
|
-
_object.push(_nextValue)
|
|
72
|
+
_object.push(_nextValue)
|
|
73
73
|
}
|
|
74
74
|
} else {
|
|
75
|
-
_object[_key] = _nextValue
|
|
75
|
+
_object[_key] = _nextValue
|
|
76
76
|
}
|
|
77
|
-
return _object
|
|
78
|
-
}
|
|
77
|
+
return _object
|
|
78
|
+
}
|
|
79
79
|
export function isEmptyObject(obj: any): boolean {
|
|
80
80
|
for (let key in obj) {
|
|
81
81
|
if (obj.hasOwnProperty(key)) {
|
|
82
|
-
return false
|
|
82
|
+
return false
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
|
-
return true
|
|
86
|
-
}
|
|
85
|
+
return true
|
|
86
|
+
}
|
|
87
87
|
export function diff(obj1: any, obj2: any): string[] {
|
|
88
|
-
const fields = []
|
|
89
|
-
const key1s = Object.keys(obj1)
|
|
88
|
+
const fields = []
|
|
89
|
+
const key1s = Object.keys(obj1)
|
|
90
90
|
for (const k of key1s) {
|
|
91
|
-
const v1 = obj1[k]
|
|
92
|
-
const v2 = obj2[k]
|
|
91
|
+
const v1 = obj1[k]
|
|
92
|
+
const v2 = obj2[k]
|
|
93
93
|
if (v1 == null) {
|
|
94
94
|
if (v2 != null) {
|
|
95
|
-
fields.push(k)
|
|
95
|
+
fields.push(k)
|
|
96
96
|
}
|
|
97
97
|
} else {
|
|
98
|
-
if (typeof v1 !==
|
|
98
|
+
if (typeof v1 !== "object") {
|
|
99
99
|
if (v1 !== v2) {
|
|
100
|
-
fields.push(k)
|
|
100
|
+
fields.push(k)
|
|
101
101
|
}
|
|
102
102
|
} else {
|
|
103
|
-
const e = equal(v1, v2)
|
|
103
|
+
const e = equal(v1, v2)
|
|
104
104
|
if (!e) {
|
|
105
|
-
fields.push(k)
|
|
105
|
+
fields.push(k)
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
|
-
const key2s = Object.keys(obj2)
|
|
111
|
-
const ni = notIn(key1s, key2s)
|
|
110
|
+
const key2s = Object.keys(obj2)
|
|
111
|
+
const ni = notIn(key1s, key2s)
|
|
112
112
|
for (const n of ni) {
|
|
113
|
-
fields.push(n)
|
|
113
|
+
fields.push(n)
|
|
114
114
|
}
|
|
115
|
-
return fields
|
|
115
|
+
return fields
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
export function makeDiff<T>(o1: T, o2: T, keys?: string[], version?: string): Partial<T> {
|
|
119
|
-
const obj1: any = o1
|
|
120
|
-
const obj2: any = o2
|
|
121
|
-
const obj3: any = {}
|
|
122
|
-
const s = diff(obj1, obj2)
|
|
119
|
+
const obj1: any = o1
|
|
120
|
+
const obj2: any = o2
|
|
121
|
+
const obj3: any = {}
|
|
122
|
+
const s = diff(obj1, obj2)
|
|
123
123
|
if (s.length === 0) {
|
|
124
|
-
return obj3
|
|
124
|
+
return obj3
|
|
125
125
|
}
|
|
126
126
|
for (const d of s) {
|
|
127
|
-
obj3[d] = obj2[d]
|
|
127
|
+
obj3[d] = obj2[d]
|
|
128
128
|
}
|
|
129
129
|
if (keys && keys.length > 0) {
|
|
130
130
|
for (const x of keys) {
|
|
131
131
|
if (x.length > 0) {
|
|
132
|
-
obj3[x] = obj1[x]
|
|
132
|
+
obj3[x] = obj1[x]
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
136
|
if (version && version.length > 0) {
|
|
137
|
-
obj3[version] = obj1[version]
|
|
137
|
+
obj3[version] = obj1[version]
|
|
138
138
|
}
|
|
139
|
-
return obj3
|
|
139
|
+
return obj3
|
|
140
140
|
}
|
|
141
141
|
export function hasDiff<T>(o1: T, o2: T, keys?: string[], version?: string): boolean {
|
|
142
142
|
const diff = makeDiff(o1, o2, keys, version)
|
|
@@ -160,107 +160,106 @@ export function goBack<T>(
|
|
|
160
160
|
}
|
|
161
161
|
|
|
162
162
|
export function notIn(s1: string[], s2: string[]): string[] {
|
|
163
|
-
const r = []
|
|
163
|
+
const r = []
|
|
164
164
|
for (const s of s2) {
|
|
165
165
|
if (s1.indexOf(s) < 0) {
|
|
166
|
-
r.push(s)
|
|
166
|
+
r.push(s)
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
|
-
return r
|
|
169
|
+
return r
|
|
170
170
|
}
|
|
171
171
|
|
|
172
172
|
export function equal(obj1: any, obj2: any): boolean {
|
|
173
173
|
if (obj1 == null && obj2 == null) {
|
|
174
|
-
return true
|
|
174
|
+
return true
|
|
175
175
|
}
|
|
176
176
|
if (obj1 == null || obj2 == null) {
|
|
177
|
-
return false
|
|
177
|
+
return false
|
|
178
178
|
}
|
|
179
|
-
if (
|
|
180
|
-
return false
|
|
179
|
+
if (typeof obj1 !== typeof obj2) {
|
|
180
|
+
return false
|
|
181
181
|
}
|
|
182
|
-
if (typeof obj1 !==
|
|
183
|
-
return obj1 === obj2
|
|
182
|
+
if (typeof obj1 !== "object") {
|
|
183
|
+
return obj1 === obj2
|
|
184
184
|
}
|
|
185
185
|
if (obj1 instanceof Date) {
|
|
186
186
|
if (!(obj2 instanceof Date)) {
|
|
187
|
-
return false
|
|
187
|
+
return false
|
|
188
188
|
}
|
|
189
|
-
return
|
|
189
|
+
return obj1.getTime() === obj2.getTime()
|
|
190
190
|
}
|
|
191
|
-
if ((Array.isArray(obj1) && !Array.isArray(obj2))
|
|
192
|
-
|
|
193
|
-
return false;
|
|
191
|
+
if ((Array.isArray(obj1) && !Array.isArray(obj2)) || (!Array.isArray(obj1) && Array.isArray(obj2))) {
|
|
192
|
+
return false
|
|
194
193
|
}
|
|
195
194
|
if (!Array.isArray(obj1) && !Array.isArray(obj2)) {
|
|
196
|
-
const key1s = Object.keys(obj1)
|
|
197
|
-
const key2s = Object.keys(obj2)
|
|
195
|
+
const key1s = Object.keys(obj1)
|
|
196
|
+
const key2s = Object.keys(obj2)
|
|
198
197
|
if (key1s.length !== key2s.length) {
|
|
199
|
-
return false
|
|
198
|
+
return false
|
|
200
199
|
}
|
|
201
200
|
for (const k of key1s) {
|
|
202
|
-
const v = obj1[k]
|
|
203
|
-
if (typeof v !==
|
|
201
|
+
const v = obj1[k]
|
|
202
|
+
if (typeof v !== "object") {
|
|
204
203
|
if (v !== obj2[k]) {
|
|
205
|
-
return false
|
|
204
|
+
return false
|
|
206
205
|
}
|
|
207
206
|
} else {
|
|
208
|
-
const e = equal(v, obj2[k])
|
|
207
|
+
const e = equal(v, obj2[k])
|
|
209
208
|
if (e === false) {
|
|
210
|
-
return false
|
|
209
|
+
return false
|
|
211
210
|
}
|
|
212
211
|
}
|
|
213
212
|
}
|
|
214
|
-
return true
|
|
213
|
+
return true
|
|
215
214
|
}
|
|
216
|
-
return equalArrays(obj1, obj2)
|
|
215
|
+
return equalArrays(obj1, obj2)
|
|
217
216
|
}
|
|
218
217
|
|
|
219
218
|
export function equalArrays<T>(ar1: T[], ar2: T[]): boolean {
|
|
220
219
|
if (ar1 == null && ar2 == null) {
|
|
221
|
-
return true
|
|
220
|
+
return true
|
|
222
221
|
}
|
|
223
222
|
if (ar1 == null || ar2 == null) {
|
|
224
|
-
return false
|
|
223
|
+
return false
|
|
225
224
|
}
|
|
226
225
|
if (ar1.length !== ar2.length) {
|
|
227
|
-
return false
|
|
226
|
+
return false
|
|
228
227
|
}
|
|
229
228
|
for (let i = 0; i < ar1.length; i++) {
|
|
230
|
-
const e = equal(ar1[i], ar2[i])
|
|
229
|
+
const e = equal(ar1[i], ar2[i])
|
|
231
230
|
if (e === false) {
|
|
232
|
-
return false
|
|
231
|
+
return false
|
|
233
232
|
}
|
|
234
233
|
}
|
|
235
|
-
return true
|
|
234
|
+
return true
|
|
236
235
|
}
|
|
237
236
|
|
|
238
237
|
export function getArray<T>(list: T[] | undefined | null, name: string, v: boolean | string | number): T[] {
|
|
239
|
-
const arrs = []
|
|
238
|
+
const arrs = []
|
|
240
239
|
if (list) {
|
|
241
240
|
for (const obj of list) {
|
|
242
241
|
if ((obj as any)[name] === v) {
|
|
243
|
-
arrs.push(obj)
|
|
242
|
+
arrs.push(obj)
|
|
244
243
|
}
|
|
245
244
|
}
|
|
246
245
|
}
|
|
247
|
-
return arrs
|
|
246
|
+
return arrs
|
|
248
247
|
}
|
|
249
248
|
export function getDiffArray<T>(list: T[] | undefined | null, name: string, v: boolean | string | number): T[] {
|
|
250
|
-
const arrs = []
|
|
249
|
+
const arrs = []
|
|
251
250
|
if (list) {
|
|
252
251
|
for (const obj of list) {
|
|
253
252
|
if ((obj as any)[name] !== true) {
|
|
254
|
-
arrs.push(obj)
|
|
253
|
+
arrs.push(obj)
|
|
255
254
|
}
|
|
256
255
|
}
|
|
257
256
|
}
|
|
258
|
-
return arrs
|
|
257
|
+
return arrs
|
|
259
258
|
}
|
|
260
259
|
export function setAll<T>(list: T[] | undefined | null, name: string, v: boolean | string | number): void {
|
|
261
260
|
if (list) {
|
|
262
261
|
for (const obj of list) {
|
|
263
|
-
(obj as any)[name] = v
|
|
262
|
+
;(obj as any)[name] = v
|
|
264
263
|
}
|
|
265
264
|
}
|
|
266
265
|
}
|
|
@@ -268,9 +267,9 @@ export function equalAll<T>(list: T[] | undefined | null, name: string, v: boole
|
|
|
268
267
|
if (list) {
|
|
269
268
|
for (const obj of list) {
|
|
270
269
|
if ((obj as any)[name] !== v) {
|
|
271
|
-
return false
|
|
270
|
+
return false
|
|
272
271
|
}
|
|
273
272
|
}
|
|
274
273
|
}
|
|
275
|
-
return true
|
|
274
|
+
return true
|
|
276
275
|
}
|
package/src/route.ts
CHANGED
|
@@ -1,91 +1,91 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import * as qs from "query-string"
|
|
2
|
+
import { Filter } from "./search"
|
|
3
3
|
|
|
4
4
|
export function buildFromUrl<S extends Filter>(modelT?: S): S {
|
|
5
|
-
return buildParameters<S>(window.location.search, modelT)
|
|
5
|
+
return buildParameters<S>(window.location.search, modelT)
|
|
6
6
|
}
|
|
7
7
|
export function buildParameters<T>(url: string, model?: T): T {
|
|
8
|
-
let urlSearch = url
|
|
9
|
-
const i = urlSearch.indexOf("?")
|
|
8
|
+
let urlSearch = url
|
|
9
|
+
const i = urlSearch.indexOf("?")
|
|
10
10
|
if (i >= 0) {
|
|
11
|
-
urlSearch = url.substring(i + 1)
|
|
11
|
+
urlSearch = url.substring(i + 1)
|
|
12
12
|
}
|
|
13
13
|
try {
|
|
14
|
-
const parsed: any = convertToObject<T>(qs.parse(urlSearch), model)
|
|
15
|
-
return parsed
|
|
14
|
+
const parsed: any = convertToObject<T>(qs.parse(urlSearch), model)
|
|
15
|
+
return parsed
|
|
16
16
|
} catch (error) {
|
|
17
|
-
console.log(error)
|
|
18
|
-
throw error
|
|
17
|
+
console.log(error)
|
|
18
|
+
throw error
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
export function convertToObject<T>(input: any, model?: T): T {
|
|
23
|
-
if (model){
|
|
24
|
-
|
|
23
|
+
if (model) {
|
|
24
|
+
return parseToModel(input, model)
|
|
25
25
|
}
|
|
26
|
-
const output: any = {}
|
|
26
|
+
const output: any = {}
|
|
27
27
|
|
|
28
28
|
for (let key in input) {
|
|
29
|
-
const value = input[key]
|
|
30
|
-
const keys = key.split(".")
|
|
29
|
+
const value = input[key]
|
|
30
|
+
const keys = key.split(".")
|
|
31
31
|
|
|
32
|
-
let currentObj: any = output
|
|
32
|
+
let currentObj: any = output
|
|
33
33
|
for (let i = 0; i < keys.length; i++) {
|
|
34
|
-
const currentKey = keys[i]
|
|
34
|
+
const currentKey = keys[i]
|
|
35
35
|
|
|
36
36
|
if (!currentObj[currentKey]) {
|
|
37
37
|
if (i === keys.length - 1) {
|
|
38
|
-
currentObj[currentKey] = parseValue(value)
|
|
38
|
+
currentObj[currentKey] = parseValue(value)
|
|
39
39
|
} else {
|
|
40
|
-
currentObj[currentKey] = {}
|
|
40
|
+
currentObj[currentKey] = {}
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
currentObj = currentObj[currentKey]
|
|
44
|
+
currentObj = currentObj[currentKey]
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
return output as T
|
|
48
|
+
return output as T
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
function parseToModel(dest: any, src: any) {
|
|
52
|
-
if (typeof dest !==
|
|
53
|
-
return dest
|
|
52
|
+
if (typeof dest !== "object" || typeof src !== "object") {
|
|
53
|
+
return dest
|
|
54
54
|
}
|
|
55
55
|
for (let key in src) {
|
|
56
|
-
if (!Object.hasOwn(dest, key)) continue
|
|
56
|
+
if (!Object.hasOwn(dest, key)) continue
|
|
57
57
|
if (src.hasOwnProperty(key)) {
|
|
58
58
|
if (src[key] && src[key].constructor === Object) {
|
|
59
59
|
if (!dest[key] || dest[key].constructor !== Object) {
|
|
60
|
-
dest[key] = {}
|
|
60
|
+
dest[key] = {}
|
|
61
61
|
}
|
|
62
|
-
parseToModel(dest[key], src[key])
|
|
62
|
+
parseToModel(dest[key], src[key])
|
|
63
63
|
} else if (src[key] instanceof Date) {
|
|
64
|
-
dest[key] = new Date(dest[key])
|
|
65
|
-
} else if (typeof src[key] ===
|
|
66
|
-
if (dest[key].length >0){
|
|
67
|
-
dest[key] = new Boolean(dest[key])
|
|
64
|
+
dest[key] = new Date(dest[key])
|
|
65
|
+
} else if (typeof src[key] === "boolean") {
|
|
66
|
+
if (dest[key].length > 0) {
|
|
67
|
+
dest[key] = new Boolean(dest[key])
|
|
68
68
|
}
|
|
69
|
-
} else if (typeof src[key] ===
|
|
70
|
-
if (
|
|
71
|
-
dest[key] = parseFloat(dest[key])
|
|
72
|
-
} else{
|
|
73
|
-
dest[key] = parseInt(dest[key], 10)
|
|
69
|
+
} else if (typeof src[key] === "number") {
|
|
70
|
+
if (typeof dest[key] === "string" && dest[key].indexOf(".") !== -1) {
|
|
71
|
+
dest[key] = parseFloat(dest[key])
|
|
72
|
+
} else {
|
|
73
|
+
dest[key] = parseInt(dest[key], 10)
|
|
74
74
|
}
|
|
75
|
-
} else if (typeof src[key] ===
|
|
75
|
+
} else if (typeof src[key] === "string") {
|
|
76
76
|
if (dest[key]) {
|
|
77
|
-
dest[key] = dest[key].toString()
|
|
77
|
+
dest[key] = dest[key].toString()
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
|
-
return dest
|
|
82
|
+
return dest
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
function parseValue(value: any): any {
|
|
86
86
|
// Check if the value is a string representing a number and parse it to a number
|
|
87
87
|
if (!isNaN(value) && !isNaN(parseFloat(value))) {
|
|
88
|
-
return parseFloat(value)
|
|
88
|
+
return parseFloat(value)
|
|
89
89
|
}
|
|
90
|
-
return value
|
|
90
|
+
return value
|
|
91
91
|
}
|