# MergeOperation

class

Operation to merge two [elements](module_engine_model_element-ModelElement.md).

The merged element is the parent of [`sourcePosition`](#member-sourcePosition) and it is merged into the parent of [`targetPosition`](#member-targetPosition). All nodes from the merged element are moved to [`targetPosition`](#member-targetPosition).

The merged element is moved to the graveyard at [`graveyardPosition`](#member-graveyardPosition).

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-engine/src/model/operation/mergeoperation.ts#L30)

<a id="properties">

## Properties

<a id="member-affectedSelectable">

### `affectedSelectable: ModelSelectable` _(readonly)_

A selectable that will be affected by the operation after it is executed.

The exact returned parameter differs between operation types.

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-engine/src/model/operation/mergeoperation.ts#L111)

<a id="member-baseVersion">

### `baseVersion: number | null` _(inherited)_

[`version`](module_engine_model_document-ModelDocument.md#member-version) on which operation can be applied. If you try to [apply](module_engine_model_model-Model.md#function-applyOperation) operation with different base version than the [document version](module_engine_model_document-ModelDocument.md#member-version) the [model-document-applyOperation-wrong-version](module_utils_ckeditorerror-CKEditorError.md) error is thrown.

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-engine/src/model/operation/operation.ts#L26)

<a id="member-batch">

### `batch: Batch | null` _(inherited)_

[Batch](module_engine_model_batch-Batch.md) to which the operation is added or `null` if the operation is not added to any batch yet.

Note, that a [non-document operation](#member-isDocumentOperation) has this property always set to `null`, and is never added to any batch.

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-engine/src/model/operation/operation.ts#L40)

<a id="member-deletionPosition">

### `deletionPosition: ModelPosition` _(readonly)_

Position before the merged element (which will be deleted).

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-engine/src/model/operation/mergeoperation.ts#L94)

<a id="member-graveyardPosition">

### `graveyardPosition: ModelPosition`

Position in graveyard to which the merged element will be moved.

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-engine/src/model/operation/mergeoperation.ts#L49)

<a id="member-howMany">

### `howMany: number`

Summary offset size of nodes which will be moved from the merged element to the new parent.

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-engine/src/model/operation/mergeoperation.ts#L39)

<a id="member-isDocumentOperation">

### `isDocumentOperation: boolean` _(readonly)_

Defines whether operation is executed on attached or detached [items](module_engine_model_item-ModelItem.md).

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-engine/src/model/operation/operation.ts#L31)

<a id="member-movedRange">

### `movedRange: ModelRange` _(readonly)_

Artificial range that contains all the nodes from the merged element that will be moved to [`sourcePosition`](#member-sourcePosition). The range starts at [`sourcePosition`](#member-sourcePosition) and ends in the same parent, at `POSITIVE_INFINITY` offset.

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-engine/src/model/operation/mergeoperation.ts#L102)

<a id="member-sourcePosition">

### `sourcePosition: ModelPosition`

Position inside the merged element. All nodes from that element after that position will be moved to [`targetPosition`](#member-targetPosition).

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-engine/src/model/operation/mergeoperation.ts#L34)

<a id="member-targetPosition">

### `targetPosition: ModelPosition`

Position which the nodes from the merged elements will be moved to.

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-engine/src/model/operation/mergeoperation.ts#L44)

<a id="member-type">

### `type: 'merge'` _(readonly)_

Operation type.

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-engine/src/model/operation/mergeoperation.ts#L87)

#### Static properties

<a id="static-member-className">

### `className: string` _(readonly)_

Name of the operation class used for serialization.

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-engine/src/model/operation/mergeoperation.ts#L208)

<a id="methods">

## Methods

<a id="function-constructor">

### `constructor( sourcePosition, howMany, targetPosition, graveyardPosition, baseVersion )`

Creates a merge operation.

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-engine/src/model/operation/mergeoperation.ts#L62)

#### Parameters

* `sourcePosition: ModelPosition`

  Position inside the merged element. All nodes from that element after that position will be moved to [`targetPosition`](#member-targetPosition).

* `howMany: number`

  Summary offset size of nodes which will be moved from the merged element to the new parent.

* `targetPosition: ModelPosition`

  Position which the nodes from the merged elements will be moved to.

* `graveyardPosition: ModelPosition`

  Position in graveyard to which the merged element will be moved.

* `baseVersion: number | null`

  Document [`version`](module_engine_model_document-ModelDocument.md#member-version) on which operation can be applied or `null` if the operation operates on detached (non-document) tree.

<a id="function-clone">

### `clone() → MergeOperation`

Creates and returns an operation that has the same parameters as this operation.

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-engine/src/model/operation/mergeoperation.ts#L126)

#### Returns

* `MergeOperation`

<a id="function-getReversed">

### `getReversed() → Operation`

See [`Operation#getReversed()`](module_engine_model_operation_operation-Operation.md#function-getReversed).

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-engine/src/model/operation/mergeoperation.ts#L133)

#### Returns

* `Operation`

<a id="function-toJSON">

### `toJSON() → unknown`

Custom toJSON method to solve child-parent circular dependencies.

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-engine/src/model/operation/mergeoperation.ts#L195)

#### Returns

* `unknown`

  Clone of this object with the operation property replaced with string.

<a id="function-_execute">

### `_execute() → void` _(internal)_

Executes the operation - modifications described by the operation properties will be applied to the model tree.

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-engine/src/model/operation/mergeoperation.ts#L184)

#### Returns

* `void`

<a id="function-_validate">

### `_validate() → void` _(internal)_

Checks whether the operation's parameters are correct and the operation can be correctly executed. Throws an error if operation is not valid.

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-engine/src/model/operation/mergeoperation.ts#L149)

#### Returns

* `void`

#### Static methods

<a id="static-function-fromJSON">

### `fromJSON( json, document ) → MergeOperation` _(static)_

Creates `MergeOperation` object from deserialized object, i.e. from parsed JSON string.

[See source](https://github.com/ckeditor/ckeditor5/blob/master/packages/ckeditor5-engine/src/model/operation/mergeoperation.ts#L218)

#### Parameters

* `json: any`

  Deserialized JSON object.

* `document: ModelDocument`

  Document on which this operation will be applied.

#### Returns

* `MergeOperation`

---

Full index of the CKEditor 5 API reference: [llms.txt](llms.txt)
