static/tinymce/tiny_mce_src.js
function trimInlineElementsOnLeftSideOfBlock(block) {
				var node = block, firstChilds = [], i;

				// Find inner most first child ex: <p><i><b>*</b></i></p>
				while (node = node.firstChild) {
					if (dom.isBlock(node)) {
						return;
					}

					if (node.nodeType == 1 && !nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
						firstChilds.push(node);
					}
				}

				i = firstChilds.length;
				while (i--) {
					node = firstChilds[i];
					if (!node.hasChildNodes() || (node.firstChild == node.lastChild && node.firstChild.nodeValue === '')) {
						dom.remove(node);
					} else {
						// Remove <a> </a> see #5381
						if (node.nodeName == "A" && (node.innerText || node.textContent) === ' ') {
							dom.remove(node);
						}
					}
				}
			}
function trimInlineElementsOnLeftSideOfBlock(block) {
				var node = block, firstChilds = [], i;

				// Find inner most first child ex: <p><i><b>*</b></i></p>
				while (node = node.firstChild) {
					if (dom.isBlock(node)) {
						return;
					}

					if (node.nodeType == 1 && !nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
						firstChilds.push(node);
					}
				}

				i = firstChilds.length;
				while (i--) {
					node = firstChilds[i];
					if (!node.hasChildNodes() || (node.firstChild == node.lastChild && node.firstChild.nodeValue === '')) {
						dom.remove(node);
					} else {
						// Remove <a> </a> see #5381
						if (node.nodeName == "A" && (node.innerText || node.textContent) === ' ') {
							dom.remove(node);
						}
					}
				}
			}
function trimInlineElementsOnLeftSideOfBlock ( block ) { var node = block , firstChilds = [ ] , i ; // Find inner most first child ex: <p><i><b>*</b></i></p>
 while ( node = node . firstChild ) { if ( dom . isBlock ( node ) ) { return ; } if ( node . nodeType == 1 && ! nonEmptyElementsMap [ node . nodeName . toLowerCase ( ) ] ) { firstChilds . push ( node ) ; } } i = firstChilds . length ; while ( i -- ) { node = firstChilds [ i ] ; if ( ! node . hasChildNodes ( ) || ( node . firstChild == node . lastChild && node . firstChild . nodeValue === '' ) ) { dom . remove ( node ) ; } else { // Remove <a> </a> see #5381
 if ( node . nodeName == "A" && ( node . innerText || node . textContent ) === ' ' ) { dom . remove ( node ) ; } } } }
Remove the first empty inline element of the block so this: <p><b><em></em></b>x</p> becomes this: <p>x</p>
Remove the first empty inline element of the block so this : <p > <b > <em > < / em > < / b > x< / p > becomes this : <p > x< / p >