Skip to content
This repository has been archived by the owner on Jun 26, 2020. It is now read-only.

Commit

Permalink
Merge pull request #1835 from ckeditor/i/6528
Browse files Browse the repository at this point in the history
Other: Improved the performance of the `Position` constructor by optimizing for the fast path where the root element is passed as the position root. Closes ckeditor/ckeditor5#6528.
  • Loading branch information
Reinmar authored Apr 14, 2020
2 parents 670cd7b + e63694a commit bfc6c88
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions src/model/position.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import TreeWalker from './treewalker';
import compareArrays from '@ckeditor/ckeditor5-utils/src/comparearrays';
import CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';
import { last } from 'lodash-es';

// To check if component is loaded more than once.
import '@ckeditor/ckeditor5-utils/src/version';
Expand Down Expand Up @@ -80,9 +79,13 @@ export default class Position {
);
}

// Normalize the root and path (if element was passed).
path = root.getPath().concat( path );
root = root.root;
// Normalize the root and path when element (not root) is passed.
if ( root.is( 'rootElement' ) ) {
path = path.slice();
} else {
path = [ ...root.getPath(), ...path ];
root = root.root;
}

/**
* Root of the position path.
Expand Down Expand Up @@ -140,7 +143,7 @@ export default class Position {
* @type {Number}
*/
get offset() {
return last( this.path );
return this.path[ this.path.length - 1 ];
}

/**
Expand Down Expand Up @@ -857,7 +860,7 @@ export default class Position {

// Then, add the rest of the path.
// If this position is at the same level as `from` position nothing will get added.
combined.path = combined.path.concat( this.path.slice( i + 1 ) );
combined.path = [ ...combined.path, ...this.path.slice( i + 1 ) ];

return combined;
}
Expand Down

0 comments on commit bfc6c88

Please sign in to comment.