1
0
mirror of https://github.com/squidfunk/mkdocs-material.git synced 2025-02-12 00:23:01 +01:00

Finished migration to custom build

This commit is contained in:
squidfunk 2021-02-22 18:19:00 +01:00
parent eb819535f6
commit b97b747150
4638 changed files with 5091 additions and 9559 deletions

1
.gitignore vendored
View File

@ -30,7 +30,6 @@ venv
# Build files # Build files
build build
MANIFEST MANIFEST
manifest.json
site site
# Distribution files # Distribution files

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M224 224a32 32 0 1032.007 32 32.064 32.064 0 00-32.008-32zm214.171-96c-10.877-19.5-40.51-50.75-116.275-41.875C300.392 34.875 267.634 0 223.999 0s-76.39 34.875-97.896 86.125C50.337 77.375 20.706 108.5 9.829 128-6.55 157.375-5.175 201.125 34.958 256-5.175 310.875-6.55 354.625 9.829 384c29.13 52.375 101.647 43.625 116.274 41.875C147.608 477.125 180.364 512 223.999 512s76.393-34.875 97.897-86.125c14.629 1.75 87.144 10.5 116.275-41.875 16.379-29.375 15.004-73.125-25.13-128 40.134-54.875 41.509-98.625 25.13-128zM63.34 352c-4-7.25-.125-24.75 15.004-48.25a368.519 368.519 0 0021.88 19.125c1.626 13.75 4 27.125 6.75 40.125-24.628.875-39.882-4.375-43.634-11zm36.885-162.875a368.506 368.506 0 00-21.881 19.125c-15.13-23.5-19.004-41-15.004-48.25 3.377-6.125 16.379-11.5 37.885-11.5 1.75 0 3.875.375 5.75.375a443.175 443.175 0 00-6.75 40.25zM223.999 64c9.502 0 22.256 13.5 33.883 37.25a435.24 435.24 0 00-33.883 12.875 434.638 434.638 0 00-33.883-12.875C201.746 77.5 214.497 64 224 64zm0 384c-9.502 0-22.254-13.5-33.883-37.25 11.254-3.75 22.506-8 33.883-12.875a435.23 435.23 0 0033.883 12.875C246.255 434.5 233.5 448 223.999 448zm0-112a80 80 0 1180-80 80 80 0 01-80 80zm160.66 16c-3.625 6.625-19.004 11.875-43.634 11 2.752-13 5.127-26.375 6.752-40.125a367.856 367.856 0 0021.878-19.125c15.13 23.5 19.004 41 15.004 48.25zm-15.004-143.75a367.869 367.869 0 00-21.879-19.125 442.488 442.488 0 00-6.752-40.25c1.875 0 4.002-.375 5.752-.375 21.504 0 34.508 5.375 37.883 11.5 4 7.25.125 24.75-15.004 48.25z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M224 224a32 32 0 1 0 32.007 32 32.064 32.064 0 0 0-32.008-32zm214.171-96c-10.877-19.5-40.51-50.75-116.275-41.875C300.392 34.875 267.634 0 223.999 0s-76.39 34.875-97.896 86.125C50.337 77.375 20.706 108.5 9.829 128-6.55 157.375-5.175 201.125 34.958 256-5.175 310.875-6.55 354.625 9.829 384c29.13 52.375 101.647 43.625 116.274 41.875C147.608 477.125 180.364 512 223.999 512s76.393-34.875 97.897-86.125c14.629 1.75 87.144 10.5 116.275-41.875 16.379-29.375 15.004-73.125-25.13-128 40.134-54.875 41.509-98.625 25.13-128zM63.34 352c-4-7.25-.125-24.75 15.004-48.25a368.519 368.519 0 0 0 21.88 19.125c1.626 13.75 4 27.125 6.75 40.125-24.628.875-39.882-4.375-43.634-11zm36.885-162.875a368.506 368.506 0 0 0-21.881 19.125c-15.13-23.5-19.004-41-15.004-48.25 3.377-6.125 16.379-11.5 37.885-11.5 1.75 0 3.875.375 5.75.375a443.175 443.175 0 0 0-6.75 40.25zM223.999 64c9.502 0 22.256 13.5 33.883 37.25-11.252 3.75-22.504 8-33.883 12.875a434.638 434.638 0 0 0-33.883-12.875C201.746 77.5 214.497 64 224 64zm0 384c-9.502 0-22.254-13.5-33.883-37.25 11.254-3.75 22.506-8 33.883-12.875a435.23 435.23 0 0 0 33.883 12.875C246.255 434.5 233.5 448 223.999 448zm0-112a80 80 0 1 1 80-80 80 80 0 0 1-80 80zm160.66 16c-3.625 6.625-19.004 11.875-43.634 11 2.752-13 5.127-26.375 6.752-40.125a367.856 367.856 0 0 0 21.878-19.125c15.13 23.5 19.004 41 15.004 48.25zm-15.004-143.75a367.869 367.869 0 0 0-21.879-19.125 442.488 442.488 0 0 0-6.752-40.25c1.875 0 4.002-.375 5.752-.375 21.504 0 34.508 5.375 37.883 11.5 4 7.25.125 24.75-15.004 48.25z"/></svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -1 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 89 89"><path d="M3.136 17.387v42.932l42.932 21.467L3.136 17.387z"/><path d="M21.91 8l42.933 64.398-18.775 9.388L3.136 17.387 21.91 8z" fill-opacity=".5"/><path d="M67.535 17.387L40.273 35.543l21.878 32.818 5.384 2.691V17.387z"/><path d="M67.535 17.387v53.666l18.774-9.388V8l-18.774 9.387z" fill-opacity=".25"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 89 89">
<path d="M3.136,17.387l0,42.932l42.932,21.467l-42.932,-64.399Z" />
<path d="M21.91,8l42.933,64.398l-18.775,9.388l-42.932,-64.399l18.774,-9.387Z" style="fill-opacity: 0.5" />
<path d="M67.535,17.387l-27.262,18.156l21.878,32.818l5.384,2.691l0,-53.665Z" />
<path d="M67.535,17.387l0,53.666l18.774,-9.388l0,-53.665l-18.774,9.387Z" style="fill-opacity: 0.25" />
</svg>

Before

Width:  |  Height:  |  Size: 369 B

After

Width:  |  Height:  |  Size: 433 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 13.5a.5.5 0 00-.5.5.5.5 0 00.5.5.5.5 0 00.5-.5.5.5 0 00-.5-.5M6 17a1 1 0 00-1 1 1 1 0 001 1 1 1 0 001-1 1 1 0 00-1-1m4 3.5a.5.5 0 00-.5.5.5.5 0 00.5.5.5.5 0 00.5-.5.5.5 0 00-.5-.5m-7-11a.5.5 0 00-.5.5.5.5 0 00.5.5.5.5 0 00.5-.5.5.5 0 00-.5-.5M6 13a1 1 0 00-1 1 1 1 0 001 1 1 1 0 001-1 1 1 0 00-1-1m15 .5a.5.5 0 00-.5.5.5.5 0 00.5.5.5.5 0 00.5-.5.5.5 0 00-.5-.5M10 17a1 1 0 00-1 1 1 1 0 001 1 1 1 0 001-1 1 1 0 00-1-1M2.5 5.27l3.78 3.78L6 9a1 1 0 00-1 1 1 1 0 001 1 1 1 0 001-1c0-.1-.03-.19-.06-.28l2.81 2.81c-.71.11-1.25.73-1.25 1.47a1.5 1.5 0 001.5 1.5c.74 0 1.36-.54 1.47-1.25l2.81 2.81A.875.875 0 0014 17a1 1 0 00-1 1 1 1 0 001 1 1 1 0 001-1c0-.1-.03-.19-.06-.28l3.78 3.78L20 20.23 3.77 4 2.5 5.27M14 20.5a.5.5 0 00-.5.5.5.5 0 00.5.5.5.5 0 00.5-.5.5.5 0 00-.5-.5M18 7a1 1 0 001-1 1 1 0 00-1-1 1 1 0 00-1 1 1 1 0 001 1m0 4a1 1 0 001-1 1 1 0 00-1-1 1 1 0 00-1 1 1 1 0 001 1m0 4a1 1 0 001-1 1 1 0 00-1-1 1 1 0 00-1 1 1 1 0 001 1m-8-8a1 1 0 001-1 1 1 0 00-1-1 1 1 0 00-1 1 1 1 0 001 1m11 3.5a.5.5 0 00.5-.5.5.5 0 00-.5-.5.5.5 0 00-.5.5.5.5 0 00.5.5m-11-7a.5.5 0 00.5-.5.5.5 0 00-.5-.5.5.5 0 00-.5.5.5.5 0 00.5.5m4 0a.5.5 0 00.5-.5.5.5 0 00-.5-.5.5.5 0 00-.5.5.5.5 0 00.5.5m-.2 8h.2a1.5 1.5 0 001.5-1.5A1.5 1.5 0 0014 8.5a1.5 1.5 0 00-1.5 1.5v.2c.11.67.63 1.19 1.3 1.3M14 7a1 1 0 001-1 1 1 0 00-1-1 1 1 0 00-1 1 1 1 0 001 1z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 13.5a.5.5 0 0 0-.5.5.5.5 0 0 0 .5.5.5.5 0 0 0 .5-.5.5.5 0 0 0-.5-.5M6 17a1 1 0 0 0-1 1 1 1 0 0 0 1 1 1 1 0 0 0 1-1 1 1 0 0 0-1-1m4 3.5a.5.5 0 0 0-.5.5.5.5 0 0 0 .5.5.5.5 0 0 0 .5-.5.5.5 0 0 0-.5-.5m-7-11a.5.5 0 0 0-.5.5.5.5 0 0 0 .5.5.5.5 0 0 0 .5-.5.5.5 0 0 0-.5-.5M6 13a1 1 0 0 0-1 1 1 1 0 0 0 1 1 1 1 0 0 0 1-1 1 1 0 0 0-1-1m15 .5a.5.5 0 0 0-.5.5.5.5 0 0 0 .5.5.5.5 0 0 0 .5-.5.5.5 0 0 0-.5-.5M10 17a1 1 0 0 0-1 1 1 1 0 0 0 1 1 1 1 0 0 0 1-1 1 1 0 0 0-1-1M2.5 5.27l3.78 3.78L6 9a1 1 0 0 0-1 1 1 1 0 0 0 1 1 1 1 0 0 0 1-1c0-.1-.03-.19-.06-.28l2.81 2.81c-.71.11-1.25.73-1.25 1.47a1.5 1.5 0 0 0 1.5 1.5c.74 0 1.36-.54 1.47-1.25l2.81 2.81c-.09-.03-.18-.06-.28-.06a1 1 0 0 0-1 1 1 1 0 0 0 1 1 1 1 0 0 0 1-1c0-.1-.03-.19-.06-.28l3.78 3.78L20 20.23 3.77 4 2.5 5.27M14 20.5a.5.5 0 0 0-.5.5.5.5 0 0 0 .5.5.5.5 0 0 0 .5-.5.5.5 0 0 0-.5-.5M18 7a1 1 0 0 0 1-1 1 1 0 0 0-1-1 1 1 0 0 0-1 1 1 1 0 0 0 1 1m0 4a1 1 0 0 0 1-1 1 1 0 0 0-1-1 1 1 0 0 0-1 1 1 1 0 0 0 1 1m0 4a1 1 0 0 0 1-1 1 1 0 0 0-1-1 1 1 0 0 0-1 1 1 1 0 0 0 1 1m-8-8a1 1 0 0 0 1-1 1 1 0 0 0-1-1 1 1 0 0 0-1 1 1 1 0 0 0 1 1m11 3.5a.5.5 0 0 0 .5-.5.5.5 0 0 0-.5-.5.5.5 0 0 0-.5.5.5.5 0 0 0 .5.5m-11-7a.5.5 0 0 0 .5-.5.5.5 0 0 0-.5-.5.5.5 0 0 0-.5.5.5.5 0 0 0 .5.5m4 0a.5.5 0 0 0 .5-.5.5.5 0 0 0-.5-.5.5.5 0 0 0-.5.5.5.5 0 0 0 .5.5m-.2 8h.2a1.5 1.5 0 0 0 1.5-1.5A1.5 1.5 0 0 0 14 8.5a1.5 1.5 0 0 0-1.5 1.5v.2c.11.67.63 1.19 1.3 1.3M14 7a1 1 0 0 0 1-1 1 1 0 0 0-1-1 1 1 0 0 0-1 1 1 1 0 0 0 1 1z"/></svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 3H5a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2V5a2 2 0 00-2-2m-3.4 14L12 13.4 8.4 17 7 15.6l3.6-3.6L7 8.4 8.4 7l3.6 3.6L15.6 7 17 8.4 13.4 12l3.6 3.6-1.4 1.4z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 3H5a2 2 0 0 0-2 2V19a2 2 0 0 0 2 2H19a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2m-3.4 14L12 13.4 8.4 17 7 15.6l3.6-3.6L7 8.4 8.4 7l3.6 3.6L15.6 7 17 8.4 13.4 12l3.6 3.6-1.4 1.4z"/></svg>

Before

Width:  |  Height:  |  Size: 240 B

