react-mana-symbols
Version:
React component library for rendering Magic: The Gathering mana symbols
31 lines (28 loc) • 1.28 kB
JavaScript
import React, { Suspense } from 'react';
import { validateManaSymbol } from '../utils.js';
var DEFAULT_SIZE = 24;
var importSvg = function (symbolKey) {
return React.lazy(function () {
return import("../assets/mana/".concat(symbolKey, ".svg")).catch(function (error) {
console.warn("Failed to load mana symbol: ".concat(symbolKey), error);
return { default: function () { return null; } };
});
});
};
var ManaSymbol = function (_a) {
var symbol = _a.symbol, _b = _a.size, size = _b === void 0 ? DEFAULT_SIZE : _b, _c = _a.className, className = _c === void 0 ? '' : _c;
if (!validateManaSymbol(symbol)) {
console.warn("Invalid mana symbol: ".concat(symbol));
return null;
}
var symbolKey = symbol.toLowerCase().replace('/', '');
var SvgComponent = importSvg(symbolKey);
return (React.createElement(Suspense, { fallback: null },
React.createElement(SvgComponent, { width: size, height: size, className: className, style: {
display: 'inline-block',
verticalAlign: 'middle',
margin: '0 1px',
}, "aria-label": "{".concat(symbol, "}") })));
};
export { ManaSymbol };
//# sourceMappingURL=ManaSymbol.js.map