UNPKG

chrome-extension-cli

Version:
78 lines (67 loc) 1.87 kB
'use strict'; import './sidepanel.css'; (function () { function initList(tabs: chrome.tabs.Tab[]) { const list = document.getElementById('tabs-list')!; const listItem = tabs.map((tab) => { return ` <li> <div data-tab-id="${tab.id}" class="tab-container"> ${ tab.favIconUrl ? `<img src="${tab.favIconUrl}" alt="" class="tab-image" />` : '<span class="tab-image tab-image-placeholder">&#x2750;</span>' } <p class="tab-title" title="${tab.title}">${tab.title}</p> </div> </li> `; }); list.innerHTML = listItem.join('\n'); list.addEventListener('click', (event) => { if ( event.target && (event.target as HTMLElement).closest('.tab-container') ) { const tabId = (event.target as HTMLElement) .closest('.tab-container')! .getAttribute('data-tab-id'); chrome.tabs.update(Number(tabId), { active: true, }); } }); } function setupTabList() { chrome.tabs.query( { currentWindow: true, }, (tabs: chrome.tabs.Tab[]) => { initList(tabs); } ); } function setupTabListeners() { chrome.tabs.onCreated.addListener(setupTabList); chrome.tabs.onMoved.addListener(setupTabList); chrome.tabs.onRemoved.addListener(setupTabList); chrome.tabs.onUpdated.addListener(setupTabList); } document.addEventListener('DOMContentLoaded', () => { setupTabList(); setupTabListeners(); }); // Communicate with background file by sending a message chrome.runtime.sendMessage( { type: 'GREETINGS', payload: { message: 'Hello, my name is Syd. I am from SidePanel.', }, }, (response) => { console.log(response.message); } ); })();