@ -6,13 +6,18 @@ const trie = new Trie(Object.keys(unicodeMapping));
const assetHost = process . env . CDN_HOST || '' ;
// Convert to file names from emojis. (For different variation selector emojis)
const emojiFilenames = ( emojis ) => {
return emojis . map ( v => unicodeMapping [ v ] . filename ) ;
} ;
// Emoji requiring extra borders depending on theme
const darkEmoji = '🎱🐜⚫🖤⬛◼️◾◼️✒️▪️💣🎳📷📸♣️🕶️✴️🔌💂♀️📽️🍳🦍💂🔪🕳️🕹️🕋🖊️🖋️💂♂️🎤🎓🎥🎼♠️🎩🦃📼📹🎮🐃🏴' ;
const lightEmoji = '👽⚾🐔☁️💨🕊️👀🍥👻🐐❕❔⛸️🌩️🔊🔇📃🌧️🐏🍚🍙🐓🐑💀☠️🌨️🔉🔈💬💭🏐🏳️⚪⬜◽◻️▫️' ;
const darkEmoji = emojiFilenames ( [ '🎱' , ' 🐜' , ' ⚫' , ' 🖤' , ' ⬛' , ' ◼️' , ' ◾' , ' ◼️' , ' ✒️' , ' ▪️' , ' 💣' , ' 🎳' , ' 📷' , ' 📸' , ' ♣️' , ' 🕶️' , ' ✴️' , ' 🔌' , ' 💂♀️' , ' 📽️' , ' 🍳' , ' 🦍' , ' 💂' , ' 🔪' , ' 🕳️' , ' 🕹️' , ' 🕋' , ' 🖊️' , ' 🖋️' , ' 💂♂️' , ' 🎤' , ' 🎓' , ' 🎥' , ' 🎼' , ' ♠️' , ' 🎩' , ' 🦃' , ' 📼' , ' 📹' , ' 🎮' , ' 🐃' , ' 🏴' ] ) ;
const lightEmoji = emojiFilenames ( [ '👽' , ' ⚾' , ' 🐔' , ' ☁️' , ' 💨' , ' 🕊️' , ' 👀' , ' 🍥' , ' 👻' , ' 🐐' , ' ❕' , ' ❔' , ' ⛸️' , ' 🌩️' , ' 🔊' , ' 🔇' , ' 📃' , ' 🌧️' , ' 🐏' , ' 🍚' , ' 🍙' , ' 🐓' , ' 🐑' , ' 💀' , ' ☠️' , ' 🌨️' , ' 🔉' , ' 🔈' , ' 💬' , ' 💭' , ' 🏐' , ' 🏳️' , ' ⚪' , ' ⬜' , ' ◽' , ' ◻️' , ' ▫️' ] ) ;
const emojiFilename = ( filename , match ) => {
const emojiFilename = ( filename ) => {
const borderedEmoji = ( document . body && document . body . classList . contains ( 'theme-mastodon-light' ) ) ? lightEmoji : darkEmoji ;
return borderedEmoji . includes ( match ) ? ( filename + '_border' ) : filename ;
return borderedEmoji . includes ( filename ) ? ( filename + '_border' ) : filename ;
} ;
const emojify = ( str , customEmojis = { } ) => {
@ -69,7 +74,7 @@ const emojify = (str, customEmojis = {}) => {
} else { // matched to unicode emoji
const { filename , shortCode } = unicodeMapping [ match ] ;
const title = shortCode ? ` : ${ shortCode } : ` : '' ;
replacement = ` <img draggable="false" class="emojione" alt=" ${ match } " title=" ${ title } " src=" ${ assetHost } /emoji/ ${ emojiFilename ( filename , match )} .svg" /> ` ;
replacement = ` <img draggable="false" class="emojione" alt=" ${ match } " title=" ${ title } " src=" ${ assetHost } /emoji/ ${ emojiFilename ( filename ) } .svg" /> ` ;
rend = i + match . length ;
// If the matched character was followed by VS15 (for selecting text presentation), skip it.
if ( str . codePointAt ( rend ) === 65038 ) {