Summary
Project footnote-reference Markdown source through the generalized source-projection session engine in #63.
When the caret enters a footnote reference, Leafdown should temporarily expose its Markdown source, such as [^note], as editable text in the ProseMirror document. Valid source commits back to Milkdown’s canonical footnote-reference node; invalid source becomes exact literal text.
This issue depends on #63 and is independent of #58. It adds the atomic-node adapter after the shared engine exists, without reintroducing a detached input.
Expected behavior
- A caret entering a footnote reference exposes its complete
[^label] source directly in the editor.
- Projected source is real editable document text, not a focused input widget or decoration-only surface.
- Entering from the left maps the caret to the beginning of the projected source; entering from the right maps it to the end.
- If native pointer interaction produces a node selection for the atomic reference, projection activates with the label text selected.
- Editing valid source commits to the corresponding canonical footnote-reference node when the session finalizes.
- Invalid or incomplete source finalizes as exact literal text without content loss.
- Caret movement, selections crossing the projected reference boundary, target switching, projection-local and native undo/redo, dirty state, and save-time serialization behave consistently with existing source projection.
- Editing a reference label does not implicitly create, rename, delete, or modify a footnote definition.
- Footnote definitions retain their current editable block presentation.
Related docs
Done when
Out of scope
- Footnote definitions and their block presentation.
- Footnote tooltips or definition previews.
- Navigating to, creating, renaming, or managing footnote definitions.
- Mixed-format link-label projection.
- Raw HTML and image source editing.
- A permanent Markdown-token schema.
Summary
Project footnote-reference Markdown source through the generalized source-projection session engine in #63.
When the caret enters a footnote reference, Leafdown should temporarily expose its Markdown source, such as
[^note], as editable text in the ProseMirror document. Valid source commits back to Milkdown’s canonical footnote-reference node; invalid source becomes exact literal text.This issue depends on #63 and is independent of #58. It adds the atomic-node adapter after the shared engine exists, without reintroducing a detached input.
Expected behavior
[^label]source directly in the editor.Related docs
Done when
[^label]syntax.Out of scope