@@ -6,6 +6,7 @@ import { themes } from "prism-react-renderer";
66type ProviderState = {
77 element ?: ComponentType | null ;
88 error ?: string ;
9+ newCode ?: string ;
910} ;
1011
1112type Props = {
@@ -37,7 +38,11 @@ function LiveProvider({
3738
3839 async function transpileAsync ( newCode : string ) {
3940 const errorCallback = ( error : Error ) => {
40- setState ( { error : error . toString ( ) , element : undefined } ) ;
41+ setState ( ( previousState ) => ( {
42+ ...previousState ,
43+ error : error . toString ( ) ,
44+ element : undefined ,
45+ } ) ) ;
4146 } ;
4247
4348 // - transformCode may be synchronous or asynchronous.
@@ -51,7 +56,7 @@ function LiveProvider({
5156 try {
5257 const transformedCode = await Promise . resolve ( transformResult ) ;
5358 const renderElement = ( element : ComponentType ) =>
54- setState ( { error : undefined , element } ) ;
59+ setState ( { error : undefined , element, newCode } ) ;
5560
5661 if ( typeof transformedCode !== "string" ) {
5762 throw new Error ( "Code failed to transform" ) ;
@@ -65,7 +70,11 @@ function LiveProvider({
6570 } ;
6671
6772 if ( noInline ) {
68- setState ( { error : undefined , element : null } ) ; // Reset output for async (no inline) evaluation
73+ setState ( ( previousState ) => ( {
74+ ...previousState ,
75+ error : undefined ,
76+ element : null ,
77+ } ) ) ; // Reset output for async (no inline) evaluation
6978 renderElementAsync ( input , renderElement , errorCallback ) ;
7079 } else {
7180 renderElement ( generateElement ( input , errorCallback ) ) ;
0 commit comments