Skip to content

Commit 8626854

Browse files
george-gcamattleblanc
authored andcommitted
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 d526398 commit 8626854

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
@@ -400,72 +400,164 @@ enable_progressbar: true # enables a horizontal progress bar linked to
400400
# Library versions
401401
# -----------------------------------------------------------------------------
402402

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

470562
# -----------------------------------------------------------------------------
471563
# 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)