export function ExportScriptFlyout()

in src/components/ExportScriptFlyout/Flyout.tsx [45:76]


export function ExportScriptFlyout({ setVisible, steps }: IExportScriptFlyout) {
  const [code, setCode] = useState('');
  const { electronAPI } = useContext(CommunicationContext);
  const [exportAsProject, setExportAsProject] = useState(false);

  const type: JourneyType = exportAsProject ? 'project' : 'inline';

  const maxLineSize = useMemo(
    // get max line size in code string
    () => code.split('\n').reduce((prev, cur) => Math.max(prev, cur.length), 0),
    [code]
  );

  useEffect(() => {
    (async function getCode() {
      const codeFromActions = await getCodeFromActions(electronAPI, steps, type);
      setCode(codeFromActions);
    })();
  }, [electronAPI, steps, setCode, type]);

  return (
    <EuiFlyout
      aria-labelledby={FLYOUT_ID}
      onClose={() => setVisible(false)}
      size={maxLineSize > LARGE_FLYOUT_SIZE_LINE_LENGTH ? 'l' : 'm'}
    >
      <Header headerText="Journey code" id={FLYOUT_ID} />
      <Body code={code} exportAsProject={exportAsProject} setExportAsProject={setExportAsProject} />
      <Footer setVisible={setVisible} type={type} />
    </EuiFlyout>
  );
}