igroot
Version:
An React-based implementation
58 lines (50 loc) • 1.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.svgBaseProps = undefined;
var _defineProperty2 = require("babel-runtime/helpers/defineProperty");
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
exports.getThemeFromTypeName = getThemeFromTypeName;
exports.removeTypeTheme = removeTypeTheme;
exports.withThemeSuffix = withThemeSuffix;
var _warning = require("../_util/warning");
var _warning2 = _interopRequireDefault(_warning);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
// These props make sure that the SVG behaviours like general text.
// Reference: https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4
var svgBaseProps = exports.svgBaseProps = (0, _defineProperty3["default"])({
width: "1em",
height: "1em",
fill: "currentColor"
}, "aria-hidden", "true");
var fillTester = /-fill$/;
var outlineTester = /-o$/;
var twoToneTester = /-twotone$/;
function getThemeFromTypeName(type) {
var result = null;
if (fillTester.test(type)) {
result = "filled";
} else if (outlineTester.test(type)) {
result = "outlined";
} else if (twoToneTester.test(type)) {
result = "twoTone";
}
return result;
}
function removeTypeTheme(type) {
return type.replace(fillTester, "").replace(outlineTester, "").replace(twoToneTester, "");
}
function withThemeSuffix(type, theme) {
var result = type;
if (theme === "filled") {
result += "-fill";
} else if (theme === "outlined") {
result += "-o";
} else if (theme === "twoTone") {
result += "-twotone";
} else {
(0, _warning2["default"])(false, "This icon '" + type + "' has unknown theme '" + theme + "'");
}
return result;
}