mirror of
https://github.com/xibyte/jsketcher
synced 2025-12-06 08:25:19 +01:00
102 lines
No EOL
3.1 KiB
JavaScript
102 lines
No EOL
3.1 KiB
JavaScript
|
|
// Modules to control application life and create native browser window
|
|
// Module to control the application lifecycle and the native browser window.
|
|
const { app, BrowserWindow, protocol } = require("electron");
|
|
const path = require("path");
|
|
const url = require("url");
|
|
|
|
// Create the native browser window.
|
|
function createWindow() {
|
|
const mainWindow = new BrowserWindow({
|
|
width: 1300 ,
|
|
height: 850,
|
|
minWidth: 500,
|
|
minHeight: 500,
|
|
autoHideMenuBar:false,
|
|
webPreferences: {
|
|
nodeIntegration: true,
|
|
contextIsolation: true,
|
|
devTools: true,
|
|
},
|
|
});
|
|
|
|
// In production, set the initial browser path to the local bundle generated
|
|
// by the Create React App build process.
|
|
// In development, set it to localhost to allow live/hot-reloading.
|
|
const appURL = app.isPackaged
|
|
? url.format({
|
|
pathname: path.join(__dirname, "/dist/index.html"),
|
|
protocol: "file:",
|
|
slashes: true,
|
|
})
|
|
: "http://localhost:3000";
|
|
mainWindow.loadURL(appURL);
|
|
mainWindow.maximize()
|
|
|
|
// Automatically open Chrome's DevTools in development mode.
|
|
if (!app.isPackaged) {
|
|
mainWindow.webContents.openDevTools();
|
|
}
|
|
}
|
|
|
|
// Setup a local proxy to adjust the paths of requested files when loading
|
|
// them from the local production bundle (e.g.: local fonts, etc...).
|
|
function setupLocalFilesNormalizerProxy() {
|
|
protocol.registerHttpProtocol(
|
|
"file",
|
|
(request, callback) => {
|
|
const url = request.url.substr(8);
|
|
callback({ path: path.normalize(`${__dirname}/${url}`) });
|
|
},
|
|
(error) => {
|
|
if (error) console.error("Failed to register protocol");
|
|
}
|
|
);
|
|
}
|
|
|
|
// This method will be called when Electron has finished its initialization and
|
|
// is ready to create the browser windows.
|
|
// Some APIs can only be used after this event occurs.
|
|
app.whenReady().then(() => {
|
|
createWindow();
|
|
setupLocalFilesNormalizerProxy();
|
|
|
|
app.on("activate", function () {
|
|
// On macOS it's common to re-create a window in the app when the
|
|
// dock icon is clicked and there are no other windows open.
|
|
if (BrowserWindow.getAllWindows().length === 0) {
|
|
createWindow();
|
|
}
|
|
});
|
|
});
|
|
|
|
// Quit when all windows are closed, except on macOS.
|
|
// There, it's common for applications and their menu bar to stay active until
|
|
// the user quits explicitly with Cmd + Q.
|
|
app.on("window-all-closed", function () {
|
|
if (process.platform !== "darwin") {
|
|
app.quit();
|
|
}
|
|
});
|
|
|
|
// If your app has no need to navigate or only needs to navigate to known pages,
|
|
// it is a good idea to limit navigation outright to that known scope,
|
|
// disallowing any other kinds of navigation.
|
|
const allowedNavigationDestinations = "https://my-electron-app.com";
|
|
app.on("web-contents-created", (event, contents) => {
|
|
contents.on("will-navigate", (event, navigationUrl) => {
|
|
const parsedUrl = new URL(navigationUrl);
|
|
|
|
if (!allowedNavigationDestinations.includes(parsedUrl.origin)) {
|
|
event.preventDefault();
|
|
}
|
|
});
|
|
});
|
|
|
|
// In this file you can include the rest of your app's specific main process
|
|
// code. You can also put them in separate files and require them here.
|
|
|
|
/*
|
|
const mainWindow = new BrowserWindow({
|
|
|
|
})*/ |