Как сделать дочерний контент узла динамически недоступным для редактирования в ProseMirror?

Я создал схему документа, которая включает в себя captioned_image тип узла, который ссылается на изображение в отдельной CMS. Изображение имеет подпись и кредит, который я хотел бы редактировать в документе. Когда пользователь редактирует содержимое в редакторе ProseMirror, я могу принять к сведению это изменение и отправить запрос в CMS с обновлениями.

Однако поля заголовка и кредита могут быть "заблокированы", когда другой пользователь редактирует изображение в CMS.

Как я могу сделать подпись и кредит дочерних узлов captioned_image узел не редактируется, когда эти поля заблокированы другим пользователем? Выбор не должен быть в состоянии поместить в позицию.

1 ответ

Решение

Я могу придумать два пути

  1. Когда часть документа заблокирована, фильтруйте действия преобразования, отменяя (возвращая к старому состоянию) любые действия, которые касаются этой области (можно определить, вызвав forEach на элементы в action.transform.mapping.maps).

  2. Напишите собственное представление узла для этих типов узлов и присвойте им атрибут readOnly, Переключите его, когда они должны стать недоступными для редактирования, и когда он включен, отобразите заблокированный контент с помощью contenteditable=false, Но учтите, что это не защищает от программных изменений контента. Кроме того, это сделает невозможным навести на них курсор, что может быть нежелательно.

Другие вопросы по тегам