UNPKG

react-mana-symbols

Version:

React component library for rendering Magic: The Gathering mana symbols

112 lines (103 loc) 3.08 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var React = require('react'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var React__default = /*#__PURE__*/_interopDefaultLegacy(React); var parseManaSymbols = function (cost) { var regex = /{([^}]+)}/g; var symbols = []; var match; while ((match = regex.exec(cost)) !== null) { var symbol = match[1]; symbols.push(symbol); } return symbols; }; var validateManaSymbol = function (symbol) { var validSymbols = new Set([ 'W', 'U', 'B', 'R', 'G', 'C', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', 'X', '2/W', '2/U', '2/B', '2/R', '2/G', 'W/U', 'W/B', 'U/B', 'U/R', 'B/R', 'B/G', 'R/G', 'R/W', 'G/W', 'G/U', 'W/P', 'U/P', 'B/P', 'R/P', 'G/P', 'S', 'T', 'Q', 'E', ]); return validSymbols.has(symbol); }; var DEFAULT_SIZE$1 = 24; var ManaSymbol = function (_a) { var symbol = _a.symbol, _b = _a.size, size = _b === void 0 ? DEFAULT_SIZE$1 : _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('/', ''); try { // Dynamic import for the SVG component var SvgComponent = require("../assets/mana/".concat(symbolKey, ".svg")).default; return (React__default["default"].createElement(SvgComponent, { width: size, height: size, className: className, style: { display: 'inline-block', verticalAlign: 'middle', margin: '0 1px', }, "aria-label": "{".concat(symbol, "}") })); } catch (error) { console.warn("Failed to load mana symbol: ".concat(symbol), error); return null; } }; var DEFAULT_SIZE = 24; var ManaCost = function (_a) { var cost = _a.cost, _b = _a.size, size = _b === void 0 ? DEFAULT_SIZE : _b, _c = _a.className, className = _c === void 0 ? '' : _c; var symbols = parseManaSymbols(cost); return (React__default["default"].createElement("span", { className: className }, symbols.map(function (symbol, index) { return (React__default["default"].createElement(ManaSymbol, { key: "".concat(symbol, "-").concat(index), symbol: symbol, size: size, className: className })); }))); }; exports.ManaCost = ManaCost; exports.ManaSymbol = ManaSymbol; //# sourceMappingURL=index.js.map