cncjs
90 строк · 2.0 Кб
1import { 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: 'Edit',34submenu: [35{ role: 'undo' },36{ role: 'redo' },37{ type: 'separator' },38{ role: 'cut' },39{ role: 'copy' },40{ role: 'paste' },41{ role: 'pasteandmatchstyle' },42{ role: 'delete' },43{ role: 'selectall' }44]45},46{47label: 'View',48submenu: [49{ role: 'reload' },50{ role: 'forcereload' },51{ role: 'toggledevtools' },52{ type: 'separator' },53{ role: 'resetzoom' },54{ role: 'zoomin' },55{ role: 'zoomout' },56{ type: 'separator' },57{ role: 'togglefullscreen' },58{ type: 'separator' },59{60label: 'View In Browser',61click: () => {62const url = `http://${address}:${port}`;63shell.openExternal(url);64}65},66...menuItems67]68},69{70role: 'window',71submenu: [72{ role: 'minimize' },73{ role: 'close' }74]75},76{77role: 'help',78submenu: [79{80label: 'Learn More',81click: () => {82shell.openExternal('https://github.com/cncjs/cncjs/wiki');83}84}85]86}87];88
89return template;90};91