After

Width:  |  Height:  |  Size: 246 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M8.21 12l-1.33.89v-1.78l1.33.89m3.26-2.18V7.34l-4.16 2.78 1.85 1.24 2.31-1.54m5.23.3l-4.17-2.78v2.48l2.31 1.54 1.86-1.24m-9.39 3.76l4.16 2.78v-2.48l-2.31-1.54-1.85 1.24m5.22.3v2.48l4.17-2.78-1.86-1.24-2.31 1.54M12 10.74L10.12 12 12 13.26 13.88 12 12 10.74M22 12c0 5.5-4.5 10-10 10S2 17.5 2 12 6.5 2 12 2s10 4.5 10 10m-3.82-1.88v-.07l-.01-.05-.01-.05c-.01-.01-.01-.02-.02-.04l-.01-.02-.02-.04-.01-.02-.02-.03-.02-.03-.03-.03-.03-.02V9.7l-.04-.02-.01-.01-5.65-3.76a.528.528 0 00-.59 0L6.05 9.67v.01L6 9.7v.02l-.03.02-.03.03-.01.03-.03.03-.01.02-.02.04-.01.02-.02.04V10h-.01l-.01.05v3.9l.01.05h.01v.05c.01.01.01.02.02.04l.01.02.02.04.01.02.02.03.02.03.03.03.03.02v.02l.04.02.01.01 5.66 3.77c.08.06.19.08.29.08.1 0 .21-.03.3-.08l5.65-3.77.01-.01.04-.02v-.02l.03-.02.03-.03.02-.03.02-.03.01-.02.02-.04.01-.02.02-.04V14h.01l.01-.05v-3.83m-1.06 2.77v-1.78l-1.33.89 1.33.89z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M8.21 12l-1.33.89v-1.78l1.33.89m3.26-2.18V7.34l-4.16 2.78 1.85 1.24 2.31-1.54m5.23.3l-4.17-2.78v2.48l2.31 1.54 1.86-1.24m-9.39 3.76l4.16 2.78v-2.48l-2.31-1.54-1.85 1.24m5.22.3v2.48l4.17-2.78-1.86-1.24-2.31 1.54M12 10.74L10.12 12 12 13.26 13.88 12 12 10.74M22 12c0 5.5-4.5 10-10 10S2 17.5 2 12 6.5 2 12 2s10 4.5 10 10m-3.82-1.88v-.07l-.01-.05-.01-.05c-.01-.01-.01-.02-.02-.04l-.01-.02-.02-.04-.01-.02-.02-.03-.02-.03-.03-.03-.03-.02V9.7l-.04-.02-.01-.01-5.65-3.76a.528.528 0 0 0-.59 0L6.05 9.67v.01L6 9.7v.02l-.03.02-.03.03-.01.03-.03.03-.01.02-.02.04-.01.02-.02.04V10h-.01l-.01.05V13.95l.01.05h.01v.05c.01.01.01.02.02.04l.01.02.02.04.01.02.02.03.02.03.03.03.03.02v.02l.04.02.01.01 5.66 3.77c.08.06.19.08.29.08.1 0 .21-.03.3-.08l5.65-3.77.01-.01.04-.02v-.02l.03-.02.03-.03.02-.03.02-.03.01-.02.02-.04.01-.02.02-.04V14h.01l.01-.05V10.12m-1.06 2.77v-1.78l-1.33.89 1.33.89z"/></svg>

Before

Width:  |  Height:  |  Size: 944 B

After

Width:  |  Height:  |  Size: 947 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 3a9 9 0 000 18c2 0 3.92-.66 5.5-1.86l-1.44-1.44A6.995 6.995 0 015 12c0-3.87 3.13-7 7-7s7 3.13 7 7h-3l4 4 4-4h-3a9 9 0 00-9-9M7.71 13.16c-.09.07-.12.19-.07.29l.9 1.55c.06.12.18.12.28.12l1.13-.45c.24.16.49.3.75.42l.18 1.19c.02.11.12.19.22.19h1.8c.1.03.21-.06.23-.17l.18-1.18c.27-.12.53-.27.76-.45l1.12.45c.11.04.23-.01.28-.12l.9-1.5c.05-.12.02-.24-.06-.31l-1-.74c.03-.3.03-.6 0-.9l1-.76c.09-.07.11-.18.06-.29l-.9-1.55a.226.226 0 00-.28-.1l-1.12.45c-.24-.17-.5-.3-.77-.42l-.17-1.19a.244.244 0 00-.23-.19h-1.76c-.1 0-.19.07-.21.17l-.17 1.18c-.26.12-.53.27-.76.45l-1.15-.42a.234.234 0 00-.29.12l-.91 1.5c-.05.12-.02.24.06.31l1 .74c-.02.15-.02.3 0 .45-.01.15-.01.3 0 .45l-1 .74m4.29.31c-.84 0-1.5-.68-1.5-1.5 0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5-.67 1.5-1.5 1.5"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 3a9 9 0 0 0 0 18c2 0 3.92-.66 5.5-1.86l-1.44-1.44A6.995 6.995 0 0 1 5 12c0-3.87 3.13-7 7-7s7 3.13 7 7h-3l4 4 4-4h-3a9 9 0 0 0-9-9M7.71 13.16c-.09.07-.12.19-.07.29l.9 1.55c.06.12.18.12.28.12l1.13-.45c.24.16.49.3.75.42l.18 1.19c.02.11.12.19.22.19h1.8c.1.03.21-.06.23-.17l.18-1.18c.27-.12.53-.27.76-.45l1.12.45c.11.04.23-.01.28-.12l.9-1.5c.05-.12.02-.24-.06-.31l-1-.74c.03-.3.03-.6 0-.9l1-.76c.09-.07.11-.18.06-.29l-.9-1.55c-.06-.1-.17-.14-.28-.1l-1.12.45c-.24-.17-.5-.3-.77-.42l-.17-1.19a.244.244 0 0 0-.23-.19h-1.76c-.1 0-.19.07-.21.17l-.17 1.18c-.26.12-.53.27-.76.45l-1.15-.42a.234.234 0 0 0-.29.12l-.91 1.5c-.05.12-.02.24.06.31l1 .74c-.02.15-.02.3 0 .45-.01.15-.01.3 0 .45l-1 .74m4.29.31c-.84 0-1.5-.68-1.5-1.5 0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5-.67 1.5-1.5 1.5"/></svg>

Before

Width:  |  Height:  |  Size: 836 B

After

Width:  |  Height:  |  Size: 845 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16.79 23c-.42-.17-.72-.55-.79-1-.05-.26 0-.44.4-1.16 1.5-2.7 2.27-5.75 2.23-8.84.04-3-.69-5.93-2.13-8.56-.21-.44-.4-.86-.56-1.31.06-.38.25-.73.56-.94.45-.24 1-.19 1.41.09.28.36.52.72.72 1.14A21.4 21.4 0 0120.8 9c.23 1.81.26 3.65.09 5.47-.31 2.34-1 4.6-2.06 6.71-.64 1.28-1 1.82-1.38 1.82h-.66m-4.36-2.21c-.57-.16-.93-.74-.81-1.32 0-.12.31-.67.59-1.23 1.18-2.27 1.69-4.83 1.46-7.38-.14-1.83-.67-3.61-1.54-5.22-.63-1.26-.67-1.46-.3-2 .44-.49 1.17-.56 1.71-.14.72 1.06 1.29 2.22 1.71 3.44 1.28 3.79 1.08 7.92-.56 11.56-.84 1.89-1.43 2.5-2.26 2.24v.05m-4.5-2.23a1.31 1.31 0 01-.73-.86c0-.2 0-.46.45-1.26a8.986 8.986 0 000-8.68C7 6.5 7 6.24 7.53 5.76c.19-.22.47-.33.77-.29.64 0 1 .31 1.54 1.44A10.51 10.51 0 0111.12 12c.04 1.81-.4 3.61-1.27 5.2-.54 1.05-.81 1.3-1.35 1.39-.19.02-.39 0-.57-.09v.06m-4.21-2.13c-.33-.16-.59-.43-.72-.78-.1-.35 0-.65.4-1.29.5-.68.74-1.52.69-2.36.07-.85-.16-1.69-.65-2.39A6.11 6.11 0 013 8.82c-.11-.63.31-1.23 1-1.35.54-.1.92.13 1.42.89a6.619 6.619 0 010 7.27c-.51.77-1.09 1-1.69.8h-.01z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16.79 23c-.42-.17-.72-.55-.79-1-.05-.26 0-.44.4-1.16 1.5-2.7 2.27-5.75 2.23-8.84.04-3-.69-5.93-2.13-8.56-.21-.44-.4-.86-.56-1.31.06-.38.25-.73.56-.94.45-.24 1-.19 1.41.09.28.36.52.72.72 1.14A21.4 21.4 0 0 1 20.8 9c.23 1.81.26 3.65.09 5.47-.31 2.34-1 4.6-2.06 6.71-.64 1.28-1 1.82-1.38 1.82H16.79m-4.36-2.21c-.57-.16-.93-.74-.81-1.32 0-.12.31-.67.59-1.23 1.18-2.27 1.69-4.83 1.46-7.38-.14-1.83-.67-3.61-1.54-5.22-.63-1.26-.67-1.46-.3-2 .44-.49 1.17-.56 1.71-.14.72 1.06 1.29 2.22 1.71 3.44 1.28 3.79 1.08 7.92-.56 11.56-.84 1.89-1.43 2.5-2.26 2.24v.05m-4.5-2.23a1.31 1.31 0 0 1-.73-.86c0-.2 0-.46.45-1.26a8.986 8.986 0 0 0 0-8.68C7 6.5 7 6.24 7.53 5.76c.19-.22.47-.33.77-.29.64 0 1 .31 1.54 1.44A10.51 10.51 0 0 1 11.12 12c.04 1.81-.4 3.61-1.27 5.2-.54 1.05-.81 1.3-1.35 1.39-.19.02-.39 0-.57-.09v.06m-4.21-2.13c-.33-.16-.59-.43-.72-.78-.1-.35 0-.65.4-1.29.5-.68.74-1.52.69-2.36.07-.85-.16-1.69-.65-2.39A6.11 6.11 0 0 1 3 8.82c-.11-.63.31-1.23 1-1.35.54-.1.92.13 1.42.89a6.619 6.619 0 0 1 0 7.27c-.51.77-1.09 1-1.69.8h-.01z"/></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 8.5c0 2.7 2.75 5.37 7 9.24V7.2C10.42 5.91 9 5 7.5 5 5.5 5 4 6.5 4 8.5m9-1.3v13.24l-1 .91-1.45-1.32C5.4 15.36 2 12.27 2 8.5 2 5.41 4.42 3 7.5 3 10 3 13 5 13 7.2z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 8.5c0 2.7 2.75 5.37 7 9.24V7.2C10.42 5.91 9 5 7.5 5 5.5 5 4 6.5 4 8.5m9-1.3V20.44l-1 .91-1.45-1.32C5.4 15.36 2 12.27 2 8.5 2 5.41 4.42 3 7.5 3 10 3 13 5 13 7.2z"/></svg>

Before

Width:  |  Height:  |  Size: 241 B

After

Width:  |  Height:  |  Size: 241 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 7.2v13.24l-1 .91-1.45-1.32C5.4 15.36 2 12.27 2 8.5 2 5.41 4.42 3 7.5 3 10 3 13 5 13 7.2z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 7.2V20.44l-1 .91-1.45-1.32C5.4 15.36 2 12.27 2 8.5 2 5.41 4.42 3 7.5 3 10 3 13 5 13 7.2z"/></svg>

Before

Width:  |  Height:  |  Size: 170 B

After

Width:  |  Height:  |  Size: 170 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15 12h1.5v4.25l2.86 1.69-.75 1.22L15 17v-5m1-3c.69 0 1.37.1 2 .29V4.7l-3 1.16v3.21c.33-.07.66-.07 1-.07m7 7a7 7 0 01-7 7c-3 0-5.6-1.92-6.58-4.6L8 17.9l-5.34 2.07-.16.03a.5.5 0 01-.5-.5V4.38c0-.23.15-.41.36-.48L8 2l6 2.1 5.34-2.07.16-.03a.5.5 0 01.5.5v7.75c1.81 1.25 3 3.37 3 5.75M9 16c0-2.79 1.63-5.2 4-6.33v-3.8l-4-1.4V16m7-5a5 5 0 00-5 5 5 5 0 005 5 5 5 0 005-5 5 5 0 00-5-5M4 5.46v11.85l3-1.16V4.45L4 5.46z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15 12h1.5v4.25l2.86 1.69-.75 1.22L15 17v-5m1-3c.69 0 1.37.1 2 .29V4.7l-3 1.16v3.21c.33-.07.66-.07 1-.07m7 7a7 7 0 0 1-7 7c-3 0-5.6-1.92-6.58-4.6L8 17.9l-5.34 2.07-.16.03a.5.5 0 0 1-.5-.5V4.38c0-.23.15-.41.36-.48L8 2l6 2.1 5.34-2.07.16-.03a.5.5 0 0 1 .5.5v7.75c1.81 1.25 3 3.37 3 5.75M9 16c0-2.79 1.63-5.2 4-6.33v-3.8l-4-1.4v11.66V16m7-5a5 5 0 0 0-5 5 5 5 0 0 0 5 5 5 5 0 0 0 5-5 5 5 0 0 0-5-5M4 5.46v11.85l3-1.16V4.45L4 5.46z"/></svg>

