Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/jacobsun/edidor.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsun6eal <jacob.sun.meta@gmail.com>2019-05-20 08:54:20 +0300
committersun6eal <jacob.sun.meta@gmail.com>2019-05-20 08:54:20 +0300
commit91b7cf5c4bac458921daa7a717fdafae84a1c893 (patch)
tree983b24499ec9aec8bf05454ec9eb80b44cebb61e
parente75fc4edb352d915facd7ddd989fb6a223b2c5df (diff)
updatev0.3.0
-rw-r--r--layouts/partials/js.html2
-rw-r--r--layouts/partials/loader.html3
-rw-r--r--src/css/base.scss73
-rw-r--r--src/css/light.scss10
-rw-r--r--src/css/var.scss1
-rw-r--r--src/index.js8
-rw-r--r--src/js/css_template.js3
-rw-r--r--src/js/loader.js75
-rw-r--r--src/js/main.js78
-rw-r--r--static/css/main.css654
-rw-r--r--static/js/main.js399
11 files changed, 1110 insertions, 196 deletions
diff --git a/layouts/partials/js.html b/layouts/partials/js.html
index ef27b98..57a8be8 100644
--- a/layouts/partials/js.html
+++ b/layouts/partials/js.html
@@ -9,4 +9,6 @@
<script>hljs.initHighlightingOnLoad();</script>
{{ end }}
+{{- if not .Site.IsServer -}}
{{ template "_internal/google_analytics_async.html" . }}
+{{- end -}}
diff --git a/layouts/partials/loader.html b/layouts/partials/loader.html
index 48a0327..7cd06e6 100644
--- a/layouts/partials/loader.html
+++ b/layouts/partials/loader.html
@@ -1,8 +1,7 @@
-<div class="loader">
+
<div class="top">
<img class="logo" src="{{ "images/logo.svg" | absURL }}" alt="logo" />
</div>
<div class="bottom">
<img class="logo" src="{{ "images/logo.svg" | absURL }}" alt="logo" />
</div>
-</div>
diff --git a/src/css/base.scss b/src/css/base.scss
index 6d54a9d..fb727a2 100644
--- a/src/css/base.scss
+++ b/src/css/base.scss
@@ -9,6 +9,7 @@ body {
word-break : break-all;
box-sizing : border-box;
font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, WenQuanYi Micro Hei, sans-serif;
+ overflow: hidden;
}
img {
@@ -56,63 +57,47 @@ img {
a:hover {
text-decoration: none !important;
}
-body {
- overflow: auto;
- .loader {
+
+body.loaded {
+ .top {
display: none;
}
-}
-body.loading {
- overflow: hidden;
- .loader {
- display: block;
+ .bottom {
+ display: none;
}
}
-body.loaded {
- .loader {
- background:transparent;
+
+.top img.logo, .bottom img.logo {
+ display: block;
+ margin: 0 auto;
+ position: relative;
+}
+.top, .bottom {
+ position: absolute;
+ width: 100vw;
+ height: 50vh;
+ z-index: 99999;
+ overflow: hidden;
+}
+.top {
+ background: $dark_main_bg;
+ top: -50vh;
+ img.logo {
+ bottom: -100%;
+ transform: translateY(-50%);
}
}
-.loader {
+.bottom {
background: $dark_main_bg;
- width: 100vw;
- height: 100vh;
- position: absolute;
- top: 0;
- left: 0;
- z-index: 999999;
+ top: 100vh;
img.logo {
- display: block;
- margin: 0 auto;
- position: relative;
- }
- .top, .bottom {
- position: absolute;
- width: 100vw;
- height: 50vh;
- z-index: 99999;
- overflow: hidden;
- }
- .top {
- background: rgb(102, 204, 255);
- top: -50vh;
- img.logo {
- bottom: -100%;
- transform: translateY(-50%);
- }
+ transform: translateY(-50%);
}
- .bottom {
- background: rgb(190, 251, 191);
- top: 100vh;
- img.logo {
- transform: translateY(-50%);
- }
-
- }
}
+
.header,
.footer {
height: 5vh;
diff --git a/src/css/light.scss b/src/css/light.scss
index 9900aba..97e4d14 100644
--- a/src/css/light.scss
+++ b/src/css/light.scss
@@ -64,7 +64,7 @@ body.light-mode,
.light-mode pre,
.light-mode code {
- background: #DDDDDD;
+ background: $light_header_bg;
}
/* sidebar fg */
@@ -87,7 +87,7 @@ body.light-mode,
.light-mode .logo-link,
.light-mode .dialog,
.light-mode .dialog button {
- background: #DDDDDD;
+ background: $light_header_bg;
}
.light-mode .header .menu>li:hover,
@@ -130,3 +130,9 @@ body.light-mode,
.light-mode .title {
text-shadow: none;
}
+
+.light-mode {
+ .top, .bottom {
+ background: $light_header_bg;
+ }
+}
diff --git a/src/css/var.scss b/src/css/var.scss
index 1cd4301..f32cb9b 100644
--- a/src/css/var.scss
+++ b/src/css/var.scss
@@ -1,2 +1,3 @@
$light_main_bg: #FFF;
$dark_main_bg: #282C34;
+$light_header_bg: #DDD;
diff --git a/src/index.js b/src/index.js
index 648f378..eb112df 100644
--- a/src/index.js
+++ b/src/index.js
@@ -6,13 +6,13 @@ import {
activateSidebarToggle,
activateModeSwitcher,
activateSidebarDrag,
- activateDialog,
- getLoader
+ activateDialog
} from './js/main'
+import { getLoader } from './js/loader'
const loader = getLoader()
onEvent('DOMContentLoaded', e => {
console.log('page loaded!', Date.now())
- loader.close()
+ loader.loading()
const doms = {}
doms.pane = qs('.sidebar')
doms.main = qs('.main')
@@ -23,5 +23,5 @@ onEvent('DOMContentLoaded', e => {
activateSidebarToggle(doms)
activateModeSwitcher(doms, loader)
activateSidebarDrag(doms)
- activateDialog(doms)
+ activateDialog(doms, loader)
}, 0, document)
diff --git a/src/js/css_template.js b/src/js/css_template.js
index 0359f8e..cd2f371 100644
--- a/src/js/css_template.js
+++ b/src/js/css_template.js
@@ -88,7 +88,8 @@ const wildStyle = styleTemplate`
.wild-mode .footer,
.wild-mode .header .sub-menu li:hover,
.wild-mode .sidebar a:hover,
- .wild-mode .logo-link {
+ .wild-mode .logo-link,
+ .wild-mode .top, .wild-mode .bottom {
background: ${'dark'};
}
.wild-mode .header .menu>li:hover,
diff --git a/src/js/loader.js b/src/js/loader.js
new file mode 100644
index 0000000..7987f74
--- /dev/null
+++ b/src/js/loader.js
@@ -0,0 +1,75 @@
+import { qs, getProgress } from './helpers'
+import { easeElasticOut } from 'd3-ease'
+export function getLoader () {
+ let topEle = qs('.top')
+ let bottomEle = qs('.bottom')
+ let distance = document.documentElement.clientHeight / 2
+ let ticket = false
+ let closed = false
+ let opening = false
+ let openWaiting = false
+ const animation = (ease, cb, duration, finaly = () => {}) => {
+ const tick = () => {
+ let progress = Math.min(ease((getProgress(data))), 1)
+ // d3.easeExpOut has problem, t can not reach to 1, so I mannually fix it
+ // progress = progress > 0.999 ? 1 : progress
+ if (progress < 1) {
+ cb(progress)
+ window.requestAnimationFrame(tick)
+ } else {
+ window.performance.clearMarks(data.id)
+ cb(progress)
+ finaly()
+ }
+ }
+ const data = {
+ duration,
+ id: window.requestAnimationFrame(tick)
+ }
+ }
+ const loading = () => {
+ console.log('loading', ticket)
+ if (ticket) return
+ ticket = true
+ close(() => {
+ closed = true
+ if (openWaiting) {
+ open()
+ }
+ })
+ }
+ const loaded = () => {
+ console.log('loaded: ', ticket, opening)
+ if (!ticket) return
+ if (opening) return
+ opening = true
+ if (closed) {
+ open()
+ } else {
+ openWaiting = true
+ }
+ }
+ function close (cb) {
+ animation(easeElasticOut, progress => {
+ topEle.style.top = -((1 - progress) * distance) + 'px'
+ bottomEle.style.top = (1 - progress) * distance + distance + 'px'
+ }, 1000, cb)
+ }
+
+ function open (cb) {
+ animation(easeElasticOut, progress => {
+ topEle.style.top = -(progress * distance) + 'px'
+ bottomEle.style.top = progress * distance + distance + 'px'
+ }, 1000, () => {
+ opening = false
+ closed = false
+ openWaiting = false
+ ticket = false
+ })
+ }
+
+ return {
+ loading,
+ loaded
+ }
+}
diff --git a/src/js/main.js b/src/js/main.js
index 8476750..03e53c3 100644
--- a/src/js/main.js
+++ b/src/js/main.js
@@ -9,12 +9,11 @@ import {
onEvent,
onPointerMove,
ls,
- download,
- getProgress
+ download
} from './helpers'
import wildStyle from './css_template'
import { genFile } from './file_template'
-import { easeBounceOut, easeBounceIn } from 'd3-ease'
+
// sidebar function dragging wrapper
function activateSidebarDrag (doms) {
const state = {
@@ -127,7 +126,7 @@ function tryLoadMode (doms, loader) {
ls.get('wild_style'))
document.body.appendChild(wildEle)
}
- loader.open()
+ loader.loaded()
}
function activateModeSwitcher (doms, loader) {
onEvent('click', e => {
@@ -146,6 +145,7 @@ function activateModeSwitcher (doms, loader) {
console.error('Theme name not found, probably missing an "Identifier" field in Config file.')
return
}
+ loader.loading()
toMode(theme + '-mode')
if (theme === 'wild') {
const wildEle = qs('.wild-ele')
@@ -157,6 +157,7 @@ function activateModeSwitcher (doms, loader) {
}
ls.set('wild_style', style)
}
+ loader.loaded()
}, 0, '#theme-switcher')
}
@@ -164,7 +165,7 @@ function activateModeSwitcher (doms, loader) {
// removeClass(cloak, 'hide')
// }
-function activateDialog (doms) {
+function activateDialog (doms, loader) {
onEvent('click', e => {
removeClass('.dialog', 'show')
}, 0, '.close-dialog')
@@ -182,8 +183,10 @@ function activateDialog (doms) {
window.alert('Mess up builtin themes.')
return
}
+ loader.loading()
exportWild(themeName)
removeClass('.dialog', 'show')
+ loader.loaded()
}, 0, '.export')
}
function exportWild (themeName) {
@@ -199,74 +202,11 @@ function generateFile (themeName) {
return file + style
}
-function getLoader () {
- let topEle = qs('.top')
- let bottomEle = qs('.bottom')
- // let distance = document.documentElement.clientHeight / 2
- let distance = 312.5
- console.log('distance', distance)
- let isLoaded = false
- let isLoadingDone = false
-
- const animation = (ease, cb, duration, finaly = () => {}) => {
- const tick = () => {
- const progress = Math.min(ease((getProgress(data))), 1)
- if (progress < 1) {
- cb(progress)
- window.requestAnimationFrame(tick)
- } else {
- window.performance.clearMarks(data.id)
- cb(progress)
- finaly()
- }
- }
- const data = {
- duration,
- id: window.requestAnimationFrame(tick)
- }
- }
- function close (cb) {
- console.log('close')
- removeClass(document.body, 'loaded')
- addClass(document.body, 'loading')
- animation(easeBounceIn, progress => {
- topEle.style.top = -((1 - progress) * distance) + 'px'
- bottomEle.style.top = (1 - progress) * distance + distance + 'px'
- }, 1000, () => {
- isLoadingDone = true
- if (isLoaded) open()
- })
- }
-
- function open (cb) {
- isLoaded = true
- if (isLoadingDone) {
- console.log('open')
- addClass(document.body, 'loaded')
- animation(easeBounceOut, progress => {
- topEle.style.top = -(progress * distance) + 'px'
- bottomEle.style.top = progress * distance + distance + 'px'
- }, 1000, afterOpen)
- }
- }
-
- const afterOpen = () => {
- removeClass(document.body, 'loading')
- isLoadingDone = false
- isLoaded = false
- }
- return {
- close,
- open
- }
-}
-
export {
tryLoadMode,
tryRestoreSidebar,
activateSidebarToggle,
activateModeSwitcher,
activateSidebarDrag,
- activateDialog,
- getLoader
+ activateDialog
}
diff --git a/static/css/main.css b/static/css/main.css
index ed20ab6..994e174 100644
--- a/static/css/main.css
+++ b/static/css/main.css
@@ -1 +1,653 @@
-html{font-size:calc(1vh + 1vw)}body{margin:0;word-break:break-all;-webkit-box-sizing:border-box;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,sans-serif}img{height:auto;width:100%;max-width:40vw}.clearfix:after{content:"";display:table;clear:both}.left{float:left}.right{float:right}.hide{height:0;opacity:0}.btn{text-decoration:none;cursor:pointer}.control{list-style-type:none;margin:0;padding:0}.no-break{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}a:hover{text-decoration:none!important}body{overflow:auto}body .loader{display:none}body.loading{overflow:hidden}body.loading .loader{display:block}body.loaded .loader{background:transparent}.loader{background:#282c34;width:100vw;height:100vh;position:absolute;top:0;left:0;z-index:999999}.loader img.logo{display:block;margin:0 auto;position:relative}.loader .bottom,.loader .top{position:absolute;width:100vw;height:50vh;z-index:99999;overflow:hidden}.loader .top{background:#6cf;top:-50vh}.loader .top img.logo{bottom:-100%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.loader .bottom{background:#befbbf;top:100vh}.loader .bottom img.logo{-webkit-transform:translateY(-50%);transform:translateY(-50%)}.footer,.header{height:5vh}.footer a,.header a{line-height:5vh;display:block;padding-left:.8rem;padding-right:.8rem}.footer ul,.header>ul{margin:0 1vw}.footer li,.menu>li{float:left}.menu>li{position:relative}.footer .social{float:left}.footer .status{float:right}.middle{height:90vh}.sidebar{width:20vw;float:left}.main{margin-left:20vw;-webkit-box-sizing:border-box;box-sizing:border-box;padding:2vw 3vw;overflow-y:auto;position:relative}.main,.sidebar{height:100%}.sidebar.hide{display:none}.sidebar.hide+.main{margin-left:0!important}.intro{text-align:center;position:absolute;top:50%;left:0;right:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.intro img.logo{display:inline}.header ul ul{display:none;position:absolute;top:100%;left:0;width:14em;z-index:999}.header li:hover>ul{display:block}.main{font-size:1rem;line-height:2}.header .sub-menu a{padding:0 2vw}.sidebar{overflow-y:auto}.sidebar a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar ul{margin-top:1rem}.sidebar a,.taxonomy-key{display:block;line-height:2;padding:0 2vw}.logo-link{height:5vh;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:1.2vh}.logo{height:70%;width:auto;display:block}.logo-container{display:none}body.dark-mode .logo-default,body.light-mode .logo-light,body.wild-mode .logo-wild{display:list-item}body.dark-mode .intro .logo-default,body.light-mode .intro .logo-light,body.wild-mode .intro .logo-wild{display:block}hr{margin:1rem 0}pre{padding:.8rem 1rem}code,pre{overflow:auto}code{font-size:.8rem;font-family:Fira Code,Inconsolata,Deja Vu Sans Mono,Source Code Pro,Consolas,monospace;padding:.2rem .6rem}.icon{width:1rem;height:1rem;display:inline-block}.footer .icon{position:relative;top:.2rem}.sidebar .icon{margin-right:.5rem;position:relative;top:.1rem}.article-meta .icon{position:relative;top:calc(.1rem + 2px)}.article-tags .icon{position:relative;top:-.2rem}.article-categories li:first-child .icon{top:calc(.1rem + 1px)}.article{text-align:left}.title{font-weight:700;margin:0 0 .5rem}.item{margin-bottom:1rem}.item .title{margin:0}.article-meta{font-size:.8rem;margin-bottom:1rem}.article-meta ul{list-style-type:none;margin:0}.article-meta-splitter,.article-meta li{margin-bottom:.5rem}.article-meta li{float:left;margin-right:1rem}.article-meta li:first-child{margin-right:.5rem}.main .article-tags a{padding:0 .8rem;border-radius:1px;display:block;line-height:1.4}.main p a{margin:0 .3rem}.article-meta a,.list a,.pagination a,.terms-list a,.title a,a.terms-title{text-decoration:none}.pagination a,.terms-list a{font-size:.8rem}.pagination a{padding:0 .5rem}.pagination{position:absolute;left:0;right:0;bottom:0;padding:0 2rem}.pagination ul{list-style-type:none;margin-left:0}.code-toolbar>.toolbar a{border-bottom:none;display:block}.local-info{font-size:.8rem;padding:.8rem;margin-bottom:1rem}.footer a,.header a,.sidebar a,.taxonomy-key{font-size:.81rem}.main a{color:#9cf}.main .article-tags a{background:#327e36;color:#fff}.dialog label,.local-info{background:#ff9;color:#333;-webkit-box-shadow:2px 3px 1px 1px #000;box-shadow:2px 3px 1px 1px #000}.dialog,.footer a:hover,.header .menu>li:hover,.logo-link,.main,body{background:#282c34}.dialog .title,.header .sub-menu a,.main,.main .title a,.sidebar a,.taxonomy-key,blockquote.twitter-tweet{color:#c6c6c7}.icon{background:#c6c6c7}.article-meta,.footnotes,.item-meta{color:#939bab}td,th{border-bottom:1px solid #939bab}hr{border:1px solid #939bab}.pagination{background:#939bab}.sidebar{background:#16191d}.header ul ul{-webkit-box-shadow:0 .1em .2em 0 #060606;box-shadow:0 .1em .2em 0 #060606}.header ul ul,.pagination a:hover{background:#1a1d21}code{background:#1a1c21}.count,.taxonomy-key{color:#939394}.footer,.header,.header .sub-menu li:hover,.sidebar a:hover{background:#21252b}.footer a,.footer time,.header a,.pagination a{color:#797d85}.footer .icon{background-color:#797d85}.main h1,.main h2,.main h3,.main h4,.main h5,.main h6,.title{text-shadow:0 1px 1px #000}.dialog{width:100vw;height:0;position:absolute;top:0;left:0;z-index:9999;overflow:hidden;font-size:1rem}.dialog .wrapper{padding:1rem}.dialog footer,.dialog header,.dialog main{margin-bottom:2rem}.dialog header{margin-top:-2rem}.dialog div{margin-bottom:1rem}.dialog.show{height:100vh}.dialog label{display:block;margin-bottom:1rem;padding:.8rem 1rem;-webkit-box-shadow:none;box-shadow:none}.dialog input{padding:.3rem}.dialog button,.dialog input{font-size:1.2rem;float:right}.dialog button{padding:.3rem 1rem;background:#3083fe;color:#fff}.dialog .close-dialog{font-size:3rem;background:none;border:none}.light-mode .dialog button,.light-mode .main a{color:#3083fe}.light-mode .main .article-tags a{background:#35cc81;color:#fff}.light-mode .local-info{background:#efecaa;color:#000;-webkit-box-shadow:none;box-shadow:none}.light-mode .main,body.light-mode{background:#fff}.light-mode .dialog .title,.light-mode .main,.light-mode .main .title a,.light-mode .sidebar a,.light-mode .taxonomy-key,.light-mode blockquote.twitter-tweet{color:#4c4c4c}.light-mode .icon{background:#4c4c4c}.light-mode .article-meta,.light-mode .footnotes,.light-mode .item-meta{color:#999}.light-mode td,.light-mode th{border-bottom:1px solid #ccc}.light-mode hr{border:1px solid #ccc}.light-mode .pagination{background:#ccc}.light-mode .sidebar{background:#eee}.light-mode code,.light-mode pre{background:#ddd}.light-mode .sidebar a{color:#3f3f3f}.light-mode .count,.light-mode .taxonomy-key{color:#777}.light-mode .dialog,.light-mode .dialog button,.light-mode .footer,.light-mode .header,.light-mode .header .sub-menu li:hover,.light-mode .logo-link,.light-mode .sidebar a:hover{background:#ddd}.light-mode .footer a:hover,.light-mode .header .menu>li:hover{background:#ccc}.light-mode .header ul ul{-webkit-box-shadow:0 .1em .2em 0 #aaa;box-shadow:0 .1em .2em 0 #aaa}.light-mode .header ul ul,.light-mode .pagination a:hover{background:#ccc}.light-mode .footer a,.light-mode .footer time,.light-mode .header a,.light-mode .pagination a{color:#323232}.light-mode .header .sub-menu a{color:#0b0b0b}.light-mode .footer .icon{background-color:#323232}.light-mode .main h1,.light-mode .main h2,.light-mode .main h3,.light-mode .main h4,.light-mode .main h5,.light-mode .main h6,.light-mode .title,.wild-mode .main h1,.wild-mode .main h2,.wild-mode .main h3,.wild-mode .main h4,.wild-mode .main h5,.wild-mode .main h6,.wild-mode .title{text-shadow:none}.wild-mode .local-info{-webkit-box-shadow:none;box-shadow:none}.icon-tags{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='pricetags'%3E%3Cpath d='M12.87 22a1.84 1.84 0 0 1-1.29-.53l-6.41-6.42a1 1 0 0 1-.29-.61L4 5.09a1 1 0 0 1 .29-.8 1 1 0 0 1 .8-.29l9.35.88a1 1 0 0 1 .61.29l6.42 6.41a1.82 1.82 0 0 1 0 2.57l-7.32 7.32a1.82 1.82 0 0 1-1.28.53zm-6-8.11l6 6 7.05-7.05-6-6-7.81-.73z'/%3E%3Ccircle cx='10.5' cy='10.5' r='1.5'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='pricetags'%3E%3Cpath d='M12.87 22a1.84 1.84 0 0 1-1.29-.53l-6.41-6.42a1 1 0 0 1-.29-.61L4 5.09a1 1 0 0 1 .29-.8 1 1 0 0 1 .8-.29l9.35.88a1 1 0 0 1 .61.29l6.42 6.41a1.82 1.82 0 0 1 0 2.57l-7.32 7.32a1.82 1.82 0 0 1-1.28.53zm-6-8.11l6 6 7.05-7.05-6-6-7.81-.73z'/%3E%3Ccircle cx='10.5' cy='10.5' r='1.5'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E")}.icon-categories{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M19.5 20.5h-15A2.47 2.47 0 0 1 2 18.07V5.93A2.47 2.47 0 0 1 4.5 3.5h4.6a1 1 0 0 1 .77.37l2.6 3.18h7A2.47 2.47 0 0 1 22 9.48v8.59a2.47 2.47 0 0 1-2.5 2.43zM4 13.76v4.31a.46.46 0 0 0 .5.43h15a.46.46 0 0 0 .5-.43V9.48a.46.46 0 0 0-.5-.43H12a1 1 0 0 1-.77-.37L8.63 5.5H4.5a.46.46 0 0 0-.5.43z' data-name='folder'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M19.5 20.5h-15A2.47 2.47 0 0 1 2 18.07V5.93A2.47 2.47 0 0 1 4.5 3.5h4.6a1 1 0 0 1 .77.37l2.6 3.18h7A2.47 2.47 0 0 1 22 9.48v8.59a2.47 2.47 0 0 1-2.5 2.43zM4 13.76v4.31a.46.46 0 0 0 .5.43h15a.46.46 0 0 0 .5-.43V9.48a.46.46 0 0 0-.5-.43H12a1 1 0 0 1-.77-.37L8.63 5.5H4.5a.46.46 0 0 0-.5.43z' data-name='folder'/%3E%3C/g%3E%3C/svg%3E")}.icon-post{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='file-text'%3E%3Cpath d='M15 16H9a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2zm-6-2h3a1 1 0 0 0 0-2H9a1 1 0 0 0 0 2z'/%3E%3Cpath d='M19.74 8.33l-5.44-6a1 1 0 0 0-.74-.33h-7A2.53 2.53 0 0 0 4 4.5v15A2.53 2.53 0 0 0 6.56 22h10.88A2.53 2.53 0 0 0 20 19.5V9a1 1 0 0 0-.26-.67zM14 5l2.74 3h-2a.79.79 0 0 1-.74-.85zm3.44 15H6.56a.53.53 0 0 1-.56-.5v-15a.53.53 0 0 1 .56-.5H12v3.15A2.79 2.79 0 0 0 14.71 10H18v9.5a.53.53 0 0 1-.56.5z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='file-text'%3E%3Cpath d='M15 16H9a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2zm-6-2h3a1 1 0 0 0 0-2H9a1 1 0 0 0 0 2z'/%3E%3Cpath d='M19.74 8.33l-5.44-6a1 1 0 0 0-.74-.33h-7A2.53 2.53 0 0 0 4 4.5v15A2.53 2.53 0 0 0 6.56 22h10.88A2.53 2.53 0 0 0 20 19.5V9a1 1 0 0 0-.26-.67zM14 5l2.74 3h-2a.79.79 0 0 1-.74-.85zm3.44 15H6.56a.53.53 0 0 1-.56-.5v-15a.53.53 0 0 1 .56-.5H12v3.15A2.79 2.79 0 0 0 14.71 10H18v9.5a.53.53 0 0 1-.56.5z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E")}.article-meta .icon-date{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='calendar'%3E%3Cpath d='M18 4h-1V3a1 1 0 0 0-2 0v1H9V3a1 1 0 0 0-2 0v1H6a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3h12a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3zM6 6h1v1a1 1 0 0 0 2 0V6h6v1a1 1 0 0 0 2 0V6h1a1 1 0 0 1 1 1v4H5V7a1 1 0 0 1 1-1zm12 14H6a1 1 0 0 1-1-1v-6h14v6a1 1 0 0 1-1 1z'/%3E%3Ccircle cx='8' cy='16' r='1'/%3E%3Cpath d='M16 15h-4a1 1 0 0 0 0 2h4a1 1 0 0 0 0-2z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='calendar'%3E%3Cpath d='M18 4h-1V3a1 1 0 0 0-2 0v1H9V3a1 1 0 0 0-2 0v1H6a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3h12a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3zM6 6h1v1a1 1 0 0 0 2 0V6h6v1a1 1 0 0 0 2 0V6h1a1 1 0 0 1 1 1v4H5V7a1 1 0 0 1 1-1zm12 14H6a1 1 0 0 1-1-1v-6h14v6a1 1 0 0 1-1 1z'/%3E%3Ccircle cx='8' cy='16' r='1'/%3E%3Cpath d='M16 15h-4a1 1 0 0 0 0 2h4a1 1 0 0 0 0-2z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E")}.github{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M12 1A10.89 10.89 0 0 0 1 11.77 10.79 10.79 0 0 0 8.52 22c.55.1.75-.23.75-.52v-1.83c-3.06.65-3.71-1.44-3.71-1.44a2.86 2.86 0 0 0-1.22-1.58c-1-.66.08-.65.08-.65a2.31 2.31 0 0 1 1.68 1.11 2.37 2.37 0 0 0 3.2.89 2.33 2.33 0 0 1 .7-1.44c-2.44-.27-5-1.19-5-5.32a4.15 4.15 0 0 1 1.11-2.91 3.78 3.78 0 0 1 .11-2.84s.93-.29 3 1.1a10.68 10.68 0 0 1 5.5 0c2.1-1.39 3-1.1 3-1.1a3.78 3.78 0 0 1 .11 2.84A4.15 4.15 0 0 1 19 11.2c0 4.14-2.58 5.05-5 5.32a2.5 2.5 0 0 1 .75 2v2.95c0 .35.2.63.75.52A10.8 10.8 0 0 0 23 11.77 10.89 10.89 0 0 0 12 1' data-name='github'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M12 1A10.89 10.89 0 0 0 1 11.77 10.79 10.79 0 0 0 8.52 22c.55.1.75-.23.75-.52v-1.83c-3.06.65-3.71-1.44-3.71-1.44a2.86 2.86 0 0 0-1.22-1.58c-1-.66.08-.65.08-.65a2.31 2.31 0 0 1 1.68 1.11 2.37 2.37 0 0 0 3.2.89 2.33 2.33 0 0 1 .7-1.44c-2.44-.27-5-1.19-5-5.32a4.15 4.15 0 0 1 1.11-2.91 3.78 3.78 0 0 1 .11-2.84s.93-.29 3 1.1a10.68 10.68 0 0 1 5.5 0c2.1-1.39 3-1.1 3-1.1a3.78 3.78 0 0 1 .11 2.84A4.15 4.15 0 0 1 19 11.2c0 4.14-2.58 5.05-5 5.32a2.5 2.5 0 0 1 .75 2v2.95c0 .35.2.63.75.52A10.8 10.8 0 0 0 23 11.77 10.89 10.89 0 0 0 12 1' data-name='github'/%3E%3C/g%3E%3C/svg%3E")}.twitter{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M8.08 20A11.07 11.07 0 0 0 19.52 9 8.09 8.09 0 0 0 21 6.16a.44.44 0 0 0-.62-.51 1.88 1.88 0 0 1-2.16-.38 3.89 3.89 0 0 0-5.58-.17A4.13 4.13 0 0 0 11.49 9C8.14 9.2 5.84 7.61 4 5.43a.43.43 0 0 0-.75.24 9.68 9.68 0 0 0 4.6 10.05A6.73 6.73 0 0 1 3.38 18a.45.45 0 0 0-.14.84A11 11 0 0 0 8.08 20' data-name='twitter'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M8.08 20A11.07 11.07 0 0 0 19.52 9 8.09 8.09 0 0 0 21 6.16a.44.44 0 0 0-.62-.51 1.88 1.88 0 0 1-2.16-.38 3.89 3.89 0 0 0-5.58-.17A4.13 4.13 0 0 0 11.49 9C8.14 9.2 5.84 7.61 4 5.43a.43.43 0 0 0-.75.24 9.68 9.68 0 0 0 4.6 10.05A6.73 6.73 0 0 1 3.38 18a.45.45 0 0 0-.14.84A11 11 0 0 0 8.08 20' data-name='twitter'/%3E%3C/g%3E%3C/svg%3E")}.facebook{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M17 3.5a.5.5 0 0 0-.5-.5H14a4.77 4.77 0 0 0-5 4.5v2.7H6.5a.5.5 0 0 0-.5.5v2.6a.5.5 0 0 0 .5.5H9v6.7a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-6.7h2.62a.5.5 0 0 0 .49-.37l.72-2.6a.5.5 0 0 0-.48-.63H13V7.5a1 1 0 0 1 1-.9h2.5a.5.5 0 0 0 .5-.5z' data-name='facebook'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M17 3.5a.5.5 0 0 0-.5-.5H14a4.77 4.77 0 0 0-5 4.5v2.7H6.5a.5.5 0 0 0-.5.5v2.6a.5.5 0 0 0 .5.5H9v6.7a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-6.7h2.62a.5.5 0 0 0 .49-.37l.72-2.6a.5.5 0 0 0-.48-.63H13V7.5a1 1 0 0 1 1-.9h2.5a.5.5 0 0 0 .5-.5z' data-name='facebook'/%3E%3C/g%3E%3C/svg%3E")}.behance{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='behance'%3E%3Cpath d='M14.76 11.19a1 1 0 0 0-1 1.09h2.06a1 1 0 0 0-1.06-1.09zM9.49 12.3H8.26v1.94h1c1 0 1.44-.33 1.44-1s-.46-.94-1.21-.94zm.87-1.78c0-.53-.35-.85-.95-.85H8.26v1.74h.85c.89 0 1.25-.32 1.25-.89z'/%3E%3Cpath d='M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2zM9.7 15.2H7V8.7h2.7c1.17 0 1.94.61 1.94 1.6a1.4 1.4 0 0 1-1.12 1.43A1.52 1.52 0 0 1 12 13.37c0 1.16-1 1.83-2.3 1.83zm3.55-6h3v.5h-3zM17 13.05h-3.3v.14a1.07 1.07 0 0 0 1.09 1.19.9.9 0 0 0 1-.63H17a2 2 0 0 1-2.17 1.55 2.15 2.15 0 0 1-2.36-2.3v-.44a2.11 2.11 0 0 1 2.28-2.25A2.12 2.12 0 0 1 17 12.58z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='behance'%3E%3Cpath d='M14.76 11.19a1 1 0 0 0-1 1.09h2.06a1 1 0 0 0-1.06-1.09zM9.49 12.3H8.26v1.94h1c1 0 1.44-.33 1.44-1s-.46-.94-1.21-.94zm.87-1.78c0-.53-.35-.85-.95-.85H8.26v1.74h.85c.89 0 1.25-.32 1.25-.89z'/%3E%3Cpath d='M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2zM9.7 15.2H7V8.7h2.7c1.17 0 1.94.61 1.94 1.6a1.4 1.4 0 0 1-1.12 1.43A1.52 1.52 0 0 1 12 13.37c0 1.16-1 1.83-2.3 1.83zm3.55-6h3v.5h-3zM17 13.05h-3.3v.14a1.07 1.07 0 0 0 1.09 1.19.9.9 0 0 0 1-.63H17a2 2 0 0 1-2.17 1.55 2.15 2.15 0 0 1-2.36-2.3v-.44a2.11 2.11 0 0 1 2.28-2.25A2.12 2.12 0 0 1 17 12.58z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E")}.email{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M19 4H5a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3zm0 2l-6.5 4.47a1 1 0 0 1-1 0L5 6z' data-name='email'/%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M19 4H5a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3zm0 2l-6.5 4.47a1 1 0 0 1-1 0L5 6z' data-name='email'/%3E%3C/g%3E%3C/svg%3E")}.rss{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0z'/%3E%3Ccircle cx='6.18' cy='17.82' r='2.18'/%3E%3Cpath d='M4 4.44v2.83c7.03 0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56zm0 5.66v2.83c3.9 0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0z'/%3E%3Ccircle cx='6.18' cy='17.82' r='2.18'/%3E%3Cpath d='M4 4.44v2.83c7.03 0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56zm0 5.66v2.83c3.9 0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z'/%3E%3C/svg%3E")} \ No newline at end of file
+html {
+ font-size: calc(1vh + 1vw); }
+
+body {
+ margin: 0;
+ word-break: break-all;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, WenQuanYi Micro Hei, sans-serif;
+ overflow: hidden; }
+
+img {
+ height: auto;
+ width: 100%;
+ max-width: 40vw; }
+
+.clearfix::after {
+ content: "";
+ display: table;
+ clear: both; }
+
+.left {
+ float: left; }
+
+.right {
+ float: right; }
+
+.hide {
+ height: 0;
+ opacity: 0; }
+
+.btn {
+ text-decoration: none;
+ cursor: pointer; }
+
+.control {
+ list-style-type: none;
+ margin: 0;
+ padding: 0; }
+
+.no-break {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap; }
+
+a:hover {
+ text-decoration: none !important; }
+
+body.loaded .top {
+ display: none; }
+
+body.loaded .bottom {
+ display: none; }
+
+.top img.logo, .bottom img.logo {
+ display: block;
+ margin: 0 auto;
+ position: relative; }
+
+.top, .bottom {
+ position: absolute;
+ width: 100vw;
+ height: 50vh;
+ z-index: 99999;
+ overflow: hidden; }
+
+.top {
+ background: #282C34;
+ top: -50vh; }
+ .top img.logo {
+ bottom: -100%;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%); }
+
+.bottom {
+ background: #282C34;
+ top: 100vh; }
+ .bottom img.logo {
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%); }
+
+.header,
+.footer {
+ height: 5vh; }
+
+.header a,
+.footer a {
+ line-height: 5vh;
+ display: block;
+ padding-left: 0.8rem;
+ padding-right: 0.8rem; }
+
+.header > ul,
+.footer ul {
+ margin: 0 1vw; }
+
+.menu > li,
+.footer li {
+ float: left; }
+
+.menu > li {
+ position: relative; }
+
+.footer .social {
+ float: left; }
+
+.footer .status {
+ float: right; }
+
+.middle {
+ height: 90vh; }
+
+.sidebar {
+ width: 20vw;
+ float: left; }
+
+.main {
+ margin-left: 20vw;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 2vw 3vw;
+ overflow-y: auto;
+ position: relative; }
+
+.sidebar,
+.main {
+ height: 100%; }
+
+.sidebar.hide {
+ display: none; }
+
+.sidebar.hide + .main {
+ margin-left: 0 !important; }
+
+.intro {
+ text-align: center;
+ position: absolute;
+ top: 50%;
+ left: 0;
+ right: 0;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%); }
+
+.intro img.logo {
+ display: inline; }
+
+.header ul ul {
+ display: none;
+ position: absolute;
+ top: 100%;
+ left: 0;
+ width: 14em;
+ z-index: 999; }
+
+.header li:hover > ul {
+ display: block; }
+
+.main {
+ font-size: 1rem;
+ line-height: 2; }
+
+.header .sub-menu a {
+ padding: 0 2vw; }
+
+.sidebar {
+ overflow-y: auto; }
+
+.sidebar a {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap; }
+
+.sidebar a,
+.taxonomy-key {
+ display: block; }
+
+.sidebar ul {
+ margin-top: 1rem; }
+
+.sidebar a,
+.taxonomy-key {
+ display: block;
+ line-height: 2;
+ padding: 0 2vw; }
+
+.logo-link {
+ height: 5vh;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ padding-top: 1.2vh; }
+
+.logo {
+ height: 70%;
+ width: auto;
+ display: block; }
+
+.logo-container {
+ display: none; }
+
+body.wild-mode .logo-wild {
+ display: list-item; }
+
+body.light-mode .logo-light {
+ display: list-item; }
+
+body.dark-mode .logo-default {
+ display: list-item; }
+
+body.wild-mode .intro .logo-wild {
+ display: block; }
+
+body.light-mode .intro .logo-light {
+ display: block; }
+
+body.dark-mode .intro .logo-default {
+ display: block; }
+
+hr {
+ margin: 1rem 0; }
+
+pre {
+ overflow: auto;
+ padding: 0.8rem 1rem; }
+
+code {
+ overflow: auto;
+ font-size: 0.8rem;
+ font-family: 'Fira Code', Inconsolata, 'Deja Vu Sans Mono', 'Source Code Pro', Consolas, monospace;
+ padding: 0.2rem 0.6rem; }
+
+.icon {
+ width: 1rem;
+ height: 1rem;
+ display: inline-block; }
+
+.footer .icon {
+ position: relative;
+ top: 0.2rem; }
+
+.sidebar .icon {
+ margin-right: 0.5rem;
+ position: relative;
+ top: 0.1rem; }
+
+.article-meta .icon {
+ position: relative;
+ top: calc(0.1rem + 2px); }
+
+.article-tags .icon {
+ position: relative;
+ top: -0.2rem; }
+
+.article-categories li:first-child .icon {
+ top: calc(0.1rem + 1px); }
+
+.article {
+ text-align: left; }
+
+.title {
+ font-weight: bold;
+ margin: 0 0 0.5rem 0; }
+
+.item {
+ margin-bottom: 1rem; }
+
+.item .title {
+ margin: 0; }
+
+.article-meta {
+ font-size: 0.8rem;
+ margin-bottom: 1rem; }
+
+.article-meta ul {
+ list-style-type: none;
+ margin: 0; }
+
+.article-meta-splitter {
+ margin-bottom: 0.5rem; }
+
+.article-meta li {
+ float: left;
+ margin-right: 1rem;
+ margin-bottom: 0.5rem; }
+
+.article-meta li:first-child {
+ margin-right: 0.5rem; }
+
+.main .article-tags a {
+ padding: 0rem 0.8rem;
+ border-radius: 1px;
+ display: block;
+ line-height: 1.4; }
+
+.main p a {
+ margin: 0 0.3rem; }
+
+.title a,
+.article-meta a,
+.list a,
+a.terms-title,
+.terms-list a,
+.pagination a {
+ text-decoration: none; }
+
+.terms-list a {
+ font-size: 0.8rem; }
+
+.pagination a {
+ font-size: 0.8rem;
+ padding: 0 0.5rem; }
+
+.pagination {
+ position: absolute;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ padding: 0 2rem; }
+
+.pagination ul {
+ list-style-type: none;
+ margin-left: 0; }
+
+/* prism toolbar */
+.code-toolbar > .toolbar a {
+ border-bottom: none;
+ display: block; }
+
+.local-info {
+ font-size: 0.8rem;
+ padding: 0.8rem;
+ margin-bottom: 1rem; }
+
+.header a,
+.footer a,
+.sidebar a,
+.taxonomy-key {
+ font-size: 0.81rem; }
+
+.main a {
+ color: #99CCFF; }
+
+.main .article-tags a {
+ background: #327E36;
+ color: #FFF; }
+
+.local-info, .dialog label {
+ background: #FFFF99;
+ color: #333;
+ -webkit-box-shadow: 2px 3px 1px 1px #000;
+ box-shadow: 2px 3px 1px 1px #000; }
+
+/* man bg */
+body,
+.main,
+.header .menu > li:hover,
+.footer a:hover,
+.logo-link,
+.dialog {
+ background: #282C34; }
+
+/* main fg */
+.main,
+blockquote.twitter-tweet,
+.header .sub-menu a,
+.sidebar a,
+.taxonomy-key,
+.main .title a,
+.dialog .title {
+ color: #C6C6C7; }
+
+.icon {
+ background: #C6C6C7; }
+
+/* main minor */
+.article-meta,
+.item-meta,
+.footnotes {
+ color: #939BAB; }
+
+th,
+td {
+ border-bottom: 1px solid #939BAB; }
+
+hr {
+ border: 1px solid #939BAB; }
+
+.pagination {
+ background: #939BAB; }
+
+/* sidebar bg */
+.sidebar {
+ background: #16191D; }
+
+.header ul ul {
+ -webkit-box-shadow: 0 0.1em 0.2em 0 #060606;
+ box-shadow: 0 0.1em 0.2em 0 #060606; }
+
+.header ul ul,
+.pagination a:hover {
+ background: #1A1D21; }
+
+code {
+ background: #1A1C21; }
+
+/* sidebar minor */
+.count,
+.taxonomy-key {
+ color: #939394; }
+
+/* header, footer bg */
+.header,
+.footer,
+.header .sub-menu li:hover,
+.sidebar a:hover {
+ background: #21252B; }
+
+/* header, footer fg */
+.header a,
+.footer a,
+.footer time,
+.pagination a {
+ color: #797D85; }
+
+.footer .icon {
+ background-color: #797D85; }
+
+.main h1,
+.main h2,
+.main h3,
+.main h4,
+.main h5,
+.main h6 {
+ text-shadow: 0 1px 1px #000; }
+
+.title {
+ text-shadow: 0 1px 1px #000; }
+
+.dialog {
+ width: 100vw;
+ height: 0;
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 9999;
+ overflow: hidden;
+ font-size: 1rem; }
+
+.dialog .wrapper {
+ padding: 1rem; }
+
+.dialog header, .dialog main, .dialog footer {
+ margin-bottom: 2rem; }
+
+.dialog header {
+ margin-top: -2rem; }
+
+.dialog div {
+ margin-bottom: 1rem; }
+
+.dialog.show {
+ height: 100vh; }
+
+.dialog label {
+ display: block;
+ margin-bottom: 1rem;
+ padding: 0.8rem 1rem;
+ -webkit-box-shadow: none;
+ box-shadow: none; }
+
+.dialog input {
+ padding: 0.3rem; }
+
+.dialog input, .dialog button {
+ font-size: 1.2rem;
+ float: right; }
+
+.dialog button {
+ padding: 0.3rem 1rem;
+ background: #3083FE;
+ color: #FFF; }
+
+.dialog .close-dialog {
+ font-size: 3rem;
+ background: none;
+ border: none; }
+
+.light-mode .dialog button {
+ color: #3083FE; }
+
+.light-mode .main a {
+ color: #3083FE; }
+
+.light-mode .main .article-tags a {
+ background: #35CC81;
+ color: #FFF; }
+
+.light-mode .local-info {
+ background: #EFECAA;
+ color: #000000;
+ -webkit-box-shadow: none;
+ box-shadow: none; }
+
+/* man bg */
+body.light-mode,
+.light-mode .main {
+ background: #FFF; }
+
+/* main fg */
+.light-mode .main,
+.light-mode blockquote.twitter-tweet,
+.light-mode .sidebar a,
+.light-mode .taxonomy-key,
+.light-mode .main .title a,
+.light-mode .dialog .title {
+ color: #4C4C4C; }
+
+.light-mode .icon {
+ background: #4C4C4C; }
+
+/* main minor */
+.light-mode .article-meta,
+.light-mode .item-meta,
+.light-mode .footnotes {
+ color: #999999; }
+
+.light-mode th,
+.light-mode td {
+ border-bottom: 1px solid #CCCCCC; }
+
+.light-mode hr {
+ border: 1px solid #CCCCCC; }
+
+.light-mode .pagination {
+ background: #CCCCCC; }
+
+/* sidebar bg */
+.light-mode .sidebar {
+ background: #EEEEEE; }
+
+.light-mode pre,
+.light-mode code {
+ background: #DDD; }
+
+/* sidebar fg */
+.light-mode .sidebar a {
+ color: #3F3F3F; }
+
+/* sidebar minor */
+.light-mode .count,
+.light-mode .taxonomy-key {
+ color: #777777; }
+
+/* header, footer bg */
+.light-mode .header,
+.light-mode .footer,
+.light-mode .header .sub-menu li:hover,
+.light-mode .sidebar a:hover,
+.light-mode .logo-link,
+.light-mode .dialog,
+.light-mode .dialog button {
+ background: #DDD; }
+
+.light-mode .header .menu > li:hover,
+.light-mode .footer a:hover {
+ background: #CCCCCC; }
+
+/* sub-menu bg */
+.light-mode .header ul ul {
+ -webkit-box-shadow: 0 0.1em 0.2em 0 #AAAAAA;
+ box-shadow: 0 0.1em 0.2em 0 #AAAAAA; }
+
+.light-mode .header ul ul,
+.light-mode .pagination a:hover {
+ background: #CCCCCC; }
+
+/* header, footer fg */
+.light-mode .header a,
+.light-mode .footer a,
+.light-mode .footer time,
+.light-mode .pagination a {
+ color: #323232; }
+
+.light-mode .header .sub-menu a {
+ color: #0B0B0B; }
+
+.light-mode .footer .icon {
+ background-color: #323232; }
+
+.light-mode .main h1,
+.light-mode .main h2,
+.light-mode .main h3,
+.light-mode .main h4,
+.light-mode .main h5,
+.light-mode .main h6,
+.light-mode .title {
+ text-shadow: none; }
+
+.light-mode .top, .light-mode .bottom {
+ background: #DDD; }
+
+.wild-mode .main h1,
+.wild-mode .main h2,
+.wild-mode .main h3,
+.wild-mode .main h4,
+.wild-mode .main h5,
+.wild-mode .main h6,
+.wild-mode .title {
+ text-shadow: none; }
+
+.wild-mode .local-info {
+ -webkit-box-shadow: none;
+ box-shadow: none; }
+
+.icon-tags {
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='pricetags'%3E%3Cpath d='M12.87 22a1.84 1.84 0 0 1-1.29-.53l-6.41-6.42a1 1 0 0 1-.29-.61L4 5.09a1 1 0 0 1 .29-.8 1 1 0 0 1 .8-.29l9.35.88a1 1 0 0 1 .61.29l6.42 6.41a1.82 1.82 0 0 1 0 2.57l-7.32 7.32a1.82 1.82 0 0 1-1.28.53zm-6-8.11l6 6 7.05-7.05-6-6-7.81-.73z'/%3E%3Ccircle cx='10.5' cy='10.5' r='1.5'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='pricetags'%3E%3Cpath d='M12.87 22a1.84 1.84 0 0 1-1.29-.53l-6.41-6.42a1 1 0 0 1-.29-.61L4 5.09a1 1 0 0 1 .29-.8 1 1 0 0 1 .8-.29l9.35.88a1 1 0 0 1 .61.29l6.42 6.41a1.82 1.82 0 0 1 0 2.57l-7.32 7.32a1.82 1.82 0 0 1-1.28.53zm-6-8.11l6 6 7.05-7.05-6-6-7.81-.73z'/%3E%3Ccircle cx='10.5' cy='10.5' r='1.5'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E"); }
+
+.icon-categories {
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M19.5 20.5h-15A2.47 2.47 0 0 1 2 18.07V5.93A2.47 2.47 0 0 1 4.5 3.5h4.6a1 1 0 0 1 .77.37l2.6 3.18h7A2.47 2.47 0 0 1 22 9.48v8.59a2.47 2.47 0 0 1-2.5 2.43zM4 13.76v4.31a.46.46 0 0 0 .5.43h15a.46.46 0 0 0 .5-.43V9.48a.46.46 0 0 0-.5-.43H12a1 1 0 0 1-.77-.37L8.63 5.5H4.5a.46.46 0 0 0-.5.43z' data-name='folder'/%3E%3C/g%3E%3C/svg%3E");
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M19.5 20.5h-15A2.47 2.47 0 0 1 2 18.07V5.93A2.47 2.47 0 0 1 4.5 3.5h4.6a1 1 0 0 1 .77.37l2.6 3.18h7A2.47 2.47 0 0 1 22 9.48v8.59a2.47 2.47 0 0 1-2.5 2.43zM4 13.76v4.31a.46.46 0 0 0 .5.43h15a.46.46 0 0 0 .5-.43V9.48a.46.46 0 0 0-.5-.43H12a1 1 0 0 1-.77-.37L8.63 5.5H4.5a.46.46 0 0 0-.5.43z' data-name='folder'/%3E%3C/g%3E%3C/svg%3E"); }
+
+.icon-post {
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='file-text'%3E%3Cpath d='M15 16H9a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2zM9 14h3a1 1 0 0 0 0-2H9a1 1 0 0 0 0 2z'/%3E%3Cpath d='M19.74 8.33l-5.44-6a1 1 0 0 0-.74-.33h-7A2.53 2.53 0 0 0 4 4.5v15A2.53 2.53 0 0 0 6.56 22h10.88A2.53 2.53 0 0 0 20 19.5V9a1 1 0 0 0-.26-.67zM14 5l2.74 3h-2a.79.79 0 0 1-.74-.85zm3.44 15H6.56a.53.53 0 0 1-.56-.5v-15a.53.53 0 0 1 .56-.5H12v3.15A2.79 2.79 0 0 0 14.71 10H18v9.5a.53.53 0 0 1-.56.5z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='file-text'%3E%3Cpath d='M15 16H9a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2zM9 14h3a1 1 0 0 0 0-2H9a1 1 0 0 0 0 2z'/%3E%3Cpath d='M19.74 8.33l-5.44-6a1 1 0 0 0-.74-.33h-7A2.53 2.53 0 0 0 4 4.5v15A2.53 2.53 0 0 0 6.56 22h10.88A2.53 2.53 0 0 0 20 19.5V9a1 1 0 0 0-.26-.67zM14 5l2.74 3h-2a.79.79 0 0 1-.74-.85zm3.44 15H6.56a.53.53 0 0 1-.56-.5v-15a.53.53 0 0 1 .56-.5H12v3.15A2.79 2.79 0 0 0 14.71 10H18v9.5a.53.53 0 0 1-.56.5z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E"); }
+
+.article-meta .icon-date {
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='calendar'%3E%3Cpath d='M18 4h-1V3a1 1 0 0 0-2 0v1H9V3a1 1 0 0 0-2 0v1H6a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3h12a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3zM6 6h1v1a1 1 0 0 0 2 0V6h6v1a1 1 0 0 0 2 0V6h1a1 1 0 0 1 1 1v4H5V7a1 1 0 0 1 1-1zm12 14H6a1 1 0 0 1-1-1v-6h14v6a1 1 0 0 1-1 1z'/%3E%3Ccircle cx='8' cy='16' r='1'/%3E%3Cpath d='M16 15h-4a1 1 0 0 0 0 2h4a1 1 0 0 0 0-2z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='calendar'%3E%3Cpath d='M18 4h-1V3a1 1 0 0 0-2 0v1H9V3a1 1 0 0 0-2 0v1H6a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3h12a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3zM6 6h1v1a1 1 0 0 0 2 0V6h6v1a1 1 0 0 0 2 0V6h1a1 1 0 0 1 1 1v4H5V7a1 1 0 0 1 1-1zm12 14H6a1 1 0 0 1-1-1v-6h14v6a1 1 0 0 1-1 1z'/%3E%3Ccircle cx='8' cy='16' r='1'/%3E%3Cpath d='M16 15h-4a1 1 0 0 0 0 2h4a1 1 0 0 0 0-2z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E"); }
+
+.github {
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M12 1A10.89 10.89 0 0 0 1 11.77 10.79 10.79 0 0 0 8.52 22c.55.1.75-.23.75-.52v-1.83c-3.06.65-3.71-1.44-3.71-1.44a2.86 2.86 0 0 0-1.22-1.58c-1-.66.08-.65.08-.65a2.31 2.31 0 0 1 1.68 1.11 2.37 2.37 0 0 0 3.2.89 2.33 2.33 0 0 1 .7-1.44c-2.44-.27-5-1.19-5-5.32a4.15 4.15 0 0 1 1.11-2.91 3.78 3.78 0 0 1 .11-2.84s.93-.29 3 1.1a10.68 10.68 0 0 1 5.5 0c2.1-1.39 3-1.1 3-1.1a3.78 3.78 0 0 1 .11 2.84A4.15 4.15 0 0 1 19 11.2c0 4.14-2.58 5.05-5 5.32a2.5 2.5 0 0 1 .75 2v2.95c0 .35.2.63.75.52A10.8 10.8 0 0 0 23 11.77 10.89 10.89 0 0 0 12 1' data-name='github'/%3E%3C/g%3E%3C/svg%3E");
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M12 1A10.89 10.89 0 0 0 1 11.77 10.79 10.79 0 0 0 8.52 22c.55.1.75-.23.75-.52v-1.83c-3.06.65-3.71-1.44-3.71-1.44a2.86 2.86 0 0 0-1.22-1.58c-1-.66.08-.65.08-.65a2.31 2.31 0 0 1 1.68 1.11 2.37 2.37 0 0 0 3.2.89 2.33 2.33 0 0 1 .7-1.44c-2.44-.27-5-1.19-5-5.32a4.15 4.15 0 0 1 1.11-2.91 3.78 3.78 0 0 1 .11-2.84s.93-.29 3 1.1a10.68 10.68 0 0 1 5.5 0c2.1-1.39 3-1.1 3-1.1a3.78 3.78 0 0 1 .11 2.84A4.15 4.15 0 0 1 19 11.2c0 4.14-2.58 5.05-5 5.32a2.5 2.5 0 0 1 .75 2v2.95c0 .35.2.63.75.52A10.8 10.8 0 0 0 23 11.77 10.89 10.89 0 0 0 12 1' data-name='github'/%3E%3C/g%3E%3C/svg%3E"); }
+
+.twitter {
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M8.08 20A11.07 11.07 0 0 0 19.52 9 8.09 8.09 0 0 0 21 6.16a.44.44 0 0 0-.62-.51 1.88 1.88 0 0 1-2.16-.38 3.89 3.89 0 0 0-5.58-.17A4.13 4.13 0 0 0 11.49 9C8.14 9.2 5.84 7.61 4 5.43a.43.43 0 0 0-.75.24 9.68 9.68 0 0 0 4.6 10.05A6.73 6.73 0 0 1 3.38 18a.45.45 0 0 0-.14.84A11 11 0 0 0 8.08 20' data-name='twitter'/%3E%3C/g%3E%3C/svg%3E");
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M8.08 20A11.07 11.07 0 0 0 19.52 9 8.09 8.09 0 0 0 21 6.16a.44.44 0 0 0-.62-.51 1.88 1.88 0 0 1-2.16-.38 3.89 3.89 0 0 0-5.58-.17A4.13 4.13 0 0 0 11.49 9C8.14 9.2 5.84 7.61 4 5.43a.43.43 0 0 0-.75.24 9.68 9.68 0 0 0 4.6 10.05A6.73 6.73 0 0 1 3.38 18a.45.45 0 0 0-.14.84A11 11 0 0 0 8.08 20' data-name='twitter'/%3E%3C/g%3E%3C/svg%3E"); }
+
+.facebook {
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M17 3.5a.5.5 0 0 0-.5-.5H14a4.77 4.77 0 0 0-5 4.5v2.7H6.5a.5.5 0 0 0-.5.5v2.6a.5.5 0 0 0 .5.5H9v6.7a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-6.7h2.62a.5.5 0 0 0 .49-.37l.72-2.6a.5.5 0 0 0-.48-.63H13V7.5a1 1 0 0 1 1-.9h2.5a.5.5 0 0 0 .5-.5z' data-name='facebook'/%3E%3C/g%3E%3C/svg%3E");
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M17 3.5a.5.5 0 0 0-.5-.5H14a4.77 4.77 0 0 0-5 4.5v2.7H6.5a.5.5 0 0 0-.5.5v2.6a.5.5 0 0 0 .5.5H9v6.7a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-6.7h2.62a.5.5 0 0 0 .49-.37l.72-2.6a.5.5 0 0 0-.48-.63H13V7.5a1 1 0 0 1 1-.9h2.5a.5.5 0 0 0 .5-.5z' data-name='facebook'/%3E%3C/g%3E%3C/svg%3E"); }
+
+.behance {
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='behance'%3E%3Cpath d='M14.76 11.19a1 1 0 0 0-1 1.09h2.06a1 1 0 0 0-1.06-1.09zM9.49 12.3H8.26v1.94h1c1 0 1.44-.33 1.44-1s-.46-.94-1.21-.94zM10.36 10.52c0-.53-.35-.85-.95-.85H8.26v1.74h.85c.89 0 1.25-.32 1.25-.89z'/%3E%3Cpath d='M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2zM9.7 15.2H7V8.7h2.7c1.17 0 1.94.61 1.94 1.6a1.4 1.4 0 0 1-1.12 1.43A1.52 1.52 0 0 1 12 13.37c0 1.16-1 1.83-2.3 1.83zm3.55-6h3v.5h-3zM17 13.05h-3.3v.14a1.07 1.07 0 0 0 1.09 1.19.9.9 0 0 0 1-.63H17a2 2 0 0 1-2.17 1.55 2.15 2.15 0 0 1-2.36-2.3v-.44a2.11 2.11 0 0 1 2.28-2.25A2.12 2.12 0 0 1 17 12.58z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cg data-name='behance'%3E%3Cpath d='M14.76 11.19a1 1 0 0 0-1 1.09h2.06a1 1 0 0 0-1.06-1.09zM9.49 12.3H8.26v1.94h1c1 0 1.44-.33 1.44-1s-.46-.94-1.21-.94zM10.36 10.52c0-.53-.35-.85-.95-.85H8.26v1.74h.85c.89 0 1.25-.32 1.25-.89z'/%3E%3Cpath d='M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2zM9.7 15.2H7V8.7h2.7c1.17 0 1.94.61 1.94 1.6a1.4 1.4 0 0 1-1.12 1.43A1.52 1.52 0 0 1 12 13.37c0 1.16-1 1.83-2.3 1.83zm3.55-6h3v.5h-3zM17 13.05h-3.3v.14a1.07 1.07 0 0 0 1.09 1.19.9.9 0 0 0 1-.63H17a2 2 0 0 1-2.17 1.55 2.15 2.15 0 0 1-2.36-2.3v-.44a2.11 2.11 0 0 1 2.28-2.25A2.12 2.12 0 0 1 17 12.58z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E"); }
+
+.email {
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M19 4H5a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3zm0 2l-6.5 4.47a1 1 0 0 1-1 0L5 6z' data-name='email'/%3E%3C/g%3E%3C/svg%3E");
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg data-name='Layer 2'%3E%3Cpath d='M19 4H5a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3zm0 2l-6.5 4.47a1 1 0 0 1-1 0L5 6z' data-name='email'/%3E%3C/g%3E%3C/svg%3E"); }
+
+.rss {
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0z'/%3E%3Ccircle cx='6.18' cy='17.82' r='2.18'/%3E%3Cpath d='M4 4.44v2.83c7.03 0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56zm0 5.66v2.83c3.9 0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z'/%3E%3C/svg%3E");
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0z'/%3E%3Ccircle cx='6.18' cy='17.82' r='2.18'/%3E%3Cpath d='M4 4.44v2.83c7.03 0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56zm0 5.66v2.83c3.9 0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z'/%3E%3C/svg%3E"); }
+
diff --git a/static/js/main.js b/static/js/main.js
index 7ca6c74..4fb899f 100644
--- a/static/js/main.js
+++ b/static/js/main.js
@@ -1,73 +1,326 @@
-!function(e){var t={};function n(o){if(t[o])return t[o].exports;var i=t[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(o,i,function(t){return e[t]}.bind(null,i));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}([function(e,t,n){},function(e,t,n){(function(t){var n="Expected a function",o=NaN,i="[object Symbol]",r=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,d=/^0b[01]+$/i,u=/^0o[0-7]+$/i,l=parseInt,c="object"==typeof t&&t&&t.Object===Object&&t,s="object"==typeof self&&self&&self.Object===Object&&self,f=c||s||Function("return this")(),m=Object.prototype.toString,p=Math.max,h=Math.min,g=function(){return f.Date.now()};function w(e,t,o){var i,r,a,d,u,l,c=0,s=!1,f=!1,m=!0;if("function"!=typeof e)throw new TypeError(n);function w(t){var n=i,o=r;return i=r=void 0,c=t,d=e.apply(o,n)}function v(e){var n=e-l;return void 0===l||n>=t||n<0||f&&e-c>=a}function x(){var e=g();if(v(e))return k(e);u=setTimeout(x,function(e){var n=t-(e-l);return f?h(n,a-(e-c)):n}(e))}function k(e){return u=void 0,m&&i?w(e):(i=r=void 0,d)}function M(){var e=g(),n=v(e);if(i=arguments,r=this,l=e,n){if(void 0===u)return function(e){return c=e,u=setTimeout(x,t),s?w(e):d}(l);if(f)return u=setTimeout(x,t),w(l)}return void 0===u&&(u=setTimeout(x,t)),d}return t=b(t)||0,y(o)&&(s=!!o.leading,a=(f="maxWait"in o)?p(b(o.maxWait)||0,t):a,m="trailing"in o?!!o.trailing:m),M.cancel=function(){void 0!==u&&clearTimeout(u),c=0,i=l=r=u=void 0},M.flush=function(){return void 0===u?d:k(g())},M}function y(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function b(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&m.call(e)==i}(e))return o;if(y(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=y(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(r,"");var n=d.test(e);return n||u.test(e)?l(e.slice(2),n?2:8):a.test(e)?o:+e}e.exports=function(e,t,o){var i=!0,r=!0;if("function"!=typeof e)throw new TypeError(n);return y(o)&&(i="leading"in o?!!o.leading:i,r="trailing"in o?!!o.trailing:r),w(e,t,{leading:i,maxWait:t,trailing:r})}}).call(this,n(2))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";n.r(t);n(0);const o=n(1);function i(e,t=document.body){return"string"==typeof t&&(t=document.querySelector(t)),t.querySelector(e)}function r(e,t={},...n){const o=document.createElement(e);return Object.keys(t).forEach(e=>{o.setAttribute(e,t[e])}),n.forEach(e=>{"string"==typeof e&&(e=document.createTextNode(e)),o.appendChild(e)}),o}function a(e,t){return"string"==typeof e&&(e=i(e)),e.classList.remove(t),e}function d(e,t){return"string"==typeof e&&(e=i(e)),e.classList.add(t),e}function u(e,t){return"string"==typeof e&&(e=i(e)),e.classList.contains(t)}function l(e,t){"string"==typeof e&&(e=i(e)),Object.keys(t).forEach(n=>{e.style[n]=t[n]})}function c(e,t,n=0,r=document.body,a={}){"string"==typeof r&&(r=i(r)),n>0?r.addEventListener(e,o(t,n),a):r.addEventListener(e,t,a)}const s={};function f(e,t){return e=Math.ceil(e),t=Math.floor(t),Math.floor(Math.random()*(t-e))+e}function m(e){return e.duration?Math.min(function(e){const[t]=window.performance.getEntriesByName(e);return t?window.performance.now()-t.startTime:(window.performance.mark(e),0)}(e.id)/e.duration,1):1}s.get=(e=>window.localStorage.getItem(e)),s.set=((e,t)=>{null==t?t="":"string"!=typeof t&&(t=JSON.stringify(t)),window.localStorage.setItem(e,t)});const p={darkCode:["c","f","6","9"],lightCode:["a","b","c","d","e","f"],textCode:["1a2a3a","2a3a4a","3a4a5a","4a5a6a","5a6a7a","6a7a8a","7a8a9a"],grayCode:["aaa","bbb","ccc","ddd"],lightGrayCode:["e2e2e2","e7e7e7","ececec"],deepGrayCode:["222","333","444"],dark:()=>{let e="";for(let t=0;3!==t;t++){let t=p.darkCode[f(0,p.darkCode.length)];e+=t+t}return"#"+e},light:()=>{let e="";for(let t=0;6!==t;t++)e+=p.lightCode[f(0,p.lightCode.length)];return"#"+e},gray:()=>{let e=f(0,p.grayCode.length);return"#"+p.grayCode[e]},lightGray:()=>{let e=f(0,p.lightGrayCode.length);return"#"+p.lightGrayCode[e]},deepGray:()=>{let e=f(0,p.deepGrayCode.length);return"#"+p.deepGrayCode[e]},text:(e=0,t=7)=>{let n=f(e,t);return"#"+p.textCode[n]}};p.deepText=p.text.bind(p,0,2),p.mediumText=p.text.bind(p,2,5),p.lightText=p.text.bind(p,5,6);var h=function(e,...t){return function(){let n=e.slice();return t.forEach((e,t)=>{n[t]+=p[e]()}),n.join("").replace(/\s{2}/gm," ")}}`
- .wild-mode code {
- background: ${"lightGray"}
- }
- .wild-mode .main .article-tags a {
- background: ${"light"};
- }
- .wild-mode .local-info {
- background: ${"light"};
- }
- body.wild-mode,
- .wild-mode .main {
- background: ${"light"};
- }
- .wild-mode th,
- .wild-mode td {
- border-bottom: 1px solid ${"dark"};
- }
- .wild-mode hr {
- border: 1px solid ${"dark"};
- }
- .wild-mode .pagination {
- background: ${"dark"};
- }
- .wild-mode .sidebar {
- background: ${"dark"};
- }
- .wild-mode .header,
- .wild-mode .footer,
- .wild-mode .header .sub-menu li:hover,
- .wild-mode .sidebar a:hover,
- .wild-mode .logo-link {
- background: ${"dark"};
- }
- .wild-mode .header .menu>li:hover,
- .wild-mode .footer a:hover {
- background: ${"light"};
- }
- .wild-mode .header ul ul {
- box-shadow: 0 0.1em 0.2em 0 ${"dark"};
- }
- .wild-mode .header ul ul,
- .wild-mode .pagination a:hover {
- background: ${"dark"};
- }
- .wild-mode .article-meta,
- .wild-mode .item-meta,
- .wild-mode .footnotes,
- .wild-mode .count,
- .wild-mode .taxonomy-key {
- color: ${"mediumText"};
- }
- .wild-mode .main .article-tags a,
- .wild-mode .local-info,
- .wild-mode .main,
- .wild-mode .main a,
- .wild-mode .terms-list a,
- .wild-mode blockquote.twitter-tweet,
- .wild-mode .sidebar a,
- .wild-mode .taxonomy-key,
- .wild-mode .main .title a,
- .wild-mode .header a,
- .wild-mode .footer a,
- .wild-mode .footer time,
- .wild-mode .pagination a,
- .wild-mode .header .sub-menu a {
- color: ${"deepGray"};
- }
- .wild-mode .icon,
- .wild-mode .footer .icon {
- background: ${"deepGray"};
- }
- `;(function e(t){function n(e){return Math.pow(e,t)}return t=+t,n.exponent=e,n})(3),function e(t){function n(e){return 1-Math.pow(1-e,t)}return t=+t,n.exponent=e,n}(3),function e(t){function n(e){return((e*=2)<=1?Math.pow(e,t):2-Math.pow(2-e,t))/2}return t=+t,n.exponent=e,n}(3),Math.PI;var g=4/11,w=6/11,y=8/11,b=.75,v=9/11,x=10/11,k=.9375,M=21/22,C=63/64,$=1/g/g;function j(e){return 1-O(1-e)}function O(e){return(e=+e)<g?$*e*e:e<y?$*(e-=w)*e+b:e<x?$*(e-=v)*e+k:$*(e-=M)*e+C}(function e(t){function n(e){return e*e*((t+1)*e-t)}return t=+t,n.overshoot=e,n})(1.70158),function e(t){function n(e){return--e*e*((t+1)*e+t)+1}return t=+t,n.overshoot=e,n}(1.70158),function e(t){function n(e){return((e*=2)<1?e*e*((t+1)*e-t):(e-=2)*e*((t+1)*e+t)+2)/2}return t=+t,n.overshoot=e,n}(1.70158);var T=2*Math.PI;(function e(t,n){var o=Math.asin(1/(t=Math.max(1,t)))*(n/=T);function i(e){return t*Math.pow(2,10*--e)*Math.sin((o-e)/n)}return i.amplitude=function(t){return e(t,n*T)},i.period=function(n){return e(t,n)},i})(1,.3),function e(t,n){var o=Math.asin(1/(t=Math.max(1,t)))*(n/=T);function i(e){return 1-t*Math.pow(2,-10*(e=+e))*Math.sin((e+o)/n)}return i.amplitude=function(t){return e(t,n*T)},i.period=function(n){return e(t,n)},i}(1,.3),function e(t,n){var o=Math.asin(1/(t=Math.max(1,t)))*(n/=T);function i(e){return((e=2*e-1)<0?t*Math.pow(2,10*e)*Math.sin((o-e)/n):2-t*Math.pow(2,-10*e)*Math.sin((o+e)/n))/2}return i.amplitude=function(t){return e(t,n*T)},i.period=function(n){return e(t,n)},i}(1,.3);function _(e){const t={last:!1,resizing:!1,resizable:!1};function n(t,n=4){return Math.abs(t-e.pane.getBoundingClientRect().right)<=n}function o(n){t.resizing=!1;let o=e.pane.getBoundingClientRect();!function(e){if(e<=10)return;s.set("sidebar_width",e)}(o.right-o.left)}c("mousedown",e=>{t.resizable&&(t.resizing=!0)},0),c("mouseup",o,0),c("keydown",e=>{e.ctrlKey&&66===e.keyCode&&E()},0),c("touchstart",e=>{t.resizing=n(e.touches[0].clientX,10)}),c("touchend",o),function(e,t,n=document.body){c("mousemove",t=>{e({clientX:t.clientX,clientY:t.clientY,type:t.type})},t,n,{passive:!0}),c("touchmove",t=>{e({clientX:t.touches[0].clientX,clientY:t.touches[0].clientY,type:t.type})},t,n,{passive:!0})}(function(o){t.resizable=n(o.clientX),t.resizing?function(t){let n=t-e.paneLeft;n<=10?d(e.pane,"hide"):z(n)}(o.clientX):"mousemove"===o.type&&o.clientX>10&&t.last!==t.resizable&&(t.resizable?l(document.body,{cursor:"ew-resize"}):l(document.body,{cursor:"auto"}),t.last=t.resizable)},50,i(".middle"))}function z(e,t="px"){l(i(".sidebar"),{width:e+"px"}),l(i(".main"),{marginLeft:e+"px"})}function E(e,t){return u(e.pane,"hide")?(a(e.pane,"hide"),s.set("is_sidebar_hide","0")):(d(e.pane,"hide"),s.set("is_sidebar_hide","1")),t.preventDefault(),t.stopPropagation(),!1}const S=e=>{u(document.body,e)||d(function(e,t){return"string"==typeof e&&(e=i(e)),e.className="",e}(document.body),e),s.set("mode",e)};function G(e){c("click",e=>{a(".dialog","show")},0,".close-dialog"),c("click",e=>{const t=i("#theme-name").value.trim();t?/^[a-zA-Z\s-]+$/.test(t)?"light"!==t&&"dark"!==t&&"wild"!==t?(!function(e){let t=function(e){let t=s.get("wild_style"),n=e.replace(/\s/g,"-");return t=t.replace(/wild-mode/g,`${n}-mode`),function(e,t){return`/*\nHugo Edidor theme wild mode exported.\nhomepage: https://github.com/jacobsun/edidor\nUsage:\n1. Throw me to your site root folder/static/css directory, you can rename me to whatever you like.\n2. Copy the code below to your config file.\n\n--------\n[[menu.main]]\nparent = "Theme"\nidentifier = "${e}"\nname = "${t}"\nurl = "#"\nweight = 30\n--------\n\n3. Change the field 'name' and 'weight' to whatever you like. Leave others alone, and don't add your custom field, hugo doesn't support that, though I really hope so :/.\n*/`}(n,e)+t}(e);!function(e,t){const n=r("a",{href:"data:text/plain;charset=utf-8,"+encodeURIComponent(t),download:e,style:{display:"none"}});document.body.appendChild(n),n.click(),document.body.removeChild(n)}(e+".css",t)}(t),a(".dialog","show")):window.alert("Mess up builtin themes."):window.alert("Only English letters, space, hyphens are allowed."):window.alert("Name is required.")},0,".export")}const L=function(){let e=i(".top"),t=i(".bottom"),n=312.5;console.log("distance",n);let o=!1,r=!1;const u=(e,t,n,o=(()=>{}))=>{const i=()=>{const n=Math.min(e(m(r)),1);n<1?(t(n),window.requestAnimationFrame(i)):(window.performance.clearMarks(r.id),t(n),o())},r={duration:n,id:window.requestAnimationFrame(i)}};function l(i){o=!0,r&&(console.log("open"),d(document.body,"loaded"),u(O,o=>{e.style.top=-o*n+"px",t.style.top=o*n+n+"px"},1e3,c))}const c=()=>{a(document.body,"loading"),r=!1,o=!1};return{close:function(i){console.log("close"),a(document.body,"loaded"),d(document.body,"loading"),u(j,o=>{e.style.top=-(1-o)*n+"px",t.style.top=(1-o)*n+n+"px"},1e3,()=>{r=!0,o&&l()})},open:l}}();c("DOMContentLoaded",e=>{console.log("page loaded!",Date.now()),L.close();const t={};t.pane=i(".sidebar"),t.main=i(".main"),t.cloak=i("#cloak"),t.paneLeft=t.pane.getBoundingClientRect().left,function(e,t){let n=s.get("mode");if(n&&S(n),"wild-mode"===n){let e=r("style",{class:"wild-ele"},s.get("wild_style"));document.body.appendChild(e)}t.open()}(0,L),function(e){z(s.get("sidebar_width")),"1"===s.get("is_sidebar_hide")?d(e.pane,"hide"):a(e.pane,"hide")}(t),function(e){c("click",E.bind(null,e),0,".toggle-sidebar")}(t),function(e,t){c("click",e=>{if(e.preventDefault(),e.stopPropagation(),"theme-switcher-button"===e.target.id)return;if(u(e.target,"export-wild"))return d(".dialog","show"),void i("#theme-name").focus();let t=e.target.dataset.theme;if(t){if(S(t+"-mode"),"wild"===t){const e=i(".wild-ele"),t=h();e?e.innerText=t:document.body.appendChild(r("style",{class:"wild-ele"},t)),s.set("wild_style",t)}}else console.error('Theme name not found, probably missing an "Identifier" field in Config file.')},0,"#theme-switcher")}(),_(t),G()},0,document)}]); \ No newline at end of file
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./node_modules/d3-ease/src/back.js":
+/*!******************************************!*\
+ !*** ./node_modules/d3-ease/src/back.js ***!
+ \******************************************/
+/*! exports provided: backIn, backOut, backInOut */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"backIn\", function() { return backIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"backOut\", function() { return backOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"backInOut\", function() { return backInOut; });\nvar overshoot = 1.70158;\n\nvar backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return t * t * ((s + 1) * t - s);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nvar backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((s + 1) * t + s) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nvar backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/back.js?");
+
+/***/ }),
+
+/***/ "./node_modules/d3-ease/src/bounce.js":
+/*!********************************************!*\
+ !*** ./node_modules/d3-ease/src/bounce.js ***!
+ \********************************************/
+/*! exports provided: bounceIn, bounceOut, bounceInOut */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bounceIn\", function() { return bounceIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bounceOut\", function() { return bounceOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bounceInOut\", function() { return bounceInOut; });\nvar b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nfunction bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nfunction bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nfunction bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/bounce.js?");
+
+/***/ }),
+
+/***/ "./node_modules/d3-ease/src/circle.js":
+/*!********************************************!*\
+ !*** ./node_modules/d3-ease/src/circle.js ***!
+ \********************************************/
+/*! exports provided: circleIn, circleOut, circleInOut */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"circleIn\", function() { return circleIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"circleOut\", function() { return circleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"circleInOut\", function() { return circleInOut; });\nfunction circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nfunction circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nfunction circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/circle.js?");
+
+/***/ }),
+
+/***/ "./node_modules/d3-ease/src/cubic.js":
+/*!*******************************************!*\
+ !*** ./node_modules/d3-ease/src/cubic.js ***!
+ \*******************************************/
+/*! exports provided: cubicIn, cubicOut, cubicInOut */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cubicIn\", function() { return cubicIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cubicOut\", function() { return cubicOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cubicInOut\", function() { return cubicInOut; });\nfunction cubicIn(t) {\n return t * t * t;\n}\n\nfunction cubicOut(t) {\n return --t * t * t + 1;\n}\n\nfunction cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/cubic.js?");
+
+/***/ }),
+
+/***/ "./node_modules/d3-ease/src/elastic.js":
+/*!*********************************************!*\
+ !*** ./node_modules/d3-ease/src/elastic.js ***!
+ \*********************************************/
+/*! exports provided: elasticIn, elasticOut, elasticInOut */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"elasticIn\", function() { return elasticIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"elasticOut\", function() { return elasticOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"elasticInOut\", function() { return elasticInOut; });\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nvar elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nvar elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nvar elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)\n : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/elastic.js?");
+
+/***/ }),
+
+/***/ "./node_modules/d3-ease/src/exp.js":
+/*!*****************************************!*\
+ !*** ./node_modules/d3-ease/src/exp.js ***!
+ \*****************************************/
+/*! exports provided: expIn, expOut, expInOut */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"expIn\", function() { return expIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"expOut\", function() { return expOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"expInOut\", function() { return expInOut; });\nfunction expIn(t) {\n return Math.pow(2, 10 * t - 10);\n}\n\nfunction expOut(t) {\n return 1 - Math.pow(2, -10 * t);\n}\n\nfunction expInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/exp.js?");
+
+/***/ }),
+
+/***/ "./node_modules/d3-ease/src/index.js":
+/*!*******************************************!*\
+ !*** ./node_modules/d3-ease/src/index.js ***!
+ \*******************************************/
+/*! exports provided: easeLinear, easeQuad, easeQuadIn, easeQuadOut, easeQuadInOut, easeCubic, easeCubicIn, easeCubicOut, easeCubicInOut, easePoly, easePolyIn, easePolyOut, easePolyInOut, easeSin, easeSinIn, easeSinOut, easeSinInOut, easeExp, easeExpIn, easeExpOut, easeExpInOut, easeCircle, easeCircleIn, easeCircleOut, easeCircleInOut, easeBounce, easeBounceIn, easeBounceOut, easeBounceInOut, easeBack, easeBackIn, easeBackOut, easeBackInOut, easeElastic, easeElasticIn, easeElasticOut, easeElasticInOut */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _linear__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./linear */ \"./node_modules/d3-ease/src/linear.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeLinear\", function() { return _linear__WEBPACK_IMPORTED_MODULE_0__[\"linear\"]; });\n\n/* harmony import */ var _quad__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./quad */ \"./node_modules/d3-ease/src/quad.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeQuad\", function() { return _quad__WEBPACK_IMPORTED_MODULE_1__[\"quadInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeQuadIn\", function() { return _quad__WEBPACK_IMPORTED_MODULE_1__[\"quadIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeQuadOut\", function() { return _quad__WEBPACK_IMPORTED_MODULE_1__[\"quadOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeQuadInOut\", function() { return _quad__WEBPACK_IMPORTED_MODULE_1__[\"quadInOut\"]; });\n\n/* harmony import */ var _cubic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./cubic */ \"./node_modules/d3-ease/src/cubic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCubic\", function() { return _cubic__WEBPACK_IMPORTED_MODULE_2__[\"cubicInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCubicIn\", function() { return _cubic__WEBPACK_IMPORTED_MODULE_2__[\"cubicIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCubicOut\", function() { return _cubic__WEBPACK_IMPORTED_MODULE_2__[\"cubicOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCubicInOut\", function() { return _cubic__WEBPACK_IMPORTED_MODULE_2__[\"cubicInOut\"]; });\n\n/* harmony import */ var _poly__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./poly */ \"./node_modules/d3-ease/src/poly.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easePoly\", function() { return _poly__WEBPACK_IMPORTED_MODULE_3__[\"polyInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easePolyIn\", function() { return _poly__WEBPACK_IMPORTED_MODULE_3__[\"polyIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easePolyOut\", function() { return _poly__WEBPACK_IMPORTED_MODULE_3__[\"polyOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easePolyInOut\", function() { return _poly__WEBPACK_IMPORTED_MODULE_3__[\"polyInOut\"]; });\n\n/* harmony import */ var _sin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./sin */ \"./node_modules/d3-ease/src/sin.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeSin\", function() { return _sin__WEBPACK_IMPORTED_MODULE_4__[\"sinInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeSinIn\", function() { return _sin__WEBPACK_IMPORTED_MODULE_4__[\"sinIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeSinOut\", function() { return _sin__WEBPACK_IMPORTED_MODULE_4__[\"sinOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeSinInOut\", function() { return _sin__WEBPACK_IMPORTED_MODULE_4__[\"sinInOut\"]; });\n\n/* harmony import */ var _exp__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./exp */ \"./node_modules/d3-ease/src/exp.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeExp\", function() { return _exp__WEBPACK_IMPORTED_MODULE_5__[\"expInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeExpIn\", function() { return _exp__WEBPACK_IMPORTED_MODULE_5__[\"expIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeExpOut\", function() { return _exp__WEBPACK_IMPORTED_MODULE_5__[\"expOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeExpInOut\", function() { return _exp__WEBPACK_IMPORTED_MODULE_5__[\"expInOut\"]; });\n\n/* harmony import */ var _circle__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./circle */ \"./node_modules/d3-ease/src/circle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCircle\", function() { return _circle__WEBPACK_IMPORTED_MODULE_6__[\"circleInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCircleIn\", function() { return _circle__WEBPACK_IMPORTED_MODULE_6__[\"circleIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCircleOut\", function() { return _circle__WEBPACK_IMPORTED_MODULE_6__[\"circleOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeCircleInOut\", function() { return _circle__WEBPACK_IMPORTED_MODULE_6__[\"circleInOut\"]; });\n\n/* harmony import */ var _bounce__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./bounce */ \"./node_modules/d3-ease/src/bounce.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBounce\", function() { return _bounce__WEBPACK_IMPORTED_MODULE_7__[\"bounceOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBounceIn\", function() { return _bounce__WEBPACK_IMPORTED_MODULE_7__[\"bounceIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBounceOut\", function() { return _bounce__WEBPACK_IMPORTED_MODULE_7__[\"bounceOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBounceInOut\", function() { return _bounce__WEBPACK_IMPORTED_MODULE_7__[\"bounceInOut\"]; });\n\n/* harmony import */ var _back__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./back */ \"./node_modules/d3-ease/src/back.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBack\", function() { return _back__WEBPACK_IMPORTED_MODULE_8__[\"backInOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBackIn\", function() { return _back__WEBPACK_IMPORTED_MODULE_8__[\"backIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBackOut\", function() { return _back__WEBPACK_IMPORTED_MODULE_8__[\"backOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeBackInOut\", function() { return _back__WEBPACK_IMPORTED_MODULE_8__[\"backInOut\"]; });\n\n/* harmony import */ var _elastic__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./elastic */ \"./node_modules/d3-ease/src/elastic.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeElastic\", function() { return _elastic__WEBPACK_IMPORTED_MODULE_9__[\"elasticOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeElasticIn\", function() { return _elastic__WEBPACK_IMPORTED_MODULE_9__[\"elasticIn\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeElasticOut\", function() { return _elastic__WEBPACK_IMPORTED_MODULE_9__[\"elasticOut\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"easeElasticInOut\", function() { return _elastic__WEBPACK_IMPORTED_MODULE_9__[\"elasticInOut\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/d3-ease/src/linear.js":
+/*!********************************************!*\
+ !*** ./node_modules/d3-ease/src/linear.js ***!
+ \********************************************/
+/*! exports provided: linear */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"linear\", function() { return linear; });\nfunction linear(t) {\n return +t;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/linear.js?");
+
+/***/ }),
+
+/***/ "./node_modules/d3-ease/src/poly.js":
+/*!******************************************!*\
+ !*** ./node_modules/d3-ease/src/poly.js ***!
+ \******************************************/
+/*! exports provided: polyIn, polyOut, polyInOut */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"polyIn\", function() { return polyIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"polyOut\", function() { return polyOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"polyInOut\", function() { return polyInOut; });\nvar exponent = 3;\n\nvar polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nvar polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nvar polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/poly.js?");
+
+/***/ }),
+
+/***/ "./node_modules/d3-ease/src/quad.js":
+/*!******************************************!*\
+ !*** ./node_modules/d3-ease/src/quad.js ***!
+ \******************************************/
+/*! exports provided: quadIn, quadOut, quadInOut */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quadIn\", function() { return quadIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quadOut\", function() { return quadOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"quadInOut\", function() { return quadInOut; });\nfunction quadIn(t) {\n return t * t;\n}\n\nfunction quadOut(t) {\n return t * (2 - t);\n}\n\nfunction quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/quad.js?");
+
+/***/ }),
+
+/***/ "./node_modules/d3-ease/src/sin.js":
+/*!*****************************************!*\
+ !*** ./node_modules/d3-ease/src/sin.js ***!
+ \*****************************************/
+/*! exports provided: sinIn, sinOut, sinInOut */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sinIn\", function() { return sinIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sinOut\", function() { return sinOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sinInOut\", function() { return sinInOut; });\nvar pi = Math.PI,\n halfPi = pi / 2;\n\nfunction sinIn(t) {\n return 1 - Math.cos(t * halfPi);\n}\n\nfunction sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nfunction sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n\n\n//# sourceURL=webpack:///./node_modules/d3-ease/src/sin.js?");
+
+/***/ }),
+
+/***/ "./node_modules/lodash.throttle/index.js":
+/*!***********************************************!*\
+ !*** ./node_modules/lodash.throttle/index.js ***!
+ \***********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("/* WEBPACK VAR INJECTION */(function(global) {/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./node_modules/lodash.throttle/index.js?");
+
+/***/ }),
+
+/***/ "./node_modules/webpack/buildin/global.js":
+/*!***********************************!*\
+ !*** (webpack)/buildin/global.js ***!
+ \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+eval("var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n//# sourceURL=webpack:///(webpack)/buildin/global.js?");
+
+/***/ }),
+
+/***/ "./src/css/main.scss":
+/*!***************************!*\
+ !*** ./src/css/main.scss ***!
+ \***************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./src/css/main.scss?");
+
+/***/ }),
+
+/***/ "./src/index.js":
+/*!**********************!*\
+ !*** ./src/index.js ***!
+ \**********************/
+/*! no exports provided */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _css_main_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./css/main.scss */ \"./src/css/main.scss\");\n/* harmony import */ var _css_main_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_main_scss__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _js_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./js/helpers */ \"./src/js/helpers.js\");\n/* harmony import */ var _js_main__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./js/main */ \"./src/js/main.js\");\n/* harmony import */ var _js_loader__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./js/loader */ \"./src/js/loader.js\");\n\n\n\n\nconst loader = Object(_js_loader__WEBPACK_IMPORTED_MODULE_3__[\"getLoader\"])()\nObject(_js_helpers__WEBPACK_IMPORTED_MODULE_1__[\"onEvent\"])('DOMContentLoaded', e => {\n console.log('page loaded!', Date.now())\n loader.loading()\n const doms = {}\n doms.pane = Object(_js_helpers__WEBPACK_IMPORTED_MODULE_1__[\"qs\"])('.sidebar')\n doms.main = Object(_js_helpers__WEBPACK_IMPORTED_MODULE_1__[\"qs\"])('.main')\n doms.cloak = Object(_js_helpers__WEBPACK_IMPORTED_MODULE_1__[\"qs\"])('#cloak')\n doms.paneLeft = doms.pane.getBoundingClientRect().left\n Object(_js_main__WEBPACK_IMPORTED_MODULE_2__[\"tryLoadMode\"])(doms, loader)\n Object(_js_main__WEBPACK_IMPORTED_MODULE_2__[\"tryRestoreSidebar\"])(doms)\n Object(_js_main__WEBPACK_IMPORTED_MODULE_2__[\"activateSidebarToggle\"])(doms)\n Object(_js_main__WEBPACK_IMPORTED_MODULE_2__[\"activateModeSwitcher\"])(doms, loader)\n Object(_js_main__WEBPACK_IMPORTED_MODULE_2__[\"activateSidebarDrag\"])(doms)\n Object(_js_main__WEBPACK_IMPORTED_MODULE_2__[\"activateDialog\"])(doms, loader)\n}, 0, document)\n\n\n//# sourceURL=webpack:///./src/index.js?");
+
+/***/ }),
+
+/***/ "./src/js/css_template.js":
+/*!********************************!*\
+ !*** ./src/js/css_template.js ***!
+ \********************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers */ \"./src/js/helpers.js\");\n\n\n// tagged template function, produce wild styles\nfunction styleTemplate (strings, ...keys) {\n return function () {\n let temp = strings.slice()\n keys.forEach((key, i) => {\n temp[i] += gen[key]()\n })\n return temp.join('').replace(/\\s{2}/gm, ' ')\n }\n}\n\nconst gen = {\n darkCode: ['c', 'f', '6', '9'],\n lightCode: ['a', 'b', 'c', 'd', 'e', 'f'],\n textCode: ['1a2a3a', '2a3a4a', '3a4a5a', '4a5a6a', '5a6a7a', '6a7a8a', '7a8a9a'],\n grayCode: ['aaa', 'bbb', 'ccc', 'ddd'],\n lightGrayCode: ['e2e2e2', 'e7e7e7', 'ececec'],\n deepGrayCode: ['222', '333', '444']\n}\n\ngen.dark = () => {\n let d = ''\n for (let i = 0; i !== 3; i++) {\n let c = gen.darkCode[Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"randomInt\"])(0, gen.darkCode.length)]\n d += c + c\n }\n return '#' + d\n}\ngen.light = () => {\n let d = ''\n for (let i = 0; i !== 6; i++) {\n d += gen.lightCode[Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"randomInt\"])(0, gen.lightCode.length)]\n }\n return '#' + d\n}\n\ngen.gray = () => {\n let i = Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"randomInt\"])(0, gen.grayCode.length)\n return '#' + gen.grayCode[i]\n}\ngen.lightGray = () => {\n let i = Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"randomInt\"])(0, gen.lightGrayCode.length)\n return '#' + gen.lightGrayCode[i]\n}\ngen.deepGray = () => {\n let i = Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"randomInt\"])(0, gen.deepGrayCode.length)\n return '#' + gen.deepGrayCode[i]\n}\ngen.text = (base = 0, max = 7) => {\n let i = Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"randomInt\"])(base, max)\n return '#' + gen.textCode[i]\n}\n\ngen.deepText = gen.text.bind(gen, 0, 2)\ngen.mediumText = gen.text.bind(gen, 2, 5)\ngen.lightText = gen.text.bind(gen, 5, 6)\n\nconst wildStyle = styleTemplate`\n .wild-mode code {\n background: ${'lightGray'}\n }\n .wild-mode .main .article-tags a {\n background: ${'light'};\n }\n .wild-mode .local-info {\n background: ${'light'};\n }\n body.wild-mode,\n .wild-mode .main {\n background: ${'light'};\n }\n .wild-mode th,\n .wild-mode td {\n border-bottom: 1px solid ${'dark'};\n }\n .wild-mode hr {\n border: 1px solid ${'dark'};\n }\n .wild-mode .pagination {\n background: ${'dark'};\n }\n .wild-mode .sidebar {\n background: ${'dark'};\n }\n .wild-mode .header,\n .wild-mode .footer,\n .wild-mode .header .sub-menu li:hover,\n .wild-mode .sidebar a:hover,\n .wild-mode .logo-link,\n .wild-mode .top, .wild-mode .bottom {\n background: ${'dark'};\n }\n .wild-mode .header .menu>li:hover,\n .wild-mode .footer a:hover {\n background: ${'light'};\n }\n .wild-mode .header ul ul {\n box-shadow: 0 0.1em 0.2em 0 ${'dark'};\n }\n .wild-mode .header ul ul,\n .wild-mode .pagination a:hover {\n background: ${'dark'};\n }\n .wild-mode .article-meta,\n .wild-mode .item-meta,\n .wild-mode .footnotes,\n .wild-mode .count,\n .wild-mode .taxonomy-key {\n color: ${'mediumText'};\n }\n .wild-mode .main .article-tags a,\n .wild-mode .local-info,\n .wild-mode .main,\n .wild-mode .main a,\n .wild-mode .terms-list a,\n .wild-mode blockquote.twitter-tweet,\n .wild-mode .sidebar a,\n .wild-mode .taxonomy-key,\n .wild-mode .main .title a,\n .wild-mode .header a,\n .wild-mode .footer a,\n .wild-mode .footer time,\n .wild-mode .pagination a,\n .wild-mode .header .sub-menu a {\n color: ${'deepGray'};\n }\n .wild-mode .icon,\n .wild-mode .footer .icon {\n background: ${'deepGray'};\n }\n `\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (wildStyle);\n\n\n//# sourceURL=webpack:///./src/js/css_template.js?");
+
+/***/ }),
+
+/***/ "./src/js/file_template.js":
+/*!*********************************!*\
+ !*** ./src/js/file_template.js ***!
+ \*********************************/
+/*! exports provided: genFile */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"genFile\", function() { return genFile; });\nfunction genFile (identifier, themeName) {\n return `/*\nHugo Edidor theme wild mode exported.\nhomepage: https://github.com/jacobsun/edidor\nUsage:\n1. Throw me to your site root folder/static/css directory, you can rename me to whatever you like.\n2. Copy the code below to your config file.\n\n--------\n[[menu.main]]\nparent = \"Theme\"\nidentifier = \"${identifier}\"\nname = \"${themeName}\"\nurl = \"#\"\nweight = 30\n--------\n\n3. Change the field 'name' and 'weight' to whatever you like. Leave others alone, and don't add your custom field, hugo doesn't support that, though I really hope so :/.\n*/`\n}\n\n\n//# sourceURL=webpack:///./src/js/file_template.js?");
+
+/***/ }),
+
+/***/ "./src/js/helpers.js":
+/*!***************************!*\
+ !*** ./src/js/helpers.js ***!
+ \***************************/
+/*! exports provided: qs, elt, removeClass, clearClass, addClass, toggleClass, hasClass, setStyle, onEvent, onPointerMove, ls, randomInt, download, trackTime, getProgress */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"qs\", function() { return qs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"elt\", function() { return elt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeClass\", function() { return removeClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clearClass\", function() { return clearClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addClass\", function() { return addClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"toggleClass\", function() { return toggleClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasClass\", function() { return hasClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setStyle\", function() { return setStyle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onEvent\", function() { return onEvent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onPointerMove\", function() { return onPointerMove; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ls\", function() { return ls; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"randomInt\", function() { return randomInt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"download\", function() { return download; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"trackTime\", function() { return trackTime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getProgress\", function() { return getProgress; });\n// dom helper functions\nconst throttle = __webpack_require__(/*! lodash.throttle */ \"./node_modules/lodash.throttle/index.js\")\nfunction qs (sel, parent = document.body) {\n if (typeof parent === 'string') {\n parent = document.querySelector(parent)\n }\n return parent.querySelector(sel)\n}\n\nfunction elt (name, attr = {}, ...text) {\n const node = document.createElement(name)\n Object.keys(attr).forEach(k => {\n node.setAttribute(k, attr[k])\n })\n text.forEach(t => {\n if (typeof t === 'string') {\n t = document.createTextNode(t)\n }\n node.appendChild(t)\n })\n return node\n}\n\nfunction removeClass (dom, cls) {\n if (typeof dom === 'string') {\n dom = qs(dom)\n }\n dom.classList.remove(cls)\n return dom\n}\nfunction clearClass (dom, cls) {\n if (typeof dom === 'string') {\n dom = qs(dom)\n }\n dom.className = ''\n return dom\n}\nfunction addClass (dom, cls) {\n if (typeof dom === 'string') {\n dom = qs(dom)\n }\n dom.classList.add(cls)\n return dom\n}\nfunction toggleClass (dom, cls) {\n if (typeof dom === 'string') {\n dom = qs(dom)\n }\n dom.classList.toggle(cls)\n return dom\n}\nfunction hasClass (dom, cls) {\n if (typeof dom === 'string') {\n dom = qs(dom)\n }\n return dom.classList.contains(cls)\n}\nfunction setStyle (dom, styles) {\n if (typeof dom === 'string') {\n dom = qs(dom)\n }\n\n Object.keys(styles).forEach(key => {\n dom.style[key] = styles[key]\n })\n}\nfunction onEvent (event, cb, limit = 0, dom = document.body, options = {}) {\n if (typeof dom === 'string') {\n dom = qs(dom)\n }\n if (limit > 0) {\n dom.addEventListener(event, throttle(cb, limit), options)\n } else {\n dom.addEventListener(event, cb, options)\n }\n}\n// mousemove and touchmove abstraction\nfunction onPointerMove (cb, limit, dom = document.body) {\n onEvent('mousemove', e => {\n cb({ // eslint-disable-line\n clientX: e.clientX,\n clientY: e.clientY,\n type: e.type\n })\n }, limit, dom, { passive: true })\n\n onEvent('touchmove', e => {\n cb({ // eslint-disable-line\n clientX: e.touches[0].clientX,\n clientY: e.touches[0].clientY,\n type: e.type\n })\n }, limit, dom, { passive: true })\n}\n// local storage\nconst ls = {}\nls.get = key => window.localStorage.getItem(key)\n\nls.set = (key, value) => {\n if (value === null || value === undefined) {\n value = ''\n } else if (typeof value !== 'string') {\n value = JSON.stringify(value)\n }\n window.localStorage.setItem(key, value)\n}\nfunction randomInt (min, max) {\n min = Math.ceil(min)\n max = Math.floor(max)\n return Math.floor(Math.random() * (max - min)) + min\n}\n\nfunction download (filename, text) {\n const a = elt('a', {\n href: 'data:text/plain;charset=utf-8,' + encodeURIComponent(text),\n download: filename,\n style: {\n display: 'none'\n }\n })\n document.body.appendChild(a)\n a.click()\n document.body.removeChild(a)\n}\n\nfunction trackTime (id) {\n const [entry] = window.performance.getEntriesByName(id)\n if (!entry) {\n window.performance.mark(id)\n return 0\n }\n return window.performance.now() - entry.startTime\n}\nfunction getProgress (data) {\n if (data.duration) {\n return Math.min(trackTime(data.id) / data.duration, 1)\n }\n return 1\n}\n\n\n//# sourceURL=webpack:///./src/js/helpers.js?");
+
+/***/ }),
+
+/***/ "./src/js/loader.js":
+/*!**************************!*\
+ !*** ./src/js/loader.js ***!
+ \**************************/
+/*! exports provided: getLoader */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLoader\", function() { return getLoader; });\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers */ \"./src/js/helpers.js\");\n/* harmony import */ var d3_ease__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3-ease */ \"./node_modules/d3-ease/src/index.js\");\n\n\nfunction getLoader () {\n let topEle = Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"qs\"])('.top')\n let bottomEle = Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"qs\"])('.bottom')\n let distance = document.documentElement.clientHeight / 2\n let ticket = false\n let closed = false\n let opening = false\n let openWaiting = false\n const animation = (ease, cb, duration, finaly = () => {}) => {\n const tick = () => {\n let progress = Math.min(ease((Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"getProgress\"])(data))), 1)\n // d3.easeExpOut has problem, t can not reach to 1, so I mannually fix it\n // progress = progress > 0.999 ? 1 : progress\n if (progress < 1) {\n cb(progress)\n window.requestAnimationFrame(tick)\n } else {\n window.performance.clearMarks(data.id)\n cb(progress)\n finaly()\n }\n }\n const data = {\n duration,\n id: window.requestAnimationFrame(tick)\n }\n }\n const loading = () => {\n console.log('loading', ticket)\n if (ticket) return\n ticket = true\n close(() => {\n closed = true\n if (openWaiting) {\n open()\n }\n })\n }\n const loaded = () => {\n console.log('loaded: ', ticket, opening)\n if (!ticket) return\n if (opening) return\n opening = true\n if (closed) {\n open()\n } else {\n openWaiting = true\n }\n }\n function close (cb) {\n animation(d3_ease__WEBPACK_IMPORTED_MODULE_1__[\"easeElasticOut\"], progress => {\n topEle.style.top = -((1 - progress) * distance) + 'px'\n bottomEle.style.top = (1 - progress) * distance + distance + 'px'\n }, 1000, cb)\n }\n\n function open (cb) {\n animation(d3_ease__WEBPACK_IMPORTED_MODULE_1__[\"easeElasticOut\"], progress => {\n topEle.style.top = -(progress * distance) + 'px'\n bottomEle.style.top = progress * distance + distance + 'px'\n }, 1000, () => {\n opening = false\n closed = false\n openWaiting = false\n ticket = false\n })\n }\n\n return {\n loading,\n loaded\n }\n}\n\n\n//# sourceURL=webpack:///./src/js/loader.js?");
+
+/***/ }),
+
+/***/ "./src/js/main.js":
+/*!************************!*\
+ !*** ./src/js/main.js ***!
+ \************************/
+/*! exports provided: tryLoadMode, tryRestoreSidebar, activateSidebarToggle, activateModeSwitcher, activateSidebarDrag, activateDialog */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tryLoadMode\", function() { return tryLoadMode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tryRestoreSidebar\", function() { return tryRestoreSidebar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"activateSidebarToggle\", function() { return activateSidebarToggle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"activateModeSwitcher\", function() { return activateModeSwitcher; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"activateSidebarDrag\", function() { return activateSidebarDrag; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"activateDialog\", function() { return activateDialog; });\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers */ \"./src/js/helpers.js\");\n/* harmony import */ var _css_template__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./css_template */ \"./src/js/css_template.js\");\n/* harmony import */ var _file_template__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./file_template */ \"./src/js/file_template.js\");\n\n\n\n\n// sidebar function dragging wrapper\nfunction activateSidebarDrag (doms) {\n const state = {\n last: false,\n resizing: false,\n resizable: false\n }\n\n function switchCursor () {\n if (state.resizable) {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"setStyle\"])(document.body, { cursor: 'ew-resize' })\n } else {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"setStyle\"])(document.body, { cursor: 'auto' })\n }\n }\n\n function canResize (x, threshold = 4) {\n return Math.abs(x - doms.pane.getBoundingClientRect().right) <= threshold\n }\n function resize (x) {\n let newWidth = x - doms.paneLeft\n if (newWidth <= 10) {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"addClass\"])(doms.pane, 'hide')\n } else {\n adjustWidth(newWidth)\n }\n }\n function cancelResize (e) {\n state.resizing = false\n let r = doms.pane.getBoundingClientRect()\n saveWidth(r.right - r.left)\n }\n\n function saveWidth (x) {\n if (x <= 10) {\n return\n }\n _helpers__WEBPACK_IMPORTED_MODULE_0__[\"ls\"].set('sidebar_width', x)\n }\n\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"onEvent\"])('mousedown', e => {\n if (state.resizable) {\n state.resizing = true\n }\n }, 0)\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"onEvent\"])('mouseup', cancelResize, 0)\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"onEvent\"])('keydown', e => {\n if (e.ctrlKey && e.keyCode === 66) {\n toggleSidebar()\n }\n }, 0)\n\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"onEvent\"])('touchstart', e => {\n state.resizing = canResize(e.touches[0].clientX, 10)\n })\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"onEvent\"])('touchend', cancelResize)\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"onPointerMove\"])(pointerMoveHandler, 50, Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"qs\"])('.middle'))\n function pointerMoveHandler (e) {\n state.resizable = canResize(e.clientX)\n if (state.resizing) {\n resize(e.clientX)\n } else if (e.type === 'mousemove' && e.clientX > 10 && state.last !== state.resizable) {\n switchCursor()\n state.last = state.resizable\n }\n }\n}\n// sidebar dragging function end\n// toggle and load sidebar width\nfunction adjustWidth (x, unit = 'px') {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"setStyle\"])(Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"qs\"])('.sidebar'), { width: x + 'px' })\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"setStyle\"])(Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"qs\"])('.main'), { marginLeft: x + 'px' })\n}\nfunction tryRestoreSidebar (doms) {\n let x = _helpers__WEBPACK_IMPORTED_MODULE_0__[\"ls\"].get('sidebar_width')\n adjustWidth(x)\n let flag = _helpers__WEBPACK_IMPORTED_MODULE_0__[\"ls\"].get('is_sidebar_hide')\n flag === '1' ? Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"addClass\"])(doms.pane, 'hide') : Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"removeClass\"])(doms.pane, 'hide')\n}\nfunction activateSidebarToggle (doms) {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"onEvent\"])('click', toggleSidebar.bind(null, doms), 0, '.toggle-sidebar')\n}\n\nfunction toggleSidebar (doms, e) {\n if (Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"hasClass\"])(doms.pane, 'hide')) {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"removeClass\"])(doms.pane, 'hide')\n _helpers__WEBPACK_IMPORTED_MODULE_0__[\"ls\"].set('is_sidebar_hide', '0')\n } else {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"addClass\"])(doms.pane, 'hide')\n _helpers__WEBPACK_IMPORTED_MODULE_0__[\"ls\"].set('is_sidebar_hide', '1')\n }\n e.preventDefault()\n e.stopPropagation()\n return false\n}\n// style mode functions\nconst toMode = name => {\n if (!Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"hasClass\"])(document.body, name)) {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"addClass\"])(Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"clearClass\"])(document.body), name)\n }\n _helpers__WEBPACK_IMPORTED_MODULE_0__[\"ls\"].set('mode', name)\n}\nfunction tryLoadMode (doms, loader) {\n let mode = _helpers__WEBPACK_IMPORTED_MODULE_0__[\"ls\"].get('mode')\n mode && toMode(mode)\n if (mode === 'wild-mode') {\n let wildEle = Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"elt\"])(\n 'style',\n { class: 'wild-ele' },\n _helpers__WEBPACK_IMPORTED_MODULE_0__[\"ls\"].get('wild_style'))\n document.body.appendChild(wildEle)\n }\n loader.loaded()\n}\nfunction activateModeSwitcher (doms, loader) {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"onEvent\"])('click', e => {\n e.preventDefault()\n e.stopPropagation()\n if (e.target.id === 'theme-switcher-button') {\n return\n }\n if (Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"hasClass\"])(e.target, 'export-wild')) {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"addClass\"])('.dialog', 'show')\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"qs\"])('#theme-name').focus()\n return\n }\n let theme = e.target.dataset.theme\n if (!theme) {\n console.error('Theme name not found, probably missing an \"Identifier\" field in Config file.')\n return\n }\n loader.loading()\n toMode(theme + '-mode')\n if (theme === 'wild') {\n const wildEle = Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"qs\"])('.wild-ele')\n const style = Object(_css_template__WEBPACK_IMPORTED_MODULE_1__[\"default\"])()\n if (wildEle) {\n wildEle.innerText = style\n } else {\n document.body.appendChild(Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"elt\"])('style', { class: 'wild-ele' }, style))\n }\n _helpers__WEBPACK_IMPORTED_MODULE_0__[\"ls\"].set('wild_style', style)\n }\n loader.loaded()\n }, 0, '#theme-switcher')\n}\n\n// function showCloak () {\n// removeClass(cloak, 'hide')\n// }\n\nfunction activateDialog (doms, loader) {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"onEvent\"])('click', e => {\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"removeClass\"])('.dialog', 'show')\n }, 0, '.close-dialog')\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"onEvent\"])('click', e => {\n const themeName = Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"qs\"])('#theme-name').value.trim()\n if (!themeName) {\n window.alert('Name is required.')\n return\n }\n if (!/^[a-zA-Z\\s-]+$/.test(themeName)) {\n window.alert('Only English letters, space, hyphens are allowed.')\n return\n }\n if (themeName === 'light' || themeName === 'dark' || themeName === 'wild') {\n window.alert('Mess up builtin themes.')\n return\n }\n loader.loading()\n exportWild(themeName)\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"removeClass\"])('.dialog', 'show')\n loader.loaded()\n }, 0, '.export')\n}\nfunction exportWild (themeName) {\n let content = generateFile(themeName)\n Object(_helpers__WEBPACK_IMPORTED_MODULE_0__[\"download\"])(themeName + '.css', content)\n}\n\nfunction generateFile (themeName) {\n let style = _helpers__WEBPACK_IMPORTED_MODULE_0__[\"ls\"].get('wild_style')\n let identifier = themeName.replace(/\\s/g, '-')\n style = style.replace(/wild-mode/g, `${identifier}-mode`)\n let file = Object(_file_template__WEBPACK_IMPORTED_MODULE_2__[\"genFile\"])(identifier, themeName)\n return file + style\n}\n\n\n\n\n//# sourceURL=webpack:///./src/js/main.js?");
+
+/***/ })
+
+/******/ }); \ No newline at end of file