-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcontent.js
50 lines (38 loc) · 1.25 KB
/
content.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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
const popup = document.createElement('div');
popup.id = 'pupa-and-lupa_popup';
popup.textContent = 'open in pupa';
popup.style.border = '1px solid gray';
popup.style.borderRadius = '16px';
popup.style.padding = ' 8px 16px';
popup.style.fontFamily = 'monospace';
popup.style.fontSize = '16px';
popup.style.color = 'gray';
popup.style.backgroundColor = 'white';
popup.style.position = 'fixed';
popup.style.zIndex = '9999';
popup.style.display = 'none';
popup.style.cursor = 'pointer';
let selectedText = '';
popup.addEventListener('click', () => {
const appUrl = `https://pupa-and-lupa.web.app/home/${encodeURI(selectedText)}`;
window.open(appUrl, '_blank');
popup.style.display = 'none';
});
document.body.appendChild(popup);
document.addEventListener('mousedown', (e) => {
if (e.target !== popup) {
popup.style.display = 'none';
}
});
document.addEventListener('mouseup', (e) => {
const selection = window.getSelection().toString().trim();
if (selection) {
selectedText = selection;
const rect = document.body.getBoundingClientRect();
const x = e.clientX - rect.left;
const y = e.clientY - rect.top;
popup.style.top = `${y - popup.offsetHeight - 5}px`;
popup.style.left = `${x + 5}px`;
popup.style.display = 'block';
}
});