Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make element cloning in WrapOperation as it is in InsertOperation #4382

Closed
scofalik opened this issue Jul 25, 2018 · 0 comments · Fixed by ckeditor/ckeditor5-engine#1497
Closed
Assignees
Labels
package:engine type:improvement This issue reports a possible enhancement of an existing feature.
Milestone

Comments

@scofalik
Copy link
Contributor

Both WrapOperation and InsertOperation clone the nodes which they insert to keep unchanged node saved in operation.

At the moment, WrapOperation just clones the element saved in the operation and inserts to the model tree the cloned element. This is a bit unfortunate, as you can't do this:

const el = writer.createElement( 'myElement' );
writer.wrap( myRange, el );

// Do anything with `el`, assuming it is in the model tree.
const pos = Position.createAfter( el );

InsertOperation does it better. When executed, it clones the saved element, but it inserts the original element and saves the clone. WrapOperation should be done similarly.

@scofalik scofalik self-assigned this Jul 25, 2018
pjasiun referenced this issue in ckeditor/ckeditor5-engine Aug 9, 2018
Other: Moved error logging from debug tools to OT code.
Other: Aligned `Schema#getValidRanges` results to changes in `AttributeOperation`.
Other: Unified `RemoveOperation` and `ReinsertOperation` to have just one `MoveOperation`.
Other: Simplified `LiveRange#event:change` second parameter which is now an object containing `Position` not an `Operation`.
Internal: Operational transformations refactor followups. 
Internal: Additional improvements for the new OT algorithms.
Internal: Added relations to better solve cases in undo.
Internal: Improved cloning mechanism inside `WrapOperation`.
Internal: Improved `model.Range#getTransformedByMergeOperation`.
Internal: Other improvements in OT algorithms.
Internal: Improvements in docs.

Closes #1468. Closes #1464. Closes #1467. Closes #1460. Closes #1461. Closes #1462. Closes #1463. Closes #1475. Closes #1479.

BREAKING CHANGE: `LiveRange#event:change` second parameter is now an object containing property `deletionPosition`. It can be `model.Position` instance, if the range was moved to the graveyard root. The position is equal to the position from which nodes were removed. Otherwise, it is set to `null`.

BREAKING CHANGE: `Schema#getValidRanges` will return only flat ranges now. If an attribute is allowed on some nodes and in those nodes children, multiple "nested" ranges will be returned.

BREAKING CHANGE: `Schema#getValidRanges` is a generator now.
@mlewand mlewand transferred this issue from ckeditor/ckeditor5-engine Oct 9, 2019
@mlewand mlewand added this to the iteration 20 milestone Oct 9, 2019
@mlewand mlewand added module:model type:improvement This issue reports a possible enhancement of an existing feature. package:engine labels Oct 9, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
package:engine type:improvement This issue reports a possible enhancement of an existing feature.
Projects
None yet
2 participants