Repository URL to install this package:
|
Version:
3.6.0 ▾
|
import { isRegExp, isDate, isBoolean, isNumber } from 'exotic'
import { Value, AnyObj, SerializedObj } from './typings'
export interface DefaultSerializerArgs<KeyType = string, ValueType = any> {
propertyName: KeyType
value: ValueType
}
export const DEFAULT_SERIALIZER = (inputState: DefaultSerializerArgs) => {
return {
[inputState.propertyName]: inputState.value,
}
}
export const DEFAULT_VALIDATOR = (value: Value) => {
return true
// return value ? true : false
}
export const serializeListIntoMergedObj = (list: AnyObj[]): SerializedObj => {
const serialized = {}
list.forEach(input => {
const serializedInput = input.toJSON()
Object.assign(serialized, serializedInput)
})
return serialized
}
export const toValue = (value: Value): Value => {
if (value === 'true') {
return true
} else if (value === 'false') {
return false
} else {
return value
}
}
export const isColor = (value: any) => {
return value === 'color'
}
export const toType = (value: any) => {
switch (true) {
case isColor(value):
return 'color'
case isDate(value):
return 'date'
case isRegExp(value):
return 'regexp'
// case isString(value):
// return 'text'
case isBoolean(value):
return 'checkbox'
case isNumber(value):
return 'number'
default:
return value
// yagni
// case isPassword(value): return 'password'
// case isFunction(value): return 'function'
// case isObj(value): return 'object'
// case isArray(value): return 'array'
}
}