/* * emoji sets * (c) 2020 dragonwocky (https://dragonwocky.me/) * under the MIT license */ 'use strict'; module.exports = { id: 'a2401ee1-93ba-4b8c-9781-7f570bf5d71e', tags: ['extension'], name: 'emoji sets', desc: 'pick from a variety of emoji styles to use.', version: '0.2.0', author: 'dragonwocky', options: [ { key: 'style', label: '', type: 'select', value: [ 'twitter', 'apple', 'google', 'microsoft', 'samsung', 'whatsapp', 'facebook', 'joypixels', 'openmoji', 'emojidex', 'messenger', 'lg', 'htc', 'mozilla', ], }, ], hacks: { 'renderer/preload.js'(store, __exports) { const useNative = (store().style === 'microsoft' && process.platform === 'win32') || (store().style === 'apple' && process.platform === 'darwin'); Object.defineProperty(navigator, 'userAgent', { get: function () { // macOS useragent uses system emojis instead of images // = no need to download return useNative ? 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Safari/605.1.15 Notion/2.0.9 Electron/6.1.5' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Notion/2.0.9 Chrome/76.0.3809.146 Electron/6.1.5 Safari/537.36'; }, }); if (!useNative) { let tweaked = false; document.addEventListener('readystatechange', (event) => { if (document.readyState !== 'complete') return false; let queue = []; const observer = new MutationObserver((list, observer) => { if (!queue.length) requestAnimationFrame(process); queue.push(...list); }); observer.observe(document.body, { childList: true, subtree: true, characterData: true, }); function process() { queue = []; if (store().style !== 'twitter' || tweaked) { document .querySelectorAll( '[src*="notion-emojis.s3"]:not(.notion-emoji)' ) .forEach((el) => el.remove()); document.querySelectorAll('.notion-emoji').forEach((el) => { el.style.setProperty( 'background', `url(https://emojicdn.elk.sh/${el.getAttribute( 'alt' )}?style=${store().style})` ); el.style.setProperty('background-size', 'contain'); el.style.setProperty('opacity', '1'); }); tweaked = true; } } }); } }, }, };