Initial commit for Hugo site.
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
/* Styling for the copy button displayed in code blocks */
|
||||
.copy-success {
|
||||
background: none;
|
||||
border: none;
|
||||
|
||||
background-image: url("/icons/copy_success.svg");
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
right: 0px;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.copy-button {
|
||||
background: none;
|
||||
border: none;
|
||||
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
background-image: url("/icons/copy_content.svg");
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
right: 0px;
|
||||
z-index: 10;
|
||||
|
||||
padding: 10px;
|
||||
cursor: pointer;
|
||||
transition: opacity 0.3s ease;
|
||||
}
|
||||
|
||||
.copy-button:hover {
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.copy-button:active {
|
||||
transform: scale(0.95);
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.code-container {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Syntax highlighting styling*/
|
||||
.hll { background-color: #ffffcc }
|
||||
/*{ background: #f0f3f3; }*/
|
||||
.c { color: #999; } /* Comment */
|
||||
.err { color: #AA0000; background-color: #FFAAAA } /* Error */
|
||||
.k { color: #006699; } /* Keyword */
|
||||
.o { color: #555555 } /* Operator */
|
||||
.cm { color: #0099FF; font-style: italic } /* Comment.Multiline */
|
||||
.cp { color: #009999 } /* Comment.Preproc */
|
||||
.c1 { color: #999; } /* Comment.Single */
|
||||
.cs { color: #999; } /* Comment.Special */
|
||||
.gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */
|
||||
.ge { font-style: italic } /* Generic.Emph */
|
||||
.gr { color: #FF0000 } /* Generic.Error */
|
||||
.gh { color: #003300; } /* Generic.Heading */
|
||||
.gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */
|
||||
.go { color: #AAAAAA } /* Generic.Output */
|
||||
.gp { color: #000099; } /* Generic.Prompt */
|
||||
.gs { } /* Generic.Strong */
|
||||
.gu { color: #003300; } /* Generic.Subheading */
|
||||
.gt { color: #99CC66 } /* Generic.Traceback */
|
||||
.kc { color: #006699; } /* Keyword.Constant */
|
||||
.kd { color: #006699; } /* Keyword.Declaration */
|
||||
.kn { color: #006699; } /* Keyword.Namespace */
|
||||
.kp { color: #006699 } /* Keyword.Pseudo */
|
||||
.kr { color: #006699; } /* Keyword.Reserved */
|
||||
.kt { color: #007788; } /* Keyword.Type */
|
||||
.m { color: #FF6600 } /* Literal.Number */
|
||||
.s { color: #d44950 } /* Literal.String */
|
||||
.na { color: #4f9fcf } /* Name.Attribute */
|
||||
.nb { color: #336666 } /* Name.Builtin */
|
||||
.nc { color: #00AA88; } /* Name.Class */
|
||||
.no { color: #336600 } /* Name.Constant */
|
||||
.nd { color: #9999FF } /* Name.Decorator */
|
||||
.ni { color: #999999; } /* Name.Entity */
|
||||
.ne { color: #CC0000; } /* Name.Exception */
|
||||
.nf { color: #CC00FF } /* Name.Function */
|
||||
.nl { color: #9999FF } /* Name.Label */
|
||||
.nn { color: #00CCFF; } /* Name.Namespace */
|
||||
.nt { color: #2f6f9f; } /* Name.Tag */
|
||||
.nv { color: #003333 } /* Name.Variable */
|
||||
.ow { color: #000000; } /* Operator.Word */
|
||||
.w { color: #bbbbbb } /* Text.Whitespace */
|
||||
.mf { color: #FF6600 } /* Literal.Number.Float */
|
||||
.mh { color: #FF6600 } /* Literal.Number.Hex */
|
||||
.mi { color: #FF6600 } /* Literal.Number.Integer */
|
||||
.mo { color: #FF6600 } /* Literal.Number.Oct */
|
||||
.sb { color: #CC3300 } /* Literal.String.Backtick */
|
||||
.sc { color: #CC3300 } /* Literal.String.Char */
|
||||
.sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */
|
||||
.s2 { color: #CC3300 } /* Literal.String.Double */
|
||||
.se { color: #CC3300; } /* Literal.String.Escape */
|
||||
.sh { color: #CC3300 } /* Literal.String.Heredoc */
|
||||
.si { color: #AA0000 } /* Literal.String.Interpol */
|
||||
.sx { color: #CC3300 } /* Literal.String.Other */
|
||||
.sr { color: #33AAAA } /* Literal.String.Regex */
|
||||
.s1 { color: #CC3300 } /* Literal.String.Single */
|
||||
.ss { color: #FFCC33 } /* Literal.String.Symbol */
|
||||
.bp { color: #336666 } /* Name.Builtin.Pseudo */
|
||||
.vc { color: #003333 } /* Name.Variable.Class */
|
||||
.vg { color: #003333 } /* Name.Variable.Global */
|
||||
.vi { color: #003333 } /* Name.Variable.Instance */
|
||||
.il { color: #FF6600 } /* Literal.Number.Integer.Long */
|
||||
|
||||
.css .o,
|
||||
.css .o + .nt,
|
||||
.css .nt + .nt { color: #999; }
|
||||
@@ -0,0 +1 @@
|
||||
/* Empty css file that users can override in their own /assets/css/custom.css file */
|
||||
@@ -0,0 +1,81 @@
|
||||
/* fira-sans-300 - latin */
|
||||
@font-face {
|
||||
font-family: 'Fira Sans';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: local(''),
|
||||
url('/fonts/fira-sans-v16-latin-300.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
|
||||
url('/fonts/fira-sans-v16-latin-300.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||
}
|
||||
/* fira-sans-300italic - latin */
|
||||
@font-face {
|
||||
font-family: 'Fira Sans';
|
||||
font-style: italic;
|
||||
font-weight: 300;
|
||||
src: local(''),
|
||||
url('/fonts/fira-sans-v16-latin-300italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
|
||||
url('/fonts/fira-sans-v16-latin-300italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||
}
|
||||
/* fira-sans-regular - latin */
|
||||
@font-face {
|
||||
font-family: 'Fira Sans';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local(''),
|
||||
url('/fonts/fira-sans-v16-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
|
||||
url('/fonts/fira-sans-v16-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||
}
|
||||
/* fira-sans-italic - latin */
|
||||
@font-face {
|
||||
font-family: 'Fira Sans';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
src: local(''),
|
||||
url('/fonts/fira-sans-v16-latin-italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
|
||||
url('/fonts/fira-sans-v16-latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||
}
|
||||
/* pt-sans-regular - latin */
|
||||
@font-face {
|
||||
font-family: 'PT Sans';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local(''),
|
||||
url('/fonts/pt-sans-v17-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
|
||||
url('/fonts/pt-sans-v17-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||
}
|
||||
/* pt-sans-italic - latin */
|
||||
@font-face {
|
||||
font-family: 'PT Sans';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
src: local(''),
|
||||
url('/fonts/pt-sans-v17-latin-italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
|
||||
url('/fonts/pt-sans-v17-latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||
}
|
||||
/* pt-sans-700 - latin */
|
||||
@font-face {
|
||||
font-family: 'PT Sans';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local(''),
|
||||
url('/fonts/pt-sans-v17-latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
|
||||
url('/fonts/pt-sans-v17-latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||
}
|
||||
/* pt-sans-700italic - latin */
|
||||
@font-face {
|
||||
font-family: 'PT Sans';
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
src: local(''),
|
||||
url('/fonts/pt-sans-v17-latin-700italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
|
||||
url('/fonts/pt-sans-v17-latin-700italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||
}
|
||||
/* abril-fatface-regular - latin */
|
||||
@font-face {
|
||||
font-family: 'Abril Fatface';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local(''),
|
||||
url('/fonts/abril-fatface-v19-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
|
||||
url('/fonts/abril-fatface-v19-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
|
||||
}
|
||||
@@ -0,0 +1,304 @@
|
||||
/*
|
||||
* __ __
|
||||
* /\ \ /\ \
|
||||
* \ \ \___ __ __ \_\ \ __
|
||||
* \ \ _ `\/\ \/\ \ /'_` \ /'__`\
|
||||
* \ \ \ \ \ \ \_\ \/\ \_\ \/\ __/
|
||||
* \ \_\ \_\/`____ \ \___,_\ \____\
|
||||
* \/_/\/_/`/___/> \/__,_ /\/____/
|
||||
* /\___/
|
||||
* \/__/
|
||||
*
|
||||
* Designed, built, and released under MIT license by @mdo. Learn more at
|
||||
* https://github.com/poole/hyde.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Contents
|
||||
*
|
||||
* Global resets
|
||||
* Sidebar
|
||||
* Container
|
||||
* Reverse layout
|
||||
* Themes
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Global resets
|
||||
*
|
||||
* Update the foundational and global aspects of the page.
|
||||
*/
|
||||
|
||||
html {
|
||||
font-family: "Fira Sans", sans-serif;
|
||||
font-weight:300;
|
||||
|
||||
}
|
||||
@media (min-width: 48em) {
|
||||
html {
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 58em) {
|
||||
html {
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
pre {
|
||||
tab-size:4;
|
||||
}
|
||||
|
||||
/*
|
||||
* Sidebar
|
||||
*
|
||||
* Flexible banner for housing site name, intro, and "footer" content. Starts
|
||||
* out above content in mobile and later moves to the side with wider viewports.
|
||||
*/
|
||||
|
||||
.sidebar {
|
||||
text-align: center;
|
||||
padding: 2rem 1rem;
|
||||
color: rgba(255,255,255,.5);
|
||||
flex-shrink: 0;
|
||||
}
|
||||
@media (min-width: 48em) {
|
||||
.sidebar {
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 18rem;
|
||||
text-align: left;
|
||||
overflow-y: auto;
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: rgb(70, 70, 70) auto;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar {
|
||||
width: 7px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
background: transparent;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background-color:rgb(70, 70, 70);
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background-color:rgb(150, 150, 150);
|
||||
}
|
||||
}
|
||||
|
||||
/* Sidebar links */
|
||||
.sidebar a, li {
|
||||
color: var(--sidebar-a-color);
|
||||
}
|
||||
|
||||
/* About section */
|
||||
.sidebar-about {
|
||||
text-align: center;
|
||||
color: var(--sidebar-p-color);
|
||||
}
|
||||
.sidebar-about h1 {
|
||||
color: var(--sidebar-h1-color);
|
||||
margin-top: 0;
|
||||
font-weight:300;
|
||||
font-size: 1.5em;
|
||||
font-family: "Abril Fatface", serif;
|
||||
}
|
||||
|
||||
/* Sidebar nav */
|
||||
.sidebar-nav {
|
||||
margin-top: 2rem;
|
||||
margin-bottom: 2rem;
|
||||
padding-left: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.subnav {
|
||||
list-style: none;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.sidebar-nav-item {
|
||||
display: block;
|
||||
}
|
||||
a.sidebar-nav-item:hover,
|
||||
a.sidebar-nav-item:focus {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.sidebar-nav-item.active {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Sticky sidebar
|
||||
*
|
||||
* Add the `sidebar-sticky` class to the sidebar's container to affix it the
|
||||
* contents to the bottom of the sidebar in tablets and up.
|
||||
*/
|
||||
|
||||
@media (min-width: 48em) {
|
||||
.sidebar-sticky {
|
||||
top: 1rem;
|
||||
width: 16rem;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Container
|
||||
*
|
||||
* Align the contents of the site above the proper threshold with some margin-fu
|
||||
* with a 25%-wide `.sidebar`.
|
||||
*/
|
||||
|
||||
.content {
|
||||
padding-top: 2rem;
|
||||
padding-bottom: 2rem;
|
||||
}
|
||||
|
||||
@media (min-width: 48em) {
|
||||
.content {
|
||||
max-width: 38rem;
|
||||
margin-left: 2rem;
|
||||
margin-right: 1.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 64em) {
|
||||
.content {
|
||||
max-width: 44rem;
|
||||
margin-left: 2rem;
|
||||
margin-right: 1.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
.footnote {
|
||||
font-size: 0.7em;
|
||||
margin-top: 0.5rem;
|
||||
color: var(--sidebar-p-color);
|
||||
}
|
||||
|
||||
.go {
|
||||
color: #444444;
|
||||
}
|
||||
|
||||
.badge {
|
||||
display:inline;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
.badges {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.brand {
|
||||
font-size: 4.0em;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Reverse layout
|
||||
*/
|
||||
@media (min-width: 48em) {
|
||||
.content {
|
||||
max-width: 38rem;
|
||||
margin-left: 1.75rem;
|
||||
margin-right: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 64em) {
|
||||
.content {
|
||||
max-width: 44rem;
|
||||
margin-left: 1.75rem;
|
||||
margin-right: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Themes
|
||||
*
|
||||
* As of v1.1, Hyde includes optional themes to color the sidebar and links
|
||||
* within blog posts. To use, add the class of your choosing to the `body`.
|
||||
*/
|
||||
|
||||
/* Base16 (http://chriskempson.github.io/base16/#default) */
|
||||
|
||||
/* Red */
|
||||
.theme-base-08 .sidebar {
|
||||
background-color: #ac4142;
|
||||
}
|
||||
.theme-base-08 .content a,
|
||||
.theme-base-08 .related-posts li a:hover {
|
||||
color: #ac4142;
|
||||
}
|
||||
|
||||
/* Orange */
|
||||
.theme-base-09 .sidebar {
|
||||
background-color: #d28445;
|
||||
}
|
||||
.theme-base-09 .content a,
|
||||
.theme-base-09 .related-posts li a:hover {
|
||||
color: #d28445;
|
||||
}
|
||||
|
||||
/* Yellow */
|
||||
.theme-base-0a .sidebar {
|
||||
background-color: #f4bf75;
|
||||
}
|
||||
.theme-base-0a .content a,
|
||||
.theme-base-0a .related-posts li a:hover {
|
||||
color: #f4bf75;
|
||||
}
|
||||
|
||||
/* Green */
|
||||
.theme-base-0b .sidebar {
|
||||
background-color: #90a959;
|
||||
}
|
||||
.theme-base-0b .content a,
|
||||
.theme-base-0b .related-posts li a:hover {
|
||||
color: #90a959;
|
||||
}
|
||||
|
||||
/* Cyan */
|
||||
.theme-base-0c .sidebar {
|
||||
background-color: #75b5aa;
|
||||
}
|
||||
.theme-base-0c .content a,
|
||||
.theme-base-0c .related-posts li a:hover {
|
||||
color: #75b5aa;
|
||||
}
|
||||
|
||||
/* Blue */
|
||||
.theme-base-0d .sidebar {
|
||||
background-color: #6a9fb5;
|
||||
}
|
||||
.theme-base-0d .content a,
|
||||
.theme-base-0d .related-posts li a:hover {
|
||||
color: #6a9fb5;
|
||||
}
|
||||
|
||||
/* Magenta */
|
||||
.theme-base-0e .sidebar {
|
||||
background-color: #aa759f;
|
||||
}
|
||||
.theme-base-0e .content a,
|
||||
.theme-base-0e .related-posts li a:hover {
|
||||
color: #aa759f;
|
||||
}
|
||||
|
||||
/* Brown */
|
||||
.theme-base-0f .sidebar {
|
||||
background-color: #8f5536;
|
||||
}
|
||||
.theme-base-0f .content a,
|
||||
.theme-base-0f .related-posts li a:hover {
|
||||
color: #8f5536;
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,354 @@
|
||||
body.layout-reverse .container.content {
|
||||
direction: rtl;
|
||||
}
|
||||
|
||||
body.layout-reverse .wrapper {
|
||||
justify-content: flex-end;
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
|
||||
.sub-heading {
|
||||
color: var(--sidebar-p-color);
|
||||
}
|
||||
|
||||
@media (min-width: 48em) {
|
||||
.bullet {
|
||||
margin-left: 1em;
|
||||
text-decoration-line: underline;
|
||||
text-decoration-style: dotted;
|
||||
text-decoration-thickness: 1%;
|
||||
}
|
||||
.sub-heading {
|
||||
margin-left: 1em;
|
||||
}
|
||||
.btn-light-dark svg {
|
||||
margin: auto;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
color: black;
|
||||
}
|
||||
.container.content {
|
||||
overflow-y: auto;
|
||||
padding-right: 2rem;
|
||||
flex-grow: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 48em) {
|
||||
body > .wrapper, body.layout-reverse .wrapper {
|
||||
flex-direction: column;
|
||||
}
|
||||
body {
|
||||
overflow: auto !important;
|
||||
height: auto !important;
|
||||
}
|
||||
.heading {
|
||||
font-weight: 400;
|
||||
}
|
||||
.entries {
|
||||
padding-left: 0em;
|
||||
}
|
||||
.btn-light-dark svg {
|
||||
margin: auto;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
color: black;
|
||||
}
|
||||
}
|
||||
|
||||
/* Handles dark/light themes */
|
||||
h1, h2, h3, h4, h5, strong {
|
||||
color: var(--text-color);
|
||||
}
|
||||
.content div, p, table {
|
||||
color: var(--text-color);
|
||||
}
|
||||
.page-title, .post-title, .post-title a {
|
||||
color: var(--post-title-color);
|
||||
}
|
||||
.content li, li > p {
|
||||
color: var(--list-color);
|
||||
}
|
||||
.content code {
|
||||
color: var(--code-color);
|
||||
background-color: var(--code-background-color) !important;
|
||||
}
|
||||
.content a code{
|
||||
color: var(--link-color);
|
||||
}
|
||||
.content pre {
|
||||
color: var(--code-block-color);
|
||||
background-color: var(--code-block-background-color) !important;
|
||||
}
|
||||
.content pre code {
|
||||
color: var(--code-block-color);
|
||||
background-color: transparent !important;
|
||||
}
|
||||
.btn-light-dark .moon {
|
||||
color: var(--moon-sun-color);
|
||||
}
|
||||
.btn-light-dark .sun {
|
||||
color: var(--moon-sun-color);
|
||||
}
|
||||
.btn-light-dark {
|
||||
padding: 0;
|
||||
margin: 1em;
|
||||
border-radius: 50%;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
background-color: var(--moon-sun-background-color);
|
||||
}
|
||||
/* ************************** */
|
||||
body {
|
||||
overflow: hidden;
|
||||
height: 100vh;
|
||||
}
|
||||
body > .wrapper {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
}
|
||||
.container.content {
|
||||
overflow-y: auto;
|
||||
flex-grow: 1;
|
||||
}
|
||||
.layout-reverse .container.content {
|
||||
padding-right: 0;
|
||||
padding-left: 2rem;
|
||||
}
|
||||
.container.content::-webkit-scrollbar {
|
||||
width: 3px;
|
||||
}
|
||||
.container.content::-webkit-scrollbar-thumb {
|
||||
border-radius: 1.5px;
|
||||
}
|
||||
.container.content::-webkit-scrollbar-track {
|
||||
margin: 5.5em 0;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
background-color: var(--sidebar-bg-color);
|
||||
}
|
||||
.lead {
|
||||
text-align: center;
|
||||
color: var(--sidebar-p-color);
|
||||
}
|
||||
.sidebar-about img {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
text-align: center;
|
||||
border: 2px solid var(--sidebar-img-border-color);
|
||||
border-radius: 50%;
|
||||
height: 180px;
|
||||
width: 180px;
|
||||
}
|
||||
.social {
|
||||
margin-right: 0.5em;
|
||||
text-decoration: none !important;
|
||||
color: var(--sidebar-socials-color) !important;
|
||||
}
|
||||
.heading {
|
||||
margin-top: 1em;
|
||||
}
|
||||
.post-date {
|
||||
display: inline-block;
|
||||
color: var(--date-color);
|
||||
}
|
||||
.info span {
|
||||
display: inline-block;
|
||||
}
|
||||
.info ul {
|
||||
display: inline-block;
|
||||
float: right;
|
||||
}
|
||||
.info ul li {
|
||||
margin-left: 0.5em;
|
||||
}
|
||||
.headline {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
align-content: center;
|
||||
}
|
||||
.reading-time {
|
||||
color: gray;
|
||||
font-style: italic;
|
||||
}
|
||||
.newsletters .help-block-for-success {
|
||||
display: none;
|
||||
margin: 0.25rem 1rem 0.25rem 0;
|
||||
text-align: center;
|
||||
color: green;
|
||||
}
|
||||
.newsletters .help-block-for-error {
|
||||
display: none;
|
||||
margin: 0.25rem 1rem 0.25rem 0;
|
||||
text-align: center;
|
||||
color: #de0928;
|
||||
}
|
||||
.newsletters .help-block-show {
|
||||
display: block;
|
||||
}
|
||||
.newsletters form {
|
||||
display: flex;
|
||||
align-content: center;
|
||||
justify-content: center;
|
||||
flex-flow: row wrap;
|
||||
}
|
||||
.newsletters .email-subscription-form-hide {
|
||||
display: none;
|
||||
}
|
||||
.newsletters label {
|
||||
margin: 0.25rem 1rem 0.25rem 0;
|
||||
text-align: center;
|
||||
}
|
||||
.newsletters input {
|
||||
margin: 0.25rem 1rem 0.25rem 0;
|
||||
font-size: 0.75rem;
|
||||
padding: 0.25rem 0.5rem;
|
||||
border: 1px solid var(--text-color);
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
.newsletters input:focus-visible {
|
||||
outline: none;
|
||||
}
|
||||
.newsletters button {
|
||||
background-color: transparent;
|
||||
color: var(--text-color);
|
||||
padding: 0.25rem 0.5rem;
|
||||
border-radius: 0.25rem;
|
||||
border: 1px solid var(--text-color);
|
||||
font-family: inherit;
|
||||
font-size: 0.85rem;
|
||||
cursor: pointer;
|
||||
margin: 0.25rem 0;
|
||||
}
|
||||
.tags {
|
||||
padding-left: 0em;
|
||||
}
|
||||
.tags li {
|
||||
display: inline;
|
||||
text-decoration: none;
|
||||
}
|
||||
.tags li a {
|
||||
color: var(--table-stripe-color);
|
||||
display: inline-block;
|
||||
padding: 0em 0.7em;
|
||||
text-align: center;
|
||||
font-size: 0.7em;
|
||||
background-color: var(--list-color);
|
||||
border-radius: 0.2em;
|
||||
}
|
||||
/* Tables */
|
||||
table {
|
||||
margin-bottom: 1rem;
|
||||
width: 100%;
|
||||
border: 1px solid var(--table-border-color);
|
||||
border-collapse: collapse;
|
||||
}
|
||||
td,
|
||||
th {
|
||||
padding: .25rem .5rem;
|
||||
border: 1px solid var(--table-border-color);
|
||||
}
|
||||
tbody tr:nth-child(odd) td,
|
||||
tbody tr:nth-child(odd) th {
|
||||
background-color: var(--table-stripe-color);
|
||||
}
|
||||
|
||||
.entries li {
|
||||
display: flex;
|
||||
}
|
||||
.entries li .title {
|
||||
order: 1;
|
||||
}
|
||||
.entries li .published {
|
||||
order: 3;
|
||||
}
|
||||
.entries li::after {
|
||||
background-image: radial-gradient(circle, currentcolor 1px, transparent 1.5px);
|
||||
background-position: bottom;
|
||||
background-size: 1ex 3.5px;
|
||||
background-repeat: space no-repeat;
|
||||
content: "";
|
||||
flex-grow: 1;
|
||||
height: 1.1em;
|
||||
order: 2;
|
||||
}
|
||||
.article-toc {
|
||||
display: none;
|
||||
font-size: 0.9em;
|
||||
width: 20em;
|
||||
margin-top: 5em;
|
||||
overflow-y: auto;
|
||||
line-height: 1.4em;
|
||||
max-height: 85%;
|
||||
}
|
||||
.article-toc .toc-wrapper{
|
||||
position: fixed;
|
||||
}
|
||||
.article-toc nav {
|
||||
margin-left: 1em;
|
||||
}
|
||||
.article-toc h4 {
|
||||
margin-left: 0;
|
||||
}
|
||||
.article-toc ul {
|
||||
margin-bottom: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.article-toc li {
|
||||
list-style: none;
|
||||
margin-left: 20px;
|
||||
margin-top: 2px;
|
||||
}
|
||||
.article-toc li a {
|
||||
color: var(--text-color);
|
||||
text-decoration: none;
|
||||
}
|
||||
.article-toc li.active {
|
||||
font-weight: bold;
|
||||
}
|
||||
.article-toc li.inactive {
|
||||
font-weight: 300;
|
||||
}
|
||||
@media screen and (min-width: 100em) {
|
||||
.article-toc {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
.next-post {
|
||||
text-align: right;
|
||||
float: right;
|
||||
}
|
||||
.previous-post {
|
||||
float: left;
|
||||
}
|
||||
.content pre code {
|
||||
white-space: pre;
|
||||
}
|
||||
div.highlight pre {
|
||||
overflow-x: auto;
|
||||
}
|
||||
#page-nav {
|
||||
text-align: center;
|
||||
}
|
||||
#page-nav a {
|
||||
margin: 0 0.2em;
|
||||
}
|
||||
#page-nav span {
|
||||
margin: 0 0.2em;
|
||||
}
|
||||
.next {
|
||||
float: right;
|
||||
display: inline;
|
||||
}
|
||||
.prev {
|
||||
float: left;
|
||||
display: inline;
|
||||
}
|
||||
.current {
|
||||
color: var(--text-color);
|
||||
}
|
||||
@@ -0,0 +1,391 @@
|
||||
/*
|
||||
* ___
|
||||
* /\_ \
|
||||
* _____ ___ ___\//\ \ __
|
||||
* /\ '__`\ / __`\ / __`\\ \ \ /'__`\
|
||||
* \ \ \_\ \/\ \_\ \/\ \_\ \\_\ \_/\ __/
|
||||
* \ \ ,__/\ \____/\ \____//\____\ \____\
|
||||
* \ \ \/ \/___/ \/___/ \/____/\/____/
|
||||
* \ \_\
|
||||
* \/_/
|
||||
*
|
||||
* Designed, built, and released under MIT license by @mdo. Learn more at
|
||||
* https://github.com/poole/poole.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Contents
|
||||
*
|
||||
* Body resets
|
||||
* Custom type
|
||||
* Messages
|
||||
* Container
|
||||
* Masthead
|
||||
* Posts and pages
|
||||
* Pagination
|
||||
* Reverse layout
|
||||
* Themes
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Body resets
|
||||
*
|
||||
* Update the foundational and global aspects of the page.
|
||||
*/
|
||||
|
||||
* {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
html {
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
font-size: 16px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
@media (min-width: 38em) {
|
||||
html {
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
color: #515151;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
}
|
||||
|
||||
/* No `:visited` state is required by default (browsers will use `a`) */
|
||||
a {
|
||||
color: var(--link-color);
|
||||
text-decoration: none;
|
||||
}
|
||||
/* `:focus` is linked to `:hover` for basic accessibility */
|
||||
a:hover,
|
||||
a:focus {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* Headings */
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-bottom: .5rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.25;
|
||||
color: #313131;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
h1 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
h2 {
|
||||
margin-top: 1rem;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
h3 {
|
||||
margin-top: 1.5rem;
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
h4, h5, h6 {
|
||||
margin-top: 1rem;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
/* Body text */
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
strong {
|
||||
color: #303030;
|
||||
}
|
||||
|
||||
|
||||
/* Lists */
|
||||
ul, ol, dl {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
dd {
|
||||
margin-bottom: .5rem;
|
||||
}
|
||||
|
||||
/* Misc */
|
||||
hr {
|
||||
position: relative;
|
||||
margin: 1.5rem 0;
|
||||
border: 0;
|
||||
border-top: 2px solid #ccc;
|
||||
border-bottom: 1px solid #fff;
|
||||
}
|
||||
|
||||
abbr {
|
||||
font-size: 85%;
|
||||
font-weight: bold;
|
||||
color: #555;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
abbr[title] {
|
||||
cursor: help;
|
||||
border-bottom: 1px dotted #e5e5e5;
|
||||
}
|
||||
|
||||
/* Code */
|
||||
code,
|
||||
pre {
|
||||
font-family: Menlo, Monaco, "Courier New", monospace;
|
||||
}
|
||||
code {
|
||||
padding: .25em .5em;
|
||||
font-size: 85%;
|
||||
color: #bf616a;
|
||||
background-color: #f9f9f9;
|
||||
border-radius: 3px;
|
||||
}
|
||||
pre {
|
||||
display: block;
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
padding: 1rem;
|
||||
font-size: .8rem;
|
||||
line-height: 1.4;
|
||||
white-space: pre;
|
||||
white-space: pre-wrap;
|
||||
word-break: break-all;
|
||||
word-wrap: break-word;
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
pre code {
|
||||
padding: 0;
|
||||
font-size: 100%;
|
||||
color: inherit;
|
||||
background-color: transparent;
|
||||
}
|
||||
.highlight {
|
||||
margin-bottom: 1rem;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.highlight pre {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/* Quotes */
|
||||
blockquote {
|
||||
padding: .5rem 1rem;
|
||||
margin: .8rem 0;
|
||||
color: #7a7a7a;
|
||||
border-left: .25rem solid #e5e5e5;
|
||||
}
|
||||
blockquote p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
@media (min-width: 30em) {
|
||||
blockquote {
|
||||
padding-right: 5rem;
|
||||
padding-left: 1.25rem;
|
||||
}
|
||||
.container {
|
||||
margin-right: auto;
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
display: block;
|
||||
margin: 0 0 1rem;
|
||||
border-radius: 5px;
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Custom type
|
||||
*
|
||||
* Extend paragraphs with `.lead` for larger introductory text.
|
||||
*/
|
||||
|
||||
.lead {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Messages
|
||||
*
|
||||
* Show alert messages to users. You may add it to single elements like a `<p>`,
|
||||
* or to a parent if there are multiple elements to show.
|
||||
*/
|
||||
|
||||
.message {
|
||||
margin-bottom: 1rem;
|
||||
padding: 1rem;
|
||||
color: #717171;
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Container
|
||||
*
|
||||
* Center the page content.
|
||||
*/
|
||||
|
||||
.container {
|
||||
max-width: 38rem;
|
||||
padding-left: 1rem;
|
||||
padding-right: 1rem;
|
||||
/* margin-left: auto;*/
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Masthead
|
||||
*
|
||||
* Super small header above the content for site name and short description.
|
||||
*/
|
||||
|
||||
.masthead {
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 1rem;
|
||||
margin-bottom: 3rem;
|
||||
}
|
||||
.masthead-title {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
color: #505050;
|
||||
}
|
||||
.masthead-title a {
|
||||
color: #505050;
|
||||
}
|
||||
.masthead-title small {
|
||||
font-size: 75%;
|
||||
font-weight: 400;
|
||||
color: #c0c0c0;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Posts and pages
|
||||
*
|
||||
* Each post is wrapped in `.post` and is used on default and post layouts. Each
|
||||
* page is wrapped in `.page` and is only used on the page layout.
|
||||
*/
|
||||
|
||||
.page,
|
||||
.post {
|
||||
margin-bottom: 4em;
|
||||
}
|
||||
|
||||
/* Blog post or page title */
|
||||
.page-title,
|
||||
.post-title,
|
||||
.post-title a {
|
||||
color: #303030;
|
||||
}
|
||||
.page-title,
|
||||
.post-title {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
/* Meta data line below post title */
|
||||
.post-date {
|
||||
display: block;
|
||||
margin-top: -.5rem;
|
||||
margin-bottom: 1rem;
|
||||
color: #9a9a9a;
|
||||
}
|
||||
|
||||
/* Related posts */
|
||||
.related {
|
||||
padding-top: 2rem;
|
||||
padding-bottom: 2rem;
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
.related-posts {
|
||||
padding-left: 0;
|
||||
list-style: none;
|
||||
}
|
||||
.related-posts h3 {
|
||||
margin-top: 0;
|
||||
}
|
||||
.related-posts li small {
|
||||
font-size: 75%;
|
||||
color: #999;
|
||||
}
|
||||
.related-posts li a:hover {
|
||||
color: #268bd2;
|
||||
text-decoration: none;
|
||||
}
|
||||
.related-posts li a:hover small {
|
||||
color: inherit;
|
||||
}
|
||||
.comments {
|
||||
margin-top: 3em;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Pagination
|
||||
*
|
||||
* Super lightweight (HTML-wise) blog pagination. `span`s are provide for when
|
||||
* there are no more previous or next posts to show.
|
||||
*/
|
||||
|
||||
.pagination {
|
||||
overflow: hidden; /* clearfix */
|
||||
margin-left: -1rem;
|
||||
margin-right: -1rem;
|
||||
font-family: "PT Sans", Helvetica, Arial, sans-serif;
|
||||
color: #ccc;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Pagination items can be `span`s or `a`s */
|
||||
.pagination-item {
|
||||
display: block;
|
||||
padding: 1rem;
|
||||
border: 1px solid #eee;
|
||||
}
|
||||
.pagination-item:first-child {
|
||||
margin-bottom: -1px;
|
||||
}
|
||||
|
||||
/* Only provide a hover state for linked pagination items */
|
||||
a.pagination-item:hover {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
@media (min-width: 30em) {
|
||||
.pagination {
|
||||
margin: 3rem 0;
|
||||
}
|
||||
.pagination-item {
|
||||
float: left;
|
||||
width: 50%;
|
||||
}
|
||||
.pagination-item:first-child {
|
||||
margin-bottom: 0;
|
||||
border-top-left-radius: 4px;
|
||||
border-bottom-left-radius: 4px;
|
||||
}
|
||||
.pagination-item:last-child {
|
||||
margin-left: -1px;
|
||||
border-top-right-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
/* Style the tabs */
|
||||
.tabs {
|
||||
overflow: hidden;
|
||||
border-bottom: 1px solid var(--text-color);
|
||||
}
|
||||
|
||||
@media (min-width: 48em) {
|
||||
/* Style the buttons that are used to open the tabs content */
|
||||
.tabs button {
|
||||
font-family: Menlo, Monaco, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
background-color: var(--bkg-color);
|
||||
color: var(--text-color);
|
||||
float: left;
|
||||
border-top: 1px solid var(--text-color);
|
||||
border-right: 1px solid var(--text-color);
|
||||
border-bottom: none;
|
||||
border-left: 1px solid var(--text-color);
|
||||
border-radius: 5px 5px 0 0;
|
||||
margin: 0 0.2em 0 0;
|
||||
outline: none;
|
||||
cursor: pointer;
|
||||
padding: 0.5em 1em;
|
||||
transition: 0.3s;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 48em) {
|
||||
/* Style the buttons that are used to open the tabs content */
|
||||
.tabs button {
|
||||
font-family: Menlo, Monaco, "Courier New", monospace;
|
||||
font-size: 0.8em;
|
||||
background-color: var(--bkg-color);
|
||||
color: var(--text-color);
|
||||
float: left;
|
||||
border-top: 1px solid var(--text-color);
|
||||
border-right: 1px solid var(--text-color);
|
||||
border-bottom: none;
|
||||
border-left: 1px solid var(--text-color);
|
||||
border-radius: 5px 5px 0 0;
|
||||
margin: 0 0.2em 0 0;
|
||||
outline: none;
|
||||
cursor: pointer;
|
||||
padding: 0.7em 1.3em;
|
||||
transition: 0.3s;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* Change background color of buttons on hover */
|
||||
.tabs button:hover {
|
||||
background-color: #ddd;
|
||||
color: var(--dark-gray);
|
||||
}
|
||||
|
||||
/* Create an active/current tablink class */
|
||||
.tabs button.active {
|
||||
background-color: #ccc;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
/* Style the tabs content */
|
||||
.tabcontent {
|
||||
display: none;
|
||||
padding-top: 0.2em;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
|
||||
// Get code blocks
|
||||
const codeblocks = document.querySelectorAll("pre code");
|
||||
|
||||
// Iterate over each to perform modifications
|
||||
codeblocks.forEach((codeblock) => {
|
||||
// Create copy button and container element
|
||||
const copyButton = document.createElement("button");
|
||||
copyButton.className = "copy-button";
|
||||
const container = document.createElement("div");
|
||||
container.className = "code-container";
|
||||
|
||||
// Copy clicked closure
|
||||
copyButton.addEventListener("click", (e) => {
|
||||
e.target.className = "copy-success";
|
||||
setTimeout(() => {
|
||||
e.target.className = "copy-button";
|
||||
}, 1000);
|
||||
const code = codeblock.textContent;
|
||||
navigator.clipboard.writeText(code);
|
||||
});
|
||||
|
||||
// Wrap the codeblock with the container
|
||||
codeblock.parentNode.insertBefore(container, codeblock);
|
||||
container.appendChild(codeblock);
|
||||
// Add the copy button to the container
|
||||
container.appendChild(copyButton);
|
||||
})
|
||||
});
|
||||
@@ -0,0 +1,21 @@
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
|
||||
// provides an escape for dollar sign chars if KaTeX is not desired
|
||||
let posts = document.getElementsByClassName("post");
|
||||
|
||||
for (let i = 0; i < posts.length; i++) {
|
||||
let children = posts[i].children
|
||||
for (let j = 0; j < children.length; j++) {
|
||||
if (children[j].tagName == "P") {
|
||||
children[j].innerHTML = children[j].innerHTML.replace(/\\\$/g, '<span>$</span>');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
renderMathInElement(document.body, {
|
||||
delimiters: [
|
||||
{left: "$$", right: "$$", display: true},
|
||||
{left: "$", right: "$", display: false}
|
||||
]
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1 @@
|
||||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,(function(e){return function(){"use strict";var t={771:function(t){t.exports=e}},r={};function n(e){var i=r[e];if(void 0!==i)return i.exports;var a=r[e]={exports:{}};return t[e](a,a.exports,n),a.exports}n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var i={};return function(){n.d(i,{default:function(){return s}});var e=n(771),t=n.n(e),r=function(e,t,r){for(var n=r,i=0,a=e.length;n<t.length;){var o=t[n];if(i<=0&&t.slice(n,n+a)===e)return n;"\\"===o?n++:"{"===o?i++:"}"===o&&i--,n++}return-1},a=/^\\begin{/,o=function(e,t){for(var n,i=[],o=new RegExp("("+t.map((function(e){return e.left.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")})).join("|")+")");-1!==(n=e.search(o));){n>0&&(i.push({type:"text",data:e.slice(0,n)}),e=e.slice(n));var l=t.findIndex((function(t){return e.startsWith(t.left)}));if(-1===(n=r(t[l].right,e,t[l].left.length)))break;var d=e.slice(0,n+t[l].right.length),s=a.test(d)?d:e.slice(t[l].left.length,n);i.push({type:"math",data:s,rawData:d,display:t[l].display}),e=e.slice(n+t[l].right.length)}return""!==e&&i.push({type:"text",data:e}),i},l=function(e,r){var n=o(e,r.delimiters);if(1===n.length&&"text"===n[0].type)return null;for(var i=document.createDocumentFragment(),a=0;a<n.length;a++)if("text"===n[a].type)i.appendChild(document.createTextNode(n[a].data));else{var l=document.createElement("span"),d=n[a].data;r.displayMode=n[a].display;try{r.preProcess&&(d=r.preProcess(d)),t().render(d,l,r)}catch(e){if(!(e instanceof t().ParseError))throw e;r.errorCallback("KaTeX auto-render: Failed to parse `"+n[a].data+"` with ",e),i.appendChild(document.createTextNode(n[a].rawData));continue}i.appendChild(l)}return i},d=function e(t,r){for(var n=0;n<t.childNodes.length;n++){var i=t.childNodes[n];if(3===i.nodeType){for(var a=i.textContent,o=i.nextSibling,d=0;o&&o.nodeType===Node.TEXT_NODE;)a+=o.textContent,o=o.nextSibling,d++;var s=l(a,r);if(s){for(var f=0;f<d;f++)i.nextSibling.remove();n+=s.childNodes.length-1,t.replaceChild(s,i)}else n+=d}else 1===i.nodeType&&function(){var t=" "+i.className+" ";-1===r.ignoredTags.indexOf(i.nodeName.toLowerCase())&&r.ignoredClasses.every((function(e){return-1===t.indexOf(" "+e+" ")}))&&e(i,r)}()}},s=function(e,t){if(!e)throw new Error("No element provided to render");var r={};for(var n in t)t.hasOwnProperty(n)&&(r[n]=t[n]);r.delimiters=r.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\begin{equation}",right:"\\end{equation}",display:!0},{left:"\\begin{align}",right:"\\end{align}",display:!0},{left:"\\begin{alignat}",right:"\\end{alignat}",display:!0},{left:"\\begin{gather}",right:"\\end{gather}",display:!0},{left:"\\begin{CD}",right:"\\end{CD}",display:!0},{left:"\\[",right:"\\]",display:!0}],r.ignoredTags=r.ignoredTags||["script","noscript","style","textarea","pre","code","option"],r.ignoredClasses=r.ignoredClasses||[],r.errorCallback=r.errorCallback||console.error,r.macros=r.macros||{},d(e,r)}}(),i=i.default}()}));
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,39 @@
|
||||
const btn = document.querySelector(".btn-light-dark");
|
||||
const moon = document.querySelector(".moon");
|
||||
const sun = document.querySelector(".sun");
|
||||
|
||||
const themeFromLS = localStorage.getItem("theme")
|
||||
const themeFromHugo = document.body.classList.contains("dark-theme") ? "dark" : null
|
||||
const currentTheme = themeFromLS ? themeFromLS : themeFromHugo;
|
||||
|
||||
if (currentTheme == "dark") {
|
||||
document.body.classList.add("dark-theme");
|
||||
moon.style.display = 'none';
|
||||
sun.style.display = 'block';
|
||||
} else {
|
||||
document.body.classList.remove("dark-theme");
|
||||
moon.style.display = 'block';
|
||||
sun.style.display = 'none';
|
||||
}
|
||||
|
||||
btn.addEventListener("click", function () {
|
||||
document.body.classList.toggle("dark-theme");
|
||||
let hasComments = document.getElementById("remark42");
|
||||
let theme = "light";
|
||||
|
||||
if (document.body.classList.contains("dark-theme")) {
|
||||
theme = "dark";
|
||||
moon.style.display = 'none';
|
||||
sun.style.display = 'block';
|
||||
if (hasComments) {
|
||||
window.REMARK42.changeTheme("dark");
|
||||
}
|
||||
} else {
|
||||
moon.style.display = 'block';
|
||||
sun.style.display = 'none';
|
||||
if (hasComments) {
|
||||
window.REMARK42.changeTheme("light");
|
||||
}
|
||||
}
|
||||
localStorage.setItem("theme", theme);
|
||||
});
|
||||
@@ -0,0 +1,13 @@
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
plantumlElements = document.querySelectorAll('[id^="plantuml-"]');
|
||||
let plantumlInner = ""
|
||||
for (let i = 0; i < plantumlElements.length; i++) {
|
||||
element = plantumlElements[i];
|
||||
if (element.tagName == "SPAN") {
|
||||
plantumlInner = element.innerText;
|
||||
}
|
||||
if (element.tagName == "IMG") {
|
||||
element.src = "//www.plantuml.com/plantuml/img/" + window.plantumlEncoder.encode(plantumlInner);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,24 @@
|
||||
const tabs = document.querySelectorAll(".tab")
|
||||
|
||||
tabs.forEach(tab => {
|
||||
tab.addEventListener('click', (e) => {
|
||||
const tablist = tab.parentElement.children
|
||||
for (let i = 0; i < tablist.length; i++) {
|
||||
if (tablist[i].id == e.target.id) {
|
||||
tablist[i].classList.add('active');
|
||||
}
|
||||
else {
|
||||
tablist[i].classList.remove('active');
|
||||
}
|
||||
}
|
||||
const container = tab.parentElement.parentElement.children
|
||||
for (let i = 1; i < container.length; i++) {
|
||||
if (container[i].classList.contains(e.target.id)) {
|
||||
container[i].style.display = "block";
|
||||
}
|
||||
else {
|
||||
container[i].style.display = "none";
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
Original Author: Bramus Van Damme
|
||||
Link to original: https://www.bram.us/2020/01/10/smooth-scrolling-sticky-scrollspy-navigation/
|
||||
|
||||
Most of this code comes courtesy of Bramus Van Damme, with some minor tweaks
|
||||
to get it working for my use case. Thanks, Bramus!
|
||||
*/
|
||||
|
||||
let activeElement = null;
|
||||
window.addEventListener('DOMContentLoaded', () => {
|
||||
const observer = new IntersectionObserver(entries => {
|
||||
if (entries) {
|
||||
const contents = document.getElementById("contents");
|
||||
if (contents) {
|
||||
contents.innerHTML = "Contents";
|
||||
}
|
||||
}
|
||||
entries.forEach(entry => {
|
||||
if (activeElement) {
|
||||
document.querySelectorAll("nav[id='TableOfContents'] li").forEach((node) => {
|
||||
node.classList.add('inactive');
|
||||
node.classList.replace('active', 'inactive');
|
||||
});
|
||||
}
|
||||
if (entry.intersectionRatio > 0) {
|
||||
activeElement = entry.target.getAttribute('id');
|
||||
}
|
||||
if (activeElement) {
|
||||
document.querySelector(`nav[id='TableOfContents'] li a[href="#${activeElement}"]`).parentElement.classList.replace('inactive', 'active');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
const post = document.querySelector(".post");
|
||||
post.querySelectorAll("h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]").forEach((section) => {
|
||||
observer.observe(section);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user