+ // We must handle two cases here:
+ // 1. <tr>[<td>Cell</td>]</tr> (IE9+, Edge, Chrome, Firefox)
+ // 2. <td>[Cell]</td> (IE8-, Safari)
+ function isSelectedCell( range ) {
+ var start = range.startContainer,
+ end = range.endContainer;
+
+ if ( start.is && ( start.is( 'tr' ) ||
+ ( start.is( 'td' ) && start.equals( end ) && range.endOffset === start.getChildCount() ) ) ) {
+ return true;
+ }
+
+ return false;
+ }
+
+ function cloneCell( range ) {
+ var start = range.startContainer;
+
+ if ( start.is( 'tr' ) ) {
+ return range.cloneContents();
+ }
+
+ return start.clone( true );
+ }
+