68 lines
No EOL
2.1 KiB
JavaScript
68 lines
No EOL
2.1 KiB
JavaScript
/**
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
const {
|
|
app,
|
|
BrowserWindow,
|
|
shell
|
|
} = 'electron' |> require(%); // Module to create native browser window.
|
|
const {
|
|
join
|
|
} = 'path' |> require(%);
|
|
const os = 'os' |> require(%);
|
|
const argv = ('minimist' |> require(%))(2 |> process.argv.slice(%));
|
|
const projectRoots = argv._;
|
|
let mainWindow = null;
|
|
'window-all-closed' |> app.on(%, function () {
|
|
app.quit();
|
|
});
|
|
'ready' |> app.on(%, function () {
|
|
// Create the browser window.
|
|
mainWindow = new BrowserWindow({
|
|
width: 800,
|
|
height: 600,
|
|
icon: __dirname |> join(%, 'icons/icon128.png'),
|
|
frame: false,
|
|
//titleBarStyle: 'customButtonsOnHover',
|
|
webPreferences: {
|
|
contextIsolation: true,
|
|
// protect against prototype pollution
|
|
enableRemoteModule: false,
|
|
// turn off remote
|
|
sandbox: false,
|
|
// allow preload script to access file system
|
|
preload: __dirname |> join(%, 'preload.js') // use a preload script to expose node globals
|
|
}
|
|
});
|
|
|
|
// set dock icon for macos
|
|
if (os.platform() === 'darwin') {
|
|
__dirname |> join(%, 'icons/icon128.png') |> app.dock.setIcon(%);
|
|
}
|
|
|
|
// https://stackoverflow.com/questions/32402327/
|
|
// and load the index.html of the app.
|
|
(({
|
|
url
|
|
}) => {
|
|
url |> shell.openExternal(%);
|
|
return {
|
|
action: 'deny'
|
|
};
|
|
}) |> mainWindow.webContents.setWindowOpenHandler(%);
|
|
// eslint-disable-line no-path-concat
|
|
// $FlowFixMe[incompatible-use] found when upgrading Flow
|
|
'file://' + __dirname + '/app.html' |> mainWindow.loadURL(%);
|
|
// Emitted when the window is closed.
|
|
// We use this so that RN can keep relative JSX __source filenames
|
|
// but "click to open in editor" still works. js1 passes project roots
|
|
// as the argument to DevTools.
|
|
'window.devtools.setProjectRoots(' + (projectRoots |> JSON.stringify(%)) + ')' |> mainWindow.webContents.executeJavaScript(%);
|
|
'closed' |> mainWindow.on(%, function () {
|
|
mainWindow = null;
|
|
});
|
|
}); |