diff --git a/repo/bypass-preview/mod.js b/repo/bypass-preview/mod.js index feb4043..0a12995 100644 --- a/repo/bypass-preview/mod.js +++ b/repo/bypass-preview/mod.js @@ -22,15 +22,15 @@ module.exports = { const notion_elem = document.querySelector('.notion-app-inner'); if (!notion_elem) return; clearInterval(attempt_interval); - const observer = new MutationObserver(process); + const observer = new MutationObserver(handle); observer.observe(notion_elem, { childList: true, subtree: true, }); let pageHistory = []; - process(); - function process(list, observer) { + handle(); + function handle(list, observer) { const pageID = (location.search .slice(1) .split('&') diff --git a/repo/calendar-scroll/mod.js b/repo/calendar-scroll/mod.js index 9925117..0d2f2ff 100644 --- a/repo/calendar-scroll/mod.js +++ b/repo/calendar-scroll/mod.js @@ -55,13 +55,13 @@ module.exports = { ); }); - process(); - const observer = new MutationObserver(process); + handle(); + const observer = new MutationObserver(handle); observer.observe(notion_elem, { childList: true, subtree: true, }); - function process(list, observer) { + function handle(list, observer) { if (document.querySelector('#calendar-scroll-to-week')) return; const arrow = document.querySelector( '.notion-selectable.notion-collection_view_page-block .chevronLeft' diff --git a/repo/emoji-sets/mod.js b/repo/emoji-sets/mod.js index acce9ba..289da8b 100644 --- a/repo/emoji-sets/mod.js +++ b/repo/emoji-sets/mod.js @@ -11,7 +11,7 @@ module.exports = { tags: ['extension'], name: 'emoji sets', desc: 'pick from a variety of emoji styles to use.', - version: '0.2.0', + version: '0.3.0', author: 'dragonwocky', options: [ { @@ -38,58 +38,109 @@ module.exports = { ], hacks: { 'renderer/preload.js'(store, __exports) { - const useNative = - (store().style === 'microsoft' && process.platform === 'win32') || - (store().style === 'apple' && process.platform === 'darwin'); + let tweaked = false; - 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.addEventListener('readystatechange', (event) => { + if (document.readyState !== 'complete') return false; + let queue = []; + const observer = new MutationObserver((list, observer) => { + if (!queue.length) requestAnimationFrame(handle); + queue.push(...list); + }); + observer.observe(document.body, { + childList: true, + subtree: true, + characterData: true, + }); + function handle() { + queue = []; + const isMac = process.platform === 'darwin', + native = + (store().style === 'microsoft' && process.platform === 'win32') || + (store().style === 'apple' && isMac); + if (store().style !== (isMac ? 'apple' : 'twitter') || tweaked) { + if (isMac) { + if (native) { + document + .querySelectorAll('span[role="image"][aria-label]') + .forEach((el) => { + el.style.background = ''; + el.style.color = 'currentColor'; + }); + } else { + document + .querySelectorAll('span[role="image"][aria-label]') + .forEach((el) => { + if (!el.style.background.includes(store().style)) { + el.style.background = `url(https://emojicdn.elk.sh/${el.getAttribute( + 'aria-label' + )}?style=${store().style})`; + el.style.width = el.parentElement.style.fontSize; + el.style.backgroundSize = 'contain'; + el.style.backgroundRepeat = 'no-repeat'; + el.style.color = 'transparent'; + } + }); + } + } else { 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; + if (native) { + document.querySelectorAll('.notion-emoji').forEach((el) => { + if ( + el.parentElement.querySelectorAll( + 'span[role="image"][aria-label]' + ).length !== + el.parentElement.querySelectorAll('.notion-emoji').length + ) { + el.insertAdjacentHTML( + 'beforebegin', + `${el.getAttribute('alt')}` + ); + el.style.display = 'none'; + if (el.parentElement.getAttribute('contenteditable')) + el.remove(); + } + }); + } else { + document.querySelectorAll('.notion-emoji').forEach((el) => { + el.parentElement + .querySelectorAll('span[role="image"][aria-label]') + .forEach((text) => text.remove()); + if (!el.style.background.includes(store().style)) { + el.style.background = `url(https://emojicdn.elk.sh/${el.getAttribute( + 'aria-label' + )}?style=${store().style})`; + el.style.display = 'inline-block'; + el.style.backgroundSize = 'contain'; + el.style.backgroundRepeat = 'no-repeat'; + el.style.opacity = 1; + } + }); + } } + tweaked = true; } - }); - } + } + }); }, }, }; +// span[role="image"][aria-label] +/* */ + +//
+// 😀 +// 😀 +//
+ +// ✝ diff --git a/repo/emoji-sets/styles.css b/repo/emoji-sets/styles.css new file mode 100644 index 0000000..600e758 --- /dev/null +++ b/repo/emoji-sets/styles.css @@ -0,0 +1,5 @@ +.notion-emoji::after { + content: attr(aria-label, ''); + width: 1em; + height: 1em; +}