summaryrefslogtreecommitdiffhomepage
path: root/flow-libs/electron.js.flow
blob: 98358003aad1b3c53a60761a5232c950e6125e92 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
// @flow

import EventEmitter from 'events';

declare module 'electron' {

  // common types

  declare type Size = {
    width: number;
    height: number;
  }

  declare type Rectangle = {
    width: number;
    height: number;
    x: number;
    y: number;
  }

  // http://electron.atom.io/docs/api/app

  declare class App extends EventEmitter {
    getPath(name: string): string;
    setPath(name: string, path: string): void;
    quit(): void;
  }

  // http://electron.atom.io/docs/api/shell
  declare type OpenExternalOptions = {
    activate: boolean;
  }

  declare class Shell {
    openExternal(url: string, options?: OpenExternalOptions, callback: (error: Error) => void): boolean;
  }

  // http://electron.atom.io/docs/api/remote

  declare class Remote {
    app: App;
    getCurrentWindow(): BrowserWindow;
    getCurrentWebContents(): WebContents;
    getGlobal(name: string): ?mixed;
  }

  // http://electron.atom.io/docs/api/clipboard

  declare class Clipboard {
    writeText(text: string, type?: string): void;
  }

  // http://electron.atom.io/docs/api/native-image

  declare class NativeImage {
    isEmpty(): boolean;
    getSize(): Size;
  }

  // http://electron.atom.io/docs/api/tray

  declare class Tray extends EventEmitter {
    constructor(image: NativeImage | string): void;
    getBounds(): Rectangle;
    setHighlightMode(mode: 'selection' | 'always' | 'never'): void;
    setImage(image: NativeImage | string): void;
    setPressedImage(image: NativeImage | string): void;
  }

  // http://electron.atom.io/docs/api/web-frame

  declare class WebFrame extends EventEmitter {
    setZoomLevelLimits(minimumLevel: number, maximumLevel: number): void;
  }

  // http://electron.atom.io/docs/api/ipc-renderer

  declare class IpcRenderer extends EventEmitter {
    send(channel: string, ...args: Array<mixed>): void;
  }

  // http://electron.atom.io/docs/api/ipc-main

  declare class IpcMain extends EventEmitter {}

  declare class WebContents extends EventEmitter {}

  // http://electron.atom.io/docs/api/browser-window

  declare type OpenDevToolsOptions = {
    mode: 'right' | 'bottom' | 'undocked' | 'detach';
  }

  declare type WebPreferences = {
    backgroundThrottling?: boolean;
    scrollBounce?: boolean;
    blinkFeatures?: string;
    disableBlinkFeatures?: string;
  }

  declare type BrowserWindowConstructorOptions = {
    width?: number;
    height?: number;
    resizable?: boolean;
    maximizable?: boolean;
    fullscreenable?: boolean;
    show?: boolean;
    frame?: boolean;
    transparent?: boolean;
    webPreferences?: WebPreferences;
  }

  declare type LoadURLOptions = {
    userAgent?: string;
  }

  declare class BrowserWindow extends EventEmitter {
    constructor(options: ?BrowserWindowConstructorOptions): this;
    isVisible(): boolean;
    show(): void;
    hide(): void;
    focus(): void;
    setPosition(x: number, y: number, animate?: boolean): void;
    getBounds(): Rectangle;
    inspectElement(x: number, y: number): void;
    isDevToolsOpened(): boolean;isDevToolsOpened(): boolean;
    openDevTools(options?: OpenDevToolsOptions): void;
    closeDevTools(): void;
    loadURL(url: string, options?: LoadURLOptions): void;
    webContents: WebContents;
  }

  // http://electron.atom.io/docs/api/menu-item
  declare class MenuItem {}

  // http://electron.atom.io/docs/api/menu

  declare type MenuItemConstructorOptions = {
    type?: 'normal' | 'separator' | 'submenu' | 'checkbox' | 'radio';
    label?: string;
    role?: string;
    click?: (menuItem: MenuItem, browserWindow: BrowserWindow, event: Event) => void;
  }

  declare type PopupOptions = {
    x?: number;
    y?: number;
  }

  declare class Menu {
    static buildFromTemplate(template: Array<MenuItemConstructorOptions>): Menu;
    static setApplicationMenu(menu: Menu): void;
    popup(browserWindow?: BrowserWindow, options?: PopupOptions): void;
  }

  // http://electron.atom.io/docs/api/app

  declare class App extends EventEmitter {
    setPath(name: string, path: string): void;
    getPath(name: string): string;
    quit(): void;
  }

  // MainInterface

  declare var nativeImage: {
    createEmpty(): NativeImage,
    createFromPath(path: string): NativeImage,
    createFromBuffer(buffer: Buffer, scaleFactor?: number): NativeImage,
    createFromDataURL(dataURL: string): NativeImage
  };
  declare var webFrame: WebFrame;
  declare var app: App;
  declare var ipcRenderer: IpcRenderer;
  declare var ipcMain: IpcMain;
  declare var remote: Remote;
  declare var shell: Shell;
  declare var clipboard: Clipboard;
}