cncjs
115 строк · 2.6 Кб
1import { app, shell } from 'electron';2import trimStart from 'lodash/trimStart';3
4// https://github.com/electron/electron/blob/master/docs/api/menu/
5export default (options) => {6// mountPoints = [7// {8// route: '/widget',9// target: '~+/widget'10// }11// ]12const { address, port, mountPoints = [] } = { ...options };13let menuItems = [];14
15if (mountPoints.length > 0) {16menuItems = [17{ type: 'separator' },18{ label: 'Mount Points', enabled: false },19].concat(20mountPoints.map(mountPoint => ({21label: ` ${mountPoint.route}`,22click: () => {23const routePath = trimStart(mountPoint.route, '/');24const url = `http://${address}:${port}/${routePath}`;25shell.openExternal(url);26}27}))28);29}30
31const template = [32{33label: app.getName(),34submenu: [35{ role: 'about' },36{ type: 'separator' },37{ role: 'services', submenu: [] },38{ type: 'separator' },39{ role: 'hide' },40{ role: 'hideothers' },41{ role: 'unhide' },42{ type: 'separator' },43{ role: 'quit' }44]45},46{47label: 'Edit',48submenu: [49{ role: 'undo' },50{ role: 'redo' },51{ type: 'separator' },52{ role: 'cut' },53{ role: 'copy' },54{ role: 'paste' },55{ role: 'pasteandmatchstyle' },56{ role: 'delete' },57{ role: 'selectall' },58{ type: 'separator' },59{60label: 'Speech',61submenu: [62{ role: 'startspeaking' },63{ role: 'stopspeaking' }64]65}66]67},68{69label: 'View',70submenu: [71{ role: 'reload' },72{ role: 'forcereload' },73{ role: 'toggledevtools' },74{ type: 'separator' },75{ role: 'resetzoom' },76{ role: 'zoomin' },77{ role: 'zoomout' },78{ type: 'separator' },79{ role: 'togglefullscreen' },80{ type: 'separator' },81{82label: 'View In Browser',83click: () => {84const url = `http://${address}:${port}`;85shell.openExternal(url);86}87},88...menuItems89]90},91{92role: 'window',93submenu: [94{ role: 'close' },95{ role: 'minimize' },96{ role: 'zoom' },97{ type: 'separator' },98{ role: 'front' }99]100},101{102role: 'help',103submenu: [104{105label: 'Learn More',106click: () => {107shell.openExternal('https://github.com/cncjs/cncjs/wiki');108}109}110]111}112];113
114return template;115};116