From 3f408c909e84d3970f8c032ce0bb2394b166d8d5 Mon Sep 17 00:00:00 2001 From: Michael Becker Date: Mon, 13 Jan 2025 14:31:23 -0500 Subject: [PATCH] Initial commit --- src/README.md | 16 +++ src/button/mochafox-19.png | Bin 0 -> 6447 bytes src/button/mochafox-38.png | Bin 0 -> 6447 bytes src/icons/LICENSE | 1 + src/icons/mochafox-48.png | Bin 0 -> 6447 bytes src/manifest.json | 36 +++++ src/mochafox.css | 101 ++++++++++++++ src/mochafox.js | 276 +++++++++++++++++++++++++++++++++++++ src/mochafox.xpi | Bin 0 -> 21567 bytes src/panel-changes.html | 19 +++ src/panel-clipboard.html | 19 +++ src/panel-common.html | 20 +++ src/panel-tasks.html | 20 +++ src/popup/index.html | 29 ++++ src/popup/popup.css | 95 +++++++++++++ src/popup/popup.js | 57 ++++++++ 16 files changed, 689 insertions(+) create mode 100644 src/README.md create mode 100644 src/button/mochafox-19.png create mode 100644 src/button/mochafox-38.png create mode 100644 src/icons/LICENSE create mode 100644 src/icons/mochafox-48.png create mode 100644 src/manifest.json create mode 100644 src/mochafox.css create mode 100644 src/mochafox.js create mode 100644 src/mochafox.xpi create mode 100644 src/panel-changes.html create mode 100644 src/panel-clipboard.html create mode 100644 src/panel-common.html create mode 100644 src/panel-tasks.html create mode 100644 src/popup/index.html create mode 100644 src/popup/popup.css create mode 100644 src/popup/popup.js diff --git a/src/README.md b/src/README.md new file mode 100644 index 0000000..1624883 --- /dev/null +++ b/src/README.md @@ -0,0 +1,16 @@ +# borderify + +**This add-on injects JavaScript into web pages. The `addons.mozilla.org` domain disallows this operation, so this add-on will not work properly when it's run on pages in the `addons.mozilla.org` domain.** + +## What it does + +This extension just includes: + +* a content script, "borderify.js", that is injected into any pages +under "mozilla.org/" or any of its subdomains + +The content script draws a border around the document.body. + +## What it shows + +* how to inject content scripts declaratively using manifest.json diff --git a/src/button/mochafox-19.png b/src/button/mochafox-19.png new file mode 100644 index 0000000000000000000000000000000000000000..fa5846e7cad8e37fd12bab84e0a2af2fdf8eac64 GIT binary patch literal 6447 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 + * + * This file is part of src. + * + * src is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * src is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with src. If not, see . + */ + + div.mcx-suvutils + { + display: flex; + height: 100%; + top: 0px; + pointer-events: none; +} + +div.mcx-suvutils > div.tab-buttons +{ + align-self: center; + pointer-events: all; +} + +div.mcx-suvutils > div.tab-content +{ + position: relative; + height: 100%; + background-color: #eee; + border-left: 1px solid #aaa; + width: 0px; + transition: all 0.3s; + pointer-events: all; +} + +div.mcx-suvutils.uwt-expanded > div.tab-content +{ + width: 512px; +} + +div.mcx-suvutils > div.tab-buttons > button +{ + border: 1px solid #aaaaaa; + display: block; + height: 80px; + width: 96px; + margin: 0px; + padding: 0px; + text-transform: uppercase; +} + +div.uwt-floating +{ + position: fixed; + z-index: 1000; +} +div.uwt-floating.uwt-dock-right +{ + right: 0px; +} + +div.tab-page +{ + position: absolute; + left: 0px; + right: 0px; + top: 0px; + bottom: 0px; + opacity: 0; + visibility: hidden; + + padding: 16px; +} +div.tab-page.uwt-selected +{ + opacity: 1; + visibility: visible; +} + +div.tab-page > iframe +{ + border: none; + + position: absolute; + left: 0px; + top: 0px; + right: 0px; + bottom: 0px; + + width: 100%; + height: 100%; +} \ No newline at end of file diff --git a/src/mochafox.js b/src/mochafox.js new file mode 100644 index 0000000..2e7d6ba --- /dev/null +++ b/src/mochafox.js @@ -0,0 +1,276 @@ +function expandCollapse(expanded) +{ + if (typeof(expanded) === 'boolean') + { + var suvutils = document.getElementById("suvutils"); + if (expanded) + { + suvutils.className = "uwt-floating uwt-docked uwt-dock-right mcx-suvutils uwt-expanded"; + suvutils.expanded = true; + } + else + { + suvutils.className = "uwt-floating uwt-docked uwt-dock-right mcx-suvutils"; + suvutils.expanded = false; + } + } + else + { + var suvutils = document.getElementById("suvutils"); + expandCollapse(!suvutils.expanded); + } +} + +function switchPage(index) +{ + var suvutils = document.getElementById("suvutils"); + if (suvutils.currentPage == index) + { + suvutils.currentPage = -1; + expandCollapse(false); + } + else + { + suvutils.currentPage = index; + expandCollapse(true); + } +} + +var suvutils = document.getElementById("suvutils"); +if (!suvutils) +{ + suvutils = document.createElement("div"); + suvutils.id = "suvutils"; + suvutils.className = "uwt-floating uwt-docked uwt-dock-right mcx-suvutils"; + document.body.appendChild(suvutils); +} +else +{ + suvutils.innerHTML = ""; +} +suvutils.currentPage = -1; +suvutils.expanded = false; + +suvutils.select_content = function (content) +{ + if (this.__selected_content == content) + { + expandCollapse(false); + this.__selected_content = null; + return; + } + else + { + expandCollapse(true); + } + + var contents = this.children[1]; + for (var i = 0; i < contents.children.length; i++) + { + if (contents.children[i] === content) + { + contents.children[i].className = "tab-page uwt-selected"; + this.__selected_content = content; + } + else + { + contents.children[i].className = "tab-page"; + } + } +}; + +function addButton(title, filename) +{ + var suvutils = document.getElementById("suvutils"); + var buttons = suvutils.children[0]; + var contents = suvutils.children[1]; + + var btn = document.createElement("button"); + btn.__filename = filename; + btn.innerHTML = title; + btn.addEventListener("click", function(e) + { + var suvutils = document.getElementById("suvutils"); + suvutils.select_content(this.__content); + + this.__content.innerHTML = ""; + + if (typeof (this.__filename) === 'string') { + var frame = document.createElement("iframe"); + this.__content.appendChild(frame); + + var url_obj = URL.parse(this.__filename); + if (url_obj !== null) { + frame.src = this.__filename; + } + else { + var url = browser.extension.getURL(this.__filename); + frame.src = url; + } + } + else if (typeof (this.__filename) === 'function') + { + var obj = this.__filename(); + this.__content.appendChild(obj); + } + }); + + buttons.appendChild(btn); + + var content = document.createElement("div"); + content.className = "tab-page"; + + var content_title = document.createElement("h1"); + content_title.innerHTML = title; + content.appendChild(content_title); + btn.__content = content; + + contents.appendChild(content); +} + +var divButtons = document.createElement("div"); +divButtons.className = "tab-buttons"; +suvutils.appendChild(divButtons); + +var divContent = document.createElement("div"); +divContent.className = "tab-content"; +suvutils.appendChild(divContent); + +addButton("Tasks", function () +{ + var div = document.createElement("div"); + var buttons = document.createElement("div"); + buttons.className = "uwt-toolbar"; + + var btnAdd = document.createElement("button"); + btnAdd.innerHTML = ""; + buttons.appendChild(btnAdd); + + var btnRemove = document.createElement("button"); + btnRemove.innerHTML = ""; + buttons.appendChild(btnRemove); + + div.appendChild(buttons); + + var lvTasks = document.createElement("table"); + lvTasks.className = "uwt-listview"; + + var thead = document.createElement("thead"); + var tr = document.createElement("tr"); + + var th1 = document.createElement("th"); + th1.innerHTML = "Task"; + tr.appendChild(th1); + + thead.appendChild(tr); + lvTasks.appendChild(thead); + + var tasks = + [ + { + "url": "/super/d/inst/1$1.htmld", + "title": "View Class (default tasks implementation)" + }, + { + "url": "/super/d/task/2997$12.htmld", + "title": "View Class (task, should use Initiating Element)" + }, + { + "url": "/super/d/inst/1$1/rel-task/2997$12.htmld", + "title": "View Class (related task on `Class`)" + } + ]; + + var tbody = document.createElement("tbody"); + + for (var i = 0; i < tasks.length; i++) + { + tr = document.createElement("tr"); + + var td = document.createElement("td"); + + var a = document.createElement("a"); + a.href = tasks[i].url; + a.innerHTML = tasks[i].title; + td.appendChild(a); + + tr.appendChild(td); + + tbody.appendChild(tr); + } + lvTasks.appendChild(tbody); + + div.appendChild(lvTasks); + + return div; +}); +addButton("Common", function () { + var div = document.createElement("div"); + + var lvTasks = document.createElement("table"); + lvTasks.className = "uwt-listview"; + + var thead = document.createElement("thead"); + var tr = document.createElement("tr"); + + var th1 = document.createElement("th"); + th1.innerHTML = "Task"; + tr.appendChild(th1); + + thead.appendChild(tr); + lvTasks.appendChild(thead); + + var tasks = + [ + { + "url": "/suv/suvinfo.html", + "title": "SUV Info", + "seeInNewWindow": true + } + ]; + + var tbody = document.createElement("tbody"); + + for (var i = 0; i < tasks.length; i++) + { + tr = document.createElement("tr"); + + var td = document.createElement("td"); + + var a = document.createElement("a"); + a.href = tasks[i].url; + a.innerHTML = tasks[i].title; + if (tasks[i].seeInNewWindow) + { + a.target = "_blank"; + } + td.appendChild(a); + + tr.appendChild(td); + + tbody.appendChild(tr); + } + lvTasks.appendChild(tbody); + + div.appendChild(lvTasks); + + return div; +}); +addButton("Changes", "panel-changes.html"); +// addButton("Bugs", "https://gitea.azcona-becker.net:3000/mochapowered/mocha-suv"); +addButton("Clipboard", function () +{ + var div = document.createElement("div"); + + var buttons = document.createElement("div"); + buttons.className = "uwt-toolbar"; + + var btn1 = document.createElement("button"); + btn1.innerHTML = "Copy"; + buttons.appendChild(btn1); + + div.appendChild(buttons); + return div; +}); + +expandCollapse(false); \ No newline at end of file diff --git a/src/mochafox.xpi b/src/mochafox.xpi new file mode 100644 index 0000000000000000000000000000000000000000..3e5ec9e3b1cdc3d2c09860155e9315a97e535e34 GIT binary patch literal 21567 zcmeIaWmKHYwl&71m%lz>0HgpD7iVXCJ7x`a zBmm4_+iQ#GRzVh^+Ql6K00y}Y0Ra5*q5KC3EC3e3)=K*~2s0i4fc*=^*8b%yV{?0V zMpj-Xpq<4Zm|z93EjV5US#1AL%mZyVb+s1_D6rrnXkY{qqNtFp`SIjATAZk;v|OUC1~N} z=8Fqnt~Up*ezzGlj_49jmHNmU!J?#ZH!oc^hgUGD+RTyzmhIx$+h50oDC4-rvJ1lY z;2dk)_yMTlS0PwPQ-%Vb2N(ihT?`)Onp#v%)lXA3E3?|B4hMDa^kAf3Dvbnxg+U_b z75Gk;n+4X%Bs00VBc;E)%eQ9rETvg0&7B^mRk&VK%ovVyk$r2&=%|;acqe0#pXkf8 zWL7$j^!2yg6NOrmQgsa4j<4pzLcbjvd+|bdm^4FusTkOS6w=Jsczq+B>KGux|zH%V~W2-gCuA={hF~d{XRHAY>iQ4$;J# zNW1mRY>|}Gshrov-(XT6kiL({2y1Nu&pu2GWf9)0es8+hq}Zs=Y#xC_IUv@yvgmA1 z5YDSb;M(9u*cGMAB!rdFPx*x3^Z@KnZpW-YyX`&}ev~^Q;>Z%Qq zOA}K}ZvK|!oBO4283_(1E@aTggkS}Z@O!<@co^b*8)s<-Z+u5z?qNXeKFu}MdL*gd05FvJB& zcy?@-7p4~U=|`w5Vc=I-;n${=Y&0}|EU?yn7}um@l<08bU8JnIkgxnvLx2+JMvz+X z8AG%?D#3#g!P1#c&Kg-xQVxd@FjZE7$|$$=!pPaO_XJt=cf;U)Fl;HqQn^Sf(#SAP zGh#H=LZsiXh(&RLndF&ZWX#GPfKn8IUhJg_EcLp*pYOX4zcxZ@2)Jtq!clctlXrfw zmexuI_s{)N(z~;-z$boms(v!BdT_Bb8S-}gQTE->u>a$UfRrgcF@jMN?7gUWc_);RU@=`ecuUR#2%D|216lN#V@-(95us!e zXGxLcKXI76i+Y0!Nx^{T&u)T-N|}L%)=7%40)UhH^sdz*l9Uk22BTr=rF-_G@5{9ZxVp9KDzX$?-#UBC}s4-pK*>!GYLU@%+; zXRK_S8~`a{d~AxD_J+L4sM3@$?F|*F@;lR5!I*yY;5+-Nwa*aj2BfpmjF9W0Um~$J zCy_~wjB8oWEtnCF&LRWkEf^9=^GN_H$0X{AhJ4d705_D47{|-@6nJ-zScxv9Fxc09 zkf=PbgGEPo#DR`Em9ID;hD>q*Jux(*#B!M8IDl_Lq%ovgD;XJE@P*vVH1{NBf!<(; z;83ub_*KurlEi!PeTo1#+00{M9bMJZ?$81L#sLT+{-4RV0a>q~L*Qa-lY<4C8$VRY z=`Cy?QQ=eIaDT9JH=ZZs=ZpB^JyAIYVZDFpg8XvmL0V zQpJ@lYEVHCx$RR_tVQkt?D5$U>%}$hXuOge2u<_XUH=MQjfz-L8l6H(C0%9pR+u){ zm*?^wm6l`CICTvs6++_dtFYs8UKB&St74I@l-a4&E5s(} zFl-SdxAyMm?w5EHGUS$v>@9*ok9&hK3HP|_h;jSrY?{5ry@Lbw1rs#v^-tebZH>r} z?9f$J34t^MT5f!E`=8#3%zSDz^4u-2wO>M=_v!Di8N!$1ziSyNCW&cL0B}r?PQPak zRTQ7IZbHhLPOod4`4seH$|Vz;huEeBV^@*x-0g1W`iKd=mz3TDR@X zL|di$5ydU+ODhY#tPg?NgQ~o~?S@6)3ZjF0`EOOR?jcZRXAJ5OkZm^teMWle_I%je z3oNlN5Bq#yMH^V}pR0_SB(28Yu>vbhWvp{{c(-_?x}(zUz!G;YCfgZwJutJOdP|$HQSdKa zcIn(C^9A=EA-)xESQWW&ap>6`dPtSf?@r%4$y7;m6st%p2mev2M<1p7eY`I!_9EB>S)!!XUlm>)Xw8lClg!Bjn>(K{|KsZj|$HTWaC z`X2vH@iK4QCEGm5-GY$>;l|zkiNDq3!ZQ)3fOk^N8(&72{Y|o}Au_~ZmC3ldfNTE8 zhxY|)9EdCGBv~?|5-6MqR?W}2iK`l4CYw?^NtZ#q7}yCh&sxrk^R|*!?jmNK8>&1_ zSipTDV`{_fn5eDu9n4SHaJ=*q*dZbAqkSNWw>#{zp|Cfs@o;i;(|f6~i;_pyvnTV+ zO?prr`VC)8A~IdlQu|Cze+Z@ z?C!Bww408uRRVdDA&7wyyW?>?k#EZG>~fI^kL+dJ#Dqw)w6T^1bn5mO?ruxH4ppzY zr)StxKdpOcKd`fn;k&=GI>Cp|PgExurakQ<1MJo{cXzmz}%@@;XTlb5c<6Np^K3NCj zM`Dlq zOC#&8A;-D(duu&4ZTqIsDQfJot@8~ggDqtt(yBN={>6gn0lvh-IG+8M1IhND@i%&R zFtmaZ%fS9mirivb(z@JA4W`L0-}qn}ptjF_-bgzS_YLzqUfh&mWk*0Cpckk`aApT@`Uf7i_B%)woEeMl+k?ED zwU7-iSZ$`*n}}Rxy(<1m+Rx|-CcGB)xuc10c`iyxkDZ6*Cibx>#1Sdu03tn?-vGqzGbq@erOO#g&&mhMR95I#5|QXS!1G$RrXeLd)SD0ufR}0pXhv^+yL$r8d zIpB}2U`HkTgE_(1IHqNwcTtv8myD69%&zg)A{ydl5Uxk z0I|VUoM!-OiM^v71p(_V^%%ar>LH)k)x~5Lul_x8>Y8?H-$UmIt!Wa=#3&wkLLtLZ zTvhk{_!7kB3zKnOusS7b75L`UGMSPc5tSx?q+63_qAo%^iU!x3^J%7H-l&)9w#yxi zmnoc?PVRCs&LvY>`VKo?@&P9#^b?=`#O8JRwe@R``A!X$fa&o?-2NR2>d$){v87U4uOA%z`sM_-y!ht5cqcp{5u5x9RmLj zf&ZTkfkD}0$0u1}&~NC+EU@KEdpoB;Gs*6cSzk~l8C3tTndF%dzcR@aj~GaQW5~;h zNhqpG{Ed9=053Y5tVP zby81WMH30vAJ2|jy&|6{L428L`8H$3fGouc$*n~44$_1V@i=TD(Db}(U!dzNtRx%p za7tfr!CU2eBhj;(o*<+*WYgI6-9F&H3|p9Eu!3hRZ6o;VPUo`~eCm5fg0RZH`G5$bevU2)EM6h|p@V5-I z0M-A7Ri>e0KPQdq+tY5c;T0AemRVRlXPveSOOAy8wy#6OLvNpTY0qz%|Kt*2WVkJ(AFkw)qPX3(Ky;C~ITXjqoAf?Nz*paR@0p%?krAgChpCoI}l7wd!N*V^A z-H7g_UC%@4&`oIWg$#TNtL<*-jG`R3*o9w~C-_llV+P`~LmN6g$l@Ee{E&lwZVMFE zo!WLxb@t>YsY~RGw6uf-NQpTvRa$Lw4&+G53!b=))w5T=UJWT?e%}Gvx0Z9+!z4`o zv&kW)jXgvOrB+mMspr}`_ernVyG&D%?P&A;1o30Op@4= z9O4JUnw@|6Iy;Qo@g897jY1fEtL$mmawSteYqOSUXYx`jd=9E*<0TSH*j~ERae6DSmm1vH{M#($ zam#t;*u_U)D>UkHWc;!{sp!KB62TipTm*gtH;PpLS>`R2tDDHmcaTc8KyoHVY{YZj z8M}hQfyLoxFZrx#4;>?#B{NZEi%+HZJ>I@28ww|xfOKrlW69I;f%5{661fB-TkiFN zled?}@?lmPH8wW~U}WjG^6h}PICH6PnPW_B?@om}Iui%lZ>6#!QwaHNz{vSZ%E}1U zZxfUhzfJC3ui0JBeW!Kjaq^?LIhpY;XTQAAYm0|GU02@VPPTLQNJ|3d2R1=r)RemA z@J$zK$m#k1+Si+wn&}Frr8X~$B%F3bWt8sjmg4~4@-n@6%IVUZ4~mz4!rzEEhSPVo z=i2+|F2dJaHfcDUeWPD11!2=S+u-;$zZ_FyI!DT7YnT8|@=JUVXgr0w@_W>JQ(9iCli$XQGtL>t5vX%oCQc zn+~BVQ0lrj@8G8mE85pzVAqib^V2Q$0m7A`?#s>2&PHL2b49sp0AQy&I_j!uJg!|l z+wfDEvCNL=I|Hbly91d)IRuE!Qe--~bOkPwhhDv}V8)WFxL!HamXIB%wlR9tm%v5K zzZ9(V6DX~Bf0y(|S^LV13PGShKt~Rhq07QXf$H+h+AWUn!#5ux>@>^Z_~y*ll+#Gj zrVQ;T2QRz$7a`{$8!?BixkfXk^s7d}WE+)Mmd%9)6W<>6Y3@Z6P0Dv?DXP-$!?hNC z(255vL`<7KTvrdpmbkN|qVM_U3s(UaH%Pb~6 zMqt4K01%gcu`C6e{_h(|Ly!DJ`I}{b`uvwpe>#0un1DZ=KB)dTl4YvvE6vNI`Y8H- zmcD{Q9oDkkM#8d^&505RqY}Z2S-&W4HEFdzD2KEA>~~Zu2Hrq|Q&$z|F6cCz!OOq& zuw;O9x$;RfO3ee!Xv-8wGH}fLx>Vdhe^oGC*AZZ^g3!#Ye#6A9vXfQ0=@8U&RIN;$ zKMr|kn1f(M<^Iew9kMNkY$vQk7f*Bh6?jyc$U88p)YH!5TI4UN0EMXrWZ87uS#ciW z5``W*Q4!R>L?P_3$QYdI<5)!ANuWlN4jhkGz?)~!lhCuT1K6Z>v%+{H@v&p@SH7^Z zLYoZOgu&A;wBhPY&Zd&Z#HdL?ppATjod+&R{x)B69F1&Ei;^Y+|D3moN7` z9683bv8!i0cN-XDg+~@!HJeD0p*6FoYtB`#YX*7cSFQLAhZW05ikupovkdi_6ukfl z5!E#4cQJL@>&G?iNtR{MezS?w<^n>ZAka(mo#4WRks3 zg?!m9iFVX0W7nVJ)f_QScIgRt3Dwck5-zQ~Dp>jD)5KGb zSMb+5n6m_(t%;x#wjIs5zWUM(_u?dnrN;&p=5Ec@A4yjRBkF$Pnwq;GM80|cfy0r% zxPI+&TSn~kTRZvG;PWf8erfILtc3YO)xB$FMMCormofeGyRDvBadGmQ@1L8gqB`0o zoPDX|F0*9xS*aO3Yf@EwS5D^$E@*4g_i{kvhGE{Jf{R>r{=`Fnin8C2ogS zr~hPKk_JHBHm!quKf?mg{<-hmPOL+jNxv7puFCv`99@QB0E~w8{25L2#;jSElr@xy z=i_mFF@*|QDC&f9$gpVI859K!sVaO(WMXi!!KMCK-m&K^XRpQ)@~mOCi8?~ZcEW)a zo}|7?7&m_@1jW`Pnr)+JAuBH$Y7%AVJyvPuy&zOdJyoV*0Cb(|HZDH15kFh+@yy%i! z*%rQGm*p)~UcbS6pBF|-7B3!>-!uWa-_!ke!_|?jXd*ud-ip;(Tcu~d3CB93l?1h{ zY0IEg?a*Pt@gm#QLm%njTPVNP{=>q7BL5z=lrx>IEoMdp_HA@h#?}qh4`|RNnmwLn)0c$`P}0hr`h|WE+A3TLRGk4vw({hnja-PQ{0jj@mSIZ&x58WH}!b*^vxw zdzocVWNU@ts1$kBX=Z?toG0@ZuO_8Kbh;xIJTeuy6j6H_wBlb}TEeK#hjBxmFwvr8 z_Nglwme_VvG_bM}PpAWlu2#OwCsVd_RTHR=?2nds+>@9hGPe>GvDabzaRV@&_Bs_u zhX@>gu7O2j?-de>mSEEB(08@~j}dPpJCStdEB|e#=WIXpn(1#}=tGNgrWA1H=Tp** zb7828Mkw=tvG%~F+hMuGm2X=Vlz%7e9Yk_J_FgzcAZyIn&}!~8ZM||Xn<^^XPL=!( z)EF}Ca)o5_^80*0)oaPiYGyH|nw6;l657XYwJ9`JIyu##ihMXBgd)YIs})#~Oj(4a1-lp^kTBsg zbR}#ddE9F~&d!Z1-34C5t(LL5n$dOftRtU5!t|zA?Zjh$*YY6T7_vQAaG+DVUYazS zM>z6Q7Lg*mL#5&>I>{g%(vx~0mk|>RA11z4?tN=l&9)on!CIHc#6S&4Vc$nhrd&z+ z2+_~TW?2AMihM1W)C7AGM+K|_80oxB*!85hMI1J!yK-Q(>q@~$7z&B1^N^Ql-A(Gc z&4N{*1PHmDngdl$D@Sni7E}AYn^X@iLo_qP$jI8PS5GnUnUKBf8V}*rcnNY6!KKA)h@9es!`THAO+D4ZJj*j4 zV{QL=1#Q{gope#3IV0Vr^ow+gOe?lZow8bEJ$JT@v(9uW#3G zR?8HSDMCbN2wC}0;~&3*sq{#?7DY6pa~z~w_)^B1zjT)DD+R% z?M}j56satc-i&Ku$G1Teoe~UGa;k^36#}^D?dM+Plv%#g?u1Eurd;Wbh!n!BYG1z+Tv4p}|!g|oeL#)m$P_*iXb9;CSt%Pi+RB{sy zHlIbvhPXU&2U0B27-4vf@o3)_ZrJ*aS$}<=D=#ZfQ_hZM zd!=k0Gjr%>RoT%K5R)2Ys;6WJ!0L%`hsCJ$V+$6x2o?t;k|Ab1M|U;+2vjlZ<8QQf zc!^twI5Vziy z^Pt!}E0GgigKt zbcpYY=7QTs6P~kS`8}(^%`!M6Obf`_M>vY(60j7S#Z84A!;CZ%&Z}12HPH^$*{O~+ z!`G4tXJYe3XzXn#ky%O~!@am+cGPEUK3gKhQTF$Z$I%sQE?Okht(C`u(WTjulkES~p5d0Oswlz{;B6Md;A?2GFHcnxDMzn&t&ld*|pWyUjC%Uf$EGEnZBl zl%*so*BS>V$VDn91bYiBLxGc`xCSL)nmVaitWCwm5E9S%uJ224nWnP&-Raj7!)zsk z!-k;kmvKz%@?8^v=(IuUSH>hrOsThs-;ATMlDjKvkkOTEJ3h(0<`7E17@0C@cT>YA zFr?7m?D4UR7;`S>@~~-?CKZ@oz&l8r=_wjY4N7E43XzCGY!r|KqdW0)5GO4S_i z^R`{WYZ(dQq=>0&`dk*Si6+4eKc8z@MARNT!Oc51&p~d#NSZKiK*!a=$gEAOf|J~c z)?P8a-KI@`YCtc5tK&egdYj1);>VGcSAQ;4FF&z@Hl+H|Jk-3@YoZu>6gST-Mnu{5}jXuSqr(008ptzx@7J@Lztv z@p03J{^<9C#&%{ljE`^Mu(L38`X#gEmH&Bm3RM4_`v=J^_^g;8Z|Msg!~+Uszsf}@ zbHm0Z!io&$hULxrM3#9TBpw8xUinamkE?lA-z}wkuoEk_zv%^cnl}6>^dT($hVig% z$)~rbJdrXG=7V1>OyT(Cx$e&4R#p6*Y2BVVIC$bXSQ!_jkk<}{UgXLi1LuwW<`f25 zBUe^Ik(b`WYaJbTE9Wo+l90Y_Sj+VAvu(Y+`AF%+POgvqbdRb|uy`g@%pMVOe_S$j z`l^w0RAPBQbbu*ZF*+tE4~txyVd4G!)x9=fVWJ8@Ke*+gS4JO9+xmQOh+8vS22Nuv ztK}uoM|81z6yeRA?2h&!Ur(!d2Z;(zSwu92#!42ph{!=?%KRy@fS9$q_gMz6Sf>}n z6&^3X?OFW@l*)5lD8Oh%+bQQx^Oy}y<}%PO?>NiN5N0LyqtTS8v*_2x{_0t^XmX=U z-b>9~V$!C&NyXLTcvh`%+L07TiT=a$%Viq0@C&h6b`-62FGc1`hKc9>7!DDfI~b91 z?{5h1g(<)+GXxD5_5I+LYb%+eQMD)4KhK2T_HTF#SxE7l4wF3lhJ;UDBmbtCo$TR} z05GsfqdMGGk9&2{wErT+%)b!=^A{m(EP*EW#*U`HDDnO;N`UI$l=%NEC3>DvV&su5 zXul|7Z)Ng!yIyy4q zw5p`EEf2R$nUFihf@ll9`(K8K+vJPD5%~2otXf{DfBwrweBhJ8M^V2ghxw9UzU@}@ zJ=>N!QIT$b1PXFM(St)4!}{wNxF(~{Kowa3E#iF8QD_w8C|J{L=OgKd>GoYN)$!j zr|%jW?Oxe2iDue(37i;j*FJWKXKV?#`N+G6rg!l96X20s!0>-6*QNIKPg<=xv9HQb zv!Zd5*xT=b=L<1buqfb+4jNNq-wg*OuW>SG8(dOV4}n#@P%%wEJr0x;v*49`<_V#C z{|;-t8u^(*Ba6QOmRXhiTF5?`;nt=`yuGZc zq&3Sf$0c4t1aP4j&_HSsW|{_+xvcfM8r@v+%jnh>Ek;UZ^-58p<@6MIRoZ}|D`&U{2uAUULC6v?~L!S&16 zQda#kf%=BH`X+gDR)QkcVPxxA8Z@|O+lDB2w{E_rjNJq8Z27?~%lR|g}XcaO^RP%S&@w$Q4dIjvQU^|8EX%4fY@wScCdj4A)_1Hl>w+b6cuE|3LP{OBP9jaOY1uJsDT(>C9rW<>!AZ?M6cbH3N|T)mF>+|*KV z$%B0_-tSA1@Zhl(jydfw6(!yz3Iv1x{ z&Czr+$rvBcG0DA^cllB=Jzg+CJR1;MBc_|*KIEKL6Yo!<^f8i-tWIaGvmv~ZiS2=% zC~FHbj``tIJ}}<2hMPi(rw3sd+) zU5oMZTMNUa7w>+9EX^=M8bMyM%AKeu6RD*}->fnw-xR@y>?f3@$Podptn?N4XaPRsZmTzs=0Cig@Uy%BX-Gh4{ePBP|0t55-Tiw+{@Ka@pG|J_QFQIG(EJ|4I~d9>9N>?sy6flHH%GeIVKWXQ}n4=X-?y zFGTpK$RM@wX*>y13xAec|6#!=$p5!?_!Jlvjy{b`K;h`mQtRI%_Bho4b#VF=9~9j@ z#Ro+**T%uS|!N x{R#iiw_Z=tL0;?W5&~MMf0kN*26@0gU$vFxpdJNgkf4AL@O}JNq5%5!{{g$5i@*Q? literal 0 HcmV?d00001 diff --git a/src/panel-changes.html b/src/panel-changes.html new file mode 100644 index 0000000..96612fb --- /dev/null +++ b/src/panel-changes.html @@ -0,0 +1,19 @@ + + diff --git a/src/panel-clipboard.html b/src/panel-clipboard.html new file mode 100644 index 0000000..96612fb --- /dev/null +++ b/src/panel-clipboard.html @@ -0,0 +1,19 @@ + + diff --git a/src/panel-common.html b/src/panel-common.html new file mode 100644 index 0000000..e596707 --- /dev/null +++ b/src/panel-common.html @@ -0,0 +1,20 @@ + + +

