attributes-kit
Version:
React component for MSON rendering
143 lines (110 loc) • 2.31 kB
JavaScript
import isString from 'lodash/isString';
import TYPES from '../types';
function isMember(element) {
if (!element) {
return false;
}
if (element.element) {
return element.element === TYPES.MEMBER;
}
return element === TYPES.MEMBER;
}
function getValueType({ element, content }) {
if (isMember(element)) {
return content.value.element;
}
return element;
}
function getType(element) {
if (isMember(element.element)) {
return getValueType(element);
}
return element.element;
}
function isObject(element) {
if (!element) {
return false;
}
if (isString(element)) {
return element === TYPES.OBJECT;
}
if (element.element) {
return getType(element) === TYPES.OBJECT;
}
return false;
}
function isArray(element) {
if (!element) {
return false;
}
if (isString(element)) {
return element === TYPES.ARRAY;
}
if (element.element) {
return getType(element) === TYPES.ARRAY;
}
return false;
}
function isEnum(element) {
if (!element) {
return false;
}
if (isString(element)) {
return element === TYPES.ENUM;
}
if (element.element) {
return getType(element) === TYPES.ENUM;
}
return false;
}
function isSelect(element) {
if (!element) {
return false;
}
if (isString(element)) {
return element === TYPES.SELECT;
}
if (element.element) {
return getType(element) === TYPES.SELECT;
}
return false;
}
function isObjectOrArray(element) {
return isObject(element) || isArray(element);
}
function isObjectOrArrayOrEnum(element) {
return isObject(element) || isArray(element) || isEnum(element);
}
function hasSamples(element) {
const attributes = element.attributes;
if (attributes) {
return !!attributes.samples;
}
return false;
}
function hasDescription(element) {
if (element.meta) {
if (element.meta.description) {
return true;
}
}
return false;
}
function isLastArrayItem(arrayElement, currentArrayItemIndex) {
const numberOfArrayItems = arrayElement.content.length;
return (numberOfArrayItems - 1) === currentArrayItemIndex;
}
export {
getType,
getValueType,
hasDescription,
hasSamples,
isArray,
isEnum,
isLastArrayItem,
isMember,
isObject,
isObjectOrArray,
isObjectOrArrayOrEnum,
isSelect,
};