function firstUnpinnedTab(tabs) { for (var tab of tabs) { if (!tab.pinned) { return tab.index; } } } document.addEventListener("click", function(e) { function callOnActiveTab(callback) { chrome.tabs.query({currentWindow: true}, function(tabs) { for (var tab of tabs) { if (tab.active) { callback(tab, tabs); } } }); } if (e.target.id === "tabs-move-beginning") { callOnActiveTab((tab, tabs) => { var index = 0; if (!tab.pinned) { index = firstUnpinnedTab(tabs); } chrome.tabs.move([tab.id], {index}); }); } if (e.target.id === "tabs-move-end") { callOnActiveTab((tab, tabs) => { var index = -1; if (tab.pinned) { var lastPinnedTab = Math.max(0, firstUnpinnedTab(tabs) - 1); index = lastPinnedTab; } chrome.tabs.move([tab.id], {index}); }); } else if (e.target.id === "tabs-duplicate") { callOnActiveTab((tab) => { chrome.tabs.duplicate(tab.id); }); } else if (e.target.id === "tabs-reload") { callOnActiveTab((tab) => { chrome.tabs.reload(tab.id); }); } else if (e.target.id === "tabs-remove") { callOnActiveTab((tab) => { chrome.tabs.remove(tab.id); }); } else if (e.target.id === "tabs-create") { chrome.tabs.create({url: "https://developer.mozilla.org/en-US/Add-ons/WebExtensions"}); } e.preventDefault(); });