~canonical-sysadmins/wordpress/4.8.1

« back to all changes in this revision

Viewing changes to wp-includes/js/wp-emoji.js

  • Committer: Barry Price
  • Date: 2016-08-17 04:49:28 UTC
  • mto: This revision was merged to the branch mainline in revision 22.
  • Revision ID: barry.price@canonical.com-20160817044928-viijiwb4tl8jwzmp
new upstream release 4.6

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
        function wpEmoji() {
4
4
                var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver,
5
5
 
 
6
                // Compression and maintain local scope
 
7
                document = window.document,
 
8
 
6
9
                // Private
7
10
                twemoji, timer,
8
11
                loaded = false,
10
13
                ie11 = window.navigator.userAgent.indexOf( 'Trident/7.0' ) > 0;
11
14
 
12
15
                /**
 
16
                 * Detect if the browser supports SVG.
 
17
                 *
 
18
                 * @since 4.6.0
 
19
                 *
 
20
                 * @return {Boolean} True if the browser supports svg, false if not.
 
21
                 */
 
22
                function browserSupportsSvgAsImage() {
 
23
                        if ( !! document.implementation.hasFeature ) {
 
24
                                // Source: Modernizr
 
25
                                // https://github.com/Modernizr/Modernizr/blob/master/feature-detects/svg/asimg.js
 
26
                                return document.implementation.hasFeature( 'http://www.w3.org/TR/SVG11/feature#Image', '1.1' );
 
27
                        }
 
28
 
 
29
                        // document.implementation.hasFeature is deprecated. It can be presumed
 
30
                        // if future browsers remove it, the browser will support SVGs as images.
 
31
                        return true;
 
32
                }
 
33
 
 
34
                /**
13
35
                 * Runs when the document load event is fired, so we can do our first parse of the page.
14
36
                 *
15
37
                 * @since 4.2.0
112
134
                function test( text ) {
113
135
                        // Single char. U+20E3 to detect keycaps. U+00A9 "copyright sign" and U+00AE "registered sign" not included.
114
136
                        var single = /[\u203C\u2049\u20E3\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2300\u231A\u231B\u2328\u2388\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638\u2639\u263A\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692\u2693\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753\u2754\u2755\u2757\u2763\u2764\u2795\u2796\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05\u2B06\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]/,
115
 
                        // Surrogate pair range. Only tests for the second half. 
 
137
                        // Surrogate pair range. Only tests for the second half.
116
138
                        pair = /[\uDC00-\uDFFF]/;
117
139
 
118
140
                        if ( text ) {
141
163
 
142
164
                        args = args || {};
143
165
                        params = {
144
 
                                base: settings.baseUrl,
145
 
                                ext: settings.ext,
 
166
                                base: browserSupportsSvgAsImage() ? settings.svgUrl : settings.baseUrl,
 
167
                                ext:  browserSupportsSvgAsImage() ? settings.svgExt : settings.ext,
146
168
                                className: args.className || 'emoji',
147
169
                                callback: function( icon, options ) {
148
170
                                        // Ignore some standard characters that TinyMCE recommends in its character map.
158
180
                                                        return false;
159
181
                                        }
160
182
 
161
 
                                        if ( settings.supports.everythingExceptFlag && ! /^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test( icon ) ) {
162
 
 
 
183
                                        if ( settings.supports.everythingExceptFlag &&
 
184
                                                ! /^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test( icon ) && // Country flags
 
185
                                                ! /^(1f3f3-fe0f-200d-1f308|1f3f4-200d-2620-fe0f)$/.test( icon )             // Rainbow and pirate flags
 
186
                                        ) {
163
187
                                                return false;
164
188
                                        }
165
189