UNPKG

webext-helpers

Version:

Cross-browser helper utility functions for MV3 & MV2 web extensions.

63 lines (58 loc) 2.18 kB
function $parcel$export(e, n, v, s) { Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true}); } $parcel$export(module.exports, "setBrowserNamespace", () => $d3928351bb4a0237$export$47972b4b516318c6); $parcel$export(module.exports, "getCurrentTab", () => $d3928351bb4a0237$export$23fe9b5e06a2f955); $parcel$export(module.exports, "promback", () => $d3928351bb4a0237$export$f563f5bfeb72a90b); $parcel$export(module.exports, "goToTab", () => $d3928351bb4a0237$export$c73e2280af4fe8c5); const $d3928351bb4a0237$export$47972b4b516318c6 = ()=>{ if (!("browser" in self)) self.browser = self.chrome; }; const $d3928351bb4a0237$export$23fe9b5e06a2f955 = async ()=>{ const tabs = await browser.tabs.query({ active: true, currentWindow: true }); return tabs[0]; }; const $d3928351bb4a0237$export$f563f5bfeb72a90b = (func, args)=>{ return new Promise((resolve, reject)=>{ // Call the func with this promise's resolve as the callback. const p = func(...args, resolve); // Func returned a promise, resolve this func's promise with the data. typeof p.then === "function" && p.then((data)=>resolve(data)).catch((err)=>reject(err)); }); }; const $d3928351bb4a0237$export$c73e2280af4fe8c5 = async (url)=>{ const splitUrl = url.split("#"); const hashSegment = splitUrl[1] ? `#${splitUrl[1]}` : ""; const queryUrl = splitUrl[0]; const targetUrl = queryUrl + hashSegment // Isn't this just the same as the original url arg? ; const tabs = await browser.tabs.query({ url: queryUrl, currentWindow: true }); if (tabs.length) { await browser.tabs.update(tabs[0].id, { active: true, url: targetUrl }); return { result: "switched", tab: tabs[0] }; } else { const tab = await browser.tabs.create({ url: targetUrl }); await browser.windows.update(tab.windowId, { focussed: true }); return { result: "opened", tab: tab }; } }; $d3928351bb4a0237$export$47972b4b516318c6();