Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/forms / src / new-forms / deps.ts
Size: Mime:
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'
  }
}