Ende.BrowserWindow

interface · desktop apps only

interface Ende.BrowserWindow<T extends ValidBindings<T> = WindowBindings> extends BrowserWindowEventHandlers

class · desktop apps only

class Ende.BrowserWindow<T extends ValidBindings<T> = WindowBindings> extends EventTarget

Constructors

constructor

new BrowserWindow(options?: BrowserWindowOptions)

Properties

windowId

readonly windowId: number

Methods

bind

bind<N extends keyof T, F extends T[N]>(name: N, fn: F & BrowserWindowSerializableCheck<F>): void

Expose fn to the webview under name.

The resolved value must be serializable; see BrowserWindowSerializable. This is checked even when T is left to its default, so returning e.g. a Date is a type error rather than an empty object at runtime.

unbind

unbind<N extends keyof T>(name: N): void

executeJs

executeJs(script: string): Promise<BrowserWindowValue>

setTitle

setTitle(title: string): void

getSize

getSize(): [number, number]

setSize

setSize(width: number, height: number): void

getPosition

getPosition(): [number, number]

setPosition

setPosition(x: number, y: number): void

isResizable

isResizable(): boolean

setResizable

setResizable(resizable: boolean): void

isAlwaysOnTop

isAlwaysOnTop(): boolean

setAlwaysOnTop

setAlwaysOnTop(alwaysOnTop: boolean): void

getOpacity

getOpacity(): number

Get the window's overall opacity, a uniform factor in the range 0–1 where 1 is fully opaque.

setOpacity

setOpacity(opacity: number): void

Set the window's overall opacity, a uniform factor in the range 0–1 where 1 is fully opaque (the default) and 0 is fully transparent. Fades the entire window — web content and native chrome alike — like CSS opacity. Out-of-range values are clamped. No-op on backends without opacity support.

isClosed

isClosed(): boolean

close

close(): void

isVisible

isVisible(): boolean

show

show(): void

hide

hide(): void

focus

focus(): void

navigate

navigate(url: string): void

openDevtools

openDevtools(options?: OpenDevtoolsOptions): void

Open a DevTools window.

By default both targets are shown. Pass an options object to select which targets to inspect. At least one must be true.

reload

reload(): void

setApplicationMenu

setApplicationMenu(menu: MenuItem[]): void

showContextMenu

showContextMenu(x: number, y: number, menu: MenuItem[]): void

Pop up a context menu inside this window.

x and y are window-relative CSS pixels with a top-left origin — the same space as a DOM mouse event's clientX / clientY, so those can be forwarded unchanged:

win.addEventListener("mousedown", (e) => {
  if (e.button === 2) win.showContextMenu(e.clientX, e.clientY, menu);
});

The platform may shift the menu to keep it on screen when it does not fit below or to the right of that point.

getNativeWindow

getNativeWindow(): Ende.UnsafeWindowSurface

addEventListener

addEventListener<K extends keyof BrowserWindowEventMap>(type: K, listener: (this: BrowserWindow, ev: BrowserWindowEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void

removeEventListener

removeEventListener<K extends keyof BrowserWindowEventMap>(type: K, listener: (this: BrowserWindow, ev: BrowserWindowEventMap[K]) => any, options?: boolean | EventListenerOptions): void
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void