From 5c5139bbba8716ce4dc8540e6f62955cf3a7d6cb Mon Sep 17 00:00:00 2001 From: Kevin Jahns Date: Wed, 11 Jun 2025 17:39:49 +0200 Subject: [PATCH] handle another attribution edge case for formatting --- src/types/YText.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/types/YText.js b/src/types/YText.js index 7bde7754..86782df6 100644 --- a/src/types/YText.js +++ b/src/types/YText.js @@ -1075,13 +1075,13 @@ export class YText extends AbstractType { previousAttributes[key] = value } // # Update Attributions - if (attribution != null) { + if (attribution != null || d.usedAttribution?.attributes?.[key] != null) { /** * @type {import('../utils/Delta.js').Attribution} */ const formattingAttribution = object.assign({}, d.usedAttribution) const attributesChanged = /** @type {{ [key: string]: Array }} */ (formattingAttribution.attributes = object.assign({}, formattingAttribution.attributes ?? {})) - if (value === null) { + if (value === null || attribution == null) { delete attributesChanged[key] } else { const by = attributesChanged[key] = (attributesChanged[key]?.slice() ?? []) @@ -1089,12 +1089,14 @@ export class YText extends AbstractType { const attributedAt = (c.deleted ? attribution.deletedAt : attribution.insertedAt) if (attributedAt) formattingAttribution.attributedAt = attributedAt } - if (object.isEmpty(attributesChanged)) { - d.useAttribution(null) - } else { - const attributedAt = (c.deleted ? attribution.deletedAt : attribution.insertedAt) - if (attributedAt != null) formattingAttribution.attributedAt = attributedAt - d.useAttribution(formattingAttribution) + if (attribution != null) { + if (object.isEmpty(attributesChanged)) { + d.useAttribution(null) + } else { + const attributedAt = (c.deleted ? attribution.deletedAt : attribution.insertedAt) + if (attributedAt != null) formattingAttribution.attributedAt = attributedAt + d.useAttribution(formattingAttribution) + } } } break