From e0009c12cdcd576b61d540ad7144b3776f7a8ad4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Mon, 19 Feb 2024 15:58:51 +0100 Subject: [PATCH] Fix mapping of view element to model element https://community.openproject.org/work_packages/52641 --- src/plugins/code-block/code-block-editing.js | 8 ++++++++ src/plugins/code-block/converters.js | 1 + 2 files changed, 9 insertions(+) diff --git a/src/plugins/code-block/code-block-editing.js b/src/plugins/code-block/code-block-editing.js index ec1f55d..b06bb90 100644 --- a/src/plugins/code-block/code-block-editing.js +++ b/src/plugins/code-block/code-block-editing.js @@ -6,6 +6,7 @@ import {modelCodeBlockToView, viewCodeBlockToModel, codeBlockContentToView} from import {createCodeBlockWidget, isCodeBlockWidget} from './widget'; import DoubleClickObserver from './click-observer'; import { getPluginContext } from '../op-context/op-context'; +import {viewToModelPositionOutsideModelElement} from "@ckeditor/ckeditor5-widget"; export default class CodeBlockEditing extends Plugin { @@ -47,6 +48,13 @@ export default class CodeBlockEditing extends Plugin { .for('dataDowncast') .add(modelCodeBlockToView()); + this.editor.editing.mapper.on( + 'viewToModelPosition', + viewToModelPositionOutsideModelElement( this.editor.model, viewElement => { + return viewElement.hasClass( 'op-uc-code-block' ) + } ) + ); + // Register click handler to code block to edit it immediately view.addObserver( DoubleClickObserver ); this.listenTo( viewDocument, 'dblclick', ( eventInfo, domEventData ) => { diff --git a/src/plugins/code-block/converters.js b/src/plugins/code-block/converters.js index ecec28f..dbab1d3 100644 --- a/src/plugins/code-block/converters.js +++ b/src/plugins/code-block/converters.js @@ -30,6 +30,7 @@ export function modelCodeBlockToView() { conversionApi.mapper.bindElements( codeBlock, codeElement ); conversionApi.mapper.bindElements( codeBlock, preElement ); + conversionApi.mapper.bindElements( codeBlock, langElement ); // Insert at matching position const insertPosition = conversionApi.mapper.toViewPosition( data.range.start );