Before

Width:  |  Height:  |  Size: 488 B

After

Width:  |  Height:  |  Size: 504 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M2 12a10 10 0 0010 10 10 10 0 0010-10A10 10 0 0012 2 10 10 0 002 12m3.24 6.76A9.493 9.493 0 012.44 12c0-2.55.99-4.95 2.8-6.76A9.493 9.493 0 0112 2.44c2.55 0 4.95.99 6.76 2.8a9.493 9.493 0 012.8 6.76c0 2.55-.99 4.95-2.8 6.76a9.493 9.493 0 01-6.76 2.8c-2.55 0-4.95-.99-6.76-2.8M6.35 9.5c-2.01 2.29-1.62 4.18-1.62 4.18s.55-1.3 1.88-2.68c.64-.63 1.11-.85 1.43-.85.36 0 .53.26.53.5v4.64c0 .46-.3.56-.57.55a1.5 1.5 0 01-.45-.08C8.92 17.73 12.19 18 12.19 18l1.44-1.5h.04L15 17.63c2.39-1.42 3.55-4.05 3.55-4.05-1.05 1.12-1.76 1.39-2.16 1.38-.36 0-.51-.21-.51-.21-.01-.1-.06-5.85.01-5.85.42-.77 1.74-2.34 1.74-2.34-2.47.49-3.82 2.1-3.82 2.1-.4-.31-1.22-.26-1.22-.26.38.21.76.81.76 1.32v4.93s-.85.73-1.47.73c-.38 0-.61-.21-.74-.38-.09-.12-.14-.21-.14-.21v-6.1c-.07.06-.18.11-.29.11-.14-.01-.28-.07-.37-.27-.08-.15-.12-.38-.12-.7 0-1.13 1.28-1.87 1.28-1.87-1.63.43-3.14 1.26-5.15 3.54"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2 10 10 0 0 0 2 12m3.24 6.76A9.493 9.493 0 0 1 2.44 12c0-2.55.99-4.95 2.8-6.76A9.493 9.493 0 0 1 12 2.44c2.55 0 4.95.99 6.76 2.8a9.493 9.493 0 0 1 2.8 6.76c0 2.55-.99 4.95-2.8 6.76a9.493 9.493 0 0 1-6.76 2.8c-2.55 0-4.95-.99-6.76-2.8M6.35 9.5c-2.01 2.29-1.62 4.18-1.62 4.18s.55-1.3 1.88-2.68c.64-.63 1.11-.85 1.43-.85.36 0 .53.26.53.5v4.64c0 .46-.3.56-.57.55-.23 0-.45-.08-.45-.08C8.92 17.73 12.19 18 12.19 18l1.44-1.5h.04L15 17.63c2.39-1.42 3.55-4.05 3.55-4.05-1.05 1.12-1.76 1.39-2.16 1.38-.36 0-.51-.21-.51-.21-.01-.1-.06-5.85.01-5.85.42-.77 1.74-2.34 1.74-2.34-2.47.49-3.82 2.1-3.82 2.1-.4-.31-1.22-.26-1.22-.26.38.21.76.81.76 1.32v4.93s-.85.73-1.47.73c-.38 0-.61-.21-.74-.38-.09-.12-.14-.21-.14-.21v-6.1c-.07.06-.18.11-.29.11-.14-.01-.28-.07-.37-.27-.08-.15-.12-.38-.12-.7 0-1.13 1.28-1.87 1.28-1.87-1.63.43-3.14 1.26-5.15 3.54"/></svg>

Before

Width:  |  Height:  |  Size: 951 B

After

Width:  |  Height:  |  Size: 967 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 3.77l-.75.84S9.97 6.06 8.68 7.94C7.39 9.82 6 12.07 6 14.23a6 6 0 006 6 6 6 0 006-6c0-2.16-1.39-4.41-2.68-6.29a38.7 38.7 0 00-2.57-3.33L12 3.77m0 3.13c.44.52.84.95 1.68 2.17 1.21 1.76 2.32 4 2.32 5.16 0 2.22-1.78 4-4 4-2.22 0-4-1.78-4-4 0-1.16 1.11-3.4 2.32-5.16.84-1.22 1.24-1.65 1.68-2.17z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 3.77l-.75.84S9.97 6.06 8.68 7.94C7.39 9.82 6 12.07 6 14.23a6 6 0 0 0 6 6 6 6 0 0 0 6-6c0-2.16-1.39-4.41-2.68-6.29-1.29-1.88-2.57-3.33-2.57-3.33L12 3.77m0 3.13c.44.52.84.95 1.68 2.17 1.21 1.76 2.32 4 2.32 5.16 0 2.22-1.78 4-4 4-2.22 0-4-1.78-4-4 0-1.16 1.11-3.4 2.32-5.16.84-1.22 1.24-1.65 1.68-2.17z"/></svg>

Before

Width:  |  Height:  |  Size: 372 B

After

Width:  |  Height:  |  Size: 381 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3.62 8H5v7h2V8h4v2h2V8h4v7h2V8h1.61c.55 0 1-.44 1-1a.86.86 0 00-.05-.32L19 2H5L2.72 6.55A.998.998 0 003.62 8m2.62-4h11.52l1 2H5.24l1-2M2 16v2h2v4h16v-4h2v-2H2m16 4H6v-2h12v2m-4.07-9c.28 0 .5.22.5.5v.06l-.38 3c-.05.25-.24.44-.49.44h-3.12c-.25 0-.44-.19-.49-.44l-.38-3A.51.51 0 0110 11h3.93z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3.62 8H5v7h2V8h4v2h2V8h4v7h2V8h1.61c.55 0 1-.44 1-1a.86.86 0 0 0-.05-.32L19 2H5L2.72 6.55A.998.998 0 0 0 3.62 8m2.62-4h11.52l1 2H5.24l1-2M2 16v2h2v4h16v-4h2v-2H2m16 4H6v-2h12v2m-4.07-9c.28 0 .5.22.5.5v.06l-.38 3c-.05.25-.24.44-.49.44h-3.12c-.25 0-.44-.19-.49-.44l-.38-3A.51.51 0 0 1 10 11H13.93z"/></svg>

Before

Width:  |  Height:  |  Size: 368 B

After

Width:  |  Height:  |  Size: 374 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14.97 18.95l-2.56-6.03c-1.02 1.99-2.14 4.08-3.1 6.03-.01.01-.47 0-.47 0C7.37 15.5 5.85 12.1 4.37 8.68 4.03 7.84 2.83 6.5 2 6.5v-.45h5.06v.45c-.6 0-1.62.4-1.36 1.05.72 1.54 3.24 7.51 3.93 9.03.47-.94 1.8-3.42 2.37-4.47-.45-.88-1.87-4.18-2.29-5-.32-.54-1.13-.61-1.75-.61 0-.15.01-.25 0-.44l4.46.01v.4c-.61.03-1.18.24-.92.82.6 1.24.95 2.13 1.5 3.28.17-.34 1.07-2.19 1.5-3.16.26-.65-.13-.91-1.21-.91.01-.12.01-.33.01-.43 1.39-.01 3.48-.01 3.85-.02v.42c-.71.03-1.44.41-1.82.99L13.5 11.3c.18.51 1.96 4.46 2.15 4.9l3.85-8.83c-.3-.72-1.16-.87-1.5-.87v-.45l4 .03v.42c-.88 0-1.43.5-1.75 1.25-.8 1.79-3.25 7.49-4.85 11.2h-.43z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14.97 18.95l-2.56-6.03c-1.02 1.99-2.14 4.08-3.1 6.03-.01.01-.47 0-.47 0C7.37 15.5 5.85 12.1 4.37 8.68 4.03 7.84 2.83 6.5 2 6.5v-.45h5.06v.45c-.6 0-1.62.4-1.36 1.05.72 1.54 3.24 7.51 3.93 9.03.47-.94 1.8-3.42 2.37-4.47-.45-.88-1.87-4.18-2.29-5-.32-.54-1.13-.61-1.75-.61 0-.15.01-.25 0-.44l4.46.01v.4c-.61.03-1.18.24-.92.82.6 1.24.95 2.13 1.5 3.28.17-.34 1.07-2.19 1.5-3.16.26-.65-.13-.91-1.21-.91.01-.12.01-.33.01-.43 1.39-.01 3.48-.01 3.85-.02v.42c-.71.03-1.44.41-1.82.99L13.5 11.3c.18.51 1.96 4.46 2.15 4.9l3.85-8.83c-.3-.72-1.16-.87-1.5-.87v-.45l4 .03V6.5c-.88 0-1.43.5-1.75 1.25-.8 1.79-3.25 7.49-4.85 11.2h-.43z"/></svg>

Before

Width:  |  Height:  |  Size: 694 B

After

Width:  |  Height:  |  Size: 694 B

View File

