📝 Added entire config directory for backup purposes
This commit is contained in:
parent
4b38e59bb6
commit
9b946e2d14
11091 changed files with 1440953 additions and 0 deletions
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"appDescription": {
|
||||
"description": "Helping you avoid Progressive Web App woes.",
|
||||
"message": "Lighthouse"
|
||||
},
|
||||
"appName": {
|
||||
"description": "Helping you avoid Progressive Web App woes.",
|
||||
"message": "Lighthouse"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"appName": {
|
||||
"message": "Lighthouse Canary",
|
||||
"description": "Alpha: Helping you avoid Progressive Web App woes."
|
||||
},
|
||||
"appDescription": {
|
||||
"message": "Lighthouse Canary",
|
||||
"description": "Alpha: Helping you avoid Progressive Web App woes."
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"file_hashes":[{"block_hashes":["jNxJvp4tTAIuVHbA57odUZvg0ZxbOwpYDo/dy3GaZ2I="],"block_size":4096,"path":"_locales/en/messages_canary.json"},{"block_hashes":["6iW/nPVI1wsRy5jSvPYd6dees4/aTzjtQC/Y3WAbhRA=","ujBrkqsqZm/cCVVbq655kqAet1RZVo9QdOOvYefeYeo=","pe7WfVXFuw8yo3kuJ3nVI2PjGrwKxX4cIB+DL9WgxLk="],"block_size":4096,"path":"images/lh_logo.svg"},{"block_hashes":["8IFxJc11X6sOiT/xR4UCZxpyTgbnsC8mQXos7/NHGGo="],"block_size":4096,"path":"popup.html"},{"block_hashes":["PSp/alDapmwYVXh6UpVDh72QE/r3Vju4jOivFSPTdFI=","1NwZAvSVEC/SAo6Yq5WG3N2IGWccQS/p77ZVyvz+Afk=","FGF0AM9HX83FMwYtvGEESQYHv4Z8pOxUJuK8SAs/sZI="],"block_size":4096,"path":"scripts/popup-bundle.js"},{"block_hashes":["1Bmj3APbLaDiFivNK+qGEK0Ev0Mx1hqxtKO9Rs1Gjho="],"block_size":4096,"path":"styles/lighthouse.css"}],"version":2}
|
||||
|
|
@ -0,0 +1 @@
|
|||
[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJfbG9jYWxlcy9lbi9tZXNzYWdlcy5qc29uIiwicm9vdF9oYXNoIjoibnZnTTg3ZHNldzUyWmNOVmh3dENQUkRZTm04SzVuVE05YVNlRUlUa2pZVSJ9LHsicGF0aCI6Il9sb2NhbGVzL2VuL21lc3NhZ2VzX2NhbmFyeS5qc29uIiwicm9vdF9oYXNoIjoiak54SnZwNHRUQUl1VkhiQTU3b2RVWnZnMFp4Yk93cFlEb19keTNHYVoySSJ9LHsicGF0aCI6ImltYWdlcy9saF9mYXZpY29uXzE2eDE2LnBuZyIsInJvb3RfaGFzaCI6Im9TNVp1V1o5S0J0Mmw4bWI1dzNJRHZCLUk3SlpXeDcwSGNOYkRvY0tsVzgifSx7InBhdGgiOiJpbWFnZXMvbGhfZmF2aWNvbl8zMngzMi5wbmciLCJyb290X2hhc2giOiJjTzhrRFo5RTNvQllRdjJiLXE0cDdnMFJpN3B1Y2RxNGt1S3hBdjZuYmpFIn0seyJwYXRoIjoiaW1hZ2VzL2xoX2xvZ28uc3ZnIiwicm9vdF9oYXNoIjoiTzBQZ2FnOWxfbkd6SHJsVU85bzAweEpwN2lnRjAxdkpFUEUyVjl3WkxCNCJ9LHsicGF0aCI6ImltYWdlcy9saF9sb2dvXzEyOHgxMjgucG5nIiwicm9vdF9oYXNoIjoickw1dkFoWUVIWGdhYk9SOU9OV1NwRFFCTlIxR1Q0Smx0NG1QSFhIcG1HcyJ9LHsicGF0aCI6Im1hbmlmZXN0Lmpzb24iLCJyb290X2hhc2giOiI0N241aVYxbnFXemtqVzVuTEZ0TnpQU0NGLVAxM3J6aFhQT2ZWdjBPbkVJIn0seyJwYXRoIjoicG9wdXAuaHRtbCIsInJvb3RfaGFzaCI6IjhJRnhKYzExWDZzT2lUX3hSNFVDWnhweVRnYm5zQzhtUVhvczdfTkhHR28ifSx7InBhdGgiOiJzY3JpcHRzL3BvcHVwLWJ1bmRsZS5qcyIsInJvb3RfaGFzaCI6InE3aG5YQXN0eFZLaVg2T2xGeVJrYmNNZUZJd1ZhdmJMY1ZjM0hseG96TFUifSx7InBhdGgiOiJzdHlsZXMvbGlnaHRob3VzZS5jc3MiLCJyb290X2hhc2giOiIxQm1qM0FQYkxhRGlGaXZOSy1xR0VLMEV2ME14MWhxeHRLTzlSczFHamhvIn1dLCJmb3JtYXQiOiJ0cmVlaGFzaCIsImhhc2hfYmxvY2tfc2l6ZSI6NDA5Nn1dLCJpdGVtX2lkIjoiYmxpcG1kY29ubGtwaW5lZmVobm1qYW1tZmpwbXBiamsiLCJpdGVtX3ZlcnNpb24iOiIxMDAuMC4wLjAiLCJwcm90b2NvbF92ZXJzaW9uIjoxfQ","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"VQeHXeKiS79UBiSaDlG8WT4AdIJO0qBG0A89zi_PHfzxqTpdShukYmnvchm898GRfZd5OmA5uiiJjqh6dSu8sMlF_YMBT7ME17uD_7Yvb61_oNMRM5-vArL-83nYZSM_tNiAm4-fMuehZjI0IdtwIUpVY-sdEhJDLyTZpcpKLRyVC97D8vCo46nP22tBR7h0aJSIVHAmeBKhr0LUVC4B38o51gFuVw7juPm148ME9HXCfg8ZNdpC_KZM73v0jszjYSCiby-WFH2DEKphKTfgfqmX1T77psHFBKWVlOD7vsPqG6hrxs-Q624U59afBPVhc-YGwAMzJY7s7KSVWbnttw"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"RDWz7jG4QRckiXhYiL9DSiSK-m0tGWACoVcfkPRmTvVHFCPRVPnxnPjcXDnIRtv4_a0WOmm7POIuA5kyUJjzxZS9VdtROmrnMzxcB8upRKkvbRJ7jtZQT0uuvn-TsKitqiQ3MUHGRYZFQPNTP1wwahbheeRjiTILT7luAV_b1U8MeW7Xr6wbfwVRMSq3pHst8Bzd8gtEDGDAVkClrZ-jiZLD2lTGjGcODoVYddMpT7JzgxiBHx4Uz47aNpvuCAqHVx3EGAvvFsgCU11MSFxuzdani1FmNTMgQoBakB1S-m1iSvuEKIUi1E-Zo_ZEQI68X6mfpUZ_6QWifaxi97hoiQ"}]}}]
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 605 B |
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
|
|
@ -0,0 +1,158 @@
|
|||
<svg viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<path
|
||||
d="M24.556 7.222h-3.51C19.558 3.012 15.549 0 10.833 0 4.853 0 0 4.853 0 10.833s4.853 10.834 10.833 10.834h13.723a7.225 7.225 0 0 0 7.222-7.223 7.225 7.225 0 0 0-7.222-7.222z"
|
||||
id="a" />
|
||||
<linearGradient x1="49.994%" y1=".226%" x2="49.994%" y2="99.725%" id="c">
|
||||
<stop stop-color="#212121" stop-opacity=".04" offset="0%" />
|
||||
<stop stop-color="#212121" stop-opacity="0" offset="66%" />
|
||||
</linearGradient>
|
||||
<path d="M13.722 0H0v14.444h13.722a7.225 7.225 0 0 0 7.222-7.222A7.225 7.225 0 0 0 13.722 0z" id="d" />
|
||||
<radialGradient cx="10.128%" cy="14.269%" fx="10.128%" fy="14.269%" r="144.566%"
|
||||
gradientTransform="matrix(.68182 0 0 1 .032 0)" id="f">
|
||||
<stop stop-color="#FFF" stop-opacity=".1" offset="0%" />
|
||||
<stop stop-color="#FFF" stop-opacity="0" offset="100%" />
|
||||
</radialGradient>
|
||||
<linearGradient x1="36.626%" y1="20.358%" x2="64.01%" y2="100.652%" id="g">
|
||||
<stop stop-color="#FFF" stop-opacity=".1" offset="0%" />
|
||||
<stop stop-color="#FFF" stop-opacity="0" offset="100%" />
|
||||
</linearGradient>
|
||||
<linearGradient x1="68.935%" y1="65.756%" x2="31.065%" y2="35.799%" id="h">
|
||||
<stop stop-color="#262626" stop-opacity=".1" offset="0%" />
|
||||
<stop stop-color="#262626" stop-opacity="0" offset="100%" />
|
||||
</linearGradient>
|
||||
<linearGradient x1="62.531%" y1="13.086%" x2="24.779%" y2="100.996%" id="i">
|
||||
<stop stop-color="#262626" stop-opacity=".1" offset="0%" />
|
||||
<stop stop-color="#262626" stop-opacity="0" offset="100%" />
|
||||
</linearGradient>
|
||||
<linearGradient x1="0%" y1="50%" y2="50%" id="j">
|
||||
<stop stop-color="#262626" stop-opacity=".1" offset="0%" />
|
||||
<stop stop-color="#262626" stop-opacity="0" offset="100%" />
|
||||
</linearGradient>
|
||||
<radialGradient cx="14.489%" cy="14.584%" fx="14.489%" fy="14.584%" r="99.973%" id="k">
|
||||
<stop stop-color="#FFF" stop-opacity=".1" offset="0%" />
|
||||
<stop stop-color="#FFF" stop-opacity="0" offset="100%" />
|
||||
</radialGradient>
|
||||
<path
|
||||
d="M28.333 8.333h-4.05C22.567 3.475 17.942 0 12.5 0 5.6 0 0 5.6 0 12.5S5.6 25 12.5 25h15.833c4.6 0 8.334-3.733 8.334-8.333s-3.734-8.334-8.334-8.334z"
|
||||
id="l" />
|
||||
<linearGradient x1="49.994%" y1=".226%" x2="49.994%" y2="99.725%" id="n">
|
||||
<stop stop-color="#212121" stop-opacity=".04" offset="0%" />
|
||||
<stop stop-color="#212121" stop-opacity="0" offset="66%" />
|
||||
</linearGradient>
|
||||
<path d="M15.833 0H0v16.667h15.833c4.6 0 8.334-3.734 8.334-8.334S20.433 0 15.833 0z" id="o" />
|
||||
<radialGradient cx="10.128%" cy="14.269%" fx="10.128%" fy="14.269%" r="144.566%"
|
||||
gradientTransform="matrix(.68182 0 0 1 .032 0)" id="q">
|
||||
<stop stop-color="#FFF" stop-opacity=".1" offset="0%" />
|
||||
<stop stop-color="#FFF" stop-opacity="0" offset="100%" />
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<g fill="none" fill-rule="evenodd">
|
||||
<path d="M0 0h128v128H0z" />
|
||||
<g transform="translate(5.333 5.333)">
|
||||
<circle fill="#0535C1" fill-rule="nonzero" cx="58.667" cy="58.667" r="58.667" />
|
||||
<path d="M71.333 26.667H106v34.667H71.333z" />
|
||||
<g transform="translate(72.778 33.889)">
|
||||
<mask id="b" fill="#fff">
|
||||
<use href="#a" />
|
||||
</mask>
|
||||
<g mask="url(#b)">
|
||||
<path
|
||||
d="M24.556 7.222h-3.51C19.558 3.012 15.549 0 10.833 0 4.853 0 0 4.853 0 10.833s4.853 10.834 10.833 10.834h13.723a7.225 7.225 0 0 0 7.222-7.223 7.225 7.225 0 0 0-7.222-7.222z"
|
||||
fill="#EAEAEA" fill-rule="nonzero" />
|
||||
<path
|
||||
d="M31.778 14.531v-.087a7.225 7.225 0 0 0-7.222-7.222h-3.612v.18h3.612a7.224 7.224 0 0 1 7.222 7.13z"
|
||||
fill-opacity=".2" fill="#FFF" fill-rule="nonzero" />
|
||||
<path fill="url(#c)" fill-rule="nonzero" d="M35.497 21.667H10.833l10.22-14.445z" />
|
||||
<g transform="translate(10.833 7.222)">
|
||||
<mask id="e" fill="#fff">
|
||||
<use href="#d" />
|
||||
</mask>
|
||||
<g mask="url(#e)">
|
||||
<g transform="translate(-2.167 -9.389)">
|
||||
<image opacity=".1" width="15.167" height="23.111"
|
||||
href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAgCAYAAAD9oDOIAAAABGdBTUEAALGN5fIAKQAAA7ZJREFUSA2dlttvEkEYxdnlWqhQoEWrlRq1xqQv+qLP9f82fdamvmhjVBJbSnrjUtoCheWy/s6ERagsBSc5+WZnvzl75sxtrcDfYg2rXvTeuMOKF7123+gR2Nvb26FOpxNrt9uheDxuq0ez2XSXlpa6VDuFQqFHHIB7yUVqQRhuNBpZy7LyrutmiBHaA7Zt93i+5vksEonUer1eA3J9ROS+JcgbK5VKJej8EpIdCD4Q3xHf0rbN+01icjAYhLvdbn9jY8Mpl8t9X0ZeiNReX1+PO46zBdEOz+/BK7AJngq0PyZmg8GgjVpnbW2tl06n+7VaTVb8Y4dRmsvlYpDmUfgGVVvEVZITQzwQIVBbkvcRIPJeLBZz8F2qJ4hFGmD4YUIaPENVnpgEIaAJU04MLAP5nQNpMED5FapbKJ7w2ChNJpPkWB6xhi1VmiwzkUSR6yNSn0HpCqNxQQXiy2q12qF9pNYordfrLh7ZTEaaxOckyMM4MEuLqKIPBPl4lCgMIL8ElVAo1Gi1WlpyhtiQ8mBlMhl1kH+anCdAdTMSolc85VIdIt8FN1KLDU3PBo9UvgZIULK8vWuBR6ooYptc2SPFXUgvwuFwrVKpGBtGpHNaAIcpxgpqEqENUsa602w2eyO1455pKG08LZN0QnIdaPeMJoD6eFFfrYg8/V7T5xF1KZ+YCJevSf45+DWME7NK23iR2jBkWn4P6ZtkwrSCrAmlh4eHUlYn4YSvl6m3gZ9SXmkarDCIKtJPH5pQqudFLQig1Cimb5QJM0pHEyVGlQVWgclHodan/C/2+/3SysrKzfjwleT+hwVaWtq6LxTxNXKX1BCTMO8qINXSaLX7UlgR51APTiVdYBXA4+qUakJeB63b29v+VNIFLND+b0J6DH5AekbsTCOlfa5VoKXWhagKcUHQlaO7zJfUs0DJdL4ADhgvOkMb4Ihd+BXyIy5NqZ7YpuMdzCrgZL+mUTvsCvLxLSvCFjgF38FPVFaHtrk6EPwKPK6DiiZRChzUyEMN+xaUeN4nfuJm+U2eVJsbYCYpyV04rkg+h+Caeoq6ZrsE9njeBV+Y8YtisTgaiZ+n9OFM4+YkyE/5egqxTnrN9B74iO97iUSixJUt5aN7SgvXt4ydsSkI10mUym/Ud0W4vLx8fHBwIEK1j8pMUrKs1dVVG3UxPNMxp4n5DPYhLE0jFPMsT/XejUajbf5MdFjo2giisMyQK36E6mTOP1VmFPPzxvsIHluQO/f9T81Dqu/dzZt1cAf+AMymEnybyIybAAAAAElFTkSuQmCC" />
|
||||
<path d="M2.167 2.167l5.857 18.496C9.98 18.698 13 15.99 13 13 13 7.02 8.147 2.167 2.167 2.167z"
|
||||
fill="#E1E1E1" fill-rule="nonzero" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<circle fill="#EEE" fill-rule="nonzero" cx="10.833" cy="10.833" r="10.833" />
|
||||
<path
|
||||
d="M10.833.18c5.951 0 10.783 4.803 10.834 10.747v-.086c0-5.98-4.854-10.834-10.834-10.834C4.853.007 0 4.853 0 10.833v.087C.05 4.983 4.882.18 10.833.18z"
|
||||
fill-opacity=".2" fill="#FFF" fill-rule="nonzero" />
|
||||
<path
|
||||
d="M24.556 21.486H10.833C4.883 21.486.051 16.683 0 10.74v.087c0 5.98 4.853 10.833 10.833 10.833h13.723a7.225 7.225 0 0 0 7.222-7.222v-.086a7.226 7.226 0 0 1-7.222 7.135z"
|
||||
fill-opacity=".1" fill="#212121" fill-rule="nonzero" />
|
||||
</g>
|
||||
</g>
|
||||
<path
|
||||
d="M24.556 7.222h-3.51C19.558 3.012 15.549 0 10.833 0 4.853 0 0 4.853 0 10.833s4.853 10.834 10.833 10.834h13.723a7.225 7.225 0 0 0 7.222-7.223 7.225 7.225 0 0 0-7.222-7.222z"
|
||||
fill="url(#f)" fill-rule="nonzero" transform="translate(72.778 33.889)" />
|
||||
<path fill="#FFF176" fill-rule="nonzero" d="M42.667 24.667h30.667v26.667H42.667z" />
|
||||
<path fill="#FFF" fill-rule="nonzero" d="M39.333 65.333H76V102H39.333z" />
|
||||
<path
|
||||
d="M80 48.667h5.333v10.666H32V48.667h5.333V27.333L58.667 14 80 27.333v21.334zm-10.667 0V33.245L58.667 26.58 48 33.245v15.422h21.333z"
|
||||
fill="#F4481E" fill-rule="nonzero" />
|
||||
<path
|
||||
d="M29.631 109.656l9.036-60.99h40l9.035 60.99c-8.561 4.886-18.472 7.677-29.035 7.677-10.563 0-20.474-2.791-29.036-7.677zM70.61 67.067l-25.094 8.154-3.05 20.585L73.38 85.76l-2.77-18.694z"
|
||||
fill="#F4481E" fill-rule="nonzero" />
|
||||
<path
|
||||
d="M79.949 59.333l7.455 50.323c-8.561 4.886-18.472 7.677-29.035 7.677-10.563 0-20.474-2.791-29.036-7.677l7.456-50.323H32V48.667h5.333V27.333L58.667 14 80 27.333v21.334h5.333v10.666H79.95z"
|
||||
fill="url(#g)" fill-rule="nonzero" />
|
||||
<path fill="url(#h)" fill-rule="nonzero" d="M58.667 48.667H37.333V27.333L58.667 14z" />
|
||||
<path d="M58.667 117.333a58.62 58.62 0 0 1-29.036-7.677l6.685-50.323h22.35v58z" fill="url(#i)"
|
||||
fill-rule="nonzero" />
|
||||
<path fill="url(#j)" fill-rule="nonzero" transform="matrix(-1 0 0 1 90.667 0)"
|
||||
d="M32 48.667h26.667v10.667H32z" />
|
||||
<circle fill="url(#k)" fill-rule="nonzero" cx="58.667" cy="58.667" r="58.667" />
|
||||
<path d="M12.667 38h40v40h-40z" />
|
||||
<g transform="translate(14.333 46.333)">
|
||||
<mask id="m" fill="#fff">
|
||||
<use href="#l" />
|
||||
</mask>
|
||||
<g mask="url(#m)">
|
||||
<path
|
||||
d="M28.333 8.333h-4.05C22.567 3.475 17.942 0 12.5 0 5.6 0 0 5.6 0 12.5S5.6 25 12.5 25h15.833c4.6 0 8.334-3.733 8.334-8.333s-3.734-8.334-8.334-8.334z"
|
||||
fill="#FAFAFA" fill-rule="nonzero" />
|
||||
<path
|
||||
d="M36.667 16.767v-.1c0-4.6-3.734-8.334-8.334-8.334h-4.166v.209h4.166a8.335 8.335 0 0 1 8.334 8.225z"
|
||||
fill-opacity=".2" fill="#FFF" fill-rule="nonzero" />
|
||||
<path fill="url(#n)" fill-rule="nonzero" d="M40.958 25H12.5L24.292 8.333z" />
|
||||
<g transform="translate(12.5 8.333)">
|
||||
<mask id="p" fill="#fff">
|
||||
<use href="#o" />
|
||||
</mask>
|
||||
<g mask="url(#p)">
|
||||
<g transform="translate(-2.5 -10.833)">
|
||||
<image opacity=".1" width="17.5" height="26.667"
|
||||
href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAgCAYAAAD9oDOIAAAABGdBTUEAALGN5fIAKQAAA7ZJREFUSA2dlttvEkEYxdnlWqhQoEWrlRq1xqQv+qLP9f82fdamvmhjVBJbSnrjUtoCheWy/s6ERagsBSc5+WZnvzl75sxtrcDfYg2rXvTeuMOKF7123+gR2Nvb26FOpxNrt9uheDxuq0ez2XSXlpa6VDuFQqFHHIB7yUVqQRhuNBpZy7LyrutmiBHaA7Zt93i+5vksEonUer1eA3J9ROS+JcgbK5VKJej8EpIdCD4Q3xHf0rbN+01icjAYhLvdbn9jY8Mpl8t9X0ZeiNReX1+PO46zBdEOz+/BK7AJngq0PyZmg8GgjVpnbW2tl06n+7VaTVb8Y4dRmsvlYpDmUfgGVVvEVZITQzwQIVBbkvcRIPJeLBZz8F2qJ4hFGmD4YUIaPENVnpgEIaAJU04MLAP5nQNpMED5FapbKJ7w2ChNJpPkWB6xhi1VmiwzkUSR6yNSn0HpCqNxQQXiy2q12qF9pNYordfrLh7ZTEaaxOckyMM4MEuLqKIPBPl4lCgMIL8ElVAo1Gi1WlpyhtiQ8mBlMhl1kH+anCdAdTMSolc85VIdIt8FN1KLDU3PBo9UvgZIULK8vWuBR6ooYptc2SPFXUgvwuFwrVKpGBtGpHNaAIcpxgpqEqENUsa602w2eyO1455pKG08LZN0QnIdaPeMJoD6eFFfrYg8/V7T5xF1KZ+YCJevSf45+DWME7NK23iR2jBkWn4P6ZtkwrSCrAmlh4eHUlYn4YSvl6m3gZ9SXmkarDCIKtJPH5pQqudFLQig1Cimb5QJM0pHEyVGlQVWgclHodan/C/2+/3SysrKzfjwleT+hwVaWtq6LxTxNXKX1BCTMO8qINXSaLX7UlgR51APTiVdYBXA4+qUakJeB63b29v+VNIFLND+b0J6DH5AekbsTCOlfa5VoKXWhagKcUHQlaO7zJfUs0DJdL4ADhgvOkMb4Ihd+BXyIy5NqZ7YpuMdzCrgZL+mUTvsCvLxLSvCFjgF38FPVFaHtrk6EPwKPK6DiiZRChzUyEMN+xaUeN4nfuJm+U2eVJsbYCYpyV04rkg+h+Caeoq6ZrsE9njeBV+Y8YtisTgaiZ+n9OFM4+YkyE/5egqxTnrN9B74iO97iUSixJUt5aN7SgvXt4ydsSkI10mUym/Ud0W4vLx8fHBwIEK1j8pMUrKs1dVVG3UxPNMxp4n5DPYhLE0jFPMsT/XejUajbf5MdFjo2giisMyQK36E6mTOP1VmFPPzxvsIHluQO/f9T81Dqu/dzZt1cAf+AMymEnybyIybAAAAAElFTkSuQmCC" />
|
||||
<path d="M2.5 2.5l6.758 21.342C11.517 21.575 15 18.45 15 15 15 8.1 9.4 2.5 2.5 2.5z"
|
||||
fill="#E1E1E1" fill-rule="nonzero" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<circle fill="#FFF" fill-rule="nonzero" cx="12.5" cy="12.5" r="12.5" />
|
||||
<path
|
||||
d="M12.5.208c6.867 0 12.442 5.542 12.5 12.4v-.1c0-6.9-5.6-12.5-12.5-12.5S0 5.6 0 12.5v.1C.058 5.75 5.633.208 12.5.208z"
|
||||
fill-opacity=".2" fill="#FFF" fill-rule="nonzero" />
|
||||
<path
|
||||
d="M28.333 24.792H12.5c-6.867 0-12.442-5.542-12.5-12.4v.1c0 6.9 5.6 12.5 12.5 12.5h15.833c4.6 0 8.334-3.734 8.334-8.334v-.1c-.059 4.559-3.767 8.234-8.334 8.234z"
|
||||
fill-opacity=".1" fill="#212121" fill-rule="nonzero" />
|
||||
</g>
|
||||
</g>
|
||||
<path
|
||||
d="M28.333 8.333h-4.05C22.567 3.475 17.942 0 12.5 0 5.6 0 0 5.6 0 12.5S5.6 25 12.5 25h15.833c4.6 0 8.334-3.733 8.334-8.333s-3.734-8.334-8.334-8.334z"
|
||||
fill="url(#q)" fill-rule="nonzero" transform="translate(14.333 46.333)" />
|
||||
<g fill-rule="nonzero" opacity=".1">
|
||||
<path
|
||||
d="M58.667.613c32.3 0 58.493 26.1 58.66 58.36 0-.1.006-.2.006-.306C117.333 26.267 91.067 0 58.667 0S0 26.267 0 58.667c0 .1.007.2.007.306.166-32.26 26.36-58.36 58.66-58.36z"
|
||||
fill="#FFF" />
|
||||
<path
|
||||
d="M117.327 58.36c-.167 32.26-26.36 58.36-58.66 58.36S.173 90.62.007 58.36c0 .107-.007.207-.007.307 0 32.4 26.267 58.666 58.667 58.666 32.4 0 58.666-26.266 58.666-58.666 0-.1-.006-.2-.006-.307z"
|
||||
fill="#263238" />
|
||||
</g>
|
||||
<circle fill="url(#k)" fill-rule="nonzero" cx="58.667" cy="58.667" r="58.667" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"browser_action": {
|
||||
"default_icon": {
|
||||
"32": "images/lh_favicon_32x32.png"
|
||||
},
|
||||
"default_popup": "popup.html",
|
||||
"default_title": "Lighthouse"
|
||||
},
|
||||
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'none'",
|
||||
"default_locale": "en",
|
||||
"description": "__MSG_appDescription__",
|
||||
"icons": {
|
||||
"128": "images/lh_logo_128x128.png",
|
||||
"16": "images/lh_favicon_16x16.png"
|
||||
},
|
||||
"key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA00cKAZklxckk0bxDnX9pY8xk8z/mNLoijlkjNBNrLg1dcpzuYvyyPCZpfh3p6UhgZtYt0kM7LzUBzqv0pzW1W6S7WHQcpWfRrMtBqyl/G1u7dwg8CXBQAgCU+imfFUd3hh4NzG8329ufYjzXHTe9JDj4CNc1Mc2IWzchg59WZ3pwGKnvmmUJbKG5MnCHKMJnvAA/GqMINILhMh7UR+XTvhgiDvCP/NBFpYvI0WJ7GksHR7ObryJrvkqO2/WphUK52Mk5PubIQch+XRFcy4Z74tLVmnSeitCWIvKWi+LXEdf+DAVhp22e3FSJNUBvFycQy9NIhQYsfLm05W6cw3BGbwIDAQAB",
|
||||
"manifest_version": 2,
|
||||
"minimum_chrome_version": "72",
|
||||
"name": "__MSG_appName__",
|
||||
"permissions": [ "activeTab", "storage" ],
|
||||
"update_url": "https://clients2.google.com/service/update2/crx",
|
||||
"version": "100.0.0.0"
|
||||
}
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
<!--
|
||||
Copyright 2016 Google Inc. All Rights Reserved.
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
||||
-->
|
||||
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="author" content="Lighthouse Team">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<title>Lighthouse</title>
|
||||
<link rel="stylesheet" href="styles/lighthouse.css">
|
||||
</head>
|
||||
<body>
|
||||
<main class="main" role="main">
|
||||
<div class="section section--run">
|
||||
<img class="header__icon" src="images/lh_logo.svg" width="75" height="75"></svg>
|
||||
<!-- <object data="images/lh_logo.svg" type="image/svg+xml"></object> -->
|
||||
<button class="button button--generate">Generate report</button>
|
||||
<button class="button button--configure">
|
||||
<svg class="gear__icon" width="25" height="25" viewBox="0 0 14 15">
|
||||
<path fill="#fff" d="M-1-1h16v17H-1z" />
|
||||
<path fill="currentColor" d="M12.526 8.07c.029-.224.05-.448.05-.686 0-.238-.021-.462-.05-.686l1.518-1.155a.347.347 0 0 0 .087-.448l-1.44-2.422a.367.367 0 0 0-.439-.154l-1.791.7a5.295 5.295 0 0 0-1.217-.686L8.971.678a.348.348 0 0 0-.353-.294H5.74a.348.348 0 0 0-.353.294l-.273 1.855a5.568 5.568 0 0 0-1.216.686l-1.792-.7a.356.356 0 0 0-.44.154L.228 5.095a.339.339 0 0 0 .087.448l1.518 1.155c-.029.224-.05.455-.05.686 0 .23.021.462.05.686L.314 9.225a.347.347 0 0 0-.087.448l1.44 2.422c.086.154.28.21.439.154l1.792-.7c.374.28.777.51 1.216.686l.273 1.855a.348.348 0 0 0 .353.294h2.878c.18 0 .331-.126.353-.294l.273-1.855a5.568 5.568 0 0 0 1.217-.686l1.792.7c.165.063.352 0 .438-.154l1.44-2.422a.347.347 0 0 0-.087-.448L12.526 8.07zM7.179 9.834c-1.389 0-2.519-1.1-2.519-2.45 0-1.351 1.13-2.45 2.52-2.45 1.388 0 2.518 1.099 2.518 2.45 0 1.35-1.13 2.45-2.519 2.45z" />
|
||||
</svg>
|
||||
</button>
|
||||
<span class="psi-disclaimer"><a href="https://developers.google.com/speed/docs/insights/v5/get-started?utm_source=lh-chrome-ext" title="https://developers.google.com/speed/docs/insights/v5/get-started" target="_blank" rel="noopener nofollow">Uses the PSI API</a></span>
|
||||
<div class="errormsg"></div>
|
||||
</div>
|
||||
<div class="section section--devtools-info">
|
||||
<h2 class="devtools-header">Chrome DevTools</h2>
|
||||
<span class="devtools-note">
|
||||
You can also run Lighthouse via the DevTools Audits panel.
|
||||
<br><br>
|
||||
Shortcut to open DevTools: <span class="devtools-shortcut"><!-- filled dynamically --></span>
|
||||
</span>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<aside class="section section--options">
|
||||
<form class="options__form">
|
||||
<h3 class="options__title">Categories</h3>
|
||||
<ul class="options__list options__categories">
|
||||
<!-- filled dynamically -->
|
||||
</ul>
|
||||
|
||||
<h3 class="options__title">Device</h2>
|
||||
<ul class="options__list options__device">
|
||||
<li>
|
||||
<label>
|
||||
<input type="radio" name="device" value="mobile"></input><span>Mobile</span>
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label>
|
||||
<input type="radio" name="device" value="desktop"></input><span>Desktop</span>
|
||||
</label>
|
||||
</li>
|
||||
</ul>
|
||||
</form>
|
||||
</aside>
|
||||
|
||||
<script src="scripts/popup-bundle.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,286 @@
|
|||
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
|
||||
/**
|
||||
* @license Copyright 2016 Google Inc. All Rights Reserved.
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
const SettingsController = require('./settings-controller.js');
|
||||
|
||||
const VIEWER_URL = 'https://googlechrome.github.io/lighthouse/viewer/';
|
||||
const optionsVisibleClass = 'main--options-visible';
|
||||
|
||||
/**
|
||||
* Guaranteed context.querySelector. Always returns an element or throws if
|
||||
* nothing matches query.
|
||||
* @param {string} query
|
||||
* @param {ParentNode=} context
|
||||
* @return {HTMLElement}
|
||||
*/
|
||||
function find(query, context = document) {
|
||||
/** @type {?HTMLElement} */
|
||||
const result = context.querySelector(query);
|
||||
if (result === null) {
|
||||
throw new Error(`query ${query} not found`);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} text
|
||||
* @param {string} id
|
||||
* @param {boolean} isChecked
|
||||
* @return {HTMLLIElement}
|
||||
*/
|
||||
function createOptionItem(text, id, isChecked) {
|
||||
const input = document.createElement('input');
|
||||
input.setAttribute('type', 'checkbox');
|
||||
input.setAttribute('value', id);
|
||||
if (isChecked) {
|
||||
input.setAttribute('checked', 'checked');
|
||||
}
|
||||
|
||||
const label = document.createElement('label');
|
||||
label.appendChild(input);
|
||||
label.appendChild(document.createElement('span')).textContent = text;
|
||||
const listItem = document.createElement('li');
|
||||
listItem.appendChild(label);
|
||||
|
||||
return listItem;
|
||||
}
|
||||
|
||||
/**
|
||||
* Click event handler for Generate Report button.
|
||||
* @param {string} url
|
||||
* @param {SettingsController.Settings} settings
|
||||
*/
|
||||
function onGenerateReportButtonClick(url, settings) {
|
||||
const apiUrl = new URL(VIEWER_URL);
|
||||
apiUrl.searchParams.append('psiurl', url);
|
||||
apiUrl.searchParams.append('strategy', settings.device);
|
||||
for (const category of settings.selectedCategories) {
|
||||
apiUrl.searchParams.append('category', category);
|
||||
}
|
||||
apiUrl.searchParams.append('utm_source', 'lh-chrome-ext');
|
||||
window.open(apiUrl.href);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a document fragment containing a list of checkboxes and labels
|
||||
* for the categories.
|
||||
* @param {SettingsController.Settings} settings
|
||||
*/
|
||||
function generateOptionsList(settings) {
|
||||
const frag = document.createDocumentFragment();
|
||||
|
||||
SettingsController.DEFAULT_CATEGORIES.forEach(category => {
|
||||
const isChecked = settings.selectedCategories.includes(category.id);
|
||||
frag.appendChild(createOptionItem(category.title, category.id, isChecked));
|
||||
});
|
||||
|
||||
const optionsCategoriesList = find('.options__categories');
|
||||
optionsCategoriesList.appendChild(frag);
|
||||
}
|
||||
|
||||
function fillDevToolsShortcut() {
|
||||
const el = find('.devtools-shortcut');
|
||||
const isMac = /mac/i.test(navigator.platform);
|
||||
el.textContent = isMac ? '⌘⌥I (Cmd+Opt+I)' : 'F12';
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the settings from the state of the options form, save in storage, and return it.
|
||||
* @returns {SettingsController.Settings}
|
||||
*/
|
||||
function readSettingsFromDomAndPersist() {
|
||||
const optionsEl = find('.section--options');
|
||||
// Save settings when options page is closed.
|
||||
const checkboxes = /** @type {NodeListOf<HTMLInputElement>} */
|
||||
(optionsEl.querySelectorAll('.options__categories input:checked'));
|
||||
const selectedCategories = Array.from(checkboxes).map(input => input.value);
|
||||
const device = /** @type {HTMLInputElement} */ (find('input[name="device"]:checked')).value;
|
||||
|
||||
const settings = {
|
||||
selectedCategories,
|
||||
device,
|
||||
};
|
||||
SettingsController.saveSettings(settings);
|
||||
return settings;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {Promise<URL>}
|
||||
*/
|
||||
function getSiteUrl() {
|
||||
return new Promise((resolve, reject) => {
|
||||
chrome.tabs.query({active: true, lastFocusedWindow: true}, function(tabs) {
|
||||
if (tabs.length === 0 || !tabs[0].url) {
|
||||
return;
|
||||
}
|
||||
|
||||
const url = new URL(tabs[0].url);
|
||||
if (url.hostname === 'localhost') {
|
||||
reject(new Error('Use DevTools to audit pages on localhost.'));
|
||||
} else if (/^(chrome|about)/.test(url.protocol)) {
|
||||
reject(new Error(`Cannot audit ${url.protocol}// pages.`));
|
||||
} else {
|
||||
resolve(url);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the popup's state and UI elements.
|
||||
*/
|
||||
async function initPopup() {
|
||||
fillDevToolsShortcut();
|
||||
|
||||
const mainEl = find('main');
|
||||
const optionsEl = find('.button--configure');
|
||||
const generateReportButton = /** @type {HTMLButtonElement} */ (find('.button--generate'));
|
||||
const configureButton = /** @type {HTMLButtonElement} */ (find('.button--configure'));
|
||||
const psiDisclaimerEl = find('.psi-disclaimer');
|
||||
const errorMessageEl = find('.errormsg');
|
||||
const optionsFormEl = find('.options__form');
|
||||
|
||||
/** @type {URL} */
|
||||
let siteUrl;
|
||||
/** @type {SettingsController.Settings} */
|
||||
let settings;
|
||||
try {
|
||||
siteUrl = await getSiteUrl();
|
||||
settings = await SettingsController.loadSettings();
|
||||
} catch (err) {
|
||||
// Disable everything. A navigation might allow for a working state,
|
||||
// but it's very hard to keep an extension popup alive during a popup
|
||||
// so we don't need to handle reacting to it.
|
||||
generateReportButton.disabled = true;
|
||||
configureButton.disabled = true;
|
||||
psiDisclaimerEl.remove();
|
||||
errorMessageEl.textContent = err.message;
|
||||
return;
|
||||
}
|
||||
|
||||
// Generate checkboxes from saved settings.
|
||||
generateOptionsList(settings);
|
||||
const selectedDeviceEl = /** @type {HTMLInputElement} */ (
|
||||
find(`.options__device input[value="${settings.device}"]`));
|
||||
selectedDeviceEl.checked = true;
|
||||
|
||||
generateReportButton.addEventListener('click', () => {
|
||||
onGenerateReportButtonClick(siteUrl.href, settings);
|
||||
});
|
||||
|
||||
optionsEl.addEventListener('click', () => {
|
||||
mainEl.classList.toggle(optionsVisibleClass);
|
||||
});
|
||||
|
||||
optionsFormEl.addEventListener('change', () => {
|
||||
settings = readSettingsFromDomAndPersist();
|
||||
});
|
||||
}
|
||||
|
||||
initPopup();
|
||||
|
||||
},{"./settings-controller.js":2}],2:[function(require,module,exports){
|
||||
/**
|
||||
* @license Copyright 2019 Google Inc. All Rights Reserved.
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
// Manually define the default categories, instead of bundling a lot of i18n code.
|
||||
const DEFAULT_CATEGORIES = [{
|
||||
id: 'performance',
|
||||
title: 'Performance',
|
||||
}, {
|
||||
id: 'accessibility',
|
||||
title: 'Accessibility',
|
||||
}, {
|
||||
id: 'best-practices',
|
||||
title: 'Best Practices',
|
||||
}, {
|
||||
id: 'seo',
|
||||
title: 'SEO',
|
||||
}, {
|
||||
id: 'pwa',
|
||||
title: 'Progressive Web App',
|
||||
}];
|
||||
|
||||
/** @typedef {{selectedCategories: string[], device: string}} Settings */
|
||||
|
||||
const STORAGE_KEYS = {
|
||||
Categories: 'lighthouse_audits',
|
||||
Settings: 'lighthouse_settings',
|
||||
};
|
||||
|
||||
/**
|
||||
* Save currently selected set of category categories to local storage.
|
||||
* @param {Settings} settings
|
||||
*/
|
||||
function saveSettings(settings) {
|
||||
const storage = {
|
||||
/** @type {Record<string, boolean>} */
|
||||
[STORAGE_KEYS.Categories]: {},
|
||||
/** @type {Record<string, string>} */
|
||||
[STORAGE_KEYS.Settings]: {},
|
||||
};
|
||||
|
||||
// Stash selected categories.
|
||||
DEFAULT_CATEGORIES.forEach(category => {
|
||||
const enabled = settings.selectedCategories.includes(category.id);
|
||||
storage[STORAGE_KEYS.Categories][category.id] = enabled;
|
||||
});
|
||||
|
||||
// Stash device setting.
|
||||
storage[STORAGE_KEYS.Settings].device = settings.device;
|
||||
|
||||
// Save object to chrome local storage.
|
||||
chrome.storage.local.set(storage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load selected category categories from local storage.
|
||||
* @return {Promise<Settings>}
|
||||
*/
|
||||
function loadSettings() {
|
||||
return new Promise(resolve => {
|
||||
// Protip: debug what's in storage with:
|
||||
// chrome.storage.local.get(['lighthouse_audits'], console.log)
|
||||
chrome.storage.local.get([STORAGE_KEYS.Categories, STORAGE_KEYS.Settings], result => {
|
||||
// Start with list of all default categories set to true so list is
|
||||
// always up to date.
|
||||
/** @type {Record<string, boolean>} */
|
||||
const defaultCategories = {};
|
||||
DEFAULT_CATEGORIES.forEach(category => {
|
||||
defaultCategories[category.id] = true;
|
||||
});
|
||||
|
||||
// Load saved categories and settings, overwriting defaults with any
|
||||
// saved selections.
|
||||
const savedCategories = {...defaultCategories, ...result[STORAGE_KEYS.Categories]};
|
||||
|
||||
const defaultSettings = {
|
||||
device: 'mobile',
|
||||
};
|
||||
const savedSettings = {...defaultSettings, ...result[STORAGE_KEYS.Settings]};
|
||||
|
||||
resolve({
|
||||
device: savedSettings.device,
|
||||
selectedCategories: Object.keys(savedCategories).filter(cat => savedCategories[cat]),
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
DEFAULT_CATEGORIES,
|
||||
STORAGE_KEYS,
|
||||
saveSettings,
|
||||
loadSettings,
|
||||
};
|
||||
|
||||
},{}]},{},[1]);
|
||||
|
|
@ -0,0 +1,180 @@
|
|||
/**
|
||||
* @license Copyright 2016 Google Inc. All Rights Reserved.
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Roboto'), local('Roboto-Regular') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
src: local('Roboto Medium'), local('Roboto-Medium') format('woff');
|
||||
}
|
||||
|
||||
:root {
|
||||
--color-bg: white;
|
||||
--color-blue: #0535C1;
|
||||
--font-size: 14px;
|
||||
--report-font-family: Roboto, Helvetica, Arial, sans-serif;
|
||||
--report-font-family-monospace: 'Roboto Mono', 'Menlo', 'dejavu sans mono', 'Consolas', 'Lucida Console', monospace;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html, body {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
width: 270px;
|
||||
background-color: var(--color-bg);
|
||||
color: #212121;
|
||||
font-family: var(--report-font-family);
|
||||
font-size: var(--font-size);
|
||||
line-height: 18px;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
body {
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
.header__icon {
|
||||
margin: 2px auto 0;
|
||||
}
|
||||
|
||||
.errormsg {
|
||||
color: var(--color-blue);
|
||||
font-weight: 500;
|
||||
text-align: center;
|
||||
}
|
||||
.errormsg:empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.button {
|
||||
font-family: var(--report-font-family);
|
||||
font-weight: 500;
|
||||
font-size: var(--font-size);
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
.button:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.button--generate {
|
||||
-webkit-font-smoothing: antialiased;
|
||||
border: 1px solid transparent;
|
||||
color: var(--color-bg);
|
||||
margin: 8px auto;
|
||||
padding: 6px 14px 6px 14px;
|
||||
border-radius: 13px;
|
||||
background-color: var(--color-blue);
|
||||
transition: 0.1s all;
|
||||
}
|
||||
.button--generate:hover {
|
||||
background-color: #042790;
|
||||
border: 1px solid #0535C1;
|
||||
}
|
||||
.button--generate:disabled {
|
||||
background-color: #cccccc;
|
||||
border: none;
|
||||
color: #666666;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.section {
|
||||
display: grid;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.section:first-child {
|
||||
border-bottom: solid 1px lightgray;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.devtools-header {
|
||||
font-size: var(--font-size);
|
||||
font-weight: 500;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.devtools-note {
|
||||
font-size: 14px;
|
||||
color: grey;
|
||||
}
|
||||
|
||||
.devtools-shortcut {
|
||||
font-family: var(--report-font-family-monospace);
|
||||
}
|
||||
|
||||
.button--configure {
|
||||
position: absolute;
|
||||
top: 15px;
|
||||
right: 10px;
|
||||
color: rgb(71, 71, 71);
|
||||
}
|
||||
.main--options-visible .button--configure {
|
||||
color: var(--color-blue);
|
||||
}
|
||||
.button--configure:disabled {
|
||||
color: grey;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.psi-disclaimer {
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
color: grey;
|
||||
}
|
||||
|
||||
.psi-disclaimer a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.options__title {
|
||||
font-size: var(--font-size);
|
||||
font-weight: 500;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.section--options label {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.section--options input {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.options__list {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
/* Visibility stuff */
|
||||
|
||||
.section--options {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.main--options-visible + .section--options {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.main--options-visible .section--devtools-info {
|
||||
display: none;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue