Prepping editor.
This commit is contained in:
11
editor/electron/api/handlers.ts
Normal file
11
editor/electron/api/handlers.ts
Normal file
@ -0,0 +1,11 @@
|
||||
import vnscene from './vnscene';
|
||||
|
||||
export const API_HANDLERS:{
|
||||
[key:string]:(...args:any)=>any
|
||||
} = {};
|
||||
|
||||
const addHandlers = (handlers:{[key:string]:(...args:any)=>any}) => {
|
||||
Object.keys(handlers).forEach(key => API_HANDLERS[key] = handlers[key]);
|
||||
}
|
||||
|
||||
addHandlers(vnscene);
|
6
editor/electron/api/vnscene.ts
Normal file
6
editor/electron/api/vnscene.ts
Normal file
@ -0,0 +1,6 @@
|
||||
export default {
|
||||
"vnscene:test": (bruh1:string, bruh2:string) => {
|
||||
console.log("vnscene:test", bruh1, bruh2);
|
||||
return 'test?';
|
||||
}
|
||||
};
|
64
editor/electron/main.ts
Normal file
64
editor/electron/main.ts
Normal file
@ -0,0 +1,64 @@
|
||||
import { app, BrowserWindow, ipcMain } from 'electron';
|
||||
import * as path from 'path';
|
||||
import installExtension, { REACT_DEVELOPER_TOOLS } from "electron-devtools-installer";
|
||||
import { API_HANDLERS } from './api/handlers';
|
||||
|
||||
function createWindow() {
|
||||
const win = new BrowserWindow({
|
||||
width: 800,
|
||||
height: 600,
|
||||
webPreferences: {
|
||||
// contextIsolation: false,
|
||||
preload: path.join(__dirname, 'preload.js')
|
||||
}
|
||||
})
|
||||
|
||||
if (app.isPackaged) {
|
||||
// 'build/index.html'
|
||||
win.loadURL(`file://${__dirname}/../index.html`);
|
||||
} else {
|
||||
win.loadURL('http://localhost:3000/index.html');
|
||||
|
||||
win.webContents.openDevTools();
|
||||
|
||||
// Hot Reloading on 'node_modules/.bin/electronPath'
|
||||
require('electron-reload')(__dirname, {
|
||||
electron: path.join(__dirname,
|
||||
'..',
|
||||
'..',
|
||||
'node_modules',
|
||||
'.bin',
|
||||
'electron' + (process.platform === "win32" ? ".cmd" : "")),
|
||||
forceHardReset: true,
|
||||
hardResetMethod: 'exit'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
app.whenReady().then(() => {
|
||||
// DevTools
|
||||
installExtension(REACT_DEVELOPER_TOOLS)
|
||||
.then((name) => console.log(`Added Extension: ${name}`))
|
||||
.catch((err) => console.log('An error occurred: ', err));
|
||||
|
||||
createWindow();
|
||||
|
||||
app.on('activate', () => {
|
||||
if (BrowserWindow.getAllWindows().length === 0) {
|
||||
createWindow();
|
||||
}
|
||||
});
|
||||
|
||||
app.on('window-all-closed', () => {
|
||||
if (process.platform !== 'darwin') {
|
||||
app.quit();
|
||||
}
|
||||
});
|
||||
|
||||
// Add API Handlers
|
||||
Object.entries(API_HANDLERS).forEach(entry => {
|
||||
ipcMain.handle(entry[0], (event:any, ...args:any) => {
|
||||
return entry[1](...args);
|
||||
});
|
||||
})
|
||||
});
|
13
editor/electron/preload.ts
Normal file
13
editor/electron/preload.ts
Normal file
@ -0,0 +1,13 @@
|
||||
import { contextBridge, ipcRenderer } from 'electron';
|
||||
|
||||
const API_HANDLERS = [
|
||||
"vnscene:test"
|
||||
];
|
||||
|
||||
contextBridge.exposeInMainWorld(
|
||||
'dawnapi',
|
||||
API_HANDLERS.reduce((acc, key) => {
|
||||
acc[key] = (...args:any) => ipcRenderer.invoke(key, ...args);
|
||||
return acc;
|
||||
}, {} as {[key:string]:()=>any})
|
||||
);
|
14
editor/electron/tsconfig.json
Normal file
14
editor/electron/tsconfig.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "es5",
|
||||
"module": "commonjs",
|
||||
"sourceMap": true,
|
||||
"strict": true,
|
||||
"outDir": "../build",
|
||||
"rootDir": "../",
|
||||
"noEmitOnError": true,
|
||||
"typeRoots": [
|
||||
"node_modules/@types"
|
||||
]
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user