@ -28,4 +28,5 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE. PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */ ***************************************************************************** */
//# sourceMappingURL=bundle.js.map //# sourceMappingURL=bundle.ee96dedf.min.js

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,370 +0,0 @@
[data-md-color-accent=red] {
--md-accent-fg-color: hsla(348, 100%, 55%, 1);
--md-accent-fg-color--transparent: hsla(348, 100%, 55%, 0.1);
--md-accent-bg-color: hsla(0, 0%, 100%, 1);
--md-accent-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-accent=pink] {
--md-accent-fg-color: hsla(339, 100%, 48%, 1);
--md-accent-fg-color--transparent: hsla(339, 100%, 48%, 0.1);
--md-accent-bg-color: hsla(0, 0%, 100%, 1);
--md-accent-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-accent=purple] {
--md-accent-fg-color: hsla(291, 96%, 62%, 1);
--md-accent-fg-color--transparent: hsla(291, 96%, 62%, 0.1);
--md-accent-bg-color: hsla(0, 0%, 100%, 1);
--md-accent-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-accent=deep-purple] {
--md-accent-fg-color: hsla(256, 100%, 65%, 1);
--md-accent-fg-color--transparent: hsla(256, 100%, 65%, 0.1);
--md-accent-bg-color: hsla(0, 0%, 100%, 1);
--md-accent-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-accent=indigo] {
--md-accent-fg-color: hsla(231, 99%, 66%, 1);
--md-accent-fg-color--transparent: hsla(231, 99%, 66%, 0.1);
--md-accent-bg-color: hsla(0, 0%, 100%, 1);
--md-accent-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-accent=blue] {
--md-accent-fg-color: hsla(218, 100%, 63%, 1);
--md-accent-fg-color--transparent: hsla(218, 100%, 63%, 0.1);
--md-accent-bg-color: hsla(0, 0%, 100%, 1);
--md-accent-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-accent=light-blue] {
--md-accent-fg-color: hsla(203, 100%, 46%, 1);
--md-accent-fg-color--transparent: hsla(203, 100%, 46%, 0.1);
--md-accent-bg-color: hsla(0, 0%, 100%, 1);
--md-accent-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-accent=cyan] {
--md-accent-fg-color: hsla(188, 100%, 42%, 1);
--md-accent-fg-color--transparent: hsla(188, 100%, 42%, 0.1);
--md-accent-bg-color: hsla(0, 0%, 100%, 1);
--md-accent-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-accent=teal] {
--md-accent-fg-color: hsla(172, 100%, 37%, 1);
--md-accent-fg-color--transparent: hsla(172, 100%, 37%, 0.1);
--md-accent-bg-color: hsla(0, 0%, 100%, 1);
--md-accent-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-accent=green] {
--md-accent-fg-color: hsla(145, 100%, 39%, 1);
--md-accent-fg-color--transparent: hsla(145, 100%, 39%, 0.1);
--md-accent-bg-color: hsla(0, 0%, 100%, 1);
--md-accent-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-accent=light-green] {
--md-accent-fg-color: hsla(97, 81%, 48%, 1);
--md-accent-fg-color--transparent: hsla(97, 81%, 48%, 0.1);
--md-accent-bg-color: hsla(0, 0%, 100%, 1);
--md-accent-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-accent=lime] {
--md-accent-fg-color: hsla(75, 100%, 46%, 1);
--md-accent-fg-color--transparent: hsla(75, 100%, 46%, 0.1);
--md-accent-bg-color: hsla(0, 0%, 0%, 0.87);
--md-accent-bg-color--light: hsla(0, 0%, 0%, 0.54);
}
[data-md-color-accent=yellow] {
--md-accent-fg-color: hsla(50, 100%, 50%, 1);
--md-accent-fg-color--transparent: hsla(50, 100%, 50%, 0.1);
--md-accent-bg-color: hsla(0, 0%, 0%, 0.87);
--md-accent-bg-color--light: hsla(0, 0%, 0%, 0.54);
}
[data-md-color-accent=amber] {
--md-accent-fg-color: hsla(40, 100%, 50%, 1);
--md-accent-fg-color--transparent: hsla(40, 100%, 50%, 0.1);
--md-accent-bg-color: hsla(0, 0%, 0%, 0.87);
--md-accent-bg-color--light: hsla(0, 0%, 0%, 0.54);
}
[data-md-color-accent=orange] {
--md-accent-fg-color: hsla(34, 100%, 50%, 1);
--md-accent-fg-color--transparent: hsla(34, 100%, 50%, 0.1);
--md-accent-bg-color: hsla(0, 0%, 0%, 0.87);
--md-accent-bg-color--light: hsla(0, 0%, 0%, 0.54);
}
[data-md-color-accent=deep-orange] {
--md-accent-fg-color: hsla(14, 100%, 63%, 1);
--md-accent-fg-color--transparent: hsla(14, 100%, 63%, 0.1);
--md-accent-bg-color: hsla(0, 0%, 100%, 1);
--md-accent-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-primary=red] {
--md-primary-fg-color: hsla(1, 83%, 63%, 1);
--md-primary-fg-color--light: hsla(0, 69%, 67%, 1);
--md-primary-fg-color--dark: hsla(1, 77%, 55%, 1);
--md-primary-bg-color: hsla(0, 0%, 100%, 1);
--md-primary-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-primary=pink] {
--md-primary-fg-color: hsla(340, 82%, 52%, 1);
--md-primary-fg-color--light: hsla(340, 82%, 59%, 1);
--md-primary-fg-color--dark: hsla(336, 78%, 43%, 1);
--md-primary-bg-color: hsla(0, 0%, 100%, 1);
--md-primary-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-primary=purple] {
--md-primary-fg-color: hsla(291, 47%, 51%, 1);
--md-primary-fg-color--light: hsla(291, 47%, 60%, 1);
--md-primary-fg-color--dark: hsla(287, 65%, 40%, 1);
--md-primary-bg-color: hsla(0, 0%, 100%, 1);
--md-primary-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-primary=deep-purple] {
--md-primary-fg-color: hsla(262, 47%, 55%, 1);
--md-primary-fg-color--light: hsla(262, 47%, 63%, 1);
--md-primary-fg-color--dark: hsla(262, 52%, 47%, 1);
--md-primary-bg-color: hsla(0, 0%, 100%, 1);
--md-primary-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-primary=indigo] {
--md-primary-fg-color: hsla(231, 48%, 48%, 1);
--md-primary-fg-color--light: hsla(231, 44%, 56%, 1);
--md-primary-fg-color--dark: hsla(232, 54%, 41%, 1);
--md-primary-bg-color: hsla(0, 0%, 100%, 1);
--md-primary-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-primary=blue] {
--md-primary-fg-color: hsla(207, 90%, 54%, 1);
--md-primary-fg-color--light: hsla(207, 90%, 61%, 1);
--md-primary-fg-color--dark: hsla(210, 79%, 46%, 1);
--md-primary-bg-color: hsla(0, 0%, 100%, 1);
--md-primary-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-primary=light-blue] {
--md-primary-fg-color: hsla(199, 98%, 48%, 1);
--md-primary-fg-color--light: hsla(199, 92%, 56%, 1);
--md-primary-fg-color--dark: hsla(201, 98%, 41%, 1);
--md-primary-bg-color: hsla(0, 0%, 100%, 1);
--md-primary-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-primary=cyan] {
--md-primary-fg-color: hsla(187, 100%, 42%, 1);
--md-primary-fg-color--light: hsla(187, 71%, 50%, 1);
--md-primary-fg-color--dark: hsla(186, 100%, 33%, 1);
--md-primary-bg-color: hsla(0, 0%, 100%, 1);
--md-primary-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-primary=teal] {
--md-primary-fg-color: hsla(174, 100%, 29%, 1);
--md-primary-fg-color--light: hsla(174, 63%, 40%, 1);
--md-primary-fg-color--dark: hsla(173, 100%, 24%, 1);
--md-primary-bg-color: hsla(0, 0%, 100%, 1);
--md-primary-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-primary=green] {
--md-primary-fg-color: hsla(122, 39%, 49%, 1);
--md-primary-fg-color--light: hsla(123, 38%, 57%, 1);
--md-primary-fg-color--dark: hsla(123, 43%, 39%, 1);
--md-primary-bg-color: hsla(0, 0%, 100%, 1);
--md-primary-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-primary=light-green] {
--md-primary-fg-color: hsla(88, 50%, 53%, 1);
--md-primary-fg-color--light: hsla(88, 50%, 60%, 1);
--md-primary-fg-color--dark: hsla(92, 48%, 42%, 1);
--md-primary-bg-color: hsla(0, 0%, 100%, 1);
--md-primary-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-primary=lime] {
--md-primary-fg-color: hsla(66, 70%, 54%, 1);
--md-primary-fg-color--light: hsla(66, 70%, 61%, 1);
--md-primary-fg-color--dark: hsla(62, 61%, 44%, 1);
--md-primary-bg-color: hsla(0, 0%, 0%, 0.87);
--md-primary-bg-color--light: hsla(0, 0%, 0%, 0.54);
}
[data-md-color-primary=yellow] {
--md-primary-fg-color: hsla(54, 100%, 62%, 1);
--md-primary-fg-color--light: hsla(54, 100%, 67%, 1);
--md-primary-fg-color--dark: hsla(43, 96%, 58%, 1);
--md-primary-bg-color: hsla(0, 0%, 0%, 0.87);
--md-primary-bg-color--light: hsla(0, 0%, 0%, 0.54);
}
[data-md-color-primary=amber] {
--md-primary-fg-color: hsla(45, 100%, 51%, 1);
--md-primary-fg-color--light: hsla(45, 100%, 58%, 1);
--md-primary-fg-color--dark: hsla(38, 100%, 50%, 1);
--md-primary-bg-color: hsla(0, 0%, 0%, 0.87);
--md-primary-bg-color--light: hsla(0, 0%, 0%, 0.54);
}
[data-md-color-primary=orange] {
--md-primary-fg-color: hsla(36, 100%, 57%, 1);
--md-primary-fg-color--light: hsla(36, 100%, 57%, 1);
--md-primary-fg-color--dark: hsla(33, 100%, 49%, 1);
--md-primary-bg-color: hsla(0, 0%, 0%, 0.87);
--md-primary-bg-color--light: hsla(0, 0%, 0%, 0.54);
}
[data-md-color-primary=deep-orange] {
--md-primary-fg-color: hsla(14, 100%, 63%, 1);
--md-primary-fg-color--light: hsla(14, 100%, 70%, 1);
--md-primary-fg-color--dark: hsla(14, 91%, 54%, 1);
--md-primary-bg-color: hsla(0, 0%, 100%, 1);
--md-primary-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-primary=brown] {
--md-primary-fg-color: hsla(16, 25%, 38%, 1);
--md-primary-fg-color--light: hsla(16, 18%, 47%, 1);
--md-primary-fg-color--dark: hsla(14, 26%, 29%, 1);
--md-primary-bg-color: hsla(0, 0%, 100%, 1);
--md-primary-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-primary=grey] {
--md-primary-fg-color: hsla(0, 0%, 46%, 1);
--md-primary-fg-color--light: hsla(0, 0%, 62%, 1);
--md-primary-fg-color--dark: hsla(0, 0%, 38%, 1);
--md-primary-bg-color: hsla(0, 0%, 100%, 1);
--md-primary-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-primary=blue-grey] {
--md-primary-fg-color: hsla(199, 18%, 40%, 1);
--md-primary-fg-color--light: hsla(200, 18%, 46%, 1);
--md-primary-fg-color--dark: hsla(199, 18%, 33%, 1);
--md-primary-bg-color: hsla(0, 0%, 100%, 1);
--md-primary-bg-color--light: hsla(0, 0%, 100%, 0.7);
}
[data-md-color-primary=white] {
--md-primary-fg-color: hsla(0, 0%, 100%, 1);
--md-primary-fg-color--light: hsla(0, 0%, 100%, 0.7);
--md-primary-fg-color--dark: hsla(0, 0%, 0%, 0.07);
--md-primary-bg-color: hsla(0, 0%, 0%, 0.87);
--md-primary-bg-color--light: hsla(0, 0%, 0%, 0.54);
--md-typeset-a-color: hsla(231, 48%, 48%, 1);
}
@media screen and (min-width: 60em) {
[data-md-color-primary=white] .md-search__input {
background-color: rgba(0, 0, 0, 0.07);
}
[data-md-color-primary=white] .md-search__input + .md-search__icon {
color: rgba(0, 0, 0, 0.87);
}
[data-md-color-primary=white] .md-search__input::-webkit-input-placeholder {
color: rgba(0, 0, 0, 0.54);
}
[data-md-color-primary=white] .md-search__input::-moz-placeholder {
color: rgba(0, 0, 0, 0.54);
}
[data-md-color-primary=white] .md-search__input::-ms-input-placeholder {
color: rgba(0, 0, 0, 0.54);
}
[data-md-color-primary=white] .md-search__input::placeholder {
color: rgba(0, 0, 0, 0.54);
}
[data-md-color-primary=white] .md-search__input:hover {
background-color: rgba(0, 0, 0, 0.32);
}
}
@media screen and (min-width: 76.25em) {
[data-md-color-primary=white] .md-tabs {
border-bottom: 0.05rem solid rgba(0, 0, 0, 0.07);
}
}
[data-md-color-primary=black] {
--md-primary-fg-color: hsla(0, 0%, 0%, 1);
--md-primary-fg-color--light: hsla(0, 0%, 0%, 0.54);
--md-primary-fg-color--dark: hsla(0, 0%, 0%, 1);
--md-primary-bg-color: hsla(0, 0%, 100%, 1);
--md-primary-bg-color--light: hsla(0, 0%, 100%, 0.7);
--md-typeset-a-color: hsla(231, 48%, 48%, 1);
}
[data-md-color-primary=black] .md-header {
background-color: black;
}
@media screen and (max-width: 59.9375em) {
[data-md-color-primary=black] .md-nav__source {
background-color: rgba(0, 0, 0, 0.87);
}
}
@media screen and (min-width: 60em) {
[data-md-color-primary=black] .md-search__input {
background-color: rgba(255, 255, 255, 0.12);
}
[data-md-color-primary=black] .md-search__input:hover {
background-color: rgba(255, 255, 255, 0.3);
}
}
@media screen and (max-width: 76.1875em) {
html [data-md-color-primary=black] .md-nav--primary .md-nav__title[for=__drawer] {
background-color: black;
}
}
@media screen and (min-width: 76.25em) {
[data-md-color-primary=black] .md-tabs {
background-color: black;
}
}
@media screen {
[data-md-color-scheme=slate] {
--md-hue: 232;
--md-default-fg-color: hsla(var(--md-hue), 75%, 95%, 1);
--md-default-fg-color--light: hsla(var(--md-hue), 75%, 90%, 0.62);
--md-default-fg-color--lighter: hsla(var(--md-hue), 75%, 90%, 0.32);
--md-default-fg-color--lightest: hsla(var(--md-hue), 75%, 90%, 0.12);
--md-default-bg-color: hsla(var(--md-hue), 15%, 21%, 1);
--md-default-bg-color--light: hsla(var(--md-hue), 15%, 21%, 0.54);
--md-default-bg-color--lighter: hsla(var(--md-hue), 15%, 21%, 0.26);
--md-default-bg-color--lightest: hsla(var(--md-hue), 15%, 21%, 0.07);
--md-code-fg-color: hsla(var(--md-hue), 18%, 86%, 1);
--md-code-bg-color: hsla(var(--md-hue), 15%, 15%, 1);
--md-code-hl-color: hsla(218, 100%, 63%, 0.15);
--md-code-hl-number-color: hsla(6, 74%, 63%, 1);
--md-code-hl-special-color: hsla(340, 83%, 66%, 1);
--md-code-hl-function-color: hsla(291, 57%, 65%, 1);
--md-code-hl-constant-color: hsla(250, 62%, 70%, 1);
--md-code-hl-keyword-color: hsla(219, 66%, 64%, 1);
--md-code-hl-string-color: hsla(150, 58%, 44%, 1);
--md-typeset-a-color: var(--md-primary-fg-color--light);
--md-typeset-mark-color: hsla(218, 100%, 63%, 0.3);
--md-typeset-kbd-color: hsla(var(--md-hue), 15%, 94%, 0.12);
--md-typeset-kbd-accent-color: hsla(var(--md-hue), 15%, 94%, 0.2);
--md-typeset-kbd-border-color: hsla(var(--md-hue), 15%, 14%, 1);
--md-admonition-bg-color: hsla(var(--md-hue), 0%, 100%, 0.025);
--md-footer-bg-color: hsla(var(--md-hue), 15%, 12%, 0.87);
--md-footer-bg-color--dark: hsla(var(--md-hue), 15%, 10%, 1);
}
[data-md-color-scheme=slate][data-md-color-primary=black], [data-md-color-scheme=slate][data-md-color-primary=white] {
--md-typeset-a-color: hsla(231, 44%, 56%, 1);
}
}
/*# sourceMappingURL=palette.css.map */

View File

