const api = globalThis.browser ?? globalThis.chrome;
const MENU_ID = "grit-copy";
function inject(tabId, frameIds) {
api.scripting.executeScript({
target: frameIds ? { tabId, frameIds } : { tabId, allFrames: true },
files: ["grit.js"]
});
}
api.runtime.onInstalled.addListener(() => {
api.contextMenus.create({
id: MENU_ID,
title: "Copy Git",
contexts: ["selection"],
icons: { "16": "icons/grit_icon.png", "32": "icons/grit_icon.png" }
});
});
api.contextMenus.onClicked.addListener((info, tab) => {
if (info.menuItemId !== MENU_ID || !tab?.id) return;
inject(tab.id, [info.frameId ?? 0]);
});
api.commands.onCommand.addListener(async (name, tab) => {
if (name !== "copy-git") return;
const id = tab?.id ?? (await api.tabs.query({ active: true, currentWindow: true }))[0]?.id;
if (id) inject(id);
});