@@ -1174,10 +1174,12 @@ export const slice = (d, start = 0, end = d.childCnt, currNode = d.children.star
11741174 }
11751175 while ( currNode != null && currNode . length <= remainingLen ) {
11761176 list . pushEnd ( cpy . children , currNode . clone ( ) )
1177+ remainingLen -= currNode . length
11771178 currNode = currNode . next
11781179 }
11791180 if ( currNode != null && remainingLen > 0 ) {
11801181 list . pushEnd ( cpy . children , currNode . clone ( 0 , remainingLen ) )
1182+ remainingLen -= math . min ( currNode . length , remainingLen )
11811183 }
11821184 cpy . childCnt = slicedLen - remainingLen
11831185 // @ts -ignore
@@ -1621,7 +1623,7 @@ export class DeltaBuilder extends Delta {
16211623 remainingLen -= delLen
16221624 }
16231625 }
1624- } else if ( $modifyAttrOp . check ( op ) ) {
1626+ } else if ( $modifyOp . check ( op ) ) {
16251627 if ( opsI == null ) {
16261628 list . pushEnd ( this . children , op . clone ( ) )
16271629 this . childCnt += 1
@@ -2230,11 +2232,12 @@ export const diff = (d1, d2) => {
22302232 const cd = cdiff [ i ]
22312233 cd . remove = isContent . slice ( cd . index , cd . index + cd . remove . length )
22322234 cd . insert = shouldContent . slice ( cd . index + adj , cd . index + adj + cd . insert . length )
2233- adj += cd . remove . length - cd . insert . length
2235+ adj += cd . insert . length - cd . remove . length
22342236 }
22352237 for ( let i = 0 , lastIndex = 0 ; i < cdiff . length ; i ++ ) {
22362238 const cd = cdiff [ i ]
22372239 d . retain ( cd . index - lastIndex )
2240+ lastIndex = cd . index
22382241 let cdii = 0
22392242 let cdri = 0
22402243 // try to match as much content as possible, preferring to skip over non-deltas
0 commit comments