Update hugo-geekdoc theme to v0.32.4
Update the used version of hugo-geekdoc to 0.32.4
|
@ -1,23 +0,0 @@
|
|||
# Changelog
|
||||
|
||||
{{ range .Versions -}}
|
||||
## {{ if .Tag.Previous }}[{{ .Tag.Name }}]({{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}){{ else }}{{ .Tag.Name }}{{ end }} ({{ datetime "2006-01-02" .Tag.Date }})
|
||||
|
||||
{{ range .CommitGroups -}}
|
||||
### {{ .Title }}
|
||||
|
||||
{{ range .Commits -}}
|
||||
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
|
||||
{{- if .NoteGroups -}}
|
||||
{{ range .NoteGroups -}}
|
||||
### {{ .Title }}
|
||||
|
||||
{{ range .Notes }}
|
||||
{{ .Body }}
|
||||
{{ end }}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
|
@ -1,25 +0,0 @@
|
|||
style: github
|
||||
template: CHANGELOG.tpl.md
|
||||
info:
|
||||
title: CHANGELOG
|
||||
repository_url: https://github.com/thegeeklab/hugo-geekdoc
|
||||
options:
|
||||
commit_groups:
|
||||
title_maps:
|
||||
feat: Features
|
||||
fix: Bug Fixes
|
||||
perf: Performance Improvements
|
||||
refactor: Code Refactoring
|
||||
chore: Others
|
||||
test: Testing
|
||||
ci: CI Pipeline
|
||||
docs: Documentation
|
||||
header:
|
||||
pattern: "^(\\w*)(?:\\(([\\w\\$\\.\\-\\*\\s]*)\\))?\\:\\s(.*)$"
|
||||
pattern_maps:
|
||||
- Type
|
||||
- Scope
|
||||
- Subject
|
||||
notes:
|
||||
keywords:
|
||||
- BREAKING CHANGE
|
2
themes/hugo-geekdoc/.linkcheckignore
Normal file
|
@ -0,0 +1,2 @@
|
|||
.*/fonts/KaTeX_.*.ttf
|
||||
https://github.com/thegeeklab/hugo-geekdoc/edit/main/.*
|
|
@ -1,31 +0,0 @@
|
|||
# Contributing
|
||||
|
||||
## Security
|
||||
|
||||
If you think you have found a **security issue**, please do not mention it in this repository.
|
||||
Instead, send an email to security@thegeeklab.de with as many details as possible so it can be handled confidential.
|
||||
|
||||
## Bug Reports and Feature Requests
|
||||
|
||||
If you have found a **bug** or have a **feature request** please use the search first in case a similar issue already exists.
|
||||
If not, please create an issue in this repository
|
||||
|
||||
## Code
|
||||
|
||||
If you would like to fix a bug or implement a feature, please fork the repository and create a Pull Request.
|
||||
|
||||
Before you start any Pull Request, it is recommended that you create an issue to discuss first if you have any
|
||||
doubts about requirement or implementation. That way you can be sure that the maintainer(s) agree on what to change and how,
|
||||
and you can hopefully get a quick merge afterwards.
|
||||
|
||||
Pull Requests can only be merged once all status checks are green.
|
||||
|
||||
## Do not force push to your Pull Request branch
|
||||
|
||||
Please do not force push to your Pull Requests branch after you have created your Pull Request, as doing so makes it harder for us to review your work.
|
||||
Pull Requests will always be squashed by us when we merge your work. Commit as many times as you need in your Pull Request branch.
|
||||
|
||||
## Re-requesting a review
|
||||
|
||||
Please do not ping your reviewer(s) by mentioning them in a new comment. Instead, use the re-request review functionality.
|
||||
Read more about this in the [GitHub docs, Re-requesting a review](https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/incorporating-feedback-in-your-pull-request#re-requesting-a-review).
|
|
@ -1,20 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2021 Robert Kaussow
|
||||
Copyright (c) 2022 Robert Kaussow <mail@thegeeklab.de>
|
||||
|
||||
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:
|
||||
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 above copyright notice and this permission notice (including the next
|
||||
paragraph) 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 NONINFRINGEMENT. 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.
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 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.
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
# Geekdoc
|
||||
|
||||
[![Build Status](https://img.shields.io/drone/build/thegeeklab/hugo-geekdoc?logo=drone&server=https%3A%2F%2Fdrone.thegeeklab.de)](https://drone.thegeeklab.de/thegeeklab/hugo-geekdoc)
|
||||
[![Hugo Version](https://img.shields.io/badge/hugo-0.65-blue.svg)](https://gohugo.io)
|
||||
[![Hugo Version](https://img.shields.io/badge/hugo-0.83-blue.svg)](https://gohugo.io)
|
||||
[![GitHub release](https://img.shields.io/github/v/release/thegeeklab/hugo-geekdoc)](https://github.com/thegeeklab/hugo-geekdoc/releases/latest)
|
||||
[![GitHub contributors](https://img.shields.io/github/contributors/thegeeklab/hugo-geekdoc)](https://github.com/thegeeklab/hugo-geekdoc/graphs/contributors)
|
||||
[![License: MIT](https://img.shields.io/github/license/thegeeklab/hugo-geekdoc)](https://github.com/thegeeklab/hugo-geekdoc/blob/master/LICENSE)
|
||||
[![License: MIT](https://img.shields.io/github/license/thegeeklab/hugo-geekdoc)](https://github.com/thegeeklab/hugo-geekdoc/blob/main/LICENSE)
|
||||
|
||||
Geekdoc is a simple Hugo theme for documentations. It is intentionally designed as a fast and lean theme and may not fit the requirements of complex projects. If a more feature-complete theme is required there are a lot of got alternatives out there. You can find a demo and the full documentation at [https://geekdocs.de](https://geekdocs.de).
|
||||
Geekdoc is a simple Hugo theme for documentations. It is intentionally designed as a fast and lean theme and may not fit the requirements of complex projects. If a more feature-complete theme is required there are a lot of good alternatives out there. You can find a demo and the full documentation at [https://geekdocs.de](https://geekdocs.de).
|
||||
|
||||
![Desktop and mobile preview](https://github.com/thegeeklab/hugo-geekdoc/blob/master/images/readme.png)
|
||||
![Desktop and mobile preview](https://raw.githubusercontent.com/thegeeklab/hugo-geekdoc/main/images/readme.png)
|
||||
|
||||
## Build and release process
|
||||
|
||||
This theme is subject to a CI driven build and release process common for software development. During the release build, all necessary assets are automatically built by [gulp](https://gulpjs.com/) and bundled in a release tarball. You can download the latest release from the GitHub [release page](https://github.com/thegeeklab/hugo-geekdoc/releases).
|
||||
This theme is subject to a CI driven build and release process common for software development. During the release build, all necessary assets are automatically built by [webpack](https://webpack.js.org/) and bundled in a release tarball. You can download the latest release from the GitHub [release page](https://github.com/thegeeklab/hugo-geekdoc/releases).
|
||||
|
||||
Due to the fact that `gulp` is used as pre-processor the theme cannot be used from the master branch by default. If you want to use the theme from a cloned branch instead of a release tarball you'll need to install `gulp` locally and run the default pipeline once to create all required assets.
|
||||
Due to the fact that `webpack` and `npm scripts` are used as pre-processors, the theme cannot be used from the main branch by default. If you want to use the theme from a cloned branch instead of a release tarball you'll need to install `webpack` locally and run the build script once to create all required assets.
|
||||
|
||||
```Shell
|
||||
# install required packages from package.json
|
||||
npm install
|
||||
|
||||
# run gulp pipeline to build required assets
|
||||
npx gulp default
|
||||
# run the build script to build required assets
|
||||
npm run build
|
||||
```
|
||||
|
||||
See the [Getting Started Guide](https://geekdocs.de/usage/getting-started/) for details about the different setup options.
|
||||
|
@ -29,16 +29,16 @@ See the [Getting Started Guide](https://geekdocs.de/usage/getting-started/) for
|
|||
## Contributors
|
||||
|
||||
Special thanks goes to all [contributors](https://github.com/thegeeklab/hugo-geekdoc/graphs/contributors). If you would like to contribute,
|
||||
please see the [instructions](https://github.com/thegeeklab/hugo-geekdoc/blob/master/CONTRIBUTING.md).
|
||||
please see the [instructions](https://github.com/thegeeklab/hugo-geekdoc/blob/main/CONTRIBUTING.md).
|
||||
|
||||
Geekdoc is inspired and partially based on the [hugo-book](https://github.com/alex-shpak/hugo-book) theme, thanks [Alex Shpak](https://github.com/alex-shpak/) for your work.
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License - see the [LICENSE](https://github.com/thegeeklab/hugo-geekdoc/blob/master/LICENSE) file for details.
|
||||
This project is licensed under the MIT License - see the [LICENSE](https://github.com/thegeeklab/hugo-geekdoc/blob/main/LICENSE) file for details.
|
||||
|
||||
The used SVG icons and generated icon fonts are licensed under the license of the respective icon pack:
|
||||
|
||||
- Font Awesome: [CC BY 4.0 License](https://github.com/FortAwesome/Font-Awesome#license)
|
||||
- IcoMoon Free Pack: [GPL/CC BY 4.0](https://icomoon.io/#icons-icomoon)
|
||||
- Material Icons: [Apache License 2.0](https://github.com/google/material-design-icons/blob/master/LICENSE)
|
||||
- Material Icons: [Apache License 2.0](https://github.com/google/material-design-icons/blob/main/LICENSE)
|
||||
|
|
|
@ -1 +1 @@
|
|||
v0.10.1
|
||||
v0.32.4
|
||||
|
|
42
themes/hugo-geekdoc/assets/js/flexsearch.min.js
vendored
|
@ -1,42 +0,0 @@
|
|||
/*
|
||||
FlexSearch v0.6.30
|
||||
Copyright 2019 Nextapps GmbH
|
||||
Author: Thomas Wilkerling
|
||||
Released under the Apache 2.0 Licence
|
||||
https://github.com/nextapps-de/flexsearch
|
||||
*/
|
||||
'use strict';(function(K,R,w){let L;(L=w.define)&&L.amd?L([],function(){return R}):(L=w.modules)?L[K.toLowerCase()]=R:"object"===typeof exports?module.exports=R:w[K]=R})("FlexSearch",function ma(K){function w(a,c){const b=c?c.id:a&&a.id;this.id=b||0===b?b:na++;this.init(a,c);fa(this,"index",function(){return this.a?Object.keys(this.a.index[this.a.keys[0]].c):Object.keys(this.c)});fa(this,"length",function(){return this.index.length})}function L(a,c,b,d){this.u!==this.g&&(this.o=this.o.concat(b),this.u++,
|
||||
d&&this.o.length>=d&&(this.u=this.g),this.u===this.g&&(this.cache&&this.j.set(c,this.o),this.F&&this.F(this.o)));return this}function S(a){const c=B();for(const b in a)if(a.hasOwnProperty(b)){const d=a[b];F(d)?c[b]=d.slice(0):G(d)?c[b]=S(d):c[b]=d}return c}function W(a,c){const b=a.length,d=O(c),e=[];for(let f=0,h=0;f<b;f++){const g=a[f];if(d&&c(g)||!d&&!c[g])e[h++]=g}return e}function P(a,c,b,d,e,f,h,g,k,l){b=ha(b,h?0:e,g,f,c,k,l);let p;g&&(g=b.page,p=b.next,b=b.result);if(h)c=this.where(h,null,
|
||||
e,b);else{c=b;b=this.l;e=c.length;f=Array(e);for(h=0;h<e;h++)f[h]=b[c[h]];c=f}b=c;d&&(O(d)||(M=d.split(":"),1<M.length?d=oa:(M=M[0],d=pa)),b.sort(d));b=T(g,p,b);this.cache&&this.j.set(a,b);return b}function fa(a,c,b){Object.defineProperty(a,c,{get:b})}function r(a){return new RegExp(a,"g")}function Q(a,c){for(let b=0;b<c.length;b+=2)a=a.replace(c[b],c[b+1]);return a}function V(a,c,b,d,e,f,h,g){if(c[b])return c[b];e=e?(g-(h||g/1.5))*f+(h||g/1.5)*e:f;c[b]=e;e>=h&&(a=a[g-(e+.5>>0)],a=a[b]||(a[b]=[]),
|
||||
a[a.length]=d);return e}function ba(a,c){if(a){const b=Object.keys(a);for(let d=0,e=b.length;d<e;d++){const f=b[d],h=a[f];if(h)for(let g=0,k=h.length;g<k;g++)if(h[g]===c){1===k?delete a[f]:h.splice(g,1);break}else G(h[g])&&ba(h[g],c)}}}function ca(a){let c="",b="";var d="";for(let e=0;e<a.length;e++){const f=a[e];if(f!==b)if(e&&"h"===f){if(d="a"===d||"e"===d||"i"===d||"o"===d||"u"===d||"y"===d,("a"===b||"e"===b||"i"===b||"o"===b||"u"===b||"y"===b)&&d||" "===b)c+=f}else c+=f;d=e===a.length-1?"":a[e+
|
||||
1];b=f}return c}function qa(a,c){a=a.length-c.length;return 0>a?1:a?-1:0}function pa(a,c){a=a[M];c=c[M];return a<c?-1:a>c?1:0}function oa(a,c){const b=M.length;for(let d=0;d<b;d++)a=a[M[d]],c=c[M[d]];return a<c?-1:a>c?1:0}function T(a,c,b){return a?{page:a,next:c?""+c:null,result:b}:b}function ha(a,c,b,d,e,f,h){let g,k=[];if(!0===b){b="0";var l=""}else l=b&&b.split(":");const p=a.length;if(1<p){const y=B(),t=[];let v,x;var n=0,m;let I;var u=!0;let D,E=0,N,da,X,ea;l&&(2===l.length?(X=l,l=!1):l=ea=
|
||||
parseInt(l[0],10));if(h){for(v=B();n<p;n++)if("not"===e[n])for(x=a[n],I=x.length,m=0;m<I;m++)v["@"+x[m]]=1;else da=n+1;if(C(da))return T(b,g,k);n=0}else N=J(e)&&e;let Y;for(;n<p;n++){const ra=n===(da||p)-1;if(!N||!n)if((m=N||e&&e[n])&&"and"!==m)if("or"===m)Y=!1;else continue;else Y=f=!0;x=a[n];if(I=x.length){if(u)if(D){var q=D.length;for(m=0;m<q;m++){u=D[m];var A="@"+u;h&&v[A]||(y[A]=1,f||(k[E++]=u))}D=null;u=!1}else{D=x;continue}A=!1;for(m=0;m<I;m++){q=x[m];var z="@"+q;const Z=f?y[z]||0:n;if(!(!Z&&
|
||||
!d||h&&v[z]||!f&&y[z]))if(Z===n){if(ra){if(!ea||--ea<E)if(k[E++]=q,c&&E===c)return T(b,E+(l||0),k)}else y[z]=n+1;A=!0}else d&&(z=t[Z]||(t[Z]=[]),z[z.length]=q)}if(Y&&!A&&!d)break}else if(Y&&!d)return T(b,g,x)}if(D)if(n=D.length,h)for(m=l?parseInt(l,10):0;m<n;m++)a=D[m],v["@"+a]||(k[E++]=a);else k=D;if(d)for(E=k.length,X?(n=parseInt(X[0],10)+1,m=parseInt(X[1],10)+1):(n=t.length,m=0);n--;)if(q=t[n]){for(I=q.length;m<I;m++)if(d=q[m],!h||!v["@"+d])if(k[E++]=d,c&&E===c)return T(b,n+":"+m,k);m=0}}else!p||
|
||||
e&&"not"===e[0]||(k=a[0],l&&(l=parseInt(l[0],10)));c&&(h=k.length,l&&l>h&&(l=0),l=l||0,g=l+c,g<h?k=k.slice(l,g):(g=0,l&&(k=k.slice(l))));return T(b,g,k)}function J(a){return"string"===typeof a}function F(a){return a.constructor===Array}function O(a){return"function"===typeof a}function G(a){return"object"===typeof a}function C(a){return"undefined"===typeof a}function ia(a){const c=Array(a);for(let b=0;b<a;b++)c[b]=B();return c}function B(){return Object.create(null)}function sa(){let a,c;self.onmessage=
|
||||
function(b){if(b=b.data)if(b.search){const d=c.search(b.content,b.threshold?{limit:b.limit,threshold:b.threshold,where:b.where}:b.limit);self.postMessage({id:a,content:b.content,limit:b.limit,result:d})}else b.add?c.add(b.id,b.content):b.update?c.update(b.id,b.content):b.remove?c.remove(b.id):b.clear?c.clear():b.info?(b=c.info(),b.worker=a,console.log(b)):b.register&&(a=b.id,b.options.cache=!1,b.options.async=!1,b.options.worker=!1,c=(new Function(b.register.substring(b.register.indexOf("{")+1,b.register.lastIndexOf("}"))))(),
|
||||
c=new c(b.options))}}function ta(a,c,b,d){a=K("flexsearch","id"+a,sa,function(f){(f=f.data)&&f.result&&d(f.id,f.content,f.result,f.limit,f.where,f.cursor,f.suggest)},c);const e=ma.toString();b.id=c;a.postMessage({register:e,options:b,id:c});return a}const H={encode:"icase",f:"forward",split:/\W+/,cache:!1,async:!1,g:!1,D:!1,a:!1,b:9,threshold:0,depth:0},ja={memory:{encode:"extra",f:"strict",threshold:0,b:1},speed:{encode:"icase",f:"strict",threshold:1,b:3,depth:2},match:{encode:"extra",f:"full",threshold:1,
|
||||
b:3},score:{encode:"extra",f:"strict",threshold:1,b:9,depth:4},balance:{encode:"balance",f:"strict",threshold:0,b:3,depth:3},fast:{encode:"icase",f:"strict",threshold:8,b:9,depth:1}},aa=[];let na=0;const ka={},la={};w.create=function(a,c){return new w(a,c)};w.registerMatcher=function(a){for(const c in a)a.hasOwnProperty(c)&&aa.push(r(c),a[c]);return this};w.registerEncoder=function(a,c){U[a]=c.bind(U);return this};w.registerLanguage=function(a,c){ka[a]=c.filter;la[a]=c.stemmer;return this};w.encode=
|
||||
function(a,c){return U[a](c)};w.prototype.init=function(a,c){this.v=[];if(c){var b=c.preset;a=c}else a||(a=H),b=a.preset;c={};J(a)?(c=ja[a],a={}):b&&(c=ja[b]);if(b=a.worker)if("undefined"===typeof Worker)a.worker=!1,this.m=null;else{var d=parseInt(b,10)||4;this.C=-1;this.u=0;this.o=[];this.F=null;this.m=Array(d);for(var e=0;e<d;e++)this.m[e]=ta(this.id,e,a,L.bind(this))}this.f=a.tokenize||c.f||this.f||H.f;this.split=C(b=a.split)?this.split||H.split:J(b)?r(b):b;this.D=a.rtl||this.D||H.D;this.async=
|
||||
"undefined"===typeof Promise||C(b=a.async)?this.async||H.async:b;this.g=C(b=a.worker)?this.g||H.g:b;this.threshold=C(b=a.threshold)?c.threshold||this.threshold||H.threshold:b;this.b=C(b=a.resolution)?b=c.b||this.b||H.b:b;b<=this.threshold&&(this.b=this.threshold+1);this.depth="strict"!==this.f||C(b=a.depth)?c.depth||this.depth||H.depth:b;this.w=(b=C(b=a.encode)?c.encode||H.encode:b)&&U[b]&&U[b].bind(U)||(O(b)?b:this.w||!1);(b=a.matcher)&&this.addMatcher(b);if(b=(c=a.lang)||a.filter){J(b)&&(b=ka[b]);
|
||||
if(F(b)){d=this.w;e=B();for(var f=0;f<b.length;f++){var h=d?d(b[f]):b[f];e[h]=1}b=e}this.filter=b}if(b=c||a.stemmer){var g;c=J(b)?la[b]:b;d=this.w;e=[];for(g in c)c.hasOwnProperty(g)&&(f=d?d(g):g,e.push(r(f+"($|\\W)"),d?d(c[g]):c[g]));this.stemmer=g=e}this.a=e=(b=a.doc)?S(b):this.a||H.a;this.i=ia(this.b-(this.threshold||0));this.h=B();this.c=B();if(e){this.l=B();a.doc=null;g=e.index={};c=e.keys=[];d=e.field;f=e.tag;h=e.store;F(e.id)||(e.id=e.id.split(":"));if(h){var k=B();if(J(h))k[h]=1;else if(F(h))for(let l=
|
||||
0;l<h.length;l++)k[h[l]]=1;else G(h)&&(k=h);e.store=k}if(f){this.G=B();h=B();if(d)if(J(d))h[d]=a;else if(F(d))for(k=0;k<d.length;k++)h[d[k]]=a;else G(d)&&(h=d);F(f)||(e.tag=f=[f]);for(d=0;d<f.length;d++)this.G[f[d]]=B();this.I=f;d=h}if(d){let l;F(d)||(G(d)?(l=d,e.field=d=Object.keys(d)):e.field=d=[d]);for(e=0;e<d.length;e++)f=d[e],F(f)||(l&&(a=l[f]),c[e]=f,d[e]=f.split(":")),g[f]=new w(a)}a.doc=b}this.B=!0;this.j=(this.cache=b=C(b=a.cache)?this.cache||H.cache:b)?new ua(b):!1;return this};w.prototype.encode=
|
||||
function(a){a&&(aa.length&&(a=Q(a,aa)),this.v.length&&(a=Q(a,this.v)),this.w&&(a=this.w(a)),this.stemmer&&(a=Q(a,this.stemmer)));return a};w.prototype.addMatcher=function(a){const c=this.v;for(const b in a)a.hasOwnProperty(b)&&c.push(r(b),a[b]);return this};w.prototype.add=function(a,c,b,d,e){if(this.a&&G(a))return this.A("add",a,c);if(c&&J(c)&&(a||0===a)){var f="@"+a;if(this.c[f]&&!d)return this.update(a,c);if(this.g)return++this.C>=this.m.length&&(this.C=0),this.m[this.C].postMessage({add:!0,id:a,
|
||||
content:c}),this.c[f]=""+this.C,b&&b(),this;if(!e){if(this.async&&"function"!==typeof importScripts){let t=this;f=new Promise(function(v){setTimeout(function(){t.add(a,c,null,d,!0);t=null;v()})});if(b)f.then(b);else return f;return this}if(b)return this.add(a,c,null,d,!0),b(),this}c=this.encode(c);if(!c.length)return this;b=this.f;e=O(b)?b(c):c.split(this.split);this.filter&&(e=W(e,this.filter));const n=B();n._ctx=B();const m=e.length,u=this.threshold,q=this.depth,A=this.b,z=this.i,y=this.D;for(let t=
|
||||
0;t<m;t++){var h=e[t];if(h){var g=h.length,k=(y?t+1:m-t)/m,l="";switch(b){case "reverse":case "both":for(var p=g;--p;)l=h[p]+l,V(z,n,l,a,y?1:(g-p)/g,k,u,A-1);l="";case "forward":for(p=0;p<g;p++)l+=h[p],V(z,n,l,a,y?(p+1)/g:1,k,u,A-1);break;case "full":for(p=0;p<g;p++){const v=(y?p+1:g-p)/g;for(let x=g;x>p;x--)l=h.substring(p,x),V(z,n,l,a,v,k,u,A-1)}break;default:if(g=V(z,n,h,a,1,k,u,A-1),q&&1<m&&g>=u)for(g=n._ctx[h]||(n._ctx[h]=B()),h=this.h[h]||(this.h[h]=ia(A-(u||0))),k=t-q,l=t+q+1,0>k&&(k=0),l>
|
||||
m&&(l=m);k<l;k++)k!==t&&V(h,g,e[k],a,0,A-(k<t?t-k:k-t),u,A-1)}}}this.c[f]=1;this.B=!1}return this};w.prototype.A=function(a,c,b){if(F(c)){var d=c.length;if(d--){for(var e=0;e<d;e++)this.A(a,c[e]);return this.A(a,c[d],b)}}else{var f=this.a.index,h=this.a.keys,g=this.a.tag;e=this.a.store;var k;var l=this.a.id;d=c;for(var p=0;p<l.length;p++)d=d[l[p]];if("remove"===a&&(delete this.l[d],l=h.length,l--)){for(c=0;c<l;c++)f[h[c]].remove(d);return f[h[l]].remove(d,b)}if(g){for(k=0;k<g.length;k++){var n=g[k];
|
||||
var m=c;l=n.split(":");for(p=0;p<l.length;p++)m=m[l[p]];m="@"+m}k=this.G[n];k=k[m]||(k[m]=[])}l=this.a.field;for(let u=0,q=l.length;u<q;u++){n=l[u];g=c;for(m=0;m<n.length;m++)g=g[n[m]];n=f[h[u]];m="add"===a?n.add:n.update;u===q-1?m.call(n,d,g,b):m.call(n,d,g)}if(e){b=Object.keys(e);a=B();for(f=0;f<b.length;f++)if(h=b[f],e[h]){h=h.split(":");let u,q;for(l=0;l<h.length;l++)g=h[l],u=(u||c)[g],q=(q||a)[g]=u}c=a}k&&(k[k.length]=c);this.l[d]=c}return this};w.prototype.update=function(a,c,b){if(this.a&&
|
||||
G(a))return this.A("update",a,c);this.c["@"+a]&&J(c)&&(this.remove(a),this.add(a,c,b,!0));return this};w.prototype.remove=function(a,c,b){if(this.a&&G(a))return this.A("remove",a,c);var d="@"+a;if(this.c[d]){if(this.g)return this.m[this.c[d]].postMessage({remove:!0,id:a}),delete this.c[d],c&&c(),this;if(!b){if(this.async&&"function"!==typeof importScripts){let e=this;d=new Promise(function(f){setTimeout(function(){e.remove(a,null,!0);e=null;f()})});if(c)d.then(c);else return d;return this}if(c)return this.remove(a,
|
||||
null,!0),c(),this}for(c=0;c<this.b-(this.threshold||0);c++)ba(this.i[c],a);this.depth&&ba(this.h,a);delete this.c[d];this.B=!1}return this};let M;w.prototype.search=function(a,c,b,d){if(G(c)){if(F(c))for(var e=0;e<c.length;e++)c[e].query=a;else c.query=a;a=c;c=1E3}else c&&O(c)?(b=c,c=1E3):c||0===c||(c=1E3);if(this.g){this.F=b;this.u=0;this.o=[];for(var f=0;f<this.g;f++)this.m[f].postMessage({search:!0,limit:c,content:a})}else{var h=[],g=a;if(G(a)&&!F(a)){b||(b=a.callback)&&(g.callback=null);var k=
|
||||
a.sort;var l=a.page;c=a.limit;f=a.threshold;var p=a.suggest;a=a.query}if(this.a){f=this.a.index;const y=g.where;var n=g.bool||"or",m=g.field;let t=n;let v,x;if(m)F(m)||(m=[m]);else if(F(g)){var u=g;m=[];t=[];for(var q=0;q<g.length;q++)d=g[q],e=d.bool||n,m[q]=d.field,t[q]=e,"not"===e?v=!0:"and"===e&&(x=!0)}else m=this.a.keys;n=m.length;for(q=0;q<n;q++)u&&(g=u[q]),l&&!J(g)&&(g.page=null,g.limit=0),h[q]=f[m[q]].search(g,0);if(b)return b(P.call(this,a,t,h,k,c,p,y,l,x,v));if(this.async){const I=this;return new Promise(function(D){Promise.all(h).then(function(E){D(P.call(I,
|
||||
a,t,E,k,c,p,y,l,x,v))})})}return P.call(this,a,t,h,k,c,p,y,l,x,v)}f||(f=this.threshold||0);if(!d){if(this.async&&"function"!==typeof importScripts){let y=this;f=new Promise(function(t){setTimeout(function(){t(y.search(g,c,null,!0));y=null})});if(b)f.then(b);else return f;return this}if(b)return b(this.search(g,c,null,!0)),this}if(!a||!J(a))return h;g=a;if(this.cache)if(this.B){if(b=this.j.get(a))return b}else this.j.clear(),this.B=!0;g=this.encode(g);if(!g.length)return h;b=this.f;b=O(b)?b(g):g.split(this.split);
|
||||
this.filter&&(b=W(b,this.filter));u=b.length;d=!0;e=[];var A=B(),z=0;1<u&&(this.depth&&"strict"===this.f?n=!0:b.sort(qa));if(!n||(q=this.h)){const y=this.b;for(;z<u;z++){let t=b[z];if(t){if(n){if(!m)if(q[t])m=t,A[t]=1;else if(!p)return h;if(p&&z===u-1&&!e.length)n=!1,t=m||t,A[t]=0;else if(!m)continue}if(!A[t]){const v=[];let x=!1,I=0;const D=n?q[m]:this.i;if(D){let E;for(let N=0;N<y-f;N++)if(E=D[N]&&D[N][t])v[I++]=E,x=!0}if(x)m=t,e[e.length]=1<I?v.concat.apply([],v):v[0];else if(!p){d=!1;break}A[t]=
|
||||
1}}}}else d=!1;d&&(h=ha(e,c,l,p));this.cache&&this.j.set(a,h);return h}};w.prototype.find=function(a,c){return this.where(a,c,1)[0]||null};w.prototype.where=function(a,c,b,d){const e=this.l,f=[];let h=0;let g;var k;let l;if(G(a)){b||(b=c);var p=Object.keys(a);var n=p.length;g=!1;if(1===n&&"id"===p[0])return[e[a.id]];if((k=this.I)&&!d)for(var m=0;m<k.length;m++){var u=k[m],q=a[u];if(!C(q)){l=this.G[u]["@"+q];if(0===--n)return l;p.splice(p.indexOf(u),1);delete a[u];break}}k=Array(n);for(m=0;m<n;m++)k[m]=
|
||||
p[m].split(":")}else{if(O(a)){c=d||Object.keys(e);b=c.length;for(p=0;p<b;p++)n=e[c[p]],a(n)&&(f[h++]=n);return f}if(C(c))return[e[a]];if("id"===a)return[e[c]];p=[a];n=1;k=[a.split(":")];g=!0}d=l||d||Object.keys(e);m=d.length;for(u=0;u<m;u++){q=l?d[u]:e[d[u]];let A=!0;for(let z=0;z<n;z++){g||(c=a[p[z]]);const y=k[z],t=y.length;let v=q;if(1<t)for(let x=0;x<t;x++)v=v[y[x]];else v=v[y[0]];if(v!==c){A=!1;break}}if(A&&(f[h++]=q,b&&h===b))break}return f};w.prototype.info=function(){if(this.g)for(let a=0;a<
|
||||
this.g;a++)this.m[a].postMessage({info:!0,id:this.id});else return{id:this.id,items:this.length,cache:this.cache&&this.cache.s?this.cache.s.length:!1,matcher:aa.length+(this.v?this.v.length:0),worker:this.g,threshold:this.threshold,depth:this.depth,resolution:this.b,contextual:this.depth&&"strict"===this.f}};w.prototype.clear=function(){return this.destroy().init()};w.prototype.destroy=function(){this.cache&&(this.j.clear(),this.j=null);this.i=this.h=this.c=null;if(this.a){const a=this.a.keys;for(let c=
|
||||
0;c<a.length;c++)this.a.index[a[c]].destroy();this.a=this.l=null}return this};w.prototype.export=function(a){const c=!a||C(a.serialize)||a.serialize;if(this.a){const d=!a||C(a.doc)||a.doc;var b=!a||C(a.index)||a.index;a=[];let e=0;if(b)for(b=this.a.keys;e<b.length;e++){const f=this.a.index[b[e]];a[e]=[f.i,f.h,Object.keys(f.c)]}d&&(a[e]=this.l)}else a=[this.i,this.h,Object.keys(this.c)];c&&(a=JSON.stringify(a));return a};w.prototype.import=function(a,c){if(!c||C(c.serialize)||c.serialize)a=JSON.parse(a);
|
||||
const b=B();if(this.a){var d=!c||C(c.doc)||c.doc,e=0;if(!c||C(c.index)||c.index){c=this.a.keys;const h=c.length;for(var f=a[0][2];e<f.length;e++)b[f[e]]=1;for(e=0;e<h;e++){f=this.a.index[c[e]];const g=a[e];g&&(f.i=g[0],f.h=g[1],f.c=b)}}d&&(this.l=G(d)?d:a[e])}else{d=a[2];for(e=0;e<d.length;e++)b[d[e]]=1;this.i=a[0];this.h=a[1];this.c=b}};const va=function(){const a=r("\\s+"),c=r("[^a-z0-9 ]"),b=[r("[-/]")," ",c,"",a," "];return function(d){return ca(Q(d.toLowerCase(),b))}}(),U={icase:function(a){return a.toLowerCase()},
|
||||
simple:function(){const a=r("\\s+"),c=r("[^a-z0-9 ]"),b=r("[-/]"),d=r("[\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5]"),e=r("[\u00e8\u00e9\u00ea\u00eb]"),f=r("[\u00ec\u00ed\u00ee\u00ef]"),h=r("[\u00f2\u00f3\u00f4\u00f5\u00f6\u0151]"),g=r("[\u00f9\u00fa\u00fb\u00fc\u0171]"),k=r("[\u00fd\u0177\u00ff]"),l=r("\u00f1"),p=r("[\u00e7c]"),n=r("\u00df"),m=r(" & "),u=[d,"a",e,"e",f,"i",h,"o",g,"u",k,"y",l,"n",p,"k",n,"s",m," and ",b," ",c,"",a," "];return function(q){q=Q(q.toLowerCase(),u);return" "===q?"":q}}(),advanced:function(){const a=
|
||||
r("ae"),c=r("ai"),b=r("ay"),d=r("ey"),e=r("oe"),f=r("ue"),h=r("ie"),g=r("sz"),k=r("zs"),l=r("ck"),p=r("cc"),n=r("sh"),m=r("th"),u=r("dt"),q=r("ph"),A=r("pf"),z=r("ou"),y=r("uo"),t=[a,"a",c,"ei",b,"ei",d,"ei",e,"o",f,"u",h,"i",g,"s",k,"s",n,"s",l,"k",p,"k",m,"t",u,"t",q,"f",A,"f",z,"o",y,"u"];return function(v,x){if(!v)return v;v=this.simple(v);2<v.length&&(v=Q(v,t));x||1<v.length&&(v=ca(v));return v}}(),extra:function(){const a=r("p"),c=r("z"),b=r("[cgq]"),d=r("n"),e=r("d"),f=r("[vw]"),h=r("[aeiouy]"),
|
||||
g=[a,"b",c,"s",b,"k",d,"m",e,"t",f,"f",h,""];return function(k){if(!k)return k;k=this.advanced(k,!0);if(1<k.length){k=k.split(" ");for(let l=0;l<k.length;l++){const p=k[l];1<p.length&&(k[l]=p[0]+Q(p.substring(1),g))}k=k.join(" ");k=ca(k)}return k}}(),balance:va},ua=function(){function a(c){this.clear();this.H=!0!==c&&c}a.prototype.clear=function(){this.cache=B();this.count=B();this.index=B();this.s=[]};a.prototype.set=function(c,b){if(this.H&&C(this.cache[c])){let d=this.s.length;if(d===this.H){d--;
|
||||
const e=this.s[d];delete this.cache[e];delete this.count[e];delete this.index[e]}this.index[c]=d;this.s[d]=c;this.count[c]=-1;this.cache[c]=b;this.get(c)}else this.cache[c]=b};a.prototype.get=function(c){const b=this.cache[c];if(this.H&&b){var d=++this.count[c];const f=this.index;let h=f[c];if(0<h){const g=this.s;for(var e=h;this.count[g[--h]]<=d&&-1!==h;);h++;if(h!==e){for(d=e;d>h;d--)e=g[d-1],g[d]=e,f[e]=d;g[h]=c;f[c]=h}}}return b};return a}();return w}(function(){const K={},R="undefined"!==typeof Blob&&
|
||||
"undefined"!==typeof URL&&URL.createObjectURL;return function(w,L,S,W,P){S=R?URL.createObjectURL(new Blob(["("+S.toString()+")()"],{type:"text/javascript"})):w+".min.js";w+="-"+L;K[w]||(K[w]=[]);K[w][P]=new Worker(S);K[w][P].onmessage=W;return K[w][P]}}()),this);
|
9
themes/hugo-geekdoc/assets/js/groupBy.min.js
vendored
|
@ -1,9 +0,0 @@
|
|||
/**
|
||||
* Part of [Canivete](http://canivete.leofavre.com/#deepgroupby)
|
||||
*
|
||||
* Groups the contents of an array by one or more iteratees.
|
||||
* Unlike Lodash [`groupBy()`](https://lodash.com/docs/4.17.4#groupBy),
|
||||
* this function can create nested groups, but cannot receive
|
||||
* strings for iteratees.
|
||||
*/
|
||||
const groupBy=(e,...t)=>{let r=e.map(e=>t.map(t=>t(e))),a={};return r.forEach((t,r)=>{let l=(_simpleAt(a,t)||[]).concat([e[r]]);_simpleSet(a,t,l)}),a},_isPlainObject=e=>null!=e&&"object"==typeof e&&e.constructor==Object,_parsePath=e=>Array.isArray(e)?e:`${e}`.split("."),_simpleAt=(e,t)=>_parsePath(t).reduce((e,t)=>null!=e&&e.hasOwnProperty(t)?e[t]:void 0,e),_simpleSet=(e,t,r)=>_parsePath(t).reduce((e,t,a,l)=>{let s=a===l.length-1;return e.hasOwnProperty(t)&&(s||_isPlainObject(e[t]))||(e[t]={}),s?e[t]=r:e[t]},e);
|
32
themes/hugo-geekdoc/assets/js/mermaid.min.js
vendored
|
@ -1,145 +0,0 @@
|
|||
'use strict';
|
||||
|
||||
{{ $searchDataFile := printf "%s.search-data.json" .Language.Lang }}
|
||||
{{ $searchData := resources.Get "search-data.json" | resources.ExecuteAsTemplate $searchDataFile . | resources.Minify }}
|
||||
|
||||
(function() {
|
||||
const input = document.querySelector('#gdoc-search-input');
|
||||
const results = document.querySelector('#gdoc-search-results');
|
||||
let showParent = {{ if .Site.Params.GeekdocSearchShowParent }}true{{ else }}false{{ end }}
|
||||
|
||||
input.addEventListener('focus', init);
|
||||
input.addEventListener('keyup', search);
|
||||
|
||||
function init() {
|
||||
input.removeEventListener('focus', init); // init once
|
||||
|
||||
loadScript('{{ index .Site.Data.assets "js/groupBy.min.js" | relURL }}');
|
||||
loadScript('{{ index .Site.Data.assets "js/flexsearch.min.js" | relURL }}', function() {
|
||||
const indexCfg = {{ with .Scratch.Get "geekdocSearchConfig" }}{{ . | jsonify}}{{ else }}{}{{ end }};
|
||||
const dataUrl = "{{ $searchData.RelPermalink }}"
|
||||
|
||||
indexCfg.doc = {
|
||||
id: 'id',
|
||||
field: ['title', 'content'],
|
||||
store: ['title', 'href', 'parent'],
|
||||
};
|
||||
|
||||
const index = FlexSearch.create(indexCfg);
|
||||
window.geekdocSearchIndex = index;
|
||||
|
||||
getJson(dataUrl, function(data) {
|
||||
data.forEach(obj => {
|
||||
window.geekdocSearchIndex.add(obj);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function search() {
|
||||
while (results.firstChild) {
|
||||
results.removeChild(results.firstChild);
|
||||
}
|
||||
|
||||
if (!input.value) {
|
||||
return results.classList.remove("has-hits");
|
||||
}
|
||||
|
||||
let searchHits = window.geekdocSearchIndex.search(input.value, 10);
|
||||
if (searchHits.length < 1) {
|
||||
return results.classList.remove("has-hits");
|
||||
}
|
||||
|
||||
results.classList.add("has-hits");
|
||||
|
||||
if (showParent === true) {
|
||||
searchHits = groupBy(searchHits, hit => hit.parent);
|
||||
}
|
||||
|
||||
const items = [];
|
||||
|
||||
if (showParent === true) {
|
||||
for (const section in searchHits) {
|
||||
const item = document.createElement('li'),
|
||||
title = item.appendChild(document.createElement('span')),
|
||||
subList = item.appendChild(document.createElement('ul'));
|
||||
|
||||
title.textContent = section;
|
||||
createLinks(searchHits[section], subList);
|
||||
|
||||
items.push(item);
|
||||
}
|
||||
} else {
|
||||
const item = document.createElement('li'),
|
||||
title = item.appendChild(document.createElement('span')),
|
||||
subList = item.appendChild(document.createElement('ul'));
|
||||
|
||||
title.textContent = "Results";
|
||||
createLinks(searchHits, subList);
|
||||
|
||||
items.push(item);
|
||||
}
|
||||
|
||||
items.forEach(item => {
|
||||
results.appendChild(item);
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates links to given pages and either returns them in an array or attaches them to a target element
|
||||
* @param {Object} pages Page to which the link should point to
|
||||
* @param {HTMLElement} target Element to which the links should be attatched
|
||||
* @returns {Array} If target is not specified, returns an array of built links
|
||||
*/
|
||||
function createLinks(pages, target) {
|
||||
const items = [];
|
||||
|
||||
for (const page of pages) {
|
||||
const item = document.createElement("li"),
|
||||
entry = item.appendChild(document.createElement("span")),
|
||||
a = entry.appendChild(document.createElement("a"));
|
||||
|
||||
entry.classList.add("flex")
|
||||
|
||||
a.href = page.href;
|
||||
a.textContent = page.title;
|
||||
a.classList.add("gdoc-search__entry")
|
||||
|
||||
if (target) {
|
||||
target.appendChild(item);
|
||||
continue
|
||||
}
|
||||
|
||||
items.push(item);
|
||||
}
|
||||
|
||||
return items;
|
||||
}
|
||||
|
||||
function fetchErrors(response) {
|
||||
if (!response.ok) {
|
||||
throw Error(response.statusText);
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
function getJson(src, callback) {
|
||||
fetch(src)
|
||||
.then(fetchErrors)
|
||||
.then(response => response.json())
|
||||
.then(json => callback(json))
|
||||
.catch(function(error) {
|
||||
console.log(error);
|
||||
});
|
||||
}
|
||||
|
||||
function loadScript(src, callback) {
|
||||
let script = document.createElement('script');
|
||||
script.defer = true;
|
||||
script.async = false;
|
||||
script.src = src;
|
||||
script.onload = callback;
|
||||
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
})();
|
1
themes/hugo-geekdoc/assets/main.min.css
vendored
|
@ -1,55 +0,0 @@
|
|||
@media screen and (max-width:39rem) {
|
||||
.gdoc-nav {
|
||||
margin-left: -16rem;
|
||||
font-size: 16px
|
||||
}
|
||||
.gdoc-nav__control {
|
||||
display: inline-block
|
||||
}
|
||||
.gdoc-header .icon {
|
||||
width: 1.5rem;
|
||||
height: 1.5rem
|
||||
}
|
||||
.gdoc-brand {
|
||||
font-size: 1.5rem
|
||||
}
|
||||
.gdoc-brand__img {
|
||||
display: none
|
||||
}
|
||||
.gdoc-error {
|
||||
padding: 6rem 1rem
|
||||
}
|
||||
.gdoc-error .icon {
|
||||
width: 6rem;
|
||||
height: 6rem
|
||||
}
|
||||
.gdoc-error__message {
|
||||
padding-left: 2rem
|
||||
}
|
||||
.gdoc-error__line {
|
||||
padding: .25rem 0
|
||||
}
|
||||
.gdoc-error__title {
|
||||
font-size: 2rem
|
||||
}
|
||||
.gdoc-page__header .breadcrumb,
|
||||
.hidden-mobile {
|
||||
display: none
|
||||
}
|
||||
.gdoc-footer__item {
|
||||
width: 100%
|
||||
}
|
||||
#menu-control:checked ~ main .gdoc-nav nav,
|
||||
#menu-control:checked ~ main .gdoc-page {
|
||||
transform: translateX(16rem)
|
||||
}
|
||||
#menu-control:checked ~ main .gdoc-page {
|
||||
opacity: .25
|
||||
}
|
||||
#menu-control:checked ~ .gdoc-header .gdoc-nav__control .icon.gdoc_menu {
|
||||
display: none
|
||||
}
|
||||
#menu-control:checked ~ .gdoc-header .gdoc-nav__control .icon.gdoc_arrow_back {
|
||||
display: inline-block
|
||||
}
|
||||
}
|
1
themes/hugo-geekdoc/assets/mobile.min.css
vendored
|
@ -1 +0,0 @@
|
|||
@media screen and (max-width:39rem){.gdoc-nav{margin-left:-16rem;font-size:16px}.gdoc-nav__control{display:inline-block}.gdoc-header .icon{width:1.5rem;height:1.5rem}.gdoc-brand{font-size:1.5rem}.gdoc-brand__img{display:none}.gdoc-error{padding:6rem 1rem}.gdoc-error .icon{width:6rem;height:6rem}.gdoc-error__message{padding-left:2rem}.gdoc-error__line{padding:.25rem 0}.gdoc-error__title{font-size:2rem}.gdoc-page__header .breadcrumb,.hidden-mobile{display:none}.gdoc-footer__item{width:100%}#menu-control:checked~main .gdoc-nav nav,#menu-control:checked~main .gdoc-page{transform:translateX(16rem)}#menu-control:checked~main .gdoc-page{opacity:.25}#menu-control:checked~.gdoc-header .gdoc-nav__control .icon.gdoc_menu{display:none}#menu-control:checked~.gdoc-header .gdoc-nav__control .icon.gdoc_arrow_back{display:inline-block}}
|
|
@ -1,40 +0,0 @@
|
|||
@media print {
|
||||
.editpage,
|
||||
.gdoc-footer .container span:not(:first-child),
|
||||
.gdoc-nav {
|
||||
display: none
|
||||
}
|
||||
.gdoc-footer {
|
||||
border-top: 1px solid #dee2e6
|
||||
}
|
||||
.gdoc-markdown pre {
|
||||
white-space: pre-wrap;
|
||||
overflow-wrap: break-word
|
||||
}
|
||||
.chroma code {
|
||||
border: 1px solid #dee2e6;
|
||||
padding: .5rem!important;
|
||||
font-weight: 400!important
|
||||
}
|
||||
.gdoc-markdown code {
|
||||
font-weight: 700
|
||||
}
|
||||
a,
|
||||
a:visited {
|
||||
color: inherit!important;
|
||||
text-decoration: none!important
|
||||
}
|
||||
.gdoc-toc {
|
||||
flex: none
|
||||
}
|
||||
.gdoc-toc nav {
|
||||
position: relative;
|
||||
width: auto
|
||||
}
|
||||
.wrapper {
|
||||
display: block
|
||||
}
|
||||
.wrapper main {
|
||||
display: block
|
||||
}
|
||||
}
|
1
themes/hugo-geekdoc/assets/print.min.css
vendored
|
@ -1 +0,0 @@
|
|||
@media print{.editpage,.gdoc-footer .container span:not(:first-child),.gdoc-nav{display:none}.gdoc-footer{border-top:1px solid #dee2e6}.gdoc-markdown pre{white-space:pre-wrap;overflow-wrap:break-word}.chroma code{border:1px solid #dee2e6;padding:.5rem!important;font-weight:400!important}.gdoc-markdown code{font-weight:700}a,a:visited{color:inherit!important;text-decoration:none!important}.gdoc-toc{flex:none}.gdoc-toc nav{position:relative;width:auto}.wrapper{display:block}.wrapper main{display:block}}
|
|
@ -1,12 +0,0 @@
|
|||
[
|
||||
{{ range $index, $page := .Site.Pages }}
|
||||
{{ if ne $index 0 }},{{ end }}
|
||||
{
|
||||
"id": {{ $index }},
|
||||
"href": "{{ $page.RelPermalink }}",
|
||||
"title": {{ (partial "title" $page) | jsonify }},
|
||||
"parent": {{ with $page.Parent }}{{ (partial "title" .) | jsonify }}{{ else }}""{{ end }},
|
||||
"content": {{ $page.Plain | jsonify }}
|
||||
}
|
||||
{{ end }}
|
||||
]
|
7
themes/hugo-geekdoc/assets/search/config.json
Normal file
|
@ -0,0 +1,7 @@
|
|||
{{- $searchDataFile := printf "search/%s.data.json" .Language.Lang -}}
|
||||
{{- $searchData := resources.Get "search/data.json" | resources.ExecuteAsTemplate $searchDataFile . | resources.Minify -}}
|
||||
{
|
||||
"dataFile": {{ $searchData.RelPermalink | jsonify }},
|
||||
"indexConfig": {{ .Site.Params.GeekdocSearchConfig | jsonify }},
|
||||
"showParent": {{ if .Site.Params.GeekdocSearchShowParent }}true{{ else }}false{{ end }}
|
||||
}
|
12
themes/hugo-geekdoc/assets/search/data.json
Normal file
|
@ -0,0 +1,12 @@
|
|||
[
|
||||
{{ range $index, $page := (where .Site.Pages "Params.GeekdocProtected" "ne" true) }}
|
||||
{{ if ne $index 0 }},{{ end }}
|
||||
{
|
||||
"id": {{ $index }},
|
||||
"href": "{{ $page.RelPermalink }}",
|
||||
"title": {{ (partial "utils/title" $page) | jsonify }},
|
||||
"parent": {{ with $page.Parent }}{{ (partial "utils/title" .) | jsonify }}{{ else }}""{{ end }},
|
||||
"content": {{ $page.Plain | jsonify }}
|
||||
}
|
||||
{{ end }}
|
||||
]
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 17 KiB |
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"custom.css": "custom.css"
|
||||
}
|
|
@ -1,10 +1,498 @@
|
|||
{
|
||||
"custom.css": "custom.css",
|
||||
"js/clipboard.min.js": "js/clipboard-af8ab36589.min.js",
|
||||
"js/flexsearch.min.js": "js/flexsearch-ad47a5e1ee.min.js",
|
||||
"js/groupBy.min.js": "js/groupBy-62b30ac391.min.js",
|
||||
"js/mermaid.min.js": "js/mermaid-71505ed73e.min.js",
|
||||
"main.min.css": "main-b21fa8a269.min.css",
|
||||
"mobile.min.css": "mobile-249b801e7d.min.css",
|
||||
"print.min.css": "print-f79fc3e5d7.min.css"
|
||||
"main.js": {
|
||||
"src": "js/main-51ef884d.bundle.min.js",
|
||||
"integrity": "sha512-N2Kn8ofPbqAp701o6xD6Pe/l7xTrGXqGPuTl2ossRg2PneJpmti0sEL3Qh49NKoHfHULmyOe8P0Qlvozaz3ZTQ=="
|
||||
},
|
||||
"mermaid.js": {
|
||||
"src": "js/mermaid-cb6d4919.bundle.min.js",
|
||||
"integrity": "sha512-5lubmps5WW+bFS73EzoJQb4YdNnqFqJGBi3GrWpCA3s6rsIKhFR0JdXROZBO2GyrJMyWD1iLcmPCfCZO/KrUVg=="
|
||||
},
|
||||
"katex.js": {
|
||||
"src": "js/katex-8f5d1c53.bundle.min.js",
|
||||
"integrity": "sha512-V6pdV2EI9DxULqCVNz8JNsDv06IR4gVRNhOjIDW4e7AZFuXh0JhSTbHq2nU5sUXaTP/X+p8YS2OcoZyTDiioow=="
|
||||
},
|
||||
"search.js": {
|
||||
"src": "js/search-1c4cfb2d.bundle.min.js",
|
||||
"integrity": "sha512-wK0vKlf8b3uje5GnRC4RN0aL7HzWDu7slqHlbfqCmCbHW30ede6D5H4rc/VqrpOx/Pf1ZfTV5L4Tx4pka1TwXQ=="
|
||||
},
|
||||
"js/273-0d96b20d.chunk.min.js": {
|
||||
"src": "js/273-0d96b20d.chunk.min.js",
|
||||
"integrity": "sha512-KAp0BChF8IbfeQbiTyiFk717Vinm69T+RuZLf3Bf8Z2EXk6UL/+SxJLHgdc2uDsvGLeozgItqW9RkJXBA3w1cQ=="
|
||||
},
|
||||
"js/116-2bf49fb1.chunk.min.js": {
|
||||
"src": "js/116-2bf49fb1.chunk.min.js",
|
||||
"integrity": "sha512-yBCqcmxpVT8L4nP8RCIINK6ZzP27Ms1hPS4Whkg7tMl9FUmOHt/podhi9o988CZnEbzblGx/51+cDhN1ngIP6w=="
|
||||
},
|
||||
"fonts/LiberationSans-Italic.woff": {
|
||||
"src": "fonts/LiberationSans-Italic.woff",
|
||||
"integrity": "sha512-3rg7qqlEgAeip3NcoxqNNKeVrPvkXCxHbybcidDz8/aKmNhtp9LG45K20dOaOxvWrB+XbjM6bBPnRuzJj8Pltw=="
|
||||
},
|
||||
"fonts/LiberationSans-BoldItalic.woff": {
|
||||
"src": "fonts/LiberationSans-BoldItalic.woff",
|
||||
"integrity": "sha512-l+QH9jdBUO/jvAiX27bbZvr5vCiPwBt1IJqfTy3545wRaqGOP2qeFNvolbaj7kIS7d0rc841Lgf7NACrcMFCmQ=="
|
||||
},
|
||||
"fonts/LiberationSans-Bold.woff": {
|
||||
"src": "fonts/LiberationSans-Bold.woff",
|
||||
"integrity": "sha512-dcvCYm+u+bCFKnERGNyS94DBqaNaaXr7TdD6cNXNvCwNV1jk7mOnRXub3rjX2hoIEcyMSBbeIny9nP5QCBij2g=="
|
||||
},
|
||||
"fonts/LiberationSans.woff": {
|
||||
"src": "fonts/LiberationSans.woff",
|
||||
"integrity": "sha512-X8iWtp7gsJFHLyWhQzM8IZMH97LUsxhB5Hzv9smPHsqmRrDhl/S5xClHq3lUEtupVjCxcthMXl2qQvXcM3XVkA=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-2732x2048.png": {
|
||||
"src": "favicon/apple-touch-startup-image-2732x2048.png",
|
||||
"integrity": "sha512-520ICJWMPSzTibQuHKpyYHgznwGlf3T95MTLoETOEpTzuxSYelNYNJhcYIhyv6I0r+PtLXNDfxMaIGAJewU2Dw=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-2048x2732.png": {
|
||||
"src": "favicon/apple-touch-startup-image-2048x2732.png",
|
||||
"integrity": "sha512-zSQs1F7Hz5qUzsyvq/kOycugg2k1t42QxIPAQIHXC87EwzjPPPewWinVDkqi+GIuGSa1xqzHv3srOCpKmgE0QA=="
|
||||
},
|
||||
"fonts/LiberationMono.woff": {
|
||||
"src": "fonts/LiberationMono.woff",
|
||||
"integrity": "sha512-fP8icFlpIzR+72w2iaQLQAImsyFi7T1hjZhT4102/kw2k0EJ8Q4iufSfjxhlKyeh7EAzF8OaEsOKeOmA7MfHVA=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-2224x1668.png": {
|
||||
"src": "favicon/apple-touch-startup-image-2224x1668.png",
|
||||
"integrity": "sha512-WXbw/s6qbt56l3Id4IFpLFhVx+otXWyFN/EwpJ5TU+hY5JGA8Ro3f+vOFYXP04Mwdubg5kEqzw/4HzD6uZRMVw=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-1668x2224.png": {
|
||||
"src": "favicon/apple-touch-startup-image-1668x2224.png",
|
||||
"integrity": "sha512-WCqMLLCyfHzTprEAoaPFaeHwJYEsusnb12rdoLXXbMbXA6v6KKUYDfziu2Z4HQ/34MpGSf7wvxfZss76rrHivg=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-2388x1668.png": {
|
||||
"src": "favicon/apple-touch-startup-image-2388x1668.png",
|
||||
"integrity": "sha512-xrkXrwGMnitt+kmv275t0MBE6S6+zxBZIYo87N3JdEVoq1HdG3PpO1gJZ4FaDWDWBH/1OF6/pYVmtF4QoTActQ=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-2160x1620.png": {
|
||||
"src": "favicon/apple-touch-startup-image-2160x1620.png",
|
||||
"integrity": "sha512-MMXrqQtIn50RcyBDPW/a9lTQ55/ad0cz6x5Ilv3Fv5JRZDgzGwlzJnD6YcNyvod2PCsKgoCAF+KqHa/odyJccQ=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-1668x2388.png": {
|
||||
"src": "favicon/apple-touch-startup-image-1668x2388.png",
|
||||
"integrity": "sha512-iZGmjl4HG8f2LKnAIsJpoplLTPbwbpydO+2V/3mI73rSY5haG5JhcdU5ZGzqeuGjSdm11MK5j7w4IZ9VRpyyhQ=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-1620x2160.png": {
|
||||
"src": "favicon/apple-touch-startup-image-1620x2160.png",
|
||||
"integrity": "sha512-D2Ad9ZPnEd1Ld5t6u5ljx3mdRy/VOyR11Qeee4rk1QVTThehfgx2slFfH86o36B6CBHaDZYMrWlMyXS6H8DI0A=="
|
||||
},
|
||||
"fonts/LiberationSans-Italic.woff2": {
|
||||
"src": "fonts/LiberationSans-Italic.woff2",
|
||||
"integrity": "sha512-boZm4ZsUNEmYS85TJvhuBiOUS18gpj0+9WbFgBpAQbCWdU5yde32bVS6rP0YvNvZMuS/R92y+e/bKbcgbMGDtg=="
|
||||
},
|
||||
"fonts/LiberationSans-BoldItalic.woff2": {
|
||||
"src": "fonts/LiberationSans-BoldItalic.woff2",
|
||||
"integrity": "sha512-5MVxBiZI9GlXK/F6eeZnwsLBYOMzoQ+ncAmSIoBa+kkrYnMfWaEHJaJO9tA6ml44ety3gt4e9tNmYZULvO86ug=="
|
||||
},
|
||||
"fonts/LiberationSans-Bold.woff2": {
|
||||
"src": "fonts/LiberationSans-Bold.woff2",
|
||||
"integrity": "sha512-msH61PCwMuCScUPTyVOjuQgZBhYICioAyJxifpioqircJqe1voESkLNzFz6NBmhewRZvfwJHKzwAne1cxg7mpQ=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-2048x1536.png": {
|
||||
"src": "favicon/apple-touch-startup-image-2048x1536.png",
|
||||
"integrity": "sha512-JL85dQr6+4HH6oukUWxPs1rbTKe2ZZE+t148UJBE6B4BGy8JYdtDZ8RMnks6vfzDNP7mk58GF1K6vEPZD/O/CQ=="
|
||||
},
|
||||
"fonts/LiberationSans.woff2": {
|
||||
"src": "fonts/LiberationSans.woff2",
|
||||
"integrity": "sha512-/se1p5pF9DbDIpOqEIdjqpr1J3v84dQAHPFdMsK1ZiojTlOWQJuqCH4jZ+oZh2K7TtOJa8lyY14RIHTvGh3+SQ=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-1536x2048.png": {
|
||||
"src": "favicon/apple-touch-startup-image-1536x2048.png",
|
||||
"integrity": "sha512-zd8Wn/2cJh9AFShTRz9iMIPIuCHnxOyabursGmH17EbbyEsL66xYP/F2FggCD6vc4/KOk73NQc8UFXLd6ZFx3A=="
|
||||
},
|
||||
"fonts/LiberationMono.woff2": {
|
||||
"src": "fonts/LiberationMono.woff2",
|
||||
"integrity": "sha512-p5oGo6T78XQ6SECsAez1Sc9HBw0SvLJlhndS+pJ0KyauzBdilh7/8/M/V8ivTjbJKU+rJHtIjHtMUVhPQjXq+g=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-2208x1242.png": {
|
||||
"src": "favicon/apple-touch-startup-image-2208x1242.png",
|
||||
"integrity": "sha512-Oei3vVNEzEvSajRyWJV0ZzFPwULEdbGklMa9s59PtFwCEfBU87HCzQfNxGEG7lze2TKftuLZqIqj0N15ZZ8JcA=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-1242x2208.png": {
|
||||
"src": "favicon/apple-touch-startup-image-1242x2208.png",
|
||||
"integrity": "sha512-rX1o6UJqKhO11hs6wQWOVNns6aafDqcVlPxuLx6TCCgIN4+evdu0M1X/7ZZalxaH4HHcDb3F72OjMw0JrzC8DA=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-2688x1242.png": {
|
||||
"src": "favicon/apple-touch-startup-image-2688x1242.png",
|
||||
"integrity": "sha512-M0IjR8gLlbqqql5/qjIhYyfm/poMOz70jRQIQyL1wYQBCquD4N7G3lm9Mqc3bJP0yvmBGgrflV9fg8sikxjWdw=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-1242x2688.png": {
|
||||
"src": "favicon/apple-touch-startup-image-1242x2688.png",
|
||||
"integrity": "sha512-xigXQLupadhWPZNsRFDri8f/Cm4J20shvo/wIM3P+qHIxAcj/kqgRfON/UHr2Lrn6eA11uEGrg8CkngM+F8zbw=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-2436x1125.png": {
|
||||
"src": "favicon/apple-touch-startup-image-2436x1125.png",
|
||||
"integrity": "sha512-Q6kqiD5/zHEEM/XYaSf+VjpBw++Jg3KSSqycIBiVFj2UGwArcxxesmzuCvfbtUmOoKAtso+Bjh38sXrEcrYD/A=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-1125x2436.png": {
|
||||
"src": "favicon/apple-touch-startup-image-1125x2436.png",
|
||||
"integrity": "sha512-uDKdJPnbrR3sjbZxVTnhUwWFgc02uUgG/Oj4G0sb0jJtcyVShsPBCefDdV1EalLkhZiVrHnSkiiM1hOIQ9aJjg=="
|
||||
},
|
||||
"main.scss": {
|
||||
"src": "main-2437a034.min.css",
|
||||
"integrity": "sha512-KraOMcVfNL7GMdB3uZLnkjZDlYUa3BcMUUiiEgDMeOthszfq+97zUk/FKz5aJFWlB5gheaKLikGiM5qqIhyECw=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-1792x828.png": {
|
||||
"src": "favicon/apple-touch-startup-image-1792x828.png",
|
||||
"integrity": "sha512-SclwE8AAOyR81/CdPU5XjiybQ9sQhmPht+Sz4/d7PR7gZhpoLEKBj0ovrWNV4xsiVKPhJCsdmkl17UIHftlWHg=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-828x1792.png": {
|
||||
"src": "favicon/apple-touch-startup-image-828x1792.png",
|
||||
"integrity": "sha512-UkZGpIoAUN4QBxO8q2qv/dsmyexeOmatgoz5W0sYrcwMyANSXdh/AzkUCATEur+2nDNa7FpycVZ+H7ox9teiww=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-750x1334.png": {
|
||||
"src": "favicon/apple-touch-startup-image-750x1334.png",
|
||||
"integrity": "sha512-fXVcGmV8nj/H4wZRG24ZgUOPO3qjMNMtMPGArIjsdtFC7MugmT2oZlmlZJTN1v6JIOoQPfDEmRBC2OY+83aOFg=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-1334x750.png": {
|
||||
"src": "favicon/apple-touch-startup-image-1334x750.png",
|
||||
"integrity": "sha512-8XSFf8v/KZW7sETjasY2xo7QOjF4rIAyKVlMg0ln3f6ltia/PgMmT2uyZtpfEmVjxhKzCE5sBprWWQMPgCnB5A=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-640x1136.png": {
|
||||
"src": "favicon/apple-touch-startup-image-640x1136.png",
|
||||
"integrity": "sha512-XXoL6TF7XiLsGSozR/i/rHSLxq4+EYSuJy1yVXkuYD1Z5pKLE79mEixZtIAlFAUH4vp5/jDnqUeLZEF0WKj3Fg=="
|
||||
},
|
||||
"favicon/apple-touch-icon-1024x1024.png": {
|
||||
"src": "favicon/apple-touch-icon-1024x1024.png",
|
||||
"integrity": "sha512-24xfiS1TIVCTRTPPBBFqdDquj1YjC5Uv4/27/X6rXavl3EFm8jvyKHJoNNBZnADuPDnNUp3fZ3w8YjFjh/72eg=="
|
||||
},
|
||||
"favicon/apple-touch-startup-image-1136x640.png": {
|
||||
"src": "favicon/apple-touch-startup-image-1136x640.png",
|
||||
"integrity": "sha512-sCGiDX6KSnVLTN3SxgxU3idna/C4kSpxEg1e0LDd5Va9GKGU9Pwxsxbfztovdoa4dCzUQor7bNkP9AV31ZUhHw=="
|
||||
},
|
||||
"favicon/android-chrome-512x512.png": {
|
||||
"src": "favicon/android-chrome-512x512.png",
|
||||
"integrity": "sha512-4LwQNKmVInikOHD2/rQlGO+YsQ20ty8OPlvY1ZkCTW6z79PzYu7sxBKChoRWZz29Qu+5pswP4gcnlFJM8h16Ig=="
|
||||
},
|
||||
"fonts/KaTeX_AMS-Regular.woff": {
|
||||
"src": "fonts/KaTeX_AMS-Regular.woff",
|
||||
"integrity": "sha512-9OTmXDiUyTZC10JExwbsf9iq5LBx+9l7D9C4/6i+l0df+q4VmoRuBkqtOGsQJq6Ak3lnikurNrXbfpooemNRWw=="
|
||||
},
|
||||
"favicon/favicon.ico": {
|
||||
"src": "favicon/favicon.ico",
|
||||
"integrity": "sha512-eiPeWA9BpWCHB8RTkHgjSniPpdfHwX28K4PwZRbsFvw/iSg643dh0kzSxoP9PM7TP7HOTtsTjhjkivaLucn8fg=="
|
||||
},
|
||||
"fonts/KaTeX_Main-Regular.woff": {
|
||||
"src": "fonts/KaTeX_Main-Regular.woff",
|
||||
"integrity": "sha512-e/R6E/kxpe/ZJOoelEE/Up1luI+TGgnZk7sqD5WEgZni3mT7SuJIXeg+Tds6aQVW3EU5OdrzkQgy7SKvgmlwNw=="
|
||||
},
|
||||
"favicon/android-chrome-384x384.png": {
|
||||
"src": "favicon/android-chrome-384x384.png",
|
||||
"integrity": "sha512-z6jq3E8UfsKnmAvAqe3f/6zU3G4J64Si2leW1zd+aOXeEmOit/TLX+95PP+nt8RccwNZLSdcvxSSbnO3QOvgiA=="
|
||||
},
|
||||
"fonts/KaTeX_Main-Bold.woff": {
|
||||
"src": "fonts/KaTeX_Main-Bold.woff",
|
||||
"integrity": "sha512-+UGGXn4fqiTI5j9vbHK7pGg1ArRyP1KjM10tTyRjdEXUXl8VYS8VFuKcZm7TYzSAUbKCyMROpMarzCPNdhwUYA=="
|
||||
},
|
||||
"favicon/firefox_app_512x512.png": {
|
||||
"src": "favicon/firefox_app_512x512.png",
|
||||
"integrity": "sha512-t7wJcQ8LAHmPf6wFzun/zUzG9Ul3VDyzIibk26esgRzt9YAxXQ4QURKjKbdSX+Chozn+hHgbGdwGHUhZCDeIkw=="
|
||||
},
|
||||
"fonts/KaTeX_AMS-Regular.woff2": {
|
||||
"src": "fonts/KaTeX_AMS-Regular.woff2",
|
||||
"integrity": "sha512-gAE8LJexY6Fb4a8zluSx/+2E4uy09m2cU4S2aUbdJVMhYine4XXka/ehaMYIPso+KvEjy22Nu9LicCgefbF/gg=="
|
||||
},
|
||||
"fonts/KaTeX_Main-Regular.woff2": {
|
||||
"src": "fonts/KaTeX_Main-Regular.woff2",
|
||||
"integrity": "sha512-G/qfHSw59EYNIAQD8uKjJ9K5ZLpOANYUlemDOCbMgEFEt1NoYHBPdBaUk12AWMo1BYb5fMsxnlfRRyMQD0iGIA=="
|
||||
},
|
||||
"fonts/KaTeX_Main-Bold.woff2": {
|
||||
"src": "fonts/KaTeX_Main-Bold.woff2",
|
||||
"integrity": "sha512-H+N2wqGFzd+GKbPWL2b/P2EMC2x9xHwWWkv2qsb56vSMQZA+sxRpebHebFddNq3kSXdlE7bhofyupEO+H7oPlg=="
|
||||
},
|
||||
"favicon/mstile-310x310.png": {
|
||||
"src": "favicon/mstile-310x310.png",
|
||||
"integrity": "sha512-QMpRgeWeAmOnY+5kV7ko2T90q5Ssf/BdkDlils8RA/os/00+s85+LqCv75LA6x0mURQBRslXAYTvlExXQc8nnQ=="
|
||||
},
|
||||
"katex.css": {
|
||||
"src": "katex-93898449.min.css",
|
||||
"integrity": "sha512-+jN99xaxTfEnkXs3pd7HbOx3huOnHRvLCSHTSo5guaqvNSZmQuHzlU0F6iqxROksLb9MatYIhinBDlSY59UPQg=="
|
||||
},
|
||||
"fonts/KaTeX_Main-Italic.woff": {
|
||||
"src": "fonts/KaTeX_Main-Italic.woff",
|
||||
"integrity": "sha512-OjmWMTSIDlTf1ZGhOQiZsZAQ1cySo4EizhqshTvbuqZkgbUtV0291hC/QN+o4+VFc7OBxaKWYaJgjFRszpQnuA=="
|
||||
},
|
||||
"fonts/KaTeX_Main-BoldItalic.woff": {
|
||||
"src": "fonts/KaTeX_Main-BoldItalic.woff",
|
||||
"integrity": "sha512-AXQBZ7CFEPmUhTEmD290away1CMsXG+6B1M2c0kKewQFg5ynwIe/FryXq4dNvcTh6Cjt4PqMMss8oi95k0itSw=="
|
||||
},
|
||||
"fonts/KaTeX_Math-Italic.woff": {
|
||||
"src": "fonts/KaTeX_Math-Italic.woff",
|
||||
"integrity": "sha512-TUy17s9hPgsK0he3aJxEtpu4tdrXIgAwSR0wJnkr4b0BNKSEAap1orh7MA2QgT/KOV5ob6ZOWO7HqbwwQ9GVcg=="
|
||||
},
|
||||
"fonts/KaTeX_Math-BoldItalic.woff": {
|
||||
"src": "fonts/KaTeX_Math-BoldItalic.woff",
|
||||
"integrity": "sha512-vOUuWrtWrswqo6byaXpdKXUyJVAQjZdovxjXMqt2d6077hOXP4buD9+CEGzgiJdFOLXgVyt663Qg24V6tq7q0g=="
|
||||
},
|
||||
"favicon/android-chrome-256x256.png": {
|
||||
"src": "favicon/android-chrome-256x256.png",
|
||||
"integrity": "sha512-hrtqFFkYWcGSiynPdzkSpODgNSTLfpzDvmYou56Qzi8t3HhZ3jyMDE9g0JcWJ1I6SbaWSfZdkAHXDj2v56x1Og=="
|
||||
},
|
||||
"fonts/KaTeX_Main-Italic.woff2": {
|
||||
"src": "fonts/KaTeX_Main-Italic.woff2",
|
||||
"integrity": "sha512-SNdgxBdi/h31Ew67zOq7HpN4HMSa4vcCObb4qEywoA1tsMO8V+FQjZMrzVggok/ZIOK54mYOZBwNHPxiJLwhlw=="
|
||||
},
|
||||
"fonts/KaTeX_Main-BoldItalic.woff2": {
|
||||
"src": "fonts/KaTeX_Main-BoldItalic.woff2",
|
||||
"integrity": "sha512-R8cMx8fydyMLYJCaCwtZOVO5dDNFXr7+HQ4k3anhEEwt1D/apo8SHVx6P9z+0b1WiCB3HayQkQmWWgW39rKstQ=="
|
||||
},
|
||||
"fonts/KaTeX_Math-Italic.woff2": {
|
||||
"src": "fonts/KaTeX_Math-Italic.woff2",
|
||||
"integrity": "sha512-LRyb4qX7MDVXzDJUxajFm8w3ycI/0r+z6F4qY8c/YbZUYFx246I2HiNeQfpsTCa6nsCtrF4Uah6G0rzJhZR+uA=="
|
||||
},
|
||||
"fonts/KaTeX_Math-BoldItalic.woff2": {
|
||||
"src": "fonts/KaTeX_Math-BoldItalic.woff2",
|
||||
"integrity": "sha512-sR3fQuYKVLlf6OGCMP7Fk/S8itLYLDZY/yN9YADDDPEbY0Ii3XaOAR0ytOTUgL8nehwjBdaCw+iMXMwT0rtKqQ=="
|
||||
},
|
||||
"fonts/Metropolis.woff": {
|
||||
"src": "fonts/Metropolis.woff",
|
||||
"integrity": "sha512-fqZj5Y6hMExrGIb+OuLPY4hnQ+/ILiPON6MpAc77iKhzTWNn7KvSdfwS2NY5hmAYGfggxl55cYRUgT6F/W/RjQ=="
|
||||
},
|
||||
"fonts/KaTeX_Typewriter-Regular.woff": {
|
||||
"src": "fonts/KaTeX_Typewriter-Regular.woff",
|
||||
"integrity": "sha512-B1qvhsqVeoK6poFsOdVkSoAG3RcVLila6oTE8GeRxtrRsGTF2eWKwdY3C6Td1Cijbh6UvjkunBI/2pWW6mCaXg=="
|
||||
},
|
||||
"fonts/KaTeX_SansSerif-Bold.woff": {
|
||||
"src": "fonts/KaTeX_SansSerif-Bold.woff",
|
||||
"integrity": "sha512-x8XDvU1FWtV3VSVxwu9zpioBXeiCPU5ePRJintoxp1HuPg3LBF0XC0X9fOnObO6VHEtQtKwzKfevNLhrQWzi9w=="
|
||||
},
|
||||
"fonts/KaTeX_SansSerif-Italic.woff": {
|
||||
"src": "fonts/KaTeX_SansSerif-Italic.woff",
|
||||
"integrity": "sha512-WNH/1HTzqy+zZJp9UuT4yMSK/ynD0f2Wd4aY3w0mKUezWJtXn9uUaa3tAdw5rE7finAD2STy24CzwVku+lc5xg=="
|
||||
},
|
||||
"fonts/KaTeX_Typewriter-Regular.woff2": {
|
||||
"src": "fonts/KaTeX_Typewriter-Regular.woff2",
|
||||
"integrity": "sha512-S0dhh+bWsw9RVuG+u7wuf+MKUhB6FozZMooTc172VAUU+g1jjXAki8d+/7ecphrmo2/4uumB2bbMdWbvU5u/oA=="
|
||||
},
|
||||
"fonts/KaTeX_Fraktur-Bold.woff": {
|
||||
"src": "fonts/KaTeX_Fraktur-Bold.woff",
|
||||
"integrity": "sha512-bbDj1QAzneCTF9//oni1rIQ3wKjtMX2kGbSrYaVNJOCOPOHWD+Mn8ZCACQAKzsVnWX9IB8X1Uwazyjz95kmPAg=="
|
||||
},
|
||||
"fonts/KaTeX_Fraktur-Regular.woff": {
|
||||
"src": "fonts/KaTeX_Fraktur-Regular.woff",
|
||||
"integrity": "sha512-bphDtaXYbimBkkS8AIyw0aBbDWoMVkeEIwAnz+Ra1LrcrZxPCaqiV615P3g8zRvWCUifq1fNBAqvHYLqkhd1TA=="
|
||||
},
|
||||
"favicon/android-chrome-192x192.png": {
|
||||
"src": "favicon/android-chrome-192x192.png",
|
||||
"integrity": "sha512-Tb4H9uC/7OYYBQxRJMO1SIDOvlBS6jHMENnsoKROAUCCjbsptwwMTR0xisgwkJdDkgEH88s9yLj/sy55OJqwtA=="
|
||||
},
|
||||
"fonts/KaTeX_SansSerif-Regular.woff": {
|
||||
"src": "fonts/KaTeX_SansSerif-Regular.woff",
|
||||
"integrity": "sha512-O4mHHzWemAibL1YVBTG0lPZWRdcNQ/Qbn2/SvQ5gz9CREHr3pWQgrLI7VuqScudj74azd1v0S4YUiNuoFjwfoA=="
|
||||
},
|
||||
"fonts/KaTeX_SansSerif-Bold.woff2": {
|
||||
"src": "fonts/KaTeX_SansSerif-Bold.woff2",
|
||||
"integrity": "sha512-VWDeiG3/j21h8nr6IlK3IcD9ST9gTGHTAaDC0hFMIqCqWztrzO6H7bVJ2GWOlp9seqrFCQvkrcoEKULdYBxSEg=="
|
||||
},
|
||||
"fonts/KaTeX_SansSerif-Italic.woff2": {
|
||||
"src": "fonts/KaTeX_SansSerif-Italic.woff2",
|
||||
"integrity": "sha512-hZ3bBm8cZVRGJ8lu3C9HAvGbBBWc3a5gK7PZj5BcUPmP0zHxCnUQwAjw5M90j26Nu49DmGHd6BpUC3tGRdgSVw=="
|
||||
},
|
||||
"favicon/apple-touch-icon-180x180.png": {
|
||||
"src": "favicon/apple-touch-icon-180x180.png",
|
||||
"integrity": "sha512-G/pMzRUISFGsqqFUi+3GgVi2TXN2PmPbpCiYXo9YSi+Rn1dtPmeGDY5GAz4rRzf6kIAlXThmSKTS/rpbKgObuA=="
|
||||
},
|
||||
"favicon/apple-touch-icon-precomposed.png": {
|
||||
"src": "favicon/apple-touch-icon-precomposed.png",
|
||||
"integrity": "sha512-G/pMzRUISFGsqqFUi+3GgVi2TXN2PmPbpCiYXo9YSi+Rn1dtPmeGDY5GAz4rRzf6kIAlXThmSKTS/rpbKgObuA=="
|
||||
},
|
||||
"favicon/apple-touch-icon.png": {
|
||||
"src": "favicon/apple-touch-icon.png",
|
||||
"integrity": "sha512-G/pMzRUISFGsqqFUi+3GgVi2TXN2PmPbpCiYXo9YSi+Rn1dtPmeGDY5GAz4rRzf6kIAlXThmSKTS/rpbKgObuA=="
|
||||
},
|
||||
"fonts/KaTeX_Fraktur-Bold.woff2": {
|
||||
"src": "fonts/KaTeX_Fraktur-Bold.woff2",
|
||||
"integrity": "sha512-y7piX+9FWnsdHdn+ZeIbANy0v3KeCMwb0Ygq8IKnZq9tCtyFyEk9NSmqSc+thy0MSyQUhHYhdPCkjSHijHbJgA=="
|
||||
},
|
||||
"fonts/KaTeX_Fraktur-Regular.woff2": {
|
||||
"src": "fonts/KaTeX_Fraktur-Regular.woff2",
|
||||
"integrity": "sha512-scyZ311eKDPdtO9dnq+j8r21ahTaiygTrpRE14e7YxUs/7tjMv61mCA+cpLAz0+lzrDaZoyMuCr8yTvqgsSX5Q=="
|
||||
},
|
||||
"fonts/Metropolis.woff2": {
|
||||
"src": "fonts/Metropolis.woff2",
|
||||
"integrity": "sha512-oS5Y/tXC8/vG4f7KiHpDicy0yE4zs1TMps9Mzfk3M8O7/QNeC9Q7ZcsjnncuGo0vQB5RXU8g460XpSUB5Luc4Q=="
|
||||
},
|
||||
"favicon/firefox_app_128x128.png": {
|
||||
"src": "favicon/firefox_app_128x128.png",
|
||||
"integrity": "sha512-NV/H3Ya562iH3lsTWu3+nE1RZ+wxKKYEMxkYPCH4JLqaesUQfefWavIN0PUzB4TQ0ONmmp4fwkAtXmMh4hplHQ=="
|
||||
},
|
||||
"fonts/KaTeX_Script-Regular.woff": {
|
||||
"src": "fonts/KaTeX_Script-Regular.woff",
|
||||
"integrity": "sha512-GnZ6z38QaaRNmfOLaikoe5x0HgxQ0qhfi5eGO6QzdHTXdGiTWxV+RjYPrvoW/vc9Bk/BdVH9vBcIODhXtwsYZg=="
|
||||
},
|
||||
"fonts/KaTeX_SansSerif-Regular.woff2": {
|
||||
"src": "fonts/KaTeX_SansSerif-Regular.woff2",
|
||||
"integrity": "sha512-E9Kz6Ra6gXiS2dEGdOw6t9bDwwqYaLGplO0sYwtsh9aveV9xu/j0kwSkr0VZJ+otqrSPzox6sJKTvzlVjQtQsQ=="
|
||||
},
|
||||
"favicon/apple-touch-icon-167x167.png": {
|
||||
"src": "favicon/apple-touch-icon-167x167.png",
|
||||
"integrity": "sha512-03qCnveVmQRddor+JMS5JGMGqdkcbCc+rUuXqQGhB34lanb92p2Ipigqa1FINeyYc64DJRrQkzRkWorEqPom6A=="
|
||||
},
|
||||
"fonts/KaTeX_Script-Regular.woff2": {
|
||||
"src": "fonts/KaTeX_Script-Regular.woff2",
|
||||
"integrity": "sha512-/jhfsi53uEpLeJpQXaN1nzNSIuRztZkiF6tZ16/KKJ631DD61mQBX80CEnFaQ6+t7t2cuqTUH2xR/WoY8xvvOw=="
|
||||
},
|
||||
"favicon/apple-touch-icon-152x152.png": {
|
||||
"src": "favicon/apple-touch-icon-152x152.png",
|
||||
"integrity": "sha512-AZqdsbtWe2Kccqa1Q8gE/dUCTGo2ZlkdG0rGiamZ3XdynYBL5GnEguQDJjiMWnkblEmlQ8CWE5pxoOQ1TVnQqA=="
|
||||
},
|
||||
"favicon/mstile-150x150.png": {
|
||||
"src": "favicon/mstile-150x150.png",
|
||||
"integrity": "sha512-JJCSnHo3cpid9GAXaJz3/PMXcjlWzVYgmKlUwTC7+NJ4vUXdQ6bjHtomGhZMcHOHKy6bT6bwxBip3ngVoAlzNw=="
|
||||
},
|
||||
"favicon/apple-touch-icon-144x144.png": {
|
||||
"src": "favicon/apple-touch-icon-144x144.png",
|
||||
"integrity": "sha512-sxApsYMBq0EyzbVYkxKtKTau+noTtKH65s9UEm5LVbeFjMlR5XDTxsEbYNesz/p/DHEg/oeNXAOG1QvCdV+8yw=="
|
||||
},
|
||||
"favicon/android-chrome-144x144.png": {
|
||||
"src": "favicon/android-chrome-144x144.png",
|
||||
"integrity": "sha512-GHmf/LdyneSuxyqoiRP4en4ZDfyU/vJOd5mLK1cW95Hk5Pi+3rvk/R3Cqtkdd4E6tyIwZGHNh+WHL+D6eoOxiA=="
|
||||
},
|
||||
"favicon/mstile-144x144.png": {
|
||||
"src": "favicon/mstile-144x144.png",
|
||||
"integrity": "sha512-GHmf/LdyneSuxyqoiRP4en4ZDfyU/vJOd5mLK1cW95Hk5Pi+3rvk/R3Cqtkdd4E6tyIwZGHNh+WHL+D6eoOxiA=="
|
||||
},
|
||||
"fonts/KaTeX_Caligraphic-Bold.woff": {
|
||||
"src": "fonts/KaTeX_Caligraphic-Bold.woff",
|
||||
"integrity": "sha512-dfUme9QtfyLoXukghFSnTuTlLsQ/8O6YC0QnfbcJermS4BcnS4yWkZT1MEkDPL7/OUnVHcBSuLlvPbQQviJLGw=="
|
||||
},
|
||||
"fonts/KaTeX_Caligraphic-Regular.woff": {
|
||||
"src": "fonts/KaTeX_Caligraphic-Regular.woff",
|
||||
"integrity": "sha512-31Lt1ryrvtQyFxwrABw2xZiojGGAxgDf1ojQFVy11mzmlJfn38QVSwxISnudZVBrslsHyahoDuZK6wBrayJ/LA=="
|
||||
},
|
||||
"favicon/apple-touch-icon-120x120.png": {
|
||||
"src": "favicon/apple-touch-icon-120x120.png",
|
||||
"integrity": "sha512-SxZdzj6QHtW/aA1qzqxFt+7ukVK1bzTsileyHR8xhVyk7U10DhLH+lkX7/04jctPFQ16p1/aW1XYfus0Az7mxw=="
|
||||
},
|
||||
"favicon/mstile-310x150.png": {
|
||||
"src": "favicon/mstile-310x150.png",
|
||||
"integrity": "sha512-iby/HgTBJo85KRrZdnhz7cb7ilVeD5sFCeKcCoTf/HAcVqJACSWyRi8zjYVp8QrtjCL2yi9yZ0sUsKfzsKIJdQ=="
|
||||
},
|
||||
"fonts/KaTeX_Caligraphic-Bold.woff2": {
|
||||
"src": "fonts/KaTeX_Caligraphic-Bold.woff2",
|
||||
"integrity": "sha512-Ljf53JaOUtVkASUsf8k9tpv6UeNL81MK9LR5Zco6qeIZ7l7oL3heh4SgT5mljccYcPeQ3+qB0JG8GLOiyXcNAg=="
|
||||
},
|
||||
"fonts/KaTeX_Caligraphic-Regular.woff2": {
|
||||
"src": "fonts/KaTeX_Caligraphic-Regular.woff2",
|
||||
"integrity": "sha512-lxXHdk259ffCje8TkPwi9v0jtJzlnd2O4FKYgzmdPOGHFdEzdM+7FiAumS0ClHPuqU90I2hTSmpDcpmIT/P8yQ=="
|
||||
},
|
||||
"favicon/apple-touch-icon-114x114.png": {
|
||||
"src": "favicon/apple-touch-icon-114x114.png",
|
||||
"integrity": "sha512-LGiIXYDx+ERXCQDJCktzcb03hmvkGZdRBh2X9SX9esa/A9GXQyWIwN4+6KxKD+Wtvy4YxzaJK98HZs3538CDGg=="
|
||||
},
|
||||
"fonts/KaTeX_Size1-Regular.woff": {
|
||||
"src": "fonts/KaTeX_Size1-Regular.woff",
|
||||
"integrity": "sha512-XkOjZvm8Ok63zQ6QfZMMFYV0/WG59qxy8+n8Iu6Vqzbo9S+HhvsUpoQDEKLOS/BlLmvWQxjKoDJRdwuht5XP7A=="
|
||||
},
|
||||
"fonts/KaTeX_Size2-Regular.woff": {
|
||||
"src": "fonts/KaTeX_Size2-Regular.woff",
|
||||
"integrity": "sha512-8lcSsq+0OUHQ1txGOO+hbXlRT9HjF0XmcVXU1trgKtDJx+fq2ejI00wJX/Jd+qw7e70BsOIuhvhY/9Og5wGxiw=="
|
||||
},
|
||||
"fonts/KaTeX_Size4-Regular.woff": {
|
||||
"src": "fonts/KaTeX_Size4-Regular.woff",
|
||||
"integrity": "sha512-Yn3rCn0/wh7IJxqTkxIMQmE2R1WuooBx1NXlsrmmodUYljKoXDiY5V/ENfqav4ZaVoHfuahfqQyvwQ8GyMgtLQ=="
|
||||
},
|
||||
"favicon/android-chrome-96x96.png": {
|
||||
"src": "favicon/android-chrome-96x96.png",
|
||||
"integrity": "sha512-Yf4VS4jjOTKPur035TkNhAybS3p2x+jrNli0lyHZJRbfNy2Csi0a7ilwhsVCUl4LFp/JxwFmXFxprI7WwW8o4Q=="
|
||||
},
|
||||
"fonts/KaTeX_Size1-Regular.woff2": {
|
||||
"src": "fonts/KaTeX_Size1-Regular.woff2",
|
||||
"integrity": "sha512-LWpGCcgzMsmdUrmsBIN5OaYPFpbpYpEn+YmrnLfiCbdq8s7aNTtNqdyUxmExvdZ2Vo2Bz87pfzjvN+xtL4+JTg=="
|
||||
},
|
||||
"fonts/GeekdocIcons.woff": {
|
||||
"src": "fonts/GeekdocIcons.woff",
|
||||
"integrity": "sha512-gsV/o3FjlJTaGl4XpO0lc2kMeZQ8JLvZUNgMCXuP7ye3GlMUmPbdK7VYdyzsWbzDCcJMwDaWv9Le3HvoQFvKoA=="
|
||||
},
|
||||
"fonts/KaTeX_Size2-Regular.woff2": {
|
||||
"src": "fonts/KaTeX_Size2-Regular.woff2",
|
||||
"integrity": "sha512-BHXH2ZEkl2rojultow0zLPFK6z4CAw4f7zYtMCTNhaXYnmELwHufinI8V3Mc45cLgD+IPwsA9hoinugMQimuwQ=="
|
||||
},
|
||||
"fonts/KaTeX_Size4-Regular.woff2": {
|
||||
"src": "fonts/KaTeX_Size4-Regular.woff2",
|
||||
"integrity": "sha512-F6rlkx62QlxNW+vGsxhQWgaktNw+Gzb6fmNF9fEzx5O/FWE+6L7711Q5jKjzMQVeegEdiSeSqvncYFE3j81Dzw=="
|
||||
},
|
||||
"favicon/firefox_app_60x60.png": {
|
||||
"src": "favicon/firefox_app_60x60.png",
|
||||
"integrity": "sha512-YrL6darERXRvnGbTP7MWZFaIqiXEurdbwsg6HeWl+0wlZPC6Wy9DHUcTfjtixv+1+DAVal8YLoIqXTAyYcN+lw=="
|
||||
},
|
||||
"fonts/KaTeX_Size3-Regular.woff": {
|
||||
"src": "fonts/KaTeX_Size3-Regular.woff",
|
||||
"integrity": "sha512-Eo35y+ZReFpmRgZv0N2dKAc5ggcXGE3wnrCf28qnu5G1+Ikvew0IFkdCYN1I6FnHsPDTnQzjJZU7+F7oBYvHKQ=="
|
||||
},
|
||||
"favicon/android-chrome-72x72.png": {
|
||||
"src": "favicon/android-chrome-72x72.png",
|
||||
"integrity": "sha512-PFMzr2iXImbdQDiZVNugaYzoQAUvLCsNrnm0pV0zLxIuczytBfu1nGKjfJZwyOfMzKQpQfYi4z0cdgit9bJ5IQ=="
|
||||
},
|
||||
"fonts/GeekdocIcons.woff2": {
|
||||
"src": "fonts/GeekdocIcons.woff2",
|
||||
"integrity": "sha512-gvev7ELVPLd4H5Pfane7+wc5boX7ChPZ8wV6M+cYZo4DLROSDdNzJtn8PusJUxpS0jK2jEJjPrxz2fVvN07pkQ=="
|
||||
},
|
||||
"favicon/apple-touch-icon-76x76.png": {
|
||||
"src": "favicon/apple-touch-icon-76x76.png",
|
||||
"integrity": "sha512-klHJxEbcTgx7V1TBM/gByA6vzXK5MUkaiQ1gTybEp6g0sMzpIdO9XTIrsDeelKGI1aHtSBEWPLqF1rYp5T1Oiw=="
|
||||
},
|
||||
"favicon/apple-touch-icon-72x72.png": {
|
||||
"src": "favicon/apple-touch-icon-72x72.png",
|
||||
"integrity": "sha512-UHXFta5GyLLQ5IoVQBJGP4yzOVwkRG6m6YTrhw/ABwjgsKX4P3u6h2VnbKpGyRgf5hdORwUFyYrJBgQpIzpNWQ=="
|
||||
},
|
||||
"favicon/mstile-70x70.png": {
|
||||
"src": "favicon/mstile-70x70.png",
|
||||
"integrity": "sha512-Wj4a4NiSy1axSDENK/8G13PQPQuaEaFPxOBCj+iVmZ0ifk2UMPbtZDo2fdpCTtwS7BWiHCyv97Kvg4sqAZbRjA=="
|
||||
},
|
||||
"fonts/KaTeX_Size3-Regular.woff2": {
|
||||
"src": "fonts/KaTeX_Size3-Regular.woff2",
|
||||
"integrity": "sha512-avq+5YU1Cd9KtJ0U6hujFkh4fMNVZC59Y/HPlqUXkxeUlWca4Fmqn1YA8WK1188GG59qRHBtoZzvRgC9k9fGZA=="
|
||||
},
|
||||
"favicon/favicon-48x48.png": {
|
||||
"src": "favicon/favicon-48x48.png",
|
||||
"integrity": "sha512-rs5vrXU7NuGuRCv1RimyERFr1DzyQBviAoYmJxD8uHjl0y57SAleg14A0piuXkRUDL1FE0ZyVA/INPz+8GQjpg=="
|
||||
},
|
||||
"favicon/apple-touch-icon-60x60.png": {
|
||||
"src": "favicon/apple-touch-icon-60x60.png",
|
||||
"integrity": "sha512-YTKtyy5p2t+jz9cFS1c9kFm0LMH95s37ZRuL5AS0Lhpkf8B+xSokR/v+3xxYskT3QRSx5vcyHai8ia44X6xT5Q=="
|
||||
},
|
||||
"favicon/apple-touch-icon-57x57.png": {
|
||||
"src": "favicon/apple-touch-icon-57x57.png",
|
||||
"integrity": "sha512-2yW78pw4eDZ7hEUoWvNaEEeXOf30rUaKXoZwSvrilX8xBvqij/opEMPF0OHHU2lQziDIGGN9YsUnASQbhd95bw=="
|
||||
},
|
||||
"favicon/android-chrome-48x48.png": {
|
||||
"src": "favicon/android-chrome-48x48.png",
|
||||
"integrity": "sha512-UTXsN/aHnuTWAyYmp+/Ov0H1ML3HnIfUvYuwPyeWTwRs/8bZETHUYsj4scx48YkAJ+fhRnobXYqwr0swY7cXeQ=="
|
||||
},
|
||||
"favicon/favicon-32x32.png": {
|
||||
"src": "favicon/favicon-32x32.png",
|
||||
"integrity": "sha512-cT9VQkceXZYw+3yDSljXGTmfHdp6Gh+ncc7mdtKoB3AK4a6MgMR1YTeGpC0IOm5EmMQoPICXwvMPWskD9YSUAA=="
|
||||
},
|
||||
"favicon/android-chrome-36x36.png": {
|
||||
"src": "favicon/android-chrome-36x36.png",
|
||||
"integrity": "sha512-uIOaCXbCeY2tIMUPros0wfBdDIh842crzDQ/4NjTeEqzFhwrK3HlTsdFXYNcqg9OOuO+aATZKwIGYbgaA8vQbA=="
|
||||
},
|
||||
"mobile.scss": {
|
||||
"src": "mobile-467819cb.min.css",
|
||||
"integrity": "sha512-HebydAISuYOx0io1hzOxsS95WxRV57CfFueceivz/H7bqrTjwBGSnLItaNmjUK0CRfy34X7J5+SYFNG9xIn7Zg=="
|
||||
},
|
||||
"favicon/manifest.json": {
|
||||
"src": "favicon/manifest.json",
|
||||
"integrity": "sha512-UncSB3MQSXZlaaxiclpQvvZDDYew4CITJ7JTlLcb8kZpyB3YgbqdHBIechH3HIQ1uJsYhgQyItxG3VMxOLfzKw=="
|
||||
},
|
||||
"favicon/favicon-16x16.png": {
|
||||
"src": "favicon/favicon-16x16.png",
|
||||
"integrity": "sha512-lQ+H0RYy3ZlksL5zUaV2WcH2PQdG6imd5hr1KfQOK4o1LXm7JAHvyjOSN3E+HC+AN1pCuoaITo6UI3SpW+CHNA=="
|
||||
},
|
||||
"print.scss": {
|
||||
"src": "print-19966b38.min.css",
|
||||
"integrity": "sha512-xpNQeJp9e4SbqEv+pFoGrOehV+RABxosG+toy6+HJ6SGFLxJNgG4+/RwPYdg3BxBvRXfkTmwf+iArAT3/a3+3g=="
|
||||
},
|
||||
"favicon/browserconfig.xml": {
|
||||
"src": "favicon/browserconfig.xml",
|
||||
"integrity": "sha512-RDr7E4dJmkJdQMyNa4dtxx3iYnrSnFHlifwV1LriUChccTz+aB0gNe0CRL94GXHGd1DiUU+QgEXXNC2Mupn9aw=="
|
||||
},
|
||||
"favicon/manifest.webapp": {
|
||||
"src": "favicon/manifest.webapp",
|
||||
"integrity": "sha512-XPr/eyO6YOVNkn3FS0wAMxe2FPIQmzn5YvV0E2kJ+feOQG4pzZVL09aa35gSUjLR18BVenKZTTtJy4Yh+reRTQ=="
|
||||
},
|
||||
"custom.css": {
|
||||
"src": "custom.css",
|
||||
"integrity": "sha512-1kALo+zc1L2u1rvyxPIew+ZDPWhnIA1Ei2rib3eHHbskQW+EMxfI9Ayyva4aV+YRrHvH0zFxvPSFIuZ3mfsbRA=="
|
||||
}
|
||||
}
|
49
themes/hugo-geekdoc/i18n/de.yaml
Normal file
|
@ -0,0 +1,49 @@
|
|||
---
|
||||
edit_page: Seite bearbeiten
|
||||
|
||||
nav_navigation: Navigation
|
||||
nav_tags: Tags
|
||||
nav_more: Weitere
|
||||
nav_top: Nach oben
|
||||
|
||||
form_placeholder_search: Suchen
|
||||
|
||||
error_page_title: Verlaufen? Keine Sorge
|
||||
error_message_title: Verlaufen?
|
||||
error_message_code: Fehler 404
|
||||
error_message_text: >
|
||||
Wir können die Seite nach der Du gesucht hast leider nicht finden. Keine Sorge,
|
||||
wir bringen Dich zurück zur <a class="gdoc-error__link" href="{{ . }}">Startseite</a>.
|
||||
|
||||
button_toggle_dark: Wechsel zwischen Dunkel/Hell/Auto Modus
|
||||
button_nav_open: Navigation öffnen
|
||||
button_nav_close: Navigation schließen
|
||||
button_menu_open: Menüband öffnen
|
||||
button_menu_close: Menüband schließen
|
||||
button_homepage: Zurück zur Startseite
|
||||
|
||||
title_anchor_prefix: "Link zu:"
|
||||
|
||||
posts_read_more: Ganzen Artikel lesen
|
||||
posts_read_time:
|
||||
one: "Eine Minute Lesedauer"
|
||||
other: "{{ . }} Minuten Lesedauer"
|
||||
posts_update_prefix: Aktualisiert am
|
||||
posts_count:
|
||||
one: "Ein Artikel"
|
||||
other: "{{ . }} Artikel"
|
||||
posts_tagged_with: Alle Artikel mit dem Tag '{{ . }}'
|
||||
|
||||
footer_build_with: >
|
||||
Entwickelt mit <a href="https://gohugo.io/" class="gdoc-footer__link">Hugo</a> und
|
||||
<svg class="gdoc-icon gdoc_heart"><use xlink:href="#gdoc_heart"></use></svg>
|
||||
footer_legal_notice: Impressum
|
||||
footer_privacy_policy: Datenschutzerklärung
|
||||
footer_content_license_prefix: >
|
||||
Inhalt lizensiert unter
|
||||
|
||||
language_switch_no_tranlation_prefix: "Seite nicht übersetzt:"
|
||||
|
||||
propertylist_required: erforderlich
|
||||
propertylist_optional: optional
|
||||
propertylist_default: Standardwert
|
49
themes/hugo-geekdoc/i18n/en.yaml
Normal file
|
@ -0,0 +1,49 @@
|
|||
---
|
||||
edit_page: Edit page
|
||||
|
||||
nav_navigation: Navigation
|
||||
nav_tags: Tags
|
||||
nav_more: More
|
||||
nav_top: Back to top
|
||||
|
||||
form_placeholder_search: Search
|
||||
|
||||
error_page_title: Lost? Don't worry
|
||||
error_message_title: Lost?
|
||||
error_message_code: Error 404
|
||||
error_message_text: >
|
||||
Seems like what you are looking for can't be found. Don't worry, we can
|
||||
bring you back to the <a class="gdoc-error__link" href="{{ . }}">homepage</a>.
|
||||
|
||||
button_toggle_dark: Toggle Dark/Light/Auto mode
|
||||
button_nav_open: Open Navigation
|
||||
button_nav_close: Close Navigation
|
||||
button_menu_open: Open Menu Bar
|
||||
button_menu_close: Close Menu Bar
|
||||
button_homepage: Back to homepage
|
||||
|
||||
title_anchor_prefix: "Anchor to:"
|
||||
|
||||
posts_read_more: Read full post
|
||||
posts_read_time:
|
||||
one: "One minute to read"
|
||||
other: "{{ . }} minutes to read"
|
||||
posts_update_prefix: Updated on
|
||||
posts_count:
|
||||
one: "One post"
|
||||
other: "{{ . }} posts"
|
||||
posts_tagged_with: All posts tagged with '{{ . }}'
|
||||
|
||||
footer_build_with: >
|
||||
Built with <a href="https://gohugo.io/" class="gdoc-footer__link">Hugo</a> and
|
||||
<svg class="gdoc-icon gdoc_heart"><use xlink:href="#gdoc_heart"></use></svg>
|
||||
footer_legal_notice: Legal Notice
|
||||
footer_privacy_policy: Privacy Policy
|
||||
footer_content_license_prefix: >
|
||||
Content licensed under
|
||||
|
||||
language_switch_no_tranlation_prefix: "Page not translated:"
|
||||
|
||||
propertylist_required: required
|
||||
propertylist_optional: optional
|
||||
propertylist_default: default
|
49
themes/hugo-geekdoc/i18n/it.yaml
Normal file
|
@ -0,0 +1,49 @@
|
|||
---
|
||||
edit_page: Modifica la pagina
|
||||
|
||||
nav_navigation: Navigazione
|
||||
nav_tags: Etichette
|
||||
nav_more: Altro
|
||||
nav_top: Torna su
|
||||
|
||||
form_placeholder_search: Cerca
|
||||
|
||||
error_page_title: Perso? Non ti preoccupare
|
||||
error_message_title: Perso?
|
||||
error_message_code: Errore 404
|
||||
error_message_text: >
|
||||
Sembra che non sia possibile trovare quello che stavi cercando. Non ti preoccupare,
|
||||
possiamo riportarti alla <a class="gdoc-error__link" href="{{ . }}">pagina iniziale</a>.
|
||||
|
||||
button_toggle_dark: Seleziona il tema Chiaro/Scuro/Automatico
|
||||
button_nav_open: Apri la Navigazione
|
||||
button_nav_close: Chiudi la Navigazione
|
||||
button_menu_open: Apri la Barra del Menu
|
||||
button_menu_close: Chiudi la Barra del Menu
|
||||
button_homepage: Torna alla pagina iniziale
|
||||
|
||||
title_anchor_prefix: "Ancora a:"
|
||||
|
||||
posts_read_more: Leggi tutto il post
|
||||
posts_read_time:
|
||||
one: "Tempo di lettura: un minuto"
|
||||
other: "Tempo di lettura: {{ . }} minuti"
|
||||
posts_update_prefix: Aggiornato il
|
||||
posts_count:
|
||||
one: "Un post"
|
||||
other: "{{ . }} post"
|
||||
posts_tagged_with: Tutti i post etichettati con '{{ . }}'
|
||||
|
||||
footer_build_with: >
|
||||
Realizzato con <a href="https://gohugo.io/" class="gdoc-footer__link">Hugo</a> e
|
||||
<svg class="gdoc-icon gdoc_heart"><use xlink:href="#gdoc_heart"></use></svg>
|
||||
footer_legal_notice: Avviso Legale
|
||||
footer_privacy_policy: Politica sulla Privacy
|
||||
footer_content_license_prefix: >
|
||||
Contenuto sotto licenza
|
||||
|
||||
language_switch_no_tranlation_prefix: "Pagina non tradotta:"
|
||||
|
||||
propertylist_required: richiesto
|
||||
propertylist_optional: opzionale
|
||||
propertylist_default: valore predefinito
|
50
themes/hugo-geekdoc/i18n/zh-cn.yaml
Normal file
|
@ -0,0 +1,50 @@
|
|||
---
|
||||
edit_page: 编辑页面
|
||||
|
||||
nav_navigation: 导航
|
||||
nav_tags: 标签
|
||||
nav_more: 更多
|
||||
nav_top: 回到顶部
|
||||
|
||||
form_placeholder_search: 搜索
|
||||
|
||||
error_page_title: 迷路了? 不用担心
|
||||
error_message_title: 迷路了?
|
||||
error_message_code: 错误 404
|
||||
error_message_text: >
|
||||
好像找不到你要找的东西。 别担心,我们可以
|
||||
带您回到<a class="gdoc-error__link" href="{{ . }}">主页</a>。
|
||||
|
||||
button_toggle_dark: 切换暗/亮/自动模式
|
||||
button_nav_open: 打开导航
|
||||
button_nav_close: 关闭导航
|
||||
button_menu_open: 打开菜单栏
|
||||
button_menu_close: 关闭菜单栏
|
||||
button_homepage: 返回首页
|
||||
|
||||
title_anchor_prefix: "锚定到:"
|
||||
|
||||
posts_read_more: 阅读全文
|
||||
posts_read_time:
|
||||
one: "一分钟阅读时间"
|
||||
other: "{{ . }} 分钟阅读时间"
|
||||
posts_update_prefix: 更新时间
|
||||
posts_count:
|
||||
one: 一篇文章
|
||||
other: "{{ . }} 个帖子"
|
||||
posts_tagged_with: 所有带有“{{ . }}”标签的帖子。
|
||||
|
||||
footer_build_with: >
|
||||
基于 <a href="https://gohugo.io/" class="gdoc-footer__link">Hugo</a>
|
||||
<svg class="gdoc-icon gdoc_heart"><use xlink:href="#gdoc_heart"></use></svg> 制作
|
||||
|
||||
footer_legal_notice: "法律声明"
|
||||
footer_privacy_policy: "隐私政策"
|
||||
footer_content_license_prefix: >
|
||||
内容许可证
|
||||
|
||||
language_switch_no_tranlation_prefix: "页面未翻译:"
|
||||
|
||||
propertylist_required: 需要
|
||||
propertylist_optional: 可选
|
||||
propertylist_default: 默认值
|
Before Width: | Height: | Size: 274 KiB After Width: | Height: | Size: 225 KiB |
Before Width: | Height: | Size: 232 KiB |
Before Width: | Height: | Size: 233 KiB After Width: | Height: | Size: 508 KiB |
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 130 KiB |
|
@ -1,35 +1,40 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="{{ .Site.Language.Lang }}">
|
||||
<head>
|
||||
{{ partial "head/meta" . }}
|
||||
<title>{{ i18n "error_page_title" }}</title>
|
||||
|
||||
<head>
|
||||
{{ partial "head" . }}
|
||||
</head>
|
||||
{{ partial "head/favicons" . }}
|
||||
{{ partial "head/others" . }}
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<body>
|
||||
{{ partial "svg-icon-symbols" . }}
|
||||
|
||||
|
||||
<div class="wrapper">
|
||||
{{ partial "site-header" (dict "Root" . "MenuEnabled" false) }}
|
||||
<input type="checkbox" class="hidden" id="menu-header-control" />
|
||||
|
||||
<main class="gdoc-error flex-even">
|
||||
<div class="flex align-center justify-center">
|
||||
<div class="gdoc-error__icon">
|
||||
<svg class="icon gdoc_cloud_off"><use xlink:href="#gdoc_cloud_off"></use></svg>
|
||||
</div>
|
||||
<div class="gdoc-error__message">
|
||||
<div class="gdoc-error__line gdoc-error__title">Lost?</div>
|
||||
<div class="gdoc-error__line gdoc-error__code">Error 404</div>
|
||||
<div class="gdoc-error__line gdoc-error__help">
|
||||
Seems like what you are looking for can't be found. Don't worry we can
|
||||
bring you back to the <a class="gdoc-error__link" href="{{ .Site.BaseURL }}">homepage</a>.
|
||||
</div>
|
||||
</div>
|
||||
{{ partial "site-header" (dict "Root" . "MenuEnabled" false) }}
|
||||
|
||||
|
||||
<main class="gdoc-error flex-even">
|
||||
<div class="flex align-center justify-center">
|
||||
<div class="gdoc-error__icon">
|
||||
<svg class="gdoc-icon gdoc_cloud_off"><use xlink:href="#gdoc_cloud_off"></use></svg>
|
||||
</div>
|
||||
<div class="gdoc-error__message">
|
||||
<div class="gdoc-error__line gdoc-error__title">{{ i18n "error_message_title" }}</div>
|
||||
<div class="gdoc-error__line gdoc-error__code">{{ i18n "error_message_code" }}</div>
|
||||
<div class="gdoc-error__line gdoc-error__help">
|
||||
{{ i18n "error_message_text" .Site.BaseURL | safeHTML }}
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
{{ partial "site-footer" . }}
|
||||
{{ partial "site-footer" . }}
|
||||
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
{{- $showAnchor := (and (default true .Page.Params.GeekdocAnchor) (default true .Page.Site.Params.GeekdocAnchor)) -}}
|
||||
|
||||
|
||||
<!-- prettier-ignore-start -->
|
||||
{{- if $showAnchor -}}
|
||||
<div class="gdoc-page__anchorwrap">
|
||||
<h{{ .Level }} id="{{ .Anchor | safeURL }}">
|
||||
{{ .Text | safeHTML }}
|
||||
<a data-clipboard-text="{{ .Page.Permalink }}#{{ .Anchor | safeURL }}" class="gdoc-page__anchor gdoc-page__anchor--right clip" aria-label="Anchor {{ .Text | safeHTML }}" href="#{{ .Anchor | safeURL }}">
|
||||
<svg class="icon gdoc_link"><use xlink:href="#gdoc_link"></use></svg>
|
||||
<a data-clipboard-text="{{ .Page.Permalink }}#{{ .Anchor | safeURL }}" class="gdoc-page__anchor clip flex align-center" title="{{ i18n "title_anchor_prefix" }} {{ .Text | safeHTML }}" aria-label="{{ i18n "title_anchor_prefix" }} {{ .Text | safeHTML }}" href="#{{ .Anchor | safeURL }}">
|
||||
<svg class="gdoc-icon gdoc_link"><use xlink:href="#gdoc_link"></use></svg>
|
||||
</a>
|
||||
</h{{ .Level }}>
|
||||
</div>
|
||||
|
@ -16,3 +18,4 @@
|
|||
</h{{ .Level }}>
|
||||
</div>
|
||||
{{- end -}}
|
||||
<!-- prettier-ignore-end -->
|
||||
|
|
|
@ -1,2 +1,6 @@
|
|||
<img src="{{ .Destination | safeURL | relURL }}" alt="{{ .Text }}" {{ with .Title}} title="{{ . }}"{{ end }} />
|
||||
<img
|
||||
src="{{ .Destination | safeURL }}"
|
||||
alt="{{ .Text }}"
|
||||
{{ with .Title }}title="{{ . }}"{{ end }}
|
||||
/>
|
||||
{{- /* Drop trailing newlines */ -}}
|
||||
|
|
|
@ -1,3 +1,14 @@
|
|||
{{- $raw := or (hasPrefix .Text "<img") (hasPrefix .Text "<figure") -}}
|
||||
<a class="gdoc-markdown__link{{ if $raw }}--raw{{ end }}" href="{{ .Destination | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}>{{ .Text | safeHTML }}</a>
|
||||
{{- $code := hasPrefix .Text "<code" -}}
|
||||
<a
|
||||
class="gdoc-markdown__link{{ if $raw -}}
|
||||
--raw
|
||||
{{- else if $code -}}
|
||||
--code
|
||||
{{- end }}"
|
||||
href="{{ .Destination | safeURL }}"
|
||||
{{ with .Title }}title="{{ . }}"{{ end }}
|
||||
>
|
||||
{{- .Text | safeHTML -}}
|
||||
</a>
|
||||
{{- /* Drop trailing newlines */ -}}
|
||||
|
|
|
@ -1,31 +1,60 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="{{ .Site.Language.Lang }}">
|
||||
<html
|
||||
lang="{{ .Site.Language.Lang }}"
|
||||
class="color-toggle-hidden"
|
||||
{{ if default false .Site.Params.GeekdocDarkModeCode }}code-theme="dark"{{ end }}
|
||||
>
|
||||
<head>
|
||||
{{ partial "head/meta" . }}
|
||||
<title>
|
||||
{{- if eq .Kind "home" -}}
|
||||
{{ .Site.Title }}
|
||||
{{- else -}}
|
||||
{{ printf "%s | %s" (partial "utils/title" .) .Site.Title }}
|
||||
{{- end -}}
|
||||
</title>
|
||||
|
||||
<head>
|
||||
{{ partial "head" . }}
|
||||
</head>
|
||||
{{ partial "head/favicons" . }}
|
||||
{{ partial "head/rel-me" . }}
|
||||
{{ partial "head/microformats" . }}
|
||||
{{ partial "head/others" . }}
|
||||
{{ partial "head/custom" . }}
|
||||
</head>
|
||||
|
||||
<body itemscope itemtype="https://schema.org/WebPage">
|
||||
<body itemscope itemtype="https://schema.org/WebPage">
|
||||
{{ partial "svg-icon-symbols" . }}
|
||||
|
||||
<div class="wrapper">
|
||||
<input type="checkbox" class="hidden" id="menu-control" />
|
||||
{{ partial "site-header" (dict "Root" . "MenuEnabled" true) }}
|
||||
|
||||
<main class="container flex flex-even">
|
||||
<aside class="gdoc-nav">
|
||||
{{ partial "menu" . }}
|
||||
</aside>
|
||||
<div
|
||||
class="wrapper {{ if default false .Site.Params.GeekdocDarkModeDim }}dark-mode-dim{{ end }}"
|
||||
>
|
||||
<input type="checkbox" class="hidden" id="menu-control" />
|
||||
<input type="checkbox" class="hidden" id="menu-header-control" />
|
||||
{{ $navEnabled := default true .Page.Params.GeekdocNav }}
|
||||
{{ partial "site-header" (dict "Root" . "MenuEnabled" $navEnabled) }}
|
||||
|
||||
<div class="gdoc-page">
|
||||
{{ template "main" . }}
|
||||
{{ partial "page-footer" . }}
|
||||
</div>
|
||||
</main>
|
||||
|
||||
{{ partial "site-footer" . }}
|
||||
<main class="container flex flex-even">
|
||||
{{ if $navEnabled }}
|
||||
<aside class="gdoc-nav">
|
||||
{{ partial "menu" . }}
|
||||
</aside>
|
||||
{{ end }}
|
||||
|
||||
|
||||
<div class="gdoc-page">
|
||||
{{ template "main" . }}
|
||||
|
||||
|
||||
<div class="gdoc-page__footer flex flex-wrap justify-between">
|
||||
{{ partial "menu-nextprev" . }}
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
{{ partial "site-footer" . }}
|
||||
</div>
|
||||
|
||||
{{ partial "foot" . }}
|
||||
</body>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
{{ define "main" }}
|
||||
{{ partial "page-header" . }}
|
||||
<article class="gdoc-markdown">
|
||||
<h1>{{ partial "title" . }}</h1>
|
||||
{{ partial "content" . }}
|
||||
</article>
|
||||
{{ partial "page-header" . }}
|
||||
|
||||
|
||||
<article
|
||||
class="gdoc-markdown gdoc-markdown__align--{{ default "left" (.Page.Params.GeekdocAlign | lower) }}"
|
||||
>
|
||||
<h1>{{ partial "utils/title" . }}</h1>
|
||||
{{ partial "utils/content" . }}
|
||||
</article>
|
||||
{{ end }}
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
{{ define "main" }}
|
||||
{{ partial "page-header" . }}
|
||||
{{ partial "page-header" . }}
|
||||
|
||||
<article class="gdoc-markdown">
|
||||
<h1>{{ partial "title" . }}</h1>
|
||||
{{ partial "content" . }}
|
||||
</article>
|
||||
|
||||
<article
|
||||
class="gdoc-markdown gdoc-markdown__align--{{ default "left" (.Page.Params.GeekdocAlign | lower) }}"
|
||||
>
|
||||
<h1>{{ partial "utils/title" . }}</h1>
|
||||
{{ partial "utils/content" . }}
|
||||
</article>
|
||||
{{ end }}
|
||||
|
|
48
themes/hugo-geekdoc/layouts/_default/taxonomy.html
Normal file
|
@ -0,0 +1,48 @@
|
|||
{{ define "main" }}
|
||||
{{ range .Paginator.Pages }}
|
||||
<article class="gdoc-post">
|
||||
<header class="gdoc-post__header">
|
||||
<h1 class="gdoc-post__title">
|
||||
<a href="{{ .RelPermalink }}">{{ partial "utils/title" . }}</a>
|
||||
</h1>
|
||||
</header>
|
||||
|
||||
<section class="gdoc-markdown">
|
||||
{{ .Summary }}
|
||||
</section>
|
||||
|
||||
<div class="gdoc-post__readmore">
|
||||
{{ if .Truncated }}
|
||||
<a
|
||||
class="flex-inline align-center fake-link"
|
||||
title="{{ i18n "posts_read_more" }}"
|
||||
href="{{ .RelPermalink }}"
|
||||
>
|
||||
{{ i18n "posts_read_more" }}
|
||||
<i class="gdoc-icon">gdoc_arrow_right_alt</i>
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
<footer class="gdoc-post__footer">
|
||||
<div class="flex flex-wrap align-center gdoc-post__meta">
|
||||
{{ partial "posts/metadata.html" . }}
|
||||
</div>
|
||||
</footer>
|
||||
</article>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ define "post-tag" }}
|
||||
<span class="gdoc-post__tag">
|
||||
<span class="gdoc-button">
|
||||
<a
|
||||
class="gdoc-button__link"
|
||||
href="{{ .page.RelPermalink }}"
|
||||
title="{{ i18n "posts_tagged_with" .name }}"
|
||||
>
|
||||
{{ .name }}
|
||||
</a>
|
||||
</span>
|
||||
</span>
|
||||
{{ end }}
|
31
themes/hugo-geekdoc/layouts/_default/terms.html
Normal file
|
@ -0,0 +1,31 @@
|
|||
{{ define "main" }}
|
||||
{{ range .Paginator.Pages.ByTitle }}
|
||||
<article class="gdoc-post">
|
||||
<header class="gdoc-post__header">
|
||||
<h1 class="gdoc-post__title">
|
||||
<a href="{{ .RelPermalink }}">{{ partial "utils/title" . }}</a>
|
||||
</h1>
|
||||
</header>
|
||||
|
||||
<footer class="gdoc-post__meta flex align-center">
|
||||
<span class="flex align-center no-wrap">
|
||||
{{ $pageCount := len .Pages }}
|
||||
<svg class="gdoc-icon gdoc_tag"><use xlink:href="#gdoc_tag"></use></svg>
|
||||
<span class="gdoc-post__tag">
|
||||
{{ i18n "posts_count" $pageCount }}
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<span class="flex align-center no-wrap">
|
||||
<svg class="gdoc-icon gdoc_star"><use xlink:href="#gdoc_star"></use></svg>
|
||||
<span>
|
||||
{{ $latet := index .Pages.ByDate 0 }}
|
||||
{{ with $latet }}
|
||||
<a href="{{ .RelPermalink }}">{{ partial "utils/title" . }}</a>
|
||||
{{ end }}
|
||||
</span>
|
||||
</span>
|
||||
</footer>
|
||||
</article>
|
||||
{{ end }}
|
||||
{{ end }}
|
|
@ -1 +0,0 @@
|
|||
{{ .Content | replaceRE `<nav id="TableOfContents">\s*<ul>\s*<li>\s*<ul>` `<nav id="TableOfContents"><ul>` | replaceRE `</ul>\s*</li>\s*</ul>\s*</nav>` `</ul></nav>` | safeHTML }}
|
|
@ -1,16 +1,6 @@
|
|||
{{ if default true .Site.Params.GeekdocSearch }}
|
||||
{{ .Scratch.Set "geekdocSearchConfig" .Site.Params.GeekdocSearchConfig }}
|
||||
<!-- Remove after https://github.com/gohugoio/hugo/issues/6331 -->
|
||||
{{ $searchJSFile := printf "js/%s.search.js" .Language.Lang }}
|
||||
{{ $searchJS := resources.Get "js/search.js" | resources.ExecuteAsTemplate $searchJSFile . | resources.Minify | fingerprint }}
|
||||
<script defer src="{{ $searchJS.RelPermalink }}"></script>
|
||||
{{ end }}
|
||||
|
||||
{{ if default true .Site.Params.GeekdocAnchorCopy }}
|
||||
<script defer src="{{ index .Site.Data.assets "js/clipboard.min.js" | relURL }}"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function(event) {
|
||||
var clipboard = new ClipboardJS('.clip');
|
||||
});
|
||||
</script>
|
||||
<script defer src="{{ index (index .Site.Data.assets "search.js") "src" | relURL }}"></script>
|
||||
{{- $searchConfigFile := printf "search/%s.config.json" .Language.Lang -}}
|
||||
{{- $searchConfig := resources.Get "search/config.json" | resources.ExecuteAsTemplate $searchConfigFile . | resources.Minify -}}
|
||||
{{- $searchConfig.Publish -}}
|
||||
{{ end }}
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="{{ partial "title" . }}">
|
||||
|
||||
<title>{{ partial "title" . }} | {{ .Site.Title -}}</title>
|
||||
|
||||
<link rel="icon" href="{{ "favicon/favicon-32x32.png" | relURL }}" type="image/x-icon">
|
||||
|
||||
<link rel="preload" as="font" href="{{ "fonts/Metropolis.woff2" | relURL }}" type="font/woff2" crossorigin="anonymous">
|
||||
<link rel="preload" as="font" href="{{ "fonts/LiberationSans.woff2" | relURL }}" type="font/woff2" crossorigin="anonymous">
|
||||
<link rel="preload" as="font" href="{{ "fonts/LiberationSans-Bold.woff2" | relURL }}" type="font/woff2" crossorigin="anonymous">
|
||||
<link rel="preload" as="font" href="{{ "fonts/LiberationSans-BoldItalic.woff2" | relURL }}" type="font/woff2" crossorigin="anonymous">
|
||||
<link rel="preload" as="font" href="{{ "fonts/LiberationSans-Italic.woff2" | relURL }}" type="font/woff2" crossorigin="anonymous">
|
||||
<link rel="preload" as="font" href="{{ "fonts/LiberationMono.woff2" | relURL }}" type="font/woff2" crossorigin="anonymous">
|
||||
<link rel="preload" as="font" href="{{ "fonts/DroidSans.woff2" | relURL }}" type="font/woff2" crossorigin="anonymous">
|
||||
<link rel="preload" as="font" href="{{ "fonts/GeekdocIcons.woff2" | relURL }}" type="font/woff2" crossorigin="anonymous">
|
||||
|
||||
<link rel="preload" href="{{ index .Site.Data.assets "main.min.css" | relURL }}" as="style">
|
||||
<link rel="stylesheet" href="{{ index .Site.Data.assets "main.min.css" | relURL }}" media="all">
|
||||
|
||||
<link rel="preload" href="{{ index .Site.Data.assets "mobile.min.css" | relURL }}" as="style">
|
||||
<link rel="stylesheet" href="{{ index .Site.Data.assets "mobile.min.css" | relURL }}" media="screen and (max-width: 45rem)">
|
||||
|
||||
<link rel="preload" href="{{ index .Site.Data.assets "print.min.css" | relURL }}" as="style">
|
||||
<link rel="stylesheet" href="{{ index .Site.Data.assets "print.min.css" | relURL }}" media="print">
|
||||
|
||||
<link rel="preload" href="{{ index .Site.Data.assets "custom.css" | relURL }}" as="style">
|
||||
<link rel="stylesheet" href="{{ index .Site.Data.assets "custom.css" | relURL }}" media="all">
|
||||
|
||||
{{ with .OutputFormats.Get "rss" -}}
|
||||
{{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }}
|
||||
{{ end -}}
|
||||
|
||||
{{ printf "<!-- %s -->" "Made with Geekdoc theme https://github.com/thegeeklab/hugo-geekdoc" | safeHTML }}
|
1
themes/hugo-geekdoc/layouts/partials/head/custom.html
Normal file
|
@ -0,0 +1 @@
|
|||
<!-- You can add custom elements to the page header here. -->
|
13
themes/hugo-geekdoc/layouts/partials/head/favicons.html
Normal file
|
@ -0,0 +1,13 @@
|
|||
<link rel="icon" type="image/svg+xml" href="{{ "favicon/favicon.svg" | relURL }}" />
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/png"
|
||||
sizes="32x32"
|
||||
href="{{ "favicon/favicon-32x32.png" | relURL }}"
|
||||
/>
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/png"
|
||||
sizes="16x16"
|
||||
href="{{ "favicon/favicon-16x16.png" | relURL }}"
|
||||
/>
|
14
themes/hugo-geekdoc/layouts/partials/head/meta.html
Normal file
|
@ -0,0 +1,14 @@
|
|||
<meta charset="UTF-8" />
|
||||
<meta name="referrer" content="no-referrer" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="color-scheme" content="light dark" />
|
||||
{{ hugo.Generator }}
|
||||
|
||||
{{ $keywords := default .Site.Params.Keywords .Keywords }}
|
||||
|
||||
{{- with partial "utils/description" . }}
|
||||
<meta name="description" content="{{ trim (. | plainify) "\n" | safeHTML }}" />
|
||||
{{- end }}
|
||||
{{- with $keywords }}
|
||||
<meta name="keywords" content="{{ delimit . "," }}" />
|
||||
{{- end }}
|
|
@ -0,0 +1,3 @@
|
|||
{{ partial "microformats/opengraph.html" . }}
|
||||
{{ partial "microformats/twitter_cards.html" . }}
|
||||
{{ partial "microformats/schema" . }}
|
70
themes/hugo-geekdoc/layouts/partials/head/others.html
Normal file
|
@ -0,0 +1,70 @@
|
|||
<script src="{{ index (index .Site.Data.assets "main.js") "src" | relURL }}"></script>
|
||||
|
||||
<link
|
||||
rel="preload"
|
||||
as="font"
|
||||
href="{{ "fonts/Metropolis.woff2" | relURL }}"
|
||||
type="font/woff2"
|
||||
crossorigin="anonymous"
|
||||
/>
|
||||
<link
|
||||
rel="preload"
|
||||
as="font"
|
||||
href="{{ "fonts/LiberationSans.woff2" | relURL }}"
|
||||
type="font/woff2"
|
||||
crossorigin="anonymous"
|
||||
/>
|
||||
|
||||
<link
|
||||
rel="preload"
|
||||
href="{{ index (index .Site.Data.assets "main.scss") "src" | relURL }}"
|
||||
as="style"
|
||||
/>
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="{{ index (index .Site.Data.assets "main.scss") "src" | relURL }}"
|
||||
media="all"
|
||||
/>
|
||||
|
||||
<link
|
||||
rel="preload"
|
||||
href="{{ index (index .Site.Data.assets "mobile.scss") "src" | relURL }}"
|
||||
as="style"
|
||||
/>
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="{{ index (index .Site.Data.assets "mobile.scss") "src" | relURL }}"
|
||||
media="screen and (max-width: 45rem)"
|
||||
/>
|
||||
|
||||
<link
|
||||
rel="preload"
|
||||
href="{{ index (index .Site.Data.assets "print.scss") "src" | relURL }}"
|
||||
as="style"
|
||||
/>
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="{{ index (index .Site.Data.assets "print.scss") "src" | relURL }}"
|
||||
media="print"
|
||||
/>
|
||||
|
||||
<link
|
||||
rel="preload"
|
||||
href="{{ index (index .Site.Data.assets "custom.css") "src" | relURL }}"
|
||||
as="style"
|
||||
/>
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="{{ index (index .Site.Data.assets "custom.css") "src" | relURL }}"
|
||||
media="all"
|
||||
/>
|
||||
|
||||
{{- with .OutputFormats.Get "html" }}
|
||||
{{ printf `<link href=%q rel=%q type=%q />` .Permalink .Rel .MediaType.Type | safeHTML }}
|
||||
{{- end }}
|
||||
|
||||
{{- if (default false $.Site.Params.GeekdocOverwriteHTMLBase) }}
|
||||
<base href="{{ .Site.BaseURL }}" />
|
||||
{{- end }}
|
||||
|
||||
{{ printf "<!-- %s -->" "Made with Geekdoc theme https://github.com/thegeeklab/hugo-geekdoc" | safeHTML }}
|
1
themes/hugo-geekdoc/layouts/partials/head/rel-me.html
Normal file
|
@ -0,0 +1 @@
|
|||
<!-- place to set your rel-me links https://microformats.org/wiki/rel-me -->
|
51
themes/hugo-geekdoc/layouts/partials/language.html
Normal file
|
@ -0,0 +1,51 @@
|
|||
{{ if .Site.IsMultiLingual }}
|
||||
<span class="gdoc-language">
|
||||
<ul class="gdoc-language__selector" role="button" aria-pressed="false" tabindex="0">
|
||||
<li>
|
||||
{{ range .Site.Languages }}
|
||||
{{ if eq . $.Site.Language }}
|
||||
<span class="flex align-center">
|
||||
<svg class="gdoc-icon gdoc_language"><use xlink:href="#gdoc_language"></use></svg>
|
||||
<span>{{ .Lang | upper }}</span>
|
||||
</span>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
|
||||
<ul class="gdoc-language__list">
|
||||
{{ if $.Translations }}
|
||||
{{ range $.Translations }}
|
||||
<li>
|
||||
<a
|
||||
class="flex gdoc-language__entry"
|
||||
title="{{ .Language.LanguageName }}"
|
||||
href="{{ .RelPermalink }}"
|
||||
hreflang="{{ .Lang }}"
|
||||
lang="{{ .Lang }}"
|
||||
>
|
||||
{{ .Language.LanguageName }}
|
||||
</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{ range .Site.Languages -}}
|
||||
{{ if ne $.Site.Language.Lang .Lang }}
|
||||
<li>
|
||||
<a
|
||||
class="flex gdoc-language__entry"
|
||||
title="{{ i18n "language_switch_no_tranlation_prefix" }} {{ .LanguageName }}"
|
||||
href="{{ .Lang | relLangURL }}"
|
||||
hreflang="{{ .Lang }}"
|
||||
lang="{{ .Lang }}"
|
||||
>
|
||||
{{ .LanguageName }}*
|
||||
</a>
|
||||
</li>
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end }}
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</span>
|
||||
{{ end }}
|
|
@ -1,54 +1,82 @@
|
|||
{{ $current := .current }}
|
||||
{{ template "menu-file" dict "sect" .source "current" $current "site" $current.Site }}
|
||||
|
||||
|
||||
<!-- template -->
|
||||
{{ define "menu-file" }}
|
||||
{{ $current := .current }}
|
||||
{{ $site := .site }}
|
||||
{{ $current := .current }}
|
||||
{{ $site := .site }}
|
||||
|
||||
<ul class="gdoc-nav__list">
|
||||
{{ range sort (default (seq 0) .sect) "weight" }}
|
||||
{{ $current.Scratch.Set "current" $current }}
|
||||
{{ $current.Scratch.Set "site" $site }}
|
||||
|
||||
<li>
|
||||
<ul class="gdoc-nav__list">
|
||||
{{ range sort (default (seq 0) .sect) "weight" }}
|
||||
{{ $name := .name }}
|
||||
{{ if reflect.IsMap .name }}
|
||||
{{ $name = (index .name $site.Language.Lang) }}
|
||||
{{ end }}
|
||||
|
||||
|
||||
<li>
|
||||
{{ $ref := default false .ref }}
|
||||
{{ if $ref}}
|
||||
{{ $site := $current.Scratch.Get "site" }}
|
||||
{{ $this := $site.GetPage .ref }}
|
||||
{{ $current := $current.Scratch.Get "current" }}
|
||||
{{ $icon := default false .icon }}
|
||||
{{ $numberOfPages := (add (len $this.Pages) (len $this.Sections)) }}
|
||||
{{ $isCurrent := eq $current $this }}
|
||||
{{ $isAncestor := $this.IsAncestor $current }}
|
||||
{{ $id := substr (sha1 $this.Permalink) 0 8 }}
|
||||
{{ $hasCollapse := and $this.Params.GeekdocCollapseSection (isset . "sub") }}
|
||||
{{ if $ref }}
|
||||
{{ $this := $site.GetPage .ref }}
|
||||
{{ $icon := default false .icon }}
|
||||
{{ $numberOfPages := (add (len $this.Pages) (len $this.Sections)) }}
|
||||
{{ $isCurrent := eq $current $this }}
|
||||
{{ $isAncestor := $this.IsAncestor $current }}
|
||||
{{ $id := substr (sha1 $this.Permalink) 0 8 }}
|
||||
{{ $doCollapse := and (isset . "sub") (or $this.Params.GeekdocCollapseSection (default false .Site.Params.GeekdocCollapseAllSections)) }}
|
||||
|
||||
{{ if $hasCollapse }}
|
||||
<input type="checkbox" id="{{ printf "navtree-%s" $id }}" class="gdoc-nav__toggle" {{ if or $isCurrent $isAncestor }}checked{{ end }}>
|
||||
<label for="{{ printf "navtree-%s" $id }}" class="flex justify-between">
|
||||
{{ end }}
|
||||
<span class="flex">
|
||||
{{ if $icon }}<svg class="icon {{ .icon }}"><use xlink:href="#{{ .icon }}"></use></svg>{{ end }}
|
||||
<a href="{{ if .external }}{{ .ref }}{{ else }}{{ relref $current .ref }}{{ end }}"
|
||||
class="gdoc-nav__entry {{ if not .external }}{{ if $isCurrent }}is-active{{ end }}{{ end }}">
|
||||
{{ .name }}
|
||||
{{ if or .external ($this.RelPermalink) }}
|
||||
<input
|
||||
type="checkbox"
|
||||
{{ if $doCollapse }}
|
||||
class="gdoc-nav__toggle" id="{{ printf "navtree-%s" $id }}"
|
||||
{{ if or $isCurrent $isAncestor }}checked{{ end }}
|
||||
{{ else }}
|
||||
class="hidden"
|
||||
{{ end }}
|
||||
/>
|
||||
<label
|
||||
{{ if $doCollapse }}
|
||||
for="{{ printf "navtree-%s" $id }}" class="flex justify-between align-center"
|
||||
{{ end }}
|
||||
>
|
||||
<span class="flex">
|
||||
{{ if $icon }}
|
||||
<svg class="gdoc-icon {{ .icon }}"><use xlink:href="#{{ .icon }}"></use></svg>
|
||||
{{ end }}
|
||||
<a
|
||||
href="{{ if .external }}
|
||||
{{ .ref }}
|
||||
{{- else -}}
|
||||
{{ $this.RelPermalink }}
|
||||
{{- end }}"
|
||||
class="gdoc-nav__entry{{- if not .external }}
|
||||
{{- if $isCurrent }}{{ printf " is-active" }}{{ end }}
|
||||
{{- end }}"
|
||||
>
|
||||
{{ $name }}
|
||||
</a>
|
||||
</span>
|
||||
{{ if $hasCollapse }}
|
||||
<svg class="icon gdoc_keyborad_arrow_left"><use xlink:href="#gdoc_keyborad_arrow_left"></use></svg>
|
||||
<svg class="icon gdoc_keyborad_arrow_down hidden"><use xlink:href="#gdoc_keyborad_arrow_down"></use></svg>
|
||||
</span>
|
||||
{{ if $doCollapse }}
|
||||
<svg class="gdoc-icon toggle gdoc_keyboard_arrow_left">
|
||||
<use xlink:href="#gdoc_keyboard_arrow_left"></use>
|
||||
</svg>
|
||||
<svg class="gdoc-icon toggle gdoc_keyboard_arrow_down hidden">
|
||||
<use xlink:href="#gdoc_keyboard_arrow_down"></use>
|
||||
</svg>
|
||||
{{ end }}
|
||||
</label>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
<span class="flex">{{ .name }}</span>
|
||||
<span class="flex">{{ $name }}</span>
|
||||
{{ end }}
|
||||
|
||||
{{ with .sub }}
|
||||
{{ template "menu-file" dict "sect" . "current" ($current.Scratch.Get "current") "site" ($current.Scratch.Get "site") }}
|
||||
{{ template "menu-file" dict "sect" . "current" $current "site" $site }}
|
||||
{{ end }}
|
||||
</li>
|
||||
|
||||
{{ end }}
|
||||
</ul>
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
|
|
46
themes/hugo-geekdoc/layouts/partials/menu-extra.html
Normal file
|
@ -0,0 +1,46 @@
|
|||
{{ $current := .current }}
|
||||
{{ template "menu-extra" dict "sect" .source "current" $current "site" $current.Site "target" .target }}
|
||||
|
||||
|
||||
<!-- template -->
|
||||
{{ define "menu-extra" }}
|
||||
{{ $current := .current }}
|
||||
{{ $site := .site }}
|
||||
{{ $target := .target }}
|
||||
{{ $sect := .sect }}
|
||||
|
||||
{{ range sort (default (seq 0) $sect) "weight" }}
|
||||
{{ if isset . "ref" }}
|
||||
{{ $this := $site.GetPage .ref }}
|
||||
{{ $isCurrent := eq $current $this }}
|
||||
{{ $icon := default false .icon }}
|
||||
|
||||
{{ $name := .name }}
|
||||
{{ if reflect.IsMap .name }}
|
||||
{{ $name = (index .name $site.Language.Lang) }}
|
||||
{{ end }}
|
||||
|
||||
{{ if not .icon }}
|
||||
{{ errorf "Missing 'icon' attribute in data file for '%s' menu item '%s'" $target $name }}
|
||||
{{ end }}
|
||||
|
||||
{{ if eq $target "header" }}
|
||||
<span>
|
||||
<a
|
||||
href="{{ if .external }}
|
||||
{{ .ref }}
|
||||
{{ else }}
|
||||
{{ relref $current .ref }}
|
||||
{{ end }}"
|
||||
class="gdoc-header__link"
|
||||
>
|
||||
<svg class="gdoc-icon {{ .icon }}">
|
||||
<title>{{ $name }}</title>
|
||||
<use xlink:href="#{{ .icon }}"></use>
|
||||
</svg>
|
||||
</a>
|
||||
</span>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
|
@ -1,48 +1,98 @@
|
|||
{{ $current := . }}
|
||||
{{ template "tree-nav" dict "sect" .Site.Home.Sections "current" $current }}
|
||||
|
||||
|
||||
<!-- templates -->
|
||||
{{ define "tree-nav" }}
|
||||
{{ $current := .current }}
|
||||
{{ $current := .current }}
|
||||
|
||||
<ul class="gdoc-nav__list">
|
||||
{{ range .sect.GroupBy "Weight" }}
|
||||
{{ range .ByTitle }}
|
||||
{{ if not .Params.GeekdocHidden }}
|
||||
|
||||
{{ $numberOfPages := (add (len .Pages) (len .Sections)) }}
|
||||
{{ $isParent := and (ne $numberOfPages 0) (not .Params.GeekdocFlatSection) }}
|
||||
{{ $isCurrent := eq $current . }}
|
||||
{{ $isAncestor := .IsAncestor $current }}
|
||||
{{ $id := substr (sha1 .Permalink) 0 8 }}
|
||||
{{ $hasCollapse := and $isParent .Params.GeekdocCollapseSection }}
|
||||
<ul class="gdoc-nav__list">
|
||||
{{ $sortBy := (default "title" .current.Site.Params.GeekdocFileTreeSortBy | lower) }}
|
||||
{{ range .sect.GroupBy "Weight" }}
|
||||
{{ $rangeBy := .ByTitle }}
|
||||
|
||||
<li>
|
||||
{{ if $hasCollapse }}
|
||||
<input type="checkbox" id="{{ printf "navtree-%s" $id }}" class="gdoc-nav__toggle" {{ if or $isCurrent $isAncestor }}checked{{ end }}>
|
||||
<label for="{{ printf "navtree-%s" $id }}" class="flex justify-between">
|
||||
{{ end }}
|
||||
{{ if or .Content .Params.GeekdocFlatSection }}
|
||||
{{ if eq $sortBy "title" }}
|
||||
{{ $rangeBy = .ByTitle }}
|
||||
{{ else if eq $sortBy "linktitle" }}
|
||||
{{ $rangeBy = .ByLinkTitle }}
|
||||
{{ else if eq $sortBy "date" }}
|
||||
{{ $rangeBy = .ByDate }}
|
||||
{{ else if eq $sortBy "publishdate" }}
|
||||
{{ $rangeBy = .ByPublishDate }}
|
||||
{{ else if eq $sortBy "expirydate" }}
|
||||
{{ $rangeBy = .ByExpiryDate }}
|
||||
{{ else if eq $sortBy "lastmod" }}
|
||||
{{ $rangeBy = .ByLastmod }}
|
||||
{{ else if eq $sortBy "title_reverse" }}
|
||||
{{ $rangeBy = .ByTitle.Reverse }}
|
||||
{{ else if eq $sortBy "linktitle_reverse" }}
|
||||
{{ $rangeBy = .ByLinkTitle.Reverse }}
|
||||
{{ else if eq $sortBy "date_reverse" }}
|
||||
{{ $rangeBy = .ByDate.Reverse }}
|
||||
{{ else if eq $sortBy "publishdate_reverse" }}
|
||||
{{ $rangeBy = .ByPublishDate.Reverse }}
|
||||
{{ else if eq $sortBy "expirydate_reverse" }}
|
||||
{{ $rangeBy = .ByExpiryDate.Reverse }}
|
||||
{{ else if eq $sortBy "lastmod_reverse" }}
|
||||
{{ $rangeBy = .ByLastmod.Reverse }}
|
||||
{{ end }}
|
||||
|
||||
{{ range $rangeBy }}
|
||||
{{ if not .Params.GeekdocHidden }}
|
||||
{{ $numberOfPages := (add (len .Pages) (len .Sections)) }}
|
||||
{{ $isParent := and (ne $numberOfPages 0) (not .Params.GeekdocFlatSection) }}
|
||||
{{ $isCurrent := eq $current . }}
|
||||
{{ $isAncestor := .IsAncestor $current }}
|
||||
{{ $id := substr (sha1 .Permalink) 0 8 }}
|
||||
{{ $doCollapse := and $isParent (or .Params.GeekdocCollapseSection (default false .Site.Params.GeekdocCollapseAllSections)) }}
|
||||
|
||||
|
||||
<li>
|
||||
<input
|
||||
type="checkbox"
|
||||
{{ if $doCollapse }}
|
||||
class="gdoc-nav__toggle" id="{{ printf "navtree-%s" $id }}"
|
||||
{{ if or $isCurrent $isAncestor }}checked{{ end }}
|
||||
{{ else }}
|
||||
class="hidden"
|
||||
{{ end }}
|
||||
/>
|
||||
<label
|
||||
{{ if $doCollapse }}
|
||||
for="{{ printf "navtree-%s" $id }}" class="flex justify-between align-center"
|
||||
{{ end }}
|
||||
>
|
||||
{{ if or .Content .Params.GeekdocFlatSection }}
|
||||
<span class="flex">
|
||||
<a href="{{ .RelPermalink }}" class="gdoc-nav__entry {{ if eq $current . }}is-active{{ end }}">
|
||||
{{ partial "title" . }}
|
||||
</a>
|
||||
<a
|
||||
href="{{ .RelPermalink }}"
|
||||
class="gdoc-nav__entry{{- if eq $current . }}
|
||||
{{- printf " is-active" }}
|
||||
{{- end }}"
|
||||
>
|
||||
{{ partial "utils/title" . }}
|
||||
</a>
|
||||
</span>
|
||||
{{ else }}
|
||||
<span class="flex">{{ partial "title" . }}</span>
|
||||
{{ end }}
|
||||
{{ if $hasCollapse }}
|
||||
<svg class="icon gdoc_keyborad_arrow_left"><use xlink:href="#gdoc_keyborad_arrow_left"></use></svg>
|
||||
<svg class="icon gdoc_keyborad_arrow_down hidden"><use xlink:href="#gdoc_keyborad_arrow_down"></use></svg>
|
||||
{{ else }}
|
||||
<span class="flex">{{ partial "utils/title" . }}</span>
|
||||
{{ end }}
|
||||
{{ if $doCollapse }}
|
||||
<svg class="gdoc-icon toggle gdoc_keyboard_arrow_left">
|
||||
<use xlink:href="#gdoc_keyboard_arrow_left"></use>
|
||||
</svg>
|
||||
<svg class="gdoc-icon toggle gdoc_keyboard_arrow_down">
|
||||
<use xlink:href="#gdoc_keyboard_arrow_down"></use>
|
||||
</svg>
|
||||
{{ end }}
|
||||
</label>
|
||||
{{ end }}
|
||||
|
||||
{{ if $isParent }}
|
||||
{{ template "tree-nav" dict "sect" .Pages "current" $current}}
|
||||
{{ end }}
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ template "tree-nav" dict "sect" .Pages "current" $current }}
|
||||
{{ end }}
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
|
|
78
themes/hugo-geekdoc/layouts/partials/menu-nextprev.html
Normal file
|
@ -0,0 +1,78 @@
|
|||
{{ $current := . }}
|
||||
{{ $site := .Site }}
|
||||
{{ $current.Scratch.Set "prev" false }}
|
||||
{{ $current.Scratch.Set "getNext" false }}
|
||||
|
||||
{{ $current.Scratch.Set "nextPage" false }}
|
||||
{{ $current.Scratch.Set "prevPage" false }}
|
||||
|
||||
{{ template "menu_nextprev" dict "sect" $.Site.Data.menu.main.main "current" $current "site" $site }}
|
||||
|
||||
{{ define "menu_nextprev" }}
|
||||
{{ $current := .current }}
|
||||
{{ $site := .site }}
|
||||
|
||||
{{ range sort (default (seq 0) .sect) "weight" }}
|
||||
{{ $current.Scratch.Set "current" $current }}
|
||||
{{ $current.Scratch.Set "site" $site }}
|
||||
|
||||
{{ $ref := default false .ref }}
|
||||
{{ if $ref }}
|
||||
{{ $site := $current.Scratch.Get "site" }}
|
||||
{{ $this := $site.GetPage .ref }}
|
||||
{{ $current := $current.Scratch.Get "current" }}
|
||||
|
||||
{{ if reflect.IsMap .name }}
|
||||
{{ $current.Scratch.Set "refName" (index .name $site.Language.Lang) }}
|
||||
{{ else }}
|
||||
{{ $current.Scratch.Set "refName" .name }}
|
||||
{{ end }}
|
||||
{{ $name := $current.Scratch.Get "refName" }}
|
||||
|
||||
{{ if $current.Scratch.Get "getNext" }}
|
||||
{{ $current.Scratch.Set "nextPage" (dict "name" $name "this" $this) }}
|
||||
{{ $current.Scratch.Set "getNext" false }}
|
||||
{{ end }}
|
||||
|
||||
{{ if eq $current $this }}
|
||||
{{ $current.Scratch.Set "prevPage" ($current.Scratch.Get "prev") }}
|
||||
{{ $current.Scratch.Set "getNext" true }}
|
||||
{{ end }}
|
||||
|
||||
{{ $current.Scratch.Set "prev" (dict "name" $name "this" $this) }}
|
||||
{{ end }}
|
||||
|
||||
{{ $sub := default false .sub }}
|
||||
{{ if $sub }}
|
||||
{{ template "menu_nextprev" dict "sect" $sub "current" ($current.Scratch.Get "current") "site" ($current.Scratch.Get "site") }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ $showPrevNext := (and (default true .Site.Params.GeekdocNextPrev) .Site.Params.GeekdocMenuBundle) }}
|
||||
{{ if $showPrevNext }}
|
||||
<span class="gdoc-page__nav">
|
||||
{{ with ($current.Scratch.Get "prevPage") }}
|
||||
<a
|
||||
class="gdoc-page__nav--prev flex align-center"
|
||||
href="{{ .this.RelPermalink }}"
|
||||
title="{{ .name }}"
|
||||
>
|
||||
<i class="gdoc-icon">gdoc_arrow_left_alt</i>
|
||||
{{ .name }}
|
||||
</a>
|
||||
{{ end }}
|
||||
</span>
|
||||
<span class="gdoc-page__nav">
|
||||
{{ with ($current.Scratch.Get "nextPage") }}
|
||||
<a
|
||||
class="gdoc-page__nav--next flex align-center"
|
||||
href="{{ .this.RelPermalink }}"
|
||||
title="{{ .name }}"
|
||||
>
|
||||
{{ .name }}
|
||||
<i class="gdoc-icon">gdoc_arrow_right_alt</i>
|
||||
</a>
|
||||
{{ end }}
|
||||
</span>
|
||||
{{ end }}
|
|
@ -1,19 +1,44 @@
|
|||
<nav>
|
||||
{{ partial "search" . }}
|
||||
{{ partial "search" . }}
|
||||
|
||||
<section class="gdoc-nav--main">
|
||||
<h2>Navigation</h2>
|
||||
{{ if .Site.Params.GeekdocMenuBundle }}
|
||||
{{ partial "menu-bundle" (dict "current" . "source" .Site.Data.menu.main.main) }}
|
||||
{{ else }}
|
||||
{{ partial "menu-filetree" . }}
|
||||
{{ end }}
|
||||
</section>
|
||||
|
||||
<section class="gdoc-nav--more">
|
||||
{{ if .Site.Data.menu.more.more }}
|
||||
<h2>More</h2>
|
||||
{{ partial "menu-bundle" (dict "current" . "source" .Site.Data.menu.more.more) }}
|
||||
<section class="gdoc-nav--main">
|
||||
<h2>{{ i18n "nav_navigation" }}</h2>
|
||||
{{ if .Site.Params.GeekdocMenuBundle }}
|
||||
{{ partial "menu-bundle" (dict "current" . "source" .Site.Data.menu.main.main) }}
|
||||
{{ else }}
|
||||
{{ partial "menu-filetree" . }}
|
||||
{{ end }}
|
||||
</section>
|
||||
|
||||
{{ if and (in (slice "posts" "tags") .Section) (default false .Site.Params.GeekdocTagsToMenu) }}
|
||||
<section class="gdoc-nav--tags">
|
||||
<h2>{{ i18n "nav_tags" }}</h2>
|
||||
<ul class="gdoc-nav__list">
|
||||
{{ $currentPage := .RelPermalink }}
|
||||
{{ range $name, $taxonomy := .Site.Taxonomies.tags }}
|
||||
{{ with $.Site.GetPage (printf "/tags/%s" $name) }}
|
||||
<li>
|
||||
<a
|
||||
class="gdoc-nav__entry{{- if eq $currentPage .RelPermalink }}
|
||||
{{- printf " is-active" }}
|
||||
{{- end }}"
|
||||
href="{{ .RelPermalink }}"
|
||||
>
|
||||
{{ partial "utils/title" . }}
|
||||
</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</ul>
|
||||
</section>
|
||||
{{ end }}
|
||||
|
||||
|
||||
<section class="gdoc-nav--more">
|
||||
{{ if .Site.Data.menu.more.more }}
|
||||
<h2>{{ i18n "nav_more" }}</h2>
|
||||
{{ partial "menu-bundle" (dict "current" . "source" .Site.Data.menu.more.more) }}
|
||||
{{ end }}
|
||||
</section>
|
||||
</nav>
|
||||
|
|
|
@ -0,0 +1,68 @@
|
|||
{{ $isPage := or (and (ne .Type "posts") (in "section page" .Kind )) (and (eq .Type "posts") (eq .Kind "page")) }}
|
||||
|
||||
{{- if ne .Kind "home" }}
|
||||
<meta
|
||||
property="og:title"
|
||||
{{ partial "utils/title" . | printf "content=%q" | safeHTMLAttr }}
|
||||
/>
|
||||
{{- end }}
|
||||
{{- with .Site.Title }}
|
||||
<meta property="og:site_name" {{ . | printf "content=%q" | safeHTMLAttr }} />
|
||||
{{- end }}
|
||||
{{- with partial "utils/featured" . }}
|
||||
<meta property="og:image" content="{{ . }}" />
|
||||
{{- end }}
|
||||
{{- with partial "utils/description" . }}
|
||||
<meta property="og:description" content="{{ . | plainify | htmlUnescape | chomp }}" />
|
||||
{{- end }}
|
||||
<meta property="og:type" content="{{ if $isPage }}article{{ else }}website{{ end }}" />
|
||||
<meta property="og:url" content="{{ .Permalink }}" />
|
||||
{{- with .Params.audio }}
|
||||
<meta property="og:audio" content="{{ . }}" />
|
||||
{{- end }}
|
||||
{{- with .Params.locale }}
|
||||
<meta property="og:locale" content="{{ . }}" />
|
||||
{{- end }}
|
||||
{{- with .Params.videos }}
|
||||
{{- range . }}
|
||||
<meta property="og:video" content="{{ . | absURL }}" />
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{- /* If it is part of a series, link to related articles */}}
|
||||
{{- if .Site.Taxonomies.series }}
|
||||
{{- $permalink := .Permalink -}}
|
||||
{{- $siteSeries := .Site.Taxonomies.series -}}
|
||||
{{- with .Params.series }}
|
||||
{{- range $name := . }}
|
||||
{{- $series := index $siteSeries ($name | urlize) }}
|
||||
{{- range $page := first 6 $series.Pages }}
|
||||
{{- if ne $page.Permalink $permalink }}
|
||||
<meta property="og:see_also" content="{{ $page.Permalink }}" />
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{ if $isPage -}}
|
||||
{{- $iso8601 := "2006-01-02T15:04:05-07:00" -}}
|
||||
<meta property="article:section" content="{{ .Section | humanize | title }}" />
|
||||
{{- with .PublishDate }}
|
||||
<meta
|
||||
property="article:published_time"
|
||||
{{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }}
|
||||
/>
|
||||
{{- end }}
|
||||
{{- with .Lastmod }}
|
||||
<meta
|
||||
property="article:modified_time"
|
||||
{{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }}
|
||||
/>
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{- /* Facebook Page Admin ID for Domain Insights */}}
|
||||
{{- with .Site.Social.facebook_admin }}
|
||||
<meta property="fb:admins" content="{{ . }}" />
|
||||
{{- end }}
|
|
@ -0,0 +1,70 @@
|
|||
{{ $isPage := or (and (ne .Type "posts") (in "section page" .Kind )) (and (eq .Type "posts") (eq .Kind "page")) }}
|
||||
{{- if eq .Kind "home" }}
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebSite",
|
||||
"name": {{ .Site.Title }},
|
||||
"url": {{ .Site.BaseURL }},
|
||||
{{- with partial "utils/description" . }}
|
||||
"description": "{{ . | plainify | htmlUnescape | chomp }}",
|
||||
{{- end }}
|
||||
{{- with partial "utils/featured" . }}
|
||||
"thumbnailUrl": {{ . }},
|
||||
{{- end }}
|
||||
{{- with .Site.Params.GeekdocContentLicense }}
|
||||
"license": "{{ .name }}",
|
||||
{{- end }}
|
||||
"inLanguage": {{ .Lang }}
|
||||
}
|
||||
</script>
|
||||
{{- else if $isPage }}
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "TechArticle",
|
||||
"articleSection": "{{ .Section | humanize | title }}",
|
||||
"name": {{ partial "utils/title" . }},
|
||||
"url" : {{ .Permalink }},
|
||||
"headline": {{ partial "utils/title" . }},
|
||||
{{- with .Params.lead }}
|
||||
"alternativeHeadline": {{ . }},
|
||||
{{- end }}
|
||||
{{- with partial "utils/description" . }}
|
||||
"description": "{{ . | plainify | htmlUnescape | chomp }}",
|
||||
{{- end }}
|
||||
{{- with partial "utils/featured" . }}
|
||||
"thumbnailUrl": {{ . }},
|
||||
{{- end }}
|
||||
"wordCount" : "{{ .WordCount }}",
|
||||
{{- with .Site.Params.GeekdocContentLicense }}
|
||||
"license": "{{ .name }}",
|
||||
{{- end }}
|
||||
"inLanguage": {{ .Lang }},
|
||||
"isFamilyFriendly": "true",
|
||||
"mainEntityOfPage": {
|
||||
"@type": "WebPage",
|
||||
"@id": {{ .Permalink }}
|
||||
},
|
||||
{{- with $tags := .Params.tags }}
|
||||
"keywords" : [ {{ range $i, $tag := $tags }}{{ if $i }}, {{ end }}"{{ $tag }}" {{ end }}],
|
||||
{{- end }}
|
||||
"copyrightHolder" : "{{ .Site.Title }}",
|
||||
"copyrightYear" : "{{ .Date.Format "2006" }}",
|
||||
"dateCreated": "{{ .Date.Format "2006-01-02T15:04:05.00Z" | safeJS }}",
|
||||
"datePublished": "{{ .PublishDate.Format "2006-01-02T15:04:05.00Z" | safeJS }}",
|
||||
"dateModified": "{{ .Lastmod.Format "2006-01-02T15:04:05.00Z" | safeJS }}",
|
||||
"publisher":{
|
||||
"@type":"Organization",
|
||||
"name": {{ .Site.Title }},
|
||||
"url": {{ .Site.BaseURL }},
|
||||
"logo": {
|
||||
"@type": "ImageObject",
|
||||
"url": {{ (default "brand.svg" .Site.Params.logo) | absURL }},
|
||||
"width":"32",
|
||||
"height":"32"
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{{- end }}
|
|
@ -0,0 +1,15 @@
|
|||
{{- with partial "utils/featured" . }}
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
{{- else }}
|
||||
<meta name="twitter:card" content="summary" />
|
||||
{{- end }}
|
||||
<meta name="twitter:title" {{ partial "utils/title" . | printf "content=%q" | safeHTMLAttr }} />
|
||||
{{- with partial "utils/featured" . }}
|
||||
<meta property="twitter:image" content="{{ . }}" />
|
||||
{{- end }}
|
||||
{{- with partial "utils/description" . }}
|
||||
<meta name="twitter:description" content="{{ . | plainify | htmlUnescape | chomp }}" />
|
||||
{{- end }}
|
||||
{{- with .Site.Social.twitter -}}
|
||||
<meta name="twitter:site" content="@{{ . }}" />
|
||||
{{- end }}
|
|
@ -1,60 +0,0 @@
|
|||
{{ $current := . }}
|
||||
{{ $site := .Site }}
|
||||
{{ $current.Scratch.Set "prev" false }}
|
||||
{{ $current.Scratch.Set "getNext" false }}
|
||||
|
||||
{{ $current.Scratch.Set "nextPage" false }}
|
||||
{{ $current.Scratch.Set "prevPage" false }}
|
||||
|
||||
{{ template "menu_nextprev" dict "sect" $.Site.Data.menu.main.main "current" $current "site" $site }}
|
||||
|
||||
{{ define "menu_nextprev" }}
|
||||
{{ $current := .current }}
|
||||
{{ $site := .site }}
|
||||
|
||||
{{ range sort (default (seq 0) .sect) "weight" }}
|
||||
{{ $current.Scratch.Set "current" $current }}
|
||||
{{ $current.Scratch.Set "site" $site }}
|
||||
|
||||
{{ $ref := default false .ref }}
|
||||
{{ if $ref}}
|
||||
{{ $site := $current.Scratch.Get "site" }}
|
||||
{{ $this := $site.GetPage .ref }}
|
||||
{{ $current := $current.Scratch.Get "current" }}
|
||||
|
||||
{{ if $current.Scratch.Get "getNext" }}
|
||||
{{ $current.Scratch.Set "nextPage" (dict "name" .name "this" $this) }}
|
||||
{{ $current.Scratch.Set "getNext" false }}
|
||||
{{ end }}
|
||||
|
||||
{{ if eq $current $this }}
|
||||
{{ $current.Scratch.Set "prevPage" ($current.Scratch.Get "prev") }}
|
||||
{{ $current.Scratch.Set "getNext" true }}
|
||||
{{ end }}
|
||||
|
||||
{{ $current.Scratch.Set "prev" (dict "name" .name "this" $this) }}
|
||||
{{ end }}
|
||||
|
||||
{{ $sub := default false .sub }}
|
||||
{{ if $sub }}
|
||||
{{ template "menu_nextprev" dict "sect" $sub "current" ($current.Scratch.Get "current") "site" ($current.Scratch.Get "site") }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
|
||||
<div class="gdoc-page__footer flex flex-wrap justify-between">
|
||||
{{ $showPrevNext := (and (default true .Site.Params.GeekdocNextPrev) .Site.Params.GeekdocMenuBundle) }}
|
||||
{{ if $showPrevNext }}
|
||||
<span class="gdoc-page__nav">
|
||||
{{ with ($current.Scratch.Get "prevPage") }}
|
||||
<a class="gdoc-page__nav--prev flex align-center" href="{{.this.RelPermalink}}" title="{{ .name }}"> {{ .name }}</a>
|
||||
{{ end }}
|
||||
</span>
|
||||
<span class="gdoc-page__nav">
|
||||
{{ with ($current.Scratch.Get "nextPage") }}
|
||||
<a class="gdoc-page__nav--next flex align-center" href="{{.this.RelPermalink}}" title="{{ .name }}">{{ .name }} </a>
|
||||
{{ end }}
|
||||
</span>
|
||||
{{ end }}
|
||||
</div>
|
|
@ -1,48 +1,57 @@
|
|||
{{ $geekdocRepo := default (default false .Site.Params.GeekdocRepo) .Page.Params.GeekdocRepo }}
|
||||
{{ $geekdocEditPath := default (default false .Site.Params.GeekdocEditPath) .Page.Params.GeekdocEditPath }}
|
||||
{{ if .File }}
|
||||
{{ $.Scratch.Set "geekdocFilePath" (default .File.Path .Page.Params.GeekdocFilePath) }}
|
||||
{{ $.Scratch.Set "geekdocFilePath" (default (path.Join (default "content" .Site.Params.contentDir) .File.Path) .Page.Params.GeekdocFilePath) }}
|
||||
{{ else }}
|
||||
{{ $.Scratch.Set "geekdocFilePath" false }}
|
||||
{{ $.Scratch.Set "geekdocFilePath" false }}
|
||||
{{ end }}
|
||||
|
||||
{{ define "breadcrumb" }}
|
||||
{{ $parent := .page.Parent }}
|
||||
{{ if $parent }}
|
||||
{{ $name := (partial "title" $parent) }}
|
||||
{{ $position := (sub .position 1) }}
|
||||
{{ $value := (printf "<li itemprop='itemListElement' itemscope itemtype='https://schema.org/ListItem'><a itemscope itemtype='https://schema.org/WebPage' itemprop='item' itemid='%s' href='%s'><span itemprop='name'>%s</span></a><meta itemprop='position' content='%d' /></li><li> / </li>%s" $parent.RelPermalink $parent.RelPermalink $name $position .value) }}
|
||||
{{ template "breadcrumb" dict "page" $parent "value" $value "position" $position }}
|
||||
{{ else }}
|
||||
{{ .value | safeHTML }}
|
||||
{{ end }}
|
||||
{{ $parent := .page.Parent }}
|
||||
{{ if $parent }}
|
||||
{{ $name := (partial "utils/title" $parent) }}
|
||||
{{ $position := (sub .position 1) }}
|
||||
{{ $value := (printf "<li itemprop='itemListElement' itemscope itemtype='https://schema.org/ListItem'><a itemscope itemtype='https://schema.org/WebPage' itemprop='item' itemid='%s' href='%s'><span itemprop='name'>%s</span></a><meta itemprop='position' content='%d' /></li><li> / </li>%s" $parent.RelPermalink $parent.RelPermalink $name $position .value) }}
|
||||
{{ template "breadcrumb" dict "page" $parent "value" $value "position" $position }}
|
||||
{{ else }}
|
||||
{{ .value | safeHTML }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ $showBreadcrumb := (and (default true .Page.Params.GeekdocBreadcrumb) (default true .Site.Params.GeekdocBreadcrumb)) }}
|
||||
{{ $showEdit := (and ($.Scratch.Get "geekdocFilePath") $geekdocRepo $geekdocEditPath) }}
|
||||
<div class="gdoc-page__header flex flex-wrap
|
||||
{{ if $showBreadcrumb }} justify-between {{ else }} justify-end {{ end }}
|
||||
{{ if not $showEdit }} hidden-mobile {{ end }}
|
||||
{{ if (and (not $showBreadcrumb) (not $showEdit)) }} hidden {{ end }}" itemprop="breadcrumb">
|
||||
{{if $showBreadcrumb }}
|
||||
<div
|
||||
class="gdoc-page__header flex flex-wrap
|
||||
{{ if $showBreadcrumb }}
|
||||
justify-between
|
||||
{{ else }}
|
||||
justify-end
|
||||
{{ end }}
|
||||
{{ if not $showEdit }}hidden-mobile{{ end }}
|
||||
{{ if (and (not $showBreadcrumb) (not $showEdit)) }}hidden{{ end }}"
|
||||
itemprop="breadcrumb"
|
||||
>
|
||||
{{ if $showBreadcrumb }}
|
||||
<div>
|
||||
<svg class="icon gdoc_path hidden-mobile"><use xlink:href="#gdoc_path"></use></svg>
|
||||
<ol class="breadcrumb" itemscope itemtype="https://schema.org/BreadcrumbList">
|
||||
{{ $position := sub (len (split .RelPermalink "/")) 1 }}
|
||||
{{ $name := (partial "title" .) }}
|
||||
{{ $value := (printf "<li itemprop='itemListElement' itemscope itemtype='https://schema.org/ListItem'><span itemprop='name'>%s</span><meta itemprop='position' content='%d' /></li>" $name $position ) }}
|
||||
{{ template "breadcrumb" dict "page" . "value" $value "position" $position }}
|
||||
</ol>
|
||||
<svg class="gdoc-icon gdoc_path hidden-mobile"><use xlink:href="#gdoc_path"></use></svg>
|
||||
<ol class="breadcrumb" itemscope itemtype="https://schema.org/BreadcrumbList">
|
||||
{{ $position := sub (len (split .RelPermalink "/")) 1 }}
|
||||
{{ $name := (partial "utils/title" .) }}
|
||||
{{ $value := (printf "<li itemprop='itemListElement' itemscope itemtype='https://schema.org/ListItem'><span itemprop='name'>%s</span><meta itemprop='position' content='%d' /></li>" $name $position ) }}
|
||||
{{ template "breadcrumb" dict "page" . "value" $value "position" $position }}
|
||||
</ol>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ if $showEdit }}
|
||||
{{ end }}
|
||||
{{ if $showEdit }}
|
||||
<div>
|
||||
<span class="editpage">
|
||||
<svg class="icon gdoc_code"><use xlink:href="#gdoc_code"></use></svg>
|
||||
<a href="{{ $geekdocRepo }}/{{ $geekdocEditPath }}/{{ $.Scratch.Get "geekdocFilePath" }}">
|
||||
Edit this page
|
||||
</a>
|
||||
</span>
|
||||
<span class="editpage">
|
||||
<svg class="gdoc-icon gdoc_code"><use xlink:href="#gdoc_code"></use></svg>
|
||||
<a
|
||||
href="{{ $geekdocRepo }}/{{ path.Join $geekdocEditPath ($.Scratch.Get "geekdocFilePath") }}"
|
||||
>
|
||||
{{ i18n "edit_page" }}
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
|
|
48
themes/hugo-geekdoc/layouts/partials/posts/metadata.html
Normal file
|
@ -0,0 +1,48 @@
|
|||
<span class="flex align-center no-wrap">
|
||||
<svg class="gdoc-icon gdoc_date"><use xlink:href="#gdoc_date"></use></svg>
|
||||
<span class="gdoc-post__tag">
|
||||
<time datetime="{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}">
|
||||
{{ if .Lastmod.After (.Date.AddDate 0 0 1) }}
|
||||
{{ i18n "posts_update_prefix" }}
|
||||
{{ end }}
|
||||
{{ .Lastmod.Format "Jan 2, 2006" }}
|
||||
</time>
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<span class="flex align-center no-wrap">
|
||||
<svg class="gdoc-icon gdoc_timer"><use xlink:href="#gdoc_timer"></use></svg>
|
||||
<span class="gdoc-post__tag">{{ i18n "posts_read_time" .ReadingTime }}</span>
|
||||
</span>
|
||||
|
||||
{{ $tc := 0 }}
|
||||
{{ with .Params.tags }}
|
||||
{{ range sort . }}
|
||||
{{ $name := . }}
|
||||
{{ with $.Site.GetPage (printf "/tags/%s" $name | urlize) }}
|
||||
{{ if eq $tc 0 }}
|
||||
<span class="flex align-center no-wrap">
|
||||
<svg class="gdoc-icon gdoc_bookmark"><use xlink:href="#gdoc_bookmark"></use></svg>
|
||||
{{ template "post-tag" dict "name" $name "page" . }}
|
||||
</span>
|
||||
{{ else }}
|
||||
<span class="flex align-center">
|
||||
{{ template "post-tag" dict "name" $name "page" . }}
|
||||
</span>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ $tc = (add $tc 1) }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ define "post-tag" }}
|
||||
<span class="gdoc-post__tag gdoc-button gdoc-button--regular">
|
||||
<a
|
||||
class="gdoc-button__link"
|
||||
href="{{ .page.RelPermalink }}"
|
||||
title="{{ i18n "posts_tagged_with" .name }}"
|
||||
>
|
||||
{{ .name }}
|
||||
</a>
|
||||
</span>
|
||||
{{ end }}
|
|
@ -1,9 +1,17 @@
|
|||
{{ if default true .Site.Params.GeekdocSearch }}
|
||||
<div class="gdoc-search">
|
||||
<svg class="icon gdoc_search"><use xlink:href="#gdoc_search"></use></svg>
|
||||
<input type="text" id="gdoc-search-input" class="gdoc-search__input" placeholder="Search..."
|
||||
aria-label="Search" maxlength="64" />
|
||||
<div class="gdoc-search__spinner spinner hidden"></div>
|
||||
<ul id="gdoc-search-results" class="gdoc-search__list"></ul>
|
||||
</div>
|
||||
<div class="gdoc-search flex align-center">
|
||||
<svg class="gdoc-icon gdoc_search"><use xlink:href="#gdoc_search"></use></svg>
|
||||
<input
|
||||
type="text"
|
||||
id="gdoc-search-input"
|
||||
class="gdoc-search__input"
|
||||
placeholder="{{ i18n "form_placeholder_search" }}"
|
||||
aria-label="{{ i18n "form_placeholder_search" }}"
|
||||
maxlength="64"
|
||||
data-site-base-url="{{ .Site.BaseURL }}"
|
||||
data-site-lang="{{ .Site.Language.Lang }}"
|
||||
/>
|
||||
<div class="gdoc-search__spinner spinner hidden"></div>
|
||||
<ul id="gdoc-search-results" class="gdoc-search__list"></ul>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
|
|
@ -1,18 +1,45 @@
|
|||
<footer class="gdoc-footer">
|
||||
<div class="container flex flex-wrap">
|
||||
<span class="gdoc-footer__item">
|
||||
Built with <a href="https://gohugo.io/" class="gdoc-footer__link">Hugo</a> and
|
||||
<svg class="icon gdoc_heart"><use xlink:href="#gdoc_heart"></use></svg>
|
||||
<nav class="container flex">
|
||||
<div>
|
||||
<section class="flex flex-wrap align-center">
|
||||
<span class="gdoc-footer__item gdoc-footer__item--row">
|
||||
{{ i18n "footer_build_with" | safeHTML }}
|
||||
</span>
|
||||
{{ with .Site.Params.GeekdocLegalNotice }}
|
||||
<span class="gdoc-footer__item">
|
||||
<a href="{{ . | relURL }}" class="gdoc-footer__link">Legal Notice</a>
|
||||
</span>
|
||||
<span class="gdoc-footer__item gdoc-footer__item--row">
|
||||
<a href="{{ . | relURL }}" class="gdoc-footer__link">
|
||||
{{ i18n "footer_legal_notice" }}
|
||||
</a>
|
||||
</span>
|
||||
{{ end }}
|
||||
{{ with .Site.Params.GeekdocPrivacyPolicy }}
|
||||
<span class="gdoc-footer__item">
|
||||
<a href="{{ . | relURL }}" class="gdoc-footer__link">Privacy Policy</a>
|
||||
</span>
|
||||
<span class="gdoc-footer__item gdoc-footer__item--row">
|
||||
<a href="{{ . | relURL }}" class="gdoc-footer__link">
|
||||
{{ i18n "footer_privacy_policy" }}
|
||||
</a>
|
||||
</span>
|
||||
{{ end }}
|
||||
</section>
|
||||
{{ with .Site.Params.GeekdocContentLicense }}
|
||||
<section class="flex flex-wrap align-center">
|
||||
<span class="gdoc-footer__item">
|
||||
{{ i18n "footer_content_license_prefix" }}
|
||||
<a href="{{ .link }}" class="gdoc-footer__link no-wrap">{{ .name }}</a>
|
||||
</span>
|
||||
</section>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ if (default true .Site.Params.GeekdocBackToTop) }}
|
||||
<div class="flex flex-25 justify-end">
|
||||
<span class="gdoc-footer__item text-right">
|
||||
<a class="gdoc-footer__link fake-link" href="#" aria-label="{{ i18n "nav_top" }}">
|
||||
<svg class="gdoc-icon gdoc_keyboard_arrow_up">
|
||||
<use xlink:href="#gdoc_keyboard_arrow_up"></use>
|
||||
</svg>
|
||||
<span class="hidden-mobile">{{ i18n "nav_top" }}</span>
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
{{ end }}
|
||||
</nav>
|
||||
</footer>
|
||||
|
|
|
@ -1,16 +1,78 @@
|
|||
<header class="gdoc-header">
|
||||
<div class="container flex align-center justify-between">
|
||||
{{ if .MenuEnabled }}
|
||||
<label for="menu-control" class="gdoc-nav__control">
|
||||
<svg class="icon gdoc_menu"><use xlink:href="#gdoc_menu"></use></svg>
|
||||
<svg class="icon gdoc_arrow_back"><use xlink:href="#gdoc_arrow_back"></use></svg>
|
||||
</label>
|
||||
{{ end }}
|
||||
<a class="gdoc-header__link" href="{{ .Root.Site.BaseURL }}">
|
||||
<span class="gdoc-brand flex align-center">
|
||||
<img class="gdoc-brand__img" src="{{ (default "brand.svg" .Root.Site.Params.GeekdocLogo) | relURL }}" alt="">
|
||||
{{ .Root.Site.Title }}
|
||||
</span>
|
||||
</a>
|
||||
<div class="container flex align-center justify-between">
|
||||
{{ if .MenuEnabled }}
|
||||
<label for="menu-control" class="gdoc-nav__control" tabindex="0">
|
||||
<svg class="gdoc-icon gdoc_menu">
|
||||
<title>{{ i18n "button_nav_open" }}</title>
|
||||
<use xlink:href="#gdoc_menu"></use>
|
||||
</svg>
|
||||
<svg class="gdoc-icon gdoc_arrow_back">
|
||||
<title>{{ i18n "button_nav_close" }}</title>
|
||||
<use xlink:href="#gdoc_arrow_back"></use>
|
||||
</svg>
|
||||
</label>
|
||||
{{ end }}
|
||||
<div>
|
||||
<a class="gdoc-brand gdoc-header__link" href="{{ .Root.Site.BaseURL }}">
|
||||
<span class="flex align-center">
|
||||
<img
|
||||
class="gdoc-brand__img"
|
||||
src="{{ (default "brand.svg" .Root.Site.Params.GeekdocLogo) | relURL }}"
|
||||
alt=""
|
||||
/>
|
||||
<span class="gdoc-brand__title">{{ .Root.Site.Title }}</span>
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="gdoc-menu-header">
|
||||
<span class="gdoc-menu-header__items">
|
||||
{{ if .Root.Site.Data.menu.extra.header }}
|
||||
{{ partial "menu-extra" (dict "current" .Root "source" .Root.Site.Data.menu.extra.header "target" "header") }}
|
||||
{{ end }}
|
||||
|
||||
|
||||
<span id="gdoc-color-theme">
|
||||
<svg class="gdoc-icon gdoc_brightness_dark">
|
||||
<title>{{ i18n "button_toggle_dark" }}</title>
|
||||
<use xlink:href="#gdoc_brightness_dark"></use>
|
||||
</svg>
|
||||
<svg class="gdoc-icon gdoc_brightness_light">
|
||||
<title>{{ i18n "button_toggle_dark" }}</title>
|
||||
<use xlink:href="#gdoc_brightness_light"></use>
|
||||
</svg>
|
||||
<svg class="gdoc-icon gdoc_brightness_auto">
|
||||
<title>{{ i18n "button_toggle_dark" }}</title>
|
||||
<use xlink:href="#gdoc_brightness_auto"></use>
|
||||
</svg>
|
||||
</span>
|
||||
|
||||
<span class="gdoc-menu-header__home">
|
||||
<a href="{{ .Root.Site.BaseURL }}" class="gdoc-header__link">
|
||||
<svg class="gdoc-icon gdoc_home">
|
||||
<title>{{ i18n "button_homepage" }}</title>
|
||||
<use xlink:href="#gdoc_home"></use>
|
||||
</svg>
|
||||
</a>
|
||||
</span>
|
||||
|
||||
{{ partial "language" .Root }}
|
||||
|
||||
|
||||
<span class="gdoc-menu-header__control">
|
||||
<label for="menu-header-control">
|
||||
<svg class="gdoc-icon gdoc_keyboard_arrow_right">
|
||||
<use xlink:href="#gdoc_keyboard_arrow_right"></use>
|
||||
<title>{{ i18n "button_menu_close" }}</title>
|
||||
</svg>
|
||||
</label>
|
||||
</span>
|
||||
</span>
|
||||
<label for="menu-header-control" class="gdoc-menu-header__control">
|
||||
<svg class="gdoc-icon gdoc_keyboard_arrow_left">
|
||||
<use xlink:href="#gdoc_keyboard_arrow_left"></use>
|
||||
<title>{{ i18n "button_menu_open" }}</title>
|
||||
</svg>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{{ range resources.Match "sprites/*.svg" }}
|
||||
{{ printf "<!-- geekdoc include: %s -->" . | safeHTML }}
|
||||
{{ .Content | safeHTML }}
|
||||
{{ printf "<!-- geekdoc include: %s -->" . | safeHTML }}
|
||||
{{ .Content | safeHTML }}
|
||||
{{ end }}
|
||||
|
|
6
themes/hugo-geekdoc/layouts/partials/utils/content.html
Normal file
|
@ -0,0 +1,6 @@
|
|||
{{ $content := .Content }}
|
||||
|
||||
{{ $content = $content | replaceRE `<nav id="TableOfContents">\s*<ul>\s*<li>\s*<ul>` `<nav id="TableOfContents"><ul>` | replaceRE `</ul>\s*</li>\s*</ul>\s*</nav>` `</ul></nav>` | safeHTML }}
|
||||
{{ $content = $content | replaceRE `(<table>(?:.|\n)+?</table>)` `<div class="table-wrap"> ${1} </div>` | safeHTML }}
|
||||
|
||||
{{ return $content }}
|
14
themes/hugo-geekdoc/layouts/partials/utils/description.html
Normal file
|
@ -0,0 +1,14 @@
|
|||
{{ $isPage := or (and (ne .Type "posts") (in "section page" .Kind )) (and (eq .Type "posts") (eq .Kind "page")) }}
|
||||
{{ $description := "" }}
|
||||
|
||||
{{ if .Description }}
|
||||
{{ $description = .Description }}
|
||||
{{ else }}
|
||||
{{ if $isPage }}
|
||||
{{ $description = .Summary }}
|
||||
{{ else if .Site.Params.description }}
|
||||
{{ $description = .Site.Params.description }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ return $description }}
|
12
themes/hugo-geekdoc/layouts/partials/utils/featured.html
Normal file
|
@ -0,0 +1,12 @@
|
|||
{{ $img := "" }}
|
||||
|
||||
{{ with $source := ($.Resources.ByType "image").GetMatch "{*feature*,*cover*,*thumbnail*}" }}
|
||||
{{ $featured := .Fill (printf "1200x630 %s" (default "Smart" .Params.anchor)) }}
|
||||
{{ $img = $featured.Permalink }}
|
||||
{{ else }}
|
||||
{{ with default $.Site.Params.images $.Params.images }}
|
||||
{{ $img = index . 0 | absURL }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ return $img }}
|
|
@ -1,26 +1,46 @@
|
|||
{{ define "main" }}
|
||||
{{ range .Paginator.Pages }}
|
||||
<article class="gdoc-markdown gdoc-post">
|
||||
<header class="gdoc-post__header">
|
||||
<h1 class="gdoc-post__title"><a href="{{ .RelPermalink }}">{{ .Title }}</a></h1>
|
||||
<div class="gdoc-post__date">
|
||||
<svg class="icon gdoc_date"><use xlink:href="#gdoc_date"></use></svg>
|
||||
<time datetime="{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}">
|
||||
{{ if ne (.Lastmod.Format "2006-01-02") (.Date.Format "2006-01-02") }}
|
||||
Updated on
|
||||
{{ end }}
|
||||
{{ .Lastmod.Format "Jan 2, 2006" }}
|
||||
</time>
|
||||
</div>
|
||||
</header>
|
||||
<section>
|
||||
{{ .Summary }}
|
||||
</section>
|
||||
{{ if .Truncated }}
|
||||
<div class="gdoc-post__readmore">
|
||||
<a class="flex-inline align-center fake-link" title="Read full post" href="{{ .RelPermalink }}">Read full post</a>
|
||||
</div>
|
||||
{{ end }}
|
||||
</article>
|
||||
{{ end }}
|
||||
{{ range .Paginator.Pages }}
|
||||
<article class="gdoc-markdown gdoc-post">
|
||||
<header class="gdoc-post__header">
|
||||
<h1 class="gdoc-post__title">
|
||||
<a href="{{ .RelPermalink }}">{{ partial "utils/title" . }}</a>
|
||||
</h1>
|
||||
</header>
|
||||
<section>
|
||||
{{ .Summary }}
|
||||
</section>
|
||||
<div class="gdoc-post__readmore">
|
||||
{{ if .Truncated }}
|
||||
<a
|
||||
class="flex-inline align-center fake-link"
|
||||
title="{{ i18n "posts_read_more" }}"
|
||||
href="{{ .RelPermalink }}"
|
||||
>
|
||||
{{ i18n "posts_read_more" }}
|
||||
<i class="gdoc-icon">gdoc_arrow_right_alt</i>
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
<footer class="gdoc-post__footer">
|
||||
<div class="flex flex-wrap align-center gdoc-post__meta">
|
||||
{{ partial "posts/metadata.html" . }}
|
||||
</div>
|
||||
</footer>
|
||||
</article>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ define "post-tag" }}
|
||||
<span class="gdoc-post__tag">
|
||||
<span class="gdoc-button">
|
||||
<a
|
||||
class="gdoc-button__link"
|
||||
href="{{ .page.RelPermalink }}"
|
||||
title="{{ i18n "posts_tagged_with" .name }}"
|
||||
>
|
||||
{{ .name }}
|
||||
</a>
|
||||
</span>
|
||||
</span>
|
||||
{{ end }}
|
||||
|
|
|
@ -1,19 +1,13 @@
|
|||
{{ define "main" }}
|
||||
<article class="gdoc-markdown gdoc-post">
|
||||
<header class="gdoc-post__header">
|
||||
<h1 class="gdoc-post__title">{{ .Title }}</h1>
|
||||
<div class="gdoc-post__date">
|
||||
<svg class="icon gdoc_date"><use xlink:href="#gdoc_date"></use></svg>
|
||||
<time datetime="{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}">
|
||||
{{ if ne (.Lastmod.Format "2006-01-02") (.Date.Format "2006-01-02") }}
|
||||
Updated on
|
||||
{{ end }}
|
||||
{{ .Lastmod.Format "Jan 2, 2006" }}
|
||||
</time>
|
||||
</div>
|
||||
</header>
|
||||
<div>
|
||||
{{ partial "content" . }}
|
||||
<article class="gdoc-post">
|
||||
<header class="gdoc-post__header">
|
||||
<h1 class="gdoc-post__title">{{ partial "utils/title" . }}</h1>
|
||||
<div class="flex flex-wrap align-center gdoc-post__meta gdoc-post__meta--head">
|
||||
{{ partial "posts/metadata.html" . }}
|
||||
</div>
|
||||
</article>
|
||||
</header>
|
||||
<section class="gdoc-markdown">
|
||||
{{ partial "utils/content" . }}
|
||||
</section>
|
||||
</article>
|
||||
{{ end }}
|
||||
|
|
4
themes/hugo-geekdoc/layouts/robots.txt
Normal file
|
@ -0,0 +1,4 @@
|
|||
User-agent: *
|
||||
Disallow: /tags/*
|
||||
|
||||
Sitemap: {{ "sitemap.xml" | absURL }}
|
|
@ -1,17 +1,29 @@
|
|||
{{ $ref := "" }}
|
||||
{{ $target := "" }}
|
||||
{{- $ref := "" }}
|
||||
{{- $class := "" }}
|
||||
{{- $size := default "regular" (.Get "size" | lower) }}
|
||||
|
||||
{{ with .Get "href" }}
|
||||
{{ $ref = . }}
|
||||
{{ $target = "_blank" }}
|
||||
{{ end }}
|
||||
{{- if not (in (slice "regular" "large") $size) }}
|
||||
{{- $size = "regular" }}
|
||||
{{- end }}
|
||||
|
||||
{{ with .Get "relref" }}
|
||||
{{ $ref = relref $ . }}
|
||||
{{ end }}
|
||||
{{- with .Get "href" }}
|
||||
{{- $ref = . }}
|
||||
{{- end }}
|
||||
|
||||
<span class="gdoc-button{{ with .Get "class" }} {{ . }}{{ end }}">
|
||||
<a {{ with $ref }} href="{{.}}" {{ end }} {{ with $target }} target="{{.}}" {{ end }} class="gdoc-button__link">
|
||||
{{ $.Inner }}
|
||||
</a>
|
||||
{{- with .Get "relref" }}
|
||||
{{- $ref = relref $ . }}
|
||||
{{- end }}
|
||||
|
||||
{{- with .Get "class" }}
|
||||
{{- $class = . }}
|
||||
{{- end }}
|
||||
|
||||
|
||||
<span class="gdoc-button gdoc-button--{{ $size }}{{ with $class }}{{ printf " %s" . }}{{ end }}">
|
||||
<a
|
||||
class="gdoc-button__link"
|
||||
{{- with $ref }}{{ printf " href=\"%s\"" . | safeHTMLAttr }}{{ end }}
|
||||
>
|
||||
{{ $.Inner }}
|
||||
</a>
|
||||
</span>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<div class="gdoc-columns flex flex-wrap">
|
||||
<div class="gdoc-columns flex flex-wrap flex-mobile-column">
|
||||
{{ range split .Inner "<--->" }}
|
||||
<div class="gdoc-columns__content gdoc-markdown--nested flex-even">
|
||||
{{ . | $.Page.RenderString }}
|
||||
</div>
|
||||
<div class="gdoc-columns__content gdoc-markdown--nested flex-even">
|
||||
{{ . | $.Page.RenderString }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
|
|
@ -6,6 +6,6 @@
|
|||
</label>
|
||||
<input id="{{ $id }}-{{ .Ordinal }}" type="checkbox" class="gdoc-expand__control hidden" />
|
||||
<div class="gdoc-markdown--nested gdoc-expand__content">
|
||||
{{ .Inner | $.Page.RenderString }}
|
||||
{{ .Inner | $.Page.RenderString | htmlUnescape | safeHTML }}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,3 +1,16 @@
|
|||
<blockquote class="gdoc-hint {{ .Get 0 }}">
|
||||
{{ .Inner | $.Page.RenderString }}
|
||||
{{ $type := default "note" (.Get "type") }}
|
||||
{{ $icon := .Get "icon" }}
|
||||
{{ $title := default ($type | title) (.Get "title") }}
|
||||
|
||||
|
||||
<blockquote class="gdoc-hint {{ $type | lower }}">
|
||||
<div class="gdoc-hint__title flex align-center">
|
||||
{{- with $icon -}}
|
||||
<svg class="gdoc-icon {{ . }}"><use xlink:href="#{{ . }}"></use></svg>
|
||||
<span>{{ $title }}</span>
|
||||
{{- else -}}
|
||||
<i class="fa {{ $type | lower }}" title="{{ $title }}"></i>
|
||||
{{- end -}}
|
||||
</div>
|
||||
<div class="gdoc-hint__text">{{ .Inner | $.Page.RenderString }}</div>
|
||||
</blockquote>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{{ $id := .Get 0 }}
|
||||
|
||||
{{- with $id -}}
|
||||
<svg class="icon {{ . }}"><use xlink:href="#{{ . }}"></use></svg>
|
||||
<svg class="gdoc-icon {{ . }}"><use xlink:href="#{{ . }}"></use></svg>
|
||||
{{- end -}}
|
||||
|
|
|
@ -1,40 +1,44 @@
|
|||
{{ $source := ($.Page.Resources.ByType "image").GetMatch (printf "*%s*" (.Get "name")) }}
|
||||
{{ $source := ($.Page.Resources.ByType "image").GetMatch (printf "%s" (.Get "name")) }}
|
||||
{{ $customAlt := .Get "alt" }}
|
||||
{{ $customSize := .Get "size" }}
|
||||
{{ $lazyLoad := default (default true $.Site.Params.GeekdocImageLazyLoading) (.Get "lazy") }}
|
||||
|
||||
{{ with $source }}
|
||||
{{ $caption := default .Title $customAlt }}
|
||||
{{ $caption := default .Title $customAlt }}
|
||||
|
||||
{{ $tiny := (.Resize "320x").RelPermalink }}
|
||||
{{ $small := (.Resize "600x").RelPermalink }}
|
||||
{{ $medium := (.Resize "1200x").RelPermalink }}
|
||||
{{ $large := (.Resize "1800x").RelPermalink }}
|
||||
{{ $tiny := (.Resize "320x").Permalink }}
|
||||
{{ $small := (.Resize "600x").Permalink }}
|
||||
{{ $medium := (.Resize "1200x").Permalink }}
|
||||
{{ $large := (.Resize "1800x").Permalink }}
|
||||
|
||||
{{ $size := dict "tiny" $tiny "small" $small "medium" $medium "large" $large }}
|
||||
{{ $size := dict "tiny" $tiny "small" $small "medium" $medium "large" $large }}
|
||||
|
||||
<div class="flex justify-center">
|
||||
<figure class="gdoc-markdown__figure">
|
||||
<a class="gdoc-markdown__link--raw" href="{{ .RelPermalink }}">
|
||||
<img
|
||||
{{ if $lazyLoad }}loading="lazy"{{ end }}
|
||||
|
||||
<div class="flex justify-center">
|
||||
<figure class="gdoc-markdown__figure">
|
||||
<a class="gdoc-markdown__link--raw" href="{{ .Permalink }}">
|
||||
<picture>
|
||||
<source
|
||||
{{ with $customSize }}
|
||||
src="{{ index $size $customSize }}" alt="{{ $caption }}"
|
||||
srcset="{{ index $size $customSize }}"
|
||||
{{ else }}
|
||||
srcset="{{ $size.tiny }} 320w,
|
||||
{{ $size.small }} 600w,
|
||||
{{ $size.medium }} 1200w,
|
||||
{{ $size.large }} 2x"
|
||||
sizes="(max-width: 320px) 320w,
|
||||
(max-width: 600px) 600w,
|
||||
(max-width: 1200px) 1200w,
|
||||
2x"
|
||||
src="{{ $size.large }}" alt="{{ $caption }}"
|
||||
{{ end }}/>
|
||||
</a>
|
||||
{{ with $caption }}
|
||||
<figcaption>{{ . }}{{ with $source.Params.credits }} ({{ . | $.Page.RenderString }}){{ end }}</figcaption>
|
||||
{{ end }}
|
||||
</figure>
|
||||
</div>
|
||||
srcset="{{ $size.small }} 600w, {{ $size.medium }} 1200w" sizes="100vw"
|
||||
{{ end }}
|
||||
/>
|
||||
<img
|
||||
{{ if $lazyLoad }}
|
||||
loading="lazy"
|
||||
{{ end }}
|
||||
src="{{ $size.large }}"
|
||||
alt="{{ $caption }}"
|
||||
/>
|
||||
</picture>
|
||||
</a>
|
||||
{{ with $caption -}}
|
||||
<figcaption>
|
||||
{{ . }}{{ with $source.Params.credits }}({{ . | $.Page.RenderString }}){{ end }}
|
||||
</figcaption>
|
||||
{{- end }}
|
||||
</figure>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
|
|
@ -1,10 +1,18 @@
|
|||
{{ $file := .Get "file" }}
|
||||
{{ $page := .Site.GetPage $file }}
|
||||
{{ $type := .Get "type" }}
|
||||
{{ $language := .Get "language" }}
|
||||
{{ $options :=.Get "options" }}
|
||||
|
||||
|
||||
<div class="gdoc-include">
|
||||
{{- if eq (.Get "markdown") "true" -}}
|
||||
{{- $file | readFile | $.Page.RenderString -}}
|
||||
{{- else if (.Get "language") -}}
|
||||
{{- highlight ($file | readFile) (.Get "language") (default "linenos=table" (.Get "options")) -}}
|
||||
{{- else -}}
|
||||
{{ $file | readFile | safeHTML }}
|
||||
{{- end -}}
|
||||
{{- if (.Get "language") -}}
|
||||
{{- highlight ($file | readFile) $language (default "linenos=table" $options) -}}
|
||||
{{- else if eq $type "html" -}}
|
||||
{{- $file | readFile | safeHTML -}}
|
||||
{{- else if eq $type "page" -}}
|
||||
{{- with $page }}{{ .Content }}{{ end -}}
|
||||
{{- else -}}
|
||||
{{- $file | readFile | $.Page.RenderString -}}
|
||||
{{- end -}}
|
||||
</div>
|
||||
|
|
18
themes/hugo-geekdoc/layouts/shortcodes/katex.html
Normal file
|
@ -0,0 +1,18 @@
|
|||
<!-- prettier-ignore-start -->
|
||||
{{ if not (.Page.Scratch.Get "katex") }}
|
||||
<!-- Include katex only first time -->
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="{{ index (index .Site.Data.assets "katex.css") "src" | relURL }}"
|
||||
/>
|
||||
<script defer src="{{ index (index .Site.Data.assets "katex.js") "src" | relURL }}"></script>
|
||||
{{ .Page.Scratch.Set "katex" true }}
|
||||
{{ end }}
|
||||
<!-- prettier-ignore-end -->
|
||||
|
||||
<span class="gdoc-katex {{ with .Get "class" }}{{ . }}{{ end }}">
|
||||
{{ cond (in .Params "display") "\\[" "\\(" -}}
|
||||
{{- trim .Inner "\n" -}}
|
||||
{{- cond (in .Params "display") "\\]" "\\)" -}}
|
||||
</span>
|
||||
{{- /* Drop trailing newlines */ -}}
|
|
@ -1,16 +1,11 @@
|
|||
<!-- prettier-ignore-start -->
|
||||
{{ if not (.Page.Scratch.Get "mermaid") }}
|
||||
<!-- Include mermaid only first time -->
|
||||
<script defer src="{{ index .Site.Data.assets "js/mermaid.min.js" | relURL }}"></script>
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function(event) {
|
||||
mermaid.initialize({
|
||||
flowchart: { useMaxWidth: true }
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{{ .Page.Scratch.Set "mermaid" true }}
|
||||
<!-- Include mermaid only first time -->
|
||||
<script defer src="{{ index (index .Site.Data.assets "mermaid.js") "src" | relURL }}"></script>
|
||||
{{ .Page.Scratch.Set "mermaid" true }}
|
||||
{{ end }}
|
||||
<!-- prettier-ignore-end -->
|
||||
|
||||
<pre class="gdoc-mermaid mermaid{{ with .Get "class" }} {{ . }}{{ end }}">
|
||||
<pre class="gdoc-mermaid mermaid{{ with .Get "class" }}{{ printf " %s" . }}{{ end }}">
|
||||
{{- .Inner -}}
|
||||
</pre>
|
||||
|
|
49
themes/hugo-geekdoc/layouts/shortcodes/propertylist.html
Normal file
|
@ -0,0 +1,49 @@
|
|||
{{- $name := .Get "name" -}}
|
||||
|
||||
{{- if .Site.Data.properties }}
|
||||
<dl class="gdoc-props">
|
||||
{{- with (index .Site.Data.properties (split $name ".")) }}
|
||||
{{- range $key, $value := .properties }}
|
||||
<dt class="flex flex-wrap align-center gdoc-props__meta">
|
||||
<span class="gdoc-props__title">{{ $key }}</span>
|
||||
{{- if $value.required }}
|
||||
<span class="gdoc-props__tag warning">{{ i18n "propertylist_required" | lower }}</span>
|
||||
{{ else }}
|
||||
<span class="gdoc-props__tag tip">{{ i18n "propertylist_optional" | lower }}</span>
|
||||
{{- end }}
|
||||
{{- with $value.type }}
|
||||
<span class="gdoc-props__tag note">{{ . }}</span>
|
||||
{{- end }}
|
||||
|
||||
{{- with $value.tags }}
|
||||
{{- $tags := . }}
|
||||
{{- if reflect.IsMap $tags }}
|
||||
{{- $tags = (index $tags $.Site.Language.Lang) }}
|
||||
{{- end }}
|
||||
{{- range $tags }}
|
||||
<span class="gdoc-props__tag">{{ . }}</span>
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
</dt>
|
||||
<dd>
|
||||
<div class="gdoc-props__description">
|
||||
{{- with $value.description }}
|
||||
{{- $desc := . }}
|
||||
{{- if reflect.IsMap $desc }}
|
||||
{{- $desc = (index $desc $.Site.Language.Lang) }}
|
||||
{{- end }}
|
||||
|
||||
{{ $desc | $.Page.RenderString }}
|
||||
{{ end }}
|
||||
</div>
|
||||
<div class="gdoc-props__default">
|
||||
{{- with default "none" ($value.defaultValue | string) }}
|
||||
<span>{{ i18n "propertylist_default" | title }}:</span>
|
||||
<span>{{ . }}</span>
|
||||
{{- end }}
|
||||
</div>
|
||||
</dd>
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
</dl>
|
||||
{{- end }}
|
|
@ -9,4 +9,4 @@
|
|||
{{ .Parent.Scratch.Add $group (dict "Name" $name "Content" .Inner) }}
|
||||
{{ else }}
|
||||
{{ errorf "%q: 'tab' shortcode must be inside 'tabs' shortcode" .Page.Path }}
|
||||
{{ end}}
|
||||
{{ end }}
|
||||
|
|
|
@ -2,10 +2,16 @@
|
|||
{{ $id := .Get 0 }}
|
||||
{{ $group := printf "tabs-%s" $id }}
|
||||
|
||||
|
||||
<div class="gdoc-tabs">
|
||||
{{ range $index, $tab := .Scratch.Get $group }}
|
||||
<input type="radio" class="gdoc-tabs__control hidden" name="{{ $group }}" id="{{ printf "%s-%d" $group $index }}"
|
||||
{{ if not $index }}checked="checked" {{ end }} />
|
||||
<input
|
||||
type="radio"
|
||||
class="gdoc-tabs__control hidden"
|
||||
name="{{ $group }}"
|
||||
id="{{ printf "%s-%d" $group $index }}"
|
||||
{{ if not $index }}checked="checked"{{ end }}
|
||||
/>
|
||||
<label for="{{ printf "%s-%d" $group $index }}" class="gdoc-tabs__label">
|
||||
{{ $tab.Name }}
|
||||
</label>
|
||||
|
|
|
@ -1,33 +1,39 @@
|
|||
{{ $tocLevels := default (default 6 .Site.Params.GeekdocToC) .Page.Params.GeekdocToC }}
|
||||
{{- $tocLevels := default (default 6 .Site.Params.GeekdocToC) .Page.Params.GeekdocToC }}
|
||||
|
||||
{{ if $tocLevels }}
|
||||
<div class="gdoc-toc gdoc-toc__level--{{$tocLevels}}">
|
||||
{{- if $tocLevels }}
|
||||
<div class="gdoc-toc gdoc-toc__level--{{ $tocLevels }}">
|
||||
{{ template "toc-tree" dict "sect" .Page.Pages }}
|
||||
</div>
|
||||
{{ end }}
|
||||
{{- end }}
|
||||
|
||||
|
||||
<!-- templates -->
|
||||
{{ define "toc-tree" }}
|
||||
{{- define "toc-tree" }}
|
||||
<ul>
|
||||
{{ range .sect.GroupBy "Weight" }}
|
||||
{{ range .ByTitle }}
|
||||
{{ if or (not .Params.GeekdocHidden) (not (default true .Params.GeekdocHiddenTocTree)) }}
|
||||
<li>
|
||||
{{ if or .Content .Params.GeekdocFlatSection }}
|
||||
<span>
|
||||
<a href="{{ .RelPermalink }}" class="gdoc-toc__entry">{{ partial "title" . }}{{ with .Params.GeekdocDescription }}:</a> {{ . }}{{ else }}</a>{{ end }}
|
||||
</span>
|
||||
{{ else }}
|
||||
<span>{{ partial "title" . }}{{ with .Params.GeekdocDescription }}: {{ . }}{{ end }}</span>
|
||||
{{ end }}
|
||||
{{- range .sect.GroupBy "Weight" }}
|
||||
{{- range .ByTitle }}
|
||||
{{- if or (not .Params.GeekdocHidden) (not (default true .Params.GeekdocHiddenTocTree)) }}
|
||||
<li>
|
||||
{{- if or .Content .Params.GeekdocFlatSection }}
|
||||
<span>
|
||||
<a href="{{ .RelPermalink }}" class="gdoc-toc__entry">
|
||||
{{- partial "utils/title" . }}{{ with .Params.GeekdocDescription }}:{{ end }}
|
||||
</a>
|
||||
{{- with .Params.GeekdocDescription }}{{ . }}{{ end }}
|
||||
</span>
|
||||
{{- else -}}
|
||||
<span>
|
||||
{{- partial "utils/title" . }}{{ with .Params.GeekdocDescription }}: {{ . }}{{ end }}
|
||||
</span>
|
||||
{{- end -}}
|
||||
|
||||
{{ $numberOfPages := (add (len .Pages) (len .Sections)) }}
|
||||
{{ if and (ne $numberOfPages 0) (not .Params.GeekdocFlatSection) }}
|
||||
{{ template "toc-tree" dict "sect" .Pages }}
|
||||
{{ end }}
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{- $numberOfPages := (add (len .Pages) (len .Sections)) }}
|
||||
{{- if and (ne $numberOfPages 0) (not .Params.GeekdocFlatSection) }}
|
||||
{{- template "toc-tree" dict "sect" .Pages }}
|
||||
{{- end }}
|
||||
</li>
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
{{- end }}
|
||||
|
|
|
@ -1,5 +1,13 @@
|
|||
{{ $tocLevels := default (default 6 .Site.Params.GeekdocToC) .Page.Params.GeekdocToC }}
|
||||
{{- $format := default "html" (.Get "format") }}
|
||||
{{- $tocLevels := default (default 6 .Site.Params.GeekdocToC) .Page.Params.GeekdocToC }}
|
||||
|
||||
{{ if and $tocLevels .Page.TableOfContents }}
|
||||
<div class="gdoc-toc gdoc-toc__level--{{$tocLevels}}">{{ .Page.TableOfContents }}<hr></div>
|
||||
{{ end }}
|
||||
{{- if and $tocLevels .Page.TableOfContents -}}
|
||||
{{- if not (eq ($format | lower) "raw") -}}
|
||||
<div class="gdoc-toc gdoc-toc__level--{{ $tocLevels }}">
|
||||
{{ .Page.TableOfContents }}
|
||||
<hr />
|
||||
</div>
|
||||
{{- else -}}
|
||||
{{ .Page.TableOfContents }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
BIN
themes/hugo-geekdoc/static/favicon/android-chrome-144x144.png
Normal file
After Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 12 KiB |
BIN
themes/hugo-geekdoc/static/favicon/android-chrome-256x256.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
themes/hugo-geekdoc/static/favicon/android-chrome-36x36.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
themes/hugo-geekdoc/static/favicon/android-chrome-384x384.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
themes/hugo-geekdoc/static/favicon/android-chrome-48x48.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 34 KiB |
BIN
themes/hugo-geekdoc/static/favicon/android-chrome-72x72.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
themes/hugo-geekdoc/static/favicon/android-chrome-96x96.png
Normal file
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 45 KiB |