BrowserIcon.js (2155B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 "use strict"; 6 7 const { 8 PureComponent, 9 } = require("resource://devtools/client/shared/vendor/react.mjs"); 10 const dom = require("resource://devtools/client/shared/vendor/react-dom-factories.js"); 11 const PropTypes = require("resource://devtools/client/shared/vendor/react-prop-types.mjs"); 12 13 const Types = require("resource://devtools/client/inspector/compatibility/types.js"); 14 15 const ICONS = { 16 firefox: { 17 src: "chrome://devtools/skin/images/browsers/firefox.svg", 18 isMobileIconNeeded: false, 19 }, 20 firefox_android: { 21 src: "chrome://devtools/skin/images/browsers/firefox.svg", 22 isMobileIconNeeded: true, 23 }, 24 chrome: { 25 src: "chrome://devtools/skin/images/browsers/chrome.svg", 26 isMobileIconNeeded: false, 27 }, 28 chrome_android: { 29 src: "chrome://devtools/skin/images/browsers/chrome.svg", 30 isMobileIconNeeded: true, 31 }, 32 safari: { 33 src: "chrome://devtools/skin/images/browsers/safari.svg", 34 isMobileIconNeeded: false, 35 }, 36 safari_ios: { 37 src: "chrome://devtools/skin/images/browsers/safari.svg", 38 isMobileIconNeeded: true, 39 }, 40 edge: { 41 src: "chrome://devtools/skin/images/browsers/edge.svg", 42 isMobileIconNeeded: false, 43 }, 44 ie: { 45 src: "chrome://devtools/skin/images/browsers/ie.svg", 46 isMobileIconNeeded: false, 47 }, 48 }; 49 50 class BrowserIcon extends PureComponent { 51 static get propTypes() { 52 return { 53 id: Types.browser.id, 54 title: PropTypes.string, 55 name: PropTypes.string, 56 }; 57 } 58 59 render() { 60 const { id, name, title } = this.props; 61 62 const icon = ICONS[id]; 63 64 return dom.span( 65 { 66 className: 67 "compatibility-browser-icon" + 68 (icon.isMobileIconNeeded 69 ? " compatibility-browser-icon--mobile" 70 : ""), 71 }, 72 dom.img({ 73 className: "compatibility-browser-icon__image", 74 alt: name || title, 75 title, 76 src: icon.src, 77 }) 78 ); 79 } 80 } 81 82 module.exports = BrowserIcon;