modules_core/tabs.jsView |
---|
1 | 1 … | const Tabs = require('hypertabs') |
2 | 2 … | const h = require('../h') |
3 | 3 … | const keyscroll = require('../keyscroll') |
4 | 4 … | const open = require('open-external') |
5 | | -const { webFrame, remote } = require('electron') |
| 5 … | +const { webFrame, remote, clipboard } = require('electron') |
6 | 6 … | |
7 | | -function ancestor (el) { |
8 | | - if(!el) return |
9 | | - if(el.tagName !== 'A') return ancestor(el.parentElement) |
10 | | - return el |
11 | | -} |
12 | | - |
13 | 7 … | exports.needs = { |
14 | 8 … | build_error: 'first', |
15 | 9 … | build_scroller: 'first', |
16 | 10 … | screen_view: 'first', |
79 | 73 … | search.input.value = null |
80 | 74 … | |
81 | 75 … | |
82 | 76 … | window.onclick = function (ev) { |
83 | | - var link = ancestor(ev.target) |
| 77 … | + var link = ancestorAnchor(ev.target) |
84 | 78 … | if(!link) return |
85 | 79 … | var path = link.hash.substring(1) |
86 | 80 … | |
87 | 81 … | ev.preventDefault() |
222 | 216 … | click: () => { |
223 | 217 … | remote.getCurrentWindow().inspectElement(ev.x, ev.y) |
224 | 218 … | } |
225 | 219 … | })) |
| 220 … | + |
| 221 … | + var message = ancestorMessage(ev.target) |
| 222 … | + if (message && message.dataset.key) { |
| 223 … | + menu.append(new MenuItem({ |
| 224 … | + label: 'Copy id', |
| 225 … | + click: () => clipboard.writeText(message.dataset.key) |
| 226 … | + })) |
| 227 … | + } |
| 228 … | + if (message && message.dataset.text) { |
| 229 … | + menu.append(new MenuItem({ |
| 230 … | + label: 'Copy text', |
| 231 … | + click: () => clipboard.writeText(message.dataset.text) |
| 232 … | + })) |
| 233 … | + } |
226 | 234 … | menu.popup(remote.getCurrentWindow()) |
227 | 235 … | }) |
228 | 236 … | } |
229 | 237 … | |
230 | 238 … | return tabs |
231 | 239 … | } |
| 240 … | +} |
232 | 241 … | |
| 242 … | +function ancestorAnchor (el) { |
| 243 … | + if(!el) return |
| 244 … | + if(el.tagName !== 'A') return ancestorAnchor(el.parentElement) |
| 245 … | + return el |
233 | 246 … | } |
| 247 … | + |
| 248 … | +function ancestorMessage (el) { |
| 249 … | + if(!el) return |
| 250 … | + if(!el.classList.contains('Message')) { |
| 251 … | + if (el.parentElement) |
| 252 … | + return ancestorMessage(el.parentElement) |
| 253 … | + else |
| 254 … | + return null |
| 255 … | + } |
| 256 … | + return el |
| 257 … | +} |
| 258 … | + |