@ -1 +0,0 @@
{"version":3,"sources":["../../../src/assets/stylesheets/src/assets/stylesheets/palette/_accent.scss","../../../src/assets/stylesheets/palette.scss","../../../src/assets/stylesheets/src/assets/stylesheets/palette/_primary.scss","../../../src/assets/stylesheets/src/assets/stylesheets/utilities/_break.scss","../../../src/assets/stylesheets/src/assets/stylesheets/palette/_scheme.scss"],"names":[],"mappings":"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","file":"palette.css"}

View File

@ -39,10 +39,10 @@
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% block styles %} {% block styles %}
<link rel="stylesheet" href="{{ 'assets/stylesheets/main.css' | url }}"> <link rel="stylesheet" href="{{ 'assets/stylesheets/main.a361390f.min.css' | url }}">
{% if config.theme.palette %} {% if config.theme.palette %}
{% set palette = config.theme.palette %} {% set palette = config.theme.palette %}
<link rel="stylesheet" href="{{ 'assets/stylesheets/palette.css' | url }}"> <link rel="stylesheet" href="{{ 'assets/stylesheets/palette.7fa14f5b.min.css' | url }}">
{% if palette.primary %} {% if palette.primary %}
{% import "partials/palette.html" as map %} {% import "partials/palette.html" as map %}
{% set primary = map.primary( {% set primary = map.primary(
@ -61,7 +61,7 @@
font.text | replace(' ', '+') + ':300,400,400i,700%7C' + font.text | replace(' ', '+') + ':300,400,400i,700%7C' +
font.code | replace(' ', '+') font.code | replace(' ', '+')
}}&display=fallback"> }}&display=fallback">
<style>:root{--md-text-font-family:"{{ font.text }}",;--md-code-font-family:"{{ font.code }}",}</style> <style>:root{--md-text-font-family:"{{ font.text }}";--md-code-font-family:"{{ font.code }}"}</style>
{% endif %} {% endif %}
{% endblock %} {% endblock %}
{% if config.extra.manifest %} {% if config.extra.manifest %}
@ -191,7 +191,7 @@
"base": base_url, "base": base_url,
"features": features, "features": features,
"translations": {}, "translations": {},
"search": "assets/javascripts/worker/search.js" | url, "search": "assets/javascripts/workers/search.217ffd95.min.js" | url,
} -%} } -%}
{%- set translations = app.translations -%} {%- set translations = app.translations -%}
{%- for key in [ {%- for key in [
@ -216,7 +216,7 @@
</script> </script>
{% endblock %} {% endblock %}
{% block scripts %} {% block scripts %}
<script src="{{ 'assets/javascripts/bundle.js' | url }}"></script> <script src="{{ 'assets/javascripts/bundle.ee96dedf.min.js' | url }}"></script>
{% for path in config["extra_javascript"] %} {% for path in config["extra_javascript"] %}
<script src="{{ path | url }}"></script> <script src="{{ path | url }}"></script>
{% endfor %} {% endfor %}

View File

@ -15,4 +15,5 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE. PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */ ***************************************************************************** */
//# sourceMappingURL=bundle.js.map //# sourceMappingURL=bundle.0a1bb8db.min.js

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,285 +0,0 @@
@-webkit-keyframes tx-heart {
0%, 40%, 80%, 100% {
transform: scale(1);
}
20%, 60% {
transform: scale(1.15);
}
}
@keyframes tx-heart {
0%, 40%, 80%, 100% {
transform: scale(1);
}
20%, 60% {
transform: scale(1.15);
}
}
.md-typeset figure > p + figcaption {
margin-top: -1.2rem;
}
.md-typeset .twitter {
color: #00acee;
}
.md-typeset .tx-video {
width: auto;
}
.md-typeset .tx-video__inner {
position: relative;
width: 100%;
height: 0;
padding-bottom: 56.138%;
}
.md-typeset .tx-video iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
overflow: hidden;
border: none;
}
.md-typeset .tx-heart {
-webkit-animation: tx-heart 1000ms infinite;
animation: tx-heart 1000ms infinite;
}
.md-typeset .tx-insiders {
color: #e91e63;
}
.md-typeset .tx-insiders-button {
font-weight: 400;
}
.md-typeset .tx-insiders-count {
font-weight: 700;
}
.md-typeset .tx-insiders-list {
margin: 2em 0;
overflow: auto;
}
.md-typeset .tx-insiders-list__item {
display: block;
float: left;
width: 3rem;
height: 3rem;
margin: 0.2rem;
overflow: hidden;
border-radius: 100%;
transform: scale(1);
transition: color 125ms, transform 125ms;
}
.md-typeset .tx-insiders-list__item img {
display: block;
width: 100%;
height: auto;
-webkit-filter: grayscale(100%);
filter: grayscale(100%);
transition: -webkit-filter 125ms;
transition: filter 125ms;
transition: filter 125ms, -webkit-filter 125ms;
}
.md-typeset .tx-insiders-list__item:focus, .md-typeset .tx-insiders-list__item:hover {
transform: scale(1.1);
}
.md-typeset .tx-insiders-list__item:focus img, .md-typeset .tx-insiders-list__item:hover img {
-webkit-filter: grayscale(0%);
filter: grayscale(0%);
}
.md-typeset .tx-insiders-list__item--private {
color: var(--md-default-fg-color--lighter);
font-weight: 700;
font-size: 1.2rem;
line-height: 3rem;
text-align: center;
background: var(--md-default-fg-color--lightest);
}
.md-typeset .tx-switch button {
cursor: pointer;
transition: opacity 250ms;
}
.md-typeset .tx-switch button:focus, .md-typeset .tx-switch button:hover {
opacity: 0.75;
}
.md-typeset .tx-switch button > code {
display: block;
color: var(--md-primary-bg-color);
background-color: var(--md-primary-fg-color);
}
.md-typeset .tx-columns ol,
.md-typeset .tx-columns ul {
-moz-columns: 2;
columns: 2;
}
@media screen and (max-width: 29.9375em) {
.md-typeset .tx-columns ol,
.md-typeset .tx-columns ul {
-moz-columns: initial;
columns: initial;
}
}
.md-typeset .tx-columns li {
-moz-column-break-inside: avoid;
break-inside: avoid;
}
.md-announce a,
.md-announce a:focus,
.md-announce a:hover {
color: currentColor;
}
.md-announce strong {
white-space: nowrap;
}
.md-announce .twitter {
margin-left: 0.2em;
}
.tx-content__footer {
margin-top: 1rem;
text-align: center;
}
.tx-content__footer a {
display: inline-block;
color: #e91e63;
transition: transform 250ms cubic-bezier(0.1, 0.7, 0.1, 1), color 125ms;
}
.tx-content__footer a:focus, .tx-content__footer a:hover {
transform: scale(1.2);
}
.tx-content__footer hr {
display: inline-block;
width: 2rem;
margin: 1em;
vertical-align: middle;
background-color: currentColor;
border: none;
}
.tx-container {
padding-top: 1rem;
background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1123 258'><path d='M1124,2c0,0 0,256 0,256l-1125,0l0,-48c0,0 16,5 55,5c116,0 197,-92 325,-92c121,0 114,46 254,46c140,0 214,-167 572,-166Z' style='fill: hsla(0, 0%, 100%, 1)' /></svg>") no-repeat bottom, linear-gradient(to bottom, var(--md-primary-fg-color), #a63fd9 99%, var(--md-default-bg-color) 99%);
}
[data-md-color-scheme=slate] .tx-container {
background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1123 258'><path d='M1124,2c0,0 0,256 0,256l-1125,0l0,-48c0,0 16,5 55,5c116,0 197,-92 325,-92c121,0 114,46 254,46c140,0 214,-167 572,-166Z' style='fill: hsla(232, 15%, 21%, 1)' /></svg>") no-repeat bottom, linear-gradient(to bottom, var(--md-primary-fg-color), #a63fd9 99%, var(--md-default-bg-color) 99%);
}
.tx-hero {
margin: 0 0.8rem;
color: var(--md-primary-bg-color);
}
.tx-hero h1 {
margin-bottom: 1rem;
color: currentColor;
font-weight: 700;
}
@media screen and (max-width: 29.9375em) {
.tx-hero h1 {
font-size: 1.4rem;
}
}
.tx-hero__content {
padding-bottom: 6rem;
}
@media screen and (min-width: 60em) {
.tx-hero {
display: flex;
align-items: stretch;
}
.tx-hero__content {
max-width: 19rem;
margin-top: 3.5rem;
padding-bottom: 14vw;
}
.tx-hero__image {
order: 1;
width: 38rem;
transform: translateX(4rem);
}
}
@media screen and (min-width: 76.25em) {
.tx-hero__image {
transform: translateX(8rem);
}
}
.tx-hero .md-button {
margin-top: 0.5rem;
margin-right: 0.5rem;
color: var(--md-primary-bg-color);
}
.tx-hero .md-button:focus, .tx-hero .md-button:hover {
color: var(--md-default-bg-color);
background-color: var(--md-accent-fg-color);
border-color: var(--md-accent-fg-color);
}
.tx-hero .md-button--primary {
color: #894da8;
background-color: var(--md-primary-bg-color);
border-color: var(--md-primary-bg-color);
}
.md-typeset .mdx-icon-search {
position: relative;
background-color: var(--md-default-bg-color);
border-radius: 0.1rem;
box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.1), 0 0.025rem 0.05rem rgba(0, 0, 0, 0.1);
transition: box-shadow 125ms;
}
.md-typeset .mdx-icon-search:focus-within, .md-typeset .mdx-icon-search:hover {
box-shadow: 0 0.4rem 1rem rgba(0, 0, 0, 0.15), 0 0.025rem 0.05rem rgba(0, 0, 0, 0.15);
}
.md-typeset .mdx-icon-search .md-input {
background: var(--md-default-bg-color);
box-shadow: 0 0 0.6rem rgba(0, 0, 0, 0.07);
}
[data-md-color-scheme=slate] .md-typeset .mdx-icon-search .md-input {
background: var(--md-code-bg-color);
}
.md-typeset .mdx-icon-search-result {
max-height: 50vh;
overflow-y: auto;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
touch-action: pan-y;
scrollbar-width: thin;
scrollbar-color: var(--md-default-fg-color--lighter) transparent;
}
.md-typeset .mdx-icon-search-result::-webkit-scrollbar {
width: 0.2rem;
height: 0.2rem;
}
.md-typeset .mdx-icon-search-result::-webkit-scrollbar-thumb {
background-color: var(--md-default-fg-color--lighter);
}
.md-typeset .mdx-icon-search-result::-webkit-scrollbar-thumb:hover {
background-color: var(--md-accent-fg-color);
}
.md-typeset .mdx-icon-search-result__meta {
position: absolute;
top: 0.4rem;
right: 0.6rem;
color: var(--md-default-fg-color--lighter);
font-size: 0.64rem;
}
.md-typeset .mdx-icon-search-result__list {
margin: 0;
padding: 0;
list-style: none;
}
.md-typeset .mdx-icon-search-result__item {
margin: 0;
padding: 0.2rem 0.6rem;
border-bottom: 0.05rem solid var(--md-default-fg-color--lightest);
}
.md-typeset .mdx-icon-search-result__item:last-child {
border-bottom: none;
}
.md-typeset .mdx-icon-search-result__item > * {
margin-right: 0.6rem;
}
.md-typeset .mdx-icon-search-result__item img {
width: 0.9rem;
height: 0.9rem;
}
[data-md-color-scheme=slate] .md-typeset .mdx-icon-search-result__item img[src*=squidfunk] {
-webkit-filter: invert(1);
filter: invert(1);
}
/*# sourceMappingURL=main.css.map */

View File

@ -1 +0,0 @@
{"version":3,"sources":["../../../../src/overrides/assets/stylesheets/src/overrides/assets/stylesheets/main/_typeset.scss","../../../../src/overrides/assets/stylesheets/main.scss","../../../../src/overrides/assets/stylesheets/node_modules/material-design-color/material-color.scss","../../../../src/overrides/assets/stylesheets/src/assets/stylesheets/utilities/_break.scss","../../../../src/overrides/assets/stylesheets/src/overrides/assets/stylesheets/main/layout/_announce.scss","../../../../src/overrides/assets/stylesheets/src/overrides/assets/stylesheets/main/layout/_content.scss","../../../../src/overrides/assets/stylesheets/src/overrides/assets/stylesheets/main/layout/_hero.scss","../../../../src/overrides/assets/stylesheets/src/overrides/assets/stylesheets/main/_shame.scss"],"names":[],"mappings":"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","file":"main.css"}

View File

@ -22,7 +22,7 @@
<meta name="twitter:title" content="{{ title }}"> <meta name="twitter:title" content="{{ title }}">
<meta name="twitter:description" content="{{ config.site_description }}"> <meta name="twitter:description" content="{{ config.site_description }}">
<meta name="twitter:image" content="{{ image }}"> <meta name="twitter:image" content="{{ image }}">
<link rel="stylesheet" href="{{ 'overrides/assets/stylesheets/main.css' | url }}"> <link rel="stylesheet" href="{{ 'overrides/assets/stylesheets/main.8036384c.min.css' | url }}">
{% endblock %} {% endblock %}
{% block announce %} {% block announce %}
<a href="https://twitter.com/squidfunk"> <a href="https://twitter.com/squidfunk">
@ -53,5 +53,5 @@
{% endblock %} {% endblock %}
{% block scripts %} {% block scripts %}
{{ super() }} {{ super() }}
<script src="{{ 'overrides/assets/javascripts/bundle.js' | url }}"></script> <script src="{{ 'overrides/assets/javascripts/bundle.0a1bb8db.min.js' | url }}"></script>
{% endblock %} {% endblock %}

152
package-lock.json generated
View File

@ -543,6 +543,14 @@
"dev": true, "dev": true,
"requires": { "requires": {
"source-map": "^0.6.1" "source-map": "^0.6.1"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
} }
}, },
"@types/unist": { "@types/unist": {
@ -1389,6 +1397,14 @@
"dev": true, "dev": true,
"requires": { "requires": {
"source-map": "~0.6.0" "source-map": "~0.6.0"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
} }
}, },
"cli-cursor": { "cli-cursor": {
@ -1822,6 +1838,14 @@
"requires": { "requires": {
"mdn-data": "2.0.14", "mdn-data": "2.0.14",
"source-map": "^0.6.1" "source-map": "^0.6.1"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
} }
}, },
"mdn-data": { "mdn-data": {
@ -4635,14 +4659,14 @@
} }
}, },
"object.getownpropertydescriptors": { "object.getownpropertydescriptors": {
"version": "2.1.1", "version": "2.1.2",
"resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz",
"integrity": "sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==", "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"call-bind": "^1.0.0", "call-bind": "^1.0.2",
"define-properties": "^1.1.3", "define-properties": "^1.1.3",
"es-abstract": "^1.18.0-next.1" "es-abstract": "^1.18.0-next.2"
}, },
"dependencies": { "dependencies": {
"es-abstract": { "es-abstract": {
@ -5004,6 +5028,14 @@
"colorette": "^1.2.1", "colorette": "^1.2.1",
"nanoid": "^3.1.20", "nanoid": "^3.1.20",
"source-map": "^0.6.1" "source-map": "^0.6.1"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
} }
}, },
"postcss-calc": { "postcss-calc": {
@ -5366,6 +5398,14 @@
"chalk": "^2.4.2", "chalk": "^2.4.2",
"source-map": "^0.6.1", "source-map": "^0.6.1",
"supports-color": "^6.1.0" "supports-color": "^6.1.0"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
} }
}, },
"supports-color": { "supports-color": {
@ -6325,6 +6365,14 @@
"chalk": "^2.4.2", "chalk": "^2.4.2",
"source-map": "^0.6.1", "source-map": "^0.6.1",
"supports-color": "^6.1.0" "supports-color": "^6.1.0"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
} }
}, },
"supports-color": { "supports-color": {
@ -6362,6 +6410,14 @@
"chalk": "^2.4.2", "chalk": "^2.4.2",
"source-map": "^0.6.1", "source-map": "^0.6.1",
"supports-color": "^6.1.0" "supports-color": "^6.1.0"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
} }
}, },
"supports-color": { "supports-color": {
@ -6394,6 +6450,14 @@
"chalk": "^2.4.2", "chalk": "^2.4.2",
"source-map": "^0.6.1", "source-map": "^0.6.1",
"supports-color": "^6.1.0" "supports-color": "^6.1.0"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
} }
}, },
"supports-color": { "supports-color": {
@ -6425,6 +6489,14 @@
"chalk": "^2.4.2", "chalk": "^2.4.2",
"source-map": "^0.6.1", "source-map": "^0.6.1",
"supports-color": "^6.1.0" "supports-color": "^6.1.0"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
} }
}, },
"supports-color": { "supports-color": {
@ -6468,6 +6540,14 @@
"chalk": "^2.4.2", "chalk": "^2.4.2",
"source-map": "^0.6.1", "source-map": "^0.6.1",
"supports-color": "^6.1.0" "supports-color": "^6.1.0"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
} }
}, },
"supports-color": { "supports-color": {
@ -7213,6 +7293,14 @@
"requires": { "requires": {
"buffer-from": "^1.0.0", "buffer-from": "^1.0.0",
"source-map": "^0.6.0" "source-map": "^0.6.0"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
} }
}, },
"source-map-url": { "source-map-url": {
@ -7801,6 +7889,12 @@
} }
} }
} }
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
} }
} }
}, },
@ -8201,6 +8295,14 @@
"chalk": "^2.4.2", "chalk": "^2.4.2",
"source-map": "^0.6.1", "source-map": "^0.6.1",
"supports-color": "^6.1.0" "supports-color": "^6.1.0"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
} }
} }
} }
@ -8376,6 +8478,14 @@
"chalk": "^2.4.2", "chalk": "^2.4.2",
"source-map": "^0.6.1", "source-map": "^0.6.1",
"supports-color": "^6.1.0" "supports-color": "^6.1.0"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
} }
}, },
"postcss-value-parser": { "postcss-value-parser": {
@ -8395,6 +8505,14 @@
"chalk": "^2.4.2", "chalk": "^2.4.2",
"source-map": "^0.6.1", "source-map": "^0.6.1",
"supports-color": "^6.1.0" "supports-color": "^6.1.0"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
} }
} }
} }
@ -8419,6 +8537,14 @@
"chalk": "^2.4.2", "chalk": "^2.4.2",
"source-map": "^0.6.1", "source-map": "^0.6.1",
"supports-color": "^6.1.0" "supports-color": "^6.1.0"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
} }
} }
} }
@ -8513,6 +8639,14 @@
"chalk": "^2.4.2", "chalk": "^2.4.2",
"source-map": "^0.6.1", "source-map": "^0.6.1",
"supports-color": "^6.1.0" "supports-color": "^6.1.0"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
} }
}, },
"supports-color": { "supports-color": {
@ -8618,6 +8752,14 @@
"requires": { "requires": {
"mdn-data": "2.0.14", "mdn-data": "2.0.14",
"source-map": "^0.6.1" "source-map": "^0.6.1"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
} }
}, },
"css-what": { "css-what": {

View File

@ -31,7 +31,7 @@
"lint": "run-p lint:*", "lint": "run-p lint:*",
"lint:scss": "stylelint \"src/assets/**/*.scss\"", "lint:scss": "stylelint \"src/assets/**/*.scss\"",
"lint:ts": "eslint --cache \"src/**/*.ts\"", "lint:ts": "eslint --cache \"src/**/*.ts\"",
"start": "webpack --mode development --watch" "start": "ts-node -T tools --watch"
}, },
"dependencies": { "dependencies": {
"clipboard": "^2.0.6", "clipboard": "^2.0.6",

View File

@ -20,7 +20,7 @@
* IN THE SOFTWARE. * IN THE SOFTWARE.
*/ */
import { h } from "utilities" import { h } from "~/utilities"
/* ---------------------------------------------------------------------------- /* ----------------------------------------------------------------------------
* Functions * Functions

View File

@ -53,7 +53,8 @@ import {
watchElementThreshold watchElementThreshold
} from "~/browser" } from "~/browser"
import { Icon, renderIconSearchResult } from "../../../templates" import { Icon, renderIconSearchResult } from "_/templates"
import { Component } from "../../_" import { Component } from "../../_"
import { IconSearchIndex } from "../_" import { IconSearchIndex } from "../_"
import { IconSearchQuery } from "../query" import { IconSearchQuery } from "../query"

View File

@ -20,9 +20,10 @@
* IN THE SOFTWARE. * IN THE SOFTWARE.
*/ */
import * as chokidar from "chokidar"
import * as fs from "fs/promises" import * as fs from "fs/promises"
import { Observable, from } from "rxjs" import { Observable, from, fromEvent, identity } from "rxjs"
import { mapTo, switchMap } from "rxjs/operators" import { mapTo, mergeWith, switchMap } from "rxjs/operators"
import glob from "tiny-glob" import glob from "tiny-glob"
/* ---------------------------------------------------------------------------- /* ----------------------------------------------------------------------------
@ -34,6 +35,14 @@ import glob from "tiny-glob"
*/ */
interface ResolveOptions { interface ResolveOptions {
cwd: string /* Working directory */ cwd: string /* Working directory */
watch?: boolean /* Watch mode */
}
/**
* Watch options
*/
interface WatchOptions {
cwd: string /* Working directory */
} }
/* ---------------------------------------------------------------------------- /* ----------------------------------------------------------------------------
@ -49,23 +58,6 @@ export const base = "material"
* Functions * Functions
* ------------------------------------------------------------------------- */ * ------------------------------------------------------------------------- */
/**
* Resolve a pattern
*
* @param pattern - Pattern
* @param options - Options
*
* @returns File observable
*/
export function resolve(
pattern: string, options?: ResolveOptions
): Observable<string> {
return from(glob(pattern, options))
.pipe(
switchMap(files => from(files))
)
}
/** /**
* Recursively create the given directory * Recursively create the given directory
* *
@ -83,23 +75,35 @@ export function mkdir(
} }
/** /**
* Cachebust a file using a content hash * Resolve a pattern
* *
* @param file - File * @param pattern - Pattern
* @param hash - Content hash
* @param options - Options * @param options - Options
* *
* @returns Cachebusting tuple observable * @returns File observable
*/ */
export function cachebust( export function resolve(
file: string, hash: string, options: ResolveOptions pattern: string, options?: ResolveOptions
): Observable<[string, string]> { ): Observable<string> {
const name = file.replace(/\b(?=\.)/, `.${hash.slice(0, 8)}.min`) return from(glob(pattern, options))
return from(fs.rename(
`${options.cwd}/${file}`,
`${options.cwd}/${name}`
))
.pipe( .pipe(
mapTo([file, name]) switchMap(files => from(files)),
options?.watch
? mergeWith(watch(pattern, options))
: identity
) )
} }
/**
* Watch all files matching the given pattern
*
* @param pattern - Pattern
* @param options - Options
*
* @returns File observable
*/
export function watch(
pattern: string, options: WatchOptions
): Observable<string> {
return fromEvent(chokidar.watch(pattern, options), "change")
}

View File

@ -25,7 +25,7 @@ import * as path from "path"
import { Observable, from } from "rxjs" import { Observable, from } from "rxjs"
import { mapTo, mergeMap, switchMap } from "rxjs/operators" import { mapTo, mergeMap, switchMap } from "rxjs/operators"
import { mkdir, resolve } from "../resolve" import { mkdir, resolve } from "../_"
/* ---------------------------------------------------------------------------- /* ----------------------------------------------------------------------------
* Helper types * Helper types
@ -47,9 +47,10 @@ type CopyTransformFn = (data: string, name: string) => Promise<string>
* Copy options * Copy options
*/ */
interface CopyOptions { interface CopyOptions {
src: string /* Source file */ from: string /* Source destination */
out: string /* Target file */ to: string /* Target destination */
transform?: CopyTransformFn /* Transform function */ transform?: CopyTransformFn /* Transform function */
watch?: boolean /* Watch mode */
} }
/* ---------------------------------------------------------------------------- /* ----------------------------------------------------------------------------
@ -64,19 +65,19 @@ interface CopyOptions {
* @returns File observable * @returns File observable
*/ */
export function copy( export function copy(
{ src, out, transform }: CopyOptions { transform, ...options }: CopyOptions
): Observable<string> { ): Observable<string> {
return mkdir(path.dirname(out)) return mkdir(path.dirname(options.to))
.pipe( .pipe(
switchMap(() => typeof transform === "undefined" switchMap(() => typeof transform === "undefined"
? from(fs.copyFile(src, out)) ? from(fs.copyFile(options.from, options.to))
: from(fs.readFile(src, "utf8")) : from(fs.readFile(options.from, "utf8"))
.pipe( .pipe(
switchMap(data => transform(data, src)), switchMap(data => transform(data, options.from)),
switchMap(data => fs.writeFile(out, data)) switchMap(data => fs.writeFile(options.to, data))
) )
), ),
mapTo(out) mapTo(options.to)
) )
} }
@ -94,12 +95,12 @@ export function copy(
export function copyAll( export function copyAll(
pattern: string, options: CopyOptions pattern: string, options: CopyOptions
): Observable<string> { ): Observable<string> {
return resolve(pattern, { cwd: options.src }) return resolve(pattern, { ...options, cwd: options.from })
.pipe( .pipe(
mergeMap(file => copy({ mergeMap(file => copy({
...options, ...options,
src: `${options.src}/${file}`, from: `${options.from}/${file}`,
out: `${options.out}/${file.replace(/(\.{2}\/)+/, "")}` to: `${options.to}/${file.replace(/(\.{2}\/)+/, "")}`
}), 16) }), 16)
) )
} }

View File

@ -20,30 +20,41 @@
* IN THE SOFTWARE. * IN THE SOFTWARE.
*/ */
import { createHash } from "crypto"
import * as fs from "fs/promises" import * as fs from "fs/promises"
import { minify as minhtml } from "html-minifier" import { minify as minhtml } from "html-minifier"
import * as path from "path" import * as path from "path"
import { EMPTY, concat, defer, from, merge, of } from "rxjs" import { concat, defer, merge, of, zip } from "rxjs"
import { import {
concatMap, concatMap,
map, map,
mergeMap, reduce,
switchMap, switchMap
toArray
} from "rxjs/operators" } from "rxjs/operators"
import { import {
extendDefaultPlugins, extendDefaultPlugins,
optimize optimize
} from "svgo" } from "svgo"
import { copy, copyAll } from "./copy" import { IconSearchIndex } from "_/components"
import { base, cachebust, resolve } from "./resolve"
import { base, resolve } from "./_"
import { copyAll } from "./copy"
import { import {
transformScript, transformScript,
transformStyle transformStyle
} from "./transform" } from "./transform"
/* ----------------------------------------------------------------------------
* Helper types
* ------------------------------------------------------------------------- */
/**
* Twemoji icon
*/
interface TwemojiIcon {
unicode: string /* Unicode code point */
}
/* ---------------------------------------------------------------------------- /* ----------------------------------------------------------------------------
* Helper functions * Helper functions
* ------------------------------------------------------------------------- */ * ------------------------------------------------------------------------- */
@ -84,14 +95,14 @@ function minsvg(data: string): string {
* Program * Program
* ------------------------------------------------------------------------- */ * ------------------------------------------------------------------------- */
/* Copy all dependencies */ /* Copy all assets */
const dependencies$ = concat( const assets$ = concat(
/* Copy Material Design icons */ /* Copy Material Design icons */
...["*.svg", "../LICENSE"] ...["*.svg", "../LICENSE"]
.map(pattern => copyAll(pattern, { .map(pattern => copyAll(pattern, {
src: "node_modules/@mdi/svg/svg", from: "node_modules/@mdi/svg/svg",
out: `${base}/.icons/material`, to: `${base}/.icons/material`,
...process.argv.includes("--optimize") && { ...process.argv.includes("--optimize") && {
transform: async data => minsvg(data) transform: async data => minsvg(data)
} }
@ -100,8 +111,8 @@ const dependencies$ = concat(
/* Copy GitHub octicons */ /* Copy GitHub octicons */
...["*.svg", "../../LICENSE"] ...["*.svg", "../../LICENSE"]
.map(pattern => copyAll(pattern, { .map(pattern => copyAll(pattern, {
src: "node_modules/@primer/octicons/build/svg", from: "node_modules/@primer/octicons/build/svg",
out: `${base}/.icons/octicons`, to: `${base}/.icons/octicons`,
...process.argv.includes("--optimize") && { ...process.argv.includes("--optimize") && {
transform: async data => minsvg(data) transform: async data => minsvg(data)
} }
@ -110,28 +121,73 @@ const dependencies$ = concat(
/* Copy FontAwesome icons */ /* Copy FontAwesome icons */
...["**/*.svg", "../LICENSE.txt"] ...["**/*.svg", "../LICENSE.txt"]
.map(pattern => copyAll(pattern, { .map(pattern => copyAll(pattern, {
src: "node_modules/@fortawesome/fontawesome-free/svgs", from: "node_modules/@fortawesome/fontawesome-free/svgs",
out: `${base}/.icons/fontawesome`, to: `${base}/.icons/fontawesome`,
...process.argv.includes("--optimize") && { ...process.argv.includes("--optimize") && {
transform: async data => minsvg(data) transform: async data => minsvg(data)
} }
})),
/* Copy Lunr.js search stemmers and segmenter */
...["min/*.js", "tinyseg.js"]
.map(pattern => copyAll(pattern, {
from: "node_modules/lunr-languages",
to: `${base}/assets/javascripts/lunr`
})),
/* Copy images and configurations */
...[".icons/*.svg", "assets/images/*", "**/*.{py,yml}"]
.map(pattern => copyAll(pattern, {
from: "src",
to: base
})) }))
) )
/* Copy all assets */ /* ------------------------------------------------------------------------- */
const assets$ = concat(
/* Copy icons, images and configurations */ /* Transform styles */
...[".icons/*.svg", "assets/images/*", "**/*.{py,yml}"] const stylesheets$ = resolve("**/[!_]*.scss", { cwd: "src" })
.map(pattern => copyAll(pattern, { .pipe(
src: "src", concatMap(file => zip(
out: base of(ext(file, ".css")),
})), transformStyle({
from: `src/${file}`,
to: ext(`${base}/${file}`, ".css")
}))
)
)
/* Copy and minify template files */ /* Transform scripts */
copyAll("**/*.html", { const javascripts$ = resolve("**/{bundle,search}.ts", { cwd: "src" })
src: "src", .pipe(
out: base, concatMap(file => zip(
of(ext(file, ".js")),
transformScript({
from: `src/${file}`,
to: ext(`${base}/${file}`, ".js")
}))
)
)
/* Compute manifest */
const manifest$ = merge(
stylesheets$,
javascripts$
)
.pipe(
reduce((manifest, [key, value]) => manifest.set(
key,
value.replace(`${base}/`, "")
), new Map<string, string>())
)
/* Transform templates */
const templates$ = manifest$
.pipe(
switchMap(manifest => copyAll("**/*.html", {
from: "src",
to: base,
watch: process.argv.includes("--watch"),
transform: async data => { transform: async data => {
const metadata = require("../package.json") const metadata = require("../package.json")
const banner = const banner =
@ -139,6 +195,14 @@ const assets$ = concat(
" This file was automatically generated - do not edit\n" + " This file was automatically generated - do not edit\n" +
"-#}\n" "-#}\n"
/* If necessary, apply manifest */
if (process.argv.includes("--optimize"))
for (const [key, value] of manifest)
data = data.replace(
new RegExp(`('|")${key}\\1`, "g"),
`$1${value}$1`
)
/* Normalize line feeds and minify HTML */ /* Normalize line feeds and minify HTML */
const html = data.replace(/\r\n/gm, "\n") const html = data.replace(/\r\n/gm, "\n")
return banner + minhtml(html, { return banner + minhtml(html, {
@ -158,95 +222,65 @@ const assets$ = concat(
.replace("$md-name$", metadata.name) .replace("$md-name$", metadata.name)
.replace("$md-version$", metadata.version) .replace("$md-version$", metadata.version)
} }
}))
)
/* ------------------------------------------------------------------------- */
/* Compute icon mappings */
const icons$ = defer(() => resolve("**/*.svg", { cwd: "material/.icons" }))
.pipe(
reduce((index, file) => index.set(
file,
file.replace(/\.svg$/, "").replace(/\//g, "-")
), new Map<string, string>())
)
/* Compute emoji mappings (based on Twemoji) */
const emojis$ = defer(() => resolve("venv/**/twemoji_db.py"))
.pipe(
switchMap(file => fs.readFile(file, "utf8")),
map(data => {
const [, payload] = data.match(/^emoji = ({.*})$.alias/ms)!
return Object.entries<TwemojiIcon>(JSON.parse(payload))
.reduce((index, [name, { unicode }]) => index.set(
name.replace(/(^:|:$)/g, ""),
`${unicode}.svg`
), new Map<string, string>())
}) })
) )
/* Transform stylesheets with SASS and PostCSS */ /* Build search index for icons and emojis */
const stylesheets$ = resolve("**/[!_]*.scss", { cwd: "src" }) const index$ = zip(icons$, emojis$)
.pipe( .pipe(
concatMap(file => transformStyle({ map(([icons, emojis]) => {
src: `src/${file}`, const cdn = "https://raw.githubusercontent.com"
out: ext(`${base}/${file}`, ".css") return {
})) icons: {
) base: `${cdn}/squidfunk/mkdocs-material/master/material/.icons/`,
data: Object.fromEntries(icons)
/* Transform stylesheets with SASS and PostCSS */ },
const javascripts$ = resolve("**/{bundle,search}.ts", { cwd: "src" }) emojis: {
.pipe( base: `${cdn}/twitter/twemoji/master/assets/svg/`,
concatMap(file => transformScript({ data: Object.fromEntries(emojis)
src: `src/${file}`, }
out: ext(`${base}/${file}`, ".js") } as IconSearchIndex
})) }),
) switchMap(data => fs.writeFile(
`${base}/overrides/assets/javascripts/icon_search_index.json`,
/* Add content hashes to assets and replace occurrences */ JSON.stringify(data)
const manifest$ = defer(() => process.argv.includes("--optimize")
? resolve("**/*.{css,js}", { cwd: base })
: EMPTY
)
.pipe(
concatMap(file => from(fs.readFile(`${base}/${file}`, "utf8"))
.pipe(
map(data => createHash("sha256").update(data).digest("hex")),
switchMap(hash => of(`${file}`, `${file}.map`)
.pipe(
concatMap(part => cachebust(part, hash, { cwd: base }))
)
)
)
),
toArray(),
map(tuples => new Map(tuples)),
mergeMap(manifest => concat(
// TODO: split this into two. manifest + cachebust!
...["base.html", "overrides/main.html"]
.map(file => copy({
src: `${base}/${file}`,
out: `${base}/${file}`,
transform: async data => [...manifest.entries()]
.reduce((content, [key, value]) => content
.replace(
new RegExp(`('|")${key}\\1`, "g"),
`$1${value}$1`
),
data
)
})),
// TODO: interate this into the actual compilation...
...[...manifest.keys()]
.filter(file => !file.endsWith(".map"))
.map(file => copy({
src: `${base}/${manifest.get(file)!}`,
out: `${base}/${manifest.get(file)!}`,
transform: async data => data.replace(
path.basename(file),
path.basename(manifest.get(file)!),
)
}))
)) ))
) )
/* Copy Lunr.js search stemmers and segmenter */
const stemmers$ = ["min/*.js", "tinyseg.js"]
.map(pattern => copyAll(pattern, {
src: "node_modules/lunr-languages",
out: `${base}/assets/javascripts/lunr`
}))
/* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */
/* Put everything together */ /* Put everything together */
concat( concat(
dependencies$,
merge(
assets$, assets$,
stylesheets$, merge(
javascripts$ templates$,
), index$
manifest$, )
stemmers$
) )
.subscribe() .subscribe()
// .subscribe(console.log) // .subscribe(console.log)

View File

@ -20,21 +20,27 @@
* IN THE SOFTWARE. * IN THE SOFTWARE.
*/ */
import { build } from "esbuild" import { createHash } from "crypto"
import { build as esbuild } from "esbuild"
import * as fs from "fs/promises" import * as fs from "fs/promises"
import * as path from "path" import * as path from "path"
import postcss from "postcss" import postcss from "postcss"
import { Observable, concat, defer, merge } from "rxjs" import {
Observable,
concat,
defer,
merge,
of
} from "rxjs"
import { import {
endWith, endWith,
ignoreElements, ignoreElements,
mapTo,
switchMap switchMap
} from "rxjs/operators" } from "rxjs/operators"
import { render as sass } from "sass" import { render as sass } from "sass"
import { promisify } from "util" import { promisify } from "util"
import { base, mkdir } from "../resolve" import { base, mkdir } from "../_"
/* ---------------------------------------------------------------------------- /* ----------------------------------------------------------------------------
* Helper types * Helper types
@ -44,8 +50,8 @@ import { base, mkdir } from "../resolve"
* Transform options * Transform options
*/ */
interface TransformOptions { interface TransformOptions {
src: string /* Source file */ from: string /* Source destination */
out: string /* Target file */ to: string /* Target destination */
} }
/* ---------------------------------------------------------------------------- /* ----------------------------------------------------------------------------
@ -53,10 +59,29 @@ interface TransformOptions {
* ------------------------------------------------------------------------- */ * ------------------------------------------------------------------------- */
/** /**
* Base directory for source maps * Base directory for source map resolution
*/ */
const root = new RegExp(`file://${path.resolve(".")}/`, "g") const root = new RegExp(`file://${path.resolve(".")}/`, "g")
/* ----------------------------------------------------------------------------
* Helper functions
* ------------------------------------------------------------------------- */
/**
* Compute a digest for cachebusting a file
*
* @param file - File
* @param data - File data
*
* @returns File with digest
*/
function digest(file: string, data: string): string {
const hash = createHash("sha256").update(data).digest("hex")
return process.argv.includes("--optimize")
? file.replace(/\b(?=\.)/, `.${hash.slice(0, 8)}.min`)
: file
}
/* ---------------------------------------------------------------------------- /* ----------------------------------------------------------------------------
* Functions * Functions
* ------------------------------------------------------------------------- */ * ------------------------------------------------------------------------- */
@ -69,10 +94,11 @@ const root = new RegExp(`file://${path.resolve(".")}/`, "g")
* @returns File observable * @returns File observable
*/ */
export function transformStyle( export function transformStyle(
{ src, out }: TransformOptions options: TransformOptions
): Observable<string> { ): Observable<string> {
return defer(() => promisify(sass)({ return defer(() => promisify(sass)({
file: src, file: options.from,
outFile: options.to,
includePaths: [ includePaths: [
"src/assets/stylesheets", "src/assets/stylesheets",
"node_modules/modularscale-sass/stylesheets", "node_modules/modularscale-sass/stylesheets",
@ -80,8 +106,7 @@ export function transformStyle(
"node_modules/material-shadows" "node_modules/material-shadows"
], ],
sourceMap: true, sourceMap: true,
sourceMapRoot: ".", sourceMapContents: true
outFile: out
})) }))
.pipe( .pipe(
switchMap(({ css, map }) => postcss([ switchMap(({ css, map }) => postcss([
@ -97,23 +122,30 @@ export function transformStyle(
: [] : []
]) ])
.process(css, { .process(css, {
from: src, from: options.from,
to: out,
map: { map: {
prev: `${map}`.replace(root, ""), prev: `${map}`,
inline: false inline: false
} }
}) })
), ),
switchMap(({ css, map }) => concat( switchMap(({ css, map }) => {
mkdir(path.dirname(out)), const file = digest(options.to, css)
return concat(
mkdir(path.dirname(file)),
defer(() => merge( defer(() => merge(
fs.writeFile(`${out}`, css), fs.writeFile(`${file}.map`, `${map}`.replace(root, "")),
fs.writeFile(`${out}.map`, map.toString()) fs.writeFile(`${file}`, css.replace(
)) options.from,
path.basename(file)
)), )),
))
)
.pipe(
ignoreElements(), ignoreElements(),
endWith(out) endWith(file)
)
})
) )
} }
@ -125,16 +157,40 @@ export function transformStyle(
* @returns File observable * @returns File observable
*/ */
export function transformScript( export function transformScript(
{ src, out }: TransformOptions options: TransformOptions
): Observable<string> { ): Observable<string> {
return defer(() => build({ return defer(() => esbuild({
entryPoints: [src], entryPoints: [options.from],
outfile: out, write: false,
bundle: true, bundle: true,
sourcemap: true, sourcemap: true,
minify: process.argv.includes("--optimize") minify: process.argv.includes("--optimize")
})) }))
.pipe( .pipe(
mapTo(out) switchMap(({ outputFiles: [file] }) => {
const contents = file.text.split("\n")
const [, data] = contents[contents.length - 2].split(",")
return of({
js: file.text,
map: Buffer.from(data, "base64")
})
}),
switchMap(({ js, map }) => {
const file = digest(options.to, js)
return concat(
mkdir(path.dirname(file)),
defer(() => merge(
fs.writeFile(`${file}.map`, map),
fs.writeFile(`${file}`, js.replace(
/(sourceMappingURL=)(.*)/,
`$1${path.basename(file)}\n`
)),
))
)
.pipe(
ignoreElements(),
endWith(file)
)
})
) )
} }

View File

@ -1,7 +1,7 @@
{ {
"compilerOptions": { "compilerOptions": {
"alwaysStrict": true, "alwaysStrict": true,
"baseUrl": "src/assets/javascripts", "baseUrl": "src",
"esModuleInterop": true, "esModuleInterop": true,
"jsx": "react", "jsx": "react",
"jsxFactory": "h", "jsxFactory": "h",
@ -20,7 +20,8 @@
"noUnusedLocals": true, "noUnusedLocals": true,
"noUnusedParameters": true, "noUnusedParameters": true,
"paths": { "paths": {
"~/*": ["./*"] "~/*": ["./assets/javascripts/*"],
"_/*": ["./overrides/assets/javascripts/*"]
}, },
"removeComments": false, "removeComments": false,
"sourceMap": true, "sourceMap": true,

View File

@ -1,466 +0,0 @@
/*
* Copyright (c) 2016-2021 Martin Donath <martin.donath@squidfunk.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to
* deal in the Software without restriction, including without limitation the
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
* IN THE SOFTWARE.
*/
import CopyPlugin from "copy-webpack-plugin"
import EventHooksPlugin from "event-hooks-webpack-plugin"
import * as fs from "fs"
import { minify as minhtml } from "html-minifier"
import IgnoreEmitPlugin from "ignore-emit-webpack-plugin"
import ImageminPlugin from "imagemin-webpack-plugin"
import MiniCssExtractPlugin = require("mini-css-extract-plugin")
import * as path from "path"
import { toPairs } from "ramda"
import glob from "tiny-glob"
import { minify as minjs } from "terser"
import { TsconfigPathsPlugin } from "tsconfig-paths-webpack-plugin"
import { Configuration } from "webpack"
import AssetsManifestPlugin from "webpack-assets-manifest"
/* ----------------------------------------------------------------------------
* Helper functions
* ------------------------------------------------------------------------- */
/**
* Webpack base configuration
*
* @param args - Command-line arguments
*
* @returns Webpack configuration
*/
function config(args: Configuration): Configuration {
const assets = {}
return {
mode: args.mode,
/* Loaders */
module: {
rules: [
/* TypeScript */
{
test: /\.tsx?$/,
use: [
{
loader: "ts-loader",
options: {
experimentalWatchApi: true,
transpileOnly: true,
compilerOptions: {
importHelpers: true,
module: "esnext",
target: "es2015"
}
}
}
],
exclude: /\/node_modules\//
},
/* SASS stylesheets */
{
test: /\.scss$/,
use: [
MiniCssExtractPlugin.loader,
{
loader: "css-loader",
options: {
url: false,
sourceMap: true
}
},
{
loader: "postcss-loader",
options: {
postcssOptions: {
plugins: [
["autoprefixer"],
["postcss-inline-svg", {
paths: [
path.resolve(__dirname, "node_modules")
],
encode: false
}],
["postcss-svgo", {
plugins: [
{ removeDimensions: true },
{ removeViewBox: false }
],
encode: false
}]
]
},
sourceMap: true
}
},
{
loader: "sass-loader",
options: {
implementation: require("sass"),
sassOptions: {
includePaths: [
"src/assets/stylesheets",
"node_modules/modularscale-sass/stylesheets",
"node_modules/material-design-color",
"node_modules/material-shadows"
]
},
sourceMap: true
}
}
]
},
/* Search */
{
test: require.resolve("lunr"),
loader: "expose-loader",
options: {
exposes: ["lunr"]
}
}
]
},
/* Module resolver */
resolve: {
mainFields: ["es2015", "module", "main"],
modules: [
__dirname,
path.resolve(__dirname, "node_modules")
],
extensions: [".scss", ".ts", ".tsx", ".js", ".json"],
plugins: [
new TsconfigPathsPlugin()
]
},
/* Plugins */
plugins: [
new IgnoreEmitPlugin(/\/stylesheets\/.*?\.js/),
new AssetsManifestPlugin({
output: "assets/manifest.json",
assets
})
],
/* Source maps */
devtool: args.mode === "production" ? "source-map" : "eval",
/* Filter false positives and omit verbosity */
stats: {
entrypoints: false,
excludeAssets: [
/\.(icons)/,
/\/(images|lunr)\//,
/\.(html|py|yml)$/
],
warningsFilter: [
/export '.[^']+' was not found in/
]
}
}
}
/* ----------------------------------------------------------------------------
* Configuration
* ------------------------------------------------------------------------- */
/**
* Webpack configuration
*
* @param env - Webpack environment arguments
* @param args - Command-line arguments
*
* @returns Webpack configurations
*/
export default (_env: never, args: Configuration): Configuration[] => {
const hash = args.mode === "production" ? ".[chunkhash].min" : ""
const base = config(args)
return [
/* Application */
{
...base,
entry: {
"assets/javascripts/bundle": "src/assets/javascripts",
"assets/stylesheets/main": "src/assets/stylesheets/main.scss",
"assets/stylesheets/palette": "src/assets/stylesheets/palette.scss"
},
output: {
path: path.resolve(__dirname, "material"),
filename: `[name]${hash}.js`,
hashDigestLength: 8,
libraryTarget: "window"
},
/* Plugins */
plugins: [
...base.plugins || [],
/* Stylesheets */
new MiniCssExtractPlugin({
filename: `[name]${hash}.css`
}),
/* Improve performance by skipping dependencies in watch mode */
...args.watch ? [] : [
/* FontAwesome icons */
new CopyPlugin({
patterns: [
{ to: ".icons/fontawesome", from: "**/*.svg" },
{ to: ".icons/fontawesome", from: "../LICENSE.txt" }
].map(pattern => ({
context: "node_modules/@fortawesome/fontawesome-free/svgs",
...pattern
}))
}),
/* Material Design icons */
new CopyPlugin({
patterns: [
{ to: ".icons/material", from: "*.svg" },
{ to: ".icons/material", from: "../LICENSE" }
].map(pattern => ({
context: "node_modules/@mdi/svg/svg",
...pattern
}))
}),
/* GitHub octicons */
new CopyPlugin({
patterns: [
{ to: ".icons/octicons", from: "*.svg" },
{ to: ".icons/octicons", from: "../../LICENSE" }
].map(pattern => ({
context: "node_modules/@primer/octicons/build/svg",
...pattern
}))
}),
/* Search stemmers and segmenters */
new CopyPlugin({
patterns: [
{ to: "assets/javascripts/lunr", from: "min/*.js" },
{
to: "assets/javascripts/lunr/tinyseg.min.js",
from: "tinyseg.js",
transform: (content: Buffer) => minjs(`${content}`).code!
}
].map(pattern => ({
context: "node_modules/lunr-languages",
...pattern
}))
}),
/* Assets and configuration */
new CopyPlugin({
patterns: [
{ from: ".icons/*.svg" },
{ from: "assets/images/*" },
{ from: "**/*.{py,yml}" }
].map(pattern => ({
context: "src",
...pattern
}))
})
],
/* Template files */
new CopyPlugin({
patterns: [
{
from: "**/*.html",
transform: (content: Buffer) => {
const metadata = require("./package.json")
const banner =
"{#-\n" +
" This file was automatically generated - do not edit\n" +
"-#}\n"
/* Normalize line feeds and minify HTML */
const html = content.toString().replace(/\r\n/gm, "\n")
return banner + minhtml(html, {
collapseBooleanAttributes: true,
includeAutoGeneratedTags: false,
minifyCSS: true,
minifyJS: true,
removeComments: true,
removeScriptTypeAttributes: true,
removeStyleLinkTypeAttributes: true
})
/* Remove empty lines without collapsing everything */
.replace(/^\s*[\r\n]/gm, "")
/* Write theme version into template */
.replace("$md-name$", metadata.name)
.replace("$md-version$", metadata.version)
}
}
].map(pattern => ({
context: "src",
...pattern
}))
}),
/* Hooks */
new EventHooksPlugin({
afterEmit: async () => {
/* Replace asset URLs in templates */
if (args.mode === "production") {
const manifest = require("./material/assets/manifest.json")
for (const file of [
"material/base.html",
"material/overrides/main.html"
]) {
const template = toPairs<string>(manifest)
.reduce((content, [from, to]) => (
content.replace(new RegExp(
`('|")${from}\\1`, "g"),
`$1${to}$1`
)
), fs.readFileSync(file, "utf8"))
/* Save template with replaced assets */
fs.writeFileSync(file, template, "utf8")
}
/* Icon indexes */
const icons: Record<string, string> = {}
const emojis: Record<string, string> = {}
/* Build search index for bundled icons */
for (const file of await glob("**/*.svg", {
cwd: "material/.icons"
})) {
const name = file.replace(/\.svg$/, "").replace(/\//g, "-")
icons[name] = file
}
/* Build search index for emojis (based on Twemoji) */
const [database] = await glob("venv/**/twemoji_db.py")
if (typeof database !== "undefined") {
const contents = fs.readFileSync(database, "utf8")
const [, content] = contents.match(/^emoji = ({.*})$.alias/ms)!
for (const [name, data] of toPairs(JSON.parse(content))) {
emojis[name.replace(/(^:|:$)/g, "")] = `${data.unicode}.svg`
}
}
fs.writeFileSync(
"material/overrides/assets/javascripts/icon_search_index.json",
JSON.stringify({
icons: {
base: "https://raw.githubusercontent.com/squidfunk/mkdocs-material/master/material/.icons/",
data: icons
},
emojis: {
base: "https://raw.githubusercontent.com/twitter/twemoji/master/assets/svg/",
data: emojis
}
})
)
}
}
}),
/* Minify SVGs */
new ImageminPlugin({
svgo: {
plugins: [
{ removeDimensions: true },
{ removeViewBox: false }
]
}
})
],
/* Optimizations */
optimization: {
splitChunks: {
cacheGroups: {
vendor: {
test: /\/node_modules\//,
name: "assets/javascripts/vendor",
chunks: "all"
}
}
}
}
},
/* Search worker */
{
...base,
entry: {
"assets/javascripts/worker/search":
"src/assets/javascripts/integrations/search/worker/main"
},
output: {
path: path.resolve(__dirname, "material"),
filename: `[name]${hash}.js`,
hashDigestLength: 8,
libraryTarget: "var"
}
},
/* Overrides */
{
...base,
entry: {
"overrides/assets/javascripts/bundle": "src/overrides/assets/javascripts",
"overrides/assets/stylesheets/main": "src/overrides/assets/stylesheets/main.scss"
},
output: {
path: path.resolve(__dirname, "material"),
filename: `[name]${hash}.js`,
hashDigestLength: 8,
libraryTarget: "window"
},
/* Plugins */
plugins: [
...base.plugins || [],
/* Stylesheets */
new MiniCssExtractPlugin({
filename: `[name]${hash}.css`
})
],
/* Optimizations */
optimization: {
// minimize: false,
// splitChunks: {
// cacheGroups: {
// vendor: {
// test: /\/node_modules\//,
// name: "overrides/assets/javascripts/vendor",
// chunks: "all"
// }
// }
// }
}
}
]
}