diff --git a/assets/css/_core/_base.scss b/assets/css/_core/_base.scss index e355f5e..b4ab83d 100644 --- a/assets/css/_core/_base.scss +++ b/assets/css/_core/_base.scss @@ -1,6 +1,7 @@ html { font-family: $global-font-family; font-size: 16px; + width:100%; } /* scrollbar, only support webkit */ diff --git a/assets/css/_core/_media.scss b/assets/css/_core/_media.scss index d0b101e..f33b05e 100644 --- a/assets/css/_core/_media.scss +++ b/assets/css/_core/_media.scss @@ -2,8 +2,7 @@ .page { max-width: 780px; - .post-toc { - width: 300px; + #toc-auto { margin-left: 800px; } } @@ -13,8 +12,7 @@ .page { max-width: 680px; - .post-toc { - width: 240px; + #toc-auto { margin-left: 700px; } } @@ -24,8 +22,7 @@ .page { max-width: 560px; - .post-toc { - width: 180px; + #toc-auto { margin-left: 580px; } } @@ -41,11 +38,11 @@ .page { max-width: 80%; - .post-toc { + #toc-auto { display: none; } - .post-toc-mobile { + #toc-static { display: block; } } diff --git a/assets/css/_partial/_single/_toc.scss b/assets/css/_partial/_single/_toc.scss index 8db07ef..e1e8dc6 100644 --- a/assets/css/_partial/_single/_toc.scss +++ b/assets/css/_partial/_single/_toc.scss @@ -1,25 +1,25 @@ -.post-toc { +#toc-auto { display: block; position: absolute; - width: 360px; + width: 100%; margin-left: 1000px; padding: 0 .8rem; border-left: 1px solid $global-border-color; overflow-wrap: break-word; box-sizing: border-box; - top: $post-toc-top; + top: if($header-normal-mode-desktop, 7rem, 12rem); .dark-theme & { border-left: 1px solid $global-border-color-dark; } - .post-toc-title { + .toc-title { font-weight: 400; margin: .8rem 0; text-transform: uppercase; } - .post-toc-content { + .toc-content { &.always-active ul { display: block; } @@ -73,13 +73,13 @@ } } -.post-toc-mobile { +#toc-static { display: none; padding-top: .8rem; details { summary { - .post-toc-title { + .toc-title { display: block; display: flex; justify-content: space-between; @@ -110,7 +110,7 @@ } } - .post-toc-content { + .toc-content { border: 2px solid $code-background-color; >nav>ul { diff --git a/assets/css/_variables.scss b/assets/css/_variables.scss index 209a9ab..6d8f229 100644 --- a/assets/css/_variables.scss +++ b/assets/css/_variables.scss @@ -62,9 +62,6 @@ $header-position-mobile: if($header-normal-mode-mobile, static, fixed) !default; $page-padding-top-desktop: if($header-normal-mode-desktop, 1rem, 6rem) !default; $page-padding-top-mobile: if($header-normal-mode-mobile, 1rem, 6rem) !default; -// Top of the post toc -$post-toc-top: if($header-normal-mode-desktop, 7rem, 12rem) !default; - // Color of the hover header item $header-hover-color: #161209 !default; $header-hover-color-dark: #fff !default; diff --git a/exampleSite/config.toml b/exampleSite/config.toml index 57d1e78..4d6644d 100644 --- a/exampleSite/config.toml +++ b/exampleSite/config.toml @@ -59,7 +59,7 @@ themesDir = "../.." pre = '' name = "" title = "简体中文" - url = "zh" + url = "/zh/" weight = 5 [languages.en.params] # LoveIt theme version diff --git a/layouts/partials/header.html b/layouts/partials/header.html index c871869..3c51a44 100644 --- a/layouts/partials/header.html +++ b/layouts/partials/header.html @@ -28,7 +28,7 @@ {{- .Site.Title -}} - diff --git a/layouts/partials/script.html b/layouts/partials/script.html index af84b26..e9a0e26 100644 --- a/layouts/partials/script.html +++ b/layouts/partials/script.html @@ -162,7 +162,6 @@ {{- $key }}: {{ $var | safeJS -}}, {{- end -}} }; - window.echartsArr = []; {{- end -}} {{- end -}} diff --git a/layouts/posts/single.html b/layouts/posts/single.html index 55b8773..d5f5c33 100644 --- a/layouts/posts/single.html +++ b/layouts/posts/single.html @@ -47,28 +47,24 @@ {{- /* TOC */ -}} {{- if or .Params.toc (and .Site.Params.toc (ne .Params.toc false)) -}} - - + {{- end -}} {{- /* Content */ -}} diff --git a/resources/_gen/assets/scss/css/style.template.scss_b8ba9a60a151126bfcde1421dc0b972d.content b/resources/_gen/assets/scss/css/style.template.scss_b8ba9a60a151126bfcde1421dc0b972d.content index 9cc4486..fddd415 100644 --- a/resources/_gen/assets/scss/css/style.template.scss_b8ba9a60a151126bfcde1421dc0b972d.content +++ b/resources/_gen/assets/scss/css/style.template.scss_b8ba9a60a151126bfcde1421dc0b972d.content @@ -1,3 +1,3 @@ -@import url(https://fonts.googleapis.com/css?family=Lato:100,300,400,700,900);@import url("https://fonts.googleapis.com/css?family=Fira+Mono:400,700&display=swap&subset=latin-ext");/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace, monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html{font-family:Lato,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft Yahei,Segoe UI,Helvetica,Arial,sans-serif,Segoe UI Emoji;font-size:16px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background-color:#87878d}::-webkit-scrollbar-thumb:hover{background-color:#a9a9b3}::selection{background:rgba(38,139,211,0.2)}.dark-theme ::selection{background:rgba(38,139,211,0.3)}body{font-weight:400;line-height:1.5rem;background-color:#fff;color:#161209;overflow-wrap:break-word}body::before{content:"";background-repeat:no-repeat;background-position:center;opacity:0.05;position:fixed;top:0;left:0;width:100%;height:100%;z-index:-1;-webkit-filter:grayscale(100%);-moz-filter:grayscale(100%);-ms-filter:grayscale(100%);-o-filter:grayscale(100%);filter:grayscale(100%);filter:gray}body.dark-theme{color:#a9a9b3;background-color:#292a2d}a{color:#161209;text-decoration:none;transition:color 0.2s ease, border-color 0.2s ease, background 0.2s ease, opacity 0.2s ease}a:hover{color:#2d96bd}.dark-theme a{color:#a9a9b3}.dark-theme a:hover{color:#fff}.wrapper{display:flex;flex-direction:column;min-height:97.5vh;width:100%}.wrapper main{flex:1 0 auto}.wrapper main .container{padding-left:1rem;padding-right:1rem}.footer{height:2rem;width:100%;text-align:center;line-height:1.5rem;padding-top:2rem}.page{position:relative;width:100%;max-width:980px;margin:0 auto;padding-top:6rem}.single .single-title{margin:0;font-size:1.8rem;line-height:3rem}.single .meta{font-size:.88rem;color:#a9a9b3}.single .meta span{display:inline-block}.dark-theme .single .meta{color:#5d5d5f}.single .meta a{color:#2d96bd}.dark-theme .single .meta a{color:#eee}.single .meta a:hover{color:#ef3982}.dark-theme .single .meta a:hover{color:#2d96bd}.single .meta .author{font-size:1.05rem}.single .featured-image{padding-top:.6rem}.single .featured-image img{display:block;max-width:100%;height:auto;margin:0 auto;overflow:hidden}.single .post-toc{display:block;position:absolute;width:360px;margin-left:1000px;padding:0 .8rem;border-left:1px solid #dcdcdc;overflow-wrap:break-word;box-sizing:border-box;top:12rem}.dark-theme .single .post-toc{border-left:1px solid #4a4b50}.single .post-toc .post-toc-title{font-weight:400;margin:.8rem 0;text-transform:uppercase}.single .post-toc .post-toc-content.always-active ul{display:block}.single .post-toc .post-toc-content>nav>ul{margin:.625rem 0}.single .post-toc .post-toc-content ul{text-indent:-0.85rem;padding-left:.625rem;list-style:none}.single .post-toc .post-toc-content ul a::before{content:"|";font-weight:bolder;margin-right:.5rem;color:#2d96bd}.dark-theme .single .post-toc .post-toc-content ul a::before{color:#eee}.single .post-toc .post-toc-content ul ul{padding-left:1.25rem;display:none}.single .post-toc .post-toc-content ul .has-active>ul{display:block}.single .post-toc .post-toc-content a.active{font-weight:bold;color:#2d96bd}.dark-theme .single .post-toc .post-toc-content a.active{color:#eee}.single .post-toc .post-toc-content a.active::before{color:#ef3982}.dark-theme .single .post-toc .post-toc-content a.active::before{color:#2d96bd}.single .post-toc-mobile{display:none;padding-top:.8rem}.single .post-toc-mobile details summary .post-toc-title{display:block;display:flex;justify-content:space-between;font-size:1.2em;font-weight:bold;line-height:2em;padding:0 .625rem;background:#f5f5f5}.single .post-toc-mobile details summary .post-toc-title i.details{line-height:2em}.dark-theme .single .post-toc-mobile details summary .post-toc-title{background:#272C34}.single .post-toc-mobile details summary::-webkit-details-marker{display:none}.single .post-toc-mobile details[open] i.details{transform:rotate(180deg)}.single .post-toc-mobile .post-toc-content{border:2px solid #f5f5f5}.single .post-toc-mobile .post-toc-content>nav>ul{margin:.625rem 0}.single .post-toc-mobile .post-toc-content ul{padding-left:.625rem;list-style:none}.single .post-toc-mobile .post-toc-content ul ul{padding-left:1.25rem}.dark-theme .single .post-toc-mobile .post-toc-content{border:2px solid #272C34}.single .content h1,.single .content h2,.single .content h3,.single .content h4,.single .content h5,.single .content h6{font-weight:bold;margin:1.2rem 0}.dark-theme .single .content h1,.dark-theme .single .content h2,.dark-theme .single .content h3,.dark-theme .single .content h4,.dark-theme .single .content h5,.dark-theme .single .content h6{font-weight:bolder}.single .content h2>a:first-child::before{content:"#";margin-right:.3125rem;color:#2d96bd}.dark-theme .single .content h2>a:first-child::before{color:#eee}.single .content h3>a:first-child::before,.single .content h4>a:first-child::before,.single .content h5>a:first-child::before,.single .content h6>a:first-child::before{content:"|";margin-right:.3125rem;color:#2d96bd}.dark-theme .single .content h3>a:first-child::before,.dark-theme .single .content h4>a:first-child::before,.dark-theme .single .content h5>a:first-child::before,.dark-theme .single .content h6>a:first-child::before{color:#eee}.single .content p{font-size:1rem;margin:.5rem 0}.single .content a{word-break:break-all;color:#2d96bd}.dark-theme .single .content a{color:#eee}.single .content a:hover{color:#ef3982}.dark-theme .single .content a:hover:hover{color:#2d96bd;font-weight:bold}.single .content ul{padding-left:2rem;list-style-type:disc}.single .content ruby{background:#f5f5f5}.single .content ruby rt{color:#a9a9b3}.dark-theme .single .content ruby{background:#272C34}.dark-theme .single .content ruby rt{color:#5d5d5f}.single .content .table-wrapper{overflow-x:auto}.single .content .table-wrapper::-webkit-scrollbar{background-color:#fff}.dark-theme .single .content .table-wrapper::-webkit-scrollbar{background-color:#272c34}.single .content .table-wrapper>table{width:100%;max-width:100%;margin:.625rem 0;border-spacing:0;background:#fff}.dark-theme .single .content .table-wrapper>table{background:#272c34}.single .content .table-wrapper>table thead{background:#ededed}.dark-theme .single .content .table-wrapper>table thead{background-color:#20252b}.single .content .table-wrapper>table th,.single .content .table-wrapper>table td{padding:.3rem 1rem;border:1px double #dcdcdc}.dark-theme .single .content .table-wrapper>table th,.dark-theme .single .content .table-wrapper>table td{border:1px double #4a4b50}.single .content figure{text-align:center}.single .content .image-caption:not(:empty){min-width:20%;max-width:80%;display:inline-block;padding:.625rem;margin:0 auto;border-bottom:1px solid #d9d9d9;font-size:.875rem;color:#969696;line-height:1.7}.single .content img{display:block;max-width:100%;height:auto;margin:0 auto;overflow:hidden}.single .content blockquote{font-size:1rem;display:block;border-width:1px 0;border-style:solid;border-color:#dcdcdc;padding:1.5em 1.2em 0.5em 1.2em;margin:0 0 2em 0;position:relative}.single .content blockquote::before{content:'\201C';position:absolute;top:0em;left:50%;transform:translate(-50%, -50%);width:3rem;height:2rem;font:6em/1.08em 'PT Sans', sans-serif;color:#2d96bd;text-align:center}.dark-theme .single .content blockquote::before{color:#eee}.single .content blockquote::after{content:"#blockquote" attr(cite);display:block;text-align:right;font-size:0.875em;color:#2d96bd}.dark-theme .single .content blockquote::after{color:#eee}.dark-theme .single .content blockquote{border-color:#4a4b50}.single .content .footnotes{color:#a9a9b3}.dark-theme .single .content .footnotes{color:#5d5d5f}.single .content code{font-size:13px;font-family:Fira Mono,Source Code Pro,Menlo,Consolas,Monaco,monospace;padding:.2rem .4rem;color:#E74C3C}.dark-theme .single .content code{color:#E5BF78}.single .content code,.single .content pre,.single .content .highlight table,.single .content .highlight tr,.single .content .highlight td{background:#f5f5f5}.dark-theme .single .content code,.dark-theme .single .content pre,.dark-theme .single .content .highlight table,.dark-theme .single .content .highlight tr,.dark-theme .single .content .highlight td{background:#272C34}.single .content .highlight>.chroma{margin:1rem 0;line-height:18px}.single .content .highlight>.chroma code,.single .content .highlight>.chroma pre{margin:0;padding:0}.single .content .highlight>.chroma::before{display:block;padding:.4rem;font-family:Lato,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft Yahei,Segoe UI,Helvetica,Arial,sans-serif,Segoe UI Emoji;font-size:13px;font-weight:bold;color:#b1b0b0;background:#ededed;content:'Code'}.dark-theme .single .content .highlight>.chroma::before{color:#b1b0b0;background:#20252b}.single .content .highlight>.chroma.language-bash::before{content:"Bash"}.single .content .highlight>.chroma.language-c::before{content:"C"}.single .content .highlight>.chroma.language-cs::before{content:"C#"}.single .content .highlight>.chroma.language-cpp::before{content:"C++"}.single .content .highlight>.chroma.language-clojure::before{content:"Clojure"}.single .content .highlight>.chroma.language-coffeescript::before{content:"CoffeeScript"}.single .content .highlight>.chroma.language-css::before{content:"CSS"}.single .content .highlight>.chroma.language-dart::before{content:"Dart"}.single .content .highlight>.chroma.language-diff::before{content:"Diff"}.single .content .highlight>.chroma.language-erlang::before{content:"Erlang"}.single .content .highlight>.chroma.language-go::before{content:"Go"}.single .content .highlight>.chroma.language-go-html-template::before{content:"Go HTML Template"}.single .content .highlight>.chroma.language-groovy::before{content:"Groovy"}.single .content .highlight>.chroma.language-haskell::before{content:"Haskell"}.single .content .highlight>.chroma.language-html::before{content:"HTML"}.single .content .highlight>.chroma.language-http::before{content:"HTTP"}.single .content .highlight>.chroma.language-xml::before{content:"XML"}.single .content .highlight>.chroma.language-java::before{content:"Java"}.single .content .highlight>.chroma.language-js::before{content:"JavaScript"}.single .content .highlight>.chroma.language-javascript::before{content:"JavaScript"}.single .content .highlight>.chroma.language-json::before{content:"JSON"}.single .content .highlight>.chroma.language-kotlin::before{content:"Kotlin"}.single .content .highlight>.chroma.language-latex::before{content:"LaTeX"}.single .content .highlight>.chroma.language-less::before{content:"Less"}.single .content .highlight>.chroma.language-lisp::before{content:"Lisp"}.single .content .highlight>.chroma.language-lua::before{content:"Lua"}.single .content .highlight>.chroma.language-makefile::before{content:"Makefile"}.single .content .highlight>.chroma.language-markdown::before{content:"Markdown"}.single .content .highlight>.chroma.language-matlab::before{content:"Matlab"}.single .content .highlight>.chroma.language-objectivec::before{content:"Objective-C"}.single .content .highlight>.chroma.language-php::before{content:"PHP"}.single .content .highlight>.chroma.language-perl::before{content:"Perl"}.single .content .highlight>.chroma.language-python::before{content:"Python"}.single .content .highlight>.chroma.language-r::before{content:"R"}.single .content .highlight>.chroma.language-ruby::before{content:"Ruby"}.single .content .highlight>.chroma.language-rust::before{content:"Rust"}.single .content .highlight>.chroma.language-scala::before{content:"Scala"}.single .content .highlight>.chroma.language-scss::before{content:"Scss"}.single .content .highlight>.chroma.language-shell::before{content:"Shell"}.single .content .highlight>.chroma.language-sql::before{content:"SQL"}.single .content .highlight>.chroma.language-swift::before{content:"Swift"}.single .content .highlight>.chroma.language-tex::before{content:"TeX"}.single .content .highlight>.chroma.language-toml::before{content:"TOML"}.single .content .highlight>.chroma.language-ts::before{content:"TypeScript"}.single .content .highlight>.chroma.language-typescript::before{content:"TypeScript"}.single .content .highlight>.chroma.language-vue::before{content:"Vue"}.single .content .highlight>.chroma.language-yml::before{content:"YAML"}.single .content .highlight>.chroma.language-yaml::before{content:"YAML"}.single .content .highlight>.chroma table,.single .content .highlight>.chroma tr,.single .content .highlight>.chroma td{margin:0;border:none !important}.single .content .highlight>.chroma td{padding:.2rem .4rem}.single .content .highlight>.chroma .lntd:first-child{width:1.2rem}.single .content .highlight>.chroma .lntd:first-child .lnt{color:#b1b0b0}.single .content .highlight>.chroma .lntd:first-child .hl{font-weight:bolder}.single .content .highlight>.chroma .lntd:last-child .hl{display:block;background-color:#e8e8e8}.dark-theme .single .content .highlight>.chroma .lntd:last-child .hl{background-color:#1c2025}.single .content .highlight{font-family:Fira Mono,Source Code Pro,Menlo,Consolas,Monaco,monospace}.single .content .highlight .c,.single .content .highlight .ch,.single .content .highlight .cm,.single .content .highlight .c1,.single .content .highlight .cs,.single .content .highlight .cp,.single .content .highlight .cpf{font-style:italic}.single .content .highlight .gl{text-decoration:underline}.single .content .highlight .p{color:#a9a9b3}.single .content .highlight .k{color:#b501a9}.single .content .highlight .kc{color:#b501a9}.single .content .highlight .kd{color:#b501a9}.single .content .highlight .kn{color:#b501a9}.single .content .highlight .kp{color:#b501a9}.single .content .highlight .kr{color:#b501a9}.single .content .highlight .kt{color:#b501a9}.single .content .highlight .n{color:#333}.single .content .highlight .na{color:#2b77fa}.single .content .highlight .nb{color:#f74840}.single .content .highlight .bp{color:#f74840}.single .content .highlight .nc{color:#cb8100}.single .content .highlight .no{color:#2b77fa}.single .content .highlight .nd{color:#0086c1}.single .content .highlight .ni{color:#2b77fa}.single .content .highlight .ne{color:#2b77fa}.single .content .highlight .nf{color:#2b77fa}.single .content .highlight .fm{color:#1ccad6}.single .content .highlight .nl{color:#2b77fa}.single .content .highlight .nn{color:#2b77fa}.single .content .highlight .nx{color:#333}.single .content .highlight .py{color:#2b77fa}.single .content .highlight .nt{color:#2b77fa}.single .content .highlight .nv{color:#2b77fa}.single .content .highlight .vc{color:#2b77fa}.single .content .highlight .vg{color:#2b77fa}.single .content .highlight .vi{color:#2b77fa}.single .content .highlight .vm{color:#2b77fa}.single .content .highlight .l{color:#2aa198}.single .content .highlight .ld{color:#2aa198}.single .content .highlight .s{color:#24a443}.single .content .highlight .sa{color:#24a443}.single .content .highlight .sb{color:#24a443}.single .content .highlight .sc{color:#24a443}.single .content .highlight .dl{color:#24a443}.single .content .highlight .sd{color:#24a443}.single .content .highlight .s2{color:#24a443}.single .content .highlight .se{color:#24a443}.single .content .highlight .sh{color:#24a443}.single .content .highlight .si{color:#24a443}.single .content .highlight .sx{color:#24a443}.single .content .highlight .sr{color:#24a443}.single .content .highlight .s1{color:#24a443}.single .content .highlight .ss{color:#24a443}.single .content .highlight .m{color:#e2893c}.single .content .highlight .mb{color:#e2893c}.single .content .highlight .mf{color:#e2893c}.single .content .highlight .mh{color:#e2893c}.single .content .highlight .mi{color:#e2893c}.single .content .highlight .il{color:#e2893c}.single .content .highlight .mo{color:#e2893c}.single .content .highlight .o{color:#f19b04}.single .content .highlight .ow{color:#b501a9}.single .content .highlight .c{color:#a0a1a8}.single .content .highlight .ch{color:#a0a1a8}.single .content .highlight .cm{color:#a0a1a8}.single .content .highlight .c1{color:#a0a1a8}.single .content .highlight .cs{color:#a0a1a8}.single .content .highlight .cp{color:#a0a1a8}.single .content .highlight .cpf{color:#a0a1a8}.single .content .highlight .g{color:#e72d40}.single .content .highlight .gd{color:#e72d40}.single .content .highlight .ge{color:#e72d40}.single .content .highlight .gr{color:#e72d40}.single .content .highlight .gh{color:#e72d40}.single .content .highlight .gi{color:#e72d40}.single .content .highlight .go{color:#e72d40}.single .content .highlight .gp{color:#e72d40}.single .content .highlight .gs{color:#e72d40}.single .content .highlight .gu{color:#e72d40}.single .content .highlight .gt{color:#e72d40}.single .content .highlight .w{color:#bbb}.dark-theme .single .content .highlight .p{color:#a9a9b3}.dark-theme .single .content .highlight .k{color:#d371e3}.dark-theme .single .content .highlight .kc{color:#d371e3}.dark-theme .single .content .highlight .kd{color:#d371e3}.dark-theme .single .content .highlight .kn{color:#d371e3}.dark-theme .single .content .highlight .kp{color:#d371e3}.dark-theme .single .content .highlight .kr{color:#d371e3}.dark-theme .single .content .highlight .kt{color:#d371e3}.dark-theme .single .content .highlight .n{color:#a9b2c0}.dark-theme .single .content .highlight .na{color:#41b0f5}.dark-theme .single .content .highlight .nb{color:#19b9c4}.dark-theme .single .content .highlight .bp{color:#ecbf6f}.dark-theme .single .content .highlight .nc{color:#ecbf6f}.dark-theme .single .content .highlight .no{color:#41b0f5}.dark-theme .single .content .highlight .nd{color:#ecbf6f}.dark-theme .single .content .highlight .ni{color:#41b0f5}.dark-theme .single .content .highlight .ne{color:#41b0f5}.dark-theme .single .content .highlight .nf{color:#41b0f5}.dark-theme .single .content .highlight .fm{color:#19b9c4}.dark-theme .single .content .highlight .nl{color:#41b0f5}.dark-theme .single .content .highlight .nn{color:#41b0f5}.dark-theme .single .content .highlight .nx{color:#a9a9b3}.dark-theme .single .content .highlight .py{color:#41b0f5}.dark-theme .single .content .highlight .nt{color:#41b0f5}.dark-theme .single .content .highlight .nv{color:#41b0f5}.dark-theme .single .content .highlight .vc{color:#41b0f5}.dark-theme .single .content .highlight .vg{color:#41b0f5}.dark-theme .single .content .highlight .vi{color:#41b0f5}.dark-theme .single .content .highlight .vm{color:#41b0f5}.dark-theme .single .content .highlight .l{color:#2aa198}.dark-theme .single .content .highlight .ld{color:#2aa198}.dark-theme .single .content .highlight .s{color:#8cc570}.dark-theme .single .content .highlight .sa{color:#8cc570}.dark-theme .single .content .highlight .sb{color:#8cc570}.dark-theme .single .content .highlight .sc{color:#8cc570}.dark-theme .single .content .highlight .dl{color:#8cc570}.dark-theme .single .content .highlight .sd{color:#8cc570}.dark-theme .single .content .highlight .s2{color:#8cc570}.dark-theme .single .content .highlight .se{color:#8cc570}.dark-theme .single .content .highlight .sh{color:#8cc570}.dark-theme .single .content .highlight .si{color:#8cc570}.dark-theme .single .content .highlight .sx{color:#8cc570}.dark-theme .single .content .highlight .sr{color:#8cc570}.dark-theme .single .content .highlight .s1{color:#8cc570}.dark-theme .single .content .highlight .ss{color:#8cc570}.dark-theme .single .content .highlight .m{color:#db985c}.dark-theme .single .content .highlight .mb{color:#db985c}.dark-theme .single .content .highlight .mf{color:#db985c}.dark-theme .single .content .highlight .mh{color:#db985c}.dark-theme .single .content .highlight .mi{color:#db985c}.dark-theme .single .content .highlight .il{color:#db985c}.dark-theme .single .content .highlight .mo{color:#db985c}.dark-theme .single .content .highlight .o{color:#ecbf6f}.dark-theme .single .content .highlight .ow{color:#d371e3}.dark-theme .single .content .highlight .c{color:#7e848f}.dark-theme .single .content .highlight .ch{color:#7e848f}.dark-theme .single .content .highlight .cm{color:#7e848f}.dark-theme .single .content .highlight .c1{color:#7e848f}.dark-theme .single .content .highlight .cs{color:#7e848f}.dark-theme .single .content .highlight .cp{color:#7e848f}.dark-theme .single .content .highlight .cpf{color:#7e848f}.dark-theme .single .content .highlight .g{color:#f16372}.dark-theme .single .content .highlight .gd{color:#f16372}.dark-theme .single .content .highlight .ge{color:#f16372}.dark-theme .single .content .highlight .gr{color:#f16372}.dark-theme .single .content .highlight .gh{color:#f16372}.dark-theme .single .content .highlight .gi{color:#f16372}.dark-theme .single .content .highlight .go{color:#f16372}.dark-theme .single .content .highlight .gp{color:#f16372}.dark-theme .single .content .highlight .gs{color:#f16372}.dark-theme .single .content .highlight .gu{color:#f16372}.dark-theme .single .content .highlight .gt{color:#f16372}.dark-theme .single .content .highlight .w{color:#bbb}.single .content .admonition{position:relative;margin:.9765em 0;padding:0 .75rem;background-color:rgba(68,138,255,0.1);border-left:0.25rem solid #448aff;overflow:auto}.single .content .admonition .admonition-title{margin:0 -0.75rem;padding:.5rem .75rem .5rem 2.5rem;border-bottom:0.1rem solid rgba(68,138,255,0.1);background-color:rgba(68,138,255,0.1);font-weight:700}.single .content .admonition i.icon{font-size:16px;color:#448aff;cursor:auto;position:absolute;left:.75rem;top:.75rem}.single .content .admonition.note{border-left-color:#448aff}.single .content .admonition.note i.icon{color:#448aff}.single .content .admonition.abstract{border-left-color:#00b0ff}.single .content .admonition.abstract i.icon{color:#00b0ff}.single .content .admonition.info{border-left-color:#00b8d4}.single .content .admonition.info i.icon{color:#00b8d4}.single .content .admonition.tip{border-left-color:#00bfa5}.single .content .admonition.tip i.icon{color:#00bfa5}.single .content .admonition.success{border-left-color:#00c853}.single .content .admonition.success i.icon{color:#00c853}.single .content .admonition.question{border-left-color:#64dd17}.single .content .admonition.question i.icon{color:#64dd17}.single .content .admonition.warning{border-left-color:#ff9100}.single .content .admonition.warning i.icon{color:#ff9100}.single .content .admonition.failure{border-left-color:#ff5252}.single .content .admonition.failure i.icon{color:#ff5252}.single .content .admonition.danger{border-left-color:#ff1744}.single .content .admonition.danger i.icon{color:#ff1744}.single .content .admonition.bug{border-left-color:#f50057}.single .content .admonition.bug i.icon{color:#f50057}.single .content .admonition.example{border-left-color:#651fff}.single .content .admonition.example i.icon{color:#651fff}.single .content .admonition.quote{border-left-color:#9e9e9e}.single .content .admonition.quote i.icon{color:#9e9e9e}.single .content .admonition.note{background-color:rgba(68,138,255,0.1)}.single .content .admonition.note .admonition-title{border-bottom-color:rgba(68,138,255,0.1);background-color:rgba(68,138,255,0.1)}.single .content .admonition.abstract{background-color:rgba(0,176,255,0.1)}.single .content .admonition.abstract .admonition-title{border-bottom-color:rgba(0,176,255,0.1);background-color:rgba(0,176,255,0.1)}.single .content .admonition.info{background-color:rgba(0,184,212,0.1)}.single .content .admonition.info .admonition-title{border-bottom-color:rgba(0,184,212,0.1);background-color:rgba(0,184,212,0.1)}.single .content .admonition.tip{background-color:rgba(0,191,165,0.1)}.single .content .admonition.tip .admonition-title{border-bottom-color:rgba(0,191,165,0.1);background-color:rgba(0,191,165,0.1)}.single .content .admonition.success{background-color:rgba(0,200,83,0.1)}.single .content .admonition.success .admonition-title{border-bottom-color:rgba(0,200,83,0.1);background-color:rgba(0,200,83,0.1)}.single .content .admonition.question{background-color:rgba(100,221,23,0.1)}.single .content .admonition.question .admonition-title{border-bottom-color:rgba(100,221,23,0.1);background-color:rgba(100,221,23,0.1)}.single .content .admonition.warning{background-color:rgba(255,145,0,0.1)}.single .content .admonition.warning .admonition-title{border-bottom-color:rgba(255,145,0,0.1);background-color:rgba(255,145,0,0.1)}.single .content .admonition.failure{background-color:rgba(255,82,82,0.1)}.single .content .admonition.failure .admonition-title{border-bottom-color:rgba(255,82,82,0.1);background-color:rgba(255,82,82,0.1)}.single .content .admonition.danger{background-color:rgba(255,23,68,0.1)}.single .content .admonition.danger .admonition-title{border-bottom-color:rgba(255,23,68,0.1);background-color:rgba(255,23,68,0.1)}.single .content .admonition.bug{background-color:rgba(245,0,87,0.1)}.single .content .admonition.bug .admonition-title{border-bottom-color:rgba(245,0,87,0.1);background-color:rgba(245,0,87,0.1)}.single .content .admonition.example{background-color:rgba(101,31,255,0.1)}.single .content .admonition.example .admonition-title{border-bottom-color:rgba(101,31,255,0.1);background-color:rgba(101,31,255,0.1)}.single .content .admonition.quote{background-color:rgba(158,158,158,0.1)}.single .content .admonition.quote .admonition-title{border-bottom-color:rgba(158,158,158,0.1);background-color:rgba(158,158,158,0.1)}.single .content .admonition:last-child{margin-bottom:.75rem}.single .content details.admonition summary{display:block;outline:none;cursor:pointer}.single .content details.admonition summary::-webkit-details-marker{display:none}.single .content details.admonition summary i.details{position:absolute;top:.75rem;right:.75rem;color:#161209}.dark-theme .single .content details.admonition summary i.details{color:#a9a9b3}.single .content details.admonition[open] i.details{transform:rotate(180deg)}.single .content .echarts{width:100%;height:30rem;margin:3% auto;text-align:center}.single .content .bilibili{position:relative;width:100%;height:0;padding-bottom:75%;margin:3% auto;text-align:center}.single .content .bilibili iframe{position:absolute;width:100%;height:100%;left:0;top:0}.single .content hr{margin:1rem 0;position:relative;border-top:1px dashed #dcdcdc;border-bottom:none}.dark-theme .single .content hr{border-top:1px dashed #4a4b50}.single .content kbd{display:inline-block;padding:.25rem;background-color:#fff;border:1px solid #dcdcdc;border-bottom-color:#dcdcdc;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 #dcdcdc;box-shadow:inset 0 -1px 0 #dcdcdc;font-size:.8rem;font-family:Fira Mono,Source Code Pro,Menlo,Consolas,Monaco,monospace;color:#E74C3C}.dark-theme .single .content kbd{background-color:#292a2d;border:1px solid #4a4b50;border-bottom-color:#4a4b50;-webkit-box-shadow:inset 0 -1px 0 #4a4b50;box-shadow:inset 0 -1px 0 #4a4b50;color:#E5BF78}.single .content .typeit .code{padding:.375rem;font-size:.875rem;font-family:Fira Mono,Source Code Pro,Menlo,Consolas,Monaco,monospace;font-weight:bold;word-break:break-all}.single .content .align-left{text-align:left}.single .content .align-center{text-align:center}.single .content .align-right{text-align:right}.single .content .float-left{float:left}.single .content .float-right{float:right}.single .post-footer{margin-top:3rem}.single .post-footer .post-info{border-bottom:1px solid #dcdcdc;padding:1rem 0 0.3rem}.dark-theme .single .post-footer .post-info{border-bottom:1px solid #4a4b50}.single .post-footer .post-info .post-info-line{display:flex;justify-content:space-between}.single .post-footer .post-info .post-info-line .post-info-mod{font-size:0.8em;color:#a9a9b3}.dark-theme .single .post-footer .post-info .post-info-line .post-info-mod{color:#5d5d5f}.single .post-footer .post-info .post-info-line .post-info-license{font-size:0.8em;color:#a9a9b3}.dark-theme .single .post-footer .post-info .post-info-line .post-info-license{color:#5d5d5f}.single .post-footer .post-info .post-info-line .post-info-md{width:8rem}.single .post-footer .post-info .post-info-line .post-info-md a{font-size:0.8rem;color:#2d96bd}.dark-theme .single .post-footer .post-info .post-info-line .post-info-md a{color:#eee}.single .post-footer .post-info .post-info-line .post-info-md a:hover{color:#ef3982}.dark-theme .single .post-footer .post-info .post-info-line .post-info-md a:hover{color:#2d96bd}.single .post-footer .post-info-more{padding:0.3rem 0 1rem;display:flex;justify-content:space-between;font-size:0.9rem}.single .post-footer .post-nav::before,.single .post-footer .post-nav::after{content:' ';display:table}.single .post-footer .post-nav a.prev,.single .post-footer .post-nav a.next{font-size:1rem;font-weight:600;transition-duration:.3s;transition-property:transform;transition-timing-function:ease-out}.single .post-footer .post-nav a.prev{float:left}.single .post-footer .post-nav a.prev:hover{transform:translateX(-4px)}.single .post-footer .post-nav a.next{float:right}.single .post-footer .post-nav a.next:hover{transform:translateX(4px)}.single .comment{padding:4rem 0}.special .single-title{text-align:right;padding-bottom:2rem}.archive .single-title{text-align:right;padding-bottom:2rem}.archive .archive-item{margin-left:2rem}.archive .categories-card{margin:0 auto;margin-top:3rem;display:flex;align-items:center;justify-content:space-between;flex-direction:row;flex-wrap:wrap;padding:0 2.5rem;line-height:1.6rem}.archive .categories-card .card-item{font-size:.875rem;text-align:left;width:45%;display:flex;align-items:flex-start;margin-top:2rem;min-height:10rem;padding:0 2%;position:relative}.archive .categories-card .card-item .card-item-wrapper{width:100%;overflow:hidden}.archive .categories-card .card-item .card-item-wrapper .card-item-title{font-size:1.2rem;font-weight:bold;display:inline-block}.archive .categories-card .card-item .card-item-wrapper span{float:right;padding-right:1rem}.archive .archive-item-link{display:inline-block;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:95%}.archive .archive-item-link:hover{color:#2d96bd;background-color:transparent}.dark-theme .archive .archive-item-link{color:#a9a9b3;text-decoration:none;transition:color 0.2s ease, border-color 0.2s ease, background 0.2s ease, opacity 0.2s ease}.dark-theme .archive .archive-item-link:hover{color:#fff;text-decoration:none;transition:color 0.2s ease, border-color 0.2s ease, background 0.2s ease, opacity 0.2s ease}.archive .archive-item-date{float:right;text-align:right;color:#a9a9b3}.dark-theme .archive .archive-item-date{color:#5d5d5f}.archive .more-post{text-align:right}.archive .tag-cloud-tags{margin:10px 0}.archive .tag-cloud-tags a{display:inline-block;position:relative;margin:5px 10px;overflow-wrap:break-word;transition-duration:.3s;transition-property:transform;transition-timing-function:ease-out}.archive .tag-cloud-tags a:active,.archive .tag-cloud-tags a:focus,.archive .tag-cloud-tags a:hover{color:#2d96bd;transform:scale(1.1)}.dark-theme .archive .tag-cloud-tags a:active,.dark-theme .archive .tag-cloud-tags a:focus,.dark-theme .archive .tag-cloud-tags a:hover{color:#fff}.archive .tag-cloud-tags a small{color:#a9a9b3}.dark-theme .archive .tag-cloud-tags a small{color:#fff}.home .home-profile{transform:translateY(0);padding:2rem 0;text-align:center}.home .home-profile .home-avatar{padding:0.6rem}.home .home-profile .home-avatar img{width:6rem;height:auto;display:inline-block;-webkit-border-radius:100%;border-radius:100%;-webkit-box-shadow:0 0 0 0.3618em rgba(0,0,0,0.05);box-shadow:0 0 0 0.3618em rgba(0,0,0,0.05);margin:0 auto;-webkit-transition:all ease 0.4s;-moz-transition:all ease 0.4s;-o-transition:all ease 0.4s;transition:all ease 0.4s;cursor:pointer}.home .home-profile .home-avatar img:hover{position:relative;-webkit-transform:translateY(-0.75rem);-moz-transform:translateY(-0.75rem);-ms-transform:translateY(-0.75rem);-o-transform:translateY(-0.75rem);transform:translateY(-0.75rem);cursor:pointer}.home .home-profile .home-description{font-size:1rem;font-weight:normal;margin:0;padding:.4rem}.home .home-profile .home-social-links{padding-top:.6rem}.home .home-profile .home-social-links i{font-size:1.45rem}.home .home-profile .home-social-links img{width:1.5rem;height:1.5rem}.home .summary{padding-top:1rem;padding-bottom:.8rem;color:#161209;border-bottom:1px dashed #dcdcdc}.dark-theme .home .summary{color:#a9a9b3;border-bottom:1px dashed #4a4b50}.home .summary .featured-image-preview{width:100%;padding:30% 0 0;position:relative;margin:0.6rem auto}.home .summary .featured-image-preview img{position:absolute;width:100%;height:100%;left:0;top:0;object-fit:cover}.home .summary .single-title{font-size:1.6rem}.home .summary .meta{font-size:.875rem !important}.home .summary .meta a{color:#a9a9b3 !important}.dark-theme .home .summary .meta a{color:#5d5d5f !important}.home .summary .meta a:hover{color:#2d96bd !important}.dark-theme .home .summary .meta a:hover{color:#fff !important}.home .summary .content{display:-moz-box;display:-webkit-box;-moz-box-orient:vertical;-webkit-box-orient:vertical;-webkit-line-clamp:3;margin-top:.3rem;width:100%;overflow:hidden;text-overflow:ellipsis;overflow-wrap:break-word}.home .summary h1,.home .summary h2,.home .summary h3,.home .summary h4,.home .summary h5,.home .summary h6,.home .summary p{font-size:1rem;display:inline}.home .summary h1::after,.home .summary h2::after,.home .summary h3::after,.home .summary h4::after,.home .summary h5::after,.home .summary h6::after,.home .summary p::after{content:"\A";white-space:pre}.home .summary h1,.home .summary h2,.home .summary h3,.home .summary h4,.home .summary h5,.home .summary h6{line-height:2}.home .summary .post-footer{margin-top:.5rem;display:flex;justify-content:space-between;align-items:center;font-size:.875rem !important}.home .summary .post-footer a{color:#2d96bd !important}.dark-theme .home .summary .post-footer a{color:#eee !important}.home .summary .post-footer a:hover{color:#ef3982 !important}.dark-theme .home .summary .post-footer a:hover{color:#2d96bd !important}.home .summary .post-footer .post-tags{padding:0}.home .summary .post-footer .post-tags a{color:#161209 !important}.dark-theme .home .summary .post-footer .post-tags a{color:#a9a9b3 !important}.home .summary .post-footer .post-tags a:hover{color:#2d96bd !important}.dark-theme .home .summary .post-footer .post-tags a:hover{color:#fff !important}#content-404{font-size:1.8rem;line-height:3rem;transform:translateY(30vh);text-align:center}header{width:100%;z-index:100;background-color:#f8f8f8}.dark-theme header{background-color:#252627}#header-desktop{display:block;position:fixed;height:4rem;line-height:4rem}#header-desktop .header-wrapper{width:auto;text-align:center;margin:0 4rem;display:flex;justify-content:space-between}#header-desktop .header-wrapper .header-title a{padding:0 8px;font-size:1.25rem}#header-desktop .header-wrapper .header-title a i{line-height:2rem}#header-desktop .header-wrapper .menu a{padding:0 8px}#header-desktop .header-wrapper .menu a.active{font-weight:900;color:#161209}.dark-theme #header-desktop .header-wrapper .menu a.active{color:#fff}#header-mobile{display:none;position:fixed;height:4rem;line-height:4rem}#header-mobile .header-wrapper{padding:0;margin:0;transition:all 0.3s ease 0s}#header-mobile .header-wrapper .header-container{display:flex;justify-content:space-between;align-items:center;width:100%;font-size:1.125rem;padding-right:1rem;padding-left:1rem;box-sizing:border-box}#header-mobile .header-wrapper .header-container .header-title{font-size:1.25rem}#header-mobile .header-wrapper .header-container .menu-toggle{cursor:pointer;line-height:4rem}#header-mobile .header-wrapper .header-container .menu-toggle span{display:block;background:#161209;width:1.5rem;height:2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-transition:.1s margin .1s, .1s transform;-moz-transition:.1s margin .1s, .1s transform;transition:.1s margin .1s, .1s transform}.dark-theme #header-mobile .header-wrapper .header-container .menu-toggle span{background:#a9a9b3}#header-mobile .header-wrapper .header-container .menu-toggle span:nth-child(1){margin-bottom:.5rem}#header-mobile .header-wrapper .header-container .menu-toggle span:nth-child(3){margin-top:.5rem}#header-mobile .header-wrapper .header-container .menu-toggle.active span{-webkit-transition:.1s margin, .1s transform .1s;-moz-transition:.1s margin, .1s transform .1s;transition:.1s margin, .1s transform .1s}#header-mobile .header-wrapper .header-container .menu-toggle.active span:nth-child(1){-moz-transform:rotate(45deg) translate(0.4rem, 0.5rem);-ms-transform:rotate(45deg) translate(0.4rem, 0.5rem);-webkit-transform:rotate(45deg) translate(0.4rem, 0.5rem);transform:rotate(45deg) translate(0.4rem, 0.5rem)}#header-mobile .header-wrapper .header-container .menu-toggle.active span:nth-child(2){opacity:0}#header-mobile .header-wrapper .header-container .menu-toggle.active span:nth-child(3){-moz-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-ms-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-webkit-transform:rotate(-45deg) translate(0.4rem, -0.5rem);transform:rotate(-45deg) translate(0.4rem, -0.5rem)}#header-mobile .header-wrapper .menu{text-align:center;background:#fff;border-top:2px solid #161209;display:none;box-shadow:0px 2px 4px rgba(0,0,0,0.1),0px 4px 8px rgba(0,0,0,0.1)}#header-mobile .header-wrapper .menu a{display:block;line-height:2.5rem}#header-mobile .header-wrapper .menu.active{display:block}.dark-theme #header-mobile .header-wrapper .menu{background:#292a2d;border-top:2px solid #a9a9b3}.copyright{font-size:.875rem}.copyright .copyright-line{width:100%}.copyright .copyright-line .icp-br{display:none}.dynamic-to-top{display:none;overflow:hidden;width:auto;z-index:90;position:fixed;bottom:2rem;right:2rem;top:auto;left:auto;font-family:sans-serif;font-size:1rem;color:#fff;text-decoration:none;text-shadow:0 1px 0 #333;font-weight:bold;padding:1rem 1rem;border:1px solid #dcdcdc;background:#222;outline:none}.dynamic-to-top:hover{background:#000;cursor:pointer}.dynamic-to-top:active{background:#000;outline:none}.dynamic-to-top:focus,.dynamic-to-top:hover{outline:none}.dynamic-to-top span{display:block;overflow:hidden;width:.875rem;height:.75rem;background:url("data:image/png;base64,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") no-repeat center center}.dark-theme .dynamic-to-top{border:1px solid #4a4b50}.pagination{display:flex;flex-direction:row;justify-content:center;list-style:none;white-space:nowrap;width:100%;padding:1rem 0 0}.pagination a{-webkit-font-smoothing:antialiased;font-size:.8rem;color:#bfbfbf;letter-spacing:.1rem;font-weight:700;padding:5px 5px;text-decoration:none;transition:0.3s}.pagination li{padding-bottom:3px;margin:0 20px;box-sizing:border-box;position:relative;display:inline}.pagination li.disabled{display:none}.pagination li:hover a{color:#000}.dark-theme .pagination li:hover a{color:#fff}.pagination li:before,.pagination li:after{position:absolute;content:"";width:0;height:3px;background:#000;transition:0.3s;bottom:0px}.dark-theme .pagination li:before,.dark-theme .pagination li:after{background:#fff}.pagination li:before .active,.pagination li:after .active{width:100%}.pagination li:before{left:50%}.pagination li:after{right:50%}.pagination li:hover:before,.pagination li:hover:after{width:50%}.pagination li.active a{color:#000}.dark-theme .pagination li.active a{color:#fff}.pagination li.active:before,.pagination li.active:after{width:60%}@media only screen and (max-width: 1800px){.page{max-width:780px}.page .post-toc{width:300px;margin-left:800px}}@media only screen and (max-width: 1440px){.page{max-width:680px}.page .post-toc{width:240px;margin-left:700px}}@media only screen and (max-width: 1200px){.page{max-width:560px}.page .post-toc{width:180px;margin-left:580px}}@media only screen and (max-width: 960px){#header-desktop .header-wrapper{margin:0 1rem}.page{max-width:80%}.page .post-toc{display:none}.page .post-toc-mobile{display:block}}@media only screen and (max-width: 560px){#header-desktop{display:none}#header-mobile{display:block}.page{max-width:100%;padding-top:6rem}.page .categories-card .card-item{width:100%}.copyright .copyright-line .icp-splitter{display:none}.copyright .copyright-line .icp-br{display:block}} +@import url(https://fonts.googleapis.com/css?family=Lato:100,300,400,700,900);@import url("https://fonts.googleapis.com/css?family=Fira+Mono:400,700&display=swap&subset=latin-ext");/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace, monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html{font-family:Lato,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft Yahei,Segoe UI,Helvetica,Arial,sans-serif,Segoe UI Emoji;font-size:16px;width:100%}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background-color:#87878d}::-webkit-scrollbar-thumb:hover{background-color:#a9a9b3}::selection{background:rgba(38,139,211,0.2)}.dark-theme ::selection{background:rgba(38,139,211,0.3)}body{font-weight:400;line-height:1.5rem;background-color:#fff;color:#161209;overflow-wrap:break-word}body::before{content:"";background-repeat:no-repeat;background-position:center;opacity:0.05;position:fixed;top:0;left:0;width:100%;height:100%;z-index:-1;-webkit-filter:grayscale(100%);-moz-filter:grayscale(100%);-ms-filter:grayscale(100%);-o-filter:grayscale(100%);filter:grayscale(100%);filter:gray}body.dark-theme{color:#a9a9b3;background-color:#292a2d}a{color:#161209;text-decoration:none;transition:color 0.2s ease, border-color 0.2s ease, background 0.2s ease, opacity 0.2s ease}a:hover{color:#2d96bd}.dark-theme a{color:#a9a9b3}.dark-theme a:hover{color:#fff}.wrapper{display:flex;flex-direction:column;min-height:97.5vh;width:100%}.wrapper main{flex:1 0 auto}.wrapper main .container{padding-left:1rem;padding-right:1rem}.footer{height:2rem;width:100%;text-align:center;line-height:1.5rem;padding-top:2rem}.page{position:relative;width:100%;max-width:980px;margin:0 auto;padding-top:6rem}.single .single-title{margin:0;font-size:1.8rem;line-height:3rem}.single .meta{font-size:.88rem;color:#a9a9b3}.single .meta span{display:inline-block}.dark-theme .single .meta{color:#5d5d5f}.single .meta a{color:#2d96bd}.dark-theme .single .meta a{color:#eee}.single .meta a:hover{color:#ef3982}.dark-theme .single .meta a:hover{color:#2d96bd}.single .meta .author{font-size:1.05rem}.single .featured-image{padding-top:.6rem}.single .featured-image img{display:block;max-width:100%;height:auto;margin:0 auto;overflow:hidden}.single #toc-auto{display:block;position:absolute;width:100%;margin-left:1000px;padding:0 .8rem;border-left:1px solid #dcdcdc;overflow-wrap:break-word;box-sizing:border-box;top:12rem}.dark-theme .single #toc-auto{border-left:1px solid #4a4b50}.single #toc-auto .toc-title{font-weight:400;margin:.8rem 0;text-transform:uppercase}.single #toc-auto .toc-content.always-active ul{display:block}.single #toc-auto .toc-content>nav>ul{margin:.625rem 0}.single #toc-auto .toc-content ul{text-indent:-0.85rem;padding-left:.625rem;list-style:none}.single #toc-auto .toc-content ul a::before{content:"|";font-weight:bolder;margin-right:.5rem;color:#2d96bd}.dark-theme .single #toc-auto .toc-content ul a::before{color:#eee}.single #toc-auto .toc-content ul ul{padding-left:1.25rem;display:none}.single #toc-auto .toc-content ul .has-active>ul{display:block}.single #toc-auto .toc-content a.active{font-weight:bold;color:#2d96bd}.dark-theme .single #toc-auto .toc-content a.active{color:#eee}.single #toc-auto .toc-content a.active::before{color:#ef3982}.dark-theme .single #toc-auto .toc-content a.active::before{color:#2d96bd}.single #toc-static{display:none;padding-top:.8rem}.single #toc-static details summary .toc-title{display:block;display:flex;justify-content:space-between;font-size:1.2em;font-weight:bold;line-height:2em;padding:0 .625rem;background:#f5f5f5}.single #toc-static details summary .toc-title i.details{line-height:2em}.dark-theme .single #toc-static details summary .toc-title{background:#272C34}.single #toc-static details summary::-webkit-details-marker{display:none}.single #toc-static details[open] i.details{transform:rotate(180deg)}.single #toc-static .toc-content{border:2px solid #f5f5f5}.single #toc-static .toc-content>nav>ul{margin:.625rem 0}.single #toc-static .toc-content ul{padding-left:.625rem;list-style:none}.single #toc-static .toc-content ul ul{padding-left:1.25rem}.dark-theme .single #toc-static .toc-content{border:2px solid #272C34}.single .content h1,.single .content h2,.single .content h3,.single .content h4,.single .content h5,.single .content h6{font-weight:bold;margin:1.2rem 0}.dark-theme .single .content h1,.dark-theme .single .content h2,.dark-theme .single .content h3,.dark-theme .single .content h4,.dark-theme .single .content h5,.dark-theme .single .content h6{font-weight:bolder}.single .content h2>a:first-child::before{content:"#";margin-right:.3125rem;color:#2d96bd}.dark-theme .single .content h2>a:first-child::before{color:#eee}.single .content h3>a:first-child::before,.single .content h4>a:first-child::before,.single .content h5>a:first-child::before,.single .content h6>a:first-child::before{content:"|";margin-right:.3125rem;color:#2d96bd}.dark-theme .single .content h3>a:first-child::before,.dark-theme .single .content h4>a:first-child::before,.dark-theme .single .content h5>a:first-child::before,.dark-theme .single .content h6>a:first-child::before{color:#eee}.single .content p{font-size:1rem;margin:.5rem 0}.single .content a{word-break:break-all;color:#2d96bd}.dark-theme .single .content a{color:#eee}.single .content a:hover{color:#ef3982}.dark-theme .single .content a:hover:hover{color:#2d96bd;font-weight:bold}.single .content ul{padding-left:2rem;list-style-type:disc}.single .content ruby{background:#f5f5f5}.single .content ruby rt{color:#a9a9b3}.dark-theme .single .content ruby{background:#272C34}.dark-theme .single .content ruby rt{color:#5d5d5f}.single .content .table-wrapper{overflow-x:auto}.single .content .table-wrapper::-webkit-scrollbar{background-color:#fff}.dark-theme .single .content .table-wrapper::-webkit-scrollbar{background-color:#272c34}.single .content .table-wrapper>table{width:100%;max-width:100%;margin:.625rem 0;border-spacing:0;background:#fff}.dark-theme .single .content .table-wrapper>table{background:#272c34}.single .content .table-wrapper>table thead{background:#ededed}.dark-theme .single .content .table-wrapper>table thead{background-color:#20252b}.single .content .table-wrapper>table th,.single .content .table-wrapper>table td{padding:.3rem 1rem;border:1px double #dcdcdc}.dark-theme .single .content .table-wrapper>table th,.dark-theme .single .content .table-wrapper>table td{border:1px double #4a4b50}.single .content figure{text-align:center}.single .content .image-caption:not(:empty){min-width:20%;max-width:80%;display:inline-block;padding:.625rem;margin:0 auto;border-bottom:1px solid #d9d9d9;font-size:.875rem;color:#969696;line-height:1.7}.single .content img{display:block;max-width:100%;height:auto;margin:0 auto;overflow:hidden}.single .content blockquote{font-size:1rem;display:block;border-width:1px 0;border-style:solid;border-color:#dcdcdc;padding:1.5em 1.2em 0.5em 1.2em;margin:0 0 2em 0;position:relative}.single .content blockquote::before{content:'\201C';position:absolute;top:0em;left:50%;transform:translate(-50%, -50%);width:3rem;height:2rem;font:6em/1.08em 'PT Sans', sans-serif;color:#2d96bd;text-align:center}.dark-theme .single .content blockquote::before{color:#eee}.single .content blockquote::after{content:"#blockquote" attr(cite);display:block;text-align:right;font-size:0.875em;color:#2d96bd}.dark-theme .single .content blockquote::after{color:#eee}.dark-theme .single .content blockquote{border-color:#4a4b50}.single .content .footnotes{color:#a9a9b3}.dark-theme .single .content .footnotes{color:#5d5d5f}.single .content code{font-size:13px;font-family:Fira Mono,Source Code Pro,Menlo,Consolas,Monaco,monospace;padding:.2rem .4rem;color:#E74C3C}.dark-theme .single .content code{color:#E5BF78}.single .content code,.single .content pre,.single .content .highlight table,.single .content .highlight tr,.single .content .highlight td{background:#f5f5f5}.dark-theme .single .content code,.dark-theme .single .content pre,.dark-theme .single .content .highlight table,.dark-theme .single .content .highlight tr,.dark-theme .single .content .highlight td{background:#272C34}.single .content .highlight>.chroma{margin:1rem 0;line-height:18px}.single .content .highlight>.chroma code,.single .content .highlight>.chroma pre{margin:0;padding:0}.single .content .highlight>.chroma::before{display:block;padding:.4rem;font-family:Lato,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft Yahei,Segoe UI,Helvetica,Arial,sans-serif,Segoe UI Emoji;font-size:13px;font-weight:bold;color:#b1b0b0;background:#ededed;content:'Code'}.dark-theme .single .content .highlight>.chroma::before{color:#b1b0b0;background:#20252b}.single .content .highlight>.chroma.language-bash::before{content:"Bash"}.single .content .highlight>.chroma.language-c::before{content:"C"}.single .content .highlight>.chroma.language-cs::before{content:"C#"}.single .content .highlight>.chroma.language-cpp::before{content:"C++"}.single .content .highlight>.chroma.language-clojure::before{content:"Clojure"}.single .content .highlight>.chroma.language-coffeescript::before{content:"CoffeeScript"}.single .content .highlight>.chroma.language-css::before{content:"CSS"}.single .content .highlight>.chroma.language-dart::before{content:"Dart"}.single .content .highlight>.chroma.language-diff::before{content:"Diff"}.single .content .highlight>.chroma.language-erlang::before{content:"Erlang"}.single .content .highlight>.chroma.language-go::before{content:"Go"}.single .content .highlight>.chroma.language-go-html-template::before{content:"Go HTML Template"}.single .content .highlight>.chroma.language-groovy::before{content:"Groovy"}.single .content .highlight>.chroma.language-haskell::before{content:"Haskell"}.single .content .highlight>.chroma.language-html::before{content:"HTML"}.single .content .highlight>.chroma.language-http::before{content:"HTTP"}.single .content .highlight>.chroma.language-xml::before{content:"XML"}.single .content .highlight>.chroma.language-java::before{content:"Java"}.single .content .highlight>.chroma.language-js::before{content:"JavaScript"}.single .content .highlight>.chroma.language-javascript::before{content:"JavaScript"}.single .content .highlight>.chroma.language-json::before{content:"JSON"}.single .content .highlight>.chroma.language-kotlin::before{content:"Kotlin"}.single .content .highlight>.chroma.language-latex::before{content:"LaTeX"}.single .content .highlight>.chroma.language-less::before{content:"Less"}.single .content .highlight>.chroma.language-lisp::before{content:"Lisp"}.single .content .highlight>.chroma.language-lua::before{content:"Lua"}.single .content .highlight>.chroma.language-makefile::before{content:"Makefile"}.single .content .highlight>.chroma.language-markdown::before{content:"Markdown"}.single .content .highlight>.chroma.language-matlab::before{content:"Matlab"}.single .content .highlight>.chroma.language-objectivec::before{content:"Objective-C"}.single .content .highlight>.chroma.language-php::before{content:"PHP"}.single .content .highlight>.chroma.language-perl::before{content:"Perl"}.single .content .highlight>.chroma.language-python::before{content:"Python"}.single .content .highlight>.chroma.language-r::before{content:"R"}.single .content .highlight>.chroma.language-ruby::before{content:"Ruby"}.single .content .highlight>.chroma.language-rust::before{content:"Rust"}.single .content .highlight>.chroma.language-scala::before{content:"Scala"}.single .content .highlight>.chroma.language-scss::before{content:"Scss"}.single .content .highlight>.chroma.language-shell::before{content:"Shell"}.single .content .highlight>.chroma.language-sql::before{content:"SQL"}.single .content .highlight>.chroma.language-swift::before{content:"Swift"}.single .content .highlight>.chroma.language-tex::before{content:"TeX"}.single .content .highlight>.chroma.language-toml::before{content:"TOML"}.single .content .highlight>.chroma.language-ts::before{content:"TypeScript"}.single .content .highlight>.chroma.language-typescript::before{content:"TypeScript"}.single .content .highlight>.chroma.language-vue::before{content:"Vue"}.single .content .highlight>.chroma.language-yml::before{content:"YAML"}.single .content .highlight>.chroma.language-yaml::before{content:"YAML"}.single .content .highlight>.chroma table,.single .content .highlight>.chroma tr,.single .content .highlight>.chroma td{margin:0;border:none !important}.single .content .highlight>.chroma td{padding:.2rem .4rem}.single .content .highlight>.chroma .lntd:first-child{width:1.2rem}.single .content .highlight>.chroma .lntd:first-child .lnt{color:#b1b0b0}.single .content .highlight>.chroma .lntd:first-child .hl{font-weight:bolder}.single .content .highlight>.chroma .lntd:last-child .hl{display:block;background-color:#e8e8e8}.dark-theme .single .content .highlight>.chroma .lntd:last-child .hl{background-color:#1c2025}.single .content .highlight{font-family:Fira Mono,Source Code Pro,Menlo,Consolas,Monaco,monospace}.single .content .highlight .c,.single .content .highlight .ch,.single .content .highlight .cm,.single .content .highlight .c1,.single .content .highlight .cs,.single .content .highlight .cp,.single .content .highlight .cpf{font-style:italic}.single .content .highlight .gl{text-decoration:underline}.single .content .highlight .p{color:#a9a9b3}.single .content .highlight .k{color:#b501a9}.single .content .highlight .kc{color:#b501a9}.single .content .highlight .kd{color:#b501a9}.single .content .highlight .kn{color:#b501a9}.single .content .highlight .kp{color:#b501a9}.single .content .highlight .kr{color:#b501a9}.single .content .highlight .kt{color:#b501a9}.single .content .highlight .n{color:#333}.single .content .highlight .na{color:#2b77fa}.single .content .highlight .nb{color:#f74840}.single .content .highlight .bp{color:#f74840}.single .content .highlight .nc{color:#cb8100}.single .content .highlight .no{color:#2b77fa}.single .content .highlight .nd{color:#0086c1}.single .content .highlight .ni{color:#2b77fa}.single .content .highlight .ne{color:#2b77fa}.single .content .highlight .nf{color:#2b77fa}.single .content .highlight .fm{color:#1ccad6}.single .content .highlight .nl{color:#2b77fa}.single .content .highlight .nn{color:#2b77fa}.single .content .highlight .nx{color:#333}.single .content .highlight .py{color:#2b77fa}.single .content .highlight .nt{color:#2b77fa}.single .content .highlight .nv{color:#2b77fa}.single .content .highlight .vc{color:#2b77fa}.single .content .highlight .vg{color:#2b77fa}.single .content .highlight .vi{color:#2b77fa}.single .content .highlight .vm{color:#2b77fa}.single .content .highlight .l{color:#2aa198}.single .content .highlight .ld{color:#2aa198}.single .content .highlight .s{color:#24a443}.single .content .highlight .sa{color:#24a443}.single .content .highlight .sb{color:#24a443}.single .content .highlight .sc{color:#24a443}.single .content .highlight .dl{color:#24a443}.single .content .highlight .sd{color:#24a443}.single .content .highlight .s2{color:#24a443}.single .content .highlight .se{color:#24a443}.single .content .highlight .sh{color:#24a443}.single .content .highlight .si{color:#24a443}.single .content .highlight .sx{color:#24a443}.single .content .highlight .sr{color:#24a443}.single .content .highlight .s1{color:#24a443}.single .content .highlight .ss{color:#24a443}.single .content .highlight .m{color:#e2893c}.single .content .highlight .mb{color:#e2893c}.single .content .highlight .mf{color:#e2893c}.single .content .highlight .mh{color:#e2893c}.single .content .highlight .mi{color:#e2893c}.single .content .highlight .il{color:#e2893c}.single .content .highlight .mo{color:#e2893c}.single .content .highlight .o{color:#f19b04}.single .content .highlight .ow{color:#b501a9}.single .content .highlight .c{color:#a0a1a8}.single .content .highlight .ch{color:#a0a1a8}.single .content .highlight .cm{color:#a0a1a8}.single .content .highlight .c1{color:#a0a1a8}.single .content .highlight .cs{color:#a0a1a8}.single .content .highlight .cp{color:#a0a1a8}.single .content .highlight .cpf{color:#a0a1a8}.single .content .highlight .g{color:#e72d40}.single .content .highlight .gd{color:#e72d40}.single .content .highlight .ge{color:#e72d40}.single .content .highlight .gr{color:#e72d40}.single .content .highlight .gh{color:#e72d40}.single .content .highlight .gi{color:#e72d40}.single .content .highlight .go{color:#e72d40}.single .content .highlight .gp{color:#e72d40}.single .content .highlight .gs{color:#e72d40}.single .content .highlight .gu{color:#e72d40}.single .content .highlight .gt{color:#e72d40}.single .content .highlight .w{color:#bbb}.dark-theme .single .content .highlight .p{color:#a9a9b3}.dark-theme .single .content .highlight .k{color:#d371e3}.dark-theme .single .content .highlight .kc{color:#d371e3}.dark-theme .single .content .highlight .kd{color:#d371e3}.dark-theme .single .content .highlight .kn{color:#d371e3}.dark-theme .single .content .highlight .kp{color:#d371e3}.dark-theme .single .content .highlight .kr{color:#d371e3}.dark-theme .single .content .highlight .kt{color:#d371e3}.dark-theme .single .content .highlight .n{color:#a9b2c0}.dark-theme .single .content .highlight .na{color:#41b0f5}.dark-theme .single .content .highlight .nb{color:#19b9c4}.dark-theme .single .content .highlight .bp{color:#ecbf6f}.dark-theme .single .content .highlight .nc{color:#ecbf6f}.dark-theme .single .content .highlight .no{color:#41b0f5}.dark-theme .single .content .highlight .nd{color:#ecbf6f}.dark-theme .single .content .highlight .ni{color:#41b0f5}.dark-theme .single .content .highlight .ne{color:#41b0f5}.dark-theme .single .content .highlight .nf{color:#41b0f5}.dark-theme .single .content .highlight .fm{color:#19b9c4}.dark-theme .single .content .highlight .nl{color:#41b0f5}.dark-theme .single .content .highlight .nn{color:#41b0f5}.dark-theme .single .content .highlight .nx{color:#a9a9b3}.dark-theme .single .content .highlight .py{color:#41b0f5}.dark-theme .single .content .highlight .nt{color:#41b0f5}.dark-theme .single .content .highlight .nv{color:#41b0f5}.dark-theme .single .content .highlight .vc{color:#41b0f5}.dark-theme .single .content .highlight .vg{color:#41b0f5}.dark-theme .single .content .highlight .vi{color:#41b0f5}.dark-theme .single .content .highlight .vm{color:#41b0f5}.dark-theme .single .content .highlight .l{color:#2aa198}.dark-theme .single .content .highlight .ld{color:#2aa198}.dark-theme .single .content .highlight .s{color:#8cc570}.dark-theme .single .content .highlight .sa{color:#8cc570}.dark-theme .single .content .highlight .sb{color:#8cc570}.dark-theme .single .content .highlight .sc{color:#8cc570}.dark-theme .single .content .highlight .dl{color:#8cc570}.dark-theme .single .content .highlight .sd{color:#8cc570}.dark-theme .single .content .highlight .s2{color:#8cc570}.dark-theme .single .content .highlight .se{color:#8cc570}.dark-theme .single .content .highlight .sh{color:#8cc570}.dark-theme .single .content .highlight .si{color:#8cc570}.dark-theme .single .content .highlight .sx{color:#8cc570}.dark-theme .single .content .highlight .sr{color:#8cc570}.dark-theme .single .content .highlight .s1{color:#8cc570}.dark-theme .single .content .highlight .ss{color:#8cc570}.dark-theme .single .content .highlight .m{color:#db985c}.dark-theme .single .content .highlight .mb{color:#db985c}.dark-theme .single .content .highlight .mf{color:#db985c}.dark-theme .single .content .highlight .mh{color:#db985c}.dark-theme .single .content .highlight .mi{color:#db985c}.dark-theme .single .content .highlight .il{color:#db985c}.dark-theme .single .content .highlight .mo{color:#db985c}.dark-theme .single .content .highlight .o{color:#ecbf6f}.dark-theme .single .content .highlight .ow{color:#d371e3}.dark-theme .single .content .highlight .c{color:#7e848f}.dark-theme .single .content .highlight .ch{color:#7e848f}.dark-theme .single .content .highlight .cm{color:#7e848f}.dark-theme .single .content .highlight .c1{color:#7e848f}.dark-theme .single .content .highlight .cs{color:#7e848f}.dark-theme .single .content .highlight .cp{color:#7e848f}.dark-theme .single .content .highlight .cpf{color:#7e848f}.dark-theme .single .content .highlight .g{color:#f16372}.dark-theme .single .content .highlight .gd{color:#f16372}.dark-theme .single .content .highlight .ge{color:#f16372}.dark-theme .single .content .highlight .gr{color:#f16372}.dark-theme .single .content .highlight .gh{color:#f16372}.dark-theme .single .content .highlight .gi{color:#f16372}.dark-theme .single .content .highlight .go{color:#f16372}.dark-theme .single .content .highlight .gp{color:#f16372}.dark-theme .single .content .highlight .gs{color:#f16372}.dark-theme .single .content .highlight .gu{color:#f16372}.dark-theme .single .content .highlight .gt{color:#f16372}.dark-theme .single .content .highlight .w{color:#bbb}.single .content .admonition{position:relative;margin:.9765em 0;padding:0 .75rem;background-color:rgba(68,138,255,0.1);border-left:0.25rem solid #448aff;overflow:auto}.single .content .admonition .admonition-title{margin:0 -0.75rem;padding:.5rem .75rem .5rem 2.5rem;border-bottom:0.1rem solid rgba(68,138,255,0.1);background-color:rgba(68,138,255,0.1);font-weight:700}.single .content .admonition i.icon{font-size:16px;color:#448aff;cursor:auto;position:absolute;left:.75rem;top:.75rem}.single .content .admonition.note{border-left-color:#448aff}.single .content .admonition.note i.icon{color:#448aff}.single .content .admonition.abstract{border-left-color:#00b0ff}.single .content .admonition.abstract i.icon{color:#00b0ff}.single .content .admonition.info{border-left-color:#00b8d4}.single .content .admonition.info i.icon{color:#00b8d4}.single .content .admonition.tip{border-left-color:#00bfa5}.single .content .admonition.tip i.icon{color:#00bfa5}.single .content .admonition.success{border-left-color:#00c853}.single .content .admonition.success i.icon{color:#00c853}.single .content .admonition.question{border-left-color:#64dd17}.single .content .admonition.question i.icon{color:#64dd17}.single .content .admonition.warning{border-left-color:#ff9100}.single .content .admonition.warning i.icon{color:#ff9100}.single .content .admonition.failure{border-left-color:#ff5252}.single .content .admonition.failure i.icon{color:#ff5252}.single .content .admonition.danger{border-left-color:#ff1744}.single .content .admonition.danger i.icon{color:#ff1744}.single .content .admonition.bug{border-left-color:#f50057}.single .content .admonition.bug i.icon{color:#f50057}.single .content .admonition.example{border-left-color:#651fff}.single .content .admonition.example i.icon{color:#651fff}.single .content .admonition.quote{border-left-color:#9e9e9e}.single .content .admonition.quote i.icon{color:#9e9e9e}.single .content .admonition.note{background-color:rgba(68,138,255,0.1)}.single .content .admonition.note .admonition-title{border-bottom-color:rgba(68,138,255,0.1);background-color:rgba(68,138,255,0.1)}.single .content .admonition.abstract{background-color:rgba(0,176,255,0.1)}.single .content .admonition.abstract .admonition-title{border-bottom-color:rgba(0,176,255,0.1);background-color:rgba(0,176,255,0.1)}.single .content .admonition.info{background-color:rgba(0,184,212,0.1)}.single .content .admonition.info .admonition-title{border-bottom-color:rgba(0,184,212,0.1);background-color:rgba(0,184,212,0.1)}.single .content .admonition.tip{background-color:rgba(0,191,165,0.1)}.single .content .admonition.tip .admonition-title{border-bottom-color:rgba(0,191,165,0.1);background-color:rgba(0,191,165,0.1)}.single .content .admonition.success{background-color:rgba(0,200,83,0.1)}.single .content .admonition.success .admonition-title{border-bottom-color:rgba(0,200,83,0.1);background-color:rgba(0,200,83,0.1)}.single .content .admonition.question{background-color:rgba(100,221,23,0.1)}.single .content .admonition.question .admonition-title{border-bottom-color:rgba(100,221,23,0.1);background-color:rgba(100,221,23,0.1)}.single .content .admonition.warning{background-color:rgba(255,145,0,0.1)}.single .content .admonition.warning .admonition-title{border-bottom-color:rgba(255,145,0,0.1);background-color:rgba(255,145,0,0.1)}.single .content .admonition.failure{background-color:rgba(255,82,82,0.1)}.single .content .admonition.failure .admonition-title{border-bottom-color:rgba(255,82,82,0.1);background-color:rgba(255,82,82,0.1)}.single .content .admonition.danger{background-color:rgba(255,23,68,0.1)}.single .content .admonition.danger .admonition-title{border-bottom-color:rgba(255,23,68,0.1);background-color:rgba(255,23,68,0.1)}.single .content .admonition.bug{background-color:rgba(245,0,87,0.1)}.single .content .admonition.bug .admonition-title{border-bottom-color:rgba(245,0,87,0.1);background-color:rgba(245,0,87,0.1)}.single .content .admonition.example{background-color:rgba(101,31,255,0.1)}.single .content .admonition.example .admonition-title{border-bottom-color:rgba(101,31,255,0.1);background-color:rgba(101,31,255,0.1)}.single .content .admonition.quote{background-color:rgba(158,158,158,0.1)}.single .content .admonition.quote .admonition-title{border-bottom-color:rgba(158,158,158,0.1);background-color:rgba(158,158,158,0.1)}.single .content .admonition:last-child{margin-bottom:.75rem}.single .content details.admonition summary{display:block;outline:none;cursor:pointer}.single .content details.admonition summary::-webkit-details-marker{display:none}.single .content details.admonition summary i.details{position:absolute;top:.75rem;right:.75rem;color:#161209}.dark-theme .single .content details.admonition summary i.details{color:#a9a9b3}.single .content details.admonition[open] i.details{transform:rotate(180deg)}.single .content .echarts{width:100%;height:30rem;margin:3% auto;text-align:center}.single .content .bilibili{position:relative;width:100%;height:0;padding-bottom:75%;margin:3% auto;text-align:center}.single .content .bilibili iframe{position:absolute;width:100%;height:100%;left:0;top:0}.single .content hr{margin:1rem 0;position:relative;border-top:1px dashed #dcdcdc;border-bottom:none}.dark-theme .single .content hr{border-top:1px dashed #4a4b50}.single .content kbd{display:inline-block;padding:.25rem;background-color:#fff;border:1px solid #dcdcdc;border-bottom-color:#dcdcdc;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 #dcdcdc;box-shadow:inset 0 -1px 0 #dcdcdc;font-size:.8rem;font-family:Fira Mono,Source Code Pro,Menlo,Consolas,Monaco,monospace;color:#E74C3C}.dark-theme .single .content kbd{background-color:#292a2d;border:1px solid #4a4b50;border-bottom-color:#4a4b50;-webkit-box-shadow:inset 0 -1px 0 #4a4b50;box-shadow:inset 0 -1px 0 #4a4b50;color:#E5BF78}.single .content .typeit .code{padding:.375rem;font-size:.875rem;font-family:Fira Mono,Source Code Pro,Menlo,Consolas,Monaco,monospace;font-weight:bold;word-break:break-all}.single .content .align-left{text-align:left}.single .content .align-center{text-align:center}.single .content .align-right{text-align:right}.single .content .float-left{float:left}.single .content .float-right{float:right}.single .post-footer{margin-top:3rem}.single .post-footer .post-info{border-bottom:1px solid #dcdcdc;padding:1rem 0 0.3rem}.dark-theme .single .post-footer .post-info{border-bottom:1px solid #4a4b50}.single .post-footer .post-info .post-info-line{display:flex;justify-content:space-between}.single .post-footer .post-info .post-info-line .post-info-mod{font-size:0.8em;color:#a9a9b3}.dark-theme .single .post-footer .post-info .post-info-line .post-info-mod{color:#5d5d5f}.single .post-footer .post-info .post-info-line .post-info-license{font-size:0.8em;color:#a9a9b3}.dark-theme .single .post-footer .post-info .post-info-line .post-info-license{color:#5d5d5f}.single .post-footer .post-info .post-info-line .post-info-md{width:8rem}.single .post-footer .post-info .post-info-line .post-info-md a{font-size:0.8rem;color:#2d96bd}.dark-theme .single .post-footer .post-info .post-info-line .post-info-md a{color:#eee}.single .post-footer .post-info .post-info-line .post-info-md a:hover{color:#ef3982}.dark-theme .single .post-footer .post-info .post-info-line .post-info-md a:hover{color:#2d96bd}.single .post-footer .post-info-more{padding:0.3rem 0 1rem;display:flex;justify-content:space-between;font-size:0.9rem}.single .post-footer .post-nav::before,.single .post-footer .post-nav::after{content:' ';display:table}.single .post-footer .post-nav a.prev,.single .post-footer .post-nav a.next{font-size:1rem;font-weight:600;transition-duration:.3s;transition-property:transform;transition-timing-function:ease-out}.single .post-footer .post-nav a.prev{float:left}.single .post-footer .post-nav a.prev:hover{transform:translateX(-4px)}.single .post-footer .post-nav a.next{float:right}.single .post-footer .post-nav a.next:hover{transform:translateX(4px)}.single .comment{padding:4rem 0}.special .single-title{text-align:right;padding-bottom:2rem}.archive .single-title{text-align:right;padding-bottom:2rem}.archive .archive-item{margin-left:2rem}.archive .categories-card{margin:0 auto;margin-top:3rem;display:flex;align-items:center;justify-content:space-between;flex-direction:row;flex-wrap:wrap;padding:0 2.5rem;line-height:1.6rem}.archive .categories-card .card-item{font-size:.875rem;text-align:left;width:45%;display:flex;align-items:flex-start;margin-top:2rem;min-height:10rem;padding:0 2%;position:relative}.archive .categories-card .card-item .card-item-wrapper{width:100%;overflow:hidden}.archive .categories-card .card-item .card-item-wrapper .card-item-title{font-size:1.2rem;font-weight:bold;display:inline-block}.archive .categories-card .card-item .card-item-wrapper span{float:right;padding-right:1rem}.archive .archive-item-link{display:inline-block;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:95%}.archive .archive-item-link:hover{color:#2d96bd;background-color:transparent}.dark-theme .archive .archive-item-link{color:#a9a9b3;text-decoration:none;transition:color 0.2s ease, border-color 0.2s ease, background 0.2s ease, opacity 0.2s ease}.dark-theme .archive .archive-item-link:hover{color:#fff;text-decoration:none;transition:color 0.2s ease, border-color 0.2s ease, background 0.2s ease, opacity 0.2s ease}.archive .archive-item-date{float:right;text-align:right;color:#a9a9b3}.dark-theme .archive .archive-item-date{color:#5d5d5f}.archive .more-post{text-align:right}.archive .tag-cloud-tags{margin:10px 0}.archive .tag-cloud-tags a{display:inline-block;position:relative;margin:5px 10px;overflow-wrap:break-word;transition-duration:.3s;transition-property:transform;transition-timing-function:ease-out}.archive .tag-cloud-tags a:active,.archive .tag-cloud-tags a:focus,.archive .tag-cloud-tags a:hover{color:#2d96bd;transform:scale(1.1)}.dark-theme .archive .tag-cloud-tags a:active,.dark-theme .archive .tag-cloud-tags a:focus,.dark-theme .archive .tag-cloud-tags a:hover{color:#fff}.archive .tag-cloud-tags a small{color:#a9a9b3}.dark-theme .archive .tag-cloud-tags a small{color:#fff}.home .home-profile{transform:translateY(0);padding:2rem 0;text-align:center}.home .home-profile .home-avatar{padding:0.6rem}.home .home-profile .home-avatar img{width:6rem;height:auto;display:inline-block;-webkit-border-radius:100%;border-radius:100%;-webkit-box-shadow:0 0 0 0.3618em rgba(0,0,0,0.05);box-shadow:0 0 0 0.3618em rgba(0,0,0,0.05);margin:0 auto;-webkit-transition:all ease 0.4s;-moz-transition:all ease 0.4s;-o-transition:all ease 0.4s;transition:all ease 0.4s;cursor:pointer}.home .home-profile .home-avatar img:hover{position:relative;-webkit-transform:translateY(-0.75rem);-moz-transform:translateY(-0.75rem);-ms-transform:translateY(-0.75rem);-o-transform:translateY(-0.75rem);transform:translateY(-0.75rem);cursor:pointer}.home .home-profile .home-description{font-size:1rem;font-weight:normal;margin:0;padding:.4rem}.home .home-profile .home-social-links{padding-top:.6rem}.home .home-profile .home-social-links i{font-size:1.45rem}.home .home-profile .home-social-links img{width:1.5rem;height:1.5rem}.home .summary{padding-top:1rem;padding-bottom:.8rem;color:#161209;border-bottom:1px dashed #dcdcdc}.dark-theme .home .summary{color:#a9a9b3;border-bottom:1px dashed #4a4b50}.home .summary .featured-image-preview{width:100%;padding:30% 0 0;position:relative;margin:0.6rem auto}.home .summary .featured-image-preview img{position:absolute;width:100%;height:100%;left:0;top:0;object-fit:cover}.home .summary .single-title{font-size:1.6rem}.home .summary .meta{font-size:.875rem !important}.home .summary .meta a{color:#a9a9b3 !important}.dark-theme .home .summary .meta a{color:#5d5d5f !important}.home .summary .meta a:hover{color:#2d96bd !important}.dark-theme .home .summary .meta a:hover{color:#fff !important}.home .summary .content{display:-moz-box;display:-webkit-box;-moz-box-orient:vertical;-webkit-box-orient:vertical;-webkit-line-clamp:3;margin-top:.3rem;width:100%;overflow:hidden;text-overflow:ellipsis;overflow-wrap:break-word}.home .summary h1,.home .summary h2,.home .summary h3,.home .summary h4,.home .summary h5,.home .summary h6,.home .summary p{font-size:1rem;display:inline}.home .summary h1::after,.home .summary h2::after,.home .summary h3::after,.home .summary h4::after,.home .summary h5::after,.home .summary h6::after,.home .summary p::after{content:"\A";white-space:pre}.home .summary h1,.home .summary h2,.home .summary h3,.home .summary h4,.home .summary h5,.home .summary h6{line-height:2}.home .summary .post-footer{margin-top:.5rem;display:flex;justify-content:space-between;align-items:center;font-size:.875rem !important}.home .summary .post-footer a{color:#2d96bd !important}.dark-theme .home .summary .post-footer a{color:#eee !important}.home .summary .post-footer a:hover{color:#ef3982 !important}.dark-theme .home .summary .post-footer a:hover{color:#2d96bd !important}.home .summary .post-footer .post-tags{padding:0}.home .summary .post-footer .post-tags a{color:#161209 !important}.dark-theme .home .summary .post-footer .post-tags a{color:#a9a9b3 !important}.home .summary .post-footer .post-tags a:hover{color:#2d96bd !important}.dark-theme .home .summary .post-footer .post-tags a:hover{color:#fff !important}#content-404{font-size:1.8rem;line-height:3rem;transform:translateY(30vh);text-align:center}header{width:100%;z-index:100;background-color:#f8f8f8}.dark-theme header{background-color:#252627}#header-desktop{display:block;position:fixed;height:4rem;line-height:4rem}#header-desktop .header-wrapper{width:auto;text-align:center;margin:0 4rem;display:flex;justify-content:space-between}#header-desktop .header-wrapper .header-title a{padding:0 8px;font-size:1.25rem}#header-desktop .header-wrapper .header-title a i{line-height:2rem}#header-desktop .header-wrapper .menu a{padding:0 8px}#header-desktop .header-wrapper .menu a.active{font-weight:900;color:#161209}.dark-theme #header-desktop .header-wrapper .menu a.active{color:#fff}#header-mobile{display:none;position:fixed;height:4rem;line-height:4rem}#header-mobile .header-wrapper{padding:0;margin:0;transition:all 0.3s ease 0s}#header-mobile .header-wrapper .header-container{display:flex;justify-content:space-between;align-items:center;width:100%;font-size:1.125rem;padding-right:1rem;padding-left:1rem;box-sizing:border-box}#header-mobile .header-wrapper .header-container .header-title{font-size:1.25rem}#header-mobile .header-wrapper .header-container .menu-toggle{cursor:pointer;line-height:4rem}#header-mobile .header-wrapper .header-container .menu-toggle span{display:block;background:#161209;width:1.5rem;height:2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-transition:.1s margin .1s, .1s transform;-moz-transition:.1s margin .1s, .1s transform;transition:.1s margin .1s, .1s transform}.dark-theme #header-mobile .header-wrapper .header-container .menu-toggle span{background:#a9a9b3}#header-mobile .header-wrapper .header-container .menu-toggle span:nth-child(1){margin-bottom:.5rem}#header-mobile .header-wrapper .header-container .menu-toggle span:nth-child(3){margin-top:.5rem}#header-mobile .header-wrapper .header-container .menu-toggle.active span{-webkit-transition:.1s margin, .1s transform .1s;-moz-transition:.1s margin, .1s transform .1s;transition:.1s margin, .1s transform .1s}#header-mobile .header-wrapper .header-container .menu-toggle.active span:nth-child(1){-moz-transform:rotate(45deg) translate(0.4rem, 0.5rem);-ms-transform:rotate(45deg) translate(0.4rem, 0.5rem);-webkit-transform:rotate(45deg) translate(0.4rem, 0.5rem);transform:rotate(45deg) translate(0.4rem, 0.5rem)}#header-mobile .header-wrapper .header-container .menu-toggle.active span:nth-child(2){opacity:0}#header-mobile .header-wrapper .header-container .menu-toggle.active span:nth-child(3){-moz-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-ms-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-webkit-transform:rotate(-45deg) translate(0.4rem, -0.5rem);transform:rotate(-45deg) translate(0.4rem, -0.5rem)}#header-mobile .header-wrapper .menu{text-align:center;background:#fff;border-top:2px solid #161209;display:none;box-shadow:0px 2px 4px rgba(0,0,0,0.1),0px 4px 8px rgba(0,0,0,0.1)}#header-mobile .header-wrapper .menu a{display:block;line-height:2.5rem}#header-mobile .header-wrapper .menu.active{display:block}.dark-theme #header-mobile .header-wrapper .menu{background:#292a2d;border-top:2px solid #a9a9b3}.copyright{font-size:.875rem}.copyright .copyright-line{width:100%}.copyright .copyright-line .icp-br{display:none}.dynamic-to-top{display:none;overflow:hidden;width:auto;z-index:90;position:fixed;bottom:2rem;right:2rem;top:auto;left:auto;font-family:sans-serif;font-size:1rem;color:#fff;text-decoration:none;text-shadow:0 1px 0 #333;font-weight:bold;padding:1rem 1rem;border:1px solid #dcdcdc;background:#222;outline:none}.dynamic-to-top:hover{background:#000;cursor:pointer}.dynamic-to-top:active{background:#000;outline:none}.dynamic-to-top:focus,.dynamic-to-top:hover{outline:none}.dynamic-to-top span{display:block;overflow:hidden;width:.875rem;height:.75rem;background:url("data:image/png;base64,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") no-repeat center center}.dark-theme .dynamic-to-top{border:1px solid #4a4b50}.pagination{display:flex;flex-direction:row;justify-content:center;list-style:none;white-space:nowrap;width:100%;padding:1rem 0 0}.pagination a{-webkit-font-smoothing:antialiased;font-size:.8rem;color:#bfbfbf;letter-spacing:.1rem;font-weight:700;padding:5px 5px;text-decoration:none;transition:0.3s}.pagination li{padding-bottom:3px;margin:0 20px;box-sizing:border-box;position:relative;display:inline}.pagination li.disabled{display:none}.pagination li:hover a{color:#000}.dark-theme .pagination li:hover a{color:#fff}.pagination li:before,.pagination li:after{position:absolute;content:"";width:0;height:3px;background:#000;transition:0.3s;bottom:0px}.dark-theme .pagination li:before,.dark-theme .pagination li:after{background:#fff}.pagination li:before .active,.pagination li:after .active{width:100%}.pagination li:before{left:50%}.pagination li:after{right:50%}.pagination li:hover:before,.pagination li:hover:after{width:50%}.pagination li.active a{color:#000}.dark-theme .pagination li.active a{color:#fff}.pagination li.active:before,.pagination li.active:after{width:60%}@media only screen and (max-width: 1800px){.page{max-width:780px}.page #toc-auto{margin-left:800px}}@media only screen and (max-width: 1440px){.page{max-width:680px}.page #toc-auto{margin-left:700px}}@media only screen and (max-width: 1200px){.page{max-width:560px}.page #toc-auto{margin-left:580px}}@media only screen and (max-width: 960px){#header-desktop .header-wrapper{margin:0 1rem}.page{max-width:80%}.page #toc-auto{display:none}.page #toc-static{display:block}}@media only screen and (max-width: 560px){#header-desktop{display:none}#header-mobile{display:block}.page{max-width:100%;padding-top:6rem}.page .categories-card .card-item{width:100%}.copyright .copyright-line .icp-splitter{display:none}.copyright .copyright-line .icp-br{display:block}} /*# sourceMappingURL=style.min.css.map */ \ No newline at end of file diff --git a/src/js/theme.js b/src/js/theme.js index 5a3c325..f6e1460 100644 --- a/src/js/theme.js +++ b/src/js/theme.js @@ -12,20 +12,41 @@ getScrollTop() { return (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop; } + + isMobile() { + return window.matchMedia('only screen and (max-width: 560px)').matches; + } + + isTocStatic() { + return window.matchMedia('only screen and (max-width: 960px)').matches; + } } class Theme { constructor() { this.util = new Util(); - this.scrollTop = 0; - this.scrollEvents = []; + this.newScrollTop = this.util.getScrollTop(); + this.oldScrollTop = this.newScrollTop; + this.scrollEventSet = new Set(); + this.resizeEventSet = new Set(); } - initMobileMenu() { - document.getElementById('menu-toggle').onclick = () => { - document.getElementById('menu-toggle').classList.toggle('active'); - document.getElementById('menu-mobile').classList.toggle('active'); - }; + initMenuMobile() { + const menuToggleMobile = document.getElementById('menu-toggle-mobile'); + const menuMobile = document.getElementById('menu-mobile'); + this._menuMobileOnScroll = this._menuMobileOnScroll || (() => { + menuToggleMobile.classList.remove('active'); + menuMobile.classList.remove('active'); + }); + if (this.util.isMobile()) { + menuToggleMobile.onclick = () => { + menuToggleMobile.classList.toggle('active'); + menuMobile.classList.toggle('active'); + }; + this.scrollEventSet.add(this._menuMobileOnScroll); + } else { + this.scrollEventSet.delete(this._menuMobileOnScroll); + } } initSwitchTheme() { @@ -80,46 +101,55 @@ } } - _refactorToc(toc) { - this.util.forEach(toc.querySelectorAll('a:first-child'), (link) => { - link.classList.add('toc-link'); - }); - } - - _initTocState(tocContainer) { - if (window.getComputedStyle(tocContainer, null).display !== 'none') { - const fixed = window.desktopHeaderMode !== 'normal'; - const fixedHeight = document.getElementById('header-desktop').getBoundingClientRect().height; - const TOP_SPACING = 20 + (fixed ? fixedHeight : 0); - const minTop = tocContainer.offsetTop; - const minScrollTop = minTop - TOP_SPACING + (fixed ? 0 : fixedHeight); - const footerTop = document.getElementById('post-footer').offsetTop; - const toclinks = tocContainer.getElementsByClassName('toc-link'); - const headerLinks = document.getElementsByClassName('headerLink') || []; - const tocLinkLis = tocContainer.querySelectorAll('.post-toc-content li'); - const INDEX_SPACING = 5 + (fixed ? fixedHeight : 0); - - const changeTocState = () => { - const scrollTop = this.util.getScrollTop(); - const maxTop = footerTop - tocContainer.getBoundingClientRect().height; - const maxScrollTop = maxTop - TOP_SPACING + (fixed ? 0 : fixedHeight); - if (scrollTop < minScrollTop) { - tocContainer.style.position = 'absolute'; - tocContainer.style.top = `${minTop}px`; - } else if (scrollTop > maxScrollTop) { - tocContainer.style.position = 'absolute'; - tocContainer.style.top = `${maxTop}px`; + initToc() { + const tocCore = document.getElementById('TableOfContents'); + if (tocCore === null) return; + if (this.util.isTocStatic()) { + const tocContentStatic = document.getElementById('toc-content-static'); + if (tocCore.parentElement !== tocContentStatic) { + tocCore.parentElement.removeChild(tocCore); + tocContentStatic.appendChild(tocCore); + } + if (this._tocOnScroll) this.scrollEventSet.delete(this._tocOnScroll); + } else { + const tocContentAuto = document.getElementById('toc-content-auto'); + if (tocCore.parentElement !== tocContentAuto) { + tocCore.parentElement.removeChild(tocCore); + tocContentAuto.appendChild(tocCore); + } + const toc = document.getElementById('toc-auto'); + const page = document.getElementsByClassName('page')[0]; + toc.style.maxWidth = `${page.getBoundingClientRect().left - 40}px`; + this._tocLinks = this._tocLinks || tocCore.getElementsByTagName('a'); + this._tocLis = this._tocLis || tocCore.getElementsByTagName('li'); + this._headerLinks = this._headerLinks || document.getElementsByClassName('headerLink') || []; + const headerIsFixed = window.desktopHeaderMode !== 'normal'; + const headerHeight = document.getElementById('header-desktop').offsetHeight; + const TOP_SPACING = 20 + (headerIsFixed ? headerHeight : 0); + const minTocTop = toc.offsetTop; + const minScrollTop = minTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight); + this._tocOnScroll = this._tocOnScroll || (() => { + const footerTop = document.getElementById('post-footer').offsetTop; + const maxTocTop = footerTop - toc.getBoundingClientRect().height; + const maxScrollTop = maxTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight); + if (this.newScrollTop < minScrollTop) { + toc.style.position = 'absolute'; + toc.style.top = `${minTocTop}px`; + } else if (this.newScrollTop > maxScrollTop) { + toc.style.position = 'absolute'; + toc.style.top = `${maxTocTop}px`; } else { - tocContainer.style.position = 'fixed'; - tocContainer.style.top = `${TOP_SPACING}px`; + toc.style.position = 'fixed'; + toc.style.top = `${TOP_SPACING}px`; } - this.util.forEach(toclinks, (link) => { link.classList.remove('active'); }); - this.util.forEach(tocLinkLis, (link) => { link.classList.remove('has-active'); }); - let activeTocIndex = headerLinks.length - 1; - for (let i = 0; i < headerLinks.length - 1; i++) { - const thisTop = headerLinks[i].getBoundingClientRect().top; - const nextTop = headerLinks[i + 1].getBoundingClientRect().top; + this.util.forEach(this._tocLinks, (link) => { link.classList.remove('active'); }); + this.util.forEach(this._tocLis, (link) => { link.classList.remove('has-active'); }); + const INDEX_SPACING = 20 + (headerIsFixed ? headerHeight : 0); + let activeTocIndex = this._headerLinks.length - 1; + for (let i = 0; i < this._headerLinks.length - 1; i++) { + const thisTop = this._headerLinks[i].getBoundingClientRect().top; + const nextTop = this._headerLinks[i + 1].getBoundingClientRect().top; if ((i == 0 && thisTop > INDEX_SPACING) || (thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING)) { activeTocIndex = i; @@ -127,47 +157,25 @@ } } if (activeTocIndex !== -1) { - toclinks[activeTocIndex].classList.add('active'); - let parent = toclinks[activeTocIndex].parentElement; - while (parent.tagName !== 'NAV') { + this._tocLinks[activeTocIndex].classList.add('active'); + let parent = this._tocLinks[activeTocIndex].parentElement; + while (parent !== tocCore) { parent.classList.add('has-active'); parent = parent.parentElement.parentElement; } } - }; - changeTocState(); - - if (!this._initTocOnce) { - this.scrollEvents.push(changeTocState); - this._initTocOnce = true; - } - } - } - - initToc() { - const tocContainer = document.getElementById('post-toc'); - if (tocContainer !== null) { - const toc = document.getElementById('TableOfContents'); - if (toc === null) { - tocContainer.parentElement.removeChild(tocContainer); - } else { - this._refactorToc(toc); - this._initTocState(tocContainer); - window.addEventListener('resize', () => { - window.setTimeout(() => { - this._initTocState(tocContainer); - }, 0); - }, false); - } + }); + this._tocOnScroll(); + this.scrollEventSet.add(this._tocOnScroll); } } initMermaid() { if (window.mermaidMap) { mermaid.initialize({startOnLoad: false, theme: null}); - Object.keys(mermaidMap).forEach((id) => { + Object.keys(window.mermaidMap).forEach((id) => { const element = document.getElementById(id); - mermaid.mermaidAPI.render("d" + id, mermaidMap[id], (svgCode) => { + mermaid.mermaidAPI.render("d" + id, window.mermaidMap[id], (svgCode) => { element.innerHTML = svgCode; const svg = element.firstChild; svg.style.width = "100%" @@ -178,29 +186,29 @@ initEcharts() { if (window.echartsMap) { - for (let i = 0; i < echartsArr.length; i++) { - echartsArr[i].dispose(); + this._echartsArr = this._echartsArr || []; + for (let i = 0; i < this._echartsArr.length; i++) { + this._echartsArr[i].dispose(); } - echartsArr = []; - Object.keys(echartsMap).forEach((id) => { - let myChart = echarts.init(document.getElementById(id), window.isDark ? 'dark' : 'macarons', {renderer: 'svg'}); - myChart.setOption(echartsMap[id]); - echartsArr.push(myChart); + this._echartsArr = []; + Object.keys(window.echartsMap).forEach((id) => { + const chart = echarts.init(document.getElementById(id), window.isDark ? 'dark' : 'macarons', {renderer: 'svg'}); + chart.setOption(window.echartsMap[id]); + this._echartsArr.push(chart); }); - window.addEventListener("resize", function () { - this.setTimeout(() => { - for (let i = 0; i < echartsArr.length; i++) { - echartsArr[i].resize(); - } - }, 0); - }, false); + this._echartsOnResize = this._echartsOnResize || (() => { + for (let i = 0; i < this._echartsArr.length; i++) { + this._echartsArr[i].resize(); + } + }); + this.resizeEventSet.add(this._echartsOnResize); } } initTypeit() { if (window.typeitArr) { - for (let i = 0; i < typeitArr.length; i++) { - const group = typeitArr[i]; + for (let i = 0; i < window.typeitArr.length; i++) { + const group = window.typeitArr[i]; (function typeone(i) { const content = document.getElementById(`r${group[i]}`).innerHTML; if (i === group.length - 1) { @@ -221,25 +229,16 @@ } } - initScroll() { - for (let i = 0; i < this.scrollEvents.length; i++) { - document.addEventListener('scroll', this.scrollEvents[i], false); + initSmoothScroll() { + if ((!this.util.isMobile() && window.desktopHeaderMode === 'normal') + || (this.util.isMobile() && window.mobileHeaderMode === 'normal')) { + new SmoothScroll('[href^="#"]', {speed: 300, speedAsDuration: true}); + } else { + new SmoothScroll('[href^="#"]', {speed: 300, speedAsDuration: true, header: '#header-desktop'}); } - const initSmoothScroll = () => { - const isMobile = window.matchMedia('only screen and (max-width: 560px)').matches; - if ((!isMobile && window.desktopHeaderMode === 'normal') - || (isMobile && window.mobileHeaderMode === 'normal')) { - new SmoothScroll('[href^="#"]', {speed: 300, speedAsDuration: true}); - } else { - new SmoothScroll('[href^="#"]', {speed: 300, speedAsDuration: true, header: '#header-desktop'}); - } - }; - initSmoothScroll(); - window.addEventListener('resize', () => { - window.setTimeout(() => { - initSmoothScroll(); - }, 0); - }, false); + } + + onScroll() { const headers = []; if (window.desktopHeaderMode === 'auto') headers.push(document.getElementById('header-desktop')); if (window.mobileHeaderMode === 'auto') headers.push(document.getElementById('header-mobile')); @@ -248,43 +247,57 @@ header.classList.add('faster'); }); const toTopButton = document.getElementById('dynamic-to-top'); - document.addEventListener('scroll', () => { - const scrollTop = this.util.getScrollTop(); + const MIN_SCROLL = 20; + window.addEventListener('scroll', () => { + this.newScrollTop = this.util.getScrollTop(); + const scroll = this.newScrollTop - this.oldScrollTop; this.util.forEach(headers, (header) => { - if (this.scrollTop < scrollTop) { - if (!header.classList.contains('fadeOutUp')) { - header.classList.remove('fadeInDown'); - header.classList.add('fadeOutUp'); - } - } else { - if (!header.classList.contains('fadeInDown')) { - header.classList.remove('fadeOutUp'); - header.classList.add('fadeInDown'); - } - } - if (scrollTop > 600) { - if (this.scrollTop < scrollTop) { - if (!toTopButton.classList.contains('fadeOut')) { - toTopButton.classList.remove('fadeIn'); - toTopButton.classList.add('fadeOut'); - } - } else { - toTopButton.style.display = 'block'; - if (!toTopButton.classList.contains('fadeIn')) { - toTopButton.classList.remove('fadeOut'); - toTopButton.classList.add('fadeIn'); - } - } - } else { - toTopButton.style.display = 'none'; + if (scroll > MIN_SCROLL) { + header.classList.remove('fadeInDown'); + header.classList.add('fadeOutUp'); + } else if (scroll < - MIN_SCROLL) { + header.classList.remove('fadeOutUp'); + header.classList.add('fadeInDown'); } }); - this.scrollTop = scrollTop; + if (this.newScrollTop > 400) { + if (scroll > MIN_SCROLL) { + toTopButton.classList.remove('fadeIn'); + toTopButton.classList.add('fadeOut'); + } else if (scroll < - MIN_SCROLL) { + toTopButton.style.display = 'block'; + toTopButton.classList.remove('fadeOut'); + toTopButton.classList.add('fadeIn'); + } + } else { + toTopButton.style.display = 'none'; + } + if (!this._scrollTimeout) { + this._scrollTimeout = window.setTimeout(() => { + this._scrollTimeout = null; + for (let event of this.scrollEventSet) event(); + }, 10); + } + this.oldScrollTop = this.newScrollTop; + }, false); + } + + onResize() { + window.addEventListener('resize', () => { + if (!this._resizeTimeout) { + this._resizeTimeout = window.setTimeout(() => { + this._resizeTimeout = null; + for (let event of this.resizeEventSet) event(); + this.initMenuMobile(); + this.initToc(); + this.initSmoothScroll(); + }, 100); + } }, false); } init() { - this.initMobileMenu(); + this.initMenuMobile(); this.initSwitchTheme(); this.initHighlight(); this.initTable(); @@ -293,7 +306,10 @@ this.initEcharts(); this.initTypeit(); this.initToc(); - this.initScroll(); + this.initSmoothScroll(); + + this.onScroll(); + this.onResize(); } } diff --git a/static/js/theme.min.js b/static/js/theme.min.js index edb567f..e214762 100644 --- a/static/js/theme.min.js +++ b/static/js/theme.min.js @@ -1,3 +1,3 @@ -"use strict";function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d .chroma"),function(a){var b=a.querySelectorAll("pre.chroma > code"),c=b[b.length-1],d=c?c.className.toLowerCase():"";a.className+=" "+d}),this.util.forEach(document.querySelectorAll(".highlight > pre.chroma"),function(a){var b=document.createElement("div");b.className=a.className;var c=document.createElement("table");b.appendChild(c);var d=document.createElement("tbody");c.appendChild(d);var e=document.createElement("tr");d.appendChild(e);var f=document.createElement("td");e.appendChild(f),a.parentElement.replaceChild(b,a),f.appendChild(a)})}},{key:"initTable",value:function initTable(){this.util.forEach(document.querySelectorAll(".content table"),function(a){var b=document.createElement("div");b.className="table-wrapper",a.parentElement.replaceChild(b,a),b.appendChild(a)})}},{key:"initHeaderLink",value:function initHeaderLink(){for(var a=1;6>=a;a++)this.util.forEach(document.querySelectorAll(".content > h"+a),function(a){a.classList.add("headerLink"),a.innerHTML="").concat(a.innerHTML)})}},{key:"_refactorToc",value:function _refactorToc(a){this.util.forEach(a.querySelectorAll("a:first-child"),function(a){a.classList.add("toc-link")})}},{key:"_initTocState",value:function _initTocState(a){var b=this;if("none"!==window.getComputedStyle(a,null).display){var c="normal"!==window.desktopHeaderMode,d=document.getElementById("header-desktop").getBoundingClientRect().height,e=20+(c?d:0),f=a.offsetTop,g=f-e+(c?0:d),h=document.getElementById("post-footer").offsetTop,j=a.getElementsByClassName("toc-link"),k=document.getElementsByClassName("headerLink")||[],l=a.querySelectorAll(".post-toc-content li"),m=5+(c?d:0),n=function(){var n=b.util.getScrollTop(),o=h-a.getBoundingClientRect().height,p=o-e+(c?0:d);np?(a.style.position="absolute",a.style.top="".concat(o,"px")):(a.style.position="fixed",a.style.top="".concat(e,"px")),b.util.forEach(j,function(a){a.classList.remove("active")}),b.util.forEach(l,function(a){a.classList.remove("has-active")});for(var q=k.length-1,r=0;rm||s<=m&&t>m){q=r;break}}if(-1!==q){j[q].classList.add("active");for(var u=j[q].parentElement;"NAV"!==u.tagName;)u.classList.add("has-active"),u=u.parentElement.parentElement}};n(),this._initTocOnce||(this.scrollEvents.push(n),this._initTocOnce=!0)}}},{key:"initToc",value:function initToc(){var a=this,b=document.getElementById("post-toc");if(null!==b){var c=document.getElementById("TableOfContents");null===c?b.parentElement.removeChild(b):(this._refactorToc(c),this._initTocState(b),window.addEventListener("resize",function(){window.setTimeout(function(){a._initTocState(b)},0)},!1))}}},{key:"initMermaid",value:function initMermaid(){window.mermaidMap&&(mermaid.initialize({startOnLoad:!1,theme:null}),Object.keys(mermaidMap).forEach(function(a){var b=document.getElementById(a);mermaid.mermaidAPI.render("d"+a,mermaidMap[a],function(a){b.innerHTML=a;var c=b.firstChild;c.style.width="100%"},b)}))}},{key:"initEcharts",value:function initEcharts(){if(window.echartsMap){for(var a=0;a .chroma"),function(a){var b=a.querySelectorAll("pre.chroma > code"),c=b[b.length-1],d=c?c.className.toLowerCase():"";a.className+=" "+d}),this.util.forEach(document.querySelectorAll(".highlight > pre.chroma"),function(a){var b=document.createElement("div");b.className=a.className;var c=document.createElement("table");b.appendChild(c);var d=document.createElement("tbody");c.appendChild(d);var e=document.createElement("tr");d.appendChild(e);var f=document.createElement("td");e.appendChild(f),a.parentElement.replaceChild(b,a),f.appendChild(a)})}},{key:"initTable",value:function initTable(){this.util.forEach(document.querySelectorAll(".content table"),function(a){var b=document.createElement("div");b.className="table-wrapper",a.parentElement.replaceChild(b,a),b.appendChild(a)})}},{key:"initHeaderLink",value:function initHeaderLink(){for(var a=1;6>=a;a++)this.util.forEach(document.querySelectorAll(".content > h"+a),function(a){a.classList.add("headerLink"),a.innerHTML="").concat(a.innerHTML)})}},{key:"initToc",value:function initToc(){var a=this,b=document.getElementById("TableOfContents");if(null!==b)if(this.util.isTocStatic()){var k=document.getElementById("toc-content-static");b.parentElement!==k&&(b.parentElement.removeChild(b),k.appendChild(b)),this._tocOnScroll&&this.scrollEventSet.delete(this._tocOnScroll)}else{var l=document.getElementById("toc-content-auto");b.parentElement!==l&&(b.parentElement.removeChild(b),l.appendChild(b));var c=document.getElementById("toc-auto"),d=document.getElementsByClassName("page")[0];c.style.maxWidth="".concat(d.getBoundingClientRect().left-40,"px"),this._tocLinks=this._tocLinks||b.getElementsByTagName("a"),this._tocLis=this._tocLis||b.getElementsByTagName("li"),this._headerLinks=this._headerLinks||document.getElementsByClassName("headerLink")||[];var e="normal"!==window.desktopHeaderMode,f=document.getElementById("header-desktop").offsetHeight,g=20+(e?f:0),h=c.offsetTop,j=h-g+(e?0:f);this._tocOnScroll=this._tocOnScroll||function(){var d=document.getElementById("post-footer").offsetTop,k=d-c.getBoundingClientRect().height,l=k-g+(e?0:f);a.newScrollTopl?(c.style.position="absolute",c.style.top="".concat(k,"px")):(c.style.position="fixed",c.style.top="".concat(g,"px")),a.util.forEach(a._tocLinks,function(a){a.classList.remove("active")}),a.util.forEach(a._tocLis,function(a){a.classList.remove("has-active")});for(var m=20+(e?f:0),n=a._headerLinks.length-1,o=0;om||p<=m&&q>m){n=o;break}}if(-1!==n){a._tocLinks[n].classList.add("active");for(var r=a._tocLinks[n].parentElement;r!==b;)r.classList.add("has-active"),r=r.parentElement.parentElement}},this._tocOnScroll(),this.scrollEventSet.add(this._tocOnScroll)}}},{key:"initMermaid",value:function initMermaid(){window.mermaidMap&&(mermaid.initialize({startOnLoad:!1,theme:null}),Object.keys(window.mermaidMap).forEach(function(a){var b=document.getElementById(a);mermaid.mermaidAPI.render("d"+a,window.mermaidMap[a],function(a){b.innerHTML=a;var c=b.firstChild;c.style.width="100%"},b)}))}},{key:"initEcharts",value:function initEcharts(){var a=this;if(window.echartsMap){this._echartsArr=this._echartsArr||[];for(var b=0;bd?(a.classList.remove("fadeInDown"),a.classList.add("fadeOutUp")):e<-d&&(a.classList.remove("fadeOutUp"),a.classList.add("fadeInDown"))}),400d?(c.classList.remove("fadeIn"),c.classList.add("fadeOut")):e<-d&&(c.style.display="block",c.classList.remove("fadeOut"),c.classList.add("fadeIn")):c.style.display="none",a._scrollTimeout||(a._scrollTimeout=window.setTimeout(function(){a._scrollTimeout=null;var b=!0,c=!1,d=void 0;try{for(var e,f,g=a.scrollEventSet[Symbol.iterator]();!(b=(e=g.next()).done);b=!0)f=e.value,f()}catch(a){c=!0,d=a}finally{try{b||null==g.return||g.return()}finally{if(c)throw d}}},10)),a.oldScrollTop=a.newScrollTop},!1)}},{key:"onResize",value:function onResize(){var a=this;window.addEventListener("resize",function(){a._resizeTimeout||(a._resizeTimeout=window.setTimeout(function(){a._resizeTimeout=null;var b=!0,c=!1,d=void 0;try{for(var e,f,g=a.resizeEventSet[Symbol.iterator]();!(b=(e=g.next()).done);b=!0)f=e.value,f()}catch(a){c=!0,d=a}finally{try{b||null==g.return||g.return()}finally{if(c)throw d}}a.initMenuMobile(),a.initToc(),a.initSmoothScroll()},100))},!1)}},{key:"init",value:function init(){this.initMenuMobile(),this.initSwitchTheme(),this.initHighlight(),this.initTable(),this.initHeaderLink(),this.initMermaid(),this.initEcharts(),this.initTypeit(),this.initToc(),this.initSmoothScroll(),this.onScroll(),this.onResize()}}]),b}(),c=function(){var a=new b;a.init()};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",c,!1):c()})(); //# sourceMappingURL=theme.min.js.map \ No newline at end of file diff --git a/static/js/theme.min.js.map b/static/js/theme.min.js.map index 3428a7a..8662249 100644 --- a/static/js/theme.min.js.map +++ b/static/js/theme.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../src/js/theme.js"],"names":[],"mappings":"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","file":"theme.min.js","sourcesContent":["(() => {\n 'use strict';\n\n class Util {\n forEach(elements, handler) {\n elements = elements || [];\n for (let i = 0; i < elements.length; i++) {\n handler(elements[i]);\n }\n }\n\n getScrollTop() {\n return (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;\n }\n }\n\n class Theme {\n constructor() {\n this.util = new Util();\n this.scrollTop = 0;\n this.scrollEvents = [];\n }\n\n initMobileMenu() {\n document.getElementById('menu-toggle').onclick = () => {\n document.getElementById('menu-toggle').classList.toggle('active');\n document.getElementById('menu-mobile').classList.toggle('active');\n };\n }\n\n initSwitchTheme() {\n this.util.forEach(document.getElementsByClassName('theme-switch'), (button) => {\n button.onclick = () => {\n document.body.classList.toggle('dark-theme');\n window.isDark = !window.isDark;\n window.localStorage && window.localStorage.setItem('theme', window.isDark ? 'dark' : 'light');\n this.initEcharts();\n };\n });\n }\n\n initHighlight() {\n this.util.forEach(document.querySelectorAll('.highlight > .chroma'), (block) => {\n const codes = block.querySelectorAll('pre.chroma > code');\n const code = codes[codes.length - 1];\n const lang = code ? code.className.toLowerCase() : '';\n block.className += ' ' + lang;\n });\n this.util.forEach(document.querySelectorAll('.highlight > pre.chroma'), (block) => {\n const chroma = document.createElement('div');\n chroma.className = block.className;\n const table = document.createElement('table');\n chroma.appendChild(table);\n const tbody = document.createElement('tbody');\n table.appendChild(tbody);\n const tr = document.createElement('tr');\n tbody.appendChild(tr);\n const td = document.createElement('td');\n tr.appendChild(td);\n block.parentElement.replaceChild(chroma, block);\n td.appendChild(block);\n });\n }\n\n initTable() {\n this.util.forEach(document.querySelectorAll('.content table'), (table) => {\n const wrapper = document.createElement('div');\n wrapper.className = 'table-wrapper';\n table.parentElement.replaceChild(wrapper, table);\n wrapper.appendChild(table);\n });\n }\n\n initHeaderLink() {\n for (let num = 1; num <= 6; num++) {\n this.util.forEach(document.querySelectorAll('.content > h' + num), (header) => {\n header.classList.add('headerLink');\n header.innerHTML = `${header.innerHTML}`;\n });\n }\n }\n\n _refactorToc(toc) {\n this.util.forEach(toc.querySelectorAll('a:first-child'), (link) => {\n link.classList.add('toc-link');\n });\n }\n\n _initTocState(tocContainer) {\n if (window.getComputedStyle(tocContainer, null).display !== 'none') {\n const fixed = window.desktopHeaderMode !== 'normal';\n const fixedHeight = document.getElementById('header-desktop').getBoundingClientRect().height;\n const TOP_SPACING = 20 + (fixed ? fixedHeight : 0);\n const minTop = tocContainer.offsetTop;\n const minScrollTop = minTop - TOP_SPACING + (fixed ? 0 : fixedHeight);\n const footerTop = document.getElementById('post-footer').offsetTop;\n const toclinks = tocContainer.getElementsByClassName('toc-link');\n const headerLinks = document.getElementsByClassName('headerLink') || [];\n const tocLinkLis = tocContainer.querySelectorAll('.post-toc-content li');\n const INDEX_SPACING = 5 + (fixed ? fixedHeight : 0);\n\n const changeTocState = () => {\n const scrollTop = this.util.getScrollTop();\n const maxTop = footerTop - tocContainer.getBoundingClientRect().height;\n const maxScrollTop = maxTop - TOP_SPACING + (fixed ? 0 : fixedHeight);\n if (scrollTop < minScrollTop) {\n tocContainer.style.position = 'absolute';\n tocContainer.style.top = `${minTop}px`;\n } else if (scrollTop > maxScrollTop) {\n tocContainer.style.position = 'absolute';\n tocContainer.style.top = `${maxTop}px`;\n } else {\n tocContainer.style.position = 'fixed';\n tocContainer.style.top = `${TOP_SPACING}px`;\n }\n\n this.util.forEach(toclinks, (link) => { link.classList.remove('active'); });\n this.util.forEach(tocLinkLis, (link) => { link.classList.remove('has-active'); });\n let activeTocIndex = headerLinks.length - 1;\n for (let i = 0; i < headerLinks.length - 1; i++) {\n const thisTop = headerLinks[i].getBoundingClientRect().top;\n const nextTop = headerLinks[i + 1].getBoundingClientRect().top;\n if ((i == 0 && thisTop > INDEX_SPACING)\n || (thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING)) {\n activeTocIndex = i;\n break;\n }\n }\n if (activeTocIndex !== -1) {\n toclinks[activeTocIndex].classList.add('active');\n let parent = toclinks[activeTocIndex].parentElement;\n while (parent.tagName !== 'NAV') {\n parent.classList.add('has-active');\n parent = parent.parentElement.parentElement;\n }\n }\n };\n changeTocState();\n\n if (!this._initTocOnce) {\n this.scrollEvents.push(changeTocState);\n this._initTocOnce = true;\n }\n }\n }\n\n initToc() {\n const tocContainer = document.getElementById('post-toc');\n if (tocContainer !== null) {\n const toc = document.getElementById('TableOfContents');\n if (toc === null) {\n tocContainer.parentElement.removeChild(tocContainer);\n } else {\n this._refactorToc(toc);\n this._initTocState(tocContainer);\n window.addEventListener('resize', () => {\n window.setTimeout(() => {\n this._initTocState(tocContainer);\n }, 0);\n }, false);\n }\n }\n }\n\n initMermaid() {\n if (window.mermaidMap) {\n mermaid.initialize({startOnLoad: false, theme: null});\n Object.keys(mermaidMap).forEach((id) => {\n const element = document.getElementById(id);\n mermaid.mermaidAPI.render(\"d\" + id, mermaidMap[id], (svgCode) => {\n element.innerHTML = svgCode;\n const svg = element.firstChild;\n svg.style.width = \"100%\"\n }, element);\n });\n }\n }\n\n initEcharts() {\n if (window.echartsMap) {\n for (let i = 0; i < echartsArr.length; i++) {\n echartsArr[i].dispose();\n }\n echartsArr = [];\n Object.keys(echartsMap).forEach((id) => {\n let myChart = echarts.init(document.getElementById(id), window.isDark ? 'dark' : 'macarons', {renderer: 'svg'});\n myChart.setOption(echartsMap[id]);\n echartsArr.push(myChart);\n });\n window.addEventListener(\"resize\", function () {\n this.setTimeout(() => {\n for (let i = 0; i < echartsArr.length; i++) {\n echartsArr[i].resize();\n }\n }, 0);\n }, false);\n }\n }\n\n initTypeit() {\n if (window.typeitArr) {\n for (let i = 0; i < typeitArr.length; i++) {\n const group = typeitArr[i];\n (function typeone(i) {\n const content = document.getElementById(`r${group[i]}`).innerHTML;\n if (i === group.length - 1) {\n new TypeIt(`#${group[i]}`, {\n strings: content,\n }).go();\n return;\n }\n let instance = new TypeIt(`#${group[i]}`, {\n strings: content,\n afterComplete: () => {\n instance.destroy();\n typeone(i + 1);\n },\n }).go();\n })(0);\n }\n }\n }\n\n initScroll() {\n for (let i = 0; i < this.scrollEvents.length; i++) {\n document.addEventListener('scroll', this.scrollEvents[i], false);\n }\n const initSmoothScroll = () => {\n const isMobile = window.matchMedia('only screen and (max-width: 560px)').matches;\n if ((!isMobile && window.desktopHeaderMode === 'normal')\n || (isMobile && window.mobileHeaderMode === 'normal')) {\n new SmoothScroll('[href^=\"#\"]', {speed: 300, speedAsDuration: true});\n } else {\n new SmoothScroll('[href^=\"#\"]', {speed: 300, speedAsDuration: true, header: '#header-desktop'});\n }\n };\n initSmoothScroll();\n window.addEventListener('resize', () => {\n window.setTimeout(() => {\n initSmoothScroll();\n }, 0);\n }, false);\n const headers = [];\n if (window.desktopHeaderMode === 'auto') headers.push(document.getElementById('header-desktop'));\n if (window.mobileHeaderMode === 'auto') headers.push(document.getElementById('header-mobile'));\n this.util.forEach(headers, (header) => {\n header.classList.add('animated');\n header.classList.add('faster');\n });\n const toTopButton = document.getElementById('dynamic-to-top');\n document.addEventListener('scroll', () => {\n const scrollTop = this.util.getScrollTop();\n this.util.forEach(headers, (header) => {\n if (this.scrollTop < scrollTop) {\n if (!header.classList.contains('fadeOutUp')) {\n header.classList.remove('fadeInDown');\n header.classList.add('fadeOutUp');\n }\n } else {\n if (!header.classList.contains('fadeInDown')) {\n header.classList.remove('fadeOutUp');\n header.classList.add('fadeInDown');\n }\n }\n if (scrollTop > 600) {\n if (this.scrollTop < scrollTop) {\n if (!toTopButton.classList.contains('fadeOut')) {\n toTopButton.classList.remove('fadeIn');\n toTopButton.classList.add('fadeOut');\n }\n } else {\n toTopButton.style.display = 'block';\n if (!toTopButton.classList.contains('fadeIn')) {\n toTopButton.classList.remove('fadeOut');\n toTopButton.classList.add('fadeIn');\n }\n }\n } else {\n toTopButton.style.display = 'none';\n }\n });\n this.scrollTop = scrollTop;\n }, false);\n }\n\n init() {\n this.initMobileMenu();\n this.initSwitchTheme();\n this.initHighlight();\n this.initTable();\n this.initHeaderLink();\n this.initMermaid();\n this.initEcharts();\n this.initTypeit();\n this.initToc();\n this.initScroll();\n }\n }\n\n const themeInit = () => {\n const theme = new Theme();\n theme.init();\n };\n\n if (document.readyState !== 'loading') {\n themeInit();\n } else {\n document.addEventListener('DOMContentLoaded', themeInit, false);\n }\n})();\n"]} \ No newline at end of file +{"version":3,"sources":["../../src/js/theme.js"],"names":[],"mappings":"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","file":"theme.min.js","sourcesContent":["(() => {\n 'use strict';\n\n class Util {\n forEach(elements, handler) {\n elements = elements || [];\n for (let i = 0; i < elements.length; i++) {\n handler(elements[i]);\n }\n }\n\n getScrollTop() {\n return (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;\n }\n\n isMobile() {\n return window.matchMedia('only screen and (max-width: 560px)').matches;\n }\n\n isTocStatic() {\n return window.matchMedia('only screen and (max-width: 960px)').matches;\n }\n }\n\n class Theme {\n constructor() {\n this.util = new Util();\n this.newScrollTop = this.util.getScrollTop();\n this.oldScrollTop = this.newScrollTop;\n this.scrollEventSet = new Set();\n this.resizeEventSet = new Set();\n }\n\n initMenuMobile() {\n const menuToggleMobile = document.getElementById('menu-toggle-mobile');\n const menuMobile = document.getElementById('menu-mobile');\n this._menuMobileOnScroll = this._menuMobileOnScroll || (() => {\n menuToggleMobile.classList.remove('active');\n menuMobile.classList.remove('active');\n });\n if (this.util.isMobile()) {\n menuToggleMobile.onclick = () => {\n menuToggleMobile.classList.toggle('active');\n menuMobile.classList.toggle('active');\n };\n this.scrollEventSet.add(this._menuMobileOnScroll);\n } else {\n this.scrollEventSet.delete(this._menuMobileOnScroll);\n }\n }\n\n initSwitchTheme() {\n this.util.forEach(document.getElementsByClassName('theme-switch'), (button) => {\n button.onclick = () => {\n document.body.classList.toggle('dark-theme');\n window.isDark = !window.isDark;\n window.localStorage && window.localStorage.setItem('theme', window.isDark ? 'dark' : 'light');\n this.initEcharts();\n };\n });\n }\n\n initHighlight() {\n this.util.forEach(document.querySelectorAll('.highlight > .chroma'), (block) => {\n const codes = block.querySelectorAll('pre.chroma > code');\n const code = codes[codes.length - 1];\n const lang = code ? code.className.toLowerCase() : '';\n block.className += ' ' + lang;\n });\n this.util.forEach(document.querySelectorAll('.highlight > pre.chroma'), (block) => {\n const chroma = document.createElement('div');\n chroma.className = block.className;\n const table = document.createElement('table');\n chroma.appendChild(table);\n const tbody = document.createElement('tbody');\n table.appendChild(tbody);\n const tr = document.createElement('tr');\n tbody.appendChild(tr);\n const td = document.createElement('td');\n tr.appendChild(td);\n block.parentElement.replaceChild(chroma, block);\n td.appendChild(block);\n });\n }\n\n initTable() {\n this.util.forEach(document.querySelectorAll('.content table'), (table) => {\n const wrapper = document.createElement('div');\n wrapper.className = 'table-wrapper';\n table.parentElement.replaceChild(wrapper, table);\n wrapper.appendChild(table);\n });\n }\n\n initHeaderLink() {\n for (let num = 1; num <= 6; num++) {\n this.util.forEach(document.querySelectorAll('.content > h' + num), (header) => {\n header.classList.add('headerLink');\n header.innerHTML = `${header.innerHTML}`;\n });\n }\n }\n\n initToc() {\n const tocCore = document.getElementById('TableOfContents');\n if (tocCore === null) return;\n if (this.util.isTocStatic()) {\n const tocContentStatic = document.getElementById('toc-content-static');\n if (tocCore.parentElement !== tocContentStatic) {\n tocCore.parentElement.removeChild(tocCore);\n tocContentStatic.appendChild(tocCore);\n }\n if (this._tocOnScroll) this.scrollEventSet.delete(this._tocOnScroll);\n } else {\n const tocContentAuto = document.getElementById('toc-content-auto');\n if (tocCore.parentElement !== tocContentAuto) {\n tocCore.parentElement.removeChild(tocCore);\n tocContentAuto.appendChild(tocCore);\n }\n const toc = document.getElementById('toc-auto');\n const page = document.getElementsByClassName('page')[0];\n toc.style.maxWidth = `${page.getBoundingClientRect().left - 40}px`;\n this._tocLinks = this._tocLinks || tocCore.getElementsByTagName('a');\n this._tocLis = this._tocLis || tocCore.getElementsByTagName('li');\n this._headerLinks = this._headerLinks || document.getElementsByClassName('headerLink') || [];\n const headerIsFixed = window.desktopHeaderMode !== 'normal';\n const headerHeight = document.getElementById('header-desktop').offsetHeight;\n const TOP_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n const minTocTop = toc.offsetTop;\n const minScrollTop = minTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight);\n this._tocOnScroll = this._tocOnScroll || (() => {\n const footerTop = document.getElementById('post-footer').offsetTop;\n const maxTocTop = footerTop - toc.getBoundingClientRect().height;\n const maxScrollTop = maxTocTop - TOP_SPACING + (headerIsFixed ? 0 : headerHeight);\n if (this.newScrollTop < minScrollTop) {\n toc.style.position = 'absolute';\n toc.style.top = `${minTocTop}px`;\n } else if (this.newScrollTop > maxScrollTop) {\n toc.style.position = 'absolute';\n toc.style.top = `${maxTocTop}px`;\n } else {\n toc.style.position = 'fixed';\n toc.style.top = `${TOP_SPACING}px`;\n }\n\n this.util.forEach(this._tocLinks, (link) => { link.classList.remove('active'); });\n this.util.forEach(this._tocLis, (link) => { link.classList.remove('has-active'); });\n const INDEX_SPACING = 20 + (headerIsFixed ? headerHeight : 0);\n let activeTocIndex = this._headerLinks.length - 1;\n for (let i = 0; i < this._headerLinks.length - 1; i++) {\n const thisTop = this._headerLinks[i].getBoundingClientRect().top;\n const nextTop = this._headerLinks[i + 1].getBoundingClientRect().top;\n if ((i == 0 && thisTop > INDEX_SPACING)\n || (thisTop <= INDEX_SPACING && nextTop > INDEX_SPACING)) {\n activeTocIndex = i;\n break;\n }\n }\n if (activeTocIndex !== -1) {\n this._tocLinks[activeTocIndex].classList.add('active');\n let parent = this._tocLinks[activeTocIndex].parentElement;\n while (parent !== tocCore) {\n parent.classList.add('has-active');\n parent = parent.parentElement.parentElement;\n }\n }\n });\n this._tocOnScroll();\n this.scrollEventSet.add(this._tocOnScroll);\n }\n }\n\n initMermaid() {\n if (window.mermaidMap) {\n mermaid.initialize({startOnLoad: false, theme: null});\n Object.keys(window.mermaidMap).forEach((id) => {\n const element = document.getElementById(id);\n mermaid.mermaidAPI.render(\"d\" + id, window.mermaidMap[id], (svgCode) => {\n element.innerHTML = svgCode;\n const svg = element.firstChild;\n svg.style.width = \"100%\"\n }, element);\n });\n }\n }\n\n initEcharts() {\n if (window.echartsMap) {\n this._echartsArr = this._echartsArr || [];\n for (let i = 0; i < this._echartsArr.length; i++) {\n this._echartsArr[i].dispose();\n }\n this._echartsArr = [];\n Object.keys(window.echartsMap).forEach((id) => {\n const chart = echarts.init(document.getElementById(id), window.isDark ? 'dark' : 'macarons', {renderer: 'svg'});\n chart.setOption(window.echartsMap[id]);\n this._echartsArr.push(chart);\n });\n this._echartsOnResize = this._echartsOnResize || (() => {\n for (let i = 0; i < this._echartsArr.length; i++) {\n this._echartsArr[i].resize();\n }\n });\n this.resizeEventSet.add(this._echartsOnResize);\n }\n }\n\n initTypeit() {\n if (window.typeitArr) {\n for (let i = 0; i < window.typeitArr.length; i++) {\n const group = window.typeitArr[i];\n (function typeone(i) {\n const content = document.getElementById(`r${group[i]}`).innerHTML;\n if (i === group.length - 1) {\n new TypeIt(`#${group[i]}`, {\n strings: content,\n }).go();\n return;\n }\n let instance = new TypeIt(`#${group[i]}`, {\n strings: content,\n afterComplete: () => {\n instance.destroy();\n typeone(i + 1);\n },\n }).go();\n })(0);\n }\n }\n }\n\n initSmoothScroll() {\n if ((!this.util.isMobile() && window.desktopHeaderMode === 'normal')\n || (this.util.isMobile() && window.mobileHeaderMode === 'normal')) {\n new SmoothScroll('[href^=\"#\"]', {speed: 300, speedAsDuration: true});\n } else {\n new SmoothScroll('[href^=\"#\"]', {speed: 300, speedAsDuration: true, header: '#header-desktop'});\n }\n }\n\n onScroll() {\n const headers = [];\n if (window.desktopHeaderMode === 'auto') headers.push(document.getElementById('header-desktop'));\n if (window.mobileHeaderMode === 'auto') headers.push(document.getElementById('header-mobile'));\n this.util.forEach(headers, (header) => {\n header.classList.add('animated');\n header.classList.add('faster');\n });\n const toTopButton = document.getElementById('dynamic-to-top');\n const MIN_SCROLL = 20;\n window.addEventListener('scroll', () => {\n this.newScrollTop = this.util.getScrollTop();\n const scroll = this.newScrollTop - this.oldScrollTop;\n this.util.forEach(headers, (header) => {\n if (scroll > MIN_SCROLL) {\n header.classList.remove('fadeInDown');\n header.classList.add('fadeOutUp');\n } else if (scroll < - MIN_SCROLL) {\n header.classList.remove('fadeOutUp');\n header.classList.add('fadeInDown');\n }\n });\n if (this.newScrollTop > 400) {\n if (scroll > MIN_SCROLL) {\n toTopButton.classList.remove('fadeIn');\n toTopButton.classList.add('fadeOut');\n } else if (scroll < - MIN_SCROLL) {\n toTopButton.style.display = 'block';\n toTopButton.classList.remove('fadeOut');\n toTopButton.classList.add('fadeIn');\n }\n } else {\n toTopButton.style.display = 'none';\n }\n if (!this._scrollTimeout) {\n this._scrollTimeout = window.setTimeout(() => {\n this._scrollTimeout = null;\n for (let event of this.scrollEventSet) event();\n }, 10);\n }\n this.oldScrollTop = this.newScrollTop;\n }, false);\n }\n\n onResize() {\n window.addEventListener('resize', () => {\n if (!this._resizeTimeout) {\n this._resizeTimeout = window.setTimeout(() => {\n this._resizeTimeout = null;\n for (let event of this.resizeEventSet) event();\n this.initMenuMobile();\n this.initToc();\n this.initSmoothScroll();\n }, 100);\n }\n }, false);\n }\n\n init() {\n this.initMenuMobile();\n this.initSwitchTheme();\n this.initHighlight();\n this.initTable();\n this.initHeaderLink();\n this.initMermaid();\n this.initEcharts();\n this.initTypeit();\n this.initToc();\n this.initSmoothScroll();\n\n this.onScroll();\n this.onResize();\n }\n }\n\n const themeInit = () => {\n const theme = new Theme();\n theme.init();\n };\n\n if (document.readyState !== 'loading') {\n themeInit();\n } else {\n document.addEventListener('DOMContentLoaded', themeInit, false);\n }\n})();\n"]} \ No newline at end of file