UNPKG

sparc

Version:

Bootstrap Electron with static views or socket connection to remote source such as Create React App.

127 lines (111 loc) 4.31 kB
import { App, BrowserWindowConstructorOptions, MenuItemConstructorOptions, MenuItem, Menu, Event, IpcMain, LoadURLOptions, MessageBoxOptions } from 'electron'; import ElectronStore from 'electron-store'; import { View } from './view'; import Utils from './utils'; import { Store } from './store'; export type ReadyHandler = (instance: IApp) => void; export interface IViewOptions extends BrowserWindowConstructorOptions { name?: string; // name of the view. path?: string; // url or file path to load. defer?: boolean; // defers loading view (default: true) graceful?: boolean; // when true gracefully loads view (default: true) loadOptions?: LoadURLOptions; // BrowserWindow loadURL options. } export type ChannelHandler<T = any> = (event: Event, arg: T) => void; export interface IMenuItems { [key: string]: MenuItemConstructorOptions; } export interface IStores { [key: string]: Store; } export interface IMenus { [key: string]: Menu; } export interface IViews { [key: string]: View; } export interface IDefinedViews { [key: string]: () => View; } export interface IDefinedStores { [key: string]: () => Store; } export interface IDefinedMenus { [key: string]: () => Menu; } export interface IQuitCommands { mac?: string; other?: string; } export interface IMainState { isMaximized?: boolean; x?: number; y?: number; height?: number; width?: number; } export interface IStoreState { main: IMainState; } export type ConfirmExitConfig = boolean | string | MessageBoxOptions; export interface IAppOptions { mainView?: string; // name of the main view/window defaults to "main". viewsDir?: string; // directory where views are stored. viewsExt?: string; // views extension. confirmExit?: ConfirmExitConfig; // if not undefined shows confirm on exit. allowDevTools?: boolean; // when true allow dev tools to open (default: true when isDev) preserveState?: boolean; // when true view state/settings preserved w, h & position. autoInit?: boolean; // when true auto inits views, menus & stores. (default: true) width?: number; // default app width. (default: 800) height?: number; // default app height. (default: 600) } export interface IApp extends App { options: IAppOptions; utils: Utils; definedViews: IDefinedViews; definedStores: IDefinedStores; definedMenus: IDefinedMenus; views: IViews; menuItems: IMenuItems; menus: IMenus; stores: IStores; channel: IpcMain; registeredQuitCommands: IQuitCommands; isForcedQuit: boolean; isHandleQuit: boolean; isConfirmExit: boolean; isHandleActivate: boolean; store: Store<IStoreState>; canDevTools: boolean; getView(name: string): View; createView(name: string, options?: IViewOptions): View; defineView(name: string, opts?: IViewOptions): this; initViews(...names: string[]): this; initView(name: string): View; getMenuItem(name: string): MenuItemConstructorOptions; defineMenuItem(name: string, config: MenuItemConstructorOptions): this; getMenu(name: string): Menu; defineMenu(name: string, config: MenuItemConstructorOptions): this; defineMenu(name: string, ...items: MenuItem[]): this; createMenu(name: string, config: MenuItemConstructorOptions): Menu; createMenu(name: string, ...items: (string | MenuItem)[]): Menu; initMenus(...names: string[]): this; initMenu(name: string): Menu; getStore<T = any>(name: string): Store<T>; defineStore<T = any>(name: string, options?: ElectronStore.Options<T>): this; createStore<T = any>(name: string, options?: ElectronStore.Options<T>): Store<T>; initStores(...names: string[]): this; initStore<T = any>(name: string): Store<T>; handleQuit(register?: boolean): this; handleActivate(): this; setApplicationMenu(name: string, force?: boolean): this; registerQuit(opts?: IQuitCommands): this; unregisterQuit(opts?: IQuitCommands): this; storeState(view: View): IMainState; resetState(state?: IStoreState): this; initialize(...groups: ('stores' | 'views' | 'menus')[]): this; ready(fn?: ReadyHandler): this; ready(menu: string, fn?: ReadyHandler): this; }