@lynker-desktop/electron-window-manager
Version:
electron-window-manager
87 lines • 3.79 kB
TypeScript
import { WebContents } from 'electron';
import type { ElectronWindowsManagerOptions, BWItem, BVItem, PreloadWebContentsConfig } from '../common';
export declare const getCustomSession: () => Electron.Session;
export declare const enable: (win: WebContents) => void;
export declare class WindowsManager {
loadingViewUrl: string | undefined;
errorViewUrl: string | undefined;
preload?: string;
preloadWebContentsConfig?: PreloadWebContentsConfig;
windows: Map<number, BWItem | BVItem>;
preloadedBW: BWItem | null;
preloadedBW_FramelessWithButtons: BWItem | null;
preloadedBW_FramelessNoButtons: BWItem | null;
preloadedBV: BVItem | null;
preloading: boolean;
webviewDomainWhiteList: string[];
private createQueue;
private isCreating;
/**
* webview 域名白名单
* 传入格式示例:
* [
* 'example.com', // 精确匹配 example.com
* '.example.com', // 匹配所有 example.com 的子域名,如 a.example.com、b.example.com
* 'sub.domain.com', // 精确匹配 sub.domain.com
* 'localhost', // 匹配 localhost 及本地回环地址
* '127.0.0.1', // 匹配 127.0.0.1
* '::1' // 匹配 IPv6 本地回环
* ]
* 注意:
* - 以点开头的(如 .example.com)会匹配所有子域名。
* - 不带点的(如 example.com)只匹配主域名。
* - 'localhost'、'127.0.0.1'、'::1' 以及局域网 IP(如 192.168.x.x、10.x.x.x、172.16.x.x~172.31.x.x)都视为本地白名单。
*/
constructor(preload?: string, loadingViewUrl?: string, errorViewUrl?: string, preloadWebContentsConfig?: PreloadWebContentsConfig, webviewDomainWhiteList?: string[]);
/**
* 设置预加载的webContents配置
* @param preloadWebContentsConfig 预加载的webContents配置
*/
setPreloadWebContentsConfig(preloadWebContentsConfig: PreloadWebContentsConfig): void;
/**
* 预加载实例
*/
private _preloadInstances;
/**
* 创建预加载的窗口
* @param options 窗口选项
* @returns 预加载的窗口
*/
private _createPreloadBW;
/**
* 创建预加载的浏览器视图
* @returns 预加载的浏览器视图
*/
private _createPreloadBV;
create(options: Omit<ElectronWindowsManagerOptions, 'type'> & {
type?: 'BW';
}): Promise<BWItem>;
create(options: ElectronWindowsManagerOptions & {
type: 'BV';
}): Promise<BVItem>;
create(options: ElectronWindowsManagerOptions): Promise<BVItem | BWItem>;
/**
* 处理创建队列
*/
private processCreateQueue;
/**
* 实际的窗口创建逻辑
*/
private _createWindow;
_setLoadingView(window: BWItem, createOptions: ElectronWindowsManagerOptions): void;
get(idOrName: string | number): BWItem | BVItem | undefined;
getAll(type: 'BW'): Map<number, BWItem>;
getAll(type: 'BV'): Map<number, BVItem>;
getAll(): Map<number, BWItem | BVItem>;
close(idOrName: string | number): boolean;
closeAll(): void;
rename(idOrName: string | number, newName: string): BWItem | BVItem | undefined;
reInitUrl(idOrName: string | number, url: string): BWItem | BVItem | undefined;
getPreload(): string | undefined;
private _applyBrowserWindowOptions;
private _applyBrowserViewOptions;
createPreloadWebContents(url: string): Promise<unknown>;
}
export declare let isInitialized: boolean;
export declare const initialize: (preload?: string, loadingViewUrl?: string, errorViewUrl?: string, preloadWebContentsConfig?: PreloadWebContentsConfig, webviewDomainWhiteList?: string[]) => WindowsManager;
//# sourceMappingURL=index.d.ts.map