Sobreposição de anotações embutidas com Quill
No meu aplicativo, os usuários podem criar comentários de margem em qualquer lugar do corpo do documento, e os intervalos de âncora de comentários podem se sobrepor arbitrariamente, assim:
This [abc]is a set of [xyz]overlapping[/xyz] comments[/abc]
Estou definindo meu comentário-âncora como este:
let Inline = Quill.import('blots/inline');
class CommentAnchorBlot extends Inline {
static create(commentId) {
let node = super.create();
node.setAttribute("class", "comment-anchor comment-anchor-" + commentId);
return node;
}
static formats(node) {
var classNames = node.getAttribute('class').split(/\s+/);
for (var i = 0, len = classNames.length; i < len; i++) {
var className = classNames[i];
if (className.indexOf("comment-anchor-") === 0) {
return className.replace("comment-anchor-", "");
}
}
return null;
}
}
CommentAnchorBlot.blotName = 'comment';
CommentAnchorBlot.className = 'comment-anchor';
CommentAnchorBlot.tagName = 'span';
Quill.register(CommentAnchorBlot);
Mas quando eu testo em uma instância do Quill em execução, ele gera pergaminho como este:
{
"ops" : [
{ "insert" : "This " },
{ "insert" : "is a set of ", "attributes" : { "comment" : "abc" } },
{ "insert" : "overlapping ", "attributes" : { "comment" : "xyz" } },
{ "insert" : " comments", "attributes" : { "comment" : "abc" } }
]
}
O que é problemático, porque a palavra "sobreposição" deve realmente ter "abc" e "xyz" como seus IDs de ancoragem de comentário.
Como você recomendaria alterar a definição CommentAnchorBlot, para acomodar esse requisito? Não vi nenhum outro exemplo na documentação do Quill que funcione dessa maneira.