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 );