mirror of
https://github.com/d3ward/toolz.git
synced 2024-09-20 06:46:16 +08:00
V3.0.0
This commit is contained in:
parent
0b3b075532
commit
e7a0fb9348
40
.eslintrc.js
40
.eslintrc.js
|
@ -1,21 +1,21 @@
|
|||
module.exports = {
|
||||
env: {
|
||||
browser: true,
|
||||
es6: true
|
||||
},
|
||||
extends: ['eslint:recommended', 'prettier'],
|
||||
plugins: ['prettier'],
|
||||
globals: {
|
||||
Atomics: 'readonly',
|
||||
SharedArrayBuffer: 'readonly'
|
||||
},
|
||||
parserOptions: {
|
||||
ecmaVersion: 2021,
|
||||
sourceType: 'module'
|
||||
},
|
||||
rules: {
|
||||
'prettier/prettier': 'error',
|
||||
'no-unused-vars': 0,
|
||||
'no-undef': 0,
|
||||
}
|
||||
}
|
||||
env: {
|
||||
browser: true,
|
||||
es6: true
|
||||
},
|
||||
extends: ['eslint:recommended', 'prettier'],
|
||||
plugins: ['prettier'],
|
||||
globals: {
|
||||
Atomics: 'readonly',
|
||||
SharedArrayBuffer: 'readonly'
|
||||
},
|
||||
parserOptions: {
|
||||
ecmaVersion: 2021,
|
||||
sourceType: 'module'
|
||||
},
|
||||
rules: {
|
||||
'prettier/prettier': 'error',
|
||||
'no-unused-vars': 0,
|
||||
'no-undef': 0
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
module.exports = {
|
||||
printWidth: 80,
|
||||
bracketSpacing: true,
|
||||
semi: false,
|
||||
singleQuote: true,
|
||||
tabWidth: 4,
|
||||
|
|
|
@ -34,7 +34,6 @@
|
|||
"html-webpack-plugin": "^5.5.0",
|
||||
"mini-css-extract-plugin": "^2.7.2",
|
||||
"node-sass": "^8.0.0",
|
||||
"ping-url": "^1.0.3",
|
||||
"postcss": "^8.4.21",
|
||||
"prettier": "^2.8.3",
|
||||
"purgecss-webpack-plugin": "^5.0.0",
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
keywords:'adblock,test adblock,analytics,trackers,ads,cosmetic filter,ublock, ublockorigin,adblock extension,script loading'
|
||||
}) %>
|
||||
<body class="_overflowhidden">
|
||||
<%- include('partials/adblock/report.ejs') %>
|
||||
<%- include('partials/adblock/results.ejs') %>
|
||||
<% const adblock_compatibility = require('./data/adblock_compatibility.json') %>
|
||||
<div class="dialog" id="dlg_compatibility" data-a11y-dialog="dlg_compatibility" aria-labelledby="dlg_compatibility-title" aria-hidden="true">
|
||||
<div class="dialog-overlay" data-a11y-dialog-hide></div>
|
||||
|
@ -28,14 +28,16 @@
|
|||
</header>
|
||||
<section>
|
||||
<div>
|
||||
<p>
|
||||
While most of the tests are performed by users using the most popular solutions such as ublock-Origin, Blokada, NextDNS and Adguard,
|
||||
there are some false positives due to platform/browser/solution limitations<br>
|
||||
The test uses pure Javascript, and due to it's limitations and the way some solutions work, there may be problems.<br>
|
||||
So here is a list of solutions where the test works, and gives a valid report of the result
|
||||
</p>
|
||||
<b class="_txt-red"><i>You will not see any ads and no trackers will be activated </i></b><br>
|
||||
<b class="_txt-blue"><i>A configuration with multiple solutions at the same time can lead to false positives.</i></b><br>
|
||||
<div class="card _pb-2">
|
||||
<p>
|
||||
While most of the tests are performed by users using the most popular solutions such as ublock-Origin, Blokada, NextDNS and Adguard,
|
||||
there are some false positives due to platform/browser/solution limitations<br>
|
||||
The test uses pure Javascript, and due to it's limitations and the way some solutions work, there may be problems.<br>
|
||||
So here is a list of solutions where the test works, and gives a valid report of the result
|
||||
</p>
|
||||
<b class="_txt-red"><i>You will not see any ads and no trackers will be activated </i></b>
|
||||
<b class="_txt-blue"><i>A configuration with multiple solutions at the same time can lead to false positives.</i></b>
|
||||
</div>
|
||||
<table class="rwd-table">
|
||||
<tr>
|
||||
<th>solution (type)</th>
|
||||
|
@ -43,7 +45,7 @@
|
|||
</tr>
|
||||
<% for (let key in adblock_compatibility) { %>
|
||||
<% value = adblock_compatibility[key]%>
|
||||
<% if (key != 'default') { %>
|
||||
<% if (key != 'default' && value.hidden!=true) { %>
|
||||
<tr>
|
||||
<td data-th="solution (type)">
|
||||
<span class="rwd-table-t"><%- value.icon %>
|
||||
|
@ -88,50 +90,31 @@
|
|||
</div>
|
||||
</div>
|
||||
<%- include('partials/support_me.ejs') %>
|
||||
<%- include('partials/adblock/settings.ejs') %>
|
||||
<%- include('partials/adblock/faq.ejs') %>
|
||||
<%- include('partials/adblock/changelog.ejs') %>
|
||||
<%- include('partials/adblock/logs.ejs') %>
|
||||
<%- include('partials/header.ejs', {page:'adblock'}) %>
|
||||
<main>
|
||||
<button data-a11y-dialog-show="dlg_reports"> <svg xmlns="http://www.w3.org/2000/svg"
|
||||
class="icon icon-tabler icon-tabler-list-details" width="24" height="24" viewBox="0 0 24 24"
|
||||
stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<button data-a11y-dialog-show="dlg_reports">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path d="M13 5h8"></path>
|
||||
<path d="M13 9h5"></path>
|
||||
<path d="M13 15h8"></path>
|
||||
<path d="M13 19h5"></path>
|
||||
<rect x="3" y="4" width="6" height="6" rx="1"></rect>
|
||||
<rect x="3" y="14" width="6" height="6" rx="1"></rect>
|
||||
</svg> Reports</button>
|
||||
<path d="M12 8l0 4l2 2"></path>
|
||||
<path d="M3.05 11a9 9 0 1 1 .5 4m-.5 5v-5h5"></path>
|
||||
</svg>
|
||||
Results</button>
|
||||
<button data-a11y-dialog-show="dlg_faq">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-info-square" width="24" height="24"
|
||||
viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||
<line x1="12" y1="8" x2="12.01" y2="8"></line>
|
||||
<rect x="4" y="4" width="16" height="16" rx="2"></rect>
|
||||
<polyline points="11 12 12 12 12 16 13 16"></polyline>
|
||||
</svg> Open FAQ</button>
|
||||
<button data-a11y-dialog-show="dlg_compatibility">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-info-square" width="24" height="24"
|
||||
viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||
<line x1="12" y1="8" x2="12.01" y2="8"></line>
|
||||
<rect x="4" y="4" width="16" height="16" rx="2"></rect>
|
||||
<polyline points="11 12 12 12 12 16 13 16"></polyline>
|
||||
</svg> Check Compatibility</button>
|
||||
<button data-a11y-dialog-show="dlg_logs">
|
||||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
class="icon icon-tabler icon-tabler-message-2-code" width="24" height="24" viewBox="0 0 24 24"
|
||||
stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path
|
||||
d="M12 20l-3 -3h-2a3 3 0 0 1 -3 -3v-6a3 3 0 0 1 3 -3h10a3 3 0 0 1 3 3v6a3 3 0 0 1 -3 3h-2l-3 3">
|
||||
</path>
|
||||
<path d="M10 9l-2 2l2 2"></path>
|
||||
<path d="M14 9l2 2l-2 2"></path>
|
||||
</svg> Logs</button>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="prefix__icon prefix__icon-tabler prefix__icon-tabler-info-square"><path stroke="none" d="M0 0h24v24H0z"/><path d="M12 8 12.01 8"/><rect width="16" height="16" x="4" y="4" rx="2"/><path d="M11 12 12 12 12 16 13 16"/></svg>
|
||||
Open FAQ</button>
|
||||
<button data-a11y-dialog-show="dlg_compatibility">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path stroke="none" d="M0 0h24v24H0z"/><path d="m7 12 5 5L22 7M2 12l5 5m5-5 5-5"/></svg>
|
||||
Check Compatibility</button>
|
||||
<button data-a11y-dialog-show="dlg_logs">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="prefix__icon prefix__icon-tabler prefix__icon-tabler-message-2-code"><path stroke="none" d="M0 0h24v24H0z"/><path d="m12 20-3-3H7a3 3 0 0 1-3-3V8a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3h-2l-3 3"/><path d="m10 9-2 2 2 2M14 9l2 2-2 2"/></svg>
|
||||
Logs</button>
|
||||
<button data-a11y-dialog-show="dlg_settings">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="prefix__icon prefix__icon-tabler prefix__icon-tabler-settings"><path stroke="none" d="M0 0h24v24H0z"/><path d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 0 0-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 0 0-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 0 0-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 0 0-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 0 0 1.066-2.573c-.94-1.543.826-3.31 2.37-2.37 1 .608 2.296.07 2.572-1.065z"/><path d="M9 12a3 3 0 1 0 6 0 3 3 0 1 0-6 0"/></svg>
|
||||
Settings</button>
|
||||
<section>
|
||||
<div class="grid">
|
||||
<div>
|
||||
|
@ -206,7 +189,7 @@
|
|||
<div>
|
||||
<hr>
|
||||
</div>
|
||||
<div>
|
||||
<div id="cf_wrap">
|
||||
<div class="test_card">
|
||||
<h5>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" stroke-width="2"
|
||||
|
@ -254,7 +237,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div id="sl_wrap">
|
||||
<div class="test_card">
|
||||
<h5>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-script" width="24"
|
||||
|
@ -288,16 +271,8 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<hr>
|
||||
</div>
|
||||
<div>
|
||||
<input class="toggle" id="collapse_status" name="toggle" type="checkbox"
|
||||
checked="checked"><label for="collapse_status">
|
||||
Collapse all</label><br>
|
||||
<small>Click a category to collapse the url hosts</small>
|
||||
</div>
|
||||
<div>
|
||||
<div id="test" class="test_wrapper"></div>
|
||||
</div>
|
||||
|
|
|
@ -1 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" fill="currentColor" version="1.1"><style>@media (prefers-color-scheme: dark) { :root { fill: #ffffff; } }</style><path d="M63.98 27.685c-11.2 0-19.45 1.43-28.666 4.974-4.726 1.82-4.948 2.305-4.368 9.538.783 9.734 3.79 21.804 5.788 23.204h.006c1.294.906 1.359.895 5.762-1.055l3.887-1.719.247-4.466c.164-2.95.534-5.16 1.088-6.504 5.8-13.987 24.36-15.6 32.377-2.819a165.87 165.87 0 0 0 1.536 2.415c.067.094 2.902-.286 6.302-.846 8.414-1.387 8.515-1.474 9.115-8.288.61-6.893.258-7.667-4.35-9.434-9.273-3.57-17.497-5-28.724-5zm25.782 31.108c-1.212.054-2.792.318-4.78.755-2.195.483-2.222.51-2.48 2.37-.616 4.503-4.08 9.553-8.47 12.35-6.523 4.147-15.674 3.25-21.484-2.103l-1.947-1.79-3.19 1.393c-1.753.767-3.526 1.681-3.94 2.031-1.226 1.034-1.4 3.21-.41 5.144 2.298 4.507 10.82 14.17 16.92 19.18 3.835 3.15 4.28 3.086 9.514-1.38 9.813-8.38 18.129-20.139 22.552-31.883 1.703-4.517 1.35-6.23-2.285-6.067z"/><path d="M64.005 14c-4.992 0-9.984.257-13.262.768-9.64 1.5-18.933 4.257-27.123 8.04-5.084 2.35-5.615 3.542-5.632 12.586-.033 20.197 6.158 38.675 18.568 55.385 5.694 7.667 17.217 18.304 24.057 22.214 3.57 2.043 5.931 1.22 13.555-4.733 16.362-12.774 28.101-30.598 33.021-50.138 1.837-7.303 2.46-11.792 2.715-19.636.294-9.007.046-11.2-1.47-13.008-2.835-3.36-18.461-8.73-31.174-10.71-3.276-.51-8.264-.768-13.255-.768Zm.215 6.185c12.843.02 22.323 1.856 34.447 6.686 5.127 2.04 5.287 2.25 5.28 6.797-.03 20.474-7.486 41.401-20.326 57.078-4.633 5.654-12.121 12.67-17.188 16.108-.926.63-2.018 1.145-2.428 1.145-2.337 0-13.634-9.92-19.584-17.2-12.93-15.824-20.368-36.67-20.371-57.105 0-4.456.524-5.062 6.204-7.246 11.754-4.52 21.305-6.28 33.966-6.263z"/></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" fill="#0074D8" version="1.1"><>@media (prefers-color-scheme: dark) { :root { fill: #ffffff; } }</<path d="M63.98 27.685c-11.2 0-19.45 1.43-28.666 4.974-4.726 1.82-4.948 2.305-4.368 9.538.783 9.734 3.79 21.804 5.788 23.204h.006c1.294.906 1.359.895 5.762-1.055l3.887-1.719.247-4.466c.164-2.95.534-5.16 1.088-6.504 5.8-13.987 24.36-15.6 32.377-2.819a165.87 165.87 0 0 0 1.536 2.415c.067.094 2.902-.286 6.302-.846 8.414-1.387 8.515-1.474 9.115-8.288.61-6.893.258-7.667-4.35-9.434-9.273-3.57-17.497-5-28.724-5zm25.782 31.108c-1.212.054-2.792.318-4.78.755-2.195.483-2.222.51-2.48 2.37-.616 4.503-4.08 9.553-8.47 12.35-6.523 4.147-15.674 3.25-21.484-2.103l-1.947-1.79-3.19 1.393c-1.753.767-3.526 1.681-3.94 2.031-1.226 1.034-1.4 3.21-.41 5.144 2.298 4.507 10.82 14.17 16.92 19.18 3.835 3.15 4.28 3.086 9.514-1.38 9.813-8.38 18.129-20.139 22.552-31.883 1.703-4.517 1.35-6.23-2.285-6.067z"/><path d="M64.005 14c-4.992 0-9.984.257-13.262.768-9.64 1.5-18.933 4.257-27.123 8.04-5.084 2.35-5.615 3.542-5.632 12.586-.033 20.197 6.158 38.675 18.568 55.385 5.694 7.667 17.217 18.304 24.057 22.214 3.57 2.043 5.931 1.22 13.555-4.733 16.362-12.774 28.101-30.598 33.021-50.138 1.837-7.303 2.46-11.792 2.715-19.636.294-9.007.046-11.2-1.47-13.008-2.835-3.36-18.461-8.73-31.174-10.71-3.276-.51-8.264-.768-13.255-.768Zm.215 6.185c12.843.02 22.323 1.856 34.447 6.686 5.127 2.04 5.287 2.25 5.28 6.797-.03 20.474-7.486 41.401-20.326 57.078-4.633 5.654-12.121 12.67-17.188 16.108-.926.63-2.018 1.145-2.428 1.145-2.337 0-13.634-9.92-19.584-17.2-12.93-15.824-20.368-36.67-20.371-57.105 0-4.456.524-5.062 6.204-7.246 11.754-4.52 21.305-6.28 33.966-6.263z"/></svg>
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
@ -1,33 +0,0 @@
|
|||
export const icons = {
|
||||
download: "<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'><path d='M0 0h24v24H0z' stroke='none'/><path d='M4 17v2a2 2 0 002 2h12a2 2 0 002-2v-2M7 11l5 5 5-5M12 4v12'/></svg>",
|
||||
delete: "<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'><path d='M0 0h24v24H0z' stroke='none'/><path d='M4 7h16M10 11v6M14 11v6M5 7l1 12a2 2 0 002 2h8a2 2 0 002-2l1-12M9 7V4a1 1 0 011-1h4a1 1 0 011 1v3'/></svg>",
|
||||
v: "<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke-width='2' stroke='var(--green)' fill='none' stroke-linecap='round' stroke-linejoin='round'><path d='M0 0h24v24H0z' stroke='none'/><circle cx='12' cy='12' r='9'/><path d='M9 12l2 2 4-4'/></svg>",
|
||||
x: "<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke-width='2' stroke='var(--red)' fill='none' stroke-linecap='round' stroke-linejoin='round'><path d='M0 0h24v24H0z' stroke='none'/><circle cx='12' cy='12' r='9'/><path d='M10 10l4 4m0-4l-4 4'/></svg>",
|
||||
Ads: "<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'><path d='M0 0h24v24H0z' stroke='none'/><path d='M18 8a3 3 0 010 6M10 8v11a1 1 0 01-1 1H8a1 1 0 01-1-1v-5'/><path d='M12 8h0l4.524-3.77A.9.9 0 0118 4.922v12.156a.9.9 0 01-1.476.692L12 14H4a1 1 0 01-1-1V9a1 1 0 011-1h8'/></svg>",
|
||||
'Analytics':
|
||||
"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'><path d='M0 0h24v24H0z' stroke='none'/><path d='M4 18V6a2 2 0 012-2h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2z'/><path d='M7 14l3-3 2 2 3-3 2 2'/></svg>",
|
||||
'Error Trackers':
|
||||
"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'><path d='M0 0h24v24H0z' stroke='none'/><path d='M9 9V8a3 3 0 016 0v1M8 9h8a6 6 0 011 3v3a5 5 0 01-10 0v-3a6 6 0 011-3M3 13h4M17 13h4M12 20v-6M4 19l3.35-2M20 19l-3.35-2M4 7l3.75 2.4M20 7l-3.75 2.4'/></svg>",
|
||||
'Mix': "<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'><path d='M0 0h24v24H0z' stroke='none'/><path d='M12 4L4 8l8 4 8-4-8-4M4 12l8 4 8-4M4 16l8 4 8-4'/></svg>",
|
||||
'OEMs': "<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'><path d='M0 0h24v24H0z' stroke='none'/><rect x='6' y='3' width='12' height='18' rx='2'/><path d='M11 4h2M12 17v.01'/></svg>",
|
||||
'Social Trackers':"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'><path d='M0 0h24v24H0z' stroke='none'/><circle cx='12' cy='5' r='2'/><circle cx='5' cy='19' r='2'/><circle cx='19' cy='19' r='2'/><circle cx='12' cy='14' r='3'/><path d='M12 7v4M6.7 17.8l2.8-2M17.3 17.8l-2.8-2'/></svg>",
|
||||
'OnePlus':"<svg fill='currentColor' width='18' height='18' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M0 3.74V24h20.26V12.428h-2.256v9.317H2.254V5.995h9.318V3.742zM18.004 0v3.74h-3.758v2.256h3.758v3.758h2.255V5.996H24V3.74h-3.758V0zm-6.45 18.756V8.862H9.562c0 .682-.228 1.189-.577 1.504-.367.297-.91.437-1.556.437h-.245v1.625h2.133v6.31h2.237z'></path></svg>",
|
||||
Xiaomi: "<svg fill='currentColor' width='18' height='18' role='img' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M19.96 20a.32.32 0 0 1-.32-.32V4.32a.32.32 0 0 1 .32-.32h3.71a.32.32 0 0 1 .33.32v15.36a.32.32 0 0 1-.33.32zm-6.22 0s-.3-.09-.3-.32v-9.43A2.18 2.18 0 0 0 11.24 8H4.3c-.4 0-.3.3-.3.3v11.38c0 .27-.3.32-.3.32H.33a.32.32 0 0 1-.33-.32V4.32A.32.32 0 0 1 .33 4h12.86a4.28 4.28 0 0 1 4.25 4.27l.01 11.41a.32.32 0 0 1-.32.32zm-6.9 0a.3.3 0 0 1-.3-.3v-9a.3.3 0 0 1 .3-.3h3.77a.3.3 0 0 1 .29.3v9a.3.3 0 0 1-.3.3z'></path></svg>",
|
||||
Huawei: "<svg fill='currentColor' width='18' height='18' role='img' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M3.67 6.14S1.82 7.91 1.72 9.78v.35c.08 1.51 1.22 2.4 1.22 2.4 1.83 1.79 6.26 4.04 7.3 4.55 0 0 .06.03.1-.01l.02-.04v-.04C7.52 10.8 3.67 6.14 3.67 6.14zM9.65 18.6c-.02-.08-.1-.08-.1-.08l-7.38.26c.8 1.43 2.15 2.53 3.56 2.2.96-.25 3.16-1.78 3.88-2.3.06-.05.04-.09.04-.09zm.08-.78C6.49 15.63.21 12.28.21 12.28c-.15.46-.2.9-.21 1.3v.07c0 1.07.4 1.82.4 1.82.8 1.69 2.34 2.2 2.34 2.2.7.3 1.4.31 1.4.31.12.02 4.4 0 5.54 0 .05 0 .08-.05.08-.05v-.06c0-.03-.03-.05-.03-.05zM9.06 3.19a3.42 3.42 0 00-2.57 3.15v.41c.03.6.16 1.05.16 1.05.66 2.9 3.86 7.65 4.55 8.65.05.05.1.03.1.03a.1.1 0 00.06-.1c1.06-10.6-1.11-13.42-1.11-13.42-.32.02-1.19.23-1.19.23zm8.299 2.27s-.49-1.8-2.44-2.28c0 0-.57-.14-1.17-.22 0 0-2.18 2.81-1.12 13.43.01.07.06.08.06.08.07.03.1-.03.1-.03.72-1.03 3.9-5.76 4.55-8.64 0 0 .36-1.4.02-2.34zm-2.92 13.07s-.07 0-.09.05c0 0-.01.07.03.1.7.51 2.85 2 3.88 2.3 0 0 .16.05.43.06h.14c.69-.02 1.9-.37 3-2.26l-7.4-.25zm7.83-8.41c.14-2.06-1.94-3.97-1.94-3.98 0 0-3.85 4.66-6.67 10.8 0 0-.03.08.02.13l.04.01h.06c1.06-.53 5.46-2.77 7.28-4.54 0 0 1.15-.93 1.21-2.42zm1.52 2.14s-6.28 3.37-9.52 5.55c0 0-.05.04-.03.11 0 0 .03.06.07.06 1.16 0 5.56 0 5.67-.02 0 0 .57-.02 1.27-.29 0 0 1.56-.5 2.37-2.27 0 0 .73-1.45.17-3.14z'></path></svg>",
|
||||
Samsung:"<svg fill='currentColor' width='18' height='18' role='img' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M19.8166 10.2808l.0459 2.6934h-.023l-.7793-2.6934h-1.2837v3.3925h.8481l-.0458-2.785h.023l.8366 2.785h1.2264v-3.3925zm-16.149 0l-.6418 3.427h.9284l.4699-3.1175h.0229l.4585 3.1174h.9169l-.6304-3.4269zm5.1805 0l-.424 2.6132h-.023l-.424-2.6132H6.5788l-.0688 3.427h.8596l.023-3.0832h.0114l.573 3.0831h.8711l.5731-3.083h.023l.0228 3.083h.8596l-.0802-3.4269zm-7.2664 2.4527c.0343.0802.0229.1949.0114.2522-.0229.1146-.1031.2292-.3324.2292-.2177 0-.3438-.126-.3438-.3095v-.3323H0v.2636c0 .7679.6074.9971 1.2493.9971.6189 0 1.1346-.2178 1.2149-.7794.0458-.298.0114-.4928 0-.5616-.1605-.722-1.467-.9283-1.5588-1.3295-.0114-.0688-.0114-.1375 0-.1834.023-.1146.1032-.2292.3095-.2292.2063 0 .321.126.321.3095v.2063h.8595v-.2407c0-.745-.6762-.8596-1.1576-.8596-.6074 0-1.1117.2063-1.2034.7564-.023.149-.0344.2866.0114.4585.1376.7106 1.364.9169 1.5358 1.3524m11.152 0c.0343.0803.0228.1834.0114.2522-.023.1146-.1032.2292-.3324.2292-.2178 0-.3438-.126-.3438-.3095v-.3323h-.917v.2636c0 .7564.596.9857 1.2379.9857.6189 0 1.1232-.2063 1.2034-.7794.0459-.298.0115-.4814 0-.5616-.1375-.7106-1.4327-.9284-1.5243-1.318-.0115-.0688-.0115-.1376 0-.1835.0229-.1146.1031-.2292.3094-.2292.1948 0 .321.126.321.3095v.2063h.848v-.2407c0-.745-.6647-.8596-1.146-.8596-.6075 0-1.1004.1948-1.192.7564-.023.149-.023.2866.0114.4585.1376.7106 1.341.9054 1.513 1.3524m2.8882.4585c.2407 0 .3094-.1605.3323-.2522.0115-.0343.0115-.0917.0115-.126v-2.533h.871v2.4642c0 .0688 0 .1948-.0114.2292-.0573.6419-.5616.8482-1.192.8482-.6303 0-1.1346-.2063-1.192-.8482 0-.0344-.0114-.1604-.0114-.2292v-2.4642h.871v2.533c0 .0458 0 .0916.0115.126 0 .0917.0688.2522.3095.2522m7.1518-.0344c.2522 0 .3324-.1605.3553-.2522.0115-.0343.0115-.0917.0115-.126v-.4929h-.3553v-.5043H24v.917c0 .0687 0 .1145-.0115.2292-.0573.6303-.596.8481-1.2034.8481-.6075 0-1.1461-.2178-1.2034-.8481-.0115-.1147-.0115-.1605-.0115-.2293v-1.444c0-.0574.0115-.172.0115-.2293.0802-.6419.596-.8482 1.2034-.8482s1.1347.2063 1.2034.8482c.0115.1031.0115.2292.0115.2292v.1146h-.8596v-.1948s0-.0803-.0115-.1261c-.0114-.0802-.0802-.2521-.3438-.2521-.2521 0-.321.1604-.3438.2521-.0115.0458-.0115.1032-.0115.1605v1.5702c0 .0458 0 .0916.0115.126 0 .0917.0917.2522.3323.2522'></path></svg>",
|
||||
Apple: "<svg fill='currentColor' width='18' height='18' role='img' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701'></path></svg>",
|
||||
Facebook:"<svg fill='currentColor' width='18' height='18' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z'/></svg>",
|
||||
Twitter: "<svg fill='currentColor' width='18' height='18' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z'/></svg>",
|
||||
Sentry: "<svg fill='currentColor' viewBox='0 0 24 24' width='18' height='18' xmlns='http://www.w3.org/2000/svg'><path d='M13.91 2.505c-.873-1.448-2.972-1.448-3.844 0L6.904 7.92a15.478 15.478 0 018.53 12.811h-2.221A13.301 13.301 0 005.784 9.814l-2.926 5.06a7.65 7.65 0 014.435 5.848H2.194a.365.365 0 01-.298-.534l1.413-2.402a5.16 5.16 0 00-1.614-.913L.296 19.275a2.182 2.182 0 00.812 2.999 2.24 2.24 0 001.086.288h6.983a9.322 9.322 0 00-3.845-8.318l1.11-1.922a11.47 11.47 0 014.95 10.24h5.915a17.242 17.242 0 00-7.885-15.28l2.244-3.845a.37.37 0 01.504-.13c.255.14 9.75 16.708 9.928 16.9a.365.365 0 01-.327.543h-2.287c.029.612.029 1.223 0 1.831h2.297a2.206 2.206 0 001.922-3.31z'/></svg>",
|
||||
Bugsnag: "<svg fill='currentColor' viewBox='0 0 24 24' width='18' height='18' xmlns='http://www.w3.org/2000/svg'><path d='M12 24c-4.596 0-8.336-3.74-8.336-8.336v-4.135a.62.62 0 01.62-.62h2.957L7.23 1.337 4.903 2.77v5.45a.62.62 0 01-1.24 0V2.7c0-.384.204-.749.53-.95L6.773.166a1.114 1.114 0 011.699.949l.01 9.796h3.52a4.759 4.759 0 014.753 4.754 4.759 4.759 0 01-4.753 4.753 4.759 4.759 0 01-4.754-4.753l-.003-3.515H4.903v3.515c0 3.912 3.183 7.097 7.097 7.097a7.104 7.104 0 007.097-7.097A7.105 7.105 0 0012 8.567h-1.076a.62.62 0 010-1.24H12c4.596 0 8.336 3.74 8.336 8.336S16.596 24 12 24zM8.482 12.15l.004 3.514A3.518 3.518 0 0012 19.178a3.518 3.518 0 003.514-3.514A3.518 3.518 0 0012 12.149zm4.513 3.514a.995.995 0 01-.995.994.995.995 0 01-.995-.994.995.995 0 01.995-.995.995.995 0 01.995.995z'/></svg>",
|
||||
LinkedIn: "<svg fill='currentColor' width='18' height='18' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/></svg>",
|
||||
Pinterest: "<svg fill='currentColor' width='18' height='18' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M12.017 0C5.396 0 .029 5.367.029 11.987c0 5.079 3.158 9.417 7.618 11.162-.105-.949-.199-2.403.041-3.439.219-.937 1.406-5.957 1.406-5.957s-.359-.72-.359-1.781c0-1.663.967-2.911 2.168-2.911 1.024 0 1.518.769 1.518 1.688 0 1.029-.653 2.567-.992 3.992-.285 1.193.6 2.165 1.775 2.165 2.128 0 3.768-2.245 3.768-5.487 0-2.861-2.063-4.869-5.008-4.869-3.41 0-5.409 2.562-5.409 5.199 0 1.033.394 2.143.889 2.741.099.12.112.225.085.345-.09.375-.293 1.199-.334 1.363-.053.225-.172.271-.401.165-1.495-.69-2.433-2.878-2.433-4.646 0-3.776 2.748-7.252 7.92-7.252 4.158 0 7.392 2.967 7.392 6.923 0 4.135-2.607 7.462-6.233 7.462-1.214 0-2.354-.629-2.758-1.379l-.749 2.848c-.269 1.045-1.004 2.352-1.498 3.146 1.123.345 2.306.535 3.55.535 6.607 0 11.985-5.365 11.985-11.987C23.97 5.39 18.592.026 11.985.026L12.017 0z'/></svg>",
|
||||
Reddit: "<svg fill='currentColor' width='18' height='18' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M12 0A12 12 0 000 12a12 12 0 0012 12 12 12 0 0012-12A12 12 0 0012 0zm5.01 4.744c.688 0 1.25.561 1.25 1.249a1.25 1.25 0 01-2.498.056l-2.597-.547-.8 3.747c1.824.07 3.48.632 4.674 1.488.308-.309.73-.491 1.207-.491.968 0 1.754.786 1.754 1.754 0 .716-.435 1.333-1.01 1.614a3.111 3.111 0 01.042.52c0 2.694-3.13 4.87-7.004 4.87-3.874 0-7.004-2.176-7.004-4.87 0-.183.015-.366.043-.534A1.748 1.748 0 014.028 12c0-.968.786-1.754 1.754-1.754.463 0 .898.196 1.207.49 1.207-.883 2.878-1.43 4.744-1.487l.885-4.182a.342.342 0 01.14-.197.35.35 0 01.238-.042l2.906.617a1.214 1.214 0 011.108-.701zM9.25 12C8.561 12 8 12.562 8 13.25c0 .687.561 1.248 1.25 1.248.687 0 1.248-.561 1.248-1.249 0-.688-.561-1.249-1.249-1.249zm5.5 0c-.687 0-1.248.561-1.248 1.25 0 .687.561 1.248 1.249 1.248.688 0 1.249-.561 1.249-1.249 0-.687-.562-1.249-1.25-1.249zm-5.466 3.99a.327.327 0 00-.231.094.33.33 0 000 .463c.842.842 2.484.913 2.961.913.477 0 2.105-.056 2.961-.913a.361.361 0 00.029-.463.33.33 0 00-.464 0c-.547.533-1.684.73-2.512.73-.828 0-1.979-.196-2.512-.73a.326.326 0 00-.232-.095z'/></svg>",
|
||||
TikTok: "<svg fill='currentColor' width='18' height='18' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z'/></svg>",
|
||||
Yahoo: "<svg fill='currentColor' width='18' height='18' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M18.86 1.56l-4.59 10.31h5.13L24 1.56h-5.14M0 6.71l5.15 11.56-1.85 4.17h4.53l6.86-15.73h-4.5l-2.8 6.73-2.77-6.73H0m15.62 6.16c-1.67 0-2.91 1.25-2.91 2.71 0 1.42 1.2 2.61 2.79 2.61 1.68 0 2.93-1.23 2.93-2.69 0-1.47-1.2-2.63-2.81-2.63z'/></svg>",
|
||||
Hotjar:"<svg fill='currentColor' width='18' height='18' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M21.055 7.814C17.512 1.404 7.118 0 7.118 0s4.798 5.34-1.334 9.567c-3.876 2.666-5.41 6.13-3.75 9.914 1.27 2.9 3.96 4.076 6.86 4.519-.745-1.434-.932-3.505-.381-5.628a8.51 8.51 0 0 1 .186-.636c.813 1.258 2.148 1.946 3.45 1.629 1.783-.424 2.829-2.582 2.342-4.799a5.104 5.104 0 0 0-.536-1.372c.07.017.14.024.212.047 2.225.635 3.301 3.962 2.403 7.434a9.266 9.266 0 0 1-1.325 2.946c3.82-1.23 6.36-4.311 7.06-7.056.736-2.856.177-6.185-1.25-8.751z'/></svg>",
|
||||
YouTube: "<svg fill='currentColor' width='18' height='18' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M23.498 6.186a3.016 3.016 0 00-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 00.502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 002.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 002.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/></svg>",
|
||||
Unity:"<svg fill='currentColor' width='18' height='18' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='m12.929 4.294 3.8 2.193c.136.077.141.29 0 .367l-4.515 2.608a.42.42 0 0 1-.425 0L7.274 6.854c-.139-.074-.141-.293 0-.367l3.797-2.193V0L1.376 5.598v11.195l3.717-2.146v-4.385c-.002-.157.182-.269.318-.184l4.515 2.607a.425.425 0 0 1 .214.368v5.213c.002.156-.181.268-.318.184l-3.8-2.193-3.717 2.145L12 24l9.695-5.598-3.717-2.145-3.8 2.192c-.134.082-.323-.024-.318-.183v-5.213c0-.157.087-.296.214-.368l4.515-2.607c.134-.082.322.022.318.184v4.385l3.717 2.146V5.598L12.93 0Z'/></svg>",
|
||||
'Google Ads':"<svg fill='currentColor' width='18' height='18' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M4 22.93a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm19.464-6.001-8-13.857a4 4 0 0 0-6.93 4l8.001 13.857a4.001 4.001 0 0 0 6.93-4zM7.514 4.844l-5.95 10.304A4.5 4.5 0 0 1 4 14.43c2.56-.008 4.625 2.158 4.494 4.715l3.217-5.573-3.61-6.25a4.463 4.463 0 0 1-.587-2.478z'/></svg>",
|
||||
'Google Analytics':"<svg fill='currentColor' width='18' height='18' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M22.84 2.998v17.999a2.983 2.983 0 0 1-2.967 2.998 2.98 2.98 0 0 1-.368-.02 3.06 3.06 0 0 1-2.61-3.1V3.12A3.06 3.06 0 0 1 19.51.02a2.983 2.983 0 0 1 3.329 2.978zM4.133 18.055a2.973 2.973 0 1 0 0 5.945 2.973 2.973 0 0 0 0-5.945zm7.872-9.01h-.05a3.06 3.06 0 0 0-2.892 3.126v7.985c0 2.167.954 3.482 2.35 3.763a2.978 2.978 0 0 0 3.57-2.927v-8.959a2.983 2.983 0 0 0-2.978-2.988z'/></svg>"
|
||||
}
|
|
@ -1 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128"><style>@media (prefers-color-scheme:dark){#fontlist_logo{fill:#fff}}</style><path id="fontlist_logo" d="M50.336 22.85c-1.471 0-2.942.712-3.54 2.137L19.911 89a3.84 3.84 0 0 0 2.052 5.029 3.835 3.835 0 0 0 5.029-2.054l5.407-12.874h35.88l5.408 12.874a3.82 3.82 0 0 0 3.539 2.354c.07 0 .139-.017.208-.02.063.004.122.019.186.019h18.893c7.513 0 13.619-6.108 13.619-13.62 0-5.372-3.152-9.985-7.677-12.204 2.559-2.472 4.162-5.932 4.162-9.765 0-7.51-6.107-13.62-13.62-13.62H77.62a2.637 2.637 0 0 0-2.636 2.636V75.24L53.877 24.987c-.597-1.425-2.07-2.138-3.54-2.138zM18.991 97.655c-4.372 0-4.991 1.67-4.991 3.747s.636 3.748 4.99 3.748h89.41c4.355 0 5.601-1.679 5.601-3.748s-1.23-3.747-5.601-3.747z"/></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="#FF851B" width="128" height="128"><path id="fontlist_logo" d="M50.336 22.85c-1.471 0-2.942.712-3.54 2.137L19.911 89a3.84 3.84 0 0 0 2.052 5.029 3.835 3.835 0 0 0 5.029-2.054l5.407-12.874h35.88l5.408 12.874a3.82 3.82 0 0 0 3.539 2.354c.07 0 .139-.017.208-.02.063.004.122.019.186.019h18.893c7.513 0 13.619-6.108 13.619-13.62 0-5.372-3.152-9.985-7.677-12.204 2.559-2.472 4.162-5.932 4.162-9.765 0-7.51-6.107-13.62-13.62-13.62H77.62a2.637 2.637 0 0 0-2.636 2.636V75.24L53.877 24.987c-.597-1.425-2.07-2.138-3.54-2.138zM18.991 97.655c-4.372 0-4.991 1.67-4.991 3.747s.636 3.748 4.99 3.748h89.41c4.355 0 5.601-1.679 5.601-3.748s-1.23-3.747-5.601-3.747z"/></svg>
|
Before Width: | Height: | Size: 760 B After Width: | Height: | Size: 699 B |
|
@ -1 +1 @@
|
|||
<svg fill="#f3535b" width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M104.625 67.125h-43.75v-43.75c0-5.156-4.219-9.375-9.375-9.375H23.375C18.219 14 14 18.219 14 23.375v81.25c0 5.156 4.219 9.375 9.375 9.375h81.25c5.156 0 9.375-4.219 9.375-9.375V76.5c0-5.156-4.219-9.375-9.375-9.375zm-3.568 37.5H26.158c-2.758-.237-2.783-.235-2.783-3.16V27.18c.136-3.817-.293-3.805 3.703-3.805h21.254c3.256.106 3.168.005 3.168 2.579v5.808c.02.556-.196.812-.728.812H35.875c-4.447.492-3.296 6.15 0 6.25l14.88.168c.45.003.7.148.745.661v11.048c.052.523-.249.781-.745.799h-14.88c-4.442.492-3.297 6.149 0 6.25h14.773c.53.033.838.186.852.701V69.5c-.013.573-.295.751-.852.751H35.875c-4.442.492-3.297 6.149 0 6.25h14.844c.562-.004.781.255.781.767v14.858c.492 4.442 6.149 3.297 6.25 0V77.231c-.012-.617.265-.713.79-.731h10.8c.716.016.91.308.91.927v14.698c.491 4.447 6.15 3.296 6.25 0V77.409c.004-.732.216-.909.891-.909h10.73c.778.046.879.522.879 1.175v14.45c.491 4.447 6.15 3.296 6.25 0V77.888c-.01-.987.267-1.388 1.453-1.388h5.376c1.816-.048 2.51.929 2.546 2.486v22.582c-.194 2.912-.327 3.057-3.568 3.057z"/></svg>
|
||||
<svg fill="#22C55E" width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M104.625 67.125h-43.75v-43.75c0-5.156-4.219-9.375-9.375-9.375H23.375C18.219 14 14 18.219 14 23.375v81.25c0 5.156 4.219 9.375 9.375 9.375h81.25c5.156 0 9.375-4.219 9.375-9.375V76.5c0-5.156-4.219-9.375-9.375-9.375zm-3.568 37.5H26.158c-2.758-.237-2.783-.235-2.783-3.16V27.18c.136-3.817-.293-3.805 3.703-3.805h21.254c3.256.106 3.168.005 3.168 2.579v5.808c.02.556-.196.812-.728.812H35.875c-4.447.492-3.296 6.15 0 6.25l14.88.168c.45.003.7.148.745.661v11.048c.052.523-.249.781-.745.799h-14.88c-4.442.492-3.297 6.149 0 6.25h14.773c.53.033.838.186.852.701V69.5c-.013.573-.295.751-.852.751H35.875c-4.442.492-3.297 6.149 0 6.25h14.844c.562-.004.781.255.781.767v14.858c.492 4.442 6.149 3.297 6.25 0V77.231c-.012-.617.265-.713.79-.731h10.8c.716.016.91.308.91.927v14.698c.491 4.447 6.15 3.296 6.25 0V77.409c.004-.732.216-.909.891-.909h10.73c.778.046.879.522.879 1.175v14.45c.491 4.447 6.15 3.296 6.25 0V77.888c-.01-.987.267-1.388 1.453-1.388h5.376c1.816-.048 2.51.929 2.546 2.486v22.582c-.194 2.912-.327 3.057-3.568 3.057z"/></svg>
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
@ -4,16 +4,18 @@
|
|||
"icon":"<svg xmlns='http://www.w3.org/2000/svg' width='18' height='18' version='1.1' viewBox='0 0 33.867 33.867'><path fill='#0280ff' stroke='none' stroke-width='1' d='M16.388.064C14.763.52 13.48 2.19 12 2.994 9.23 4.502 3.978 3.643 2.772 7.1c-.609 1.747-.323 3.857-.323 5.678.003 6.818 1.869 13.956 7.744 18.06 1.934 1.35 5.28 3.586 7.744 2.902 9.279-2.574 13.422-11.506 13.422-20.446 0-2.264.628-5.585-.92-7.457-1.564-1.897-4.916-1.365-7.082-2.213-1.937-.756-4.94-4.129-6.969-3.56Z'/></svg>",
|
||||
"type":"DNS",
|
||||
"name": "NextDNS",
|
||||
"no-issues": ["brave-macos","safari-macos"],
|
||||
"note":" "
|
||||
"no-issues": ["brave-macos","safari-macos","safari-ios","chrome-android","firefox-macos","firefox-macos","edge-windows"],
|
||||
"note":"Can be used in combo with ublock-origin or adguard adblocker"
|
||||
},
|
||||
"pi-hole":{
|
||||
"hidden":true,
|
||||
"icon":"<svg fill='#96060C' width='18' height='18' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M4.344 0c.238 4.792 3.256 7.056 6.252 7.376.165-1.692-4.319-5.6-4.319-5.6-.008-.011.009-.025.019-.014 0 0 4.648 4.01 5.423 5.645 2.762-.15 5.196-1.947 5-4.912 0 0-4.12-.613-5 4.618C11.48 2.753 8.993 0 4.344 0zM12 7.682v.002a3.68 3.68 0 0 0-2.591 1.077L4.94 13.227a3.683 3.683 0 0 0-.86 1.356 3.31 3.31 0 0 0-.237 1.255A3.681 3.681 0 0 0 4.92 18.45l4.464 4.466a3.69 3.69 0 0 0 2.251 1.06l.002.001c.093.01.187.015.28.017l-.1-.008c.06.003.117.009.177.009l-.077-.001L12 24l-.004-.005a3.68 3.68 0 0 0 2.61-1.077l4.469-4.465a3.683 3.683 0 0 0 1.006-1.888l.012-.063a3.682 3.682 0 0 0 .057-.541l.003-.061c0-.017.003-.05.004-.06h-.002a3.683 3.683 0 0 0-1.077-2.607l-4.466-4.468a3.694 3.694 0 0 0-1.564-.927l-.07-.02a3.43 3.43 0 0 0-.946-.133L12 7.682zm3.165 3.357c.023 1.748-1.33 3.078-1.33 4.806.164 2.227 1.733 3.207 3.266 3.146-.035.003-.068.007-.104.009-1.847.135-3.209-1.326-5.002-1.326-2.23.164-3.21 1.736-3.147 3.27l-.008-.104c-.133-1.847 1.328-3.21 1.328-5.002-.173-2.32-1.867-3.284-3.46-3.132.1-.011.203-.021.31-.027 1.847-.133 3.209 1.328 5.002 1.328 2.082-.155 3.074-1.536 3.145-2.968zM4.344 0c.238 4.792 3.256 7.056 6.252 7.376.165-1.692-4.319-5.6-4.319-5.6-.008-.011.009-.025.019-.014 0 0 4.648 4.01 5.423 5.645 2.762-.15 5.196-1.947 5-4.912 0 0-4.12-.613-5 4.618C11.48 2.753 8.993 0 4.344 0zM12 7.682v.002a3.68 3.68 0 0 0-2.591 1.077L4.94 13.227a3.683 3.683 0 0 0-.86 1.356 3.31 3.31 0 0 0-.237 1.255A3.681 3.681 0 0 0 4.92 18.45l4.464 4.466a3.69 3.69 0 0 0 2.251 1.06l.002.001c.093.01.187.015.28.017l-.1-.008c.06.003.117.009.177.009l-.077-.001L12 24l-.004-.005a3.68 3.68 0 0 0 2.61-1.077l4.469-4.465a3.683 3.683 0 0 0 1.006-1.888l.012-.063a3.682 3.682 0 0 0 .057-.541l.003-.061c0-.017.003-.05.004-.06h-.002a3.683 3.683 0 0 0-1.077-2.607l-4.466-4.468a3.694 3.694 0 0 0-1.564-.927l-.07-.02a3.43 3.43 0 0 0-.946-.133L12 7.682zm3.165 3.357c.023 1.748-1.33 3.078-1.33 4.806.164 2.227 1.733 3.207 3.266 3.146-.035.003-.068.007-.104.009-1.847.135-3.209-1.326-5.002-1.326-2.23.164-3.21 1.736-3.147 3.27l-.008-.104c-.133-1.847 1.328-3.21 1.328-5.002-.173-2.32-1.867-3.284-3.46-3.132.1-.011.203-.021.31-.027 1.847-.133 3.209 1.328 5.002 1.328 2.082-.155 3.074-1.536 3.145-2.968z'/></svg>",
|
||||
"name": "Pi-Hole",
|
||||
"no-issues": [],
|
||||
"note":" "
|
||||
},
|
||||
"blokada":{
|
||||
"name":"Blokada",
|
||||
"type":"Adblock App",
|
||||
"icon":"<svg xmlns='http://www.w3.org/2000/svg' width='18'' height='18' version='1.1' viewBox='0 0 33.867 33.867'><path fill='#df6852' fill-opacity='1' fill-rule='evenodd' stroke-linecap='round' stroke-linejoin='round' stroke-width='.529' d='M16.002 33.555c-1.164-.738-4.932-4.154-6.613-5.995-4.648-5.09-6.945-9.74-7.64-15.467-.166-1.378-.168-4.79-.002-6.309.114-1.045.575-4.113.73-4.854.077-.37.135-.344 1.252.57.453.372 1.184.854 1.627 1.074.75.373.884.402 2.037.446 1.067.041 1.391.009 2.38-.239 1.408-.352 3.015-.954 5.311-1.99L16.84 0l.714.356c3.273 1.63 6.017 2.457 8.225 2.48 1.928.02 3.12-.393 4.446-1.543.933-.809.93-.811 1.25.905 1.107 5.924 1.024 10.055-.279 14.009-.463 1.404-1.963 4.478-2.933 6.01-.91 1.437-2.277 3.256-3.607 4.796-1.761 2.041-5.234 5.33-6.872 6.51-.624.449-1.11.458-1.781.032zm1.865-4.1c1.198-1.009 3.213-2.945 3.172-3.049-.055-.14-3.867-3.452-7.863-6.83a768.36 768.36 0 0 1-5.967-5.09c-2.181-1.894-2.566-2.192-2.68-2.078-.105.106.266 1.593.757 3.03 1.496 4.379 4.162 8.022 9.57 13.077 1.02.954 1.903 1.735 1.961 1.735.058 0 .53-.358 1.05-.796zm7.317-10.165C25.124 19.192 8.473 8.138 6.04 6.58c-.912-.584-1.277-.765-1.334-.663-.109.195-.318 2.435-.349 3.737-.02.855.01 1.095.14 1.178.09.058 1.3.558 2.688 1.112 3.207 1.281 10.1 4.151 14.427 6.007 3.19 1.368 3.711 1.564 3.572 1.339zm3.64-5.223c.362-1.013.46-2.067.464-5.006.003-2.345-.026-2.945-.147-3.046-.113-.093-.298-.09-.74.012-.97.226-3.467.168-4.877-.111-1.585-.314-3.378-.887-5.146-1.643-.782-.335-1.473-.608-1.535-.607-.248.007-1.704.73-1.704.846 0 .154 1.586 1.421 4.827 3.855 4.997 3.754 8.385 6.201 8.54 6.17.088-.016.23-.228.318-.47z'/></svg>",
|
||||
"no-issues": [],
|
||||
|
@ -41,7 +43,7 @@
|
|||
"ublock-origin":{
|
||||
"type":"Browser Extension",
|
||||
"no-issues":[
|
||||
"kiwibrowser-android","brave-macos"
|
||||
"kiwibrowser-android","firefox-android","brave-macos","chrome-macos","firefox-macos"
|
||||
],
|
||||
"note":" ",
|
||||
"icon":"<svg fill='#800000' width='18' height='18' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 0C7.502 3 6.002 3 1.5 3c0 15.002 0 15.002 10.5 21 10.5-5.998 10.5-5.998 10.5-21-4.498 0-5.998 0-10.5-3zM5.956 7.472h1.512v4.536c0 1.322.19 1.508 1.512 1.508 1.323 0 1.512-.19 1.512-1.512V7.472H12v.767a3.75 3.75 0 0 1 2.268-.767 3.79 3.79 0 0 1 3.776 3.78 3.79 3.79 0 0 1-3.78 3.775 3.765 3.764 0 0 1-2.684-1.133c-.464.77-1.315 1.133-2.6 1.133-2.079 0-3.024-.944-3.024-3.023zm8.308 1.512A2.254 2.254 0 0 0 12 11.252a2.254 2.254 0 0 0 2.268 2.264 2.254 2.254 0 0 0 2.264-2.268 2.254 2.254 0 0 0-2.268-2.264z'/></svg>"
|
||||
|
|
247
src/data/font_list.js
Normal file
247
src/data/font_list.js
Normal file
|
@ -0,0 +1,247 @@
|
|||
export const font_list = [
|
||||
"Abadi MT Condensed Light",
|
||||
"Albertus Extra Bold",
|
||||
"Albertus Medium",
|
||||
"Amazone BT",
|
||||
"AmerType Md BT",
|
||||
"American Typewriter",
|
||||
"Andale Mono",
|
||||
"Antique Olive",
|
||||
"Arial",
|
||||
"Arial Black",
|
||||
"Arial MT",
|
||||
"Arial Narrow",
|
||||
"Arial Rounded MT Bold",
|
||||
"Arial Unicode MS",
|
||||
"Arrus BT",
|
||||
"Aurora Cn BT",
|
||||
"AvantGarde Bk BT",
|
||||
"AvantGarde Md BT",
|
||||
"Avenir",
|
||||
"Avenir Next",
|
||||
"Avenir Next Condensed",
|
||||
"Bahnschrift",
|
||||
"BankGothic Md BT",
|
||||
"Baskerville",
|
||||
"Bazooka",
|
||||
"Benguiat Bk BT",
|
||||
"BernhardFashion BT",
|
||||
"BernhardMod BT",
|
||||
"Big Caslon",
|
||||
"BinnerD",
|
||||
"Bodoni 72",
|
||||
"Bodoni 72 Oldstyle",
|
||||
"Bodoni 72 Smallcaps",
|
||||
"Book Antiqua",
|
||||
"Bookman Old Style",
|
||||
"Boulder",
|
||||
"Bradley Hand",
|
||||
"Bremen Bd BT",
|
||||
"Brush Script MT",
|
||||
"CG Omega",
|
||||
"CG Times",
|
||||
"Calibri",
|
||||
"Calisto MT",
|
||||
"Calligrapher",
|
||||
"Cambria",
|
||||
"Cambria Math",
|
||||
"Candara",
|
||||
"CaslonOpnface BT",
|
||||
"Century Gothic",
|
||||
"Century Schoolbook",
|
||||
"Cezanne",
|
||||
"Chalkboard",
|
||||
"Chalkboard SE",
|
||||
"Chalkduster",
|
||||
"Charlesworth",
|
||||
"Charter",
|
||||
"Charter BT",
|
||||
"Charter Bd BT",
|
||||
"Chaucer",
|
||||
"ChelthmITC Bk BT",
|
||||
"Clarendon Condensed",
|
||||
"CloisterBlack BT",
|
||||
"Cochin",
|
||||
"Comic Sans MS",
|
||||
"Consolas",
|
||||
"Constantia",
|
||||
"CopperplGoth Bd BT",
|
||||
"Copperplate",
|
||||
"Copperplate Gothic Bold",
|
||||
"Copperplate Gothic Light",
|
||||
"Corbel",
|
||||
"Cornerstone",
|
||||
"Coronet",
|
||||
"Courier",
|
||||
"Courier New",
|
||||
"Cuckoo",
|
||||
"DIN Alternate",
|
||||
"DIN Condensed",
|
||||
"Dauphin",
|
||||
"Denmark",
|
||||
"Didot",
|
||||
"Ebrima",
|
||||
"English 111 Vivace BT",
|
||||
"EngraversGothic BT",
|
||||
"Exotc350 Bd BT",
|
||||
"Franklin Gothic Medium",
|
||||
"Fransiscan",
|
||||
"Freefrm721 Blk BT",
|
||||
"FrnkGothITC Bk BT",
|
||||
"Futura",
|
||||
"Futura Bk BT",
|
||||
"Futura Lt BT",
|
||||
"Futura Md BT",
|
||||
"Futura ZBlk BT",
|
||||
"FuturaBlack BT",
|
||||
"Gabriola",
|
||||
"Gadugi",
|
||||
"Galliard BT",
|
||||
"Garamond",
|
||||
"Geneva",
|
||||
"GeoSlab 703 Lt BT",
|
||||
"GeoSlab 703 XBd BT",
|
||||
"Geometr231 BT",
|
||||
"Geometr231 Hv BT",
|
||||
"Geometr231 Lt BT",
|
||||
"Georgia",
|
||||
"Gill Sans",
|
||||
"GoudyHandtooled BT",
|
||||
"GoudyOLSt BT",
|
||||
"Haettenschweiler",
|
||||
"Heather",
|
||||
"Helvetica",
|
||||
"Helvetica Neue",
|
||||
"Herald",
|
||||
"Herculanum",
|
||||
"Hoefler Text",
|
||||
"HoloLens MDL2 Assets",
|
||||
"Humanst 521 Cn BT",
|
||||
"Humanst521 BT",
|
||||
"Humanst521 Lt BT",
|
||||
"Impact",
|
||||
"Incised901 BT",
|
||||
"Incised901 Bd BT",
|
||||
"Incised901 Lt BT",
|
||||
"Informal011 BT",
|
||||
"Ink Free",
|
||||
"Javanese Text",
|
||||
"Jester",
|
||||
"Kabel Bk BT",
|
||||
"Kabel Ult BT",
|
||||
"Kaufmann BT",
|
||||
"Kaufmann Bd BT",
|
||||
"Korinna BT",
|
||||
"Leelawadee UI",
|
||||
"Letter Gothic",
|
||||
"Lithograph",
|
||||
"Lithograph Light",
|
||||
"Long Island",
|
||||
"Lucida Console",
|
||||
"Lucida Grande",
|
||||
"Lucida Handwriting",
|
||||
"Lucida Sans",
|
||||
"Lucida Sans Unicode",
|
||||
"Luminari",
|
||||
"Lydian BT",
|
||||
"MS Gothic",
|
||||
"MS LineDraw",
|
||||
"MV Boli",
|
||||
"Malgun Gothic",
|
||||
"Marigold",
|
||||
"Marker Felt",
|
||||
"Market",
|
||||
"Marlett",
|
||||
"Matisse ITC",
|
||||
"Menlo",
|
||||
"Microsoft Himalaya",
|
||||
"Microsoft JhengHei",
|
||||
"Microsoft New Tai Lue",
|
||||
"Microsoft PhagsPa",
|
||||
"Microsoft Sans Serif",
|
||||
"Microsoft Tai Le",
|
||||
"Microsoft YaHei",
|
||||
"Microsoft Yi Baiti",
|
||||
"MingLiU-ExtB",
|
||||
"Monaco",
|
||||
"Mongolian Baiti",
|
||||
"Monotype Corsiva",
|
||||
"Myanmar Text",
|
||||
"News GothicMT",
|
||||
"NewsGoth BT",
|
||||
"Nirmala UI",
|
||||
"Noteworthy",
|
||||
"OCR A Extended",
|
||||
"Old Century",
|
||||
"Onyx BT",
|
||||
"Optima",
|
||||
"OzHandicraft BT",
|
||||
"PTBarnum BT",
|
||||
"Palatino",
|
||||
"Palatino Linotype",
|
||||
"Papyrus",
|
||||
"Pegasus",
|
||||
"Phosphate",
|
||||
"Pickwick",
|
||||
"Poster",
|
||||
"PosterBodoni BT",
|
||||
"Pythagoras",
|
||||
"Ribbon131 Bd BT",
|
||||
"Rockwell",
|
||||
"Savoye LET",
|
||||
"Sceptre",
|
||||
"Segoe MDL2 Assets",
|
||||
"Segoe Print",
|
||||
"Segoe Script",
|
||||
"Segoe UI",
|
||||
"Segoe UI Emoji",
|
||||
"Segoe UI Historic",
|
||||
"Segoe UI Symbol",
|
||||
"Serifa BT",
|
||||
"Serifa Th BT",
|
||||
"ShelleyVolante BT",
|
||||
"Sherwood",
|
||||
"SignPainter",
|
||||
"Signboard",
|
||||
"SimSun",
|
||||
"Sitka",
|
||||
"Skia",
|
||||
"Snell Roundhand",
|
||||
"Socket",
|
||||
"Souvenir Lt BT",
|
||||
"Staccato222 BT",
|
||||
"Steamer",
|
||||
"Storybook",
|
||||
"Subway",
|
||||
"Swis721 BlkEx BT",
|
||||
"Swiss911 XCm BT",
|
||||
"Sylfaen",
|
||||
"Symbol",
|
||||
"Tahoma",
|
||||
"Technical",
|
||||
"Teletype",
|
||||
"Tempus Sans ITC",
|
||||
"Times",
|
||||
"Times New Roman",
|
||||
"Times New Roman PS",
|
||||
"Trattatello",
|
||||
"Trebuchet MS",
|
||||
"Tristan",
|
||||
"Tubular",
|
||||
"TypoUpright BT",
|
||||
"Unicorn",
|
||||
"Univers",
|
||||
"Univers Condensed",
|
||||
"Vagabond",
|
||||
"Verdana",
|
||||
"Webdings",
|
||||
"Westminster\tAllegro",
|
||||
"Wingdings",
|
||||
"Yu Gothic",
|
||||
"ZapfEllipt BT",
|
||||
"ZapfHumnst BT",
|
||||
"ZapfHumnst Dm BT",
|
||||
"Zapfino",
|
||||
"Zurich BlkEx BT",
|
||||
"Zurich Ex BT"
|
||||
]
|
48
src/data/icons.js
Normal file
48
src/data/icons.js
Normal file
|
@ -0,0 +1,48 @@
|
|||
export const icons = {
|
||||
download:
|
||||
"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'><path d='M0 0h24v24H0z' stroke='none'/><path d='M4 17v2a2 2 0 002 2h12a2 2 0 002-2v-2M7 11l5 5 5-5M12 4v12'/></svg>",
|
||||
delete: "<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'><path d='M0 0h24v24H0z' stroke='none'/><path d='M4 7h16M10 11v6M14 11v6M5 7l1 12a2 2 0 002 2h8a2 2 0 002-2l1-12M9 7V4a1 1 0 011-1h4a1 1 0 011 1v3'/></svg>",
|
||||
cdot: "<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='var(--blue)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' ><path stroke='none' d='M0 0h24v24H0z'/><path d='M11 12a1 1 0 1 0 2 0 1 1 0 1 0-2 0'/><path d='M3 12a9 9 0 1 0 18 0 9 9 0 1 0-18 0'/></svg>",
|
||||
v: "<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke-width='2' stroke='var(--green)' fill='none' stroke-linecap='round' stroke-linejoin='round'><path d='M0 0h24v24H0z' stroke='none'/><circle cx='12' cy='12' r='9'/><path d='M9 12l2 2 4-4'/></svg>",
|
||||
x: "<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke-width='2' stroke='var(--red)' fill='none' stroke-linecap='round' stroke-linejoin='round'><path d='M0 0h24v24H0z' stroke='none'/><circle cx='12' cy='12' r='9'/><path d='M10 10l4 4m0-4l-4 4'/></svg>",
|
||||
Ads: "<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'><path d='M0 0h24v24H0z' stroke='none'/><path d='M18 8a3 3 0 010 6M10 8v11a1 1 0 01-1 1H8a1 1 0 01-1-1v-5'/><path d='M12 8h0l4.524-3.77A.9.9 0 0118 4.922v12.156a.9.9 0 01-1.476.692L12 14H4a1 1 0 01-1-1V9a1 1 0 011-1h8'/></svg>",
|
||||
Analytics:
|
||||
"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'><path d='M0 0h24v24H0z' stroke='none'/><path d='M4 18V6a2 2 0 012-2h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2z'/><path d='M7 14l3-3 2 2 3-3 2 2'/></svg>",
|
||||
'Error Trackers':
|
||||
"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'><path d='M0 0h24v24H0z' stroke='none'/><path d='M9 9V8a3 3 0 016 0v1M8 9h8a6 6 0 011 3v3a5 5 0 01-10 0v-3a6 6 0 011-3M3 13h4M17 13h4M12 20v-6M4 19l3.35-2M20 19l-3.35-2M4 7l3.75 2.4M20 7l-3.75 2.4'/></svg>",
|
||||
Mix: "<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'><path d='M0 0h24v24H0z' stroke='none'/><path d='M12 4L4 8l8 4 8-4-8-4M4 12l8 4 8-4M4 16l8 4 8-4'/></svg>",
|
||||
OEMs: "<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'><path d='M0 0h24v24H0z' stroke='none'/><rect x='6' y='3' width='12' height='18' rx='2'/><path d='M11 4h2M12 17v.01'/></svg>",
|
||||
'Social Trackers':
|
||||
"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'><path d='M0 0h24v24H0z' stroke='none'/><circle cx='12' cy='5' r='2'/><circle cx='5' cy='19' r='2'/><circle cx='19' cy='19' r='2'/><circle cx='12' cy='14' r='3'/><path d='M12 7v4M6.7 17.8l2.8-2M17.3 17.8l-2.8-2'/></svg>",
|
||||
OnePlus:
|
||||
"<svg fill='currentColor' width='18' height='18' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M0 3.74V24h20.26V12.428h-2.256v9.317H2.254V5.995h9.318V3.742zM18.004 0v3.74h-3.758v2.256h3.758v3.758h2.255V5.996H24V3.74h-3.758V0zm-6.45 18.756V8.862H9.562c0 .682-.228 1.189-.577 1.504-.367.297-.91.437-1.556.437h-.245v1.625h2.133v6.31h2.237z'></path></svg>",
|
||||
Xiaomi: "<svg fill='currentColor' width='18' height='18' role='img' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M19.96 20a.32.32 0 0 1-.32-.32V4.32a.32.32 0 0 1 .32-.32h3.71a.32.32 0 0 1 .33.32v15.36a.32.32 0 0 1-.33.32zm-6.22 0s-.3-.09-.3-.32v-9.43A2.18 2.18 0 0 0 11.24 8H4.3c-.4 0-.3.3-.3.3v11.38c0 .27-.3.32-.3.32H.33a.32.32 0 0 1-.33-.32V4.32A.32.32 0 0 1 .33 4h12.86a4.28 4.28 0 0 1 4.25 4.27l.01 11.41a.32.32 0 0 1-.32.32zm-6.9 0a.3.3 0 0 1-.3-.3v-9a.3.3 0 0 1 .3-.3h3.77a.3.3 0 0 1 .29.3v9a.3.3 0 0 1-.3.3z'></path></svg>",
|
||||
Huawei: "<svg fill='currentColor' width='18' height='18' role='img' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M3.67 6.14S1.82 7.91 1.72 9.78v.35c.08 1.51 1.22 2.4 1.22 2.4 1.83 1.79 6.26 4.04 7.3 4.55 0 0 .06.03.1-.01l.02-.04v-.04C7.52 10.8 3.67 6.14 3.67 6.14zM9.65 18.6c-.02-.08-.1-.08-.1-.08l-7.38.26c.8 1.43 2.15 2.53 3.56 2.2.96-.25 3.16-1.78 3.88-2.3.06-.05.04-.09.04-.09zm.08-.78C6.49 15.63.21 12.28.21 12.28c-.15.46-.2.9-.21 1.3v.07c0 1.07.4 1.82.4 1.82.8 1.69 2.34 2.2 2.34 2.2.7.3 1.4.31 1.4.31.12.02 4.4 0 5.54 0 .05 0 .08-.05.08-.05v-.06c0-.03-.03-.05-.03-.05zM9.06 3.19a3.42 3.42 0 00-2.57 3.15v.41c.03.6.16 1.05.16 1.05.66 2.9 3.86 7.65 4.55 8.65.05.05.1.03.1.03a.1.1 0 00.06-.1c1.06-10.6-1.11-13.42-1.11-13.42-.32.02-1.19.23-1.19.23zm8.299 2.27s-.49-1.8-2.44-2.28c0 0-.57-.14-1.17-.22 0 0-2.18 2.81-1.12 13.43.01.07.06.08.06.08.07.03.1-.03.1-.03.72-1.03 3.9-5.76 4.55-8.64 0 0 .36-1.4.02-2.34zm-2.92 13.07s-.07 0-.09.05c0 0-.01.07.03.1.7.51 2.85 2 3.88 2.3 0 0 .16.05.43.06h.14c.69-.02 1.9-.37 3-2.26l-7.4-.25zm7.83-8.41c.14-2.06-1.94-3.97-1.94-3.98 0 0-3.85 4.66-6.67 10.8 0 0-.03.08.02.13l.04.01h.06c1.06-.53 5.46-2.77 7.28-4.54 0 0 1.15-.93 1.21-2.42zm1.52 2.14s-6.28 3.37-9.52 5.55c0 0-.05.04-.03.11 0 0 .03.06.07.06 1.16 0 5.56 0 5.67-.02 0 0 .57-.02 1.27-.29 0 0 1.56-.5 2.37-2.27 0 0 .73-1.45.17-3.14z'></path></svg>",
|
||||
Samsung:
|
||||
"<svg fill='currentColor' width='18' height='18' role='img' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M19.8166 10.2808l.0459 2.6934h-.023l-.7793-2.6934h-1.2837v3.3925h.8481l-.0458-2.785h.023l.8366 2.785h1.2264v-3.3925zm-16.149 0l-.6418 3.427h.9284l.4699-3.1175h.0229l.4585 3.1174h.9169l-.6304-3.4269zm5.1805 0l-.424 2.6132h-.023l-.424-2.6132H6.5788l-.0688 3.427h.8596l.023-3.0832h.0114l.573 3.0831h.8711l.5731-3.083h.023l.0228 3.083h.8596l-.0802-3.4269zm-7.2664 2.4527c.0343.0802.0229.1949.0114.2522-.0229.1146-.1031.2292-.3324.2292-.2177 0-.3438-.126-.3438-.3095v-.3323H0v.2636c0 .7679.6074.9971 1.2493.9971.6189 0 1.1346-.2178 1.2149-.7794.0458-.298.0114-.4928 0-.5616-.1605-.722-1.467-.9283-1.5588-1.3295-.0114-.0688-.0114-.1375 0-.1834.023-.1146.1032-.2292.3095-.2292.2063 0 .321.126.321.3095v.2063h.8595v-.2407c0-.745-.6762-.8596-1.1576-.8596-.6074 0-1.1117.2063-1.2034.7564-.023.149-.0344.2866.0114.4585.1376.7106 1.364.9169 1.5358 1.3524m11.152 0c.0343.0803.0228.1834.0114.2522-.023.1146-.1032.2292-.3324.2292-.2178 0-.3438-.126-.3438-.3095v-.3323h-.917v.2636c0 .7564.596.9857 1.2379.9857.6189 0 1.1232-.2063 1.2034-.7794.0459-.298.0115-.4814 0-.5616-.1375-.7106-1.4327-.9284-1.5243-1.318-.0115-.0688-.0115-.1376 0-.1835.0229-.1146.1031-.2292.3094-.2292.1948 0 .321.126.321.3095v.2063h.848v-.2407c0-.745-.6647-.8596-1.146-.8596-.6075 0-1.1004.1948-1.192.7564-.023.149-.023.2866.0114.4585.1376.7106 1.341.9054 1.513 1.3524m2.8882.4585c.2407 0 .3094-.1605.3323-.2522.0115-.0343.0115-.0917.0115-.126v-2.533h.871v2.4642c0 .0688 0 .1948-.0114.2292-.0573.6419-.5616.8482-1.192.8482-.6303 0-1.1346-.2063-1.192-.8482 0-.0344-.0114-.1604-.0114-.2292v-2.4642h.871v2.533c0 .0458 0 .0916.0115.126 0 .0917.0688.2522.3095.2522m7.1518-.0344c.2522 0 .3324-.1605.3553-.2522.0115-.0343.0115-.0917.0115-.126v-.4929h-.3553v-.5043H24v.917c0 .0687 0 .1145-.0115.2292-.0573.6303-.596.8481-1.2034.8481-.6075 0-1.1461-.2178-1.2034-.8481-.0115-.1147-.0115-.1605-.0115-.2293v-1.444c0-.0574.0115-.172.0115-.2293.0802-.6419.596-.8482 1.2034-.8482s1.1347.2063 1.2034.8482c.0115.1031.0115.2292.0115.2292v.1146h-.8596v-.1948s0-.0803-.0115-.1261c-.0114-.0802-.0802-.2521-.3438-.2521-.2521 0-.321.1604-.3438.2521-.0115.0458-.0115.1032-.0115.1605v1.5702c0 .0458 0 .0916.0115.126 0 .0917.0917.2522.3323.2522'></path></svg>",
|
||||
Apple: "<svg fill='currentColor' width='18' height='18' role='img' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701'></path></svg>",
|
||||
Facebook:
|
||||
"<svg fill='currentColor' width='18' height='18' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z'/></svg>",
|
||||
Twitter:
|
||||
"<svg fill='currentColor' width='18' height='18' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z'/></svg>",
|
||||
Sentry: "<svg fill='currentColor' viewBox='0 0 24 24' width='18' height='18' xmlns='http://www.w3.org/2000/svg'><path d='M13.91 2.505c-.873-1.448-2.972-1.448-3.844 0L6.904 7.92a15.478 15.478 0 018.53 12.811h-2.221A13.301 13.301 0 005.784 9.814l-2.926 5.06a7.65 7.65 0 014.435 5.848H2.194a.365.365 0 01-.298-.534l1.413-2.402a5.16 5.16 0 00-1.614-.913L.296 19.275a2.182 2.182 0 00.812 2.999 2.24 2.24 0 001.086.288h6.983a9.322 9.322 0 00-3.845-8.318l1.11-1.922a11.47 11.47 0 014.95 10.24h5.915a17.242 17.242 0 00-7.885-15.28l2.244-3.845a.37.37 0 01.504-.13c.255.14 9.75 16.708 9.928 16.9a.365.365 0 01-.327.543h-2.287c.029.612.029 1.223 0 1.831h2.297a2.206 2.206 0 001.922-3.31z'/></svg>",
|
||||
Bugsnag:
|
||||
"<svg fill='currentColor' viewBox='0 0 24 24' width='18' height='18' xmlns='http://www.w3.org/2000/svg'><path d='M12 24c-4.596 0-8.336-3.74-8.336-8.336v-4.135a.62.62 0 01.62-.62h2.957L7.23 1.337 4.903 2.77v5.45a.62.62 0 01-1.24 0V2.7c0-.384.204-.749.53-.95L6.773.166a1.114 1.114 0 011.699.949l.01 9.796h3.52a4.759 4.759 0 014.753 4.754 4.759 4.759 0 01-4.753 4.753 4.759 4.759 0 01-4.754-4.753l-.003-3.515H4.903v3.515c0 3.912 3.183 7.097 7.097 7.097a7.104 7.104 0 007.097-7.097A7.105 7.105 0 0012 8.567h-1.076a.62.62 0 010-1.24H12c4.596 0 8.336 3.74 8.336 8.336S16.596 24 12 24zM8.482 12.15l.004 3.514A3.518 3.518 0 0012 19.178a3.518 3.518 0 003.514-3.514A3.518 3.518 0 0012 12.149zm4.513 3.514a.995.995 0 01-.995.994.995.995 0 01-.995-.994.995.995 0 01.995-.995.995.995 0 01.995.995z'/></svg>",
|
||||
LinkedIn:
|
||||
"<svg fill='currentColor' width='18' height='18' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/></svg>",
|
||||
Pinterest:
|
||||
"<svg fill='currentColor' width='18' height='18' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M12.017 0C5.396 0 .029 5.367.029 11.987c0 5.079 3.158 9.417 7.618 11.162-.105-.949-.199-2.403.041-3.439.219-.937 1.406-5.957 1.406-5.957s-.359-.72-.359-1.781c0-1.663.967-2.911 2.168-2.911 1.024 0 1.518.769 1.518 1.688 0 1.029-.653 2.567-.992 3.992-.285 1.193.6 2.165 1.775 2.165 2.128 0 3.768-2.245 3.768-5.487 0-2.861-2.063-4.869-5.008-4.869-3.41 0-5.409 2.562-5.409 5.199 0 1.033.394 2.143.889 2.741.099.12.112.225.085.345-.09.375-.293 1.199-.334 1.363-.053.225-.172.271-.401.165-1.495-.69-2.433-2.878-2.433-4.646 0-3.776 2.748-7.252 7.92-7.252 4.158 0 7.392 2.967 7.392 6.923 0 4.135-2.607 7.462-6.233 7.462-1.214 0-2.354-.629-2.758-1.379l-.749 2.848c-.269 1.045-1.004 2.352-1.498 3.146 1.123.345 2.306.535 3.55.535 6.607 0 11.985-5.365 11.985-11.987C23.97 5.39 18.592.026 11.985.026L12.017 0z'/></svg>",
|
||||
Reddit: "<svg fill='currentColor' width='18' height='18' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M12 0A12 12 0 000 12a12 12 0 0012 12 12 12 0 0012-12A12 12 0 0012 0zm5.01 4.744c.688 0 1.25.561 1.25 1.249a1.25 1.25 0 01-2.498.056l-2.597-.547-.8 3.747c1.824.07 3.48.632 4.674 1.488.308-.309.73-.491 1.207-.491.968 0 1.754.786 1.754 1.754 0 .716-.435 1.333-1.01 1.614a3.111 3.111 0 01.042.52c0 2.694-3.13 4.87-7.004 4.87-3.874 0-7.004-2.176-7.004-4.87 0-.183.015-.366.043-.534A1.748 1.748 0 014.028 12c0-.968.786-1.754 1.754-1.754.463 0 .898.196 1.207.49 1.207-.883 2.878-1.43 4.744-1.487l.885-4.182a.342.342 0 01.14-.197.35.35 0 01.238-.042l2.906.617a1.214 1.214 0 011.108-.701zM9.25 12C8.561 12 8 12.562 8 13.25c0 .687.561 1.248 1.25 1.248.687 0 1.248-.561 1.248-1.249 0-.688-.561-1.249-1.249-1.249zm5.5 0c-.687 0-1.248.561-1.248 1.25 0 .687.561 1.248 1.249 1.248.688 0 1.249-.561 1.249-1.249 0-.687-.562-1.249-1.25-1.249zm-5.466 3.99a.327.327 0 00-.231.094.33.33 0 000 .463c.842.842 2.484.913 2.961.913.477 0 2.105-.056 2.961-.913a.361.361 0 00.029-.463.33.33 0 00-.464 0c-.547.533-1.684.73-2.512.73-.828 0-1.979-.196-2.512-.73a.326.326 0 00-.232-.095z'/></svg>",
|
||||
TikTok: "<svg fill='currentColor' width='18' height='18' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z'/></svg>",
|
||||
Yahoo: "<svg fill='currentColor' width='18' height='18' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M18.86 1.56l-4.59 10.31h5.13L24 1.56h-5.14M0 6.71l5.15 11.56-1.85 4.17h4.53l6.86-15.73h-4.5l-2.8 6.73-2.77-6.73H0m15.62 6.16c-1.67 0-2.91 1.25-2.91 2.71 0 1.42 1.2 2.61 2.79 2.61 1.68 0 2.93-1.23 2.93-2.69 0-1.47-1.2-2.63-2.81-2.63z'/></svg>",
|
||||
Hotjar: "<svg fill='currentColor' width='18' height='18' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M21.055 7.814C17.512 1.404 7.118 0 7.118 0s4.798 5.34-1.334 9.567c-3.876 2.666-5.41 6.13-3.75 9.914 1.27 2.9 3.96 4.076 6.86 4.519-.745-1.434-.932-3.505-.381-5.628a8.51 8.51 0 0 1 .186-.636c.813 1.258 2.148 1.946 3.45 1.629 1.783-.424 2.829-2.582 2.342-4.799a5.104 5.104 0 0 0-.536-1.372c.07.017.14.024.212.047 2.225.635 3.301 3.962 2.403 7.434a9.266 9.266 0 0 1-1.325 2.946c3.82-1.23 6.36-4.311 7.06-7.056.736-2.856.177-6.185-1.25-8.751z'/></svg>",
|
||||
YouTube:
|
||||
"<svg fill='currentColor' width='18' height='18' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M23.498 6.186a3.016 3.016 0 00-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 00.502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 002.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 002.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/></svg>",
|
||||
Unity: "<svg fill='currentColor' width='18' height='18' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='m12.929 4.294 3.8 2.193c.136.077.141.29 0 .367l-4.515 2.608a.42.42 0 0 1-.425 0L7.274 6.854c-.139-.074-.141-.293 0-.367l3.797-2.193V0L1.376 5.598v11.195l3.717-2.146v-4.385c-.002-.157.182-.269.318-.184l4.515 2.607a.425.425 0 0 1 .214.368v5.213c.002.156-.181.268-.318.184l-3.8-2.193-3.717 2.145L12 24l9.695-5.598-3.717-2.145-3.8 2.192c-.134.082-.323-.024-.318-.183v-5.213c0-.157.087-.296.214-.368l4.515-2.607c.134-.082.322.022.318.184v4.385l3.717 2.146V5.598L12.93 0Z'/></svg>",
|
||||
'Google Ads':
|
||||
"<svg fill='currentColor' width='18' height='18' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M4 22.93a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm19.464-6.001-8-13.857a4 4 0 0 0-6.93 4l8.001 13.857a4.001 4.001 0 0 0 6.93-4zM7.514 4.844l-5.95 10.304A4.5 4.5 0 0 1 4 14.43c2.56-.008 4.625 2.158 4.494 4.715l3.217-5.573-3.61-6.25a4.463 4.463 0 0 1-.587-2.478z'/></svg>",
|
||||
'Google Analytics':
|
||||
"<svg fill='currentColor' width='18' height='18' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M22.84 2.998v17.999a2.983 2.983 0 0 1-2.967 2.998 2.98 2.98 0 0 1-.368-.02 3.06 3.06 0 0 1-2.61-3.1V3.12A3.06 3.06 0 0 1 19.51.02a2.983 2.983 0 0 1 3.329 2.978zM4.133 18.055a2.973 2.973 0 1 0 0 5.945 2.973 2.973 0 0 0 0-5.945zm7.872-9.01h-.05a3.06 3.06 0 0 0-2.892 3.126v7.985c0 2.167.954 3.482 2.35 3.763a2.978 2.978 0 0 0 3.57-2.927v-8.959a2.983 2.983 0 0 0-2.978-2.988z'/></svg>",
|
||||
Adcolony:
|
||||
"<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 83 110'><path d='m27.1 85.6.1-.1c6.3-8.5 7-14.9 4.1-17.1-2.9-2.2-8.9.2-15.2 8.7-12.8-14.7-11.2-37 3.5-49.7 3-2.6 6.4-4.7 10-6.1-.5.1-1.1.2-1.6.4C9.2 26.2-2.3 45.2 2.4 64c1.7 6.9 5.5 13.1 10.8 17.8C7.9 91.3 3.2 106 0 110.2c3.3-4.5 17.1-13.7 24.6-21.7 6.4 2.3 13.4 2.6 20 1 .6-.1 1.2-.3 1.8-.5-6.7.8-13.3-.4-19.3-3.4zM11 95.5c1.6-3.9 3.4-8 5.2-11.2.8-1.4 1.6-2.8 2.6-4.1l.1-.1c4.8-6.4 8.5-7.7 9.3-7.3.5.6.3 4.5-4.5 11v.1c-.9 1.1-1.8 2.2-2.8 3.2-3.2 2.9-6.5 5.7-9.9 8.4z' transform='translate(-285 -100) translate(285 100)'/><path d='M66.8 38.1C81.8 18.1 82.7 0 82.7 0S65.6 5.9 50.6 26c-4.5 6.1-8.5 12.5-11.9 19.3h-.1l-10.2 1.4c1-1.9 1.8-3.8 2.4-5.9 0 0-4.7 2.4-10.7 10.4s-6.6 12.1-6.6 12.1l.5.3s3-1.3 7.8-7.2l11.5 1h.2c-.7 1.9-1.2 3.8-1.7 5.7l2.1 1.6c7.5-7.6 11.7-18 11.7-18-.5.7-7.2 8.2-9.9 11.2 0 0 6.6-16.8 15.8-29 12-16 22.4-21.2 22.4-21.2s-3.2 12.8-14.2 27.5c-3.9 5.2-8.2 10.2-12.8 14.8l-.6.6c-2.7 5.7-6.3 11-10.6 15.7l.5.4c.2-.1 1.8-1 4.4-2.8l.6-.4.1.2 4.3 10.8c-4.3 6.4-4.7 9.6-4.7 9.6l.5.3s3.8-1.6 9.8-9.7 7-13.2 7-13.2c-1.8 1.1-3.5 2.4-5 3.9l-1.5-10.2V55c5.5-5.2 10.6-10.8 15.1-16.9z' transform='translate(-285 -100) translate(285 100)'/><path d='M66.8 38.1C81.8 18.1 82.7 0 82.7 0S65.6 5.9 50.6 26c-4.5 6.1-8.5 12.5-11.9 19.3h-.1l-10.2 1.4c1-1.9 1.8-3.8 2.4-5.9 0 0-4.7 2.4-10.7 10.4s-6.6 12.1-6.6 12.1l.5.3s3-1.3 7.8-7.2l11.5 1h.2c-.7 1.9-1.2 3.8-1.7 5.7l2.1 1.6c7.5-7.6 11.7-18 11.7-18-.5.7-7.2 8.2-9.9 11.2 0 0 6.6-16.8 15.8-29 12-16 22.4-21.2 22.4-21.2s-3.2 12.8-14.2 27.5c-3.9 5.2-8.2 10.2-12.8 14.8l-.6.6c-2.7 5.7-6.3 11-10.6 15.7l.5.4c.2-.1 1.8-1 4.4-2.8l.6-.4.1.2 4.3 10.8c-4.3 6.4-4.7 9.6-4.7 9.6l.5.3s3.8-1.6 9.8-9.7 7-13.2 7-13.2c-1.8 1.1-3.5 2.4-5 3.9l-1.5-10.2V55c5.5-5.2 10.6-10.8 15.1-16.9z' transform='translate(-285 -100) translate(285 100)'/></svg>"
|
||||
}
|
109
src/fontlist.ejs
109
src/fontlist.ejs
|
@ -12,16 +12,105 @@
|
|||
}) %>
|
||||
|
||||
<body>
|
||||
<%- include('partials/header.ejs', {page:'fontlist'}) %>
|
||||
<main>
|
||||
<div class="hero ">
|
||||
<p>View a list of available fonts in your browser</p>
|
||||
</div>
|
||||
<div id="flist">
|
||||
|
||||
</div>
|
||||
|
||||
</main>
|
||||
<%- include('partials/adblock/changelog.ejs') %>
|
||||
<%- include('partials/support_me.ejs') %>
|
||||
<%- include('partials/header.ejs', {page:'fontlist'}) %>
|
||||
<main>
|
||||
<div class="grid">
|
||||
<div class="col-6 _ta-center">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="var(--txt-r)" width="128" height="128" viewBox="0 0 128 128">
|
||||
<path
|
||||
d="M50.336 22.85c-1.471 0-2.942.712-3.54 2.137L19.911 89a3.84 3.84 0 0 0 2.052 5.029 3.835 3.835 0 0 0 5.029-2.054l5.407-12.874h35.88l5.408 12.874a3.82 3.82 0 0 0 3.539 2.354c.07 0 .139-.017.208-.02.063.004.122.019.186.019h18.893c7.513 0 13.619-6.108 13.619-13.62 0-5.372-3.152-9.985-7.677-12.204 2.559-2.472 4.162-5.932 4.162-9.765 0-7.51-6.107-13.62-13.62-13.62H77.62a2.637 2.637 0 0 0-2.636 2.636V75.24L53.877 24.987c-.597-1.425-2.07-2.138-3.54-2.138zM18.991 97.655c-4.372 0-4.991 1.67-4.991 3.747s.636 3.748 4.99 3.748h89.41c4.355 0 5.601-1.679 5.601-3.748s-1.23-3.747-5.601-3.747z" />
|
||||
</svg>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="card" id="results">
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="card">
|
||||
<fieldset>
|
||||
<legend>Font Test</legend>
|
||||
<div class="row">
|
||||
<div>
|
||||
<sub>Click on below text to edit</sub>
|
||||
<h1 id="font_test" contenteditable>
|
||||
abcde
|
||||
<div>12345</div>
|
||||
</h1>
|
||||
<hr>
|
||||
<div>
|
||||
<pre class="_mt-2"><code id="css-code">.custom-font {
|
||||
font-family: Arial;
|
||||
font-weight: 500;
|
||||
font-size: 48px;
|
||||
letter-spacing: 0px;
|
||||
line-height: 1.4;
|
||||
}</code></pre></div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="grid">
|
||||
<div>
|
||||
<select id="f_options">
|
||||
<option value="Arial">Select font..</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label>Font Weight <span id="r_fw_value">500</span>
|
||||
<input id="r_fw" type="range" value="500" min="100" max="900" step="50">
|
||||
</label>
|
||||
<label>Font Size <span id="r_fs_value">48px</span>
|
||||
<input id="r_fs" type="range" min="8" max="72" value="48" />
|
||||
</label>
|
||||
<label>Letter Spacing <span id="r_ls_value">0px</span>
|
||||
<input id="r_ls" type="range" min="-20" max="20" value="0" step=".1" />
|
||||
</label>
|
||||
<label>Line Height <span id="r_lh_value">1.4</span>
|
||||
<input id="r_lh" type="range" min="0" max="2" value="1.4" step=".1" />
|
||||
</label>
|
||||
</div>
|
||||
<div>
|
||||
<button class="btn-p" id="css_code_copy"><svg stroke="currentColor" fill="none" stroke-width="2"
|
||||
viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round"
|
||||
height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
|
||||
<desc></desc>
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||
<rect x="8" y="8" width="12" height="12" rx="2"></rect>
|
||||
<path d="M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2">
|
||||
</path>
|
||||
</svg> Copy CSS to Clipboard</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<details class="card _p-0 _shadowless _bg _my-2">
|
||||
<summary class="_p-1"> FontList </summary>
|
||||
<div class="_p-1">
|
||||
<p>
|
||||
Standard fonts may appear differently on different devices or operating systems, causing
|
||||
inconsistency in the appearance of text on a webpage.<br>
|
||||
This testing tool allows you to check over 200+ standard fonts and see which ones are supported
|
||||
by your browser.
|
||||
The page displays a list of each supported font.<br>
|
||||
Users can also customize the sample text and adjust font size and style options to see how the
|
||||
different fonts look in various settings. This tool is useful for designers, developers, and
|
||||
anyone looking to experiment with different fonts on their website.
|
||||
<br>
|
||||
</p>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div id="flist">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<%- include('partials/footer.ejs') %>
|
||||
<%- include('partials/gotop.ejs') %>
|
||||
</body>
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
|
||||
<body>
|
||||
<%- include('partials/support_me.ejs') %>
|
||||
<%- include('partials/adblock/changelog.ejs') %>
|
||||
<%- include('partials/header.ejs', {page:'index'}) %>
|
||||
<main class="_ta-center">
|
||||
<div class="_aos-top card">
|
||||
|
|
|
@ -1,32 +1,74 @@
|
|||
import '../sass/adblock.sass'
|
||||
import * as data from '../data/adblock_data.json'
|
||||
import { icons } from '../assets/adblock/icons'
|
||||
import packageJSON from '../../package.json'
|
||||
import { icons } from '../data/icons'
|
||||
import { navbar } from './components/navbar'
|
||||
import { dialog } from './components/dialog'
|
||||
import A11yDialog from './components/dialog'
|
||||
import { themeManager } from './components/themeManager'
|
||||
import { gotop } from './components/gotop'
|
||||
import { aos } from './components/aos'
|
||||
import { fadeIn, fadeOut } from './components/fade'
|
||||
import { Snackbar } from './components/snackbar'
|
||||
import { LocalStorageManager } from './components/localStorage'
|
||||
|
||||
const cd = document.querySelector('#dlg_changelog')
|
||||
const ch_dialog = new A11yDialog(cd)
|
||||
var TZ = new LocalStorageManager('toolz')
|
||||
const version = packageJSON.version
|
||||
const tzversion = TZ.get('version')
|
||||
if (tzversion !== version) {
|
||||
//Show changelog
|
||||
ch_dialog.show()
|
||||
//Set version
|
||||
TZ.set('version', version)
|
||||
}
|
||||
var LS = new LocalStorageManager('adb_tool')
|
||||
var reports = LS.get('reports')
|
||||
var collapseStatus = LS.get('collapseStatus')
|
||||
if (!collapseStatus) { collapseStatus = true; LS.set('collapseStatus', collapseStatus) }
|
||||
var tslog = ""
|
||||
if (!reports) reports = []
|
||||
var results = LS.get('results')
|
||||
var settings = LS.get('settings')
|
||||
if (!settings) {
|
||||
settings = {
|
||||
collapseAll: true,
|
||||
hideCF: false,
|
||||
hideSL: false
|
||||
}
|
||||
LS.set('settings', settings)
|
||||
}
|
||||
var tslog = ''
|
||||
if (!results) results = []
|
||||
var test_log = document.getElementById('test_log')
|
||||
var snackbar = new Snackbar({
|
||||
topPos: "10px",
|
||||
topPos: '10px',
|
||||
classNames: 'success',
|
||||
autoClose: true,
|
||||
autoCloseTimeout: 2000
|
||||
})
|
||||
function downloadResult(k) {
|
||||
var r
|
||||
results.forEach((ri) => {
|
||||
console.log(ri['time'], k)
|
||||
if (ri['time'] == k) r = ri
|
||||
})
|
||||
var data = JSON.stringify(r)
|
||||
var blob = new Blob([data], { type: 'application/json' })
|
||||
var url = URL.createObjectURL(blob)
|
||||
var linkElement = document.createElement('a')
|
||||
linkElement.setAttribute('download', 'd3_adb_' + r.date + '.json')
|
||||
var revokeAndDownload = function () {
|
||||
URL.revokeObjectURL(linkElement.href)
|
||||
linkElement.href = url
|
||||
linkElement.click()
|
||||
}
|
||||
if (linkElement.href) {
|
||||
URL.revokeObjectURL(linkElement.href)
|
||||
setTimeout(revokeAndDownload, 1000)
|
||||
} else {
|
||||
revokeAndDownload()
|
||||
}
|
||||
}
|
||||
async function copyToClip(str) {
|
||||
try {
|
||||
await navigator.clipboard.writeText(str).then(() => { snackbar.showN('URL copied to clipboard !') })
|
||||
|
||||
await navigator.clipboard.writeText(str).then(() => {
|
||||
snackbar.show('URL copied to clipboard !')
|
||||
})
|
||||
} catch (err) {
|
||||
const txt = document.createElement('textarea')
|
||||
txt.value = str
|
||||
|
@ -35,25 +77,25 @@ async function copyToClip(str) {
|
|||
txt.style.left = '-9999px'
|
||||
document.body.appendChild(txt)
|
||||
|
||||
txt.select();
|
||||
txt.setSelectionRange(0, 99999);
|
||||
document.execCommand('copy');
|
||||
txt.select()
|
||||
txt.setSelectionRange(0, 99999)
|
||||
document.execCommand('copy')
|
||||
txt.remove()
|
||||
snackbar.showN('URL copied to clipboard !')
|
||||
snackbar.show('URL copied to clipboard !')
|
||||
}
|
||||
}
|
||||
var abt = {
|
||||
total: 10,
|
||||
total: 0,
|
||||
blocked: 0,
|
||||
notblocked:0,
|
||||
notblocked: 0,
|
||||
cosmetic_test: {
|
||||
static: false,
|
||||
dynamic: false
|
||||
static: null,
|
||||
dynamic: null
|
||||
},
|
||||
script: {
|
||||
ads: false,
|
||||
pagead: false,
|
||||
partnerads: false
|
||||
ads: null,
|
||||
pagead: null,
|
||||
partnerads: null
|
||||
},
|
||||
hosts: {}
|
||||
}
|
||||
|
@ -83,22 +125,19 @@ async function check_url(url, div, parent, k1, k2) {
|
|||
await fetch('https://' + url, config, timeout, parent, div)
|
||||
.then((response) => {
|
||||
console.log(response)
|
||||
if(response.type == "basic" && response.status == 200)
|
||||
{
|
||||
if (response.type == 'basic' && response.status == 200) {
|
||||
hostDiv.innerHTML = icons['v'] + '<span>' + url + '</span>'
|
||||
abt.blocked += 1
|
||||
Object.assign(abt.hosts[k1][k2], { [url]: true })
|
||||
tslog += "<br> " + url + " - blocked"
|
||||
}else{
|
||||
tslog += '<br> ' + url + ' - blocked'
|
||||
} else {
|
||||
//Response was received --> ads are NOT blocked
|
||||
parent.style.background = 'var(--red)'
|
||||
hostDiv.innerHTML = icons['x'] + '<span>' + url + '</span>'
|
||||
abt.notblocked += 1
|
||||
Object.assign(abt.hosts[k1][k2], { [url]: false })
|
||||
tslog += "<br> " + url + " - not blocked"
|
||||
tslog += '<br> ' + url + ' - not blocked'
|
||||
}
|
||||
|
||||
|
||||
})
|
||||
.catch((error) => {
|
||||
console.log(error)
|
||||
|
@ -106,7 +145,7 @@ async function check_url(url, div, parent, k1, k2) {
|
|||
hostDiv.innerHTML = icons['v'] + '<span>' + url + '</span>'
|
||||
abt.blocked += 1
|
||||
Object.assign(abt.hosts[k1][k2], { [url]: true })
|
||||
tslog += "<br> " + url + " - blocked"
|
||||
tslog += '<br> ' + url + ' - blocked'
|
||||
//No response / error --> ads are blocked
|
||||
})
|
||||
} catch (error) {
|
||||
|
@ -133,9 +172,10 @@ async function fetchTests() {
|
|||
Object.keys(data).forEach((key) => {
|
||||
if (key == 'default') return
|
||||
var catEl = document.createElement('div')
|
||||
catEl.className = "grid"
|
||||
catEl.className = 'grid'
|
||||
catEl.id = key
|
||||
catEl.innerHTML = '<div><h5>' + icons[key] + ' ' + key + '</h5><div>'
|
||||
catEl.innerHTML =
|
||||
'<div><h5>' + icons[key] + ' ' + key + '</h5><div>'
|
||||
testWrapper.appendChild(catEl)
|
||||
var category = data[key]
|
||||
var total_hosts = 0
|
||||
|
@ -144,10 +184,10 @@ async function fetchTests() {
|
|||
dd_1.classList.add('col-6')
|
||||
var dd_2 = document.createElement('div')
|
||||
dd_2.classList.add('col-6')
|
||||
|
||||
|
||||
catEl.appendChild(dd_2)
|
||||
catEl.appendChild(dd_1)
|
||||
var i=0
|
||||
var i = 0
|
||||
Object.keys(category).forEach((keyC) => {
|
||||
var testInfo = document.createElement('div')
|
||||
var tests_count = 0
|
||||
|
@ -156,12 +196,13 @@ async function fetchTests() {
|
|||
div.classList.add('test')
|
||||
div.id = keyC
|
||||
div.style.background = 'var(--green)'
|
||||
let tc = icons[keyC] != undefined ? (icons[keyC] + " ") : ""
|
||||
div.innerHTML = "<span class='test_collapse'>" + tc + keyC + '</span>'
|
||||
let tc = icons[keyC] != undefined ? icons[keyC] + ' ' : ''
|
||||
div.innerHTML =
|
||||
"<span class='test_collapse'>" + tc + keyC + '</span>'
|
||||
div.appendChild(dw)
|
||||
if(i%2==0){
|
||||
if (i % 2 == 0) {
|
||||
dd_2.appendChild(div)
|
||||
}else{
|
||||
} else {
|
||||
dd_1.appendChild(div)
|
||||
}
|
||||
i++
|
||||
|
@ -169,12 +210,10 @@ async function fetchTests() {
|
|||
if (Object.prototype.hasOwnProperty.call(category, keyC)) {
|
||||
var value = category[keyC]
|
||||
for (let i = 0; i < value.length; i++) {
|
||||
|
||||
fetches.push(
|
||||
check_url(value[i], dw, div, key, keyC).then(() => {
|
||||
set_liquid()
|
||||
})
|
||||
|
||||
)
|
||||
tests_count++
|
||||
}
|
||||
|
@ -208,8 +247,14 @@ function ad_script_test() {
|
|||
sfa1.classList.add(abt.script.ads ? '_bg-green' : '_bg-red')
|
||||
sfa2.classList.add(abt.script.pagead ? '_bg-green' : '_bg-red')
|
||||
sfa3.classList.add(abt.script.partnerads ? '_bg-green' : '_bg-red')
|
||||
abt.blocked += (abt.script.ads ? 2 :0)+(abt.script.pagead ? 2 :0)+(abt.script.partnerads ? 2 :0)
|
||||
abt.notblocked += (abt.script.ads ? 0 :2)+(abt.script.pagead ? 0 :2)+(abt.script.partnerads ? 0 :2)
|
||||
abt.blocked +=
|
||||
(abt.script.ads ? 2 : 0) +
|
||||
(abt.script.pagead ? 2 : 0) +
|
||||
(abt.script.partnerads ? 2 : 0)
|
||||
abt.notblocked +=
|
||||
(abt.script.ads ? 0 : 2) +
|
||||
(abt.script.pagead ? 0 : 2) +
|
||||
(abt.script.partnerads ? 0 : 2)
|
||||
test_log.appendChild(log)
|
||||
log.innerHTML =
|
||||
'<div>script_ads : ' +
|
||||
|
@ -219,7 +264,7 @@ function ad_script_test() {
|
|||
'</div><div>script_partenrads : ' +
|
||||
abt.script.partnerads +
|
||||
'</div><br> ------------------------- '
|
||||
set_liquid()
|
||||
set_liquid()
|
||||
}
|
||||
const ctd = document.querySelector('#ctd_test')
|
||||
|
||||
|
@ -227,32 +272,45 @@ const ctd = document.querySelector('#ctd_test')
|
|||
function cosmetic_test_static() {
|
||||
setTimeout(function () {
|
||||
const cts = document.querySelector('#cts_test')
|
||||
abt.cosmetic_test.static = (cts.clientHeight || cts.offsetHeight || window.getComputedStyle(cts, null).getPropertyValue("display") =='block') ? false : true
|
||||
abt.cosmetic_test.static =
|
||||
cts.clientHeight ||
|
||||
cts.offsetHeight ||
|
||||
window.getComputedStyle(cts, null).getPropertyValue('display') ==
|
||||
'block'
|
||||
? false
|
||||
: true
|
||||
abt.blocked += abt.cosmetic_test.static ? 2 : 0
|
||||
abt.notblocked += abt.cosmetic_test.static ? 0 : 2
|
||||
document.querySelector('#ct_static').classList.add(abt.cosmetic_test.static ? '_bg-green' : '_bg-red')
|
||||
document
|
||||
.querySelector('#ct_static')
|
||||
.classList.add(abt.cosmetic_test.static ? '_bg-green' : '_bg-red')
|
||||
let log = document.createElement('div')
|
||||
test_log.appendChild(log)
|
||||
log.innerHTML =
|
||||
' cosmetic_static_ad : ' +
|
||||
abt.cosmetic_test.static +
|
||||
'<br><br> ------------------------- '
|
||||
set_liquid()
|
||||
set_liquid()
|
||||
}, 500)
|
||||
}
|
||||
//Dynamic
|
||||
function cosmetic_test_dynamic() {
|
||||
let log = document.createElement('div')
|
||||
let ad = document.createElement('div')
|
||||
ad.id="ad_ctd"
|
||||
ad.id = 'ad_ctd'
|
||||
ad.className =
|
||||
'textads banner-ads banner_ads ad-unit afs_ads ad-zone ad-space adsbox'
|
||||
ad.innerHTML=" "
|
||||
ad.innerHTML = ' '
|
||||
ctd.appendChild(ad)
|
||||
setTimeout(function () {
|
||||
let adt = document.querySelector("#ad_ctd")
|
||||
let adt = document.querySelector('#ad_ctd')
|
||||
abt.cosmetic_test.dynamic =
|
||||
(adt.offsetHeight || adt.clientHeight || window.getComputedStyle(adt, null).getPropertyValue("display") =='block')? false : true
|
||||
adt.offsetHeight ||
|
||||
adt.clientHeight ||
|
||||
window.getComputedStyle(adt, null).getPropertyValue('display') ==
|
||||
'block'
|
||||
? false
|
||||
: true
|
||||
abt.blocked += abt.cosmetic_test.dynamic ? 2 : 0
|
||||
abt.notblocked += abt.cosmetic_test.dynamic ? 0 : 2
|
||||
test_log.appendChild(log)
|
||||
|
@ -263,7 +321,7 @@ function cosmetic_test_dynamic() {
|
|||
document
|
||||
.querySelector('#ct_dynamic')
|
||||
.classList.add(abt.cosmetic_test.dynamic ? '_bg-green' : '_bg-red')
|
||||
set_liquid()
|
||||
set_liquid()
|
||||
}, 500)
|
||||
}
|
||||
|
||||
|
@ -273,9 +331,20 @@ async function startAdBlockTesting() {
|
|||
document.querySelector('.lt_wrap').classList.add('start')
|
||||
lt_cwrap.classList.add('start')
|
||||
let tests = []
|
||||
tests.push(cosmetic_test_static())
|
||||
tests.push(cosmetic_test_dynamic())
|
||||
tests.push(ad_script_test())
|
||||
if (settings['hideCF']) {
|
||||
abt.total += 4
|
||||
tests.push(cosmetic_test_static())
|
||||
tests.push(cosmetic_test_dynamic())
|
||||
} else {
|
||||
document.querySelector('#cf_wrap').style.display = 'none'
|
||||
}
|
||||
if (settings['hideSL']) {
|
||||
abt.total += 6
|
||||
tests.push(ad_script_test())
|
||||
} else {
|
||||
document.querySelector('#sl_wrap').style.display = 'none'
|
||||
}
|
||||
|
||||
tests.push(fetchTests())
|
||||
let results = await Promise.all(tests)
|
||||
return results
|
||||
|
@ -285,17 +354,14 @@ function set_liquid() {
|
|||
var c = p > 30 ? (p > 60 ? 'var(--green)' : 'var(--orange)') : 'var(--red)'
|
||||
document.body.style.setProperty('--liquid-percentage', 45 - p + '%')
|
||||
document.body.style.setProperty('--liquid-color', c)
|
||||
document.body.style.setProperty(
|
||||
'--liquid-title',
|
||||
"'" + abt.blocked + "'"
|
||||
)
|
||||
document.body.style.setProperty('--liquid-title', "'" + abt.blocked + "'")
|
||||
}
|
||||
|
||||
function stopAdBlockTesting() {
|
||||
fadeOut(lt_particles, () => {
|
||||
document.querySelector('.lt_wrap').classList.remove('start')
|
||||
fadeIn(lt_particles, 'flex')
|
||||
document.body.classList.remove("_overflowhidden")
|
||||
document.body.classList.remove('_overflowhidden')
|
||||
})
|
||||
lt_cwrap.classList.remove('start')
|
||||
console.log(abt)
|
||||
|
@ -303,73 +369,118 @@ function stopAdBlockTesting() {
|
|||
function render_tests() {
|
||||
var r_wrap = document.querySelector('.r_wrap')
|
||||
r_wrap.innerHTML = ''
|
||||
reports.forEach((r, index) => {
|
||||
results.forEach((r, index) => {
|
||||
var div = document.createElement('div')
|
||||
div.className = "col-6"
|
||||
var date = new Date(r["time"]);
|
||||
let d = date.getDate() + "/" + (date.getMonth() + 1) + "/" + date.getFullYear() +
|
||||
" " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
|
||||
var abt_r = reports[index].abt
|
||||
var t = "<span>Total : "+abt_r.total+"</span><br><span>"+icons["x"]+" "+abt_r.notblocked+" not blocked</span><span>"+icons["v"]+" "+abt_r.blocked+" blocked</span>"
|
||||
div.innerHTML = "<div class='card'><div>"+t+"<br><h6>" + d + "</h6></div><div><button class='btn-blue'>" + icons["download"] + "</button></div></div>"
|
||||
r_wrap.insertBefore(div,r_wrap.children[0])
|
||||
|
||||
div.className = 'col-6'
|
||||
var abt_r = results[index].abt
|
||||
var t =
|
||||
'<span>Total : ' +
|
||||
abt_r.total +
|
||||
'</span><br><span>' +
|
||||
icons['x'] +
|
||||
' ' +
|
||||
abt_r.notblocked +
|
||||
' not blocked</span><span>' +
|
||||
icons['v'] +
|
||||
' ' +
|
||||
abt_r.blocked +
|
||||
' blocked</span>'
|
||||
div.innerHTML =
|
||||
"<div class='card'><div>" +
|
||||
t +
|
||||
'<br><h6>' +
|
||||
r.date +
|
||||
'</h6></div><div><button class="btn-blue outline" data-r=' +
|
||||
r['time'] +
|
||||
'>' +
|
||||
icons['download'] +
|
||||
'</button></div></div>'
|
||||
r_wrap.insertBefore(div, r_wrap.children[0])
|
||||
})
|
||||
document.querySelectorAll('button[data-r]').forEach((el) => {
|
||||
el.addEventListener('click', () => {
|
||||
downloadResult(el.getAttribute('data-r'))
|
||||
})
|
||||
})
|
||||
}
|
||||
//Browser : \nOS : \nAd-block : \nDNS : \nVPN :
|
||||
function add_report() {
|
||||
let ms = Date.now();
|
||||
if (reports.length < 10) {
|
||||
reports.push({ "time": ms, "note": "", "abt": abt })
|
||||
let ms = Date.now()
|
||||
var date = new Date(ms)
|
||||
let d =
|
||||
date.getDate() +
|
||||
'/' +
|
||||
(date.getMonth() + 1) +
|
||||
'/' +
|
||||
date.getFullYear() +
|
||||
' ' +
|
||||
date.getHours() +
|
||||
':' +
|
||||
date.getMinutes() +
|
||||
':' +
|
||||
date.getSeconds()
|
||||
if (results.length < 10) {
|
||||
results.push({ time: ms, date: d, note: '', abt: abt })
|
||||
} else {
|
||||
reports.splice(0, 1)
|
||||
reports.push({ "time": ms, "note": "", "abt": abt })
|
||||
results.splice(0, 1)
|
||||
results.push({ time: ms, date: d, note: '', abt: abt })
|
||||
}
|
||||
LS.set("reports", reports)
|
||||
LS.set('results', results)
|
||||
render_tests()
|
||||
console.log(abt)
|
||||
}
|
||||
window.onbeforeunload = function () {
|
||||
window.scrollTo(0, 0);
|
||||
};
|
||||
window.scrollTo(0, 0)
|
||||
}
|
||||
|
||||
const el = (l) => { return document.querySelector(l) }
|
||||
const el = (l) => {
|
||||
return document.querySelector(l)
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
new navbar()
|
||||
new themeManager()
|
||||
new gotop()
|
||||
new aos()
|
||||
const ct = document.querySelector("#collapse_status")
|
||||
ct.checked = collapseStatus
|
||||
ct.addEventListener("change", () => {
|
||||
console.log(collapseStatus)
|
||||
collapseStatus = ct.checked
|
||||
collapse_category(collapseStatus, false)
|
||||
LS.set('collapseStatus', collapseStatus)
|
||||
})
|
||||
console.log(settings)
|
||||
for (const key in settings) {
|
||||
console.log(`${key}: ${settings[key]}`)
|
||||
|
||||
const c = document.querySelector('#' + key)
|
||||
c.checked = settings[key]
|
||||
c.addEventListener('change', () => {
|
||||
settings[key] = c.checked
|
||||
console.log(key, c.checked)
|
||||
if (key == 'collapseAll') collapse_category(settings[key], false)
|
||||
LS.set('settings', settings)
|
||||
})
|
||||
}
|
||||
render_tests()
|
||||
|
||||
startAdBlockTesting().then(() => {
|
||||
collapse_category(collapseStatus, true)
|
||||
collapse_category(settings['collapseAll'], true)
|
||||
//Add a delay in order to show properly the animation
|
||||
setTimeout(() => {
|
||||
stopAdBlockTesting()
|
||||
add_report()
|
||||
var tsl = document.createElement("div")
|
||||
var tsl = document.createElement('div')
|
||||
tsl.innerHTML = tslog
|
||||
test_log.appendChild(tsl)
|
||||
fadeIn(document.querySelector("#adb_test"), "flex")
|
||||
fadeIn(document.querySelector('#adb_test'), 'flex')
|
||||
}, 2000)
|
||||
|
||||
})
|
||||
|
||||
document.querySelector("#start_test").addEventListener("click", () => {
|
||||
document.querySelector('#start_test').addEventListener('click', () => {
|
||||
location.reload(true)
|
||||
})
|
||||
const stxt = "https://raw.githubusercontent.com/d3ward/toolz/master/src/d3host.txt"
|
||||
const sadblock = 'https://raw.githubusercontent.com/d3ward/toolz/master/src/d3host.adblock'
|
||||
document.querySelector("#d3H_txt").addEventListener("click", function () { copyToClip(stxt) })
|
||||
el("#d3H_adblock").addEventListener("click", function () { copyToClip(sadblock) })
|
||||
|
||||
const stxt =
|
||||
'https://raw.githubusercontent.com/d3ward/toolz/master/src/d3host.txt'
|
||||
const sadblock =
|
||||
'https://raw.githubusercontent.com/d3ward/toolz/master/src/d3host.adblock'
|
||||
document.querySelector('#d3H_txt').addEventListener('click', function () {
|
||||
copyToClip(stxt)
|
||||
})
|
||||
el('#d3H_adblock').addEventListener('click', function () {
|
||||
copyToClip(sadblock)
|
||||
})
|
||||
})
|
||||
|
|
32
src/js/components/fontChecker.js
Normal file
32
src/js/components/fontChecker.js
Normal file
|
@ -0,0 +1,32 @@
|
|||
export function fontChecker() {
|
||||
var baseFonts = ['monospace', 'sans-serif', 'serif']
|
||||
var testString = 'abcdefghilmnopqrstuvz'
|
||||
var testSize = '72px'
|
||||
var h = document.getElementsByTagName('body')[0]
|
||||
var s = document.createElement('span')
|
||||
s.style.fontSize = testSize
|
||||
s.innerHTML = testString
|
||||
var defaultWidth = {}
|
||||
var defaultHeight = {}
|
||||
for (var index in baseFonts) {
|
||||
s.style.fontFamily = baseFonts[index]
|
||||
h.appendChild(s)
|
||||
defaultWidth[baseFonts[index]] = s.offsetWidth //width for the default font
|
||||
defaultHeight[baseFonts[index]] = s.offsetHeight //height for the defualt font
|
||||
h.removeChild(s)
|
||||
}
|
||||
|
||||
this.detect = function(font){
|
||||
var detected = false
|
||||
for (var index in baseFonts) {
|
||||
s.style.fontFamily = font + ',' + baseFonts[index] // name of the font along with the base font for fallback.
|
||||
h.appendChild(s)
|
||||
var matched =
|
||||
s.offsetWidth != defaultWidth[baseFonts[index]] ||
|
||||
s.offsetHeight != defaultHeight[baseFonts[index]]
|
||||
h.removeChild(s)
|
||||
detected = detected || matched
|
||||
}
|
||||
return detected
|
||||
}
|
||||
}
|
|
@ -20,19 +20,19 @@ export function Snackbar(option) {
|
|||
t.message.innerHTML = ''
|
||||
t.snack.classList.remove(t.classNames)
|
||||
}
|
||||
t.showN = function (msg, type) {
|
||||
t.hideN()
|
||||
t.show = function (msg, type) {
|
||||
t.hide()
|
||||
t.message.innerHTML = msg
|
||||
t.snack.style.top = t.top
|
||||
t.snack.classList.add(type || t.classNames)
|
||||
|
||||
if (t.autoClose) {
|
||||
setTimeout(function () {
|
||||
t.hideN()
|
||||
t.hide()
|
||||
}, t.autoCloseTimeout)
|
||||
}
|
||||
}
|
||||
t.hideN = function () {
|
||||
t.hide = function () {
|
||||
t.snack.style.top = '-100%'
|
||||
t.reset()
|
||||
}
|
||||
|
|
|
@ -1,220 +1,147 @@
|
|||
import '../sass/fontlist.sass'
|
||||
import packageJSON from '../../package.json'
|
||||
import { font_list } from '../data/font_list'
|
||||
import { navbar } from './components/navbar'
|
||||
import { dialog } from './components/dialog'
|
||||
import A11yDialog from './components/dialog'
|
||||
import { themeManager } from './components/themeManager'
|
||||
import { gotop } from './components/gotop'
|
||||
import { aos } from './components/aos'
|
||||
|
||||
import { Snackbar } from './components/snackbar'
|
||||
import { fontChecker } from './components/fontChecker'
|
||||
import { icons } from '../data/icons'
|
||||
import { LocalStorageManager } from './components/localStorage'
|
||||
const cd = document.querySelector('#dlg_changelog')
|
||||
const ch_dialog = new A11yDialog(cd)
|
||||
var TZ = new LocalStorageManager('toolz')
|
||||
const version = packageJSON.version
|
||||
const tzversion = TZ.get('version')
|
||||
if (tzversion !== version) {
|
||||
//Show changelog
|
||||
ch_dialog.show()
|
||||
//Set version
|
||||
TZ.set('version', version)
|
||||
}
|
||||
var snackbar = new Snackbar({
|
||||
topPos: '10px',
|
||||
classNames: 'success',
|
||||
autoClose: true,
|
||||
autoCloseTimeout: 2000
|
||||
})
|
||||
const fo = document.getElementById('f_options')
|
||||
const ft = document.getElementById('font_test')
|
||||
const r_fw = document.getElementById('r_fw')
|
||||
const r_fwv = document.getElementById('r_fw_value')
|
||||
const r_fs = document.getElementById('r_fs')
|
||||
const r_fsv = document.getElementById('r_fs_value')
|
||||
const r_ls = document.getElementById('r_ls')
|
||||
const r_lsv = document.getElementById('r_ls_value')
|
||||
const r_lh = document.getElementById('r_lh')
|
||||
const r_lhv = document.getElementById('r_lh_value')
|
||||
function copyToClip() {
|
||||
var cssCode = document.getElementById('css-code')
|
||||
var range = document.createRange()
|
||||
range.selectNode(cssCode)
|
||||
window.getSelection().removeAllRanges()
|
||||
window.getSelection().addRange(range)
|
||||
document.execCommand('copy')
|
||||
window.getSelection().removeAllRanges()
|
||||
snackbar.show('CSS copied to clipboard !')
|
||||
}
|
||||
function generateCSS() {
|
||||
var css =
|
||||
'.custom-font {\n' +
|
||||
' font-family: ' +
|
||||
fo.value +
|
||||
';\n' +
|
||||
' font-weight: ' +
|
||||
r_fwv.innerText +
|
||||
';\n' +
|
||||
' font-size: ' +
|
||||
r_fsv.innerText +
|
||||
';\n' +
|
||||
' letter-spacing: ' +
|
||||
r_lsv.innerText +
|
||||
';\n' +
|
||||
' line-height: ' +
|
||||
r_lhv.innerText +
|
||||
';\n' +
|
||||
'}'
|
||||
document.getElementById('css-code').innerHTML = css
|
||||
}
|
||||
// Call the function when the DOM is loaded
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
new themeManager()
|
||||
new navbar()
|
||||
new gotop()
|
||||
new aos()
|
||||
new modal()
|
||||
})
|
||||
|
||||
var Detector = function () {
|
||||
var baseFonts = ['monospace', 'sans-serif', 'serif']
|
||||
var testString = 'abcdefghilmnopqrstuvz'
|
||||
var testSize = '72px'
|
||||
var h = document.getElementsByTagName('body')[0]
|
||||
// create a SPAN in the document to get the width of the text we use to test
|
||||
var s = document.createElement('span')
|
||||
s.style.fontSize = testSize
|
||||
s.innerHTML = testString
|
||||
var defaultWidth = {}
|
||||
var defaultHeight = {}
|
||||
for (var index in baseFonts) {
|
||||
//get the default width for the three base fonts
|
||||
s.style.fontFamily = baseFonts[index]
|
||||
h.appendChild(s)
|
||||
defaultWidth[baseFonts[index]] = s.offsetWidth //width for the default font
|
||||
defaultHeight[baseFonts[index]] = s.offsetHeight //height for the defualt font
|
||||
h.removeChild(s)
|
||||
}
|
||||
|
||||
function detect(font) {
|
||||
var detected = false
|
||||
for (var index in baseFonts) {
|
||||
s.style.fontFamily = font + ',' + baseFonts[index] // name of the font along with the base font for fallback.
|
||||
h.appendChild(s)
|
||||
var matched =
|
||||
s.offsetWidth != defaultWidth[baseFonts[index]] ||
|
||||
s.offsetHeight != defaultHeight[baseFonts[index]]
|
||||
h.removeChild(s)
|
||||
detected = detected || matched
|
||||
var total = 0,
|
||||
available = 0,
|
||||
notAvalaible = 0
|
||||
var fc = new fontChecker()
|
||||
const flist = document.querySelector('#flist')
|
||||
font_list.forEach((element) => {
|
||||
total++
|
||||
var a = fc.detect(element)
|
||||
if (a) {
|
||||
var el = document.createElement('div')
|
||||
el.innerText = element
|
||||
el.className = 'card _aos'
|
||||
var op = document.createElement('option')
|
||||
op.value = element
|
||||
op.innerText = element
|
||||
fo.appendChild(op)
|
||||
el.style.fontFamily = element
|
||||
flist.appendChild(el)
|
||||
available++
|
||||
} else {
|
||||
notAvalaible++
|
||||
}
|
||||
return detected
|
||||
console.log(a)
|
||||
})
|
||||
const r = document.querySelector('#results')
|
||||
|
||||
r.innerHTML =
|
||||
'<span>' +
|
||||
total +
|
||||
' Tested Fonts </span><span>' +
|
||||
icons['v'] +
|
||||
' ' +
|
||||
available +
|
||||
' Detected fonts</span><span>' +
|
||||
icons['cdot'] +
|
||||
' ' +
|
||||
notAvalaible +
|
||||
' Not available </span>'
|
||||
new aos()
|
||||
|
||||
fo.onchange = function () {
|
||||
ft.style['fontFamily'] = this.value
|
||||
generateCSS()
|
||||
}
|
||||
r_fw.oninput = function () {
|
||||
ft.style['font-weight'] = this.value
|
||||
r_fwv.innerText = this.value
|
||||
generateCSS()
|
||||
}
|
||||
|
||||
this.detect = detect
|
||||
}
|
||||
var d = new Detector()
|
||||
var list = [
|
||||
'Abadi MT Condensed Light',
|
||||
'Albertus Extra Bold',
|
||||
'Albertus Medium',
|
||||
'Antique Olive',
|
||||
'Arial',
|
||||
'Arial Black',
|
||||
'Arial MT',
|
||||
'Arial Narrow',
|
||||
'Bazooka',
|
||||
'Book Antiqua',
|
||||
'Bookman Old Style',
|
||||
'Boulder',
|
||||
'Calisto MT',
|
||||
'Calligrapher',
|
||||
'Century Gothic',
|
||||
'Century Schoolbook',
|
||||
'Cezanne',
|
||||
'CG Omega',
|
||||
'CG Times',
|
||||
'Charlesworth',
|
||||
'Chaucer',
|
||||
'Clarendon Condensed',
|
||||
'Comic Sans MS',
|
||||
'Copperplate Gothic Bold',
|
||||
'Copperplate Gothic Light',
|
||||
'Cornerstone',
|
||||
'Coronet',
|
||||
'Courier',
|
||||
'Courier New',
|
||||
'Cuckoo',
|
||||
'Dauphin',
|
||||
'Denmark',
|
||||
'Fransiscan',
|
||||
'Garamond',
|
||||
'Geneva',
|
||||
'Haettenschweiler',
|
||||
'Heather',
|
||||
'Helvetica',
|
||||
'Herald',
|
||||
'Impact',
|
||||
'Jester',
|
||||
'Letter Gothic',
|
||||
'Lithograph',
|
||||
'Lithograph Light',
|
||||
'Long Island',
|
||||
'Lucida Console',
|
||||
'Lucida Handwriting',
|
||||
'Lucida Sans',
|
||||
'Lucida Sans Unicode',
|
||||
'Marigold',
|
||||
'Market',
|
||||
'Matisse ITC',
|
||||
'MS LineDraw',
|
||||
'News GothicMT',
|
||||
'OCR A Extended',
|
||||
'Old Century',
|
||||
'Pegasus',
|
||||
'Pickwick',
|
||||
'Poster',
|
||||
'Pythagoras',
|
||||
'Sceptre',
|
||||
'Sherwood',
|
||||
'Signboard',
|
||||
'Socket',
|
||||
'Steamer',
|
||||
'Storybook',
|
||||
'Subway',
|
||||
'Tahoma',
|
||||
'Technical',
|
||||
'Teletype',
|
||||
'Tempus Sans ITC',
|
||||
'Times',
|
||||
'Times New Roman',
|
||||
'Times New Roman PS',
|
||||
'Trebuchet MS',
|
||||
'Tristan',
|
||||
'Tubular',
|
||||
'Unicorn',
|
||||
'Univers',
|
||||
'Univers Condensed',
|
||||
'Vagabond',
|
||||
'Verdana',
|
||||
'Westminster Allegro',
|
||||
'Amazone BT',
|
||||
'AmerType Md BT',
|
||||
'Arrus BT',
|
||||
'Aurora Cn BT',
|
||||
'AvantGarde Bk BT',
|
||||
'AvantGarde Md BT',
|
||||
'BankGothic Md BT',
|
||||
'Benguiat Bk BT',
|
||||
'BernhardFashion BT',
|
||||
'BernhardMod BT',
|
||||
'BinnerD',
|
||||
'Bremen Bd BT',
|
||||
'CaslonOpnface BT',
|
||||
'Charter Bd BT',
|
||||
'Charter BT',
|
||||
'ChelthmITC Bk BT',
|
||||
'CloisterBlack BT',
|
||||
'CopperplGoth Bd BT',
|
||||
'English 111 Vivace BT',
|
||||
'EngraversGothic BT',
|
||||
'Exotc350 Bd BT',
|
||||
'Freefrm721 Blk BT',
|
||||
'FrnkGothITC Bk BT',
|
||||
'Futura Bk BT',
|
||||
'Futura Lt BT',
|
||||
'Futura Md BT',
|
||||
'Futura ZBlk BT',
|
||||
'FuturaBlack BT',
|
||||
'Galliard BT',
|
||||
'Geometr231 BT',
|
||||
'Geometr231 Hv BT',
|
||||
'Geometr231 Lt BT',
|
||||
'GeoSlab 703 Lt BT',
|
||||
'GeoSlab 703 XBd BT',
|
||||
'GoudyHandtooled BT',
|
||||
'GoudyOLSt BT',
|
||||
'Humanst521 BT',
|
||||
'Humanst 521 Cn BT',
|
||||
'Humanst521 Lt BT',
|
||||
'Incised901 Bd BT',
|
||||
'Incised901 BT',
|
||||
'Incised901 Lt BT',
|
||||
'Informal011 BT',
|
||||
'Kabel Bk BT',
|
||||
'Kabel Ult BT',
|
||||
'Kaufmann Bd BT',
|
||||
'Kaufmann BT',
|
||||
'Korinna BT',
|
||||
'Lydian BT',
|
||||
'Monotype Corsiva',
|
||||
'NewsGoth BT',
|
||||
'Onyx BT',
|
||||
'OzHandicraft BT',
|
||||
'PosterBodoni BT',
|
||||
'PTBarnum BT',
|
||||
'Ribbon131 Bd BT',
|
||||
'Serifa BT',
|
||||
'Serifa Th BT',
|
||||
'ShelleyVolante BT',
|
||||
'Souvenir Lt BT',
|
||||
'Staccato222 BT',
|
||||
'Swis721 BlkEx BT',
|
||||
'Swiss911 XCm BT',
|
||||
'TypoUpright BT',
|
||||
'ZapfEllipt BT',
|
||||
'ZapfHumnst BT',
|
||||
'ZapfHumnst Dm BT',
|
||||
'Zurich BlkEx BT',
|
||||
'Zurich Ex BT'
|
||||
]
|
||||
|
||||
const flist = document.querySelector('#flist')
|
||||
list.forEach((element) => {
|
||||
var a = d.detect(element)
|
||||
if (a) {
|
||||
var el = document.createElement('div')
|
||||
el.innerText = element
|
||||
el.className = 'card _aos'
|
||||
el.style.fontFamily = element
|
||||
flist.appendChild(el)
|
||||
r_fs.oninput = function () {
|
||||
ft.style['font-size'] = this.value + 'px'
|
||||
r_fsv.innerText = this.value + 'px'
|
||||
generateCSS()
|
||||
}
|
||||
console.log(a)
|
||||
|
||||
r_ls.oninput = function () {
|
||||
ft.style['letter-spacing'] = this.value + 'px'
|
||||
r_lsv.innerText = this.value + 'px'
|
||||
generateCSS()
|
||||
}
|
||||
|
||||
r_lh.oninput = function () {
|
||||
ft.style['line-height'] = this.value
|
||||
r_lhv.innerText = this.value
|
||||
generateCSS()
|
||||
}
|
||||
document
|
||||
.querySelector('#css_code_copy')
|
||||
.addEventListener('click', copyToClip)
|
||||
})
|
||||
|
|
|
@ -1,15 +1,27 @@
|
|||
import '../sass/index.sass'
|
||||
import packageJSON from '../../package.json'
|
||||
import { navbar } from './components/navbar'
|
||||
import { dialog } from './components/dialog'
|
||||
import A11yDialog from './components/dialog'
|
||||
import { themeManager } from './components/themeManager'
|
||||
import { gotop } from './components/gotop'
|
||||
import { aos } from './components/aos'
|
||||
|
||||
import { LocalStorageManager } from './components/localStorage'
|
||||
const cd = document.querySelector('#dlg_changelog')
|
||||
const ch_dialog = new A11yDialog(cd)
|
||||
var TZ = new LocalStorageManager('toolz')
|
||||
const version = packageJSON.version
|
||||
var tzversion = TZ.get('version')
|
||||
console.log(tzversion, version)
|
||||
if (tzversion !== version) {
|
||||
//Show changelog
|
||||
ch_dialog.show()
|
||||
//Set version
|
||||
TZ.set('version', version)
|
||||
}
|
||||
// Call the function when the DOM is loaded
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
new themeManager()
|
||||
new navbar()
|
||||
new gotop()
|
||||
new aos()
|
||||
new modal()
|
||||
})
|
||||
|
|
|
@ -1,9 +1,22 @@
|
|||
import '../sass/units.sass'
|
||||
import packageJSON from '../../package.json'
|
||||
import { navbar } from './components/navbar'
|
||||
import { dialog } from './components/dialog'
|
||||
import A11yDialog from './components/dialog'
|
||||
import { themeManager } from './components/themeManager'
|
||||
import { gotop } from './components/gotop'
|
||||
import { aos } from './components/aos'
|
||||
import { LocalStorageManager } from './components/localStorage'
|
||||
const cd = document.querySelector('#dlg_changelog')
|
||||
const ch_dialog = new A11yDialog(cd)
|
||||
var TZ = new LocalStorageManager('toolz')
|
||||
const version = packageJSON.version
|
||||
const tzversion = TZ.get('version')
|
||||
if (tzversion !== version) {
|
||||
//Show changelog
|
||||
ch_dialog.show()
|
||||
//Set version
|
||||
TZ.set('version', version)
|
||||
}
|
||||
|
||||
// Call the function when the DOM is loaded
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
|
@ -13,8 +26,6 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||
new aos()
|
||||
})
|
||||
|
||||
const spinner = ['/', '-', '\\', '|']
|
||||
let spinnerIx = 0
|
||||
function el(name) {
|
||||
return document.querySelector(name)
|
||||
}
|
||||
|
@ -60,10 +71,8 @@ function updateTest() {
|
|||
lvh == i ? 'var(--green)' : lvh > i ? 'var(--blue)' : 'var(--orange)'
|
||||
el('.t-p').style.background =
|
||||
p == i ? 'var(--green)' : p > i ? 'var(--blue)' : 'var(--orange)'
|
||||
|
||||
}
|
||||
|
||||
var fullscreen = false
|
||||
addEventListener('load', function () {
|
||||
getBars()
|
||||
updateTest()
|
||||
|
|
70
src/partials/adblock/changelog.ejs
Normal file
70
src/partials/adblock/changelog.ejs
Normal file
|
@ -0,0 +1,70 @@
|
|||
<div class="dialog" id="dlg_changelog" aria-labelledby="dlg_changelog-title" aria-hidden="true">
|
||||
<div class="dialog-overlay" data-a11y-dialog-hide></div>
|
||||
<div class="dialog-content">
|
||||
<header>
|
||||
<h3 id="dlg_changelog-title">Toolz 3.0.0 </h3>
|
||||
<button data-a11y-dialog-hide><svg class="w-6 h-6" id="close-icon" fill="none" stroke="currentColor"
|
||||
viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12">
|
||||
</path>
|
||||
</svg></button>
|
||||
</header>
|
||||
<section>
|
||||
<div class="grid better_r">
|
||||
<div class="_txt-center">
|
||||
<h1 class="_p-1">🎉 Thank you! 🎉</h1>
|
||||
</div>
|
||||
<div>
|
||||
<h2>More than 2 million tests so far</h2>
|
||||
</div>
|
||||
<div>
|
||||
<div class="card _mt-1 _p-1 _bg3 _shadowless">
|
||||
<p>
|
||||
I would like to take a moment to express my gratitude for your support of <b>Toolz</b> over the past 3 years.<br>
|
||||
Your contributions have been invaluable, from sharing it with your communities to providing feedback that has helped me improve the project.
|
||||
</p>
|
||||
<p>
|
||||
I'm pleased to announce the release <b>3.0.0</b> of Toolz with several new features that I believe will improve your experience even more.<br>
|
||||
<h5>#Changelog</h5>
|
||||
<ul class="keep-ls">
|
||||
<li>Overall design improvement</li>
|
||||
<li>Improved project structure and tooling</li>
|
||||
<li>Adblock
|
||||
<ul class="keep-ls">
|
||||
<li>New design , colors and animations</li>
|
||||
<li>Cosmetic Filter and Script tests</li>
|
||||
<li>Updated , cleaned and optimized host list</li>
|
||||
<li>History and logs of tests (max 10)</li>
|
||||
<li>Compatibility table</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Fontlist
|
||||
<ul class="keep-ls">
|
||||
<li>New layout design</li>
|
||||
<li>Added 200+ standard font test</li>
|
||||
<li>New feature to preview the font and generate CSS</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Units
|
||||
<ul class="keep-ls">
|
||||
<li>New desgin</li>
|
||||
<li>Feature improvement with 5 CSS units </li>
|
||||
<li>Live innerHeight value</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p>Thank you again for your support.</p>
|
||||
Best regards,<br>
|
||||
d3ward
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<footer>
|
||||
<button data-a11y-dialog-hide>
|
||||
Close
|
||||
</button>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
|
@ -10,12 +10,12 @@
|
|||
</svg></button>
|
||||
</header>
|
||||
<section>
|
||||
<div>
|
||||
<div class="better_r">
|
||||
<h2>How does it work?</h2>
|
||||
<b class="_txt-red"><i>You will not see any ads and no trackers will be activated </i></b><br><br>
|
||||
<div class="row keep-width">
|
||||
<div>
|
||||
<div class="card">
|
||||
<div class="card _h-100">
|
||||
<div class="_f-center">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="var(--green)" width="24" height="24"
|
||||
viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"
|
||||
|
@ -25,7 +25,7 @@
|
|||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" stroke-width="2" stroke="var(--green)" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M0 0h24v24H0z" stroke="none"></path><circle cx="12" cy="12" r="9"></circle><path d="M9 12l2 2 4-4"></path></svg>
|
||||
|
||||
Blocked
|
||||
<b>Blocked</b>
|
||||
</div>
|
||||
If the connection to a host/script fails or a box is removed means the latter has been
|
||||
blocked by your
|
||||
|
@ -42,7 +42,7 @@
|
|||
<path d="M12 3c7.2 0 9 1.8 9 9s-1.8 9 -9 9s-9 -1.8 -9 -9s1.8 -9 9 -9z"></path>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" stroke-width="2" stroke="var(--red)" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M0 0h24v24H0z" stroke="none"></path><circle cx="12" cy="12" r="9"></circle><path d="M10 10l4 4m0-4l-4 4"></path></svg>
|
||||
Not Blocked
|
||||
<b>Not Blocked</b>
|
||||
</div>
|
||||
Connection to a host did not fail or box is not removed, means that your ad-blocker did not
|
||||
block it or doesn't work
|
||||
|
@ -109,7 +109,8 @@
|
|||
However, please note that this does not mean that there is a lack of protection provided by the solution you have configured, such as an ad blocking extension, a VPN or a DNS.<br>
|
||||
The limitations of JavaScript or the absence of certain features may prevent the test from being able to accurately determine the number of connections that are blocked.<br>
|
||||
You will still receive an estimate of the percentage of connections that have been blocked/detected by this tool
|
||||
<br><button data-a11y-dialog-show="dlg_compatibility">
|
||||
</p>
|
||||
<div class="_py-1"><button data-a11y-dialog-show="dlg_compatibility">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-info-square" width="24" height="24"
|
||||
viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round"
|
||||
stroke-linejoin="round">
|
||||
|
@ -117,18 +118,17 @@
|
|||
<line x1="12" y1="8" x2="12.01" y2="8"></line>
|
||||
<rect x="4" y="4" width="16" height="16" rx="2"></rect>
|
||||
<polyline points="11 12 12 12 12 16 13 16"></polyline>
|
||||
</svg> Check Compatibility</button>
|
||||
</p>
|
||||
</svg> Check Compatibility</button></div>
|
||||
<br>
|
||||
<hr><br>
|
||||
<h2>How I can have 100%</h2>
|
||||
<p>
|
||||
A green score indicates a satisfactory level of protection.<br>
|
||||
There is no need to aim for a perfect score.<br>
|
||||
However, if you are interested in achieving full 100% protection, you can use the list we have provided, which covers most of the tests on the site (excluding cosmetic filters and script loading).
|
||||
However, if you are interested in achieving full 100% protection, you can use my d3Host List, which covers most of the tests on the site (excluding cosmetic filters and script loading).
|
||||
This should help to improve your score.
|
||||
</p>
|
||||
<div class="grid keep-width">
|
||||
<div class="grid keep-width _mt-1">
|
||||
<div>
|
||||
<button class="btn-blue" id="d3H_txt">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-copy" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
|
@ -151,18 +151,24 @@
|
|||
<br>
|
||||
<hr><br>
|
||||
<h2>My ad-blocking solutions</h2>
|
||||
I use <a href="https://www.dnsfilter.com/">DNSFilter</a> as main DNS resolver<br>
|
||||
Plus these combo on each platform :
|
||||
<ul>
|
||||
<p>
|
||||
I use <a href="https://www.dnsfilter.com/">DNSFilter</a> as main DNS resolver<br>
|
||||
Plus these combo on each platform :
|
||||
</p>
|
||||
|
||||
<ul class="keep-ls">
|
||||
<li>Windows : Brave + ublock-Origin</li>
|
||||
<li>MacOS : Brave + ublock-Origin</li>
|
||||
<li>Android : Kiwi Browser + ublock-Origin</li>
|
||||
<li>iOS : Safari + Adguard Extension</li>
|
||||
</ul>
|
||||
<a href="https://ublockorigin.com/" class="btn">uBlock Origin </a>
|
||||
<a href="https://adguard.com/it/adguard-ios/overview.html" class="btn">Adguard for iOS</a>
|
||||
<div class="_cnt-grid-wrap">
|
||||
<a href="https://ublockorigin.com/" class="btn">uBlock Origin </a>
|
||||
<a href="https://adguard.com/it/adguard-ios/overview.html" class="btn">Adguard for iOS</a>
|
||||
</div>
|
||||
|
||||
Lists I have set on ad blocking solutions :
|
||||
<ul>
|
||||
<ul class="keep-ls">
|
||||
<li>OISD List (includes my list)</li>
|
||||
<li>Peter Lowe’s Ad and tracking server list </li>
|
||||
<li>uBlock filters</li>
|
||||
|
@ -175,7 +181,7 @@
|
|||
I wanted to build something with a great design and user experience that was pretty straightforward for any type of user.<br>
|
||||
There are other great tools that I use and would like to recommend
|
||||
</p>
|
||||
<div class="cnt2">
|
||||
<div class="_cnt-grid-wrap">
|
||||
<a href="https://canyoublockit.com/" class="btn">CanYouBlockIt</a>
|
||||
<a href="https://ipleak.net/" class="btn">IP Leak </a>
|
||||
<a href="https://blockads.fivefilters.org/" class="btn">Block Ads Test </a>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<div class="dialog-overlay" data-a11y-dialog-hide></div>
|
||||
<div class="dialog-content">
|
||||
<header>
|
||||
<h3 id="dlg_reports-title">History </h3>
|
||||
<h3 id="dlg_reports-title">Latest Test Results</h3>
|
||||
<button data-a11y-dialog-hide><svg class="w-6 h-6" id="close-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg></button>
|
||||
</header>
|
||||
<section style="width: 100%">
|
39
src/partials/adblock/settings.ejs
Normal file
39
src/partials/adblock/settings.ejs
Normal file
|
@ -0,0 +1,39 @@
|
|||
<div class="dialog" id="dlg_settings" data-a11y-dialog="dlg_settings" aria-labelledby="dlg_settings-title"
|
||||
aria-hidden="true">
|
||||
<div class="dialog-overlay" data-a11y-dialog-hide></div>
|
||||
<div class="dialog-content">
|
||||
<header>
|
||||
<h3 id="dlg_settings-title">Settings</h3>
|
||||
<button data-a11y-dialog-hide><svg class="w-6 h-6" id="close-icon" fill="none" stroke="currentColor"
|
||||
viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12">
|
||||
</path>
|
||||
</svg></button>
|
||||
</header>
|
||||
<section>
|
||||
<div class="field">
|
||||
<div>
|
||||
<input class="toggle" id="collapseAll" name="toggle" type="checkbox" checked="checked"><label
|
||||
for="collapseAll">
|
||||
Collapse all</label><br>
|
||||
<small>Click a category to toggle the url hosts list</small>
|
||||
</div>
|
||||
<div>
|
||||
<input class="toggle" id="hideCF" name="toggle" type="checkbox" checked="checked"><label
|
||||
for="hideCF">
|
||||
Cosmetic Filter</label><br>
|
||||
</div>
|
||||
<div>
|
||||
<input class="toggle" id="hideSL" name="toggle" type="checkbox" checked="checked"><label
|
||||
for="hideSL">
|
||||
Ad Scripts Loading</label><br>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<footer>
|
||||
<button data-a11y-dialog-hide>
|
||||
Close
|
||||
</button>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
|
@ -1,162 +0,0 @@
|
|||
<div class="dialog" id="dlg_changelog" data-a11y-dialog="dlg_changelog" aria-labelledby="dlg_changelog-title" aria-hidden="true">
|
||||
<div class="dialog-overlay" data-a11y-dialog-hide></div>
|
||||
<div class="dialog-content">
|
||||
<header>
|
||||
<h3 id="dlg_changelog-title">Thank you !</h3>
|
||||
<button data-a11y-dialog-hide><svg class="w-6 h-6" id="close-icon" fill="none" stroke="currentColor"
|
||||
viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12">
|
||||
</path>
|
||||
</svg></button>
|
||||
</header>
|
||||
<section>
|
||||
<div>
|
||||
<h2>More than 1 million tests so far</h2>
|
||||
<b class="_txt-red"><i>You will not see any ads and no trackers will be activated </i></b><br><br>
|
||||
<div class="row keep-width">
|
||||
<div>
|
||||
<div class="card">
|
||||
|
||||
<div class="_f-center">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="var(--green)" width="24" height="24"
|
||||
viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path d="M12 3c7.2 0 9 1.8 9 9s-1.8 9 -9 9s-9 -1.8 -9 -9s1.8 -9 9 -9z"></path>
|
||||
</svg>
|
||||
Blocked
|
||||
</div>
|
||||
If the connection to a host/script fails or a box is removed means the latter has been blocked by your
|
||||
ad-blocker
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="card">
|
||||
|
||||
<div class="_f-center">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="var(--red)" width="24" height="24"
|
||||
viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path d="M12 3c7.2 0 9 1.8 9 9s-1.8 9 -9 9s-9 -1.8 -9 -9s1.8 -9 9 -9z"></path>
|
||||
</svg>
|
||||
Not Blocked
|
||||
</div>
|
||||
Connection to a host did not fail or box is not removed, means that your ad-blocker did not block it or doesn't work
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p>After tests are completed , you get a liquid color ball with points.<br>
|
||||
Points are caculated based on your tests for each category and type <br>
|
||||
The color is calculated based on you points range <br>
|
||||
Here a preview of 3 scenarios :</p>
|
||||
|
||||
<div class="template_wrap row keep-width ">
|
||||
<div>
|
||||
<div class="lt_cwrap lt_template" style="--liquid-color:var(--red);--liquid-percentage:10%">
|
||||
<div class="lt_circle">
|
||||
<div class="lt_wave"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="lt_value_2 _bg-red">
|
||||
Cmon , use an adblock or smth
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="lt_cwrap lt_template" style="--liquid-color:var(--orange);--liquid-percentage:0%">
|
||||
<div class="lt_circle">
|
||||
<div class="lt_wave"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="lt_value_2 _bg-orange">
|
||||
Ok, but you can do better
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="lt_cwrap lt_template" style="--liquid-color:var(--green);--liquid-percentage:-30%">
|
||||
<div class="lt_circle">
|
||||
<div class="lt_wave"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="lt_value_2 _bg-green">
|
||||
Great, you're ready to surf
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
The tests consist of 3 types
|
||||
<ul>
|
||||
<li>Cosmetic Filter : Check if you are hiding/removing the empy boxes of ads, cookie policy etc.</li>
|
||||
<li>Script Loading : Check if you are blocking a possible ad script loading or trackers</li>
|
||||
<li>Host : Check if you block domains that provide trackers, analytics or ads</li>
|
||||
</ul>
|
||||
|
||||
<h3>The test is not working, I'm sure my adblock method is properly configured</h3>
|
||||
<p>
|
||||
In that case probably you have a setup that is not compatible for the checks of this tool.
|
||||
This doesn't mean you are not protected by your configured solution that can be ablock extension , vpn or dns
|
||||
It's because due to some JS limitation or lack of implementation feature the test is not able to figure out
|
||||
You will receive a percentage of how many connections you have blocked
|
||||
|
||||
</p>
|
||||
|
||||
|
||||
<h2>How I can have 100%</h2>
|
||||
<p>
|
||||
It's not needed . If you got a green result , you are pretty good. Don't be too competitive with that number
|
||||
|
||||
In case you want to have a full 100% ,
|
||||
consider using my small list that I created to cover most of the tests in this website (cosmetic filter,script loading excluded)
|
||||
<button class="btn-blue"
|
||||
onclick="copyToClip('https://raw.githubusercontent.com/d3ward/toolz/master/src/d3host.txt')">
|
||||
d3Host List (TXT)</button>
|
||||
<button class="btn-blue"
|
||||
onclick="copyToClip('https://raw.githubusercontent.com/d3ward/toolz/master/src/d3host.adblock')">
|
||||
d3Host List (ADBLOCK)</button>
|
||||
<br><br>
|
||||
|
||||
</p>
|
||||
<h2>Adblock solutions</h2>
|
||||
On any device where possible the first thing I install on the browser is <a href="https://ublockorigin.com/" class="btn">uBlock Origin </a>
|
||||
Second, I go with a DNS solution like <a href="https://nextdns.io/" class="btn">Next DNS</a> for blocking on any installed app
|
||||
<h3>Other suggested solutions for ad-blocking</h3>
|
||||
<div>
|
||||
<a href="https://adguard.com/" class="btn">Adguard Extension or DNS </a>
|
||||
<a href="https://blokada.org/" class="btn">Blokada </a>
|
||||
</div>
|
||||
<p>
|
||||
|
||||
<h2>Test tools for your adblock </h2>
|
||||
I created this website to quickly test my small list of most common hosts.
|
||||
I wanted to build something with a great design and user experience that is pretty straigthforward for any user.
|
||||
There are other great tools that I use and I want to recommend
|
||||
|
||||
<div class="cnt2">
|
||||
<a href="https://canyoublockit.com/" class="btn">CanYouBlockIt</a>
|
||||
<a href="https://ipleak.net/" class="btn">IP Leak </a>
|
||||
<a href="https://blockads.fivefilters.org/" class="btn">Block Ads Test </a>
|
||||
<a href="https://panopticlick.eff.org/" class="btn">Browser Fingerprint by EEF</a>
|
||||
<a href="http://raymondhill.net/ublock/tiles1.html" class="btn">Adblock Testing by
|
||||
raymondhill</a>
|
||||
<a href="http://raymondhill.net/ublock/popup.html" class="btn">Popup Blocker by
|
||||
raymondhill</a>
|
||||
</div>
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
<footer>
|
||||
<button data-a11y-dialog-hide>
|
||||
Cancel
|
||||
</button>
|
||||
<button class="btn-p" data-a11y-dialog-hide>
|
||||
Ok
|
||||
</button>
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
|
@ -8,8 +8,11 @@
|
|||
href="https://github.com/simple-icons/simple-icons/blob/develop/LICENSE.md"
|
||||
class="_txt">CC0-1.0</a>)</b>
|
||||
</div>
|
||||
<div>
|
||||
This website use <b><a class="_txt-white" href="https://umami.is/" target="_blank">Umami</a></b> for privacy-focused analytics
|
||||
</div>
|
||||
<div>
|
||||
Designed and built with by <b><a href="https://d3ward.github.io">Ursu Eduard (d3ward</a></b>) © 2022
|
||||
Designed and built with by <b><a href="https://d3ward.github.io">Ursu Eduard (d3ward</a>)</b> © 2022
|
||||
</div>
|
||||
<div>
|
||||
Licensed under <b><a
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
<meta name="twitter:title" content="<%= title %>">
|
||||
<meta name="twitter:description" content="<%= description %>">
|
||||
<meta name="twitter:image" content="<%= preview_thumbnail %>">
|
||||
|
||||
<!--
|
||||
<script async defer data-website-id="69b7679a-b1d7-4bed-8ace-761809fda99c" src="https://d3-umami.up.railway.app/umami.js"></script>
|
||||
-->
|
||||
</head>
|
|
@ -21,7 +21,7 @@ body
|
|||
gap: .5rem
|
||||
align-items: center
|
||||
justify-content: center
|
||||
|
||||
|
||||
@media (prefers-reduced-motion: no-preference)
|
||||
scroll-behavior: smooth
|
||||
body,html
|
||||
|
@ -54,3 +54,12 @@ section
|
|||
overflow-x: hidden
|
||||
display: flex
|
||||
flex-direction: column
|
||||
|
||||
.better_r
|
||||
-webkit-font-smoothing: antialiased!important
|
||||
-moz-font-smoothing: antialiased!important
|
||||
font-size: 16px
|
||||
letter-spacing: .03em
|
||||
line-height: 1.5em
|
||||
text-align: justify
|
||||
text-rendering: optimizelegibility!important
|
||||
|
|
|
@ -56,9 +56,9 @@ select
|
|||
select
|
||||
-webkit-appearance: none
|
||||
-moz-appearance: none
|
||||
background-image: linear-gradient(45deg, transparent 50%, var(--input-brd) 50%), linear-gradient(134deg, var(--input-brd) 50%, transparent 50%), linear-gradient(to right, #ccc, #ccc)
|
||||
background-position: calc(100% - 20px) calc(1em + 2px), calc(100% - 10px) calc(1em + 2px), calc(100% - 2.5em) 0.5em
|
||||
background-size: 10px 10px, 10px 10px, 2px 1.6rem
|
||||
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path stroke="none" d="M0 0h24v24H0z"/><path d="m6 9 6 6 6-6"/></svg>')
|
||||
background-position: right center
|
||||
background-size: 18px 18px, 18px 18px, 2px 1.6rem
|
||||
background-repeat: no-repeat
|
||||
|
||||
fieldset
|
||||
|
|
|
@ -8,6 +8,9 @@ html
|
|||
--primary-h: var(--orange-h)!important
|
||||
--primary-l: var(--orange-l)!important
|
||||
--primary-d: var(--orange-d)!important
|
||||
--slider-color: var(--primary-l)
|
||||
--slider-thumb-color: #fff
|
||||
|
||||
body
|
||||
background-color: var(--primary)
|
||||
background-image: linear-gradient(315deg, var(--primary)0%, var(--primary-l)74%)
|
||||
|
@ -21,16 +24,18 @@ body
|
|||
@import "./base/basic"
|
||||
@import "./extra/aos"
|
||||
@import "./elements/typography"
|
||||
@import "./elements/form"
|
||||
|
||||
@import "./layout/navbar"
|
||||
@import "./layout/header"
|
||||
@import "./layout/container"
|
||||
@import "./layout/grid"
|
||||
@import "./layout/footer"
|
||||
|
||||
@import "./elements/code"
|
||||
@import "./elements/button"
|
||||
@import "./components/card"
|
||||
@import "./components/modal"
|
||||
@import "./components/snackbar"
|
||||
@import "./components/gotop_link"
|
||||
@import "./extra/tooltip"
|
||||
@import "./extra/alert"
|
||||
|
@ -45,3 +50,37 @@ body
|
|||
@import "./utilities/padding"
|
||||
@import "./utilities/spacer"
|
||||
@import "./utilities/text"
|
||||
|
||||
#results>span
|
||||
display: flex
|
||||
align-items: center
|
||||
gap: .5rem
|
||||
|
||||
input[type=range]
|
||||
-webkit-appearance: none
|
||||
margin: 10px 0
|
||||
width: 100%
|
||||
|
||||
input[type=range]:focus
|
||||
outline: none
|
||||
|
||||
input[type=range]::-webkit-slider-runnable-track
|
||||
height: 6px
|
||||
background: #ddd
|
||||
border-radius: 3px
|
||||
|
||||
input[type=range]::-webkit-slider-thumb
|
||||
-webkit-appearance: none
|
||||
height: 20px
|
||||
width: 20px
|
||||
background: #fff
|
||||
border-radius: 50%
|
||||
border: 1px solid #ccc
|
||||
margin-top: -8px
|
||||
|
||||
input[type=range]::-webkit-slider-runnable-track
|
||||
background: var(--slider-color)
|
||||
|
||||
input[type=range]::-webkit-slider-thumb
|
||||
background: var(--slider-thumb-color)
|
||||
|
||||
|
|
|
@ -1,53 +1,60 @@
|
|||
/* ------------- General utilities ------------ */
|
||||
|
||||
._clearfix
|
||||
clear: both !important
|
||||
clear: both !important
|
||||
|
||||
._floatleft
|
||||
float: left !important
|
||||
float: left !important
|
||||
|
||||
._floatright
|
||||
float: right !important
|
||||
float: right !important
|
||||
|
||||
._shadowless
|
||||
box-shadow: none !important
|
||||
box-shadow: none !important
|
||||
|
||||
._shadow
|
||||
box-shadow: var(--shadow) !important
|
||||
box-shadow: var(--shadow) !important
|
||||
|
||||
._overflowauto
|
||||
overflow: auto !important
|
||||
overflow: auto !important
|
||||
|
||||
._overflowhidden
|
||||
overflow: hidden !important
|
||||
|
||||
overflow: hidden !important
|
||||
|
||||
._f-center
|
||||
display: flex
|
||||
flex-flow: wrap
|
||||
justify-content: center
|
||||
align-items: center
|
||||
display: flex
|
||||
flex-flow: wrap
|
||||
justify-content: center
|
||||
align-items: center
|
||||
|
||||
._f-column
|
||||
display: flex
|
||||
flex-direction: column
|
||||
display: flex
|
||||
flex-direction: column
|
||||
._f-wrap
|
||||
display: flex
|
||||
flex-wrap: wrap
|
||||
display: flex
|
||||
flex-wrap: wrap
|
||||
._icon
|
||||
display: block
|
||||
height: 1.4rem
|
||||
width: 1.4rem
|
||||
fill: currentColor
|
||||
margin: 0 auto
|
||||
display: block
|
||||
height: 1.4rem
|
||||
width: 1.4rem
|
||||
fill: currentColor
|
||||
margin: 0 auto
|
||||
|
||||
._ratio32
|
||||
//height: max(18vh, 12rem)!important
|
||||
apsect-ratio: 3/2
|
||||
apsect-ratio: 3/2
|
||||
|
||||
._fit-cover
|
||||
object-fit: cover !important
|
||||
object-fit: cover !important
|
||||
|
||||
._no-select
|
||||
-webkit-user-select: none
|
||||
-moz-user-select: none
|
||||
user-select: none
|
||||
-webkit-user-select: none
|
||||
-moz-user-select: none
|
||||
user-select: none
|
||||
|
||||
._h-100
|
||||
height: 100%
|
||||
|
||||
._cnt-grid-wrap
|
||||
display: flex
|
||||
flex-wrap: wrap
|
||||
gap: .5rem
|
||||
padding: .5rem
|
||||
|
|
|
@ -9,27 +9,26 @@
|
|||
|
||||
<body>
|
||||
<%- include('partials/support_me.ejs') %>
|
||||
<%- include('partials/adblock/changelog.ejs') %>
|
||||
<%- include('partials/header.ejs', {page:'units'}) %>
|
||||
<main>
|
||||
<div class="_ta-center">
|
||||
<svg fill="#22C55E" width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M104.625 67.125h-43.75v-43.75c0-5.156-4.219-9.375-9.375-9.375H23.375C18.219 14 14 18.219 14 23.375v81.25c0 5.156 4.219 9.375 9.375 9.375h81.25c5.156 0 9.375-4.219 9.375-9.375V76.5c0-5.156-4.219-9.375-9.375-9.375zm-3.568 37.5H26.158c-2.758-.237-2.783-.235-2.783-3.16V27.18c.136-3.817-.293-3.805 3.703-3.805h21.254c3.256.106 3.168.005 3.168 2.579v5.808c.02.556-.196.812-.728.812H35.875c-4.447.492-3.296 6.15 0 6.25l14.88.168c.45.003.7.148.745.661v11.048c.052.523-.249.781-.745.799h-14.88c-4.442.492-3.297 6.149 0 6.25h14.773c.53.033.838.186.852.701V69.5c-.013.573-.295.751-.852.751H35.875c-4.442.492-3.297 6.149 0 6.25h14.844c.562-.004.781.255.781.767v14.858c.492 4.442 6.149 3.297 6.25 0V77.231c-.012-.617.265-.713.79-.731h10.8c.716.016.91.308.91.927v14.698c.491 4.447 6.15 3.296 6.25 0V77.409c.004-.732.216-.909.891-.909h10.73c.778.046.879.522.879 1.175v14.45c.491 4.447 6.15 3.296 6.25 0V77.888c-.01-.987.267-1.388 1.453-1.388h5.376c1.816-.048 2.51.929 2.546 2.486v22.582c-.194 2.912-.327 3.057-3.568 3.057z"/></svg>
|
||||
|
||||
</div>
|
||||
<details class="card _p-0 _shadowless _brd-bg3 _bg2 _my-2">
|
||||
<summary class="_p-1"> Units </summary>
|
||||
|
||||
<div class="_p-1">
|
||||
<div class="_p-1 better_r">
|
||||
<p>
|
||||
<b>innerHeight</b> property returns the height of a window's content area <br>
|
||||
vh = 1% of the height of the viewport size. <br>
|
||||
|
||||
5 units can be used with CSS to fix mobile issues,if you use a unit that does not match the innerheight the
|
||||
user
|
||||
visiting your site may not see some absolute or fixed buttons because they are hidden by the navigation bar
|
||||
.
|
||||
One of the browsers most affected by the problem is Webkit based , which is why several units have been
|
||||
introduced over the years to compensate for the problem. <br>
|
||||
These tests can be used to check the value of each units . <br>
|
||||
<b>innerHeight</b> property returns the height of the content area of a window<br>
|
||||
vh = 1% of the height of the viewport size<br><br>
|
||||
5 Units can be used with CSS to fix mobile issues; if you use a unit that does not match the innerheight, the user visiting your site may not see some absolute or fixed buttons because they are hidden by the navigation bar.<br> One of the browsers most affected by this problem is Webkit-based, so several units have been introduced over the years to compensate for the problem.<br>
|
||||
These tests can be used to check the value of each unit.
|
||||
</p>
|
||||
</div>
|
||||
</details>
|
||||
|
||||
|
||||
<div class="row keep-width vtests">
|
||||
<div>
|
||||
<div class="test t-vh"><span>100vh</span></div>
|
||||
|
@ -47,7 +46,7 @@
|
|||
<div class="test t-dvh"><span>100dvh</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="barContainer" style="opacity:0;">
|
||||
<div id="barContainer" style="opacity:0;" class="_mt-2">
|
||||
<div class="bar b-vh" style="right: 5px; position: fixed; height: 100vh;">
|
||||
<div class="text">100vh position:fixed <span class="height"></span></div>
|
||||
</div>
|
||||
|
|
Loading…
Reference in a new issue