react-hook-core 0.4.23 → 0.5.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.
package/src/update.ts DELETED
@@ -1,138 +0,0 @@
1
- import { useCallback, useEffect, useRef, useState } from "react"
2
- import { Locale, resources } from "./core"
3
- import { buildFlatState, buildState, handleEvent, localeOf } from "./state"
4
-
5
- export function removePhoneFormat(phone: string): string {
6
- if (phone) {
7
- return phone.replace(resources.phone, "")
8
- } else {
9
- return phone
10
- }
11
- }
12
-
13
- export function getModelName(form?: HTMLFormElement | null, name?: string): string {
14
- if (form) {
15
- const a = form.getAttribute("model-name")
16
- if (a && a.length > 0) {
17
- return a
18
- }
19
- const b = form.name
20
- if (b) {
21
- if (b.endsWith("Form")) {
22
- return b.substring(0, b.length - 4)
23
- }
24
- return b
25
- }
26
- }
27
- if (name && name.length > 0) {
28
- return name
29
- }
30
- return ""
31
- }
32
- const m = "model"
33
- const _getModelName = (f2?: HTMLFormElement | null): string => {
34
- return getModelName(f2, m)
35
- }
36
-
37
- export type Callback<T> = (value?: T) => void
38
- export type DispatchWithCallback<T> = (value: T, callback?: Callback<T>) => void
39
-
40
- export function useMergeState<T>(initialState?: T | (() => T)): [T, DispatchWithCallback<Partial<T>>] {
41
- const [state, _setState] = useState(initialState ? initialState : ({} as any))
42
-
43
- const callbackRef = useRef<Callback<T>>(null)
44
-
45
- const setState = useCallback(
46
- (newState: Partial<T>, callback?: Callback<T>): void => {
47
- ;(callbackRef as any).current = callback
48
- _setState((prevState: any) => Object.assign({}, prevState, newState))
49
- },
50
- [state],
51
- )
52
-
53
- useEffect(() => {
54
- if (callbackRef.current) {
55
- callbackRef.current(state)
56
- }
57
- }, [state])
58
-
59
- return [state, setState]
60
- }
61
-
62
- export const useUpdate = <T>(
63
- initialState: T,
64
- getName?: ((f?: HTMLFormElement | null) => string) | string,
65
- getLocale?: (() => Locale) | Locale,
66
- removeErr?: (ctrl: HTMLInputElement) => void,
67
- ) => {
68
- const [state, setState] = useMergeState<T>(initialState)
69
- const [rerender, setRerender] = useState(false)
70
-
71
- // trigger re-render page when change state in useSearch
72
- useEffect(() => {
73
- setRerender(!rerender)
74
- }, [state])
75
-
76
- const updatePhoneState = (event: any) => {
77
- const re = /^[0-9\b]+$/
78
- const target = event.currentTarget as HTMLInputElement
79
- const value = removePhoneFormat(target.value)
80
- if (re.test(value) || !value) {
81
- updateState(event)
82
- } else {
83
- const splitArr = value.split("")
84
- let responseStr = ""
85
- splitArr.forEach((element) => {
86
- if (re.test(element)) {
87
- responseStr += element
88
- }
89
- })
90
- target.value = responseStr
91
- updateState(event)
92
- }
93
- }
94
- const getModelName: (f2?: HTMLFormElement | null) => string = typeof getName === "function" ? getName : _getModelName
95
-
96
- const updateState = (e: any, callback?: (prev: any) => void, lc?: Locale) => {
97
- const ctrl = e.currentTarget as HTMLInputElement
98
- let mn: string = m
99
- if (getName) {
100
- if (typeof getName === "string") {
101
- mn = getName
102
- } else {
103
- mn = getName(ctrl.form)
104
- }
105
- } else {
106
- mn = _getModelName(ctrl.form)
107
- }
108
- const l = localeOf(lc, getLocale)
109
- handleEvent(e, removeErr)
110
- const objSet = buildState<T, any>(e, state, ctrl, mn, l)
111
- if (objSet) {
112
- if (callback) {
113
- setState({ ...objSet }, callback)
114
- } else {
115
- setState(objSet)
116
- }
117
- }
118
- }
119
- const updateFlatState = (e: any, callback?: () => void, lc?: Locale) => {
120
- const objSet = buildFlatState<T, any>(e, state, lc)
121
- if (objSet) {
122
- if (callback) {
123
- setState(objSet, callback)
124
- } else {
125
- setState(objSet)
126
- }
127
- }
128
- }
129
- return {
130
- getModelName,
131
- updateState,
132
- updatePhoneState,
133
- updateFlatState,
134
- getLocale,
135
- setState,
136
- state,
137
- }
138
- }