-
Notifications
You must be signed in to change notification settings - Fork 1
/
background.js
35 lines (33 loc) · 1.05 KB
/
background.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
const notionUrl = /(https:\/\/www\.notion\.so\/)(.*#)(.*)/;
const notionBlockUrlToGlobal = (url) => {
const m = url.match(notionUrl);
return m ? `${m[1]}${m[3]}` : null;
};
function getClipboardText() {
document.body.innerHTML = "";
const textTarget = document.createElement("input");
document.body.appendChild(textTarget);
textTarget.focus();
document.execCommand("paste");
const text = textTarget.value;
document.body.removeChild(textTarget);
return text;
}
chrome.runtime.onMessage.addListener((msg) => {
if (msg === "copy") {
chrome.contextMenus.removeAll();
const text = getClipboardText();
const globalBlockUrl = notionBlockUrlToGlobal(text);
if (globalBlockUrl) {
chrome.contextMenus.create({
id: "PASTE_NOTION_GLOBAL_BLOCK_URL",
title: "Paste Global Block URL",
contexts: ["editable"],
documentUrlPatterns: ["https://*.notion.so/*"],
});
chrome.contextMenus.onClicked.addListener((_, tab) => {
chrome.tabs.sendMessage(tab.id, globalBlockUrl);
});
}
}
});