]> scripts.mit.edu Git - autoinstalls/wordpress.git/blobdiff - wp-includes/js/wp-emoji.js
WordPress 4.5-scripts
[autoinstalls/wordpress.git] / wp-includes / js / wp-emoji.js
index 6fa00c2e6fbfd177c94c02cf75604e1719189841..dafcc36fdd3c722f0352460e584e3ba2cb91c7b4 100644 (file)
@@ -3,19 +3,11 @@
        function wpEmoji() {
                var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver,
 
-               /**
-                * Flag to determine if we should replace emoji characters with images.
-                *
-                * @since 4.2.0
-                *
-                * @var Boolean
-                */
-               replaceEmoji = false,
-
                // Private
                twemoji, timer,
                loaded = false,
-               count = 0;
+               count = 0,
+               ie11 = window.navigator.userAgent.indexOf( 'Trident/7.0' ) > 0;
 
                /**
                 * Runs when the document load event is fired, so we can do our first parse of the page.
                                                        node = addedNodes[ ii ];
 
                                                        if ( node.nodeType === 3 ) {
+                                                               if ( ! node.parentNode ) {
+                                                                       continue;
+                                                               }
+
+                                                               if ( ie11 ) {
+                                                                       /*
+                                                                        * IE 11's implementation of MutationObserver is buggy.
+                                                                        * It unnecessarily splits text nodes when it encounters a HTML
+                                                                        * template interpolation symbol ( "{{", for example ). So, we
+                                                                        * join the text nodes back together as a work-around.
+                                                                        */
+                                                                       while( node.nextSibling && 3 === node.nextSibling.nodeType ) {
+                                                                               node.nodeValue = node.nodeValue + node.nextSibling.nodeValue;
+                                                                               node.parentNode.removeChild( node.nextSibling );
+                                                                       }
+                                                               }
+
                                                                node = node.parentNode;
                                                        }
 
                function parse( object, args ) {
                        var params;
 
-                       if ( ! replaceEmoji || ! twemoji || ! object ||
+                       if ( settings.supports.everything || ! twemoji || ! object ||
                                ( 'string' !== typeof object && ( ! object.childNodes || ! object.childNodes.length ) ) ) {
 
                                return object;
                                                        return false;
                                        }
 
-                                       if ( ! settings.supports.flag && settings.supports.simple && settings.supports.unicode8 && settings.supports.diversity &&
-                                               ! /^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test( icon ) ) {
+                                       if ( settings.supports.everythingExceptFlag && ! /^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test( icon ) ) {
 
                                                return false;
                                        }
                 * Initialize our emoji support, and set up listeners.
                 */
                if ( settings ) {
-                       replaceEmoji = ! settings.supports.simple || ! settings.supports.flag || ! settings.supports.unicode8 || ! settings.supports.diversity;
-
                        if ( settings.DOMReady ) {
                                load();
                        } else {
                }
 
                return {
-                       replaceEmoji: replaceEmoji,
                        parse: parse,
                        test: test
                };