Visuele editor toont mermaid-fence als codeblok (MermaidEmbedBuilder ontbreekt) #1920

Closed
opened 2026-09-02 13:25:55 +00:00 by brenno · 3 comments
Owner

Probleem

docs/design/DOCUMENT_MODE.md §4.3 belooft dat de visuele modus tabel, grafiek, gantt, mermaid, afbeelding en formule als volledig gerenderde embed-kaarten toont. In lib/widgets/markdown_editor/ bestaan echter alleen builders voor:

  • DividerEmbedBuilder
  • FootnoteRefEmbedBuilder / FootnoteDefEmbedBuilder
  • ImageEmbedBuilder
  • PentestBlockEmbedBuilder
  • TableEmbedBuilder
  • TimelineTableEmbedBuilder
  • TocEmbedBuilder
  • FallbackEmbedBuilder (de catch-all)

Een mermaid-fence (en ook een chart-fence en blokformules) valt daardoor in de visuele editor terug op een codeblok via FallbackEmbedBuilder. De lezer, voorvertoning, Pagina's-weergave, PDF- en HTML-export tekenen het diagram wél — alleen de visuele editor niet.

Oplossingsrichting

Een MermaidEmbedBuilder die DocMermaidView in een alleen-lezen kaart zet, met bewerken via de bron (klik op de kaart opent de Markdown-bron op de betreffende fence). Dit sluit het gat tussen de belofte in §4.3 en de daadwerkelijke builders.

Dit is het enige punt dat echt "fixen" verdient — de andere weergaven renderen mermaid al correct, de visuele editor is de ontbrekende schakel.

Referenties

  • docs/design/DOCUMENT_MODE.md §4.3
  • lib/widgets/markdown_editor/wysiwyg_notes_field.dart (regel 306-325: de lijst van builders)
  • lib/widgets/reader/doc_mermaid_view.dart (de renderer die hergebruikt kan worden)

Labels

bug, enhancement, document-modus

## Probleem `docs/design/DOCUMENT_MODE.md` §4.3 belooft dat de visuele modus tabel, grafiek, gantt, mermaid, afbeelding en formule als volledig gerenderde embed-kaarten toont. In `lib/widgets/markdown_editor/` bestaan echter alleen builders voor: - `DividerEmbedBuilder` - `FootnoteRefEmbedBuilder` / `FootnoteDefEmbedBuilder` - `ImageEmbedBuilder` - `PentestBlockEmbedBuilder` - `TableEmbedBuilder` - `TimelineTableEmbedBuilder` - `TocEmbedBuilder` - `FallbackEmbedBuilder` (de catch-all) Een `mermaid`-fence (en ook een `chart`-fence en blokformules) valt daardoor in de visuele editor terug op een codeblok via `FallbackEmbedBuilder`. De lezer, voorvertoning, Pagina's-weergave, PDF- en HTML-export tekenen het diagram wél — alleen de visuele editor niet. ## Oplossingsrichting Een `MermaidEmbedBuilder` die `DocMermaidView` in een alleen-lezen kaart zet, met bewerken via de bron (klik op de kaart opent de Markdown-bron op de betreffende fence). Dit sluit het gat tussen de belofte in §4.3 en de daadwerkelijke builders. Dit is het enige punt dat echt "fixen" verdient — de andere weergaven renderen mermaid al correct, de visuele editor is de ontbrekende schakel. ## Referenties - `docs/design/DOCUMENT_MODE.md` §4.3 - `lib/widgets/markdown_editor/wysiwyg_notes_field.dart` (regel 306-325: de lijst van builders) - `lib/widgets/reader/doc_mermaid_view.dart` (de renderer die hergebruikt kan worden) ## Labels `bug`, `enhancement`, `document-modus`
Author
Owner

Opgepakt. Tak: fix/mermaid-embed-visual-editor. Reikwijdte: nieuwe lib/utils/mermaid_embed_syntax.dart en lib/widgets/markdown_editor/mermaid_embed_builder.dart, plus registratie in markdown_quill_codec.dart en wysiwyg_notes_field.dart.

