- var contentBlock = listContents.shift(),\r
- listItem = doc.createElement( 'li' );\r
- contentBlock.moveChildren( listItem );\r
- contentBlock.remove();\r
- listItem.appendTo( listNode );\r
+ contentBlock = listContents.shift();\r
+ listItem = doc.createElement( 'li' );\r
+\r
+ // Preserve preformat block and heading structure when converting to list item. (#5335) (#5271)\r
+ if ( contentBlock.is( 'pre' ) || headerTagRegex.test( contentBlock.getName() ) )\r
+ contentBlock.appendTo( listItem );\r
+ else\r
+ {\r
+ contentBlock.copyAttributes( listItem );\r
+ // Remove direction attribute after it was merged into list root. (#7657)\r
+ if ( listDir && contentBlock.getDirection() )\r
+ {\r
+ listItem.removeStyle( 'direction' );\r
+ listItem.removeAttribute( 'dir' );\r
+ }\r
+ contentBlock.moveChildren( listItem );\r
+ contentBlock.remove();\r
+ }\r