From db404df9c960c823d9a3426abf4f72d9c3cd202e Mon Sep 17 00:00:00 2001 From: zwk1091 Date: Sun, 25 Jun 2023 23:12:10 +0800 Subject: [PATCH] Site updated: 2023-06-25 23:12:08 --- 2023/06/25/hello-world/index.html | 270 ++ about/index.html | 193 + archives/2023/06/index.html | 239 + archives/2023/index.html | 239 + archives/index.html | 239 + css/about.css | 8 + css/biblio.css | 9 + css/category.css | 15 + css/font.css | 5 + css/helpers.css | 775 ++++ css/images/banner.jpg | Bin 0 -> 224710 bytes css/index.css | 17 + css/layout.css | 251 ++ css/loading.css | 77 + css/main.css | 2662 ++++++++++++ css/style.css | 1256 ++++++ css/tags.css | 31 + fancybox/jquery.fancybox.min.css | 1 + fancybox/jquery.fancybox.min.js | 13 + fonts/icons.eot | Bin 0 -> 2292 bytes fonts/icons.svg | 16 + fonts/icons.ttf | Bin 0 -> 2136 bytes fonts/icons.woff | Bin 0 -> 2212 bytes images/algolia_logo.svg | 9 + images/apple-touch-icon-next.png | Bin 0 -> 1544 bytes images/avatar.gif | Bin 0 -> 2926 bytes images/cc-by-nc-nd.svg | 121 + images/cc-by-nc-sa.svg | 121 + images/cc-by-nc.svg | 121 + images/cc-by-nd.svg | 117 + images/cc-by-sa.svg | 121 + images/cc-by.svg | 121 + images/cc-zero.svg | 72 + images/favicon-16x16-next.png | Bin 0 -> 435 bytes images/favicon-32x32-next.png | Bin 0 -> 640 bytes images/loading.gif | Bin 0 -> 35 bytes images/logo.svg | 23 + images/placeholder.gif | Bin 0 -> 35 bytes images/quote-l.svg | 13 + images/quote-r.svg | 12 + images/searchicon.png | Bin 0 -> 766 bytes img/favicon.ico | Bin 0 -> 3437 bytes img/icp.png | Bin 0 -> 16161 bytes index.html | 283 ++ js/clipboard/clipboard.min.js | 7 + js/index.js | 16 + js/jquery-3.6.4.min.js | 2 + js/script.js | 138 + js/smooth-corners.js | 79 + js/src/affix.js | 162 + js/src/algolia-search.js | 115 + js/src/bootstrap.js | 52 + js/src/exturl.js | 15 + js/src/hook-duoshuo.js | 115 + js/src/js.cookie.js | 165 + js/src/motion.js | 352 ++ js/src/post-details.js | 99 + js/src/schemes/pisces.js | 57 + js/src/scroll-cookie.js | 23 + js/src/scrollspy.js | 182 + js/src/utils.js | 339 ++ js/theme.js | 112 + js/toc.js | 16 + lib/Han/dist/font/han-space.otf | Bin 0 -> 1748 bytes lib/Han/dist/font/han-space.woff | Bin 0 -> 1452 bytes lib/Han/dist/font/han.otf | Bin 0 -> 26416 bytes lib/Han/dist/font/han.woff | Bin 0 -> 21292 bytes lib/Han/dist/font/han.woff2 | Bin 0 -> 13644 bytes lib/Han/dist/han.css | 1168 +++++ lib/Han/dist/han.js | 3005 +++++++++++++ lib/Han/dist/han.min.css | 6 + lib/Han/dist/han.min.js | 5 + .../instantsearch.min.css | 1 + .../instantsearch.min.js | 15 + lib/canvas-nest/canvas-nest.min.js | 1 + lib/canvas-ribbon/canvas-ribbon.js | 73 + lib/fancybox/source/blank.gif | Bin 0 -> 43 bytes lib/fancybox/source/fancybox_loading.gif | Bin 0 -> 6567 bytes lib/fancybox/source/fancybox_loading@2x.gif | Bin 0 -> 13984 bytes lib/fancybox/source/fancybox_overlay.png | Bin 0 -> 1003 bytes lib/fancybox/source/fancybox_sprite.png | Bin 0 -> 1362 bytes lib/fancybox/source/fancybox_sprite@2x.png | Bin 0 -> 6553 bytes .../source/helpers/fancybox_buttons.png | Bin 0 -> 1080 bytes .../helpers/jquery.fancybox-buttons.css | 97 + .../source/helpers/jquery.fancybox-buttons.js | 122 + .../source/helpers/jquery.fancybox-media.js | 199 + .../source/helpers/jquery.fancybox-thumbs.css | 55 + .../source/helpers/jquery.fancybox-thumbs.js | 162 + lib/fancybox/source/jquery.fancybox.css | 274 ++ lib/fancybox/source/jquery.fancybox.js | 2020 +++++++++ lib/fancybox/source/jquery.fancybox.pack.js | 46 + lib/fastclick/LICENSE | 22 + lib/fastclick/README.html | 70 + lib/fastclick/bower.json | 1 + lib/fastclick/lib/fastclick.js | 841 ++++ lib/fastclick/lib/fastclick.min.js | 1 + lib/font-awesome/HELP-US-OUT.txt | 7 + lib/font-awesome/bower.json | 1 + lib/font-awesome/css/font-awesome.css | 2337 ++++++++++ lib/font-awesome/css/font-awesome.css.map | 7 + lib/font-awesome/css/font-awesome.min.css | 4 + lib/font-awesome/fonts/FontAwesome.otf | Bin 0 -> 134808 bytes .../fonts/fontawesome-webfont.eot | Bin 0 -> 165742 bytes .../fonts/fontawesome-webfont.svg | 2671 ++++++++++++ .../fonts/fontawesome-webfont.ttf | Bin 0 -> 165548 bytes .../fonts/fontawesome-webfont.woff | Bin 0 -> 98024 bytes .../fonts/fontawesome-webfont.woff2 | Bin 0 -> 77160 bytes lib/jquery/index.js | 4 + lib/jquery_lazyload/CONTRIBUTING.html | 23 + lib/jquery_lazyload/README.html | 20 + lib/jquery_lazyload/bower.json | 1 + lib/jquery_lazyload/jquery.lazyload.js | 242 ++ lib/jquery_lazyload/jquery.scrollstop.js | 72 + lib/needsharebutton/font-embedded.css | 127 + lib/needsharebutton/needsharebutton.css | 372 ++ lib/needsharebutton/needsharebutton.js | 537 +++ lib/pace/pace-theme-barber-shop.min.css | 1 + lib/pace/pace-theme-big-counter.min.css | 1 + lib/pace/pace-theme-bounce.min.css | 1 + lib/pace/pace-theme-center-atom.min.css | 1 + lib/pace/pace-theme-center-circle.min.css | 1 + lib/pace/pace-theme-center-radar.min.css | 1 + lib/pace/pace-theme-center-simple.min.css | 1 + lib/pace/pace-theme-corner-indicator.min.css | 1 + lib/pace/pace-theme-fill-left.min.css | 1 + lib/pace/pace-theme-flash.min.css | 1 + lib/pace/pace-theme-loading-bar.min.css | 1 + lib/pace/pace-theme-mac-osx.min.css | 1 + lib/pace/pace-theme-minimal.min.css | 1 + lib/pace/pace.min.js | 2 + lib/three/canvas_lines.min.js | 20 + lib/three/canvas_sphere.min.js | 20 + lib/three/three-waves.min.js | 20 + lib/three/three.min.js | 859 ++++ lib/ua-parser-js/dist/ua-parser.min.js | 9 + lib/ua-parser-js/dist/ua-parser.pack.js | 9 + lib/velocity/bower.json | 1 + lib/velocity/velocity.js | 3868 +++++++++++++++++ lib/velocity/velocity.min.js | 4 + lib/velocity/velocity.ui.js | 762 ++++ lib/velocity/velocity.ui.min.js | 2 + 141 files changed, 29694 insertions(+) create mode 100644 2023/06/25/hello-world/index.html create mode 100644 about/index.html create mode 100644 archives/2023/06/index.html create mode 100644 archives/2023/index.html create mode 100644 archives/index.html create mode 100644 css/about.css create mode 100644 css/biblio.css create mode 100644 css/category.css create mode 100644 css/font.css create mode 100644 css/helpers.css create mode 100644 css/images/banner.jpg create mode 100644 css/index.css create mode 100644 css/layout.css create mode 100644 css/loading.css create mode 100644 css/main.css create mode 100644 css/style.css create mode 100644 css/tags.css create mode 100644 fancybox/jquery.fancybox.min.css create mode 100644 fancybox/jquery.fancybox.min.js create mode 100644 fonts/icons.eot create mode 100644 fonts/icons.svg create mode 100644 fonts/icons.ttf create mode 100644 fonts/icons.woff create mode 100644 images/algolia_logo.svg create mode 100644 images/apple-touch-icon-next.png create mode 100644 images/avatar.gif create mode 100644 images/cc-by-nc-nd.svg create mode 100644 images/cc-by-nc-sa.svg create mode 100644 images/cc-by-nc.svg create mode 100644 images/cc-by-nd.svg create mode 100644 images/cc-by-sa.svg create mode 100644 images/cc-by.svg create mode 100644 images/cc-zero.svg create mode 100644 images/favicon-16x16-next.png create mode 100644 images/favicon-32x32-next.png create mode 100644 images/loading.gif create mode 100644 images/logo.svg create mode 100644 images/placeholder.gif create mode 100644 images/quote-l.svg create mode 100644 images/quote-r.svg create mode 100644 images/searchicon.png create mode 100644 img/favicon.ico create mode 100644 img/icp.png create mode 100644 index.html create mode 100644 js/clipboard/clipboard.min.js create mode 100644 js/index.js create mode 100644 js/jquery-3.6.4.min.js create mode 100644 js/script.js create mode 100644 js/smooth-corners.js create mode 100644 js/src/affix.js create mode 100644 js/src/algolia-search.js create mode 100644 js/src/bootstrap.js create mode 100644 js/src/exturl.js create mode 100644 js/src/hook-duoshuo.js create mode 100644 js/src/js.cookie.js create mode 100644 js/src/motion.js create mode 100644 js/src/post-details.js create mode 100644 js/src/schemes/pisces.js create mode 100644 js/src/scroll-cookie.js create mode 100644 js/src/scrollspy.js create mode 100644 js/src/utils.js create mode 100644 js/theme.js create mode 100644 js/toc.js create mode 100644 lib/Han/dist/font/han-space.otf create mode 100644 lib/Han/dist/font/han-space.woff create mode 100644 lib/Han/dist/font/han.otf create mode 100644 lib/Han/dist/font/han.woff create mode 100644 lib/Han/dist/font/han.woff2 create mode 100644 lib/Han/dist/han.css create mode 100644 lib/Han/dist/han.js create mode 100644 lib/Han/dist/han.min.css create mode 100644 lib/Han/dist/han.min.js create mode 100644 lib/algolia-instant-search/instantsearch.min.css create mode 100644 lib/algolia-instant-search/instantsearch.min.js create mode 100644 lib/canvas-nest/canvas-nest.min.js create mode 100644 lib/canvas-ribbon/canvas-ribbon.js create mode 100644 lib/fancybox/source/blank.gif create mode 100644 lib/fancybox/source/fancybox_loading.gif create mode 100644 lib/fancybox/source/fancybox_loading@2x.gif create mode 100644 lib/fancybox/source/fancybox_overlay.png create mode 100644 lib/fancybox/source/fancybox_sprite.png create mode 100644 lib/fancybox/source/fancybox_sprite@2x.png create mode 100644 lib/fancybox/source/helpers/fancybox_buttons.png create mode 100644 lib/fancybox/source/helpers/jquery.fancybox-buttons.css create mode 100644 lib/fancybox/source/helpers/jquery.fancybox-buttons.js create mode 100644 lib/fancybox/source/helpers/jquery.fancybox-media.js create mode 100644 lib/fancybox/source/helpers/jquery.fancybox-thumbs.css create mode 100644 lib/fancybox/source/helpers/jquery.fancybox-thumbs.js create mode 100644 lib/fancybox/source/jquery.fancybox.css create mode 100644 lib/fancybox/source/jquery.fancybox.js create mode 100644 lib/fancybox/source/jquery.fancybox.pack.js create mode 100644 lib/fastclick/LICENSE create mode 100644 lib/fastclick/README.html create mode 100644 lib/fastclick/bower.json create mode 100644 lib/fastclick/lib/fastclick.js create mode 100644 lib/fastclick/lib/fastclick.min.js create mode 100644 lib/font-awesome/HELP-US-OUT.txt create mode 100644 lib/font-awesome/bower.json create mode 100644 lib/font-awesome/css/font-awesome.css create mode 100644 lib/font-awesome/css/font-awesome.css.map create mode 100644 lib/font-awesome/css/font-awesome.min.css create mode 100644 lib/font-awesome/fonts/FontAwesome.otf create mode 100644 lib/font-awesome/fonts/fontawesome-webfont.eot create mode 100644 lib/font-awesome/fonts/fontawesome-webfont.svg create mode 100644 lib/font-awesome/fonts/fontawesome-webfont.ttf create mode 100644 lib/font-awesome/fonts/fontawesome-webfont.woff create mode 100644 lib/font-awesome/fonts/fontawesome-webfont.woff2 create mode 100644 lib/jquery/index.js create mode 100644 lib/jquery_lazyload/CONTRIBUTING.html create mode 100644 lib/jquery_lazyload/README.html create mode 100644 lib/jquery_lazyload/bower.json create mode 100644 lib/jquery_lazyload/jquery.lazyload.js create mode 100644 lib/jquery_lazyload/jquery.scrollstop.js create mode 100644 lib/needsharebutton/font-embedded.css create mode 100644 lib/needsharebutton/needsharebutton.css create mode 100644 lib/needsharebutton/needsharebutton.js create mode 100644 lib/pace/pace-theme-barber-shop.min.css create mode 100644 lib/pace/pace-theme-big-counter.min.css create mode 100644 lib/pace/pace-theme-bounce.min.css create mode 100644 lib/pace/pace-theme-center-atom.min.css create mode 100644 lib/pace/pace-theme-center-circle.min.css create mode 100644 lib/pace/pace-theme-center-radar.min.css create mode 100644 lib/pace/pace-theme-center-simple.min.css create mode 100644 lib/pace/pace-theme-corner-indicator.min.css create mode 100644 lib/pace/pace-theme-fill-left.min.css create mode 100644 lib/pace/pace-theme-flash.min.css create mode 100644 lib/pace/pace-theme-loading-bar.min.css create mode 100644 lib/pace/pace-theme-mac-osx.min.css create mode 100644 lib/pace/pace-theme-minimal.min.css create mode 100644 lib/pace/pace.min.js create mode 100644 lib/three/canvas_lines.min.js create mode 100644 lib/three/canvas_sphere.min.js create mode 100644 lib/three/three-waves.min.js create mode 100644 lib/three/three.min.js create mode 100644 lib/ua-parser-js/dist/ua-parser.min.js create mode 100644 lib/ua-parser-js/dist/ua-parser.pack.js create mode 100644 lib/velocity/bower.json create mode 100644 lib/velocity/velocity.js create mode 100644 lib/velocity/velocity.min.js create mode 100644 lib/velocity/velocity.ui.js create mode 100644 lib/velocity/velocity.ui.min.js diff --git a/2023/06/25/hello-world/index.html b/2023/06/25/hello-world/index.html new file mode 100644 index 0000000..bf5765d --- /dev/null +++ b/2023/06/25/hello-world/index.html @@ -0,0 +1,270 @@ + + + + + + + + Hexo - + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+
+
+
+
+
+ + Hexo +
+
+ + +
+ + + 关于 + +
+
+
+ +
+
+ + + +
+
+

+ + Hello World + +

+
+ + + +
+ + +本文共75字。 + +
+ + + +
+ Copyright: + + 署名-非商业性使用-相同方式共享 | CC BY-NC-SA 2.5 CN + +
+ + + +
+ + + Expand + +
+ + + +
+

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

+

Quick Start

Create a new post

1
$ hexo new "My New Post"
+ +

More info: Writing

+

Run server

1
$ hexo server
+ +

More info: Server

+

Generate static files

1
$ hexo generate
+ +

More info: Generating

+

Deploy to remote sites

1
$ hexo deploy
+ +

More info: Deployment

+ +
+
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ diff --git a/about/index.html b/about/index.html new file mode 100644 index 0000000..1a4d0e6 --- /dev/null +++ b/about/index.html @@ -0,0 +1,193 @@ + + + + + + + + Hexo - + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+
+
+
+
+
+ + Hexo +
+
+ + +
+ + + 关于 + +
+
+
+ +
+
+ + + +
+

Wenkun Zhu

+ +
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ diff --git a/archives/2023/06/index.html b/archives/2023/06/index.html new file mode 100644 index 0000000..8e8f091 --- /dev/null +++ b/archives/2023/06/index.html @@ -0,0 +1,239 @@ + + + + + + + + Hexo - + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+
+
+
+
+
+ + Hexo +
+
+ + +
+ + + 关于 + +
+
+
+ +
+
+ + + +

+ + Archives + +

+ + + + + + + + +
+ + +
+ 2023 +
+
+ +
+ +
+ + + + + + + + Hello World + + + + +
+ + +
+ + + + + + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ diff --git a/archives/2023/index.html b/archives/2023/index.html new file mode 100644 index 0000000..8e8f091 --- /dev/null +++ b/archives/2023/index.html @@ -0,0 +1,239 @@ + + + + + + + + Hexo - + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+
+
+
+
+
+ + Hexo +
+
+ + +
+ + + 关于 + +
+
+
+ +
+
+ + + +

+ + Archives + +

+ + + + + + + + +
+ + +
+ 2023 +
+
+ +
+ +
+ + + + + + + + Hello World + + + + +
+ + +
+ + + + + + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ diff --git a/archives/index.html b/archives/index.html new file mode 100644 index 0000000..8e8f091 --- /dev/null +++ b/archives/index.html @@ -0,0 +1,239 @@ + + + + + + + + Hexo - + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+
+
+
+
+
+ + Hexo +
+
+ + +
+ + + 关于 + +
+
+
+ +
+
+ + + +

+ + Archives + +

+ + + + + + + + +
+ + +
+ 2023 +
+
+ +
+ +
+ + + + + + + + Hello World + + + + +
+ + +
+ + + + + + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ diff --git a/css/about.css b/css/about.css new file mode 100644 index 0000000..5b8182d --- /dev/null +++ b/css/about.css @@ -0,0 +1,8 @@ +.about { + margin-top: 30px; + line-height: 20px; + font-weight: 200; +} +.about img { + width: 100%; +} diff --git a/css/biblio.css b/css/biblio.css new file mode 100644 index 0000000..ee8c7e2 --- /dev/null +++ b/css/biblio.css @@ -0,0 +1,9 @@ +.csl-bib-body .csl-entry { + display: grid; + grid-template-columns: 60px auto; + margin-bottom: 1em; +} +.csl-bib-body .csl-entry .csl-right-inline { + text-align: justify; + word-break: break-word; +} diff --git a/css/category.css b/css/category.css new file mode 100644 index 0000000..7809d26 --- /dev/null +++ b/css/category.css @@ -0,0 +1,15 @@ +.category { + max-width: content-max-width; + margin: 0 auto; +} +.category .signature { + width: 100%; + text-align: left; + overflow: hidden; + padding: 40px 0 20px 0; +} +.category h1 { + padding: 1em 0 0.5em 0; + font-weight: 600; + font-size: large-font-size; +} diff --git a/css/font.css b/css/font.css new file mode 100644 index 0000000..786f2cc --- /dev/null +++ b/css/font.css @@ -0,0 +1,5 @@ +@import url("https://fonts.googleapis.com/css2?family=Noto Sans SC&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=Noto Serif&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=Noto Serif SC&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=Raleway&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=Inconsolata&display=swap"); diff --git a/css/helpers.css b/css/helpers.css new file mode 100644 index 0000000..6bcc52e --- /dev/null +++ b/css/helpers.css @@ -0,0 +1,775 @@ +@import url("https://fonts.googleapis.com/css2?family=Noto Sans SC&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=Noto Serif&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=Noto Serif SC&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=Raleway&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=Inconsolata&display=swap"); +.text-indent-none { + text-indent: 0 !important; +} +.display-block { + display: block; +} +@media screen and (max-width: 768px) { + .md\:display-block { + display: block; + } + .md\:display-block.display-block { + display: block; + } + .md\:display-block.display-inline { + display: block; + } + .md\:display-block.display-inline-block { + display: block; + } + .md\:display-block.display-table { + display: block; + } + .md\:display-block.display-none { + display: block; + } +} +.display-inline { + display: inline; +} +@media screen and (max-width: 768px) { + .md\:display-inline { + display: inline; + } + .md\:display-inline.display-block { + display: inline; + } + .md\:display-inline.display-inline { + display: inline; + } + .md\:display-inline.display-inline-block { + display: inline; + } + .md\:display-inline.display-table { + display: inline; + } + .md\:display-inline.display-none { + display: inline; + } +} +.display-inline-block { + display: inline-block; +} +@media screen and (max-width: 768px) { + .md\:display-inline-block { + display: inline-block; + } + .md\:display-inline-block.display-block { + display: inline-block; + } + .md\:display-inline-block.display-inline { + display: inline-block; + } + .md\:display-inline-block.display-inline-block { + display: inline-block; + } + .md\:display-inline-block.display-table { + display: inline-block; + } + .md\:display-inline-block.display-none { + display: inline-block; + } +} +.display-table { + display: table; +} +@media screen and (max-width: 768px) { + .md\:display-table { + display: table; + } + .md\:display-table.display-block { + display: table; + } + .md\:display-table.display-inline { + display: table; + } + .md\:display-table.display-inline-block { + display: table; + } + .md\:display-table.display-table { + display: table; + } + .md\:display-table.display-none { + display: table; + } +} +.display-none { + display: none; +} +@media screen and (max-width: 768px) { + .md\:display-none { + display: none; + } + .md\:display-none.display-block { + display: none; + } + .md\:display-none.display-inline { + display: none; + } + .md\:display-none.display-inline-block { + display: none; + } + .md\:display-none.display-table { + display: none; + } + .md\:display-none.display-none { + display: none; + } +} +.ml-0, +.mx-0 { + margin-left: 0em; +} +.mr-0, +.mx-0 { + margin-right: 0em; +} +.mt-0, +.my-0 { + margin-top: 0em; +} +.mb-0, +.my-0 { + margin-bottom: 0em; +} +.pl-0, +.px-0 { + padding-left: 0em; +} +.pr-0, +.px-0 { + padding-right: 0em; +} +.pt-0, +.py-0 { + padding-top: 0em; +} +.pb-0, +.py-0 { + padding-bottom: 0em; +} +.ml-1, +.mx-1 { + margin-left: 0.25em; +} +.mr-1, +.mx-1 { + margin-right: 0.25em; +} +.mt-1, +.my-1 { + margin-top: 0.25em; +} +.mb-1, +.my-1 { + margin-bottom: 0.25em; +} +.pl-1, +.px-1 { + padding-left: 0.25em; +} +.pr-1, +.px-1 { + padding-right: 0.25em; +} +.pt-1, +.py-1 { + padding-top: 0.25em; +} +.pb-1, +.py-1 { + padding-bottom: 0.25em; +} +.ml-2, +.mx-2 { + margin-left: 0.5em; +} +.mr-2, +.mx-2 { + margin-right: 0.5em; +} +.mt-2, +.my-2 { + margin-top: 0.5em; +} +.mb-2, +.my-2 { + margin-bottom: 0.5em; +} +.pl-2, +.px-2 { + padding-left: 0.5em; +} +.pr-2, +.px-2 { + padding-right: 0.5em; +} +.pt-2, +.py-2 { + padding-top: 0.5em; +} +.pb-2, +.py-2 { + padding-bottom: 0.5em; +} +.ml-3, +.mx-3 { + margin-left: 0.75em; +} +.mr-3, +.mx-3 { + margin-right: 0.75em; +} +.mt-3, +.my-3 { + margin-top: 0.75em; +} +.mb-3, +.my-3 { + margin-bottom: 0.75em; +} +.pl-3, +.px-3 { + padding-left: 0.75em; +} +.pr-3, +.px-3 { + padding-right: 0.75em; +} +.pt-3, +.py-3 { + padding-top: 0.75em; +} +.pb-3, +.py-3 { + padding-bottom: 0.75em; +} +.ml-4, +.mx-4 { + margin-left: 1em; +} +.mr-4, +.mx-4 { + margin-right: 1em; +} +.mt-4, +.my-4 { + margin-top: 1em; +} +.mb-4, +.my-4 { + margin-bottom: 1em; +} +.pl-4, +.px-4 { + padding-left: 1em; +} +.pr-4, +.px-4 { + padding-right: 1em; +} +.pt-4, +.py-4 { + padding-top: 1em; +} +.pb-4, +.py-4 { + padding-bottom: 1em; +} +.ml-5, +.mx-5 { + margin-left: 1.25em; +} +.mr-5, +.mx-5 { + margin-right: 1.25em; +} +.mt-5, +.my-5 { + margin-top: 1.25em; +} +.mb-5, +.my-5 { + margin-bottom: 1.25em; +} +.pl-5, +.px-5 { + padding-left: 1.25em; +} +.pr-5, +.px-5 { + padding-right: 1.25em; +} +.pt-5, +.py-5 { + padding-top: 1.25em; +} +.pb-5, +.py-5 { + padding-bottom: 1.25em; +} +.ml-6, +.mx-6 { + margin-left: 1.5em; +} +.mr-6, +.mx-6 { + margin-right: 1.5em; +} +.mt-6, +.my-6 { + margin-top: 1.5em; +} +.mb-6, +.my-6 { + margin-bottom: 1.5em; +} +.pl-6, +.px-6 { + padding-left: 1.5em; +} +.pr-6, +.px-6 { + padding-right: 1.5em; +} +.pt-6, +.py-6 { + padding-top: 1.5em; +} +.pb-6, +.py-6 { + padding-bottom: 1.5em; +} +.ml-7, +.mx-7 { + margin-left: 1.75em; +} +.mr-7, +.mx-7 { + margin-right: 1.75em; +} +.mt-7, +.my-7 { + margin-top: 1.75em; +} +.mb-7, +.my-7 { + margin-bottom: 1.75em; +} +.pl-7, +.px-7 { + padding-left: 1.75em; +} +.pr-7, +.px-7 { + padding-right: 1.75em; +} +.pt-7, +.py-7 { + padding-top: 1.75em; +} +.pb-7, +.py-7 { + padding-bottom: 1.75em; +} +.ml-8, +.mx-8 { + margin-left: 2em; +} +.mr-8, +.mx-8 { + margin-right: 2em; +} +.mt-8, +.my-8 { + margin-top: 2em; +} +.mb-8, +.my-8 { + margin-bottom: 2em; +} +.pl-8, +.px-8 { + padding-left: 2em; +} +.pr-8, +.px-8 { + padding-right: 2em; +} +.pt-8, +.py-8 { + padding-top: 2em; +} +.pb-8, +.py-8 { + padding-bottom: 2em; +} +.ml-9, +.mx-9 { + margin-left: 2.25em; +} +.mr-9, +.mx-9 { + margin-right: 2.25em; +} +.mt-9, +.my-9 { + margin-top: 2.25em; +} +.mb-9, +.my-9 { + margin-bottom: 2.25em; +} +.pl-9, +.px-9 { + padding-left: 2.25em; +} +.pr-9, +.px-9 { + padding-right: 2.25em; +} +.pt-9, +.py-9 { + padding-top: 2.25em; +} +.pb-9, +.py-9 { + padding-bottom: 2.25em; +} +.ml-10, +.mx-10 { + margin-left: 2.5em; +} +.mr-10, +.mx-10 { + margin-right: 2.5em; +} +.mt-10, +.my-10 { + margin-top: 2.5em; +} +.mb-10, +.my-10 { + margin-bottom: 2.5em; +} +.pl-10, +.px-10 { + padding-left: 2.5em; +} +.pr-10, +.px-10 { + padding-right: 2.5em; +} +.pt-10, +.py-10 { + padding-top: 2.5em; +} +.pb-10, +.py-10 { + padding-bottom: 2.5em; +} +.ml-auto, +.mx-auto { + margin-left: auto; +} +.mr-auto, +.mx-auto { + margin-right: auto; +} +.mt-auto, +.my-auto { + margin-top: auto; +} +.mb-auto, +.my-auto { + margin-bottom: auto; +} +.pl-auto, +.px-auto { + padding-left: auto; +} +.pr-auto, +.px-auto { + padding-right: auto; +} +.pt-auto, +.py-auto { + padding-top: auto; +} +.pb-auto, +.py-auto { + padding-bottom: auto; +} +.leading-3 { + line-height: 0.75em; +} +.leading-4 { + line-height: 1em; +} +.leading-5 { + line-height: 1.25em; +} +.leading-6 { + line-height: 1.5em; +} +.leading-7 { + line-height: 1.75em; +} +.leading-8 { + line-height: 2em; +} +.leading-9 { + line-height: 2.25em; +} +.leading-10 { + line-height: 2.5em; +} +.leading-none { + line-height: 1em; +} +.leading-tight { + line-height: 1.25em; +} +.leading-normal { + line-height: 1.5em; +} +.leading-relaxed { + line-height: 1.75em; +} +.fs-default { + font-size: 16px; +} +.fs-title { + font-size: 24px; +} +.fs-large { + font-size: 30px; +} +.fs-content { + font-size: 20px; +} +.fs-info { + font-size: 14px; +} +.fw-100 { + font-weight: 100; +} +.fw-200 { + font-weight: 200; +} +.fw-300 { + font-weight: 300; +} +.fw-400 { + font-weight: 400; +} +.fw-500 { + font-weight: 500; +} +.fw-600 { + font-weight: 600; +} +.fw-700 { + font-weight: 700; +} +.fw-800 { + font-weight: 800; +} +.fw-900 { + font-weight: 900; +} +.post p .warning-banner { + display: block; + color: #ff542d; + font-size: 24px; + text-indent: 0; + text-align: center; + margin: 2em 0 1.5em 0; +} +.post p .warning-banner a { + color: #333; +} +.post p .warning-banner a:hover { + color: #ff542d; +} +.post .text-left { + text-align: left; +} +.post .text-left + figcaption { + text-align: left; +} +@media screen and (max-width: 768px) { + .post .md\:text-left { + text-align: left; + } + .post .md\:text-left + figcaption { + text-align: left; + } + .post .md\:text-left.text-left { + text-align: left; + } + .post .md\:text-left.text-left + figcaption { + text-align: left; + } + .post .md\:text-left.text-right { + text-align: left; + } + .post .md\:text-left.text-right + figcaption { + text-align: left; + } + .post .md\:text-left.text-justify { + text-align: left; + } + .post .md\:text-left.text-justify + figcaption { + text-align: left; + } + .post .md\:text-left.text-center { + text-align: left; + } + .post .md\:text-left.text-center + figcaption { + text-align: left; + } +} +.post .text-right { + text-align: right; +} +.post .text-right + figcaption { + text-align: right; +} +@media screen and (max-width: 768px) { + .post .md\:text-right { + text-align: right; + } + .post .md\:text-right + figcaption { + text-align: right; + } + .post .md\:text-right.text-left { + text-align: right; + } + .post .md\:text-right.text-left + figcaption { + text-align: right; + } + .post .md\:text-right.text-right { + text-align: right; + } + .post .md\:text-right.text-right + figcaption { + text-align: right; + } + .post .md\:text-right.text-justify { + text-align: right; + } + .post .md\:text-right.text-justify + figcaption { + text-align: right; + } + .post .md\:text-right.text-center { + text-align: right; + } + .post .md\:text-right.text-center + figcaption { + text-align: right; + } +} +.post .text-justify { + text-align: justify; +} +.post .text-justify + figcaption { + text-align: justify; +} +@media screen and (max-width: 768px) { + .post .md\:text-justify { + text-align: justify; + } + .post .md\:text-justify + figcaption { + text-align: justify; + } + .post .md\:text-justify.text-left { + text-align: justify; + } + .post .md\:text-justify.text-left + figcaption { + text-align: justify; + } + .post .md\:text-justify.text-right { + text-align: justify; + } + .post .md\:text-justify.text-right + figcaption { + text-align: justify; + } + .post .md\:text-justify.text-justify { + text-align: justify; + } + .post .md\:text-justify.text-justify + figcaption { + text-align: justify; + } + .post .md\:text-justify.text-center { + text-align: justify; + } + .post .md\:text-justify.text-center + figcaption { + text-align: justify; + } +} +.post .text-center { + text-align: center; +} +.post .text-center + figcaption { + text-align: center; +} +@media screen and (max-width: 768px) { + .post .md\:text-center { + text-align: center; + } + .post .md\:text-center + figcaption { + text-align: center; + } + .post .md\:text-center.text-left { + text-align: center; + } + .post .md\:text-center.text-left + figcaption { + text-align: center; + } + .post .md\:text-center.text-right { + text-align: center; + } + .post .md\:text-center.text-right + figcaption { + text-align: center; + } + .post .md\:text-center.text-justify { + text-align: center; + } + .post .md\:text-center.text-justify + figcaption { + text-align: center; + } + .post .md\:text-center.text-center { + text-align: center; + } + .post .md\:text-center.text-center + figcaption { + text-align: center; + } +} +.post .overflow-hidden, +.post .overflow-x-hidden { + overflow-x: hidden; +} +.post .overflow-hidden, +.post .overflow-y-hidden { + overflow-y: hidden; +} +.post .overflow-auto, +.post .overflow-x-auto { + overflow-x: auto; +} +.post .overflow-auto, +.post .overflow-y-auto { + overflow-y: auto; +} +.post .overflow-scroll, +.post .overflow-x-scroll { + overflow-x: scroll; +} +.post .overflow-scroll, +.post .overflow-y-scroll { + overflow-y: scroll; +} diff --git a/css/images/banner.jpg b/css/images/banner.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b963e0641c416e6869291d95babaa8da7c3ad971 GIT binary patch literal 224710 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�j?iv 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ⅇ? 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 literal 0 HcmV?d00001 diff --git a/css/index.css b/css/index.css new file mode 100644 index 0000000..9be42da --- /dev/null +++ b/css/index.css @@ -0,0 +1,17 @@ +.content { + width: 73%; + float: right; +} +.content img { + max-width: 100%; + height: auto; + display: inline-block; + vertical-align: middle; +} +#index-content { + max-width: content-max-width; + margin: 0 auto; +} +#index-content .post-item + .post-item { + border-top: 1px solid; +} diff --git a/css/layout.css b/css/layout.css new file mode 100644 index 0000000..60d1253 --- /dev/null +++ b/css/layout.css @@ -0,0 +1,251 @@ +html { + font-size: default-font-size; + font-family: default-font-family; + box-sizing: border-box; + scroll-behavior: smooth; +} +body { + padding: 0; + margin: 0; + vertical-align: baseline; +} +* { + margin: 0px; + padding: 0px; + list-style: none; + text-decoration: none; + -webkit-user-select: none; + -ms-user-select: none; + -moz-user-select: none; + user-select: none; +} +img { + max-width: 100%; + height: auto; + display: inline-block; + vertical-align: middle; +} +del, +s { + text-decoration: line-through; +} +.page { + margin-top: 0px; +} +.page .head { + z-index: 9; + top: 0; + right: 0; + left: 0; + border-bottom: 1px solid; +} +@media screen and (max-width: 768px) { + .page .head { + position: fixed; + top: 0; + animation: showHead 0.4s forwards; + } + .page .head[data-show=false] { + animation: hideHead 0.4s forwards; + } + .about, + .post-item .post-item-head .post-item-title a, + .head-author-link { + font-weight: 400 !important; + } + .menu-nav, + #head-about { + display: none; + } + .post-widget { + width: 100%; + } + #bar-wrap-toggle { + display: inline-block; + } + #index-content { + width: 100%; + } + .page .main { + margin-top: 65px; + } + .menu-bar-head { + display: block; + position: fixed; + left: 0px; + top: 65px; + width: 100%; + border-top: 1px solid; + box-shadow: 0 5px 10px; + } + .menu-bar-head[data-show=false] { + display: none; + } + #post { + width: 100%; + } +@-moz-keyframes showHead { + 0% { + top: -65px; + } + 100% { + top: 0; + } +} +@-webkit-keyframes showHead { + 0% { + top: -65px; + } + 100% { + top: 0; + } +} +@-o-keyframes showHead { + 0% { + top: -65px; + } + 100% { + top: 0; + } +} +@keyframes showHead { + 0% { + top: -65px; + } + 100% { + top: 0; + } +} +@-moz-keyframes hideHead { + 0% { + top: 0; + } + 100% { + top: -65px; + } +} +@-webkit-keyframes hideHead { + 0% { + top: 0; + } + 100% { + top: -65px; + } +} +@-o-keyframes hideHead { + 0% { + top: 0; + } + 100% { + top: -65px; + } +} +@keyframes hideHead { + 0% { + top: 0; + } + 100% { + top: -65px; + } +} +} +.page .main { + margin-left: auto; + margin-right: auto; + width: 90%; + max-width: 1000px; +} +.main > .post { + width: 85%; + float: left; +} +.main > .post .article-entry p { + line-height: 1.5em; +} +.main > .post .article-entry a, +.main > .post .article-entry a:visited { + text-decoration: underline dashed; + text-decoration-thickness: 1px; + text-underline-position: under; +} +.article-tag-list-item { + display: inline; + margin-right: 0.5rem; +} +.article-tag-list-item:last-of-type { + margin-right: auto; +} +.article-entry li { + font-size: 20px; + line-height: 2rem; + text-indent: 2em; +} +.article-entry ul { + padding-bottom: 0.75em; +} +.article-entry ul li { + list-style: disc inside; +} +.article-entry ul ul li { + list-style: circle inside; + padding-left: 2em; +} +.article-entry ol { + padding-bottom: 0.75em; +} +.article-entry ol li { + list-style: decimal inside; +} +.page .footer-nav { + display: block; + margin: 30px auto 0px; + width: 100%; + float: left; +} +.page .footer-nav .footer { + margin: 0 auto; + padding: 20px 0; + border-top: 1px solid; + max-width: 1000px; + width: 90%; + overflow: hidden; +} +.page .footer-nav .footer .footer-links { + padding-top: 2em; + padding-bottom: 1em; + display: flex; + align-items: flex-start; + flex-wrap: wrap; +} +.page .footer-nav .footer .footer-links .footer-links-column { + width: 25%; +} +@media (max-width: 768px) { + .page .footer-nav .footer .footer-links .footer-links-column { + width: 50%; + } +} +.page .footer-nav .footer .footer-links .footer-links-column p { + padding-right: 1em; + padding-bottom: 1em; +} +.page .footer-nav .footer .icp { + margin-bottom: 10px; +} +.page .footer-nav .footer .icp .icp-text { + vertical-align: middle; +} +.page .back-top { + margin-right: 40px; + cursor: pointer; +} +.page .back-top .icon { + float: right; + font-size: 20px; + font-weight: 600; +} +.nav-icon { + display: inline-block; + width: 16px; + height: 16px; +} diff --git a/css/loading.css b/css/loading.css new file mode 100644 index 0000000..21a886e --- /dev/null +++ b/css/loading.css @@ -0,0 +1,77 @@ +.loading-wrapper { + display: flex; + justify-content: center; + align-content: center; + position: fixed; + width: 100%; + height: 100%; + align-items: center; +} +.loading-wrapper[data-loading=false] { + display: none; +} +.page[data-filter=true] { + filter: blur(2px); +} +.loading { + height: 20px; + margin: 0 auto; +} +.loading span { + display: inline-block; + width: 20px; + height: 100%; + margin-right: 6.666666666666667px; + border-radius: 50%; + animation: load 1.04s ease infinite; +} +.loading span:last-child { + margin-right: 0px; +} +.loading span:nth-child(1) { + animation-delay: 0.13s; +} +.loading span:nth-child(2) { + animation-delay: 0.26s; +} +.loading span:nth-child(3) { + animation-delay: 0.39s; +} +.loading span:nth-child(4) { + animation-delay: 0.52s; +} +.loading span:nth-child(5) { + animation-delay: 0.65s; +} +@-moz-keyframes load { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} +@-webkit-keyframes load { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} +@-o-keyframes load { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} +@keyframes load { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} diff --git a/css/main.css b/css/main.css new file mode 100644 index 0000000..30052fd --- /dev/null +++ b/css/main.css @@ -0,0 +1,2662 @@ +/* normalize.css v3.0.2 | MIT License | git.io/normalize */ +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + font-size: 2em; + margin: 0.67em 0; +} +mark { + background: #ff0; + color: #000; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +td, +th { + padding: 0; +} +::selection { + background: #262a30; + color: #fff; +} +body { + position: relative; + font-family: 'Lato', "PingFang SC", "Microsoft YaHei", sans-serif; + font-size: 14px; + line-height: 2; + color: #555; + background: #fff; +} +@media (max-width: 767px) { + body { + padding-right: 0 !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + body { + padding-right: 0 !important; + } +} +@media (min-width: 1600px) { + body { + font-size: 16px; + } +} +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + padding: 0; + font-weight: bold; + line-height: 1.5; + font-family: 'Lato', "PingFang SC", "Microsoft YaHei", sans-serif; +} +h2, +h3, +h4, +h5, +h6 { + margin: 20px 0 15px; +} +h1 { + font-size: 22px; +} +@media (max-width: 767px) { + h1 { + font-size: 18px; + } +} +h2 { + font-size: 20px; +} +@media (max-width: 767px) { + h2 { + font-size: 16px; + } +} +h3 { + font-size: 18px; +} +@media (max-width: 767px) { + h3 { + font-size: 14px; + } +} +h4 { + font-size: 16px; +} +@media (max-width: 767px) { + h4 { + font-size: 12px; + } +} +h5 { + font-size: 14px; +} +@media (max-width: 767px) { + h5 { + font-size: 10px; + } +} +h6 { + font-size: 12px; +} +@media (max-width: 767px) { + h6 { + font-size: 8px; + } +} +p { + margin: 0 0 20px 0; +} +a { + color: #555; + text-decoration: none; + outline: none; + border-bottom: 1px solid #999; + word-wrap: break-word; +} +a:hover { + color: #222; + border-bottom-color: #222; +} +blockquote { + margin: 0; + padding: 0; +} +img { + display: block; + margin: auto; + max-width: 100%; + height: auto; +} +hr { + margin: 40px 0; + height: 3px; + border: none; + background-color: #ddd; + background-image: repeating-linear-gradient(-45deg, #fff, #fff 4px, transparent 4px, transparent 8px); +} +blockquote { + padding: 0 15px; + color: #666; + border-left: 4px solid #ddd; +} +blockquote cite::before { + content: "-"; + padding: 0 5px; +} +dt { + font-weight: 700; +} +dd { + margin: 0; + padding: 0; +} +kbd { + border: 1px solid #ccc; + border-radius: 0.2em; + box-shadow: 0.1em 0.1em 0.2em rgba(0,0,0,0.1); + background-color: #f9f9f9; + font-family: inherit; + background-image: -webkit-linear-gradient(top, #eee, #fff, #eee); + padding: 0.1em 0.3em; + white-space: nowrap; +} +.text-left { + text-align: left; +} +.text-center { + text-align: center; +} +.text-right { + text-align: right; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.center-block { + display: block; + margin-left: auto; + margin-right: auto; +} +.clearfix:before, +.clearfix:after { + content: " "; + display: table; +} +.clearfix:after { + clear: both; +} +.pullquote { + width: 45%; +} +.pullquote.left { + float: left; + margin-left: 5px; + margin-right: 10px; +} +.pullquote.right { + float: right; + margin-left: 10px; + margin-right: 5px; +} +.affix.affix.affix { + position: fixed; +} +.translation { + margin-top: -20px; + font-size: 14px; + color: #999; +} +.scrollbar-measure { + width: 100px; + height: 100px; + overflow: scroll; + position: absolute; + top: -9999px; +} +.use-motion .motion-element { + opacity: 0; +} +table { + margin: 20px 0; + width: 100%; + border-collapse: collapse; + border-spacing: 0; + border: 1px solid #ddd; + font-size: 14px; + table-layout: fixed; + word-wrap: break-all; +} +table>tbody>tr:nth-of-type(odd) { + background-color: #f9f9f9; +} +table>tbody>tr:hover { + background-color: #f5f5f5; +} +caption, +th, +td { + padding: 8px; + text-align: left; + vertical-align: middle; + font-weight: normal; +} +th, +td { + border-bottom: 3px solid #ddd; + border-right: 1px solid #eee; +} +th { + padding-bottom: 10px; + font-weight: 700; +} +td { + border-bottom-width: 1px; +} +html, +body { + height: 100%; +} +.container { + position: relative; + min-height: 100%; +} +.header-inner { + margin: 0 auto; + padding: 100px 0 70px; + width: 700px; +} +@media (min-width: 1600px) { + .container .header-inner { + width: 900px; + } +} +.main { + padding-bottom: 150px; +} +.main-inner { + margin: 0 auto; + width: 700px; +} +@media (min-width: 1600px) { + .container .main-inner { + width: 900px; + } +} +.footer { + position: absolute; + left: 0; + bottom: 0; + width: 100%; + min-height: 50px; +} +.footer-inner { + box-sizing: border-box; + margin: 20px auto; + width: 700px; +} +@media (min-width: 1600px) { + .container .footer-inner { + width: 900px; + } +} +pre, +.highlight { + overflow: auto; + margin: 20px 0; + padding: 0; + font-size: 13px; + color: #4d4d4c; + background: #f7f7f7; + line-height: 1.6; +} +pre, +code { + font-family: consolas, Menlo, "PingFang SC", "Microsoft YaHei", monospace; +} +code { + padding: 2px 4px; + word-wrap: break-word; + color: #555; + background: #eee; + border-radius: 3px; + font-size: 13px; +} +pre { + padding: 10px; +} +pre code { + padding: 0; + color: #4d4d4c; + background: none; + text-shadow: none; +} +.highlight { + border-radius: 1px; +} +.highlight pre { + border: none; + margin: 0; + padding: 10px 0; +} +.highlight table { + margin: 0; + width: auto; + border: none; +} +.highlight td { + border: none; + padding: 0; +} +.highlight figcaption { + font-size: 1em; + color: #4d4d4c; + line-height: 1em; + margin-bottom: 1em; +} +.highlight figcaption:before, +.highlight figcaption:after { + content: " "; + display: table; +} +.highlight figcaption:after { + clear: both; +} +.highlight figcaption a { + float: right; + color: #4d4d4c; +} +.highlight figcaption a:hover { + border-bottom-color: #4d4d4c; +} +.highlight .gutter pre { + padding-left: 10px; + padding-right: 10px; + color: #869194; + text-align: right; + background-color: #eff2f3; +} +.highlight .code pre { + width: 100%; + padding-left: 10px; + padding-right: 10px; + background-color: #f7f7f7; +} +.highlight .line { + height: 20px; +} +.gutter { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.gist table { + width: auto; +} +.gist table td { + border: none; +} +pre .deletion { + background: #fdd; +} +pre .addition { + background: #dfd; +} +pre .meta { + color: #8959a8; +} +pre .comment { + color: #8e908c; +} +pre .variable, +pre .attribute, +pre .tag, +pre .regexp, +pre .ruby .constant, +pre .xml .tag .title, +pre .xml .pi, +pre .xml .doctype, +pre .html .doctype, +pre .css .id, +pre .css .class, +pre .css .pseudo { + color: #c82829; +} +pre .number, +pre .preprocessor, +pre .built_in, +pre .literal, +pre .params, +pre .constant, +pre .command { + color: #f5871f; +} +pre .ruby .class .title, +pre .css .rules .attribute, +pre .string, +pre .value, +pre .inheritance, +pre .header, +pre .ruby .symbol, +pre .xml .cdata, +pre .special, +pre .number, +pre .formula { + color: #718c00; +} +pre .title, +pre .css .hexcolor { + color: #3e999f; +} +pre .function, +pre .python .decorator, +pre .python .title, +pre .ruby .function .title, +pre .ruby .title .keyword, +pre .perl .sub, +pre .javascript .title, +pre .coffeescript .title { + color: #4271ae; +} +pre .keyword, +pre .javascript .function { + color: #8959a8; +} +.full-image.full-image.full-image.full-image { + border: none; + max-width: 100%; + width: auto; + margin: 20px auto 25px; +} +@media (min-width: 992px) { + .full-image.full-image.full-image.full-image { + max-width: none; + width: 110%; + margin: 25px -5%; + } +} +.blockquote-center, +.page-home .post-type-quote blockquote, +.page-post-detail .post-type-quote blockquote { + position: relative; + margin: 40px 0; + padding: 0; + border-left: none; + text-align: center; +} +.blockquote-center::before, +.page-home .post-type-quote blockquote::before, +.page-post-detail .post-type-quote blockquote::before, +.blockquote-center::after, +.page-home .post-type-quote blockquote::after, +.page-post-detail .post-type-quote blockquote::after { + position: absolute; + content: ' '; + display: block; + width: 100%; + height: 24px; + opacity: 0.2; + background-repeat: no-repeat; + background-position: 0 -6px; + background-size: 22px 22px; +} +.blockquote-center::before, +.page-home .post-type-quote blockquote::before, +.page-post-detail .post-type-quote blockquote::before { + top: -20px; + background-image: url("../images/quote-l.svg"); + border-top: 1px solid #ccc; +} +.blockquote-center::after, +.page-home .post-type-quote blockquote::after, +.page-post-detail .post-type-quote blockquote::after { + bottom: -20px; + background-image: url("../images/quote-r.svg"); + border-bottom: 1px solid #ccc; + background-position: 100% 8px; +} +.blockquote-center p, +.page-home .post-type-quote blockquote p, +.page-post-detail .post-type-quote blockquote p, +.blockquote-center div, +.page-home .post-type-quote blockquote div, +.page-post-detail .post-type-quote blockquote div { + text-align: center; +} +.post .post-body .group-picture img { + box-sizing: border-box; + padding: 0 3px; + border: none; +} +.post .group-picture-row { + overflow: hidden; + margin-top: 6px; +} +.post .group-picture-row:first-child { + margin-top: 0; +} +.post .group-picture-column { + float: left; +} +.page-post-detail .post-body .group-picture-column { + float: none; + margin-top: 10px; + width: auto !important; +} +.page-post-detail .post-body .group-picture-column img { + margin: 0 auto; +} +.page-archive .group-picture-container { + overflow: hidden; +} +.page-archive .group-picture-row { + float: left; +} +.page-archive .group-picture-row:first-child { + margin-top: 6px; +} +.page-archive .group-picture-column { + max-width: 150px; + max-height: 150px; +} +.post-body .note { + position: relative; + padding: 15px; + margin-bottom: 20px; + border: 1px solid #eee; + border-left-width: 5px; + border-radius: 3px; +} +.post-body .note h2, +.post-body .note h3, +.post-body .note h4, +.post-body .note h5, +.post-body .note h6 { + margin-top: 0; + margin-bottom: 0; + border-bottom: initial; + padding-top: 0 !important; +} +.post-body .note p:first-child, +.post-body .note ul:first-child, +.post-body .note ol:first-child, +.post-body .note table:first-child, +.post-body .note pre:first-child, +.post-body .note blockquote:first-child { + margin-top: 0; +} +.post-body .note p:last-child, +.post-body .note ul:last-child, +.post-body .note ol:last-child, +.post-body .note table:last-child, +.post-body .note pre:last-child, +.post-body .note blockquote:last-child { + margin-bottom: 0; +} +.post-body .note.default { + border-left-color: #777; +} +.post-body .note.default h2, +.post-body .note.default h3, +.post-body .note.default h4, +.post-body .note.default h5, +.post-body .note.default h6 { + color: #777; +} +.post-body .note.primary { + border-left-color: #6f42c1; +} +.post-body .note.primary h2, +.post-body .note.primary h3, +.post-body .note.primary h4, +.post-body .note.primary h5, +.post-body .note.primary h6 { + color: #6f42c1; +} +.post-body .note.info { + border-left-color: #428bca; +} +.post-body .note.info h2, +.post-body .note.info h3, +.post-body .note.info h4, +.post-body .note.info h5, +.post-body .note.info h6 { + color: #428bca; +} +.post-body .note.success { + border-left-color: #5cb85c; +} +.post-body .note.success h2, +.post-body .note.success h3, +.post-body .note.success h4, +.post-body .note.success h5, +.post-body .note.success h6 { + color: #5cb85c; +} +.post-body .note.warning { + border-left-color: #f0ad4e; +} +.post-body .note.warning h2, +.post-body .note.warning h3, +.post-body .note.warning h4, +.post-body .note.warning h5, +.post-body .note.warning h6 { + color: #f0ad4e; +} +.post-body .note.danger { + border-left-color: #d9534f; +} +.post-body .note.danger h2, +.post-body .note.danger h3, +.post-body .note.danger h4, +.post-body .note.danger h5, +.post-body .note.danger h6 { + color: #d9534f; +} +.post-body .label { + display: inline; + padding: 0 2px; + white-space: nowrap; +} +.post-body .label.default { + background-color: #f0f0f0; +} +.post-body .label.primary { + background-color: #efe6f7; +} +.post-body .label.info { + background-color: #e5f2f8; +} +.post-body .label.success { + background-color: #e7f4e9; +} +.post-body .label.warning { + background-color: #fcf6e1; +} +.post-body .label.danger { + background-color: #fae8eb; +} +.post-body .tabs { + position: relative; + display: block; + margin-bottom: 20px; + padding-top: 10px; +} +.post-body .tabs ul.nav-tabs { + margin: 0; + padding: 0; + display: flex; + margin-bottom: -1px; +} +@media (max-width: 413px) { + .post-body .tabs ul.nav-tabs { + display: block; + margin-bottom: 5px; + } +} +.post-body .tabs ul.nav-tabs li.tab { + list-style-type: none !important; + margin: 0 0.25em 0 0; + border-top: 3px solid transparent; + border-left: 1px solid transparent; + border-right: 1px solid transparent; +} +@media (max-width: 413px) { + .post-body .tabs ul.nav-tabs li.tab { + margin: initial; + border-top: 1px solid transparent; + border-left: 3px solid transparent; + border-right: 1px solid transparent; + border-bottom: 1px solid transparent; + } +} +.post-body .tabs ul.nav-tabs li.tab a { + outline: 0; + border-bottom: initial; + display: block; + line-height: 1.8em; + padding: 0.25em 0.75em; + transition-duration: 0.2s; + transition-timing-function: ease-out; + transition-delay: 0s; +} +.post-body .tabs ul.nav-tabs li.tab a i { + width: 1.285714285714286em; +} +.post-body .tabs ul.nav-tabs li.tab.active { + border-top: 3px solid #fc6423; + border-left: 1px solid #ddd; + border-right: 1px solid #ddd; + background-color: #fff; +} +@media (max-width: 413px) { + .post-body .tabs ul.nav-tabs li.tab.active { + border-top: 1px solid #ddd; + border-left: 3px solid #fc6423; + border-right: 1px solid #ddd; + border-bottom: 1px solid #ddd; + } +} +.post-body .tabs ul.nav-tabs li.tab.active a { + cursor: default; + color: #555; +} +.post-body .tabs .tab-content { + background-color: #fff; +} +.post-body .tabs .tab-content .tab-pane { + border: 1px solid #ddd; + padding: 20px 20px 0 20px; +} +.post-body .tabs .tab-content .tab-pane:not(.active) { + display: none !important; +} +.post-body .tabs .tab-content .tab-pane.active { + display: block !important; +} +.btn { + display: inline-block; + padding: 0 20px; + font-size: 14px; + color: #fff; + background: #222; + border: 2px solid #222; + text-decoration: none; + border-radius: 0; + transition-property: background-color; + transition-duration: 0.2s; + transition-timing-function: ease-in-out; + transition-delay: 0s; + line-height: 2; +} +.btn:hover { + border-color: #222; + color: #222; + background: #fff; +} +.btn +.btn { + margin: 0 0 8px 8px; +} +.btn .fa-fw { + width: 1.285714285714286em; + text-align: left; +} +.btn-bar { + display: block; + width: 22px; + height: 2px; + background: #555; + border-radius: 1px; +} +.btn-bar+.btn-bar { + margin-top: 4px; +} +.pagination { + margin: 120px 0 40px; + text-align: center; + border-top: 1px solid #eee; +} +.page-number-basic, +.pagination .prev, +.pagination .next, +.pagination .page-number, +.pagination .space { + display: inline-block; + position: relative; + top: -1px; + margin: 0 10px; + padding: 0 11px; +} +@media (max-width: 767px) { + .page-number-basic, + .pagination .prev, + .pagination .next, + .pagination .page-number, + .pagination .space { + margin: 0 5px; + } +} +.pagination .prev, +.pagination .next, +.pagination .page-number { + border-bottom: 0; + border-top: 1px solid #eee; + transition-property: border-color; + transition-duration: 0.2s; + transition-timing-function: ease-in-out; + transition-delay: 0s; +} +.pagination .prev:hover, +.pagination .next:hover, +.pagination .page-number:hover { + border-top-color: #222; +} +.pagination .space { + padding: 0; + margin: 0; +} +.pagination .prev { + margin-left: 0; +} +.pagination .next { + margin-right: 0; +} +.pagination .page-number.current { + color: #fff; + background: #ccc; + border-top-color: #ccc; +} +@media (max-width: 767px) { + .pagination { + border-top: none; + } + .pagination .prev, + .pagination .next, + .pagination .page-number { + margin-bottom: 10px; + border-top: 0; + border-bottom: 1px solid #eee; + padding: 0 10px; + } + .pagination .prev:hover, + .pagination .next:hover, + .pagination .page-number:hover { + border-bottom-color: #222; + } +} +.comments { + margin: 60px 20px 0; +} +.tag-cloud { + text-align: center; +} +.tag-cloud a { + display: inline-block; + margin: 10px; +} +.back-to-top { + box-sizing: border-box; + position: fixed; + bottom: -100px; + right: 30px; + z-index: 1050; + padding: 0 6px; + width: 24px; + background: #222; + font-size: 12px; + opacity: 1; + color: #fff; + cursor: pointer; + text-align: center; + -webkit-transform: translateZ(0); + transition-property: bottom; + transition-duration: 0.2s; + transition-timing-function: ease-in-out; + transition-delay: 0s; +} +@media (min-width: 768px) and (max-width: 991px) { + .back-to-top { + display: none !important; + } +} +@media (max-width: 767px) { + .back-to-top { + display: none !important; + } +} +.back-to-top.back-to-top-on { + bottom: 19px; +} +.header { + background: transparent; +} +.header-inner { + position: relative; +} +.headband { + height: 3px; + background: #222; +} +.site-meta { + margin: 0; + text-align: center; +} +@media (max-width: 767px) { + .site-meta { + text-align: center; + } +} +.brand { + position: relative; + display: inline-block; + padding: 0 40px; + color: #fff; + background: #222; + border-bottom: none; +} +.brand:hover { + color: #fff; +} +.logo { + display: inline-block; + margin-right: 5px; + line-height: 36px; + vertical-align: top; +} +.site-title { + display: inline-block; + vertical-align: top; + line-height: 36px; + font-size: 20px; + font-weight: normal; + font-family: 'Lato', "PingFang SC", "Microsoft YaHei", sans-serif; +} +.site-subtitle { + margin-top: 10px; + font-size: 13px; + color: #999; +} +.use-motion .brand { + opacity: 0; +} +.use-motion .logo, +.use-motion .site-title, +.use-motion .site-subtitle { + opacity: 0; + position: relative; + top: -10px; +} +.site-nav-toggle { + display: none; + position: absolute; + top: 10px; + left: 10px; +} +@media (max-width: 767px) { + .site-nav-toggle { + display: block; + } +} +.site-nav-toggle button { + margin-top: 2px; + padding: 9px 10px; + background: transparent; + border: none; +} +@media (max-width: 767px) { + .site-nav { + display: none; + margin: 0 -10px; + padding: 0 10px; + clear: both; + border-top: 1px solid #ddd; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .site-nav { + display: block !important; + } +} +@media (min-width: 992px) { + .site-nav { + display: block !important; + } +} +.menu { + margin-top: 20px; + padding-left: 0; + text-align: center; +} +.menu .menu-item { + display: inline-block; + margin: 0 10px; + list-style: none; +} +@media screen and (max-width: 767px) { + .menu .menu-item { + margin-top: 10px; + } +} +.menu .menu-item a { + display: block; + font-size: 13px; + line-height: inherit; + border-bottom: 1px solid transparent; + transition-property: border-color; + transition-duration: 0.2s; + transition-timing-function: ease-in-out; + transition-delay: 0s; +} +.menu .menu-item a:hover { + border-bottom-color: #222; +} +.menu .menu-item .fa { + margin-right: 5px; +} +.use-motion .menu-item { + opacity: 0; +} +.post-body { + font-family: 'Lato', "PingFang SC", "Microsoft YaHei", sans-serif; +} +@media (max-width: 767px) { + .post-body { + word-break: break-word; + } +} +.post-body .fancybox img { + display: block !important; + margin: 0 auto; + cursor: pointer; + cursor: zoom-in; + cursor: -webkit-zoom-in; +} +.post-body .image-caption, +.post-body .figure .caption { + margin: -20px auto 15px; + text-align: center; + font-size: 14px; + color: #999; + font-weight: bold; + line-height: 1; +} +.post-sticky-flag { + display: inline-block; + font-size: 16px; + -ms-transform: rotate(30deg); + -webkit-transform: rotate(30deg); + -moz-transform: rotate(30deg); + -ms-transform: rotate(30deg); + -o-transform: rotate(30deg); + transform: rotate(30deg); +} +.use-motion .post-block, +.use-motion .pagination, +.use-motion .comments { + opacity: 0; +} +.use-motion .post-header { + opacity: 0; +} +.use-motion .post-body { + opacity: 0; +} +.use-motion .collection-title { + opacity: 0; +} +.posts-expand { + padding-top: 40px; +} +@media (max-width: 767px) { + .posts-expand { + margin: 0 20px; + } + .post-body pre .gutter pre { + padding-right: 10px; + } + .post-body .highlight { + margin-left: 0px; + margin-right: 0px; + padding: 0; + } + .post-body .highlight .gutter pre { + padding-right: 10px; + } +} +@media (min-width: 992px) { + .posts-expand .post-body { + text-align: justify; + } +} +.posts-expand .post-body h2, +.posts-expand .post-body h3, +.posts-expand .post-body h4, +.posts-expand .post-body h5, +.posts-expand .post-body h6 { + padding-top: 10px; +} +.posts-expand .post-body h2 .header-anchor, +.posts-expand .post-body h3 .header-anchor, +.posts-expand .post-body h4 .header-anchor, +.posts-expand .post-body h5 .header-anchor, +.posts-expand .post-body h6 .header-anchor { + float: right; + margin-left: 10px; + color: #ccc; + border-bottom-style: none; + visibility: hidden; +} +.posts-expand .post-body h2 .header-anchor:hover, +.posts-expand .post-body h3 .header-anchor:hover, +.posts-expand .post-body h4 .header-anchor:hover, +.posts-expand .post-body h5 .header-anchor:hover, +.posts-expand .post-body h6 .header-anchor:hover { + color: inherit; +} +.posts-expand .post-body h2:hover .header-anchor, +.posts-expand .post-body h3:hover .header-anchor, +.posts-expand .post-body h4:hover .header-anchor, +.posts-expand .post-body h5:hover .header-anchor, +.posts-expand .post-body h6:hover .header-anchor { + visibility: visible; +} +.posts-expand .post-body ul li { + list-style: circle; +} +.posts-expand .post-body img { + box-sizing: border-box; + margin: auto; + padding: 3px; + border: 1px solid #ddd; +} +.posts-expand .post-body .fancybox img { + margin: 0 auto 25px; +} +@media (max-width: 767px) { + .posts-collapse { + margin: 0 20px; + } + .posts-collapse .post-title, + .posts-collapse .post-meta { + display: block; + width: auto; + text-align: left; + } +} +.posts-collapse { + position: relative; + z-index: 1010; + margin-left: 55px; +} +.posts-collapse::after { + content: " "; + position: absolute; + top: 20px; + left: 0; + margin-left: -2px; + width: 4px; + height: 100%; + background: #f5f5f5; + z-index: -1; +} +@media (max-width: 767px) { + .posts-collapse { + margin: 0 20px; + } +} +.posts-collapse .collection-title { + position: relative; + margin: 60px 0; +} +.posts-collapse .collection-title h1, +.posts-collapse .collection-title h2 { + margin-left: 20px; +} +.posts-collapse .collection-title small { + color: #bbb; + margin-left: 5px; +} +.posts-collapse .collection-title::before { + content: " "; + position: absolute; + left: 0; + top: 50%; + margin-left: -4px; + margin-top: -4px; + width: 8px; + height: 8px; + background: #bbb; + border-radius: 50%; +} +.posts-collapse .post { + margin: 30px 0; +} +.posts-collapse .post-header { + position: relative; + transition-duration: 0.2s; + transition-timing-function: ease-in-out; + transition-delay: 0s; + transition-property: border; + border-bottom: 1px dashed #ccc; +} +.posts-collapse .post-header::before { + content: " "; + position: absolute; + left: 0; + top: 12px; + width: 6px; + height: 6px; + margin-left: -4px; + background: #bbb; + border-radius: 50%; + border: 1px solid #fff; + transition-duration: 0.2s; + transition-timing-function: ease-in-out; + transition-delay: 0s; + transition-property: background; +} +.posts-collapse .post-header:hover { + border-bottom-color: #666; +} +.posts-collapse .post-header:hover::before { + background: #222; +} +.posts-collapse .post-meta { + position: absolute; + font-size: 12px; + left: 20px; + top: 5px; +} +.posts-collapse .post-comments-count { + display: none; +} +.posts-collapse .post-title { + margin-left: 60px; + font-size: 16px; + font-weight: normal; + line-height: inherit; +} +.posts-collapse .post-title::after { + margin-left: 3px; + opacity: 0.6; +} +.posts-collapse .post-title a { + color: #666; + border-bottom: none; +} +.page-home .post-type-quote .post-header, +.page-post-detail .post-type-quote .post-header, +.page-home .post-type-quote .post-tags, +.page-post-detail .post-type-quote .post-tags { + display: none; +} +.posts-expand .post-title { + text-align: center; + word-break: break-word; + font-weight: 400; +} +.posts-expand .post-title-link { + display: inline-block; + position: relative; + color: #555; + border-bottom: none; + line-height: 1.2; + vertical-align: top; +} +.posts-expand .post-title-link::before { + content: ""; + position: absolute; + width: 100%; + height: 2px; + bottom: 0; + left: 0; + background-color: #000; + visibility: hidden; + -webkit-transform: scaleX(0); + -moz-transform: scaleX(0); + -ms-transform: scaleX(0); + -o-transform: scaleX(0); + transform: scaleX(0); + transition-duration: 0.2s; + transition-timing-function: ease-in-out; + transition-delay: 0s; +} +.posts-expand .post-title-link:hover::before { + visibility: visible; + -webkit-transform: scaleX(1); + -moz-transform: scaleX(1); + -ms-transform: scaleX(1); + -o-transform: scaleX(1); + transform: scaleX(1); +} +.posts-expand .post-title-link .fa { + font-size: 16px; +} +.posts-expand .post-meta { + margin: 3px 0 60px 0; + color: #999; + font-family: 'Lato', "PingFang SC", "Microsoft YaHei", sans-serif; + font-size: 12px; + text-align: center; +} +.posts-expand .post-meta .post-category-list { + display: inline-block; + margin: 0; + padding: 3px; +} +.posts-expand .post-meta .post-category-list-link { + color: #999; +} +.posts-expand .post-meta .post-description { + font-size: 14px; + margin-top: 2px; +} +.post-meta-divider { + margin: 0 0.5em; +} +.post-meta-item-icon { + margin-right: 3px; +} +@media (min-width: 768px) and (max-width: 991px) { + .post-meta-item-icon { + display: inline-block; + } +} +@media (max-width: 767px) { + .post-meta-item-icon { + display: inline-block; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .post-meta-item-text { + display: none; + } +} +@media (max-width: 767px) { + .post-meta-item-text { + display: none; + } +} +@media (max-width: 767px) { + .posts-expand .post-comments-count { + display: none; + } +} +.post-button { + margin-top: 40px; +} +.posts-expand .post-tags { + margin-top: 40px; + text-align: center; +} +.posts-expand .post-tags a { + display: inline-block; + margin-right: 10px; + font-size: 13px; +} +.post-nav { + display: table; + margin-top: 15px; + width: 100%; + border-top: 1px solid #eee; +} +.post-nav-divider { + display: table-cell; + width: 10%; +} +.post-nav-item { + display: table-cell; + padding: 10px 0 0 0; + width: 45%; + vertical-align: top; +} +.post-nav-item a { + position: relative; + display: block; + line-height: 25px; + font-size: 14px; + color: #555; + border-bottom: none; +} +.post-nav-item a:hover { + color: #222; + border-bottom: none; +} +.post-nav-item a:active { + top: 2px; +} +.post-nav-item .fa { + position: absolute; + top: 8px; + left: 0; + font-size: 12px; +} +.post-nav-next a { + padding-left: 15px; +} +.post-nav-prev { + text-align: right; +} +.post-nav-prev a { + padding-right: 15px; +} +.post-nav-prev .fa { + right: 0; + left: auto; +} +.posts-expand .post-eof { + display: block; + margin: 80px auto 60px; + width: 8%; + height: 1px; + background: #ccc; + text-align: center; +} +.post:last-child .post-eof.post-eof.post-eof { + display: none; +} +.post-gallery { + display: table; + table-layout: fixed; + width: 100%; + border-collapse: separate; +} +.post-gallery-row { + display: table-row; +} +.post-gallery .post-gallery-img { + display: table-cell; + text-align: center; + vertical-align: middle; + border: none; +} +.post-gallery .post-gallery-img img { + max-width: 100%; + max-height: 100%; + border: none; +} +.fancybox-close, +.fancybox-close:hover { + border: none; +} +.rtl.post-body p, +.rtl.post-body a, +.rtl.post-body h1, +.rtl.post-body h2, +.rtl.post-body h3, +.rtl.post-body h4, +.rtl.post-body h5, +.rtl.post-body h6, +.rtl.post-body li, +.rtl.post-body ul, +.rtl.post-body ol { + direction: rtl; + font-family: UKIJ Ekran; +} +.rtl.post-title { + font-family: UKIJ Ekran; +} +.sidebar { + position: fixed; + right: 0; + top: 0; + bottom: 0; + width: 0; + z-index: 1040; + box-shadow: inset 0 2px 6px #000; + background: #222; + -webkit-transform: translateZ(0); +} +.sidebar a { + color: #999; + border-bottom-color: #555; +} +.sidebar a:hover { + color: #eee; +} +@media (min-width: 768px) and (max-width: 991px) { + .sidebar { + display: none !important; + } +} +@media (max-width: 767px) { + .sidebar { + display: none !important; + } +} +.sidebar-inner { + position: relative; + padding: 20px 10px; + color: #999; + text-align: center; +} +.site-overview-wrap { + overflow: hidden; +} +.site-overview { + overflow-y: auto; + overflow-x: hidden; +} +.sidebar-toggle { + position: fixed; + right: 30px; + bottom: 45px; + width: 14px; + height: 14px; + padding: 5px; + background: #222; + line-height: 0; + z-index: 1050; + cursor: pointer; + -webkit-transform: translateZ(0); +} +@media (min-width: 768px) and (max-width: 991px) { + .sidebar-toggle { + display: none !important; + } +} +@media (max-width: 767px) { + .sidebar-toggle { + display: none !important; + } +} +.sidebar-toggle-line { + position: relative; + display: inline-block; + vertical-align: top; + height: 2px; + width: 100%; + background: #fff; + margin-top: 3px; +} +.sidebar-toggle-line:first-child { + margin-top: 0; +} +.site-author-image { + display: block; + margin: 0 auto; + padding: 2px; + max-width: 96px; + height: auto; + border: 2px solid #333; +} +.site-author-name { + margin: 5px 0 0; + text-align: center; + color: #f5f5f5; + font-weight: normal; +} +.site-description { + margin-top: 5px; + text-align: center; + font-size: 14px; + color: #999; +} +.site-state { + overflow: hidden; + line-height: 1.4; + white-space: nowrap; + text-align: center; +} +.site-state-item { + display: inline-block; + padding: 0 15px; + border-left: 1px solid #333; +} +.site-state-item:first-child { + border-left: none; +} +.site-state-item a { + border-bottom: none; +} +.site-state-item-count { + display: block; + text-align: center; + color: inherit; + font-weight: 600; + font-size: 18px; +} +.site-state-item-name { + font-size: 13px; + color: inherit; +} +.feed-link { + margin-top: 20px; +} +.feed-link a { + display: inline-block; + padding: 0 15px; + color: #fc6423; + border: 1px solid #fc6423; + border-radius: 4px; +} +.feed-link a i { + color: #fc6423; + font-size: 14px; +} +.feed-link a:hover { + color: #fff; + background: #fc6423; +} +.feed-link a:hover i { + color: #fff; +} +.links-of-author { + margin-top: 20px; +} +.links-of-author a { + display: inline-block; + vertical-align: middle; + margin-right: 10px; + margin-bottom: 10px; + border-bottom-color: #555; + font-size: 13px; +} +.links-of-author a:before { + display: inline-block; + vertical-align: middle; + margin-right: 3px; + content: " "; + width: 4px; + height: 4px; + border-radius: 50%; + background: #26090b; +} +.links-of-blogroll { + font-size: 13px; +} +.links-of-blogroll-title { + margin-top: 20px; + font-size: 14px; + font-weight: 600; +} +.links-of-blogroll-list { + margin: 0; + padding: 0; + list-style: none; +} +.links-of-blogroll-item { + padding: 2px 10px; +} +.links-of-blogroll-item a { + max-width: 280px; + box-sizing: border-box; + display: inline-block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.sidebar-nav { + margin: 0 0 20px; + padding-left: 0; +} +.sidebar-nav li { + display: inline-block; + cursor: pointer; + border-bottom: 1px solid transparent; + font-size: 14px; + color: #555; +} +.sidebar-nav li:hover { + color: #f5f5f5; +} +.page-post-detail .sidebar-nav-toc { + padding: 0 5px; +} +.page-post-detail .sidebar-nav-overview { + margin-left: 10px; +} +.sidebar-nav .sidebar-nav-active { + color: #87daff; + border-bottom-color: #87daff; +} +.sidebar-nav .sidebar-nav-active:hover { + color: #87daff; +} +.sidebar-panel { + display: none; +} +.sidebar-panel-active { + display: block; +} +.post-toc-empty { + font-size: 14px; + color: #666; +} +.post-toc-wrap { + overflow: hidden; +} +.post-toc { + overflow: auto; +} +.post-toc ol { + margin: 0; + padding: 0 2px 5px 10px; + text-align: left; + list-style: none; + font-size: 14px; +} +.post-toc ol > ol { + padding-left: 0; +} +.post-toc ol a { + transition-duration: 0.2s; + transition-timing-function: ease-in-out; + transition-delay: 0s; + transition-property: all; + color: #999; + border-bottom-color: #555; +} +.post-toc ol a:hover { + color: #ccc; + border-bottom-color: #ccc; +} +.post-toc .nav-item { + overflow: hidden; + text-overflow: ellipsis; + text-align: justify; + white-space: nowrap; + line-height: 1.8; +} +.post-toc .nav .nav-child { + display: none; +} +.post-toc .nav .active > .nav-child { + display: block; +} +.post-toc .nav .active-current > .nav-child { + display: block; +} +.post-toc .nav .active-current > .nav-child > .nav-item { + display: block; +} +.post-toc .nav .active > a { + color: #87daff; + border-bottom-color: #87daff; +} +.post-toc .nav .active-current > a { + color: #87daff; +} +.post-toc .nav .active-current > a:hover { + color: #87daff; +} +.footer { + font-size: 14px; + color: #999; +} +.footer img { + border: none; +} +.footer-inner { + text-align: center; +} +.with-love { + display: inline-block; + margin: 0 5px; +} +.powered-by, +.theme-info { + display: inline-block; +} +.cc-license { + margin-top: 10px; + text-align: center; +} +.cc-license .cc-opacity { + opacity: 0.7; + border-bottom: none; +} +.cc-license .cc-opacity:hover { + opacity: 0.9; +} +.cc-license img { + display: inline-block; +} +.theme-next #ds-thread #ds-reset { + color: #555; +} +.theme-next #ds-thread #ds-reset .ds-replybox { + margin-bottom: 30px; +} +.theme-next #ds-thread #ds-reset .ds-replybox .ds-avatar, +.theme-next #ds-reset .ds-avatar img { + box-shadow: none; +} +.theme-next #ds-thread #ds-reset .ds-textarea-wrapper { + border-color: #c7d4e1; + background: none; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.theme-next #ds-thread #ds-reset .ds-textarea-wrapper textarea { + height: 60px; +} +.theme-next #ds-reset .ds-rounded-top { + border-radius: 0; +} +.theme-next #ds-thread #ds-reset .ds-post-toolbar { + box-sizing: border-box; + border: 1px solid #c7d4e1; + background: #f6f8fa; +} +.theme-next #ds-thread #ds-reset .ds-post-options { + height: 40px; + border: none; + background: none; +} +.theme-next #ds-thread #ds-reset .ds-toolbar-buttons { + top: 11px; +} +.theme-next #ds-thread #ds-reset .ds-sync { + top: 5px; +} +.theme-next #ds-thread #ds-reset .ds-post-button { + top: 4px; + right: 5px; + width: 90px; + height: 30px; + border: 1px solid #c5ced7; + border-radius: 3px; + background-image: linear-gradient(#fbfbfc, #f5f7f9); + color: #60676d; +} +.theme-next #ds-thread #ds-reset .ds-post-button:hover { + background-position: 0 -30px; + color: #60676d; +} +.theme-next #ds-thread #ds-reset .ds-comments-info { + padding: 10px 0; +} +.theme-next #ds-thread #ds-reset .ds-sort { + display: none; +} +.theme-next #ds-thread #ds-reset li.ds-tab a.ds-current { + border: none; + background: #f6f8fa; + color: #60676d; +} +.theme-next #ds-thread #ds-reset li.ds-tab a.ds-current:hover { + background-color: #e9f0f7; + color: #60676d; +} +.theme-next #ds-thread #ds-reset li.ds-tab a { + border-radius: 2px; + padding: 5px; +} +.theme-next #ds-thread #ds-reset .ds-login-buttons p { + color: #999; + line-height: 36px; +} +.theme-next #ds-thread #ds-reset .ds-login-buttons .ds-service-list li { + height: 28px; +} +.theme-next #ds-thread #ds-reset .ds-service-list a { + background: none; + padding: 5px; + border: 1px solid; + border-radius: 3px; + text-align: center; +} +.theme-next #ds-thread #ds-reset .ds-service-list a:hover { + color: #fff; + background: #666; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-weibo { + color: #fc9b00; + border-color: #fc9b00; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-weibo:hover { + background: #fc9b00; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-qq { + color: #60a3ec; + border-color: #60a3ec; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-qq:hover { + background: #60a3ec; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-renren { + color: #2e7ac4; + border-color: #2e7ac4; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-renren:hover { + background: #2e7ac4; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-douban { + color: #37994c; + border-color: #37994c; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-douban:hover { + background: #37994c; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-kaixin { + color: #fef20d; + border-color: #fef20d; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-kaixin:hover { + background: #fef20d; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-netease { + color: #f00; + border-color: #f00; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-netease:hover { + background: #f00; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-sohu { + color: #ffcb05; + border-color: #ffcb05; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-sohu:hover { + background: #ffcb05; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-baidu { + color: #2831e0; + border-color: #2831e0; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-baidu:hover { + background: #2831e0; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-google { + color: #166bec; + border-color: #166bec; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-google:hover { + background: #166bec; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-weixin { + color: #00ce0d; + border-color: #00ce0d; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-weixin:hover { + background: #00ce0d; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-more-services { + border: none; +} +.theme-next #ds-thread #ds-reset .ds-service-list .ds-more-services:hover { + background: none; +} +.theme-next #ds-reset .duoshuo-ua-admin { + display: inline-block; + color: #f00; +} +.theme-next #ds-reset .duoshuo-ua-platform, +.theme-next #ds-reset .duoshuo-ua-browser { + color: #ccc; +} +.theme-next #ds-reset .duoshuo-ua-platform .fa, +.theme-next #ds-reset .duoshuo-ua-browser .fa { + display: inline-block; + margin-right: 3px; +} +.theme-next #ds-reset .duoshuo-ua-separator { + display: inline-block; + margin-left: 5px; +} +.theme-next .this_ua { + background-color: #ccc !important; + border-radius: 4px; + padding: 0 5px !important; + margin: 1px 1px !important; + border: 1px solid #bbb !important; + color: #fff; + display: inline-block !important; +} +.theme-next .this_ua.admin { + background-color: #d9534f !important; + border-color: #d9534f !important; +} +.theme-next .this_ua.platform.iOS, +.theme-next .this_ua.platform.Mac, +.theme-next .this_ua.platform.Windows { + background-color: #39b3d7 !important; + border-color: #46b8da !important; +} +.theme-next .this_ua.platform.Linux { + background-color: #3a3a3a !important; + border-color: #1f1f1f !important; +} +.theme-next .this_ua.platform.Android { + background-color: #00c47d !important; + border-color: #01b171 !important; +} +.theme-next .this_ua.browser.Mobile, +.theme-next .this_ua.browser.Chrome { + background-color: #5cb85c !important; + border-color: #4cae4c !important; +} +.theme-next .this_ua.browser.Firefox { + background-color: #f0ad4e !important; + border-color: #eea236 !important; +} +.theme-next .this_ua.browser.Maxthon, +.theme-next .this_ua.browser.IE { + background-color: #428bca !important; + border-color: #357ebd !important; +} +.theme-next .this_ua.browser.baidu, +.theme-next .this_ua.browser.UCBrowser, +.theme-next .this_ua.browser.Opera { + background-color: #d9534f !important; + border-color: #d43f3a !important; +} +.theme-next .this_ua.browser.Android, +.theme-next .this_ua.browser.QQBrowser { + background-color: #78ace9 !important; + border-color: #4cae4c !important; +} +.post-spread { + margin-top: 20px; + text-align: center; +} +.jiathis_style { + display: inline-block; +} +.jiathis_style a { + border: none; +} +.fa { + font-family: FontAwesome !important; +} +.post-spread { + margin-top: 20px; + text-align: center; +} +.bdshare-slide-button-box a { + border: none; +} +.bdsharebuttonbox { + display: inline-block; +} +.bdsharebuttonbox a { + border: none; +} +.local-search-pop-overlay { + position: fixed; + width: 100%; + height: 100%; + top: 0; + left: 0; + z-index: 2080; + background-color: rgba(0,0,0,0.3); +} +.local-search-popup { + display: none; + position: fixed; + top: 10%; + left: 50%; + margin-left: -350px; + width: 700px; + height: 80%; + padding: 0; + background: #fff; + color: #333; + z-index: 9999; + border-radius: 5px; +} +@media (max-width: 767px) { + .local-search-popup { + padding: 0; + top: 0; + left: 0; + margin: 0; + width: 100%; + height: 100%; + border-radius: 0; + } +} +.local-search-popup ul.search-result-list { + padding: 0; + margin: 0 5px; +} +.local-search-popup p.search-result { + border-bottom: 1px dashed #ccc; + padding: 5px 0; +} +.local-search-popup a.search-result-title { + font-weight: bold; + font-size: 16px; +} +.local-search-popup .search-keyword { + border-bottom: 1px dashed #f00; + font-weight: bold; + color: #f00; +} +.local-search-popup .local-search-header { + padding: 5px; + height: 36px; + background: #f5f5f5; + border-top-left-radius: 5px; + border-top-right-radius: 5px; +} +.local-search-popup #local-search-result { + overflow: auto; + position: relative; + padding: 5px 25px; + height: calc(100% - 55px); +} +.local-search-popup .local-search-input-wrapper { + display: inline-block; + width: calc(100% - 90px); + height: 36px; + line-height: 36px; + padding: 0 5px; +} +.local-search-popup .local-search-input-wrapper input { + padding: 8px 0; + height: 20px; + display: block; + width: 100%; + outline: none; + border: none; + background: transparent; + vertical-align: middle; +} +.local-search-popup .search-icon, +.local-search-popup .popup-btn-close { + display: inline-block; + font-size: 18px; + color: #999; + height: 36px; + width: 18px; + padding-left: 10px; + padding-right: 10px; +} +.local-search-popup .search-icon { + float: left; +} +.local-search-popup .popup-btn-close { + border-left: 1px solid #eee; + float: right; + cursor: pointer; +} +.local-search-popup #no-result { + position: absolute; + left: 50%; + top: 50%; + -webkit-transform: translate(-50%, -50%); + -webkit-transform: translate(-50%, -50%); + -moz-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + -o-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + color: #ccc; +} +.site-uv, +.site-pv, +.page-pv { + display: inline-block; +} +.site-uv .busuanzi-value, +.site-pv .busuanzi-value, +.page-pv .busuanzi-value { + margin: 0 5px; +} +.site-uv { + margin-right: 10px; +} +.site-uv::after { + content: "|"; + padding-left: 10px; +} +.page-archive .archive-page-counter { + position: relative; + top: 3px; + left: 20px; +} +@media (max-width: 767px) { + .page-archive .archive-page-counter { + top: 5px; + } +} +.page-archive .posts-collapse .archive-move-on { + position: absolute; + top: 11px; + left: 0; + margin-left: -6px; + width: 10px; + height: 10px; + opacity: 0.5; + background: #555; + border: 1px solid #fff; + border-radius: 50%; +} +.category-all-page .category-all-title { + text-align: center; +} +.category-all-page .category-all { + margin-top: 20px; +} +.category-all-page .category-list { + margin: 0; + padding: 0; + list-style: none; +} +.category-all-page .category-list-item { + margin: 5px 10px; +} +.category-all-page .category-list-count { + color: #bbb; +} +.category-all-page .category-list-count:before { + display: inline; + content: " ("; +} +.category-all-page .category-list-count:after { + display: inline; + content: ") "; +} +.category-all-page .category-list-child { + padding-left: 10px; +} +#schedule ul#event-list { + padding-left: 30px; +} +#schedule ul#event-list hr { + margin: 20px 0 45px 0 !important; + background: #222; +} +#schedule ul#event-list hr:after { + display: inline-block; + content: 'NOW'; + background: #222; + color: #fff; + font-weight: bold; + text-align: right; + padding: 0 5px; +} +#schedule ul#event-list li.event { + margin: 20px 0px; + background: #f9f9f9; + padding-left: 10px; + min-height: 40px; +} +#schedule ul#event-list li.event h2.event-summary { + margin: 0; + padding-bottom: 3px; +} +#schedule ul#event-list li.event h2.event-summary:before { + display: inline-block; + font-family: FontAwesome; + font-size: 8px; + content: '\f111'; + vertical-align: middle; + margin-right: 25px; + color: #bbb; +} +#schedule ul#event-list li.event span.event-relative-time { + display: inline-block; + font-size: 12px; + font-weight: 400; + padding-left: 12px; + color: #bbb; +} +#schedule ul#event-list li.event span.event-details { + display: block; + color: #bbb; + margin-left: 56px; + padding-top: 3px; + padding-bottom: 6px; + text-indent: -24px; + line-height: 18px; +} +#schedule ul#event-list li.event span.event-details:before { + text-indent: 0; + display: inline-block; + width: 14px; + font-family: FontAwesome; + text-align: center; + margin-right: 9px; + color: #bbb; +} +#schedule ul#event-list li.event span.event-details.event-location:before { + content: '\f041'; +} +#schedule ul#event-list li.event span.event-details.event-duration:before { + content: '\f017'; +} +#schedule ul#event-list li.event-past { + background: #fcfcfc; +} +#schedule ul#event-list li.event-past > * { + opacity: 0.6; +} +#schedule ul#event-list li.event-past h2.event-summary { + color: #bbb; +} +#schedule ul#event-list li.event-past h2.event-summary:before { + color: #dfdfdf; +} +#schedule ul#event-list li.event-now { + background: #222; + color: #fff; + padding: 15px 0 15px 10px; +} +#schedule ul#event-list li.event-now h2.event-summary:before { + -webkit-transform: scale(1.2); + -moz-transform: scale(1.2); + -ms-transform: scale(1.2); + -o-transform: scale(1.2); + transform: scale(1.2); + color: #fff; + animation: dot-flash 1s alternate infinite ease-in-out; +} +#schedule ul#event-list li.event-now * { + color: #fff !important; +} +@-moz-keyframes dot-flash { + from { + opacity: 1; + -webkit-transform: scale(1.1); + -moz-transform: scale(1.1); + -ms-transform: scale(1.1); + -o-transform: scale(1.1); + transform: scale(1.1); + } + to { + opacity: 0; + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + } +} +@-webkit-keyframes dot-flash { + from { + opacity: 1; + -webkit-transform: scale(1.1); + -moz-transform: scale(1.1); + -ms-transform: scale(1.1); + -o-transform: scale(1.1); + transform: scale(1.1); + } + to { + opacity: 0; + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + } +} +@-o-keyframes dot-flash { + from { + opacity: 1; + -webkit-transform: scale(1.1); + -moz-transform: scale(1.1); + -ms-transform: scale(1.1); + -o-transform: scale(1.1); + transform: scale(1.1); + } + to { + opacity: 0; + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + } +} +@keyframes dot-flash { + from { + opacity: 1; + -webkit-transform: scale(1.1); + -moz-transform: scale(1.1); + -ms-transform: scale(1.1); + -o-transform: scale(1.1); + transform: scale(1.1); + } + to { + opacity: 0; + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + } +} +.page-post-detail .sidebar-toggle-line { + background: #87daff; +} +.page-post-detail .comments { + overflow: hidden; +} +@media (max-width: 767px) { + .header-inner, + .container .main-inner, + .footer-inner { + width: auto; + } +} +embed { + display: block; + margin: 0px auto 25px auto; +} +.custom-logo .site-meta-headline { + text-align: center; +} +.custom-logo .brand { + background: none; +} +.custom-logo .site-title { + margin: 10px auto 0; + font-size: 24px; + color: #222; +} +.custom-logo .site-title a { + border: none; +} +.custom-logo-image { + margin: 0 auto; + padding: 5px; + max-width: 150px; + background: #fff; +} +@media (max-width: 767px) { + .site-nav { + position: absolute; + left: 0; + top: 52px; + margin: 0; + width: 100%; + padding: 0; + background: #fff; + border-bottom: 1px solid #ddd; + z-index: 1030; + } +} +@media (max-width: 767px) { + .menu { + text-align: left; + } +} +@media (max-width: 767px) { + .menu .menu-item { + display: block; + margin: 0 10px; + vertical-align: top; + } +} +@media (max-width: 767px) { + .menu .menu-item br { + display: none; + } +} +@media (max-width: 767px) { + .menu .menu-item a { + padding: 5px 10px; + } +} +.menu .menu-item .fa { + margin-right: 0; +} +.site-search form { + display: none; +} +.links-of-blogroll-inline .links-of-blogroll-item { + display: inline-block; +} diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..52431c1 --- /dev/null +++ b/css/style.css @@ -0,0 +1,1256 @@ +@import url("https://fonts.googleapis.com/css2?family=Noto Sans SC&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=Noto Serif&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=Noto Serif SC&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=Raleway&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=Inconsolata&display=swap"); +@font-face { + font-family: 'icon'; + src: url("/fonts/icons.eot?9xf5m2"); + src: url("/fonts/icons.eot?9xf5m2#iefix") format('embedded-opentype'), url("/fonts/icons.ttf?9xf5m2") format('truetype'), url("/fonts/icons.woff?9xf5m2") format('woff'), url("/fonts/icons.svg?9xf5m2#icons") format('svg'); + font-weight: normal; + font-style: normal; + font-display: block; +} +.icon { + font-family: 'icon'; + font-style: normal; + color: #aaa; +} +.icon-clipboard:before, +.highlight table .clipboard-btn .icon:before { + content: '\e904'; +} +.icon-clipboard-check:before, +.highlight table .clipboard-btn[data-clicked=true] .icon:before { + content: '\e903'; +} +.icon-quote:before { + content: '\e905'; +} +.icon-chevron-bar-up:before { + content: '\e900'; +} +.icon-chevron-right:before { + content: '\e901'; +} +.icon-chevron-left:before { + content: '\e902'; +} +.pagination { + margin-top: 20px; + margin-bottom: 36px; +} +.pagination .nav-link { + display: flex; + flex-direction: row; + align-items: center; +} +.pagination .nav-link i { + margin-bottom: -2px; +} +.pagination .nav-link.prev { + float: left; +} +.pagination .nav-link.next { + float: right; +} +.archive-title { + max-width: 850px; + margin: 0.5em auto 1em auto; +} +.archives-wrap { + max-width: 850px; + margin: 0 auto; +} +.archives-wrap .archive-year { + font-size: 24px; + font-weight: 400; + color: #333; +} +.archives-wrap .archives-year-cont { + padding-top: 5px; +} +.archives-wrap .archives-year-cont .archive-item { + margin: 15px 0px; + padding-left: 0px; + transition: all linear 0.2s; +} +.archives-wrap .archives-year-cont .archive-item .archive-artDate { + color: #aaa; + font-size: 14px; + display: block; + float: left; + line-height: 25px; +} +.archives-wrap .archives-year-cont .archive-item .archive-arttitle { + display: block; + margin-left: 85px; +} +.archives-wrap .archives-year-cont .archive-item .archive-arttitle a { + color: #333; +} +.archives-wrap .archives-year-cont .archive-item:hover { + padding-left: 5px; +} +.archives-wrap .archives-year-cont .archive-item:hover .archive-arttitle a:hover { + color: #838383; +} +.archive-pagination { + max-width: 850px; + margin: 0 auto; + padding: 20px 0px 36px 0px; +} +.article-entry .article-more-link { + font-family: 'Noto Sans', 'Noto Sans SC'; + text-indent: 0; + font-size: 16px; + padding-top: 0; + padding-bottom: 5px; +} +.article-entry h1, +.article-entry h2, +.article-entry h3 { + padding: 1.5em 0 1em 0; + font-size: 24px; + font-weight: 600; +} +.article-entry h4 { + padding: 1.5em 0 0.75em 0; + font-size: 20px; + font-weight: 600; +} +.article-entry h5 { + padding: 1em 0 0.5em 0; + font-size: 20px; + font-weight: 400; +} +.article-entry h3 + h4, +.article-entry h4 + h5 { + padding-top: 0; +} +.article-entry>table, +.article-entry div>table { + line-height: 2em; + border-top: 2px solid; + border-bottom: 2px solid; + border-collapse: collapse; + border-color: #000; + margin-bottom: 1em; +} +.article-entry>table thead, +.article-entry div>table thead { + line-height: 3em; + border-bottom: 1px solid; + border-color: #000; +} +.article-entry>table thead th, +.article-entry div>table thead th { + padding: 0 0.5em; +} +.article-entry>table td, +.article-entry div>table td { + padding: 0.25em 0.5em; + white-space: nowrap; +} +.article-entry>table td:first-child, +.article-entry div>table td:first-child, +.article-entry>table th:first-child, +.article-entry div>table th:first-child { + padding-left: 1em; +} +.article-entry>table td:last-child, +.article-entry div>table td:last-child { + padding-right: 1em; +} +.article-entry .figure-container { + margin-top: 1em; +} +.article-entry .figure-container p { + text-indent: 0; +} +.article-entry .figure-container p img { + width: 80%; + margin-left: 10%; + text-align: center; +} +.article-entry figure { + margin-top: 1em; + margin-bottom: 1em; +} +.article-entry figure figcaption { + display: none; +} +.article-entry figure img { + width: 80%; + margin-left: 10%; + text-align: center; +} +.article-entry figure video { + width: 50%; + margin-left: 25%; + text-align: center; +} +.article-entry.condense .article-more-link { + font-size: 14px; +} +.article-entry.condense h1, +.article-entry.condense h2, +.article-entry.condense h3 { + font-size: 20px; +} +.article-entry.condense ul, +.article-entry.condense li { + font-size: 16px; +} +.post-item { + padding: 40px 0; + margin: auto; + font-family: 'Noto Serif', 'Noto Serif SC', serif; +} +.post-item .post-item-head .post-item-title { + margin: 0px 0px 10px; + font-size: 30px; + font-family: 'Noto Sans', 'Noto Sans SC'; +} +.post-item .post-item-head .post-item-title a { + position: relative; + display: inline-block; + vertical-align: middle; + overflow: hidden; + text-decoration: none; + font-weight: 200; + color: #333; +} +.post-item .post-item-datetag { + margin-bottom: 10px; + color: #aaa; + font-size: 16px; +} +.post-item .post-item-datetag .post-item-date { + display: inline-block; +} +.post-item .post-item-datetag .post-item-date .post-time { + font-family: 'Raleway', Georgia, 'Times New Roman', Times, serif; +} +.post-item .post-item-datetag .post-item-tag { + display: inline-block; + margin-left: 20px; + font-family: 'Noto Sans', 'Noto Sans SC'; +} +.post-item p { + line-height: 1.5em; + text-indent: 2em; + text-align: justify; + font-size: 20px; + font-family: 'Noto Serif', 'Noto Serif SC', sans-serif; + font-weight: 400; + word-break: break-word; + padding-top: 0.25em; + padding-bottom: 0.5em; +} +.post-item blockquote p { + text-indent: 0; + font-size: 20px; + color: #838383; +} +.post-item code { + color: #333; + vertical-align: middle; + padding: 3px 0.4em; + border-radius: 3px; +} +.post-item.condense { + padding: 10px 0; +} +.post-item.condense + .post-item { + padding-top: 0; +} +.post-item.condense .post-item-head .post-item-title { + font-size: 24px; +} +.post-item.condense .post-item-datetag { + font-size: 14px; +} +.post-item.condense p { + font-size: 16px; + padding-top: 2px; + padding-bottom: 5px; +} +.post { + padding: 40px 0; + margin: auto; + font-family: 'Noto Serif', 'Noto Serif SC', sans-serif; + counter-reset: table-num; + counter-reset: figure-num; +} +.post .post-head .post-title { + margin: 0px 0px 1em; + font-size: 30px; +} +.post .post-head .post-title a { + position: relative; + display: inline-block; + vertical-align: middle; + overflow: hidden; + font-weight: 400; +} +.post .post-datetag { + color: #aaa; + font-size: 14px; + margin-bottom: 10px; +} +.post .post-datetag .post-date { + display: inline-block; + margin-right: 10px; +} +.post .post-datetag .post-date .post-time { + font-family: 'Raleway', Georgia, 'Times New Roman', Times, serif; +} +.post .post-datetag .post-tag { + display: inline-block; + margin: 0 10px; +} +.post .post-datetag .post-tag a { + color: #aaa; + text-decoration: none; +} +.post .post-datetag .post-visit { + display: inline-block; + margin: 0 10px; +} +.post .post-word-count { + margin-bottom: 0.25em; +} +.post .post-cc { + color: #333; + font-size: 16px; + margin-bottom: 1.25em; +} +.post p { + line-height: 1.5em; + text-indent: 2em; + text-align: justify; + font-size: 20px; + font-family: 'Noto Serif', 'Noto Serif SC', sans-serif; + font-weight: 400; + word-break: break-word; + padding-top: 0.25em; + padding-bottom: 0.5em; +} +.post p code { + color: #333; + vertical-align: middle; + padding: 3px 0.4em; + border-radius: 3px; +} +.post blockquote { + padding-bottom: 0.5em; +} +.post blockquote p { + text-indent: 0; + font-size: 16px; + color: #838383; +} +.post blockquote p { + padding-left: 24px; + padding-right: 24px; +} +.post blockquote p:before { + content: '\e905'; + font-family: 'icon'; + font-style: normal; + color: #aaa; + font-size: 24px; + margin-left: -26.400000000000002px; + margin-right: 2.4px; +} +.post >table, +.post div>table { + min-width: 60%; + margin-top: 1.5em; + margin-bottom: 1em; + margin-left: auto; + margin-right: auto; +} +.post caption { + font-size: 16px; + font-weight: 600; + text-align: center; +} +.post figure figcaption { + font-size: 16px; + font-weight: 600; + text-align: center; + display: block; + margin: 0.5em auto 1.5em auto; + width: 80%; +} +.footer-msg a { + color: #aaa; + text-decoration: none; +} +.menu-bar-head { + display: none; + animation: showBlock 0.4s forwards; + z-index: 10; +} +.menu-bar-head[data-show=false] { + animation: hideBlock 0.4s forwards; + z-index: 10; + opacity: 1; + height: 150px; +} +.menu-bar-ul { + padding-left: 20px; + padding-right: 20px; + margin-top: 10px; + margin-bottom: 10px; +} +.menu-bar-ul .menu-bar-item.border { + border-top: 1px solid; + border-color: #eee; +} +.menu-bar-ul .menu-bar-item a { + color: #333; + font-size: 16px; + display: inline-block; + margin: 8px auto; + padding-left: 0px; +} +@-moz-keyframes showBlock { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@-webkit-keyframes showBlock { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@-o-keyframes showBlock { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes showBlock { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@-moz-keyframes hideBlock { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} +@-webkit-keyframes hideBlock { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} +@-o-keyframes hideBlock { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} +@keyframes hideBlock { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} +.head-header { + height: 65px; + line-height: 65px; + max-width: 1000px; + margin: 0 auto; + width: 90%; + display: flex; + align-items: center; + justify-content: space-between; +} +.head-author { + display: inline-block; +} +.head-author .head-author-link { + font-size: 24px; + font-weight: 200; + text-decoration: none; + color: #333; +} +.head-right .head-about { + display: inline-block; + margin-left: 30px; +} +.head-right .head-about .head-about-link { + text-decoration: none; + color: #666; +} +.head-right .bar-wrap { + display: none; + outline: none; + padding: 9px 10px; + background: transparent; + border: none; + -webkit-user-select: none; + -ms-user-select: none; + -moz-user-select: none; + user-select: none; + cursor: pointer; +} +.head-right .bar-wrap .bar { + display: block; + width: 22px; + height: 2px; + background-color: #666; + border-radius: 1px; +} +.head-right .bar-wrap .bar + .bar { + margin-top: 4px; +} +code, +.code, +.gutter, +pre { + padding: 7px; + font-size: 16px; + font-family: 'Inconsolata', 'monospace', 'Open Sans', 'Microsoft Yahei', sans-serif; + background-color: #eee; +} +.highlight { + margin: 1em 0; + overflow-x: auto; + box-shadow: 1px 1px 2px rgba(0,0,0,0.125); + border-radius: 5px; +} +.highlight table { + position: relative; + margin: 0 !important; +} +.highlight table .clipboard-btn { + position: absolute; + top: 0; + right: 0; + display: flex; + align-items: center; + justify-content: center; + width: 24px; + height: 24px; + padding: 0.25em; + margin: 10px 1em; + border-radius: 5px; + border-color: #aaa; + background-color: #fff; + cursor: pointer; +} +@media (max-width: 768px) { + .highlight table .clipboard-btn { + display: none; + } +} +.highlight table .clipboard-btn .icon:before { + font-size: 20px; +} +.highlight table .clipboard-btn:hover { + background-color: #aaa; +} +.highlight table .clipboard-btn:hover i { + color: #333; +} +.highlight table .code pre { + margin: 0; +} +.highlight .gutter { + width: 10px; + text-align: right; + color: #a0a1a7; + display: none; +} +.highlight .gutter pre { + margin: 0; +} +.highlight .line { + line-height: 1.45em; +} +.highlight table, +.highlight tr { + margin: 0; + padding: 0; + width: 100%; + border-collapse: collapse; +} +.highlight .code .comment, +.highlight .code .quote { + color: #a0a1a7; +} +.highlight .code .keyword, +.highlight .code .selector-tag, +.highlight .code .addition { + color: #a626a4; +} +.highlight .code .number { + color: #986801; +} +.highlight .code .string, +.highlight .code .meta .meta-string, +.highlight .code .literal, +.highlight .code .doctag, +.highlight .code .regexp { + color: #50a14f; +} +.highlight .code .title, +.highlight .code .section, +.highlight .code .name, +.highlight .code .selector-id, +.highlight .code .selector-class { + color: #4078f2; +} +.highlight .code .attribute, +.highlight .code .attr, +.highlight .code .variable, +.highlight .code .template-variable, +.highlight .code .class .title, +.highlight .code .type { + color: #c18401; +} +.highlight .code .symbol, +.highlight .code .bullet, +.highlight .code .subst, +.highlight .code .meta, +.highlight .code .meta .keyword, +.highlight .code .selector-attr, +.highlight .code .selector-pseudo, +.highlight .code .link { + color: #c18401; +} +.highlight .code .built_in, +.highlight .code .deletion { + color: #9b5656; +} +.menu-nav { + float: left; + width: 19%; + padding-top: 40px; + color: #666; +} +.menu-nav .menu-nav-item { + color: #aaa; + font-size: 14px; +} +.menu-nav .menu-nav-item .menu-nav-item-tit { + border-bottom: 1px solid; + border-color: #aaa; +} +.menu-nav .menu-nav-item .menu-nav-item-tit a { + color: #333; + font-size: 16px; +} +.menu-nav div.menu-nav-item:not(:first-of-type) { + margin-top: 2.5em; +} +.menu-nav-item-cont { + margin-top: 0.75em; +} +.menu-nav-item-cont .menu-nav-item { + line-height: 1.25em; + white-space: normal; + padding-bottom: 0.75em; + word-wrap: break-word; +} +.menu-nav-item-cont .menu-nav-item a { + color: #333; +} +.menu-nav-item-cont .menu-nav-item.empty { + color: #666; +} +.menu-nav-item-cont.archives .archive-list-item { + height: 2em; + line-height: 2em; +} +.menu-nav-item-cont.archives .archive-list-item a { + color: #333; +} +.menu-nav-item-cont.tags .tag-list-item { + display: inline-block; + padding: 0px 10px 7px 0px; +} +.menu-nav-item-cont.tags .tag-list-item a { + color: #333; +} +.menu-nav-item-cont.tags .tag-list-item .tag-list-count { + vertical-align: super; + font-size: 0.6em; + margin-top: -0.5em; + color: #666; +} +.post-widget { + color: #aaa; + font-size: 14px; + padding-top: 1em; + padding-bottom: 3em; + width: 60%; +} +.post-widget .post-toc-toggle { + color: #333; + font-size: 16px; + font-size: 14px; +} +.post-widget .post-toc-wrap { + max-height: 9.25em; + margin-bottom: 1em; + overflow: hidden; +} +.post-widget .post-toc-wrap h4 { + padding-bottom: 0.25em; + margin-bottom: 0.75em; + border-bottom: 1px solid; + border-color: #eee; + color: #666; +} +.post-widget .post-toc-wrap .post-toc .post-toc-item { + line-height: 1.75em; + margin-left: 1em; + text-indent: -1em; + width: 100%; + white-space: normal; +} +#post-toc { + animation: showToc 1s forwards; +} +#post-toc[data-expand=false] { + animation: hideToc 1s forwards; +} +@-moz-keyframes showToc { + 0% { + max-height: 2000px; + } + 100% { + max-height: 9.25em; + } +} +@-webkit-keyframes showToc { + 0% { + max-height: 2000px; + } + 100% { + max-height: 9.25em; + } +} +@-o-keyframes showToc { + 0% { + max-height: 2000px; + } + 100% { + max-height: 9.25em; + } +} +@keyframes showToc { + 0% { + max-height: 2000px; + } + 100% { + max-height: 9.25em; + } +} +@-moz-keyframes hideToc { + 0% { + max-height: 9.25em; + } + 100% { + max-height: 2000px; + } +} +@-webkit-keyframes hideToc { + 0% { + max-height: 9.25em; + } + 100% { + max-height: 2000px; + } +} +@-o-keyframes hideToc { + 0% { + max-height: 9.25em; + } + 100% { + max-height: 2000px; + } +} +@keyframes hideToc { + 0% { + max-height: 9.25em; + } + 100% { + max-height: 2000px; + } +} +.loading-wrapper { + display: flex; + justify-content: center; + align-content: center; + position: fixed; + width: 100%; + height: 100%; + align-items: center; +} +.loading-wrapper[data-loading=false] { + display: none; +} +.page[data-filter=true] { + filter: blur(2px); +} +.loading { + height: 20px; + margin: 0 auto; +} +.loading span { + display: inline-block; + width: 20px; + height: 100%; + margin-right: 6.666666666666667px; + border-radius: 50%; + background-color: #aaa; + animation: load 1.04s ease infinite; +} +.loading span:last-child { + margin-right: 0px; +} +.loading span:nth-child(1) { + animation-delay: 0.13s; +} +.loading span:nth-child(2) { + animation-delay: 0.26s; +} +.loading span:nth-child(3) { + animation-delay: 0.39s; +} +.loading span:nth-child(4) { + animation-delay: 0.52s; +} +.loading span:nth-child(5) { + animation-delay: 0.65s; +} +@-moz-keyframes load { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} +@-webkit-keyframes load { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} +@-o-keyframes load { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} +@keyframes load { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} +html { + font-size: 16px; + font-family: 'Noto Sans', 'Noto Sans SC'; + box-sizing: border-box; + background-color: #fff; + scroll-behavior: smooth; +} +body { + padding: 0; + margin: 0; + color: #333; + vertical-align: baseline; +} +* { + margin: 0px; + padding: 0px; + list-style: none; + text-decoration: none; + -webkit-user-select: none; + -ms-user-select: none; + -moz-user-select: none; + user-select: none; +} +a, +a:visited { + color: #aaa; +} +a:hover { + color: #666; +} +img { + max-width: 100%; + height: auto; + display: inline-block; + vertical-align: middle; +} +del, +s { + text-decoration: line-through; +} +.page { + margin-top: 0px; +} +.page .head { + z-index: 9; + top: 0; + right: 0; + left: 0; + border-bottom: 1px solid; + border-color: #ccc; + background-color: #fff; +} +@media screen and (max-width: 768px) { + .page .head { + position: fixed; + top: 0; + animation: showHead 0.4s forwards; + } + .page .head[data-show=false] { + animation: hideHead 0.4s forwards; + } + .about, + .post-item .post-item-head .post-item-title a, + .head-author-link { + font-weight: 400 !important; + } + .menu-nav, + #head-about { + display: none; + } + .post-widget { + width: 100%; + } + #bar-wrap-toggle { + display: inline-block; + } + #index-content { + width: 100%; + } + .page .main { + margin-top: 65px; + } + .menu-bar-head { + display: block; + position: fixed; + left: 0px; + top: 65px; + background-color: #fff; + width: 100%; + border-top: 1px solid; + border-color: #eee; + box-shadow: 0 5px 10px; + color: #eee; + } + .menu-bar-head[data-show=false] { + display: none; + } + #post { + width: 100%; + } +@-moz-keyframes showHead { + 0% { + top: -65px; + } + 100% { + top: 0; + } +} +@-webkit-keyframes showHead { + 0% { + top: -65px; + } + 100% { + top: 0; + } +} +@-o-keyframes showHead { + 0% { + top: -65px; + } + 100% { + top: 0; + } +} +@keyframes showHead { + 0% { + top: -65px; + } + 100% { + top: 0; + } +} +@-moz-keyframes hideHead { + 0% { + top: 0; + } + 100% { + top: -65px; + } +} +@-webkit-keyframes hideHead { + 0% { + top: 0; + } + 100% { + top: -65px; + } +} +@-o-keyframes hideHead { + 0% { + top: 0; + } + 100% { + top: -65px; + } +} +@keyframes hideHead { + 0% { + top: 0; + } + 100% { + top: -65px; + } +} +} +.page .main { + margin-left: auto; + margin-right: auto; + width: 90%; + max-width: 1000px; +} +.main > .post { + width: 85%; + float: left; +} +.main > .post .article-entry p { + line-height: 1.5em; +} +.main > .post .article-entry a, +.main > .post .article-entry a:visited { + text-decoration: underline dashed; + text-decoration-thickness: 1px; + text-underline-position: under; + text-decoration-color: #666; + color: #333; +} +.main > .post .article-entry a:hover { + color: #666; +} +.article-tag-list-item { + display: inline; + margin-right: 0.5rem; +} +.article-tag-list-item:last-of-type { + margin-right: auto; +} +.article-entry li { + font-size: 20px; + line-height: 2rem; + text-indent: 2em; +} +.article-entry ul { + padding-bottom: 0.75em; +} +.article-entry ul li { + list-style: disc inside; +} +.article-entry ul ul li { + list-style: circle inside; + padding-left: 2em; +} +.article-entry ol { + padding-bottom: 0.75em; +} +.article-entry ol li { + list-style: decimal inside; +} +.page .footer-nav { + display: block; + margin: 30px auto 0px; + width: 100%; + float: left; +} +.page .footer-nav .footer { + color: #aaa; + font-size: 14px; + margin: 0 auto; + padding: 20px 0; + border-top: 1px solid; + border-color: border-color; + max-width: 1000px; + width: 90%; + overflow: hidden; +} +.page .footer-nav .footer .footer-links { + padding-top: 2em; + padding-bottom: 1em; + display: flex; + align-items: flex-start; + flex-wrap: wrap; +} +.page .footer-nav .footer .footer-links .footer-links-column { + width: 25%; +} +@media (max-width: 768px) { + .page .footer-nav .footer .footer-links .footer-links-column { + width: 50%; + } +} +.page .footer-nav .footer .footer-links .footer-links-column p { + padding-right: 1em; + padding-bottom: 1em; +} +.page .footer-nav .footer .icp { + margin-bottom: 10px; +} +.page .footer-nav .footer .icp .icp-text { + vertical-align: middle; +} +.page .back-top { + margin-right: 40px; + cursor: pointer; +} +.page .back-top .icon { + float: right; + font-size: 20px; + font-weight: 600; +} +.page .back-top .icon:hover { + color: #666; +} +.nav-icon { + display: inline-block; + width: 16px; + height: 16px; +} +.content { + width: 73%; + float: right; +} +.content img { + max-width: 100%; + height: auto; + display: inline-block; + vertical-align: middle; +} +#index-content { + max-width: 850px; + margin: 0 auto; +} +#index-content .post-item + .post-item { + border-top: 1px solid; + border-color: #eee; +} +.tag-title { + max-width: 850px; + margin: 0.5em auto 0.5em auto; +} +.tags-wrap { + max-width: 850px; + margin: 0 auto; + color: #333; +} +.tags-wrap .tags { + padding-bottom: 0.5em; +} +.tags-wrap .tags a { + color: #aaa; + font-size: 16px; + padding-right: 10px; + line-height: 25px; + display: inline-block; +} +.tags-wrap .tags a:hover { + color: #333; +} +.tags-wrap .one-tag-list .tag-text { + margin: 1em 0 0.5em 0; + font-size: 24px; + color: #333; +} +.tags-wrap .one-tag-list .post-preview { + margin-bottom: 0.5em; +} +.tags-wrap .one-tag-list .post-preview .tag-item-date { + display: block; + float: left; + color: #aaa; +} +.tags-wrap .one-tag-list .post-preview .post-title { + display: block; + text-indent: 2em; + color: #333; +} +.category { + max-width: 850px; + margin: 0 auto; +} +.category .signature { + color: #aaa; + font-size: 16px; + width: 100%; + text-align: left; + overflow: hidden; + padding: 40px 0 20px 0; +} +.category h1 { + padding: 1em 0 0.5em 0; + font-weight: 600; + font-size: 30px; +} +.about { + color: #333; + font-size: 16px; + margin-top: 30px; + line-height: 20px; + font-weight: 200; +} +.about img { + width: 100%; +} +.csl-bib-body .csl-entry { + display: grid; + grid-template-columns: 60px auto; + margin-bottom: 1em; +} +.csl-bib-body .csl-entry .csl-right-inline { + text-align: justify; + word-break: break-word; +} diff --git a/css/tags.css b/css/tags.css new file mode 100644 index 0000000..bebe360 --- /dev/null +++ b/css/tags.css @@ -0,0 +1,31 @@ +.tag-title { + max-width: content-max-width; + margin: 0.5em auto 0.5em auto; +} +.tags-wrap { + max-width: content-max-width; + margin: 0 auto; +} +.tags-wrap .tags { + padding-bottom: 0.5em; +} +.tags-wrap .tags a { + padding-right: 10px; + line-height: 25px; + display: inline-block; +} +.tags-wrap .one-tag-list .tag-text { + margin: 1em 0 0.5em 0; + font-size: title-font-size; +} +.tags-wrap .one-tag-list .post-preview { + margin-bottom: 0.5em; +} +.tags-wrap .one-tag-list .post-preview .tag-item-date { + display: block; + float: left; +} +.tags-wrap .one-tag-list .post-preview .post-title { + display: block; + text-indent: 2em; +} diff --git a/fancybox/jquery.fancybox.min.css b/fancybox/jquery.fancybox.min.css new file mode 100644 index 0000000..7cc60b2 --- /dev/null +++ b/fancybox/jquery.fancybox.min.css @@ -0,0 +1 @@ +body.compensate-for-scrollbar{overflow:hidden}.fancybox-active{height:auto}.fancybox-is-hidden{left:-9999px;margin:0;position:absolute!important;top:-9999px;visibility:hidden}.fancybox-container{-webkit-backface-visibility:hidden;height:100%;left:0;outline:none;position:fixed;-webkit-tap-highlight-color:transparent;top:0;-ms-touch-action:manipulation;touch-action:manipulation;transform:translateZ(0);width:100%;z-index:99992}.fancybox-container *{box-sizing:border-box}.fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-stage{bottom:0;left:0;position:absolute;right:0;top:0}.fancybox-outer{-webkit-overflow-scrolling:touch;overflow-y:auto}.fancybox-bg{background:#1e1e1e;opacity:0;transition-duration:inherit;transition-property:opacity;transition-timing-function:cubic-bezier(.47,0,.74,.71)}.fancybox-is-open .fancybox-bg{opacity:.9;transition-timing-function:cubic-bezier(.22,.61,.36,1)}.fancybox-caption,.fancybox-infobar,.fancybox-navigation .fancybox-button,.fancybox-toolbar{direction:ltr;opacity:0;position:absolute;transition:opacity .25s ease,visibility 0s ease .25s;visibility:hidden;z-index:99997}.fancybox-show-caption .fancybox-caption,.fancybox-show-infobar .fancybox-infobar,.fancybox-show-nav .fancybox-navigation .fancybox-button,.fancybox-show-toolbar .fancybox-toolbar{opacity:1;transition:opacity .25s ease 0s,visibility 0s ease 0s;visibility:visible}.fancybox-infobar{color:#ccc;font-size:13px;-webkit-font-smoothing:subpixel-antialiased;height:44px;left:0;line-height:44px;min-width:44px;mix-blend-mode:difference;padding:0 10px;pointer-events:none;top:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fancybox-toolbar{right:0;top:0}.fancybox-stage{direction:ltr;overflow:visible;transform:translateZ(0);z-index:99994}.fancybox-is-open .fancybox-stage{overflow:hidden}.fancybox-slide{-webkit-backface-visibility:hidden;display:none;height:100%;left:0;outline:none;overflow:auto;-webkit-overflow-scrolling:touch;padding:44px;position:absolute;text-align:center;top:0;transition-property:transform,opacity;white-space:normal;width:100%;z-index:99994}.fancybox-slide:before{content:"";display:inline-block;font-size:0;height:100%;vertical-align:middle;width:0}.fancybox-is-sliding .fancybox-slide,.fancybox-slide--current,.fancybox-slide--next,.fancybox-slide--previous{display:block}.fancybox-slide--image{overflow:hidden;padding:44px 0}.fancybox-slide--image:before{display:none}.fancybox-slide--html{padding:6px}.fancybox-content{background:#fff;display:inline-block;margin:0;max-width:100%;overflow:auto;-webkit-overflow-scrolling:touch;padding:44px;position:relative;text-align:left;vertical-align:middle}.fancybox-slide--image .fancybox-content{animation-timing-function:cubic-bezier(.5,0,.14,1);-webkit-backface-visibility:hidden;background:transparent;background-repeat:no-repeat;background-size:100% 100%;left:0;max-width:none;overflow:visible;padding:0;position:absolute;top:0;transform-origin:top left;transition-property:transform,opacity;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:99995}.fancybox-can-zoomOut .fancybox-content{cursor:zoom-out}.fancybox-can-zoomIn .fancybox-content{cursor:zoom-in}.fancybox-can-pan .fancybox-content,.fancybox-can-swipe .fancybox-content{cursor:grab}.fancybox-is-grabbing .fancybox-content{cursor:grabbing}.fancybox-container [data-selectable=true]{cursor:text}.fancybox-image,.fancybox-spaceball{background:transparent;border:0;height:100%;left:0;margin:0;max-height:none;max-width:none;padding:0;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.fancybox-spaceball{z-index:1}.fancybox-slide--iframe .fancybox-content,.fancybox-slide--map .fancybox-content,.fancybox-slide--pdf .fancybox-content,.fancybox-slide--video .fancybox-content{height:100%;overflow:visible;padding:0;width:100%}.fancybox-slide--video .fancybox-content{background:#000}.fancybox-slide--map .fancybox-content{background:#e5e3df}.fancybox-slide--iframe .fancybox-content{background:#fff}.fancybox-iframe,.fancybox-video{background:transparent;border:0;display:block;height:100%;margin:0;overflow:hidden;padding:0;width:100%}.fancybox-iframe{left:0;position:absolute;top:0}.fancybox-error{background:#fff;cursor:default;max-width:400px;padding:40px;width:100%}.fancybox-error p{color:#444;font-size:16px;line-height:20px;margin:0;padding:0}.fancybox-button{background:rgba(30,30,30,.6);border:0;border-radius:0;box-shadow:none;cursor:pointer;display:inline-block;height:44px;margin:0;padding:10px;position:relative;transition:color .2s;vertical-align:top;visibility:inherit;width:44px}.fancybox-button,.fancybox-button:link,.fancybox-button:visited{color:#ccc}.fancybox-button:hover{color:#fff}.fancybox-button:focus{outline:none}.fancybox-button.fancybox-focus{outline:1px dotted}.fancybox-button[disabled],.fancybox-button[disabled]:hover{color:#888;cursor:default;outline:none}.fancybox-button div{height:100%}.fancybox-button svg{display:block;height:100%;overflow:visible;position:relative;width:100%}.fancybox-button svg path{fill:currentColor;stroke-width:0}.fancybox-button--fsenter svg:nth-child(2),.fancybox-button--fsexit svg:first-child,.fancybox-button--pause svg:first-child,.fancybox-button--play svg:nth-child(2){display:none}.fancybox-progress{background:#ff5268;height:2px;left:0;position:absolute;right:0;top:0;transform:scaleX(0);transform-origin:0;transition-property:transform;transition-timing-function:linear;z-index:99998}.fancybox-close-small{background:transparent;border:0;border-radius:0;color:#ccc;cursor:pointer;opacity:.8;padding:8px;position:absolute;right:-12px;top:-44px;z-index:401}.fancybox-close-small:hover{color:#fff;opacity:1}.fancybox-slide--html .fancybox-close-small{color:currentColor;padding:10px;right:0;top:0}.fancybox-slide--image.fancybox-is-scaling .fancybox-content{overflow:hidden}.fancybox-is-scaling .fancybox-close-small,.fancybox-is-zoomable.fancybox-can-pan .fancybox-close-small{display:none}.fancybox-navigation .fancybox-button{background-clip:content-box;height:100px;opacity:0;position:absolute;top:calc(50% - 50px);width:70px}.fancybox-navigation .fancybox-button div{padding:7px}.fancybox-navigation .fancybox-button--arrow_left{left:0;left:env(safe-area-inset-left);padding:31px 26px 31px 6px}.fancybox-navigation .fancybox-button--arrow_right{padding:31px 6px 31px 26px;right:0;right:env(safe-area-inset-right)}.fancybox-caption{background:linear-gradient(0deg,rgba(0,0,0,.85) 0,rgba(0,0,0,.3) 50%,rgba(0,0,0,.15) 65%,rgba(0,0,0,.075) 75.5%,rgba(0,0,0,.037) 82.85%,rgba(0,0,0,.019) 88%,transparent);bottom:0;color:#eee;font-size:14px;font-weight:400;left:0;line-height:1.5;padding:75px 44px 25px;pointer-events:none;right:0;text-align:center;z-index:99996}@supports (padding:max(0px)){.fancybox-caption{padding:75px max(44px,env(safe-area-inset-right)) max(25px,env(safe-area-inset-bottom)) max(44px,env(safe-area-inset-left))}}.fancybox-caption--separate{margin-top:-50px}.fancybox-caption__body{max-height:50vh;overflow:auto;pointer-events:all}.fancybox-caption a,.fancybox-caption a:link,.fancybox-caption a:visited{color:#ccc;text-decoration:none}.fancybox-caption a:hover{color:#fff;text-decoration:underline}.fancybox-loading{animation:a 1s linear infinite;background:transparent;border:4px solid #888;border-bottom-color:#fff;border-radius:50%;height:50px;left:50%;margin:-25px 0 0 -25px;opacity:.7;padding:0;position:absolute;top:50%;width:50px;z-index:99999}@keyframes a{to{transform:rotate(1turn)}}.fancybox-animated{transition-timing-function:cubic-bezier(0,0,.25,1)}.fancybox-fx-slide.fancybox-slide--previous{opacity:0;transform:translate3d(-100%,0,0)}.fancybox-fx-slide.fancybox-slide--next{opacity:0;transform:translate3d(100%,0,0)}.fancybox-fx-slide.fancybox-slide--current{opacity:1;transform:translateZ(0)}.fancybox-fx-fade.fancybox-slide--next,.fancybox-fx-fade.fancybox-slide--previous{opacity:0;transition-timing-function:cubic-bezier(.19,1,.22,1)}.fancybox-fx-fade.fancybox-slide--current{opacity:1}.fancybox-fx-zoom-in-out.fancybox-slide--previous{opacity:0;transform:scale3d(1.5,1.5,1.5)}.fancybox-fx-zoom-in-out.fancybox-slide--next{opacity:0;transform:scale3d(.5,.5,.5)}.fancybox-fx-zoom-in-out.fancybox-slide--current{opacity:1;transform:scaleX(1)}.fancybox-fx-rotate.fancybox-slide--previous{opacity:0;transform:rotate(-1turn)}.fancybox-fx-rotate.fancybox-slide--next{opacity:0;transform:rotate(1turn)}.fancybox-fx-rotate.fancybox-slide--current{opacity:1;transform:rotate(0deg)}.fancybox-fx-circular.fancybox-slide--previous{opacity:0;transform:scale3d(0,0,0) translate3d(-100%,0,0)}.fancybox-fx-circular.fancybox-slide--next{opacity:0;transform:scale3d(0,0,0) translate3d(100%,0,0)}.fancybox-fx-circular.fancybox-slide--current{opacity:1;transform:scaleX(1) translateZ(0)}.fancybox-fx-tube.fancybox-slide--previous{transform:translate3d(-100%,0,0) scale(.1) skew(-10deg)}.fancybox-fx-tube.fancybox-slide--next{transform:translate3d(100%,0,0) scale(.1) skew(10deg)}.fancybox-fx-tube.fancybox-slide--current{transform:translateZ(0) scale(1)}@media (max-height:576px){.fancybox-slide{padding-left:6px;padding-right:6px}.fancybox-slide--image{padding:6px 0}.fancybox-close-small{right:-6px}.fancybox-slide--image .fancybox-close-small{background:#4e4e4e;color:#f2f4f6;height:36px;opacity:1;padding:6px;right:0;top:0;width:36px}.fancybox-caption{padding-left:12px;padding-right:12px}@supports (padding:max(0px)){.fancybox-caption{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}}}.fancybox-share{background:#f4f4f4;border-radius:3px;max-width:90%;padding:30px;text-align:center}.fancybox-share h1{color:#222;font-size:35px;font-weight:700;margin:0 0 20px}.fancybox-share p{margin:0;padding:0}.fancybox-share__button{border:0;border-radius:3px;display:inline-block;font-size:14px;font-weight:700;line-height:40px;margin:0 5px 10px;min-width:130px;padding:0 15px;text-decoration:none;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap}.fancybox-share__button:link,.fancybox-share__button:visited{color:#fff}.fancybox-share__button:hover{text-decoration:none}.fancybox-share__button--fb{background:#3b5998}.fancybox-share__button--fb:hover{background:#344e86}.fancybox-share__button--pt{background:#bd081d}.fancybox-share__button--pt:hover{background:#aa0719}.fancybox-share__button--tw{background:#1da1f2}.fancybox-share__button--tw:hover{background:#0d95e8}.fancybox-share__button svg{height:25px;margin-right:7px;position:relative;top:-1px;vertical-align:middle;width:25px}.fancybox-share__button svg path{fill:#fff}.fancybox-share__input{background:transparent;border:0;border-bottom:1px solid #d7d7d7;border-radius:0;color:#5d5b5b;font-size:14px;margin:10px 0 0;outline:none;padding:10px 15px;width:100%}.fancybox-thumbs{background:#ddd;bottom:0;display:none;margin:0;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;padding:2px 2px 4px;position:absolute;right:0;-webkit-tap-highlight-color:rgba(0,0,0,0);top:0;width:212px;z-index:99995}.fancybox-thumbs-x{overflow-x:auto;overflow-y:hidden}.fancybox-show-thumbs .fancybox-thumbs{display:block}.fancybox-show-thumbs .fancybox-inner{right:212px}.fancybox-thumbs__list{font-size:0;height:100%;list-style:none;margin:0;overflow-x:hidden;overflow-y:auto;padding:0;position:absolute;position:relative;white-space:nowrap;width:100%}.fancybox-thumbs-x .fancybox-thumbs__list{overflow:hidden}.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar{width:7px}.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-track{background:#fff;border-radius:10px;box-shadow:inset 0 0 6px rgba(0,0,0,.3)}.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-thumb{background:#2a2a2a;border-radius:10px}.fancybox-thumbs__list a{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:rgba(0,0,0,.1);background-position:50%;background-repeat:no-repeat;background-size:cover;cursor:pointer;float:left;height:75px;margin:2px;max-height:calc(100% - 8px);max-width:calc(50% - 4px);outline:none;overflow:hidden;padding:0;position:relative;-webkit-tap-highlight-color:transparent;width:100px}.fancybox-thumbs__list a:before{border:6px solid #ff5268;bottom:0;content:"";left:0;opacity:0;position:absolute;right:0;top:0;transition:all .2s cubic-bezier(.25,.46,.45,.94);z-index:99991}.fancybox-thumbs__list a:focus:before{opacity:.5}.fancybox-thumbs__list a.fancybox-thumbs-active:before{opacity:1}@media (max-width:576px){.fancybox-thumbs{width:110px}.fancybox-show-thumbs .fancybox-inner{right:110px}.fancybox-thumbs__list a{max-width:calc(100% - 10px)}} \ No newline at end of file diff --git a/fancybox/jquery.fancybox.min.js b/fancybox/jquery.fancybox.min.js new file mode 100644 index 0000000..d5d10f6 --- /dev/null +++ b/fancybox/jquery.fancybox.min.js @@ -0,0 +1,13 @@ +// ================================================== +// fancyBox v3.5.7 +// +// Licensed GPLv3 for open source use +// or fancyBox Commercial License for commercial use +// +// http://fancyapps.com/fancybox/ +// Copyright 2019 fancyApps +// +// ================================================== +!function(t,e,n,o){"use strict";function i(t,e){var o,i,a,s=[],r=0;t&&t.isDefaultPrevented()||(t.preventDefault(),e=e||{},t&&t.data&&(e=h(t.data.options,e)),o=e.$target||n(t.currentTarget).trigger("blur"),(a=n.fancybox.getInstance())&&a.$trigger&&a.$trigger.is(o)||(e.selector?s=n(e.selector):(i=o.attr("data-fancybox")||"",i?(s=t.data?t.data.items:[],s=s.length?s.filter('[data-fancybox="'+i+'"]'):n('[data-fancybox="'+i+'"]')):s=[o]),r=n(s).index(o),r<0&&(r=0),a=n.fancybox.open(s,e,r),a.$trigger=o))}if(t.console=t.console||{info:function(t){}},n){if(n.fn.fancybox)return void console.info("fancyBox already initialized");var a={closeExisting:!1,loop:!1,gutter:50,keyboard:!0,preventCaptionOverlap:!0,arrows:!0,infobar:!0,smallBtn:"auto",toolbar:"auto",buttons:["zoom","slideShow","thumbs","close"],idleTime:3,protect:!1,modal:!1,image:{preload:!1},ajax:{settings:{data:{fancybox:!0}}},iframe:{tpl:'',preload:!0,css:{},attr:{scrolling:"auto"}},video:{tpl:'download and watch with your favorite video player!',format:"",autoStart:!0},defaultType:"image",animationEffect:"zoom",animationDuration:366,zoomOpacity:"auto",transitionEffect:"fade",transitionDuration:366,slideClass:"",baseClass:"",baseTpl:'',spinnerTpl:'
',errorTpl:'

{{ERROR}}

',btnTpl:{download:'',zoom:'',close:'',arrowLeft:'',arrowRight:'',smallBtn:''},parentEl:"body",hideScrollbar:!0,autoFocus:!0,backFocus:!0,trapFocus:!0,fullScreen:{autoStart:!1},touch:{vertical:!0,momentum:!0},hash:null,media:{},slideShow:{autoStart:!1,speed:3e3},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:".fancybox-container",axis:"y"},wheel:"auto",onInit:n.noop,beforeLoad:n.noop,afterLoad:n.noop,beforeShow:n.noop,afterShow:n.noop,beforeClose:n.noop,afterClose:n.noop,onActivate:n.noop,onDeactivate:n.noop,clickContent:function(t,e){return"image"===t.type&&"zoom"},clickSlide:"close",clickOutside:"close",dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1,mobile:{preventCaptionOverlap:!1,idleTime:!1,clickContent:function(t,e){return"image"===t.type&&"toggleControls"},clickSlide:function(t,e){return"image"===t.type?"toggleControls":"close"},dblclickContent:function(t,e){return"image"===t.type&&"zoom"},dblclickSlide:function(t,e){return"image"===t.type&&"zoom"}},lang:"en",i18n:{en:{CLOSE:"Close",NEXT:"Next",PREV:"Previous",ERROR:"The requested content cannot be loaded.
Please try again later.",PLAY_START:"Start slideshow",PLAY_STOP:"Pause slideshow",FULL_SCREEN:"Full screen",THUMBS:"Thumbnails",DOWNLOAD:"Download",SHARE:"Share",ZOOM:"Zoom"},de:{CLOSE:"Schließen",NEXT:"Weiter",PREV:"Zurück",ERROR:"Die angeforderten Daten konnten nicht geladen werden.
Bitte versuchen Sie es später nochmal.",PLAY_START:"Diaschau starten",PLAY_STOP:"Diaschau beenden",FULL_SCREEN:"Vollbild",THUMBS:"Vorschaubilder",DOWNLOAD:"Herunterladen",SHARE:"Teilen",ZOOM:"Vergrößern"}}},s=n(t),r=n(e),c=0,l=function(t){return t&&t.hasOwnProperty&&t instanceof n},d=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),u=function(){return t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.mozCancelAnimationFrame||t.oCancelAnimationFrame||function(e){t.clearTimeout(e)}}(),f=function(){var t,n=e.createElement("fakeelement"),o={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(t in o)if(void 0!==n.style[t])return o[t];return"transitionend"}(),p=function(t){return t&&t.length&&t[0].offsetHeight},h=function(t,e){var o=n.extend(!0,{},t,e);return n.each(e,function(t,e){n.isArray(e)&&(o[t]=e)}),o},g=function(t){var o,i;return!(!t||t.ownerDocument!==e)&&(n(".fancybox-container").css("pointer-events","none"),o={x:t.getBoundingClientRect().left+t.offsetWidth/2,y:t.getBoundingClientRect().top+t.offsetHeight/2},i=e.elementFromPoint(o.x,o.y)===t,n(".fancybox-container").css("pointer-events",""),i)},b=function(t,e,o){var i=this;i.opts=h({index:o},n.fancybox.defaults),n.isPlainObject(e)&&(i.opts=h(i.opts,e)),n.fancybox.isMobile&&(i.opts=h(i.opts,i.opts.mobile)),i.id=i.opts.id||++c,i.currIndex=parseInt(i.opts.index,10)||0,i.prevIndex=null,i.prevPos=null,i.currPos=0,i.firstRun=!0,i.group=[],i.slides={},i.addContent(t),i.group.length&&i.init()};n.extend(b.prototype,{init:function(){var o,i,a=this,s=a.group[a.currIndex],r=s.opts;r.closeExisting&&n.fancybox.close(!0),n("body").addClass("fancybox-active"),!n.fancybox.getInstance()&&!1!==r.hideScrollbar&&!n.fancybox.isMobile&&e.body.scrollHeight>t.innerHeight&&(n("head").append('"),n("body").addClass("compensate-for-scrollbar")),i="",n.each(r.buttons,function(t,e){i+=r.btnTpl[e]||""}),o=n(a.translate(a,r.baseTpl.replace("{{buttons}}",i).replace("{{arrows}}",r.btnTpl.arrowLeft+r.btnTpl.arrowRight))).attr("id","fancybox-container-"+a.id).addClass(r.baseClass).data("FancyBox",a).appendTo(r.parentEl),a.$refs={container:o},["bg","inner","infobar","toolbar","stage","caption","navigation"].forEach(function(t){a.$refs[t]=o.find(".fancybox-"+t)}),a.trigger("onInit"),a.activate(),a.jumpTo(a.currIndex)},translate:function(t,e){var n=t.opts.i18n[t.opts.lang]||t.opts.i18n.en;return e.replace(/\{\{(\w+)\}\}/g,function(t,e){return void 0===n[e]?t:n[e]})},addContent:function(t){var e,o=this,i=n.makeArray(t);n.each(i,function(t,e){var i,a,s,r,c,l={},d={};n.isPlainObject(e)?(l=e,d=e.opts||e):"object"===n.type(e)&&n(e).length?(i=n(e),d=i.data()||{},d=n.extend(!0,{},d,d.options),d.$orig=i,l.src=o.opts.src||d.src||i.attr("href"),l.type||l.src||(l.type="inline",l.src=e)):l={type:"html",src:e+""},l.opts=n.extend(!0,{},o.opts,d),n.isArray(d.buttons)&&(l.opts.buttons=d.buttons),n.fancybox.isMobile&&l.opts.mobile&&(l.opts=h(l.opts,l.opts.mobile)),a=l.type||l.opts.type,r=l.src||"",!a&&r&&((s=r.match(/\.(mp4|mov|ogv|webm)((\?|#).*)?$/i))?(a="video",l.opts.video.format||(l.opts.video.format="video/"+("ogv"===s[1]?"ogg":s[1]))):r.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i)?a="image":r.match(/\.(pdf)((\?|#).*)?$/i)?(a="iframe",l=n.extend(!0,l,{contentType:"pdf",opts:{iframe:{preload:!1}}})):"#"===r.charAt(0)&&(a="inline")),a?l.type=a:o.trigger("objectNeedsType",l),l.contentType||(l.contentType=n.inArray(l.type,["html","inline","ajax"])>-1?"html":l.type),l.index=o.group.length,"auto"==l.opts.smallBtn&&(l.opts.smallBtn=n.inArray(l.type,["html","inline","ajax"])>-1),"auto"===l.opts.toolbar&&(l.opts.toolbar=!l.opts.smallBtn),l.$thumb=l.opts.$thumb||null,l.opts.$trigger&&l.index===o.opts.index&&(l.$thumb=l.opts.$trigger.find("img:first"),l.$thumb.length&&(l.opts.$orig=l.opts.$trigger)),l.$thumb&&l.$thumb.length||!l.opts.$orig||(l.$thumb=l.opts.$orig.find("img:first")),l.$thumb&&!l.$thumb.length&&(l.$thumb=null),l.thumb=l.opts.thumb||(l.$thumb?l.$thumb[0].src:null),"function"===n.type(l.opts.caption)&&(l.opts.caption=l.opts.caption.apply(e,[o,l])),"function"===n.type(o.opts.caption)&&(l.opts.caption=o.opts.caption.apply(e,[o,l])),l.opts.caption instanceof n||(l.opts.caption=void 0===l.opts.caption?"":l.opts.caption+""),"ajax"===l.type&&(c=r.split(/\s+/,2),c.length>1&&(l.src=c.shift(),l.opts.filter=c.shift())),l.opts.modal&&(l.opts=n.extend(!0,l.opts,{trapFocus:!0,infobar:0,toolbar:0,smallBtn:0,keyboard:0,slideShow:0,fullScreen:0,thumbs:0,touch:0,clickContent:!1,clickSlide:!1,clickOutside:!1,dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1})),o.group.push(l)}),Object.keys(o.slides).length&&(o.updateControls(),(e=o.Thumbs)&&e.isActive&&(e.create(),e.focus()))},addEvents:function(){var e=this;e.removeEvents(),e.$refs.container.on("click.fb-close","[data-fancybox-close]",function(t){t.stopPropagation(),t.preventDefault(),e.close(t)}).on("touchstart.fb-prev click.fb-prev","[data-fancybox-prev]",function(t){t.stopPropagation(),t.preventDefault(),e.previous()}).on("touchstart.fb-next click.fb-next","[data-fancybox-next]",function(t){t.stopPropagation(),t.preventDefault(),e.next()}).on("click.fb","[data-fancybox-zoom]",function(t){e[e.isScaledDown()?"scaleToActual":"scaleToFit"]()}),s.on("orientationchange.fb resize.fb",function(t){t&&t.originalEvent&&"resize"===t.originalEvent.type?(e.requestId&&u(e.requestId),e.requestId=d(function(){e.update(t)})):(e.current&&"iframe"===e.current.type&&e.$refs.stage.hide(),setTimeout(function(){e.$refs.stage.show(),e.update(t)},n.fancybox.isMobile?600:250))}),r.on("keydown.fb",function(t){var o=n.fancybox?n.fancybox.getInstance():null,i=o.current,a=t.keyCode||t.which;if(9==a)return void(i.opts.trapFocus&&e.focus(t));if(!(!i.opts.keyboard||t.ctrlKey||t.altKey||t.shiftKey||n(t.target).is("input,textarea,video,audio,select")))return 8===a||27===a?(t.preventDefault(),void e.close(t)):37===a||38===a?(t.preventDefault(),void e.previous()):39===a||40===a?(t.preventDefault(),void e.next()):void e.trigger("afterKeydown",t,a)}),e.group[e.currIndex].opts.idleTime&&(e.idleSecondsCounter=0,r.on("mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle",function(t){e.idleSecondsCounter=0,e.isIdle&&e.showControls(),e.isIdle=!1}),e.idleInterval=t.setInterval(function(){++e.idleSecondsCounter>=e.group[e.currIndex].opts.idleTime&&!e.isDragging&&(e.isIdle=!0,e.idleSecondsCounter=0,e.hideControls())},1e3))},removeEvents:function(){var e=this;s.off("orientationchange.fb resize.fb"),r.off("keydown.fb .fb-idle"),this.$refs.container.off(".fb-close .fb-prev .fb-next"),e.idleInterval&&(t.clearInterval(e.idleInterval),e.idleInterval=null)},previous:function(t){return this.jumpTo(this.currPos-1,t)},next:function(t){return this.jumpTo(this.currPos+1,t)},jumpTo:function(t,e){var o,i,a,s,r,c,l,d,u,f=this,h=f.group.length;if(!(f.isDragging||f.isClosing||f.isAnimating&&f.firstRun)){if(t=parseInt(t,10),!(a=f.current?f.current.opts.loop:f.opts.loop)&&(t<0||t>=h))return!1;if(o=f.firstRun=!Object.keys(f.slides).length,r=f.current,f.prevIndex=f.currIndex,f.prevPos=f.currPos,s=f.createSlide(t),h>1&&((a||s.index0)&&f.createSlide(t-1)),f.current=s,f.currIndex=s.index,f.currPos=s.pos,f.trigger("beforeShow",o),f.updateControls(),s.forcedDuration=void 0,n.isNumeric(e)?s.forcedDuration=e:e=s.opts[o?"animationDuration":"transitionDuration"],e=parseInt(e,10),i=f.isMoved(s),s.$slide.addClass("fancybox-slide--current"),o)return s.opts.animationEffect&&e&&f.$refs.container.css("transition-duration",e+"ms"),f.$refs.container.addClass("fancybox-is-open").trigger("focus"),f.loadSlide(s),void f.preload("image");c=n.fancybox.getTranslate(r.$slide),l=n.fancybox.getTranslate(f.$refs.stage),n.each(f.slides,function(t,e){n.fancybox.stop(e.$slide,!0)}),r.pos!==s.pos&&(r.isComplete=!1),r.$slide.removeClass("fancybox-slide--complete fancybox-slide--current"),i?(u=c.left-(r.pos*c.width+r.pos*r.opts.gutter),n.each(f.slides,function(t,o){o.$slide.removeClass("fancybox-animated").removeClass(function(t,e){return(e.match(/(^|\s)fancybox-fx-\S+/g)||[]).join(" ")});var i=o.pos*c.width+o.pos*o.opts.gutter;n.fancybox.setTranslate(o.$slide,{top:0,left:i-l.left+u}),o.pos!==s.pos&&o.$slide.addClass("fancybox-slide--"+(o.pos>s.pos?"next":"previous")),p(o.$slide),n.fancybox.animate(o.$slide,{top:0,left:(o.pos-s.pos)*c.width+(o.pos-s.pos)*o.opts.gutter},e,function(){o.$slide.css({transform:"",opacity:""}).removeClass("fancybox-slide--next fancybox-slide--previous"),o.pos===f.currPos&&f.complete()})})):e&&s.opts.transitionEffect&&(d="fancybox-animated fancybox-fx-"+s.opts.transitionEffect,r.$slide.addClass("fancybox-slide--"+(r.pos>s.pos?"next":"previous")),n.fancybox.animate(r.$slide,d,e,function(){r.$slide.removeClass(d).removeClass("fancybox-slide--next fancybox-slide--previous")},!1)),s.isLoaded?f.revealContent(s):f.loadSlide(s),f.preload("image")}},createSlide:function(t){var e,o,i=this;return o=t%i.group.length,o=o<0?i.group.length+o:o,!i.slides[t]&&i.group[o]&&(e=n('
').appendTo(i.$refs.stage),i.slides[t]=n.extend(!0,{},i.group[o],{pos:t,$slide:e,isLoaded:!1}),i.updateSlide(i.slides[t])),i.slides[t]},scaleToActual:function(t,e,o){var i,a,s,r,c,l=this,d=l.current,u=d.$content,f=n.fancybox.getTranslate(d.$slide).width,p=n.fancybox.getTranslate(d.$slide).height,h=d.width,g=d.height;l.isAnimating||l.isMoved()||!u||"image"!=d.type||!d.isLoaded||d.hasError||(l.isAnimating=!0,n.fancybox.stop(u),t=void 0===t?.5*f:t,e=void 0===e?.5*p:e,i=n.fancybox.getTranslate(u),i.top-=n.fancybox.getTranslate(d.$slide).top,i.left-=n.fancybox.getTranslate(d.$slide).left,r=h/i.width,c=g/i.height,a=.5*f-.5*h,s=.5*p-.5*g,h>f&&(a=i.left*r-(t*r-t),a>0&&(a=0),ap&&(s=i.top*c-(e*c-e),s>0&&(s=0),se-.5&&(l=e),d>o-.5&&(d=o),"image"===t.type?(u.top=Math.floor(.5*(o-d))+parseFloat(c.css("paddingTop")),u.left=Math.floor(.5*(e-l))+parseFloat(c.css("paddingLeft"))):"video"===t.contentType&&(a=t.opts.width&&t.opts.height?l/d:t.opts.ratio||16/9,d>l/a?d=l/a:l>d*a&&(l=d*a)),u.width=l,u.height=d,u)},update:function(t){var e=this;n.each(e.slides,function(n,o){e.updateSlide(o,t)})},updateSlide:function(t,e){var o=this,i=t&&t.$content,a=t.width||t.opts.width,s=t.height||t.opts.height,r=t.$slide;o.adjustCaption(t),i&&(a||s||"video"===t.contentType)&&!t.hasError&&(n.fancybox.stop(i),n.fancybox.setTranslate(i,o.getFitPos(t)),t.pos===o.currPos&&(o.isAnimating=!1,o.updateCursor())),o.adjustLayout(t),r.length&&(r.trigger("refresh"),t.pos===o.currPos&&o.$refs.toolbar.add(o.$refs.navigation.find(".fancybox-button--arrow_right")).toggleClass("compensate-for-scrollbar",r.get(0).scrollHeight>r.get(0).clientHeight)),o.trigger("onUpdate",t,e)},centerSlide:function(t){var e=this,o=e.current,i=o.$slide;!e.isClosing&&o&&(i.siblings().css({transform:"",opacity:""}),i.parent().children().removeClass("fancybox-slide--previous fancybox-slide--next"),n.fancybox.animate(i,{top:0,left:0,opacity:1},void 0===t?0:t,function(){i.css({transform:"",opacity:""}),o.isComplete||e.complete()},!1))},isMoved:function(t){var e,o,i=t||this.current;return!!i&&(o=n.fancybox.getTranslate(this.$refs.stage),e=n.fancybox.getTranslate(i.$slide),!i.$slide.hasClass("fancybox-animated")&&(Math.abs(e.top-o.top)>.5||Math.abs(e.left-o.left)>.5))},updateCursor:function(t,e){var o,i,a=this,s=a.current,r=a.$refs.container;s&&!a.isClosing&&a.Guestures&&(r.removeClass("fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-zoomOut fancybox-can-swipe fancybox-can-pan"),o=a.canPan(t,e),i=!!o||a.isZoomable(),r.toggleClass("fancybox-is-zoomable",i),n("[data-fancybox-zoom]").prop("disabled",!i),o?r.addClass("fancybox-can-pan"):i&&("zoom"===s.opts.clickContent||n.isFunction(s.opts.clickContent)&&"zoom"==s.opts.clickContent(s))?r.addClass("fancybox-can-zoomIn"):s.opts.touch&&(s.opts.touch.vertical||a.group.length>1)&&"video"!==s.contentType&&r.addClass("fancybox-can-swipe"))},isZoomable:function(){var t,e=this,n=e.current;if(n&&!e.isClosing&&"image"===n.type&&!n.hasError){if(!n.isLoaded)return!0;if((t=e.getFitPos(n))&&(n.width>t.width||n.height>t.height))return!0}return!1},isScaledDown:function(t,e){var o=this,i=!1,a=o.current,s=a.$content;return void 0!==t&&void 0!==e?i=t1.5||Math.abs(a.height-s.height)>1.5)),s},loadSlide:function(t){var e,o,i,a=this;if(!t.isLoading&&!t.isLoaded){if(t.isLoading=!0,!1===a.trigger("beforeLoad",t))return t.isLoading=!1,!1;switch(e=t.type,o=t.$slide,o.off("refresh").trigger("onReset").addClass(t.opts.slideClass),e){case"image":a.setImage(t);break;case"iframe":a.setIframe(t);break;case"html":a.setContent(t,t.src||t.content);break;case"video":a.setContent(t,t.opts.video.tpl.replace(/\{\{src\}\}/gi,t.src).replace("{{format}}",t.opts.videoFormat||t.opts.video.format||"").replace("{{poster}}",t.thumb||""));break;case"inline":n(t.src).length?a.setContent(t,n(t.src)):a.setError(t);break;case"ajax":a.showLoading(t),i=n.ajax(n.extend({},t.opts.ajax.settings,{url:t.src,success:function(e,n){"success"===n&&a.setContent(t,e)},error:function(e,n){e&&"abort"!==n&&a.setError(t)}})),o.one("onReset",function(){i.abort()});break;default:a.setError(t)}return!0}},setImage:function(t){var o,i=this;setTimeout(function(){var e=t.$image;i.isClosing||!t.isLoading||e&&e.length&&e[0].complete||t.hasError||i.showLoading(t)},50),i.checkSrcset(t),t.$content=n('
').addClass("fancybox-is-hidden").appendTo(t.$slide.addClass("fancybox-slide--image")),!1!==t.opts.preload&&t.opts.width&&t.opts.height&&t.thumb&&(t.width=t.opts.width,t.height=t.opts.height,o=e.createElement("img"),o.onerror=function(){n(this).remove(),t.$ghost=null},o.onload=function(){i.afterLoad(t)},t.$ghost=n(o).addClass("fancybox-image").appendTo(t.$content).attr("src",t.thumb)),i.setBigImage(t)},checkSrcset:function(e){var n,o,i,a,s=e.opts.srcset||e.opts.image.srcset;if(s){i=t.devicePixelRatio||1,a=t.innerWidth*i,o=s.split(",").map(function(t){var e={};return t.trim().split(/\s+/).forEach(function(t,n){var o=parseInt(t.substring(0,t.length-1),10);if(0===n)return e.url=t;o&&(e.value=o,e.postfix=t[t.length-1])}),e}),o.sort(function(t,e){return t.value-e.value});for(var r=0;r=a||"x"===c.postfix&&c.value>=i){n=c;break}}!n&&o.length&&(n=o[o.length-1]),n&&(e.src=n.url,e.width&&e.height&&"w"==n.postfix&&(e.height=e.width/e.height*n.value,e.width=n.value),e.opts.srcset=s)}},setBigImage:function(t){var o=this,i=e.createElement("img"),a=n(i);t.$image=a.one("error",function(){o.setError(t)}).one("load",function(){var e;t.$ghost||(o.resolveImageSlideSize(t,this.naturalWidth,this.naturalHeight),o.afterLoad(t)),o.isClosing||(t.opts.srcset&&(e=t.opts.sizes,e&&"auto"!==e||(e=(t.width/t.height>1&&s.width()/s.height()>1?"100":Math.round(t.width/t.height*100))+"vw"),a.attr("sizes",e).attr("srcset",t.opts.srcset)),t.$ghost&&setTimeout(function(){t.$ghost&&!o.isClosing&&t.$ghost.hide()},Math.min(300,Math.max(1e3,t.height/1600))),o.hideLoading(t))}).addClass("fancybox-image").attr("src",t.src).appendTo(t.$content),(i.complete||"complete"==i.readyState)&&a.naturalWidth&&a.naturalHeight?a.trigger("load"):i.error&&a.trigger("error")},resolveImageSlideSize:function(t,e,n){var o=parseInt(t.opts.width,10),i=parseInt(t.opts.height,10);t.width=e,t.height=n,o>0&&(t.width=o,t.height=Math.floor(o*n/e)),i>0&&(t.width=Math.floor(i*e/n),t.height=i)},setIframe:function(t){var e,o=this,i=t.opts.iframe,a=t.$slide;t.$content=n('
').css(i.css).appendTo(a),a.addClass("fancybox-slide--"+t.contentType),t.$iframe=e=n(i.tpl.replace(/\{rnd\}/g,(new Date).getTime())).attr(i.attr).appendTo(t.$content),i.preload?(o.showLoading(t),e.on("load.fb error.fb",function(e){this.isReady=1,t.$slide.trigger("refresh"),o.afterLoad(t)}),a.on("refresh.fb",function(){var n,o,s=t.$content,r=i.css.width,c=i.css.height;if(1===e[0].isReady){try{n=e.contents(),o=n.find("body")}catch(t){}o&&o.length&&o.children().length&&(a.css("overflow","visible"),s.css({width:"100%","max-width":"100%",height:"9999px"}),void 0===r&&(r=Math.ceil(Math.max(o[0].clientWidth,o.outerWidth(!0)))),s.css("width",r||"").css("max-width",""),void 0===c&&(c=Math.ceil(Math.max(o[0].clientHeight,o.outerHeight(!0)))),s.css("height",c||""),a.css("overflow","auto")),s.removeClass("fancybox-is-hidden")}})):o.afterLoad(t),e.attr("src",t.src),a.one("onReset",function(){try{n(this).find("iframe").hide().unbind().attr("src","//about:blank")}catch(t){}n(this).off("refresh.fb").empty(),t.isLoaded=!1,t.isRevealed=!1})},setContent:function(t,e){var o=this;o.isClosing||(o.hideLoading(t),t.$content&&n.fancybox.stop(t.$content),t.$slide.empty(),l(e)&&e.parent().length?((e.hasClass("fancybox-content")||e.parent().hasClass("fancybox-content"))&&e.parents(".fancybox-slide").trigger("onReset"),t.$placeholder=n("
").hide().insertAfter(e),e.css("display","inline-block")):t.hasError||("string"===n.type(e)&&(e=n("
").append(n.trim(e)).contents()),t.opts.filter&&(e=n("
").html(e).find(t.opts.filter))),t.$slide.one("onReset",function(){n(this).find("video,audio").trigger("pause"),t.$placeholder&&(t.$placeholder.after(e.removeClass("fancybox-content").hide()).remove(),t.$placeholder=null),t.$smallBtn&&(t.$smallBtn.remove(),t.$smallBtn=null),t.hasError||(n(this).empty(),t.isLoaded=!1,t.isRevealed=!1)}),n(e).appendTo(t.$slide),n(e).is("video,audio")&&(n(e).addClass("fancybox-video"),n(e).wrap("
"),t.contentType="video",t.opts.width=t.opts.width||n(e).attr("width"),t.opts.height=t.opts.height||n(e).attr("height")),t.$content=t.$slide.children().filter("div,form,main,video,audio,article,.fancybox-content").first(),t.$content.siblings().hide(),t.$content.length||(t.$content=t.$slide.wrapInner("
").children().first()),t.$content.addClass("fancybox-content"),t.$slide.addClass("fancybox-slide--"+t.contentType),o.afterLoad(t))},setError:function(t){t.hasError=!0,t.$slide.trigger("onReset").removeClass("fancybox-slide--"+t.contentType).addClass("fancybox-slide--error"),t.contentType="html",this.setContent(t,this.translate(t,t.opts.errorTpl)),t.pos===this.currPos&&(this.isAnimating=!1)},showLoading:function(t){var e=this;(t=t||e.current)&&!t.$spinner&&(t.$spinner=n(e.translate(e,e.opts.spinnerTpl)).appendTo(t.$slide).hide().fadeIn("fast"))},hideLoading:function(t){var e=this;(t=t||e.current)&&t.$spinner&&(t.$spinner.stop().remove(),delete t.$spinner)},afterLoad:function(t){var e=this;e.isClosing||(t.isLoading=!1,t.isLoaded=!0,e.trigger("afterLoad",t),e.hideLoading(t),!t.opts.smallBtn||t.$smallBtn&&t.$smallBtn.length||(t.$smallBtn=n(e.translate(t,t.opts.btnTpl.smallBtn)).appendTo(t.$content)),t.opts.protect&&t.$content&&!t.hasError&&(t.$content.on("contextmenu.fb",function(t){return 2==t.button&&t.preventDefault(),!0}),"image"===t.type&&n('
').appendTo(t.$content)),e.adjustCaption(t),e.adjustLayout(t),t.pos===e.currPos&&e.updateCursor(),e.revealContent(t))},adjustCaption:function(t){var e,n=this,o=t||n.current,i=o.opts.caption,a=o.opts.preventCaptionOverlap,s=n.$refs.caption,r=!1;s.toggleClass("fancybox-caption--separate",a),a&&i&&i.length&&(o.pos!==n.currPos?(e=s.clone().appendTo(s.parent()),e.children().eq(0).empty().html(i),r=e.outerHeight(!0),e.empty().remove()):n.$caption&&(r=n.$caption.outerHeight(!0)),o.$slide.css("padding-bottom",r||""))},adjustLayout:function(t){var e,n,o,i,a=this,s=t||a.current;s.isLoaded&&!0!==s.opts.disableLayoutFix&&(s.$content.css("margin-bottom",""),s.$content.outerHeight()>s.$slide.height()+.5&&(o=s.$slide[0].style["padding-bottom"],i=s.$slide.css("padding-bottom"),parseFloat(i)>0&&(e=s.$slide[0].scrollHeight,s.$slide.css("padding-bottom",0),Math.abs(e-s.$slide[0].scrollHeight)<1&&(n=i),s.$slide.css("padding-bottom",o))),s.$content.css("margin-bottom",n))},revealContent:function(t){var e,o,i,a,s=this,r=t.$slide,c=!1,l=!1,d=s.isMoved(t),u=t.isRevealed;return t.isRevealed=!0,e=t.opts[s.firstRun?"animationEffect":"transitionEffect"],i=t.opts[s.firstRun?"animationDuration":"transitionDuration"],i=parseInt(void 0===t.forcedDuration?i:t.forcedDuration,10),!d&&t.pos===s.currPos&&i||(e=!1),"zoom"===e&&(t.pos===s.currPos&&i&&"image"===t.type&&!t.hasError&&(l=s.getThumbPos(t))?c=s.getFitPos(t):e="fade"),"zoom"===e?(s.isAnimating=!0,c.scaleX=c.width/l.width,c.scaleY=c.height/l.height,a=t.opts.zoomOpacity,"auto"==a&&(a=Math.abs(t.width/t.height-l.width/l.height)>.1),a&&(l.opacity=.1,c.opacity=1),n.fancybox.setTranslate(t.$content.removeClass("fancybox-is-hidden"),l),p(t.$content),void n.fancybox.animate(t.$content,c,i,function(){s.isAnimating=!1,s.complete()})):(s.updateSlide(t),e?(n.fancybox.stop(r),o="fancybox-slide--"+(t.pos>=s.prevPos?"next":"previous")+" fancybox-animated fancybox-fx-"+e,r.addClass(o).removeClass("fancybox-slide--current"),t.$content.removeClass("fancybox-is-hidden"),p(r),"image"!==t.type&&t.$content.hide().show(0),void n.fancybox.animate(r,"fancybox-slide--current",i,function(){r.removeClass(o).css({transform:"",opacity:""}),t.pos===s.currPos&&s.complete()},!0)):(t.$content.removeClass("fancybox-is-hidden"),u||!d||"image"!==t.type||t.hasError||t.$content.hide().fadeIn("fast"),void(t.pos===s.currPos&&s.complete())))},getThumbPos:function(t){var e,o,i,a,s,r=!1,c=t.$thumb;return!(!c||!g(c[0]))&&(e=n.fancybox.getTranslate(c),o=parseFloat(c.css("border-top-width")||0),i=parseFloat(c.css("border-right-width")||0),a=parseFloat(c.css("border-bottom-width")||0),s=parseFloat(c.css("border-left-width")||0),r={top:e.top+o,left:e.left+s,width:e.width-i-s,height:e.height-o-a,scaleX:1,scaleY:1},e.width>0&&e.height>0&&r)},complete:function(){var t,e=this,o=e.current,i={};!e.isMoved()&&o.isLoaded&&(o.isComplete||(o.isComplete=!0,o.$slide.siblings().trigger("onReset"),e.preload("inline"),p(o.$slide),o.$slide.addClass("fancybox-slide--complete"),n.each(e.slides,function(t,o){o.pos>=e.currPos-1&&o.pos<=e.currPos+1?i[o.pos]=o:o&&(n.fancybox.stop(o.$slide),o.$slide.off().remove())}),e.slides=i),e.isAnimating=!1,e.updateCursor(),e.trigger("afterShow"),o.opts.video.autoStart&&o.$slide.find("video,audio").filter(":visible:first").trigger("play").one("ended",function(){Document.exitFullscreen?Document.exitFullscreen():this.webkitExitFullscreen&&this.webkitExitFullscreen(),e.next()}),o.opts.autoFocus&&"html"===o.contentType&&(t=o.$content.find("input[autofocus]:enabled:visible:first"),t.length?t.trigger("focus"):e.focus(null,!0)),o.$slide.scrollTop(0).scrollLeft(0))},preload:function(t){var e,n,o=this;o.group.length<2||(n=o.slides[o.currPos+1],e=o.slides[o.currPos-1],e&&e.type===t&&o.loadSlide(e),n&&n.type===t&&o.loadSlide(n))},focus:function(t,o){var i,a,s=this,r=["a[href]","area[href]",'input:not([disabled]):not([type="hidden"]):not([aria-hidden])',"select:not([disabled]):not([aria-hidden])","textarea:not([disabled]):not([aria-hidden])","button:not([disabled]):not([aria-hidden])","iframe","object","embed","video","audio","[contenteditable]",'[tabindex]:not([tabindex^="-"])'].join(",");s.isClosing||(i=!t&&s.current&&s.current.isComplete?s.current.$slide.find("*:visible"+(o?":not(.fancybox-close-small)":"")):s.$refs.container.find("*:visible"),i=i.filter(r).filter(function(){return"hidden"!==n(this).css("visibility")&&!n(this).hasClass("disabled")}),i.length?(a=i.index(e.activeElement),t&&t.shiftKey?(a<0||0==a)&&(t.preventDefault(),i.eq(i.length-1).trigger("focus")):(a<0||a==i.length-1)&&(t&&t.preventDefault(),i.eq(0).trigger("focus"))):s.$refs.container.trigger("focus"))},activate:function(){var t=this;n(".fancybox-container").each(function(){var e=n(this).data("FancyBox");e&&e.id!==t.id&&!e.isClosing&&(e.trigger("onDeactivate"),e.removeEvents(),e.isVisible=!1)}),t.isVisible=!0,(t.current||t.isIdle)&&(t.update(),t.updateControls()),t.trigger("onActivate"),t.addEvents()},close:function(t,e){var o,i,a,s,r,c,l,u=this,f=u.current,h=function(){u.cleanUp(t)};return!u.isClosing&&(u.isClosing=!0,!1===u.trigger("beforeClose",t)?(u.isClosing=!1,d(function(){u.update()}),!1):(u.removeEvents(),a=f.$content,o=f.opts.animationEffect,i=n.isNumeric(e)?e:o?f.opts.animationDuration:0,f.$slide.removeClass("fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated"),!0!==t?n.fancybox.stop(f.$slide):o=!1,f.$slide.siblings().trigger("onReset").remove(),i&&u.$refs.container.removeClass("fancybox-is-open").addClass("fancybox-is-closing").css("transition-duration",i+"ms"),u.hideLoading(f),u.hideControls(!0),u.updateCursor(),"zoom"!==o||a&&i&&"image"===f.type&&!u.isMoved()&&!f.hasError&&(l=u.getThumbPos(f))||(o="fade"),"zoom"===o?(n.fancybox.stop(a),s=n.fancybox.getTranslate(a),c={top:s.top,left:s.left,scaleX:s.width/l.width,scaleY:s.height/l.height,width:l.width,height:l.height},r=f.opts.zoomOpacity, +"auto"==r&&(r=Math.abs(f.width/f.height-l.width/l.height)>.1),r&&(l.opacity=0),n.fancybox.setTranslate(a,c),p(a),n.fancybox.animate(a,l,i,h),!0):(o&&i?n.fancybox.animate(f.$slide.addClass("fancybox-slide--previous").removeClass("fancybox-slide--current"),"fancybox-animated fancybox-fx-"+o,i,h):!0===t?setTimeout(h,i):h(),!0)))},cleanUp:function(e){var o,i,a,s=this,r=s.current.opts.$orig;s.current.$slide.trigger("onReset"),s.$refs.container.empty().remove(),s.trigger("afterClose",e),s.current.opts.backFocus&&(r&&r.length&&r.is(":visible")||(r=s.$trigger),r&&r.length&&(i=t.scrollX,a=t.scrollY,r.trigger("focus"),n("html, body").scrollTop(a).scrollLeft(i))),s.current=null,o=n.fancybox.getInstance(),o?o.activate():(n("body").removeClass("fancybox-active compensate-for-scrollbar"),n("#fancybox-style-noscroll").remove())},trigger:function(t,e){var o,i=Array.prototype.slice.call(arguments,1),a=this,s=e&&e.opts?e:a.current;if(s?i.unshift(s):s=a,i.unshift(a),n.isFunction(s.opts[t])&&(o=s.opts[t].apply(s,i)),!1===o)return o;"afterClose"!==t&&a.$refs?a.$refs.container.trigger(t+".fb",i):r.trigger(t+".fb",i)},updateControls:function(){var t=this,o=t.current,i=o.index,a=t.$refs.container,s=t.$refs.caption,r=o.opts.caption;o.$slide.trigger("refresh"),r&&r.length?(t.$caption=s,s.children().eq(0).html(r)):t.$caption=null,t.hasHiddenControls||t.isIdle||t.showControls(),a.find("[data-fancybox-count]").html(t.group.length),a.find("[data-fancybox-index]").html(i+1),a.find("[data-fancybox-prev]").prop("disabled",!o.opts.loop&&i<=0),a.find("[data-fancybox-next]").prop("disabled",!o.opts.loop&&i>=t.group.length-1),"image"===o.type?a.find("[data-fancybox-zoom]").show().end().find("[data-fancybox-download]").attr("href",o.opts.image.src||o.src).show():o.opts.toolbar&&a.find("[data-fancybox-download],[data-fancybox-zoom]").hide(),n(e.activeElement).is(":hidden,[disabled]")&&t.$refs.container.trigger("focus")},hideControls:function(t){var e=this,n=["infobar","toolbar","nav"];!t&&e.current.opts.preventCaptionOverlap||n.push("caption"),this.$refs.container.removeClass(n.map(function(t){return"fancybox-show-"+t}).join(" ")),this.hasHiddenControls=!0},showControls:function(){var t=this,e=t.current?t.current.opts:t.opts,n=t.$refs.container;t.hasHiddenControls=!1,t.idleSecondsCounter=0,n.toggleClass("fancybox-show-toolbar",!(!e.toolbar||!e.buttons)).toggleClass("fancybox-show-infobar",!!(e.infobar&&t.group.length>1)).toggleClass("fancybox-show-caption",!!t.$caption).toggleClass("fancybox-show-nav",!!(e.arrows&&t.group.length>1)).toggleClass("fancybox-is-modal",!!e.modal)},toggleControls:function(){this.hasHiddenControls?this.showControls():this.hideControls()}}),n.fancybox={version:"3.5.7",defaults:a,getInstance:function(t){var e=n('.fancybox-container:not(".fancybox-is-closing"):last').data("FancyBox"),o=Array.prototype.slice.call(arguments,1);return e instanceof b&&("string"===n.type(t)?e[t].apply(e,o):"function"===n.type(t)&&t.apply(e,o),e)},open:function(t,e,n){return new b(t,e,n)},close:function(t){var e=this.getInstance();e&&(e.close(),!0===t&&this.close(t))},destroy:function(){this.close(!0),r.add("body").off("click.fb-start","**")},isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),use3d:function(){var n=e.createElement("div");return t.getComputedStyle&&t.getComputedStyle(n)&&t.getComputedStyle(n).getPropertyValue("transform")&&!(e.documentMode&&e.documentMode<11)}(),getTranslate:function(t){var e;return!(!t||!t.length)&&(e=t[0].getBoundingClientRect(),{top:e.top||0,left:e.left||0,width:e.width,height:e.height,opacity:parseFloat(t.css("opacity"))})},setTranslate:function(t,e){var n="",o={};if(t&&e)return void 0===e.left&&void 0===e.top||(n=(void 0===e.left?t.position().left:e.left)+"px, "+(void 0===e.top?t.position().top:e.top)+"px",n=this.use3d?"translate3d("+n+", 0px)":"translate("+n+")"),void 0!==e.scaleX&&void 0!==e.scaleY?n+=" scale("+e.scaleX+", "+e.scaleY+")":void 0!==e.scaleX&&(n+=" scaleX("+e.scaleX+")"),n.length&&(o.transform=n),void 0!==e.opacity&&(o.opacity=e.opacity),void 0!==e.width&&(o.width=e.width),void 0!==e.height&&(o.height=e.height),t.css(o)},animate:function(t,e,o,i,a){var s,r=this;n.isFunction(o)&&(i=o,o=null),r.stop(t),s=r.getTranslate(t),t.on(f,function(c){(!c||!c.originalEvent||t.is(c.originalEvent.target)&&"z-index"!=c.originalEvent.propertyName)&&(r.stop(t),n.isNumeric(o)&&t.css("transition-duration",""),n.isPlainObject(e)?void 0!==e.scaleX&&void 0!==e.scaleY&&r.setTranslate(t,{top:e.top,left:e.left,width:s.width*e.scaleX,height:s.height*e.scaleY,scaleX:1,scaleY:1}):!0!==a&&t.removeClass(e),n.isFunction(i)&&i(c))}),n.isNumeric(o)&&t.css("transition-duration",o+"ms"),n.isPlainObject(e)?(void 0!==e.scaleX&&void 0!==e.scaleY&&(delete e.width,delete e.height,t.parent().hasClass("fancybox-slide--image")&&t.parent().addClass("fancybox-is-scaling")),n.fancybox.setTranslate(t,e)):t.addClass(e),t.data("timer",setTimeout(function(){t.trigger(f)},o+33))},stop:function(t,e){t&&t.length&&(clearTimeout(t.data("timer")),e&&t.trigger(f),t.off(f).css("transition-duration",""),t.parent().removeClass("fancybox-is-scaling"))}},n.fn.fancybox=function(t){var e;return t=t||{},e=t.selector||!1,e?n("body").off("click.fb-start",e).on("click.fb-start",e,{options:t},i):this.off("click.fb-start").on("click.fb-start",{items:this,options:t},i),this},r.on("click.fb-start","[data-fancybox]",i),r.on("click.fb-start","[data-fancybox-trigger]",function(t){n('[data-fancybox="'+n(this).attr("data-fancybox-trigger")+'"]').eq(n(this).attr("data-fancybox-index")||0).trigger("click.fb-start",{$trigger:n(this)})}),function(){var t=null;r.on("mousedown mouseup focus blur",".fancybox-button",function(e){switch(e.type){case"mousedown":t=n(this);break;case"mouseup":t=null;break;case"focusin":n(".fancybox-button").removeClass("fancybox-focus"),n(this).is(t)||n(this).is("[disabled]")||n(this).addClass("fancybox-focus");break;case"focusout":n(".fancybox-button").removeClass("fancybox-focus")}})}()}}(window,document,jQuery),function(t){"use strict";var e={youtube:{matcher:/(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(watch\?(.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*))(.*)/i,params:{autoplay:1,autohide:1,fs:1,rel:0,hd:1,wmode:"transparent",enablejsapi:1,html5:1},paramPlace:8,type:"iframe",url:"https://www.youtube-nocookie.com/embed/$4",thumb:"https://img.youtube.com/vi/$4/hqdefault.jpg"},vimeo:{matcher:/^.+vimeo.com\/(.*\/)?([\d]+)(.*)?/,params:{autoplay:1,hd:1,show_title:1,show_byline:1,show_portrait:0,fullscreen:1},paramPlace:3,type:"iframe",url:"//player.vimeo.com/video/$2"},instagram:{matcher:/(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i,type:"image",url:"//$1/p/$2/media/?size=l"},gmap_place:{matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(((maps\/(place\/(.*)\/)?\@(.*),(\d+.?\d+?)z))|(\?ll=))(.*)?/i,type:"iframe",url:function(t){return"//maps.google."+t[2]+"/?ll="+(t[9]?t[9]+"&z="+Math.floor(t[10])+(t[12]?t[12].replace(/^\//,"&"):""):t[12]+"").replace(/\?/,"&")+"&output="+(t[12]&&t[12].indexOf("layer=c")>0?"svembed":"embed")}},gmap_search:{matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(maps\/search\/)(.*)/i,type:"iframe",url:function(t){return"//maps.google."+t[2]+"/maps?q="+t[5].replace("query=","q=").replace("api=1","")+"&output=embed"}}},n=function(e,n,o){if(e)return o=o||"","object"===t.type(o)&&(o=t.param(o,!0)),t.each(n,function(t,n){e=e.replace("$"+t,n||"")}),o.length&&(e+=(e.indexOf("?")>0?"&":"?")+o),e};t(document).on("objectNeedsType.fb",function(o,i,a){var s,r,c,l,d,u,f,p=a.src||"",h=!1;s=t.extend(!0,{},e,a.opts.media),t.each(s,function(e,o){if(c=p.match(o.matcher)){if(h=o.type,f=e,u={},o.paramPlace&&c[o.paramPlace]){d=c[o.paramPlace],"?"==d[0]&&(d=d.substring(1)),d=d.split("&");for(var i=0;i1&&("youtube"===n.contentSource||"vimeo"===n.contentSource)&&o.load(n.contentSource)}})}(jQuery),function(t,e,n){"use strict";var o=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),i=function(){return t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.mozCancelAnimationFrame||t.oCancelAnimationFrame||function(e){t.clearTimeout(e)}}(),a=function(e){var n=[];e=e.originalEvent||e||t.e,e=e.touches&&e.touches.length?e.touches:e.changedTouches&&e.changedTouches.length?e.changedTouches:[e];for(var o in e)e[o].pageX?n.push({x:e[o].pageX,y:e[o].pageY}):e[o].clientX&&n.push({x:e[o].clientX,y:e[o].clientY});return n},s=function(t,e,n){return e&&t?"x"===n?t.x-e.x:"y"===n?t.y-e.y:Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)):0},r=function(t){if(t.is('a,area,button,[role="button"],input,label,select,summary,textarea,video,audio,iframe')||n.isFunction(t.get(0).onclick)||t.data("selectable"))return!0;for(var e=0,o=t[0].attributes,i=o.length;ee.clientHeight,a=("scroll"===o||"auto"===o)&&e.scrollWidth>e.clientWidth;return i||a},l=function(t){for(var e=!1;;){if(e=c(t.get(0)))break;if(t=t.parent(),!t.length||t.hasClass("fancybox-stage")||t.is("body"))break}return e},d=function(t){var e=this;e.instance=t,e.$bg=t.$refs.bg,e.$stage=t.$refs.stage,e.$container=t.$refs.container,e.destroy(),e.$container.on("touchstart.fb.touch mousedown.fb.touch",n.proxy(e,"ontouchstart"))};d.prototype.destroy=function(){var t=this;t.$container.off(".fb.touch"),n(e).off(".fb.touch"),t.requestId&&(i(t.requestId),t.requestId=null),t.tapped&&(clearTimeout(t.tapped),t.tapped=null)},d.prototype.ontouchstart=function(o){var i=this,c=n(o.target),d=i.instance,u=d.current,f=u.$slide,p=u.$content,h="touchstart"==o.type;if(h&&i.$container.off("mousedown.fb.touch"),(!o.originalEvent||2!=o.originalEvent.button)&&f.length&&c.length&&!r(c)&&!r(c.parent())&&(c.is("img")||!(o.originalEvent.clientX>c[0].clientWidth+c.offset().left))){if(!u||d.isAnimating||u.$slide.hasClass("fancybox-animated"))return o.stopPropagation(),void o.preventDefault();i.realPoints=i.startPoints=a(o),i.startPoints.length&&(u.touch&&o.stopPropagation(),i.startEvent=o,i.canTap=!0,i.$target=c,i.$content=p,i.opts=u.opts.touch,i.isPanning=!1,i.isSwiping=!1,i.isZooming=!1,i.isScrolling=!1,i.canPan=d.canPan(),i.startTime=(new Date).getTime(),i.distanceX=i.distanceY=i.distance=0,i.canvasWidth=Math.round(f[0].clientWidth),i.canvasHeight=Math.round(f[0].clientHeight),i.contentLastPos=null,i.contentStartPos=n.fancybox.getTranslate(i.$content)||{top:0,left:0},i.sliderStartPos=n.fancybox.getTranslate(f),i.stagePos=n.fancybox.getTranslate(d.$refs.stage),i.sliderStartPos.top-=i.stagePos.top,i.sliderStartPos.left-=i.stagePos.left,i.contentStartPos.top-=i.stagePos.top,i.contentStartPos.left-=i.stagePos.left,n(e).off(".fb.touch").on(h?"touchend.fb.touch touchcancel.fb.touch":"mouseup.fb.touch mouseleave.fb.touch",n.proxy(i,"ontouchend")).on(h?"touchmove.fb.touch":"mousemove.fb.touch",n.proxy(i,"ontouchmove")),n.fancybox.isMobile&&e.addEventListener("scroll",i.onscroll,!0),((i.opts||i.canPan)&&(c.is(i.$stage)||i.$stage.find(c).length)||(c.is(".fancybox-image")&&o.preventDefault(),n.fancybox.isMobile&&c.parents(".fancybox-caption").length))&&(i.isScrollable=l(c)||l(c.parent()),n.fancybox.isMobile&&i.isScrollable||o.preventDefault(),(1===i.startPoints.length||u.hasError)&&(i.canPan?(n.fancybox.stop(i.$content),i.isPanning=!0):i.isSwiping=!0,i.$container.addClass("fancybox-is-grabbing")),2===i.startPoints.length&&"image"===u.type&&(u.isLoaded||u.$ghost)&&(i.canTap=!1,i.isSwiping=!1,i.isPanning=!1,i.isZooming=!0,n.fancybox.stop(i.$content),i.centerPointStartX=.5*(i.startPoints[0].x+i.startPoints[1].x)-n(t).scrollLeft(),i.centerPointStartY=.5*(i.startPoints[0].y+i.startPoints[1].y)-n(t).scrollTop(),i.percentageOfImageAtPinchPointX=(i.centerPointStartX-i.contentStartPos.left)/i.contentStartPos.width,i.percentageOfImageAtPinchPointY=(i.centerPointStartY-i.contentStartPos.top)/i.contentStartPos.height,i.startDistanceBetweenFingers=s(i.startPoints[0],i.startPoints[1]))))}},d.prototype.onscroll=function(t){var n=this;n.isScrolling=!0,e.removeEventListener("scroll",n.onscroll,!0)},d.prototype.ontouchmove=function(t){var e=this;return void 0!==t.originalEvent.buttons&&0===t.originalEvent.buttons?void e.ontouchend(t):e.isScrolling?void(e.canTap=!1):(e.newPoints=a(t),void((e.opts||e.canPan)&&e.newPoints.length&&e.newPoints.length&&(e.isSwiping&&!0===e.isSwiping||t.preventDefault(),e.distanceX=s(e.newPoints[0],e.startPoints[0],"x"),e.distanceY=s(e.newPoints[0],e.startPoints[0],"y"),e.distance=s(e.newPoints[0],e.startPoints[0]),e.distance>0&&(e.isSwiping?e.onSwipe(t):e.isPanning?e.onPan():e.isZooming&&e.onZoom()))))},d.prototype.onSwipe=function(e){var a,s=this,r=s.instance,c=s.isSwiping,l=s.sliderStartPos.left||0;if(!0!==c)"x"==c&&(s.distanceX>0&&(s.instance.group.length<2||0===s.instance.current.index&&!s.instance.current.opts.loop)?l+=Math.pow(s.distanceX,.8):s.distanceX<0&&(s.instance.group.length<2||s.instance.current.index===s.instance.group.length-1&&!s.instance.current.opts.loop)?l-=Math.pow(-s.distanceX,.8):l+=s.distanceX),s.sliderLastPos={top:"x"==c?0:s.sliderStartPos.top+s.distanceY,left:l},s.requestId&&(i(s.requestId),s.requestId=null),s.requestId=o(function(){s.sliderLastPos&&(n.each(s.instance.slides,function(t,e){var o=e.pos-s.instance.currPos;n.fancybox.setTranslate(e.$slide,{top:s.sliderLastPos.top,left:s.sliderLastPos.left+o*s.canvasWidth+o*e.opts.gutter})}),s.$container.addClass("fancybox-is-sliding"))});else if(Math.abs(s.distance)>10){if(s.canTap=!1,r.group.length<2&&s.opts.vertical?s.isSwiping="y":r.isDragging||!1===s.opts.vertical||"auto"===s.opts.vertical&&n(t).width()>800?s.isSwiping="x":(a=Math.abs(180*Math.atan2(s.distanceY,s.distanceX)/Math.PI),s.isSwiping=a>45&&a<135?"y":"x"),"y"===s.isSwiping&&n.fancybox.isMobile&&s.isScrollable)return void(s.isScrolling=!0);r.isDragging=s.isSwiping,s.startPoints=s.newPoints,n.each(r.slides,function(t,e){var o,i;n.fancybox.stop(e.$slide),o=n.fancybox.getTranslate(e.$slide),i=n.fancybox.getTranslate(r.$refs.stage),e.$slide.css({transform:"",opacity:"","transition-duration":""}).removeClass("fancybox-animated").removeClass(function(t,e){return(e.match(/(^|\s)fancybox-fx-\S+/g)||[]).join(" ")}),e.pos===r.current.pos&&(s.sliderStartPos.top=o.top-i.top,s.sliderStartPos.left=o.left-i.left),n.fancybox.setTranslate(e.$slide,{top:o.top-i.top,left:o.left-i.left})}),r.SlideShow&&r.SlideShow.isActive&&r.SlideShow.stop()}},d.prototype.onPan=function(){var t=this;if(s(t.newPoints[0],t.realPoints[0])<(n.fancybox.isMobile?10:5))return void(t.startPoints=t.newPoints);t.canTap=!1,t.contentLastPos=t.limitMovement(),t.requestId&&i(t.requestId),t.requestId=o(function(){n.fancybox.setTranslate(t.$content,t.contentLastPos)})},d.prototype.limitMovement=function(){var t,e,n,o,i,a,s=this,r=s.canvasWidth,c=s.canvasHeight,l=s.distanceX,d=s.distanceY,u=s.contentStartPos,f=u.left,p=u.top,h=u.width,g=u.height;return i=h>r?f+l:f,a=p+d,t=Math.max(0,.5*r-.5*h),e=Math.max(0,.5*c-.5*g),n=Math.min(r-h,.5*r-.5*h),o=Math.min(c-g,.5*c-.5*g),l>0&&i>t&&(i=t-1+Math.pow(-t+f+l,.8)||0),l<0&&i0&&a>e&&(a=e-1+Math.pow(-e+p+d,.8)||0),d<0&&aa?(t=t>0?0:t,t=ts?(e=e>0?0:e,e=e1&&(o.dMs>130&&s>10||s>50);o.sliderLastPos=null,"y"==t&&!e&&Math.abs(o.distanceY)>50?(n.fancybox.animate(o.instance.current.$slide,{top:o.sliderStartPos.top+o.distanceY+150*o.velocityY,opacity:0},200),i=o.instance.close(!0,250)):r&&o.distanceX>0?i=o.instance.previous(300):r&&o.distanceX<0&&(i=o.instance.next(300)),!1!==i||"x"!=t&&"y"!=t||o.instance.centerSlide(200),o.$container.removeClass("fancybox-is-sliding")},d.prototype.endPanning=function(){var t,e,o,i=this;i.contentLastPos&&(!1===i.opts.momentum||i.dMs>350?(t=i.contentLastPos.left,e=i.contentLastPos.top):(t=i.contentLastPos.left+500*i.velocityX,e=i.contentLastPos.top+500*i.velocityY),o=i.limitPosition(t,e,i.contentStartPos.width,i.contentStartPos.height),o.width=i.contentStartPos.width,o.height=i.contentStartPos.height,n.fancybox.animate(i.$content,o,366))},d.prototype.endZooming=function(){var t,e,o,i,a=this,s=a.instance.current,r=a.newWidth,c=a.newHeight;a.contentLastPos&&(t=a.contentLastPos.left,e=a.contentLastPos.top,i={top:e,left:t,width:r,height:c,scaleX:1,scaleY:1},n.fancybox.setTranslate(a.$content,i),rs.width||c>s.height?a.instance.scaleToActual(a.centerPointStartX,a.centerPointStartY,150):(o=a.limitPosition(t,e,r,c),n.fancybox.animate(a.$content,o,150)))},d.prototype.onTap=function(e){var o,i=this,s=n(e.target),r=i.instance,c=r.current,l=e&&a(e)||i.startPoints,d=l[0]?l[0].x-n(t).scrollLeft()-i.stagePos.left:0,u=l[0]?l[0].y-n(t).scrollTop()-i.stagePos.top:0,f=function(t){var o=c.opts[t];if(n.isFunction(o)&&(o=o.apply(r,[c,e])),o)switch(o){case"close":r.close(i.startEvent);break;case"toggleControls":r.toggleControls();break;case"next":r.next();break;case"nextOrClose":r.group.length>1?r.next():r.close(i.startEvent);break;case"zoom":"image"==c.type&&(c.isLoaded||c.$ghost)&&(r.canPan()?r.scaleToFit():r.isScaledDown()?r.scaleToActual(d,u):r.group.length<2&&r.close(i.startEvent))}};if((!e.originalEvent||2!=e.originalEvent.button)&&(s.is("img")||!(d>s[0].clientWidth+s.offset().left))){if(s.is(".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container"))o="Outside";else if(s.is(".fancybox-slide"))o="Slide";else{if(!r.current.$content||!r.current.$content.find(s).addBack().filter(s).length)return;o="Content"}if(i.tapped){if(clearTimeout(i.tapped),i.tapped=null,Math.abs(d-i.tapX)>50||Math.abs(u-i.tapY)>50)return this;f("dblclick"+o)}else i.tapX=d,i.tapY=u,c.opts["dblclick"+o]&&c.opts["dblclick"+o]!==c.opts["click"+o]?i.tapped=setTimeout(function(){i.tapped=null,r.isAnimating||f("click"+o)},500):f("click"+o);return this}},n(e).on("onActivate.fb",function(t,e){e&&!e.Guestures&&(e.Guestures=new d(e))}).on("beforeClose.fb",function(t,e){e&&e.Guestures&&e.Guestures.destroy()})}(window,document,jQuery),function(t,e){"use strict";e.extend(!0,e.fancybox.defaults,{btnTpl:{slideShow:''},slideShow:{autoStart:!1,speed:3e3,progress:!0}});var n=function(t){this.instance=t,this.init()};e.extend(n.prototype,{timer:null,isActive:!1,$button:null,init:function(){var t=this,n=t.instance,o=n.group[n.currIndex].opts.slideShow;t.$button=n.$refs.toolbar.find("[data-fancybox-play]").on("click",function(){t.toggle()}),n.group.length<2||!o?t.$button.hide():o.progress&&(t.$progress=e('
').appendTo(n.$refs.inner))},set:function(t){var n=this,o=n.instance,i=o.current;i&&(!0===t||i.opts.loop||o.currIndex'},fullScreen:{autoStart:!1}}),e(t).on(n.fullscreenchange,function(){var t=o.isFullscreen(),n=e.fancybox.getInstance();n&&(n.current&&"image"===n.current.type&&n.isAnimating&&(n.isAnimating=!1,n.update(!0,!0,0),n.isComplete||n.complete()),n.trigger("onFullscreenChange",t),n.$refs.container.toggleClass("fancybox-is-fullscreen",t),n.$refs.toolbar.find("[data-fancybox-fullscreen]").toggleClass("fancybox-button--fsenter",!t).toggleClass("fancybox-button--fsexit",t))})}e(t).on({"onInit.fb":function(t,e){var i;if(!n)return void e.$refs.toolbar.find("[data-fancybox-fullscreen]").remove();e&&e.group[e.currIndex].opts.fullScreen?(i=e.$refs.container,i.on("click.fb-fullscreen","[data-fancybox-fullscreen]",function(t){t.stopPropagation(),t.preventDefault(),o.toggle()}),e.opts.fullScreen&&!0===e.opts.fullScreen.autoStart&&o.request(),e.FullScreen=o):e&&e.$refs.toolbar.find("[data-fancybox-fullscreen]").hide()},"afterKeydown.fb":function(t,e,n,o,i){e&&e.FullScreen&&70===i&&(o.preventDefault(),e.FullScreen.toggle())},"beforeClose.fb":function(t,e){e&&e.FullScreen&&e.$refs.container.hasClass("fancybox-is-fullscreen")&&o.exit()}})}(document,jQuery),function(t,e){"use strict";var n="fancybox-thumbs";e.fancybox.defaults=e.extend(!0,{btnTpl:{thumbs:''},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:".fancybox-container",axis:"y"}},e.fancybox.defaults);var o=function(t){this.init(t)};e.extend(o.prototype,{$button:null,$grid:null,$list:null,isVisible:!1,isActive:!1,init:function(t){var e=this,n=t.group,o=0;e.instance=t,e.opts=n[t.currIndex].opts.thumbs,t.Thumbs=e,e.$button=t.$refs.toolbar.find("[data-fancybox-thumbs]");for(var i=0,a=n.length;i1));i++);o>1&&e.opts?(e.$button.removeAttr("style").on("click",function(){e.toggle()}),e.isActive=!0):e.$button.hide()},create:function(){var t,o=this,i=o.instance,a=o.opts.parentEl,s=[];o.$grid||(o.$grid=e('
').appendTo(i.$refs.container.find(a).addBack().filter(a)),o.$grid.on("click","a",function(){i.jumpTo(e(this).attr("data-index"))})),o.$list||(o.$list=e('
').appendTo(o.$grid)),e.each(i.group,function(e,n){t=n.thumb,t||"image"!==n.type||(t=n.src),s.push('")}),o.$list[0].innerHTML=s.join(""),"x"===o.opts.axis&&o.$list.width(parseInt(o.$grid.css("padding-right"),10)+i.group.length*o.$list.children().eq(0).outerWidth(!0))},focus:function(t){var e,n,o=this,i=o.$list,a=o.$grid;o.instance.current&&(e=i.children().removeClass("fancybox-thumbs-active").filter('[data-index="'+o.instance.current.index+'"]').addClass("fancybox-thumbs-active"),n=e.position(),"y"===o.opts.axis&&(n.top<0||n.top>i.height()-e.outerHeight())?i.stop().animate({scrollTop:i.scrollTop()+n.top},t):"x"===o.opts.axis&&(n.lefta.scrollLeft()+(a.width()-e.outerWidth()))&&i.parent().stop().animate({scrollLeft:n.left},t))},update:function(){var t=this;t.instance.$refs.container.toggleClass("fancybox-show-thumbs",this.isVisible),t.isVisible?(t.$grid||t.create(),t.instance.trigger("onThumbsShow"),t.focus(0)):t.$grid&&t.instance.trigger("onThumbsHide"),t.instance.update()},hide:function(){this.isVisible=!1,this.update()},show:function(){this.isVisible=!0,this.update()},toggle:function(){this.isVisible=!this.isVisible,this.update()}}),e(t).on({"onInit.fb":function(t,e){var n;e&&!e.Thumbs&&(n=new o(e),n.isActive&&!0===n.opts.autoStart&&n.show())},"beforeShow.fb":function(t,e,n,o){var i=e&&e.Thumbs;i&&i.isVisible&&i.focus(o?0:250)},"afterKeydown.fb":function(t,e,n,o,i){var a=e&&e.Thumbs;a&&a.isActive&&71===i&&(o.preventDefault(),a.toggle())},"beforeClose.fb":function(t,e){var n=e&&e.Thumbs;n&&n.isVisible&&!1!==n.opts.hideOnClose&&n.$grid.hide()}})}(document,jQuery),function(t,e){"use strict";function n(t){var e={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(t).replace(/[&<>"'`=\/]/g,function(t){return e[t]})}e.extend(!0,e.fancybox.defaults,{btnTpl:{share:''},share:{url:function(t,e){return!t.currentHash&&"inline"!==e.type&&"html"!==e.type&&(e.origSrc||e.src)||window.location}, +tpl:''}}),e(t).on("click","[data-fancybox-share]",function(){var t,o,i=e.fancybox.getInstance(),a=i.current||null;a&&("function"===e.type(a.opts.share.url)&&(t=a.opts.share.url.apply(a,[i,a])),o=a.opts.share.tpl.replace(/\{\{media\}\}/g,"image"===a.type?encodeURIComponent(a.src):"").replace(/\{\{url\}\}/g,encodeURIComponent(t)).replace(/\{\{url_raw\}\}/g,n(t)).replace(/\{\{descr\}\}/g,i.$caption?encodeURIComponent(i.$caption.text()):""),e.fancybox.open({src:i.translate(i,o),type:"html",opts:{touch:!1,animationEffect:!1,afterLoad:function(t,e){i.$refs.container.one("beforeClose.fb",function(){t.close(null,0)}),e.$content.find(".fancybox-share__button").click(function(){return window.open(this.href,"Share","width=550, height=450"),!1})},mobile:{autoFocus:!1}}}))})}(document,jQuery),function(t,e,n){"use strict";function o(){var e=t.location.hash.substr(1),n=e.split("-"),o=n.length>1&&/^\+?\d+$/.test(n[n.length-1])?parseInt(n.pop(-1),10)||1:1,i=n.join("-");return{hash:e,index:o<1?1:o,gallery:i}}function i(t){""!==t.gallery&&n("[data-fancybox='"+n.escapeSelector(t.gallery)+"']").eq(t.index-1).focus().trigger("click.fb-start")}function a(t){var e,n;return!!t&&(e=t.current?t.current.opts:t.opts,""!==(n=e.hash||(e.$orig?e.$orig.data("fancybox")||e.$orig.data("fancybox-trigger"):""))&&n)}n.escapeSelector||(n.escapeSelector=function(t){return(t+"").replace(/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t})}),n(function(){!1!==n.fancybox.defaults.hash&&(n(e).on({"onInit.fb":function(t,e){var n,i;!1!==e.group[e.currIndex].opts.hash&&(n=o(),(i=a(e))&&n.gallery&&i==n.gallery&&(e.currIndex=n.index-1))},"beforeShow.fb":function(n,o,i,s){var r;i&&!1!==i.opts.hash&&(r=a(o))&&(o.currentHash=r+(o.group.length>1?"-"+(i.index+1):""),t.location.hash!=="#"+o.currentHash&&(s&&!o.origHash&&(o.origHash=t.location.hash),o.hashTimer&&clearTimeout(o.hashTimer),o.hashTimer=setTimeout(function(){"replaceState"in t.history?(t.history[s?"pushState":"replaceState"]({},e.title,t.location.pathname+t.location.search+"#"+o.currentHash),s&&(o.hasCreatedHistory=!0)):t.location.hash=o.currentHash,o.hashTimer=null},300)))},"beforeClose.fb":function(n,o,i){i&&!1!==i.opts.hash&&(clearTimeout(o.hashTimer),o.currentHash&&o.hasCreatedHistory?t.history.back():o.currentHash&&("replaceState"in t.history?t.history.replaceState({},e.title,t.location.pathname+t.location.search+(o.origHash||"")):t.location.hash=o.origHash),o.currentHash=null)}}),n(t).on("hashchange.fb",function(){var t=o(),e=null;n.each(n(".fancybox-container").get().reverse(),function(t,o){var i=n(o).data("FancyBox");if(i&&i.currentHash)return e=i,!1}),e?e.currentHash===t.gallery+"-"+t.index||1===t.index&&e.currentHash==t.gallery||(e.currentHash=null,e.close()):""!==t.gallery&&i(t)}),setTimeout(function(){n.fancybox.getInstance()||i(o())},50))})}(window,document,jQuery),function(t,e){"use strict";var n=(new Date).getTime();e(t).on({"onInit.fb":function(t,e,o){e.$refs.stage.on("mousewheel DOMMouseScroll wheel MozMousePixelScroll",function(t){var o=e.current,i=(new Date).getTime();e.group.length<2||!1===o.opts.wheel||"auto"===o.opts.wheel&&"image"!==o.type||(t.preventDefault(),t.stopPropagation(),o.$slide.hasClass("fancybox-animated")||(t=t.originalEvent||t,i-n<250||(n=i,e[(-t.deltaY||-t.deltaX||t.wheelDelta||-t.detail)<0?"next":"previous"]())))})}})}(document,jQuery); \ No newline at end of file diff --git a/fonts/icons.eot b/fonts/icons.eot new file mode 100644 index 0000000000000000000000000000000000000000..cc1d2869aba0e5f2ec60933eec453521670844dc GIT binary patch literal 2292 zcmcImO>7%g5T3U`cD#;l9LIKvqjVGFHmFk4jpHP!sM$kRH4UMtg%l2`b{!{nl-N0Th9HBy7d*QIhA`lWtC>#(%LPAQpf;h$Io44zdSo}*o`@J{w&Agd; zGyC@K&s{_>qYF~#WD~R_790S^5c#?xpC|+Hzo~u({u217%B%IQ0n+-w zm%$IO)QSb|4Rr|o4*0}sVQY;d1Y5ojz?;>=YU#_jR`WESi4JwuX*p!8=n%G(&Uz*f(i?m1hs>Q-snt&! zaSR4^p{NQl^H6UcwOYIgG)Y>ten@IqcigTZ0j=$<7duVVnn2ee0~uY@!mwzQhO8G!LbR5(t|_3xOJ!p{r;eS$a5&B zYb|nt7HPV!U5gmXo)L){M~g<}Q$`*=()3seD}+>NtBd=r6^ulJ$el3BRK8d9h>65S zM3hL10l1e@q=(Mr#wRAN00NVQc-r+S8f?GW@B$Ib&0Pl6n~!05Z9>U)UlA2|U57u{ zQNVQwXEFoq$cw~M4y3_dvFw>*o4O|0F+8X@-MM+Md9NLcCvqc1z3rBx;)ngs;h1e= zm(ptlNruN!cW1n9D>>=z-{K;~tthf@ar&(&3Sgz?f&zmG zK5ON8IVuP-FX#GM$^#DEapTQ&CceO29LI#%4AYU4IXWg55;03hlk;* zsbPl)@vFPaVT*Zh-&gO;#8hT;M|o*$KR0W`OrFgs`>9Mm7P8q4277AQWy=i{kjh!f&C+anAZh zyHv8&vR400UnNfMD~h5Tet%Cen2M&Xcsv~n_4<9jOsdh875sC#lS#dw%0!2vJ*UIr zL{}hC?C$P1W4)uN)KioFLJ{Ax{l8T~xllv#n@r zTQul3UWnHAEE#VI)5o4)K{_xu28I0eyhp3R&wI26y6Dk5Zou{%*#~^u!wu@gC5rdA z764*E;?fGP+?PCB1)lS04RqO~bzH)I9_<5u$)gP#r#qEmt;%<^cZbiH);B7(s%ec_ ze|&Lw=y$N!OG}$8h4qtP0UbJ*Yt_2BRH~NN3-!{1d3)QODc0s{wdx36mY)c9GVuvf k!Y2iPI25Rkc>&mM+Qv8|L!E;re{_r>yYe1Bp8k{cZ^L&-EC2ui literal 0 HcmV?d00001 diff --git a/fonts/icons.svg b/fonts/icons.svg new file mode 100644 index 0000000..1cfa97b --- /dev/null +++ b/fonts/icons.svg @@ -0,0 +1,16 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + \ No newline at end of file diff --git a/fonts/icons.ttf b/fonts/icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5736e1362000205f52090c98ac6d419145d45867 GIT binary patch literal 2136 zcmcIlO>7%Q6n?Wm-gq5*aU9#Fj?ztx+n`EGH;$7aP_u`sB8@_&7E*CQwd**xqr{F9 z7bSv&1=j*Spj1R0a)b(T?S;c0K}AR)p>jY72?;6Xj5x*Sd$a2hB2j)M#-5q?zV|!t zdB!A&C_-&g>B80P6O-0}{xguzFpK5&(nfmen>$2e2>i>{($)s{r@-^xS6$m#***W7 z0e+iEd%spGEuZ=JlN?c~AM)uM0OKw7A^1z+pQ)|4wuebO4Za3`Y^_-?X>Y2d;O~M@ zt(Uep$RhX(eFWZal-4U>zrDT({&U1=Y&5r8$P=S)mgS_X55!&4iIfkNFM+)0@8TEA zi!kdQ8v<$ndALLey6Sa3a#c(SxfZ=)OM;{E9D>Z>RjD;Z8gULL^^t;)Ap1b?9(KFZ z%03`Ti|$Wp4R*)<3KGz=j$sPX%yUxZ54|U23hj}nt|;%&2syAG7Wv8PIgyroVe0HT zM~sW?Xvh#TksM5=9d$63ADNtnC_6G5N;(I6#4sZI0q@a-u64-=x}@p4cGWVKJ=3zx z!xhu|f|19MH9Zl9g^&t8b#b4yB9;|F?SxIX@}pWrP9!cOqf}Z9BfQKaJ9@S-H9g~m zk(eaJvwlR;X8)abkce3A>@uL($qI0wAQMMI;R#qV%<2Sa9K{$ZnMVOs<%Sy6gsvJ3HpGBP{&GSC49Rp62K}D)c{`U(mlfqFVe9 z=TOMQ{c>^PC+H?o?x^-z{Gu)j|C>j1jF>PS%p~sFkm$8awp#Y;pXsZ_rF~UVRMRj9 zB9Tly<0O;WXmrpBg>sp8M|SY94WTq=rd@G)y(xr|-n7_)56~ls%gCIvZm2B1LN5bt8rA9{|%ooeg`@=H{JjM literal 0 HcmV?d00001 diff --git a/fonts/icons.woff b/fonts/icons.woff new file mode 100644 index 0000000000000000000000000000000000000000..d081f082c81dba9f37a2373cdcb35139111330a3 GIT binary patch literal 2212 zcmcIlO>7%g5T3U`-gq5*o7j#^9HpBWw?UN>Hja}ZP_qXVkwzg>3u!r^+I1Y;QDRq# z3yI(m0mlM8pj1R0a^OORI3e}Y!ydRGP^BWFa;Ojz5>m<)#3?r4yxpWxB+8G(v**2; zZ|2R+o7sK)=KSY58tHlk(4gCh$mSoXJy|`K?G7^YgXS)CH>dv*s zdJ}2AcW9@AQ`I}-Ch0`V$I7>mKlE4eE9FEO^3fqq9F>@NiS~5WYkTCXARtF8XhTMX zfcl_gz7I27^^r!CSWQ$)!B3FAr?>apZD0hRBrn=Or?g;)RA54%U}Z@!KBf>&JSRgx zj{js#p&jznCFOk@AP2kqMQ(I_N~GkPA3J@<5yK)g7&1gmBojR;M@{tP21duB$_xyK zlFptUF^q`5$7?jMYi;s@Hfg%9&0D6jV_KHEzhqipGxF$>rpKe$A*8{9xwy?%5zE3u zD1=S6@{?LXP9)ADqn?!LM|hb-C;|!oK zK*w`VF3TXw1p@|=e9p=9c61PG-p>7VlslZb=jU4pPBZgakpGOEpPkJsTRgjNI-5=J zZ}IGkLNp$adOQtHP7ZlIi9h^Z9(ybV=RSX17N$0v-!DjCyZKocZVK#1*-d8)@ujIi9^Nk(FZ>8yA<7=sK7%LfobdlS zG{=Yu!vQ7np7n`?R>@Y&Ui~wBmAJI8DT-O;nXJ@A!PmG*YPfqj+MLcBxe`|tvp@-tBoe!RW>A@B2h2JTn zaaZZbx6T-k*WfMSZv<{BIj~ROqj*Vp;2mL4M~CTae2BL}-qA?dK9LKV$&(f)C8(dO zv`asTWpPhA50pKc^agLlIEXBTV2aTfL0myPFh2){40<`>Rp8GCyav7$@H)Pt2RCvE z_*8(K)Jto8e`{eNCNw^;P>fy;cold);5G2ofYkar2@D~H#q%pctD>drtR6_y{ zs?+*Hd2PMcsN2r4Lkm + + + + + + + + diff --git a/images/apple-touch-icon-next.png b/images/apple-touch-icon-next.png new file mode 100644 index 0000000000000000000000000000000000000000..86a0d1d33bc2ae8a0416ebba67d1bbb60aa29c38 GIT binary patch literal 1544 zcmV+j2KV`iP)Px#OHfQyMIs_1FE20E)zv2_C(h2!$jHdT!ovUm|GT@p zWo2de_xJq#{8d#|IyyQ>M@Qx533`J9dBE>4W{r{KFjMLpp4N$2iMRJCGfPM7@le{)BPzVgz zp?ByVdWYVj|4-=tUS5SkR}Te{-Fr#UrxsqJ9+ed6YY9KmoXq6n^B9DRMwF@T2u)qH z!=wh-sAdPH_8fFy0-I1d68Zp);!FTtdweUZc2nr)?5^hh99w*FOU z@NYFT^!v%iPrGly0Q*+sLVtesYh+the|AET4WK8lR^dv1IZ-3FhAuiK5V|-?gf2#j z&_yW`x^K3G&OKl4kP$$ih@p!?B6M+)2(4Rz(6$=G6WT(;6uP)cgkEi(xI(Yi7`D(w zo(Y6r>FyarFV`4e&^@lk@PfWf|DSeM5}?agV`>aDXt-c%3^!*Ij0g0Q8X5*mjbRC$9oB0MOK51O_53LU8p`RzcozW; zx3wC>721@58xhdzx?E$}LW9xpjUu4UhOZO>Z8Us+D+1bR_}&sQXJ}B}yadb|8fraT zV|YUw4WF(>KpPF;mjp}*eTo5XG<+u!&}PFoihwq!uhI`XPYZ1{e1FDs0nqR?Ym5YF zqv0DwK${KUMFjNpqb>9(0vg8Y^d$otmiJc}L#s|8wD~Z~fHtQu8PG6DgwAq-&}PFY z1KMo(WI!7YpAcwxN`zJiV(2pgG_<|npE+y^Z8UsBppAx42(;Po$$&N*J{izP!?y+W zi2YsL=fkK`KXsymhWcmL#_y-S*Y&V_u#us^S9pDvbMSkxv7uidoc36Qa`CQ+5AC^d z=CTJ%0ZkrQ=v?t(E_)>OCL8YaU+nX$$--iAUNb;m^jBG2!5*5enU|exmY3aQcv=O- znjO}ft-yw2|VZs2g-W`Epf@n*5gsJ2LLtC^nFlq8+?%Xc!{Z3_|hFI~!oeU$ep z%4jE9Y9n1{ah68@W{++)8|fc~HIM4)QycHpg}3P<_K$M$L~}7jBXs?6bDwjvo+I;D zsoi}398La6+~*osM@45l#ptQ6MrZFz597*no3v)ffsUEletxWeW~`A+ntYvaeQj?e z*kSqGXZsrrhZ>IsxH$({IR{z11zkG`GR^j$#{%z41lp5(Ne#glJc5nj-BUaKR!X?# zzN6F-<0?&z;|30?9q0Z}oHG*G)Q)s%Db~RbjMU)mp-u&Dmm0zkF~o9eRh}p?ByVnjn4wmEZ*c=^{+H00012dQ@0+Qek%>aB^>E zX>4U6ba`-PAZc)PV*mhnoa6Eg2ys>@D9TUE%t_@^00ScnE@KN5BNI!L6ay0=M1VBI uWCJ6!R3OXP)X2ol#2my2%YaCrN-hBE7ZG&wLN%2D0000`v literal 0 HcmV?d00001 diff --git a/images/avatar.gif b/images/avatar.gif new file mode 100644 index 0000000000000000000000000000000000000000..989902574302a6378709709f7baab789b242ebbb GIT binary patch literal 2926 zcmc&#X;@R|5pPyvCW zxS$0@5JiQmxK`QsB_M$WA_QcYeMe9lZ0Wr}dhc_e`{&M&bH4e$cjld$Z|0nR&W@IN zN;}XF3;@8#j~_pL_)uG2-B4FoUt8ND7O$+V)Ya51EiH|{d$+i_*!T9Wq_eYKC>-eT zf8E^N+S1b0(C|hg>F(-k5eSx-mn9t?vokYub8~{m#<9`S@v*Uy;o+uG*m=Ns$m7Z(<0XJ@CTrt0hJW~Qen#>Z!7W?r|nh()5ofq~kZ znzy~Z9U{@v;$mk<$K=Gs^wd;;U*G)PobdJQcQP3nnVX#*8XTOMm=L$OkBp3rkB_%B zH+PD~0|Nu1wzg)0U~FuxOCnjApC29`Zfa~4wzdur4YjqlO1rx!CnrZoM^{%@YpSY% z|F^(bRSvkhgZ30YMfTof9m1thkJ0&{AKjnHCL$)Dze0da8WG`zb3?gtNpuF&=>(7N zdEzTF^~5nMo`$gA3+@Rags`|QI-dfDumaeDgb*TvLgV<+39|LtHWC4Tg7A+K5w>dw z;2I~1!=r;ZQ=ADEg~oywcvCbEjkQD@gBTRr42d#BqRmXu7y=4UK;yta1tDYO(T)&2 z>>dB)l4(Q)gU{y@kjUf5kDDGhGv)C7k!U;~k3?aR7>tPwVG5=Noacq2M2p|lsV3J-PV~M$fvNW^mT5gj2mZ$B01vGSPUM6`?t0P z5|2*db9iJ9Ct$q`+!-7`Cy>G6f+Q07r5lCHWUuKv*Y4<#l7TmvgH~-G|iV84!C`1kb;7jtK zzIVoJ&$S-_ptu@Fj);tkj){#sbM{<(LgM+PhjYk1v zGsMZRtu^i;cU2>iVRh6_@?3F;0OlZnzx#y!d~gIf&5;0V^2ZPv#gm6&+cXcmNJU&o z&BY_+;62cpY-oao^{Jt)Es*9!?bK7*rNGfL1#&){|Naq0_&{^RkZ&h9_SVx)!lAJz z{*xs0xX%-L5<%F5+6jn`AU!E+D8`7aA0@wh*sv2eHJ|vHv}n+`x?OyVNc0&Ko_kVt zkhXk&>G)8j%QiP`=w!J)_glm>SEtThN0zaF*D4Pg^?7*PB)nY?^vGNu{$w4ZH-D ztNExN)lDUZkh$*uL_Mk4=h`GIt>n5VBYFoU2oaVGrsnOe$ReZMcR-WWCkK)N`yvL< zw*$xngTwRMbDLQBH@Wfb(5<)0)eL$G(;d>Pik=vp2Sc;vxl3v$^urL zrr_`-?b6CPr2W2TWs;t=}soo-~^9Wg^} zJ!E_>lVqSC#jrKJTODx~KZHeWk87K5jg^ABst5E-f1y4KCRS_QC&K5!{V$5j#bmXl ze1<}~RZvyYPZFHm%a`AVOGs83>CgkueIHVRg3DMrBVR8_H>d*2huTS93jv!S)57|o zSKa$hT3iA!(9k9?xtmJbg2-rMu?|ZfZu4E15?t-+9Yuq9<344BLka#id+U`4HteuG2dWbiJ_6`m&dZYZv5zzh=hj8fOeP5?QRGqH102<_*#8ppi*Wv)eW-fPS zkpL?WuN!dFwzyzJ$vI($eCE1*Y@HZ;>(i4;d!0;k**l5mF z_+wi&oPy|Etioim$}WHC;K54h$wAxxbl_AiQ1ag82}aF0QZAC3$pCDgQJq|3#`EB4 zpD@zOiwvEp;hvLfX7O?Yo4CbHTcsaMAcpg?u#)PF8p}6Id@dD7c)FgK+taQ>q!(KM z)C+5UDbkf-&-H?4>%*BRqn@25L+soFIMlU7rIgfMei h5TAq1b#6H7J#$4=pJV>Grh$E8=BiZB9s~fZ-vK!n_o@H@ literal 0 HcmV?d00001 diff --git a/images/cc-by-nc-nd.svg b/images/cc-by-nc-nd.svg new file mode 100644 index 0000000..79a4f2e --- /dev/null +++ b/images/cc-by-nc-nd.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/images/cc-by-nc-sa.svg b/images/cc-by-nc-sa.svg new file mode 100644 index 0000000..bf6bc26 --- /dev/null +++ b/images/cc-by-nc-sa.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/images/cc-by-nc.svg b/images/cc-by-nc.svg new file mode 100644 index 0000000..3697349 --- /dev/null +++ b/images/cc-by-nc.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/images/cc-by-nd.svg b/images/cc-by-nd.svg new file mode 100644 index 0000000..934c61e --- /dev/null +++ b/images/cc-by-nd.svg @@ -0,0 +1,117 @@ + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/images/cc-by-sa.svg b/images/cc-by-sa.svg new file mode 100644 index 0000000..463276a --- /dev/null +++ b/images/cc-by-sa.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/images/cc-by.svg b/images/cc-by.svg new file mode 100644 index 0000000..4bccd14 --- /dev/null +++ b/images/cc-by.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/images/cc-zero.svg b/images/cc-zero.svg new file mode 100644 index 0000000..0f86639 --- /dev/null +++ b/images/cc-zero.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/favicon-16x16-next.png b/images/favicon-16x16-next.png new file mode 100644 index 0000000000000000000000000000000000000000..de8c5d3a5f8215c3f7b095c9e284e061bda65f86 GIT binary patch literal 435 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%A+0*}aIAe|4wj2{=>aRxHH1AIbUeKHFb!9Yn#DLy_vBO^maMdk0`zd#Zw z0tY~@yu3V6p{Ay$mX_Az$B+O0`?r4m`qisfPnj~MwY3$f@^9nqaG!lvI6;x#X;^) z4C~IxyaaMM3p^r=f%IJvW-JI^#13S11^9%x`eYU=fq|TyoQjGHgbgIWfB*jF%NI8{ zx2;>Zu3x`iO-&6bs0aoM3JPUqWq0n}*}Qo(P|Le_@AmKC57(%ytPE5IHwwrGiqzKD z{{8#c)YSCg!Gk}3{P_R>|Gj(no6k4eJyZq^Jd4Jw%*zpM57yY9pK zMcQgs21j>QigM54W!RCVazM0UCtHDVhG46xh5pA!(TqDDnlwLEm~eRS(JM@6p3293 zNMwDW(!P~x!s$%jghh-wOB)P19fJ88oOHECttPa5*~LF^Vp#0%pwrbyN~~|szWB|o z_J4%n&U>rEu5s2%I6jof{A;(j!|>g|;yo?%ZfFGheBJp^9_Zijs*s41pu}>8f};Gi z%$!t(lFEWqh0KDIWCn(cIgdZ_a1@4VXq@stea7=?5CgL^w_Y;0u(GiCWD#az1(ybs x!zs+ln?n>%-?(z($eANDN7zp{cr5VJV|XPlSn|oqbSlsa22WQ%mvv4FO#p=N1nU3* literal 0 HcmV?d00001 diff --git a/images/loading.gif b/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..efb6768db9d768e6c7322905ed131b4f184c23f8 GIT binary patch literal 35 ncmZ?wbhEHbWMp7uXkcLY|NlP&1A`6_1Nn>$3`|Tej11NQg@y&% literal 0 HcmV?d00001 diff --git a/images/logo.svg b/images/logo.svg new file mode 100644 index 0000000..cbb3937 --- /dev/null +++ b/images/logo.svg @@ -0,0 +1,23 @@ + +image/svg+xml diff --git a/images/placeholder.gif b/images/placeholder.gif new file mode 100644 index 0000000000000000000000000000000000000000..efb6768db9d768e6c7322905ed131b4f184c23f8 GIT binary patch literal 35 ncmZ?wbhEHbWMp7uXkcLY|NlP&1A`6_1Nn>$3`|Tej11NQg@y&% literal 0 HcmV?d00001 diff --git a/images/quote-l.svg b/images/quote-l.svg new file mode 100644 index 0000000..6dd94a4 --- /dev/null +++ b/images/quote-l.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/images/quote-r.svg b/images/quote-r.svg new file mode 100644 index 0000000..312b64d --- /dev/null +++ b/images/quote-r.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/images/searchicon.png b/images/searchicon.png new file mode 100644 index 0000000000000000000000000000000000000000..14a16cad3e0722952bae78768f4ef457dbfb4c0d GIT binary patch literal 766 zcmVJ#lUOPJ;Vj#I(msyiw!_!8!*~r|1AXz-KMD5FGF_S0z}juE=ksK$FPr z1&d6=n}oZS!R}eX;|zGLjbmV~Nw`Ru>4Ft5zJp65S7H)gs*T@)msa?=1Ab}a<$epu zBxfErz6xQZxgsL>$C|!~n1s{XcrJ@W*eDc5Y04!0Oq{=!{~=r{wr|KJd{-N11u66* z3cwbT>oo~?vuM~+6;iwzEYZded|?eIahvBNf7#%*3 zRS(z-F7h+W&)&suB^9-%Kl-?`PY%!G{OlE(5Vl((wXzQ`hO5n#ur4kQ_eA+8lfw2T wk(|G@S?Y{yH0NDkLt#Wf;(f|Me07*qoM6N<$f@1()lK=n! literal 0 HcmV?d00001 diff --git a/img/favicon.ico b/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..2bc085a32283aa41e2959e288b155af652132916 GIT binary patch literal 3437 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 P00000NkvXXu0mjfqF;SP literal 0 HcmV?d00001 diff --git a/img/icp.png b/img/icp.png new file mode 100644 index 0000000000000000000000000000000000000000..da43de10a30d847344f1f69b1acdcbea345cbcc3 GIT binary patch literal 16161 zcmeI3dsGuw9>+(8^61iPrAl?x5X7PqCX)~_F$8FWfDj6Z3Pq7&G9-Z{6OurJiuF-c zD85#FR;ydzh!!kpE8?p@up%6*mG!w4(PFVutgVVDJ4tw6VAeg`{bSFWIVZ{d?(cqo z_ukL_-CyRP$%%{zc5)oy2tkljXow`5{BQ9&xpz7h6iQf8iQM3laOJZakS|=m4%NCgK-tE zCM9}u@<^Xk&?*Q6p;r+7th>|Q@9GW8u>`ZHUm0#v_9HWUtTIa~Sa(QB=AS^U z!%+jFiy;V=$eLx59kXYM#SD*`N{x&#>cdDl}?3PkwVp+<}G(4?mYllOnw3G`is?+1)vJf`cWR>!Num^fHT0?>o?yyO;vi$Z?qn?nv8?hS%FP z>sIzWPaS2T_xTgbFhMe*Q=;jYH6F@>G~LIN?NB6LzhhKsmDxUc4J zD)ax3fUFHRk0E!SodOMg?Ngg8)FNO&S+9 zAHYlF0)SAPG%jjBfS1Mv0HHQ%T-1C3FO3TTLT%ExsQCb18W#YB+N5z&^8vgxE&vF% zN#mmC19)j%01#@E#zoBs@Y1*dAk-#}i<%GMrEvj3s7)FdH6OrB;{t$Cn=~$JK7g0T z1puKoXBZCKglOMgkY*$Iy?F_k5 zZcLV+w=2#)^{lSx7h$Xa^KJEQ{=r4+&)T@}1Z;XVGKd#xdoE4zbX4uiAo$uaudRxg z3;tPMz2V8B)?cw{M{M?lU(d>@nVEAgJ1pR!T}$Yke>epwZf*8I87~`F)bi=@IYjC2 z5xe&6th0YM{-N;cqF13e=UrNrryeA-`=j-@?WQ-wA3QUqp1-pH#)kX3GxO6%+f7{8 zSU6*@srHq}sTVuG|8Bb782_S7@yOa1n4KUfUeNYp^3u5DI?w8JUp*7~iCc~Z9le-j zI`zKip@`-ihjG<)JZW3o!}x&bzD3PHe}1IwqhVW8ntdgi{Q0?$M#Y_pTHtwUVYIDl z-A@e@gJTOmXSCGL79LG(I=$%IczD2FV&HG`vemgS{M0{{KW@JBpz^bWYbI|BIwr`g zHU2oF#AEa~EA`>_?t9j@Ja!4Y?_!v>rQ#3qj7qoq+ozD~TZV5<_x3dTOtQO6&5P#}zRl>5W%y!x;859rNJw5(gLVzy!YWR|mIEs<%uskFp{R zIen?LzUcC3dz7{6Zd}bLEjOIcET4L*g#CQ+fWy+lDcNT(#4Yg)-ZpZ;^bfZq`#0sS za1L}xtKFFEUAFnj>C3U9PCwQNv&(CcvSq7le1^`?nlSkYzHq|kabfjkE#t=>t#eDn zi;Sp`8#4ajkQ2f8clRmrngSr*7Y0?$i(7Q!^*=H=p5`$N8^q zTpH>gwsFZ%n}Y+QzI#zx81nl`+x1n&9-ob_^vn9>_$%Aus+=Kdk^9!zSFaq>__ZYE zqVn<5CGH0zjy;GdDg31V-K}nOst??`%Vqj+a| z?#e9Ns+?&XCpR+@W3DcK)RZamt2XP7+)udQa`~cjxUIXV+w*%4&|>w?eBJqN;bU%o zEpFm^>_)|$qe<`oX78wQV!HZ+M=J#xDHUgN3R`|DC;MbqA@ zY-|2-@Uq&uDZf71{q}(`9)*qiSzK^v-`4BPd3&*8kCzuLey8w*)mwM2%7{8VcK(${ zwWuyXH&;-(X43@7Z(+#z!e35)SSu4PKG?Io{YYs7`q_eb+Y61l!_oeu`sdD z!zt>T)3KqaCpp_K{ajq==w_4h<@#MMtlSZqPj|nob+fHqS9!fbkY!3txbSdO=FKw| zXL84xoKLvq-%2P+os}NkYP)auz52wNAD1m~*C##^$Gj4~o!vGs^rZ+AJhiV-b0)4Z Qzr-FI6d^hILE_?n0YJNZ`v3p{ literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..b01ee99 --- /dev/null +++ b/index.html @@ -0,0 +1,283 @@ + + + + + + + + Hexo - + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+
+
+
+
+
+ + Hexo +
+
+ + +
+ + + 关于 + +
+
+
+ +
+
+ + + + + +
+ + + + + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ diff --git a/js/clipboard/clipboard.min.js b/js/clipboard/clipboard.min.js new file mode 100644 index 0000000..54b3c46 --- /dev/null +++ b/js/clipboard/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 { + element.setAttribute('data-loading', 'false'); + }); + + [].forEach.call(document.getElementsByClassName('page'), + element => { + element.setAttribute('data-filter', 'false'); + }); +}; diff --git a/js/jquery-3.6.4.min.js b/js/jquery-3.6.4.min.js new file mode 100644 index 0000000..0de648e --- /dev/null +++ b/js/jquery-3.6.4.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.4 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.4",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.cssHas=ce(function(){try{return C.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),d.cssHas||y.push(":has"),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType&&e.documentElement||e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0', + '', + '
', + '', + '', + '', + '', + '
', + '
' + ].join(''); + + var box = $(html); + + $('body').append(box); + } + + $('.article-share-box.on').hide(); + + box.css({ + top: offset.top + 25, + left: offset.left + }).addClass('on'); + }).on('click', '.article-share-box', function(e){ + e.stopPropagation(); + }).on('click', '.article-share-box-input', function(){ + $(this).select(); + }).on('click', '.article-share-box-link', function(e){ + e.preventDefault(); + e.stopPropagation(); + + window.open(this.href, 'article-share-box-window-' + Date.now(), 'width=500,height=450'); + }); + + // Caption + $('.article-entry').each(function(i){ + $(this).find('img').each(function(){ + if ($(this).parent().hasClass('fancybox') || $(this).parent().is('a')) return; + + var alt = this.alt; + + if (alt) $(this).after('' + alt + ''); + + $(this).wrap('') + }); + + $(this).find('.fancybox').each(function(){ + $(this).attr('rel', 'article' + i); + }); + }); + + if ($.fancybox){ + $('.fancybox').fancybox(); + } + + // Mobile nav + var $container = $('#container'), + isMobileNavAnim = false, + mobileNavAnimDuration = 200; + + var startMobileNavAnim = function(){ + isMobileNavAnim = true; + }; + + var stopMobileNavAnim = function(){ + setTimeout(function(){ + isMobileNavAnim = false; + }, mobileNavAnimDuration); + } + + $('#main-nav-toggle').on('click', function(){ + if (isMobileNavAnim) return; + + startMobileNavAnim(); + $container.toggleClass('mobile-nav-on'); + stopMobileNavAnim(); + }); + + $('#wrap').on('click', function(){ + if (isMobileNavAnim || !$container.hasClass('mobile-nav-on')) return; + + $container.removeClass('mobile-nav-on'); + }); +})(jQuery); \ No newline at end of file diff --git a/js/smooth-corners.js b/js/smooth-corners.js new file mode 100644 index 0000000..ec9c890 --- /dev/null +++ b/js/smooth-corners.js @@ -0,0 +1,79 @@ +// Copied from https://github.com/wopian/smooth-corners and modified. +registerPaint("smooth-corners", class { + static get inputProperties() { + return ["--smooth-corners"]; + } + + superellipse(r, nX = 4, nY) { + if (Number.isNaN(nX)) nX = 4; + if (typeof nY === "undefined" || Number.isNaN(nY)) nY = nX; + if (nX > 100) nX = 100; + if (nY > 100) nY = 100; + if (nX < 0.00000000001) nX = 0.00000000001; + if (nY < 0.00000000001) nY = 0.00000000001; + + const nX2 = 2 / nX; + const nY2 = nY ? 2 / nY : nX2; + const steps = 360; + const step = (2 * Math.PI) / steps; + const points = t => { + const cosT = Math.cos(t); + const sinT = Math.sin(t); + return { + x: Math.abs(cosT) ** nX2 * r * Math.sign(cosT), + y: Math.abs(sinT) ** nY2 * r * Math.sign(sinT) + }; + }; + return Array.from({ length: steps }, (_, i) => points(i * step)); + } + + paint(ctx, geom, properties) { + const [nX, nY, r] = properties + .get("--smooth-corners") + .toString() + .replace(/ /g, "") + .split(","); + + const width = geom.width / 2; + const height = geom.height / 2; + let radius = 0.01 * r * width; + if (radius < 5) radius = 5; + let smooth = this.superellipse( + radius, + parseFloat(nX, 10), + parseFloat(nY, 10) + ); + + const offset = { + x: geom.width / 2 - radius, + y: geom.height / 2 - radius + }; + const offsetFunc = (x, y) => { + return function (item) { + item.x += x; + item.y += y; + return item; + } + } + + smooth = [].concat( + smooth.slice(0, 90).map(offsetFunc(offset.x, offset.y)), + smooth.slice(91, 180).map(offsetFunc(-offset.x, offset.y)), + smooth.slice(181, 270).map(offsetFunc(-offset.x, -offset.y)), + smooth.slice(271, 360).map(offsetFunc(offset.x, -offset.y)), + ); + + ctx.fillStyle = "#000"; + ctx.setTransform(1, 0, 0, 1, width, height); + ctx.beginPath(); + + for (let i = 0; i < smooth.length; i++) { + const { x, y } = smooth[i]; + if (i === 0) ctx.moveTo(x, y); + else ctx.lineTo(x, y); + } + + ctx.closePath(); + ctx.fill(); + } +}); \ No newline at end of file diff --git a/js/src/affix.js b/js/src/affix.js new file mode 100644 index 0000000..11a3d39 --- /dev/null +++ b/js/src/affix.js @@ -0,0 +1,162 @@ +/* ======================================================================== + * Bootstrap: affix.js v3.3.5 + * http://getbootstrap.com/javascript/#affix + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // AFFIX CLASS DEFINITION + // ====================== + + var Affix = function (element, options) { + this.options = $.extend({}, Affix.DEFAULTS, options) + + this.$target = $(this.options.target) + .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) + .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) + + this.$element = $(element) + this.affixed = null + this.unpin = null + this.pinnedOffset = null + + this.checkPosition() + } + + Affix.VERSION = '3.3.5' + + Affix.RESET = 'affix affix-top affix-bottom' + + Affix.DEFAULTS = { + offset: 0, + target: window + } + + Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + var targetHeight = this.$target.height() + + if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false + + if (this.affixed == 'bottom') { + if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' + return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' + } + + var initializing = this.affixed == null + var colliderTop = initializing ? scrollTop : position.top + var colliderHeight = initializing ? targetHeight : height + + if (offsetTop != null && scrollTop <= offsetTop) return 'top' + if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' + + return false + } + + Affix.prototype.getPinnedOffset = function () { + if (this.pinnedOffset) return this.pinnedOffset + this.$element.removeClass(Affix.RESET).addClass('affix') + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + return (this.pinnedOffset = position.top - scrollTop) + } + + Affix.prototype.checkPositionWithEventLoop = function () { + setTimeout($.proxy(this.checkPosition, this), 1) + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var height = this.$element.height() + var offset = this.options.offset + var offsetTop = offset.top + var offsetBottom = offset.bottom + var scrollHeight = Math.max($(document).height(), $(document.body).height()) + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) + + var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) + + if (this.affixed != affix) { + if (this.unpin != null) this.$element.css('top', '') + + var affixType = 'affix' + (affix ? '-' + affix : '') + var e = $.Event(affixType + '.bs.affix') + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + this.affixed = affix + this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null + + this.$element + .removeClass(Affix.RESET) + .addClass(affixType) + .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') + } + + if (affix == 'bottom') { + this.$element.offset({ + top: scrollHeight - height - offsetBottom + }) + } + } + + + // AFFIX PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.affix') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.affix + + $.fn.affix = Plugin + $.fn.affix.Constructor = Affix + + + // AFFIX NO CONFLICT + // ================= + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + // AFFIX DATA-API + // ============== + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + var data = $spy.data() + + data.offset = data.offset || {} + + if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom + if (data.offsetTop != null) data.offset.top = data.offsetTop + + Plugin.call($spy, data) + }) + }) + +}(jQuery); diff --git a/js/src/algolia-search.js b/js/src/algolia-search.js new file mode 100644 index 0000000..9787e2a --- /dev/null +++ b/js/src/algolia-search.js @@ -0,0 +1,115 @@ +/* global instantsearch: true */ +/*jshint camelcase: false */ + +$(document).ready(function () { + var algoliaSettings = CONFIG.algolia; + var isAlgoliaSettingsValid = algoliaSettings.applicationID && + algoliaSettings.apiKey && + algoliaSettings.indexName; + + if (!isAlgoliaSettingsValid) { + window.console.error('Algolia Settings are invalid.'); + return; + } + + var search = instantsearch({ + appId: algoliaSettings.applicationID, + apiKey: algoliaSettings.apiKey, + indexName: algoliaSettings.indexName, + searchFunction: function (helper) { + var searchInput = $('#algolia-search-input').find('input'); + + if (searchInput.val()) { + helper.search(); + } + } + }); + + // Registering Widgets + [ + instantsearch.widgets.searchBox({ + container: '#algolia-search-input', + placeholder: algoliaSettings.labels.input_placeholder + }), + + instantsearch.widgets.hits({ + container: '#algolia-hits', + hitsPerPage: algoliaSettings.hits.per_page || 10, + templates: { + item: function (data) { + var link = data.permalink ? data.permalink : (CONFIG.root + data.path); + return ( + '' + + data._highlightResult.title.value + + '' + ); + }, + empty: function (data) { + return ( + '
' + + algoliaSettings.labels.hits_empty.replace(/\$\{query}/, data.query) + + '
' + ); + } + }, + cssClasses: { + item: 'algolia-hit-item' + } + }), + + instantsearch.widgets.stats({ + container: '#algolia-stats', + templates: { + body: function (data) { + var stats = algoliaSettings.labels.hits_stats + .replace(/\$\{hits}/, data.nbHits) + .replace(/\$\{time}/, data.processingTimeMS); + return ( + stats + + '' + + ' Algolia' + + '' + + '
' + ); + } + } + }), + + instantsearch.widgets.pagination({ + container: '#algolia-pagination', + scrollTo: false, + showFirstLast: false, + labels: { + first: '', + last: '', + previous: '', + next: '' + }, + cssClasses: { + root: 'pagination', + item: 'pagination-item', + link: 'page-number', + active: 'current', + disabled: 'disabled-item' + } + }) + ].forEach(search.addWidget, search); + + search.start(); + + $('.popup-trigger').on('click', function(e) { + e.stopPropagation(); + $('body') + .append('
') + .css('overflow', 'hidden'); + $('.popup').toggle(); + $('#algolia-search-input').find('input').focus(); + }); + + $('.popup-btn-close').click(function(){ + $('.popup').hide(); + $('.algolia-pop-overlay').remove(); + $('body').css('overflow', ''); + }); + +}); diff --git a/js/src/bootstrap.js b/js/src/bootstrap.js new file mode 100644 index 0000000..d9c33ed --- /dev/null +++ b/js/src/bootstrap.js @@ -0,0 +1,52 @@ +/* global NexT: true */ + +$(document).ready(function () { + + $(document).trigger('bootstrap:before'); + + NexT.utils.isMobile() && window.FastClick.attach(document.body); + + NexT.utils.lazyLoadPostsImages(); + + NexT.utils.registerESCKeyEvent(); + + NexT.utils.registerBackToTop(); + + // Mobile top menu bar. + $('.site-nav-toggle button').on('click', function () { + var $siteNav = $('.site-nav'); + var ON_CLASS_NAME = 'site-nav-on'; + var isSiteNavOn = $siteNav.hasClass(ON_CLASS_NAME); + var animateAction = isSiteNavOn ? 'slideUp' : 'slideDown'; + var animateCallback = isSiteNavOn ? 'removeClass' : 'addClass'; + + $siteNav.stop()[animateAction]('fast', function () { + $siteNav[animateCallback](ON_CLASS_NAME); + }); + }); + + /** + * Register JS handlers by condition option. + * Need to add config option in Front-End at 'layout/_partials/head.swig' file. + */ + CONFIG.fancybox && NexT.utils.wrapImageWithFancyBox(); + CONFIG.tabs && NexT.utils.registerTabsTag(); + + NexT.utils.embeddedVideoTransformer(); + NexT.utils.addActiveClassToMenuItem(); + + + // Define Motion Sequence. + NexT.motion.integrator + .add(NexT.motion.middleWares.logo) + .add(NexT.motion.middleWares.menu) + .add(NexT.motion.middleWares.postList) + .add(NexT.motion.middleWares.sidebar); + + $(document).trigger('motion:before'); + + // Bootstrap Motion. + CONFIG.motion.enable && NexT.motion.integrator.bootstrap(); + + $(document).trigger('bootstrap:after'); +}); diff --git a/js/src/exturl.js b/js/src/exturl.js new file mode 100644 index 0000000..b85062a --- /dev/null +++ b/js/src/exturl.js @@ -0,0 +1,15 @@ +/* global NexT: true */ + +$(document).ready(function () { + + // Create Base64 Object + var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9+/=]/g,"");while(f>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/rn/g,"n");var t="";for(var n=0;n127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}}; + + $('.exturl').on('click', function () { + var $exturl = $(this).attr('data-url'); + var $decurl = Base64.decode($exturl); + window.open($decurl, '_blank'); + return false; + }); + +}); diff --git a/js/src/hook-duoshuo.js b/js/src/hook-duoshuo.js new file mode 100644 index 0000000..ca64dbd --- /dev/null +++ b/js/src/hook-duoshuo.js @@ -0,0 +1,115 @@ +/* global DUOSHUO: true */ +/* jshint camelcase: false */ + +typeof DUOSHUO !== 'undefined' ? + hookTemplate() : + ($('#duoshuo-script')[0].onload = hookTemplate); + + +function hookTemplate() { + var post = DUOSHUO.templates.post; + + DUOSHUO.templates.post = function (e, t) { + var rs = post(e, t); + var agent = e.post.agent; + var userId = e.post.author.user_id; + var admin = ''; + + if (userId && (userId == CONFIG.duoshuo.userId)) { + admin = '' + CONFIG.duoshuo.author + ''; + } + + if (agent && /^Mozilla/.test(agent)) { + rs = rs.replace(/<\/div>

/, admin + getAgentInfo(agent) + '

'); + } + + return rs; + }; +} + +function getAgentInfo(string) { + $.ua.set(string); + + var UNKNOWN = 'Unknown'; + var sua = $.ua; + var separator = isMobile() ? '

' : ''; + var osName = sua.os.name || UNKNOWN; + var osVersion = sua.os.version || UNKNOWN; + var browserName = sua.browser.name || UNKNOWN; + var browserVersion = sua.browser.version || UNKNOWN; + var iconMapping = { + os: { + android : 'android', + linux : 'linux', + windows : 'windows', + ios : 'apple', + 'mac os': 'apple', + unknown : 'desktop' + }, + browser: { + chrome : 'chrome', + chromium : 'chrome', + firefox : 'firefox', + opera : 'opera', + safari : 'safari', + ie : 'internet-explorer', + wechat : 'wechat', + qq : 'qq', + unknown : 'globe' + } + }; + var osIcon = iconMapping.os[osName.toLowerCase()]; + var browserIcon = iconMapping.browser[getBrowserKey()]; + + return separator + + '' + + '' + + osName + ' ' + osVersion + + '' + separator + + '' + + '' + + browserName + ' ' + browserVersion + + ''; + + function getBrowserKey () { + var key = browserName.toLowerCase(); + + if (key.match(/WeChat/i)) { + return 'wechat'; + } + + if (key.match(/QQBrowser/i)) { + return 'qq'; + } + + return key; + } + + function isMobile() { + var userAgent = window.navigator.userAgent; + + var isiPad = userAgent.match(/iPad/i) !== null; + var mobileUA = [ + 'iphone', 'android', 'phone', 'mobile', + 'wap', 'netfront', 'x11', 'java', 'opera mobi', + 'opera mini', 'ucweb', 'windows ce', 'symbian', + 'symbianos', 'series', 'webos', 'sony', + 'blackberry', 'dopod', 'nokia', 'samsung', + 'palmsource', 'xda', 'pieplus', 'meizu', + 'midp' ,'cldc' , 'motorola', 'foma', + 'docomo', 'up.browser', 'up.link', 'blazer', + 'helio', 'hosin', 'huawei', 'novarra', + 'coolpad', 'webos', 'techfaith', 'palmsource', + 'alcatel', 'amoi', 'ktouch', 'nexian', + 'ericsson', 'philips', 'sagem', 'wellcom', + 'bunjalloo', 'maui', 'smartphone', 'iemobile', + 'spice', 'bird', 'zte-', 'longcos', + 'pantech', 'gionee', 'portalmmm', 'jig browser', + 'hiptop', 'benq', 'haier', '^lct', + '320x320', '240x320', '176x220' + ]; + var pattern = new RegExp(mobileUA.join('|'), 'i'); + + return !isiPad && userAgent.match(pattern); + } +} diff --git a/js/src/js.cookie.js b/js/src/js.cookie.js new file mode 100644 index 0000000..c6c3975 --- /dev/null +++ b/js/src/js.cookie.js @@ -0,0 +1,165 @@ +/*! + * JavaScript Cookie v2.1.4 + * https://github.com/js-cookie/js-cookie + * + * Copyright 2006, 2015 Klaus Hartl & Fagner Brack + * Released under the MIT license + */ +;(function (factory) { + var registeredInModuleLoader = false; + if (typeof define === 'function' && define.amd) { + define(factory); + registeredInModuleLoader = true; + } + if (typeof exports === 'object') { + module.exports = factory(); + registeredInModuleLoader = true; + } + if (!registeredInModuleLoader) { + var OldCookies = window.Cookies; + var api = window.Cookies = factory(); + api.noConflict = function () { + window.Cookies = OldCookies; + return api; + }; + } +}(function () { + function extend () { + var i = 0; + var result = {}; + for (; i < arguments.length; i++) { + var attributes = arguments[ i ]; + for (var key in attributes) { + result[key] = attributes[key]; + } + } + return result; + } + + function init (converter) { + function api (key, value, attributes) { + var result; + if (typeof document === 'undefined') { + return; + } + + // Write + + if (arguments.length > 1) { + attributes = extend({ + path: '/' + }, api.defaults, attributes); + + if (typeof attributes.expires === 'number') { + var expires = new Date(); + expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5); + attributes.expires = expires; + } + + // We're using "expires" because "max-age" is not supported by IE + attributes.expires = attributes.expires ? attributes.expires.toUTCString() : ''; + + try { + result = JSON.stringify(value); + if (/^[\{\[]/.test(result)) { + value = result; + } + } catch (e) {} + + if (!converter.write) { + value = encodeURIComponent(String(value)) + .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent); + } else { + value = converter.write(value, key); + } + + key = encodeURIComponent(String(key)); + key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent); + key = key.replace(/[\(\)]/g, escape); + + var stringifiedAttributes = ''; + + for (var attributeName in attributes) { + if (!attributes[attributeName]) { + continue; + } + stringifiedAttributes += '; ' + attributeName; + if (attributes[attributeName] === true) { + continue; + } + stringifiedAttributes += '=' + attributes[attributeName]; + } + return (document.cookie = key + '=' + value + stringifiedAttributes); + } + + // Read + + if (!key) { + result = {}; + } + + // To prevent the for loop in the first place assign an empty array + // in case there are no cookies at all. Also prevents odd result when + // calling "get()" + var cookies = document.cookie ? document.cookie.split('; ') : []; + var rdecode = /(%[0-9A-Z]{2})+/g; + var i = 0; + + for (; i < cookies.length; i++) { + var parts = cookies[i].split('='); + var cookie = parts.slice(1).join('='); + + if (cookie.charAt(0) === '"') { + cookie = cookie.slice(1, -1); + } + + try { + var name = parts[0].replace(rdecode, decodeURIComponent); + cookie = converter.read ? + converter.read(cookie, name) : converter(cookie, name) || + cookie.replace(rdecode, decodeURIComponent); + + if (this.json) { + try { + cookie = JSON.parse(cookie); + } catch (e) {} + } + + if (key === name) { + result = cookie; + break; + } + + if (!key) { + result[name] = cookie; + } + } catch (e) {} + } + + return result; + } + + api.set = api; + api.get = function (key) { + return api.call(api, key); + }; + api.getJSON = function () { + return api.apply({ + json: true + }, [].slice.call(arguments)); + }; + api.defaults = {}; + + api.remove = function (key, attributes) { + api(key, '', extend(attributes, { + expires: -1 + })); + }; + + api.withConverter = init; + + return api; + } + + return init(function () {}); +})); diff --git a/js/src/motion.js b/js/src/motion.js new file mode 100644 index 0000000..1129179 --- /dev/null +++ b/js/src/motion.js @@ -0,0 +1,352 @@ +/* global NexT: true */ + +$(document).ready(function () { + NexT.motion = {}; + + var sidebarToggleLines = { + lines: [], + push: function (line) { + this.lines.push(line); + }, + init: function () { + this.lines.forEach(function (line) { + line.init(); + }); + }, + arrow: function () { + this.lines.forEach(function (line) { + line.arrow(); + }); + }, + close: function () { + this.lines.forEach(function (line) { + line.close(); + }); + } + }; + + function SidebarToggleLine(settings) { + this.el = $(settings.el); + this.status = $.extend({}, { + init: { + width: '100%', + opacity: 1, + left: 0, + rotateZ: 0, + top: 0 + } + }, settings.status); + } + + SidebarToggleLine.prototype.init = function () { + this.transform('init'); + }; + SidebarToggleLine.prototype.arrow = function () { + this.transform('arrow'); + }; + SidebarToggleLine.prototype.close = function () { + this.transform('close'); + }; + SidebarToggleLine.prototype.transform = function (status) { + this.el.velocity('stop').velocity(this.status[status]); + }; + + var sidebarToggleLine1st = new SidebarToggleLine({ + el: '.sidebar-toggle-line-first', + status: { + arrow: {width: '50%', rotateZ: '-45deg', top: '2px'}, + close: {width: '100%', rotateZ: '-45deg', top: '5px'} + } + }); + var sidebarToggleLine2nd = new SidebarToggleLine({ + el: '.sidebar-toggle-line-middle', + status: { + arrow: {width: '90%'}, + close: {opacity: 0} + } + }); + var sidebarToggleLine3rd = new SidebarToggleLine({ + el: '.sidebar-toggle-line-last', + status: { + arrow: {width: '50%', rotateZ: '45deg', top: '-2px'}, + close: {width: '100%', rotateZ: '45deg', top: '-5px'} + } + }); + + sidebarToggleLines.push(sidebarToggleLine1st); + sidebarToggleLines.push(sidebarToggleLine2nd); + sidebarToggleLines.push(sidebarToggleLine3rd); + + var SIDEBAR_WIDTH = '320px'; + var SIDEBAR_DISPLAY_DURATION = 200; + var xPos, yPos; + + var sidebarToggleMotion = { + toggleEl: $('.sidebar-toggle'), + dimmerEl: $('#sidebar-dimmer'), + sidebarEl: $('.sidebar'), + isSidebarVisible: false, + init: function () { + this.toggleEl.on('click', this.clickHandler.bind(this)); + this.dimmerEl.on('click', this.clickHandler.bind(this)); + this.toggleEl.on('mouseenter', this.mouseEnterHandler.bind(this)); + this.toggleEl.on('mouseleave', this.mouseLeaveHandler.bind(this)); + this.sidebarEl.on('touchstart', this.touchstartHandler.bind(this)); + this.sidebarEl.on('touchend', this.touchendHandler.bind(this)); + this.sidebarEl.on('touchmove', function(e){e.preventDefault();}); + + $(document) + .on('sidebar.isShowing', function () { + NexT.utils.isDesktop() && $('body').velocity('stop').velocity( + {paddingRight: SIDEBAR_WIDTH}, + SIDEBAR_DISPLAY_DURATION + ); + }) + .on('sidebar.isHiding', function () { + }); + }, + clickHandler: function () { + this.isSidebarVisible ? this.hideSidebar() : this.showSidebar(); + this.isSidebarVisible = !this.isSidebarVisible; + }, + mouseEnterHandler: function () { + if (this.isSidebarVisible) { + return; + } + sidebarToggleLines.arrow(); + }, + mouseLeaveHandler: function () { + if (this.isSidebarVisible) { + return; + } + sidebarToggleLines.init(); + }, + touchstartHandler: function(e) { + xPos = e.originalEvent.touches[0].clientX; + yPos = e.originalEvent.touches[0].clientY; + }, + touchendHandler: function(e) { + var _xPos = e.originalEvent.changedTouches[0].clientX; + var _yPos = e.originalEvent.changedTouches[0].clientY; + if (_xPos-xPos > 30 && Math.abs(_yPos-yPos) < 20) { + this.clickHandler(); + } + }, + showSidebar: function () { + var self = this; + + sidebarToggleLines.close(); + + this.sidebarEl.velocity('stop').velocity({ + width: SIDEBAR_WIDTH + }, { + display: 'block', + duration: SIDEBAR_DISPLAY_DURATION, + begin: function () { + $('.sidebar .motion-element').velocity( + 'transition.slideRightIn', + { + stagger: 50, + drag: true, + complete: function () { + self.sidebarEl.trigger('sidebar.motion.complete'); + } + } + ); + }, + complete: function () { + self.sidebarEl.addClass('sidebar-active'); + self.sidebarEl.trigger('sidebar.didShow'); + } + } + ); + + this.sidebarEl.trigger('sidebar.isShowing'); + }, + hideSidebar: function () { + NexT.utils.isDesktop() && $('body').velocity('stop').velocity({paddingRight: 0}); + this.sidebarEl.find('.motion-element').velocity('stop').css('display', 'none'); + this.sidebarEl.velocity('stop').velocity({width: 0}, {display: 'none'}); + + sidebarToggleLines.init(); + + this.sidebarEl.removeClass('sidebar-active'); + this.sidebarEl.trigger('sidebar.isHiding'); + + // Prevent adding TOC to Overview if Overview was selected when close & open sidebar. + if (!!$('.post-toc-wrap')) { + if ($('.site-overview-wrap').css('display') === 'block') { + $('.post-toc-wrap').removeClass('motion-element'); + } else { + $('.post-toc-wrap').addClass('motion-element'); + } + } + } + }; + sidebarToggleMotion.init(); + + NexT.motion.integrator = { + queue: [], + cursor: -1, + add: function (fn) { + this.queue.push(fn); + return this; + }, + next: function () { + this.cursor++; + var fn = this.queue[this.cursor]; + $.isFunction(fn) && fn(NexT.motion.integrator); + }, + bootstrap: function () { + this.next(); + } + }; + + NexT.motion.middleWares = { + logo: function (integrator) { + var sequence = []; + var $brand = $('.brand'); + var $title = $('.site-title'); + var $subtitle = $('.site-subtitle'); + var $logoLineTop = $('.logo-line-before i'); + var $logoLineBottom = $('.logo-line-after i'); + + $brand.size() > 0 && sequence.push({ + e: $brand, + p: {opacity: 1}, + o: {duration: 200} + }); + + NexT.utils.isMist() && hasElement([$logoLineTop, $logoLineBottom]) && + sequence.push( + getMistLineSettings($logoLineTop, '100%'), + getMistLineSettings($logoLineBottom, '-100%') + ); + + hasElement($title) && sequence.push({ + e: $title, + p: {opacity: 1, top: 0}, + o: { duration: 200 } + }); + + hasElement($subtitle) && sequence.push({ + e: $subtitle, + p: {opacity: 1, top: 0}, + o: {duration: 200} + }); + + if (CONFIG.motion.async) { + integrator.next(); + } + + if (sequence.length > 0) { + sequence[sequence.length - 1].o.complete = function () { + integrator.next(); + }; + $.Velocity.RunSequence(sequence); + } else { + integrator.next(); + } + + + function getMistLineSettings (element, translateX) { + return { + e: $(element), + p: {translateX: translateX}, + o: { + duration: 500, + sequenceQueue: false + } + }; + } + + /** + * Check if $elements exist. + * @param {jQuery|Array} $elements + * @returns {boolean} + */ + function hasElement ($elements) { + $elements = Array.isArray($elements) ? $elements : [$elements]; + return $elements.every(function ($element) { + return $.isFunction($element.size) && $element.size() > 0; + }); + } + }, + + menu: function (integrator) { + + if (CONFIG.motion.async) { + integrator.next(); + } + + $('.menu-item').velocity('transition.slideDownIn', { + display: null, + duration: 200, + complete: function () { + integrator.next(); + } + }); + }, + + postList: function (integrator) { + //var $post = $('.post'); + var $postBlock = $('.post-block, .pagination, .comments'); + var $postBlockTransition = CONFIG.motion.transition.post_block; + var $postHeader = $('.post-header'); + var $postHeaderTransition = CONFIG.motion.transition.post_header; + var $postBody = $('.post-body'); + var $postBodyTransition = CONFIG.motion.transition.post_body; + var $collHeader = $('.collection-title, .archive-year'); + var $collHeaderTransition = CONFIG.motion.transition.coll_header; + var $sidebarAffix = $('.sidebar-inner'); + var $sidebarAffixTransition = CONFIG.motion.transition.sidebar; + var hasPost = $postBlock.size() > 0; + + hasPost ? postMotion() : integrator.next(); + + if (CONFIG.motion.async) { + integrator.next(); + } + + function postMotion () { + var postMotionOptions = window.postMotionOptions || { + stagger: 100, + drag: true + }; + postMotionOptions.complete = function () { + // After motion complete need to remove transform from sidebar to let affix work on Pisces | Gemini. + if (CONFIG.motion.transition.sidebar && (NexT.utils.isPisces() || NexT.utils.isGemini())) { + $sidebarAffix.css({ 'transform': 'initial' }); + } + integrator.next(); + }; + + //$post.velocity('transition.slideDownIn', postMotionOptions); + if (CONFIG.motion.transition.post_block) { + $postBlock.velocity('transition.' + $postBlockTransition, postMotionOptions); + } + if (CONFIG.motion.transition.post_header) { + $postHeader.velocity('transition.' + $postHeaderTransition, postMotionOptions); + } + if (CONFIG.motion.transition.post_body) { + $postBody.velocity('transition.' + $postBodyTransition, postMotionOptions); + } + if (CONFIG.motion.transition.coll_header) { + $collHeader.velocity('transition.' + $collHeaderTransition, postMotionOptions); + } + // Only for Pisces | Gemini. + if (CONFIG.motion.transition.sidebar && (NexT.utils.isPisces() || NexT.utils.isGemini())) { + $sidebarAffix.velocity('transition.' + $sidebarAffixTransition, postMotionOptions); + } + } + }, + + sidebar: function (integrator) { + if (CONFIG.sidebar.display === 'always') { + NexT.utils.displaySidebar(); + } + integrator.next(); + } + }; + +}); diff --git a/js/src/post-details.js b/js/src/post-details.js new file mode 100644 index 0000000..a82bcc2 --- /dev/null +++ b/js/src/post-details.js @@ -0,0 +1,99 @@ +/* global NexT: true */ + +$(document).ready(function () { + + initScrollSpy(); + + function initScrollSpy () { + var tocSelector = '.post-toc'; + var $tocElement = $(tocSelector); + var activeCurrentSelector = '.active-current'; + + $tocElement + .on('activate.bs.scrollspy', function () { + var $currentActiveElement = $(tocSelector + ' .active').last(); + + removeCurrentActiveClass(); + $currentActiveElement.addClass('active-current'); + + // Scrolling to center active TOC element if TOC content is taller then viewport. + $tocElement.scrollTop($currentActiveElement.offset().top - $tocElement.offset().top + $tocElement.scrollTop() - ($tocElement.height() / 2)); + }) + .on('clear.bs.scrollspy', removeCurrentActiveClass); + + $('body').scrollspy({ target: tocSelector }); + + function removeCurrentActiveClass () { + $(tocSelector + ' ' + activeCurrentSelector) + .removeClass(activeCurrentSelector.substring(1)); + } + } + +}); + +$(document).ready(function () { + var html = $('html'); + var TAB_ANIMATE_DURATION = 200; + var hasVelocity = $.isFunction(html.velocity); + + $('.sidebar-nav li').on('click', function () { + var item = $(this); + var activeTabClassName = 'sidebar-nav-active'; + var activePanelClassName = 'sidebar-panel-active'; + if (item.hasClass(activeTabClassName)) { + return; + } + + var currentTarget = $('.' + activePanelClassName); + var target = $('.' + item.data('target')); + + hasVelocity ? + currentTarget.velocity('transition.slideUpOut', TAB_ANIMATE_DURATION, function () { + target + .velocity('stop') + .velocity('transition.slideDownIn', TAB_ANIMATE_DURATION) + .addClass(activePanelClassName); + }) : + currentTarget.animate({ opacity: 0 }, TAB_ANIMATE_DURATION, function () { + currentTarget.hide(); + target + .stop() + .css({'opacity': 0, 'display': 'block'}) + .animate({ opacity: 1 }, TAB_ANIMATE_DURATION, function () { + currentTarget.removeClass(activePanelClassName); + target.addClass(activePanelClassName); + }); + }); + + item.siblings().removeClass(activeTabClassName); + item.addClass(activeTabClassName); + }); + + // TOC item animation navigate & prevent #item selector in adress bar. + $('.post-toc a').on('click', function (e) { + e.preventDefault(); + var targetSelector = NexT.utils.escapeSelector(this.getAttribute('href')); + var offset = $(targetSelector).offset().top; + + hasVelocity ? + html.velocity('stop').velocity('scroll', { + offset: offset + 'px', + mobileHA: false + }) : + $('html, body').stop().animate({ + scrollTop: offset + }, 500); + }); + + // Expand sidebar on post detail page by default, when post has a toc. + var $tocContent = $('.post-toc-content'); + var isSidebarCouldDisplay = CONFIG.sidebar.display === 'post' || + CONFIG.sidebar.display === 'always'; + var hasTOC = $tocContent.length > 0 && $tocContent.html().trim().length > 0; + if (isSidebarCouldDisplay && hasTOC) { + CONFIG.motion.enable ? + (NexT.motion.middleWares.sidebar = function () { + NexT.utils.displaySidebar(); + }) : NexT.utils.displaySidebar(); + } +}); diff --git a/js/src/schemes/pisces.js b/js/src/schemes/pisces.js new file mode 100644 index 0000000..0e6e426 --- /dev/null +++ b/js/src/schemes/pisces.js @@ -0,0 +1,57 @@ +$(document).ready(function () { + + var sidebarInner = $('.sidebar-inner'); + + initAffix(); + resizeListener(); + + function initAffix () { + var headerOffset = getHeaderOffset(), + footerOffset = getFooterOffset(), + sidebarHeight = $('#sidebar').height() + NexT.utils.getSidebarb2tHeight(), + contentHeight = $('#content').height(); + + // Not affix if sidebar taller then content (to prevent bottom jumping). + if (headerOffset + sidebarHeight < contentHeight) { + sidebarInner.affix({ + offset: { + top: headerOffset - CONFIG.sidebar.offset, + bottom: footerOffset + } + }); + } + + setSidebarMarginTop(headerOffset).css({ 'margin-left': 'initial' }); + } + + function resizeListener () { + var mql = window.matchMedia('(min-width: 991px)'); + mql.addListener(function(e){ + if(e.matches){ + recalculateAffixPosition(); + } + }); + } + + function getHeaderOffset () { + return $('.header-inner').height() + CONFIG.sidebar.offset; + } + + function getFooterOffset () { + var footerInner = $('.footer-inner'), + footerMargin = footerInner.outerHeight(true) - footerInner.outerHeight(), + footerOffset = footerInner.outerHeight(true) + footerMargin; + return footerOffset; + } + + function setSidebarMarginTop (headerOffset) { + return $('#sidebar').css({ 'margin-top': headerOffset }); + } + + function recalculateAffixPosition () { + $(window).off('.affix'); + sidebarInner.removeData('bs.affix').removeClass('affix affix-top affix-bottom'); + initAffix(); + } + +}); diff --git a/js/src/scroll-cookie.js b/js/src/scroll-cookie.js new file mode 100644 index 0000000..34ff200 --- /dev/null +++ b/js/src/scroll-cookie.js @@ -0,0 +1,23 @@ +$(document).ready(function() { + + // Set relative link path (without domain) + var rpath = window.location.href.replace(window.location.origin, ""); + + // Write position in cookie + var timeout; + $(window).on("scroll", function() { + clearTimeout(timeout); + timeout = setTimeout(function () { + Cookies.set("scroll-cookie", ($(window).scrollTop() + "|" + rpath), { expires: 365, path: '' }); + }, 250); + }); + + // Read position from cookie + if (Cookies.get("scroll-cookie") !== undefined) { + var cvalues = Cookies.get("scroll-cookie").split('|'); + if (cvalues[1] == rpath) { + $(window).scrollTop(cvalues[0]); + } + } + +}); diff --git a/js/src/scrollspy.js b/js/src/scrollspy.js new file mode 100644 index 0000000..f5c5c6c --- /dev/null +++ b/js/src/scrollspy.js @@ -0,0 +1,182 @@ +/* ======================================================================== +* Bootstrap: scrollspy.js v3.3.2 +* http://getbootstrap.com/javascript/#scrollspy +* ======================================================================== +* Copyright 2011-2015 Twitter, Inc. +* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) +* ======================================================================== */ + +/** + * Custom by iissnan + * + * - Add a `clear.bs.scrollspy` event. + * - Esacpe targets selector. + */ + + ++function ($) { + 'use strict'; + + // SCROLLSPY CLASS DEFINITION + // ========================== + + function ScrollSpy(element, options) { + this.$body = $(document.body) + this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) + this.options = $.extend({}, ScrollSpy.DEFAULTS, options) + this.selector = (this.options.target || '') + ' .nav li > a' + this.offsets = [] + this.targets = [] + this.activeTarget = null + this.scrollHeight = 0 + + this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) + this.refresh() + this.process() + } + + ScrollSpy.VERSION = '3.3.2' + + ScrollSpy.DEFAULTS = { + offset: 10 + } + + ScrollSpy.prototype.getScrollHeight = function () { + return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) + } + + ScrollSpy.prototype.refresh = function () { + var that = this + var offsetMethod = 'offset' + var offsetBase = 0 + + this.offsets = [] + this.targets = [] + this.scrollHeight = this.getScrollHeight() + + if (!$.isWindow(this.$scrollElement[0])) { + offsetMethod = 'position' + offsetBase = this.$scrollElement.scrollTop() + } + + this.$body + .find(this.selector) + .map(function () { + var $el = $(this) + var href = $el.data('target') || $el.attr('href') + var $href = /^#./.test(href) && $(NexT.utils.escapeSelector(href)) // Need to escape selector. + + return ($href + && $href.length + && $href.is(':visible') + && [[$href[offsetMethod]().top + offsetBase, href]]) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + that.offsets.push(this[0]) + that.targets.push(this[1]) + }) + + + } + + ScrollSpy.prototype.process = function () { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + var scrollHeight = this.getScrollHeight() + var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() + var offsets = this.offsets + var targets = this.targets + var activeTarget = this.activeTarget + var i + + if (this.scrollHeight != scrollHeight) { + this.refresh() + } + + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) + } + + if (activeTarget && scrollTop < offsets[0]) { + $(this.selector).trigger('clear.bs.scrollspy') // Add a custom event. + this.activeTarget = null + return this.clear() + } + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (!offsets[i + 1] || scrollTop <= offsets[i + 1]) + && this.activate(targets[i]) + } + } + + ScrollSpy.prototype.activate = function (target) { + this.activeTarget = target + + this.clear() + + var selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + var active = $(selector) + .parents('li') + .addClass('active') + + if (active.parent('.dropdown-menu').length) { + active = active + .closest('li.dropdown') + .addClass('active') + } + + active.trigger('activate.bs.scrollspy') + } + + ScrollSpy.prototype.clear = function () { + $(this.selector) + .parentsUntil(this.options.target, '.active') + .removeClass('active') + } + + + // SCROLLSPY PLUGIN DEFINITION + // =========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.scrollspy') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.scrollspy + + $.fn.scrollspy = Plugin + $.fn.scrollspy.Constructor = ScrollSpy + + + // SCROLLSPY NO CONFLICT + // ===================== + + $.fn.scrollspy.noConflict = function () { + $.fn.scrollspy = old + return this + } + + + // SCROLLSPY DATA-API + // ================== + + $(window).on('load.bs.scrollspy.data-api', function () { + $('[data-spy="scroll"]').each(function () { + var $spy = $(this) + Plugin.call($spy, $spy.data()) + }) + }) + +}(jQuery); diff --git a/js/src/utils.js b/js/src/utils.js new file mode 100644 index 0000000..c1621ef --- /dev/null +++ b/js/src/utils.js @@ -0,0 +1,339 @@ +/* global NexT: true */ + +NexT.utils = NexT.$u = { + /** + * Wrap images with fancybox support. + */ + wrapImageWithFancyBox: function () { + $('.content img') + .not('[hidden]') + .not('.group-picture img, .post-gallery img') + .each(function () { + var $image = $(this); + var imageTitle = $image.attr('title'); + var $imageWrapLink = $image.parent('a'); + + if ($imageWrapLink.size() < 1) { + var imageLink = ($image.attr('data-original')) ? this.getAttribute('data-original') : this.getAttribute('src'); + $imageWrapLink = $image.wrap('').parent('a'); + } + + $imageWrapLink.addClass('fancybox fancybox.image'); + $imageWrapLink.attr('rel', 'group'); + + if (imageTitle) { + $imageWrapLink.append('

' + imageTitle + '

'); + + //make sure img title tag will show correctly in fancybox + $imageWrapLink.attr('title', imageTitle); + } + }); + + $('.fancybox').fancybox({ + helpers: { + overlay: { + locked: false + } + } + }); + }, + + lazyLoadPostsImages: function () { + $('#posts').find('img').lazyload({ + //placeholder: '/images/loading.gif', + effect: 'fadeIn', + threshold : 0 + }); + }, + + /** + * Tabs tag listener (without twitter bootstrap). + */ + registerTabsTag: function () { + var tNav = '.tabs ul.nav-tabs '; + + // Binding `nav-tabs` & `tab-content` by real time permalink changing. + $(function() { + $(window).bind('hashchange', function() { + var tHash = location.hash; + if (tHash !== '') { + $(tNav + 'li:has(a[href="' + tHash + '"])').addClass('active').siblings().removeClass('active'); + $(tHash).addClass('active').siblings().removeClass('active'); + } + }).trigger('hashchange'); + }); + + $(tNav + '.tab').on('click', function (href) { + href.preventDefault(); + // Prevent selected tab to select again. + if(!$(this).hasClass('active')){ + + // Add & Remove active class on `nav-tabs` & `tab-content`. + $(this).addClass('active').siblings().removeClass('active'); + var tActive = $(this).find('a').attr('href'); + $(tActive).addClass('active').siblings().removeClass('active'); + + // Clear location hash in browser if #permalink exists. + if (location.hash !== '') { + history.pushState('', document.title, window.location.pathname + window.location.search); + } + } + }); + + }, + + registerESCKeyEvent: function () { + $(document).on('keyup', function (event) { + var shouldDismissSearchPopup = event.which === 27 && + $('.search-popup').is(':visible'); + if (shouldDismissSearchPopup) { + $('.search-popup').hide(); + $('.search-popup-overlay').remove(); + $('body').css('overflow', ''); + } + }); + }, + + registerBackToTop: function () { + var THRESHOLD = 50; + var $top = $('.back-to-top'); + + $(window).on('scroll', function () { + $top.toggleClass('back-to-top-on', window.pageYOffset > THRESHOLD); + + var scrollTop = $(window).scrollTop(); + var contentVisibilityHeight = NexT.utils.getContentVisibilityHeight(); + var scrollPercent = (scrollTop) / (contentVisibilityHeight); + var scrollPercentRounded = Math.round(scrollPercent*100); + var scrollPercentMaxed = (scrollPercentRounded > 100) ? 100 : scrollPercentRounded; + $('#scrollpercent>span').html(scrollPercentMaxed); + }); + + $top.on('click', function () { + $('body').velocity('scroll'); + }); + }, + + /** + * Transform embedded video to support responsive layout. + * @see http://toddmotto.com/fluid-and-responsive-youtube-and-vimeo-videos-with-fluidvids-js/ + */ + embeddedVideoTransformer: function () { + var $iframes = $('iframe'); + + // Supported Players. Extend this if you need more players. + var SUPPORTED_PLAYERS = [ + 'www.youtube.com', + 'player.vimeo.com', + 'player.youku.com', + 'music.163.com', + 'www.tudou.com' + ]; + var pattern = new RegExp( SUPPORTED_PLAYERS.join('|') ); + + $iframes.each(function () { + var iframe = this; + var $iframe = $(this); + var oldDimension = getDimension($iframe); + var newDimension; + + if (this.src.search(pattern) > 0) { + + // Calculate the video ratio based on the iframe's w/h dimensions + var videoRatio = getAspectRadio(oldDimension.width, oldDimension.height); + + // Replace the iframe's dimensions and position the iframe absolute + // This is the trick to emulate the video ratio + $iframe.width('100%').height('100%') + .css({ + position: 'absolute', + top: '0', + left: '0' + }); + + + // Wrap the iframe in a new
which uses a dynamically fetched padding-top property + // based on the video's w/h dimensions + var wrap = document.createElement('div'); + wrap.className = 'fluid-vids'; + wrap.style.position = 'relative'; + wrap.style.marginBottom = '20px'; + wrap.style.width = '100%'; + wrap.style.paddingTop = videoRatio + '%'; + // Fix for appear inside tabs tag. + (wrap.style.paddingTop === '') && (wrap.style.paddingTop = '50%'); + + // Add the iframe inside our newly created
+ var iframeParent = iframe.parentNode; + iframeParent.insertBefore(wrap, iframe); + wrap.appendChild(iframe); + + // Additional adjustments for 163 Music + if (this.src.search('music.163.com') > 0) { + newDimension = getDimension($iframe); + var shouldRecalculateAspect = newDimension.width > oldDimension.width || + newDimension.height < oldDimension.height; + + // 163 Music Player has a fixed height, so we need to reset the aspect radio + if (shouldRecalculateAspect) { + wrap.style.paddingTop = getAspectRadio(newDimension.width, oldDimension.height) + '%'; + } + } + } + }); + + function getDimension($element) { + return { + width: $element.width(), + height: $element.height() + }; + } + + function getAspectRadio(width, height) { + return height / width * 100; + } + }, + + /** + * Add `menu-item-active` class name to menu item + * via comparing location.path with menu item's href. + */ + addActiveClassToMenuItem: function () { + var path = window.location.pathname; + path = path === '/' ? path : path.substring(0, path.length - 1); + $('.menu-item a[href^="' + path + '"]:first').parent().addClass('menu-item-active'); + }, + + hasMobileUA: function () { + var nav = window.navigator; + var ua = nav.userAgent; + var pa = /iPad|iPhone|Android|Opera Mini|BlackBerry|webOS|UCWEB|Blazer|PSP|IEMobile|Symbian/g; + + return pa.test(ua); + }, + + isTablet: function () { + return window.screen.width < 992 && window.screen.width > 767 && this.hasMobileUA(); + }, + + isMobile: function () { + return window.screen.width < 767 && this.hasMobileUA(); + }, + + isDesktop: function () { + return !this.isTablet() && !this.isMobile(); + }, + + /** + * Escape meta symbols in jQuery selectors. + * + * @param selector + * @returns {string|void|XML|*} + */ + escapeSelector: function (selector) { + return selector.replace(/[!"$%&'()*+,.\/:;<=>?@[\\\]^`{|}~]/g, '\\$&'); + }, + + displaySidebar: function () { + if (!this.isDesktop() || this.isPisces() || this.isGemini()) { + return; + } + $('.sidebar-toggle').trigger('click'); + }, + + isMist: function () { + return CONFIG.scheme === 'Mist'; + }, + + isPisces: function () { + return CONFIG.scheme === 'Pisces'; + }, + + isGemini: function () { + return CONFIG.scheme === 'Gemini'; + }, + + getScrollbarWidth: function () { + var $div = $('
').addClass('scrollbar-measure').prependTo('body'); + var div = $div[0]; + var scrollbarWidth = div.offsetWidth - div.clientWidth; + + $div.remove(); + + return scrollbarWidth; + }, + + getContentVisibilityHeight: function () { + var docHeight = $('#content').height(), + winHeight = $(window).height(), + contentVisibilityHeight = (docHeight > winHeight) ? (docHeight - winHeight) : ($(document).height() - winHeight); + return contentVisibilityHeight; + }, + + getSidebarb2tHeight: function () { + //var sidebarb2tHeight = (CONFIG.sidebar.b2t) ? document.getElementsByClassName('back-to-top')[0].clientHeight : 0; + var sidebarb2tHeight = (CONFIG.sidebar.b2t) ? $('.back-to-top').height() : 0; + //var sidebarb2tHeight = (CONFIG.sidebar.b2t) ? 24 : 0; + return sidebarb2tHeight; + }, + + getSidebarSchemePadding: function () { + var sidebarNavHeight = ($('.sidebar-nav').css('display') == 'block') ? $('.sidebar-nav').outerHeight(true) : 0, + sidebarInner = $('.sidebar-inner'), + sidebarPadding = sidebarInner.innerWidth() - sidebarInner.width(), + sidebarSchemePadding = this.isPisces() || this.isGemini() ? + ((sidebarPadding * 2) + sidebarNavHeight + (CONFIG.sidebar.offset * 2) + this.getSidebarb2tHeight()) : + ((sidebarPadding * 2) + (sidebarNavHeight / 2)); + return sidebarSchemePadding; + } + + /** + * Affix behaviour for Sidebar. + * + * @returns {Boolean} + */ +// needAffix: function () { +// return this.isPisces() || this.isGemini(); +// } +}; + +$(document).ready(function () { + + initSidebarDimension(); + + /** + * Init Sidebar & TOC inner dimensions on all pages and for all schemes. + * Need for Sidebar/TOC inner scrolling if content taller then viewport. + */ + function initSidebarDimension () { + var updateSidebarHeightTimer; + + $(window).on('resize', function () { + updateSidebarHeightTimer && clearTimeout(updateSidebarHeightTimer); + + updateSidebarHeightTimer = setTimeout(function () { + var sidebarWrapperHeight = document.body.clientHeight - NexT.utils.getSidebarSchemePadding(); + + updateSidebarHeight(sidebarWrapperHeight); + }, 0); + }); + + // Initialize Sidebar & TOC Width. + var scrollbarWidth = NexT.utils.getScrollbarWidth(); + if ($('.site-overview-wrap').height() > (document.body.clientHeight - NexT.utils.getSidebarSchemePadding())) { + $('.site-overview').css('width', 'calc(100% + ' + scrollbarWidth + 'px)'); + } + if ($('.post-toc-wrap').height() > (document.body.clientHeight - NexT.utils.getSidebarSchemePadding())) { + $('.post-toc').css('width', 'calc(100% + ' + scrollbarWidth + 'px)'); + } + + // Initialize Sidebar & TOC Height. + updateSidebarHeight(document.body.clientHeight - NexT.utils.getSidebarSchemePadding()); + } + + function updateSidebarHeight (height) { + height = height || 'auto'; + $('.site-overview, .post-toc').css('max-height', height); + } + +}); diff --git a/js/theme.js b/js/theme.js new file mode 100644 index 0000000..74dde34 --- /dev/null +++ b/js/theme.js @@ -0,0 +1,112 @@ +(function () { + "use strict"; + + // Debounce based on timer + function debounce(fun, delay = 500) { + return function (...args) { + let that = this, + _args = args; + clearTimeout(fun.id) + fun.id = setTimeout(function () { + fun.call(that, ..._args) + }, delay) + } + } + + var Theme = new Object; + + Theme.backToTop = { + register: function () { + document.getElementById('back-top') + .addEventListener('click', () => { + window.scroll({ + top: 0, + behavior: "smooth" + }); + }); + } + }; + + Theme.showHeadBar = { + register: function () { + document.getElementById('bar-wrap-toggle') + .addEventListener('click', () => { + let bar = document.getElementById('menu-bar'); + bar.setAttribute('data-show', !(bar.getAttribute('data-show') == "true")); + }) + } + }; + + Theme.clipboard = { + register: function () { + // Clipboard instance + let clipboard = new ClipboardJS('.clipboard-btn'); + // On success + clipboard.on('success', debounce(function (e) { + (function (ele) { + // show checked icon + ele.setAttribute('data-clicked', true); + + // restore icon, delayed for 1s + setTimeout(() => + ele.setAttribute('data-clicked', false), 1000) + })(e.trigger); + + e.clearSelection(); + }, 200)); + + // On error + clipboard.on('error', function (e) { + console.error('Action:', e.action); + console.error('Trigger:', e.trigger); + }); + + // Insert clipboard icons to code blocks + [].forEach.call( + document.getElementsByClassName('highlight'), + element => { + let i = document.createElement('i'), + btn = document.createElement('div'); + + i.classList.add('icon'); + + btn.appendChild(i); + btn.classList.add('clipboard-btn'); + btn.setAttribute('data-clipboard-text', + element.querySelector(':scope .code > pre').innerText); + + element.firstChild.appendChild(btn); + } + ) + } + }; + + Theme.navbar = { + register: function () { + function getScrollTop() { + var scroll_top = 0; + if (document.documentElement && document.documentElement.scrollTop) { + scroll_top = document.documentElement.scrollTop; + } + else if (document.body) { + scroll_top = document.body.scrollTop; + } + return scroll_top; + } + + let scrollHeight = getScrollTop(); + let navbar = document.getElementsByClassName('head')[0]; + let menubar = document.getElementById('menu-bar'); + + document.addEventListener('scroll', debounce(function () { + let newScrollTop = getScrollTop(); + if (menubar.getAttribute('data-show') != "true") { + navbar.setAttribute('data-show', scrollHeight + 50 > newScrollTop); + scrollHeight = newScrollTop; + } + }, 100)); + } + }; + + this.Theme = Theme; +}.call(this)); diff --git a/js/toc.js b/js/toc.js new file mode 100644 index 0000000..9c6e829 --- /dev/null +++ b/js/toc.js @@ -0,0 +1,16 @@ +const tocWrap = document.getElementById('post-toc'); + +function toggleToc(button, expend, collapse) { + let expaned = tocWrap.getAttribute('data-expand') == "true"; + tocWrap.setAttribute('data-expand', !expaned); + + if (expaned) { + button.innerText = collapse; + } else { + window.scroll({ + top: tocWrap.offsetTop - 65, + behavior: "smooth" + }); + button.innerText = expend; + } +} diff --git a/lib/Han/dist/font/han-space.otf b/lib/Han/dist/font/han-space.otf new file mode 100644 index 0000000000000000000000000000000000000000..845b1bc2898c9924eff3e1b0bd92b6178b4908db GIT binary patch literal 1748 zcmZ`)OKclO82)G1kGN``&?+b(sD?I36;R_Oa+~0&hq!4YhC@kkF92qeUb0|z9ojRX?nL_i=e6(>MK1@%-|TK4MP!_r`TlRd z|1q;Wn{1(wr5L?VGWBH6o#SioKJ_9|*d}75+1Zx|D}OKE117YEa$RZA8!Sx}`VRK> zs;X4z?)YuskI+w5L4+T$B=FDZ{nfgCwfhGkihP0LSY5f=pjb{2t{@GiuJ+u_Uq}1} zBDvNun|9}88btmA*14A!sXx2-;Q7nlqxVS;fhPLCbz)Y`KNfHQBxbfL-NGc3BrG)e z$U~hW+F+ZWx#@4fTl0r5BGeIsA+xX9OBALq=>tiFJ>}0#Lmj^gaaas~b`QLNSyT(=hq8Zj`HLVSa4td|q8#t|`_)BAFaWi&IH^^vQrPs#a5ntG}L`<&b&O zs%e)^S3Jo-rHOEPb(R^QKz1MM}-YB33lhu(@q16}7HdOI)#SOD`>Z62r9hvf5107%9{w zl`42@CK(tfz!>N&o^67eCLK(fs$dE<51%PIPkDGP(lXVcwP=76cnV3(X_})+sAhn6 z)hGX>FT&eGW?f=)x3raG!vLQJ92P)iMwOL&(P zl=Av84Z#|L-&q=`BKj0%aT%t8W>Dw;mF5sjMRajW95t(mFKXw=Bu>Z1xrmhvtOi}f zijH%sg6E!38EAW#8Z^GA?;~u(Q`+DaJO$O;iG{sz*fxG5UJ2*C8^wT^u*y(3u{-e% z@Ov@19o}0Hu1FDj1#=9yOK3#fo_%Y-QKk^im8c6p|NC-?c&FpZebm*t-}ybr=SK-5 zcRs{P|4(BSl87-D$8E}(mgT>#f*Emp$UVl~IN=9TJ%*XD$?quU@>g;I6jT-Mi}yWBBPSG}IXU5mz@KjRNS nk3U?Ae;Ieb5q~Z5YemEtoz3At5Wb}HA2{3-L=v8l=-cgIj2C6J literal 0 HcmV?d00001 diff --git a/lib/Han/dist/font/han-space.woff b/lib/Han/dist/font/han-space.woff new file mode 100644 index 0000000000000000000000000000000000000000..6ccc84f8ea3543926a1a1e78b5c50a56c0dc8025 GIT binary patch literal 1452 zcmZvbdown3C; zDMTc#%d#solk4eV249gK88qL!g0HhnV>uu^1?sonu2P(`XL%%S6 zupex9^*BO;EE6(EC>!9L}GI4oum04OcU4ntX^Bzo645JKhv zV|^$?!AcNMsG>Y4TLdyEXaiLJFq*HXsqm@c0_p8 zW!P^K^z4KpZrlN+*b=Y2$4(t?TIuqOySagFF9IA4^Go-XaQEbIb00KI(V`UGbsxct zZpq5aAKLp%XGSX$G;F4mQ^Vh&yk%>X*4k%wnkx|lW= zy+?{C&MsKZdHoq;Au@?dnCdw3!ur6PPq|^mIDwmjBrK|vFCf}W$uwCGHdAC{ zNhWF>s^3Qaoo~=0VD~)64CU8+rZ5|Pc}K5w^!bRxyrb_aiY4RCmA$<4(>`NeUq4~d ztLyI3_)B$vwQ#$lg&{VSC5hAu0Vc}`OKm+W<)1QLuT$)*I2la}(eUw)7o`%U&`PJX zRbn;Lz5a7yJb}%!E@hg`VrmCWi*v6rvzF3sTNYEqv< z0Tx7d07HqgjmSnU;sI(I*lgz5>+-4&=`*R!N@VgqpD$CPSXNr#E$oyQ`0f#<(oW@k zekA2d$6B)1kyK>Ed{SU~gDDmptc!b29wqmx0-biXPn&fZ40bX@7fnOs<`4^bS^O?E zir9}3oMGtF(P)D(m&USe)eDn+^g zFJqMZR(|yI&^{5D6UiA&`v&q~2DaBu(Fy%Klsxa11eLZtB0F!2J8wW)`O3}wdjwlOCr-N zFMNnRJxJ+g8?^u0^2Xd!n6>=*)CRlx=>hJQaI;`Vo#>mm!WGF(es#JfD^V=TagK1V z{AoG#*v+@`tksDqTINo%-`}nQ&iy3gy|+EC4)8K&TBfyn8V8DEa*IX-qocZ<4DMR| z+u>Qv>&Dci7x`k^_0BZ;%}mu@7VJM8WAK~Pm|y)w3vgW<(faO<3-a1okkh;-;7vk#y KIOv6tgZ}`kqe+wi literal 0 HcmV?d00001 diff --git a/lib/Han/dist/font/han.otf b/lib/Han/dist/font/han.otf new file mode 100644 index 0000000000000000000000000000000000000000..2ce2f46ca183a46f1b06517b1a2a8f96bcaab1b8 GIT binary patch literal 26416 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

{jkyM4+x$u7WP$0Wudi^7_mDKDqxGOv> zh!_C?{RQOAs*Ywvh$9GiMcLO9G#O=@qHr-#7ZuZhMxe=%b?rWng{2RW6N?G;mjt&& zHbgfhwzpI>W&3|y{gLX6Gr`0FOOx;N`{Q2|kbaWp6zF_OZB+;dn*PN&aFreQsHF{u z)rOm3RRD}FOb#rQ;*3MlrIqDMi{{Kp-^S>6TB~f}+FRmAwUI|qNX7Aukxuq_^3R~~ zwlb74S2*=GN;}o3Y)!n954U0-4V^zY)H;wn*woP!`Dq?OAYjV`*`PQiE|yuSGpM)e!$>lI$a9i^x%?UYD2Ety}uY zo#~&aClBR0kVXzEV@*B#2GxUS5B#RHGsD0NDk(>-gfCdlr-CGar$ai zMh6$^4-D~VS&-M8V#->sH+UpC6q>|U`%N`U+U_4=*-q;6Ww#NU%ac8XqA+`kz|d<; z)Bln~Qxk%OGKuS-1ka+xMs$6=v4F1*8IOiw$jVoOSgkXnx{9jI=EkU*eOSJFxnrF&MXDX4!opVOnn7YlOHSVvM#-?EX6Iu3;* z1>`O$G!Cec53PyoaON@!I=e*$9SZ$|y`p{rEqHqIQ_~kS4!6hURyK^IP(z@jdn~DZ zZqv*iD=OAi7Pk`Wvbq}FK@Zzp9$Ge2N!2?>gGu~u1e2($i?``Gwo&V+6Z(e@=`St_ z&wWHEKpzD99akxC{I6Wj`SD8np4|C2u3X9y-W>bmm3cR=jHA+1-w3aMku_`)Ou2Ow z`GRH+5grO9j;m1Oz;7lAy%<$PCOkzU-q8+^uTbqV`#^K2kq%Xy&~HyeJcH&Y2$dea zE|lTsdo`pjF!D8_<6746V+hdFN^LfZbOODh$0Ww6S3@`GP)w`Hl5N$YxxjzDiMxC zL}e}wwKjC@QYLEKeLZS#N9~6~o)T9iqnz>?gi}OK6=;M|)G~Y!>BOpKt9oeXT`#2x zOY8jMx&{@`?W)r#Gn7j;jY3c$CH?j^y|vPCWIEAAl__Y4K;~`~52%UNLQK5wq=dQ+e6uO+Dp@`Y94uDI~5AYH7-HURd{z zaMuTDeIU#`C;aLnWjheW?(HX3oc#iHMluQo)Ib~_T3A@RSyz^P>ga-tvwpLNLgJ~q znm3CQPc&ClfDx|3&Oqx0Iw{l|tptBhr-$@azNj3NLnGjUM_4Md4%C#11{!Jlnc>9m zq-RcNow>0smo6G{)CFd3N|>uBR8@&Q)kx}&MoVK_-o&`~6M6>bkRl(MiN@0is1vd8 z2pvsU

FJW;hXg_T+VIb^sCs)mY6^h{7N(+OTwCvL@Zz_4fBMnvmT^MoM5~pyz(b{EK4|YV@z(knFh(p?@!R9Ssj>DLK7Vk$q@IO3?3G|hoyAF zmp4AmOupZx5zxz#t1FN=p^+gBH?y`k55Hw$p_F>8HfJ^cee~P}>UG0ZG+|DO^3~Gs zffW#u$5SGtcxr=)tiMQGA(1^(g!Dbh10u#sq_>Mw-FU443Z>cT6Y(JWXJjy2d>zvR zslyqPMbhOG<5?Ffy#5+! zL>nsEf5#Iv{`<}`(AE}@Rs4rBSB|3K|7iczzX|>SAH=c!5kNfdR-g_D0Ox={;4@$= zP>pkv13ZLwJrG1&iq~F1+_oL?08!u&-~enu86b|M0p16?fwzG$Py>jc*#f)>90tVW zF#$!uw$Z;awv<6T36zXN9AAX^8F7Eh0dafrd+Y$jeeNCoTig!gOIMDWA(;kD9rLi{ zc|eKxSB|+;axXATdb?!pn0(2sG211D|Gb^pCz%S3bzGAS@Y&25qvMI!2-kao2(dlp zd&$FDzm(i@b8I!9fbzeLd$a$ReM5eo01e`?ARsAf`>UbTE?xBG(&Z9H{3(b}N6GX^ z%S*OyzdCamKo#8~apU-!B$y47efUrQ E2Tw{-o0zK2^O2nx$HD*Ub4 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 literal 0 HcmV?d00001 diff --git a/lib/Han/dist/font/han.woff2 b/lib/Han/dist/font/han.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..02c49afbd642c373142ce96b321820b2e31136dc GIT binary patch literal 13644 zcmV-SHM7chPew8T0RR9105wbi4*&oF0Do)%05t3X0RR9100000000000000000000 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. + 'initCond', + + // Address element normalisation + 'renderElem', + + // Handle Biaodian + /* 'jinzify', */ + 'renderJiya', + 'renderHanging', + + // Address Biaodian correction + 'correctBiaodian', + + // Address Hanzi and Western script mixed spacing + 'renderHWS', + + // Address presentational correction to combining ligatures + 'substCombLigaWithPUA' + + // Address semantic correction to inaccurate characters + // **Note:** inactivated by default + /* 'substInaccurateChar', */ +] + +// Define Han +var Han = function( context, condition ) { + return new Han.fn.init( context, condition ) +} + +var init = function() { + if ( arguments[ 0 ] ) { + this.context = arguments[ 0 ] + } + if ( arguments[ 1 ] ) { + this.condition = arguments[ 1 ] + } + return this +} + +Han.version = VERSION + +Han.fn = Han.prototype = { + version: VERSION, + + constructor: Han, + + // Body as the default target context + context: body, + + // Root element as the default condition + condition: root, + + // Default rendering routine + routine: ROUTINE, + + init: init, + + setRoutine: function( routine ) { + if ( Array.isArray( routine )) { + this.routine = routine + } + return this + }, + + // Note that the routine set up here will execute + // only once. The method won't alter the routine in + // the instance or in the prototype chain. + render: function( routine ) { + var it = this + var routine = Array.isArray( routine ) + ? routine + : this.routine + + routine + .forEach(function( method ) { + if ( + typeof method === 'string' && + typeof it[ method ] === 'function' + ) { + it[ method ]() + } else if ( + Array.isArray( method ) && + typeof it[ method[0] ] === 'function' + ) { + it[ method.shift() ].apply( it, method ) + } + }) + return this + } +} + +Han.fn.init.prototype = Han.fn + +/** + * Shortcut for `render()` under the default + * situation. + * + * Once initialised, replace `Han.init` with the + * instance for future usage. + */ +Han.init = function() { + return Han.init = Han().render() +} + +var UNICODE = { + /** + * Western punctuation (西文標點符號) + */ + punct: { + base: '[\u2026,.;:!?\u203D_]', + sing: '[\u2010-\u2014\u2026]', + middle: '[\\\/~\\-&\u2010-\u2014_]', + open: '[\'"‘“\\(\\[\u00A1\u00BF\u2E18\u00AB\u2039\u201A\u201C\u201E]', + close: '[\'"”’\\)\\]\u00BB\u203A\u201B\u201D\u201F]', + end: '[\'"”’\\)\\]\u00BB\u203A\u201B\u201D\u201F\u203C\u203D\u2047-\u2049,.;:!?]', + }, + + /** + * CJK biaodian (CJK標點符號) + */ + biaodian: { + base: '[︰.、,。:;?!ー]', + liga: '[—…⋯]', + middle: '[·\/-゠\uFF06\u30FB\uFF3F]', + open: '[「『《〈(〔[{【〖]', + close: '[」』》〉)〕]}】〗]', + end: '[」』》〉)〕]}】〗︰.、,。:;?!ー]' + }, + + /** + * CJK-related blocks (CJK相關字符區段) + * + * 1. 中日韓統一意音文字:[\u4E00-\u9FFF] + Basic CJK unified ideographs + * 2. 擴展-A區:[\u3400-\u4DB5] + Extended-A + * 3. 擴展-B區:[\u20000-\u2A6D6]([\uD840-\uD869][\uDC00-\uDED6]) + Extended-B + * 4. 擴展-C區:[\u2A700-\u2B734](\uD86D[\uDC00-\uDF3F]|[\uD86A-\uD86C][\uDC00-\uDFFF]|\uD869[\uDF00-\uDFFF]) + Extended-C + * 5. 擴展-D區:[\u2B740-\u2B81D](急用漢字,\uD86D[\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1F]) + Extended-D + * 6. 擴展-E區:[\u2B820-\u2F7FF](暫未支援) + Extended-E (not supported yet) + * 7. 擴展-F區(暫未支援) + Extended-F (not supported yet) + * 8. 筆畫區:[\u31C0-\u31E3] + Strokes + * 9. 意音數字「〇」:[\u3007] + Ideographic number zero + * 10. 相容意音文字及補充:[\uF900-\uFAFF][\u2F800-\u2FA1D](不使用) + Compatibility ideograph and supplement (not supported) + + 12 exceptions: + [\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29] + + https://zh.wikipedia.org/wiki/中日韓統一表意文字#cite_note-1 + + * 11. 康熙字典及簡化字部首:[\u2F00-\u2FD5\u2E80-\u2EF3] + Kangxi and supplement radicals + * 12. 意音文字描述字元:[\u2FF0-\u2FFA] + Ideographic description characters + */ + hanzi: { + base: '[\u4E00-\u9FFF\u3400-\u4DB5\u31C0-\u31E3\u3007\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD800-\uDBFF][\uDC00-\uDFFF]', + desc: '[\u2FF0-\u2FFA]', + radical: '[\u2F00-\u2FD5\u2E80-\u2EF3]' + }, + + /** + * Latin script blocks (拉丁字母區段) + * + * 1. 基本拉丁字母:A-Za-z + Basic Latin + * 2. 阿拉伯數字:0-9 + Digits + * 3. 補充-1:[\u00C0-\u00FF] + Latin-1 supplement + * 4. 擴展-A區:[\u0100-\u017F] + Extended-A + * 5. 擴展-B區:[\u0180-\u024F] + Extended-B + * 5. 擴展-C區:[\u2C60-\u2C7F] + Extended-C + * 5. 擴展-D區:[\uA720-\uA7FF] + Extended-D + * 6. 附加區:[\u1E00-\u1EFF] + Extended additional + * 7. 變音組字符:[\u0300-\u0341\u1DC0-\u1DFF] + Combining diacritical marks + */ + latin: { + base: '[A-Za-z0-9\u00C0-\u00FF\u0100-\u017F\u0180-\u024F\u2C60-\u2C7F\uA720-\uA7FF\u1E00-\u1EFF]', + combine: '[\u0300-\u0341\u1DC0-\u1DFF]' + }, + + /** + * Elli̱niká (Greek) script blocks (希臘字母區段) + * + * 1. 希臘字母及擴展:[\u0370–\u03FF\u1F00-\u1FFF] + Basic Greek & Greek Extended + * 2. 阿拉伯數字:0-9 + Digits + * 3. 希臘字母變音組字符:[\u0300-\u0345\u1DC0-\u1DFF] + Combining diacritical marks + */ + ellinika: { + base: '[0-9\u0370-\u03FF\u1F00-\u1FFF]', + combine: '[\u0300-\u0345\u1DC0-\u1DFF]' + }, + + /** + * Kirillica (Cyrillic) script blocks (西里爾字母區段) + * + * 1. 西里爾字母及補充:[\u0400-\u0482\u048A-\u04FF\u0500-\u052F] + Basic Cyrillic and supplement + * 2. 擴展B區:[\uA640-\uA66E\uA67E-\uA697] + Extended-B + * 3. 阿拉伯數字:0-9 + Digits + * 4. 西里爾字母組字符:[\u0483-\u0489\u2DE0-\u2DFF\uA66F-\uA67D\uA69F](位擴展A、B區) + Cyrillic combining diacritical marks (in extended-A, B) + */ + kirillica: { + base: '[0-9\u0400-\u0482\u048A-\u04FF\u0500-\u052F\uA640-\uA66E\uA67E-\uA697]', + combine: '[\u0483-\u0489\u2DE0-\u2DFF\uA66F-\uA67D\uA69F]' + }, + + /** + * Kana (假名) + * + * 1. 日文假名:[\u30A2\u30A4\u30A6\u30A8\u30AA-\u30FA\u3042\u3044\u3046\u3048\u304A-\u3094\u309F\u30FF] + Japanese Kana + * 2. 假名補充[\u1B000\u1B001](\uD82C[\uDC00-\uDC01]) + Kana supplement + * 3. 日文假名小寫:[\u3041\u3043\u3045\u3047\u3049\u30A1\u30A3\u30A5\u30A7\u30A9\u3063\u3083\u3085\u3087\u308E\u3095\u3096\u30C3\u30E3\u30E5\u30E7\u30EE\u30F5\u30F6\u31F0-\u31FF] + Japanese small Kana + * 4. 假名組字符:[\u3099-\u309C] + Kana combining characters + * 5. 半形假名:[\uFF66-\uFF9F] + Halfwidth Kana + * 6. 符號:[\u309D\u309E\u30FB-\u30FE] + Marks + */ + kana: { + base: '[\u30A2\u30A4\u30A6\u30A8\u30AA-\u30FA\u3042\u3044\u3046\u3048\u304A-\u3094\u309F\u30FF]|\uD82C[\uDC00-\uDC01]', + small: '[\u3041\u3043\u3045\u3047\u3049\u30A1\u30A3\u30A5\u30A7\u30A9\u3063\u3083\u3085\u3087\u308E\u3095\u3096\u30C3\u30E3\u30E5\u30E7\u30EE\u30F5\u30F6\u31F0-\u31FF]', + combine: '[\u3099-\u309C]', + half: '[\uFF66-\uFF9F]', + mark: '[\u30A0\u309D\u309E\u30FB-\u30FE]' + }, + + /** + * Eonmun (Hangul, 諺文) + * + * 1. 諺文音節:[\uAC00-\uD7A3] + Eonmun (Hangul) syllables + * 2. 諺文字母:[\u1100-\u11FF\u314F-\u3163\u3131-\u318E\uA960-\uA97C\uD7B0-\uD7FB] + Eonmun (Hangul) letters + * 3. 半形諺文字母:[\uFFA1-\uFFDC] + Halfwidth Eonmun (Hangul) letters + */ + eonmun: { + base: '[\uAC00-\uD7A3]', + letter: '[\u1100-\u11FF\u314F-\u3163\u3131-\u318E\uA960-\uA97C\uD7B0-\uD7FB]', + half: '[\uFFA1-\uFFDC]' + }, + + /** + * Zhuyin (注音符號, Mandarin & Dialect Phonetic Symbols) + * + * 1. 國語注音、方言音符號:[\u3105-\u312D][\u31A0-\u31BA] + Bopomofo phonetic symbols + * 2. 平上去聲調號:[\u02D9\u02CA\u02C5\u02C7\u02EA\u02EB\u02CB] (**註:**國語三聲包含乙個不合規範的符號) + Level, rising, departing tones + * 3. 入聲調號:[\u31B4-\u31B7][\u0358\u030d]? + Checked (entering) tones + */ + zhuyin: { + base: '[\u3105-\u312D\u31A0-\u31BA]', + initial: '[\u3105-\u3119\u312A-\u312C\u31A0-\u31A3]', + medial: '[\u3127-\u3129]', + final: '[\u311A-\u3129\u312D\u31A4-\u31B3\u31B8-\u31BA]', + tone: '[\u02D9\u02CA\u02C5\u02C7\u02CB\u02EA\u02EB]', + checked: '[\u31B4-\u31B7][\u0358\u030d]?' + } +} + +var TYPESET = (function() { + var rWhite = '[\\x20\\t\\r\\n\\f]' + // Whitespace characters + // http://www.w3.org/TR/css3-selectors/#whitespace + + var rPtOpen = UNICODE.punct.open + var rPtClose = UNICODE.punct.close + var rPtEnd = UNICODE.punct.end + var rPtMid = UNICODE.punct.middle + var rPtSing = UNICODE.punct.sing + var rPt = rPtOpen + '|' + rPtEnd + '|' + rPtMid + + var rBDOpen = UNICODE.biaodian.open + var rBDClose = UNICODE.biaodian.close + var rBDEnd = UNICODE.biaodian.end + var rBDMid = UNICODE.biaodian.middle + var rBDLiga = UNICODE.biaodian.liga + '{2}' + var rBD = rBDOpen + '|' + rBDEnd + '|' + rBDMid + + var rKana = UNICODE.kana.base + UNICODE.kana.combine + '?' + var rKanaS = UNICODE.kana.small + UNICODE.kana.combine + '?' + var rKanaH = UNICODE.kana.half + var rEon = UNICODE.eonmun.base + '|' + UNICODE.eonmun.letter + var rEonH = UNICODE.eonmun.half + + var rHan = UNICODE.hanzi.base + '|' + UNICODE.hanzi.desc + '|' + UNICODE.hanzi.radical + '|' + rKana + + var rCbn = UNICODE.ellinika.combine + var rLatn = UNICODE.latin.base + rCbn + '*' + var rGk = UNICODE.ellinika.base + rCbn + '*' + + var rCyCbn = UNICODE.kirillica.combine + var rCy = UNICODE.kirillica.base + rCyCbn + '*' + + var rAlph = rLatn + '|' + rGk + '|' + rCy + + // For words like `it's`, `Jones’s` or `'99` + var rApo = '[\u0027\u2019]' + var rChar = rHan + '|(?:' + rAlph + '|' + rApo + ')+' + + var rZyS = UNICODE.zhuyin.initial + var rZyJ = UNICODE.zhuyin.medial + var rZyY = UNICODE.zhuyin.final + var rZyD = UNICODE.zhuyin.tone + '|' + UNICODE.zhuyin.checked + + return { + /* Character-level selector (字級選擇器) + */ + char: { + punct: { + all: new RegExp( '(' + rPt + ')', 'g' ), + open: new RegExp( '(' + rPtOpen + ')', 'g' ), + end: new RegExp( '(' + rPtEnd + ')', 'g' ), + sing: new RegExp( '(' + rPtSing + ')', 'g' ) + }, + + biaodian: { + all: new RegExp( '(' + rBD + ')', 'g' ), + open: new RegExp( '(' + rBDOpen + ')', 'g' ), + close: new RegExp( '(' + rBDClose + ')', 'g' ), + end: new RegExp( '(' + rBDEnd + ')', 'g' ), + liga: new RegExp( '(' + rBDLiga + ')', 'g' ) + }, + + hanzi: new RegExp( '(' + rHan + ')', 'g' ), + + latin: new RegExp( '(' + rLatn + ')', 'ig' ), + ellinika: new RegExp( '(' + rGk + ')', 'ig' ), + kirillica: new RegExp( '(' + rCy + ')', 'ig' ), + + kana: new RegExp( '(' + rKana + '|' + rKanaS + '|' + rKanaH + ')', 'g' ), + eonmun: new RegExp( '(' + rEon + '|' + rEonH + ')', 'g' ) + }, + + /* Word-level selectors (詞級選擇器) + */ + group: { + biaodian: [ + new RegExp( '((' + rBD + '){2,})', 'g' ), + new RegExp( '(' + rBDLiga + rBDOpen + ')', 'g' ) + ], + punct: null, + hanzi: new RegExp( '(' + rHan + ')+', 'g' ), + western: new RegExp( '(' + rLatn + '|' + rGk + '|' + rCy + '|' + rPt + ')+', 'ig' ), + kana: new RegExp( '(' + rKana + '|' + rKanaS + '|' + rKanaH + ')+', 'g' ), + eonmun: new RegExp( '(' + rEon + '|' + rEonH + '|' + rPt + ')+', 'g' ) + }, + + /* Punctuation Rules (禁則) + */ + jinze: { + hanging: new RegExp( rWhite + '*([、,。.])(?!' + rBDEnd + ')', 'ig' ), + touwei: new RegExp( '(' + rBDOpen + '+)(' + rChar + ')(' + rBDEnd + '+)', 'ig' ), + tou: new RegExp( '(' + rBDOpen + '+)(' + rChar + ')', 'ig' ), + wei: new RegExp( '(' + rChar + ')(' + rBDEnd + '+)', 'ig' ), + middle: new RegExp( '(' + rChar + ')(' + rBDMid + ')(' + rChar + ')', 'ig' ) + }, + + zhuyin: { + form: new RegExp( '^\u02D9?(' + rZyS + ')?(' + rZyJ + ')?(' + rZyY + ')?(' + rZyD + ')?$' ), + diao: new RegExp( '(' + rZyD + ')', 'g' ) + }, + + /* Hanzi and Western mixed spacing (漢字西文混排間隙) + * - Basic mode + * - Strict mode + */ + hws: { + base: [ + new RegExp( '('+ rHan + ')(' + rAlph + '|' + rPtOpen + ')', 'ig' ), + new RegExp( '('+ rAlph + '|' + rPtEnd + ')(' + rHan + ')', 'ig' ) + ], + + strict: [ + new RegExp( '('+ rHan + ')' + rWhite + '?(' + rAlph + '|' + rPtOpen + ')', 'ig' ), + new RegExp( '('+ rAlph + '|' + rPtEnd + ')' + rWhite + '?(' + rHan + ')', 'ig' ) + ] + }, + + // The feature displays the following characters + // in its variant form for font consistency and + // presentational reason. Meanwhile, this won't + // alter the original character in the DOM. + 'display-as': { + 'ja-font-for-hant': [ + // '夠 够', + '查 査', + '啟 啓', + '鄉 鄕', + '值 値', + '污 汚' + ], + + 'comb-liga-pua': [ + [ '\u0061[\u030d\u0358]', '\uDB80\uDC61' ], + [ '\u0065[\u030d\u0358]', '\uDB80\uDC65' ], + [ '\u0069[\u030d\u0358]', '\uDB80\uDC69' ], + [ '\u006F[\u030d\u0358]', '\uDB80\uDC6F' ], + [ '\u0075[\u030d\u0358]', '\uDB80\uDC75' ], + + [ '\u31B4[\u030d\u0358]', '\uDB8C\uDDB4' ], + [ '\u31B5[\u030d\u0358]', '\uDB8C\uDDB5' ], + [ '\u31B6[\u030d\u0358]', '\uDB8C\uDDB6' ], + [ '\u31B7[\u030d\u0358]', '\uDB8C\uDDB7' ] + ], + + 'comb-liga-vowel': [ + [ '\u0061[\u030d\u0358]', '\uDB80\uDC61' ], + [ '\u0065[\u030d\u0358]', '\uDB80\uDC65' ], + [ '\u0069[\u030d\u0358]', '\uDB80\uDC69' ], + [ '\u006F[\u030d\u0358]', '\uDB80\uDC6F' ], + [ '\u0075[\u030d\u0358]', '\uDB80\uDC75' ] + ], + + 'comb-liga-zhuyin': [ + [ '\u31B4[\u030d\u0358]', '\uDB8C\uDDB4' ], + [ '\u31B5[\u030d\u0358]', '\uDB8C\uDDB5' ], + [ '\u31B6[\u030d\u0358]', '\uDB8C\uDDB6' ], + [ '\u31B7[\u030d\u0358]', '\uDB8C\uDDB7' ] + ] + }, + + // The feature actually *converts* the character + // in the DOM for semantic reason. + // + // Note that this could be aggressive. + 'inaccurate-char': [ + [ '[\u2022\u2027]', '\u00B7' ], + [ '\u22EF\u22EF', '\u2026\u2026' ], + [ '\u2500\u2500', '\u2014\u2014' ], + [ '\u2035', '\u2018' ], + [ '\u2032', '\u2019' ], + [ '\u2036', '\u201C' ], + [ '\u2033', '\u201D' ] + ] + } +})() + +Han.UNICODE = UNICODE +Han.TYPESET = TYPESET + +// Aliases +Han.UNICODE.cjk = Han.UNICODE.hanzi +Han.UNICODE.greek = Han.UNICODE.ellinika +Han.UNICODE.cyrillic = Han.UNICODE.kirillica +Han.UNICODE.hangul = Han.UNICODE.eonmun +Han.UNICODE.zhuyin.ruyun = Han.UNICODE.zhuyin.checked + +Han.TYPESET.char.cjk = Han.TYPESET.char.hanzi +Han.TYPESET.char.greek = Han.TYPESET.char.ellinika +Han.TYPESET.char.cyrillic = Han.TYPESET.char.kirillica +Han.TYPESET.char.hangul = Han.TYPESET.char.eonmun + +Han.TYPESET.group.hangul = Han.TYPESET.group.eonmun +Han.TYPESET.group.cjk = Han.TYPESET.group.hanzi + +var $ = { + /** + * Query selectors which return arrays of the resulted + * node lists. + */ + id: function( selector, $context ) { + return ( $context || document ).getElementById( selector ) + }, + + tag: function( selector, $context ) { + return this.makeArray( + ( $context || document ).getElementsByTagName( selector ) + ) + }, + + qs: function( selector, $context ) { + return ( $context || document ).querySelector( selector ) + }, + + qsa: function( selector, $context ) { + return this.makeArray( + ( $context || document ).querySelectorAll( selector ) + ) + }, + + parent: function( $node, selector ) { + return selector + ? (function() { + if ( typeof $.matches !== 'function' ) return + + while (!$.matches( $node, selector )) { + if ( + !$node || + $node === document.documentElement + ) { + $node = undefined + break + } + $node = $node.parentNode + } + return $node + })() + : $node + ? $node.parentNode : undefined + }, + + /** + * Create a document fragment, a text node with text + * or an element with/without classes. + */ + create: function( name, clazz ) { + var $elmt = '!' === name + ? document.createDocumentFragment() + : '' === name + ? document.createTextNode( clazz || '' ) + : document.createElement( name ) + + try { + if ( clazz ) { + $elmt.className = clazz + } + } catch (e) {} + + return $elmt + }, + + /** + * Clone a DOM node (text, element or fragment) deeply + * or childlessly. + */ + clone: function( $node, deep ) { + return $node.cloneNode( + typeof deep === 'boolean' + ? deep + : true + ) + }, + + /** + * Remove a node (text, element or fragment). + */ + remove: function( $node ) { + return $node.parentNode.removeChild( $node ) + }, + + /** + * Set attributes all in once with an object. + */ + setAttr: function( target, attr ) { + if ( typeof attr !== 'object' ) return + var len = attr.length + + // Native `NamedNodeMap``: + if ( + typeof attr[0] === 'object' && + 'name' in attr[0] + ) { + for ( var i = 0; i < len; i++ ) { + if ( attr[ i ].value !== undefined ) { + target.setAttribute( attr[ i ].name, attr[ i ].value ) + } + } + + // Plain object: + } else { + for ( var name in attr ) { + if ( + attr.hasOwnProperty( name ) && + attr[ name ] !== undefined + ) { + target.setAttribute( name, attr[ name ] ) + } + } + } + return target + }, + + /** + * Indicate whether or not the given node is an + * element. + */ + isElmt: function( $node ) { + return $node && $node.nodeType === Node.ELEMENT_NODE + }, + + /** + * Indicate whether or not the given node should + * be ignored (`` or comments). + */ + isIgnorable: function( $node ) { + if ( !$node ) return false + + return ( + $node.nodeName === 'WBR' || + $node.nodeType === Node.COMMENT_NODE + ) + }, + + /** + * Convert array-like objects into real arrays. + */ + makeArray: function( object ) { + return Array.prototype.slice.call( object ) + }, + + /** + * Extend target with an object. + */ + extend: function( target, object ) { + if (( + typeof target === 'object' || + typeof target === 'function' ) && + typeof object === 'object' + ) { + for ( var name in object ) { + if (object.hasOwnProperty( name )) { + target[ name ] = object[ name ] + } + } + } + return target + } +} + +var Fibre = +/*! + * Fibre.js v0.2.1 | MIT License | github.com/ethantw/fibre.js + * Based on findAndReplaceDOMText + */ + +function( Finder ) { + +'use strict' + +var VERSION = '0.2.1' +var NON_INLINE_PROSE = Finder.NON_INLINE_PROSE +var AVOID_NON_PROSE = Finder.PRESETS.prose.filterElements + +var global = window || {} +var document = global.document || undefined + +function matches( node, selector, bypassNodeType39 ) { + var Efn = Element.prototype + var matches = Efn.matches || Efn.mozMatchesSelector || Efn.msMatchesSelector || Efn.webkitMatchesSelector + + if ( node instanceof Element ) { + return matches.call( node, selector ) + } else if ( bypassNodeType39 ) { + if ( /^[39]$/.test( node.nodeType )) return true + } + return false +} + +if ( typeof document === 'undefined' ) throw new Error( 'Fibre requires a DOM-supported environment.' ) + +var Fibre = function( context, preset ) { + return new Fibre.fn.init( context, preset ) +} + +Fibre.version = VERSION +Fibre.matches = matches + +Fibre.fn = Fibre.prototype = { + constructor: Fibre, + + version: VERSION, + + finder: [], + + context: undefined, + + portionMode: 'retain', + + selector: {}, + + preset: 'prose', + + init: function( context, noPreset ) { + if ( !!noPreset ) this.preset = null + + this.selector = { + context: null, + filter: [], + avoid: [], + boundary: [] + } + + if ( !context ) { + throw new Error( 'A context is required for Fibre to initialise.' ) + } else if ( context instanceof Node ) { + if ( context instanceof Document ) this.context = context.body || context + else this.context = context + } else if ( typeof context === 'string' ) { + this.context = document.querySelector( context ) + this.selector.context = context + } + return this + }, + + filterFn: function( node ) { + var filter = this.selector.filter.join( ', ' ) || '*' + var avoid = this.selector.avoid.join( ', ' ) || null + var result = matches( node, filter, true ) && !matches( node, avoid ) + return ( this.preset === 'prose' ) ? AVOID_NON_PROSE( node ) && result : result + }, + + boundaryFn: function( node ) { + var boundary = this.selector.boundary.join( ', ' ) || null + var result = matches( node, boundary ) + return ( this.preset === 'prose' ) ? NON_INLINE_PROSE( node ) || result : result + }, + + filter: function( selector ) { + if ( typeof selector === 'string' ) { + this.selector.filter.push( selector ) + } + return this + }, + + endFilter: function( all ) { + if ( all ) { + this.selector.filter = [] + } else { + this.selector.filter.pop() + } + return this + }, + + avoid: function( selector ) { + if ( typeof selector === 'string' ) { + this.selector.avoid.push( selector ) + } + return this + }, + + endAvoid: function( all ) { + if ( all ) { + this.selector.avoid = [] + } else { + this.selector.avoid.pop() + } + return this + }, + + addBoundary: function( selector ) { + if ( typeof selector === 'string' ) { + this.selector.boundary.push( selector ) + } + return this + }, + + removeBoundary: function() { + this.selector.boundary = [] + return this + }, + + setMode: function( portionMode ) { + this.portionMode = portionMode === 'first' ? 'first' : 'retain' + return this + }, + + replace: function( regexp, newSubStr ) { + var it = this + it.finder.push(Finder( it.context, { + find: regexp, + replace: newSubStr, + filterElements: function( currentNode ) { + return it.filterFn( currentNode ) + }, + forceContext: function( currentNode ) { + return it.boundaryFn( currentNode ) + }, + portionMode: it.portionMode + })) + return it + }, + + wrap: function( regexp, strElemName ) { + var it = this + it.finder.push(Finder( it.context, { + find: regexp, + wrap: strElemName, + filterElements: function( currentNode ) { + return it.filterFn( currentNode ) + }, + forceContext: function( currentNode ) { + return it.boundaryFn( currentNode ) + }, + portionMode: it.portionMode + })) + return it + }, + + revert: function( level ) { + var max = this.finder.length + var level = Number( level ) || ( level === 0 ? Number(0) : + ( level === 'all' ? max : 1 )) + + if ( typeof max === 'undefined' || max === 0 ) return this + else if ( level > max ) level = max + + for ( var i = level; i > 0; i-- ) { + this.finder.pop().revert() + } + return this + } +} + +// Deprecated API(s) +Fibre.fn.filterOut = Fibre.fn.avoid + +// Make sure init() inherit from Fibre() +Fibre.fn.init.prototype = Fibre.fn + +return Fibre + +}( + +/** + * findAndReplaceDOMText v 0.4.3 + * @author James Padolsey http://james.padolsey.com + * @license http://unlicense.org/UNLICENSE + * + * Matches the text of a DOM node against a regular expression + * and replaces each match (or node-separated portions of the match) + * in the specified element. + */ + (function() { + + var PORTION_MODE_RETAIN = 'retain' + var PORTION_MODE_FIRST = 'first' + var doc = document + var toString = {}.toString + var hasOwn = {}.hasOwnProperty + function isArray(a) { + return toString.call(a) == '[object Array]' + } + + function escapeRegExp(s) { + return String(s).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1') + } + + function exposed() { + // Try deprecated arg signature first: + return deprecated.apply(null, arguments) || findAndReplaceDOMText.apply(null, arguments) + } + + function deprecated(regex, node, replacement, captureGroup, elFilter) { + if ((node && !node.nodeType) && arguments.length <= 2) { + return false + } + var isReplacementFunction = typeof replacement == 'function' + if (isReplacementFunction) { + replacement = (function(original) { + return function(portion, match) { + return original(portion.text, match.startIndex) + } + }(replacement)) + } + + // Awkward support for deprecated argument signature (<0.4.0) + var instance = findAndReplaceDOMText(node, { + + find: regex, + + wrap: isReplacementFunction ? null : replacement, + replace: isReplacementFunction ? replacement : '$' + (captureGroup || '&'), + + prepMatch: function(m, mi) { + + // Support captureGroup (a deprecated feature) + + if (!m[0]) throw 'findAndReplaceDOMText cannot handle zero-length matches' + if (captureGroup > 0) { + var cg = m[captureGroup] + m.index += m[0].indexOf(cg) + m[0] = cg + } + + m.endIndex = m.index + m[0].length + m.startIndex = m.index + m.index = mi + return m + }, + filterElements: elFilter + }) + exposed.revert = function() { + return instance.revert() + } + return true + } + + /** + * findAndReplaceDOMText + * + * Locates matches and replaces with replacementNode + * + * @param {Node} node Element or Text node to search within + * @param {RegExp} options.find The regular expression to match + * @param {String|Element} [options.wrap] A NodeName, or a Node to clone + * @param {String|Function} [options.replace='$&'] What to replace each match with + * @param {Function} [options.filterElements] A Function to be called to check whether to + * process an element. (returning true = process element, + * returning false = avoid element) + */ + function findAndReplaceDOMText(node, options) { + return new Finder(node, options) + } + + exposed.NON_PROSE_ELEMENTS = { + br:1, hr:1, + // Media / Source elements: + script:1, style:1, img:1, video:1, audio:1, canvas:1, svg:1, map:1, object:1, + // Input elements + input:1, textarea:1, select:1, option:1, optgroup: 1, button:1 + } + exposed.NON_CONTIGUOUS_PROSE_ELEMENTS = { + + // Elements that will not contain prose or block elements where we don't + // want prose to be matches across element borders: + + // Block Elements + address:1, article:1, aside:1, blockquote:1, dd:1, div:1, + dl:1, fieldset:1, figcaption:1, figure:1, footer:1, form:1, h1:1, h2:1, h3:1, + h4:1, h5:1, h6:1, header:1, hgroup:1, hr:1, main:1, nav:1, noscript:1, ol:1, + output:1, p:1, pre:1, section:1, ul:1, + // Other misc. elements that are not part of continuous inline prose: + br:1, li: 1, summary: 1, dt:1, details:1, rp:1, rt:1, rtc:1, + // Media / Source elements: + script:1, style:1, img:1, video:1, audio:1, canvas:1, svg:1, map:1, object:1, + // Input elements + input:1, textarea:1, select:1, option:1, optgroup: 1, button:1, + // Table related elements: + table:1, tbody:1, thead:1, th:1, tr:1, td:1, caption:1, col:1, tfoot:1, colgroup:1 + + } + exposed.NON_INLINE_PROSE = function(el) { + return hasOwn.call(exposed.NON_CONTIGUOUS_PROSE_ELEMENTS, el.nodeName.toLowerCase()) + } + // Presets accessed via `options.preset` when calling findAndReplaceDOMText(): + exposed.PRESETS = { + prose: { + forceContext: exposed.NON_INLINE_PROSE, + filterElements: function(el) { + return !hasOwn.call(exposed.NON_PROSE_ELEMENTS, el.nodeName.toLowerCase()) + } + } + } + exposed.Finder = Finder + /** + * Finder -- encapsulates logic to find and replace. + */ + function Finder(node, options) { + + var preset = options.preset && exposed.PRESETS[options.preset] + options.portionMode = options.portionMode || PORTION_MODE_RETAIN + if (preset) { + for (var i in preset) { + if (hasOwn.call(preset, i) && !hasOwn.call(options, i)) { + options[i] = preset[i] + } + } + } + + this.node = node + this.options = options + // ENable match-preparation method to be passed as option: + this.prepMatch = options.prepMatch || this.prepMatch + this.reverts = [] + this.matches = this.search() + if (this.matches.length) { + this.processMatches() + } + + } + + Finder.prototype = { + + /** + * Searches for all matches that comply with the instance's 'match' option + */ + search: function() { + + var match + var matchIndex = 0 + var offset = 0 + var regex = this.options.find + var textAggregation = this.getAggregateText() + var matches = [] + var self = this + regex = typeof regex === 'string' ? RegExp(escapeRegExp(regex), 'g') : regex + matchAggregation(textAggregation) + function matchAggregation(textAggregation) { + for (var i = 0, l = textAggregation.length; i < l; ++i) { + + var text = textAggregation[i] + if (typeof text !== 'string') { + // Deal with nested contexts: (recursive) + matchAggregation(text) + continue + } + + if (regex.global) { + while (match = regex.exec(text)) { + matches.push(self.prepMatch(match, matchIndex++, offset)) + } + } else { + if (match = text.match(regex)) { + matches.push(self.prepMatch(match, 0, offset)) + } + } + + offset += text.length + } + } + + return matches + }, + + /** + * Prepares a single match with useful meta info: + */ + prepMatch: function(match, matchIndex, characterOffset) { + + if (!match[0]) { + throw new Error('findAndReplaceDOMText cannot handle zero-length matches') + } + + match.endIndex = characterOffset + match.index + match[0].length + match.startIndex = characterOffset + match.index + match.index = matchIndex + return match + }, + + /** + * Gets aggregate text within subject node + */ + getAggregateText: function() { + + var elementFilter = this.options.filterElements + var forceContext = this.options.forceContext + return getText(this.node) + /** + * Gets aggregate text of a node without resorting + * to broken innerText/textContent + */ + function getText(node, txt) { + + if (node.nodeType === 3) { + return [node.data] + } + + if (elementFilter && !elementFilter(node)) { + return [] + } + + var txt = [''] + var i = 0 + if (node = node.firstChild) do { + + if (node.nodeType === 3) { + txt[i] += node.data + continue + } + + var innerText = getText(node) + if ( + forceContext && + node.nodeType === 1 && + (forceContext === true || forceContext(node)) + ) { + txt[++i] = innerText + txt[++i] = '' + } else { + if (typeof innerText[0] === 'string') { + // Bridge nested text-node data so that they're + // not considered their own contexts: + // I.e. ['some', ['thing']] -> ['something'] + txt[i] += innerText.shift() + } + if (innerText.length) { + txt[++i] = innerText + txt[++i] = '' + } + } + } while (node = node.nextSibling) + return txt + } + + }, + + /** + * Steps through the target node, looking for matches, and + * calling replaceFn when a match is found. + */ + processMatches: function() { + + var matches = this.matches + var node = this.node + var elementFilter = this.options.filterElements + var startPortion, + endPortion, + innerPortions = [], + curNode = node, + match = matches.shift(), + atIndex = 0, // i.e. nodeAtIndex + matchIndex = 0, + portionIndex = 0, + doAvoidNode, + nodeStack = [node] + out: while (true) { + + if (curNode.nodeType === 3) { + + if (!endPortion && curNode.length + atIndex >= match.endIndex) { + + // We've found the ending + endPortion = { + node: curNode, + index: portionIndex++, + text: curNode.data.substring(match.startIndex - atIndex, match.endIndex - atIndex), + indexInMatch: atIndex - match.startIndex, + indexInNode: match.startIndex - atIndex, // always zero for end-portions + endIndexInNode: match.endIndex - atIndex, + isEnd: true + } + } else if (startPortion) { + // Intersecting node + innerPortions.push({ + node: curNode, + index: portionIndex++, + text: curNode.data, + indexInMatch: atIndex - match.startIndex, + indexInNode: 0 // always zero for inner-portions + }) + } + + if (!startPortion && curNode.length + atIndex > match.startIndex) { + // We've found the match start + startPortion = { + node: curNode, + index: portionIndex++, + indexInMatch: 0, + indexInNode: match.startIndex - atIndex, + endIndexInNode: match.endIndex - atIndex, + text: curNode.data.substring(match.startIndex - atIndex, match.endIndex - atIndex) + } + } + + atIndex += curNode.data.length + } + + doAvoidNode = curNode.nodeType === 1 && elementFilter && !elementFilter(curNode) + if (startPortion && endPortion) { + + curNode = this.replaceMatch(match, startPortion, innerPortions, endPortion) + // processMatches has to return the node that replaced the endNode + // and then we step back so we can continue from the end of the + // match: + + atIndex -= (endPortion.node.data.length - endPortion.endIndexInNode) + startPortion = null + endPortion = null + innerPortions = [] + match = matches.shift() + portionIndex = 0 + matchIndex++ + if (!match) { + break; // no more matches + } + + } else if ( + !doAvoidNode && + (curNode.firstChild || curNode.nextSibling) + ) { + // Move down or forward: + if (curNode.firstChild) { + nodeStack.push(curNode) + curNode = curNode.firstChild + } else { + curNode = curNode.nextSibling + } + continue + } + + // Move forward or up: + while (true) { + if (curNode.nextSibling) { + curNode = curNode.nextSibling + break + } + curNode = nodeStack.pop() + if (curNode === node) { + break out + } + } + + } + + }, + + /** + * Reverts ... TODO + */ + revert: function() { + // Reversion occurs backwards so as to avoid nodes subsequently + // replaced during the matching phase (a forward process): + for (var l = this.reverts.length; l--;) { + this.reverts[l]() + } + this.reverts = [] + }, + + prepareReplacementString: function(string, portion, match, matchIndex) { + var portionMode = this.options.portionMode + if ( + portionMode === PORTION_MODE_FIRST && + portion.indexInMatch > 0 + ) { + return '' + } + string = string.replace(/\$(\d+|&|`|')/g, function($0, t) { + var replacement + switch(t) { + case '&': + replacement = match[0] + break + case '`': + replacement = match.input.substring(0, match.startIndex) + break + case '\'': + replacement = match.input.substring(match.endIndex) + break + default: + replacement = match[+t] + } + return replacement + }) + if (portionMode === PORTION_MODE_FIRST) { + return string + } + + if (portion.isEnd) { + return string.substring(portion.indexInMatch) + } + + return string.substring(portion.indexInMatch, portion.indexInMatch + portion.text.length) + }, + + getPortionReplacementNode: function(portion, match, matchIndex) { + + var replacement = this.options.replace || '$&' + var wrapper = this.options.wrap + if (wrapper && wrapper.nodeType) { + // Wrapper has been provided as a stencil-node for us to clone: + var clone = doc.createElement('div') + clone.innerHTML = wrapper.outerHTML || new XMLSerializer().serializeToString(wrapper) + wrapper = clone.firstChild + } + + if (typeof replacement == 'function') { + replacement = replacement(portion, match, matchIndex) + if (replacement && replacement.nodeType) { + return replacement + } + return doc.createTextNode(String(replacement)) + } + + var el = typeof wrapper == 'string' ? doc.createElement(wrapper) : wrapper + replacement = doc.createTextNode( + this.prepareReplacementString( + replacement, portion, match, matchIndex + ) + ) + if (!replacement.data) { + return replacement + } + + if (!el) { + return replacement + } + + el.appendChild(replacement) + return el + }, + + replaceMatch: function(match, startPortion, innerPortions, endPortion) { + + var matchStartNode = startPortion.node + var matchEndNode = endPortion.node + var preceedingTextNode + var followingTextNode + if (matchStartNode === matchEndNode) { + + var node = matchStartNode + if (startPortion.indexInNode > 0) { + // Add `before` text node (before the match) + preceedingTextNode = doc.createTextNode(node.data.substring(0, startPortion.indexInNode)) + node.parentNode.insertBefore(preceedingTextNode, node) + } + + // Create the replacement node: + var newNode = this.getPortionReplacementNode( + endPortion, + match + ) + node.parentNode.insertBefore(newNode, node) + if (endPortion.endIndexInNode < node.length) { // ????? + // Add `after` text node (after the match) + followingTextNode = doc.createTextNode(node.data.substring(endPortion.endIndexInNode)) + node.parentNode.insertBefore(followingTextNode, node) + } + + node.parentNode.removeChild(node) + this.reverts.push(function() { + if (preceedingTextNode === newNode.previousSibling) { + preceedingTextNode.parentNode.removeChild(preceedingTextNode) + } + if (followingTextNode === newNode.nextSibling) { + followingTextNode.parentNode.removeChild(followingTextNode) + } + newNode.parentNode.replaceChild(node, newNode) + }) + return newNode + } else { + // Replace matchStartNode -> [innerMatchNodes...] -> matchEndNode (in that order) + + preceedingTextNode = doc.createTextNode( + matchStartNode.data.substring(0, startPortion.indexInNode) + ) + followingTextNode = doc.createTextNode( + matchEndNode.data.substring(endPortion.endIndexInNode) + ) + var firstNode = this.getPortionReplacementNode( + startPortion, + match + ) + var innerNodes = [] + for (var i = 0, l = innerPortions.length; i < l; ++i) { + var portion = innerPortions[i] + var innerNode = this.getPortionReplacementNode( + portion, + match + ) + portion.node.parentNode.replaceChild(innerNode, portion.node) + this.reverts.push((function(portion, innerNode) { + return function() { + innerNode.parentNode.replaceChild(portion.node, innerNode) + } + }(portion, innerNode))) + innerNodes.push(innerNode) + } + + var lastNode = this.getPortionReplacementNode( + endPortion, + match + ) + matchStartNode.parentNode.insertBefore(preceedingTextNode, matchStartNode) + matchStartNode.parentNode.insertBefore(firstNode, matchStartNode) + matchStartNode.parentNode.removeChild(matchStartNode) + matchEndNode.parentNode.insertBefore(lastNode, matchEndNode) + matchEndNode.parentNode.insertBefore(followingTextNode, matchEndNode) + matchEndNode.parentNode.removeChild(matchEndNode) + this.reverts.push(function() { + preceedingTextNode.parentNode.removeChild(preceedingTextNode) + firstNode.parentNode.replaceChild(matchStartNode, firstNode) + followingTextNode.parentNode.removeChild(followingTextNode) + lastNode.parentNode.replaceChild(matchEndNode, lastNode) + }) + return lastNode + } + } + + } + return exposed +}()) + +); + +var isNodeNormalizeNormal = (function() { + //// Disabled `Node.normalize()` for temp due to + //// issue below in IE11. + //// See: http://stackoverflow.com/questions/22337498/why-does-ie11-handle-node-normalize-incorrectly-for-the-minus-symbol + var div = $.create( 'div' ) + + div.appendChild($.create( '', '0-' )) + div.appendChild($.create( '', '2' )) + div.normalize() + + return div.firstChild.length !== 2 +})() + +function getFuncOrElmt( obj ) { + return ( + typeof obj === 'function' || + obj instanceof Element + ) + ? obj + : undefined +} + +function createBDGroup( portion ) { + var clazz = portion.index === 0 && portion.isEnd + ? 'biaodian cjk' + : 'biaodian cjk portion ' + ( + portion.index === 0 + ? 'is-first' + : portion.isEnd + ? 'is-end' + : 'is-inner' + ) + + var $elmt = $.create( 'h-char-group', clazz ) + $elmt.innerHTML = portion.text + return $elmt +} + +function createBDChar( char ) { + var div = $.create( 'div' ) + var unicode = char.charCodeAt( 0 ).toString( 16 ) + + div.innerHTML = ( + '' + char + '' + ) + return div.firstChild +} + +function getBDType( char ) { + return char.match( TYPESET.char.biaodian.open ) + ? 'bd-open' + : char.match( TYPESET.char.biaodian.close ) + ? 'bd-close bd-end' + : char.match( TYPESET.char.biaodian.end ) + ? ( + /(?:\u3001|\u3002|\uff0c)/i.test( char ) + ? 'bd-end bd-cop' + : 'bd-end' + ) + : char.match(new RegExp( UNICODE.biaodian.liga )) + ? 'bd-liga' + : char.match(new RegExp( UNICODE.biaodian.middle )) + ? 'bd-middle' + : '' +} + +$.extend( Fibre.fn, { + normalize: function() { + if ( isNodeNormalizeNormal ) { + this.context.normalize() + } + return this + }, + + // Force punctuation & biaodian typesetting rules to be applied. + jinzify: function( selector ) { + return ( + this + .filter( selector || null ) + .avoid( 'h-jinze' ) + .replace( + TYPESET.jinze.touwei, + function( portion, match ) { + var elem = $.create( 'h-jinze', 'touwei' ) + elem.innerHTML = match[0] + return (( portion.index === 0 && portion.isEnd ) || portion.index === 1 ) ? elem : '' + } + ) + .replace( + TYPESET.jinze.wei, + function( portion, match ) { + var elem = $.create( 'h-jinze', 'wei' ) + elem.innerHTML = match[0] + return portion.index === 0 ? elem : '' + } + ) + .replace( + TYPESET.jinze.tou, + function( portion, match ) { + var elem = $.create( 'h-jinze', 'tou' ) + elem.innerHTML = match[0] + return (( portion.index === 0 && portion.isEnd ) || portion.index === 1 ) + ? elem : '' + } + ) + .replace( + TYPESET.jinze.middle, + function( portion, match ) { + var elem = $.create( 'h-jinze', 'middle' ) + elem.innerHTML = match[0] + return (( portion.index === 0 && portion.isEnd ) || portion.index === 1 ) + ? elem : '' + } + ) + .endAvoid() + .endFilter() + ) + }, + + groupify: function( option ) { + var option = $.extend({ + biaodian: false, + //punct: false, + hanzi: false, // Includes Kana + kana: false, + eonmun: false, + western: false // Includes Latin, Greek and Cyrillic + }, option || {}) + + this.avoid( 'h-word, h-char-group' ) + + if ( option.biaodian ) { + this.replace( + TYPESET.group.biaodian[0], createBDGroup + ).replace( + TYPESET.group.biaodian[1], createBDGroup + ) + } + + if ( option.hanzi || option.cjk ) { + this.wrap( + TYPESET.group.hanzi, $.clone($.create( 'h-char-group', 'hanzi cjk' )) + ) + } + if ( option.western ) { + this.wrap( + TYPESET.group.western, $.clone($.create( 'h-word', 'western' )) + ) + } + if ( option.kana ) { + this.wrap( + TYPESET.group.kana, $.clone($.create( 'h-char-group', 'kana' )) + ) + } + if ( option.eonmun || option.hangul ) { + this.wrap( + TYPESET.group.eonmun, $.clone($.create( 'h-word', 'eonmun hangul' )) + ) + } + + this.endAvoid() + return this + }, + + charify: function( option ) { + var option = $.extend({ + avoid: true, + biaodian: false, + punct: false, + hanzi: false, // Includes Kana + latin: false, + ellinika: false, + kirillica: false, + kana: false, + eonmun: false + }, option || {}) + + if ( option.avoid ) { + this.avoid( 'h-char' ) + } + + if ( option.biaodian ) { + this.replace( + TYPESET.char.biaodian.all, + getFuncOrElmt( option.biaodian ) + || + function( portion ) { return createBDChar( portion.text ) } + ).replace( + TYPESET.char.biaodian.liga, + getFuncOrElmt( option.biaodian ) + || + function( portion ) { return createBDChar( portion.text ) } + ) + } + if ( option.hanzi || option.cjk ) { + this.wrap( + TYPESET.char.hanzi, + getFuncOrElmt( option.hanzi || option.cjk ) + || + $.clone($.create( 'h-char', 'hanzi cjk' )) + ) + } + if ( option.punct ) { + this.wrap( + TYPESET.char.punct.all, + getFuncOrElmt( option.punct ) + || + $.clone($.create( 'h-char', 'punct' )) + ) + } + if ( option.latin ) { + this.wrap( + TYPESET.char.latin, + getFuncOrElmt( option.latin ) + || + $.clone($.create( 'h-char', 'alphabet latin' )) + ) + } + if ( option.ellinika || option.greek ) { + this.wrap( + TYPESET.char.ellinika, + getFuncOrElmt( option.ellinika || option.greek ) + || + $.clone($.create( 'h-char', 'alphabet ellinika greek' )) + ) + } + if ( option.kirillica || option.cyrillic ) { + this.wrap( + TYPESET.char.kirillica, + getFuncOrElmt( option.kirillica || option.cyrillic ) + || + $.clone($.create( 'h-char', 'alphabet kirillica cyrillic' )) + ) + } + if ( option.kana ) { + this.wrap( + TYPESET.char.kana, + getFuncOrElmt( option.kana ) + || + $.clone($.create( 'h-char', 'kana' )) + ) + } + if ( option.eonmun || option.hangul ) { + this.wrap( + TYPESET.char.eonmun, + getFuncOrElmt( option.eonmun || option.hangul ) + || + $.clone($.create( 'h-char', 'eonmun hangul' )) + ) + } + + this.endAvoid() + return this + } +}) + +$.extend( Han, { + isNodeNormalizeNormal: isNodeNormalizeNormal, + find: Fibre, + createBDGroup: createBDGroup, + createBDChar: createBDChar +}) + +$.matches = Han.find.matches + +void [ + 'setMode', + 'wrap', 'replace', 'revert', + 'addBoundary', 'removeBoundary', + 'avoid', 'endAvoid', + 'filter', 'endFilter', + 'jinzify', 'groupify', 'charify' +].forEach(function( method ) { + Han.fn[ method ] = function() { + if ( !this.finder ) { + // Share the same selector + this.finder = Han.find( this.context ) + } + + this.finder[ method ]( arguments[ 0 ], arguments[ 1 ] ) + return this + } +}) + +var Locale = {} + +function writeOnCanvas( text, font ) { + var canvas = $.create( 'canvas' ) + var context + + canvas.width = '50' + canvas.height = '20' + canvas.style.display = 'none' + + body.appendChild( canvas ) + + context = canvas.getContext( '2d' ) + context.textBaseline = 'top' + context.font = '15px ' + font + ', sans-serif' + context.fillStyle = 'black' + context.strokeStyle = 'black' + context.fillText( text, 0, 0 ) + + return { + node: canvas, + context: context, + remove: function() { + $.remove( canvas, body ) + } + } +} + +function compareCanvases( treat, control ) { + var ret + var a = treat.context + var b = control.context + + try { + for ( var j = 1; j <= 20; j++ ) { + for ( var i = 1; i <= 50; i++ ) { + if ( + typeof ret === 'undefined' && + a.getImageData(i, j, 1, 1).data[3] !== b.getImageData(i, j, 1, 1).data[3] + ) { + ret = false + break + } else if ( typeof ret === 'boolean' ) { + break + } + + if ( i === 50 && j === 20 && typeof ret === 'undefined' ) { + ret = true + } + } + } + + // Remove and clean from memory + treat.remove() + control.remove() + treat = null + control = null + + return ret + } catch (e) {} + return false +} + +function detectFont( treat, control, text ) { + var treat = treat + var control = control || 'sans-serif' + var text = text || '辭Q' + var ret + + control = writeOnCanvas( text, control ) + treat = writeOnCanvas( text, treat ) + + return !compareCanvases( treat, control ) +} + +Locale.writeOnCanvas = writeOnCanvas +Locale.compareCanvases = compareCanvases +Locale.detectFont = detectFont + +Locale.support = (function() { + + var PREFIX = 'Webkit Moz ms'.split(' ') + + // Create an element for feature detecting + // (in `testCSSProp`) + var elem = $.create( 'h-test' ) + + function testCSSProp( prop ) { + var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1) + var allProp = ( prop + ' ' + PREFIX.join( ucProp + ' ' ) + ucProp ).split(' ') + var ret + + allProp.forEach(function( prop ) { + if ( typeof elem.style[ prop ] === 'string' ) { + ret = true + } + }) + return ret || false + } + + function injectElementWithStyle( rule, callback ) { + var fakeBody = body || $.create( 'body' ) + var div = $.create( 'div' ) + var container = body ? div : fakeBody + var callback = typeof callback === 'function' ? callback : function() {} + var style, ret, docOverflow + + style = [ '' ].join('') + + container.innerHTML += style + fakeBody.appendChild( div ) + + if ( !body ) { + fakeBody.style.background = '' + fakeBody.style.overflow = 'hidden' + docOverflow = root.style.overflow + + root.style.overflow = 'hidden' + root.appendChild( fakeBody ) + } + + // Callback + ret = callback( container, rule ) + + // Remove the injected scope + $.remove( container ) + if ( !body ) { + root.style.overflow = docOverflow + } + return !!ret + } + + function getStyle( elem, prop ) { + var ret + + if ( window.getComputedStyle ) { + ret = document.defaultView.getComputedStyle( elem, null ).getPropertyValue( prop ) + } else if ( elem.currentStyle ) { + // for IE + ret = elem.currentStyle[ prop ] + } + return ret + } + + return { + columnwidth: testCSSProp( 'columnWidth' ), + + fontface: (function() { + var ret + + injectElementWithStyle( + '@font-face { font-family: font; src: url("//"); }', + function( node, rule ) { + var style = $.qsa( 'style', node )[0] + var sheet = style.sheet || style.styleSheet + var cssText = sheet ? + ( sheet.cssRules && sheet.cssRules[0] ? + sheet.cssRules[0].cssText : sheet.cssText || '' + ) : '' + + ret = /src/i.test( cssText ) && + cssText.indexOf( rule.split(' ')[0] ) === 0 + } + ) + + return ret + })(), + + ruby: (function() { + var ruby = $.create( 'ruby' ) + var rt = $.create( 'rt' ) + var rp = $.create( 'rp' ) + var ret + + ruby.appendChild( rp ) + ruby.appendChild( rt ) + root.appendChild( ruby ) + + // Browsers that support ruby hide the `` via `display: none` + ret = ( + getStyle( rp, 'display' ) === 'none' || + // but in IE, `` has `display: inline`, so the test needs other conditions: + getStyle( ruby, 'display' ) === 'ruby' && + getStyle( rt, 'display' ) === 'ruby-text' + ) ? true : false + + // Remove and clean from memory + root.removeChild( ruby ) + ruby = null + rt = null + rp = null + + return ret + })(), + + 'ruby-display': (function() { + var div = $.create( 'div' ) + + div.innerHTML = '' + return div.querySelector( 'h-test-a' ).style.display === 'ruby' && div.querySelector( 'h-test-b' ).style.display === 'ruby-text-container' + })(), + + 'ruby-interchar': (function() { + var IC = 'inter-character' + var div = $.create( 'div' ) + var css + + div.innerHTML = '' + css = div.querySelector( 'h-test' ).style + return css.rubyPosition === IC || css.WebkitRubyPosition === IC || css.MozRubyPosition === IC || css.msRubyPosition === IC + })(), + + textemphasis: testCSSProp( 'textEmphasis' ), + + // Address feature support test for `unicode-range` via + // detecting whether it's Arial (supported) or + // Times New Roman (not supported). + unicoderange: (function() { + var ret + + injectElementWithStyle( + '@font-face{font-family:test-for-unicode-range;src:local(Arial),local("Droid Sans")}@font-face{font-family:test-for-unicode-range;src:local("Times New Roman"),local(Times),local("Droid Serif");unicode-range:U+270C}', + function() { + ret = !Locale.detectFont( + 'test-for-unicode-range', // treatment group + 'Arial, "Droid Sans"', // control group + 'Q' // ASCII characters only + ) + } + ) + return ret + })(), + + writingmode: testCSSProp( 'writingMode' ) + } +})() + +Locale.initCond = function( target ) { + var target = target || root + var ret = '' + var clazz + + for ( var feature in Locale.support ) { + clazz = ( Locale.support[ feature ] ? '' : 'no-' ) + feature + + target.classList.add( clazz ) + ret += clazz + ' ' + } + return ret +} + +var SUPPORT_IC = Locale.support[ 'ruby-interchar' ] + +// 1. Simple ruby polyfill; +// 2. Inter-character polyfill for Zhuyin +function renderSimpleRuby( $ruby ) { + var frag = $.create( '!' ) + var clazz = $ruby.classList + var $rb, $ru + + frag.appendChild( $.clone( $ruby )) + + $ + .tag( 'rt', frag.firstChild ) + .forEach(function( $rt ) { + var $rb = $.create( '!' ) + var airb = [] + var irb + + // Consider the previous nodes the implied + // ruby base + do { + irb = ( irb || $rt ).previousSibling + if ( !irb || irb.nodeName.match( /((?:h\-)?r[ubt])/i )) break + + $rb.insertBefore( $.clone( irb ), $rb.firstChild ) + airb.push( irb ) + } while ( !irb.nodeName.match( /((?:h\-)?r[ubt])/i )) + + // Create a real `` to append. + $ru = clazz.contains( 'zhuyin' ) ? createZhuyinRu( $rb, $rt ) : createNormalRu( $rb, $rt ) + + // Replace the ruby text with the new ``, + // and remove the original implied ruby base(s) + try { + $rt.parentNode.replaceChild( $ru, $rt ) + airb.map( $.remove ) + } catch ( e ) {} + }) + return createCustomRuby( frag ) +} + +function renderInterCharRuby( $ruby ) { + var frag = $.create( '!' ) + frag.appendChild( $.clone( $ruby )) + + $ + .tag( 'rt', frag.firstChild ) + .forEach(function( $rt ) { + var $rb = $.create( '!' ) + var airb = [] + var irb, $zhuyin + + // Consider the previous nodes the implied + // ruby base + do { + irb = ( irb || $rt ).previousSibling + if ( !irb || irb.nodeName.match( /((?:h\-)?r[ubt])/i )) break + + $rb.insertBefore( $.clone( irb ), $rb.firstChild ) + airb.push( irb ) + } while ( !irb.nodeName.match( /((?:h\-)?r[ubt])/i )) + + $zhuyin = $.create( 'rt' ) + $zhuyin.innerHTML = getZhuyinHTML( $rt ) + $rt.parentNode.replaceChild( $zhuyin, $rt ) + }) + return frag.firstChild +} + +// 3. Complex ruby polyfill +// - Double-lined annotation; +// - Right-angled annotation. +function renderComplexRuby( $ruby ) { + var frag = $.create( '!' ) + var clazz = $ruby.classList + var $cloned, $rb, $ru, maxspan + + frag.appendChild( $.clone( $ruby )) + $cloned = frag.firstChild + + $rb = $ru = $.tag( 'rb', $cloned ) + maxspan = $rb.length + + // First of all, deal with Zhuyin containers + // individually + // + // Note that we only support one single Zhuyin + // container in each complex ruby + void function( $rtc ) { + if ( !$rtc ) return + + $ru = $ + .tag( 'rt', $rtc ) + .map(function( $rt, i ) { + if ( !$rb[ i ] ) return + var ret = createZhuyinRu( $rb[ i ], $rt ) + + try { + $rb[ i ].parentNode.replaceChild( ret, $rb[ i ] ) + } catch ( e ) {} + return ret + }) + + // Remove the container once it's useless + $.remove( $rtc ) + $cloned.setAttribute( 'rightangle', 'true' ) + }( $cloned.querySelector( 'rtc.zhuyin' )) + + // Then, normal annotations other than Zhuyin + $ + .qsa( 'rtc:not(.zhuyin)', $cloned ) + .forEach(function( $rtc, order ) { + var ret + ret = $ + .tag( 'rt', $rtc ) + .map(function( $rt, i ) { + var rbspan = Number( $rt.getAttribute( 'rbspan' ) || 1 ) + var span = 0 + var aRb = [] + var $rb, ret + + if ( rbspan > maxspan ) rbspan = maxspan + + do { + try { + $rb = $ru.shift() + aRb.push( $rb ) + } catch (e) {} + + if ( typeof $rb === 'undefined' ) break + span += Number( $rb.getAttribute( 'span' ) || 1 ) + } while ( rbspan > span ) + + if ( rbspan < span ) { + if ( aRb.length > 1 ) { + console.error( 'An impossible `rbspan` value detected.', ruby ) + return + } + aRb = $.tag( 'rb', aRb[0] ) + $ru = aRb.slice( rbspan ).concat( $ru ) + aRb = aRb.slice( 0, rbspan ) + span = rbspan + } + + ret = createNormalRu( aRb, $rt, { + 'class': clazz, + span: span, + order: order + }) + + try { + aRb[0].parentNode.replaceChild( ret, aRb.shift() ) + aRb.map( $.remove ) + } catch (e) {} + return ret + }) + $ru = ret + if ( order === 1 ) $cloned.setAttribute( 'doubleline', 'true' ) + + // Remove the container once it's useless + $.remove( $rtc ) + }) + return createCustomRuby( frag ) +} + +// Create a new fake `` element so the +// style sheets will render it as a polyfill, +// which also helps to avoid the UA style. +function createCustomRuby( frag ) { + var $ruby = frag.firstChild + var hruby = $.create( 'h-ruby' ) + + hruby.innerHTML = $ruby.innerHTML + $.setAttr( hruby, $ruby.attributes ) + hruby.normalize() + return hruby +} + +function simplifyRubyClass( elem ) { + if ( !elem instanceof Element ) return elem + var clazz = elem.classList + + if ( clazz.contains( 'pinyin' )) clazz.add( 'romanization' ) + else if ( clazz.contains( 'romanization' )) clazz.add( 'annotation' ) + else if ( clazz.contains( 'mps' )) clazz.add( 'zhuyin' ) + else if ( clazz.contains( 'rightangle' )) clazz.add( 'complex' ) + return elem +} + +/** + * Create and return a new `` element + * according to the given contents + */ +function createNormalRu( $rb, $rt, attr ) { + var $ru = $.create( 'h-ru' ) + var $rt = $.clone( $rt ) + var attr = attr || {} + attr.annotation = 'true' + + if ( Array.isArray( $rb )) { + $ru.innerHTML = $rb.map(function( rb ) { + if ( typeof rb === 'undefined' ) return '' + return rb.outerHTML + }).join('') + $rt.outerHTML + } else { + $ru.appendChild( $.clone( $rb )) + $ru.appendChild( $rt ) + } + + $.setAttr( $ru, attr ) + return $ru +} + +/** + * Create and return a new `` element + * in Zhuyin form + */ +function createZhuyinRu( $rb, $rt ) { + var $rb = $.clone( $rb ) + + // Create an element to return + var $ru = $.create( 'h-ru' ) + $ru.setAttribute( 'zhuyin', true ) + + // - + // - + // - + // - + // - + // - + // - + $ru.appendChild( $rb ) + $ru.innerHTML += getZhuyinHTML( $rt ) + return $ru +} + +/** + * Create a Zhuyin-form HTML string + */ +function getZhuyinHTML( rt ) { + // #### Explanation #### + // * `zhuyin`: the entire phonetic annotation + // * `yin`: the plain pronunciation (w/out tone) + // * `diao`: the tone + // * `len`: the length of the plain pronunciation (`yin`) + var zhuyin = typeof rt === 'string' ? rt : rt.textContent + var yin, diao, len + + yin = zhuyin.replace( TYPESET.zhuyin.diao, '' ) + len = yin ? yin.length : 0 + diao = zhuyin + .replace( yin, '' ) + .replace( /[\u02C5]/g, '\u02C7' ) + .replace( /[\u030D]/g, '\u0358' ) + return len === 0 ? '' : '' + yin + '' + diao + '' +} + +/** + * Normalize `ruby` elements + */ +$.extend( Locale, { + + // Address normalisation for both simple and complex + // rubies (interlinear annotations) + renderRuby: function( context, target ) { + var target = target || 'ruby' + var $target = $.qsa( target, context ) + + $.qsa( 'rtc', context ) + .concat( $target ).map( simplifyRubyClass ) + + $target + .forEach(function( $ruby ) { + var clazz = $ruby.classList + var $new + + if ( clazz.contains( 'complex' )) $new = renderComplexRuby( $ruby ) + else if ( clazz.contains( 'zhuyin' )) $new = SUPPORT_IC ? renderInterCharRuby( $ruby ) : renderSimpleRuby( $ruby ) + + // Finally, replace it + if ( $new ) $ruby.parentNode.replaceChild( $new, $ruby ) + }) + }, + + simplifyRubyClass: simplifyRubyClass, + getZhuyinHTML: getZhuyinHTML, + renderComplexRuby: renderComplexRuby, + renderSimpleRuby: renderSimpleRuby, + renderInterCharRuby: renderInterCharRuby + + // ### TODO list ### + // + // * Debug mode + // * Better error-tolerance +}) + +/** + * Normalisation rendering mechanism + */ +$.extend( Locale, { + + // Render and normalise the given context by routine: + // + // ruby -> u, ins -> s, del -> em + // + renderElem: function( context ) { + this.renderRuby( context ) + this.renderDecoLine( context ) + this.renderDecoLine( context, 's, del' ) + this.renderEm( context ) + }, + + // Traverse all target elements and address + // presentational corrections if any two of + // them are adjacent to each other. + renderDecoLine: function( context, target ) { + var $$target = $.qsa( target || 'u, ins', context ) + var i = $$target.length + + traverse: while ( i-- ) { + var $this = $$target[ i ] + var $prev = null + + // Ignore all `` and comments in between, + // and add class `.adjacent` once two targets + // are next to each other. + ignore: do { + $prev = ( $prev || $this ).previousSibling + + if ( !$prev ) { + continue traverse + } else if ( $$target[ i-1 ] === $prev ) { + $this.classList.add( 'adjacent' ) + } + } while ( $.isIgnorable( $prev )) + } + }, + + // Traverse all target elements to render + // emphasis marks. + renderEm: function( context, target ) { + var method = target ? 'qsa' : 'tag' + var target = target || 'em' + var $target = $[ method ]( target, context ) + + $target + .forEach(function( elem ) { + var $elem = Han( elem ) + + if ( Locale.support.textemphasis ) { + $elem + .avoid( 'rt, h-char' ) + .charify({ biaodian: true, punct: true }) + } else { + $elem + .avoid( 'rt, h-char, h-char-group' ) + .jinzify() + .groupify({ western: true }) + .charify({ + hanzi: true, + biaodian: true, + punct: true, + latin: true, + ellinika: true, + kirillica: true + }) + } + }) + } +}) + +Han.normalize = Locale +Han.localize = Locale +Han.support = Locale.support +Han.detectFont = Locale.detectFont + +Han.fn.initCond = function() { + this.condition.classList.add( 'han-js-rendered' ) + Han.normalize.initCond( this.condition ) + return this +} + +void [ + 'Elem', + 'DecoLine', + 'Em', + 'Ruby' +].forEach(function( elem ) { + var method = 'render' + elem + + Han.fn[ method ] = function( target ) { + Han.normalize[ method ]( this.context, target ) + return this + } +}) + +$.extend( Han.support, { + // Assume that all devices support Heiti for we + // use `sans-serif` to do the comparison. + heiti: true, + // 'heiti-gb': true, + + songti: Han.detectFont( '"Han Songti"' ), + 'songti-gb': Han.detectFont( '"Han Songti GB"' ), + + kaiti: Han.detectFont( '"Han Kaiti"' ), + // 'kaiti-gb': Han.detectFont( '"Han Kaiti GB"' ), + + fangsong: Han.detectFont( '"Han Fangsong"' ) + // 'fangsong-gb': Han.detectFont( '"Han Fangsong GB"' ) +}) + +Han.correctBiaodian = function( context ) { + var context = context || document + var finder = Han.find( context ) + + finder + .avoid( 'h-char' ) + .replace( /([‘“])/g, function( portion ) { + var $char = Han.createBDChar( portion.text ) + $char.classList.add( 'bd-open', 'punct' ) + return $char + }) + .replace( /([’”])/g, function( portion ) { + var $char = Han.createBDChar( portion.text ) + $char.classList.add( 'bd-close', 'bd-end', 'punct' ) + return $char + }) + + return Han.support.unicoderange + ? finder + : finder.charify({ biaodian: true }) +} + +Han.correctBasicBD = Han.correctBiaodian +Han.correctBD = Han.correctBiaodian + +$.extend( Han.fn, { + biaodian: null, + + correctBiaodian: function() { + this.biaodian = Han.correctBiaodian( this.context ) + return this + }, + + revertCorrectedBiaodian: function() { + try { + this.biaodian.revert( 'all' ) + } catch (e) {} + return this + } +}) + +// Legacy support (deprecated): +Han.fn.correctBasicBD = Han.fn.correctBiaodian +Han.fn.revertBasicBD = Han.fn.revertCorrectedBiaodian + +var hws = '<>' + +var $hws = $.create( 'h-hws' ) +$hws.setAttribute( 'hidden', '' ) +$hws.innerHTML = ' ' + +function sharingSameParent( $a, $b ) { + return $a && $b && $a.parentNode === $b.parentNode +} + +function properlyPlaceHWSBehind( $node, text ) { + var $elmt = $node + var text = text || '' + + if ( + $.isElmt( $node.nextSibling ) || + sharingSameParent( $node, $node.nextSibling ) + ) { + return text + hws + } else { + // One of the parental elements of the current text + // node would definitely have a next sibling, since + // it is of the first portion and not `isEnd`. + while ( !$elmt.nextSibling ) { + $elmt = $elmt.parentNode + } + if ( $node !== $elmt ) { + $elmt.insertAdjacentHTML( 'afterEnd', '' ) + } + } + return text +} + +function firstStepLabel( portion, mat ) { + return portion.isEnd && portion.index === 0 + ? mat[1] + hws + mat[2] + : portion.index === 0 + ? properlyPlaceHWSBehind( portion.node, portion.text ) + : portion.text +} + +function real$hwsElmt( portion ) { + return portion.index === 0 + ? $.clone( $hws ) + : '' +} + +var last$hwsIdx + +function apostrophe( portion ) { + var $elmt = portion.node.parentNode + + if ( portion.index === 0 ) { + last$hwsIdx = portion.endIndexInNode-2 + } + + if ( + $elmt.nodeName.toLowerCase() === 'h-hws' && ( + portion.index === 1 || portion.indexInMatch === last$hwsIdx + )) { + $elmt.classList.add( 'quote-inner' ) + } + return portion.text +} + +function curveQuote( portion ) { + var $elmt = portion.node.parentNode + + if ( $elmt.nodeName.toLowerCase() === 'h-hws' ) { + $elmt.classList.add( 'quote-outer' ) + } + return portion.text +} + +$.extend( Han, { + renderHWS: function( context, strict ) { + // Elements to be filtered according to the + // HWS rendering mode. + var AVOID = strict + ? 'textarea, code, kbd, samp, pre' + : 'textarea' + + var mode = strict ? 'strict' : 'base' + var context = context || document + var finder = Han.find( context ) + + finder + .avoid( AVOID ) + + // Basic situations: + // - 字a => 字a + // - A字 => A字 + .replace( Han.TYPESET.hws[ mode ][0], firstStepLabel ) + .replace( Han.TYPESET.hws[ mode ][1], firstStepLabel ) + + // Convert text nodes `` into real element nodes: + .replace( new RegExp( '(' + hws + ')+', 'g' ), real$hwsElmt ) + + // Deal with: + // - '' => '字' + // - "" => "字" + .replace( /([\'"])\s(.+?)\s\1/g, apostrophe ) + + // Deal with: + // - “字” + // - ‘字’ + .replace( /\s[‘“]/g, curveQuote ) + .replace( /[’”]\s/g, curveQuote ) + .normalize() + + // Return the finder instance for future usage + return finder + } +}) + +$.extend( Han.fn, { + renderHWS: function( strict ) { + Han.renderHWS( this.context, strict ) + return this + }, + + revertHWS: function() { + $.tag( 'h-hws', this.context ) + .forEach(function( hws ) { + $.remove( hws ) + }) + this.HWS = [] + return this + } +}) + +var HANGABLE_CLASS = 'bd-hangable' +var HANGABLE_AVOID = 'h-char.bd-hangable' +var HANGABLE_CS_HTML = '' + +var matches = Han.find.matches + +function detectSpaceFont() { + var div = $.create( 'div' ) + var ret + + div.innerHTML = 'a ba b' + body.appendChild( div ) + ret = div.firstChild.offsetWidth !== div.lastChild.offsetWidth + $.remove( div ) + return ret +} + +function insertHangableCS( $jinze ) { + var $cs = $jinze.nextSibling + + if ( $cs && matches( $cs, 'h-cs.jinze-outer' )) { + $cs.classList.add( 'hangable-outer' ) + } else { + $jinze.insertAdjacentHTML( + 'afterend', + HANGABLE_CS_HTML + ) + } +} + +Han.support['han-space'] = detectSpaceFont() + +$.extend( Han, { + detectSpaceFont: detectSpaceFont, + isSpaceFontLoaded: detectSpaceFont(), + + renderHanging: function( context ) { + var context = context || document + var finder = Han.find( context ) + + finder + .avoid( 'textarea, code, kbd, samp, pre' ) + .avoid( HANGABLE_AVOID ) + .replace( + TYPESET.jinze.hanging, + function( portion ) { + if ( /^[\x20\t\r\n\f]+$/.test( portion.text )) { + return '' + } + + var $elmt = portion.node.parentNode + var $jinze, $new, $bd, biaodian + + if ( $jinze = $.parent( $elmt, 'h-jinze' )) { + insertHangableCS( $jinze ) + } + + biaodian = portion.text.trim() + + $new = Han.createBDChar( biaodian ) + $new.innerHTML = '' + biaodian + '' + $new.classList.add( HANGABLE_CLASS ) + + $bd = $.parent( $elmt, 'h-char.biaodian' ) + + return !$bd + ? $new + : (function() { + $bd.classList.add( HANGABLE_CLASS ) + + return matches( $elmt, 'h-inner, h-inner *' ) + ? biaodian + : $new.firstChild + })() + } + ) + return finder + } +}) + +$.extend( Han.fn, { + renderHanging: function() { + var classList = this.condition.classList + Han.isSpaceFontLoaded = detectSpaceFont() + + if ( + Han.isSpaceFontLoaded && + classList.contains( 'no-han-space' ) + ) { + classList.remove( 'no-han-space' ) + classList.add( 'han-space' ) + } + + Han.renderHanging( this.context ) + return this + }, + + revertHanging: function() { + $.qsa( + 'h-char.bd-hangable, h-cs.hangable-outer', + this.context + ).forEach(function( $elmt ) { + var classList = $elmt.classList + classList.remove( 'bd-hangable' ) + classList.remove( 'hangable-outer' ) + }) + return this + } +}) + +var JIYA_CLASS = 'bd-jiya' +var JIYA_AVOID = 'h-char.bd-jiya' +var CONSECUTIVE_CLASS = 'bd-consecutive' +var JIYA_CS_HTML = '' + +var matches = Han.find.matches + +function trimBDClass( clazz ) { + return clazz.replace( + /(biaodian|cjk|bd-jiya|bd-consecutive|bd-hangable)/gi, '' + ).trim() +} + +function charifyBiaodian( portion ) { + var biaodian = portion.text + var $elmt = portion.node.parentNode + var $bd = $.parent( $elmt, 'h-char.biaodian' ) + var $new = Han.createBDChar( biaodian ) + var $jinze + + $new.innerHTML = '' + biaodian + '' + $new.classList.add( JIYA_CLASS ) + + if ( $jinze = $.parent( $elmt, 'h-jinze' )) { + insertJiyaCS( $jinze ) + } + + return !$bd + ? $new + : (function() { + $bd.classList.add( JIYA_CLASS ) + + return matches( $elmt, 'h-inner, h-inner *' ) + ? biaodian + : $new.firstChild + })() +} + +var prevBDType, $$prevCS + +function locateConsecutiveBD( portion ) { + var prev = prevBDType + var $elmt = portion.node.parentNode + var $bd = $.parent( $elmt, 'h-char.biaodian' ) + var $jinze = $.parent( $bd, 'h-jinze' ) + var classList + + classList = $bd.classList + + if ( prev ) { + $bd.setAttribute( 'prev', prev ) + } + + if ( $$prevCS && classList.contains( 'bd-open' )) { + $$prevCS.pop().setAttribute( 'next', 'bd-open' ) + } + + $$prevCS = undefined + + if ( portion.isEnd ) { + prevBDType = undefined + classList.add( CONSECUTIVE_CLASS, 'end-portion' ) + } else { + prevBDType = trimBDClass($bd.getAttribute( 'class' )) + classList.add( CONSECUTIVE_CLASS ) + } + + if ( $jinze ) { + $$prevCS = locateCS( $jinze, { + prev: prev, + 'class': trimBDClass($bd.getAttribute( 'class' )) + }) + } + return portion.text +} + +function insertJiyaCS( $jinze ) { + if ( + matches( $jinze, '.tou, .touwei' ) && + !matches( $jinze.previousSibling, 'h-cs.jiya-outer' ) + ) { + $jinze.insertAdjacentHTML( 'beforebegin', JIYA_CS_HTML ) + } + if ( + matches( $jinze, '.wei, .touwei' ) && + !matches( $jinze.nextSibling, 'h-cs.jiya-outer' ) + ) { + $jinze.insertAdjacentHTML( 'afterend', JIYA_CS_HTML ) + } +} + +function locateCS( $jinze, attr ) { + var $prev, $next + + if (matches( $jinze, '.tou, .touwei' )) { + $prev = $jinze.previousSibling + + if (matches( $prev, 'h-cs' )) { + $prev.className = 'jinze-outer jiya-outer' + $prev.setAttribute( 'prev', attr.prev ) + } + } + if (matches( $jinze, '.wei, .touwei' )) { + $next = $jinze.nextSibling + + if (matches( $next, 'h-cs' )) { + $next.className = 'jinze-outer jiya-outer ' + attr[ 'class' ] + $next.removeAttribute( 'prev' ) + } + } + return [ $prev, $next ] +} + +Han.renderJiya = function( context ) { + var context = context || document + var finder = Han.find( context ) + + finder + .avoid( 'textarea, code, kbd, samp, pre, h-cs' ) + + .avoid( JIYA_AVOID ) + .charify({ + avoid: false, + biaodian: charifyBiaodian + }) + // End avoiding `JIYA_AVOID`: + .endAvoid() + + .avoid( 'textarea, code, kbd, samp, pre, h-cs' ) + .replace( TYPESET.group.biaodian[0], locateConsecutiveBD ) + .replace( TYPESET.group.biaodian[1], locateConsecutiveBD ) + + return finder +} + +$.extend( Han.fn, { + renderJiya: function() { + Han.renderJiya( this.context ) + return this + }, + + revertJiya: function() { + $.qsa( + 'h-char.bd-jiya, h-cs.jiya-outer', + this.context + ).forEach(function( $elmt ) { + var classList = $elmt.classList + classList.remove( 'bd-jiya' ) + classList.remove( 'jiya-outer' ) + }) + return this + } +}) + +var QUERY_RU_W_ANNO = 'h-ru[annotation]' +var SELECTOR_TO_IGNORE = 'textarea, code, kbd, samp, pre' + +function createCompareFactory( font, treat, control ) { + return function() { + var a = Han.localize.writeOnCanvas( treat, font ) + var b = Han.localize.writeOnCanvas( control, font ) + return Han.localize.compareCanvases( a, b ) + } +} + +function isVowelCombLigaNormal() { + return createCompareFactory( '"Romanization Sans"', '\u0061\u030D', '\uDB80\uDC61' ) +} + +function isVowelICombLigaNormal() { + return createCompareFactory( '"Romanization Sans"', '\u0069\u030D', '\uDB80\uDC69' ) +} + +function isZhuyinCombLigaNormal() { + return createCompareFactory( '"Zhuyin Kaiti"', '\u31B4\u0358', '\uDB8C\uDDB4' ) +} + +function createSubstFactory( regexToSubst ) { + return function( context ) { + var context = context || document + var finder = Han.find( context ).avoid( SELECTOR_TO_IGNORE ) + + regexToSubst + .forEach(function( pattern ) { + finder + .replace( + new RegExp( pattern[ 0 ], 'ig' ), + function( portion, match ) { + var ret = $.clone( charCombLiga ) + + // Put the original content in an inner container + // for better presentational effect of hidden text + ret.innerHTML = '' + match[0] + '' + ret.setAttribute( 'display-as', pattern[ 1 ] ) + return portion.index === 0 ? ret : '' + } + ) + }) + return finder + } +} + +var charCombLiga = $.create( 'h-char', 'comb-liga' ) + +$.extend( Han, { + isVowelCombLigaNormal: isVowelCombLigaNormal(), + isVowelICombLigaNormal: isVowelICombLigaNormal(), + isZhuyinCombLigaNormal: isZhuyinCombLigaNormal(), + + isCombLigaNormal: isVowelICombLigaNormal()(), // ### Deprecated + + substVowelCombLiga: createSubstFactory( Han.TYPESET[ 'display-as' ][ 'comb-liga-vowel' ] ), + substZhuyinCombLiga: createSubstFactory( Han.TYPESET[ 'display-as' ][ 'comb-liga-zhuyin' ] ), + substCombLigaWithPUA: createSubstFactory( Han.TYPESET[ 'display-as' ][ 'comb-liga-pua' ] ), + + substInaccurateChar: function( context ) { + var context = context || document + var finder = Han.find( context ) + + finder.avoid( SELECTOR_TO_IGNORE ) + + Han.TYPESET[ 'inaccurate-char' ] + .forEach(function( pattern ) { + finder + .replace( + new RegExp( pattern[ 0 ], 'ig' ), + pattern[ 1 ] + ) + }) + } +}) + +$.extend( Han.fn, { + 'comb-liga-vowel': null, + 'comb-liga-vowel-i': null, + 'comb-liga-zhuyin': null, + 'inaccurate-char': null, + + substVowelCombLiga: function() { + this['comb-liga-vowel'] = Han.substVowelCombLiga( this.context ) + return this + }, + + substVowelICombLiga: function() { + this['comb-liga-vowel-i'] = Han.substVowelICombLiga( this.context ) + return this + }, + + substZhuyinCombLiga: function() { + this['comb-liga-zhuyin'] = Han.substZhuyinCombLiga( this.context ) + return this + }, + + substCombLigaWithPUA: function() { + if ( !Han.isVowelCombLigaNormal()) { + this['comb-liga-vowel'] = Han.substVowelCombLiga( this.context ) + } else if ( !Han.isVowelICombLigaNormal()) { + this['comb-liga-vowel-i'] = Han.substVowelICombLiga( this.context ) + } + + if ( !Han.isZhuyinCombLigaNormal()) { + this['comb-liga-zhuyin'] = Han.substZhuyinCombLiga( this.context ) + } + return this + }, + + revertVowelCombLiga: function() { + try { + this['comb-liga-vowel'].revert( 'all' ) + } catch (e) {} + return this + }, + + revertVowelICombLiga: function() { + try { + this['comb-liga-vowel-i'].revert( 'all' ) + } catch (e) {} + return this + }, + + revertZhuyinCombLiga: function() { + try { + this['comb-liga-zhuyin'].revert( 'all' ) + } catch (e) {} + return this + }, + + revertCombLigaWithPUA: function() { + try { + this['comb-liga-vowel'].revert( 'all' ) + this['comb-liga-vowel-i'].revert( 'all' ) + this['comb-liga-zhuyin'].revert( 'all' ) + } catch (e) {} + return this + }, + + substInaccurateChar: function() { + this['inaccurate-char'] = Han.substInaccurateChar( this.context ) + return this + }, + + revertInaccurateChar: function() { + try { + this['inaccurate-char'].revert( 'all' ) + } catch (e) {} + return this + } +}) + +window.addEventListener( 'DOMContentLoaded', function() { + var initContext + + // Use the shortcut under the default situation + if ( root.classList.contains( 'han-init' )) { + Han.init() + + // Consider ‘a configured context’ the special + // case of the default situation. Will have to + // replace the `Han.init` with the instance as + // well (for future usage). + } else if ( initContext = document.querySelector( '.han-init-context' )) { + Han.init = Han( initContext ).render() + } +}) + +// Expose to global namespace +if ( typeof noGlobalNS === 'undefined' || noGlobalNS === false ) { + window.Han = Han +} + +return Han +}); + diff --git a/lib/Han/dist/han.min.css b/lib/Han/dist/han.min.css new file mode 100644 index 0000000..29c753e --- /dev/null +++ b/lib/Han/dist/han.min.css @@ -0,0 +1,6 @@ +@charset "UTF-8"; + +/*! 漢字標準格式 v3.3.0 | MIT License | css.hanzi.co */ +/*! Han.css: the CSS typography framework optimised for Hanzi */ + +progress,sub,sup{vertical-align:baseline}button,hr,input,select{overflow:visible}[type=checkbox],[type=radio],legend{box-sizing:border-box;padding:0}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:700}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{cursor:pointer}[disabled]{cursor:default}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button:-moz-focusring,input:-moz-focusring{outline:ButtonText dotted 1px}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{color:inherit;display:table;max-width:100%;white-space:normal}textarea{overflow:auto}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}@font-face{font-family:"Han Heiti";src:local("Hiragino Sans GB"),local("Lantinghei TC Extralight"),local("Lantinghei SC Extralight"),local(FZLTXHB--B51-0),local(FZLTZHK--GBK1-0),local("Pingfang SC Light"),local("Pingfang TC Light"),local("Pingfang-SC-Light"),local("Pingfang-TC-Light"),local("Pingfang SC"),local("Pingfang TC"),local("Heiti SC Light"),local(STHeitiSC-Light),local("Heiti SC"),local("Heiti TC Light"),local(STHeitiTC-Light),local("Heiti TC"),local("Microsoft Yahei"),local("Microsoft Jhenghei"),local("Noto Sans CJK KR"),local("Noto Sans CJK JP"),local("Noto Sans CJK SC"),local("Noto Sans CJK TC"),local("Source Han Sans K"),local("Source Han Sans KR"),local("Source Han Sans JP"),local("Source Han Sans CN"),local("Source Han Sans HK"),local("Source Han Sans TW"),local("Source Han Sans TWHK"),local("Droid Sans Fallback")}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Heiti";src:local(YuGothic),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro")}@font-face{font-family:"Han Heiti CNS";src:local("Pingfang TC Light"),local("Pingfang-TC-Light"),local("Pingfang TC"),local("Heiti TC Light"),local(STHeitiTC-Light),local("Heiti TC"),local("Lantinghei TC Extralight"),local(FZLTXHB--B51-0),local("Lantinghei TC"),local("Microsoft Jhenghei"),local("Microsoft Yahei"),local("Noto Sans CJK TC"),local("Source Han Sans TC"),local("Source Han Sans TW"),local("Source Han Sans TWHK"),local("Source Han Sans HK"),local("Droid Sans Fallback")}@font-face{font-family:"Han Heiti GB";src:local("Hiragino Sans GB"),local("Pingfang SC Light"),local("Pingfang-SC-Light"),local("Pingfang SC"),local("Lantinghei SC Extralight"),local(FZLTXHK--GBK1-0),local("Lantinghei SC"),local("Heiti SC Light"),local(STHeitiSC-Light),local("Heiti SC"),local("Microsoft Yahei"),local("Noto Sans CJK SC"),local("Source Han Sans SC"),local("Source Han Sans CN"),local("Droid Sans Fallback")}@font-face{font-family:"Han Heiti";font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Lantinghei TC Demibold"),local("Lantinghei SC Demibold"),local(FZLTZHB--B51-0),local(FZLTZHK--GBK1-0),local("Pingfang-SC-Semibold"),local("Pingfang-TC-Semibold"),local("Heiti SC Medium"),local("STHeitiSC-Medium"),local("Heiti SC"),local("Heiti TC Medium"),local("STHeitiTC-Medium"),local("Heiti TC"),local("Microsoft Yahei Bold"),local("Microsoft Jhenghei Bold"),local(MicrosoftYahei-Bold),local(MicrosoftJhengHeiBold),local("Microsoft Yahei"),local("Microsoft Jhenghei"),local("Noto Sans CJK KR Bold"),local("Noto Sans CJK JP Bold"),local("Noto Sans CJK SC Bold"),local("Noto Sans CJK TC Bold"),local(NotoSansCJKkr-Bold),local(NotoSansCJKjp-Bold),local(NotoSansCJKsc-Bold),local(NotoSansCJKtc-Bold),local("Source Han Sans K Bold"),local(SourceHanSansK-Bold),local("Source Han Sans K"),local("Source Han Sans KR Bold"),local("Source Han Sans JP Bold"),local("Source Han Sans CN Bold"),local("Source Han Sans HK Bold"),local("Source Han Sans TW Bold"),local("Source Han Sans TWHK Bold"),local("SourceHanSansKR-Bold"),local("SourceHanSansJP-Bold"),local("SourceHanSansCN-Bold"),local("SourceHanSansHK-Bold"),local("SourceHanSansTW-Bold"),local("SourceHanSansTWHK-Bold"),local("Source Han Sans KR"),local("Source Han Sans CN"),local("Source Han Sans HK"),local("Source Han Sans TW"),local("Source Han Sans TWHK")}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Heiti";font-weight:600;src:local("YuGothic Bold"),local("Hiragino Kaku Gothic ProN W6"),local("Hiragino Kaku Gothic Pro W6"),local(YuGo-Bold),local(HiraKakuProN-W6),local(HiraKakuPro-W6)}@font-face{font-family:"Han Heiti CNS";font-weight:600;src:local("Pingfang TC Semibold"),local("Pingfang-TC-Semibold"),local("Heiti TC Medium"),local("STHeitiTC-Medium"),local("Heiti TC"),local("Lantinghei TC Demibold"),local(FZLTXHB--B51-0),local("Microsoft Jhenghei Bold"),local(MicrosoftJhengHeiBold),local("Microsoft Jhenghei"),local("Microsoft Yahei Bold"),local(MicrosoftYahei-Bold),local("Noto Sans CJK TC Bold"),local(NotoSansCJKtc-Bold),local("Noto Sans CJK TC"),local("Source Han Sans TC Bold"),local("SourceHanSansTC-Bold"),local("Source Han Sans TC"),local("Source Han Sans TW Bold"),local("SourceHanSans-TW"),local("Source Han Sans TW"),local("Source Han Sans TWHK Bold"),local("SourceHanSans-TWHK"),local("Source Han Sans TWHK"),local("Source Han Sans HK"),local("SourceHanSans-HK"),local("Source Han Sans HK")}@font-face{font-family:"Han Heiti GB";font-weight:600;src:local("Hiragino Sans GB W6"),local(HiraginoSansGB-W6),local("Pingfang SC Semibold"),local("Pingfang-SC-Semibold"),local("Lantinghei SC Demibold"),local(FZLTZHK--GBK1-0),local("Heiti SC Medium"),local("STHeitiSC-Medium"),local("Heiti SC"),local("Microsoft Yahei Bold"),local(MicrosoftYahei-Bold),local("Microsoft Yahei"),local("Noto Sans CJK SC Bold"),local(NotoSansCJKsc-Bold),local("Noto Sans CJK SC"),local("Source Han Sans SC Bold"),local("SourceHanSansSC-Bold"),local("Source Han Sans CN Bold"),local("SourceHanSansCN-Bold"),local("Source Han Sans SC"),local("Source Han Sans CN")}@font-face{font-family:"Han Songti";src:local("Songti SC Regular"),local(STSongti-SC-Regular),local("Songti SC"),local("Songti TC Regular"),local(STSongti-TC-Regular),local("Songti TC"),local(STSong),local("Lisong Pro"),local(SimSun),local(PMingLiU)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Songti";src:local(YuMincho),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho")}@font-face{font-family:"Han Songti CNS";src:local("Songti TC Regular"),local(STSongti-TC-Regular),local("Songti TC"),local("Lisong Pro"),local("Songti SC Regular"),local(STSongti-SC-Regular),local("Songti SC"),local(STSong),local(PMingLiU),local(SimSun)}@font-face{font-family:"Han Songti GB";src:local("Songti SC Regular"),local(STSongti-SC-Regular),local("Songti SC"),local(STSong),local(SimSun),local(PMingLiU)}@font-face{font-family:"Han Songti";font-weight:600;src:local("STSongti SC Bold"),local("STSongti TC Bold"),local(STSongti-SC-Bold),local(STSongti-TC-Bold),local("STSongti SC"),local("STSongti TC")}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Songti";font-weight:600;src:local("YuMincho Demibold"),local("Hiragino Mincho ProN W6"),local("Hiragino Mincho Pro W6"),local(YuMin-Demibold),local(HiraMinProN-W6),local(HiraMinPro-W6),local(YuMincho),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro")}@font-face{font-family:"Han Songti CNS";font-weight:600;src:local("STSongti TC Bold"),local("STSongti SC Bold"),local(STSongti-TC-Bold),local(STSongti-SC-Bold),local("STSongti TC"),local("STSongti SC")}@font-face{font-family:"Han Songti GB";font-weight:600;src:local("STSongti SC Bold"),local(STSongti-SC-Bold),local("STSongti SC")}@font-face{font-family:cursive;src:local("Kaiti TC Regular"),local(STKaiTi-TC-Regular),local("Kaiti TC"),local("Kaiti SC"),local(STKaiti),local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Kaiti";src:local("Kaiti TC Regular"),local(STKaiTi-TC-Regular),local("Kaiti TC"),local("Kaiti SC"),local(STKaiti),local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF),local(Kaiti),local(DFKai-SB)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Kaiti CNS";src:local(BiauKai),local("標楷體"),local(DFKaiShu-SB-Estd-BF),local("Kaiti TC Regular"),local(STKaiTi-TC-Regular),local("Kaiti TC")}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Kaiti GB";src:local("Kaiti SC Regular"),local(STKaiTi-SC-Regular),local("Kaiti SC"),local(STKaiti),local(Kai),local(Kaiti),local(DFKai-SB)}@font-face{font-family:cursive;font-weight:600;src:local("Kaiti TC Bold"),local(STKaiTi-TC-Bold),local("Kaiti SC Bold"),local(STKaiti-SC-Bold),local("Kaiti TC"),local("Kaiti SC")}@font-face{font-family:"Han Kaiti";font-weight:600;src:local("Kaiti TC Bold"),local(STKaiTi-TC-Bold),local("Kaiti SC Bold"),local(STKaiti-SC-Bold),local("Kaiti TC"),local("Kaiti SC")}@font-face{font-family:"Han Kaiti CNS";font-weight:600;src:local("Kaiti TC Bold"),local(STKaiTi-TC-Bold),local("Kaiti TC")}@font-face{font-family:"Han Kaiti GB";font-weight:600;src:local("Kaiti SC Bold"),local(STKaiti-SC-Bold)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Fangsong";src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Fangsong CNS";src:local(STFangsong),local(FangSong)}@font-face{unicode-range:U+4E00-9FFF,U+3400-4DB5,U+20000-2A6D6,U+2A700-2B734,U+2B740-2B81D,U+FA0E-FA0F,U+FA11,U+FA13-FA14,U+FA1F,U+FA21,U+FA23,U+FA24,U+FA27-FA29,U+3040-309F,U+30A0-30FF,U+3099-309E,U+FF66-FF9F,U+3007,U+31C0-31E3,U+2F00-2FD5,U+2E80-2EF3;font-family:"Han Fangsong GB";src:local(STFangsong),local(FangSong)}@font-face{font-family:"Biaodian Sans";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Serif";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Pro Sans";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Pro Serif";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Pro Sans CNS";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Pro Serif CNS";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Pro Sans GB";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("MS Gothic"),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Pro Serif GB";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local(SimSun);unicode-range:U+FF0E}@font-face{font-family:"Biaodian Sans";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Serif";src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Pro Sans";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Pro Serif";src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Pro Sans CNS";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Pro Serif CNS";src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Pro Sans GB";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Pro Serif GB";src:local("Songti SC"),local(STSong),local("Heiti SC"),local(SimSun);unicode-range:U+00B7}@font-face{font-family:"Biaodian Sans";src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Biaodian Serif";src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Yakumono Sans";src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Arial Unicode MS"),local("MS Gothic");unicode-range:U+2014}@font-face{font-family:"Yakumono Serif";src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho"),local("Microsoft Yahei");unicode-range:U+2014}@font-face{font-family:"Biaodian Pro Sans";src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Biaodian Pro Serif";src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Biaodian Pro Sans CNS";src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Biaodian Pro Serif CNS";src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Biaodian Pro Sans GB";src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Biaodian Pro Serif GB";src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSong),local("Microsoft Yahei"),local(SimSun);unicode-range:U+2014}@font-face{font-family:"Biaodian Sans";src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(Meiryo),local("MS Gothic"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Biaodian Serif";src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local("MS Mincho"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Yakumono Sans";src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(Meiryo),local("MS Gothic");unicode-range:U+2026}@font-face{font-family:"Yakumono Serif";src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+2026}@font-face{font-family:"Biaodian Pro Sans";src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Biaodian Pro Serif";src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Biaodian Pro Sans CNS";src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Biaodian Pro Serif CNS";src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Biaodian Pro Sans GB";src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype"),local("Hiragino Sans GB"),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Biaodian Pro Serif GB";src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype"),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Songti SC"),local(STSongti),local(SimSun),local(PMingLiU);unicode-range:U+2026}@font-face{font-family:"Biaodian Pro Sans GB";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:"Biaodian Pro Sans GB";font-weight:700;src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:"Biaodian Pro Serif GB";src:local("Lisong Pro"),local("Heiti SC"),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:"Biaodian Pro Serif GB";font-weight:700;src:local("Lisong Pro"),local("Heiti SC"),local(STHeiti),local(SimSun),local(PMingLiU);unicode-range:U+201C-201D,U+2018-2019}@font-face{font-family:"Biaodian Sans";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Serif";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Pro Sans";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Pro Serif";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Pro Sans CNS";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Pro Serif CNS";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Pro Sans GB";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Pro Serif GB";src:local(Georgia),local("Times New Roman"),local(Arial),local("Droid Sans Fallback");unicode-range:U+25CF}@font-face{font-family:"Biaodian Pro Sans";src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("MS Gothic");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:"Biaodian Pro Serif";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:"Biaodian Pro Sans CNS";src:local("Heiti TC"),local("Lihei Pro"),local("Microsoft Jhenghei"),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:"Biaodian Pro Sans CNS";src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Heiti TC"),local("Lihei Pro"),local("Microsoft Jhenghei"),local(PMingLiU),local("MS Gothic");unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:"Biaodian Pro Sans CNS";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("MS Mincho");unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:"Biaodian Pro Serif CNS";src:local(STSongti-TC-Regular),local("Lisong Pro"),local("Heiti TC"),local(PMingLiU);unicode-range:U+3002,U+FF0C,U+3001}@font-face{font-family:"Biaodian Pro Serif CNS";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(PMingLiU),local("MS Mincho");unicode-range:U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:"Biaodian Pro Sans GB";src:local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local(SimSun),local("MS Gothic");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01,U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:"Biaodian Pro Serif GB";src:local("Songti SC"),local(STSongti),local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Hiragino Sans GB"),local("Heiti SC"),local(STHeiti),local(SimSun),local("MS Mincho");unicode-range:U+3002,U+FF0C,U+3001,U+FF1B,U+FF1A,U+FF1F,U+FF01}@font-face{font-family:"Biaodian Pro Serif GB";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local(PMingLiU),local("MS Mincho");unicode-range:U+FF0D,U+FF0F,U+FF3C}@font-face{font-family:"Biaodian Pro Sans";src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Yu Gothic"),local(YuGothic),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:"Biaodian Pro Serif";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Yu Mincho"),local(YuMincho),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:"Biaodian Pro Sans CNS";src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Yu Gothic"),local(YuGothic),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:"Biaodian Pro Serif CNS";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Yu Mincho"),local(YuMincho),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:"Biaodian Pro Sans GB";src:local("Hiragino Kaku Gothic ProN"),local("Hiragino Kaku Gothic Pro"),local("Yu Gothic"),local(YuGothic),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:"Biaodian Pro Serif GB";src:local("Hiragino Mincho ProN"),local("Hiragino Mincho Pro"),local("Yu Mincho"),local(YuMincho),local(SimSun),local(PMingLiU);unicode-range:U+300C-300F,U+300A-300B,U+3008-3009,U+FF08-FF09,U+3014-3015}@font-face{font-family:"Biaodian Basic";src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype");unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:"Biaodian Basic";font-weight:700;src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype");unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:"Biaodian Sans";font-weight:700;src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype");unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:"Biaodian Pro Sans";font-weight:700;src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype");unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:"Biaodian Pro Sans";font-weight:700;src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype");unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:"Biaodian Pro Sans CNS";font-weight:700;src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype");unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:"Biaodian Pro Sans GB";font-weight:700;src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype");unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:"Biaodian Pro Serif";font-weight:700;src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype");unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:"Biaodian Pro Serif CNS";font-weight:700;src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype");unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:"Biaodian Pro Serif GB";font-weight:700;src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype");unicode-range:U+2014,U+2026,U+00B7}@font-face{font-family:"Latin Italic Serif";src:local("Georgia Italic"),local("Times New Roman Italic"),local(Georgia-Italic),local(TimesNewRomanPS-ItalicMT),local(Times-Italic)}@font-face{font-family:"Latin Italic Serif";font-weight:700;src:local("Georgia Bold Italic"),local("Times New Roman Bold Italic"),local(Georgia-BoldItalic),local(TimesNewRomanPS-BoldItalicMT),local(Times-Italic)}@font-face{font-family:"Latin Italic Sans";src:local("Helvetica Neue Italic"),local("Helvetica Oblique"),local("Arial Italic"),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{font-family:"Latin Italic Sans";font-weight:700;src:local("Helvetica Neue Bold Italic"),local("Helvetica Bold Oblique"),local("Arial Bold Italic"),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:"Numeral TF Sans";src:local(Skia),local("Neutraface 2 Text"),local(Candara),local(Corbel)}@font-face{unicode-range:U+0030-0039;font-family:"Numeral TF Serif";src:local(Georgia),local("Hoefler Text"),local("Big Caslon")}@font-face{unicode-range:U+0030-0039;font-family:"Numeral TF Italic Serif";src:local("Georgia Italic"),local("Hoefler Text Italic"),local(Georgia-Italic),local(HoeflerText-Italic)}@font-face{unicode-range:U+0030-0039;font-family:"Numeral LF Sans";src:local("Helvetica Neue"),local(Helvetica),local(Arial)}@font-face{unicode-range:U+0030-0039;font-family:"Numeral LF Italic Sans";src:local("Helvetica Neue Italic"),local("Helvetica Oblique"),local("Arial Italic"),local(HelveticaNeue-Italic),local(Helvetica-LightOblique),local(Arial-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:"Numeral LF Italic Sans";font-weight:700;src:local("Helvetica Neue Bold Italic"),local("Helvetica Bold Oblique"),local("Arial Bold Italic"),local(HelveticaNeue-BoldItalic),local(Helvetica-BoldOblique),local(Arial-BoldItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:"Numeral LF Serif";src:local(Palatino),local("Palatino Linotype"),local("Times New Roman")}@font-face{unicode-range:U+0030-0039;font-family:"Numeral LF Italic Serif";src:local("Palatino Italic"),local("Palatino Italic Linotype"),local("Times New Roman Italic"),local(Palatino-Italic),local(Palatino-Italic-Linotype),local(TimesNewRomanPS-ItalicMT)}@font-face{unicode-range:U+0030-0039;font-family:"Numeral LF Italic Serif";font-weight:700;src:local("Palatino Bold Italic"),local("Palatino Bold Italic Linotype"),local("Times New Roman Bold Italic"),local(Palatino-BoldItalic),local(Palatino-BoldItalic-Linotype),local(TimesNewRomanPS-BoldItalicMT)}@font-face{src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype");unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+0307,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:"Zhuyin Kaiti"}@font-face{unicode-range:U+3105-312D,U+31A0-31BA,U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+0307,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075;font-family:"Zhuyin Heiti";src:local("Hiragino Sans GB"),local("Heiti TC"),local("Microsoft Jhenghei"),url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype")}@font-face{font-family:"Zhuyin Heiti";src:local("Heiti TC"),local("Microsoft Jhenghei"),url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype");unicode-range:U+3127}@font-face{src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype");font-family:"Zhuyin Heiti";unicode-range:U+02D9,U+02CA,U+02C5,U+02C7,U+02CB,U+02EA-02EB,U+31B4,U+31B5,U+31B6,U+31B7,U+0307,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}@font-face{src:url(./font/han.woff2?v3.3.0) format("woff2"),url(./font/han.woff?v3.3.0) format("woff"),url(./font/han.otf?v3.3.0) format("opentype");font-family:"Romanization Sans";unicode-range:U+0307,U+030D,U+0358,U+F31B4-F31B7,U+F0061,U+F0065,U+F0069,U+F006F,U+F0075}article strong :lang(ja-Latn),article strong :lang(zh-Latn),article strong :not(:lang(zh)):not(:lang(ja)),article strong:lang(ja-Latn),article strong:lang(zh-Latn),article strong:not(:lang(zh)):not(:lang(ja)),html :lang(ja-Latn),html :lang(zh-Latn),html :not(:lang(zh)):not(:lang(ja)),html:lang(ja-Latn),html:lang(zh-Latn),html:not(:lang(zh)):not(:lang(ja)){font-family:"Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}[lang*=Hant],[lang=zh-TW],[lang=zh-HK],[lang^=zh],article strong:lang(zh),article strong:lang(zh-Hant),html:lang(zh),html:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS","Helvetica Neue",Helvetica,Arial,"Zhuyin Heiti","Han Heiti",sans-serif}.no-unicoderange [lang*=Hant],.no-unicoderange [lang=zh-TW],.no-unicoderange [lang=zh-HK],.no-unicoderange [lang^=zh],.no-unicoderange article strong:lang(zh),.no-unicoderange article strong:lang(zh-Hant),html:lang(zh).no-unicoderange,html:lang(zh-Hant).no-unicoderange{font-family:"Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}[lang*=Hans],[lang=zh-CN],article strong:lang(zh-CN),article strong:lang(zh-Hans),html:lang(zh-CN),html:lang(zh-Hans){font-family:"Biaodian Pro Sans GB","Helvetica Neue",Helvetica,Arial,"Han Heiti GB",sans-serif}.no-unicoderange [lang*=Hans],.no-unicoderange [lang=zh-CN],.no-unicoderange article strong:lang(zh-CN),.no-unicoderange article strong:lang(zh-Hans),html:lang(zh-CN).no-unicoderange,html:lang(zh-Hans).no-unicoderange{font-family:"Helvetica Neue",Helvetica,Arial,"Han Heiti GB",sans-serif}[lang^=ja],article strong:lang(ja),html:lang(ja){font-family:"Yakumono Sans","Helvetica Neue",Helvetica,Arial,sans-serif}.no-unicoderange [lang^=ja],.no-unicoderange article strong:lang(ja),html:lang(ja).no-unicoderange{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}article blockquote i :lang(ja-Latn),article blockquote i :lang(zh-Latn),article blockquote i :not(:lang(zh)):not(:lang(ja)),article blockquote i:lang(ja-Latn),article blockquote i:lang(zh-Latn),article blockquote i:not(:lang(zh)):not(:lang(ja)),article blockquote var :lang(ja-Latn),article blockquote var :lang(zh-Latn),article blockquote var :not(:lang(zh)):not(:lang(ja)),article blockquote var:lang(ja-Latn),article blockquote var:lang(zh-Latn),article blockquote var:not(:lang(zh)):not(:lang(ja)){font-family:"Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}article blockquote i:lang(zh),article blockquote i:lang(zh-Hant),article blockquote var:lang(zh),article blockquote var:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Zhuyin Heiti","Han Heiti",sans-serif}.no-unicoderange article blockquote i:lang(zh),.no-unicoderange article blockquote i:lang(zh-Hant),.no-unicoderange article blockquote var:lang(zh),.no-unicoderange article blockquote var:lang(zh-Hant){font-family:"Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif}article blockquote i:lang(zh-CN),article blockquote i:lang(zh-Hans),article blockquote var:lang(zh-CN),article blockquote var:lang(zh-Hans){font-family:"Biaodian Pro Sans GB","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti GB",sans-serif}.no-unicoderange article blockquote i:lang(zh-CN),.no-unicoderange article blockquote i:lang(zh-Hans),.no-unicoderange article blockquote var:lang(zh-CN),.no-unicoderange article blockquote var:lang(zh-Hans){font-family:"Latin Italic Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti GB",sans-serif}article blockquote i:lang(ja),article blockquote var:lang(ja){font-family:"Yakumono Sans","Latin Italic Sans","Helvetica Neue",Helvetica,Arial,sans-serif}.no-unicoderange article blockquote i:lang(ja),.no-unicoderange article blockquote var:lang(ja){font-family:"Latin Italic Sans","Helvetica Neue",Helvetica,Arial,sans-serif}article figure blockquote :lang(ja-Latn),article figure blockquote :lang(zh-Latn),article figure blockquote :not(:lang(zh)):not(:lang(ja)),article figure blockquote:lang(ja-Latn),article figure blockquote:lang(zh-Latn),article figure blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,"Times New Roman","Han Songti",cursive,serif}article figure blockquote:lang(zh),article figure blockquote:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Songti",serif}.no-unicoderange article figure blockquote:lang(zh),.no-unicoderange article figure blockquote:lang(zh-Hant){font-family:"Numeral LF Serif",Georgia,"Times New Roman","Han Songti",serif}article figure blockquote:lang(zh-CN),article figure blockquote:lang(zh-Hans){font-family:"Biaodian Pro Serif GB","Numeral LF Serif",Georgia,"Times New Roman","Han Songti GB",serif}.no-unicoderange article figure blockquote:lang(zh-CN),.no-unicoderange article figure blockquote:lang(zh-Hans){font-family:"Numeral LF Serif",Georgia,"Times New Roman","Han Songti GB",serif}article figure blockquote:lang(ja){font-family:"Yakumono Serif","Numeral LF Serif",Georgia,"Times New Roman",serif}.no-unicoderange article figure blockquote:lang(ja){font-family:"Numeral LF Serif",Georgia,"Times New Roman",serif}article blockquote :lang(ja-Latn),article blockquote :lang(zh-Latn),article blockquote :not(:lang(zh)):not(:lang(ja)),article blockquote:lang(ja-Latn),article blockquote:lang(zh-Latn),article blockquote:not(:lang(zh)):not(:lang(ja)){font-family:Georgia,"Times New Roman","Han Kaiti",cursive,serif}article blockquote:lang(zh),article blockquote:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Kaiti",cursive,serif}.no-unicoderange article blockquote:lang(zh),.no-unicoderange article blockquote:lang(zh-Hant){font-family:"Numeral LF Serif",Georgia,"Times New Roman","Han Kaiti",cursive,serif}article blockquote:lang(zh-CN),article blockquote:lang(zh-Hans){font-family:"Biaodian Pro Serif GB","Numeral LF Serif",Georgia,"Times New Roman","Han Kaiti GB",cursive,serif}.no-unicoderange article blockquote:lang(zh-CN),.no-unicoderange article blockquote:lang(zh-Hans){font-family:"Numeral LF Serif",Georgia,"Times New Roman","Han Kaiti GB",cursive,serif}article blockquote:lang(ja){font-family:"Yakumono Serif","Numeral LF Serif",Georgia,"Times New Roman",cursive,serif}.no-unicoderange article blockquote:lang(ja){font-family:"Numeral LF Serif",Georgia,"Times New Roman",cursive,serif}i :lang(ja-Latn),i :lang(zh-Latn),i :not(:lang(zh)):not(:lang(ja)),i:lang(ja-Latn),i:lang(zh-Latn),i:not(:lang(zh)):not(:lang(ja)),var :lang(ja-Latn),var :lang(zh-Latn),var :not(:lang(zh)):not(:lang(ja)),var:lang(ja-Latn),var:lang(zh-Latn),var:not(:lang(zh)):not(:lang(ja)){font-family:"Latin Italic Serif",Georgia,"Times New Roman","Han Kaiti",cursive,serif}i:lang(zh),i:lang(zh-Hant),var:lang(zh),var:lang(zh-Hant){font-family:"Biaodian Pro Serif CNS","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman","Zhuyin Kaiti","Han Kaiti",cursive,serif}.no-unicoderange i:lang(zh),.no-unicoderange i:lang(zh-Hant),.no-unicoderange var:lang(zh),.no-unicoderange var:lang(zh-Hant){font-family:"Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman","Han Kaiti",cursive,serif}i:lang(zh-CN),i:lang(zh-Hans),var:lang(zh-CN),var:lang(zh-Hans){font-family:"Biaodian Pro Serif GB","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman","Han Kaiti GB",cursive,serif}.no-unicoderange i:lang(zh-CN),.no-unicoderange i:lang(zh-Hans),.no-unicoderange var:lang(zh-CN),.no-unicoderange var:lang(zh-Hans){font-family:"Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman","Han Kaiti GB",cursive,serif}i:lang(ja),var:lang(ja){font-family:"Yakumono Serif","Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman",cursive,serif}.no-unicoderange i:lang(ja),.no-unicoderange var:lang(ja){font-family:"Numeral LF Italic Serif","Latin Italic Serif",Georgia,"Times New Roman",cursive,serif}code :lang(ja-Latn),code :lang(zh-Latn),code :not(:lang(zh)):not(:lang(ja)),code:lang(ja-Latn),code:lang(zh-Latn),code:not(:lang(zh)):not(:lang(ja)),kbd :lang(ja-Latn),kbd :lang(zh-Latn),kbd :not(:lang(zh)):not(:lang(ja)),kbd:lang(ja-Latn),kbd:lang(zh-Latn),kbd:not(:lang(zh)):not(:lang(ja)),pre :lang(ja-Latn),pre :lang(zh-Latn),pre :not(:lang(zh)):not(:lang(ja)),pre:lang(ja-Latn),pre:lang(zh-Latn),pre:not(:lang(zh)):not(:lang(ja)),samp :lang(ja-Latn),samp :lang(zh-Latn),samp :not(:lang(zh)):not(:lang(ja)),samp:lang(ja-Latn),samp:lang(zh-Latn),samp:not(:lang(zh)):not(:lang(ja)){font-family:Menlo,Consolas,Courier,"Han Heiti",monospace,monospace,sans-serif}code:lang(zh),code:lang(zh-Hant),kbd:lang(zh),kbd:lang(zh-Hant),pre:lang(zh),pre:lang(zh-Hant),samp:lang(zh),samp:lang(zh-Hant){font-family:"Biaodian Pro Sans CNS",Menlo,Consolas,Courier,"Zhuyin Heiti","Han Heiti",monospace,monospace,sans-serif}.no-unicoderange code:lang(zh),.no-unicoderange code:lang(zh-Hant),.no-unicoderange kbd:lang(zh),.no-unicoderange kbd:lang(zh-Hant),.no-unicoderange pre:lang(zh),.no-unicoderange pre:lang(zh-Hant),.no-unicoderange samp:lang(zh),.no-unicoderange samp:lang(zh-Hant){font-family:Menlo,Consolas,Courier,"Han Heiti",monospace,monospace,sans-serif}code:lang(zh-CN),code:lang(zh-Hans),kbd:lang(zh-CN),kbd:lang(zh-Hans),pre:lang(zh-CN),pre:lang(zh-Hans),samp:lang(zh-CN),samp:lang(zh-Hans){font-family:"Biaodian Pro Sans GB",Menlo,Consolas,Courier,"Han Heiti GB",monospace,monospace,sans-serif}.no-unicoderange code:lang(zh-CN),.no-unicoderange code:lang(zh-Hans),.no-unicoderange kbd:lang(zh-CN),.no-unicoderange kbd:lang(zh-Hans),.no-unicoderange pre:lang(zh-CN),.no-unicoderange pre:lang(zh-Hans),.no-unicoderange samp:lang(zh-CN),.no-unicoderange samp:lang(zh-Hans){font-family:Menlo,Consolas,Courier,"Han Heiti GB",monospace,monospace,sans-serif}code:lang(ja),kbd:lang(ja),pre:lang(ja),samp:lang(ja){font-family:"Yakumono Sans",Menlo,Consolas,Courier,monospace,monospace,sans-serif}.no-unicoderange code:lang(ja),.no-unicoderange kbd:lang(ja),.no-unicoderange pre:lang(ja),.no-unicoderange samp:lang(ja){font-family:Menlo,Consolas,Courier,monospace,monospace,sans-serif}.no-unicoderange h-char.bd-liga,.no-unicoderange h-char[unicode=b7],h-ruby [annotation] rt,h-ruby h-zhuyin,h-ruby h-zhuyin h-diao,h-ruby.romanization rt,html,ruby [annotation] rt,ruby h-zhuyin,ruby h-zhuyin h-diao,ruby.romanization rt{-moz-font-feature-settings:"liga";-ms-font-feature-settings:"liga";-webkit-font-feature-settings:"liga";font-feature-settings:"liga"}[lang*=Hant],[lang*=Hans],[lang=zh-TW],[lang=zh-HK],[lang=zh-CN],[lang^=zh],article blockquote i,article blockquote var,article strong,code,html,kbd,pre,samp{-moz-font-feature-settings:"liga=1, locl=0";-ms-font-feature-settings:"liga","locl" 0;-webkit-font-feature-settings:"liga","locl" 0;font-feature-settings:"liga","locl" 0}.no-unicoderange h-char.bd-cop:lang(zh-HK),.no-unicoderange h-char.bd-cop:lang(zh-Hant),.no-unicoderange h-char.bd-cop:lang(zh-TW){font-family:-apple-system,"Han Heiti CNS"}.no-unicoderange h-char.bd-liga,.no-unicoderange h-char[unicode=b7]{font-family:"Biaodian Basic","Han Heiti"}.no-unicoderange h-char[unicode="2018"]:lang(zh-CN),.no-unicoderange h-char[unicode="2018"]:lang(zh-Hans),.no-unicoderange h-char[unicode="2019"]:lang(zh-CN),.no-unicoderange h-char[unicode="2019"]:lang(zh-Hans),.no-unicoderange h-char[unicode="201c"]:lang(zh-CN),.no-unicoderange h-char[unicode="201c"]:lang(zh-Hans),.no-unicoderange h-char[unicode="201d"]:lang(zh-CN),.no-unicoderange h-char[unicode="201d"]:lang(zh-Hans){font-family:"Han Heiti GB"}i,var{font-style:inherit}.no-unicoderange h-ruby h-zhuyin,.no-unicoderange h-ruby h-zhuyin h-diao,.no-unicoderange ruby h-zhuyin,.no-unicoderange ruby h-zhuyin h-diao,h-ruby h-diao,ruby h-diao{font-family:"Zhuyin Kaiti",cursive,serif}h-ruby [annotation] rt,h-ruby.romanization rt,ruby [annotation] rt,ruby.romanization rt{font-family:"Romanization Sans","Helvetica Neue",Helvetica,Arial,"Han Heiti",sans-serif} \ No newline at end of file diff --git a/lib/Han/dist/han.min.js b/lib/Han/dist/han.min.js new file mode 100644 index 0000000..a557ad3 --- /dev/null +++ b/lib/Han/dist/han.min.js @@ -0,0 +1,5 @@ +/*! 漢字標準格式 v3.3.0 | MIT License | css.hanzi.co */ +/*! Han.css: the CSS typography framework optimised for Hanzi */ + +void function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=b(a,!0):"function"==typeof define&&define.amd?define(function(){return b(a,!0)}):b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";function c(a){return"function"==typeof a||a instanceof Element?a:void 0}function d(a){var b=0===a.index&&a.isEnd?"biaodian cjk":"biaodian cjk portion "+(0===a.index?"is-first":a.isEnd?"is-end":"is-inner"),c=S.create("h-char-group",b);return c.innerHTML=a.text,c}function e(a){var b=S.create("div"),c=a.charCodeAt(0).toString(16);return b.innerHTML=''+a+"",b.firstChild}function f(a){return a.match(R["char"].biaodian.open)?"bd-open":a.match(R["char"].biaodian.close)?"bd-close bd-end":a.match(R["char"].biaodian.end)?/(?:\u3001|\u3002|\uff0c)/i.test(a)?"bd-end bd-cop":"bd-end":a.match(new RegExp(Q.biaodian.liga))?"bd-liga":a.match(new RegExp(Q.biaodian.middle))?"bd-middle":""}function g(a,b){var c,d=S.create("canvas");return d.width="50",d.height="20",d.style.display="none",L.appendChild(d),c=d.getContext("2d"),c.textBaseline="top",c.font="15px "+b+", sans-serif",c.fillStyle="black",c.strokeStyle="black",c.fillText(a,0,0),{node:d,context:c,remove:function(){S.remove(d,L)}}}function h(a,b){var c,d=a.context,e=b.context;try{for(var f=1;20>=f;f++)for(var g=1;50>=g;g++){if("undefined"==typeof c&&d.getImageData(g,f,1,1).data[3]!==e.getImageData(g,f,1,1).data[3]){c=!1;break}if("boolean"==typeof c)break;50===g&&20===f&&"undefined"==typeof c&&(c=!0)}return a.remove(),b.remove(),a=null,b=null,c}catch(h){}return!1}function i(a,b,c){var a=a,b=b||"sans-serif",c=c||"\u8fadQ";return b=g(c,b),a=g(c,a),!h(a,b)}function j(a){var b,c=S.create("!"),d=a.classList;return c.appendChild(S.clone(a)),S.tag("rt",c.firstChild).forEach(function(a){var c,e=S.create("!"),f=[];do{if(c=(c||a).previousSibling,!c||c.nodeName.match(/((?:h\-)?r[ubt])/i))break;e.insertBefore(S.clone(c),e.firstChild),f.push(c)}while(!c.nodeName.match(/((?:h\-)?r[ubt])/i));b=d.contains("zhuyin")?p(e,a):o(e,a);try{a.parentNode.replaceChild(b,a),f.map(S.remove)}catch(g){}}),m(c)}function k(a){var b=S.create("!");return b.appendChild(S.clone(a)),S.tag("rt",b.firstChild).forEach(function(a){var b,c,d=S.create("!"),e=[];do{if(b=(b||a).previousSibling,!b||b.nodeName.match(/((?:h\-)?r[ubt])/i))break;d.insertBefore(S.clone(b),d.firstChild),e.push(b)}while(!b.nodeName.match(/((?:h\-)?r[ubt])/i));c=S.create("rt"),c.innerHTML=q(a),a.parentNode.replaceChild(c,a)}),b.firstChild}function l(a){var b,c,d,e,f=S.create("!"),g=a.classList;return f.appendChild(S.clone(a)),b=f.firstChild,c=d=S.tag("rb",b),e=c.length,void function(a){a&&(d=S.tag("rt",a).map(function(a,b){if(c[b]){var d=p(c[b],a);try{c[b].parentNode.replaceChild(d,c[b])}catch(e){}return d}}),S.remove(a),b.setAttribute("rightangle","true"))}(b.querySelector("rtc.zhuyin")),S.qsa("rtc:not(.zhuyin)",b).forEach(function(a,c){var f;f=S.tag("rt",a).map(function(a,b){var f,h,i=Number(a.getAttribute("rbspan")||1),j=0,k=[];i>e&&(i=e);do{try{f=d.shift(),k.push(f)}catch(l){}if("undefined"==typeof f)break;j+=Number(f.getAttribute("span")||1)}while(i>j);if(j>i){if(k.length>1)return void console.error("An impossible `rbspan` value detected.",ruby);k=S.tag("rb",k[0]),d=k.slice(i).concat(d),k=k.slice(0,i),j=i}h=o(k,a,{"class":g,span:j,order:c});try{k[0].parentNode.replaceChild(h,k.shift()),k.map(S.remove)}catch(l){}return h}),d=f,1===c&&b.setAttribute("doubleline","true"),S.remove(a)}),m(f)}function m(a){var b=a.firstChild,c=S.create("h-ruby");return c.innerHTML=b.innerHTML,S.setAttr(c,b.attributes),c.normalize(),c}function n(a){if(!a instanceof Element)return a;var b=a.classList;return b.contains("pinyin")?b.add("romanization"):b.contains("romanization")?b.add("annotation"):b.contains("mps")?b.add("zhuyin"):b.contains("rightangle")&&b.add("complex"),a}function o(a,b,c){var d=S.create("h-ru"),b=S.clone(b),c=c||{};return c.annotation="true",Array.isArray(a)?d.innerHTML=a.map(function(a){return"undefined"==typeof a?"":a.outerHTML}).join("")+b.outerHTML:(d.appendChild(S.clone(a)),d.appendChild(b)),S.setAttr(d,c),d}function p(a,b){var a=S.clone(a),c=S.create("h-ru");return c.setAttribute("zhuyin",!0),c.appendChild(a),c.innerHTML+=q(b),c}function q(a){var b,c,d,e="string"==typeof a?a:a.textContent;return b=e.replace(R.zhuyin.diao,""),d=b?b.length:0,c=e.replace(b,"").replace(/[\u02C5]/g,"\u02c7").replace(/[\u030D]/g,"\u0358"),0===d?"":''+b+""+c+""}function r(a,b){return a&&b&&a.parentNode===b.parentNode}function s(a,b){var c=a,b=b||"";if(S.isElmt(a.nextSibling)||r(a,a.nextSibling))return b+X;for(;!c.nextSibling;)c=c.parentNode;return a!==c&&c.insertAdjacentHTML("afterEnd",""),b}function t(a,b){return a.isEnd&&0===a.index?b[1]+X+b[2]:0===a.index?s(a.node,a.text):a.text}function u(a){return 0===a.index?S.clone(Y):""}function v(a){var b=a.node.parentNode;return 0===a.index&&(Z=a.endIndexInNode-2),"h-hws"!==b.nodeName.toLowerCase()||1!==a.index&&a.indexInMatch!==Z||b.classList.add("quote-inner"),a.text}function w(a){var b=a.node.parentNode;return"h-hws"===b.nodeName.toLowerCase()&&b.classList.add("quote-outer"),a.text}function x(){var a,b=S.create("div");return b.innerHTML="a ba b",L.appendChild(b),a=b.firstChild.offsetWidth!==b.lastChild.offsetWidth,S.remove(b),a}function y(a){var b=a.nextSibling;b&&ba(b,"h-cs.jinze-outer")?b.classList.add("hangable-outer"):a.insertAdjacentHTML("afterend",aa)}function z(a){return a.replace(/(biaodian|cjk|bd-jiya|bd-consecutive|bd-hangable)/gi,"").trim()}function A(a){var b,c=a.text,d=a.node.parentNode,e=S.parent(d,"h-char.biaodian"),f=O.createBDChar(c);return f.innerHTML=""+c+"",f.classList.add(ea),(b=S.parent(d,"h-jinze"))&&C(b),e?function(){return e.classList.add(ea),ba(d,"h-inner, h-inner *")?c:f.firstChild}():f}function B(a){var b,c=ca,d=a.node.parentNode,e=S.parent(d,"h-char.biaodian"),f=S.parent(e,"h-jinze");return b=e.classList,c&&e.setAttribute("prev",c),da&&b.contains("bd-open")&&da.pop().setAttribute("next","bd-open"),da=void 0,a.isEnd?(ca=void 0,b.add(ga,"end-portion")):(ca=z(e.getAttribute("class")),b.add(ga)),f&&(da=D(f,{prev:c,"class":z(e.getAttribute("class"))})),a.text}function C(a){ba(a,".tou, .touwei")&&!ba(a.previousSibling,"h-cs.jiya-outer")&&a.insertAdjacentHTML("beforebegin",ha),ba(a,".wei, .touwei")&&!ba(a.nextSibling,"h-cs.jiya-outer")&&a.insertAdjacentHTML("afterend",ha)}function D(a,b){var c,d;return ba(a,".tou, .touwei")&&(c=a.previousSibling,ba(c,"h-cs")&&(c.className="jinze-outer jiya-outer",c.setAttribute("prev",b.prev))),ba(a,".wei, .touwei")&&(d=a.nextSibling,ba(d,"h-cs")&&(d.className="jinze-outer jiya-outer "+b["class"],d.removeAttribute("prev"))),[c,d]}function E(a,b,c){return function(){var d=O.localize.writeOnCanvas(b,a),e=O.localize.writeOnCanvas(c,a);return O.localize.compareCanvases(d,e)}}function F(){return E('"Romanization Sans"',"a\u030d","\udb80\udc61")}function G(){return E('"Romanization Sans"',"i\u030d","\udb80\udc69")}function H(){return E('"Zhuyin Kaiti"',"\u31b4\u0358","\udb8c\uddb4")}function I(a){return function(b){var b=b||J,c=O.find(b).avoid(ia);return a.forEach(function(a){c.replace(new RegExp(a[0],"ig"),function(b,c){var d=S.clone(ja);return d.innerHTML=""+c[0]+"",d.setAttribute("display-as",a[1]),0===b.index?d:""})}),c}}var J=a.document,K=J.documentElement,L=J.body,M="3.3.0",N=["initCond","renderElem","renderJiya","renderHanging","correctBiaodian","renderHWS","substCombLigaWithPUA"],O=function(a,b){return new O.fn.init(a,b)},P=function(){return arguments[0]&&(this.context=arguments[0]),arguments[1]&&(this.condition=arguments[1]),this};O.version=M,O.fn=O.prototype={version:M,constructor:O,context:L,condition:K,routine:N,init:P,setRoutine:function(a){return Array.isArray(a)&&(this.routine=a),this},render:function(a){var b=this,a=Array.isArray(a)?a:this.routine;return a.forEach(function(a){"string"==typeof a&&"function"==typeof b[a]?b[a]():Array.isArray(a)&&"function"==typeof b[a[0]]&&b[a.shift()].apply(b,a)}),this}},O.fn.init.prototype=O.fn,O.init=function(){return O.init=O().render()};var Q={punct:{base:"[\u2026,.;:!?\u203d_]",sing:"[\u2010-\u2014\u2026]",middle:"[\\/~\\-&\u2010-\u2014_]",open:"['\"\u2018\u201c\\(\\[\xa1\xbf\u2e18\xab\u2039\u201a\u201c\u201e]",close:"['\"\u201d\u2019\\)\\]\xbb\u203a\u201b\u201d\u201f]",end:"['\"\u201d\u2019\\)\\]\xbb\u203a\u201b\u201d\u201f\u203c\u203d\u2047-\u2049,.;:!?]"},biaodian:{base:"[\ufe30\uff0e\u3001\uff0c\u3002\uff1a\uff1b\uff1f\uff01\u30fc]",liga:"[\u2014\u2026\u22ef]",middle:"[\xb7\uff3c\uff0f\uff0d\u30a0\uff06\u30fb\uff3f]",open:"[\u300c\u300e\u300a\u3008\uff08\u3014\uff3b\uff5b\u3010\u3016]",close:"[\u300d\u300f\u300b\u3009\uff09\u3015\uff3d\uff5d\u3011\u3017]",end:"[\u300d\u300f\u300b\u3009\uff09\u3015\uff3d\uff5d\u3011\u3017\ufe30\uff0e\u3001\uff0c\u3002\uff1a\uff1b\uff1f\uff01\u30fc]"},hanzi:{base:"[\u4e00-\u9fff\u3400-\u4db5\u31c0-\u31e3\u3007\ufa0e\ufa0f\ufa11\ufa13\ufa14\ufa1f\ufa21\ufa23\ufa24\ufa27-\ufa29]|[\ud800-\udbff][\udc00-\udfff]",desc:"[\u2ff0-\u2ffa]",radical:"[\u2f00-\u2fd5\u2e80-\u2ef3]"},latin:{base:"[A-Za-z0-9\xc0-\xff\u0100-\u017f\u0180-\u024f\u2c60-\u2c7f\ua720-\ua7ff\u1e00-\u1eff]",combine:"[\u0300-\u0341\u1dc0-\u1dff]"},ellinika:{base:"[0-9\u0370-\u03ff\u1f00-\u1fff]",combine:"[\u0300-\u0345\u1dc0-\u1dff]"},kirillica:{base:"[0-9\u0400-\u0482\u048a-\u04ff\u0500-\u052f\ua640-\ua66e\ua67e-\ua697]",combine:"[\u0483-\u0489\u2de0-\u2dff\ua66f-\ua67d\ua69f]"},kana:{base:"[\u30a2\u30a4\u30a6\u30a8\u30aa-\u30fa\u3042\u3044\u3046\u3048\u304a-\u3094\u309f\u30ff]|\ud82c[\udc00-\udc01]",small:"[\u3041\u3043\u3045\u3047\u3049\u30a1\u30a3\u30a5\u30a7\u30a9\u3063\u3083\u3085\u3087\u308e\u3095\u3096\u30c3\u30e3\u30e5\u30e7\u30ee\u30f5\u30f6\u31f0-\u31ff]",combine:"[\u3099-\u309c]",half:"[\uff66-\uff9f]",mark:"[\u30a0\u309d\u309e\u30fb-\u30fe]"},eonmun:{base:"[\uac00-\ud7a3]",letter:"[\u1100-\u11ff\u314f-\u3163\u3131-\u318e\ua960-\ua97c\ud7b0-\ud7fb]",half:"[\uffa1-\uffdc]"},zhuyin:{base:"[\u3105-\u312d\u31a0-\u31ba]",initial:"[\u3105-\u3119\u312a-\u312c\u31a0-\u31a3]",medial:"[\u3127-\u3129]","final":"[\u311a-\u3129\u312d\u31a4-\u31b3\u31b8-\u31ba]",tone:"[\u02d9\u02ca\u02c5\u02c7\u02cb\u02ea\u02eb]",checked:"[\u31b4-\u31b7][\u0358\u030d]?"}},R=function(){var a="[\\x20\\t\\r\\n\\f]",b=Q.punct.open,c=(Q.punct.close,Q.punct.end),d=Q.punct.middle,e=Q.punct.sing,f=b+"|"+c+"|"+d,g=Q.biaodian.open,h=Q.biaodian.close,i=Q.biaodian.end,j=Q.biaodian.middle,k=Q.biaodian.liga+"{2}",l=g+"|"+i+"|"+j,m=Q.kana.base+Q.kana.combine+"?",n=Q.kana.small+Q.kana.combine+"?",o=Q.kana.half,p=Q.eonmun.base+"|"+Q.eonmun.letter,q=Q.eonmun.half,r=Q.hanzi.base+"|"+Q.hanzi.desc+"|"+Q.hanzi.radical+"|"+m,s=Q.ellinika.combine,t=Q.latin.base+s+"*",u=Q.ellinika.base+s+"*",v=Q.kirillica.combine,w=Q.kirillica.base+v+"*",x=t+"|"+u+"|"+w,y="['\u2019]",z=r+"|(?:"+x+"|"+y+")+",A=Q.zhuyin.initial,B=Q.zhuyin.medial,C=Q.zhuyin["final"],D=Q.zhuyin.tone+"|"+Q.zhuyin.checked;return{"char":{punct:{all:new RegExp("("+f+")","g"),open:new RegExp("("+b+")","g"),end:new RegExp("("+c+")","g"),sing:new RegExp("("+e+")","g")},biaodian:{all:new RegExp("("+l+")","g"),open:new RegExp("("+g+")","g"),close:new RegExp("("+h+")","g"),end:new RegExp("("+i+")","g"),liga:new RegExp("("+k+")","g")},hanzi:new RegExp("("+r+")","g"),latin:new RegExp("("+t+")","ig"),ellinika:new RegExp("("+u+")","ig"),kirillica:new RegExp("("+w+")","ig"),kana:new RegExp("("+m+"|"+n+"|"+o+")","g"),eonmun:new RegExp("("+p+"|"+q+")","g")},group:{biaodian:[new RegExp("(("+l+"){2,})","g"),new RegExp("("+k+g+")","g")],punct:null,hanzi:new RegExp("("+r+")+","g"),western:new RegExp("("+t+"|"+u+"|"+w+"|"+f+")+","ig"),kana:new RegExp("("+m+"|"+n+"|"+o+")+","g"),eonmun:new RegExp("("+p+"|"+q+"|"+f+")+","g")},jinze:{hanging:new RegExp(a+"*([\u3001\uff0c\u3002\uff0e])(?!"+i+")","ig"),touwei:new RegExp("("+g+"+)("+z+")("+i+"+)","ig"),tou:new RegExp("("+g+"+)("+z+")","ig"),wei:new RegExp("("+z+")("+i+"+)","ig"),middle:new RegExp("("+z+")("+j+")("+z+")","ig")},zhuyin:{form:new RegExp("^\u02d9?("+A+")?("+B+")?("+C+")?("+D+")?$"),diao:new RegExp("("+D+")","g")},hws:{base:[new RegExp("("+r+")("+x+"|"+b+")","ig"),new RegExp("("+x+"|"+c+")("+r+")","ig")],strict:[new RegExp("("+r+")"+a+"?("+x+"|"+b+")","ig"),new RegExp("("+x+"|"+c+")"+a+"?("+r+")","ig")]},"display-as":{"ja-font-for-hant":["\u67e5 \u67fb","\u555f \u5553","\u9109 \u9115","\u503c \u5024","\u6c61 \u6c5a"],"comb-liga-pua":[["a[\u030d\u0358]","\udb80\udc61"],["e[\u030d\u0358]","\udb80\udc65"],["i[\u030d\u0358]","\udb80\udc69"],["o[\u030d\u0358]","\udb80\udc6f"],["u[\u030d\u0358]","\udb80\udc75"],["\u31b4[\u030d\u0358]","\udb8c\uddb4"],["\u31b5[\u030d\u0358]","\udb8c\uddb5"],["\u31b6[\u030d\u0358]","\udb8c\uddb6"],["\u31b7[\u030d\u0358]","\udb8c\uddb7"]],"comb-liga-vowel":[["a[\u030d\u0358]","\udb80\udc61"],["e[\u030d\u0358]","\udb80\udc65"],["i[\u030d\u0358]","\udb80\udc69"],["o[\u030d\u0358]","\udb80\udc6f"],["u[\u030d\u0358]","\udb80\udc75"]],"comb-liga-zhuyin":[["\u31b4[\u030d\u0358]","\udb8c\uddb4"],["\u31b5[\u030d\u0358]","\udb8c\uddb5"],["\u31b6[\u030d\u0358]","\udb8c\uddb6"],["\u31b7[\u030d\u0358]","\udb8c\uddb7"]]},"inaccurate-char":[["[\u2022\u2027]","\xb7"],["\u22ef\u22ef","\u2026\u2026"],["\u2500\u2500","\u2014\u2014"],["\u2035","\u2018"],["\u2032","\u2019"],["\u2036","\u201c"],["\u2033","\u201d"]]}}();O.UNICODE=Q,O.TYPESET=R,O.UNICODE.cjk=O.UNICODE.hanzi,O.UNICODE.greek=O.UNICODE.ellinika,O.UNICODE.cyrillic=O.UNICODE.kirillica,O.UNICODE.hangul=O.UNICODE.eonmun,O.UNICODE.zhuyin.ruyun=O.UNICODE.zhuyin.checked,O.TYPESET["char"].cjk=O.TYPESET["char"].hanzi,O.TYPESET["char"].greek=O.TYPESET["char"].ellinika,O.TYPESET["char"].cyrillic=O.TYPESET["char"].kirillica,O.TYPESET["char"].hangul=O.TYPESET["char"].eonmun,O.TYPESET.group.hangul=O.TYPESET.group.eonmun,O.TYPESET.group.cjk=O.TYPESET.group.hanzi;var S={id:function(a,b){return(b||J).getElementById(a)},tag:function(a,b){return this.makeArray((b||J).getElementsByTagName(a))},qs:function(a,b){return(b||J).querySelector(a)},qsa:function(a,b){return this.makeArray((b||J).querySelectorAll(a))},parent:function(a,b){return b?function(){if("function"==typeof S.matches){for(;!S.matches(a,b);){if(!a||a===J.documentElement){a=void 0;break}a=a.parentNode}return a}}():a?a.parentNode:void 0},create:function(a,b){var c="!"===a?J.createDocumentFragment():""===a?J.createTextNode(b||""):J.createElement(a);try{b&&(c.className=b)}catch(d){}return c},clone:function(a,b){return a.cloneNode("boolean"==typeof b?b:!0)},remove:function(a){return a.parentNode.removeChild(a)},setAttr:function(a,b){if("object"==typeof b){var c=b.length;if("object"==typeof b[0]&&"name"in b[0])for(var d=0;c>d;d++)void 0!==b[d].value&&a.setAttribute(b[d].name,b[d].value);else for(var e in b)b.hasOwnProperty(e)&&void 0!==b[e]&&a.setAttribute(e,b[e]);return a}},isElmt:function(a){return a&&a.nodeType===Node.ELEMENT_NODE},isIgnorable:function(a){return a?"WBR"===a.nodeName||a.nodeType===Node.COMMENT_NODE:!1},makeArray:function(a){return Array.prototype.slice.call(a)},extend:function(a,b){if(("object"==typeof a||"function"==typeof a)&&"object"==typeof b)for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}},T=function(b){function c(a,b,c){var d=Element.prototype,e=d.matches||d.mozMatchesSelector||d.msMatchesSelector||d.webkitMatchesSelector;return a instanceof Element?e.call(a,b):c&&/^[39]$/.test(a.nodeType)?!0:!1}var d="0.2.1",e=b.NON_INLINE_PROSE,f=b.PRESETS.prose.filterElements,g=a||{},h=g.document||void 0;if("undefined"==typeof h)throw new Error("Fibre requires a DOM-supported environment.");var i=function(a,b){return new i.fn.init(a,b)};return i.version=d,i.matches=c,i.fn=i.prototype={constructor:i,version:d,finder:[],context:void 0,portionMode:"retain",selector:{},preset:"prose",init:function(a,b){if(b&&(this.preset=null),this.selector={context:null,filter:[],avoid:[],boundary:[]},!a)throw new Error("A context is required for Fibre to initialise.");return a instanceof Node?a instanceof Document?this.context=a.body||a:this.context=a:"string"==typeof a&&(this.context=h.querySelector(a),this.selector.context=a),this},filterFn:function(a){var b=this.selector.filter.join(", ")||"*",d=this.selector.avoid.join(", ")||null,e=c(a,b,!0)&&!c(a,d);return"prose"===this.preset?f(a)&&e:e},boundaryFn:function(a){var b=this.selector.boundary.join(", ")||null,d=c(a,b);return"prose"===this.preset?e(a)||d:d},filter:function(a){return"string"==typeof a&&this.selector.filter.push(a),this},endFilter:function(a){return a?this.selector.filter=[]:this.selector.filter.pop(),this},avoid:function(a){return"string"==typeof a&&this.selector.avoid.push(a),this},endAvoid:function(a){return a?this.selector.avoid=[]:this.selector.avoid.pop(),this},addBoundary:function(a){return"string"==typeof a&&this.selector.boundary.push(a),this},removeBoundary:function(){return this.selector.boundary=[],this},setMode:function(a){return this.portionMode="first"===a?"first":"retain",this},replace:function(a,c){var d=this;return d.finder.push(b(d.context,{find:a,replace:c,filterElements:function(a){return d.filterFn(a)},forceContext:function(a){return d.boundaryFn(a)},portionMode:d.portionMode})),d},wrap:function(a,c){var d=this;return d.finder.push(b(d.context,{find:a,wrap:c,filterElements:function(a){return d.filterFn(a)},forceContext:function(a){return d.boundaryFn(a)},portionMode:d.portionMode})),d},revert:function(a){var b=this.finder.length,a=Number(a)||(0===a?Number(0):"all"===a?b:1);if("undefined"==typeof b||0===b)return this;a>b&&(a=b);for(var c=a;c>0;c--)this.finder.pop().revert();return this}},i.fn.filterOut=i.fn.avoid,i.fn.init.prototype=i.fn,i}(function(){function a(a){return String(a).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function b(){return c.apply(null,arguments)||d.apply(null,arguments)}function c(a,c,e,f,g){if(c&&!c.nodeType&&arguments.length<=2)return!1;var h="function"==typeof e;h&&(e=function(a){return function(b,c){return a(b.text,c.startIndex)}}(e));var i=d(c,{find:a,wrap:h?null:e,replace:h?e:"$"+(f||"&"),prepMatch:function(a,b){if(!a[0])throw"findAndReplaceDOMText cannot handle zero-length matches";if(f>0){var c=a[f];a.index+=a[0].indexOf(c),a[0]=c}return a.endIndex=a.index+a[0].length,a.startIndex=a.index,a.index=b,a},filterElements:g});return b.revert=function(){return i.revert()},!0}function d(a,b){return new e(a,b)}function e(a,c){var d=c.preset&&b.PRESETS[c.preset];if(c.portionMode=c.portionMode||f,d)for(var e in d)i.call(d,e)&&!i.call(c,e)&&(c[e]=d[e]);this.node=a,this.options=c,this.prepMatch=c.prepMatch||this.prepMatch,this.reverts=[],this.matches=this.search(),this.matches.length&&this.processMatches()}var f="retain",g="first",h=J,i=({}.toString,{}.hasOwnProperty);return b.NON_PROSE_ELEMENTS={br:1,hr:1,script:1,style:1,img:1,video:1,audio:1,canvas:1,svg:1,map:1,object:1,input:1,textarea:1,select:1,option:1,optgroup:1,button:1},b.NON_CONTIGUOUS_PROSE_ELEMENTS={address:1,article:1,aside:1,blockquote:1,dd:1,div:1,dl:1,fieldset:1,figcaption:1,figure:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,hr:1,main:1,nav:1,noscript:1,ol:1,output:1,p:1,pre:1,section:1,ul:1,br:1,li:1,summary:1,dt:1,details:1,rp:1,rt:1,rtc:1,script:1,style:1,img:1,video:1,audio:1,canvas:1,svg:1,map:1,object:1,input:1,textarea:1,select:1,option:1,optgroup:1,button:1,table:1,tbody:1,thead:1,th:1,tr:1,td:1,caption:1,col:1,tfoot:1,colgroup:1},b.NON_INLINE_PROSE=function(a){return i.call(b.NON_CONTIGUOUS_PROSE_ELEMENTS,a.nodeName.toLowerCase())},b.PRESETS={prose:{forceContext:b.NON_INLINE_PROSE,filterElements:function(a){return!i.call(b.NON_PROSE_ELEMENTS,a.nodeName.toLowerCase())}}},b.Finder=e,e.prototype={search:function(){function b(a){for(var g=0,j=a.length;j>g;++g){var k=a[g];if("string"==typeof k){if(f.global)for(;c=f.exec(k);)h.push(i.prepMatch(c,d++,e));else(c=k.match(f))&&h.push(i.prepMatch(c,0,e));e+=k.length}else b(k)}}var c,d=0,e=0,f=this.options.find,g=this.getAggregateText(),h=[],i=this;return f="string"==typeof f?RegExp(a(f),"g"):f,b(g),h},prepMatch:function(a,b,c){if(!a[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");return a.endIndex=c+a.index+a[0].length,a.startIndex=c+a.index,a.index=b,a},getAggregateText:function(){function a(d,e){if(3===d.nodeType)return[d.data];if(b&&!b(d))return[];var e=[""],f=0;if(d=d.firstChild)do if(3!==d.nodeType){var g=a(d);c&&1===d.nodeType&&(c===!0||c(d))?(e[++f]=g,e[++f]=""):("string"==typeof g[0]&&(e[f]+=g.shift()),g.length&&(e[++f]=g,e[++f]=""))}else e[f]+=d.data;while(d=d.nextSibling);return e}var b=this.options.filterElements,c=this.options.forceContext;return a(this.node)},processMatches:function(){var a,b,c,d=this.matches,e=this.node,f=this.options.filterElements,g=[],h=e,i=d.shift(),j=0,k=0,l=0,m=[e];a:for(;;){if(3===h.nodeType&&(!b&&h.length+j>=i.endIndex?b={node:h,index:l++,text:h.data.substring(i.startIndex-j,i.endIndex-j),indexInMatch:j-i.startIndex,indexInNode:i.startIndex-j,endIndexInNode:i.endIndex-j,isEnd:!0}:a&&g.push({node:h,index:l++,text:h.data,indexInMatch:j-i.startIndex,indexInNode:0}),!a&&h.length+j>i.startIndex&&(a={node:h,index:l++,indexInMatch:0,indexInNode:i.startIndex-j,endIndexInNode:i.endIndex-j,text:h.data.substring(i.startIndex-j,i.endIndex-j)}),j+=h.data.length),c=1===h.nodeType&&f&&!f(h),a&&b){if(h=this.replaceMatch(i,a,g,b),j-=b.node.data.length-b.endIndexInNode,a=null,b=null,g=[],i=d.shift(),l=0,k++,!i)break}else if(!c&&(h.firstChild||h.nextSibling)){h.firstChild?(m.push(h),h=h.firstChild):h=h.nextSibling;continue}for(;;){if(h.nextSibling){h=h.nextSibling;break}if(h=m.pop(),h===e)break a}}},revert:function(){for(var a=this.reverts.length;a--;)this.reverts[a]();this.reverts=[]},prepareReplacementString:function(a,b,c,d){var e=this.options.portionMode;return e===g&&b.indexInMatch>0?"":(a=a.replace(/\$(\d+|&|`|')/g,function(a,b){var d;switch(b){case"&":d=c[0];break;case"`":d=c.input.substring(0,c.startIndex);break;case"'":d=c.input.substring(c.endIndex);break;default:d=c[+b]}return d}),e===g?a:b.isEnd?a.substring(b.indexInMatch):a.substring(b.indexInMatch,b.indexInMatch+b.text.length))},getPortionReplacementNode:function(a,b,c){var d=this.options.replace||"$&",e=this.options.wrap;if(e&&e.nodeType){var f=h.createElement("div");f.innerHTML=e.outerHTML||(new XMLSerializer).serializeToString(e),e=f.firstChild}if("function"==typeof d)return d=d(a,b,c),d&&d.nodeType?d:h.createTextNode(String(d));var g="string"==typeof e?h.createElement(e):e;return d=h.createTextNode(this.prepareReplacementString(d,a,b,c)),d.data&&g?(g.appendChild(d),g):d},replaceMatch:function(a,b,c,d){var e,f,g=b.node,i=d.node;if(g===i){var j=g;b.indexInNode>0&&(e=h.createTextNode(j.data.substring(0,b.indexInNode)),j.parentNode.insertBefore(e,j));var k=this.getPortionReplacementNode(d,a);return j.parentNode.insertBefore(k,j),d.endIndexInNoden;++n){var p=c[n],q=this.getPortionReplacementNode(p,a);p.node.parentNode.replaceChild(q,p.node),this.reverts.push(function(a,b){return function(){b.parentNode.replaceChild(a.node,b)}}(p,q)),m.push(q)}var r=this.getPortionReplacementNode(d,a);return g.parentNode.insertBefore(e,g),g.parentNode.insertBefore(l,g),g.parentNode.removeChild(g),i.parentNode.insertBefore(r,i),i.parentNode.insertBefore(f,i),i.parentNode.removeChild(i),this.reverts.push(function(){e.parentNode.removeChild(e),l.parentNode.replaceChild(g,l),f.parentNode.removeChild(f),r.parentNode.replaceChild(i,r)}),r}},b}()),U=function(){var a=S.create("div");return a.appendChild(S.create("","0-")),a.appendChild(S.create("","2")),a.normalize(),2!==a.firstChild.length}();S.extend(T.fn,{normalize:function(){return U&&this.context.normalize(),this},jinzify:function(a){return this.filter(a||null).avoid("h-jinze").replace(R.jinze.touwei,function(a,b){var c=S.create("h-jinze","touwei");return c.innerHTML=b[0],0===a.index&&a.isEnd||1===a.index?c:""}).replace(R.jinze.wei,function(a,b){var c=S.create("h-jinze","wei");return c.innerHTML=b[0],0===a.index?c:""}).replace(R.jinze.tou,function(a,b){var c=S.create("h-jinze","tou");return c.innerHTML=b[0],0===a.index&&a.isEnd||1===a.index?c:""}).replace(R.jinze.middle,function(a,b){var c=S.create("h-jinze","middle");return c.innerHTML=b[0],0===a.index&&a.isEnd||1===a.index?c:""}).endAvoid().endFilter()},groupify:function(a){var a=S.extend({biaodian:!1,hanzi:!1,kana:!1,eonmun:!1,western:!1},a||{});return this.avoid("h-word, h-char-group"),a.biaodian&&this.replace(R.group.biaodian[0],d).replace(R.group.biaodian[1],d),(a.hanzi||a.cjk)&&this.wrap(R.group.hanzi,S.clone(S.create("h-char-group","hanzi cjk"))),a.western&&this.wrap(R.group.western,S.clone(S.create("h-word","western"))),a.kana&&this.wrap(R.group.kana,S.clone(S.create("h-char-group","kana"))),(a.eonmun||a.hangul)&&this.wrap(R.group.eonmun,S.clone(S.create("h-word","eonmun hangul"))),this.endAvoid(),this},charify:function(a){var a=S.extend({avoid:!0,biaodian:!1,punct:!1,hanzi:!1,latin:!1,ellinika:!1,kirillica:!1,kana:!1,eonmun:!1},a||{});return a.avoid&&this.avoid("h-char"),a.biaodian&&this.replace(R["char"].biaodian.all,c(a.biaodian)||function(a){return e(a.text)}).replace(R["char"].biaodian.liga,c(a.biaodian)||function(a){return e(a.text)}),(a.hanzi||a.cjk)&&this.wrap(R["char"].hanzi,c(a.hanzi||a.cjk)||S.clone(S.create("h-char","hanzi cjk"))),a.punct&&this.wrap(R["char"].punct.all,c(a.punct)||S.clone(S.create("h-char","punct"))),a.latin&&this.wrap(R["char"].latin,c(a.latin)||S.clone(S.create("h-char","alphabet latin"))),(a.ellinika||a.greek)&&this.wrap(R["char"].ellinika,c(a.ellinika||a.greek)||S.clone(S.create("h-char","alphabet ellinika greek"))),(a.kirillica||a.cyrillic)&&this.wrap(R["char"].kirillica,c(a.kirillica||a.cyrillic)||S.clone(S.create("h-char","alphabet kirillica cyrillic"))),a.kana&&this.wrap(R["char"].kana,c(a.kana)||S.clone(S.create("h-char","kana"))),(a.eonmun||a.hangul)&&this.wrap(R["char"].eonmun,c(a.eonmun||a.hangul)||S.clone(S.create("h-char","eonmun hangul"))),this.endAvoid(),this}}),S.extend(O,{isNodeNormalizeNormal:U,find:T,createBDGroup:d,createBDChar:e}),S.matches=O.find.matches,void["setMode","wrap","replace","revert","addBoundary","removeBoundary","avoid","endAvoid","filter","endFilter","jinzify","groupify","charify"].forEach(function(a){O.fn[a]=function(){return this.finder||(this.finder=O.find(this.context)),this.finder[a](arguments[0],arguments[1]),this}});var V={};V.writeOnCanvas=g,V.compareCanvases=h,V.detectFont=i,V.support=function(){function b(a){var b,c=a.charAt(0).toUpperCase()+a.slice(1),d=(a+" "+e.join(c+" ")+c).split(" ");return d.forEach(function(a){"string"==typeof f.style[a]&&(b=!0)}),b||!1}function c(a,b){var c,d,e,f=L||S.create("body"),g=S.create("div"),h=L?g:f,b="function"==typeof b?b:function(){};return c=[""].join(""),h.innerHTML+=c,f.appendChild(g),L||(f.style.background="",f.style.overflow="hidden",e=K.style.overflow,K.style.overflow="hidden",K.appendChild(f)),d=b(h,a),S.remove(h),L||(K.style.overflow=e),!!d}function d(b,c){var d;return a.getComputedStyle?d=J.defaultView.getComputedStyle(b,null).getPropertyValue(c):b.currentStyle&&(d=b.currentStyle[c]),d}var e="Webkit Moz ms".split(" "),f=S.create("h-test");return{columnwidth:b("columnWidth"),fontface:function(){var a;return c('@font-face { font-family: font; src: url("//"); }',function(b,c){var d=S.qsa("style",b)[0],e=d.sheet||d.styleSheet,f=e?e.cssRules&&e.cssRules[0]?e.cssRules[0].cssText:e.cssText||"":"";a=/src/i.test(f)&&0===f.indexOf(c.split(" ")[0])}),a}(),ruby:function(){var a,b=S.create("ruby"),c=S.create("rt"),e=S.create("rp");return b.appendChild(e),b.appendChild(c),K.appendChild(b),a="none"===d(e,"display")||"ruby"===d(b,"display")&&"ruby-text"===d(c,"display")?!0:!1,K.removeChild(b),b=null,c=null,e=null,a}(),"ruby-display":function(){var a=S.create("div");return a.innerHTML='',"ruby"===a.querySelector("h-test-a").style.display&&"ruby-text-container"===a.querySelector("h-test-b").style.display}(),"ruby-interchar":function(){var a,b="inter-character",c=S.create("div");return c.innerHTML='',a=c.querySelector("h-test").style,a.rubyPosition===b||a.WebkitRubyPosition===b||a.MozRubyPosition===b||a.msRubyPosition===b}(),textemphasis:b("textEmphasis"),unicoderange:function(){var a;return c('@font-face{font-family:test-for-unicode-range;src:local(Arial),local("Droid Sans")}@font-face{font-family:test-for-unicode-range;src:local("Times New Roman"),local(Times),local("Droid Serif");unicode-range:U+270C}',function(){a=!V.detectFont("test-for-unicode-range",'Arial, "Droid Sans"',"Q")}),a}(),writingmode:b("writingMode")}}(),V.initCond=function(a){var b,a=a||K,c="";for(var d in V.support)b=(V.support[d]?"":"no-")+d,a.classList.add(b),c+=b+" ";return c};var W=V.support["ruby-interchar"];S.extend(V,{renderRuby:function(a,b){var b=b||"ruby",c=S.qsa(b,a);S.qsa("rtc",a).concat(c).map(n),c.forEach(function(a){var b,c=a.classList;c.contains("complex")?b=l(a):c.contains("zhuyin")&&(b=W?k(a):j(a)),b&&a.parentNode.replaceChild(b,a)})},simplifyRubyClass:n,getZhuyinHTML:q,renderComplexRuby:l,renderSimpleRuby:j,renderInterCharRuby:k}),S.extend(V,{renderElem:function(a){this.renderRuby(a),this.renderDecoLine(a),this.renderDecoLine(a,"s, del"),this.renderEm(a)},renderDecoLine:function(a,b){var c=S.qsa(b||"u, ins",a),d=c.length;a:for(;d--;){var e=c[d],f=null;do{if(f=(f||e).previousSibling,!f)continue a;c[d-1]===f&&e.classList.add("adjacent")}while(S.isIgnorable(f))}},renderEm:function(a,b){var c=b?"qsa":"tag",b=b||"em",d=S[c](b,a);d.forEach(function(a){var b=O(a);V.support.textemphasis?b.avoid("rt, h-char").charify({biaodian:!0,punct:!0}):b.avoid("rt, h-char, h-char-group").jinzify().groupify({western:!0}).charify({hanzi:!0,biaodian:!0,punct:!0,latin:!0,ellinika:!0,kirillica:!0})})}}),O.normalize=V,O.localize=V,O.support=V.support,O.detectFont=V.detectFont,O.fn.initCond=function(){return this.condition.classList.add("han-js-rendered"),O.normalize.initCond(this.condition),this},void["Elem","DecoLine","Em","Ruby"].forEach(function(a){var b="render"+a;O.fn[b]=function(a){return O.normalize[b](this.context,a),this}}),S.extend(O.support,{heiti:!0,songti:O.detectFont('"Han Songti"'),"songti-gb":O.detectFont('"Han Songti GB"'),kaiti:O.detectFont('"Han Kaiti"'),fangsong:O.detectFont('"Han Fangsong"')}),O.correctBiaodian=function(a){var a=a||J,b=O.find(a);return b.avoid("h-char").replace(/([\u2018\u201c])/g,function(a){var b=O.createBDChar(a.text);return b.classList.add("bd-open","punct"),b}).replace(/([\u2019\u201d])/g,function(a){var b=O.createBDChar(a.text);return b.classList.add("bd-close","bd-end","punct"),b}),O.support.unicoderange?b:b.charify({biaodian:!0})},O.correctBasicBD=O.correctBiaodian,O.correctBD=O.correctBiaodian,S.extend(O.fn,{biaodian:null,correctBiaodian:function(){return this.biaodian=O.correctBiaodian(this.context),this},revertCorrectedBiaodian:function(){try{this.biaodian.revert("all")}catch(a){}return this}}),O.fn.correctBasicBD=O.fn.correctBiaodian,O.fn.revertBasicBD=O.fn.revertCorrectedBiaodian;var X="<>",Y=S.create("h-hws");Y.setAttribute("hidden",""),Y.innerHTML=" ";var Z;S.extend(O,{renderHWS:function(a,b){var c=b?"textarea, code, kbd, samp, pre":"textarea",d=b?"strict":"base",a=a||J,e=O.find(a); +return e.avoid(c).replace(O.TYPESET.hws[d][0],t).replace(O.TYPESET.hws[d][1],t).replace(new RegExp("("+X+")+","g"),u).replace(/([\'"])\s(.+?)\s\1/g,v).replace(/\s[\u2018\u201c]/g,w).replace(/[\u2019\u201d]\s/g,w).normalize(),e}}),S.extend(O.fn,{renderHWS:function(a){return O.renderHWS(this.context,a),this},revertHWS:function(){return S.tag("h-hws",this.context).forEach(function(a){S.remove(a)}),this.HWS=[],this}});var $="bd-hangable",_="h-char.bd-hangable",aa='',ba=O.find.matches;O.support["han-space"]=x(),S.extend(O,{detectSpaceFont:x,isSpaceFontLoaded:x(),renderHanging:function(a){var a=a||J,b=O.find(a);return b.avoid("textarea, code, kbd, samp, pre").avoid(_).replace(R.jinze.hanging,function(a){if(/^[\x20\t\r\n\f]+$/.test(a.text))return"";var b,c,d,e,f=a.node.parentNode;return(b=S.parent(f,"h-jinze"))&&y(b),e=a.text.trim(),c=O.createBDChar(e),c.innerHTML=""+e+"",c.classList.add($),d=S.parent(f,"h-char.biaodian"),d?function(){return d.classList.add($),ba(f,"h-inner, h-inner *")?e:c.firstChild}():c}),b}}),S.extend(O.fn,{renderHanging:function(){var a=this.condition.classList;return O.isSpaceFontLoaded=x(),O.isSpaceFontLoaded&&a.contains("no-han-space")&&(a.remove("no-han-space"),a.add("han-space")),O.renderHanging(this.context),this},revertHanging:function(){return S.qsa("h-char.bd-hangable, h-cs.hangable-outer",this.context).forEach(function(a){var b=a.classList;b.remove("bd-hangable"),b.remove("hangable-outer")}),this}});var ca,da,ea="bd-jiya",fa="h-char.bd-jiya",ga="bd-consecutive",ha='',ba=O.find.matches;O.renderJiya=function(a){var a=a||J,b=O.find(a);return b.avoid("textarea, code, kbd, samp, pre, h-cs").avoid(fa).charify({avoid:!1,biaodian:A}).endAvoid().avoid("textarea, code, kbd, samp, pre, h-cs").replace(R.group.biaodian[0],B).replace(R.group.biaodian[1],B),b},S.extend(O.fn,{renderJiya:function(){return O.renderJiya(this.context),this},revertJiya:function(){return S.qsa("h-char.bd-jiya, h-cs.jiya-outer",this.context).forEach(function(a){var b=a.classList;b.remove("bd-jiya"),b.remove("jiya-outer")}),this}});var ia="textarea, code, kbd, samp, pre",ja=S.create("h-char","comb-liga");return S.extend(O,{isVowelCombLigaNormal:F(),isVowelICombLigaNormal:G(),isZhuyinCombLigaNormal:H(),isCombLigaNormal:G()(),substVowelCombLiga:I(O.TYPESET["display-as"]["comb-liga-vowel"]),substZhuyinCombLiga:I(O.TYPESET["display-as"]["comb-liga-zhuyin"]),substCombLigaWithPUA:I(O.TYPESET["display-as"]["comb-liga-pua"]),substInaccurateChar:function(a){var a=a||J,b=O.find(a);b.avoid(ia),O.TYPESET["inaccurate-char"].forEach(function(a){b.replace(new RegExp(a[0],"ig"),a[1])})}}),S.extend(O.fn,{"comb-liga-vowel":null,"comb-liga-vowel-i":null,"comb-liga-zhuyin":null,"inaccurate-char":null,substVowelCombLiga:function(){return this["comb-liga-vowel"]=O.substVowelCombLiga(this.context),this},substVowelICombLiga:function(){return this["comb-liga-vowel-i"]=O.substVowelICombLiga(this.context),this},substZhuyinCombLiga:function(){return this["comb-liga-zhuyin"]=O.substZhuyinCombLiga(this.context),this},substCombLigaWithPUA:function(){return O.isVowelCombLigaNormal()?O.isVowelICombLigaNormal()||(this["comb-liga-vowel-i"]=O.substVowelICombLiga(this.context)):this["comb-liga-vowel"]=O.substVowelCombLiga(this.context),O.isZhuyinCombLigaNormal()||(this["comb-liga-zhuyin"]=O.substZhuyinCombLiga(this.context)),this},revertVowelCombLiga:function(){try{this["comb-liga-vowel"].revert("all")}catch(a){}return this},revertVowelICombLiga:function(){try{this["comb-liga-vowel-i"].revert("all")}catch(a){}return this},revertZhuyinCombLiga:function(){try{this["comb-liga-zhuyin"].revert("all")}catch(a){}return this},revertCombLigaWithPUA:function(){try{this["comb-liga-vowel"].revert("all"),this["comb-liga-vowel-i"].revert("all"),this["comb-liga-zhuyin"].revert("all")}catch(a){}return this},substInaccurateChar:function(){return this["inaccurate-char"]=O.substInaccurateChar(this.context),this},revertInaccurateChar:function(){try{this["inaccurate-char"].revert("all")}catch(a){}return this}}),a.addEventListener("DOMContentLoaded",function(){var a;K.classList.contains("han-init")?O.init():(a=J.querySelector(".han-init-context"))&&(O.init=O(a).render())}),("undefined"==typeof b||b===!1)&&(a.Han=O),O}); \ No newline at end of file diff --git a/lib/algolia-instant-search/instantsearch.min.css b/lib/algolia-instant-search/instantsearch.min.css new file mode 100644 index 0000000..590f6f9 --- /dev/null +++ b/lib/algolia-instant-search/instantsearch.min.css @@ -0,0 +1 @@ +/*! instantsearch.js 1.5.0 | © Algolia Inc. and other contributors; Licensed MIT | github.com/algolia/instantsearch.js */.ais-search-box--powered-by{font-size:.8em;text-align:right;margin-top:2px}.ais-search-box--powered-by-link{display:inline-block;width:45px;height:16px;text-indent:101%;overflow:hidden;white-space:nowrap;background-image:url(data:image/png;base64,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);background-repeat:no-repeat;background-size:contain;vertical-align:middle}.ais-pagination--item{display:inline-block;padding:3px}.ais-range-slider--value,.ais-range-slider--value-sub{font-size:.8em;padding-top:15px}.ais-pagination--item__disabled{visibility:hidden}.ais-hierarchical-menu--list__lvl1,.ais-hierarchical-menu--list__lvl2{margin-left:10px}.ais-range-slider--target{position:relative;direction:ltr;background:#F3F4F7;height:6px;margin-top:2em;margin-bottom:2em}.ais-range-slider--base{height:100%;position:relative;z-index:1;border-top:1px solid #DDD;border-bottom:1px solid #DDD;border-left:2px solid #DDD;border-right:2px solid #DDD}.ais-range-slider--origin{position:absolute;right:0;top:0;left:0;bottom:0}.ais-range-slider--connect{background:#46AEDA}.ais-range-slider--background{background:#F3F4F7}.ais-range-slider--handle{width:20px;height:20px;position:relative;z-index:1;background:#FFF;border:1px solid #46AEDA;border-radius:50%;cursor:pointer}.ais-range-slider--handle-lower{left:-10px;bottom:7px}.ais-range-slider--handle-upper{right:10px;bottom:7px}.ais-range-slider--tooltip{position:absolute;background:#FFF;top:-22px;font-size:.8em}.ais-range-slider--pips{box-sizing:border-box;position:absolute;height:3em;top:100%;left:0;width:100%}.ais-range-slider--value{width:40px;position:absolute;text-align:center;margin-left:-20px}.ais-range-slider--marker{position:absolute;background:#DDD;margin-left:-1px;width:1px;height:5px}.ais-range-slider--marker-sub{background:#DDD;width:2px;margin-left:-2px;height:13px}.ais-range-slider--marker-large{background:#DDD;width:2px;margin-left:-2px;height:12px}.ais-star-rating--star,.ais-star-rating--star__empty{display:inline-block;width:1em;height:1em}.ais-range-slider--marker-large:first-child{margin-left:0}.ais-star-rating--item{vertical-align:middle}.ais-star-rating--item__active{font-weight:700}.ais-star-rating--star:before{content:'\2605';color:#FBAE00}.ais-star-rating--star__empty:before{content:'\2606';color:#FBAE00}.ais-star-rating--link__disabled .ais-star-rating--star:before,.ais-star-rating--link__disabled .ais-star-rating--star__empty:before{color:#C9C9C9}.ais-root__collapsible .ais-header{cursor:pointer}.ais-root__collapsed .ais-body,.ais-root__collapsed .ais-footer{display:none} \ No newline at end of file diff --git a/lib/algolia-instant-search/instantsearch.min.js b/lib/algolia-instant-search/instantsearch.min.js new file mode 100644 index 0000000..2bd5d59 --- /dev/null +++ b/lib/algolia-instant-search/instantsearch.min.js @@ -0,0 +1,15 @@ +/*! instantsearch.js 1.5.0 | © Algolia Inc. and other contributors; Licensed MIT | github.com/algolia/instantsearch.js */ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.instantsearch=t():e.instantsearch=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}var o=n(1),i=r(o);e.exports=i["default"]},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0}),n(2),n(3);var o=n(4),i=r(o),a=n(5),s=r(a),u=n(99),l=r(u),c=n(222),f=r(c),p=n(400),d=r(p),h=n(404),m=r(h),v=n(408),g=r(v),y=n(411),b=r(y),_=n(416),C=r(_),w=n(420),x=r(w),P=n(422),E=r(P),R=n(424),S=r(R),O=n(425),T=r(O),k=n(432),N=r(k),j=n(437),A=r(j),M=n(439),F=r(M),I=n(443),D=r(I),U=n(444),L=r(U),H=n(447),V=r(H),B=n(450),q=r(B),W=n(220),K=r(W),Q=(0,i["default"])(s["default"]);Q.widgets={clearAll:f["default"],currentRefinedValues:d["default"],hierarchicalMenu:m["default"],hits:g["default"],hitsPerPageSelector:b["default"],menu:C["default"],refinementList:x["default"],numericRefinementList:E["default"],numericSelector:S["default"],pagination:T["default"],priceRanges:N["default"],searchBox:A["default"],rangeSlider:F["default"],sortBySelector:D["default"],starRating:L["default"],stats:V["default"],toggle:q["default"]},Q.version=K["default"],Q.createQueryString=l["default"].url.getQueryStringFromState,t["default"]=Q},function(e,t){"use strict";Object.freeze||(Object.freeze=function(e){if(Object(e)!==e)throw new TypeError("Object.freeze can only be called on Objects.");return e})},function(e,t){"use strict";var n={};if(!Object.setPrototypeOf&&!n.__proto__){var r=Object.getPrototypeOf;Object.getPrototypeOf=function(e){return e.__proto__?e.__proto__:r.call(Object,e)}}},function(e,t){"use strict";function n(e){var t=function(){for(var t=arguments.length,n=Array(t),o=0;t>o;o++)n[o]=arguments[o];return new(r.apply(e,[null].concat(n)))};return t.__proto__=e,t.prototype=e.prototype,t}var r=Function.prototype.bind;e.exports=n},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(){return"#"}function u(e,t){if(!t.getConfiguration)return e;var n=t.getConfiguration(e);return(0,y["default"])({},e,n,function(e,t){return Array.isArray(e)?(0,_["default"])(e,t):void 0})}Object.defineProperty(t,"__esModule",{value:!0});var l=Object.assign||function(e){for(var t=1;te;e+=2){var t=re[e],n=re[e+1];t(n),re[e]=void 0,re[e+1]=void 0}G=0}function v(){try{var e=n(11);return Q=e.runOnLoop||e.runOnContext,f()}catch(t){return h()}}function g(e,t){var n=this,r=n._state;if(r===se&&!e||r===ue&&!t)return this;var o=new this.constructor(b),i=n._result;if(r){var a=arguments[r-1];X(function(){F(r,o,a,i)})}else N(n,o,e,t);return o}function y(e){var t=this;if(e&&"object"==typeof e&&e.constructor===t)return e;var n=new t(b);return S(n,e),n}function b(){}function _(){return new TypeError("You cannot resolve a promise with itself")}function C(){return new TypeError("A promises callback cannot return that same promise.")}function w(e){try{return e.then}catch(t){return le.error=t,le}}function x(e,t,n,r){try{e.call(t,n,r)}catch(o){return o}}function P(e,t,n){X(function(e){var r=!1,o=x(n,t,function(n){r||(r=!0,t!==n?S(e,n):T(e,n))},function(t){r||(r=!0,k(e,t))},"Settle: "+(e._label||" unknown promise"));!r&&o&&(r=!0,k(e,o))},e)}function E(e,t){t._state===se?T(e,t._result):t._state===ue?k(e,t._result):N(t,void 0,function(t){S(e,t)},function(t){k(e,t)})}function R(e,t,n){t.constructor===e.constructor&&n===oe&&constructor.resolve===ie?E(e,t):n===le?k(e,le.error):void 0===n?T(e,t):s(n)?P(e,t,n):T(e,t)}function S(e,t){e===t?k(e,_()):a(t)?R(e,t,w(t)):T(e,t)}function O(e){e._onerror&&e._onerror(e._result),j(e)}function T(e,t){e._state===ae&&(e._result=t,e._state=se,0!==e._subscribers.length&&X(j,e))}function k(e,t){e._state===ae&&(e._state=ue,e._result=t,X(O,e))}function N(e,t,n,r){var o=e._subscribers,i=o.length;e._onerror=null,o[i]=t,o[i+se]=n,o[i+ue]=r,0===i&&e._state&&X(j,e)}function j(e){var t=e._subscribers,n=e._state;if(0!==t.length){for(var r,o,i=e._result,a=0;aa;a++)N(r.resolve(e[a]),void 0,t,n);return o}function L(e){var t=this,n=new t(b);return k(n,e),n}function H(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function V(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function B(e){this._id=he++,this._state=void 0,this._result=void 0,this._subscribers=[],b!==e&&("function"!=typeof e&&H(),this instanceof B?I(this,e):V())}function q(e,t){this._instanceConstructor=e,this.promise=new e(b),Array.isArray(t)?(this._input=t,this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0===this.length?T(this.promise,this._result):(this.length=this.length||0,this._enumerate(),0===this._remaining&&T(this.promise,this._result))):k(this.promise,this._validationError())}function W(){var e;if("undefined"!=typeof o)e=o;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(t){throw new Error("polyfill failed because global object is unavailable in this environment")}var n=e.Promise;n&&"[object Promise]"===Object.prototype.toString.call(n.resolve())&&!n.cast||(e.Promise=me)}var K;K=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)};var Q,$,z,Y=K,G=0,X=function(e,t){re[G]=e,re[G+1]=t,G+=2,2===G&&($?$(m):z())},J="undefined"!=typeof window?window:void 0,Z=J||{},ee=Z.MutationObserver||Z.WebKitMutationObserver,te="undefined"!=typeof e&&"[object process]"==={}.toString.call(e),ne="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,re=new Array(1e3);z=te?c():ee?p():ne?d():void 0===J?v():h();var oe=g,ie=y,ae=void 0,se=1,ue=2,le=new A,ce=new A,fe=D,pe=U,de=L,he=0,me=B;B.all=fe,B.race=pe,B.resolve=ie,B.reject=de,B._setScheduler=u,B._setAsap=l,B._asap=X,B.prototype={constructor:B,then:oe,"catch":function(e){return this.then(null,e)}};var ve=q;q.prototype._validationError=function(){return new Error("Array Methods must be provided an Array")},q.prototype._enumerate=function(){for(var e=this.length,t=this._input,n=0;this._state===ae&&e>n;n++)this._eachEntry(t[n],n)},q.prototype._eachEntry=function(e,t){var n=this._instanceConstructor,r=n.resolve;if(r===ie){var o=w(e);if(o===oe&&e._state!==ae)this._settledAt(e._state,t,e._result);else if("function"!=typeof o)this._remaining--,this._result[t]=e;else if(n===me){var i=new n(b);R(i,e,o),this._willSettleAt(i,t)}else this._willSettleAt(new n(function(t){t(e)}),t)}else this._willSettleAt(r(e),t)},q.prototype._settledAt=function(e,t,n){var r=this.promise;r._state===ae&&(this._remaining--,e===ue?k(r,n):this._result[t]=n),0===this._remaining&&T(r,this._result)},q.prototype._willSettleAt=function(e,t){var n=this;N(e,void 0,function(e){n._settledAt(se,t,e)},function(e){n._settledAt(ue,t,e)})};var ge=W,ye={Promise:me,polyfill:ge};n(12).amd?(r=function(){return ye}.call(t,n,t,i),!(void 0!==r&&(i.exports=r))):"undefined"!=typeof i&&i.exports?i.exports=ye:"undefined"!=typeof this&&(this.ES6Promise=ye),ge()}).call(this)}).call(t,n(9),function(){return this}(),n(10)(e))},function(e,t){function n(){l=!1,a.length?u=a.concat(u):c=-1,u.length&&r()}function r(){if(!l){var e=setTimeout(n);l=!0;for(var t=u.length;t;){for(a=u,u=[];++c1)for(var n=1;n=u.hosts[e.hostType].length&&(d||!h)?u._promise.reject(r):(u.hostIndex[e.hostType]=++u.hostIndex[e.hostType]%u.hosts[e.hostType].length,r instanceof c.RequestTimeout?v():(d||(f=1/0),t(n,s)))}function v(){return u.hostIndex[e.hostType]=++u.hostIndex[e.hostType]%u.hosts[e.hostType].length,s.timeout=u.requestTimeout*(f+1),t(n,s)}var g;if(u._useCache&&(g=e.url),u._useCache&&r&&(g+="_body_"+s.body),u._useCache&&a&&void 0!==a[g])return i("serving response from cache"),u._promise.resolve(JSON.parse(a[g]));if(f>=u.hosts[e.hostType].length)return!h||d?(i("could not get any response"),u._promise.reject(new c.AlgoliaSearchError("Cannot connect to the AlgoliaSearch API. Send an email to support@algolia.com to report and resolve the issue. Application id was: "+u.applicationID))):(i("switching to fallback"),f=0,s.method=e.fallback.method,s.url=e.fallback.url,s.jsonBody=e.fallback.body,s.jsonBody&&(s.body=l(s.jsonBody)),o=u._computeRequestHeaders(),s.timeout=u.requestTimeout*(f+1),u.hostIndex[e.hostType]=0,d=!0,t(u._request.fallback,s));var y=u.hosts[e.hostType][u.hostIndex[e.hostType]]+s.url,b={body:s.body,jsonBody:s.jsonBody,method:s.method,headers:o,timeout:s.timeout,debug:i};return i("method: %s, url: %s, headers: %j, timeout: %d",b.method,y,b.headers,b.timeout),n===u._request.fallback&&i("using fallback"),n.call(u,y,b).then(p,m)}var r,o,i=n(42)("algoliasearch:"+e.url),a=e.cache,u=this,f=0,d=!1,h=u._useFallback&&u._request.fallback&&e.fallback;this.apiKey.length>p&&void 0!==e.body&&void 0!==e.body.params?(e.body.apiKey=this.apiKey,o=this._computeRequestHeaders(!1)):o=this._computeRequestHeaders(),void 0!==e.body&&(r=l(e.body)),i("request start");var m=t(u._request,{url:e.url,method:e.method,body:r,jsonBody:e.body,timeout:u.requestTimeout*(f+1)});return e.callback?void m.then(function(t){s(function(){e.callback(null,t)},u._setTimeout||setTimeout)},function(t){s(function(){e.callback(t)},u._setTimeout||setTimeout)}):m},_getSearchParams:function(e,t){if(void 0===e||null===e)return t;for(var n in e)null!==n&&void 0!==e[n]&&e.hasOwnProperty(n)&&(t+=""===t?"":"&",t+=n+"="+encodeURIComponent("[object Array]"===Object.prototype.toString.call(e[n])?l(e[n]):e[n]));return t},_computeRequestHeaders:function(e){var t=n(15),r={"x-algolia-agent":this._ua,"x-algolia-application-id":this.applicationID};return e!==!1&&(r["x-algolia-api-key"]=this.apiKey),this.userToken&&(r["x-algolia-usertoken"]=this.userToken),this.securityTags&&(r["x-algolia-tagfilters"]=this.securityTags),this.extraHeaders&&t(this.extraHeaders,function(e){r[e.name]=e.value}),r}},r.prototype.Index.prototype={clearCache:function(){this.cache={}},addObject:function(e,t,n){var r=this;return 1!==arguments.length&&"function"!=typeof t||(n=t,t=void 0),this.as._jsonRequest({method:void 0!==t?"PUT":"POST",url:"/1/indexes/"+encodeURIComponent(r.indexName)+(void 0!==t?"/"+encodeURIComponent(t):""),body:e,hostType:"write",callback:n})},addObjects:function(e,t){var r=n(34),o="Usage: index.addObjects(arrayOfObjects[, callback])";if(!r(e))throw new Error(o);for(var i=this,a={requests:[]},s=0;sa&&(t=a),"published"!==e.status?c._promise.delay(t).then(n):e})}function r(e){s(function(){t(null,e)},c._setTimeout||setTimeout)}function o(e){s(function(){t(e)},c._setTimeout||setTimeout)}var i=100,a=5e3,u=0,l=this,c=l.as,f=n();return t?void f.then(r,o):f},clearIndex:function(e){var t=this;return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(t.indexName)+"/clear",hostType:"write",callback:e})},getSettings:function(e){var t=this;return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(t.indexName)+"/settings",hostType:"read",callback:e})},setSettings:function(e,t){var n=this;return this.as._jsonRequest({method:"PUT",url:"/1/indexes/"+encodeURIComponent(n.indexName)+"/settings",hostType:"write",body:e,callback:t})},listUserKeys:function(e){var t=this;return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(t.indexName)+"/keys",hostType:"read",callback:e})},getUserKeyACL:function(e,t){var n=this;return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(n.indexName)+"/keys/"+e,hostType:"read",callback:t})},deleteUserKey:function(e,t){var n=this;return this.as._jsonRequest({method:"DELETE",url:"/1/indexes/"+encodeURIComponent(n.indexName)+"/keys/"+e,hostType:"write",callback:t})},addUserKey:function(e,t,r){var o=n(34),i="Usage: index.addUserKey(arrayOfAcls[, params, callback])";if(!o(e))throw new Error(i);1!==arguments.length&&"function"!=typeof t||(r=t,t=null);var a={acl:e};return t&&(a.validity=t.validity,a.maxQueriesPerIPPerHour=t.maxQueriesPerIPPerHour,a.maxHitsPerQuery=t.maxHitsPerQuery,a.description=t.description,t.queryParameters&&(a.queryParameters=this.as._getSearchParams(t.queryParameters,"")),a.referers=t.referers),this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/keys",body:a,hostType:"write",callback:r})},addUserKeyWithValidity:u(function(e,t,n){return this.addUserKey(e,t,n)},a("index.addUserKeyWithValidity()","index.addUserKey()")),updateUserKey:function(e,t,r,o){var i=n(34),a="Usage: index.updateUserKey(key, arrayOfAcls[, params, callback])";if(!i(t))throw new Error(a);2!==arguments.length&&"function"!=typeof r||(o=r,r=null);var s={acl:t};return r&&(s.validity=r.validity,s.maxQueriesPerIPPerHour=r.maxQueriesPerIPPerHour,s.maxHitsPerQuery=r.maxHitsPerQuery,s.description=r.description,r.queryParameters&&(s.queryParameters=this.as._getSearchParams(r.queryParameters,"")),s.referers=r.referers),this.as._jsonRequest({method:"PUT",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/keys/"+e,body:s,hostType:"write",callback:o})},_search:function(e,t,n){return this.as._jsonRequest({cache:this.cache,method:"POST",url:t||"/1/indexes/"+encodeURIComponent(this.indexName)+"/query",body:{params:e},hostType:"read",fallback:{method:"GET",url:"/1/indexes/"+encodeURIComponent(this.indexName),body:{params:e}},callback:n})},as:null,indexName:null,typeAheadArgs:null,typeAheadValueOption:null}},function(e,t,n){"use strict";function r(e,t){var r=n(15),o=this;"function"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):o.stack=(new Error).stack||"Cannot get a stacktrace, browser is too old",this.name=this.constructor.name,this.message=e||"Unknown error",t&&r(t,function(e,t){o[t]=e})}function o(e,t){function n(){var n=Array.prototype.slice.call(arguments,0);"string"!=typeof n[0]&&n.unshift(t),r.apply(this,n),this.name="AlgoliaSearch"+e+"Error"}return i(n,r),n}var i=n(7);i(r,Error),e.exports={AlgoliaSearchError:r,UnparsableJSON:o("UnparsableJSON","Could not parse the incoming response as JSON, see err.more for details"),RequestTimeout:o("RequestTimeout","Request timedout before getting a response"),Network:o("Network","Network issue, see err.more for details"),JSONPScriptFail:o("JSONPScriptFail","