From ece3822891424f4f50370f01863062dab1e226a0 Mon Sep 17 00:00:00 2001 From: tophf Date: Wed, 28 Jun 2017 13:49:04 +0300 Subject: [PATCH] option to switch toolbar icon sets --- .eslintrc | 2 +- _locales/en/messages.json | 9 +++++++++ background.js | 10 ++++++---- dom.js | 9 +++++---- images/icon/16.png | Bin 294 -> 617 bytes images/icon/16w.png | Bin 296 -> 676 bytes images/icon/16x.png | Bin 262 -> 583 bytes images/icon/32.png | Bin 744 -> 1241 bytes images/icon/32w.png | Bin 781 -> 1231 bytes images/icon/32x.png | Bin 752 -> 1108 bytes images/icon/38.png | Bin 854 -> 1631 bytes images/icon/38w.png | Bin 891 -> 1746 bytes images/icon/38x.png | Bin 845 -> 1625 bytes images/icon/light/16.png | Bin 0 -> 654 bytes images/icon/light/16w.png | Bin 0 -> 671 bytes images/icon/light/16x.png | Bin 0 -> 358 bytes images/icon/light/19.png | Bin 0 -> 654 bytes images/icon/light/19w.png | Bin 0 -> 671 bytes images/icon/light/19x.png | Bin 0 -> 358 bytes images/icon/light/32.png | Bin 0 -> 1217 bytes images/icon/light/32w.png | Bin 0 -> 1216 bytes images/icon/light/32x.png | Bin 0 -> 1222 bytes images/icon/light/38.png | Bin 0 -> 1694 bytes images/icon/light/38w.png | Bin 0 -> 1772 bytes images/icon/light/38x.png | Bin 0 -> 1680 bytes options/index.css | 8 ++++++++ options/index.html | 24 ++++++++++++++++++++++++ options/index.js | 24 ++++++++++++++++++++++++ prefs.js | 4 ++++ 29 files changed, 81 insertions(+), 9 deletions(-) create mode 100644 images/icon/light/16.png create mode 100644 images/icon/light/16w.png create mode 100644 images/icon/light/16x.png create mode 100644 images/icon/light/19.png create mode 100644 images/icon/light/19w.png create mode 100644 images/icon/light/19x.png create mode 100644 images/icon/light/32.png create mode 100644 images/icon/light/32w.png create mode 100644 images/icon/light/32x.png create mode 100644 images/icon/light/38.png create mode 100644 images/icon/light/38w.png create mode 100644 images/icon/light/38x.png diff --git a/.eslintrc b/.eslintrc index af049f37..6441aad4 100644 --- a/.eslintrc +++ b/.eslintrc @@ -215,7 +215,7 @@ rules: no-unreachable: [2] no-unsafe-finally: [2] no-unsafe-negation: [2] - no-unused-expressions: [2] + no-unused-expressions: [1] no-unused-labels: [0] no-unused-vars: [1, {args: after-used, vars: local, argsIgnorePattern: ^_}] no-use-before-define: [2, nofunc] diff --git a/_locales/en/messages.json b/_locales/en/messages.json index c6a336cf..4fe186cf 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -681,6 +681,15 @@ "optionsUpdateImportNote": { "message": "When importing style backups from old version or from Stylish, do a one-time check for updates manually in the styles manager to ensure all styles are updated." }, + "optionsCustomizeIcon": { + "message": "Toolbar icon" + }, + "optionsIconLight": { + "message": "Light browser themes" + }, + "optionsIconDark": { + "message": "Dark browser themes" + }, "optionsCustomizeBadge": { "message": "Badge on the toolbar icon" }, diff --git a/background.js b/background.js index ea7db689..7b9daa43 100644 --- a/background.js +++ b/background.js @@ -258,15 +258,17 @@ function updateIcon(tab, styles) { const postfix = disableAll ? 'x' : numStyles == 0 ? 'w' : ''; const color = prefs.get(disableAll ? 'badgeDisabled' : 'badgeNormal'); const text = prefs.get('show-badge') && numStyles ? String(numStyles) : ''; + const iconset = ['', 'light/'][prefs.get('iconset')] || ''; + const path = 'images/icon/' + iconset; chrome.browserAction.setIcon({ tabId: tab.id, path: { // Material Design 2016 new size is 16px - 16: `images/icon/16${postfix}.png`, - 32: `images/icon/32${postfix}.png`, + 16: `${path}16${postfix}.png`, + 32: `${path}32${postfix}.png`, // Chromium forks or non-chromium browsers may still use the traditional 19px - 19: `images/icon/19${postfix}.png`, - 38: `images/icon/38${postfix}.png`, + 19: `${path}19${postfix}.png`, + 38: `${path}38${postfix}.png`, // TODO: add Edge preferred sizes: 20, 25, 30, 40 }, }, () => { diff --git a/dom.js b/dom.js index 139619cc..be081107 100644 --- a/dom.js +++ b/dom.js @@ -12,16 +12,17 @@ for (const type of [NodeList, NamedNodeMap, HTMLCollection, HTMLAllCollection]) } // add favicon in Firefox -if (/Firefox/.test(navigator.userAgent)) { - for (const size of [128, 38, 32, 19, 16]) { +navigator.userAgent.includes('Firefox') && setTimeout(() => { + const iconset = ['', 'light/'][prefs.get('iconset')] || ''; + for (const size of [38, 32, 19, 16]) { document.head.appendChild($element({ tag: 'link', rel: 'icon', - href: `/images/icon/${size}.png`, + href: `/images/icon/${iconset}${size}.png`, sizes: size + 'x' + size, })); } -} +}); function onDOMready() { diff --git a/images/icon/16.png b/images/icon/16.png index fa6c32b32cb5d195e12dd25c9df02ea4d082a520..48252ae4ef41957af6cbd55894c5cd3cc2735b2f 100644 GIT binary patch delta 592 zcmV-W0n3IG5B_DMuRR5;6xlgn#UQ4q#|_oQh}ZXS@dC5zfdrFCOn z2o-#Tx)J;fV&enT5?uILh#TFAAnt^^s1K;5f)o@til~bsl7EH@t%8V(8zrR;+Qi&E z8*Xy0i-b#KVw2e%m^1Uu$M?-BgXtu~?Ft~}Btkf8Cn{3IB0^HjJW&SINfcGplK1aA zl2Z>vJN@3!INsA|Ge)uKR%#54Z@YJy1)cqVyrFT_y?d~@+yIml34Tr7Ci~_!0NdX$ zBDIXt@h`fyZ+|lb52q0hwJzV`^MPn2*Z|-;F={ri+_+Bu-CH`hY{j-?Cxy9KYXECs zKLCcVlb@ZXlGP~wS)jPM&{U5GPHUe(0ial|_#e;U2?P-~`+o%$!tF9v?@gMC)O3Wx z#}8F{y}k5Yyu`K_ukehXs%!jxX9D4N8KUN^`62T;;(y^W61Q%m$Cs*894bBMFVG!6 zXVxheOZ9DL^3Z_vxSX;Ae)AV z$R{5TID0-*Hs2bHY0F@SyFe$oJWq<<&CuxE7z{J-h0FQoK2UQLbb>C(pQ2ktqtXD1}&bLtVPZ!x*}*t#=_0y8YkN|_X<9`MtZQ?Lc zEm#jO12ifs{%f2)`(NYNF9d$}?7zm8DTEEsC@VwNh>VFcV9y>D4H`v75IlSKe~q*> zA`G~E8EybsVW6>gEy4vaU;fuvu;9N&YAS96;F@6uBq#sZxPN{f)Bmehp%?%+1l<65 zOw678U*o|8?1ms4Kqwt(ba(&P`28D#Vc|k39bg!8>=^L|XslTAU*ps%h!-YIKy|^R zM?@HK^(sOGI&N+z!hpWM{~Cu5{nxmC8*C#uMmBH$uaTcmd|n_qGf|SA0kX9JJGETi RjsO4v07*qoL;YP4gdfGF-b&0R5;6xlV3USx#jIp@c%;Wxf8XO_0VUfM_(julv@` z#J-*f{QCK0S#WAv8kJQwt7{vNRs$CjW*M|rmTo4jC;((yvZ+6IoTAb)R;8o>@NH^} zjw_ewcRWFFFn{oPU=W)iwMlcG=fD}6SzPPt#%MClo1AVoBZ?vbp|~)&CMpP7Znb1q{6!Sg_K91{qmv0Ek2)IA1)+@AKgqapM_rFRFT6NV?ffl7BIoqLQub*?$mK)9}8169Y!V z3YYEnasfb7wOHZz^fafN8oAnjo{90#02oasnogeL@QLQX)P)&AV>a40biRJ@(XYez9tk1 zkZH-L#D7{2!1$++_m)e4U(NZSJ}m zQT=|#M!obsddTFLae#TY&OMV-Ra+wH1mwtrOc(;Z}4Mg_~VKpe-Q zY1*}bgo!{^Rp|Tvqy98a83C1?1%xPyU>wJ<5=OxL2d?YFaU2+OFWi4{rm8A&L6Rg; z*EKG|_kHFB(=_n~UDwgT8OL$>0?+fHEK3-M0q=-jB+qj&3`4vZZa33E?feAj)hqL( T6Q-m90000=c9B!32COGiWi{{a60|De66lK=n!32;bRa{vGf6951U69E94oEQKA z00(qQO+^Rc1_~AeE(dzY%m4rZ)Ja4^R5;6xld)?PQ5?rV@14mtmoL?qIDUadMWd|wYE zu;_W*C=`N}QaN?xK+dnP#}B4$n?=v#tn1=h765*?%j2CLJ~SEtd_Lr<6TRwFw#~Dd z8Jr{H9~9DQEPtgEZW00u`Fu=%u)WQvW|Na6Bg|*BtOmhgfhpSt;6Q|rjRrv!vDR+0 z)^7LBBN5v7P6vRLQoNjwkS~JdVp_W85tkaV(2{W4N@j zff0#o95|f!^*Uc#EdVlFNfEDH?hdD^z>qm?f?J)07*qoM6N<$f+oKH-v9sr delta 234 zcmV z4VVW~z{d9fzr8&ItEv4zK#T!%K$6HBkuXsPd_pn+q+tdWp910zVhs4l&kr|%tT1?h z>;+BD{}+&K#%cgeGt7V%kSm0RG5miA%>cL|=mx;>8IS@61!Js+MBs7-Hvet|DRgv% zU}(4yOb6)rAIuP947df7WMKh&VGp_sfL6BsK>Q1&KvEKHBgnvK kK>id`@&d`3iIVIL01&jE<(Xj{%K!iX07*qoM6N<$f>Zroi2wiq diff --git a/images/icon/32.png b/images/icon/32.png index 4da26c37291be246291ae51604090ccb216b4a8b..8fd51f8094a59f2c916edacd0a1aa1d65436af11 100644 GIT binary patch delta 1222 zcmV;%1UdWY1=$IZBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$ zdr3q=RCwB~S8Z%lWfXqy*ScWq-f#^}O#^w%dFAmG&fW z+I#x;p67hL&pEH4X&O?pR*SdL$3ZQb+$2cS3Y1XPXml2udQ~j9?jIGD@swUj0U+b8 z^!=(J2nu^n1_BT(DnNfK&ax;$4F(}qRq;nH9#060vW`HEvS&H9kGwucUMp%Og4v@V z!GGZ!sD6LZo_~`ulr=WO(bWxm$9DEC$Gx6@taPnQj{yHN(|Z8^uLklrV6~!bbt7Uo zC!j^6S@+iT>_yG1uR%*B)G@^>833r^F#dY>DQFahOk%mO8CB11hjsl%DE0M_>~`Jn zvB^nN7;H|4Fe;LbTaobSC4#pNm?0MUpiGV&WDW22@N>)7!Un)=V7?%*L< z?tdUZ=9KkW7a0Sx#Te1_=n#{6h@RCf?0DDH&wpU`=cnO1{wXTj9?1$Ic=>x?peegT zvl`Qw!o8;p@#)*ph>lGum^`fipbyHbRXM%%e|;XF!@U`cQFg9G)4(7tl4#r7j=;rl zjgh!9##b>?-L;$F3Cts)sw0r3^>qh&IaLORE<&aIVbMZSRa_0YyL%7a6?QBfPp{`X zUCj)=pl$JTDyA+erh|Opw?qC8K|fYfmmigek`2@gMsxsDAn4-=@%0w!Rx(N`WH?Sk k&9G#%y`D18@~07*qoM6N<$f`X@0{Qv*} delta 721 zcmV;?0xtd83FrloBYy&~Nkl|m%ocj<(H5$L$w-5DWX)$iemA1hhcn;seT<&{(qoKMT(OXoyNzRy1SV= zJEM`|VWzn`7O7N?q*)#h{NyB?&Q{;q|B}mnuEz?>{1l9hG41X$-QF@iKRe_7@W6C<$TTx!dEEFu zK+WgW0DhiAaetWP8yr;Y3Jn12o11XP(`k2op#k>x!k6Cmc0>UE{cM(}(?B-Mw7hI3 zAo9XYuKNFYoT*S?nwW?PU~$oD96+dTuaJ55kx&3@YijRX=?9?zR#(+Ao}FzI0Ai^E zkdkSC-#ZkM0HB$qQr;PVdTJ$OGXVCq()E(-3s7zt{(q%+ea$pI?GJEqVZUPmz<^&H z#xuGetOpz)`_Bf1&ISlNg!=ldc8vJ@K_rvvSpY$a!XX;~A<#4q zWq_+Irhlz1wKxBh5*t#Zag=S#IRNEvl|DUL%L&>rB#~e$7S-NwY(xMsKi}LffXZ-d zZlM60*@o`#-S@%J082|uxm+;A*o3f(`L$tJ0Iw|uYZp2j;(mT^CEeMXwW4Dco0G8y|{BnFW5iw?u$U?cc3 zBF;$6oO8tBA80d%gFhrHLv&!7f`}1Df*`QSz%ihXeL(jC#(%BdI@iAEz0bDx^}Y6W zX+6!&>%I5fbAI=pbI&=K5d;C07>0q3_oO%n2TN$*l$eNk5|ImTg0@|!(;vxYxjX)G z#t-1I;7uh=#eo$Jpf?yH2z*S6SyqD)mkWM9I)k3)IIWd{xJ~<95W;}+y>(XD8orFn z&N;0Xp0P13dVg*O)|R~r_wWeocHb!=Q&tgR=z`rlJ{p&DonDXoW@lhRLW1HvRZi*X z!EZ#_;u@WPasXiH0?HVP?z#T~yesB(i4=0(&Me% zQHzYZnNgdjO_11%wLcNjYbny8e>~?>jOnET0 z%iBnuHa&g-SXPdw?c#5+Uulz#Ye|S*ydn>~zWx@Qt7^n(7?sUAt)$P847k;QKie<2 z;`O3J*&-^urfv@sbh?PbFP{Gu`^e2`IdeKJPk(u3HJ;2_6mV=2fY;+e`O7b&v%?Pe z$cW-X3gXS`4>2`8U3Hhon{4>Fx-zUYT2iKj$(sFR(1{wOG?EA6iS`;>sY^frDUw( zr&BN(jUWZdyRuslZS)H8lT$l+>?lfKScOY17i9A@X5A|*?Refh{$!*^)YUzgPLfxT!DKq*S5E04 a0R{k7tG6#sZu&S-|v^0?hhK?!+-wx%#1&#QmOBIdwZnQ z=}4>9sv;JPg$@r7>E`CWDlgcH;2^|Ib~I2?3;e?QeM#Qr_v1Z7eRY&ILkVlleDzNT)syAU%XEK?%x)cL|`s(URk?~5UBC1a@z{$yp;%gU)MAQM; z+1VkMpi2gt%_bcm9}5YHyg+i{cOsFXUav=XyImaskH@oQ96-3+t3tM_jwk{M1Oi;| zH>n4T0Q`PGH^v7C2X6y_Sn>c^F`?7b)0Lr61pvjQTz@XF%=q*3b0Hbm0+=ab_4&8h z2T;x+C9htwSR|LrB?)kGaWVf!0Du9hGK_cX^}4JYkW3~edjmo@2awx@wzs#1a*X&( zLFDs!ZZCk~io&5e0HjnZ{gE3(qtQsAP>4F6&PoWM&&U0q<_5j=rvErr(V4Z2GR;!85gNgyX zUN5!VZCQpf31JkID#M}xtEL!?U8rn`dp4UDl5Z}P$p|AlMlq+;DQm3fj^(q(#A>zD zYi>rf`C@4?d0x#%(P;G78?9#FmH@`%@fV!J+1c3xI+a)_TSt(P7~v2$c#kcdyCFYA o)Y(f5wtu-K@mawYmqNj5ES%KK`#YH3xN<+ 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 delta 832 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 Z{{=E{dTBICgERmD002ovPDHLkV1f_$UC{sl delta 869 zcmV-r1DgEO4f_U=BYy)zNkl=n*!tRoF_kM@2SbCl7IHSUOac0i_%$#%2`QD?` zjr>kePe1i~J;&qYW1HH)e!ow&v`(k<_x}F=`_t2tUB~;i+kfpZ^oAxLpim@}$&h3+ zsi|eNS!pe-`S9>iqaWt;7#O`_7dI3N1+u=rPF7Y{7Gf5QgleZ7DI|fEW_!Ad# z>-B*W#~T|PWM^lGc)i}CIh{^vL6gZO_+wIEwN*c?1x2svwE-EQ~yyIjlX^RG&F6uzL_?Us6_92~E#%%v_w3_X!5VJ;X_U@2g1 z_ww=&4Si`~(>ewIUn&?Yn4)S#F&MTw!r*W?WPhQyx3{^X61!McFf2AIljHHYbY#O3 zjT!ENdgUEd0E?rZs$j8LZ0=bFFY)IB6K&v1E59NzIGlD65jpU#t*xoA#{h=Ih-m9! zhEw|9-k#JM=F($SCJ#g^do&s)=jZ2R;f4Ih0=SMAB?2TnBEV3k)oKkEJ?W7hs<1JX z&0c0(I26|8j-lA#4kA!4QPs3j;W=?|M^)@s`YAh1n;jh;Nyq)snU|Ud-&kWrgWX}= vI<*87K|uH%k6P>%lNH3e?9y`XkGKfrId>%Z#l)00000NkvXXu0mjfTSB4K diff --git a/images/icon/38x.png b/images/icon/38x.png index 265b7c03b6856fe8fbd433aa1733023ac727dd96..a0cbf099fe19446b6f9c3d8d033f763d5ac8cc13 100644 GIT binary patch delta 1609 zcmV-P2DbUl2H6adBYyw}VoOIv04D(d0Q(+QR}ugK010qNS#tmY3ljhU3ljkVnw%H_ z000McNliru;Rgi*7Bs4w+o=Em1?EXaK~z}7y_ijGTvrvxfA_vOZ$6&i#N$j7&m?Y9 zMHH1bvZIouUqYg)S`Y#WBoIPK>`>aWKw?J_&@CGz1VSnTfqztXtSqtVqEuOws%c@; z6be=%2Pd(qiN~F<_cia`%OYcI?73sVag!d&n>)w%{O>*I{LlYgp|xhq^umG#ypU@B zE#NUr2#5PQ-uR<*rLb6RU|M$yEeBwzuy5ZFRs z?b>)R`_%*zEgb>_}qD&iFKwe5b%YWijvB+FLj}QV0-0An(OcL(& z`~0upCs2yM)+ob1p;D~HG4*_Y$3@w@9lL3|FQ~(|&3Vt`tJNx>DV6s0?W8GxZMRw6 z*x;(~lMJ!ImTe}<$l3@nW%$SK76#^BmltX^9(CPJH|tpz&s8dP(v)jqNXKw+6IgpR z`uGk!>wkG%oSUPX%S~M5?{>RJP~&3SSvP(#pXa-?vtvOe1MX9RBLsOVcck-n#@d|- zm?H#_dmaxP>M2r+YL3I(oer%GwL3Aeif!{$xojlL zORW|^zkS;nxFjXdPEYgSIHqMN@X3G~3b8094}TR3BkLW=2{SNsnz10ZkP9ZJ@h`n z{&eRKr(O4MNh~brSgBB``FRa+EeQC|($c;p`%E^Jjt1< zDQqbbLIlGKRs+1Yxyj2bE16PNkdjAACFWh1bDqberP5d#o@mYYuV3fyh8lkPfqw^h zwo1UFD5d zYrNXX^7&>;Lpw>h-05(3Ozn)bx7uxf|KW%H)A#q3Kz5eTw~C>gmcx)A-nc!GawpOb5ezC5l*$ zV-}lDBp?S5C|jdU4R|WiI)9T|*%FDz9EZWoR>HtzH-!+K$me;nUf=5#kU%MVO3_JE zJ{tVB)0D1K_)2941@L0M&WXW;ObV-}8~Y=0G0~cD9y!7}&*O5Z!)B7O8plTYdk{;3 zy5mr>ZO(cg4;2b*Jr>$R{K53pIR(4{JeF!rUuz0dq9-{0BqoF)NJ3L`cL9-T{gy4n zGosN5b^sfIbAXFl>#qwT9{wa=6#GiOmy_~0qS5%}@cRD&oJp=8mRC7n00000NkvXX Hu0mjftBMTf delta 823 zcmV-71IYZ@49y0RBYy)FNklhQtCo* zp>$K+h#Ma$MUYbQfmGT`1T|C(p#*EGNL8vLrfDV_zc1vLaguxI&P^r_915M8bAEHr zbB^Oge)k;bSm1f5>q4wFe81lE{V+>8@csS2LaYTsoN`pZZGXo(fg6_j0HDHmt{c9Z zn#xqlu+iv1)`WPr?l{N0z#2l#@P3`H)FjfGpD*M=iQ7g*ExtGvh? zhXp0&Ds0j=Lg;fhm=M8t&kJl67oqs}#6)-}mphc}o$^rrXhJ6P%PS)DO5^r`sBA25%c^4DZ4429&cttw9(w^~m*Q{4W!*CCzEw*Tl{ova35NPtbL1PEz8xEJRZ%)rvJMxYGn_J*)nl?#K8 zvH3`^5f>25wvVt-z=-=mUx$ zycZMNku}&-iq<2AU+E9gY6|_%V_OC*0#^2?fcyYOarbikrU71Oiz=ijFUl1Gmny$3 zmnwr0EoU z%rIc9T(|bz!*U0Ts$B&6$E+8_QsBP#Tu8@R{sA^6H-cz=R$>4E002ovPDHLkV1kY# Bio*Z^ diff --git a/images/icon/light/16.png b/images/icon/light/16.png new file mode 100644 index 0000000000000000000000000000000000000000..3ec57b4e6a6c98088abde81f61ae895977599e11 GIT binary patch literal 654 zcmV;90&)F`P)t!U0{FLo~PuEeZB7`s|G9Mt8IM_=xqdKn47Rn?)7TuIot}0m5kV;>XTJAh z*i8U}Uq<-Y@Q`nvT}%f<0Ay|1MCpwy>^NRYA{wLBRg8!zW1;dwa%g0fj*64SBhi%3 z(H~>T>>L2LtV|0x7LVB9)M_Pr@7=<6*vIdoVJ7@NIDO?yR$5XZ6c`0Sv)R~IRe_n8 zi#@-D&1EIaa-uB;HWcpzU@np1dHE6gnp#LiV=I!XDW$|yS8D<8+H-6y^~^IqHbHm& z9iHv=(tH1LN@7X6DclM`JQC&o^#=U68?AS9NkT0d z&rc35JL2c|4&K$>Bp!)kWM)tk_<*MCJX*gS5m6fdiCxvlaQeIe%*3XMha;=2(AU($ zxc?K*gJswt;JTU4q2{|Q|AU!7e=+PP z?%K0tyPQn+4_c(=yZ2CZx*ErJ7eI=vMpA|FKyzEp{!14q@Oddn?z~d;K6rv=v(1|% oY3FLCX~DJHS?Ss&a6&}*2U>>G5xLRnhyVZp07*qoM6N<$f&&m9{Qv*} literal 0 HcmV?d00001 diff --git a/images/icon/light/16w.png b/images/icon/light/16w.png new file mode 100644 index 0000000000000000000000000000000000000000..6287ce91db1863933157463ada15e55d8a8a86f5 GIT binary patch literal 671 zcmV;Q0$}}#P)*y> zTjUeb1vQmTn5-z%Y9!(Zei{IT(b#zI=5_Pw^RB&jDA3dS-PKz2-)w>da zwzw!)U%8}%e~$+6RJ%F8bq6lVic7L`G9wHB^OtN(Pp7*6A~98!0gTJc7DWLdI5v(u zzld-sv?B9VaDup|0bsS+biZ+Ri9TL@mUn4*G-akM=dFh&#)(`~8#+L#n z6D3uZ*c}d>#c4Q;kFKkUwAzuAcNl=hSd23V^YD3FnV*~6P*edl)irzc4B5_HhWfrR z6`Wvxc9yUHcf4rpKoWvOM+$VHS(X`m-&-O92qE-<&2FdTqo0Ph`|Qlz3qUv&;$g!L z+C9zszhyxUiFeare16>$d%B*|a-p7ZD1?%dLhs*6gb=tSE5I%3e_K~kbC$w{`jK#$ zxtW>dQ}B6P8SWn-zw{VZn~guC0Y1O(0U#r5KX!*BIYD2~TfX&v;=`-%mHTh8aNF0p z@g6KhB3KlKnroNYzGpXqq2Yw6TgZ0iQdL*Wu6>yRE5>R}9FzL&L7VJuyh>qt8HMF# zNpnD@002ovPDHLk FV1nwsE%N{X literal 0 HcmV?d00001 diff --git a/images/icon/light/16x.png b/images/icon/light/16x.png new file mode 100644 index 0000000000000000000000000000000000000000..4ccc3e502e6f341d369e9f7d896a2189346dc6b9 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%A+0*}aI1_o|n5N2eUHAey{7#QFa;_8!G_-9!S4?Ek(d1XK`4pxwnEKE!+ z%uGN=O`y$-nMKWE4i1{~5mwq=QO?toJr`y9U+>LQkr4d3q)J+dcV}f(u7|0SqQuFT zm%Rd@90CjSe1o;Is{Qv*o=hpv^A3_5@uR8@4?eKJQ43W6(+kacES%HT|_<|_o z&K04z|Np9gzopr0B7)fumAu6 literal 0 HcmV?d00001 diff --git a/images/icon/light/19.png b/images/icon/light/19.png new file mode 100644 index 0000000000000000000000000000000000000000..3ec57b4e6a6c98088abde81f61ae895977599e11 GIT binary patch literal 654 zcmV;90&)F`P)t!U0{FLo~PuEeZB7`s|G9Mt8IM_=xqdKn47Rn?)7TuIot}0m5kV;>XTJAh z*i8U}Uq<-Y@Q`nvT}%f<0Ay|1MCpwy>^NRYA{wLBRg8!zW1;dwa%g0fj*64SBhi%3 z(H~>T>>L2LtV|0x7LVB9)M_Pr@7=<6*vIdoVJ7@NIDO?yR$5XZ6c`0Sv)R~IRe_n8 zi#@-D&1EIaa-uB;HWcpzU@np1dHE6gnp#LiV=I!XDW$|yS8D<8+H-6y^~^IqHbHm& z9iHv=(tH1LN@7X6DclM`JQC&o^#=U68?AS9NkT0d z&rc35JL2c|4&K$>Bp!)kWM)tk_<*MCJX*gS5m6fdiCxvlaQeIe%*3XMha;=2(AU($ zxc?K*gJswt;JTU4q2{|Q|AU!7e=+PP z?%K0tyPQn+4_c(=yZ2CZx*ErJ7eI=vMpA|FKyzEp{!14q@Oddn?z~d;K6rv=v(1|% oY3FLCX~DJHS?Ss&a6&}*2U>>G5xLRnhyVZp07*qoM6N<$f&&m9{Qv*} literal 0 HcmV?d00001 diff --git a/images/icon/light/19w.png b/images/icon/light/19w.png new file mode 100644 index 0000000000000000000000000000000000000000..6287ce91db1863933157463ada15e55d8a8a86f5 GIT binary patch literal 671 zcmV;Q0$}}#P)*y> zTjUeb1vQmTn5-z%Y9!(Zei{IT(b#zI=5_Pw^RB&jDA3dS-PKz2-)w>da zwzw!)U%8}%e~$+6RJ%F8bq6lVic7L`G9wHB^OtN(Pp7*6A~98!0gTJc7DWLdI5v(u zzld-sv?B9VaDup|0bsS+biZ+Ri9TL@mUn4*G-akM=dFh&#)(`~8#+L#n z6D3uZ*c}d>#c4Q;kFKkUwAzuAcNl=hSd23V^YD3FnV*~6P*edl)irzc4B5_HhWfrR z6`Wvxc9yUHcf4rpKoWvOM+$VHS(X`m-&-O92qE-<&2FdTqo0Ph`|Qlz3qUv&;$g!L z+C9zszhyxUiFeare16>$d%B*|a-p7ZD1?%dLhs*6gb=tSE5I%3e_K~kbC$w{`jK#$ zxtW>dQ}B6P8SWn-zw{VZn~guC0Y1O(0U#r5KX!*BIYD2~TfX&v;=`-%mHTh8aNF0p z@g6KhB3KlKnroNYzGpXqq2Yw6TgZ0iQdL*Wu6>yRE5>R}9FzL&L7VJuyh>qt8HMF# zNpnD@002ovPDHLk FV1nwsE%N{X literal 0 HcmV?d00001 diff --git a/images/icon/light/19x.png b/images/icon/light/19x.png new file mode 100644 index 0000000000000000000000000000000000000000..4ccc3e502e6f341d369e9f7d896a2189346dc6b9 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%A+0*}aI1_o|n5N2eUHAey{7#QFa;_8!G_-9!S4?Ek(d1XK`4pxwnEKE!+ z%uGN=O`y$-nMKWE4i1{~5mwq=QO?toJr`y9U+>LQkr4d3q)J+dcV}f(u7|0SqQuFT zm%Rd@90CjSe1o;Is{Qv*o=hpv^A3_5@uR8@4?eKJQ43W6(+kacES%HT|_<|_o z&K04z|Np9gzopr0B7)fumAu6 literal 0 HcmV?d00001 diff --git a/images/icon/light/32.png b/images/icon/light/32.png new file mode 100644 index 0000000000000000000000000000000000000000..82519c1f4266adac9d1e272a3d1b4f7e4b72fcc0 GIT binary patch literal 1217 zcmV;y1U~zTP);pSu&89fS;TRhXVSKiHw7loN*LLaUz4kq9J;}}Eo_l+LzkBYv=bQ^D5ekqh9C&*$>$ zSY5qcHvqNLcyAxl@@z1g<0H;>9jb%7{tIeVi4YML1n2@gZ@MEcGIFIGJq=B`)7gco z8v~ddpWwz*vaQJ2xB=Pan~}L`BMhR*jURj10sqV_J%52e0wM;JDdJ8q?mvucU!ROf zaI&wTH9D`#eFjMnJ;;p$oHz5aX0L z!*gp8{XaTm5~wr@q!-#%^`~pzL`UuWn7Do;b_8hLUM!Xk4%}~Ft**72E*|3M^`Bs5)Ut}KLjy;S=dFdH=jcDGnHs9uf~A$d_)3S zo1bD%9K@wjL8glGQw=Ph)6AtNbcgM`_F=03mgX*PFP5Y9(+^dhk%oTH?IChShK5&)3t7S1w)s*5M;n*Lu!E?e|72hV7kM; zmLG8Wa6L;vi)DFk4z^!t<8;R#Sad9 zWTAX<6kT#M(hR4>+1AzWRUMn3oQ^IK>6LJ?KRzurdID`*YvB5boHMC_!a1eu;AaYb zvNe+xw^1b{y7=vmPS)IYpCe(Vg%uk2t;uEMb7K>@d8Pw?k5}>A+^UM`v*F-{pSZqv zXqYvv0)^Iw1$%cypNt02yO!(^skUrZFGLD#>I8z}DKr~8*1~K_*9B}!PD0_n-KaR* zq*@OKLow&PTv?uA#?Jnq!w4e#&>yrfV`B4t@30ZPluAtuj)rKmu2*AdHd zzjp?`-?hS4xkYJ-f_&DZ5qgs-IDMEXkHBE~g?`TNc?Z9#6rulBg8Bd4Tko-3M1>q_ zkJ=Fw2Og&eE-Z(6E9ifn$}Hu{{)OO1B}kHk;9j}s6d})ZO2SD%eX)L;lMT%i|F}f| f1rUn)j{pMzdHU{cW0?Q{00000NkvXXu0mjf;H@?X literal 0 HcmV?d00001 diff --git a/images/icon/light/32w.png b/images/icon/light/32w.png new file mode 100644 index 0000000000000000000000000000000000000000..28104ad17b48aab44df45135aa6e187ecf7ea2ad GIT binary patch literal 1216 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 literal 0 HcmV?d00001 diff --git a/images/icon/light/38w.png b/images/icon/light/38w.png new file mode 100644 index 0000000000000000000000000000000000000000..fcc351fabb1c93bdb511b2fb4aedd8fdf12d9b41 GIT binary patch literal 1772 zcmVnhL^=nI@! z0xE%Z2tth2W)o$vcfp_pQN&`kif)%X235^5S1J-_-n3vH^Z za$rvtCw_P6KfnefeSnaboyCcp?Q@<$k>!w334(wqiec|{O-}Ot!czM0 z^zuy@-<E{Q?z90d=@BL(NSSYi_f@Cs*s^WIJf)+%^syq@>l4mcz zvmMyc*v#LL9oO_FrlycnQbbyI7Ky2;$X+jfx4Zb~?Jn*Q-eY8Fm?w5_pIcR!?Z8t< zk7-_CoS4W@5B-)6Pi@ik_ujlk?Z=-|_RP}{2PO!D=D^P87R~DwFYeNX0!Yuzq4M=t z=bn=xg6D8(4s?u<>*n4f~TIUCQ!w&`U?2le1zjSTL&GE@g@wi;H)nC+|V0>hR z&gK^CKKYdXo;yr_J%QD3BQ8EZELeO>GL2`?F*z{-u-Rxfl^Og{*=tsFW}t^v>%OJC zG7BGjlqrvg?&~-3dOZ5whR;Xu&092_JWb#2E^JXznx$x32bZPtT-6?;Vq&;@p#f1c zFb%deJ&heN?G7s$k|eSI$tQ?kn#BFVdko+0j~J%A-922bZ$L7dSp7(;en%?^)So;> z`{gT$qNq-T4fhXl+10-3aYBghHsLs4%n>73W6X|zH>*!FOiU%LdnK&lee~nypm#~Vq+N_ z{tBm#4l1(DjeoTAo#&s!VzUML-rxT=UF{wI)1Rq6U%jODlQ0*{D#$0RAfK{|t=wvB z=i;d|eDsIInz}Z0x1Wa3&QMXgD_9yNDYA||s4YoKV#8Bgc;(G~R2@8^+frY!HEiE*Bph{53K`?#Ml@UV`FrE(LwXMT5Qo#L7|!Qco@GwqT3=Bmpw*qNzwd*HP_UJ)J46oqPJ>a z|INF)-AlwA(<(=f@p0N3EkU&lmKz21!B`MI@tf`iS_yD$9W{r)qVu#eijEbPT7%q5J3KpV(wJW42hZ+U?Va z*=ogPu^<_Z5w{xr_TFoIxpew-|MtX$s;XCJZbOv=8x4|#BFn7EU&Z<@UBqnVFHY#l(u?kHH zrb&abqOnP!GKu{$)J+qj8bTB?s<8@0(ym$8rl?)$@*<>-lcsJ{Cv_dii5=Vb9{yOI z#r3_mI}-6p=bv-FtMfbOe6RaKt|-7BMV3w|k~9y9l^mKPC*8W*4Sa_J;sV|Wge)P- zoVt*tm4lKcNt8KtAusIV(3DO<&%&rnz@7u{a;OUP83TWXhaH}7OA_&9 ziq5_uBjFTIO(B^!z6?AM{1`x5q8|j-0Q~U&&-3!5_ps6;gy8$X{X4(uIPCEE#I=_!Hr_Ne`6|2fzI5Y)^s^)=uoH}c2Dzjj+m5l*V z>2Vf?iYHV2YwQYd9_`^^_h1f?m8`4t@!)Oi`S$kBe73$iZ@sqMlQ)+KrWCpQP$b5S zZy)E4BRwTQ_3%W5eeZS?sPkEZX{uZttdIjvMB_aA>pydHIP|GJap%^6jg3+q%udo7 zgCD)sQ4q?hspzVLK#)jfavWkqLpAkP-jWYeGT5o}m-xepe#^B6pO-Dobp-0FXz-Pj zHVlR@M>sbTVImqQ9Gl~7+gfkvhD!!}>v*r_d~Lah{ZH=VzP1+2^`T2wIdo=-om&F` z8<=Ec`=`%evYdbX?lxN}fY$m|JX3$?joV~?C`el>PABGVZEqzc4@|dkU4ROg!*c%M zsX_kn(Fmz!2F#<-6va~U3$0ByaczdjUpvGv-Z{YsL*rbVO{@%BIf?JJY9 zIrjdkizoO0m7g9w#=-6Zg5hY%5LSCC3-!?p*@^G&xRq@!^?8b`E6YfvG8`Wox7{ET zPjGtVGKbFmhhR9$Od^Hbp;7I17X({f<)x!H$jrxf{DMPOo>j6?w=~rfdhKa$U%MK~ z#x?I)*T{S(L;uAo<_p-ADFj28ukvosFvAlOyiVOR6=kK-=jG|0?UcJ6bPZlWRpd{? zg;OgY(ww@=%a7c{hK3qm@BEN|+Jum$($O2Fe|(bht1!Ml$;o_~{L zgBLJNfe<8?zL@}cj>c_u8+=|)zw|_&&3)t5 zxA|lDz~b30Bfl(3H{{kE8*A9uSi`Pc1DqYZ!r`8Cyndv|GOmRpGaT+Y$75e?%S}Iu zTs&NSTJcwuabH^tdmp}=ec!s*_JAK0@ah!-Tg(t{Cr^B7EA4@L>zFq)_x}OQK23$& zxhgjmQfXc}e2P#cR#dldJZu|EZmOwV-g@lA-~=!IZrw zE&i%Sop5ZH&c0E8*L9Xi+&X7IaQph@1?%h!5}i#FolVj^9_C2@C|;+I+o3J$%%?M4 zjVG9%vo4YDYHea`bKUZS9qk{@%ZqlmV(qmaUfumwG*wx?3U+!fSulAQlQlIJ9C+#> zHZ|4SWRnt%Kb^@hK{AHP?(OzvkDchM!Vh+}bMz;V(H>|h@CRlVzp-#^HczR_<6_@8 z@8xF?Z|A*%F*vG_AIrw_}1|Ga^JsHEq6oRy268E`t=hIDGG0EDzc0}yV9CKOr9_G3>jv|Ftm3D_&az)ClUvqM+pv%sF~ aLH-L)qLdFBeRSdg0000
+
+

+
+ + +
+
+

diff --git a/options/index.js b/options/index.js index 3b4dce31..decc038d 100644 --- a/options/index.js +++ b/options/index.js @@ -1,6 +1,7 @@ 'use strict'; setupLivePrefs(); +setupRadioButtons(); enforceInputRange($('#popupWidth')); // actions @@ -61,3 +62,26 @@ function checkUpdates() { $('#updates-installed').dataset.value = updated || ''; } } + +function setupRadioButtons() { + const sets = {}; + const onChange = function() { + const newValue = sets[this.name].indexOf(this); + if (newValue >= 0 && prefs.get(this.name) != newValue) { + prefs.set(this.name, newValue); + } + }; + // group all radio-inputs by name="prefName" attribute + for (const el of $$('input[type="radio"][name]')) { + (sets[el.name] = sets[el.name] || []).push(el); + el.addEventListener('change', onChange); + } + // select the input corresponding to the actual pref value + for (const name in sets) { + sets[name][prefs.get(name)].checked = true; + } + // listen to pref changes and update the values + prefs.subscribe((key, value) => { + sets[key][value].checked = true; + }, Object.keys(sets)); +} diff --git a/prefs.js b/prefs.js index a84cb52d..c34a0546 100644 --- a/prefs.js +++ b/prefs.js @@ -47,6 +47,9 @@ var prefs = new function Prefs() { 'editor.autocompleteOnTyping': false, // show autocomplete dropdown on typing a word token 'editor.contextDelete': contextDeleteMissing(), // "Delete" item in context menu + 'iconset': 0, // 0 = dark-themed icon + // 1 = light-themed icon + 'badgeDisabled': '#8B0000', // badge background color when disabled 'badgeNormal': '#006666', // badge background color @@ -61,6 +64,7 @@ var prefs = new function Prefs() { 'disableAll', 'badgeDisabled', 'badgeNormal', + 'iconset', ]; const onChange = {