@aliretail/react-materials-components
Version:
70 lines (55 loc) • 1.59 kB
JavaScript
;
exports.__esModule = true;
exports.addComponent = addComponent;
exports.area = area;
exports.getElementArea = getElementArea;
exports.getElementType = getElementType;
exports.getElementWrapper = getElementWrapper;
exports.getValidTypes = getValidTypes;
exports.isLayoutComponent = isLayoutComponent;
exports.layout = layout;
var _react = require("react");
var VALID_TYPES = [];
var nameFlag = Symbol["for"]('layoutComponentName');
var areaFlag = Symbol["for"]('layoutComponentArea');
function isLayoutComponent(Type) {
return !!Type[nameFlag];
}
function getValidTypes() {
return VALID_TYPES;
}
function addComponent(name, Type) {
Type[nameFlag] = name;
VALID_TYPES.push(Type);
}
function area(areaType) {
return function (constructor) {
constructor[areaFlag] = areaType;
};
}
function layout(name, areaType) {
if (areaType === void 0) {
areaType = 'content';
}
return function (constructor) {
constructor[areaFlag] = areaType;
addComponent(name, constructor);
};
}
function getElementType(ele) {
var Comp = ele === null || ele === void 0 ? void 0 : ele.type;
if (Comp) {
return Comp[nameFlag];
}
}
function getElementArea(ele) {
var Comp = ele === null || ele === void 0 ? void 0 : ele.type;
if (Comp) {
return Comp[areaFlag];
}
}
function getElementWrapper(ele) {
var _Comp$Wrapper;
var Comp = ele === null || ele === void 0 ? void 0 : ele.type;
return (_Comp$Wrapper = Comp === null || Comp === void 0 ? void 0 : Comp.Wrapper) !== null && _Comp$Wrapper !== void 0 ? _Comp$Wrapper : _react.Fragment;
}