UNPKG

@aliretail/react-materials-components

Version:
49 lines (45 loc) 1.3 kB
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; }