import { isFunction } from 'exotic'
import { formatPhoneNumber } from '@skava/utils'
import {
TelephoneProps as Props,
TelephoneAttributes as Attributes,
} from './typings'
import { renderIcon, renderValue } from './renderProps'
import { classes } from './fixture'
// alias
export function toTelephoneNumber(props: Props): string | Number {
return (
props.phoneNo ||
props.phoneno ||
props.telephone ||
props.value ||
props.number
)
}
export function toAttributes(props: Props): Attributes {
const { shouldFormat, shouldUseIcon } = props
const telephoneNumber = toTelephoneNumber(props)
const attributes = {
className: classes.telephoneNumberButton,
isLink: true,
to: `tel:${telephoneNumber}`,
shouldUseIcon,
}
const telephone = shouldFormat
? formatPhoneNumber(telephoneNumber)
: telephoneNumber
const render = toRender(props)
return {
renderIcon: props.renderIcon || renderIcon,
render,
shouldUseIcon,
attributes,
telephone,
}
}
/**
* @todo generic toRender functon...
*/
export function toRender(props: Props) {
return isFunction(props.children)
? props.children
: props.render || props.renderValue || renderValue
}