
const deviceList_dropdownItems=[
    {
    label: 'Firestick',
    icon: 'simple-icons:amazon',
    to:'/tools/screencaps/firetv/device/home',
    value:'firetv'
  },
  {
    label: 'Tivo 4k or Google/Android TV',
    icon: 'simple-icons:android',
    to:'/tools/screencaps/tivo4k/device/home',
    value:'tivo4k'
  },
  {
    label: 'Apple TV',
    icon: 'simple-icons:appletv',
    to:'/tools/screencaps/appletv/device/home',
    value:'appletv'
  },
  {
    label: 'Force 1',
    icon: 'simple-icons:android',
    to:'/tools/screencaps/force1/device/home',
    value:'force1'
  },
  {
    label: 'Evo Pro',
    icon: 'simple-icons:android',
    to:'/tools/screencaps/evopro/device/home',
    value:'evopro'
  },
  {
    label: 'Roku',
    icon: 'simple-icons:roku',
    to:'/tools/screencaps/roku/device/home',
    value:'roku'
  }
]
const deviceList_strArray=["firetv","tivo4k","appletv","force1","evopro","roku"];

interface ScreencapDevice {
    [index: string]:any,
    abbrev: string,
    name: string,
    description: string,
    startScreen: string,
    icon: string,
    categories: ScreencapCategory[],
    remotes: ScreencapRemote[]
}
interface ScreencapCategory {
    [index: number]: any,
    id: number,
    label: string,
    screens: ScreencapScreen[]
}
interface ScreencapScreen {
    [index: number]: any,
    id: number,
    label: string,
    category: number,
    path: string,
    imageSrc: string,
    buttons:{
        remote: ScreencapScreenRemoteMap[],
        screen: ScreencapScreenButton[]
    },
    notes?: {
        note: string,
        actions: object[]
    }
}
interface ScreencapRemote {
    [index: number]: any,
    id: number,
    label: string,
    default: boolean,
    buttons:ScreencapRemoteButton[],
    imageSrc: string
}
interface ScreencapAction {
    [index: number]: any,
    id: number,
    label: string,
    device: string,
    target: 'remote' | 'screen',
    active: boolean,
    method: 'click' | 'dblclick' | 'hold',
    onClick?(): any,
    onDblClick?(): any,
    onHold?(): any
}
interface ScreencapScreenButton {
    [index: number]: any,
    id: number,
    label: string,
    position:{  x:number,y:number   },
    dimension?:{    w?:number,h?:number,r?:number   },
    shape:'cir' | 'rect' | 'arrow',
    arrow?:{
        direction:'up' | 'down' | 'left' | 'right',
        offset: number
    },
    actions: ScreencapAction[],
    popupDescription?: string
}
interface ScreencapRemoteButton {
    [index: number]: any,
    id: number,
    label: string,
    position:{  x:number,y:number   },
    dimension?:{    w?:number,h?:number,r?:number   },
    shape:'cir' | 'rect'
    mandatoryActions: ScreencapAction[],
    popupDescription?: string
}
interface ScreencapScreenRemoteMap {
    [index: number]: any,
    id: number,
    remoteButtonRef: string,
    actions: ScreencapAction[],
}

const EMPTY_SCREEN:ScreencapScreen={
    id: -1,
    label: 'SCREEN',
    category: -1,
    path: '',
    imageSrc: '',
    buttons:{
        remote: [],
        screen: []
    },
    notes: {
        note: '',
        actions: []
    }
}
const EMPTY_REMOTE:ScreencapRemote={
    id: -1,
    label: 'REMOTE',
    default: true,
    buttons:[],
    imageSrc: ''
}

const EMPTY_DEVICE:ScreencapDevice={
    abbrev: 'dev_name',
    name: 'Device Name',
    description: '',
    startScreen: '',
    icon:'i-lucide-file',
    categories: [{
        id:0,
        label:'Special',
        screens:[EMPTY_SCREEN]
    }],
    remotes: [EMPTY_REMOTE]
}

const EMPTY_CATEGORY:ScreencapCategory={
    id: -1,
    label: '',
    screens: []
}

const NEW_REMOTE_BUTTON:ScreencapRemoteButton={
    id: -1,
    label:'NEW',
    position:{  x:0,y:0   },
    dimension:{    w:0,h:0,r:0   },
    shape:'rect',
    mandatoryActions: [],
    popupDescription: 'NEW'
}


export type { ScreencapDevice, ScreencapRemote, ScreencapAction, ScreencapCategory, ScreencapScreenButton, ScreencapRemoteButton, ScreencapScreen, ScreencapScreenRemoteMap }
export { deviceList_dropdownItems, deviceList_strArray, EMPTY_CATEGORY, EMPTY_DEVICE, EMPTY_REMOTE, EMPTY_SCREEN, NEW_REMOTE_BUTTON}