| 1146 | } |
| 1147 | |
| 1148 | private expandChangedRangeForKittyImages( |
| 1149 | firstChanged: number, |
| 1150 | lastChanged: number, |
| 1151 | newLines: string[], |
| 1152 | ): { firstChanged: number; lastChanged: number } { |
| 1153 | let expandedFirstChanged = firstChanged; |
| 1154 | let expandedLastChanged = lastChanged; |
| 1155 | const expandForLines = (lines: string[]): void => { |
| 1156 | for (let i = 0; i < lines.length; i++) { |
| 1157 | if (extractKittyImageIds(lines[i]!).length === 0) continue; |
| 1158 | const blockEnd = i + this.getKittyImageReservedRows(lines, i) - 1; |
| 1159 | if (i >= firstChanged || (i <= lastChanged && blockEnd >= firstChanged)) { |
| 1160 | expandedFirstChanged = Math.min(expandedFirstChanged, i); |
| 1161 | expandedLastChanged = Math.max(expandedLastChanged, blockEnd); |
| 1162 | } |
| 1163 | } |
| 1164 | }; |
| 1165 | |
| 1166 | expandForLines(this.previousLines); |
| 1167 | expandForLines(newLines); |
| 1168 | return { firstChanged: expandedFirstChanged, lastChanged: expandedLastChanged }; |
| 1169 | } |
| 1170 | |
| 1171 | private deleteChangedKittyImages(firstChanged: number, lastChanged: number): string { |
| 1172 | if (firstChanged < 0 || lastChanged < firstChanged) return ""; |