refactor deltaDecorations logic (#17630)

This commit is contained in:
Maddy
2021-11-10 13:38:30 -08:00
committed by GitHub
parent 615df975ec
commit 6b226de450

View File

@@ -167,35 +167,31 @@ export class NotebookComponent extends AngularDisposable implements OnInit, OnDe
public deltaDecorations(newDecorationsRange: NotebookRange | NotebookRange[], oldDecorationsRange: NotebookRange | NotebookRange[]): void { public deltaDecorations(newDecorationsRange: NotebookRange | NotebookRange[], oldDecorationsRange: NotebookRange | NotebookRange[]): void {
if (oldDecorationsRange) { if (oldDecorationsRange) {
if (Array.isArray(oldDecorationsRange)) { if (Array.isArray(oldDecorationsRange)) {
let decoratedCells: string[] = []; let cells = [...new Set(oldDecorationsRange.map(item => item.cell))].filter(c => c.cellType === 'markdown');
oldDecorationsRange.forEach(oldDecorationRange => { cells.forEach(cell => {
if (oldDecorationRange.cell.cellType === 'markdown' && decoratedCells.indexOf(oldDecorationRange.cell.cellGuid) === -1) { let cellOldDecorations = oldDecorationsRange.filter(r => r.cell === cell);
let cell = this.cellEditors.filter(c => c.cellGuid() === oldDecorationRange.cell.cellGuid); let cellEditor = this.cellEditors.find(c => c.cellGuid() === cell.cellGuid);
cell[cell.length - 1].deltaDecorations(undefined, [oldDecorationRange]); cellEditor.deltaDecorations(undefined, cellOldDecorations);
decoratedCells.push(...oldDecorationRange.cell.cellGuid);
}
}); });
} else { } else {
if (oldDecorationsRange.cell.cellType === 'markdown') { if (oldDecorationsRange.cell.cellType === 'markdown') {
let cell = this.cellEditors.filter(c => c.cellGuid() === oldDecorationsRange.cell.cellGuid); let cell = this.cellEditors.find(c => c.cellGuid() === oldDecorationsRange.cell.cellGuid);
cell[cell.length - 1].deltaDecorations(undefined, oldDecorationsRange); cell.deltaDecorations(undefined, oldDecorationsRange);
} }
} }
} }
if (newDecorationsRange) { if (newDecorationsRange) {
if (Array.isArray(newDecorationsRange)) { if (Array.isArray(newDecorationsRange)) {
let decoratedCells: string[] = []; let cells = [...new Set(newDecorationsRange.map(item => item.cell))].filter(c => c.cellType === 'markdown');
newDecorationsRange.forEach(newDecorationRange => { cells.forEach(cell => {
if (newDecorationRange.cell.cellType === 'markdown' && decoratedCells.indexOf(newDecorationRange.cell.cellGuid) === -1) { let cellNewDecorations = newDecorationsRange.filter(r => r.cell === cell);
let cell = this.cellEditors.filter(c => c.cellGuid() === newDecorationRange.cell.cellGuid); let cellEditor = this.cellEditors.find(c => c.cellGuid() === cell.cellGuid);
cell[cell.length - 1].deltaDecorations([newDecorationRange], undefined); cellEditor.deltaDecorations(cellNewDecorations, undefined);
decoratedCells.push(...newDecorationRange.cell.cellGuid);
}
}); });
} else { } else {
if (newDecorationsRange.cell.cellType === 'markdown') { if (newDecorationsRange.cell.cellType === 'markdown') {
let cell = this.cellEditors.filter(c => c.cellGuid() === newDecorationsRange.cell.cellGuid); let cell = this.cellEditors.find(c => c.cellGuid() === newDecorationsRange.cell.cellGuid);
cell[cell.length - 1].deltaDecorations(newDecorationsRange, undefined); cell.deltaDecorations(newDecorationsRange, undefined);
} }
} }
} }