swh.web 0.16.2__py3-none-any.whl → 0.16.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- swh/web/add_forge_now/templates/add-forge-request-dashboard.html +5 -2
- swh/web/api/views/origin.py +2 -2
- swh/web/archive_coverage/views.py +4 -7
- swh/web/badges/__init__.py +1 -1
- swh/web/badges/assets/index.js +40 -14
- swh/web/browse/assets/browse/browse.css +5 -0
- swh/web/browse/assets/browse/sidetabs.js +3 -16
- swh/web/browse/templates/browse-iframe.html +10 -7
- swh/web/browse/templates/browse-origin-visits.html +2 -2
- swh/web/browse/templates/browse-revision.html +5 -3
- swh/web/browse/templates/includes/content-display.html +10 -5
- swh/web/browse/templates/includes/readme-display.html +3 -2
- swh/web/browse/templates/includes/show-metadata.html +3 -2
- swh/web/browse/templates/includes/sidetabs.html +9 -7
- swh/web/browse/templates/includes/top-navigation.html +2 -1
- swh/web/browse/tests/views/test_origin.py +3 -1
- swh/web/deposit/templates/deposit-admin.html +6 -1
- swh/web/inbound_email/handle_message.py +1 -1
- swh/web/inbound_email/tests/test_utils.py +2 -2
- swh/web/save_code_now/assets/origin-save-admin.js +5 -2
- swh/web/save_code_now/assets/origin-save.js +9 -4
- swh/web/static/css/{archive_coverage.70eba3d32ed75472d638.css → archive_coverage.df54ae8fe40453ecd972.css} +2 -2
- swh/web/static/css/archive_coverage.df54ae8fe40453ecd972.css.map +1 -0
- swh/web/static/css/browse.633076034514e6a3977d.css +2 -0
- swh/web/static/css/browse.633076034514e6a3977d.css.map +1 -0
- swh/web/static/css/guided_tour.d496a0c252e1bb193496.css +2 -0
- swh/web/static/css/{guided_tour.62c03630e944b8b8d9ad.css.map → guided_tour.d496a0c252e1bb193496.css.map} +1 -1
- swh/web/static/css/{highlightjs.0c1b181eb006699a4c3e.css → highlightjs.37238c93749cb449800d.css} +2 -2
- swh/web/static/css/highlightjs.37238c93749cb449800d.css.map +1 -0
- swh/web/static/css/origin_visits.9a796c4df6606bd9905f.css +2 -0
- swh/web/static/css/origin_visits.9a796c4df6606bd9905f.css.map +1 -0
- swh/web/static/css/vendors.a4844da6ce54cbc04960.css +24 -0
- swh/web/static/css/vendors.a4844da6ce54cbc04960.css.map +1 -0
- swh/web/static/css/{webapp.4655323082740f1a4862.css → webapp.e995faa24f8c84db0d06.css} +2 -2
- swh/web/static/css/webapp.e995faa24f8c84db0d06.css.map +1 -0
- swh/web/static/js/add_forge_now.e85d09463e38c1e19632.js +3 -0
- swh/web/static/js/add_forge_now.e85d09463e38c1e19632.js.map +1 -0
- swh/web/static/js/auth.06c697ab58b81d08ebce.js +3 -0
- swh/web/static/js/auth.06c697ab58b81d08ebce.js.map +1 -0
- swh/web/static/js/badges.50941e27bf5e4453b0e0.js +3 -0
- swh/web/static/js/badges.50941e27bf5e4453b0e0.js.LICENSE.txt +6 -0
- swh/web/static/js/badges.50941e27bf5e4453b0e0.js.map +1 -0
- swh/web/static/js/browse.3f22819b69002c8b6407.js +3 -0
- swh/web/static/js/browse.3f22819b69002c8b6407.js.map +1 -0
- swh/web/static/js/deposit.d47e18177b16ccdbdb84.js.map +1 -1
- swh/web/static/js/{highlightjs.dc9b8354c69d942fad33.js → highlightjs.516e784a1e62011c7605.js} +3 -3
- swh/web/static/js/highlightjs.516e784a1e62011c7605.js.map +1 -0
- swh/web/static/js/mailmap.de04f685e56eff5b627f.js +3 -0
- swh/web/static/js/mailmap.de04f685e56eff5b627f.js.map +1 -0
- swh/web/static/js/mathjax.98ef576f318f1a0b0c4a.js.map +1 -1
- swh/web/static/js/pdf.worker.min.js +1 -1
- swh/web/static/js/pdfjs.018d9890c044b3612ece.js +3 -0
- swh/web/static/js/pdfjs.018d9890c044b3612ece.js.map +1 -0
- swh/web/static/js/{revision.ac9293e1b984b4d4d909.js → revision.122a31614a5f9abffc3c.js} +3 -3
- swh/web/static/js/revision.122a31614a5f9abffc3c.js.map +1 -0
- swh/web/static/js/save_code_now.d4d8fc47420a4badb683.js +3 -0
- swh/web/static/js/save_code_now.d4d8fc47420a4badb683.js.map +1 -0
- swh/web/static/js/vault.d2ec3dd1d84a8d038a6c.js +3 -0
- swh/web/static/js/vault.d2ec3dd1d84a8d038a6c.js.map +1 -0
- swh/web/static/js/vendors.f62cb86cf3b92ae280ee.js +3 -0
- swh/web/static/js/{vendors.2eeadf2e0831a7a82b6d.js.LICENSE.txt → vendors.f62cb86cf3b92ae280ee.js.LICENSE.txt} +5 -1
- swh/web/static/js/vendors.f62cb86cf3b92ae280ee.js.map +1 -0
- swh/web/static/js/webapp.e93873983e400db67bf8.js +3 -0
- swh/web/static/js/{webapp.26efc059a8f5fe204240.js.LICENSE.txt → webapp.e93873983e400db67bf8.js.LICENSE.txt} +1 -1
- swh/web/static/js/webapp.e93873983e400db67bf8.js.map +1 -0
- swh/web/static/jssources/@myriaddreamin/highlighter-typst/dist/esm/contrib/hljs/typst-lite.bundle.js +180 -111
- swh/web/static/jssources/assets/src/utils/functions.js +5 -5
- swh/web/static/jssources/core-js/LICENSE.txt +1 -1
- swh/web/static/jssources/core-js/internals/shared-store.js +3 -3
- swh/web/static/jssources/core-js/modules/es.object.group-by.js +2 -1
- swh/web/static/jssources/datatables.net/js/dataTables.mjs +108 -44
- swh/web/static/jssources/datatables.net-fixedheader/js/dataTables.fixedHeader.mjs +10 -4
- swh/web/static/jssources/datatables.net-fixedheader/node_modules/datatables.net/js/dataTables.mjs +14027 -0
- swh/web/static/jssources/datatables.net-fixedheader-bs5/node_modules/datatables.net/js/dataTables.mjs +14027 -0
- swh/web/static/jssources/datatables.net-fixedheader-bs5/node_modules/datatables.net-bs5/js/dataTables.bootstrap5.mjs +81 -0
- swh/web/static/jssources/dompurify/dist/purify.es.mjs +35 -12
- swh/web/static/jssources/highlightjs-line-numbers.js/src/highlightjs-line-numbers.js +1 -1
- swh/web/static/jssources/highlightjs-macaulay2/dist/macaulay2.min.js +3 -3
- swh/web/static/jssources/jslicenses.json +1 -1
- swh/web/static/jssources/pdfjs-dist/build/pdf.worker.mjs +885 -596
- swh/web/static/jssources/pdfjs-dist/legacy/build/pdf.mjs +4982 -4566
- swh/web/static/jssources/swh/web/badges/assets/index.js +40 -14
- swh/web/static/jssources/swh/web/browse/assets/browse/sidetabs.js +3 -16
- swh/web/static/jssources/swh/web/save_code_now/assets/origin-save-admin.js +5 -2
- swh/web/static/jssources/swh/web/save_code_now/assets/origin-save.js +9 -4
- swh/web/static/jssources/swh/web/vault/assets/vault-ui.js +6 -4
- swh/web/static/jssources/swh/web/webapp/assets/webapp/webapp-utils.js +18 -1
- swh/web/static/security.txt +3 -0
- swh/web/static/webpack-stats.json +240 -235
- swh/web/tests/views.py +9 -8
- swh/web/utils/archive.py +1 -1
- swh/web/utils/swh_templatetags.py +8 -13
- swh/web/vault/assets/vault-ui.js +6 -4
- swh/web/webapp/assets/webapp/webapp-utils.js +18 -1
- swh/web/webapp/assets/webapp/webapp.css +8 -0
- swh/web/webapp/templates/layout.html +13 -10
- swh/web/webapp/tests/test_views.py +16 -1
- {swh_web-0.16.2.dist-info → swh_web-0.16.4.dist-info}/METADATA +2 -3
- {swh_web-0.16.2.dist-info → swh_web-0.16.4.dist-info}/RECORD +112 -107
- swh/web/static/css/archive_coverage.70eba3d32ed75472d638.css.map +0 -1
- swh/web/static/css/browse.0a250d3b07ce628588a5.css +0 -2
- swh/web/static/css/browse.0a250d3b07ce628588a5.css.map +0 -1
- swh/web/static/css/guided_tour.62c03630e944b8b8d9ad.css +0 -2
- swh/web/static/css/highlightjs.0c1b181eb006699a4c3e.css.map +0 -1
- swh/web/static/css/origin_visits.88099d68a63f86af2f8e.css +0 -2
- swh/web/static/css/origin_visits.88099d68a63f86af2f8e.css.map +0 -1
- swh/web/static/css/vendors.1cfc8080eed63af482cf.css +0 -24
- swh/web/static/css/vendors.1cfc8080eed63af482cf.css.map +0 -1
- swh/web/static/css/webapp.4655323082740f1a4862.css.map +0 -1
- swh/web/static/js/add_forge_now.e25d1ad2ab6c45e60b67.js +0 -3
- swh/web/static/js/add_forge_now.e25d1ad2ab6c45e60b67.js.map +0 -1
- swh/web/static/js/auth.bd2f475f49caa9f84e99.js +0 -3
- swh/web/static/js/auth.bd2f475f49caa9f84e99.js.map +0 -1
- swh/web/static/js/badges.f02607179ad0264e7522.js +0 -2
- swh/web/static/js/badges.f02607179ad0264e7522.js.map +0 -1
- swh/web/static/js/browse.fc5d5fafca71e03d2add.js +0 -3
- swh/web/static/js/browse.fc5d5fafca71e03d2add.js.map +0 -1
- swh/web/static/js/highlightjs.dc9b8354c69d942fad33.js.map +0 -1
- swh/web/static/js/mailmap.631c53127ba5511ebda7.js +0 -3
- swh/web/static/js/mailmap.631c53127ba5511ebda7.js.map +0 -1
- swh/web/static/js/pdfjs.40675676ebcbdde8baab.js +0 -3
- swh/web/static/js/pdfjs.40675676ebcbdde8baab.js.map +0 -1
- swh/web/static/js/revision.ac9293e1b984b4d4d909.js.map +0 -1
- swh/web/static/js/save_code_now.369ff7f28aaf74e7728e.js +0 -3
- swh/web/static/js/save_code_now.369ff7f28aaf74e7728e.js.map +0 -1
- swh/web/static/js/vault.1229427aed95c78d4ee2.js +0 -3
- swh/web/static/js/vault.1229427aed95c78d4ee2.js.map +0 -1
- swh/web/static/js/vendors.2eeadf2e0831a7a82b6d.js +0 -3
- swh/web/static/js/vendors.2eeadf2e0831a7a82b6d.js.map +0 -1
- swh/web/static/js/webapp.26efc059a8f5fe204240.js +0 -3
- swh/web/static/js/webapp.26efc059a8f5fe204240.js.map +0 -1
- /swh/web/static/js/{add_forge_now.e25d1ad2ab6c45e60b67.js.LICENSE.txt → add_forge_now.e85d09463e38c1e19632.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{auth.bd2f475f49caa9f84e99.js.LICENSE.txt → auth.06c697ab58b81d08ebce.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{browse.fc5d5fafca71e03d2add.js.LICENSE.txt → browse.3f22819b69002c8b6407.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{highlightjs.dc9b8354c69d942fad33.js.LICENSE.txt → highlightjs.516e784a1e62011c7605.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{mailmap.631c53127ba5511ebda7.js.LICENSE.txt → mailmap.de04f685e56eff5b627f.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{pdfjs.40675676ebcbdde8baab.js.LICENSE.txt → pdfjs.018d9890c044b3612ece.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{revision.ac9293e1b984b4d4d909.js.LICENSE.txt → revision.122a31614a5f9abffc3c.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{save_code_now.369ff7f28aaf74e7728e.js.LICENSE.txt → save_code_now.d4d8fc47420a4badb683.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{vault.1229427aed95c78d4ee2.js.LICENSE.txt → vault.d2ec3dd1d84a8d038a6c.js.LICENSE.txt} +0 -0
- {swh_web-0.16.2.dist-info → swh_web-0.16.4.dist-info}/WHEEL +0 -0
- {swh_web-0.16.2.dist-info → swh_web-0.16.4.dist-info}/licenses/AUTHORS +0 -0
- {swh_web-0.16.2.dist-info → swh_web-0.16.4.dist-info}/licenses/LICENSE +0 -0
- {swh_web-0.16.2.dist-info → swh_web-0.16.4.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{% extends "layout.html" %}
|
|
2
2
|
|
|
3
3
|
{% comment %}
|
|
4
|
-
Copyright (C) 2022-
|
|
4
|
+
Copyright (C) 2022-2025 The Software Heritage developers
|
|
5
5
|
See the AUTHORS file at the top-level directory of this distribution
|
|
6
6
|
License: GNU Affero General Public License version 3, or any later version
|
|
7
7
|
See top-level LICENSE file for more information
|
|
@@ -119,8 +119,11 @@ See top-level LICENSE file for more information
|
|
|
119
119
|
</div>
|
|
120
120
|
</div>
|
|
121
121
|
</div>
|
|
122
|
+
{{ next_statuses_for|swh_json_script:"next_statuses_for" }}
|
|
122
123
|
<script>
|
|
123
124
|
swh.webapp.initPage('add-forge-now-moderation');
|
|
124
|
-
swh.add_forge_now.onRequestDashboardLoad(
|
|
125
|
+
swh.add_forge_now.onRequestDashboardLoad(
|
|
126
|
+
"{{ request_id }}", swh.webapp.parseJsonScript('next_statuses_for')
|
|
127
|
+
);
|
|
125
128
|
</script>
|
|
126
129
|
{% endblock content %}
|
swh/web/api/views/origin.py
CHANGED
|
@@ -578,7 +578,7 @@ def api_origin_intrinsic_metadata_legacy(request: Request, origin_url: str):
|
|
|
578
578
|
"""
|
|
579
579
|
.. http:get:: /api/1/origin/(origin_url)/intrinsic-metadata
|
|
580
580
|
|
|
581
|
-
This route is deprecated; use http:get
|
|
581
|
+
This route is deprecated; use :http:get:`/api/1/intrinsic-metadata/origin/` instead
|
|
582
582
|
|
|
583
583
|
Get intrinsic metadata of a software origin (as a JSON-LD/CodeMeta dictionary).
|
|
584
584
|
"""
|
|
@@ -590,7 +590,7 @@ def api_origin_intrinsic_metadata_legacy(request: Request, origin_url: str):
|
|
|
590
590
|
enrich_fn=enrich_origin,
|
|
591
591
|
request=request,
|
|
592
592
|
)
|
|
593
|
-
return response[0]
|
|
593
|
+
return response[0] if response else None
|
|
594
594
|
|
|
595
595
|
|
|
596
596
|
class OriginUrlQuerySerializer(serializers.Serializer):
|
|
@@ -20,10 +20,6 @@ from swh.web.config import scheduler
|
|
|
20
20
|
from swh.web.utils import django_cache, reverse
|
|
21
21
|
from swh.web.utils.archive import count_origins
|
|
22
22
|
|
|
23
|
-
_swh_arch_overview_doc = (
|
|
24
|
-
"https://docs.softwareheritage.org/devel/architecture/overview.html"
|
|
25
|
-
)
|
|
26
|
-
|
|
27
23
|
# Current coverage list of the archive in a high level overview fashion,
|
|
28
24
|
# categorized as follow:
|
|
29
25
|
# - listed origins: origins discovered using a swh lister
|
|
@@ -35,7 +31,7 @@ _swh_arch_overview_doc = (
|
|
|
35
31
|
listed_origins: Dict[str, Any] = {
|
|
36
32
|
"info": (
|
|
37
33
|
"These software origins get continuously discovered and archived using "
|
|
38
|
-
|
|
34
|
+
'the <a href="https://docs.softwareheritage.org/user/listers.html" target="_blank" '
|
|
39
35
|
'rel="noopener noreferrer">listers</a> implemented by Software Heritage.'
|
|
40
36
|
),
|
|
41
37
|
"origins": [
|
|
@@ -411,8 +407,9 @@ legacy_origins: Dict[str, Any] = {
|
|
|
411
407
|
deposited_origins: Dict[str, Any] = {
|
|
412
408
|
"info": (
|
|
413
409
|
"These origins are directly pushed into the archive by trusted partners "
|
|
414
|
-
|
|
415
|
-
'
|
|
410
|
+
"using the "
|
|
411
|
+
'<a href="https://docs.softwareheritage.org/devel/architecture/overview.html#deposit" '
|
|
412
|
+
'target="_blank" rel="noopener noreferrer">deposit</a> service of Software Heritage.'
|
|
416
413
|
),
|
|
417
414
|
"origins": [
|
|
418
415
|
{
|
swh/web/badges/__init__.py
CHANGED
swh/web/badges/assets/index.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (C) 2019-
|
|
2
|
+
* Copyright (C) 2019-2025 The Software Heritage developers
|
|
3
3
|
* See the AUTHORS file at the top-level directory of this distribution
|
|
4
4
|
* License: GNU Affero General Public License version 3, or any later version
|
|
5
5
|
* See top-level LICENSE file for more information
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
+
import ClipboardJS from 'clipboard';
|
|
9
|
+
|
|
8
10
|
import './badges.css';
|
|
9
11
|
|
|
10
12
|
export function showBadgeInfoModal(objectType, objectSWHID) {
|
|
@@ -35,22 +37,46 @@ export function showBadgeInfoModal(objectType, objectSWHID) {
|
|
|
35
37
|
<a href="${absoluteBadgeLinkUrl}">
|
|
36
38
|
<img class="swh-badge" src="${absoluteBadgeImageUrl}" alt="Archived | ${objectSWHID}"/>
|
|
37
39
|
</a>
|
|
38
|
-
<
|
|
39
|
-
<
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
<ul class="nav nav-tabs">
|
|
41
|
+
<li class="nav-item">
|
|
42
|
+
<a class="nav-link active" data-bs-toggle="tab" href="#swh-badge-html">HTML</a>
|
|
43
|
+
</li>
|
|
44
|
+
<li class="nav-item">
|
|
45
|
+
<a class="nav-link" data-bs-toggle="tab" href="#swh-badge-markdown">Markdown</a>
|
|
46
|
+
</li>
|
|
47
|
+
<li class="nav-item">
|
|
48
|
+
<a class="nav-link" data-bs-toggle="tab" href="#swh-badge-rst">reStructuredText</a>
|
|
49
|
+
</li>
|
|
50
|
+
</ul>
|
|
51
|
+
<div class="tab-content swh-badges-integrations">
|
|
52
|
+
<div class="tab-pane active" id="swh-badge-html">
|
|
53
|
+
<pre><code class="swh-badge-html html"><a href="${absoluteBadgeLinkUrl}">
|
|
54
|
+
<img src="${absoluteBadgeImageUrl}" alt="Archived | ${objectCoreSWHID}"/>
|
|
42
55
|
</a></code></pre>
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
56
|
+
</div>
|
|
57
|
+
<div class="tab-pane" id="swh-badge-markdown">
|
|
58
|
+
<pre><code class="swh-badge-md markdown">[](${absoluteBadgeLinkUrl})</code></pre>
|
|
59
|
+
</div>
|
|
60
|
+
<div class="tab-pane" id="swh-badge-rst">
|
|
61
|
+
<pre class="swh-badge-rst">.. image:: ${absoluteBadgeImageUrl}
|
|
62
|
+
:target: ${absoluteBadgeLinkUrl}</pre>
|
|
63
|
+
</div>
|
|
64
|
+
<button type="button"
|
|
65
|
+
class="btn btn-secondary btn-sm btn-swh-copy-badge-code float-end"
|
|
66
|
+
title="Copy badge code to clipboard">
|
|
67
|
+
<i class="mdi mdi-content-copy mdi-fw" aria-hidden="true"></i>Copy badge code
|
|
68
|
+
</button>
|
|
52
69
|
</div>`;
|
|
53
70
|
swh.webapp.showModalHtml('Software Heritage badge integration', html);
|
|
54
71
|
swh.webapp.highlightCode(false, '.swh-badge-html');
|
|
55
72
|
swh.webapp.highlightCode(false, '.swh-badge-md');
|
|
73
|
+
new ClipboardJS('.btn-swh-copy-badge-code', {
|
|
74
|
+
text: () => {
|
|
75
|
+
return $('.swh-badges-integrations .tab-pane.active pre').text();
|
|
76
|
+
},
|
|
77
|
+
container: document.getElementById('swh-web-modal-html')
|
|
78
|
+
}).on('success', function(e) {
|
|
79
|
+
swh.webapp.toggleButtonText(e.trigger, 'Copied!');
|
|
80
|
+
e.clearSelection();
|
|
81
|
+
});
|
|
56
82
|
}
|
|
@@ -183,26 +183,13 @@ export async function generateCitationForObjectType(event) {
|
|
|
183
183
|
export async function initSideTabs() {
|
|
184
184
|
|
|
185
185
|
$(document).ready(() => {
|
|
186
|
-
const toggleButtonText = (button, text) => {
|
|
187
|
-
const currentLabel = button.innerHTML;
|
|
188
|
-
|
|
189
|
-
if (currentLabel === text) {
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
button.innerHTML = text;
|
|
194
|
-
setTimeout(function() {
|
|
195
|
-
button.innerHTML = currentLabel;
|
|
196
|
-
}, 1000);
|
|
197
|
-
};
|
|
198
|
-
|
|
199
186
|
new ClipboardJS('.btn-swhid-copy', {
|
|
200
187
|
text: trigger => {
|
|
201
188
|
const swhId = $(trigger).closest('.swhid-ui').find('.swhid').text();
|
|
202
189
|
return swhId.replace(/;\n/g, ';');
|
|
203
190
|
}
|
|
204
191
|
}).on('success', function(e) {
|
|
205
|
-
toggleButtonText(e.trigger, 'Copied!');
|
|
192
|
+
swh.webapp.toggleButtonText(e.trigger, 'Copied!');
|
|
206
193
|
e.clearSelection();
|
|
207
194
|
});
|
|
208
195
|
|
|
@@ -212,7 +199,7 @@ export async function initSideTabs() {
|
|
|
212
199
|
return window.location.origin + swhIdUrl;
|
|
213
200
|
}
|
|
214
201
|
}).on('success', function(e) {
|
|
215
|
-
toggleButtonText(e.trigger, 'Copied!');
|
|
202
|
+
swh.webapp.toggleButtonText(e.trigger, 'Copied!');
|
|
216
203
|
e.clearSelection();
|
|
217
204
|
});
|
|
218
205
|
|
|
@@ -310,7 +297,7 @@ export async function initSideTabs() {
|
|
|
310
297
|
return citation;
|
|
311
298
|
}
|
|
312
299
|
}).on('success', function(e) {
|
|
313
|
-
toggleButtonText(e.trigger, 'Copied!');
|
|
300
|
+
swh.webapp.toggleButtonText(e.trigger, 'Copied!');
|
|
314
301
|
});
|
|
315
302
|
|
|
316
303
|
const tabSlideOptionsCitations = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{% comment %}
|
|
2
|
-
Copyright (C) 2021-
|
|
2
|
+
Copyright (C) 2021-2025 The Software Heritage developers
|
|
3
3
|
See the AUTHORS file at the top-level directory of this distribution
|
|
4
4
|
License: GNU Affero General Public License version 3, or any later version
|
|
5
5
|
See top-level LICENSE file for more information
|
|
@@ -21,11 +21,12 @@ See top-level LICENSE file for more information
|
|
|
21
21
|
{% render_bundle 'vendors' %}
|
|
22
22
|
{% render_bundle 'webapp' %}
|
|
23
23
|
{% render_bundle 'browse' %}
|
|
24
|
+
{% render_bundle 'content' %}
|
|
24
25
|
<script>
|
|
25
26
|
/*
|
|
26
27
|
@licstart The following is the entire license notice for the JavaScript code in this page.
|
|
27
28
|
|
|
28
|
-
Copyright (C) 2021-
|
|
29
|
+
Copyright (C) 2021-2025 The Software Heritage developers
|
|
29
30
|
|
|
30
31
|
This program is free software: you can redistribute it and/or modify
|
|
31
32
|
it under the terms of the GNU Affero General Public License as
|
|
@@ -175,13 +176,15 @@ along with this program. If not, see <https://www.gnu.org/licenses />.
|
|
|
175
176
|
{% if "swh.web.jslicenses" in SWH_DJANGO_APPS %}
|
|
176
177
|
<a href="{% url 'jslicenses' %}" rel="jslicense" style="display: none;">JavaScript license information</a>
|
|
177
178
|
{% endif %}
|
|
178
|
-
{% if object_type == "cnt" %}
|
|
179
|
+
{% if object_type == "cnt" and lines %}
|
|
180
|
+
{{ lines|swh_json_script:"lines" }}
|
|
179
181
|
<script>
|
|
182
|
+
const lines = swh.webapp.parseJsonScript('lines');
|
|
180
183
|
setTimeout(function() {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
swh.webapp.highlightLines(
|
|
184
|
-
|
|
184
|
+
swh.webapp.scrollToLine(swh.webapp.highlightLine(lines[0]), 100);
|
|
185
|
+
if (lines[1]) {
|
|
186
|
+
swh.webapp.highlightLines(lines[0], lines[1]);
|
|
187
|
+
}
|
|
185
188
|
}, 500);
|
|
186
189
|
</script>
|
|
187
190
|
{% endif %}
|
|
@@ -89,9 +89,9 @@ See top-level LICENSE file for more information
|
|
|
89
89
|
<h5>List</h5>
|
|
90
90
|
<div id="swh-visits-list"></div>
|
|
91
91
|
</div>
|
|
92
|
+
{{ origin_visits|swh_json_script:"origin_visits" }}
|
|
92
93
|
<script>
|
|
93
94
|
// all origin visits
|
|
94
|
-
|
|
95
|
-
swh.origin_visits.initVisitsReporting(visits);
|
|
95
|
+
swh.origin_visits.initVisitsReporting(swh.webapp.parseJsonScript('origin_visits'));
|
|
96
96
|
</script>
|
|
97
97
|
{% endblock swh-browse-content %}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{% extends "./browse.html" %}
|
|
2
2
|
|
|
3
3
|
{% comment %}
|
|
4
|
-
Copyright (C) 2017-
|
|
4
|
+
Copyright (C) 2017-2025 The Software Heritage developers
|
|
5
5
|
See the AUTHORS file at the top-level directory of this distribution
|
|
6
6
|
License: GNU Affero General Public License version 3, or any later version
|
|
7
7
|
See top-level LICENSE file for more information
|
|
@@ -119,9 +119,11 @@ See top-level LICENSE file for more information
|
|
|
119
119
|
</div>
|
|
120
120
|
</div>
|
|
121
121
|
</div>
|
|
122
|
+
{{ message_body|swh_json_script:"revMsgBody" }}
|
|
123
|
+
{{ diff_revision_url|swh_json_script:"diffRevUrl" }}
|
|
122
124
|
<script>
|
|
123
|
-
var revMsgBody =
|
|
124
|
-
var diffRevUrl =
|
|
125
|
+
var revMsgBody = swh.webapp.parseJsonScript('revMsgBody');
|
|
126
|
+
var diffRevUrl = swh.webapp.parseJsonScript('diffRevUrl');
|
|
125
127
|
swh.revision.initRevisionDiff(revMsgBody, diffRevUrl);
|
|
126
128
|
</script>
|
|
127
129
|
{% endblock swh-browse-content %}
|
|
@@ -82,13 +82,18 @@ See top-level LICENSE file for more information
|
|
|
82
82
|
</div>
|
|
83
83
|
{% if not iframe_mode %}</div>{% endif %}
|
|
84
84
|
{% if content %}
|
|
85
|
+
{{ filename|swh_json_script:"filename" }}
|
|
86
|
+
{{ mimetype|swh_json_script:"mimetype" }}
|
|
87
|
+
{{ top_right_link.url|swh_json_script:"content_url" }}
|
|
88
|
+
{{ mathjax_js_library|swh_json_script:"mathjax_js_library" }}
|
|
89
|
+
{{ iframe_mode|swh_json_script:"iframe_mode" }}
|
|
85
90
|
<script>
|
|
86
91
|
swh.content.renderContent(
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
!
|
|
92
|
+
swh.webapp.parseJsonScript('filename'),
|
|
93
|
+
swh.webapp.parseJsonScript('mimetype'),
|
|
94
|
+
swh.webapp.parseJsonScript('content_url'),
|
|
95
|
+
swh.webapp.parseJsonScript('mathjax_js_library'),
|
|
96
|
+
!swh.webapp.parseJsonScript('iframe_mode')
|
|
92
97
|
);
|
|
93
98
|
</script>
|
|
94
99
|
{% endif %}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{% comment %}
|
|
2
|
-
Copyright (C) 2017-
|
|
2
|
+
Copyright (C) 2017-2025 The Software Heritage developers
|
|
3
3
|
See the AUTHORS file at the top-level directory of this distribution
|
|
4
4
|
License: GNU Affero General Public License version 3, or any later version
|
|
5
5
|
See top-level LICENSE file for more information
|
|
@@ -21,8 +21,9 @@ See top-level LICENSE file for more information
|
|
|
21
21
|
</div>
|
|
22
22
|
</div>
|
|
23
23
|
{% if readme_html %}
|
|
24
|
+
{{ readme_html|swh_json_script:"readme_html" }}
|
|
24
25
|
<script>
|
|
25
|
-
$('.swh-readme').html(swh.webapp.filterXSS(
|
|
26
|
+
$('.swh-readme').html(swh.webapp.filterXSS(swh.webapp.parseJsonScript('readme_html')));
|
|
26
27
|
swh.webapp.addReadmeHeadingAnchors();
|
|
27
28
|
</script>
|
|
28
29
|
{% elif readme_url is None %}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{% comment %}
|
|
2
|
-
Copyright (C) 2017-
|
|
2
|
+
Copyright (C) 2017-2025 The Software Heritage developers
|
|
3
3
|
See the AUTHORS file at the top-level directory of this distribution
|
|
4
4
|
License: GNU Affero General Public License version 3, or any later version
|
|
5
5
|
See top-level LICENSE file for more information
|
|
@@ -57,4 +57,5 @@ See top-level LICENSE file for more information
|
|
|
57
57
|
</div>
|
|
58
58
|
{% endif %}
|
|
59
59
|
{% endif %}
|
|
60
|
-
|
|
60
|
+
{{ swh_object_metadata|swh_json_script:"swh_object_metadata" }}
|
|
61
|
+
<script>swh.webapp.setBrowsedSwhObjectMetadata(swh.webapp.parseJsonScript('swh_object_metadata'))</script>
|
|
@@ -92,12 +92,13 @@ See top-level LICENSE file for more information
|
|
|
92
92
|
title="Click to display badge integration info" />
|
|
93
93
|
{% endif %}
|
|
94
94
|
{% if swhid_info.object_type.name.lower == "content" or swhid_info.object_type.name.lower == "directory" %}
|
|
95
|
-
<
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
95
|
+
<button type="button"
|
|
96
|
+
class="btn btn-secondary btn-sm ms-auto float-end mb-2"
|
|
97
|
+
title="Display info about how to embed source code archived by Software Heritage in external websites using an iframe"
|
|
98
|
+
onclick="swh.browse.showIframeInfoModal('{{ swhid_info.object_type.name.lower }}', $(this).closest('.swhid-ui').find('.swhid').text())">
|
|
99
|
+
<i class="mdi mdi-application-brackets-outline mdi-fw"
|
|
100
|
+
aria-hidden="true"></i>Iframe embedding
|
|
101
|
+
</button>
|
|
101
102
|
{% endif %}
|
|
102
103
|
</div>
|
|
103
104
|
{% endif %}
|
|
@@ -245,8 +246,9 @@ See top-level LICENSE file for more information
|
|
|
245
246
|
</div>
|
|
246
247
|
</div>
|
|
247
248
|
{% endif %}
|
|
249
|
+
{{ swhids_info|swh_json_script:"swhids_info" }}
|
|
248
250
|
<script>
|
|
249
|
-
swh.webapp.setSwhIdsContext(
|
|
251
|
+
swh.webapp.setSwhIdsContext(swh.webapp.parseJsonScript('swhids_info'));
|
|
250
252
|
swh.browse.initSideTabs();
|
|
251
253
|
</script>
|
|
252
254
|
{% endif %}
|
|
@@ -148,6 +148,7 @@ See top-level LICENSE file for more information
|
|
|
148
148
|
</div>
|
|
149
149
|
</div>
|
|
150
150
|
{% include "./sidetabs.html" %}
|
|
151
|
+
{{ iframe_mode|swh_json_script:"iframe_mode" }}
|
|
151
152
|
<script>
|
|
152
153
|
var snapshotContext = false;
|
|
153
154
|
var branch = false;
|
|
@@ -161,7 +162,7 @@ See top-level LICENSE file for more information
|
|
|
161
162
|
$(".chosen-search-input").attr("aria-label", "Search language to highlight");
|
|
162
163
|
});
|
|
163
164
|
$(".chosen-select").chosen().change(function(event, params) {
|
|
164
|
-
swh.content.updateLanguage(params.selected, !
|
|
165
|
+
swh.content.updateLanguage(params.selected, !swh.webapp.parseJsonScript('iframe_mode'));
|
|
165
166
|
});
|
|
166
167
|
{% endif %}
|
|
167
168
|
swh.browse.initSnapshotNavigation(snapshotContext, branch !== "None");
|
|
@@ -51,7 +51,9 @@ def test_origin_visits_browse(client, archive_data, origin_with_multiple_visits)
|
|
|
51
51
|
browse_dir_url = reverse(
|
|
52
52
|
"browse-origin-directory",
|
|
53
53
|
query_params={"origin_url": origin_url, "timestamp": vdate},
|
|
54
|
-
)
|
|
54
|
+
).replace(
|
|
55
|
+
"&", "\\u0026"
|
|
56
|
+
) # & character was escaped by the swh_json_script template filter
|
|
55
57
|
assert_contains(resp, browse_dir_url)
|
|
56
58
|
|
|
57
59
|
_check_origin_link(resp, origin_url)
|
|
@@ -59,8 +59,13 @@ See top-level LICENSE file for more information
|
|
|
59
59
|
</thead>
|
|
60
60
|
</table>
|
|
61
61
|
<p id="swh-admin-deposit-list-error"></p>
|
|
62
|
+
{{ request.user.username|swh_json_script:"username" }}
|
|
63
|
+
{{ request.user.is_staff|swh_json_script:"user_is_staff" }}
|
|
62
64
|
<script>
|
|
63
65
|
swh.webapp.initPage('deposit-admin');
|
|
64
|
-
swh.deposit.initDepositAdmin(
|
|
66
|
+
swh.deposit.initDepositAdmin(
|
|
67
|
+
swh.webapp.parseJsonScript('username'),
|
|
68
|
+
swh.webapp.parseJsonScript('user_is_staff')
|
|
69
|
+
);
|
|
65
70
|
</script>
|
|
66
71
|
{% endblock content %}
|
|
@@ -20,7 +20,7 @@ class MessageHandler:
|
|
|
20
20
|
def __init__(self, raw_message: bytes, sender: Optional[Type] = None):
|
|
21
21
|
try:
|
|
22
22
|
self.message = email.message_from_bytes(
|
|
23
|
-
raw_message, policy=email.policy.default
|
|
23
|
+
raw_message, policy=email.policy.default
|
|
24
24
|
)
|
|
25
25
|
except Exception as exc:
|
|
26
26
|
sentry_capture_exception(exc)
|
|
@@ -154,7 +154,7 @@ def test_recipient_matches_casemapping():
|
|
|
154
154
|
)
|
|
155
155
|
def test_recipient_matches_real_world(filename: str, recipient: str, extension: str):
|
|
156
156
|
with open_binary("swh.web.inbound_email.tests.resources", filename) as f:
|
|
157
|
-
message = email.message_from_binary_file(f, policy=email.policy.default)
|
|
157
|
+
message = email.message_from_binary_file(f, policy=email.policy.default)
|
|
158
158
|
|
|
159
159
|
assert isinstance(message, EmailMessage)
|
|
160
160
|
|
|
@@ -400,7 +400,7 @@ def test_get_message_plaintext(
|
|
|
400
400
|
filename: str, expected_parts: List[str], expected_absent: List[str]
|
|
401
401
|
):
|
|
402
402
|
with open_binary("swh.web.inbound_email.tests.resources", filename) as f:
|
|
403
|
-
message = email.message_from_binary_file(f, policy=email.policy.default)
|
|
403
|
+
message = email.message_from_binary_file(f, policy=email.policy.default)
|
|
404
404
|
|
|
405
405
|
assert isinstance(message, EmailMessage)
|
|
406
406
|
|
|
@@ -73,6 +73,7 @@ export function initOriginSaveAdmin() {
|
|
|
73
73
|
if (type === 'display') {
|
|
74
74
|
let html = '';
|
|
75
75
|
const sanitizedURL = $.fn.dataTable.render.text().display(data);
|
|
76
|
+
const parsedURL = new URL(sanitizedURL);
|
|
76
77
|
if (row.save_task_status === 'succeeded') {
|
|
77
78
|
let browseOriginUrl = `${Urls.browse_origin()}?origin_url=${encodeURIComponent(sanitizedURL)}`;
|
|
78
79
|
if (row.visit_date) {
|
|
@@ -82,8 +83,10 @@ export function initOriginSaveAdmin() {
|
|
|
82
83
|
} else {
|
|
83
84
|
html += sanitizedURL;
|
|
84
85
|
}
|
|
85
|
-
|
|
86
|
-
|
|
86
|
+
if (parsedURL.protocol.startsWith('http')) {
|
|
87
|
+
html += ` <a href="${sanitizedURL}" target="_blank" rel="noopener noreferrer">` +
|
|
88
|
+
'<i class="mdi mdi-open-in-new" aria-hidden="true"></i></a>';
|
|
89
|
+
}
|
|
87
90
|
return html;
|
|
88
91
|
}
|
|
89
92
|
return data;
|
|
@@ -182,6 +182,7 @@ export function initOriginSave() {
|
|
|
182
182
|
if (type === 'display') {
|
|
183
183
|
let html = '';
|
|
184
184
|
const sanitizedURL = $.fn.dataTable.render.text().display(data);
|
|
185
|
+
const parsedURL = new URL(sanitizedURL);
|
|
185
186
|
if (row.save_task_status === 'succeeded') {
|
|
186
187
|
if (row.visit_status === 'full' || row.visit_status === 'partial') {
|
|
187
188
|
let browseOriginUrl = `${Urls.browse_origin()}?origin_url=${encodeURIComponent(sanitizedURL)}`;
|
|
@@ -196,8 +197,10 @@ export function initOriginSave() {
|
|
|
196
197
|
} else {
|
|
197
198
|
html += sanitizedURL;
|
|
198
199
|
}
|
|
199
|
-
|
|
200
|
-
|
|
200
|
+
if (parsedURL.protocol.startsWith('http')) {
|
|
201
|
+
html += ` <a href="${sanitizedURL}" target="_blank" rel="noopener noreferrer">` +
|
|
202
|
+
'<i class="mdi mdi-open-in-new" aria-hidden="true"></i></a>';
|
|
203
|
+
}
|
|
201
204
|
return html;
|
|
202
205
|
}
|
|
203
206
|
return data;
|
|
@@ -359,8 +362,10 @@ export function initOriginSave() {
|
|
|
359
362
|
|
|
360
363
|
}
|
|
361
364
|
|
|
362
|
-
const tarballExtensions =
|
|
363
|
-
|
|
365
|
+
const tarballExtensions = [
|
|
366
|
+
'.jar', '.tar', '.tar.bz2', '.tbz', '.tbz2', '.tar.gz', '.tgz', '.tar.lz',
|
|
367
|
+
'.tar.xz', '.tar.zst', '.zip'
|
|
368
|
+
];
|
|
364
369
|
|
|
365
370
|
function updateVisitType() {
|
|
366
371
|
const originUrl = $('#swh-input-origin-url').val().trim();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
html{height:100%;overflow-x:hidden;scroll-behavior:auto!important}body{margin:0;min-height:100%;overflow-y:clip;position:relative}*{-webkit-font-variant-ligatures:no-common-ligatures;-moz-font-variant-ligatures:no-common-ligatures;font-variant-ligatures:no-common-ligatures}a.active,a:active{outline:none}.page-item:focus-visible,.page-link:focus-visible,a:focus-visible{outline:4px solid rgba(226,0,38,.25)!important;z-index:100}.swh-top-bar a:focus-visible,footer a:focus-visible{outline:3px solid rgba(226,0,38,.75)!important}code{background-color:#f9f2f4}pre code{background-color:transparent}footer{background-color:#262626!important;color:#fff!important;font-size:.8rem;padding-bottom:10px;padding-top:10px;width:100%}footer a,footer a:hover,footer a:visited{color:#fecd1b}pre{background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px;color:#212529;font-size:.8rem;padding:9.5px}.app-content{padding-top:10px}.app-main{overflow:hidden!important}.btn.active{background-color:#e7e7e7}.card{margin-bottom:5px!important;overflow-x:auto}.navbar-brand{margin-right:0;padding:5px}.table{margin-bottom:0}.swh-table thead{background-color:#f2f4f5;border-top:1px solid rgba(0,0,0,.2);font-weight:400}.swh-table-striped th{border-top:none}.swh-table-striped tbody tr:nth-child(2n){background-color:#f2f4f5!important}.swh-table-striped tbody tr:nth-child(odd){background-color:#fff!important}.table>thead>tr>th{border-bottom:1px solid #e20026;border-top:none}.table>tbody>tr>td{border-style:none}.sitename .first-word,.sitename .second-word{color:rgba(0,0,0,.75);font-size:1.2rem;font-weight:400}.sitename .first-word{font-family:Alegreya Sans,sans-serif}.sitename .second-word{font-family:Alegreya,serif}.swh-counter{font-size:150%}@media (max-width:600px){.swh-counter-container{margin-top:1rem}}.swh-http-error{margin:0 auto;text-align:center}.swh-http-error-head{color:#2d353c;font-size:30px}.swh-http-error-code{bottom:60%;color:#2d353c;font-size:96px;line-height:80px;margin-bottom:10px!important}.swh-http-error-desc{color:#647788;font-size:12px;text-align:center}.swh-http-error-desc pre{display:inline-block;max-width:800px;text-align:left;white-space:pre-wrap}.swh-list-unstyled{list-style:none}.popover{max-width:97%;z-index:40000}.modal{padding:0!important;text-align:center;z-index:50000}.modal:before{content:"";height:100%;margin-right:-4px}.modal-dialog,.modal:before{display:inline-block;vertical-align:middle}.modal-dialog{text-align:left}.dropdown-submenu{position:relative}.dropdown-submenu .dropdown-menu{left:-100%;margin-left:-2px;margin-top:-5px;top:0}.dropdown-item:focus,.dropdown-item:hover{background-color:rgba(0,0,0,.1)}a.dropdown-left:before{content:"\f035e";display:block;float:left;font-family:Material Design Icons;height:20px;margin-left:0;width:20px}.swh-navbar{border-bottom-width:5px;-webkit-border-image:-webkit-gradient(linear,left top,right top,from(#e20026),to(#fecd1b)) 1 1 1 1;-webkit-border-image:-webkit-linear-gradient(left,#e20026,#fecd1b) 1 1 1 1;-moz-border-image:-moz-linear-gradient(left,#e20026 0,#fecd1b 100%) 1 1 1 1;-o-border-image:linear-gradient(90deg,#e20026 0,#fecd1b) 1 1 1 1;border-image:-webkit-gradient(linear,left top,right top,from(#e20026),to(#fecd1b)) 1 1 1 1;border-image:linear-gradient(90deg,#e20026 0,#fecd1b) 1 1 1 1;border-style:none none solid;margin-top:30px;padding:5px;width:100%;-webkit-box-pack:normal;-webkit-justify-content:normal;-moz-box-pack:normal;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;height:72px;justify-content:normal;overflow:hidden}.swh-navbar-banner{margin-top:60px!important}#back-to-top{bottom:30px;display:none;position:fixed;right:30px;z-index:10}#back-to-top a img{background-size:32px 32px;display:block;height:32px;overflow:hidden;text-indent:-999px;width:32px}.swh-top-bar{background-color:#262626;color:#fff;direction:ltr;font-size:14px;height:30px;left:0;position:fixed;text-align:center;top:0;width:100%;z-index:99999}.swh-top-bar ul{margin-top:4px;padding-left:0;white-space:nowrap}.swh-top-bar li{display:inline-block;margin-left:10px;margin-right:10px}.swh-top-bar a,.swh-top-bar a:visited{color:#fff}.swh-top-bar a.swh-current-site,.swh-top-bar a.swh-current-site:visited{color:#fecd1b}.swh-banner{border:none;height:30px;left:0;position:fixed;top:30px;width:100%;z-index:99999}.swh-banner .row{background-color:#fecd1b;color:#e20026;font-size:larger;height:30px}.swh-position-left{left:0;position:absolute}.swh-position-right{position:absolute;right:0}.swh-background-gray{background:#f6f5f4}.swh-donate-link{background-color:#e20026;border:1px solid #fecd1b;border-radius:3px;color:#fff!important;padding:3px}.swh-navbar-content h4{padding-left:15px;padding-top:11px}.swh-navbar-content .bread-crumbs{display:block;margin-left:-40px}.swh-navbar-content .bread-crumbs li.bc-no-root{padding-top:.7rem}.app-sidebar{background:#fff;max-height:-webkit-calc(100vh - 30px)!important;max-height:-moz-calc(100vh - 30px)!important;max-height:calc(100vh - 30px)!important;top:30px!important}.app-sidebar-banner{margin-top:60px}.content-wrapper{background:none}.swh-push-menu{padding-top:5px}.sidebar-brand{border-bottom:5px solid #e20026!important;font-weight:500;height:4.5rem;padding-bottom:18px;padding-left:4px;padding-top:18.5px}.brand-image{max-height:40px}.sidebar-brand:focus,.sidebar-brand:hover{background-color:#e7e7e7!important;color:#323232!important}.sidebar-menu .nav-link p{padding-top:5px}.navbar-header a,ul.dropdown-menu a,ul.nav.sidebar-menu a,ul.navbar-nav a{border-bottom-style:none;color:#323232}.nav.sidebar-menu .nav-icon
|
|
1
|
+
html{height:100%;overflow-x:hidden;scroll-behavior:auto!important}body{margin:0;min-height:100%;overflow-y:clip;position:relative}body.modal-open{overflow:hidden;position:fixed;width:100%}*{-webkit-font-variant-ligatures:no-common-ligatures;-moz-font-variant-ligatures:no-common-ligatures;font-variant-ligatures:no-common-ligatures}a.active,a:active{outline:none}.page-item:focus-visible,.page-link:focus-visible,a:focus-visible{outline:4px solid rgba(226,0,38,.25)!important;z-index:100}.swh-top-bar a:focus-visible,footer a:focus-visible{outline:3px solid rgba(226,0,38,.75)!important}code{background-color:#f9f2f4}pre code{background-color:transparent}footer{background-color:#262626!important;color:#fff!important;font-size:.8rem;padding-bottom:10px;padding-top:10px;width:100%}footer a,footer a:hover,footer a:visited{color:#fecd1b}pre{background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px;color:#212529;font-size:.8rem;padding:9.5px}.app-content{padding-top:10px}.app-main{overflow:hidden!important}.btn.active{background-color:#e7e7e7}.card{margin-bottom:5px!important;overflow-x:auto}.navbar-brand{margin-right:0;padding:5px}.table{margin-bottom:0}.swh-table thead{background-color:#f2f4f5;border-top:1px solid rgba(0,0,0,.2);font-weight:400}.swh-table-striped th{border-top:none}.swh-table-striped tbody tr:nth-child(2n){background-color:#f2f4f5!important}.swh-table-striped tbody tr:nth-child(odd){background-color:#fff!important}.table>thead>tr>th{border-bottom:1px solid #e20026;border-top:none}.table>tbody>tr>td{border-style:none}.sitename .first-word,.sitename .second-word{color:rgba(0,0,0,.75);font-size:1.2rem;font-weight:400}.sitename .first-word{font-family:Alegreya Sans,sans-serif}.sitename .second-word{font-family:Alegreya,serif}.swh-counter{font-size:150%}@media (max-width:600px){.swh-counter-container{margin-top:1rem}}.swh-http-error{margin:0 auto;text-align:center}.swh-http-error-head{color:#2d353c;font-size:30px}.swh-http-error-code{bottom:60%;color:#2d353c;font-size:96px;line-height:80px;margin-bottom:10px!important}.swh-http-error-desc{color:#647788;font-size:12px;text-align:center}.swh-http-error-desc pre{display:inline-block;max-width:800px;text-align:left;white-space:pre-wrap}.swh-list-unstyled{list-style:none}.popover{max-width:97%;z-index:40000}.modal{padding:0!important;text-align:center;z-index:50000}.modal:before{content:"";height:100%;margin-right:-4px}.modal-dialog,.modal:before{display:inline-block;vertical-align:middle}.modal-dialog{text-align:left}.dropdown-submenu{position:relative}.dropdown-submenu .dropdown-menu{left:-100%;margin-left:-2px;margin-top:-5px;top:0}.dropdown-item:focus,.dropdown-item:hover{background-color:rgba(0,0,0,.1)}a.dropdown-left:before{content:"\f035e";display:block;float:left;font-family:Material Design Icons;height:20px;margin-left:0;width:20px}.swh-navbar{border-bottom-width:5px;-webkit-border-image:-webkit-gradient(linear,left top,right top,from(#e20026),to(#fecd1b)) 1 1 1 1;-webkit-border-image:-webkit-linear-gradient(left,#e20026,#fecd1b) 1 1 1 1;-moz-border-image:-moz-linear-gradient(left,#e20026 0,#fecd1b 100%) 1 1 1 1;-o-border-image:linear-gradient(90deg,#e20026 0,#fecd1b) 1 1 1 1;border-image:-webkit-gradient(linear,left top,right top,from(#e20026),to(#fecd1b)) 1 1 1 1;border-image:linear-gradient(90deg,#e20026 0,#fecd1b) 1 1 1 1;border-style:none none solid;margin-top:30px;padding:5px;width:100%;-webkit-box-pack:normal;-webkit-justify-content:normal;-moz-box-pack:normal;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;height:72px;justify-content:normal;overflow:hidden}.swh-navbar-banner{margin-top:60px!important}#back-to-top{bottom:30px;display:none;position:fixed;right:30px;z-index:10}#back-to-top a img{background-size:32px 32px;display:block;height:32px;overflow:hidden;text-indent:-999px;width:32px}.swh-top-bar{background-color:#262626;color:#fff;direction:ltr;font-size:14px;height:30px;left:0;position:fixed;text-align:center;top:0;width:100%;z-index:99999}.swh-top-bar ul{margin-top:4px;padding-left:0;white-space:nowrap}.swh-top-bar li{display:inline-block;margin-left:10px;margin-right:10px}.swh-top-bar a,.swh-top-bar a:visited{color:#fff}.swh-top-bar a.swh-current-site,.swh-top-bar a.swh-current-site:visited{color:#fecd1b}.swh-banner{border:none;height:30px;left:0;position:fixed;top:30px;width:100%;z-index:99999}.swh-banner .row{background-color:#fecd1b;color:#e20026;font-size:larger;height:30px}.swh-position-left{left:0;position:absolute}.swh-position-right{position:absolute;right:0}.swh-background-gray{background:#f6f5f4}.swh-donate-link{background-color:#e20026;border:1px solid #fecd1b;border-radius:3px;color:#fff!important;padding:3px}.swh-navbar-content h4{padding-left:15px;padding-top:11px}.swh-navbar-content .bread-crumbs{display:block;margin-left:-40px}.swh-navbar-content .bread-crumbs li.bc-no-root{padding-top:.7rem}.app-sidebar{background:#fff;max-height:-webkit-calc(100vh - 30px)!important;max-height:-moz-calc(100vh - 30px)!important;max-height:calc(100vh - 30px)!important;top:30px!important}.app-sidebar-banner{margin-top:60px}.content-wrapper{background:none}.swh-push-menu{padding-top:5px}.sidebar-brand{border-bottom:5px solid #e20026!important;font-weight:500;height:4.5rem;padding-bottom:18px;padding-left:4px;padding-top:18.5px}.brand-image{max-height:40px}.sidebar-brand:focus,.sidebar-brand:hover{background-color:#e7e7e7!important;color:#323232!important}.sidebar-menu .nav-link p{padding-top:5px}.navbar-header a,ul.dropdown-menu a,ul.nav.sidebar-menu a,ul.navbar-nav a{border-bottom-style:none;color:#323232}.nav.sidebar-menu .nav-icon
|
|
2
2
|
|
|
3
3
|
.nav-tabs .nav-link.active{border-top:3px solid #e20026}.swh-menu-item .nav-icon{color:#e20026!important}.swh-admin-menu-item .nav-icon{color:#fecd1b!important}.swh-notification-icon{color:#e20026!important;-webkit-transform:translate(8px,-6px);-moz-transform:translate(8px,-6px);transform:translate(8px,-6px)}.swh-sidebar .nav-link.active,.swh-sidebar .nav-link:focus{background-color:#e7e7e7!important;color:#323232!important}.swh-image-error{height:auto;width:80px}@media (max-width:600px){.card{min-width:80%}.swh-image-error{height:auto;width:40px}.swh-donate-link{display:none}}.swhid{white-space:pre-wrap}.swhid .swhid-option{display:inline-block;line-height:1rem;margin-right:5px}.nav-pills .nav-link:not(.active):hover{color:rgba(0,0,0,.55)}.swh-heading-color{color:#e20026!important}.sidebar-mini.sidebar-collapse .app-sidebar:hover{max-width:4.6rem;min-width:4.6rem;width:4.6rem}.sidebar-mini.sidebar-collapse .brand-text{display:none!important}.sidebar-mini.sidebar-collapse .app-sidebar:hover .brand-text,.sidebar-mini.sidebar-collapse .app-sidebar:hover .nav.sidebar-menu .nav-link p,.sidebar-mini.sidebar-collapse .app-sidebar:hover .user-panel>.info{visibility:hidden!important}.sidebar-mini.sidebar-collapse .app-sidebar .nav-header{display:none}.swh-words-logo{color:rgba(0,0,0,.75);font-size:10pt;height:73px;left:0;pointer-events:none;position:absolute;text-align:center;top:0;width:73px}.swh-words-logo:hover{text-decoration:none}.swh-words-logo-swh{line-height:1;padding-top:13px;visibility:hidden}.sidebar-collapse .swh-words-logo-swh{visibility:visible}.sidebar-open .swh-words-logo-swh{visibility:hidden}.sidebar-open .sidebar-wrapper{padding-left:1.5rem}hr.swh-faded-line{background-image:-webkit-gradient(linear,right top,left top,from(#f0f0f0),color-stop(#8c8b8b),to(#f0f0f0));background-image:-webkit-linear-gradient(right,#f0f0f0,#8c8b8b,#f0f0f0);background-image:-moz-linear-gradient(right,#f0f0f0,#8c8b8b,#f0f0f0);background-image:linear-gradient(270deg,#f0f0f0,#8c8b8b,#f0f0f0);border:0;height:1px}.swh-readme h1 a,.swh-readme h2 a,.swh-readme h3 a,.swh-readme h4 a,.swh-readme h5 a,.swh-readme h6 a{color:#e20026}.swh-rst li p{margin-bottom:0}.swh-readme-txt pre{background:none;border:none;white-space:pre-wrap}.swh-coverage-info-body{max-height:150px;overflow:auto hidden}tr.swh-tr-hover-highlight:hover td{background:#ededed}tr.swh-api-doc-route a{text-decoration:none}.swh-apidoc .col{margin:10px}.swh-apidoc .swh-rst blockquote{border:0;margin:0;padding:0}a.toggle-col{text-decoration:none}a.toggle-col.col-hidden{text-decoration:line-through}.admonition.warning{background:#fcf8e3;border:1px solid #faebcc}.admonition.note{background:#dce7fc;border:1px solid #c3d6fa}.admonition.important{background:#f8e5d3;border:1px solid #de7b21}.admonition.important,.admonition.note,.admonition.warning{border-radius:4px;margin-bottom:1rem;padding:15px}.admonition.important p,.admonition.note p,.admonition.warning p{margin-bottom:0}.admonition-title{font-weight:700}.admonition-title:before{display:block;float:left;height:20px;margin-left:0;width:20px}.admonition.warning .admonition-title:before{content:"\f0026";font-family:Material Design Icons}.admonition.note .admonition-title:before{content:"\f02fc";font-family:Material Design Icons}.admonition.important .admonition-title:before{content:"\f0238";font-family:Material Design Icons}.swh-popover{max-height:50vh;overflow:auto;padding:0}@media screen and (min-width:768px){.swh-popover{max-width:50vw}}.swh-popover pre{margin-bottom:0;white-space:pre-wrap}.d3-wrapper{height:0;padding:0 0 100%;position:relative;width:100%}.d3-wrapper>svg{height:100%;left:0;position:absolute;top:0;width:100%}div.d3-tooltip{background:#fff;border:1px solid #000;border-radius:4px;font:12px sans-serif;height:auto;padding:2px;pointer-events:none;position:absolute;text-align:center;width:auto}.page-link{cursor:pointer}.wrapper{overflow:hidden}.mdi{display:inline-block}.mdi-camera{-webkit-transform:translateY(1px);-moz-transform:translateY(1px);transform:translateY(1px)}.mdi-source-commit{-webkit-transform:translateY(2px);-moz-transform:translateY(2px);transform:translateY(2px)}.mdi-fw{text-align:center;width:1.25em}.mdi-stack{display:inline-block;height:1em;line-height:1em;position:relative;vertical-align:middle;width:1em}.mdi-stack .mdi{left:0;position:absolute;text-align:center;top:0;width:100%}.main-header .nav-link{height:inherit}.nav.sidebar-menu .nav-header:not(:first-of-type){padding-top:1rem}.nav.sidebar-menu .nav-link{padding-bottom:0;padding-top:0}.nav.sidebar-menu>.nav-item .nav-icon{vertical-align:sub}.swh-search-icon{line-height:1rem;vertical-align:middle}.swh-search-navbar{position:absolute;right:4rem;top:1rem;width:500px;z-index:50000}.swh-corner-ribbon{background:#f6f5f4;-webkit-box-shadow:0 0 3px rgba(0,0,0,.3);box-shadow:0 0 3px rgba(0,0,0,.3);color:#e20026;left:auto;letter-spacing:1px;position:absolute;right:-50px;text-align:center;top:28px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);transform:rotate(45deg);width:200px;z-index:1000}.swh-corner-ribbon-banner{top:85px}@media screen and (max-width:600px){.swh-corner-ribbon{right:-55px;top:24px}}.invalid-feedback{font-size:100%}.swh-required-label:after{color:red;content:"*"}.docutils.literal{background-color:#f9f2f4;color:#c7254e;font-family:monospace}.swh-mirror-text-under-logo,.swh-text-under-logo{position:absolute;top:45px}.swh-text-under-logo{left:30px}.swh-mirror-text-under-logo{left:33px}.sidebar-collapse .swh-text-under-logo{left:15px}.sidebar-collapse .swh-mirror-text-under-logo{left:17px}.swh-mirror-partner-logo{height:100%;position:absolute;right:47rem;top:0;z-index:50000}.sidebar-collapse .swh-mirror-partner-logo{right:36rem}.swh-mirror-partner-logo-no-search{right:15rem}.sidebar-collapse .swh-mirror-partner-logo-no-search{right:5rem}.sidebar-collapse .swh-add-forge-now-link .mdi-open-in-new,.sidebar-collapse .swh-origin-save-link .mdi-open-in-new{left:35px;position:absolute;top:5px}#swh-web-api-link{color:#e20026}p a{text-decoration:underline}.skipnav{text-align:left}.skipnav a{background:#000;color:#fff;height:auto;left:-10000px;position:absolute;text-decoration:underline;top:5px;width:auto;z-index:100000}.skipnav a:active,.skipnav a:focus{left:5px}#swh-login,#swh-logout{text-decoration:underline}#swh-logout-form{display:inline}#swh-logout-form button{background:none;border:none;color:#fff!important;cursor:pointer;padding:0;text-decoration:underline}.select-no-arrows{background:none!important}.swh-coverage{border:none;overflow:visible;padding-top:.3rem}.swh-coverage a{text-decoration:none}.swh-coverage-col{padding-left:10px;padding-right:10px}.swh-coverage-header{padding-bottom:0;padding-top:0}.swh-coverage-logo{display:block;font-family:"object-fit: contain;";height:50px;margin-left:auto;margin-right:auto;-o-object-fit:contain;object-fit:contain;width:100%}.swh-coverage-iframe{border:none;height:320px;width:100%}.swh-coverage-chevron{position:absolute;right:0}.swh-coverage .card-header .mdi{-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;-moz-transition:transform .3s ease-in-out,-moz-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out,-moz-transform .3s ease-in-out}.swh-coverage .card-header .collapsed .mdi{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);transform:rotate(90deg)}.swh-coverage-info-body{max-height:400px;overflow:auto;padding:0;scrollbar-width:thin}.swh-coverage-focus{border:2px solid #e20026!important}.swh-coverage-info-body::-webkit-scrollbar{width:4px}.swh-coverage-info-body::-webkit-scrollbar-track{background:#eff0f1}.swh-coverage-info-body::-webkit-scrollbar-thumb{background:#909396}
|
|
4
|
-
/*# sourceMappingURL=archive_coverage.
|
|
4
|
+
/*# sourceMappingURL=archive_coverage.df54ae8fe40453ecd972.css.map*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css/archive_coverage.df54ae8fe40453ecd972.css","mappings":"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","sources":["webpack://swh/./swh/web/webapp/assets/webapp/webapp.css","webpack://swh/./swh/web/archive_coverage/assets/coverage.css"],"sourcesContent":["/**\n * Copyright (C) 2018-2025 The Software Heritage developers\n * See the AUTHORS file at the top-level directory of this distribution\n * License: GNU Affero General Public License version 3, or any later version\n * See top-level LICENSE file for more information\n */\n\nhtml {\n height: 100%;\n overflow-x: hidden;\n scroll-behavior: auto !important;\n}\n\nbody {\n min-height: 100%;\n margin: 0;\n position: relative;\n overflow-y: clip;\n}\n\n/* Prevent scrolling of background when modal is opened */\nbody.modal-open {\n overflow: hidden;\n position: fixed;\n width: 100%;\n}\n\n\n/* The Alegreya font used in swh-web ships some ligatures producing\nconfusing text rendering, for instance the ligatures for `~` and some\ncharacters like e, y, u, ... so disable font common ligatures */\n* {\n font-variant-ligatures: no-common-ligatures;\n}\n\na:active,\na.active {\n outline: none;\n}\n\na:focus-visible,\n.page-item:focus-visible,\n.page-link:focus-visible {\n outline:rgb(226 0 38 / 25%) 4px solid !important;\n z-index: 100;\n}\n\n.swh-top-bar a:focus-visible,\nfooter a:focus-visible {\n outline:rgb(226 0 38 / 75%) 3px solid !important;\n}\n\ncode {\n background-color: #f9f2f4;\n}\n\npre code {\n background-color: transparent;\n}\n\nfooter {\n background-color: #262626 !important;\n color: #fff !important;\n font-size: 0.8rem;\n width: 100%;\n padding-top: 10px;\n padding-bottom: 10px;\n}\n\nfooter a,\nfooter a:visited,\nfooter a:hover {\n color: #fecd1b;\n}\n\n\npre {\n background-color: #f5f5f5;\n color: #212529;\n border: 1px solid #ccc;\n border-radius: 4px;\n padding: 9.5px;\n font-size: 0.8rem;\n}\n\n.app-content {\n padding-top: 10px;\n}\n\n.app-main {\n overflow: hidden !important;\n}\n\n.btn.active {\n background-color: #e7e7e7;\n}\n\n.card {\n margin-bottom: 5px !important;\n overflow-x: auto;\n}\n\n\n.navbar-brand {\n padding: 5px;\n margin-right: 0;\n}\n\n.table {\n margin-bottom: 0;\n}\n\n.swh-table thead {\n background-color: #f2f4f5;\n border-top: 1px solid rgb(0 0 0 / 20%);\n font-weight: normal;\n}\n\n.swh-table-striped th {\n border-top: none;\n}\n\n.swh-table-striped tbody tr:nth-child(even) {\n background-color: #f2f4f5 !important;\n}\n\n.swh-table-striped tbody tr:nth-child(odd) {\n background-color: #fff !important;\n}\n\n.table > thead > tr > th {\n border-top: none;\n border-bottom: 1px solid #e20026;\n}\n\n.table > tbody > tr > td {\n border-style: none;\n}\n\n.sitename .first-word,\n.sitename .second-word {\n color: rgb(0 0 0 / 75%);\n font-weight: normal;\n font-size: 1.2rem;\n}\n\n.sitename .first-word {\n font-family: \"Alegreya Sans\", sans-serif;\n}\n\n.sitename .second-word {\n font-family: Alegreya, serif;\n}\n\n.swh-counter {\n font-size: 150%;\n}\n\n@media (max-width: 600px) {\n .swh-counter-container {\n margin-top: 1rem;\n }\n}\n\n.swh-http-error {\n margin: 0 auto;\n text-align: center;\n}\n\n.swh-http-error-head {\n color: #2d353c;\n font-size: 30px;\n}\n\n.swh-http-error-code {\n bottom: 60%;\n color: #2d353c;\n font-size: 96px;\n line-height: 80px;\n margin-bottom: 10px !important;\n}\n\n.swh-http-error-desc {\n font-size: 12px;\n color: #647788;\n text-align: center;\n}\n\n.swh-http-error-desc pre {\n display: inline-block;\n text-align: left;\n max-width: 800px;\n white-space: pre-wrap;\n}\n\n.swh-list-unstyled {\n list-style: none;\n}\n\n.popover {\n max-width: 97%;\n z-index: 40000;\n}\n\n.modal {\n text-align: center;\n padding: 0 !important;\n z-index: 50000;\n}\n\n.modal::before {\n content: \"\";\n display: inline-block;\n height: 100%;\n vertical-align: middle;\n margin-right: -4px;\n}\n\n.modal-dialog {\n display: inline-block;\n text-align: left;\n vertical-align: middle;\n}\n\n.dropdown-submenu {\n position: relative;\n}\n\n.dropdown-submenu .dropdown-menu {\n top: 0;\n left: -100%;\n margin-top: -5px;\n margin-left: -2px;\n}\n\n.dropdown-item:hover,\n.dropdown-item:focus {\n background-color: rgb(0 0 0 / 10%);\n}\n\na.dropdown-left::before {\n content: \"\\f035e\";\n font-family: \"Material Design Icons\";\n display: block;\n width: 20px;\n height: 20px;\n float: left;\n margin-left: 0;\n}\n\n.swh-navbar {\n border-style: solid;\n border-top-style: none;\n border-left-style: none;\n border-right-style: none;\n border-bottom-width: 5px;\n border-image:\n linear-gradient(\n to right,\n rgb(226 0 38) 0%,\n rgb(254 205 27) 100%\n )\n 1 1 1 1;\n width: 100%;\n padding: 5px;\n margin-top: 30px;\n justify-content: normal;\n flex-wrap: nowrap;\n height: 72px;\n overflow: hidden;\n}\n\n.swh-navbar-banner {\n margin-top: 60px !important;\n}\n\n#back-to-top {\n display: none;\n position: fixed;\n bottom: 30px;\n right: 30px;\n z-index: 10;\n}\n\n#back-to-top a img {\n display: block;\n width: 32px;\n height: 32px;\n background-size: 32px 32px;\n text-indent: -999px;\n overflow: hidden;\n}\n\n.swh-top-bar {\n direction: ltr;\n height: 30px;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n z-index: 99999;\n background-color: #262626;\n color: #fff;\n text-align: center;\n font-size: 14px;\n}\n\n.swh-top-bar ul {\n margin-top: 4px;\n padding-left: 0;\n white-space: nowrap;\n}\n\n.swh-top-bar li {\n display: inline-block;\n margin-left: 10px;\n margin-right: 10px;\n}\n\n.swh-top-bar a,\n.swh-top-bar a:visited {\n color: white;\n}\n\n.swh-top-bar a.swh-current-site,\n.swh-top-bar a.swh-current-site:visited {\n color: #fecd1b;\n}\n\n.swh-banner {\n height: 30px;\n position: fixed;\n top: 30px;\n left: 0;\n width: 100%;\n z-index: 99999;\n border: none;\n}\n\n.swh-banner .row {\n height: 30px;\n background-color: #fecd1b;\n color: #e20026;\n font-size: larger;\n}\n\n.swh-position-left {\n position: absolute;\n left: 0;\n}\n\n.swh-position-right {\n position: absolute;\n right: 0;\n}\n\n.swh-background-gray {\n background: #f6f5f4;\n}\n\n.swh-donate-link {\n border: 1px solid #fecd1b;\n background-color: #e20026;\n color: white !important;\n padding: 3px;\n border-radius: 3px;\n}\n\n.swh-navbar-content h4 {\n padding-top: 11px;\n padding-left: 15px;\n}\n\n.swh-navbar-content .bread-crumbs {\n display: block;\n margin-left: -40px;\n}\n\n.swh-navbar-content .bread-crumbs li.bc-no-root {\n padding-top: 0.7rem;\n}\n\n.app-sidebar {\n background: white;\n top: 30px !important;\n max-height: calc(100vh - 30px) !important;\n}\n\n.app-sidebar-banner {\n margin-top: 60px;\n}\n\n.content-wrapper {\n background: none;\n}\n\n.swh-push-menu {\n padding-top: 5px;\n}\n\n.sidebar-brand {\n padding-top: 18.5px;\n padding-bottom: 18px;\n padding-left: 4px;\n border-bottom: 5px solid #e20026 !important;\n height: 4.5rem;\n font-weight: 500;\n}\n\n.brand-image {\n max-height: 40px;\n}\n\n.sidebar-brand:hover,\n.sidebar-brand:focus {\n color: #323232 !important;\n background-color: #e7e7e7 !important;\n}\n\n.sidebar-menu .nav-link p {\n padding-top: 5px;\n}\n\n.navbar-header a,\nul.dropdown-menu a,\nul.navbar-nav a,\nul.nav.sidebar-menu a {\n border-bottom-style: none;\n color: #323232;\n}\n\n.nav.sidebar-menu .nav-icon\n\n.nav-tabs .nav-link.active {\n border-top: 3px solid #e20026;\n}\n\n.swh-menu-item .nav-icon {\n color: #e20026 !important;\n}\n\n.swh-admin-menu-item .nav-icon {\n color: #fecd1b ! important;\n}\n\n.swh-notification-icon {\n color: #e20026 !important;\n transform: translate(8px, -6px);\n}\n\n.swh-sidebar .nav-link.active,\n.swh-sidebar .nav-link:focus {\n color: #323232 !important;\n background-color: #e7e7e7 !important;\n}\n\n.swh-image-error {\n width: 80px;\n height: auto;\n}\n\n@media (max-width: 600px) {\n .card {\n min-width: 80%;\n }\n\n .swh-image-error {\n width: 40px;\n height: auto;\n }\n\n .swh-donate-link {\n display: none;\n }\n}\n\n.swhid {\n white-space: pre-wrap;\n}\n\n.swhid .swhid-option {\n display: inline-block;\n margin-right: 5px;\n line-height: 1rem;\n}\n\n.nav-pills .nav-link:not(.active):hover {\n color: rgb(0 0 0 / 55%);\n}\n\n.swh-heading-color {\n color: #e20026 !important;\n}\n\n.sidebar-mini.sidebar-collapse .app-sidebar:hover {\n width: 4.6rem;\n\n /* ensure collapsed sidebar is not automatically expanded when hovering it */\n min-width: 4.6rem;\n max-width: 4.6rem;\n}\n\n.sidebar-mini.sidebar-collapse .brand-text {\n display: none !important;\n}\n\n.sidebar-mini.sidebar-collapse .app-sidebar:hover .user-panel > .info,\n.sidebar-mini.sidebar-collapse .app-sidebar:hover .nav.sidebar-menu .nav-link p,\n.sidebar-mini.sidebar-collapse .app-sidebar:hover .brand-text {\n visibility: hidden !important;\n}\n\n.sidebar-mini.sidebar-collapse .app-sidebar .nav-header {\n display: none;\n}\n\n.swh-words-logo {\n position: absolute;\n top: 0;\n left: 0;\n width: 73px;\n height: 73px;\n text-align: center;\n font-size: 10pt;\n color: rgb(0 0 0 / 75%);\n pointer-events: none;\n}\n\n.swh-words-logo:hover {\n text-decoration: none;\n}\n\n.swh-words-logo-swh {\n line-height: 1;\n padding-top: 13px;\n visibility: hidden;\n}\n\n.sidebar-collapse .swh-words-logo-swh {\n visibility: visible;\n}\n\n.sidebar-open .swh-words-logo-swh {\n visibility: hidden;\n}\n\n.sidebar-open .sidebar-wrapper {\n padding-left: 1.5rem;\n}\n\nhr.swh-faded-line {\n border: 0;\n height: 1px;\n background-image: linear-gradient(to left, #f0f0f0, #8c8b8b, #f0f0f0);\n}\n\n/* Ensure that section title with link is colored like standard section title */\n.swh-readme h1 a,\n.swh-readme h2 a,\n.swh-readme h3 a,\n.swh-readme h4 a,\n.swh-readme h5 a,\n.swh-readme h6 a {\n color: #e20026;\n}\n\n/* Make list compact in reStructuredText rendering */\n.swh-rst li p {\n margin-bottom: 0;\n}\n\n.swh-readme-txt pre {\n background: none;\n border: none;\n white-space: pre-wrap;\n}\n\n.swh-coverage {\n padding-top: 0.3rem;\n border: none;\n overflow: visible;\n}\n\n.swh-coverage a {\n text-decoration: none;\n}\n\n.swh-coverage-col {\n padding-left: 10px;\n padding-right: 10px;\n}\n\n.swh-coverage-header {\n padding-top: 0;\n padding-bottom: 0;\n}\n\n.swh-coverage-logo {\n display: block;\n width: 100%;\n height: 50px;\n margin-left: auto;\n margin-right: auto;\n object-fit: contain;\n\n /* polyfill for old browsers, see https://github.com/bfred-it/object-fit-images */\n font-family: \"object-fit: contain;\";\n}\n\n.swh-coverage-iframe {\n width: 100%;\n height: 320px;\n border: none;\n}\n\n.swh-coverage-chevron {\n position: absolute;\n right: 0;\n}\n\n.swh-coverage .card-header .mdi {\n transition: 0.3s transform ease-in-out;\n}\n\n.swh-coverage .card-header .collapsed .mdi {\n transform: rotate(90deg);\n}\n\n.swh-coverage-info-body {\n max-height: 150px;\n overflow: auto hidden;\n scrollbar-width: thin; /* Firefox only */\n padding: 0;\n}\n\n/* Thin scrollbar for chromium based browsers */\n\n.swh-coverage-info-body::-webkit-scrollbar {\n width: 4px;\n}\n\n.swh-coverage-info-body::-webkit-scrollbar-track {\n background: #eff0f1;\n}\n\n.swh-coverage-info-body::-webkit-scrollbar-thumb {\n background: #909396;\n}\n\ntr.swh-tr-hover-highlight:hover td {\n background: #ededed;\n}\n\ntr.swh-api-doc-route a {\n text-decoration: none;\n}\n\n.swh-apidoc .col {\n margin: 10px;\n}\n\n.swh-apidoc .swh-rst blockquote {\n border: 0;\n margin: 0;\n padding: 0;\n}\n\na.toggle-col {\n text-decoration: none;\n}\n\na.toggle-col.col-hidden {\n text-decoration: line-through;\n}\n\n.admonition.warning {\n background: #fcf8e3;\n border: 1px solid #faebcc;\n}\n\n.admonition.note {\n background: #dce7fc;\n border: 1px solid #c3d6fa;\n}\n\n.admonition.important {\n background: hsl(28.5deg 74% 90%);\n border: 1px solid hsl(28.5deg 74% 50%);\n}\n\n.admonition.warning,\n.admonition.note,\n.admonition.important {\n padding: 15px;\n border-radius: 4px;\n margin-bottom: 1rem;\n}\n\n.admonition.warning p,\n.admonition.note p,\n.admonition.important p {\n margin-bottom: 0;\n}\n\n.admonition-title {\n font-weight: bold;\n}\n\n.admonition-title::before {\n display: block;\n width: 20px;\n height: 20px;\n float: left;\n margin-left: 0;\n}\n\n.admonition.warning .admonition-title::before {\n content: \"\\f0026\";\n font-family: \"Material Design Icons\";\n}\n\n.admonition.note .admonition-title::before {\n content: \"\\f02fc\";\n font-family: \"Material Design Icons\";\n}\n\n.admonition.important .admonition-title::before {\n content: \"\\f0238\";\n font-family: \"Material Design Icons\";\n}\n\n.swh-popover {\n max-height: 50vh;\n overflow: auto;\n padding: 0;\n}\n\n@media screen and (min-width: 768px) {\n .swh-popover {\n max-width: 50vw;\n }\n}\n\n.swh-popover pre {\n white-space: pre-wrap;\n margin-bottom: 0;\n}\n\n.d3-wrapper {\n position: relative;\n height: 0;\n width: 100%;\n padding: 0;\n\n /* padding-bottom will be overwritten by JavaScript later */\n padding-bottom: 100%;\n}\n\n.d3-wrapper > svg {\n position: absolute;\n height: 100%;\n width: 100%;\n left: 0;\n top: 0;\n}\n\ndiv.d3-tooltip {\n position: absolute;\n text-align: center;\n width: auto;\n height: auto;\n padding: 2px;\n font: 12px sans-serif;\n background: white;\n border: 1px solid black;\n border-radius: 4px;\n pointer-events: none;\n}\n\n.page-link {\n cursor: pointer;\n}\n\n.wrapper {\n overflow: hidden;\n}\n\n/* Material Design icons alignment tweaks */\n\n.mdi {\n display: inline-block;\n}\n\n.mdi-camera {\n transform: translateY(1px);\n}\n\n.mdi-source-commit {\n transform: translateY(2px);\n}\n\n/* To set icons at a fixed width. Great to use when different\n icon widths throw off alignment. Courtesy of Font Awesome. */\n.mdi-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.mdi-stack {\n position: relative;\n display: inline-block;\n width: 1em;\n height: 1em;\n line-height: 1em;\n vertical-align: middle;\n}\n\n.mdi-stack .mdi {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n text-align: center;\n}\n\n.main-header .nav-link {\n height: inherit;\n}\n\n.nav.sidebar-menu .nav-header:not(:first-of-type) {\n padding-top: 1rem;\n}\n\n.nav.sidebar-menu .nav-link {\n padding-top: 0;\n padding-bottom: 0;\n}\n\n.nav.sidebar-menu > .nav-item .nav-icon {\n vertical-align: sub;\n}\n\n.swh-search-icon {\n line-height: 1rem;\n vertical-align: middle;\n}\n\n.swh-search-navbar {\n position: absolute;\n top: 1rem;\n right: 4rem;\n z-index: 50000;\n width: 500px;\n}\n\n.swh-corner-ribbon {\n width: 200px;\n background: #f6f5f4;\n color: #e20026;\n position: absolute;\n text-align: center;\n letter-spacing: 1px;\n box-shadow: 0 0 3px rgb(0 0 0 / 30%);\n top: 28px;\n right: -50px;\n left: auto;\n transform: rotate(45deg);\n z-index: 1000;\n}\n\n.swh-corner-ribbon-banner {\n top: 85px;\n}\n\n@media screen and (max-width: 600px) {\n .swh-corner-ribbon {\n top: 24px;\n right: -55px;\n }\n}\n\n.invalid-feedback {\n font-size: 100%;\n}\n\n.swh-required-label::after {\n content: \"*\";\n color: #f00;\n}\n\n.docutils.literal {\n background-color: #f9f2f4;\n color: #c7254e;\n font-family: monospace;\n}\n\n.swh-text-under-logo, .swh-mirror-text-under-logo {\n position: absolute;\n top: 45px;\n}\n\n.swh-text-under-logo {\n left: 30px;\n}\n\n.swh-mirror-text-under-logo {\n left: 33px;\n}\n\n.sidebar-collapse .swh-text-under-logo {\n left: 15px;\n}\n\n.sidebar-collapse .swh-mirror-text-under-logo {\n left: 17px;\n}\n\n.swh-mirror-partner-logo {\n position: absolute;\n top: 0;\n right: 47rem;\n z-index: 50000;\n height: 100%;\n}\n\n.sidebar-collapse .swh-mirror-partner-logo {\n right: 36rem;\n}\n\n.swh-mirror-partner-logo-no-search {\n right: 15rem;\n}\n\n.sidebar-collapse .swh-mirror-partner-logo-no-search {\n right: 5rem;\n}\n\n.sidebar-collapse .swh-origin-save-link .mdi-open-in-new,\n.sidebar-collapse .swh-add-forge-now-link .mdi-open-in-new {\n position: absolute;\n left: 35px;\n top: 5px;\n}\n\n#swh-web-api-link {\n color: #e20026;\n}\n\np a {\n text-decoration: underline;\n}\n\n.skipnav {\n text-align: left;\n}\n\n.skipnav a {\n position: absolute;\n left: -10000px;\n top: 5px;\n width: auto;\n height: auto;\n text-decoration: underline;\n background: black;\n color: white;\n z-index: 100000;\n}\n\n.skipnav a:focus,\n.skipnav a:active {\n left: 5px;\n}\n\n#swh-login,\n#swh-logout {\n text-decoration: underline;\n}\n\n#swh-logout-form {\n display: inline;;\n}\n\n#swh-logout-form button {\n background: none;\n border: none;\n cursor: pointer;\n padding: 0;\n text-decoration: underline;\n color: white !important;\n}\n\n.select-no-arrows {\n background: none !important;\n}\n\n\n\n","/**\n * Copyright (C) 2021-2022 The Software Heritage developers\n * See the AUTHORS file at the top-level directory of this distribution\n * License: GNU Affero General Public License version 3, or any later version\n * See top-level LICENSE file for more information\n */\n\n.swh-coverage {\n padding-top: 0.3rem;\n border: none;\n overflow: visible;\n}\n\n.swh-coverage a {\n text-decoration: none;\n}\n\n.swh-coverage-col {\n padding-left: 10px;\n padding-right: 10px;\n}\n\n.swh-coverage-header {\n padding-top: 0;\n padding-bottom: 0;\n}\n\n.swh-coverage-logo {\n display: block;\n width: 100%;\n height: 50px;\n margin-left: auto;\n margin-right: auto;\n object-fit: contain;\n\n /* polyfill for old browsers, see https://github.com/bfred-it/object-fit-images */\n font-family: \"object-fit: contain;\";\n}\n\n.swh-coverage-iframe {\n width: 100%;\n height: 320px;\n border: none;\n}\n\n.swh-coverage-chevron {\n position: absolute;\n right: 0;\n}\n\n.swh-coverage .card-header .mdi {\n transition: 0.3s transform ease-in-out;\n}\n\n.swh-coverage .card-header .collapsed .mdi {\n transform: rotate(90deg);\n}\n\n.swh-coverage-info-body {\n max-height: 400px;\n overflow: auto;\n scrollbar-width: thin; /* Firefox only */\n padding: 0;\n}\n\n.swh-coverage-focus {\n border: 2px solid #e20026 !important;\n}\n\n/* Thin scrollbar for chromium based browsers */\n\n.swh-coverage-info-body::-webkit-scrollbar {\n width: 4px;\n}\n\n.swh-coverage-info-body::-webkit-scrollbar-track {\n background: #eff0f1;\n}\n\n.swh-coverage-info-body::-webkit-scrollbar-thumb {\n background: #909396;\n}\n"],"names":[],"sourceRoot":""}
|