// ==UserScript== // @name Atomi Dark Mode // @namespace atomi-dark // @version 1.0.0 // @author Callum Wong // @description Dark mode for Atomi // @license MIT // @homepageURL https://github.com/wongcallum/atomi-userscripts // @downloadURL https://raw.githubusercontent.com/wongcallum/atomi-userscripts/releases/atomi-dark.user.js // @updateURL https://raw.githubusercontent.com/wongcallum/atomi-userscripts/releases/atomi-dark.user.js // @match https://learn.getatomi.com/* // @grant GM_getValue // @grant GM_registerMenuCommand // @grant GM_setValue // @grant GM_unregisterMenuCommand // @run-at document-start // @noframes // ==/UserScript== (function(){"use strict";var e=typeof GM_getValue<`u`?GM_getValue:void 0,t=typeof GM_registerMenuCommand<`u`?GM_registerMenuCommand:void 0,n=typeof GM_setValue<`u`?GM_setValue:void 0,r=typeof GM_unregisterMenuCommand<`u`?GM_unregisterMenuCommand:void 0,i=`:root{background-color:var(--lightningcss-light,#fff)var(--lightningcss-dark,#16181b)}`,a={auto:`dark`,dark:`light`,light:`auto`},o={auto:`Theme: match system`,dark:`Theme: dark`,light:`Theme: light`},s={background:{ffffff:`#1c1e22`,f6f7f9:`#24272b`,f0f7ff:`#182434`,e1e3e7:`#33373d`,c4c8cf:`#474c54`,a9afb7:`#5b616a`,d6ebff:`#1d3352`,ffe7e5:`#3f1f1c`,ffece5:`#3f2619`,dffbf0:`#16372a`},border:{f6f7f9:`#24272b`,e1e3e7:`#33373d`,c4c8cf:`#474c54`,a9afb7:`#5b616a`},text:{"26282b":`#e1e3e7`,"5b636c":`#b4bac2`,"6f7680":`#979ea8`,"8e949e":`#767d87`,a9afb7:`#646a73`,c4c8cf:`#4f555d`,"0057ff":`#5c9bff`,"0042c7":`#7fb0ff`,"002f8a":`#99c2ff`,e31102:`#ff6a5e`,bd0d00:`#ff6a5e`,"00804a":`#33c27f`,d13800:`#ff7a45`}};for(let[e,t,n,r]of[[`c1e9f4`,`e7f6fa`,`65cae4`,`0080a3`],[`e6afcd`,`f5e1ec`,`e6afcd`,`c13883`],[`e3f3d1`,`f4faed`,`bae191`,`568226`],[`99ead6`,`d8f7ef`,`00cc99`,`008564`],[`e0caf0`,`f3ebf9`,`b27cda`,`935cbc`],[`f6cfda`,`fbecf0`,`e988a3`,`db345b`],[`c5badd`,`e9e5f2`,`c5badd`,`6f54aa`],[`ceedf8`,`e6f6fb`,`00a7dd`,`007ea8`],[`ffbdbf`,`ffe5e6`,`ff5a5f`,`eb0032`],[`fdd9cd`,`feece6`,`f9845b`,`d83f08`],[`99e9e7`,`d9f6f6`,`00c9c3`,`00808a`],[`fff3b5`,`fef9e9`,`fed86f`,`fcb95b`]])s.background[e]=`color-mix(in srgb, #${n} 35%, #1c1e22)`,s.background[t]=`color-mix(in srgb, #${n} 15%, #1c1e22)`,s.text[r]=`#${n}`;var c={...s.background,...s.border,...s.text,ffffff:``,d6ebff:`#3a5a8a`,d1d5db:`#474c54`,666666:`#979ea8`},l=[`fill`,`stroke`,`stop-color`];function u(e){if(e.startsWith(`--`))return/text|icon|symbol|secondary/i.test(e)?`text`:/border|line|shadow/i.test(e)?`border`:/background|status/i.test(e)?`background`:void 0;if(/^(color|fill|stroke|caret-color|text-decoration-color|-webkit-text-fill-color)$/.test(e))return`text`;if(/border|outline|shadow|column-rule/.test(e))return`border`;if(e.startsWith(`background`))return`background`}var d=/#[0-9a-f]{3,8}\b|rgba?\([^)]*\)|\bwhite\b/gi,f=e=>Math.round(e).toString(16).padStart(2,`0`);function p(e){if(e.toLowerCase()===`white`)return`ffffffff`;if(e.startsWith(`#`)){let t=e.slice(1).toLowerCase();return(t.length<=4?[...t].map(e=>e+e).join(``):t).padEnd(8,`f`)}let[t=0,n=0,r=0,i=1]=e.match(/[\d.]+/g)?.map(Number)??[];return[t,n,r,i*255].map(f).join(``)}function m(e,t){let n=p(e),r=t[n.slice(0,6)];if(!r)return e;let i=Number.parseInt(n.slice(6),16)/2.55;return`light-dark(${e}, ${i>99.9?r:`color-mix(in srgb, ${r} ${i.toFixed(1)}%, transparent)`})`}function h(e){for(let t of[...e]){let n=u(t),r=e.getPropertyValue(t);if(!n||r.includes(`light-dark(`))continue;let i=r.replace(d,e=>m(e,s[n]));i!==r&&e.setProperty(t,i,e.getPropertyPriority(t))}}var g=new WeakSet;function _(e){for(let t of e)`style`in t&&!g.has(t)&&(g.add(t),h(t.style)),`cssRules`in t&&_(t.cssRules)}var v=new CSSStyleSheet,y=new WeakMap;function b(){for(let e of[...document.styleSheets,...document.adoptedStyleSheets]){if(e===v)continue;let t;try{t=e.cssRules}catch{continue}y.get(e)!==t.length&&(y.set(e,t.length),_(t))}}var x=new WeakMap;function S(e){for(let t of l){let n=e.getAttribute(t),r=n?.replace(d,e=>m(e,c)),i=x.get(e)??new Set;r&&r!==n?(e.style.setProperty(t,r),x.set(e,i.add(t))):i.delete(t)&&e.style.removeProperty(t)}}var C=`[style], [fill], [stroke], [stop-color]`;function w(e){(e instanceof HTMLElement||e instanceof SVGElement)&&h(e.style),e instanceof SVGElement&&S(e)}var T=e(`mode`,`auto`),E;function D(){let e={auto:`light dark`,dark:`dark`,light:`light`}[T],s=`[role="dialog"][aria-label="Draw"] canvas { filter: invert(1) }`;v.replaceSync(`${i} :root { color-scheme: ${e} !important } ${{auto:`@media (prefers-color-scheme: dark) { ${s} }`,dark:s,light:``}[T]}`),E!==void 0&&r(E),E=t(o[T],()=>{T=a[T],n(`mode`,T),D()})}D(),document.adoptedStyleSheets=[...document.adoptedStyleSheets,v],b(),document.querySelectorAll(C).forEach(w),new MutationObserver(e=>{b();for(let t of e){t.type===`attributes`&&w(t.target);for(let e of t.addedNodes)w(e),e instanceof Element&&e.querySelectorAll(C).forEach(w)}}).observe(document,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`style`,`class`,...l]}),document.addEventListener(`load`,b,!0)})();