import { StackNavigationProp } from '@react-navigation/stack' ; import { RouteProp } from '@react-navigation/native' ; import { ViewStyle , StyleProp } from 'react-native' ; import { Utils } from 'tuya-panel-kit' ; import Strings from '../i18n' ; import { SingleTimePickerProps } from 'src/components/time/single-time-picker/interface' ; const { convertX : cx } = Utils . RatioUtils ; declare type StackParamsList = { Timer : { themeConfig : IThemeConfig ; timerConfig : ITimerConfig ; } ; } ; export interface ITimerProps { navigation ? : StackNavigationProp < any > ; route : RouteProp < StackParamsList , 'Timer' > ; } export interface IThemeConfig { themeColor ? : string ; fontColor ? : string ; backgroundColor ? : string ; scrollViewContentStyle ? : StyleProp < ViewStyle > ; timerStyle ? : StyleProp < ViewStyle > ; singleTimePickerStyle ? : SingleTimePickerProps ; noTimerTintColor ? : string ; rowStyle ? : StyleProp < ViewStyle > ; weekOptionStyle ? : IWeekOptionStyle ; switchOptionStyle : ISwitchOptionStyle ; } export interface IWeekOptionStyle { centerBgc : string ; borderBottomColor : string ; borderColor : string ; } export interface ISwitchOptionStyle { style : StyleProp < ViewStyle > ; thumbStyle : StyleProp < ViewStyle > ; size : { activeSize : number ; width : number ; height : number ; margin : number ; } ; tintColor : string ; thumbTintColor : string ; onThumbBorderColor : string ; offThumbBorderColor : string ; } export interface ITimerConfig { addTimerRouter ? : string ; openLampRouter ? : string ; weeksRouter ? : string ; useNavigation ? : boolean ; is24Hour ? : boolean ; limit ? : number ; checkConflict ? : number ; category ? : string ; renderAddButtonElement ? : ( ) => JSX . Element ; renderHeaderElement ? : ( ) => JSX . Element ; renderSwipeDelElement ? : ( ) => JSX . Element ; customAddTimer ? : ( value : boolean , item : TimerData | [ ] , is24Hour : boolean ) => void ; } export interface TListProps extends IThemeConfig , ITimerConfig { timerList : ICloudTimerList [ ] ; timeStyle : StyleProp < ViewStyle > ; onGetCloudTimerList : ( ) => void ; onEditItem : ( data : TimerData ) => void ; listHeaderComponent : JSX . Element ; } export interface TimerData extends IList { timerId ? : string ; key ? : string ; } export interface IList { dpPowerValue : boolean ; status : boolean ; hour : number ; minute : number ; hue : number ; saturation : number ; value : number ; brightness : number ; temperature : number ; weeks : number [ ] ; workMode : string ; open ? : boolean ; type : string ; index : number ; } export interface ICloudTimerList extends IList { timerId : string ; key : string ; } export interface ITimerList { id : string ; timers : ITimer [ ] ; } export interface ITimer { aliasName : string ; date : string ; dps : any ; groupOrder ? : number ; isAppPush ? : boolean ; loops : string ; instruct : any [ ] ; orderDps : any ; params : any ; status : number ; time : string ; timeId : number ; timezoneId ? : string ; } export const defaultProps = { rowStyle : { backgroundColor : 'rgba(0,0,0,0.05)' , } , weekOptionStyle : { centerBgc : 'rgba(0,0,0,0.05)' , borderBottomColor : 'rgba(0,0,0,0.1)' , borderColor : 'rgba(0,0,0,0.2)' , } , switchOptionStyle : { style : { } , size : { activeSize : cx ( 24 ) , width : cx ( 40 ) , height : cx ( 18 ) , margin : 0 , } , tintColor : 'rgba(0,21,0,0.12)' , thumbTintColor : '#ffffff' , thumbStyle : { } , onThumbBorderColor : '#ffffff' , offThumbBorderColor : 'rgba(0,21,0,0.12)' , } , } ; export const defaultPickerStyle = { hour : 0 , minute : 0 , dividerColor : '#ccc' , itemTextColor : '#ccc' , selectedItemTextColor : '#000' , textSize : 20 , itemStyle : { } , visibleItemCount : 7 , itemAlign : 'center' , loop : true , containerStyle : { } , pickerStyle : { } , hourPickerStyle : { } , minutePickerStyle : { } , amPmPickerStyle : { } , amText : Strings . getLang ( 'TYLamp_am' ) , pmText : Strings . getLang ( 'TYLamp_pm' ) , prefixPosition : 'left' , } ;