|
|
@@ -61,28 +61,6 @@ export default class Mapper {
|
|
|
* @member {Map}
|
|
|
*/
|
|
|
this._viewToModelLengthCallbacks = new Map();
|
|
|
-
|
|
|
- // Add default callback for model to view position mapping.
|
|
|
- this.on( 'modelToViewPosition', ( evt, data ) => {
|
|
|
- let viewContainer = this._modelToViewMapping.get( data.modelPosition.parent );
|
|
|
-
|
|
|
- data.viewPosition = this._findPositionIn( viewContainer, data.modelPosition.offset );
|
|
|
- }, { priority: 'lowest' } );
|
|
|
-
|
|
|
- // Add default callback for view to model position mapping.
|
|
|
- this.on( 'viewToModelPosition', ( evt, data ) => {
|
|
|
- let viewBlock = data.viewPosition.parent;
|
|
|
- let modelParent = this._viewToModelMapping.get( viewBlock );
|
|
|
-
|
|
|
- while ( !modelParent ) {
|
|
|
- viewBlock = viewBlock.parent;
|
|
|
- modelParent = this._viewToModelMapping.get( viewBlock );
|
|
|
- }
|
|
|
-
|
|
|
- let modelOffset = this._toModelOffset( data.viewPosition.parent, data.viewPosition.offset, viewBlock );
|
|
|
-
|
|
|
- data.modelPosition = ModelPosition.createFromParentAndOffset( modelParent, modelOffset );
|
|
|
- }, { priority: 'lowest' } );
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -179,7 +157,7 @@ export default class Mapper {
|
|
|
toModelPosition( viewPosition ) {
|
|
|
const data = {
|
|
|
viewPosition: viewPosition,
|
|
|
- modelPosition: null,
|
|
|
+ modelPosition: this._defaultToModelPosition( viewPosition ),
|
|
|
mapper: this
|
|
|
};
|
|
|
|
|
|
@@ -188,6 +166,19 @@ export default class Mapper {
|
|
|
return data.modelPosition;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Maps model position to view position using default mapper algorithm.
|
|
|
+ *
|
|
|
+ * @private
|
|
|
+ * @param {engine.model.Position} modelPosition
|
|
|
+ * @returns {engine.view.Position} View position mapped from model position.
|
|
|
+ */
|
|
|
+ _defaultToViewPosition( modelPosition ) {
|
|
|
+ let viewContainer = this._modelToViewMapping.get( modelPosition.parent );
|
|
|
+
|
|
|
+ return this._findPositionIn( viewContainer, modelPosition.offset );
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* Gets the corresponding view position.
|
|
|
*
|
|
|
@@ -197,7 +188,7 @@ export default class Mapper {
|
|
|
*/
|
|
|
toViewPosition( modelPosition ) {
|
|
|
const data = {
|
|
|
- viewPosition: null,
|
|
|
+ viewPosition: this._defaultToViewPosition( modelPosition ),
|
|
|
modelPosition: modelPosition,
|
|
|
mapper: this
|
|
|
};
|
|
|
@@ -207,6 +198,27 @@ export default class Mapper {
|
|
|
return data.viewPosition;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Maps view position to model position using default mapper algorithm.
|
|
|
+ *
|
|
|
+ * @private
|
|
|
+ * @param {engine.view.Position} viewPosition
|
|
|
+ * @returns {engine.model.Position} Model position mapped from view position.
|
|
|
+ */
|
|
|
+ _defaultToModelPosition( viewPosition ) {
|
|
|
+ let viewBlock = viewPosition.parent;
|
|
|
+ let modelParent = this._viewToModelMapping.get( viewBlock );
|
|
|
+
|
|
|
+ while ( !modelParent ) {
|
|
|
+ viewBlock = viewBlock.parent;
|
|
|
+ modelParent = this._viewToModelMapping.get( viewBlock );
|
|
|
+ }
|
|
|
+
|
|
|
+ let modelOffset = this._toModelOffset( viewPosition.parent, viewPosition.offset, viewBlock );
|
|
|
+
|
|
|
+ return ModelPosition.createFromParentAndOffset( modelParent, modelOffset );
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* Registers a callback that evaluates the length in the model of a view element with given name.
|
|
|
*
|