feat: placeholder fields (inline atom + ODF/DOCX round trip)

An inline atom drawn gray as ‹label›: a click selects the whole field,
typing replaces it, Tab/Shift-Tab jump between fields. Exports to ODF
<text:placeholder> (PLH sentinel U+E022) and a DOCX w:sdt content
control tagged edentext-placeholder; both importers read it back, the
export-minted gray stripped. Covered in roundtrip Leg 31 + fuzzDoc.
This commit is contained in:
Steffen Becker committed 2026-08-24 16:16:24 +00:00
1 parent ca29ff780b
commit 0753caa5a9
12 files changed
+290 -6

No files matched your search

+10
View File
@@ -885,6 +885,16 @@
height: 0;
}
/* A template placeholder field: gray until replaced, as LibreOffice draws its own.
The sheet keeps its own colors through every theme, so the gray is fixed too. */
.paper .tiptap span[data-placeholder-field] {
color: #808080;
}
.paper .tiptap span[data-placeholder-field].ProseMirror-selectednode {
background: color-mix(in srgb, var(--color-primary) 25%, transparent);
outline: none;
}
/* Paragraph mark (¶). Out of flow at its static position — after the last character,
but invisible to line breaking, so a line-end space still hangs into the margin and
the mark can never be pushed onto a line of its own. The toggle only recolors it. */