You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
966 B

/** @jsx jsx */
import { useEffect } from 'react';
import { Global, jsx } from '@emotion/core';
import { useTranslation } from 'react-i18next';
import Layout from './components/layout';
import { UIProvider } from './store/ui';
import { SchemaProvider } from './store/schema';
import globalStyles from './utils/styles/global';
import { SchemaState } from './model';
import './utils/styles/antd';
import './i18n';
interface EditorProps {
lang?: string;
data: SchemaState;
onChange: (value: SchemaState) => void;
}
function JsonSchemaEditor({ lang, data, onChange }: EditorProps): JSX.Element {
const { i18n } = useTranslation();
useEffect(() => {
if (!lang) return;
i18n.changeLanguage(lang);
}, [i18n, lang]);
return (
<UIProvider>
<SchemaProvider initialData={data}>
<Global styles={globalStyles} />
<Layout onChange={onChange} />
</SchemaProvider>
</UIProvider>
);
}
export default JsonSchemaEditor;