import * as React from 'react';
// eslint-disable-next-line import/no-extraneous-dependencies
import { Source } from '@storybook/addon-docs/blocks';
import { makeStyles } from '@fluentui/react-make-styles';
const useCodeComparisonStyles = makeStyles({
root: {
display: 'flex',
justifyContent: 'space-between',
'> *': {
width: '100%',
},
'> :not(:last-child)': {
marginRight: '5%',
},
},
});
export const CodeComparison = (props: { children: React.ReactElement[] }) => {
const { children } = props;
const classes = useCodeComparisonStyles();
return
{children}
;
};
const codeLanguages = {
html: 'HTML',
css: 'CSS',
js: 'JavaScript',
jsx: 'React',
};
export const CodeExample = (props: { title?: string; children: React.ReactElement }) => {
const { title, children } = props;
// Access the raw values from the markdown source code block
const markdownCodeBlockValue: string | undefined = children?.props?.children?.props?.children;
if (markdownCodeBlockValue === undefined) {
return children;
}
const value: string = markdownCodeBlockValue.trim();
const codeBlockTag = '```';
// JSX source blocks are passed without the backticks
const language = (value.includes(codeBlockTag)
? value.substring(3, value.indexOf('\n'))
: 'jsx') as keyof typeof codeLanguages;
const code = value
.replace(codeBlockTag + language, '')
.replace(codeBlockTag, '')
.trim();
return (
{title ?? codeLanguages[language]}
);
};