214
return;
215
}
216
>
const newDecorationIDToSpecialLine = new ArrayMap<string, CustomLine>();
lineHeights.ts
217
>
const newOrderedSpecialLines: CustomLine[] = [];
218
>
219
>
for (let i = 0; i < this._invalidIndex; i++) {
220
const customLine = this._orderedCustomLines[i];
221
newOrderedSpecialLines.push(customLine);
222
newDecorationIDToSpecialLine.add(customLine.decorationId, customLine);
223
}
225
>
let numberOfDeletions = 0;
226
let previousSpecialLine: CustomLine | undefined = (this._invalidIndex > 0) ? newOrderedSpecialLines[this._invalidIndex - 1] : undefined;
227
for (let i = this._invalidIndex; i < this._orderedCustomLines.length; i++) {
229
>
if (customLine.deleted) {
230
numberOfDeletions++;
231
continue;
232
}
234
>
if (previousSpecialLine && previousSpecialLine.lineNumber === customLine.lineNumber) {
235
customLine.maximumSpecialHeight = previousSpecialLine.maximumSpecialHeight;
236
customLine.prefixSum = previousSpecialLine.prefixSum;
238
>
let maximumSpecialHeight = customLine.specialHeight;
239
>
for (let j = i; j < this._orderedCustomLines.length; j++) {
240
>
const nextSpecialLine = this._orderedCustomLines[j];
241
>
if (nextSpecialLine.deleted) {
242
continue;
243
}
244
>
if (nextSpecialLine.lineNumber !== customLine.lineNumber) {
lineHeights.ts
245
break;
246
}
247
>
maximumSpecialHeight = Math.max(maximumSpecialHeight, nextSpecialLine.specialHeight);
lineHeights.ts
248
>
}
249
>
customLine.maximumSpecialHeight = maximumSpecialHeight;
250
>
251
>
let prefixSum: number;
252
>
if (previousSpecialLine) {
253
prefixSum = previousSpecialLine.prefixSum + previousSpecialLine.maximumSpecialHeight + this._defaultLineHeight * (customLine.lineNumber - previousSpecialLine.lineNumber - 1);
255
>
prefixSum = this._defaultLineHeight * (customLine.lineNumber - 1);
256
>
}
257
>
customLine.prefixSum = prefixSum;
258
>
}
259
>
previousSpecialLine = customLine;
260
>
newOrderedSpecialLines.push(customLine);
261
>
newDecorationIDToSpecialLine.add(customLine.decorationId, customLine);
262
>
}
263
>
this._orderedCustomLines = newOrderedSpecialLines;
264
>
this._decorationIDToCustomLine = newDecorationIDToSpecialLine;
265
>
this._invalidIndex = Infinity;
266
}
267