import React from 'react'; import { HStack, Box, Divider } from '../../index'; import { CodeBlock } from '../CodeBlock'; import ArgsController from './ArgsController'; import { CodePreviewProvider } from './CodePreviewProvider'; import ComponentRenderer from './ComponentRenderer'; // const prettier = require('prettier'); const genrateProp = (prop: any, props: any) => { const type = props[prop].control; const defaultValue = props[prop].default; if (type === 'input') { return defaultValue ? `${prop}="${defaultValue}"` : `${prop}=''`; } else if (type === 'boolean') { return defaultValue ? `${prop}={true}` : `${prop}={false}`; } return defaultValue ? `${prop}="${defaultValue}"` : `${prop}=''`; }; const genratePropsString = (props: any) => { let propsString = ''; Object.keys(props).map((prop: any) => { propsString += genrateProp(prop, props) + ' '; }); if (propsString === '') { propsString = '{...props}'; } return propsString; }; const CodePreview = ({ metaData, showArgsController = true, showCodeBlock = true, showComponentRenderer = true, language, rendererProps, codeBlockProps, argsControllerProps, direction = 'column', href, showExternalResource, _container, _rendererWrapper, ...props }: any) => { const [previewMetaData, setPreviewMetaData] = React.useState(metaData); const [propsString, setPropsString] = React.useState( genratePropsString(metaData?.argsType ?? '') ); const updateMetaData = (data: any) => setPreviewMetaData(data); const updatePropsString = (txt: any) => setPropsString(txt); return ( <> {(showArgsController || showComponentRenderer) && ( {showComponentRenderer && ( )} {(showComponentRenderer && showArgsController) || direction === 'row' ? ( ) : null} {showArgsController && ( )} )} {(showArgsController || showComponentRenderer) && direction !== 'row' && ( )} {showCodeBlock && ( )} ); }; export default CodePreview;