@aliretail/react-materials-components
Version:
49 lines (45 loc) • 1.3 kB
JavaScript
import { Fragment } from 'react';
var VALID_TYPES = [];
var nameFlag = Symbol["for"]('layoutComponentName');
var areaFlag = Symbol["for"]('layoutComponentArea');
export function isLayoutComponent(Type) {
return !!Type[nameFlag];
}
export function getValidTypes() {
return VALID_TYPES;
}
export function addComponent(name, Type) {
Type[nameFlag] = name;
VALID_TYPES.push(Type);
}
export function area(areaType) {
return function (constructor) {
constructor[areaFlag] = areaType;
};
}
export function layout(name, areaType) {
if (areaType === void 0) {
areaType = 'content';
}
return function (constructor) {
constructor[areaFlag] = areaType;
addComponent(name, constructor);
};
}
export function getElementType(ele) {
var Comp = ele === null || ele === void 0 ? void 0 : ele.type;
if (Comp) {
return Comp[nameFlag];
}
}
export function getElementArea(ele) {
var Comp = ele === null || ele === void 0 ? void 0 : ele.type;
if (Comp) {
return Comp[areaFlag];
}
}
export 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 : Fragment;
}