import { Rectangle } from "./Types" export interface IState { cursorPixelX: number cursorPixelY: number cursorPixelWidth: number cursorCharacter: string fontPixelWidth: number fontPixelHeight: number mode: string foregroundColor: string autoCompletion: null | IAutoCompletionInfo quickInfo: null | Oni.Plugin.QuickInfo popupMenu: null | IMenu signatureHelp: null | Oni.Plugin.SignatureHelpResult cursorLineVisible: boolean cursorLineOpacity: number cursorColumnVisible: boolean cursorColumnOpacity: number // Dimensions of active window, in pixels activeWindowDimensions: Rectangle } export interface IMenu { id: string, filter: string, filteredOptions: IMenuOptionWithHighlights[], options: Oni.Menu.MenuOption[], selectedIndex: number } export interface IMenuOptionWithHighlights extends Oni.Menu.MenuOption { labelHighlights: number[][], detailHighlights: number[][] } export interface IAutoCompletionInfo { /** * Base entry being completed against */ base: string entries: Oni.Plugin.CompletionInfo[] /** * Label of selected entry */ selectedIndex: number } export const createDefaultState = () => ({ cursorPixelX: 10, cursorPixelY: 10, cursorPixelWidth: 10, cursorCharacter: "", fontPixelWidth: 10, fontPixelHeight: 10, mode: "normal", foregroundColor: "rgba(0, 0, 0, 0)", autoCompletion: null, quickInfo: null, popupMenu: null, signatureHelp: null, activeWindowDimensions: { x: 0, y: 0, width: 0, height: 0, }, cursorLineVisible: false, cursorLineOpacity: 0, cursorColumnVisible: false, cursorColumnOpacity: 0, })