1const
2 id = (elem) => document.getElementById(elem),
3 contextMenu = id('contextmenu'),
4 btnCopyHex = id('btnCopyHex'),
5 btnCopyB64 = id('btnCopyB64'),
6 btnCopyTree = id('btnCopyTree'),
7 btnCopyValue = id('btnCopyValue');
8
9export function bindContextMenu(node) {
10 const type = node.asn1.typeName();
11 const valueEnabled = type != 'SET' && type != 'SEQUENCE';
12 node.onclick = function (event) {
13 contextMenu.style.left = event.pageX + 'px';
14 contextMenu.style.top = event.pageY + 'px';
15 contextMenu.style.visibility = 'visible';
16 contextMenu.node = this;
17 btnCopyValue.style.display = valueEnabled ? 'block' : 'none';
18 event.stopPropagation();
19 };
20};
21
22function close() {
23 contextMenu.style.visibility = 'hidden';
24}
25
26contextMenu.onmouseleave = close;
27
28btnCopyHex.onclick = function (event) {
29 event.stopPropagation();
30 navigator.clipboard.writeText(contextMenu.node.asn1.toHexString('byte'));
31 close();
32};
33
34btnCopyB64.onclick = function (event) {
35 event.stopPropagation();
36 navigator.clipboard.writeText(contextMenu.node.asn1.toB64String());
37 close();
38};
39
40btnCopyTree.onclick = function (event) {
41 event.stopPropagation();
42 navigator.clipboard.writeText(contextMenu.node.asn1.toPrettyString());
43 close();
44};
45
46btnCopyValue.onclick = function (event) {
47 event.stopPropagation();
48 navigator.clipboard.writeText(contextMenu.node.asn1.content());
49 close();
50};