diff --git a/src/components/CodeOutput/CodeOutput.css b/src/components/CodeOutput/CodeOutput.css new file mode 100644 index 0000000..e69de29 diff --git a/src/components/CodeOutput/CodeOutput.tsx b/src/components/CodeOutput/CodeOutput.tsx new file mode 100644 index 0000000..19fa43b --- /dev/null +++ b/src/components/CodeOutput/CodeOutput.tsx @@ -0,0 +1,40 @@ +import React from "react"; +import { connect } from "react-redux"; +import * as ts from "typescript"; + +import { AppState } from "../../store"; + +interface CodeOutputProps { + sourceFile?: ts.SourceFile; +} + +function CodeOutput(props: CodeOutputProps) { + const { sourceFile } = props; + if (sourceFile === undefined) { + return null; + } + + const printer = ts.createPrinter(); + const codeString = printer.printFile(sourceFile); + + return
{codeString}
; +} + +type CodeOutputStateProps = CodeOutputProps; + +const mapStateToPropsForInitial = (state: AppState): CodeOutputStateProps => ({ + sourceFile: state.sourceFiles.inititalSourceFile +}); +const mapStateToPropsForCurrent = (state: AppState): CodeOutputStateProps => ({ + sourceFile: state.sourceFiles.currentSourceFile +}); + +const CodeOutputForInitial = connect(mapStateToPropsForInitial)(CodeOutput); +const CodeOutputForCurrent = connect(mapStateToPropsForCurrent)(CodeOutput); + +export { + CodeOutputForInitial, + CodeOutputForCurrent, + CodeOutput as CodeOutputUnconnected, + CodeOutputProps +}; diff --git a/src/components/CodeOutput/index.tsx b/src/components/CodeOutput/index.tsx new file mode 100644 index 0000000..ed0ae32 --- /dev/null +++ b/src/components/CodeOutput/index.tsx @@ -0,0 +1 @@ +export * from "./CodeOutput";