summaryrefslogtreecommitdiffstats
path: root/devtools/client/inspector/markup/components
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /devtools/client/inspector/markup/components
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'devtools/client/inspector/markup/components')
-rw-r--r--devtools/client/inspector/markup/components/TextNode.js88
-rw-r--r--devtools/client/inspector/markup/components/moz.build9
2 files changed, 97 insertions, 0 deletions
diff --git a/devtools/client/inspector/markup/components/TextNode.js b/devtools/client/inspector/markup/components/TextNode.js
new file mode 100644
index 0000000000..1cb88f2538
--- /dev/null
+++ b/devtools/client/inspector/markup/components/TextNode.js
@@ -0,0 +1,88 @@
+/* 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 {
+ createElement,
+ createRef,
+ Fragment,
+ PureComponent,
+} = require("resource://devtools/client/shared/vendor/react.js");
+const dom = require("resource://devtools/client/shared/vendor/react-dom-factories.js");
+const PropTypes = require("resource://devtools/client/shared/vendor/react-prop-types.js");
+const {
+ editableItem,
+} = require("resource://devtools/client/shared/inplace-editor.js");
+
+const {
+ getStr,
+ getFormatStr,
+} = require("resource://devtools/client/inspector/markup/utils/l10n.js");
+
+class TextNode extends PureComponent {
+ static get propTypes() {
+ return {
+ showTextEditor: PropTypes.func.isRequired,
+ type: PropTypes.string.isRequired,
+ value: PropTypes.string.isRequired,
+ };
+ }
+
+ constructor(props) {
+ super(props);
+
+ this.state = {
+ value: this.props.value,
+ };
+
+ this.valuePreRef = createRef();
+ }
+
+ componentDidMount() {
+ editableItem(
+ {
+ element: this.valuePreRef.current,
+ trigger: "dblclick",
+ },
+ element => {
+ this.props.showTextEditor(element);
+ }
+ );
+ }
+
+ render() {
+ const { value } = this.state;
+ const isComment = this.props.type === "comment";
+ const isWhiteSpace = !/[^\s]/.exec(value);
+
+ return createElement(
+ Fragment,
+ null,
+ isComment ? dom.span({}, "<!--") : null,
+ dom.pre(
+ {
+ className: isWhiteSpace ? "whitespace" : "",
+ ref: this.valuePreRef,
+ style: {
+ display: "inline-block",
+ whiteSpace: "normal",
+ },
+ tabIndex: -1,
+ title: isWhiteSpace
+ ? getFormatStr(
+ "markupView.whitespaceOnly",
+ value.replace(/\n/g, "⏎").replace(/\t/g, "⇥").replace(/ /g, "◦")
+ )
+ : "",
+ "data-label": getStr("markupView.whitespaceOnly.label"),
+ },
+ value
+ ),
+ isComment ? dom.span({}, "-->") : null
+ );
+ }
+}
+
+module.exports = TextNode;
diff --git a/devtools/client/inspector/markup/components/moz.build b/devtools/client/inspector/markup/components/moz.build
new file mode 100644
index 0000000000..13e4ee411d
--- /dev/null
+++ b/devtools/client/inspector/markup/components/moz.build
@@ -0,0 +1,9 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# 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/.
+
+DevToolsModules(
+ "TextNode.js",
+)