choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
76 lines (54 loc) • 2.2 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.formatReactTemplate = formatReactTemplate;
exports["default"] = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireWildcard(require("react"));
var _stringTemplate = _interopRequireDefault(require("string-template"));
var _isString = _interopRequireDefault(require("lodash/isString"));
var _isNil = _interopRequireDefault(require("lodash/isNil"));
var _flatMap = _interopRequireDefault(require("lodash/flatMap"));
function formatReactTemplate(template, map) {
var result = [template];
Object.keys(map).forEach(function (key) {
var node = map[key];
if (!(0, _isNil["default"])(node)) {
result = (0, _flatMap["default"])(result, function (text) {
if ((0, _isString["default"])(text)) {
var stringText = text;
if ((0, _react.isValidElement)(node)) {
var placeholder = "{".concat(key, "}");
var length = placeholder.length;
var textArr = [];
var index = stringText.indexOf(placeholder);
while (index > -1) {
if (index > 0) {
textArr.push(stringText.slice(0, index));
}
textArr.push(node);
stringText = stringText.slice(index + length);
index = stringText.indexOf(placeholder);
}
if (stringText) {
textArr.push(stringText);
}
return textArr;
}
return (0, _stringTemplate["default"])(text, (0, _defineProperty2["default"])({}, key, node));
}
return text;
});
}
});
if (result.every(_isString["default"])) {
return result.join('');
}
return _react["default"].createElement(_react["default"].Fragment, null, result);
}
var _default = formatReactTemplate;
exports["default"] = _default;
//# sourceMappingURL=formatReactTemplate.js.map