import { h, Html } from 'lib/rx'
import * as icons from 'lib/icons'
import * as L from 'lib/loadable'
export function columns(xs: Array): Html {
return h('div', { className: 'g-Columns' }, xs)
}
export function loading(): Html {
return h('div',
{ className: 'g-Loading' },
icons.spinner()
)
}
export function error(message: string): Html {
return h('div',
{ className: 'g-Error' },
message
)
}
export function loadable(loadable: L.Loadable, view: (t: T) => Html): Html {
switch (loadable.key) {
case 'INIT':
return undefined
case 'LOADING':
return loading()
case 'LOADED':
return view(loadable.value)
case 'FAILURE':
return error(loadable.error)
}
}