react-hook-core 0.5.2 → 0.5.3

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/index.js CHANGED
@@ -18,7 +18,7 @@ __export(require("./util"))
18
18
  function checked(s, v) {
19
19
  if (s) {
20
20
  if (Array.isArray(s)) {
21
- return s.includes(v)
21
+ return includes(s, v)
22
22
  } else {
23
23
  return s === v
24
24
  }
@@ -26,6 +26,16 @@ function checked(s, v) {
26
26
  return false
27
27
  }
28
28
  exports.checked = checked
29
+ function includes(s, v) {
30
+ var l = s.length
31
+ for (var i = 0; i < l; i++) {
32
+ if (s[i] === v) {
33
+ return true
34
+ }
35
+ }
36
+ return false
37
+ }
38
+ exports.includes = includes
29
39
  function value(obj) {
30
40
  return obj ? obj : {}
31
41
  }
@@ -128,8 +138,8 @@ exports.formatDate = formatDate
128
138
  function dateToString(date) {
129
139
  var d2 = typeof date !== "string" ? date : new Date(date)
130
140
  var year = d2.getFullYear()
131
- var month = String(d2.getMonth() + 1).padStart(2, "0")
132
- var day = String(d2.getDate()).padStart(2, "0")
141
+ var month = pad(d2.getMonth() + 1)
142
+ var day = pad(d2.getDate())
133
143
  return year + "-" + month + "-" + day
134
144
  }
135
145
  exports.dateToString = dateToString
@@ -139,14 +149,17 @@ function datetimeToString(date) {
139
149
  }
140
150
  var d2 = typeof date !== "string" ? date : new Date(date)
141
151
  var year = d2.getFullYear()
142
- var month = String(d2.getMonth() + 1).padStart(2, "0")
143
- var day = String(d2.getDate()).padStart(2, "0")
144
- var hours = String(d2.getHours()).padStart(2, "0")
145
- var minutes = String(d2.getMinutes()).padStart(2, "0")
146
- var seconds = String(d2.getSeconds()).padStart(2, "0")
152
+ var month = pad(d2.getMonth() + 1)
153
+ var day = pad(d2.getDate())
154
+ var hours = pad(d2.getHours())
155
+ var minutes = pad(d2.getMinutes())
156
+ var seconds = pad(d2.getSeconds())
147
157
  return year + "-" + month + "-" + day + "T" + hours + ":" + minutes + ":" + seconds
148
158
  }
149
159
  exports.datetimeToString = datetimeToString
160
+ function pad(n) {
161
+ return n < 10 ? "0" + n : n.toString()
162
+ }
150
163
  exports.scrollToFocus = function (e, isUseTimeOut) {
151
164
  try {
152
165
  var element = e.target
package/lib/reflect.js CHANGED
@@ -85,6 +85,9 @@ function notIn(s1, s2) {
85
85
  }
86
86
  exports.notIn = notIn
87
87
  function makeDiff(o1, o2, keys, version) {
88
+ if (o1 && !o2) {
89
+ return o1
90
+ }
88
91
  var obj1 = o1
89
92
  var obj2 = o2
90
93
  var obj3 = {}
@@ -111,19 +114,22 @@ function makeDiff(o1, o2, keys, version) {
111
114
  }
112
115
  exports.makeDiff = makeDiff
113
116
  function hasDiff(o1, o2, keys, version) {
117
+ if (o1 && !o2) {
118
+ return true
119
+ }
114
120
  var diff = makeDiff(o1, o2, keys, version)
115
- return !isEmptyObject(diff)
121
+ return !isEmpty(diff)
116
122
  }
117
123
  exports.hasDiff = hasDiff
118
- function isEmptyObject(obj) {
119
- for (var key in obj) {
120
- if (obj.hasOwnProperty(key)) {
124
+ function isEmpty(obj) {
125
+ for (var _ in obj) {
126
+ if (Object.prototype.hasOwnProperty.call(obj, _)) {
121
127
  return false
122
128
  }
123
129
  }
124
130
  return true
125
131
  }
126
- exports.isEmptyObject = isEmptyObject
132
+ exports.isEmpty = isEmpty
127
133
  function equal(obj1, obj2) {
128
134
  if (obj1 == null && obj2 == null) {
129
135
  return true
package/lib/route.js CHANGED
@@ -8,7 +8,9 @@ function onBack(e, navigate, confirm, resource, o1, o2, keys, version) {
8
8
  }
9
9
  exports.onBack = onBack
10
10
  function goBack(navigate, confirm, resource, o1, o2, keys, version) {
11
- if (!reflect_1.hasDiff(o1, o2, keys, version)) {
11
+ if (!o2) {
12
+ navigate(-1)
13
+ } else if (!reflect_1.hasDiff(o1, o2, keys, version)) {
12
14
  navigate(-1)
13
15
  } else {
14
16
  confirm(resource.msg_confirm_back, function () {
@@ -17,85 +19,97 @@ function goBack(navigate, confirm, resource, o1, o2, keys, version) {
17
19
  }
18
20
  }
19
21
  exports.goBack = goBack
20
- function buildFromUrl(modelT) {
21
- return buildParameters(window.location.search, modelT)
22
+ function buildFromUrl(model) {
23
+ return buildParameters(window.location.search, model)
22
24
  }
23
25
  exports.buildFromUrl = buildFromUrl
24
26
  function buildParameters(url, model) {
25
- var urlSearch = url
26
- var i = urlSearch.indexOf("?")
27
- if (i >= 0) {
28
- urlSearch = url.substring(i + 1)
29
- }
30
- try {
31
- var parsed = convertToObject(query_string_1.default.parse(urlSearch), model)
32
- return parsed
33
- } catch (error) {
34
- console.log(error)
35
- throw error
27
+ var query = url
28
+ var index = url.indexOf("?")
29
+ if (index >= 0) {
30
+ query = url.substring(index + 1)
36
31
  }
32
+ var parsed = query_string_1.default.parse(query, {
33
+ parseNumbers: true,
34
+ parseBooleans: true,
35
+ })
36
+ return convertToObject(parsed, model)
37
37
  }
38
38
  exports.buildParameters = buildParameters
39
39
  function convertToObject(input, model) {
40
40
  if (model) {
41
- return parseToModel(input, model)
41
+ return mapToModel(input, model)
42
42
  }
43
43
  var output = {}
44
44
  for (var key in input) {
45
+ if (!Object.prototype.hasOwnProperty.call(input, key)) {
46
+ continue
47
+ }
45
48
  var value = input[key]
46
49
  var keys = key.split(".")
47
- var currentObj = output
50
+ var current = output
48
51
  for (var i = 0; i < keys.length; i++) {
49
- var currentKey = keys[i]
50
- if (!currentObj[currentKey]) {
51
- if (i === keys.length - 1) {
52
- currentObj[currentKey] = parseValue(value)
53
- } else {
54
- currentObj[currentKey] = {}
52
+ var k = keys[i]
53
+ if (i === keys.length - 1) {
54
+ current[k] = parseValue(value)
55
+ } else {
56
+ if (!current[k]) {
57
+ current[k] = {}
55
58
  }
59
+ current = current[k]
56
60
  }
57
- currentObj = currentObj[currentKey]
58
61
  }
59
62
  }
60
63
  return output
61
64
  }
62
65
  exports.convertToObject = convertToObject
63
- function parseToModel(dest, src) {
64
- if (typeof dest !== "object" || typeof src !== "object") {
65
- return dest
66
- }
67
- for (var key in src) {
68
- if (!Object.hasOwn(dest, key)) continue
69
- if (src.hasOwnProperty(key)) {
70
- if (src[key] && src[key].constructor === Object) {
71
- if (!dest[key] || dest[key].constructor !== Object) {
72
- dest[key] = {}
73
- }
74
- parseToModel(dest[key], src[key])
75
- } else if (src[key] instanceof Date) {
76
- dest[key] = new Date(dest[key])
77
- } else if (typeof src[key] === "boolean") {
78
- if (dest[key].length > 0) {
79
- dest[key] = new Boolean(dest[key])
80
- }
81
- } else if (typeof src[key] === "number") {
82
- if (typeof dest[key] === "string" && dest[key].indexOf(".") !== -1) {
83
- dest[key] = parseFloat(dest[key])
84
- } else {
85
- dest[key] = parseInt(dest[key], 10)
86
- }
87
- } else if (typeof src[key] === "string") {
88
- if (dest[key]) {
89
- dest[key] = dest[key].toString()
90
- }
66
+ function mapToModel(input, model) {
67
+ var result = {}
68
+ var key
69
+ for (key in model) {
70
+ if (!Object.prototype.hasOwnProperty.call(model, key)) {
71
+ continue
72
+ }
73
+ var modelValue = model[key]
74
+ var inputValue = input[key]
75
+ if (inputValue === undefined) {
76
+ result[key] = modelValue
77
+ continue
78
+ }
79
+ if (modelValue instanceof Date) {
80
+ result[key] = new Date(inputValue)
81
+ } else if (typeof modelValue === "number") {
82
+ result[key] = Number(inputValue)
83
+ } else if (typeof modelValue === "boolean") {
84
+ result[key] = Boolean(inputValue)
85
+ } else if (typeof modelValue === "string") {
86
+ result[key] = String(inputValue)
87
+ } else if (Object.prototype.toString.call(modelValue) === "[object Array]") {
88
+ if (Object.prototype.toString.call(inputValue) === "[object Array]") {
89
+ result[key] = inputValue
90
+ } else {
91
+ result[key] = [inputValue]
91
92
  }
93
+ } else if (typeof modelValue === "object" && modelValue !== null) {
94
+ result[key] = mapToModel(inputValue || {}, modelValue)
95
+ } else {
96
+ result[key] = inputValue
92
97
  }
93
98
  }
94
- return dest
99
+ return result
95
100
  }
96
101
  function parseValue(value) {
97
- if (!isNaN(value) && !isNaN(parseFloat(value))) {
98
- return parseFloat(value)
102
+ if (typeof value !== "string") {
103
+ return value
104
+ }
105
+ if (!isNaN(Number(value))) {
106
+ return Number(value)
107
+ }
108
+ if (value === "true") {
109
+ return true
110
+ }
111
+ if (value === "false") {
112
+ return false
99
113
  }
100
114
  return value
101
115
  }
package/lib/search.js CHANGED
@@ -340,6 +340,11 @@ function buildSortFilter(obj, sortable) {
340
340
  return filter
341
341
  }
342
342
  exports.buildSortFilter = buildSortFilter
343
+ function addParametersIntoUrlWithSort(filter, state, isFirstLoad) {
344
+ var urlFilter = buildSortFilter(filter, state)
345
+ addParametersIntoUrl(urlFilter, isFirstLoad)
346
+ }
347
+ exports.addParametersIntoUrlWithSort = addParametersIntoUrlWithSort
343
348
  function handleToggle(target, off) {
344
349
  var on = !off
345
350
  if (target) {
@@ -358,7 +363,7 @@ function getNumber(e) {
358
363
  return parseInt(e.currentTarget.value, 10)
359
364
  }
360
365
  exports.getNumber = getNumber
361
- function setSortFilter(state, filter, setState, setFilter, search) {
366
+ function setSortFilter(filter, state, setFilter, setState, search) {
362
367
  setSort(state, filter.sort)
363
368
  if (setFilter) {
364
369
  setFilter(filter)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-hook-core",
3
- "version": "0.5.2",
3
+ "version": "0.5.3",
4
4
  "description": "react",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./src/index.ts",
package/src/core.ts CHANGED
@@ -75,23 +75,9 @@ export type Type =
75
75
  | "datetimes"
76
76
  | "times"
77
77
 
78
- export type Format = "currency" | "percentage" | "email" | "url" | "phone" | "fax" | "ipv4" | "ipv6"
79
-
80
- export interface Attribute {
81
- name?: string
82
- type?: Type
83
- format?: Format
84
- key?: boolean
85
- version?: boolean
86
- typeof?: Attributes
87
- scale?: number
88
- noformat?: boolean
89
- }
90
78
  export interface Attribute {
91
79
  name?: string
92
80
  type?: Type
93
- key?: boolean
94
- version?: boolean
95
81
  typeof?: Attributes
96
82
  }
97
83
  export interface Attributes {
package/src/index.ts CHANGED
@@ -40,13 +40,22 @@ export const useCallbackState: RetType = <T>(initialValue: T | (() => T)) => {
40
40
  export function checked(s: string[] | string | undefined, v: string): boolean | undefined {
41
41
  if (s) {
42
42
  if (Array.isArray(s)) {
43
- return s.includes(v)
43
+ return includes(s, v)
44
44
  } else {
45
45
  return s === v
46
46
  }
47
47
  }
48
48
  return false
49
49
  }
50
+ export function includes(s: string[], v: string): boolean {
51
+ const l = s.length
52
+ for (let i = 0; i < l; i++) {
53
+ if (s[i] === v) {
54
+ return true
55
+ }
56
+ }
57
+ return false
58
+ }
50
59
  export function value<T>(obj?: T): T {
51
60
  return obj ? obj : ({} as any)
52
61
  }
@@ -182,8 +191,8 @@ export function formatDate(date: Date | null | undefined, format: string): strin
182
191
  export function dateToString(date: Date | string): string {
183
192
  const d2 = typeof date !== "string" ? date : new Date(date)
184
193
  const year = d2.getFullYear()
185
- const month = String(d2.getMonth() + 1).padStart(2, "0")
186
- const day = String(d2.getDate()).padStart(2, "0")
194
+ const month = pad(d2.getMonth() + 1)
195
+ const day = pad(d2.getDate())
187
196
  return `${year}-${month}-${day}`
188
197
  }
189
198
  export function datetimeToString(date?: Date | string): string | undefined {
@@ -192,13 +201,16 @@ export function datetimeToString(date?: Date | string): string | undefined {
192
201
  }
193
202
  const d2 = typeof date !== "string" ? date : new Date(date)
194
203
  const year = d2.getFullYear()
195
- const month = String(d2.getMonth() + 1).padStart(2, "0")
196
- const day = String(d2.getDate()).padStart(2, "0")
197
- const hours = String(d2.getHours()).padStart(2, "0")
198
- const minutes = String(d2.getMinutes()).padStart(2, "0")
199
- const seconds = String(d2.getSeconds()).padStart(2, "0")
204
+ const month = pad(d2.getMonth() + 1)
205
+ const day = pad(d2.getDate())
206
+ const hours = pad(d2.getHours())
207
+ const minutes = pad(d2.getMinutes())
208
+ const seconds = pad(d2.getSeconds())
200
209
  return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}`
201
210
  }
211
+ function pad(n: number): string {
212
+ return n < 10 ? "0" + n : n.toString()
213
+ }
202
214
 
203
215
  export const scrollToFocus = (e: any, isUseTimeOut?: boolean) => {
204
216
  try {
package/src/reflect.ts CHANGED
@@ -76,7 +76,10 @@ export function notIn(s1: string[], s2: string[]): string[] {
76
76
  return r
77
77
  }
78
78
 
79
- export function makeDiff<T>(o1: T, o2: T, keys?: string[], version?: string): Partial<T> {
79
+ export function makeDiff<T>(o1: T, o2?: T, keys?: string[], version?: string): Partial<T> {
80
+ if (o1 && !o2) {
81
+ return o1
82
+ }
80
83
  const obj1: any = o1
81
84
  const obj2: any = o2
82
85
  const obj3: any = {}
@@ -99,13 +102,16 @@ export function makeDiff<T>(o1: T, o2: T, keys?: string[], version?: string): Pa
99
102
  }
100
103
  return obj3
101
104
  }
102
- export function hasDiff<T>(o1: T, o2: T, keys?: string[], version?: string): boolean {
105
+ export function hasDiff<T>(o1: T, o2?: T, keys?: string[], version?: string): boolean {
106
+ if (o1 && !o2) {
107
+ return true
108
+ }
103
109
  const diff = makeDiff(o1, o2, keys, version)
104
- return !isEmptyObject(diff)
110
+ return !isEmpty(diff)
105
111
  }
106
- export function isEmptyObject(obj: any): boolean {
107
- for (let key in obj) {
108
- if (obj.hasOwnProperty(key)) {
112
+ export function isEmpty(obj: object): boolean {
113
+ for (const _ in obj) {
114
+ if (Object.prototype.hasOwnProperty.call(obj, _)) {
109
115
  return false
110
116
  }
111
117
  }
package/src/route.ts CHANGED
@@ -11,7 +11,7 @@ export function onBack<T>(
11
11
  confirm: (msg: string, yesCallback?: () => void) => void,
12
12
  resource: StringMap,
13
13
  o1: T,
14
- o2: T,
14
+ o2?: T,
15
15
  keys?: string[],
16
16
  version?: string,
17
17
  ) {
@@ -24,102 +24,129 @@ export function goBack<T>(
24
24
  confirm: (msg: string, yesCallback?: () => void) => void,
25
25
  resource: StringMap,
26
26
  o1: T,
27
- o2: T,
27
+ o2?: T,
28
28
  keys?: string[],
29
29
  version?: string,
30
30
  ) {
31
- if (!hasDiff(o1, o2, keys, version)) {
31
+ if (!o2) {
32
+ navigate(-1)
33
+ } else if (!hasDiff(o1, o2, keys, version)) {
32
34
  navigate(-1)
33
35
  } else {
34
36
  confirm(resource.msg_confirm_back, () => navigate(-1))
35
37
  }
36
38
  }
37
39
 
38
- export function buildFromUrl<S extends Filter>(modelT?: S): S {
39
- return buildParameters<S>(window.location.search, modelT)
40
+ export function buildFromUrl<T extends Filter>(model?: T): T {
41
+ return buildParameters<T>(window.location.search, model)
40
42
  }
43
+
41
44
  export function buildParameters<T>(url: string, model?: T): T {
42
- let urlSearch = url
43
- const i = urlSearch.indexOf("?")
44
- if (i >= 0) {
45
- urlSearch = url.substring(i + 1)
46
- }
47
- try {
48
- const parsed: any = convertToObject<T>(queryString.parse(urlSearch), model)
49
- return parsed
50
- } catch (error) {
51
- console.log(error)
52
- throw error
45
+ var query = url
46
+ var index = url.indexOf("?")
47
+
48
+ if (index >= 0) {
49
+ query = url.substring(index + 1)
53
50
  }
51
+
52
+ var parsed = queryString.parse(query, {
53
+ parseNumbers: true,
54
+ parseBooleans: true,
55
+ })
56
+
57
+ return convertToObject(parsed as any, model)
54
58
  }
55
59
 
56
- export function convertToObject<T>(input: any, model?: T): T {
60
+ export function convertToObject<T>(input: { [key: string]: any }, model?: T): T {
57
61
  if (model) {
58
- return parseToModel(input, model)
62
+ return mapToModel(input, model)
59
63
  }
60
- const output: any = {}
61
64
 
62
- for (let key in input) {
63
- const value = input[key]
64
- const keys = key.split(".")
65
+ var output: any = {}
66
+
67
+ for (var key in input) {
68
+ if (!Object.prototype.hasOwnProperty.call(input, key)) {
69
+ continue
70
+ }
65
71
 
66
- let currentObj: any = output
67
- for (let i = 0; i < keys.length; i++) {
68
- const currentKey = keys[i]
72
+ var value = input[key]
73
+ var keys = key.split(".")
74
+ var current = output
69
75
 
70
- if (!currentObj[currentKey]) {
71
- if (i === keys.length - 1) {
72
- currentObj[currentKey] = parseValue(value)
73
- } else {
74
- currentObj[currentKey] = {}
76
+ for (var i = 0; i < keys.length; i++) {
77
+ var k = keys[i]
78
+
79
+ if (i === keys.length - 1) {
80
+ current[k] = parseValue(value)
81
+ } else {
82
+ if (!current[k]) {
83
+ current[k] = {}
75
84
  }
85
+ current = current[k]
76
86
  }
77
-
78
- currentObj = currentObj[currentKey]
79
87
  }
80
88
  }
81
89
 
82
90
  return output as T
83
91
  }
84
92
 
85
- function parseToModel(dest: any, src: any) {
86
- if (typeof dest !== "object" || typeof src !== "object") {
87
- return dest
88
- }
89
- for (let key in src) {
90
- if (!Object.hasOwn(dest, key)) continue
91
- if (src.hasOwnProperty(key)) {
92
- if (src[key] && src[key].constructor === Object) {
93
- if (!dest[key] || dest[key].constructor !== Object) {
94
- dest[key] = {}
95
- }
96
- parseToModel(dest[key], src[key])
97
- } else if (src[key] instanceof Date) {
98
- dest[key] = new Date(dest[key])
99
- } else if (typeof src[key] === "boolean") {
100
- if (dest[key].length > 0) {
101
- dest[key] = new Boolean(dest[key])
102
- }
103
- } else if (typeof src[key] === "number") {
104
- if (typeof dest[key] === "string" && dest[key].indexOf(".") !== -1) {
105
- dest[key] = parseFloat(dest[key])
106
- } else {
107
- dest[key] = parseInt(dest[key], 10)
108
- }
109
- } else if (typeof src[key] === "string") {
110
- if (dest[key]) {
111
- dest[key] = dest[key].toString()
112
- }
93
+ function mapToModel<T>(input: { [key: string]: any }, model: T): T {
94
+ var result: any = {}
95
+ var key: string
96
+
97
+ for (key in model as any) {
98
+ if (!Object.prototype.hasOwnProperty.call(model, key)) {
99
+ continue
100
+ }
101
+
102
+ var modelValue = (model as any)[key]
103
+ var inputValue = input[key]
104
+
105
+ if (inputValue === undefined) {
106
+ result[key] = modelValue
107
+ continue
108
+ }
109
+
110
+ if (modelValue instanceof Date) {
111
+ result[key] = new Date(inputValue)
112
+ } else if (typeof modelValue === "number") {
113
+ result[key] = Number(inputValue)
114
+ } else if (typeof modelValue === "boolean") {
115
+ result[key] = Boolean(inputValue)
116
+ } else if (typeof modelValue === "string") {
117
+ result[key] = String(inputValue)
118
+ } else if (Object.prototype.toString.call(modelValue) === "[object Array]") {
119
+ if (Object.prototype.toString.call(inputValue) === "[object Array]") {
120
+ result[key] = inputValue
121
+ } else {
122
+ result[key] = [inputValue]
113
123
  }
124
+ } else if (typeof modelValue === "object" && modelValue !== null) {
125
+ result[key] = mapToModel(inputValue || {}, modelValue)
126
+ } else {
127
+ result[key] = inputValue
114
128
  }
115
129
  }
116
- return dest
130
+
131
+ return result
117
132
  }
118
133
 
119
134
  function parseValue(value: any): any {
120
- // Check if the value is a string representing a number and parse it to a number
121
- if (!isNaN(value) && !isNaN(parseFloat(value))) {
122
- return parseFloat(value)
135
+ if (typeof value !== "string") {
136
+ return value
123
137
  }
138
+
139
+ if (!isNaN(Number(value))) {
140
+ return Number(value)
141
+ }
142
+
143
+ if (value === "true") {
144
+ return true
145
+ }
146
+
147
+ if (value === "false") {
148
+ return false
149
+ }
150
+
124
151
  return value
125
152
  }
package/src/search.ts CHANGED
@@ -361,6 +361,10 @@ export function buildSortFilter<S extends Filter>(obj: S, sortable: Sortable): S
361
361
  delete filter.fields
362
362
  return filter
363
363
  }
364
+ export function addParametersIntoUrlWithSort<F extends Filter>(filter: F, state: Sortable, isFirstLoad?: boolean) {
365
+ const urlFilter = buildSortFilter(filter, state)
366
+ addParametersIntoUrl(urlFilter, isFirstLoad)
367
+ }
364
368
  export function handleToggle(target?: HTMLElement, off?: boolean): boolean {
365
369
  const on = !off
366
370
  if (target) {
@@ -379,10 +383,10 @@ export function getNumber(e: ChangeEvent<HTMLSelectElement | HTMLInputElement>):
379
383
  }
380
384
 
381
385
  export function setSortFilter<F extends Filter, T extends Sortable>(
382
- state: T,
383
386
  filter: F,
384
- setState?: (v: React.SetStateAction<T>) => void,
387
+ state: T,
385
388
  setFilter?: (v: React.SetStateAction<F>) => void,
389
+ setState?: (v: React.SetStateAction<T>) => void,
386
390
  search?: (first?: boolean) => void,
387
391
  ) {
388
392
  setSort(state, filter.sort)
package/src/state.ts CHANGED
@@ -39,7 +39,11 @@ export function updateNumber<T>(
39
39
  }
40
40
  }
41
41
  export function formatAndUpdateState<T>(
42
- e: ChangeEvent<HTMLInputElement> | ChangeEvent<HTMLSelectElement> | ChangeEvent<HTMLTextAreaElement>,
42
+ e:
43
+ | ChangeEvent<HTMLInputElement>
44
+ | ChangeEvent<HTMLSelectElement>
45
+ | ChangeEvent<HTMLTextAreaElement>
46
+ | ChangeEvent<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>,
43
47
  o: T,
44
48
  setObj: (v: React.SetStateAction<T>) => void,
45
49
  formatStr?: (s?: string) => string,
@@ -48,7 +52,11 @@ export function formatAndUpdateState<T>(
48
52
  updateState(e, o, setObj, callback, formatStr)
49
53
  }
50
54
  export function updateState<T>(
51
- e: ChangeEvent<HTMLInputElement> | ChangeEvent<HTMLSelectElement> | ChangeEvent<HTMLTextAreaElement>,
55
+ e:
56
+ | ChangeEvent<HTMLInputElement>
57
+ | ChangeEvent<HTMLSelectElement>
58
+ | ChangeEvent<HTMLTextAreaElement>
59
+ | ChangeEvent<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>,
52
60
  o: T,
53
61
  setObj: (v: React.SetStateAction<T>) => void,
54
62
  callback?: () => void,