import { Action } from 'redux' ; import { UPDATE_SCROLL_TOP , START_CONSECUTIVE_TOGGLE , LogMonitorAction , } from './actions' ; import { LogMonitorProps } from './LogMonitor' ; function initialScrollTop < S , A extends Action < unknown > > ( props , state = 0 , action ) { if ( ! props . preserveScrollTop ) { return 0 ; } return action . type === UPDATE_SCROLL_TOP ? action . scrollTop : state ; } function startConsecutiveToggle < S , A extends Action < unknown > > ( props , state , action ) { return action . type === START_CONSECUTIVE_TOGGLE ? action . id : state ; } export interface LogMonitorState { initialScrollTop : number ; consecutiveToggleStartId : number | null | undefined ; } export default function reducer < S , A extends Action < unknown > > ( props , state = { } , action ) { return { initialScrollTop : initialScrollTop ( props , state . initialScrollTop , action ) , consecutiveToggleStartId : startConsecutiveToggle ( props , state . consecutiveToggleStartId , action ) , } ; }