text: const electron = require('electron'); // eslint-disable-line
  const defaultMenu = require('electron-default-menu');
  
  const { Menu } = electron;
  const { dialog } = electron;
  
  const homepage = 'https://github.com/mifi/lossless-cut';
  const releasesPage = 'https://github.com/mifi/lossless-cut/releases';
  
  module.exports = (app, mainWindow, newVersion) => {
    const menu = defaultMenu(app, electron.shell);
  
    const fileMenu = {
      label: 'File',
      submenu: [
        {
          label: 'Open',
          accelerator: 'CmdOrCtrl+O',
          async click() {
            const { canceled, filePaths } = await dialog.showOpenDialog({ properties: ['openFile', 'multiSelections'] });
            if (canceled) return;
            mainWindow.webContents.send('file-opened', filePaths);
          },
        },
        {
          label: 'Close',
          accelerator: 'CmdOrCtrl+W',
          async click() {
            mainWindow.webContents.send('close-file');
          },
        },
        { type: 'separator' },
        {
          label: 'Import CSV cut file',
          click() {
            mainWindow.webContents.send('importEdlFile');
          },
        },
        {
          label: 'Export CSV cut file',
          click() {
            mainWindow.webContents.send('exportEdlFile');
          },
        },
        { type: 'separator' },
        {
          label: 'Convert to friendly format (fastest)',
          click() {
            mainWindow.webContents.send('html5ify', 'fastest');
          },
        },
        {
          label: 'Convert to friendly format (fast)',
          click() {
            mainWindow.webContents.send('html5ify', 'fast');
          },
        },
        {
          label: 'Convert to friendly codec (slow)',
          click() {
            mainWindow.webContents.send('html5ify', 'slow');
          },
        },
        {
          label: 'Convert to friendly codec (slowest, audio)',
          click() {
            mainWindow.webContents.send('html5ify', 'slow-audio');
          },
        },
        { type: 'separator' },
        {
          label: 'Extract all streams',
          click() {
            mainWindow.webContents.send('extract-all-streams', false);
          },
        },
        { type: 'separator' },
        {
          label: 'Settings',
          click() {
            mainWindow.webContents.send('openSettings');
          },
        },
        { type: 'separator' },
        {
          label: 'Exit',
          click() {
            app.quit();
          },
        },
      ],
    };
  
    const editSubMenu = menu.find(item => item.label === 'Edit').submenu;
    editSubMenu.splice(editSubMenu.findIndex(item => item.label === 'Undo'), 1, {
      label: 'Undo',
      accelerator: 'CmdOrCtrl+Z',
      click() {
        mainWindow.webContents.send('undo');
      },
    });
  
    editSubMenu.splice(editSubMenu.findIndex(item => item.label === 'Redo'), 1, {
      label: 'Redo',
      accelerator: 'Shift+CmdOrCtrl+Z',
      click() {
        mainWindow.webContents.send('redo');
      },
    });
  
  
    menu.splice((process.platform === 'darwin' ? 1 : 0), 0, fileMenu);
  
    const helpIndex = menu.findIndex(item => item.role === 'help');
    if (helpIndex >= 0) {
      menu.splice(helpIndex, 1, {
        label: 'Tools',
        submenu: [
          {
            label: 'Merge files',
            click() {
              mainWindow.webContents.send('show-merge-dialog', true);
            },
          },
          {
            label: 'Set custom start offset/timecode',
            click() {
              mainWindow.webContents.send('set-start-offset', true);
            },
          },
        ],
      },
      {
        role: 'help',
        submenu: [
          {
            label: 'Help',
            click() {
              mainWindow.webContents.send('openHelp');
            },
          },
  
          {
            label: 'Learn More',
            click() { electron.shell.openExternal(homepage); },
          },
        ],
      });
    }
  
    if (newVersion) {
      menu.push({
        label: 'New version!',
        submenu: [
          {
            label: `Download ${newVersion}`,
            click() { electron.shell.openExternal(releasesPage); },
          },
        ],
      });
    }
  
    Menu.setApplicationMenu(Menu.buildFromTemplate(menu));
  };
  