import { observer } from 'mobx-react'; import * as React from 'react'; import { AdvancedMarkdown } from '../Markdown/AdvancedMarkdown'; import { H1, H2, MiddlePanel, Row, Section, ShareLink } from '../../common-elements'; import { MDXComponentMeta } from '../../services/MarkdownRenderer'; import { ContentItemModel } from '../../services/MenuBuilder'; import { GroupModel, OperationModel } from '../../services/models'; import { Operation } from '../Operation/Operation'; import { SecurityDefs } from '../SecuritySchemes/SecuritySchemes'; const DEFAULT_ALLOWED_COMPONENTS = { 'security-definitions': { component: SecurityDefs, propsSelector: _store => ({ securitySchemes: _store!.spec.securitySchemes, }), }, }; @observer export class ContentItems extends React.Component<{ items: ContentItemModel[]; allowedMdComponents?: Dict; }> { static defaultProps = { allowedMdComponents: DEFAULT_ALLOWED_COMPONENTS, }; render() { const items = this.props.items; if (items.length === 0) { return null; } return items.map(item => ( )); } } export interface ContentItemProps { item: ContentItemModel; allowedMdComponents: Dict; } @observer export class ContentItem extends React.Component { render() { const item = this.props.item; let content; const { type } = item; switch (type) { case 'group': content = null; break; case 'tag': content = ; break; case 'section': content = ; break; case 'operation': content = ; break; default: throw new Error('Unknown item type'); } return ( <>
{content}
{item.items && ( )} ); } } const middlePanelWrap = component => {component}; @observer export class SectionItem extends React.Component { render() { const { name, description, level } = this.props.item as GroupModel; const { allowedMdComponents } = this.props; const Header = level === 2 ? H2 : H1; return ( <>
{name}
); } } @observer export class OperationItem extends React.Component<{ item: OperationModel; }> { render() { return ; } }