From ad446e9535eb9659baa63fd67eba4596acc16636 Mon Sep 17 00:00:00 2001 From: Steffen Becker Date: Mon, 10 Aug 2026 08:01:34 +0000 Subject: [PATCH] fix: a block at a page top loses its space above for good The rule read the padding it had just zeroed, so it flipped every pass and the ping-pong damper froze it on whichever state came first. Read the block's own --space-before, which the decoration doesn't touch. --- src/lib/editor/extensions/pageBreaks.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib/editor/extensions/pageBreaks.ts b/src/lib/editor/extensions/pageBreaks.ts index 7149d65..8513213 100644 --- a/src/lib/editor/extensions/pageBreaks.ts +++ b/src/lib/editor/extensions/pageBreaks.ts @@ -1142,7 +1142,9 @@ export const PageBreaks = Extension.create({ i > 0 && !leaf.inTableCell && (breaks.some((b) => b.reason !== 'line-split') || (breaks.length === 0 && Math.abs(effectiveTop - contentStart) < 0.5)) - && parseFloat(getComputedStyle(leaf.el).paddingTop) > 0.5 + // The block's own space above, not its rendered padding: the drop below + // zeroes that padding, so reading it back makes the rule flip every pass. + && parseFloat(getComputedStyle(leaf.el).getPropertyValue('--space-before')) > 0.5 ) { const from = docPosBeforeElement(leaf.el); const node = from !== null ? editorView.state.doc.nodeAt(from) : null;