Home Reference Source Test

src/EditorContainer.js

// @flow
import React from 'react';
import {useDispatch, useSelector} from 'react-redux';
import {useNavigate} from 'react-router-dom';
import fromEntries from 'fromentries';
import SqlEditor from './SqlEditor';
import {exprFromSql} from './modules/relexp';
import {resetAction} from './modules/data';

import type {StatelessFunctionalComponent} from 'react';

import type {State} from './modules/data';

type Props = {};

const EditorContainer: StatelessFunctionalComponent<Props> = (props) => {
  const types = useSelector<{data: State}, _>((state) =>
    fromEntries(
      Object.entries(state.data.sourceData).map(([name, data]) => [
        name,
        data != null && typeof data === 'object' ? data.columns : [],
      ])
    )
  );
  const dispatch = useDispatch();
  const navigate = useNavigate();

  return (
    <SqlEditor
      navigate={navigate}
      defaultText="SELECT * FROM Doctor"
      exprFromSql={(sql, types) => dispatch(exprFromSql(sql, types))}
      resetAction={() => dispatch(resetAction())}
      types={types}
    />
  );
};

export default EditorContainer;