В моем приложении пользователи могут создавать комментарии на полях в любом месте тела документа, а диапазоны привязок комментариев могут произвольно перекрываться, например:
This [abc]is a set of [xyz]overlapping[/xyz] comments[/abc]
Я определяю свое пятно привязки комментария следующим образом:
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);
Но когда я проверяю его на работающем экземпляре Quill, он генерирует такой пергамент:
{
"ops" : [
{ "insert" : "This " },
{ "insert" : "is a set of ", "attributes" : { "comment" : "abc" } },
{ "insert" : "overlapping ", "attributes" : { "comment" : "xyz" } },
{ "insert" : " comments", "attributes" : { "comment" : "abc" } }
]
}
Что проблематично, потому что слово «перекрывающееся» должно фактически иметь как «abc», так и «xyz» в качестве идентификаторов привязки комментариев.
Как бы вы рекомендовали изменить определение CommentAnchorBlot, чтобы учесть это требование? Я не видел других примеров в документации Quill, которые бы работали так же.