import { CDataTag } from '../../components/CDataTag'; import { CommentTag } from '../../components/CommentTag'; import { DeclarationTag } from '../../components/DeclarationTag'; import { Tag } from '../../components/Tag'; import { TextElement } from '../../components/TextElement'; import { ATTRIBUTE_CDATA, ATTRIBUTE_COMMENT, ATTRIBUTE_TEXT, DECLARATION_TAG } from '../../constants'; import { useXMLViewerContext } from '../../context/xml-viewer-context'; import { getIndentationString, getTagProps, isInlineTextElement } from '../../helpers'; import { Element } from '../../types'; export interface ElementsProps { elements: Element[]; level?: number; isText?: boolean; } export function Elements(props: ElementsProps) { const { elements, level = 0, isText = true } = props; const { indentSize } = useXMLViewerContext(); if (!Array.isArray(elements) || elements.length === 0) { return null; } return ( <> {elements.map((element, index) => { const { tagKey, attributes, subElements, type } = getTagProps(element); const hasSiblings = elements.length > 1; const indentation = getIndentationString(indentSize, level); const key = `${level}-${index}`; const isInline = isInlineTextElement(subElements); switch (type) { case ATTRIBUTE_TEXT: return ( ); case ATTRIBUTE_COMMENT: return ( ); case ATTRIBUTE_CDATA: return ( ); case DECLARATION_TAG: return ( ); default: return ( 0} level={level} > ); } })} ); }