Unterstützung von <span data-attribute> im Rich-Editor

Wenn ich Text auf einer einzelnen Zeile auswähle und über den Composer-Button einen Wrap anwende, wird ein Inline-Wrap angewendet. Das funktioniert zwar, aber der letzte Buchstabe des ausgewählten Textes wird teilweise abgeschnitten:

image

Dies ist eine Möglichkeit, Inline-Wraps zu erstellen, und sie wird automatisch in einen Block-Wrap umgewandelt, wenn auf derselben Zeile kein weiterer Inhalt steht.

Die andere Möglichkeit ist <span data-attribute>, die im Rich-Editor nicht unterstützt wird (data-attribute wird entfernt), im Markdown-Editor jedoch vollständig funktioniert. Interessanterweise ist diese erlaubte Syntax nicht in discourse/frontend/pretty-text/addon/allow-lister.js at 3b13aaa003332e7bf056a6cbb2c0da0cf107a0fd · discourse/discourse · GitHub aufgeführt, sondern in discourse/frontend/discourse-markdown-it/src/features/d-wrap.js at 3b13aaa003332e7bf056a6cbb2c0da0cf107a0fd · discourse/discourse · GitHub :slight_smile:

<span data-attribute> ist auf Meta dokumentiert und wird wahrscheinlich außerhalb meines Forums verwendet. Der Vorteil ist, dass es nie in ein Block-Element umgewandelt wird, selbst wenn auf derselben Zeile kein weiterer Inhalt steht.

Ein normaler Wrap allein auf einer Zeile wie dieser:

[wrap="fish"]text[/wrap]

wird als Block gerendert:

<div class="d-wrap" data-wrap="fish">
<p>text</p>
</div>

Soweit ich weiß, gibt es nur folgende Möglichkeiten, dieses Verhalten zu vermeiden:

  • Verwendung von <span data-attribute>:

    <span data-fish>text</span>
    

    wird gerendert als:

    <span data-fish="">text</span>
    
  • Hinzufügen eines nicht abgeschnittenen (idealerweise breitenlosen) Leerzeichens wie &ZeroWidthSpace; am Anfang oder Ende der Zeile.

    &ZeroWidthSpace;[wrap=fish]Fishyfishy[/wrap]
    

    wird gerendert als:

    &ZeroWidthSpace;<span class="d-wrap" data-wrap="fish">Fishyfishy</span>
    

Letzteres ist etwas umständlich.

Ich würde es bevorzugen, die erste Lösung im Rich-Editor nutzen zu können. Allgemeiner wäre jede einfache Möglichkeit, einen Inline-Wrap zu erstellen, wünschenswert.