summaryrefslogtreecommitdiffstats
path: root/devtools/client/debugger/src/components/shared/SourceIcon.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /devtools/client/debugger/src/components/shared/SourceIcon.js
parentInitial commit. (diff)
downloadfirefox-upstream.tar.xz
firefox-upstream.zip
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'devtools/client/debugger/src/components/shared/SourceIcon.js')
-rw-r--r--devtools/client/debugger/src/components/shared/SourceIcon.js65
1 files changed, 65 insertions, 0 deletions
diff --git a/devtools/client/debugger/src/components/shared/SourceIcon.js b/devtools/client/debugger/src/components/shared/SourceIcon.js
new file mode 100644
index 0000000000..25e88ea69d
--- /dev/null
+++ b/devtools/client/debugger/src/components/shared/SourceIcon.js
@@ -0,0 +1,65 @@
+/* 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/>. */
+
+// @flow
+
+import React, { PureComponent } from "react";
+
+import { connect } from "../../utils/connect";
+
+import AccessibleImage from "./AccessibleImage";
+
+import { getSourceClassnames, isPretty } from "../../utils/source";
+import { getFramework } from "../../utils/tabs";
+import { getSymbols, getTabs } from "../../selectors";
+
+import type { Source } from "../../types";
+import type { Symbols } from "../../reducers/types";
+
+import "./SourceIcon.css";
+
+type OwnProps = {|
+ source: Source,
+
+ // An additional validator for the icon returned
+ modifier?: string => string | null,
+|};
+type Props = {
+ source: Source,
+ modifier?: string => string | null,
+
+ // symbols will provide framework information
+ symbols: ?Symbols,
+ framework: ?string,
+};
+
+class SourceIcon extends PureComponent<Props> {
+ render() {
+ const { modifier, source, symbols, framework } = this.props;
+ let iconClass = "";
+
+ if (isPretty(source)) {
+ iconClass = "prettyPrint";
+ } else {
+ iconClass = framework
+ ? framework.toLowerCase()
+ : getSourceClassnames(source, symbols);
+ }
+
+ if (modifier) {
+ const modified = modifier(iconClass);
+ if (!modified) {
+ return null;
+ }
+ iconClass = modified;
+ }
+
+ return <AccessibleImage className={`source-icon ${iconClass}`} />;
+ }
+}
+
+export default connect<Props, OwnProps, _, _, _, _>((state, props) => ({
+ symbols: getSymbols(state, props.source),
+ framework: getFramework(getTabs(state), props.source.url),
+}))(SourceIcon);