Eén correctie op de probleemanalyse hierboven: FallbackEmbedBuilder is er niet bij betrokken. De fence-scanner in markdown_visual_compatibility.dart slaat alles binnen een ```-fence bewust over, en de codec kent geen mermaid-embed, dus de fence wordt een gewoon Quill-codeblok. Het symptoom klopt; de fix vraagt daarom een embed-syntax plus een builder, langs hetzelfde pad als de pentest-envelop.

Opgepakt. Tak: fix/mermaid-embed-visual-editor. Reikwijdte: nieuwe lib/utils/mermaid_embed_syntax.dart en lib/widgets/markdown_editor/mermaid_embed_builder.dart, plus registratie in markdown_quill_codec.dart en wysiwyg_notes_field.dart. Eén correctie op de probleemanalyse hierboven: FallbackEmbedBuilder is er niet bij betrokken. De fence-scanner in markdown_visual_compatibility.dart slaat alles binnen een ```-fence bewust over, en de codec kent geen mermaid-embed, dus de fence wordt een gewoon Quill-codeblok. Het symptoom klopt; de fix vraagt daarom een embed-syntax *plus* een builder, langs hetzelfde pad als de pentest-envelop.
Author
Owner

Randproef op de nieuwe embed: een mermaid-fence binnen een lijstitem wordt uit zijn inspringing gehaald en aan de bulletregel geplakt. Nagemeten of dit nieuw is — dat is het niet. Een gewoon dart-codeblok in een lijstitem verliest vandaag al zijn fence-regels helemaal ('- Stap een:void main() {}'), en een tabel verliest zijn bullet. Mermaid houdt zijn inhoud juist heel. De klasse fout is dus ouder dan deze wijziging en breder dan mermaid; apart opgevoerd als #1925 met de drie gemeten gevallen. Ik heb hem hier niet meegenomen: de fix raakt de codec voor codeblokken en tabellen net zo goed, en dat is een andere wijziging dan deze.

Randproef op de nieuwe embed: een mermaid-fence binnen een lijstitem wordt uit zijn inspringing gehaald en aan de bulletregel geplakt. Nagemeten of dit nieuw is — dat is het niet. Een gewoon dart-codeblok in een lijstitem verliest vandaag al zijn fence-regels helemaal ('- Stap een:void main() {}'), en een tabel verliest zijn bullet. Mermaid houdt zijn inhoud juist heel. De klasse fout is dus ouder dan deze wijziging en breder dan mermaid; apart opgevoerd als #1925 met de drie gemeten gevallen. Ik heb hem hier niet meegenomen: de fix raakt de codec voor codeblokken en tabellen net zo goed, en dat is een andere wijziging dan deze.
Author
Owner

Opgelost en op main geverifieerd: merge-commit 2188e88ed (PR #1926). Een mermaid-fence reist nu als blok-embed (x-embed-mermaid) door de Quill-brug en wordt door MermaidEmbedBuilder als gerenderd diagram getekend, via dezelfde DocumentMarkdownView als de lezer.

Wat er NIET in zit, en waarom:

  • Klik-op-de-kaart-opent-de-bron. De kaart is alleen-lezen; bewerken gaat via de Bron-modus, net als bij de pentest-envelop. Een sprongmechanisme naar de juiste fence is een aparte, grotere wijziging.
  • De grafiek-fence. Die heeft nog steeds geen embed en blijft brontekst in de visuele editor; dat staat nu als bekende beperking in KNOWN_LIMITATIONS (#1923).
  • Blokinhoud in een lijstitem. Zie #1925 — ouder dan deze wijziging en breder dan mermaid.
Opgelost en op main geverifieerd: merge-commit 2188e88ed (PR #1926). Een mermaid-fence reist nu als blok-embed (x-embed-mermaid) door de Quill-brug en wordt door MermaidEmbedBuilder als gerenderd diagram getekend, via dezelfde DocumentMarkdownView als de lezer. Wat er NIET in zit, en waarom: - Klik-op-de-kaart-opent-de-bron. De kaart is alleen-lezen; bewerken gaat via de Bron-modus, net als bij de pentest-envelop. Een sprongmechanisme naar de juiste fence is een aparte, grotere wijziging. - De grafiek-fence. Die heeft nog steeds geen embed en blijft brontekst in de visuele editor; dat staat nu als bekende beperking in KNOWN_LIMITATIONS (#1923). - Blokinhoud in een lijstitem. Zie #1925 — ouder dan deze wijziging en breder dan mermaid.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#1920
No description provided.