@@ -0,0 +1,3 @@ | |||
--- | |||
title: "{{ replace .Name "-" " " | title }}" | |||
--- |
@@ -0,0 +1,3 @@ | |||
--- | |||
title: "{{ replace .Name "-" " " | title }}" | |||
--- |
@@ -0,0 +1,4 @@ | |||
--- | |||
title: "{{ replace .Name "-" " " | title }}" | |||
has_sessions: | |||
--- |
@@ -0,0 +1,83 @@ | |||
/* soundcite - v0.5.1 - 2017-07-10 | |||
* Copyright (c) 2017 Tyler J. Fisher and Northwestern University Knight Lab | |||
*/ | |||
/*PLAYER CHROME*/ | |||
@-webkit-keyframes spin { | |||
from { -webkit-transform: rotate(0deg); opacity: 0.4; } | |||
50% { -webkit-transform: rotate(180deg); opacity: 1; } | |||
to { -webkit-transform: rotate(360deg); opacity: 0.4; } | |||
} | |||
@-moz-keyframes spin { | |||
from { -moz-transform: rotate(0deg); opacity: 0.4; } | |||
50% { -moz-transform: rotate(180deg); opacity: 1; } | |||
to { -moz-transform: rotate(360deg); opacity: 0.4; } | |||
} | |||
@-ms-keyframes spin { | |||
from { -ms-transform: rotate(0deg); opacity: 0.4; } | |||
50% { -ms-transform: rotate(180deg); opacity: 1; } | |||
to { -ms-transform: rotate(360deg); opacity: 0.4; } | |||
} | |||
@-o-keyframes spin { | |||
from { -o-transform: rotate(0deg); opacity: 0.4; } | |||
50% { -o-transform: rotate(180deg); opacity: 1; } | |||
to { -o-transform: rotate(360deg); opacity: 0.4; } | |||
} | |||
@keyframes spin { | |||
from { transform: rotate(0deg); opacity: 0.2; } | |||
50% { transform: rotate(180deg); opacity: 1; } | |||
to { transform: rotate(360deg); opacity: 0.2; } | |||
} | |||
.soundcite-loaded { | |||
border-radius: 6px; | |||
padding: 0 5px 0 5px; | |||
display: inline-block; | |||
cursor: pointer; | |||
} | |||
.soundcite-loaded:before { | |||
display: inline-block; | |||
content: ""; | |||
vertical-align: -10%; | |||
margin-right: 0.25em; | |||
} | |||
.soundcite-loading:before { | |||
margin-right: 0.5em; | |||
font-size: 0.9em; | |||
position: relative; | |||
top: -.05em; | |||
height: 0.75em; | |||
width: 0.75em; | |||
border: 2px solid #000; | |||
border-right-color: transparent; | |||
border-radius: 50%; | |||
-webkit-animation: spin 1s linear infinite; | |||
-moz-animation: spin 1s linear infinite; | |||
-ms-animation: spin 1s linear infinite; | |||
-o-animation: spin 1s linear infinite; | |||
animation: spin 1s linear infinite; | |||
} | |||
.soundcite-play:before { | |||
font-size: 0.9em; | |||
position: relative; | |||
top: -.05em; | |||
border: 0.5em solid transparent; | |||
border-left: 0.75em solid black; | |||
} | |||
.soundcite-pause:before { | |||
font-size: 0.9em; | |||
position: relative; | |||
top: -.05em; | |||
height: 1em; | |||
border-left: .75em double black; | |||
border-right: .5em solid transparent; | |||
} |
@@ -0,0 +1,13 @@ | |||
const themeDir = __dirname + '/../../'; | |||
module.exports = { | |||
plugins: [ | |||
require('postcss-import')({ | |||
path: [themeDir] | |||
}), | |||
/* require('autoprefixer')({ | |||
* grid: true | |||
* }), | |||
* require('postcss-reporter'), */ | |||
] | |||
} |
@@ -0,0 +1,929 @@ | |||
html, | |||
body, | |||
dl, | |||
dt, | |||
dd, | |||
blockquote, | |||
figure, | |||
fieldset, | |||
legend, | |||
textarea, | |||
pre, | |||
iframe, | |||
hr { | |||
margin: 0; | |||
padding: 0; | |||
} | |||
h1, | |||
h2, | |||
h3, | |||
h4, | |||
h5, | |||
h6 { | |||
font-size: 100%; | |||
font-weight: normal; | |||
} | |||
ul { | |||
list-style: none; | |||
} | |||
button, | |||
input, | |||
select, | |||
textarea { | |||
margin: 0; | |||
} | |||
html { | |||
box-sizing: border-box; | |||
} | |||
img, | |||
video { | |||
height: auto; | |||
max-width: 100%; | |||
} | |||
iframe { | |||
border: 0; | |||
} | |||
strong del { | |||
/* font-weight: normal; */ | |||
display: inline; | |||
text-decoration: none; | |||
margin-left: 1rem; | |||
box-decoration-break: clone; | |||
-webkit-box-decoration-break: clone; | |||
} | |||
table { | |||
border-collapse: collapse; | |||
border-spacing: 0; | |||
background-color: #fff9f9; | |||
border-left: 1px red solid; | |||
margin-left: 1rem; | |||
} | |||
td, | |||
th { | |||
padding: 0; | |||
vertical-align: top; | |||
padding-right: 1rem; | |||
padding-left: 1rem; | |||
padding-bottom: 0.5rem; | |||
} | |||
td:not([align]), | |||
th:not([align]) { | |||
text-align: left; | |||
} | |||
/* vollkorn-sc-regular - latin-ext_latin */ | |||
@font-face { | |||
font-family: "Vollkorn SC"; | |||
font-style: normal; | |||
font-weight: 400; | |||
src: url("../fonts/vollkorn-sc-v4-latin-ext_latin-regular.eot"); | |||
/* IE9 Compat Modes */ | |||
src: local(""), | |||
url("../fonts/vollkorn-sc-v4-latin-ext_latin-regular.eot?#iefix") | |||
format("embedded-opentype"), | |||
/* IE6-IE8 */ url("../fonts/vollkorn-sc-v4-latin-ext_latin-regular.woff2") | |||
format("woff2"), | |||
/* Super Modern Browsers */ | |||
url("../fonts/vollkorn-sc-v4-latin-ext_latin-regular.woff") format("woff"), | |||
/* Modern Browsers */ | |||
url("../fonts/vollkorn-sc-v4-latin-ext_latin-regular.ttf") | |||
format("truetype"), | |||
/* Safari, Android, iOS */ | |||
url("../fonts/vollkorn-sc-v4-latin-ext_latin-regular.svg#VollkornSC") | |||
format("svg"); | |||
/* Legacy iOS */ | |||
} | |||
/* vollkorn-sc-600 - latin-ext_latin */ | |||
@font-face { | |||
font-family: "Vollkorn SC"; | |||
font-style: normal; | |||
font-weight: 600; | |||
src: url("../fonts/vollkorn-sc-v4-latin-ext_latin-600.eot"); | |||
/* IE9 Compat Modes */ | |||
src: local(""), | |||
url("../fonts/vollkorn-sc-v4-latin-ext_latin-600.eot?#iefix") | |||
format("embedded-opentype"), | |||
/* IE6-IE8 */ url("../fonts/vollkorn-sc-v4-latin-ext_latin-600.woff2") | |||
format("woff2"), | |||
/* Super Modern Browsers */ | |||
url("../fonts/vollkorn-sc-v4-latin-ext_latin-600.woff") format("woff"), | |||
/* Modern Browsers */ url("../fonts/vollkorn-sc-v4-latin-ext_latin-600.ttf") | |||
format("truetype"), | |||
/* Safari, Android, iOS */ | |||
url("../fonts/vollkorn-sc-v4-latin-ext_latin-600.svg#VollkornSC") | |||
format("svg"); | |||
/* Legacy iOS */ | |||
} | |||
/* vollkorn-sc-700 - latin-ext_latin */ | |||
@font-face { | |||
font-family: "Vollkorn SC"; | |||
font-style: normal; | |||
font-weight: 700; | |||
src: url("../fonts/vollkorn-sc-v4-latin-ext_latin-700.eot"); | |||
/* IE9 Compat Modes */ | |||
src: local(""), | |||
url("../fonts/vollkorn-sc-v4-latin-ext_latin-700.eot?#iefix") | |||
format("embedded-opentype"), | |||
/* IE6-IE8 */ url("../fonts/vollkorn-sc-v4-latin-ext_latin-700.woff2") | |||
format("woff2"), | |||
/* Super Modern Browsers */ | |||
url("../fonts/vollkorn-sc-v4-latin-ext_latin-700.woff") format("woff"), | |||
/* Modern Browsers */ url("../fonts/vollkorn-sc-v4-latin-ext_latin-700.ttf") | |||
format("truetype"), | |||
/* Safari, Android, iOS */ | |||
url("../fonts/vollkorn-sc-v4-latin-ext_latin-700.svg#VollkornSC") | |||
format("svg"); | |||
/* Legacy iOS */ | |||
} | |||
/* vollkorn-sc-900 - latin-ext_latin */ | |||
@font-face { | |||
font-family: "Vollkorn SC"; | |||
font-style: normal; | |||
font-weight: 900; | |||
src: url("../fonts/vollkorn-sc-v4-latin-ext_latin-900.eot"); | |||
/* IE9 Compat Modes */ | |||
src: local(""), | |||
url("../fonts/vollkorn-sc-v4-latin-ext_latin-900.eot?#iefix") | |||
format("embedded-opentype"), | |||
/* IE6-IE8 */ url("../fonts/vollkorn-sc-v4-latin-ext_latin-900.woff2") | |||
format("woff2"), | |||
/* Super Modern Browsers */ | |||
url("../fonts/vollkorn-sc-v4-latin-ext_latin-900.woff") format("woff"), | |||
/* Modern Browsers */ url("../fonts/vollkorn-sc-v4-latin-ext_latin-900.ttf") | |||
format("truetype"), | |||
/* Safari, Android, iOS */ | |||
url("../fonts/vollkorn-sc-v4-latin-ext_latin-900.svg#VollkornSC") | |||
format("svg"); | |||
/* Legacy iOS */ | |||
} | |||
/* vollkorn-500italic - latin-ext_latin */ | |||
@font-face { | |||
font-family: "Vollkorn"; | |||
font-style: italic; | |||
font-weight: 500; | |||
src: url("../fonts/vollkorn-v12-latin-ext_latin-500italic.eot"); | |||
/* IE9 Compat Modes */ | |||
src: local(""), | |||
url("../fonts/vollkorn-v12-latin-ext_latin-500italic.eot?#iefix") | |||
format("embedded-opentype"), | |||
/* IE6-IE8 */ url("../fonts/vollkorn-v12-latin-ext_latin-500italic.woff2") | |||
format("woff2"), | |||
/* Super Modern Browsers */ | |||
url("../fonts/vollkorn-v12-latin-ext_latin-500italic.woff") format("woff"), | |||
/* Modern Browsers */ | |||
url("../fonts/vollkorn-v12-latin-ext_latin-500italic.ttf") | |||
format("truetype"), | |||
/* Safari, Android, iOS */ | |||
url("../fonts/vollkorn-v12-latin-ext_latin-500italic.svg#Vollkorn") | |||
format("svg"); | |||
/* Legacy iOS */ | |||
} | |||
/* vollkorn-regular - latin-ext_latin */ | |||
@font-face { | |||
font-family: "Vollkorn"; | |||
font-style: normal; | |||
font-weight: 400; | |||
src: url("../fonts/vollkorn-v12-latin-ext_latin-regular.eot"); | |||
/* IE9 Compat Modes */ | |||
src: local(""), | |||
url("../fonts/vollkorn-v12-latin-ext_latin-regular.eot?#iefix") | |||
format("embedded-opentype"), | |||
/* IE6-IE8 */ url("../fonts/vollkorn-v12-latin-ext_latin-regular.woff2") | |||
format("woff2"), | |||
/* Super Modern Browsers */ | |||
url("../fonts/vollkorn-v12-latin-ext_latin-regular.woff") format("woff"), | |||
/* Modern Browsers */ | |||
url("../fonts/vollkorn-v12-latin-ext_latin-regular.ttf") | |||
format("truetype"), | |||
/* Safari, Android, iOS */ | |||
url("../fonts/vollkorn-v12-latin-ext_latin-regular.svg#Vollkorn") | |||
format("svg"); | |||
/* Legacy iOS */ | |||
} | |||
/* vollkorn-500 - latin-ext_latin */ | |||
@font-face { | |||
font-family: "Vollkorn"; | |||
font-style: normal; | |||
font-weight: 500; | |||
src: url("../fonts/vollkorn-v12-latin-ext_latin-500.eot"); | |||
/* IE9 Compat Modes */ | |||
src: local(""), | |||
url("../fonts/vollkorn-v12-latin-ext_latin-500.eot?#iefix") | |||
format("embedded-opentype"), | |||
/* IE6-IE8 */ url("../fonts/vollkorn-v12-latin-ext_latin-500.woff2") | |||
format("woff2"), | |||
/* Super Modern Browsers */ | |||
url("../fonts/vollkorn-v12-latin-ext_latin-500.woff") format("woff"), | |||
/* Modern Browsers */ url("../fonts/vollkorn-v12-latin-ext_latin-500.ttf") | |||
format("truetype"), | |||
/* Safari, Android, iOS */ | |||
url("../fonts/vollkorn-v12-latin-ext_latin-500.svg#Vollkorn") | |||
format("svg"); | |||
/* Legacy iOS */ | |||
} | |||
/* vollkorn-italic - latin-ext_latin */ | |||
@font-face { | |||
font-family: "Vollkorn"; | |||
font-style: italic; | |||
font-weight: 400; | |||
src: url("../fonts/vollkorn-v12-latin-ext_latin-italic.eot"); | |||
/* IE9 Compat Modes */ | |||
src: local(""), | |||
url("../fonts/vollkorn-v12-latin-ext_latin-italic.eot?#iefix") | |||
format("embedded-opentype"), | |||
/* IE6-IE8 */ url("../fonts/vollkorn-v12-latin-ext_latin-italic.woff2") | |||
format("woff2"), | |||
/* Super Modern Browsers */ | |||
url("../fonts/vollkorn-v12-latin-ext_latin-italic.woff") format("woff"), | |||
/* Modern Browsers */ | |||
url("../fonts/vollkorn-v12-latin-ext_latin-italic.ttf") format("truetype"), | |||
/* Safari, Android, iOS */ | |||
url("../fonts/vollkorn-v12-latin-ext_latin-italic.svg#Vollkorn") | |||
format("svg"); | |||
/* Legacy iOS */ | |||
} | |||
/* great-vibes-regular - latin-ext_latin */ | |||
@font-face { | |||
font-family: "Great Vibes"; | |||
font-style: normal; | |||
font-weight: 400; | |||
src: url("../fonts/great-vibes-v7-latin-ext_latin-regular.eot"); | |||
/* IE9 Compat Modes */ | |||
src: local("Great Vibes"), local("GreatVibes-Regular"), | |||
url("../fonts/great-vibes-v7-latin-ext_latin-regular.eot?#iefix") | |||
format("embedded-opentype"), | |||
/* IE6-IE8 */ url("../fonts/great-vibes-v7-latin-ext_latin-regular.woff2") | |||
format("woff2"), | |||
/* Super Modern Browsers */ | |||
url("../fonts/great-vibes-v7-latin-ext_latin-regular.woff") format("woff"), | |||
/* Modern Browsers */ | |||
url("../fonts/great-vibes-v7-latin-ext_latin-regular.ttf") | |||
format("truetype"), | |||
/* Safari, Android, iOS */ | |||
url("../fonts/great-vibes-v7-latin-ext_latin-regular.svg#GreatVibes") | |||
format("svg"); | |||
/* Legacy iOS */ | |||
} | |||
html { | |||
line-height: 1.5; | |||
} | |||
body { | |||
font-family: "Vollkorn", serif; | |||
font-weight: 400; | |||
max-width: 1024px; | |||
font-size: 1.4rem; | |||
padding-left: 3rem; | |||
padding-top: 0.5rem; | |||
padding-right: 2rem; | |||
color: black; | |||
} | |||
#preview { | |||
display: none; | |||
} | |||
sup, | |||
sub { | |||
vertical-align: baseline; | |||
position: relative; | |||
top: -0.4em; | |||
} | |||
sub { | |||
top: 0.4em; | |||
} | |||
.headiter { | |||
display: flex; | |||
justify-content: space-between; | |||
border-bottom: 0.3rem solid red; | |||
border-top: 0.1rem solid red; | |||
padding-top: 1rem; | |||
padding-bottom: 0.5rem; | |||
padding-left: 1rem; | |||
padding-right: 1rem; | |||
margin-bottom: 1rem; | |||
} | |||
a.edit-button { | |||
color: #000; | |||
text-decoration: none; | |||
} | |||
a.edit-button:hover { | |||
text-decoration: underline; | |||
-webkit-text-decoration-color: red; | |||
text-decoration-color: red; | |||
font-weight: 500; | |||
font-size: 0.97em; | |||
cursor: pointer; | |||
} | |||
.header { | |||
display: grid; | |||
grid-template-columns: auto; | |||
grid-auto-flow: column; | |||
position: sticky; | |||
top: 0; | |||
padding-top: 0.5rem; | |||
font-size: 1.1rem; | |||
background-color: white; | |||
z-index: 10; | |||
} | |||
.mantlebar { | |||
display: none; | |||
} | |||
.breadcrumbs { | |||
grid-column: 1; | |||
} | |||
.bibliotheke { | |||
width: 2.4rem; | |||
grid-column: 2; | |||
margin-left: auto; | |||
} | |||
.bibliotheke:hover { | |||
text-decoration: none; | |||
font-size: 1rem; | |||
} | |||
.alsoin { | |||
font-weight: bold; | |||
display: inline-flex; | |||
padding-left: 0.2rem; | |||
padding-right: 0.3rem; | |||
} | |||
.ddmenu { | |||
cursor: pointer; | |||
display: inline-grid; | |||
} | |||
.ddmenu input { | |||
display: none; | |||
} | |||
.ddmenu li { | |||
list-style-type: none; | |||
} | |||
.ddmenu .hiddendiv { | |||
display: none; | |||
margin-top: -0.9rem; | |||
} | |||
input:focus, | |||
select:focus, | |||
textarea:focus, | |||
label:focus, | |||
button:focus { | |||
outline: none; | |||
} | |||
.ddmenu input:checked ~ .hiddendiv { | |||
display: block; | |||
} | |||
.logolink { | |||
width: 2.4rem; | |||
margin-left: auto; | |||
} | |||
.sandpointlogo { | |||
border-radius: 50%; | |||
border: 0.3em solid red; | |||
display: inline-flex; | |||
font-family: "Great Vibes", cursive; | |||
font-size: 1.2rem; | |||
font-weight: bold; | |||
color: white; | |||
background-color: red; | |||
position: relative; | |||
padding-left: 1em; | |||
padding-right: 0.3em; | |||
padding-bottom: 1.2em; | |||
max-width: 0em; | |||
max-height: 0em; | |||
} | |||
.sandpointF { | |||
position: absolute; | |||
font-size: 1.2em; | |||
margin-top: -0.2em; | |||
margin-left: -0.4em; | |||
} | |||
.sandpointN { | |||
position: absolute; | |||
font-size: 0.7em; | |||
margin-top: 0.4em; | |||
color: red; | |||
margin-left: -0.5em; | |||
} | |||
.sandpointC { | |||
position: absolute; | |||
font-size: 1em; | |||
margin-left: -0.37em; | |||
} | |||
footer { | |||
display: flex; | |||
margin-bottom: 1rem; | |||
margin-top: 4rem; | |||
} | |||
li { | |||
list-style-type: "› "; | |||
} | |||
li[role="doc-endnote"] { | |||
list-style-type: decimal; | |||
} | |||
ol li { | |||
list-style-type: decimal; | |||
} | |||
img { | |||
width: 100%; | |||
} | |||
.supt { | |||
display: inline-flex; | |||
flex-wrap: nowrap; | |||
font-family: "Great Vibes", cursive; | |||
font-size: 0.9em; | |||
font-style: normal; | |||
color: rgba(0, 0, 0, 0.8); | |||
vertical-align: baseline; | |||
position: relative; | |||
top: -0.3em; | |||
} | |||
.sup { | |||
display: inline-flex; | |||
flex-wrap: nowrap; | |||
font-family: "Great Vibes", cursive; | |||
font-size: 0.9em; | |||
font-style: normal; | |||
color: red; | |||
vertical-align: baseline; | |||
position: relative; | |||
top: -0.3em; | |||
} | |||
.sup:hover { | |||
font-weight: normal !important; | |||
} | |||
.nosup a { | |||
color: red; | |||
} | |||
.nosup a span.sup { | |||
display: none; | |||
} | |||
.syllabustitle, | |||
.coretitle { | |||
margin-top: 4rem; | |||
font-style: italic; | |||
font-size: 4rem; | |||
margin-bottom: 4rem; | |||
} | |||
.mantletitle, | |||
.crusttitle { | |||
margin-top: 4rem; | |||
font-style: italic; | |||
font-size: 2rem; | |||
margin-bottom: 4rem; | |||
} | |||
.grid { | |||
padding-left: 3rem; | |||
margin-bottom: 2rem; | |||
display: grid; | |||
grid-template-columns: 1fr 1fr; | |||
} | |||
.leftcolumn { | |||
grid-column: 1; | |||
padding-right: 1.2rem; | |||
position: relative; | |||
} | |||
#TableOfContents { | |||
margin-left: -2rem; | |||
margin-top: -1.5rem; | |||
} | |||
#TableOfContents li { | |||
list-style: decimal inside; | |||
padding-left: 0.5rem; | |||
color: rgba(0, 0, 0, 0.4); | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#TableOfContents li a { | |||
font-family: "Vollkorn"; | |||
font-size: 1.4rem; | |||
font-weight: 500; | |||
font-style: normal; | |||
} | |||
#TableOfContents > ol:first-child > span > li > a::after { | |||
content: "¶"; | |||
color: rgba(0, 0, 0, 0.2); | |||
font-size: 1.3em; | |||
padding-left: 0.1em; | |||
} | |||
.rightcolumn { | |||
/* display: grid; | |||
grid-column: 2; | |||
grid-template-columns: auto 1fr; | |||
grid-auto-rows: max-content; */ | |||
padding-left: 0.5rem; | |||
} | |||
.has { | |||
display: inline-grid; | |||
grid-column: 2; | |||
grid-auto-rows: max-content; | |||
font-size: 1.4rem; | |||
font-style: italic; | |||
margin-bottom: 0.8rem; | |||
} | |||
.hasauthors { | |||
font-size: 1.6rem !important; | |||
} | |||
.hassup { | |||
grid-column: 1; | |||
font-family: "Great Vibes", cursive; | |||
font-size: 0.9em; | |||
font-style: normal; | |||
color: red; | |||
vertical-align: baseline; | |||
position: relative; | |||
/* top: -0.3em; */ | |||
} | |||
.afterhas { | |||
grid-column: 2; | |||
} | |||
.content { | |||
margin-top: 4rem; | |||
padding-left: 3rem; | |||
padding-right: 10rem; | |||
max-width: 720px; | |||
} | |||
a { | |||
color: black; | |||
text-decoration: none; | |||
} | |||
a:hover { | |||
text-decoration: underline; | |||
text-decoration-color: red; | |||
font-weight: 500; | |||
font-size: 0.97em; | |||
cursor: pointer; | |||
} | |||
h1 { | |||
display: none; | |||
} | |||
h2 { | |||
font-weight: 500; | |||
font-size: 1.6rem; | |||
} | |||
h3 { | |||
font-weight: 500; | |||
font-size: 1.4rem; | |||
} | |||
h4 { | |||
font-weight: 500; | |||
font-size: 1.2rem; | |||
} | |||
h5 { | |||
font-weight: 500; | |||
font-size: 1.1rem; | |||
} | |||
h6 { | |||
font-weight: 500; | |||
font-size: 1rem; | |||
} | |||
.abstract { | |||
font-style: italic; | |||
border-left: 1px solid rgb(0, 0, 0); | |||
margin-left: 5rem; | |||
margin-right: 2rem; | |||
margin-bottom: 1.2rem; | |||
padding-left: 1rem; | |||
padding-right: 2rem; | |||
padding-top: 1.2rem; | |||
padding-bottom: 1.2rem; | |||
background-color: rgba(0, 0, 0, 0.05); | |||
max-width: 70ch; | |||
} | |||
.authors { | |||
display: inline-block; | |||
font-size: 1.8rem; | |||
margin-left: 5rem; | |||
margin-right: 2rem; | |||
padding-left: 1rem; | |||
} | |||
.keywords { | |||
display: inline-block; | |||
font-size: 1.2rem; | |||
margin-left: 5rem; | |||
margin-right: 2rem; | |||
padding-left: 1rem; | |||
padding-right: 2rem; | |||
margin-bottom: 2.2rem; | |||
max-width: 72ch; | |||
} | |||
blockquote { | |||
border-left: 1px red solid; | |||
margin-left: 1rem; | |||
margin-right: 2rem; | |||
padding-left: 1rem; | |||
padding-right: 2rem; | |||
padding-top: 0.1rem; | |||
padding-bottom: 0.1rem; | |||
background-color: #fff9f9; | |||
} | |||
h2 + p:first-letter { | |||
font-family: "Great Vibes", cursive; | |||
color: rgba(0, 0, 0, 0.8); | |||
font-size: 1.5em; | |||
line-height: 0; | |||
} | |||
.hx { | |||
position: relative; | |||
} | |||
.hpar { | |||
position: absolute; | |||
font-size: 1.7em; | |||
font-style: normal; | |||
color: rgba(0, 0, 0, 0.1); | |||
top: 0; | |||
margin-top: -0.4em; | |||
} | |||
.smallcaps { | |||
font-family: "Vollkorn SC", serif; | |||
font-weight: 400; | |||
} | |||
body { | |||
counter-reset: h2 glossN; | |||
} | |||
h2 { | |||
counter-reset: h3; | |||
} | |||
h3 { | |||
counter-reset: h4; | |||
} | |||
h4 { | |||
counter-reset: h5; | |||
} | |||
h5 { | |||
counter-reset: h6; | |||
} | |||
h2:before { | |||
color: rgba(0, 0, 0, 0.4); | |||
counter-increment: h2; | |||
content: counter(h2) ". "; | |||
} | |||
h3:before { | |||
color: rgba(0, 0, 0, 0.4); | |||
counter-increment: h3; | |||
content: counter(h2) "." counter(h3) ". "; | |||
} | |||
h4:before { | |||
color: rgba(0, 0, 0, 0.4); | |||
counter-increment: h4; | |||
content: counter(h2) "." counter(h3) "." counter(h4) ". "; | |||
} | |||
h5:before { | |||
color: rgba(0, 0, 0, 0.4); | |||
counter-increment: h5; | |||
content: counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) ". "; | |||
} | |||
h6:before { | |||
color: rgba(0, 0, 0, 0.4); | |||
counter-increment: h6; | |||
content: counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) "." | |||
counter(h6) ". "; | |||
} | |||
h2.nocount:before, | |||
h3.nocount:before, | |||
h4.nocount:before, | |||
h5.nocount:before, | |||
h6.nocount:before { | |||
content: ""; | |||
counter-increment: none; | |||
} | |||
details { | |||
padding-left: 1rem; | |||
} | |||
#toggleAllLinks { | |||
font-size: 0.8rem; | |||
} | |||
#toggleAllLinks:hover { | |||
cursor: pointer; | |||
text-decoration: underline; | |||
text-decoration-color: red; | |||
} | |||
.glosscontainer { | |||
display: grid; | |||
grid-template-columns: auto 1fr; | |||
grid-template-rows: 1fr; | |||
gap: 0px 0px; | |||
grid-template-areas: "glossnumber gloss"; | |||
border-left: 1px red solid; | |||
background-color: #fff9f9; | |||
padding-top: 0.4em; | |||
margin-top: 1rem; | |||
margin-bottom: 1rem; | |||
margin-left: 1rem; | |||
margin-right: 2rem; | |||
padding-bottom: 0.4em; | |||
padding-left: 1rem; | |||
padding-right: 2rem; | |||
} | |||
.gloss { | |||
grid-area: gloss; | |||
} | |||
.glossnumber { | |||
grid-area: glossnumber; | |||
padding-right: 0.6rem; | |||
} | |||
.glossnumberAuto::before { | |||
counter-increment: glossN; | |||
content: "(" counter(glossN) ")"; | |||
} | |||
/* .glossline { | |||
border-bottom: lightgray solid 1px; | |||
border-top: lightgray solid 1px; | |||
} */ | |||
.glosswords { | |||
display: inline-block; | |||
padding-left: -0.3rem; | |||
padding-right: 1rem; | |||
} | |||
.sitemap { | |||
padding-left: 3rem; | |||
font-size: 1.2rem; | |||
} | |||
.sitemap a { | |||
color: rgba(0, 0, 0, 0.4); | |||
} | |||
.sitemap .sup { | |||
color: rgba(255, 0, 0, 0.7); | |||
} | |||
.highline a, | |||
.sitemap a:hover { | |||
color: rgba(0, 0, 0, 1); | |||
} | |||
.highline .sup, | |||
.sitemap .sup:hover { | |||
color: red; | |||
} | |||
.highline { | |||
font-size: 1.6rem; | |||
color: rgb(0, 0, 0); | |||
border-left: 1px red solid; | |||
padding-left: 1rem; | |||
padding-top: 0.1rem; | |||
padding-bottom: 0.1rem; | |||
background-color: #fff9f9; | |||
} | |||
.svedit { | |||
display: none; | |||
margin-left: 0.5rem; | |||
} | |||
@media (max-width: 767px) { | |||
html { | |||
box-sizing: border-box; | |||
max-width: 767px; | |||
margin: 0 auto; | |||
padding: 0; | |||
} | |||
body { | |||
font-size: 1rem; | |||
padding-left: 10px; | |||
padding-right: 10px; | |||
} | |||
.grid { | |||
display: inline; | |||
} | |||
.coretitle { | |||
margin-top: 3rem; | |||
margin-bottom: 2rem; | |||
font-size: 2.2rem; | |||
} | |||
.leftcolumn { | |||
display: none; | |||
} | |||
.has, | |||
.afterhas { | |||
font-size: 1.1rem; | |||
} | |||
.mantle, | |||
.crust { | |||
margin-bottom: 0.2em; | |||
} | |||
.content { | |||
padding: 0px; | |||
margin: 0 auto; | |||
margin-top: 4rem; | |||
} | |||
.hpar { | |||
display: none; | |||
} | |||
.mantletitle { | |||
font-size: 1.7rem; | |||
} | |||
.sessiongrid { | |||
display: none; | |||
} | |||
} |
@@ -0,0 +1,151 @@ | |||
window.addEventListener("scroll", function (e) { | |||
if (document.querySelector("body").clientWidth > 767) { | |||
let rightcolumn = document.querySelector(".rightcolumn"); | |||
let mantletitle = | |||
document.querySelector(".mantletitle") || | |||
document.querySelector(".crusttitle") || | |||
false; | |||
if (!mantletitle) { | |||
return; | |||
} | |||
let mantlebar = document.querySelector(".mantlebar"); | |||
let grid = document.querySelector(".grid"); | |||
let gridrect = mantletitle.getBoundingClientRect(); | |||
if ( | |||
document.querySelector("body").clientHeight - | |||
(grid.clientHeight + mantletitle.clientHeight + 32) < | |||
window.innerHeight | |||
) { | |||
return; | |||
} | |||
if (gridrect.top < 20 && !grid.classList.contains("moved")) { | |||
grid.classList.add("moved"); | |||
mantlebar.style.display = "inline"; | |||
mantletitle.style.visibility = "hidden"; | |||
} else if (gridrect.top > 21 && grid.classList.contains("moved")) { | |||
grid.classList.remove("moved"); | |||
mantletitle.style.visibility = "visible"; | |||
mantlebar.style.display = "none"; | |||
} | |||
} else { | |||
let rightcolumn = document.querySelector(".rightcolumn"); | |||
let mantletitle = | |||
document.querySelector(".mantletitle") || | |||
document.querySelector(".crusttitle") || | |||
false; | |||
if (!mantletitle) { | |||
return; | |||
} | |||
let mantlebar = document.querySelector(".mantlebar"); | |||
let grid = document.querySelector(".grid"); | |||
let gridrect = mantletitle.getBoundingClientRect(); | |||
if (gridrect.top < 20 && !grid.classList.contains("moved")) { | |||
grid.classList.add("moved"); | |||
mantlebar.style.display = "inline"; | |||
mantletitle.style.visibility = "hidden"; | |||
} else if (gridrect.top > 21 && grid.classList.contains("moved")) { | |||
grid.classList.remove("moved"); | |||
mantletitle.style.visibility = "visible"; | |||
mantlebar.style.display = "none"; | |||
} | |||
} | |||
}); | |||
function editPage(repoJsId) { | |||
let relPath = "../".repeat(relPathDepth - 1); | |||
var el = document.createElement('script'); | |||
el.onload = ()=> { | |||
console.log("loading...") | |||
console.log(repo) | |||
} | |||
el.src = `${relPath}js/repo/${repoJsId}.js` | |||
document.body.appendChild(el) | |||
document.location.href = `${relPath}edit/index.html#${repoJsId}` | |||
ev} | |||
window.addEventListener("keyup", (e)=> { | |||
if (e.key == "e" && location.protocol == "file:") { | |||
editPage(sandpointsPageId) | |||
} | |||
}) | |||
window.addEventListener("DOMContentLoaded", (e) => { | |||
if (location.protocol == "file:") { | |||
document.querySelectorAll(".svedit").forEach((i) => { | |||
i.style.display = "inline"; | |||
}) | |||
} | |||
document.querySelectorAll('.triadlink').forEach((i) => { | |||
console.log(i) | |||
i.addEventListener("click", (ev) => { | |||
if (ev.ctrlKey) { | |||
ev.preventDefault() | |||
editPage(ev.target.getAttribute("repoid")) | |||
} | |||
}) | |||
}) | |||
let preview = document.querySelector("#preview"); | |||
if ( | |||
location.pathname.split("/").includes("_preview") || | |||
location.hash.startsWith("#/_edit") | |||
) { | |||
preview.style.display = "flex"; | |||
} | |||
let par = document.querySelector( | |||
"#TableOfContents > ol:first-child > li:first-child" | |||
); | |||
if (par) { | |||
let s = document.createElement("span"); | |||
s.appendChild(par.cloneNode(true)); | |||
par.remove(); | |||
document | |||
.querySelector("#TableOfContents > ol:first-child") | |||
.insertBefore( | |||
s, | |||
document.querySelector("#TableOfContents > ol:first-child").firstChild | |||
); | |||
} | |||
if (document.querySelector(".soundcite")) { | |||
let relPath = "../".repeat(relPathDepth - 1); | |||
var popcorn = document.createElement("script"); | |||
popcorn.src = `${relPath}js/popcorn.min.js`; | |||
document.body.appendChild(popcorn); | |||
var soundcite = document.createElement("script"); | |||
soundcite.src = `${relPath}js/soundcite.min.js`; | |||
document.body.appendChild(soundcite); | |||
} | |||
document | |||
.querySelectorAll( | |||
"#TableOfContents a, .anchorz, .footnote-backref, .footnote-ref" | |||
) | |||
.forEach((i) => { | |||
i.addEventListener("click", (e) => { | |||
setTimeout(() => { | |||
window.scrollBy({ | |||
top: document.querySelector(".header").clientHeight * -1.25, | |||
behavior: "smooth", | |||
}); | |||
}, 50); | |||
}); | |||
}); | |||
}); | |||
toggleAllLinks = function () { | |||
document.querySelectorAll("details").forEach((i) => { | |||
if (i.open) { | |||
i.removeAttribute("open"); | |||
} else { | |||
i.setAttribute("open", true); | |||
} | |||
}); | |||
}; |
@@ -0,0 +1 @@ | |||
{} |
@@ -0,0 +1,20 @@ | |||
{ | |||
"syllabus": "syllabi", | |||
"curriculum": "curriculums", | |||
"notebook": "notebooks", | |||
"book": "books", | |||
"journal": "journals", | |||
"topic": "topics", | |||
"part": "parts", | |||
"issue": "issues", | |||
"tab": "tabs", | |||
"experiment": "experiments", | |||
"session": "sessions", | |||
"chapter": "chapters", | |||
"article": "articles", | |||
"note": "notes", | |||
"annex": "annexes", | |||
"author": "authors", | |||
"editor": "editors", | |||
"contributor": "contributors" | |||
} |
@@ -0,0 +1,3 @@ | |||
{{ define "main" }} | |||
<p>404 - page not found</p> | |||
{{ end }} |
@@ -0,0 +1 @@ | |||
<h{{ add 1 .Level }} id="{{ .Anchor | safeURL }}" class="hx css-{{ .Page.File.UniqueID }}-h{{ add 1 .Level }}">{{ .Text | safeHTML }}<a class="hpar" href="#{{ .Anchor | safeURL }}">¶</a></h{{ add 1 .Level }}> |
@@ -0,0 +1,50 @@ | |||
{{- $text_link := .Text -}} | |||
{{ $_ := newScratch }} | |||
{{- range $k, $v := .Page.Site.Data.sandpointsnamegraph -}} | |||
{{ $_.Add "triads" $k }} | |||
{{- end -}} | |||
{{- if strings.HasPrefix .Destination "bib:" -}} | |||
{{- $destination := (substr .Destination 4) -}} | |||
{{- $c_prefix := .Page.Site.Params.sandpointsCatalogPrefix | default "/library/" -}} | |||
{{- if index $.Page.Site.Data.books.catalog $destination -}} | |||
{{- $b := index $.Page.Site.Data.books.catalog $destination -}} | |||
{{- $bibhref := printf "%sBROWSE_LIBRARY.html#/book/%s" (safeURL ($c_prefix)) $destination }} | |||
{{ $bibtitle := "" }} | |||
{{ with $b.title }} | |||
{{- $bibtitle = printf "%s" $b.title }} | |||
{{ end }} | |||
{{ .Page.Scratch.Add "bibs" (slice (slice $bibhref $bibtitle)) }} | |||
{{- if not $text_link -}} | |||
<span>{{- delimit $b.authors ", " " & " -}}{{- with $b.pubdate -}}, {{- substr . 0 4}}{{- end -}}.<a href="{{- $c_prefix | safeURL -}}BROWSE_LIBRARY.html#/book/{{- $destination -}}"{{- with $b.title}} title="{{- . -}}"{{- end -}} target="_blank"><span class="sup">bib⁄</span><i>‘{{- $b.title -}}’</i></a>. {{- with $b.publisher -}}{{- . -}}.{{- end -}}</span> | |||
{{- else -}} | |||
<span class="sup">bib⁄</span><a href="{{- $c_prefix | safeURL -}}BROWSE_LIBRARY.html#/book/{{- $destination -}}"{{- with $b.title}} title="{{- . -}}"{{- end -}} target="_blank">{{- $text_link -}}</a> | |||
{{- end -}} | |||
{{- else -}} | |||
<a href="{{- $c_prefix | safeURL -}}BROWSE_LIBRARY.html#/book/{{- $destination -}}"{{- with .Title}} title="{{- . -}}"{{- end -}}>{{- $text_link -}}⦚<span class="text-xs font-bold p-1 bg-AuChico text-CoconutCream">bib:{{- $destination -}} not found</span></a> | |||
{{- end -}} | |||
{{- else if in ($_.Get "triads") (index (split .Destination ":") 0) -}} | |||
{{- if $.Page.Site.GetPage (printf "/%s" (replace .Destination ":" "/")) -}} | |||
{{- $session := $.Page.Site.GetPage (printf "/%s" (replace .Destination ":" "/")) -}} | |||
{{ .Page.Scratch.Add "links" (slice $session) }} | |||
{{- if not $text_link -}} | |||
<a class="triadlink" repoid="{{- $session.File.UniqueID -}}" printhref="#ph-{{- $session.File.UniqueID -}}" href="{{- $session.RelPermalink -}}{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}"{{- with $session.Title}} title="{{- $session.Title -}}"{{- end -}}><span class="sup">{{- index (split .Destination ":") 0 -}}⁄</span>{{- $session.Title -}}</a> | |||
{{- else -}} | |||
<a class="triadlink" repoid="{{- $session.File.UniqueID -}}" printhref="#ph-{{- $session.File.UniqueID -}}" href="{{- $session.RelPermalink -}}{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}"{{- with .Title}} title="{{- . -}}"{{- end -}}><span class="sup">{{- index (split .Destination ":") 0 -}}⁄</span>{{- $text_link -}}</a> | |||
{{- end -}} | |||
{{- else -}} | |||
<a href="{{- .Destination -}}/{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}">{{- $text_link -}}⦚<span>{{- .Destination -}} not found</span></a> | |||
{{- end -}} | |||
{{- else if strings.HasPrefix .Destination "audio:" -}} | |||
{{- $a_destination := (substr .Destination 6) -}} | |||
{{- if findRE "^.*static" $a_destination -}} | |||
<span class="soundcite" data-url="{{- (replaceRE "^.*static" "" $a_destination ) | safeURL -}}">{{ .Text }}</span> | |||
{{- else -}} | |||
<span class="soundcite" data-url="{{- $a_destination | safeURL -}}">{{ .Text }}</span> | |||
{{- end -}} | |||
{{- else if findRE "^.*static" .Destination -}} | |||
<img src="{{- (replaceRE "^.*static" "" .Destination ) | safeURL -}}" alt="{{- .Text -}}" {{- with .Title}} title="{{- . -}}"{{- end -}} /> | |||
{{- else -}} | |||
<img src="{{- .Destination | safeURL -}}" alt="{{- .Text -}}" {{- with .Title}} title="{{- . -}}"{{- end -}} /> | |||
{{- end -}} |
@@ -0,0 +1 @@ | |||
{{- .Page.Scratch.Add "urls" (slice .Destination) -}}{{- $t := .Text -}}{{- $sup := "" -}}{{- if and (strings.HasPrefix .Destination "{") (.Destination | strings.Count "}") -}}{{- range first 1 (split .Destination "}") -}}{{- range $frmt := (split (substr . 1) ",") -}}{{- if eq $frmt "sc" -}}<span class="smallcaps">{{- $t -}}</span>{{- end -}}{{- end -}}{{- end -}}{{- else }}{{- if strings.HasPrefix .Destination "http" -}}{{- $sup = "www" -}}{{- end -}}{{- if strings.HasPrefix .Destination "#" -}}{{- $sup = "§" -}}{{- end -}}<a href="{{ .Destination | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}{{ if strings.HasPrefix .Destination "http" }} target="_blank" rel="noopener"{{ else if strings.HasPrefix .Destination "#"}}class="anchorz"{{ end }}><span class="sup" style="font-size:0.7em">{{- $sup -}}⁄</span><i>{{ .Text | safeHTML }}</i></a>{{- end -}} |
@@ -0,0 +1,13 @@ | |||
<!DOCTYPE html> | |||
<html lang="{{ with .Site.LanguageCode }}{{ . }}{{ else }}en-us{{ end }}"> | |||
<head> | |||
{{- partialCached "head.html" . -}} | |||
<title>{{- .Title }} - {{ .Site.Title -}}</title> | |||
{{- partialCached "sandpointjs.html" . .RelPermalink -}} | |||
</head> | |||
<body> | |||
{{- block "singlebody" . }}{{- end }} | |||
{{- partialCached "footer.html" . -}} | |||
</body> | |||
</html> |
@@ -0,0 +1,38 @@ | |||
{{ define "singlebody" }} | |||
{{ $currentNode := . }} | |||
{{ $currentDir := "" }} | |||
{{ with .File }} | |||
{{ $currentDir = .Dir }} | |||
{{ end }} | |||
{{ $currentFile := (printf "/%s" .File) }} | |||
{{ $editFile := $.Site.GetPage "/edit" }} | |||
{{ $editFilePath := $editFile.RelPermalink }} | |||
<div class="coretitle"><span class="supt">Sitemap⁄{{ substr $.Site.Title 0 1 }}</span>{{ substr $.Site.Title 1 }} {{with $currentDir}}({{ . }}){{ end }}</div> | |||
{{ $s := partialCached "scratch.html" . }} | |||
{{ $noTriad := (slice) }} | |||
{{ range $p := .Site.RegularPages }} | |||
{{ $scratch := $s.Get (printf "/%s" $p.File) }} | |||
{{ if eq $scratch.depth "core" }} | |||
<div class="sitemap" ><div class="{{ with $p.File }}{{ if eq $currentDir .Dir }}highline{{ end }}{{ end }}"><a href="{{- $p.RelPermalink -}}{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}"{{- with $p.Title}} title="{{- $p.Title -}}"{{- end -}}><span class="sup">{{- substr $p.File.Dir 0 -1 -}}⁄</span>{{- $p.Title -}}</a><a class="svedit" href="{{- printf "%sindex.html#%s" $editFilePath $p.File.UniqueID -}}">[EDIT]</a></div> | |||
{{ range $coreKid := $scratch.has_children }} | |||
<div class="sitemap"><a href="{{- $coreKid.RelPermalink -}}{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}"{{- with $coreKid.Title}} title="{{- $coreKid.Title -}}"{{- end -}}><div class="{{ with $coreKid.File }}{{ if eq $currentDir .Dir }}highline{{ end }}{{ end }}"><span class="sup">{{- substr $coreKid.File.Dir 0 -1 -}}⁄</span>{{- $coreKid.Title -}}</a><a class="svedit" href="{{- printf "%sindex.html#%s" $editFilePath $coreKid.File.UniqueID -}}">[EDIT]</a></div> | |||
{{ $scratchCKid := $s.Get (printf "/%s" $coreKid.File) }} | |||
{{ range $mantleKid := $scratchCKid.has_children }} | |||
<div class="sitemap"><div class="{{ with $mantleKid.File }}{{ if eq $currentDir .Dir }} highline{{ end }}{{ end }}"><a href="{{- $mantleKid.RelPermalink -}}{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}"{{- with $mantleKid.Title}} title="{{- $mantleKid.Title -}}"{{- end -}}><span class="sup">{{ with $mantleKid.File }}{{substr .Dir 0 -1 -}}⁄{{ end }}</span>{{- $mantleKid.Title -}}</a><a class="svedit" href="{{- printf "%sindex.html#%s" $editFilePath $mantleKid.File.UniqueID -}}">[EDIT]</a></div></div> | |||
{{ end }} | |||
</div> | |||
{{ end }} | |||
{{ else if not (in (slice "core" "mantle" "crust") $scratch.depth)}} | |||
{{ $noTriad = $noTriad | append $p }} | |||
{{ else }} | |||
</div> | |||
{{ end }} | |||
{{ end }} | |||
{{ range $noTriad }} | |||
<div class="sitemap {{ with .File }}{{ if eq $currentDir .Dir }} highline{{ end }}{{ end }}"><a href="{{- .RelPermalink -}}{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}"{{- with .Title }} title="{{- . -}}"{{- end -}}><span class="sup">{{- substr .File.Dir 0 -1 -}}⁄</span>{{- .Title -}}</a>{{ if not (or (hasPrefix .File.Dir "edit") (hasPrefix .File.Dir "print")) }}<a class="svedit" href="{{- printf "%sindex.html#%s" $editFilePath .File.UniqueID -}}">[EDIT]</a>{{ end }}</div> | |||
{{ end }} | |||
{{ end }} |
@@ -0,0 +1,6 @@ | |||
{{- define "singlebody" -}} | |||
{{- partialCached "header.html" . .RelPermalink -}} | |||
<h1>{{ .Title }}</h1> | |||
{{- partialCached "singlebody.html" . .RelPermalink -}} | |||
<div class="content">{{ .Content }}</div> | |||
{{- end -}} |
@@ -0,0 +1,14 @@ | |||
<!DOCTYPE html> | |||
<html lang="{{ with .Site.LanguageCode }}{{ . }}{{ else }}en-us{{ end }}"> | |||
<head> | |||
<meta charset='utf-8'> | |||
<meta name='viewport' content='width=device-width,initial-scale=1'> | |||
<link rel='stylesheet' href='build/global.css'> | |||
<!-- <link rel='stylesheet' href='build/bundle.css'> --> | |||
<script defer src='../metadata/index.js'></script> | |||
<script defer src='build/bundle.js'></script> | |||
<title>edit⁄{{- .Site.Title -}}</title> | |||
</head> | |||
<body>{{- block "main" . -}}{{- end -}}</body> | |||
</html> |
@@ -0,0 +1,2 @@ | |||
{{ define "main" }} | |||
{{ end }} |
@@ -0,0 +1 @@ | |||
{{- define "main" -}}{{- end -}} |
@@ -0,0 +1 @@ | |||
{{ block "main" . }}{{ end }} |
@@ -0,0 +1,20 @@ | |||
{{- define "main" -}} | |||
{{ $sections := (slice) }} | |||
{{ $tiers := (slice) }} | |||
{{ range $.Site.Sections }} | |||
{{ with .File }} | |||
{{ $sections = $sections | append (strings.TrimSuffix "/" .Dir) }} | |||
{{ end }} | |||
{{ end }} | |||
{{ $metasp := (dict) }} | |||
{{ range $k, $v := $.Site.Data.sandpointsnamegraph }} | |||
{{ if in $sections $k }} | |||
{{ $tiers = (slice) }} | |||
{{ range where $.Site.RegularPages "Section" $k }} | |||
{{ $tiers = $tiers | append .File.LogicalName }} | |||
{{ end }} | |||
{{ $metasp = merge $metasp (dict $v (merge (dict "singular" $k) (dict "tiers" $tiers))) }} | |||
{{ end }} | |||
{{ end }} | |||
{{ printf "METASP=%s;" (jsonify $metasp) }} | |||
{{ end }} |
@@ -0,0 +1,8 @@ | |||
<footer> | |||
<a class="logolink" title="built by Sandpoints" href="https://sandpoints.org"> | |||
<div class="sandpointlogo"> | |||
<span class="sandpointF">ß</span> | |||
<span class="sandpointN">•</span> | |||
<span class="sandpointC">:</span> | |||
</div></a> | |||
</footer> |
@@ -0,0 +1,37 @@ | |||
<meta charset="utf-8" /> | |||
<meta name="viewport" content="width=device-width, initial-scale=1"> | |||
<meta name="msapplication-TileColor" content="#da532c"> | |||
<meta name="theme-color" content="#ffffff"> | |||
{{ if .Description }} | |||
<meta name="description" content="{{ .Description }}" /> | |||
{{ end }} | |||
{{ if .Keywords }} | |||
<meta name="keywords" content="{{ delimit .Keywords "," }}" /> | |||
{{ end }} | |||
{{ if .Params.Author }} | |||
<meta name="author" content="{{ .Params.Author }}" /> | |||
{{ end }} | |||
{{ template "_internal/opengraph.html" . }} | |||
{{ template "_internal/twitter_cards.html" . }} | |||
{{ hugo.Generator }} | |||
<link rel="apple-touch-icon" sizes="76x76" href="/apple-touch-icon.png"> | |||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> | |||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> | |||
<link rel="manifest" href="/site.webmanifest"> | |||
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#996561"> | |||
{{ if eq hugo.Environment "dev" }} | |||
{{ $style := resources.Get "css/site.css" | resources.PostCSS (dict "config" "assets/css/postcss.config.js") | minify }} | |||
<link rel="stylesheet" href="{{ $style.RelPermalink }}" /> | |||
{{ $style := resources.Get "css/player.css" | resources.PostCSS (dict "config" "assets/css/postcss.config.js") | minify }} | |||
<link rel="stylesheet" href="{{ $style.RelPermalink }}" /> | |||
{{ else }} | |||
<link rel="stylesheet" href="/css/site.min.css" /> | |||
<link rel="stylesheet" href="/css/player.min.css" /> | |||
{{ end }} |
@@ -0,0 +1,101 @@ | |||
{{ $s := partialCached "scratch.html" . }} | |||
{{ $currentDir := "" }} | |||
{{ with .File }} | |||
{{ $currentDir = .Dir }} | |||
{{ end }} | |||
{{ $currentFile := (printf "/%s" .File) }} | |||
{{ $scratch := $s.Get $currentFile }} | |||
{{ $is_in_ := newScratch }} | |||
{{ with eq $scratch.depth "crust" }} | |||
{{ range $scratch.is_in }} | |||
{{ range $k,$v := $s.Get (printf "/%s" .File) }} | |||
{{ if eq $k "is_in" }} | |||
{{ range $v }} | |||
{{ $is_in_.Set (printf "/%s" .File) (printf "/%s" .File) }} | |||
{{ end }} | |||
{{ end }} | |||
{{ end }} | |||
{{ end }} | |||
{{ end }} | |||
{{ $is_in_is_in := (slice) }} | |||
{{ range $is_in_.Values }} | |||
{{ $is_in_is_in = $is_in_is_in | append ($.GetPage .) }} | |||
{{ end }} | |||
{{ if eq hugo.Environment "gitea" }} | |||
<div class="headiter" id="preview"> | |||
<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}/_edit/master/content/{{ .File }}">EDIT_THIS</a> | |||
{{ with $scratch.core }}<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}/_new/master/content/{{ index . 0 }}/">ADD_{{ index . 0 | upper }}</a>{{ end }} | |||
{{ with $scratch.mantle }}<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}/_new/master/content/{{ index . 0 }}/">ADD_{{ index . 0 | upper }}</a>{{ end }} | |||
{{ with $scratch.crust }}<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}/_new/master/content/{{ index . 0 }}/">ADD_{{ index . 0 | upper }}</a>{{ end }} | |||
{{ if not $scratch.core }}<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}/_new/master/content/{{ $currentDir }}">ADD_{{ substr $currentDir 0 -1 | upper }}</a>{{ end }} | |||
<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}/_edit/master/PUBLISH.trigger.md">PUBLISH</a> | |||
<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}"> ? </a> | |||
</div> | |||
{{ end }} | |||
<div class="header"> | |||
<a title="{{ $.Site.Home.Title }}'s Bibliotheke" href="/library/BROWSE_LIBRARY.html" class="bibliotheke" target="_blank"> | |||
<img src="/images/bibliotheke.svg" /> | |||
</a> | |||
<div class="breadcrumbs"> | |||
{{ if eq $scratch.depth "mantle" }} | |||
{{ with gt (len $scratch.is_in) 1 }} | |||
<div class="ddmenu"> | |||
<input id="toggly0" type="checkbox"> | |||
<label for="toggly0" tabindex="1"><span class="sup">cf. </span><a href="{{ with (index $scratch.is_in 0) }}{{ .RelPermalink }}{{ end }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ with index $scratch.is_in 0 }}<i>{{ .Title }}</i></a> {{ end }}</label> | |||
<div class="hiddendiv"> | |||
<ul class="mt-4"> | |||
{{ range after 1 $scratch.is_in }} | |||
<li><a href="{{ .RelPermalink }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}"><i>{{ .Title }}</i></a></li> | |||
{{ end }} | |||
</ul> | |||
</div> | |||
</div> | |||
{{ else }} | |||
<a href="{{ with (index $scratch.is_in 0) }}{{ .RelPermalink }}{{ end }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}"><span class="supt">{{ with (index $scratch.is_in 0) }}{{ substr .Title 0 1 }}</span><i>{{ substr .Title 1 }}</i></a>{{ end }} | |||
{{ end }} | |||
<span class="mantlebar"><i> » <a href="{{ .RelPermalink }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ .Title }}</a></i></span> | |||
{{ end }} | |||
{{ if eq $scratch.depth "crust" }} | |||
{{ with gt (len $is_in_is_in) 1 }} | |||
<div class="ddmenu"> | |||
<input id="toggly1" type="checkbox"> | |||
<label for="toggly1" tabindex="1"><span class="sup">cf. </span><a href="{{ with (index $is_in_is_in 0) }}{{ .RelPermalink }}{{ end }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ with (index $is_in_is_in 0) }}<i>{{ .Title }}</i></a> {{ end }}</label> | |||
<div class="hiddendiv"> | |||
<ul class="mt-4"> | |||
{{ range after 1 $is_in_is_in }} | |||
<li><a href="{{ .RelPermalink }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}"><i>{{ .Title }}</i></a></li> | |||
{{ end }} | |||
</ul> | |||
</div> | |||
</div> | |||
{{ else }} | |||
{{ $home := index $is_in_is_in 0 }} | |||
<a href="{{ $home.RelPermalink }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}"><span class="supt">{{ substr $home.Title 0 1 }}</span><i>{{ substr $home.Title 1 }}</i></a> | |||
{{ end }} | |||
{{ with gt (len $scratch.is_in) 1 }} | |||
» | |||
<div class="ddmenu"> | |||
<input id="toggly" type="checkbox"> | |||
<label for="toggly" tabindex="1"><span class="sup">cf. </span><a href="{{ with (index $scratch.is_in 0) }}{{ .RelPermalink }}{{ end }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ with (index $scratch.is_in 0) }}<i>{{ .Title }}</i></a> {{ end }}</label> | |||
<div class="hiddendiv"> | |||
<ul class="mt-4"> | |||
{{ range after 1 $scratch.is_in }} | |||
<li><a href="{{ .RelPermalink }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}"><i>{{ .Title }}</i></a></li> | |||
{{ end }} | |||
</ul> | |||
</div> | |||
</div> | |||
{{ else }}» <a href="{{ with (index $scratch.is_in 0) }}{{ .RelPermalink }}{{ end }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ with (index $scratch.is_in 0) }}<i>{{ .Title }}</i></a>{{ end }} | |||
{{ end }} | |||
<span class="mantlebar"><i> » <a href="{{ .RelPermalink }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ .Title }}</a></i></span> | |||
{{ end }} | |||
</div> | |||
</div> |
@@ -0,0 +1,5 @@ | |||
<link href="/css/paged_interface.css" rel="stylesheet" type="text/css"> | |||
<link href="/css/dyn.css" rel="stylesheet" type="text/css"> | |||
<link href="/css/print.css" rel="stylesheet" type="text/css"> | |||
<script src="/js/paged.polyfill.js"></script> | |||
<script src="/js/pagedjsCustomizations.js"></script> |
@@ -0,0 +1,88 @@ | |||
{{ $s := partialCached "scratch.html" . }} | |||
{{ $currentNode := . }} | |||
{{ $currentDir := "" }} | |||
{{ with .File }} | |||
{{ $currentDir = .Dir }} | |||
{{ end }} | |||
{{ $currentFile := (printf "/%s" .File) }} | |||
{{ $scratch := $s.Get $currentFile }} | |||
<div id="ph-{{ .File.UniqueID }}" class="{{ $scratch.depth | default "crust" }}title"><span class="supt">{{ substr $currentDir 0 -1 }}⁄</span>{{ .Title }}</div> | |||
<div class="grid"> | |||
<div class="leftcolumn"> | |||
{{ if ne (trim .Page.TableOfContents "\n") "<nav id=\"TableOfContents\"></nav>" }} | |||
{{ .Page.TableOfContents }} | |||
{{ end }} | |||
</div> | |||
<div class="rightcolumn"> | |||
{{ $closeDivs := false }} | |||
{{ $sandnamePlural := (slice) }} | |||
{{ range $k, $v := $.Site.Data.sandpointsnamegraph }} | |||
{{ $sandnamePlural = $sandnamePlural | append $v }} | |||
{{ end }} | |||
{{ $paramsKeys := (slice) }} | |||
{{ range $k, $v := $currentNode.Params }} | |||
{{ $paramsKeys = $paramsKeys | append $k }} | |||
{{ end }} | |||
{{ $mentions := intersect $paramsKeys $sandnamePlural }} | |||
{{ range $mention := $mentions }} | |||
{{ range $k, $m := index $currentNode.Params $mention }} | |||
{{ $mentionLink := printf "/%s/%s" (substr $mention 0 -1) $m }} | |||
{{- with $.GetPage $mentionLink -}} | |||
{{ with not $k }} | |||
{{ $closeDivs = true }} | |||
<div class="has hasauthors"> | |||
<div class="hassup">{{ with (index $currentNode.Params $mention) }}{{ if gt (len (index $currentNode.Params $mention)) 1 }}{{ $mention }}{{ else }}{{ substr $mention 0 -1 }}{{ end }}{{ end }}⁄</div> | |||
<div class="afterhas"> | |||
{{ end }} | |||
<div class="crust"> | |||
<a href="#ph-{{ .File.UniqueID }}">{{ .Title }}</a> | |||
</div> | |||
{{ end }} | |||
{{ end }} | |||
{{ end }} | |||
{{- with $closeDivs -}}</div></div>{{ end }} | |||
{{ if and (not (eq $scratch.depth "crust")) $scratch.has_children }} | |||
<div class="has hashas"> | |||
{{ with $scratch.has }} | |||
<div class="hassup">has {{ $scratch.has }}⁄</div> | |||
{{ end }} | |||
<div class="afterhas"> | |||
{{ range $scratch.has_children }} | |||
{{ $authors := "" }} | |||
{{ range $k, $authorLink := .Params.authors }} | |||
{{ $authorPage := $.GetPage (printf "/author/%s" $authorLink) }} | |||
{{ $prefix := ", " }} | |||
{{ with not $k }} | |||
{{ $prefix = "" }} | |||
{{ end }} | |||
{{ $authors = printf "%s%s" $prefix $authorPage.Title }} | |||
{{ end }} | |||
<div class="{{ $scratch.child_depth }} crustoc"> | |||
<a class="toc" href="#ph-{{ .File.UniqueID }}"><span><span class="back">{{ .Title }} {{with $authors}}({{ $authors }}){{ end }}</span></span></a> | |||
</div> | |||
{{ end }} | |||
</div></div> | |||
{{ end }} | |||
{{ if eq $scratch.depth "crust" }} | |||
<div class="has hasin"> | |||
<div class="hassup">in {{ index $scratch.in 1 }}⁄</div> | |||
<div class="afterhas"> | |||
{{ range $scratch.is_in }} | |||
<div class="{{ substr $currentDir 0 -1 }}"> | |||
<a href="{{ .RelPermalink }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ .Title }}</a> | |||
</div> | |||
{{ end }} | |||
</div></div> | |||
{{ end }} | |||
</div> | |||
</div> | |||
{{ with .Page.Params.abstract }}<div class="abstract"><span class="supt">abstract⁄</span>{{ . | $.Page.RenderString | htmlUnescape | safeHTML }}</div>{{ end }} | |||
{{- $vld := false -}}{{- range $k, $v := .Page.Params.keywords -}}{{- if eq $k 0 -}}{{- $vld = true -}}<div class="keywords"><span class="sup">keywords⁄</span>{{- $v -}}{{- else -}}, {{- $v -}}{{- end -}}{{- end -}}{{- with $vld -}}</div>{{- end -}} |
@@ -0,0 +1,10 @@ | |||
{{ $parentName := . }} | |||
{{ range (readDir .) }} | |||
{{ $currentName := printf "%s/%s" $parentName .Name }} | |||
{{ if .IsDir }} | |||
<p>_Dir: {{ $currentName }}</p> | |||
{{ partial "readdir.html" $currentName }} | |||
{{ else }} | |||
<p>_File: {{ $currentName }} | |||
{{ end }} | |||
{{ end }} |
@@ -0,0 +1,4 @@ | |||
<script type="text/javascript">var relPathDepth = {{- .RelPermalink | strings.Count "/" -}};var sandpointsPageId = "{{- with .File -}}{{- .UniqueID -}}{{- end -}}";</script> | |||
{{ $sjsopts := dict "targetPath" "js/sandpoints.js" "minify" "true"}} | |||
{{ $sjs := resources.Get "js/sandpoints.js" | js.Build $sjsopts }} | |||
<script defer src='{{ $sjs.RelPermalink }}' type="application/javascript"></script> |
@@ -0,0 +1,202 @@ | |||
{{ $currentNode := . }} | |||
{{ $_ := newScratch }} | |||
{{ $debug := (slice) }} | |||
{{ $sandnameSingular := (slice) }} | |||
{{ $sandnamePlural := (slice) }} | |||
{{ range $k, $v := $.Site.Data.sandpointsnamegraph }} | |||
{{ $sandnameSingular = $sandnameSingular | append $k }} | |||
{{ $sandnamePlural = $sandnamePlural | append $v }} | |||
{{ end }} | |||
{{ $pPath := "" }} | |||
{{ range $p := .Site.RegularPages }} | |||
{{ $pPath = printf "/%s" $p.File }} | |||
{{ $pageDir := "" }} | |||
{{ with $p.File }} | |||
{{ $pageDir = (substr .Dir 0 -1)}} | |||
{{ end }} | |||
{{ $content := $p.Content }} | |||
{{ with $links := $p.Scratch.Get "links" }} | |||
{{ range $link := $links }} | |||
{{ $linkPath := printf "/%s" $link.File}} | |||
{{ with ($_.Get $linkPath) }} | |||
{{ $_.SetInMap $linkPath "backlinks" (uniq ((index ($_.Get $linkPath) "backlinks") | append $p)) }} | |||
{{ else }} | |||
{{ $_.SetInMap $linkPath "backlinks" (slice $p) }} | |||
{{ end }} | |||
{{ end }} | |||
{{ end }} | |||
{{ $paramsKeys := (slice) }} | |||
{{ range $k, $v := $p.Params }} | |||
{{ $paramsKeys = $paramsKeys | append $k }} | |||
{{ end }} | |||
{{ $mentions := intersect $paramsKeys $sandnamePlural }} | |||
{{ range $mention := $mentions }} | |||
{{ range $m := index $p.Params $mention }} | |||
{{ $mentionLink := printf "/%s/%s" (substr $mention 0 -1) $m }} | |||
{{ with ($_.Get $mentionLink) }} | |||
{{ $p.Scratch.Add "links" (uniq (($p.Scratch.Get "links")| append ($.GetPage $mentionLink))) }} | |||
{{ $_.SetInMap $mentionLink "backlinks" (uniq ((index ($_.Get $mentionLink) "backlinks") | append $p)) }} | |||
{{ else }} | |||
{{ $p.Scratch.Add "links" (uniq (($p.Scratch.Get "links")| append ($.GetPage $mentionLink))) }} | |||
{{ $_.SetInMap $mentionLink "backlinks" (slice $p) }} | |||
{{ end }} | |||
{{ end }} | |||
{{ end }} | |||
{{ $gp := $.GetPage $pPath }} | |||
{{ $gpPath := printf "/%s" $gp.File }} | |||
{{ range $k, $v := $gp.Params }} | |||
{{ with in $k "has_" }} | |||
{{ $s := index (split $k "has_") 1 }} | |||
{{ range $sin,$plur := $currentNode.Site.Data.sandpointsnamegraph }} | |||
{{ if eq $s $plur }} | |||
{{ range index $gp.Params $k }} | |||
{{ $cp := $.GetPage (printf "/%s/%s" $sin .) }} | |||
{{ $cpPath := printf "/%s" $cp.File }} | |||
{{ range $kcp, $vcp := $cp.Params }} | |||
{{ with in $kcp "has_" }} | |||
{{ $scp := index (split $kcp "has_") 1 }} | |||
{{ range $sincp,$plurcp := $currentNode.Site.Data.sandpointsnamegraph }} | |||
{{ if eq $scp $plurcp }} | |||
{{ $_.SetInMap $gpPath "depth" "core" }} | |||
{{ $_.SetInMap $gpPath "child_depth" "mantle" }} | |||
{{ $_.SetInMap $gpPath "has" $s }} | |||
{{ with $gp.File }} | |||
{{ $core := substr .Dir 0 -1 }} | |||
{{ with index ($_.Get $gpPath) "core" }} | |||
{{ $_.SetInMap $gpPath "core" (uniq ((index ($_.Get $gpPath) "core") | append $core)) }} | |||
{{ else }} | |||
{{ $_.SetInMap $gpPath "core" (slice $core) }} | |||
{{ end }} | |||
{{ $cor := $_.Get $cpPath }} | |||
{{ with $cor.core }} | |||
{{ $_.SetInMap $cpPath "core" (uniq ((index ($_.Get $cpPath) "core") | append $core)) }} | |||
{{ else }} | |||
{{ $_.SetInMap $cpPath "core" (slice $core) }} | |||
{{ end }} | |||
{{ end }} | |||
{{ with $cp.File }} | |||
{{ $mantle := substr .Dir 0 -1 }} | |||
{{ with index ($_.Get $gpPath) "mantle" }} | |||
{{ $_.SetInMap $gpPath "mantle" (uniq ((index ($_.Get $gpPath) "mantle") | append $mantle)) }} | |||
{{ else }} | |||
{{ $_.SetInMap $gpPath "mantle" (slice $mantle) }} | |||
{{ end }} | |||
{{ with index ($_.Get $cpPath) "mantle" }} | |||
{{ $_.SetInMap $cpPath "mantle" (uniq ((index ($_.Get $cpPath) "mantle") | append $mantle)) }} | |||
{{ else }} | |||
{{ $_.SetInMap $cpPath "mantle" (slice $mantle) }} | |||
{{ end }} | |||
{{ end }} | |||
{{ with $_.Get $gpPath }} | |||
{{ if .has_children }} | |||
{{ $hasChildren := index . "has_children" | append $cp }} | |||
{{ $_.SetInMap $gpPath "has_children" (uniq $hasChildren) }} | |||
{{ else }} | |||
{{ $_.SetInMap $gpPath "has_children" (slice $cp) }} | |||
{{ end }} | |||
{{ end }} | |||
{{ $_.SetInMap $cpPath "depth" "mantle" }} | |||
{{ $_.SetInMap $cpPath "child_depth" "crust" }} | |||
{{ $_.SetInMap $cpPath "plural" $plur }} | |||
{{ $_.SetInMap $cpPath "has" $scp }} | |||
{{ if isset $cp.Params $kcp }} | |||
{{ $_.SetInMap $cpPath "has_children" (slice) }} | |||
{{ with index ($_.Get $cpPath) "is_in" }} | |||
{{ $isincore := index ($_.Get $cpPath) "is_in" | append $gp}} | |||
{{ $_.SetInMap $cpPath "is_in" (uniq $isincore) }} | |||
{{ else }} | |||
{{ $_.SetInMap $cpPath "is_in" (slice $gp) }} | |||
{{ end }} | |||
{{ end }} | |||
{{ range index $cp.Params $kcp }} | |||
{{ $gcp := $.GetPage (printf "/%s/%s" $sincp .) }} | |||
{{ $gcpPath := printf "/%s" $gcp.File }} | |||
{{ with $_.Get $cpPath }} | |||
{{ if .has_children }} | |||
{{ $hasGChildren := index . "has_children" | append $gcp }} | |||
{{ $_.SetInMap $cpPath "has_children" (uniq $hasGChildren) }} | |||
{{ else }} | |||
{{ $_.SetInMap $cpPath "has_children" (slice $gcp) }} | |||
{{ end }} | |||
{{ end }} | |||
{{ $_.SetInMap $gcpPath "depth" "crust" }} | |||
{{ $_.SetInMap $gcpPath "plural" $plurcp }} | |||
{{ $_.SetInMap $gcpPath "in" (slice $sin $plur) }} | |||
{{ with $gp.File }} | |||
{{ $core := substr .Dir 0 -1 }} | |||
{{ with index ($_.Get $gcpPath) "core" }} | |||
{{ $_.SetInMap $gcpPath "core" (uniq ((index ($_.Get $gcpPath) "core") | append $core)) }} | |||
{{ else }} | |||
{{ $_.SetInMap $gcpPath "core" (slice $core) }} | |||
{{ end }} | |||
{{ end }} | |||
{{ with $cp.File }} | |||
{{ $mantle := substr .Dir 0 -1 }} | |||
{{ with index ($_.Get $gcpPath) "mantle" }} | |||
{{ $_.SetInMap $gcpPath "mantle" (uniq ((index ($_.Get $gcpPath) "mantle") | append $mantle)) }} | |||
{{ else }} | |||
{{ $_.SetInMap $gcpPath "mantle" (slice $mantle) }} | |||
{{ end }} | |||
{{ end }} | |||
{{ with $gcp.File }} | |||
{{ $crust := substr .Dir 0 -1 }} | |||
{{ with index ($_.Get $gpPath) "crust" }} | |||
{{ $_.SetInMap $gpPath "crust" (uniq ((index ($_.Get $gpPath) "crust") | append $crust)) }} | |||
{{ else }} | |||
{{ $_.SetInMap $gpPath "crust" (slice $crust) }} | |||
{{ end }} | |||
{{ with index ($_.Get $cpPath) "crust" }} | |||
{{ $_.SetInMap $cpPath "crust" (uniq ((index ($_.Get $cpPath) "crust") | append $crust)) }} | |||
{{ else }} | |||
{{ $_.SetInMap $cpPath "crust" (slice $crust) }} | |||
{{ end }} | |||
{{ with index ($_.Get $gcpPath) "crust" }} | |||
{{ $_.SetInMap $gcpPath "crust" (uniq ((index ($_.Get $gcpPath) "crust") | append $crust)) }} | |||
{{ else }} | |||
{{ $_.SetInMap $gcpPath "crust" (slice $crust) }} | |||
{{ end }} | |||
{{ end }} | |||
{{ with $_.Get $gcpPath }} | |||
{{ if .is_in }} | |||
{{ $isinmantle := index . "is_in" | append $cp}} | |||
{{ $_.SetInMap $gcpPath "is_in" (uniq $isinmantle) }} | |||
{{ else }} | |||
{{ $_.SetInMap $gcpPath "is_in" (slice $cp) }} | |||
{{ end }} | |||
{{ end }} | |||
{{ end }} | |||
{{ end }} | |||
{{ end }} | |||
{{ end }} | |||
{{ end }} | |||
{{ end }} | |||
{{ end }} | |||
{{ end }} | |||
{{ end }} | |||
{{ end }} | |||
{{ $_.SetInMap $pPath "debug" (printf "%#v" $debug) }} | |||
{{ end }} | |||
{{ return $_ }} |
@@ -0,0 +1,98 @@ | |||
{{ $s := partialCached "scratch.html" . }} | |||
{{ $currentNode := . }} | |||
{{ $currentDir := "" }} | |||
{{ with .File }} | |||
{{ $currentDir = .Dir }} | |||
{{ end }} | |||
{{ $currentFile := (printf "/%s" .File) }} | |||
{{ $scratch := $s.Get $currentFile }} | |||
{{ $sandnamePlural := (slice) }} | |||
<div class="{{ $scratch.depth | default "crust" }}title"><span class="supt">{{ substr $currentDir 0 -1 }}⁄{{ substr .Title 0 1 }}</span>{{ substr .Title 1 }}</div></div> | |||
<div class="grid"> | |||
<div class="leftcolumn"> | |||
{{ if ne (trim .Page.TableOfContents "\n") "<nav id=\"TableOfContents\"></nav>" }} | |||
{{ .Page.TableOfContents }} | |||
{{ end }} | |||
</div> | |||
<div class="rightcolumn"> | |||
{{ $closeDivs := false }} | |||
{{ range $k, $v := $.Site.Data.sandpointsnamegraph }} | |||
{{ $sandnamePlural = $sandnamePlural | append $v }} | |||
{{ end }} | |||
{{ $paramsKeys := (slice) }} | |||
{{ range $k, $v := $currentNode.Params }} | |||
{{ $paramsKeys = $paramsKeys | append $k }} | |||
{{ end }} | |||
{{ $mentions := intersect $paramsKeys $sandnamePlural }} | |||
{{ range $mention := $mentions }} | |||
{{ range $k, $m := index $currentNode.Params $mention }} | |||
{{ $mentionLink := printf "/%s/%s" (substr $mention 0 -1) $m }} | |||
{{- with $.GetPage $mentionLink -}} | |||
{{- with not $k -}} | |||
{{ $closeDivs = true }} | |||
<div class="has hasauthors"> | |||
<div class="hassup">{{ with (index $currentNode.Params $mention) }}{{ if gt (len (index $currentNode.Params $mention)) 1 }}{{ $mention }}{{ else }}{{ substr $mention 0 -1 }}{{ end }}{{ end }}⁄</div> | |||
<div class="afterhas"> | |||
{{- end -}} | |||
<div class="crust"> | |||
<a href="{{ .RelPermalink }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ .Title }}</a> | |||
</div> | |||
{{- end -}} | |||
{{ end }} | |||
{{ end }} | |||
{{- with $closeDivs -}}</div></div>{{ end }} | |||
{{ if in .Page.Site.Params.sandpointsMentionedIn (substr $currentDir 0 -1) }} | |||
<div class="has hasmentionedin"> | |||
{{ with $scratch.backlinks }} | |||
<div class="hassup">mentioned in⁄</div> | |||
{{ end }} | |||
<div class="afterhas"> | |||
{{ range $scratch.backlinks }} | |||
<div class="{{ $scratch.child_depth }}"> | |||
<a href="{{ .RelPermalink }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ .Title }}</a> | |||
</div> | |||
{{ end }} | |||
</div></div> | |||
{{ end }} | |||
{{ if and (not (eq $scratch.depth "crust")) $scratch.has_children }} | |||
<div class="has hashas"> | |||
{{ with $scratch.has }} | |||
<div class="hassup">has {{ $scratch.has }}⁄</div> | |||
{{ end }} | |||
<div class="afterhas"> | |||
{{ range $scratch.has_children }} | |||
<div class="{{ $scratch.child_depth }}"> | |||
<a href="{{ .RelPermalink }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ .Title }}</a> | |||
</div> | |||
{{ end }} | |||
</div></div> | |||
{{ end }} | |||
{{ if eq $scratch.depth "crust" }} | |||
<div class="has hasin"> | |||
<div class="hassup">in {{ index $scratch.in 1 }}⁄</div> | |||
<div class="afterhas"> | |||
{{ range $scratch.is_in }} | |||
<div class="{{ substr $currentDir 0 -1 }}"> | |||
<a href="{{ .RelPermalink }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ .Title }}</a> | |||
</div> | |||
{{ end }} | |||
</div></div> | |||
{{ end }} | |||
</div> | |||
</div> | |||
{{ with .Page.Params.abstract }}<div class="abstract"><span class="supt">abstract⁄</span>{{ . | $.Page.RenderString | htmlUnescape | safeHTML }}</div>{{ end }} | |||
{{- $vld := false -}}{{- range $k, $v := .Page.Params.keywords -}}{{- if eq $k 0 -}}{{- $vld = true -}}<div class="keywords"><span class="sup">keywords⁄</span>{{- $v -}}{{- else -}}, {{- $v -}}{{- end -}}{{- end -}}{{- with $vld -}}</div>{{- end -}} | |||
{{ $var := printf "repo={\"frontmatter\": %s, \"content\": %s, \"path\": \"%s\", \"relpermalink\": \"%s\" }" (jsonify .Params) (jsonify .RawContent) .File.Path .RelPermalink | resources.FromString (printf "js/repo/%s.js" .File.UniqueID) }} | |||
{{ $dummy := $var.Permalink }} |
@@ -0,0 +1,11 @@ | |||
<!DOCTYPE html> | |||
<html lang="{{ with .Site.LanguageCode }}{{ . }}{{- else -}}en-us{{- end -}}"> | |||
<head> | |||
{{- partialCached "head.html" . -}} | |||
{{- partial "pagedjs.html" . -}} | |||
</head> | |||
<body> | |||
{{- block "singlebody" . -}}{{- end -}} | |||
</body> | |||
</html> |
@@ -0,0 +1,153 @@ | |||
{{- define "singlebody" -}} | |||
{{ $cssTemplate := `.css-_rplc_-h2 { | |||
counter-reset: css-_rplc_-h3; | |||
} | |||
.css-_rplc_-h3 { | |||
counter-reset: css-_rplc_-h4; | |||
} | |||
.css-_rplc_-h4 { | |||
counter-reset: css-_rplc_-h5; | |||
} | |||
.css-_rplc_-h5 { | |||
counter-reset: css-_rplc_-h6; | |||
} | |||
.css-_rplc_-h2:before { | |||
color: rgba(0, 0, 0, 0.4); | |||
counter-increment: css-_rplc_-h2 1; | |||
content: counter(css-_rplc_-h2) ". "; | |||
} | |||
.css-_rplc_-h3:before { | |||
color: rgba(0, 0, 0, 0.4); | |||
counter-increment: css-_rplc_-h3 1; | |||
content: counter(css-_rplc_-h2) "." counter(css-_rplc_-h3) ". "; | |||
} | |||
.css-_rplc_-h4:before { | |||
color: rgba(0, 0, 0, 0.4); | |||
counter-increment: css-_rplc_-h4 1; | |||
content: counter(css-_rplc_-h2) "." counter(css-_rplc_-h3) "." counter(css-_rplc_-h4) ". "; | |||
} | |||
.css-_rplc_-h5:before { | |||
color: rgba(0, 0, 0, 0.4); | |||
counter-increment: css-_rplc_-h5 1; | |||
content: counter(css-_rplc_-h2) "." counter(css-_rplc_-h3) "." counter(css-_rplc_-h4) "." counter(css-_rplc_-h5) ". "; | |||
} | |||
.css-_rplc_-h6:before { | |||
color: rgba(0, 0, 0, 0.4); | |||
counter-increment: css-_rplc_-h6 1; | |||
content: counter(css-_rplc_-h2) "." counter(css-_rplc_-h3) "." counter(css-_rplc_-h4) "." counter(css-_rplc_-h5) "." | |||
counter(css-_rplc_-h6) ". "; | |||