diff --git a/wp-includes/js/tinymce/plugins/wptextpattern/plugin.js b/wp-includes/js/tinymce/plugins/wptextpattern/plugin.js index f861dae822..375dd849e2 100644 --- a/wp-includes/js/tinymce/plugins/wptextpattern/plugin.js +++ b/wp-includes/js/tinymce/plugins/wptextpattern/plugin.js @@ -25,7 +25,8 @@ { start: '####', format: 'h4' }, { start: '#####', format: 'h5' }, { start: '######', format: 'h6' }, - { start: '>', format: 'blockquote' } + { start: '>', format: 'blockquote' }, + { regExp: /^\s*(?:(?:\* ?){3,}|(?:_ ?){3,}|(?:- ?){3,})\s*$/, element: 'hr' } ]; var inlinePatterns = [ @@ -37,10 +38,7 @@ ]; var canUndo; - var refNode; - var refPattern; var chars = []; - var zeroWidthSpaceNode; tinymce.each( inlinePatterns, function( pattern ) { tinymce.each( ( pattern.start + pattern.end ).split( '' ), function( c ) { @@ -51,17 +49,7 @@ } ); editor.on( 'selectionchange', function() { - var offset; - canUndo = null; - - if ( zeroWidthSpaceNode ) { - offset = zeroWidthSpaceNode.data.indexOf( '\u200b' ); - - if ( offset !== -1 ) { - zeroWidthSpaceNode.deleteData( offset, offset + 1 ); - } - } } ); editor.on( 'keydown', function( event ) { @@ -72,15 +60,13 @@ } if ( event.keyCode === VK.ENTER && ! VK.modifierPressed( event ) ) { - watchEnter(); + enter(); } }, true ); editor.on( 'keyup', function( event ) { if ( event.keyCode === VK.SPACEBAR && ! event.ctrlKey && ! event.metaKey && ! event.altKey ) { space(); - } else if ( event.keyCode === VK.ENTER && ! VK.modifierPressed( event ) ) { - enter(); } else if ( event.keyCode > 47 && ! ( event.keyCode >= 91 && event.keyCode <= 93 ) ) { inline(); } @@ -155,7 +141,18 @@ // We need to wait for native events to be triggered. setTimeout( function() { canUndo = 'space'; - zeroWidthSpaceNode = zero; + + editor.once( 'selectionchange', function() { + var offset; + + if ( zero ) { + offset = zero.data.indexOf( '\u200b' ); + + if ( offset !== -1 ) { + zero.deleteData( offset, offset + 1 ); + } + } + } ); } ); } } @@ -233,7 +230,7 @@ } ); } - function watchEnter() { + function enter() { var rng = editor.selection.getRng(), start = rng.startContainer, node = firstTextNode( start ), @@ -247,10 +244,17 @@ text = node.data; while ( i-- ) { - if ( text.indexOf( enterPatterns[ i ].start ) === 0 ) { - pattern = enterPatterns[ i ]; - break; - } + if ( enterPatterns[ i ].start ) { + if ( text.indexOf( enterPatterns[ i ].start ) === 0 ) { + pattern = enterPatterns[ i ]; + break; + } + } else if ( enterPatterns[ i ].regExp ) { + if ( enterPatterns[ i ].regExp.test( text ) ) { + pattern = enterPatterns[ i ]; + break; + } + } } if ( ! pattern ) { @@ -261,31 +265,27 @@ return; } - refNode = node; - refPattern = pattern; - } - - function ltrim( text ) { - return text ? text.replace( /^\s+/, '' ) : ''; - } - - function enter() { - if ( refNode ) { + editor.once( 'keyup', function() { editor.undoManager.add(); editor.undoManager.transact( function() { - editor.formatter.apply( refPattern.format, {}, refNode ); - refNode.replaceData( 0, refNode.data.length, ltrim( refNode.data.slice( refPattern.start.length ) ) ); + if ( pattern.format ) { + editor.formatter.apply( pattern.format, {}, node ); + node.replaceData( 0, node.data.length, ltrim( node.data.slice( pattern.start.length ) ) ); + } else if ( pattern.element ) { + editor.getBody().replaceChild( document.createElement( pattern.element ), node.parentNode ); + } } ); // We need to wait for native events to be triggered. setTimeout( function() { canUndo = 'enter'; } ); - } + } ); + } - refNode = null; - refPattern = null; + function ltrim( text ) { + return text ? text.replace( /^\s+/, '' ) : ''; } } ); } )( window.tinymce, window.setTimeout ); diff --git a/wp-includes/js/tinymce/plugins/wptextpattern/plugin.min.js b/wp-includes/js/tinymce/plugins/wptextpattern/plugin.min.js index 4d895fbb2b..3568256c40 100644 --- a/wp-includes/js/tinymce/plugins/wptextpattern/plugin.min.js +++ b/wp-includes/js/tinymce/plugins/wptextpattern/plugin.min.js @@ -1 +1 @@ -!function(a,b){a.PluginManager.add("wptextpattern",function(c){function d(){function d(a){for(var b,c=q.length;c--;)if(g=q[c],b=a.data.indexOf(g.end),-1!==b)return b}var e,f,g,h,i,k=c.selection.getRng(),l=k.startContainer,n=k.startOffset;3===l.nodeType&&l.data.length&&n&&-1!==a.inArray(r,l.data.charAt(n-1))&&(e=d(l),f=l.data.lastIndexOf(g.end),e!==f&&-1!==f&&(f-e<=g.start.length||-1===l.data.slice(e+g.start.length,f).indexOf(g.start.slice(0,1))&&(h=c.formatter.get(g.format),h&&h[0].inline&&(c.undoManager.add(),c.undoManager.transact(function(){l.insertData(n,"\u200b"),l=l.splitText(e),i=l.splitText(n-e),l.deleteData(0,g.start.length),l.deleteData(l.data.length-g.end.length,g.end.length),c.formatter.apply(g.format,{},l),c.selection.setCursorLocation(i,1)}),b(function(){j="space",m=i})))))}function e(a){var b,d=c.dom.getParent(a,"p");if(d){for(;(b=d.firstChild)&&3!==b.nodeType;)d=b;if(b)return b.data||(b=b.nextSibling&&3===b.nextSibling.nodeType?b.nextSibling:null),b}}function f(){var d,f,g=c.selection.getRng(),h=g.startContainer;h&&e(h)===h&&(d=h.parentNode,f=h.data,a.each(o,function(a){var e=f.match(a.regExp);if(e&&g.startOffset===e[0].length)return c.undoManager.add(),c.undoManager.transact(function(){h.deleteData(0,e[0].length),d.innerHTML||d.appendChild(document.createElement("br")),c.selection.setCursorLocation(d),c.execCommand(a.cmd)}),b(function(){j="space"}),!1}))}function g(){var b,d,f=c.selection.getRng(),g=f.startContainer,h=e(g),i=p.length;if(h){for(b=h.data;i--;)if(0===b.indexOf(p[i].start)){d=p[i];break}d&&(h!==g||a.trim(b)!==d.start)&&(k=h,l=d)}}function h(a){return a?a.replace(/^\s+/,""):""}function i(){k&&(c.undoManager.add(),c.undoManager.transact(function(){c.formatter.apply(l.format,{},k),k.replaceData(0,k.data.length,h(k.data.slice(l.start.length)))}),b(function(){j="enter"})),k=null,l=null}var j,k,l,m,n=a.util.VK,o=[{regExp:/^[*-]\s/,cmd:"InsertUnorderedList"},{regExp:/^1[.)]\s/,cmd:"InsertOrderedList"}],p=[{start:"##",format:"h2"},{start:"###",format:"h3"},{start:"####",format:"h4"},{start:"#####",format:"h5"},{start:"######",format:"h6"},{start:">",format:"blockquote"}],q=[{start:"*",end:"*",format:"italic"},{start:"**",end:"**",format:"bold"},{start:"_",end:"_",format:"italic"},{start:"__",end:"__",format:"bold"},{start:"`",end:"`",format:"code"}],r=[];a.each(q,function(b){a.each((b.start+b.end).split(""),function(b){-1===a.inArray(r,b)&&r.push(b)})}),c.on("selectionchange",function(){var a;j=null,m&&(a=m.data.indexOf("\u200b"),-1!==a&&m.deleteData(a,a+1))}),c.on("keydown",function(a){(j&&27===a.keyCode||"space"===j&&a.keyCode===n.BACKSPACE)&&(c.undoManager.undo(),a.preventDefault(),a.stopImmediatePropagation()),a.keyCode!==n.ENTER||n.modifierPressed(a)||g()},!0),c.on("keyup",function(a){a.keyCode!==n.SPACEBAR||a.ctrlKey||a.metaKey||a.altKey?a.keyCode!==n.ENTER||n.modifierPressed(a)?a.keyCode>47&&!(a.keyCode>=91&&a.keyCode<=93)&&d():i():f()})})}(window.tinymce,window.setTimeout); \ No newline at end of file +!function(a,b){a.PluginManager.add("wptextpattern",function(c){function d(){function d(a){for(var b,c=m.length;c--;)if(g=m[c],b=a.data.indexOf(g.end),-1!==b)return b}var e,f,g,h,j,k=c.selection.getRng(),l=k.startContainer,o=k.startOffset;3===l.nodeType&&l.data.length&&o&&-1!==a.inArray(n,l.data.charAt(o-1))&&(e=d(l),f=l.data.lastIndexOf(g.end),e!==f&&-1!==f&&(f-e<=g.start.length||-1===l.data.slice(e+g.start.length,f).indexOf(g.start.slice(0,1))&&(h=c.formatter.get(g.format),h&&h[0].inline&&(c.undoManager.add(),c.undoManager.transact(function(){l.insertData(o,"\u200b"),l=l.splitText(e),j=l.splitText(o-e),l.deleteData(0,g.start.length),l.deleteData(l.data.length-g.end.length,g.end.length),c.formatter.apply(g.format,{},l),c.selection.setCursorLocation(j,1)}),b(function(){i="space",c.once("selectionchange",function(){var a;j&&(a=j.data.indexOf("\u200b"),-1!==a&&j.deleteData(a,a+1))})})))))}function e(a){var b,d=c.dom.getParent(a,"p");if(d){for(;(b=d.firstChild)&&3!==b.nodeType;)d=b;if(b)return b.data||(b=b.nextSibling&&3===b.nextSibling.nodeType?b.nextSibling:null),b}}function f(){var d,f,g=c.selection.getRng(),h=g.startContainer;h&&e(h)===h&&(d=h.parentNode,f=h.data,a.each(k,function(a){var e=f.match(a.regExp);if(e&&g.startOffset===e[0].length)return c.undoManager.add(),c.undoManager.transact(function(){h.deleteData(0,e[0].length),d.innerHTML||d.appendChild(document.createElement("br")),c.selection.setCursorLocation(d),c.execCommand(a.cmd)}),b(function(){i="space"}),!1}))}function g(){var d,f,g=c.selection.getRng(),j=g.startContainer,k=e(j),m=l.length;if(k){for(d=k.data;m--;)if(l[m].start){if(0===d.indexOf(l[m].start)){f=l[m];break}}else if(l[m].regExp&&l[m].regExp.test(d)){f=l[m];break}f&&(k!==j||a.trim(d)!==f.start)&&c.once("keyup",function(){c.undoManager.add(),c.undoManager.transact(function(){f.format?(c.formatter.apply(f.format,{},k),k.replaceData(0,k.data.length,h(k.data.slice(f.start.length)))):f.element&&c.getBody().replaceChild(document.createElement(f.element),k.parentNode)}),b(function(){i="enter"})})}}function h(a){return a?a.replace(/^\s+/,""):""}var i,j=a.util.VK,k=[{regExp:/^[*-]\s/,cmd:"InsertUnorderedList"},{regExp:/^1[.)]\s/,cmd:"InsertOrderedList"}],l=[{start:"##",format:"h2"},{start:"###",format:"h3"},{start:"####",format:"h4"},{start:"#####",format:"h5"},{start:"######",format:"h6"},{start:">",format:"blockquote"},{regExp:/^\s*(?:(?:\* ?){3,}|(?:_ ?){3,}|(?:- ?){3,})\s*$/,element:"hr"}],m=[{start:"*",end:"*",format:"italic"},{start:"**",end:"**",format:"bold"},{start:"_",end:"_",format:"italic"},{start:"__",end:"__",format:"bold"},{start:"`",end:"`",format:"code"}],n=[];a.each(m,function(b){a.each((b.start+b.end).split(""),function(b){-1===a.inArray(n,b)&&n.push(b)})}),c.on("selectionchange",function(){i=null}),c.on("keydown",function(a){(i&&27===a.keyCode||"space"===i&&a.keyCode===j.BACKSPACE)&&(c.undoManager.undo(),a.preventDefault(),a.stopImmediatePropagation()),a.keyCode!==j.ENTER||j.modifierPressed(a)||g()},!0),c.on("keyup",function(a){a.keyCode!==j.SPACEBAR||a.ctrlKey||a.metaKey||a.altKey?a.keyCode>47&&!(a.keyCode>=91&&a.keyCode<=93)&&d():f()})})}(window.tinymce,window.setTimeout); \ No newline at end of file diff --git a/wp-includes/js/tinymce/wp-tinymce.js.gz b/wp-includes/js/tinymce/wp-tinymce.js.gz index ed28a8cfb3..c715c65822 100644 Binary files a/wp-includes/js/tinymce/wp-tinymce.js.gz and b/wp-includes/js/tinymce/wp-tinymce.js.gz differ diff --git a/wp-includes/version.php b/wp-includes/version.php index b172347202..68371110f3 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -4,7 +4,7 @@ * * @global string $wp_version */ -$wp_version = '4.5-beta1-36718'; +$wp_version = '4.5-beta1-36719'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.