@ -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 ) {