Avoid copying attribute map when deleting
Calling cleanupFormattingGap should not make a copy of the attributes because it needs to be able to update them.
This commit is contained in:
		
							parent
							
								
									99326f67b8
								
							
						
					
					
						commit
						164b38f0cd
					
				@ -465,7 +465,7 @@ const deleteText = (transaction, currPos, length) => {
 | 
			
		||||
    currPos.forward()
 | 
			
		||||
  }
 | 
			
		||||
  if (start) {
 | 
			
		||||
    cleanupFormattingGap(transaction, start, currPos.right, startAttrs, map.copy(currPos.currentAttributes))
 | 
			
		||||
    cleanupFormattingGap(transaction, start, currPos.right, startAttrs, currPos.currentAttributes)
 | 
			
		||||
  }
 | 
			
		||||
  const parent = /** @type {AbstractType<any>} */ (/** @type {Item} */ (currPos.left || currPos.right).parent)
 | 
			
		||||
  if (parent._searchMarker) {
 | 
			
		||||
 | 
			
		||||
@ -138,6 +138,28 @@ export const testNotMergeEmptyLinesFormat = tc => {
 | 
			
		||||
  ])
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @param {t.TestCase} tc
 | 
			
		||||
 */
 | 
			
		||||
export const testPreserveAttributesThroughDelete = tc => {
 | 
			
		||||
  const ydoc = new Y.Doc()
 | 
			
		||||
  const testText = ydoc.getText('test');
 | 
			
		||||
  testText.applyDelta([
 | 
			
		||||
    { insert: 'Text' },
 | 
			
		||||
    { insert: '\n', attributes: { title: true } },
 | 
			
		||||
    { insert: '\n' }
 | 
			
		||||
  ])
 | 
			
		||||
  testText.applyDelta([
 | 
			
		||||
    { retain: 4 },
 | 
			
		||||
    { delete: 1 },
 | 
			
		||||
    { retain: 1, attributes: { title: true } },
 | 
			
		||||
  ])
 | 
			
		||||
  t.compare(testText.toDelta(), [
 | 
			
		||||
    { insert: 'Text' },
 | 
			
		||||
    { insert: '\n', attributes: { title: true } },
 | 
			
		||||
  ])
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @param {t.TestCase} tc
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user