Skip to content

Commit 09e5990

Browse files
committed
Add streamOutputChange
1 parent 06dc63d commit 09e5990

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

javascript/src/api.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -746,6 +746,10 @@ export type CellChange = SourceChange & {
746746
* Cell output changes
747747
*/
748748
outputsChange?: Delta<Y.Map<any>>;
749+
/**
750+
* Cell stream output text changes
751+
*/
752+
streamOutputChange?: Delta<Y.Text>;
749753
/**
750754
* Cell execution count change
751755
*/

javascript/src/ycell.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -827,24 +827,24 @@ export class YCodeCell
827827
/**
828828
* Remove text from a stream output.
829829
*/
830-
removeStreamOutput(index: number, start: number): void {
830+
removeStreamOutput(index: number, start: number, origin: any = null): void {
831831
this.transact(() => {
832832
const output = this._youtputs.get(index);
833833
const prevText = output.get('text') as Y.Text;
834834
const length = prevText.length - start;
835835
prevText.delete(start, length);
836-
}, false);
836+
}, false, origin);
837837
}
838838

839839
/**
840840
* Append text to a stream output.
841841
*/
842-
appendStreamOutput(index: number, text: string): void {
842+
appendStreamOutput(index: number, text: string, origin: any = null): void {
843843
this.transact(() => {
844844
const output = this._youtputs.get(index);
845845
const prevText = output.get('text') as Y.Text;
846846
prevText.insert(prevText.length, text);
847-
}, false);
847+
}, false, origin);
848848
}
849849

850850
/**
@@ -895,6 +895,13 @@ export class YCodeCell
895895
protected getChanges(events: Y.YEvent<any>[]): Partial<CellChange> {
896896
const changes = super.getChanges(events);
897897

898+
const streamOutputEvent = events.find(
899+
event => event.path.length === 3 && event.path[0] === 'outputs' && event.path[2] === 'text'
900+
);
901+
if (streamOutputEvent) {
902+
changes.streamOutputChange = streamOutputEvent.changes.delta as any;
903+
}
904+
898905
const outputEvent = events.find(
899906
event => event.target === this.ymodel.get('outputs')
900907
);

0 commit comments

Comments
 (0)