Skip to content

Commit a25db5d

Browse files
authoredApr 8, 2024
Offline mode (closes alshedivat#1181) (alshedivat#2312)
Created a plugin to tackle alshedivat#1181. Currently have an issue with tikzjax since it imports some wasm file from its javascript. The rest should work as expected. --------- Signed-off-by: George Araujo <george.gcac@gmail.com>
1 parent 488ad6c commit a25db5d

29 files changed

+587
-308
lines changed
 

‎.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ _site
77
.ruby-version
88
.tweet-cache
99
Gemfile.lock
10+
assets/libs/
1011
node_modules/
1112
vendor

‎.prettierignore

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
**/*.map
12
**/*.min.css
23
**/*.min.js
34
assets/css/main.scss
5+
assets/js/distillpub/template.v2.js
46
assets/plotly/demo.html
57
lighthouse_results/**
68
_posts/2015-10-20-math.md

‎Gemfile

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ group :jekyll_plugins do
2121
gem 'webrick'
2222
end
2323
group :other_plugins do
24+
gem 'css_parser'
2425
gem 'feedjira'
2526
gem 'httparty'
2627
end

‎_config.yml

+158-66
Original file line numberDiff line numberDiff line change
@@ -395,72 +395,164 @@ enable_progressbar: true # enables a horizontal progress bar linked to the verti
395395
# Library versions
396396
# -----------------------------------------------------------------------------
397397

398-
bootstrap-table:
399-
version: "1.22.1"
400-
chartjs:
401-
version: "4.4.1"
402-
d3:
403-
version: "7.8.5"
404-
integrity: "sha256-1rA678n2xEx7x4cTZ5x4wpUCj6kUMZEZ5cxLSVSFWxw="
405-
diff2html:
406-
version: "3.4.47"
407-
integrity:
408-
css: "sha256-IMBK4VNZp0ivwefSn51bswdsrhk0HoMTLc2GqFHFBXg="
409-
js: "sha256-eU2TVHX633T1o/bTQp6iIJByYJEtZThhF9bKz/DcbbY="
410-
echarts:
411-
version: "5.4.3"
412-
integrity:
413-
library: "sha256-EVZCmhajjLhgTcxlGMGUBtQiYULZCPjt0uNTFEPFTRk="
414-
dark_theme: "sha256-UmFIP/4VvOqBDIl2QWl1HBuAJ1XWs/iFZxT5yJRZOKo="
415-
highlightjs:
416-
version: "11.9.0"
417-
integrity:
418-
css:
419-
light: "sha256-Oppd74ucMR5a5Dq96FxjEzGF7tTw2fZ/6ksAqDCM8GY="
420-
dark: "sha256-nyCNAiECsdDHrr/s2OQsp5l9XeY2ZJ0rMepjCT2AkBk="
421-
imagesloaded:
422-
version: "5.0.0"
423-
integrity: "sha256-htrLFfZJ6v5udOG+3kNLINIKh2gvoKqwEhHYfTTMICc="
424-
img-comparison-slider:
425-
version: "8.0.6"
426-
jquery:
427-
version: "3.6.0"
428-
integrity: "sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4="
429-
leaflet:
430-
version: "1.9.4"
431-
integrity:
432-
css: "sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY="
433-
js: "sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo="
434-
mathjax:
435-
version: "3.2.0"
436-
masonry:
437-
version: "4.2.2"
438-
integrity: "sha256-Nn1q/fx0H7SNLZMQ5Hw5JLaTRZp0yILA/FRexe19VdI="
439-
mdb:
440-
version: "4.20.0"
441-
integrity:
442-
css: "sha256-jpjYvU3G3N6nrrBwXJoVEYI/0zw8htfFnhT9ljN3JJw="
443-
js: "sha256-NdbiivsvWt7VYCt6hYNT3h/th9vSTL4EDWeGs5SN3DA="
444-
medium_zoom:
445-
version: "1.1.0"
446-
integrity: "sha256-ZgMyDAIYDYGxbcpJcfUnYwNevG/xi9OHKaR/8GK+jWc="
447-
mermaid:
448-
version: "10.7.0"
449-
integrity: "sha256-TtLOdUA8mstPoO6sGvHIGx2ceXrrX4KgIItO06XOn8A="
450-
swiper:
451-
version: "11.0.5"
452-
integrity:
453-
css: "sha256-yUoNxsvX+Vo8Trj3lZ/Y5ZBf8HlBFsB6Xwm7rH75/9E="
454-
js: "sha256-BPrwikijIybg9OQC5SYFFqhBjERYOn97tCureFgYH1E="
455-
vega:
456-
version: "5.27.0"
457-
integrity: "sha256-Yot/cfgMMMpFwkp/5azR20Tfkt24PFqQ6IQS+80HIZs="
458-
vega-embed:
459-
version: "6.24.0"
460-
integrity: "sha256-FPCJ9JYCC9AZSpvC/t/wHBX7ybueZhIqOMjpWqfl3DU="
461-
vega-lite:
462-
version: "5.16.3"
463-
integrity: "sha256-TvBvIS5jUN4BSy009usRjNzjI1qRrHPYv7xVLJyjUyw="
398+
# Add the url, version and integrity hash of the libraries you use in your site.
399+
third_party_libraries:
400+
download: false # if true, download the versions of the libraries specified below and use the downloaded files
401+
bootstrap-table:
402+
integrity:
403+
css: "sha256-uRX+PiRTR4ysKFRCykT8HLuRCub26LgXJZym3Yeom1c="
404+
js: "sha256-4rppopQE9POKfukn2kEvhJ9Um25Cf6+IDVkARD0xh78="
405+
url:
406+
css: "https://cdn.jsdelivr.net/npm/bootstrap-table@{{version}}/dist/bootstrap-table.min.css"
407+
js: "https://cdn.jsdelivr.net/npm/bootstrap-table@{{version}}/dist/bootstrap-table.min.js"
408+
version: "1.22.4"
409+
chartjs:
410+
url:
411+
js: "https://cdn.jsdelivr.net/npm/chart.js@{{version}}/dist/chart.umd.min.js"
412+
version: "4.4.1"
413+
d3:
414+
integrity:
415+
js: "sha256-1rA678n2xEx7x4cTZ5x4wpUCj6kUMZEZ5cxLSVSFWxw="
416+
url:
417+
js: "https://cdn.jsdelivr.net/npm/d3@{{version}}/dist/d3.min.js"
418+
version: "7.8.5"
419+
diff2html:
420+
integrity:
421+
css: "sha256-IMBK4VNZp0ivwefSn51bswdsrhk0HoMTLc2GqFHFBXg="
422+
js: "sha256-eU2TVHX633T1o/bTQp6iIJByYJEtZThhF9bKz/DcbbY="
423+
url:
424+
css: "https://cdn.jsdelivr.net/npm/diff2html@{{version}}/bundles/css/diff2html.min.css"
425+
js: "https://cdn.jsdelivr.net/npm/diff2html@{{version}}/bundles/js/diff2html-ui.min.js"
426+
version: "3.4.47"
427+
echarts:
428+
integrity:
429+
js:
430+
library: "sha256-QvgynZibb2U53SsVu98NggJXYqwRL7tg3FeyfXvPOUY="
431+
dark_theme: "sha256-sm6Ui9w41++ZCWmIWDLC18a6ki72FQpWDiYTDxEPXwU="
432+
url:
433+
js:
434+
library: "https://cdn.jsdelivr.net/npm/echarts@{{version}}/dist/echarts.min.js"
435+
dark_theme: "https://cdn.jsdelivr.net/npm/echarts@{{version}}/theme/dark-fresh-cut.js"
436+
version: "5.5.0"
437+
google_fonts:
438+
url:
439+
fonts: "https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Roboto+Slab:100,300,400,500,700|Material+Icons&display=swap"
440+
highlightjs:
441+
integrity:
442+
css:
443+
light: "sha256-Oppd74ucMR5a5Dq96FxjEzGF7tTw2fZ/6ksAqDCM8GY="
444+
dark: "sha256-nyCNAiECsdDHrr/s2OQsp5l9XeY2ZJ0rMepjCT2AkBk="
445+
url:
446+
css:
447+
light: "https://cdn.jsdelivr.net/npm/highlight.js@{{version}}/styles/github.min.css"
448+
dark: "https://cdn.jsdelivr.net/npm/highlight.js@{{version}}/styles/github-dark.min.css"
449+
version: "11.9.0"
450+
imagesloaded:
451+
integrity:
452+
js: "sha256-htrLFfZJ6v5udOG+3kNLINIKh2gvoKqwEhHYfTTMICc="
453+
url:
454+
js: https://cdn.jsdelivr.net/npm/imagesloaded@{{version}}/imagesloaded.pkgd.min.js
455+
version: "5.0.0"
456+
img-comparison-slider:
457+
url:
458+
css: "https://cdn.jsdelivr.net/npm/img-comparison-slider@{{version}}/dist/styles.min.css"
459+
js: "https://cdn.jsdelivr.net/npm/img-comparison-slider@{{version}}/dist/index.min.js"
460+
version: "8.0.6"
461+
jquery:
462+
integrity:
463+
js: "sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4="
464+
url:
465+
js: "https://cdn.jsdelivr.net/npm/jquery@{{version}}/dist/jquery.min.js"
466+
version: "3.6.0"
467+
leaflet:
468+
integrity:
469+
css: "sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY="
470+
js: "sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo="
471+
js_map: "sha256-YAoQ3FzREN4GmVENMir8vgHHypC0xfSK3CAxTHCqx1M="
472+
url:
473+
css: "https://cdn.jsdelivr.net/npm/leaflet@{{version}}/dist/leaflet.css"
474+
js: "https://cdn.jsdelivr.net/npm/leaflet@{{version}}/dist/leaflet.js"
475+
js_map: "https://cdn.jsdelivr.net/npm/leaflet@{{version}}/dist/leaflet.js.map"
476+
version: "1.9.4"
477+
mathjax:
478+
local:
479+
fonts: "output/chtml/fonts/woff-v2/"
480+
url:
481+
fonts: "https://cdn.jsdelivr.net/npm/mathjax@{{version}}/es5/output/chtml/fonts/woff-v2/"
482+
js: "https://cdn.jsdelivr.net/npm/mathjax@{{version}}/es5/tex-mml-chtml.js"
483+
version: "3.2.0"
484+
masonry:
485+
integrity:
486+
js: "sha256-Nn1q/fx0H7SNLZMQ5Hw5JLaTRZp0yILA/FRexe19VdI="
487+
url:
488+
js: "https://cdn.jsdelivr.net/npm/masonry-layout@{{version}}/dist/masonry.pkgd.min.js"
489+
version: "4.2.2"
490+
mdb:
491+
integrity:
492+
css: "sha256-jpjYvU3G3N6nrrBwXJoVEYI/0zw8htfFnhT9ljN3JJw="
493+
css_map: "sha256-iYYMNfsJdVZjvsebJulg09miBXM4/GMTJgv1u5EZFFM="
494+
js: "sha256-NdbiivsvWt7VYCt6hYNT3h/th9vSTL4EDWeGs5SN3DA="
495+
js_map: "sha256-UPgyn4YNsT0khkBK5553QwhnlbTlU0aa+igyc6qP1bE="
496+
url:
497+
css: "https://cdn.jsdelivr.net/npm/mdbootstrap@{{version}}/css/mdb.min.css"
498+
css_map: "https://cdn.jsdelivr.net/npm/mdbootstrap@{{version}}/css/mdb.min.css.map"
499+
js: "https://cdn.jsdelivr.net/npm/mdbootstrap@{{version}}/js/mdb.min.js"
500+
js_map: "https://cdn.jsdelivr.net/npm/mdbootstrap@{{version}}/js/mdb.min.js.map"
501+
version: "4.20.0"
502+
medium_zoom:
503+
integrity:
504+
js: "sha256-ZgMyDAIYDYGxbcpJcfUnYwNevG/xi9OHKaR/8GK+jWc="
505+
url:
506+
js: "https://cdn.jsdelivr.net/npm/medium-zoom@{{version}}/dist/medium-zoom.min.js"
507+
version: "1.1.0"
508+
mermaid:
509+
integrity:
510+
js: "sha256-TtLOdUA8mstPoO6sGvHIGx2ceXrrX4KgIItO06XOn8A="
511+
url:
512+
js: "https://cdn.jsdelivr.net/npm/mermaid@{{version}}/dist/mermaid.min.js"
513+
version: "10.7.0"
514+
polyfill:
515+
url:
516+
js: "https://cdnjs.cloudflare.com/polyfill/v{{version}}/polyfill.min.js?features=es6"
517+
version: "3"
518+
swiper:
519+
integrity:
520+
css: "sha256-yUoNxsvX+Vo8Trj3lZ/Y5ZBf8HlBFsB6Xwm7rH75/9E="
521+
js: "sha256-BPrwikijIybg9OQC5SYFFqhBjERYOn97tCureFgYH1E="
522+
url:
523+
css: "https://cdn.jsdelivr.net/npm/swiper@{{version}}/swiper-bundle.min.css"
524+
js: "https://cdn.jsdelivr.net/npm/swiper@{{version}}/swiper-element-bundle.min.js"
525+
version: "11.0.5"
526+
swiper-map:
527+
integrity:
528+
js: "sha256-hlZaH8ySXX97bZaetnrtYlKuhx3oEXFz/s2IXchu6vk="
529+
url:
530+
js: "https://cdn.jsdelivr.net/npm/swiper@11.1.0/swiper-element-bundle.min.js.map"
531+
version: "11.0.5"
532+
vega:
533+
integrity:
534+
js: "sha256-Yot/cfgMMMpFwkp/5azR20Tfkt24PFqQ6IQS+80HIZs="
535+
js_map: "sha256-z0x9ICA65dPkZ0JVa9wTImfF6n7AJsKc6WlFE96/wNA="
536+
url:
537+
js: "https://cdn.jsdelivr.net/npm/vega@{{version}}/build/vega.min.js"
538+
js_map: "https://cdn.jsdelivr.net/npm/vega@{{version}}/build/vega.min.js.map"
539+
version: "5.27.0"
540+
vega-embed:
541+
integrity:
542+
js: "sha256-FPCJ9JYCC9AZSpvC/t/wHBX7ybueZhIqOMjpWqfl3DU="
543+
js_map: "sha256-VBbfSEFYSMdX/rTdGrONEHNP6BprCB7H/LpMMNt/cPA="
544+
url:
545+
js: "https://cdn.jsdelivr.net/npm/vega-embed@{{version}}/build/vega-embed.min.js"
546+
js_map: "https://cdn.jsdelivr.net/npm/vega-embed@{{version}}/build/vega-embed.min.js.map"
547+
version: "6.24.0"
548+
vega-lite:
549+
integrity:
550+
js: "sha256-TvBvIS5jUN4BSy009usRjNzjI1qRrHPYv7xVLJyjUyw="
551+
js_map: "sha256-l2I4D5JC23Ulsu6e3sKVe5AJ+r+DFkzkKnZS8nUGz28="
552+
url:
553+
js: "https://cdn.jsdelivr.net/npm/vega-lite@{{version}}/build/vega-lite.min.js"
554+
js_map: "https://cdn.jsdelivr.net/npm/vega-lite@{{version}}/build/vega-lite.min.js.map"
555+
version: "5.16.3"
464556

465557
# -----------------------------------------------------------------------------
466558
# Get external JSON data

‎_includes/head.liquid

+22-17
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,22 @@
33

44
<!-- Bootstrap & MDB -->
55
<link rel="stylesheet" href="{{ '/assets/css/bootstrap.min.css' | relative_url | bust_file_cache }}">
6-
<!-- <link rel="stylesheet" href="{{ '/assets/css/mdb.min.css' | relative_url | bust_file_cache }}"> -->
76
<link
87
rel="stylesheet"
9-
href="https://cdn.jsdelivr.net/npm/mdbootstrap@{{ site.mdb.version }}/css/mdb.min.css"
10-
integrity="{{ site.mdb.integrity.css }}"
8+
href="{{ site.third_party_libraries.mdb.url.css }}"
9+
integrity="{{ site.third_party_libraries.mdb.integrity.css }}"
1110
crossorigin="anonymous"
1211
>
1312

1413
<!-- Bootstrap Table -->
1514
{% if page.pretty_table %}
16-
<link defer rel="stylesheet" href="https://unpkg.com/bootstrap-table@{{ site.bootstrap-table.version }}/dist/bootstrap-table.min.css">
15+
<link
16+
defer
17+
rel="stylesheet"
18+
href="{{ site.third_party_libraries.bootstrap-table.url.css }}"
19+
integrity="{{ site.third_party_libraries.bootstrap-table.integrity.css }}"
20+
crossorigin="anonymous"
21+
>
1722
{% endif %}
1823

1924
<!-- Fonts & Icons -->
@@ -22,7 +27,7 @@
2227
defer
2328
rel="stylesheet"
2429
type="text/css"
25-
href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Roboto+Slab:100,300,400,500,700|Material+Icons&display=swap"
30+
href="{{ site.third_party_libraries.google_fonts.url.fonts }}"
2631
>
2732

2833
<!-- Code Syntax Highlighting -->
@@ -71,9 +76,9 @@
7176
<link
7277
defer
7378
rel="stylesheet"
74-
href="https://unpkg.com/leaflet@{{ site.leaflet.version }}/dist/leaflet.css"
75-
integrity="{{ site.leaflet.integrity.css }}"
76-
crossorigin=""
79+
href="{{ site.third_party_libraries.leaflet.url.css }}"
80+
integrity="{{ site.third_party_libraries.leaflet.integrity.css }}"
81+
crossorigin="anonymous"
7782
>
7883
{% endif %}
7984

@@ -82,24 +87,24 @@
8287
<link
8388
defer
8489
rel="stylesheet"
85-
href="https://cdn.jsdelivr.net/npm/highlight.js@{{ site.highlightjs.version }}/styles/github.min.css"
86-
integrity="{{ site.highlightjs.integrity.css.light }}"
90+
href="{{ site.third_party_libraries.highlightjs.url.css.light }}"
91+
integrity="{{ site.third_party_libraries.highlightjs.integrity.css.light }}"
8792
crossorigin="anonymous"
8893
media="screen and (prefers-color-scheme: light)"
8994
>
9095
<link
9196
defer
9297
rel="stylesheet"
93-
href="https://cdn.jsdelivr.net/npm/highlight.js@{{ site.highlightjs.version }}/styles/github-dark.min.css"
94-
integrity="{{ site.highlightjs.integrity.css.dark }}"
98+
href="{{ site.third_party_libraries.highlightjs.url.css.dark }}"
99+
integrity="{{ site.third_party_libraries.highlightjs.integrity.css.dark }}"
95100
crossorigin="anonymous"
96101
media="screen and (prefers-color-scheme: dark)"
97102
>
98103
<link
99104
defer
100105
rel="stylesheet"
101-
href="https://cdn.jsdelivr.net/npm/diff2html@{{ site.diff2html.version }}/bundles/css/diff2html.min.css"
102-
integrity="{{ site.diff2html.integrity.css }}"
106+
href="{{ site.third_party_libraries.diff2html.url.css }}"
107+
integrity="{{ site.third_party_libraries.diff2html.integrity.css }}"
103108
crossorigin="anonymous"
104109
>
105110
{% endif %}
@@ -110,16 +115,16 @@
110115
<link
111116
defer
112117
rel="stylesheet"
113-
href="https://cdn.jsdelivr.net/npm/img-comparison-slider@{{ site.img-comparison-slider.version }}/dist/styles.min.css"
118+
href="{{ site.third_party_libraries.img-comparison-slider.url.css }}"
114119
>
115120
{% endif %}
116121
<!-- Image slider -->
117122
{% if page.images.slider %}
118123
<link
119124
defer
120125
rel="stylesheet"
121-
href="https://cdn.jsdelivr.net/npm/swiper@{{ site.swiper.version }}/swiper-bundle.min.css"
122-
integrity="{{ site.swiper.integrity.css }}"
126+
href="{{ site.third_party_libraries.swiper.url.css }}"
127+
integrity="{{ site.third_party_libraries.swiper.integrity.css }}"
123128
crossorigin="anonymous"
124129
>
125130
{% endif %}

‎_includes/scripts/bootstrap.liquid

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<script src="{{ '/assets/js/bootstrap.bundle.min.js' | relative_url }}"></script>
33
<!-- <script src="{{ '/assets/js/mdb.min.js' | relative_url }}"></script> -->
44
<script
5-
src="https://cdn.jsdelivr.net/npm/mdbootstrap@{{ site.mdb.version }}/js/mdb.min.js"
6-
integrity="{{ site.mdb.integrity.js }}"
5+
src="{{ site.third_party_libraries.mdb.url.js }}"
6+
integrity="{{ site.third_party_libraries.mdb.integrity.js }}"
77
crossorigin="anonymous"
88
></script>

‎_includes/scripts/chartjs.liquid

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{% if page.chart and page.chart.chartjs %}
2-
<script defer src="https://cdn.jsdelivr.net/npm/chart.js@{{ site.chartjs.version }}/dist/chart.umd.min.js"></script>
2+
<script defer src="{{ site.third_party_libraries.chartjs.url.js }}"></script>
33
<script>
44
$(document).ready(function () {
55
var $canvas = null,

‎_includes/scripts/diff2html.liquid

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
{% if page.code_diff %}
22
<!-- diff2html doesn't go well with Bootstrap Table -->
33
<script
4-
defer
5-
src="https://cdn.jsdelivr.net/npm/diff2html@{{ site.diff2html.version }}/bundles/js/diff2html-ui.min.js"
6-
integrity="{{ site.diff2html.integrity.js }}"
4+
src="{{ site.third_party_libraries.diff2html.url.js }}"
5+
integrity="{{ site.third_party_libraries.diff2html.integrity.js }}"
76
crossorigin="anonymous"
87
></script>
98
<script>

0 commit comments

Comments
 (0)