blob: 009abd5af06943f1503bc3e22813595b6406cac5 (
plain)
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
const nodeConstants = require("resource://devtools/shared/dom-node-constants.js");
/**
* Creates an editor for non-editable nodes.
*/
function ReadOnlyEditor(container, node) {
this.container = container;
this.markup = this.container.markup;
this.buildMarkup();
if (node.isPseudoElement) {
this.tag.classList.add("theme-fg-color3");
if (node.isMarkerPseudoElement) {
this.tag.textContent = "::marker";
} else if (node.isBeforePseudoElement) {
this.tag.textContent = "::before";
} else if (node.isAfterPseudoElement) {
this.tag.textContent = "::after";
}
} else if (node.nodeType == nodeConstants.DOCUMENT_TYPE_NODE) {
this.elt.classList.add("comment", "doctype");
this.tag.textContent = node.doctypeString;
} else if (node.isShadowRoot) {
this.tag.textContent = `#shadow-root (${node.shadowRootMode})`;
} else {
this.tag.textContent = node.nodeName;
}
// Make the "tag" part of this editor focusable.
this.tag.setAttribute("tabindex", "-1");
}
ReadOnlyEditor.prototype = {
buildMarkup() {
const doc = this.markup.doc;
this.elt = doc.createElement("span");
this.elt.classList.add("editor");
this.tag = doc.createElement("span");
this.tag.classList.add("tag");
this.elt.appendChild(this.tag);
},
destroy() {
// We might be already destroyed.
if (!this.elt) {
return;
}
this.elt.remove();
this.elt = null;
this.tag = null;
},
/**
* Show overflow highlight if showOverflowHighlight is true, otherwise hide it.
*
* @param {Boolean} showOverflowHighlight
*/
setOverflowHighlight(showOverflowHighlight) {
this.container.tagState.classList.toggle(
"overflow-causing-highlighted",
showOverflowHighlight
);
},
/**
* Stub method for consistency with ElementEditor.
*/
getInfoAtNode() {
return null;
},
};
module.exports = ReadOnlyEditor;
|