chore: convert more files to TypeScript (#18820)
This commit is contained in:
parent
134d76dcdd
commit
c79613b037
11 changed files with 84 additions and 73 deletions
|
@ -115,7 +115,7 @@ dialog.showOpenDialogSync(mainWindow, {
|
||||||
Returns `Promise<Object>` - Resolve with an object containing the following:
|
Returns `Promise<Object>` - Resolve with an object containing the following:
|
||||||
|
|
||||||
* `canceled` Boolean - whether or not the dialog was canceled.
|
* `canceled` Boolean - whether or not the dialog was canceled.
|
||||||
* `filePaths` String[] (optional) - An array of file paths chosen by the user. If the dialog is cancelled this will be an empty array.
|
* `filePaths` String[] - An array of file paths chosen by the user. If the dialog is cancelled this will be an empty array.
|
||||||
* `bookmarks` String[] (optional) _macOS_ _mas_ - An array matching the `filePaths` array of base64 encoded strings which contains security scoped bookmark data. `securityScopedBookmarks` must be enabled for this to be populated.
|
* `bookmarks` String[] (optional) _macOS_ _mas_ - An array matching the `filePaths` array of base64 encoded strings which contains security scoped bookmark data. `securityScopedBookmarks` must be enabled for this to be populated.
|
||||||
|
|
||||||
The `browserWindow` argument allows the dialog to attach itself to a parent window, making it modal.
|
The `browserWindow` argument allows the dialog to attach itself to a parent window, making it modal.
|
||||||
|
|
|
@ -126,13 +126,13 @@ auto_filenames = {
|
||||||
"lib/common/api/module-list.js",
|
"lib/common/api/module-list.js",
|
||||||
"lib/common/api/native-image.js",
|
"lib/common/api/native-image.js",
|
||||||
"lib/common/api/shell.js",
|
"lib/common/api/shell.js",
|
||||||
"lib/common/buffer-utils.js",
|
"lib/common/buffer-utils.ts",
|
||||||
"lib/common/clipboard-utils.js",
|
"lib/common/clipboard-utils.ts",
|
||||||
"lib/common/crash-reporter.js",
|
"lib/common/crash-reporter.js",
|
||||||
"lib/common/electron-binding-setup.ts",
|
"lib/common/electron-binding-setup.ts",
|
||||||
"lib/common/error-utils.js",
|
"lib/common/error-utils.ts",
|
||||||
"lib/common/is-promise.ts",
|
"lib/common/is-promise.ts",
|
||||||
"lib/common/web-view-methods.js",
|
"lib/common/web-view-methods.ts",
|
||||||
"lib/renderer/api/crash-reporter.js",
|
"lib/renderer/api/crash-reporter.js",
|
||||||
"lib/renderer/api/desktop-capturer.ts",
|
"lib/renderer/api/desktop-capturer.ts",
|
||||||
"lib/renderer/api/ipc-renderer.js",
|
"lib/renderer/api/ipc-renderer.js",
|
||||||
|
@ -166,7 +166,7 @@ auto_filenames = {
|
||||||
|
|
||||||
isolated_bundle_deps = [
|
isolated_bundle_deps = [
|
||||||
"lib/common/electron-binding-setup.ts",
|
"lib/common/electron-binding-setup.ts",
|
||||||
"lib/common/error-utils.js",
|
"lib/common/error-utils.ts",
|
||||||
"lib/isolated_renderer/init.js",
|
"lib/isolated_renderer/init.js",
|
||||||
"lib/renderer/ipc-renderer-internal-utils.ts",
|
"lib/renderer/ipc-renderer-internal-utils.ts",
|
||||||
"lib/renderer/ipc-renderer-internal.ts",
|
"lib/renderer/ipc-renderer-internal.ts",
|
||||||
|
@ -180,7 +180,7 @@ auto_filenames = {
|
||||||
|
|
||||||
content_script_bundle_deps = [
|
content_script_bundle_deps = [
|
||||||
"lib/common/electron-binding-setup.ts",
|
"lib/common/electron-binding-setup.ts",
|
||||||
"lib/common/error-utils.js",
|
"lib/common/error-utils.ts",
|
||||||
"lib/content_script/init.js",
|
"lib/content_script/init.js",
|
||||||
"lib/renderer/chrome-api.ts",
|
"lib/renderer/chrome-api.ts",
|
||||||
"lib/renderer/extensions/event.ts",
|
"lib/renderer/extensions/event.ts",
|
||||||
|
@ -241,7 +241,7 @@ auto_filenames = {
|
||||||
"lib/browser/crash-reporter-init.js",
|
"lib/browser/crash-reporter-init.js",
|
||||||
"lib/browser/default-menu.ts",
|
"lib/browser/default-menu.ts",
|
||||||
"lib/browser/desktop-capturer.ts",
|
"lib/browser/desktop-capturer.ts",
|
||||||
"lib/browser/devtools.js",
|
"lib/browser/devtools.ts",
|
||||||
"lib/browser/guest-view-manager.js",
|
"lib/browser/guest-view-manager.js",
|
||||||
"lib/browser/guest-window-manager.js",
|
"lib/browser/guest-window-manager.js",
|
||||||
"lib/browser/init.ts",
|
"lib/browser/init.ts",
|
||||||
|
@ -257,16 +257,16 @@ auto_filenames = {
|
||||||
"lib/common/api/module-list.js",
|
"lib/common/api/module-list.js",
|
||||||
"lib/common/api/native-image.js",
|
"lib/common/api/native-image.js",
|
||||||
"lib/common/api/shell.js",
|
"lib/common/api/shell.js",
|
||||||
"lib/common/buffer-utils.js",
|
"lib/common/buffer-utils.ts",
|
||||||
"lib/common/clipboard-utils.js",
|
"lib/common/clipboard-utils.ts",
|
||||||
"lib/common/crash-reporter.js",
|
"lib/common/crash-reporter.js",
|
||||||
"lib/common/electron-binding-setup.ts",
|
"lib/common/electron-binding-setup.ts",
|
||||||
"lib/common/error-utils.js",
|
"lib/common/error-utils.ts",
|
||||||
"lib/common/init.ts",
|
"lib/common/init.ts",
|
||||||
"lib/common/is-promise.ts",
|
"lib/common/is-promise.ts",
|
||||||
"lib/common/parse-features-string.js",
|
"lib/common/parse-features-string.js",
|
||||||
"lib/common/reset-search-paths.ts",
|
"lib/common/reset-search-paths.ts",
|
||||||
"lib/common/web-view-methods.js",
|
"lib/common/web-view-methods.ts",
|
||||||
"lib/renderer/ipc-renderer-internal-utils.ts",
|
"lib/renderer/ipc-renderer-internal-utils.ts",
|
||||||
"lib/renderer/ipc-renderer-internal.ts",
|
"lib/renderer/ipc-renderer-internal.ts",
|
||||||
"package.json",
|
"package.json",
|
||||||
|
@ -282,15 +282,15 @@ auto_filenames = {
|
||||||
"lib/common/api/module-list.js",
|
"lib/common/api/module-list.js",
|
||||||
"lib/common/api/native-image.js",
|
"lib/common/api/native-image.js",
|
||||||
"lib/common/api/shell.js",
|
"lib/common/api/shell.js",
|
||||||
"lib/common/buffer-utils.js",
|
"lib/common/buffer-utils.ts",
|
||||||
"lib/common/clipboard-utils.js",
|
"lib/common/clipboard-utils.ts",
|
||||||
"lib/common/crash-reporter.js",
|
"lib/common/crash-reporter.js",
|
||||||
"lib/common/electron-binding-setup.ts",
|
"lib/common/electron-binding-setup.ts",
|
||||||
"lib/common/error-utils.js",
|
"lib/common/error-utils.ts",
|
||||||
"lib/common/init.ts",
|
"lib/common/init.ts",
|
||||||
"lib/common/is-promise.ts",
|
"lib/common/is-promise.ts",
|
||||||
"lib/common/reset-search-paths.ts",
|
"lib/common/reset-search-paths.ts",
|
||||||
"lib/common/web-view-methods.js",
|
"lib/common/web-view-methods.ts",
|
||||||
"lib/renderer/api/crash-reporter.js",
|
"lib/renderer/api/crash-reporter.js",
|
||||||
"lib/renderer/api/desktop-capturer.ts",
|
"lib/renderer/api/desktop-capturer.ts",
|
||||||
"lib/renderer/api/exports/electron.js",
|
"lib/renderer/api/exports/electron.js",
|
||||||
|
@ -332,11 +332,11 @@ auto_filenames = {
|
||||||
"lib/common/api/module-list.js",
|
"lib/common/api/module-list.js",
|
||||||
"lib/common/api/native-image.js",
|
"lib/common/api/native-image.js",
|
||||||
"lib/common/api/shell.js",
|
"lib/common/api/shell.js",
|
||||||
"lib/common/buffer-utils.js",
|
"lib/common/buffer-utils.ts",
|
||||||
"lib/common/clipboard-utils.js",
|
"lib/common/clipboard-utils.ts",
|
||||||
"lib/common/crash-reporter.js",
|
"lib/common/crash-reporter.js",
|
||||||
"lib/common/electron-binding-setup.ts",
|
"lib/common/electron-binding-setup.ts",
|
||||||
"lib/common/error-utils.js",
|
"lib/common/error-utils.ts",
|
||||||
"lib/common/init.ts",
|
"lib/common/init.ts",
|
||||||
"lib/common/is-promise.ts",
|
"lib/common/is-promise.ts",
|
||||||
"lib/common/reset-search-paths.ts",
|
"lib/common/reset-search-paths.ts",
|
||||||
|
|
|
@ -1,14 +1,12 @@
|
||||||
'use strict'
|
import { dialog, Menu } from 'electron'
|
||||||
|
import * as fs from 'fs'
|
||||||
const { dialog, Menu } = require('electron')
|
import * as url from 'url'
|
||||||
const fs = require('fs')
|
|
||||||
const url = require('url')
|
|
||||||
|
|
||||||
const ipcMainUtils = require('@electron/internal/browser/ipc-main-internal-utils')
|
const ipcMainUtils = require('@electron/internal/browser/ipc-main-internal-utils')
|
||||||
|
|
||||||
const convertToMenuTemplate = function (items, handler) {
|
const convertToMenuTemplate = function (items: ContextMenuItem[], handler: (id: number) => void) {
|
||||||
return items.map(function (item) {
|
return items.map(function (item) {
|
||||||
const transformed = item.type === 'subMenu' ? {
|
const transformed: Electron.MenuItemConstructorOptions = item.type === 'subMenu' ? {
|
||||||
type: 'submenu',
|
type: 'submenu',
|
||||||
label: item.label,
|
label: item.label,
|
||||||
enabled: item.enabled,
|
enabled: item.enabled,
|
||||||
|
@ -34,7 +32,7 @@ const convertToMenuTemplate = function (items, handler) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const getEditMenuItems = function () {
|
const getEditMenuItems = function (): Electron.MenuItemConstructorOptions[] {
|
||||||
return [
|
return [
|
||||||
{ role: 'undo' },
|
{ role: 'undo' },
|
||||||
{ role: 'redo' },
|
{ role: 'redo' },
|
||||||
|
@ -42,18 +40,18 @@ const getEditMenuItems = function () {
|
||||||
{ role: 'cut' },
|
{ role: 'cut' },
|
||||||
{ role: 'copy' },
|
{ role: 'copy' },
|
||||||
{ role: 'paste' },
|
{ role: 'paste' },
|
||||||
{ role: 'pasteAndMatchStyle' },
|
{ role: 'pasteandmatchstyle' },
|
||||||
{ role: 'delete' },
|
{ role: 'delete' },
|
||||||
{ role: 'selectAll' }
|
{ role: 'selectall' }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
const isChromeDevTools = function (pageURL) {
|
const isChromeDevTools = function (pageURL: string) {
|
||||||
const { protocol } = url.parse(pageURL)
|
const { protocol } = url.parse(pageURL)
|
||||||
return protocol === 'devtools:'
|
return protocol === 'devtools:'
|
||||||
}
|
}
|
||||||
|
|
||||||
const assertChromeDevTools = function (contents, api) {
|
const assertChromeDevTools = function (contents: Electron.WebContents, api: string) {
|
||||||
const pageURL = contents._getURL()
|
const pageURL = contents._getURL()
|
||||||
if (!isChromeDevTools(pageURL)) {
|
if (!isChromeDevTools(pageURL)) {
|
||||||
console.error(`Blocked ${pageURL} from calling ${api}`)
|
console.error(`Blocked ${pageURL} from calling ${api}`)
|
||||||
|
@ -61,7 +59,7 @@ const assertChromeDevTools = function (contents, api) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ipcMainUtils.handle('ELECTRON_INSPECTOR_CONTEXT_MENU', function (event, items, isEditMenu) {
|
ipcMainUtils.handle('ELECTRON_INSPECTOR_CONTEXT_MENU', function (event: Electron.IpcMainEvent, items: ContextMenuItem[], isEditMenu: boolean) {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
assertChromeDevTools(event.sender, 'window.InspectorFrontendHost.showContextMenuAtPoint()')
|
assertChromeDevTools(event.sender, 'window.InspectorFrontendHost.showContextMenuAtPoint()')
|
||||||
|
|
||||||
|
@ -73,7 +71,7 @@ ipcMainUtils.handle('ELECTRON_INSPECTOR_CONTEXT_MENU', function (event, items, i
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
ipcMainUtils.handle('ELECTRON_INSPECTOR_SELECT_FILE', async function (event) {
|
ipcMainUtils.handle('ELECTRON_INSPECTOR_SELECT_FILE', async function (event: Electron.IpcMainEvent) {
|
||||||
assertChromeDevTools(event.sender, 'window.UI.createFileSelectorElement()')
|
assertChromeDevTools(event.sender, 'window.UI.createFileSelectorElement()')
|
||||||
|
|
||||||
const result = await dialog.showOpenDialog({})
|
const result = await dialog.showOpenDialog({})
|
||||||
|
@ -85,7 +83,7 @@ ipcMainUtils.handle('ELECTRON_INSPECTOR_SELECT_FILE', async function (event) {
|
||||||
return [path, data]
|
return [path, data]
|
||||||
})
|
})
|
||||||
|
|
||||||
ipcMainUtils.handle('ELECTRON_INSPECTOR_CONFIRM', async function (event, message = '', title = '') {
|
ipcMainUtils.handle('ELECTRON_INSPECTOR_CONFIRM', async function (event: Electron.IpcMainEvent, message: string = '', title: string = '') {
|
||||||
assertChromeDevTools(event.sender, 'window.confirm()')
|
assertChromeDevTools(event.sender, 'window.confirm()')
|
||||||
|
|
||||||
const options = {
|
const options = {
|
|
@ -1,11 +1,6 @@
|
||||||
'use strict'
|
import { Buffer } from 'buffer'
|
||||||
|
|
||||||
// Note: Don't use destructuring assignment for `Buffer`, or we'll hit a
|
const typedArrays: Record<string, Function> = {
|
||||||
// browserify bug that makes the statement invalid, throwing an error in
|
|
||||||
// sandboxed renderer.
|
|
||||||
const Buffer = require('buffer').Buffer
|
|
||||||
|
|
||||||
const typedArrays = {
|
|
||||||
Buffer,
|
Buffer,
|
||||||
ArrayBuffer,
|
ArrayBuffer,
|
||||||
Int8Array,
|
Int8Array,
|
||||||
|
@ -19,16 +14,18 @@ const typedArrays = {
|
||||||
Float64Array
|
Float64Array
|
||||||
}
|
}
|
||||||
|
|
||||||
function getType (value) {
|
type BufferLike = Buffer | ArrayBuffer | ArrayBufferView
|
||||||
|
|
||||||
|
function getType (value: BufferLike) {
|
||||||
for (const type of Object.keys(typedArrays)) {
|
for (const type of Object.keys(typedArrays)) {
|
||||||
if (value instanceof typedArrays[type]) {
|
if (value instanceof typedArrays[type]) {
|
||||||
return type
|
return type
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null
|
throw new Error('Invalid buffer')
|
||||||
}
|
}
|
||||||
|
|
||||||
function getBuffer (value) {
|
function getBuffer (value: BufferLike) {
|
||||||
if (value instanceof Buffer) {
|
if (value instanceof Buffer) {
|
||||||
return value
|
return value
|
||||||
} else if (value instanceof ArrayBuffer) {
|
} else if (value instanceof ArrayBuffer) {
|
||||||
|
@ -38,19 +35,27 @@ function getBuffer (value) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.isBuffer = function (value) {
|
export function isBuffer (value: BufferLike) {
|
||||||
return ArrayBuffer.isView(value) || value instanceof ArrayBuffer
|
return ArrayBuffer.isView(value) || value instanceof ArrayBuffer
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.bufferToMeta = function (value) {
|
interface BufferMeta {
|
||||||
|
type: keyof typeof typedArrays;
|
||||||
|
data: Buffer;
|
||||||
|
length: number | undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function bufferToMeta (value: BufferLike): BufferMeta {
|
||||||
return {
|
return {
|
||||||
type: getType(value),
|
type: getType(value),
|
||||||
data: getBuffer(value),
|
data: getBuffer(value),
|
||||||
length: value.length
|
// NB. We only use length when decoding Int8Array and friends.
|
||||||
|
// For other buffer-like types this is expected to be undefined.
|
||||||
|
length: (value as Buffer).length
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.metaToBuffer = function (value) {
|
export function metaToBuffer (value: BufferMeta) {
|
||||||
const constructor = typedArrays[value.type]
|
const constructor = typedArrays[value.type]
|
||||||
const data = getBuffer(value.data)
|
const data = getBuffer(value.data)
|
||||||
|
|
||||||
|
@ -59,7 +64,7 @@ exports.metaToBuffer = function (value) {
|
||||||
} else if (constructor === ArrayBuffer) {
|
} else if (constructor === ArrayBuffer) {
|
||||||
return data.buffer
|
return data.buffer
|
||||||
} else if (constructor) {
|
} else if (constructor) {
|
||||||
return new constructor(data.buffer, data.byteOffset, value.length)
|
return new (constructor as any)(data.buffer, data.byteOffset, value.length)
|
||||||
} else {
|
} else {
|
||||||
return data
|
return data
|
||||||
}
|
}
|
|
@ -1,14 +1,12 @@
|
||||||
'use strict'
|
|
||||||
|
|
||||||
const { nativeImage, NativeImage } = process.electronBinding('native_image')
|
const { nativeImage, NativeImage } = process.electronBinding('native_image')
|
||||||
|
|
||||||
const objectMap = function (source, mapper) {
|
const objectMap = function (source: Object, mapper: (value: any) => any) {
|
||||||
const sourceEntries = Object.entries(source)
|
const sourceEntries = Object.entries(source)
|
||||||
const targetEntries = sourceEntries.map(([key, val]) => [key, mapper(val)])
|
const targetEntries = sourceEntries.map(([key, val]) => [key, mapper(val)])
|
||||||
return Object.fromEntries(targetEntries)
|
return Object.fromEntries(targetEntries)
|
||||||
}
|
}
|
||||||
|
|
||||||
const serialize = function (value) {
|
export function serialize (value: any): any {
|
||||||
if (value instanceof NativeImage) {
|
if (value instanceof NativeImage) {
|
||||||
return {
|
return {
|
||||||
buffer: value.toBitmap(),
|
buffer: value.toBitmap(),
|
||||||
|
@ -26,7 +24,7 @@ const serialize = function (value) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const deserialize = function (value) {
|
export function deserialize (value: any): any {
|
||||||
if (value && value.__ELECTRON_SERIALIZED_NativeImage__) {
|
if (value && value.__ELECTRON_SERIALIZED_NativeImage__) {
|
||||||
return nativeImage.createFromBitmap(value.buffer, value.size)
|
return nativeImage.createFromBitmap(value.buffer, value.size)
|
||||||
} else if (Array.isArray(value)) {
|
} else if (Array.isArray(value)) {
|
||||||
|
@ -39,8 +37,3 @@ const deserialize = function (value) {
|
||||||
return value
|
return value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
serialize,
|
|
||||||
deserialize
|
|
||||||
}
|
|
|
@ -1,5 +1,3 @@
|
||||||
'use strict'
|
|
||||||
|
|
||||||
const constructors = new Map([
|
const constructors = new Map([
|
||||||
[Error.name, Error],
|
[Error.name, Error],
|
||||||
[EvalError.name, EvalError],
|
[EvalError.name, EvalError],
|
||||||
|
@ -10,10 +8,10 @@ const constructors = new Map([
|
||||||
[URIError.name, URIError]
|
[URIError.name, URIError]
|
||||||
])
|
])
|
||||||
|
|
||||||
exports.deserialize = function (error) {
|
export function deserialize (error: Electron.SerializedError): Electron.ErrorWithCause {
|
||||||
if (error && error.__ELECTRON_SERIALIZED_ERROR__ && constructors.has(error.name)) {
|
if (error && error.__ELECTRON_SERIALIZED_ERROR__ && constructors.has(error.name)) {
|
||||||
const constructor = constructors.get(error.name)
|
const constructor = constructors.get(error.name)
|
||||||
const deserializedError = new constructor(error.message)
|
const deserializedError = new constructor!(error.message) as Electron.ErrorWithCause
|
||||||
deserializedError.stack = error.stack
|
deserializedError.stack = error.stack
|
||||||
deserializedError.from = error.from
|
deserializedError.from = error.from
|
||||||
deserializedError.cause = exports.deserialize(error.cause)
|
deserializedError.cause = exports.deserialize(error.cause)
|
||||||
|
@ -22,7 +20,7 @@ exports.deserialize = function (error) {
|
||||||
return error
|
return error
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.serialize = function (error) {
|
export function serialize (error: Electron.ErrorWithCause): Electron.SerializedError {
|
||||||
if (error instanceof Error) {
|
if (error instanceof Error) {
|
||||||
// Errors get lost, because: JSON.stringify(new Error('Message')) === {}
|
// Errors get lost, because: JSON.stringify(new Error('Message')) === {}
|
||||||
// Take the serializable properties and construct a generic object
|
// Take the serializable properties and construct a generic object
|
||||||
|
@ -30,7 +28,7 @@ exports.serialize = function (error) {
|
||||||
message: error.message,
|
message: error.message,
|
||||||
stack: error.stack,
|
stack: error.stack,
|
||||||
name: error.name,
|
name: error.name,
|
||||||
from: process.type,
|
from: process.type as Electron.ProcessType,
|
||||||
cause: exports.serialize(error.cause),
|
cause: exports.serialize(error.cause),
|
||||||
__ELECTRON_SERIALIZED_ERROR__: true
|
__ELECTRON_SERIALIZED_ERROR__: true
|
||||||
}
|
}
|
|
@ -1,7 +1,5 @@
|
||||||
'use strict'
|
|
||||||
|
|
||||||
// Public-facing API methods.
|
// Public-facing API methods.
|
||||||
exports.syncMethods = new Set([
|
export const syncMethods = new Set([
|
||||||
'getURL',
|
'getURL',
|
||||||
'getTitle',
|
'getTitle',
|
||||||
'isLoading',
|
'isLoading',
|
||||||
|
@ -52,7 +50,7 @@ exports.syncMethods = new Set([
|
||||||
'setZoomLevel'
|
'setZoomLevel'
|
||||||
])
|
])
|
||||||
|
|
||||||
exports.asyncMethods = new Set([
|
export const asyncMethods = new Set([
|
||||||
'loadURL',
|
'loadURL',
|
||||||
'capturePage',
|
'capturePage',
|
||||||
'executeJavaScript',
|
'executeJavaScript',
|
|
@ -22,7 +22,7 @@ function completeURL (project: string, path: string) {
|
||||||
return invokeSync('ELECTRON_INSPECTOR_CONFIRM', message, title) as boolean
|
return invokeSync('ELECTRON_INSPECTOR_CONFIRM', message, title) as boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
const useEditMenuItems = function (x: number, y: number, items: any[]) {
|
const useEditMenuItems = function (x: number, y: number, items: ContextMenuItem[]) {
|
||||||
return items.length === 0 && document.elementsFromPoint(x, y).some(function (element) {
|
return items.length === 0 && document.elementsFromPoint(x, y).some(function (element) {
|
||||||
return element.nodeName === 'INPUT' ||
|
return element.nodeName === 'INPUT' ||
|
||||||
element.nodeName === 'TEXTAREA' ||
|
element.nodeName === 'TEXTAREA' ||
|
||||||
|
@ -30,7 +30,7 @@ const useEditMenuItems = function (x: number, y: number, items: any[]) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const createMenu = function (x: number, y: number, items: any[]) {
|
const createMenu = function (x: number, y: number, items: ContextMenuItem[]) {
|
||||||
const isEditMenu = useEditMenuItems(x, y, items)
|
const isEditMenu = useEditMenuItems(x, y, items)
|
||||||
invoke<number>('ELECTRON_INSPECTOR_CONTEXT_MENU', items, isEditMenu).then(id => {
|
invoke<number>('ELECTRON_INSPECTOR_CONTEXT_MENU', items, isEditMenu).then(id => {
|
||||||
if (typeof id === 'number') {
|
if (typeof id === 'number') {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"module": "commonjs",
|
"module": "commonjs",
|
||||||
"target": "es2017",
|
"target": "es2017",
|
||||||
"lib": [
|
"lib": [
|
||||||
"es2017",
|
"es2019",
|
||||||
"dom",
|
"dom",
|
||||||
"dom.iterable"
|
"dom.iterable"
|
||||||
],
|
],
|
||||||
|
|
11
typings/internal-ambient.d.ts
vendored
11
typings/internal-ambient.d.ts
vendored
|
@ -54,11 +54,20 @@ declare module NodeJS {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface ContextMenuItem {
|
||||||
|
id: number;
|
||||||
|
label: string;
|
||||||
|
type: 'normal' | 'separator' | 'subMenu' | 'checkbox';
|
||||||
|
checked: boolean;
|
||||||
|
enabled: boolean;
|
||||||
|
subItems: ContextMenuItem[];
|
||||||
|
}
|
||||||
|
|
||||||
declare interface Window {
|
declare interface Window {
|
||||||
ELECTRON_DISABLE_SECURITY_WARNINGS?: boolean;
|
ELECTRON_DISABLE_SECURITY_WARNINGS?: boolean;
|
||||||
ELECTRON_ENABLE_SECURITY_WARNINGS?: boolean;
|
ELECTRON_ENABLE_SECURITY_WARNINGS?: boolean;
|
||||||
InspectorFrontendHost?: {
|
InspectorFrontendHost?: {
|
||||||
showContextMenuAtPoint: (x: number, y: number, items: any[]) => void
|
showContextMenuAtPoint: (x: number, y: number, items: ContextMenuItem[]) => void
|
||||||
};
|
};
|
||||||
DevToolsAPI?: {
|
DevToolsAPI?: {
|
||||||
contextMenuItemSelected: (id: number) => void;
|
contextMenuItemSelected: (id: number) => void;
|
||||||
|
|
10
typings/internal-electron.d.ts
vendored
10
typings/internal-electron.d.ts
vendored
|
@ -19,6 +19,11 @@ declare namespace Electron {
|
||||||
setAppPath(path: string | null): void;
|
setAppPath(path: string | null): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface WebContents {
|
||||||
|
_getURL(): string;
|
||||||
|
getOwnerBrowserWindow(): Electron.BrowserWindow;
|
||||||
|
}
|
||||||
|
|
||||||
interface SerializedError {
|
interface SerializedError {
|
||||||
message: string;
|
message: string;
|
||||||
stack?: string,
|
stack?: string,
|
||||||
|
@ -28,6 +33,11 @@ declare namespace Electron {
|
||||||
__ELECTRON_SERIALIZED_ERROR__: true
|
__ELECTRON_SERIALIZED_ERROR__: true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface ErrorWithCause extends Error {
|
||||||
|
from?: string;
|
||||||
|
cause?: ErrorWithCause;
|
||||||
|
}
|
||||||
|
|
||||||
interface InjectionBase {
|
interface InjectionBase {
|
||||||
url: string;
|
url: string;
|
||||||
code: string
|
code: string
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue