const { ipcRenderer } = require('electron'); let sourceList, contentList, typeButtons, shareButton, cancelButton, activeItem, activeTab = 'screen'; const getItemDOM = item => { const li = document.createElement('li'); li.setAttribute('data-id', item.id); li.innerHTML = `
${item.name}
`; li.addEventListener('click', onItemClick, false); return li; }; const updateTab = () => { const sources = sourceList.filter(it => it.id.indexOf(activeTab) === 0); contentList.innerHTML = ''; sources.forEach(source => contentList.appendChild(getItemDOM(source))); }; const bindTypeClick = () => { typeButtons.forEach(it => it.addEventListener('click', onChangeType, false)); }; const bindActionsClick = () => { shareButton.addEventListener('click', onShareClick, false); cancelButton.addEventListener('click', onCancelClick, false); }; const onChangeType = event => { event.preventDefault(); if (!event.target.classList.contains('active')) { activeTab = event.target.dataset.type; typeButtons.forEach(it => it.classList.remove('active')); event.target.classList.add('active'); updateTab(); } }; const onItemClick = event => { event.preventDefault(); if (!event.currentTarget.classList.contains('active')) { activeItem = event.currentTarget.dataset.id; document.querySelectorAll('.preview li').forEach(it => it.classList.remove('active')); event.currentTarget.classList.add('active'); changeShareState(); } }; const onCancelClick = event => { event.preventDefault(); ipcRenderer.send('screenShare:cancelSelection'); }; const onShareClick = event => { event.preventDefault(); if (activeItem) { ipcRenderer.send('screenShare:selectScreen', activeItem); } }; const changeShareState = () => { if (shareButton.getAttribute('disabled') !== null) { shareButton.removeAttribute('disabled'); } }; window.addEventListener('load', async () => { sourceList = await ipcRenderer.invoke('screenShare:getSources'); contentList = document.querySelector('.preview'); typeButtons = document.querySelectorAll('.type li'); shareButton = document.querySelector('#share'); cancelButton = document.querySelector('#cancel'); bindTypeClick(); bindActionsClick(); updateTab(); }, false);