diff --git a/api/tabs/tabs.js b/api/tabs/tabs.js deleted file mode 100644 index 0546b16..0000000 --- a/api/tabs/tabs.js +++ /dev/null @@ -1,197 +0,0 @@ -export const getWindowTabs = () => { - return browser.tabs.query({currentWindow: true}) -} - -export const removeTab = (tab) => { - browser.tabs.remove(tab.id) -} - -/** - * listTabs to switch to - */ -function listTabs() { - getCurrentWindowTabs().then((tabs) => { - let tabsList = document.getElementById('tabs-list'); - let currentTabs = document.createDocumentFragment(); - let limit = 5; - let counter = 0; - - tabsList.textContent = ''; - - for (let tab of tabs) { - if (!tab.active && counter <= limit) { - let tabLink = document.createElement('a'); - - tabLink.textContent = tab.title || tab.id; - tabLink.setAttribute('href', tab.id); - tabLink.classList.add('switch-tabs'); - currentTabs.appendChild(tabLink); - } - - counter += 1; - } - - tabsList.appendChild(currentTabs); - }); -} - -document.addEventListener("DOMContentLoaded", listTabs); - -function getCurrentWindowTabs() { - return browser.tabs.query({currentWindow: true}); -} - -document.addEventListener("click", (e) => { - function callOnActiveTab(callback) { - getCurrentWindowTabs().then((tabs) => { - for (let tab of tabs) { - if (tab.active) { - callback(tab, tabs); - } - } - }); -} - - if (e.target.id === "tabs-move-beginning") { - callOnActiveTab((tab, tabs) => { - let index = 0; - if (!tab.pinned) { - index = firstUnpinnedTab(tabs); - } - console.log(`moving ${tab.id} to ${index}`) - browser.tabs.move([tab.id], {index}); - }); - } - - if (e.target.id === "tabs-move-end") { - callOnActiveTab((tab, tabs) => { - let index = -1; - if (tab.pinned) { - let lastPinnedTab = Math.max(0, firstUnpinnedTab(tabs) - 1); - index = lastPinnedTab; - } - browser.tabs.move([tab.id], {index}); - }); - } - - else if (e.target.id === "tabs-duplicate") { - callOnActiveTab((tab) => { - browser.tabs.duplicate(tab.id); - }); - } - - else if (e.target.id === "tabs-reload") { - callOnActiveTab((tab) => { - browser.tabs.reload(tab.id); - }); - } - - else if (e.target.id === "tabs-remove") { - callOnActiveTab((tab) => { - browser.tabs.remove(tab.id); - }); - } - - else if (e.target.id === "tabs-create") { - browser.tabs.create({url: "https://developer.mozilla.org/en-US/Add-ons/WebExtensions"}); - } - - else if (e.target.id === "tabs-create-reader") { - browser.tabs.create({url: "https://developer.mozilla.org/en-US/Add-ons/WebExtensions", openInReaderMode: true}); - } - - else if (e.target.id === "tabs-alertinfo") { - callOnActiveTab((tab) => { - let props = ""; - for (let item in tab) { - props += `${ item } = ${ tab[item] } \n`; - } - alert(props); - }); - } - - else if (e.target.id === "tabs-add-zoom") { - callOnActiveTab((tab) => { - let gettingZoom = browser.tabs.getZoom(tab.id); - gettingZoom.then((zoomFactor) => { - //the maximum zoomFactor is 5, it can't go higher - if (zoomFactor >= MAX_ZOOM) { - alert("Tab zoom factor is already at max!"); - } else { - let newZoomFactor = zoomFactor + ZOOM_INCREMENT; - //if the newZoomFactor is set to higher than the max accepted - //it won't change, and will never alert that it's at maximum - newZoomFactor = newZoomFactor > MAX_ZOOM ? MAX_ZOOM : newZoomFactor; - browser.tabs.setZoom(tab.id, newZoomFactor); - } - }); - }); - } - - else if (e.target.id === "tabs-decrease-zoom") { - callOnActiveTab((tab) => { - let gettingZoom = browser.tabs.getZoom(tab.id); - gettingZoom.then((zoomFactor) => { - //the minimum zoomFactor is 0.3, it can't go lower - if (zoomFactor <= MIN_ZOOM) { - alert("Tab zoom factor is already at minimum!"); - } else { - let newZoomFactor = zoomFactor - ZOOM_INCREMENT; - //if the newZoomFactor is set to lower than the min accepted - //it won't change, and will never alert that it's at minimum - newZoomFactor = newZoomFactor < MIN_ZOOM ? MIN_ZOOM : newZoomFactor; - browser.tabs.setZoom(tab.id, newZoomFactor); - } - }); - }); - } - - else if (e.target.id === "tabs-default-zoom") { - callOnActiveTab((tab) => { - let gettingZoom = browser.tabs.getZoom(tab.id); - gettingZoom.then((zoomFactor) => { - if (zoomFactor == DEFAULT_ZOOM) { - alert("Tab zoom is already at the default zoom factor"); - } else { - browser.tabs.setZoom(tab.id, DEFAULT_ZOOM); - } - }); - }); - } - - else if (e.target.classList.contains('switch-tabs')) { - let tabId = +e.target.getAttribute('href'); - - browser.tabs.query({ - currentWindow: true - }).then((tabs) => { - for (let tab of tabs) { - if (tab.id === tabId) { - browser.tabs.update(tabId, { - active: true - }); - } - } - }); - } - - e.preventDefault(); -}); - -//onRemoved listener. fired when tab is removed -browser.tabs.onRemoved.addListener((tabId, removeInfo) => { - console.log(`The tab with id: ${tabId}, is closing`); - - if(removeInfo.isWindowClosing) { - console.log(`Its window is also closing.`); - } else { - console.log(`Its window is not closing`); - } -}); - -//onMoved listener. fired when tab is moved into the same window -browser.tabs.onMoved.addListener((tabId, moveInfo) => { - let startIndex = moveInfo.fromIndex; - let endIndex = moveInfo.toIndex; - console.log(`Tab with id: ${tabId} moved from index: ${startIndex} to index: ${endIndex}`); -});