common goes here

\ No newline at end of file diff --git a/src/panel-tasks.html b/src/panel-tasks.html new file mode 100644 index 0000000..6f45211 --- /dev/null +++ b/src/panel-tasks.html @@ -0,0 +1,20 @@ + + +

Blah blah said the blah blah

diff --git a/src/popup/index.html b/src/popup/index.html new file mode 100644 index 0000000..0cde8dd --- /dev/null +++ b/src/popup/index.html @@ -0,0 +1,29 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/popup/popup.css b/src/popup/popup.css new file mode 100644 index 0000000..8002b1a --- /dev/null +++ b/src/popup/popup.css @@ -0,0 +1,95 @@ +/** + * Copyright (C) 2025 Michael Becker + * + * This file is part of src. + * + * src is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * src is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with src. If not, see . + */ + +@media (prefers-color-scheme: dark) { + /* Dark theme styles go here */ + body + { + background-color: #242426; + color: #aaa; + } + ul > li > a + { + color: #fff; + } + ul > li > a:hover + { + background-color: #666; + } + ul > li > a:active + { + background-color: #444; + } +} +@media (prefers-color-scheme: light) { + /* Light theme styles go here */ + body + { + background-color: #fffffc; + color: #797a72; + } + ul > li > a + { + color: #161017; + } + ul > li > a:hover + { + background-color: #d3d3d0; + } + ul > li > a:active + { + background-color: #b0b0ad; + } +} + +body +{ + cursor: default; + padding: 0px; + font-family: sans-serif; + font-size: 10pt; + -moz-user-select: none; + user-select: none; +} +ul +{ + margin: 0px; + padding: 0px; + list-style-type: none; +} +ul > li +{ + padding: 10px; +} +ul > li > a +{ + cursor: default; + display: block; + margin: -8px; + padding: 8px; + text-decoration: none; + border-radius: 8px; +} +ul > li.uwt-menu-item-header +{ + font-size: 8pt; + text-transform: uppercase; + text-align: center; + letter-spacing: 0.2ch; +} \ No newline at end of file diff --git a/src/popup/popup.js b/src/popup/popup.js new file mode 100644 index 0000000..38076ac --- /dev/null +++ b/src/popup/popup.js @@ -0,0 +1,57 @@ +// Copyright (C) 2025 Michael Becker +// +// This file is part of src. +// +// src is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// src is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with src. If not, see . + + +var menu = document.getElementById("menu"); + +function addCommandMenuItem(title, url) +{ + var li = document.createElement("li"); + li.className = "uwt-menu-item-command"; + var a = document.createElement("a"); + a.href = "#"; + a.innerHTML = title; + li.appendChild(a); + li.addEventListener("click", function() + { + if (typeof (url) === 'string') { + window.open(url); + } + window.close(); + }); + menu.appendChild(li); + return li; +} +function addHeaderMenuItem(title) +{ + var li = document.createElement("li"); + li.className = "uwt-menu-item-header"; + var span = document.createElement("span"); + span.innerHTML = title; + li.appendChild(span); + menu.appendChild(li); + return li; +} + +addHeaderMenuItem("Running"); +addCommandMenuItem("i-041280314785ab494", "https://i-041280314785ab494.privatesuv.com/"); +addHeaderMenuItem("Custom"); +addCommandMenuItem("justin's war"); +addCommandMenuItem("impl"); +addHeaderMenuItem("Manage SUVs"); +addCommandMenuItem("Manage SUV Connections"); +addCommandMenuItem("Refresh SUV Connections"); \ No newline at end of file