@@ -758,7 +758,30 @@ export class YCodeCell
758758 * Execution, display, or stream outputs.
759759 */
760760 getOutputs ( ) : Array < nbformat . IOutput > {
761- return JSONExt . deepCopy ( this . _youtputs . toArray ( ) ) ;
761+ return JSONExt . deepCopy ( this . _youtputs . toJSON ( ) ) ;
762+ }
763+
764+ createOutputs ( outputs : Array < nbformat . IOutput > ) : Array < any > {
765+ const newOutputs : Array < any > = [ ] ;
766+ for ( const output of outputs ) {
767+ let _newOutput : { [ id : string ] : any } ;
768+ const newOutput = new Y . Map ( ) ;
769+ if ( output . output_type === 'stream' ) {
770+ // Set the text field as a Y.Array
771+ const { text, ...outputWithoutText } = output ;
772+ _newOutput = outputWithoutText ;
773+ const newText = new Y . Array ( ) ;
774+ newText . push ( text as string [ ] ) ;
775+ _newOutput [ 'text' ] = newText ;
776+ } else {
777+ _newOutput = output ;
778+ }
779+ for ( const [ key , value ] of Object . entries ( _newOutput ) ) {
780+ newOutput . set ( key , value ) ;
781+ }
782+ newOutputs . push ( newOutput ) ;
783+ }
784+ return newOutputs ;
762785 }
763786
764787 /**
@@ -767,7 +790,8 @@ export class YCodeCell
767790 setOutputs ( outputs : Array < nbformat . IOutput > ) : void {
768791 this . transact ( ( ) => {
769792 this . _youtputs . delete ( 0 , this . _youtputs . length ) ;
770- this . _youtputs . insert ( 0 , outputs ) ;
793+ const newOutputs = this . createOutputs ( outputs ) ;
794+ this . _youtputs . insert ( 0 , newOutputs ) ;
771795 } , false ) ;
772796 }
773797
@@ -789,7 +813,8 @@ export class YCodeCell
789813 end < this . _youtputs . length ? end - start : this . _youtputs . length - start ;
790814 this . transact ( ( ) => {
791815 this . _youtputs . delete ( start , fin ) ;
792- this . _youtputs . insert ( start , outputs ) ;
816+ const newOutputs = this . createOutputs ( outputs ) ;
817+ this . _youtputs . insert ( start , newOutputs ) ;
793818 } , false ) ;
794819 }
795820
0 commit comments