react-hook-core
Version:
152 lines (151 loc) • 3.92 kB
JavaScript
var __assign =
(this && this.__assign) ||
function () {
__assign =
Object.assign ||
function (t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i]
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]
}
return t
}
return __assign.apply(this, arguments)
}
Object.defineProperty(exports, "__esModule", { value: true })
var react_1 = require("react")
var core_1 = require("./core")
var state_1 = require("./state")
function removePhoneFormat(phone) {
if (phone) {
return phone.replace(core_1.resources.phone, "")
} else {
return phone
}
}
exports.removePhoneFormat = removePhoneFormat
function getModelName(form, name) {
if (form) {
var a = form.getAttribute("model-name")
if (a && a.length > 0) {
return a
}
var b = form.name
if (b) {
if (b.endsWith("Form")) {
return b.substring(0, b.length - 4)
}
return b
}
}
if (name && name.length > 0) {
return name
}
return ""
}
exports.getModelName = getModelName
var m = "model"
var _getModelName = function (f2) {
return getModelName(f2, m)
}
function useMergeState(initialState) {
var _a = react_1.useState(initialState ? initialState : {}),
state = _a[0],
_setState = _a[1]
var callbackRef = react_1.useRef()
var setState = react_1.useCallback(
function (newState, callback) {
callbackRef.current = callback
_setState(function (prevState) {
return Object.assign({}, prevState, newState)
})
},
[state],
)
react_1.useEffect(
function () {
if (callbackRef.current) {
callbackRef.current(state)
}
},
[state],
)
return [state, setState]
}
exports.useMergeState = useMergeState
exports.useUpdate = function (initialState, getName, getLocale, removeErr) {
var _a = useMergeState(initialState),
state = _a[0],
setState = _a[1]
var _b = react_1.useState(false),
rerender = _b[0],
setRerender = _b[1]
react_1.useEffect(
function () {
setRerender(!rerender)
},
[state],
)
var updatePhoneState = function (event) {
var re = /^[0-9\b]+$/
var target = event.currentTarget
var value = removePhoneFormat(target.value)
if (re.test(value) || !value) {
updateState(event)
} else {
var splitArr = value.split("")
var responseStr_1 = ""
splitArr.forEach(function (element) {
if (re.test(element)) {
responseStr_1 += element
}
})
target.value = responseStr_1
updateState(event)
}
}
var getModelName = typeof getName === "function" ? getName : _getModelName
var updateState = function (e, callback, lc) {
var ctrl = e.currentTarget
var mn = m
if (getName) {
if (typeof getName === "string") {
mn = getName
} else {
mn = getName(ctrl.form)
}
} else {
mn = _getModelName(ctrl.form)
}
var l = state_1.localeOf(lc, getLocale)
state_1.handleEvent(e, removeErr)
var objSet = state_1.buildState(e, state, ctrl, mn, l)
if (objSet) {
if (callback) {
setState(__assign({}, objSet), callback)
} else {
setState(objSet)
}
}
}
var updateFlatState = function (e, callback, lc) {
var objSet = state_1.buildFlatState(e, state, lc)
if (objSet) {
if (callback) {
setState(objSet, callback)
} else {
setState(objSet)
}
}
}
return {
getModelName: getModelName,
updateState: updateState,
updatePhoneState: updatePhoneState,
updateFlatState: updateFlatState,
getLocale: getLocale,
setState: setState,
state: state,
}
}