From 25d8cc3c731534681b9849762880f130a4f1d074 Mon Sep 17 00:00:00 2001 From: Pizzo15 Date: Mon, 1 Nov 2021 11:13:40 +0100 Subject: [PATCH 1/3] refactor: changed Output into a functional component w/ hooks --- src/components/Output/Output.js | 246 ++++++++++++++------------------ 1 file changed, 110 insertions(+), 136 deletions(-) diff --git a/src/components/Output/Output.js b/src/components/Output/Output.js index 30cacf5a..dff0f5c7 100644 --- a/src/components/Output/Output.js +++ b/src/components/Output/Output.js @@ -1,156 +1,130 @@ import { faPlay, faTerminal } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import React from 'react'; +import React, { useState, useEffect } from 'react'; import { Button } from 'reactstrap'; import { OUTPUT_ONLY } from '../../constants'; -import OpenPanelButtonContainer from '../common/containers/OpenPanelButtonContainer.js'; -import ViewportAwareButton from '../common/ViewportAwareButton.js'; -import EditorRadio from '../TextEditor/components/EditorRadio.js'; +import OpenPanelButtonContainer from '../common/containers/OpenPanelButtonContainer'; +import ViewportAwareButton from '../common/ViewportAwareButton'; +import EditorRadio from '../TextEditor/components/EditorRadio'; /** --------Props-------- * None */ -class Output extends React.Component { - constructor(props) { - super(props); - this.state = { - // used for the refresh button - counter: 0, - run: 0, - showConsole: true, +const Output = React.memo( + ({ + viewMode, + viewOnly, + screenHeight, + vLanguage, + language, + code, + runResult, + updateViewMode, + isSmall, + }) => { + const [counter, setCounter] = useState(0); + const [run, setRun] = useState(0); + const [showConsole, setShowConsole] = useState(true); + const [firstLoad, setFirstLoad] = useState(true); + + useEffect(() => { + setFirstLoad(false); + }, []); + + const renderOpenPanelButton = () => viewMode === OUTPUT_ONLY && ; + + const renderIframe = (getSrcDoc) => { + // check if getsrcdoc is a function + if (!getSrcDoc && {}.toString.call(getSrcDoc) === '[object Function]') { + // console.log('Null src doc function found'); + return null; + } + + return ( +