@@ -44,9 +44,9 @@ export function toGraphemeString(grapheme: string): $GraphemeString {
4444function equalStyles ( a : Grapheme , b : Grapheme ) : boolean {
4545 type GraphemeStyle = Omit < Grapheme , 'grapheme' > &
4646 Partial < Pick < Grapheme , 'grapheme' > >
47- const aStyles : GraphemeStyle = { ...a }
47+ const aStyles : GraphemeStyle = { textStyles : [ ] , ...a }
4848 delete aStyles . grapheme
49- const bStyles : GraphemeStyle = { ...b }
49+ const bStyles : GraphemeStyle = { textStyles : [ ] , ...b }
5050 delete bStyles . grapheme
5151 return isEqual ( aStyles , bStyles )
5252}
@@ -141,13 +141,18 @@ export function diffImageCommands(
141141 }
142142
143143 const commands : string [ ] = [ ]
144- let prevGrapheme : Grapheme | null = null
145- let skipped = false
146- for ( const [ r , row ] of oldImage . entries ( ) ) {
144+ let prevWrittenGrapheme : Grapheme | null = null
145+ let skipped = true
146+ for ( const [ r , newRow ] of newImage . entries ( ) ) {
147147 const oldRow = oldImage [ r ]
148- for ( const [ c , grapheme ] of row . entries ( ) ) {
149- const oldGrapheme = oldRow [ c ]
150- if ( isEqual ( grapheme , oldGrapheme ) ) {
148+ for ( const [ c , newGrapheme ] of newRow . entries ( ) ) {
149+ const prevFrameGrapheme = oldRow [ c ]
150+ if (
151+ isEqual (
152+ { textStyles : [ ] , ...newGrapheme } ,
153+ { textStyles : [ ] , ...prevFrameGrapheme } ,
154+ )
155+ ) {
151156 skipped = true
152157 continue
153158 }
@@ -157,8 +162,8 @@ export function diffImageCommands(
157162 skipped = false
158163 }
159164
160- commands . push ( ...graphemeDiffCommands ( prevGrapheme , grapheme ) )
161- prevGrapheme = grapheme
165+ commands . push ( ...graphemeDiffCommands ( prevWrittenGrapheme , newGrapheme ) )
166+ prevWrittenGrapheme = newGrapheme
162167 }
163168 }
164169 return commands
0 commit comments