import { Modeler } from 'redux-aggregate' ; import { TodoST , TodoModel } from './todo' ; export interface TodosST { name : string ; input : string | null ; items : TodoST [ ] ; now : string ; bgColor : string ; } export const TodosModel = injects => ( { name : '' , input : null , items : [ ] , now : '' , bgColor : '#fff' , ... injects } ) ; function getInputValue ( state ) { if ( state . input === null ) return '' ; return `${ state . input }` ; } export const TodosQR = { getInputValue } ; function addTodo ( state ) { const value = TodosQR . getInputValue ( state ) ; if ( value === '' ) return state ; const items = [ ... state . items , TodoModel ( { value } ) ] ; return { ... state , items , input : '' } ; } function setInputValue ( state , value ) { return { ... state , input : value } ; } export const TodosMT = { addTodo , setInputValue } ; const Timer = { tick ( state , timeLabel ) { return { ... state , now : timeLabel } ; } } ; export const TodosSB = { Timer } ;