@antv/f2
Version:
Charts for mobile visualization.
50 lines (49 loc) • 1.77 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _children = _interopRequireDefault(require("../children"));
// 主要是把function节点,全部转换成string标签节点
function renderJSXElement(element, context, updater) {
if (!element) return element;
var _element = element,
type = _element.type,
key = _element.key,
ref = _element.ref,
props = _element.props,
_element$_cache = _element._cache,
_cache = _element$_cache === void 0 ? {} : _element$_cache;
// render children first
var children = _children.default.map(props.children, function (child) {
return renderJSXElement(child, context, updater);
});
element = {
type: type,
key: key,
ref: ref,
_cache: _cache,
props: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
children: children
})
};
if (typeof type === 'function') {
// @ts-ignore
var newElement = type(element.props, context, updater);
if (!newElement) return newElement;
// recursive render until type is string
return renderJSXElement((0, _objectSpread2.default)((0, _objectSpread2.default)({}, newElement), {}, {
// 保留原始的key和ref
key: key !== undefined ? key : newElement.key,
ref: ref !== undefined ? ref : newElement.ref
}), context, updater);
}
// return element if type is string
return element;
}
var _default = function _default(element, context, updater) {
return renderJSXElement(element, context, updater);
};
exports.default = _default;
;