ytext: diff should never create useless delta op

This commit is contained in:
Kevin Jahns 2023-04-18 20:07:17 +02:00
parent 710ac31af3
commit d039d48b3f

View File

@ -631,13 +631,16 @@ export class YTextEvent extends YEvent {
/** /**
* @type {any} * @type {any}
*/ */
let op let op = null
switch (action) { switch (action) {
case 'delete': case 'delete':
if (deleteLen > 0) {
op = { delete: deleteLen } op = { delete: deleteLen }
}
deleteLen = 0 deleteLen = 0
break break
case 'insert': case 'insert':
if (typeof insert === 'object' || insert.length > 0) {
op = { insert } op = { insert }
if (currentAttributes.size > 0) { if (currentAttributes.size > 0) {
op.attributes = {} op.attributes = {}
@ -647,20 +650,20 @@ export class YTextEvent extends YEvent {
} }
}) })
} }
}
insert = '' insert = ''
break break
case 'retain': case 'retain':
if (retain > 0) {
op = { retain } op = { retain }
if (Object.keys(attributes).length > 0) { if (!object.isEmpty(attributes)) {
op.attributes = {} op.attributes = object.assign({}, attributes)
for (const key in attributes) {
op.attributes[key] = attributes[key]
} }
} }
retain = 0 retain = 0
break break
} }
delta.push(op) if (op) delta.push(op)
action = null action = null
} }
} }