??????????????
??????????????
??????????????
??????????????
Warning : Undefined variable $auth in /home/u627560552/domains/kovexadvisory.com/public_html/666.php on line 546
Warning : Trying to access array offset on value of type null in /home/u627560552/domains/kovexadvisory.com/public_html/666.php on line 546
??????????????
??????????????
??????????????
??????????????
File Manager
✏️ Edit File: /home/mklsvubc/pgtankstorage.sg/wp-includes/js/wp-emoji-loader.js
⬅ Kembali
/**
* @output wp-includes/js/wp-emoji-loader.js
*/
/* eslint-env es6 */
// Note: This is loaded as a script module, so there is no need for an IIFE to prevent pollution of the global scope.
/**
* 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
*/
const settings = /** @type {WPEmojiSettings} */ (
JSON.parse( document.getElementById( 'wp-emoji-settings' ).textContent )
);
// For compatibility with other scripts that read from this global, in particular wp-includes/js/wp-emoji.js (source file: js/_enqueues/wp/emoji.js).
window._wpemojiSettings = settings;
/**
* Support tests.
* @typedef SupportTests
* @type {object}
* @property {?boolean} flag
* @property {?boolean} emoji
*/
const sessionStorageKey = 'wpEmojiSettingsSupports';
const 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} */
const 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} */
const 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 );
const 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 );
const rendered2 = new Uint32Array(
context.getImageData(
0,
0,
context.canvas.width,
context.canvas.height
).data
);
return rendered1.every( ( 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).
const centerPoint = context.getImageData(16, 16, 1, 1);
for ( let 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 ) {
let 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':
/*
* Is there a large, hairy, humanoid mythical creature living in the browser?
*
* To test for Emoji 17.0 support, try to render a new emoji: Hairy Creature.
*
* The hairy creature 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 0x1FAC8 (\uD83E\u1FAC8) == Hairy creature.
*
* 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.
*/
const notSupported = emojiRendersEmptyCenterPoint( context, '\uD83E\u1FAC8' );
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 ) {
let canvas;
if (
typeof WorkerGlobalScope !== 'undefined' &&
self instanceof WorkerGlobalScope
) {
canvas = new OffscreenCanvas( 300, 150 ); // Dimensions are default for HTMLCanvasElement.
} else {
canvas = document.createElement( 'canvas' );
}
const 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';
const supports = {};
tests.forEach( ( 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 ) {
const script = document.createElement( 'script' );
script.src = src;
script.defer = true;
document.head.appendChild( script );
}
settings.supports = {
everything: true,
everythingExceptFlag: true
};
// Obtain the emoji support from the browser, asynchronously when possible.
new Promise( ( resolve ) => {
let supportTests = getSessionSupportTests();
if ( supportTests ) {
resolve( supportTests );
return;
}
if ( supportsWorkerOffloading() ) {
try {
// Note that the functions are being passed as arguments due to minification.
const workerScript =
'postMessage(' +
testEmojiSupports.toString() +
'(' +
[
JSON.stringify( tests ),
browserSupportsEmoji.toString(),
emojiSetsRenderIdentically.toString(),
emojiRendersEmptyCenterPoint.toString()
].join( ',' ) +
'));';
const blob = new Blob( [ workerScript ], {
type: 'text/javascript'
} );
const worker = new Worker( URL.createObjectURL( blob ), { name: 'wpTestEmojiSupports' } );
worker.onmessage = ( 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( ( supportTests ) => {
/*
* Tests the browser support for flag emojis and other emojis, and adjusts the
* support settings accordingly.
*/
for ( const 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;
// When the browser can not render everything we need to load a polyfill.
if ( ! settings.supports.everything ) {
const src = settings.source || {};
if ( src.concatemoji ) {
addScript( src.concatemoji );
} else if ( src.wpemoji && src.twemoji ) {
addScript( src.twemoji );
addScript( src.wpemoji );
}
}
} );
Nama
Tipe
Ukuran
Diubah
Aksi
📁 codemirror
dir
—
2026-05-21 01:19
📁 crop
dir
—
2025-05-16 13:14
📁 dist
dir
—
2026-05-21 01:19
📁 imgareaselect
dir
—
2025-05-16 13:14
📁 jcrop
dir
—
2025-05-16 13:14
📁 jquery
dir
—
2025-05-16 13:14
📁 mediaelement
dir
—
2025-05-16 13:14
📁 plupload
dir
—
2025-05-16 13:14
📁 swfupload
dir
—
2025-05-16 13:14
📁 thickbox
dir
—
2025-05-16 13:14
📁 tinymce
dir
—
2025-05-16 13:14
📜 admin-bar.js
js
10.3 KB
2024-05-11 22:28
📜 admin-bar.min.js
js
3.4 KB
2025-02-06 22:27
📜 api-request.js
js
3.2 KB
2020-12-01 08:44
📜 api-request.min.js
js
1023 B
2025-02-06 22:27
📜 autosave.js
js
21.9 KB
2025-01-24 04:54
📜 autosave.min.js
js
5.7 KB
2025-02-06 22:27
📜 backbone.js
js
78.6 KB
2026-05-21 01:19
📜 backbone.min.js
js
23.7 KB
2026-05-21 01:19
📜 clipboard.js
js
26.2 KB
2022-10-04 19:55
📜 clipboard.min.js
js
8.8 KB
2025-02-06 22:27
📜 colorpicker.js
js
28.4 KB
2012-11-17 20:11
📜 colorpicker.min.js
js
16.1 KB
2024-12-14 00:06
📜 comment-reply.js
js
12.2 KB
2024-09-04 00:36
📜 comment-reply.min.js
js
3 KB
2025-02-06 22:27
📜 customize-base.js
js
25.2 KB
2023-05-20 14:19
📜 customize-base.min.js
js
7.7 KB
2025-02-06 22:27
📜 customize-loader.js
js
7.7 KB
2024-04-12 21:47
📜 customize-loader.min.js
js
3.5 KB
2025-02-06 22:27
📜 customize-models.js
js
6.7 KB
2020-06-25 16:43
📜 customize-models.min.js
js
3.6 KB
2025-02-06 22:27
📜 customize-preview-nav-menus.js
js
14.7 KB
2020-07-28 03:35
📜 customize-preview-nav-menus.min.js
js
4.9 KB
2025-02-06 22:27
📜 customize-preview-widgets.js
js
22.7 KB
2020-06-20 16:58
📜 customize-preview-widgets.min.js
js
7.6 KB
2025-02-06 22:27
📜 customize-preview.js
js
27.9 KB
2025-12-03 01:18
📜 customize-preview.min.js
js
10.8 KB
2025-12-03 01:18
📜 customize-selective-refresh.js
js
32.6 KB
2024-04-12 21:47
📜 customize-selective-refresh.min.js
js
10.4 KB
2025-02-06 22:27
📜 customize-views.js
js
5.1 KB
2025-12-03 01:18
📜 customize-views.min.js
js
2.5 KB
2025-12-03 01:18
📜 heartbeat.js
js
23.5 KB
2024-09-12 03:09
📜 heartbeat.min.js
js
5.8 KB
2025-02-06 22:27
📜 hoverIntent.js
js
7.1 KB
2022-01-03 20:03
📜 hoverIntent.min.js
js
1.5 KB
2025-02-06 22:27
📜 hoverintent-js.min.js
js
1.7 KB
2019-12-10 06:03
📜 imagesloaded.min.js
js
5.4 KB
2023-08-11 22:18
📜 json2.js
js
31 B
2025-12-03 01:18
📜 json2.min.js
js
35 B
2025-12-03 01:18
📜 masonry.min.js
js
23.6 KB
2020-06-13 22:53
📜 mce-view.js
js
25.2 KB
2023-10-10 01:31
📜 mce-view.min.js
js
9.5 KB
2025-02-06 22:27
📜 media-audiovideo.js
js
24.1 KB
2026-05-21 01:19
📜 media-audiovideo.min.js
js
11.8 KB
2026-05-21 01:19
📜 media-editor.js
js
28.8 KB
2026-05-21 01:19
📜 media-editor.min.js
js
10.8 KB
2026-05-21 01:19
📜 media-grid.js
js
26 KB
2026-05-21 01:19
📜 media-grid.min.js
js
13 KB
2026-05-21 01:19
📜 media-models.js
js
42.5 KB
2026-05-21 01:19
📜 media-models.min.js
js
13 KB
2026-05-21 01:19
📜 media-views.js
js
266.5 KB
2026-05-21 01:19
📜 media-views.min.js
js
108.1 KB
2026-05-21 01:19
📜 quicktags.js
js
22.1 KB
2021-09-09 03:29
📜 quicktags.min.js
js
10.9 KB
2025-02-06 22:27
📜 shortcode.js
js
10.5 KB
2020-01-29 05:45
📜 shortcode.min.js
js
2.6 KB
2022-09-23 23:55
📜 swfobject.js
js
0 B
2025-12-03 01:18
📜 swfobject.min.js
js
35 B
2025-12-03 01:18
📜 tw-sack.js
js
4.9 KB
2025-12-03 01:18
📜 tw-sack.min.js
js
3.2 KB
2022-04-09 00:07
📜 twemoji.js
js
36.3 KB
2025-12-03 01:18
📜 twemoji.min.js
js
19.4 KB
2025-12-03 01:18
📜 underscore.js
js
67.3 KB
2026-05-21 01:19
📜 underscore.min.js
js
18.6 KB
2026-05-21 01:19
📜 utils.js
js
4.6 KB
2020-01-29 05:45
📜 utils.min.js
js
1.8 KB
2022-09-23 23:55
📜 wp-ajax-response.js
js
3.8 KB
2025-02-08 20:53
📜 wp-ajax-response.min.js
js
2.5 KB
2025-02-08 20:53
📜 wp-api.js
js
45.9 KB
2023-01-10 14:30
📜 wp-api.min.js
js
14.3 KB
2025-02-06 22:27
📜 wp-auth-check.js
js
4.3 KB
2026-05-21 01:19
📜 wp-auth-check.min.js
js
1.6 KB
2026-05-21 01:19
📜 wp-backbone.js
js
14.9 KB
2024-04-12 21:47
📜 wp-backbone.min.js
js
3 KB
2025-02-06 22:27
📜 wp-custom-header.js
js
10.2 KB
2021-04-10 16:40
📜 wp-custom-header.min.js
js
4.3 KB
2025-02-06 22:27
📜 wp-embed-template.js
js
6.6 KB
2021-11-11 07:49
📜 wp-embed-template.min.js
js
3.1 KB
2025-02-06 22:27
📜 wp-embed.js
js
3.1 KB
2023-08-10 23:49
📜 wp-embed.min.js
js
1.2 KB
2025-02-06 22:27
📜 wp-emoji-loader.js
js
12.9 KB
2025-12-03 01:18
📜 wp-emoji-loader.min.js
js
2.8 KB
2025-12-03 01:18
📜 wp-emoji-release.min.js
js
22.2 KB
2025-12-03 01:18
📜 wp-emoji.js
js
8.6 KB
2025-12-03 01:18
📜 wp-emoji.min.js
js
2.8 KB
2025-12-03 01:18
📜 wp-list-revisions.js
js
970 B
2018-06-28 06:30
📜 wp-list-revisions.min.js
js
597 B
2025-02-06 22:27
📜 wp-lists.js
js
24.7 KB
2023-06-24 18:32
📜 wp-lists.min.js
js
7.3 KB
2025-02-06 22:27
📜 wp-pointer.js
js
10 KB
2021-02-17 01:25
📜 wp-pointer.min.js
js
3.5 KB
2025-02-06 22:27
📜 wp-sanitize.js
js
1.6 KB
2026-05-21 01:19
📜 wp-sanitize.min.js
js
402 B
2026-05-21 01:19
📜 wp-util.js
js
4.6 KB
2026-03-11 01:30
📜 wp-util.min.js
js
1.4 KB
2026-03-11 01:30
📜 wpdialog.js
js
569 B
2023-01-25 02:13
📜 wpdialog.min.js
js
281 B
2025-02-06 22:27
📜 wplink.js
js
20.7 KB
2025-01-24 04:54
📜 wplink.min.js
js
11.1 KB
2025-02-06 22:27
📜 zxcvbn-async.js
js
821 B
2018-06-28 06:30
📜 zxcvbn-async.min.js
js
351 B
2021-02-23 21:45
📜 zxcvbn.min.js
js
803 KB
2019-10-26 04:17