import m from 'mithril'

const columnFunction = (columnType: string) => {
  const columnClass = columnType === '' ? 'col' : `col-${columnType}`
  return (classesOrContent: any, optionalAttributes?: any, optionalContent?: any) => {
    let classes = ''
    let attributes = {}
    let content = classesOrContent

    if (optionalAttributes !== undefined && optionalContent === undefined) {
      classes = classesOrContent
      content = optionalAttributes
    }
    else if (optionalContent !== undefined) {
      classes = classesOrContent
      attributes = optionalAttributes
      content = optionalContent
    }

    return m('div', {class: `${columnClass} ${classes}`}, content)
  }
}

const columns = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
const colTypes = columns.reduce((obj, newKey) => {
  obj[`c${newKey}`] = columnFunction(newKey)
  return obj
}, {})

const Col: any = {
  ...colTypes,
  auto: columnFunction('auto'),
  c: columnFunction(''),
}

export default Col
