У меня есть редактор, который должен иметь сущности с реквизитом name, color, start, end
. В редакторе текст в позициях, обозначенных start
и end
, будет заменен на name
, и он будет отображаться пользовательским компонентом с contentEditable=false
.
. Это прекрасно работает с черновиком js в целом, но есть несколько проблем:
- При перемещении курсора с помощью стрелок на клавиатуре объекты пропускаются, что хорошо. Но когда объект находится в самом конце ввода, и я пытаюсь пройти вправо мимо него (либо с помощью стрелки вправо, либо с помощью параметра, либо cmd + вправо), курсор исчезает и не возвращается, когда я снова двигаюсь влево.
- Если I go справа от объекта и pu sh shift + option + стрелка вправо, объект выбирается, как и ожидалось. Но если я затем нажму стрелку влево, курсор также потеряется.
Я мог бы это исправить, убедившись, что после такой последней сущности всегда есть пробел, но это кажется хакерским и, вероятно, имеет крайние случаи.
Другой вариант - не использовать contentEditable=false
, но это создает другие проблемы с моим реальным приложением, которое имеет более сложный компонент сущности, включая раскрывающийся список, и мне придется вручную убедиться, что пользователь не сможет изменить текст внутри сущностей и т. д. c.
Вот репродукция вопроса: https://codesandbox.io/s/competent-surf-st77i
Есть идеи?