@launchmenu/core
Version:
An environment for visual keyboard controlled applets
68 lines • 5.04 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.launch = void 0;
const electron_1 = require("electron");
const WindowController_1 = require("./WindowController");
const hmr_1 = __importDefault(require("@launchmenu/hmr"));
global.DEV = process.env.NODE_ENV == "dev";
/**
* Launches the application
* @param config Configuration for LM to be used
* @returns A function that can be called to show LM
*/
async function launch(config) {
electron_1.ipcMain.on("log", (event, ...args) => console.log(...args));
let allowQuit = false;
electron_1.app.on("will-quit", event => {
if (!allowQuit)
event.preventDefault();
});
await electron_1.app.whenReady();
// Start the initial LM instance
let windowController = new WindowController_1.WindowController(config);
let restartPromise = Promise.resolve();
let lastUpdate;
/** A function to restart LaunchMenu */
const restart = async () => {
const updateTime = Date.now();
lastUpdate = updateTime;
restartPromise = restartPromise.then(async () => {
// Make sure this is the last requested update
if (lastUpdate != updateTime)
return;
// Dispose the old window
await windowController.destroy();
// Get a fresh instance of the class and reinitialize the window
const { WindowController, } = require("./WindowController");
windowController = new WindowController(config);
});
};
// Take care of restarting and shutting down
electron_1.ipcMain.on("restart", restart);
let quit = false;
electron_1.ipcMain.on("shutdown", async () => {
if (quit)
return;
quit = true;
await windowController.destroy();
allowQuit = true;
electron_1.app.quit();
});
// If in development enable HMR for the window
if (DEV) {
// Watch within the windowManager dir for changes, and reload if changes are detected
hmr_1.default(__dirname, restart);
}
// Resolve the promise once LM has fully started
await windowController.started;
return {
show: () => windowController.show(),
shown: windowController.shown,
exit: () => electron_1.ipcMain.emit("shutdown"),
};
}
exports.launch = launch;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF1bmNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2luZG93Q29udHJvbGxlci9sYXVuY2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx1Q0FBc0M7QUFDdEMseURBQW9EO0FBQ3BELDBEQUFrQztBQUdsQyxNQUFNLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQztBQUUzQzs7OztHQUlHO0FBQ0ksS0FBSyxVQUFVLE1BQU0sQ0FBQyxNQUEwQjtJQVFuRCxrQkFBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRTVELElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN0QixjQUFHLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRTtRQUN4QixJQUFJLENBQUMsU0FBUztZQUFFLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMzQyxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sY0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBRXRCLGdDQUFnQztJQUNoQyxJQUFJLGdCQUFnQixHQUFHLElBQUksbUNBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEQsSUFBSSxjQUFjLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3ZDLElBQUksVUFBOEIsQ0FBQztJQUNuQyx1Q0FBdUM7SUFDdkMsTUFBTSxPQUFPLEdBQUcsS0FBSyxJQUFJLEVBQUU7UUFDdkIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzlCLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDeEIsY0FBYyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDNUMsOENBQThDO1lBQzlDLElBQUksVUFBVSxJQUFJLFVBQVU7Z0JBQUUsT0FBTztZQUVyQyx5QkFBeUI7WUFDekIsTUFBTSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUVqQyxnRUFBZ0U7WUFDaEUsTUFBTSxFQUNGLGdCQUFnQixHQUNuQixHQUF3QyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUN2RSxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDO0lBRUYsNENBQTRDO0lBQzVDLGtCQUFPLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvQixJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7SUFDakIsa0JBQU8sQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzlCLElBQUksSUFBSTtZQUFFLE9BQU87UUFDakIsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNaLE1BQU0sZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixjQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztJQUVILDhDQUE4QztJQUM5QyxJQUFJLEdBQUcsRUFBRTtRQUNMLHFGQUFxRjtRQUNyRixhQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQzNCO0lBRUQsZ0RBQWdEO0lBQ2hELE1BQU0sZ0JBQWdCLENBQUMsT0FBTyxDQUFDO0lBQy9CLE9BQU87UUFDSCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFO1FBQ25DLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLO1FBQzdCLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxrQkFBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7S0FDdkMsQ0FBQztBQUNOLENBQUM7QUFqRUQsd0JBaUVDIn0=
;