You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
import IS_EMOJI_SUPPORTED from "./emojiSupport"; |
|
|
|
|
|
export type EMOJI_VERSION = '' | '14'; |
|
|
|
|
|
const EMOJI_VERSIONS_SUPPORTED: { |
|
|
[v in EMOJI_VERSION]: boolean |
|
|
} = {} as any; |
|
|
|
|
|
// Thanks to WebZ for the detect |
|
|
function isEmojiSupported(emoji: string) { |
|
|
const ALLOWABLE_CALCULATION_ERROR_SIZE = 5; |
|
|
const inlineEl = document.createElement('span'); |
|
|
inlineEl.classList.add('emoji'); |
|
|
document.body.appendChild(inlineEl); |
|
|
|
|
|
inlineEl.innerText = emoji; // Emoji from 14.0 version |
|
|
const newEmojiWidth = inlineEl.offsetWidth; |
|
|
inlineEl.innerText = '❤️'; // Emoji from 1.0 version |
|
|
const legacyEmojiWidth = inlineEl.offsetWidth; |
|
|
|
|
|
document.body.removeChild(inlineEl); |
|
|
|
|
|
return Math.abs(newEmojiWidth - legacyEmojiWidth) < ALLOWABLE_CALCULATION_ERROR_SIZE; |
|
|
} |
|
|
|
|
|
if(IS_EMOJI_SUPPORTED) { |
|
|
EMOJI_VERSIONS_SUPPORTED[''] = true; |
|
|
|
|
|
const a: [keyof typeof EMOJI_VERSIONS_SUPPORTED, string][] = [ |
|
|
['14', '🫱🏻'] |
|
|
]; |
|
|
|
|
|
a.forEach(([version, emoji]) => { |
|
|
EMOJI_VERSIONS_SUPPORTED[version] = isEmojiSupported(emoji); |
|
|
}); |
|
|
} |
|
|
|
|
|
export default EMOJI_VERSIONS_SUPPORTED;
|
|
|
|