[
  {
    "path": ".babelrc",
    "content": "{\n    \"presets\": [\n        [\n            \"env\",\n            {\n                \"targets\": {\n                    \"browsers\": [\"last 2 versions\"]\n                }\n            }\n        ]\n    ],\n    \"plugins\": [\"transform-runtime\"]\n}"
  },
  {
    "path": ".gitignore",
    "content": "node_modules/\nnpm-debug.log\n.vscode/\npackage-lock.json\n.temp"
  },
  {
    "path": ".postcssrc.js",
    "content": "module.exports = {\n    plugins: {\n        \"autoprefixer\": {}\n    }\n}"
  },
  {
    "path": "README.md",
    "content": "## hexo-theme-nayo\n\na concise theme for hexo[3.7.0].\n\n在线预览 [preview](https://lemonreds.github.io/) | 常见问题 [common issues](https://lemonreds.github.io/2018/10/01/hexo-theme-nayo/) \n\n## 效果图\n\n![Where is my image?](https://github.com/Lemonreds/hexo-theme-nayo/blob/master/src/nayo.png)\n\n## 安装说明 \n\n1. 从github上clone项目下来，放到目录  **yourhexoblog/themes/** 下。\n```\n$ git clone https://github.com/Lemonreds/hexo-theme-Nayo themes/nayo\n```\n\n或者直接download下来重名为nayo，并放到目录  **yourhexoblog/themes/** 下。\n\n2.修改hexo的配置文件，**yourhexoblog/_config.yml** ，切换主题。\n\n```\ntheme: Nayo\n```\n\n## 关于主题名字 \n\n主题名来自歌曲 <东京不太热> -封茗囧菌\n\n## 修改主题\n\n主题基于 hexoAPI、webpack4.0、Sass、Ejs 开发。\n\n修改Ejs不需要安装依赖即可生效，修改js或css则需要webpack启动服务：\n\n0. 启动hexo，本地预览主题的修改。\n```\nhexo s\n```\n\n1. 安装Node依赖\n```\n$ npm install \n```\n\n2. 运行开发环境\n```\n$ npm run dev\n```\n\n3. 生产环境打包\n```\n$ npm run build\n```\n"
  },
  {
    "path": "_config.yml",
    "content": "# header navigation\n# 导航菜单路径\n# 默认不需要修改\n\nmenu:\n  home: /\n  archives: archives\n  tags: tags\n  about: about\n  search: search\n  \n\n# site title \n# 网站的标题\ntitle: Lemon\n\n# author profile\n# 图片放置于主题目录下: source/images/\n# author为空时 Hexo/_config.yml 配置有效\nprofile: \n  author: Lemon\n  logo: /images/logo.png\n  avatar: /images/avatar.jpg  \n\n# site favicon\n# 图片放置于主题目录下: source/images/\n# 站点图标\nfavicon: /images/favicon.png\n\n# social link\nsocial:  \n  Github: https://github.com/Lemonreds/hexo-theme-nayo \n  Weibo: \n  # Zhihu:\n  # Facebook:\n  Twitter:\n  instagram:\n  # LinkedIn:\n  Neteasemusic:\n  Telegram: /\n\n# site analytics \n# 站点访问统计\n# 填入百度/谷歌的[ analytics id ]\nbaidu_analytics:\n #636802045446222199ae541e32c8133e \ngoogle_analytics: \n\n# comment\n# 评论系统\n\n# disqus(https://disqus.com/)\n# 填入注册好的shortname即可\ndisqus:\n  comment: false\n  shortname: lemonreds\n\n# 基于 valine(https://github.com/xCss/Valine)\n# 创建 leancloud 应用 获取 id|key 填入即可\nleancloud:  \n  comment: true\n  app_id: cFM0eCo0CQ9xmBXmHi1eltol-gzGzoHsz\n  app_key: oh9tizsnvV2vNvWgqEvoNtQO\n\n\n# 基于 mob(http://www.mob.com)\n# 文章分享功能\nmob_share:\n  true\n\n# 文章分享链接\nshare_item:\n- qq\n- weixin\n- weibo\n#- douban\n#- tumblr\n#- facebook\n#- twitter\n#- google\n\n\n\n# mathjax \n# 渲染LateX公式\n# 全局开启后,在你需要显示LateX公式的文章头部增加配置 \n# mathjax: true (参见下方说明)\nmathjax:\n  enable: true\n  \n  # 文章头部支持的配置有:\n  # example:\n  # ---\n  # title: hexo-theme-nayo\n  # date: 2018-02-08 21:44:25\n  #\n  # hide_toc: true | false\n  # hide_excerpt: true | false\n  # banner: /assets/05.jpg\n  # mathjax: true\n  # photos:\n  # - /assets/01.jpg\n  # - /assets/02.jpg\n  # - /assets/03.jpg\n  # - /assets/04.jpg\n# ---\n\n# 文章详情页面生效的配置\n# hide_toc [boolean] 是否隐藏此文章的[TOC],默认为false\n# hide_excerpt [boolean] 是否隐藏此[文章摘要](摘要只显示在首页,不显示在文章页),默认为false\n# mathjax [boolean] 是否在此文章[渲染LateX公式]\n# photos [array] 文章画廊展示图片\n\n# footer\n# 网站底部信息\nfooter:\n  author: Lemon\n  since: 2019"
  },
  {
    "path": "languages/en.yml",
    "content": "Menu:\n  home: Home\n  categories: Categories\n  tags: Tags\n  archives: Archives\n  about: About\n  search: Search\nPage:\n  Archives: Archives\n  Categories: Categories\n  Tags: Tags\n  About: About\n\nPost:\n  Donate: Donate\n  Share: Share\n  Prev: older\n  Next: newer\n \nArchive:\n  count: \"%d\"\n  \n  \nPaginator: \n  Prev: Prev\n  Next: Next\n\n\nContents: Contents\nReadMore: Continue\nUntitled: Untitled\n\nSearch:\n  Sidebar_words: Search\n  input_words: Typing Something here."
  },
  {
    "path": "languages/zh-CN.yml",
    "content": "Menu:\n  home: 首页\n  categories: 分类\n  tags: 标签\n  archives: 归档\n  about: 关于\n  search: 搜索\nPage:\n  Archives: 归档\n  Categories: 分类\n  Tags: 标签\n  About: 关于\n\nPost: \n  Donate: 赞赏\n  Share: 分享\n  Prev: older\n  Next: newer\n\nArchive:\n  count: \"%d\"\n  \nPaginator: \n  Prev: 上一页\n  Next: 下一页\n\nContents: CONTENT\nReadMore: 阅读更多\nUntitled: 无标题\n \nSearch:\n  Sidebar_words: 搜索\n  input_words: 输入你想搜索的"
  },
  {
    "path": "languages/zh-TW.yml",
    "content": "Menu:\n  home: 首頁\n  categories: 分類\n  tags: 標籤\n  archives: 歸檔\n  about: 關於\n  search: 搜索\nPage:\n  Archives: 歸檔\n  Categories: 分類\n  Tags: 標籤\n  About: 關於\n\nPost: \n  Donate: 讚賞\n  Share: 分享\n  Prev: older\n  Next: newer\n \nArchive:\n  count: \"%d\"\n   \nPaginator: \n  Prev: 上一頁\n  Next: 下一頁\n\nContents: 目錄\nReadMore: 閱讀更多\nUntitled: 無標題\n \nSearch:\n  Sidebar_words: 搜索\n  input_words: 输入你想搜索的\n\n"
  },
  {
    "path": "layout/_partial/_post/comment.ejs",
    "content": "<%# 评论%>\n<div class=\"comment\">\n\n    <% if(theme.disqus.comment && theme.disqus.shortname ){ %>\n    <div id=\"disqus_thread\"></div>\n    <script>\n        (function () {\n            var d = document,\n                s = d.createElement('script');\n            s.src = 'https://' + '<%- theme.disqus.shortname %>' + '.disqus.com/embed.js';\n            s.setAttribute('data-timestamp', +new Date());\n            (d.head || d.body).appendChild(s);\n        })();\n    </script>\n\n\n    <% } else if (theme.leancloud.comment && theme.leancloud.app_id && theme.leancloud.app_key ){ %>\n\n    <div id=\"comment\">\n    </div>\n\n    <script src=\"//cdn1.lncld.net/static/js/3.0.4/av-min.js\"></script>\n\n    <script src='//unpkg.com/valine@v1.1.8-beta/dist/Valine.min.js'></script>\n\n    <script>\n        new Valine({\n            el: '#comment',\n            notify: false,\n            verify: false,\n            app_id: '<%- theme.leancloud.app_id %>',\n            app_key: '<%- theme.leancloud.app_key %>',\n            path: window.location.pathname,\n            avatar: 'mm',\n            guest_info: ['nick', 'mail']\n        });\n    </script>\n    <% } %>\n</div>"
  },
  {
    "path": "layout/_partial/_post/donate.ejs",
    "content": "<div class=\"donate-button\">\n\t<i class=\"iconfont icon-donate\"></i>\n</div>\n\n<% var donate = theme.donate %>\n\n\n<div id=\"donate-box\" class=\"none\" >\n\n\t<span class=\"donate-cancel iconfont icon-cancel\"></span>\n\n\t<div class=\"donate-img-box\">\n\t\t<img id=\"donate-qr-wechat\" class=\"noLazyLoad donate-img\" src=\"<%- url_for( donate.wechat ) %>\"  alt=\"No Donate Image!\">\t\n\t\t<img id=\"donate-qr-alipay\" class=\"noLazyLoad donate-img\" src=\"<%- url_for( donate.alipay ) %>\"  alt=\"No Donate Image!\">\t\n\t</div>\n\n\t<span class=\"donate-word\"><%- donate.word %></span>\n\n\t<div class=\"donate-list\">\n\t\t<span class=\"iconfont icon-donate-wechat\"></span>\n\t\t<span class=\"iconfont icon-donate-alipay\"></span>\n\t</div>\n\n</div>\n"
  },
  {
    "path": "layout/_partial/_post/footer.ejs",
    "content": "<div class=\"bottom\">\n  <div class=\"other\">\n    <div class=\"meta\">\n      <% if( page.categories && page.categories.length > 0 ) {%>\n      <i class=\"iconfont icon-category\"></i>\n      <%-  list_categories( page.categories ,{\n            show_count:false,\n            style:'none',\n            separator:\" \"    \n          }) %>\n\n      <% }%>\n\n      <% if( page.tags &&  page.tags.length > 0 ) {%>\n      <i class=\"iconfont icon-tag\"></i>\n      <%- list_tags( page.tags ,{\n            show_count:false,\n            style:'none',\n            separator:\" \"      \n            }) %>\n      <% }%>\n    </div>\n\n    <div class=\"operate\">\n      <% if(theme.mob_share){%>\n      <span class=\"text\">Share</span>\n      <%- partial('_partial/_post/mob_share') %>\n      <% } %>\n    </div>\n  </div>\n\n\n  <% if (page.prev || page.next){ %>\n  <nav class=\"nav\">\n    <div class=\"link\">\n      <% if (page.next){ %>\n      <a href=\"<%- url_for(page.next.path) %>\" class=\"link-wrap\">\n        <strong class=\"caption\"><%= __('Post.Prev') %></strong>\n        <% var title = truncate(page.next.title, {length:60}) %>\n        <span class=\"title\">\n          <%= title ||  __('Untitled') %>\n        </span>\n      </a>\n      <% } %>\n    </div>\n    <div class=\"link\">\n      <% if (page.prev){ %>\n      <a href=\"<%- url_for(post.prev.path) %>\" class=\"link-wrap\">\n        <strong class=\"caption\"><%= __('Post.Next') %></strong>\n        <% var title = truncate(page.prev.title , {length:60}) %>\n        <span class=\"title\">\n          <%= title ||  __('Untitled') %>\n        </span>\n      </a>\n      <% } %>\n    </div>\n  </nav>\n  <% } %>\n</div>"
  },
  {
    "path": "layout/_partial/_post/gallery.ejs",
    "content": "\n<% if (post.photos && post.photos.length){ %>\n\t\n\t<div class=\"gallery\">\n\t\t<% for( i in post.photos){%>\n\t\t\t<div class=\"image\" \t\n\t\t\tstyle=\"background-image: url(<%- url_for(post.photos[i])%>);\"></div>\n\t\t<%}%>  \n\t</div>\n<%}%>"
  },
  {
    "path": "layout/_partial/_post/header.ejs",
    "content": "<%# 文章页面头部 %>\n<div class=\"header\">\n\t\t<p class=\"title\">\t\n\t\t\t<%= page.title|| __('Untitled') %>\n\t\t</p>\n\t\t<div class=\"info\">\t\n\t\t\t<time>\n\t\t\t\t<%= date(page.date,  \"MMM DD, YYYY\") %>\n\t\t\t</time>\n\n\t\t\t<%  var length = raw_length(post.content) %>\n\t\t\t<% if ( length > 0 ){%>\n\t\t\t\t<i class=\"iconfont icon-words\"></i>\n\t\t\t\t<span class=\"words\"><%= length %>\n\t\t\t\t</span>\n\t\t\t<% }%>\n\t\t</div>\n</div>"
  },
  {
    "path": "layout/_partial/_post/mathjax.ejs",
    "content": "<%# mathjax %>\n<% if(theme.mathjax.enable || post.mathjax ){%>\n    <script type=\"text/x-mathjax-config\">\n        var post = document.getElementsByClassName(\"post\")[0];  \n        MathJax.Hub.Config({\n            showProcessingMessages: false,\n            messageStyle: \"none\",    \n            tex2jax: {\n                inlineMath:  [ [\"$\", \"$\"] , [\"\\\\(\",\"\\\\)\"]],\n                displayMath: [ [\"$$\",\"$$\"] , [\"\\\\[\",\"\\\\]\"]],\n                skipTags: ['script', 'noscript', 'style', 'textarea', 'pre','code','a'],\n            },\n            \"HTML-CSS\": {            \n                showMathMenu: false\n            }\n        });\n        MathJax.Hub.Queue([\"Typeset\",MathJax.Hub,post]);\n    </script>\n    <style>.MathJax{outline:0;}</style>\n\n    <script type=\"text/javascript\" src=\"//cdn.bootcss.com/mathjax/2.7.2/latest.js?config=TeX-AMS-MML_HTMLorMML\"></script>\n<%}%>"
  },
  {
    "path": "layout/_partial/_post/mob_share.ejs",
    "content": "<ul class=\"share\">\n\t<% for ( i in theme.share_item){ %>   \t\t\t             \n        <li class=\"iconfont \n\t\ticon-share-<%-theme.share_item[i]%> \n\t\t-mob-share-<%-theme.share_item[i]%> \n\t\titem\"\n\t\t></li>\t\t\n   \t<% } %>   \n</ul>\t\n\n<script id=\"-mob-share\" \nsrc=\"https://f1.webshare.mob.com/code/mob-share.js?appkey=21d601593a1de\"></script>"
  },
  {
    "path": "layout/_partial/_post/toc.ejs",
    "content": "<% if(theme.toc && !page.hide_toc ){  %>\n<div class=\"toc\">\n\t<p class=\"toc-title\">\n\t\t<%= __('Contents')%>\n\t</p>\n\t<div class=\"toc-list\">\n\t\t<%- toc(page.content,{class:'toc-inner' , list_number:false}) %>\n\t</div>\n</div>\n<% } %>"
  },
  {
    "path": "layout/_partial/after-footer.ejs",
    "content": "<% if (theme.baidu_analytics){ %>\n\n\n<script>\nvar _hmt = _hmt || [];\n(function() {\n  var hm = document.createElement(\"script\");\n  hm.src = \"https://hm.baidu.com/hm.js?<%- theme.baidu_analytics %>\"; \n  var s = document.getElementsByTagName(\"script\")[0]; \n  s.parentNode.insertBefore(hm, s);\n})();\n</script>\n\n<%}%>\n\n\n<% if (theme.google_analytics){ %>\n\n<script>\n(function(i,s,o,g,r,a,m){\n\ti['GoogleAnalyticsObject']=r;\n\ti[r]=i[r]||function(){\n(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\nm=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n})(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\nga('create', '<%= theme.google_analytics %>', 'auto');\nga('send', 'pageview');\n\n</script>\n<% } %>\n"
  },
  {
    "path": "layout/_partial/article.ejs",
    "content": "<%# post%>\n\n<article class=\"article\">\t\t\n\t   \n\t<div class=\"article-header\">\n\t    \n\t\t<a  class=\"title\" href=\"<%- url_for(post.path) %>\"><%= post.title || __('Untitled') %></a>  \n\t       \n\t\t <%\tvar date_format = config.date_format %>\n\n\t\t<div class='meta'>\n\t\t\t<time><%= date(post.date,  \"MMM DD, YYYY\") %></time>\t\t\t\n\t\t</div>\n\t</div>\n\n\n\t<% if (post.banner){ %>\n\t\t<div class=\"thumb\">\n\t\t\t<div class=\"banner\"  data-origin=\"<%- url_for(post.banner) %>\"></div>\n\t\t</div>\n\t<% } %>\n\n    \n\t<div class=\"typo article-excerpt\">\t\n\t\t<% if (post.excerpt) { %>\n\t\t\t<%- post.excerpt %>\n\t\t<% } else { %> \n\t\t\t<%- post.content %>\n\t\t<%}%>  \t  \n\t</div>\n\n\n\n\t<div class=\"article-categories\">\n\t <% if( post.categories && post.categories.length) {%>\n      <i class=\"iconfont icon-category\" style=\"margin-right:4px\"></i>\n\t  \t<% post.categories.sort('date',-1).each(function (cate){%>            \n\t\t\t\t<a class=\"link\" href=\"<%- url_for(cate.path) %>\"><%- cate.name %></a>           \n\t\t<% })%>\n      <% }%>\n\t</div>\n\t\n\n\t<div class=\"article-tags\">\n\t\t<%if(post.tags && post.tags.length){%>\n\t\t\t<i class=\"iconfont icon-tags\" style=\"margin-right:4px\"></i>\n\t\t\t<% post.tags.sort('date',-1).each(function (tag){%>            \n\t\t\t\t<a class=\"link\" href=\"<%- url_for(tag.path) %>\"><%- tag.name %></a>           \n\t\t\t<% })%>\n\t\t<%}%>\n\t</div>\n\n\t<div class='article-bottom'>\n\t\t<a class=\"readmore\" href=\"<%- url_for(post.path) %>\"><%= __('ReadMore') %></a> \t\n\t</div>\t\n    \n</article>\n"
  },
  {
    "path": "layout/_partial/footer.ejs",
    "content": "<% var since = theme.footer.since %>\n<% var year = date(new Date(), 'YYYY') %>\n\n<footer class=\"footer\">\n\t<div class=\"inner\">\n\t\t<div class=\"copyright\">\n\t\t\t&copy;\n\t\t\t<% if (since < year){%>\n\t\t\t<%= since %> -\n\t\t\t<% }%>\n\t\t\t<%= year %>\n\t\t\t<%= theme.footer.author || theme.profile.author || config.author %>\n\n\t\t\t<br/>\n\t\t\tBy <a href=\"https://hexo.io\" target=\"_blank\">Hexo</a> Theme <a href=\"https://github.com/Lemonreds/hexo-theme-Nayo\" target=\"_blank\">Nayo</a>\n\t\t</div>\n\t</div>\n</footer>"
  },
  {
    "path": "layout/_partial/head.ejs",
    "content": "<head>\n  <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n  <meta name=\"viewport\"content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=yes\"/>\n  <%\n    var title = titlecase(page.title);\n\n    if (is_archive()){\n      title = __('Page.Archives');   \n    } else if (is_category()){\n      title = __('Page.Categories') + ': ' + page.category;\n    } else if (is_tag()){\n      title = __('Page.Tags') + ': ' + page.tag;\n  }\n  %>\n  \n  <title><% if (title){ %>  <%= title %> | <% } %>  <%= theme.title || config.title %> </title>\n\n \n  <% if (theme.favicon){ %>\n    <link rel=\"icon\" href=\"<%- url_for(  theme.favicon ) %>\">\n  <% } %>\n\n\n  <%- css('nayo.min') %> \n</head>"
  },
  {
    "path": "layout/_partial/header.ejs",
    "content": "<header class=\"header-wrapper\">\n\n  <nav class=\"inner\">\n    <div class=\"title\">\n      <a href=\"/\">\n        <img class=\"logo\" src=\"<%- url_for(theme.profile.logo) %>\" />\n      </a>\n    </div>\n\n    <ul class=\"menu\">\n      <% for (var i in theme.menu){ %>\n      <% if ( i  == 'search' ){%>\n      <li class=\"item\">\n        <a class=\"link\" id=\"menu-search\">\n          <i class=\"iconfont icon-<%-i %>\" />\n        </a>\n        </l>\n\n        <% } else {%>\n      <li class=\"item\">\n        <a class=\"link\" id=\"menu-<%-i%>\" href=\"<%- url_for(theme.menu[i]) %>\">\n          <i class=\"iconfont icon-<%-i %>\" />\n        </a>\n      </li>\n      <% } %>\n      <% } %>\n    </ul>\n  </nav>\n</header>\n\n<header class=\"mobile-header-wrapper\">\n  <i id=\"mobile-toggle\" class=\"iconfont icon-menu mobile-toggle\"></i>\n</header>"
  },
  {
    "path": "layout/_partial/item.ejs",
    "content": "<% if(post) {%>\t\n\n\t   <% var  date_format = config.date_format  %>\n\n\t   <article class=\"item slideDownMin\">   \t\n\n        <time class=\"time\"> <%= date(post.date, date_format || 'MMM Do, YYYY' ) %></time>    \n\n        <a class=\"title\" href=\"<%- url_for(post.path) %>\"><%= post.title || __('Untitled')%></a>\n\n      </article>\n\n<% } %>"
  },
  {
    "path": "layout/_partial/page-name.ejs",
    "content": "\n<div class=\"page-name\">\n    <i class=\"iconfont <%- icon %>\"></i>\n    <span class=\"name\"><%- name %></span>\n</div>\n"
  },
  {
    "path": "layout/_partial/paginator.ejs",
    "content": "\n<% if (page.total > 1){ %> \n   <nav class=\"paginator\">\n    <% if (page.prev) { %>\n        <a class=\"prev\" href=\"<%- url_for(page.prev_link) %>\"> \n            <i class=\"iconfont icon-left\"></i>\n            <%= __('Paginator.Prev') %>\n        </a>\n    <% } %>\n\n   <span class=\"page-number\"> Page <strong><%= page.current %></strong>, Posts <strong><%=__('Archive.count',site.posts.length)%></strong>. </span>\n\n    <% if (page.next) { %>\n        <a class=\"next\" href=\"<%- url_for(page.next_link) %>\"> \n            <%= __('Paginator.Next') %>\n            <i class=\"iconfont icon-right\"></i>\n        </a>\n    <% } %>\n  </nav> \n<% } %>"
  },
  {
    "path": "layout/_partial/search.ejs",
    "content": "<div class=\"none\" id=\"search\">\n    <div class=\"header\">\n        <input type=\"text\" \n        placeholder=\"<%= __('Search.input_words') %>\" \n        id=\"search-input\" \n        class=\"input\" />\n        \n        <i id=\"search-cancel\" class=\"iconfont icon-cancel\"></i>\n    </div>\n\n    <div id=\"search-result\" class=\"result\"></div>\n</div>"
  },
  {
    "path": "layout/_partial/slide-menu.ejs",
    "content": " <div class=\"mobile-menu\">      \n\n      <% if ( theme.favicon){ %>\n      <img class=\"mobile-menu-icon\" src= \"<%- url_for(  theme.favicon ) %>\" >  \n      <% } %>\n\n      <% for (var i in theme.menu){ %>   \n            <% if ( i  == 'search' ){%>              \n\n            <a class=\"mobile-menu-link mobile-menu-search\" href=\"#\"><%=__('Menu.search')%> </a>                 \n            <% } else {%>\n\n            <a class=\"mobile-menu-link\" href=\"<%- url_for(theme.menu[i]) %>\"><%= __('Menu.'+i) %>\n            </a>\n            <% } %>\n      <% } %>   \n      \n</div>\n"
  },
  {
    "path": "layout/about.ejs",
    "content": "<section class=\"fadeIn slideDownMin\">\n\n\t<% var name =  __('Page.About') %>\n  \t<%- partial('_partial/page-name',{icon:'icon-page-about',name: name }) %>\n\n\n\t<div class=\"typo\">\n\t\t<%- page.content %>\n\t</div>\n\n</section>"
  },
  {
    "path": "layout/archive.ejs",
    "content": "<section class=\"slideDownMin\">\n\n  <% var name =  __('Page.Archives') %>\n  <%- partial('_partial/page-name',{icon:'icon-page-archive',name: name }) %>\n\n\n  <% var  date_format = config.date_format  %>\n  <% var last %>\n\n  <div class=\"archive\">\n    <ul class=\"archive-post\">\n      <% page.posts.each(function (post) { %>\n\n      <% var year = post.date.year() %>\n\n      <%if(last != year ){%>\n\n      <%# var posts = postsCount(site.posts , year) %>\n      <li class=\"archive-year\">\n        <span class=\"year\">\n          <span><%= year %></span>\n        </span>\n      </li>\n      <% last = year %>\n      <% }%>\n      <li class=\"archive-item\">\n        <time class=\"time\"> <%= date(post.date,  \"MMM Do\") %> </time>\n        <span class=\"title\"> <a href=\"<%- url_for(post.path) %>\"><%= post.title || __('Untitled')%></a></span>\n      </li>\n\n      <% }) %>\n    </ul>\n  </div>\n\n</section>\n\n<%- partial('_partial/paginator') %>"
  },
  {
    "path": "layout/category.ejs",
    "content": "<section>\n\n\n  <% var name =  __('Page.Categories') %>\n\n  <% if( is_category()){ %>\n\n      <%- partial('_partial/page-name',{icon:'icon-category',name: page.category }) %>\n\n  \t   <div class=\"items\">\n          <% page.posts.each(function (post) { %>     \n\n            <%- partial('_partial/item',{post: post}) %>       \n\n          <% })%>\n      </div>\t\n  <%}%>\t    \n</section>"
  },
  {
    "path": "layout/index.ejs",
    "content": "<%# profile %>\n\n\n<div class=\"index slideDownMin\">\n\t<% var profile = theme.profile %>\n\n\t<div class=\"profile\">\n\n\t\t<img class=\"avatar\" src=\"<%- url_for(profile.avatar) %>\">\n\n\t\t<p class=\"author\"><%= profile.author || config.author %></p>\n\n\t\t<div class=\"social\">\n\t\t\t<% var index = 0 %>\n\t\t\t<% for ( i in theme.social) { %>\n\t\t\t<a target=\"_blank\" class=\"links\" href=\"<%- (theme.social[i]) %>\">\n\t\t\t\t<i class=\"iconfont icon-<%= i %>\" />\n\t\t\t</a>\n\t\t\t<% ++index %>\n\t\t\t<% } %>\n\t\t</div>\n\t</div>\n\n\n\t<%# article %>\n\n\t<% page.posts.sort('date', -1).each(function (post) { %>\n\t<% if (post.raw.length > 0 ) {%>\n\t<%- partial('_partial/article',{post:post}) %>\n\t<% }%>\n\t<% }) %>\n\n\t<%# paginator %>\n\t<%- partial('_partial/paginator') %>\n\t<%- partial('_partial/_post/mathjax',{}) %> \n</div>"
  },
  {
    "path": "layout/layout.ejs",
    "content": "<!DOCTYPE html>\n<html>\n  <%- partial('_partial/head') %>  \n  <body>   \n    \n      <%- partial('_partial/header', null, {cache: !config.relative_link}) %>   \n\n      <div class=\"container\">       \n          \n          <% if (is_post() || is_home()) { %>\n            <div class=\"container-inner\">  \n          <% } else{ %>\n            <div class=\"container-inner slideDownMin\">\n          <% }%>\n\n          <%-body%>\n          </div> \n      </div>            \n    \n        <i id=\"toTop\" class=\"iconfont icon-backtotop\"></i>\n\n  \n    <%- partial('_partial/search') %>\n    <%- partial('_partial/slide-menu') %>        \n    <%- partial('_partial/after-footer') %>     \n    <%- partial('_partial/footer') %>   \n\n    <%- js('nayo.bundle')%>           \n  </body>        \n</html>"
  },
  {
    "path": "layout/post.ejs",
    "content": "<article class=\"post slideDownMin\">\n  \n\t<%- partial('_partial/_post/header',{post: page}) %> \n\t<%- partial('_partial/_post/mathjax',{post: page}) %> \n\n\t  <div class=\"typo post-content \">\n\n\t\t<% if (page.banner){ %>\n\t\t\t\n\t\t\t\t<div class=\"banner\" \n\t\t\t\tsrc=\"<%- url_for(page.banner) %>\" \n\t\t\t\tstyle=\"background-image:url(<%- url_for(page.banner) %>)\"> </div>\t\n\n\t\t<% } else if (page.photos && page.photos.length){ %> \t\n\t\t\t\t<%- partial('_partial/_post/gallery',{post:page}) %>\t\t\t\n\t\t<%}%>\n\n\t\t\t<% if (page.excerpt && page.hide_excerpt ){ %>\n\t\t\t\t\t<%- page.more %>  \t\t\t\t\t\n\t\t\t<%} else{%>\n\t\t\t\t\t<%- page.content %>  \t\n\t\t\t<%}%>\t\t\n\t  </div>     \n\t  \n\n\t<%- partial('_partial/_post/footer',{post: page}) %> \n\t<%- partial('_partial/_post/comment') %>\t\n</article>\n<%- partial('_partial/_post/toc',{post:page}) %>"
  },
  {
    "path": "layout/tag.ejs",
    "content": "<section>\n\n  <% var name =  __('Page.Tags') %>\n  \n\n  <% if( is_tag()){ %>\n\n  \n        <%- partial('_partial/page-name',{icon:'icon-page-tags',name: page.tag }) %>\n\n        <div class=\"items\">\n            <% page.posts.each(function (post) { %>     \n\n                <%- partial('_partial/item',{post: post}) %>       \n\n            <% })%>\n        </div>\n\n\n    <%} else {%>    \n\n        <%- partial('_partial/page-name',{icon:'icon-page-tags',name: name }) %>\n\n        <ul class=\"tag\">\n        <% site.tags.sort('date',-1).each( function (tag){%>\n            <li class=\"tag-item\">\n                <a class=\"tag-wrap slideDownMin\" href=\"<%- url_for(tag.path) %>\">    \n                    <span class=\"iconfont icon-tag-inner\"></span>           \n                    <span class=\"tag-name\"> <%- tag.name %> </span>\n                    <span class=\"tag-count\"><%- tag.length %></span>  \n                </a>\n            </li>\n        <% })%>\n\n        </ul>\n\n    <%}%>\n</section>"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"hexo-theme-nayo\",\n  \"version\": \"0.4.0\",\n  \"description\": \"a concise theme for hexo.\",\n  \"scripts\": {\n    \"build\": \"webpack --config webpack.config.js --mode production\",\n    \"dev\": \"webpack --config webpack.config.js --watch --progress\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/Lemonreds/hexo-theme-nayo.git\"\n  },\n  \"author\": \"lemonreds\",\n  \"license\": \"MIT\",\n  \"homepage\": \"https://github.com/Lemonreds/hexo-theme-nayo#readme\",\n  \"devDependencies\": {\n    \"autoprefixer\": \"^9.5.0\",\n    \"babel-core\": \"^6.26.3\",\n    \"babel-loader\": \"^7.1.2\",\n    \"babel-plugin-transform-runtime\": \"^6.23.0\",\n    \"babel-preset-env\": \"^1.7.0\",\n    \"clean-webpack-plugin\": \"^2.0.1\",\n    \"css-loader\": \"^2.1.1\",\n    \"extract-text-webpack-plugin\": \"^4.0.0-beta.0\",\n    \"file-loader\": \"^3.0.1\",\n    \"node-sass\": \"^4.11.0\",\n    \"optimize-css-assets-webpack-plugin\": \"^5.0.1\",\n    \"postcss-loader\": \"^3.0.0\",\n    \"sass-loader\": \"^7.1.0\",\n    \"style-loader\": \"^0.23.1\",\n    \"url-loader\": \"^1.1.2\",\n    \"webpack\": \"^4.29.6\",\n    \"webpack-cli\": \"^3.3.0\"\n  }\n}\n"
  },
  {
    "path": "scripts/raw_length.js",
    "content": "\n/**\n * \n * POST LENGTH\n * \n */\n\nhexo.extend.helper.register('raw_length', function (string) {\n    \n    if( Object.prototype.toString.call(string) ==='[object String]'){\n        return string.replace(/<\\/?[^>]*>/g, \"\").replace(/ /g, '').length\n    }else{\n        return 0\n    }\n\n})"
  },
  {
    "path": "scripts/render_img.js",
    "content": "let cheerio = require('cheerio'),\n    loadedImage = 4,\n    placeHolder = '/images/placeholder.png';\n\n\n/**\n * \n * \n * LAZYLOAD\n * \n */\nfunction renderImg(source) {\n\n    let $ = cheerio.load(source, {\n            decodeEntities: false\n        }),\n        gallery = $('.gallery,.banner'),\n        img = $('img');\n\n\n    gallery.each((idx, element) => {\n\n        let origin = $(element).attr('data-origin')\n\n        if (origin && origin !== placeHolder) {\n\n            $(element).attr({\n                'data-src': origin\n            });\n            $(element).css('background-image', `url(\"${placeHolder}\")`)\n            $(element).addClass('lazyload')\n        }\n    });\n\n    img.each((idx, element) => {\n\n        if (idx > loadedImage) {\n            let src = $(element).attr('src')\n\n            if (src && src !== placeHolder) {\n                $(element).attr({\n                    'data-src': src,\n                    'src': placeHolder\n                });\n            }\n            $(element).addClass('lazyload')\n        }\n\n    });\n\n    return $.html()\n}\n\nhexo.extend.filter.register('after_render:html', renderImg)"
  },
  {
    "path": "source/nayo.bundle.js",
    "content": "!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=38)}([function(t,e,n){var r=n(27)(\"wks\"),o=n(28),i=n(2).Symbol,u=\"function\"==typeof i;(t.exports=function(t){return r[t]||(r[t]=u&&i[t]||(u?i:o)(\"Symbol.\"+t))}).store=r},function(t,e){var n=t.exports={version:\"2.5.7\"};\"number\"==typeof __e&&(__e=n)},function(t,e){var n=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},function(t,e,n){\"use strict\";var r=i(n(60)),o=i(n(4));function i(t){return t&&t.__esModule?t:{default:t}}var u={query:function(t){if(!o.default.isStr(t))return(0,r.default)(null);var e=document.querySelectorAll(t);return 1===e.length?e[0]:e},addLoadEvent:function(t){var e=window.onload;\"function\"!=typeof window.onload?window.onload=t:window.onload=function(){e(),t()}},moveSmooth:function(t){var e=0;o.default.isNode(t)&&(e=t.offsetTop),window.scrollTo({top:e,behavior:\"smooth\"})}};t.exports=u},function(t,e,n){\"use strict\";t.exports={isMobile:function(){for(var t=navigator.userAgent,e=[\"Android\",\"iPhone\",\"SymbianOS\",\"Windows Phone\",\"iPad\",\"iPod\"],n=0;n<e.length;n++){var r=e[n];if(t.indexOf(r)>0)return!0}return!1},isFunc:function(t){return\"function\"==typeof t},isStr:function(t){return\"string\"==typeof t},isNode:function(t){return t.nodeType===Node.ELEMENT_NODE},isArray:function(t){return Array.isArray(t)},filterHTML:function(t){return t=(t=(t=t.replace(/<\\/?[^>]*>/g,\"\")).replace(/[|]*\\n/,\"\")).replace(/&npsp;/gi,\"\")}}},function(t,e){t.exports={}},function(t,e,n){var r=n(7),o=n(15);t.exports=n(9)?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(8),o=n(46),i=n(47),u=Object.defineProperty;e.f=n(9)?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return u(t,e,n)}catch(t){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(14);t.exports=function(t){if(!r(t))throw TypeError(t+\" is not an object!\");return t}},function(t,e,n){t.exports=!n(23)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},function(t,e,n){var r=n(2),o=n(1),i=n(22),u=n(6),a=n(11),s=function(t,e,n){var c,f,l,d=t&s.F,p=t&s.G,v=t&s.S,h=t&s.P,y=t&s.B,m=t&s.W,g=p?o:o[e]||(o[e]={}),b=g.prototype,x=p?r:v?r[e]:(r[e]||{}).prototype;for(c in p&&(n=e),n)(f=!d&&x&&void 0!==x[c])&&a(g,c)||(l=f?x[c]:n[c],g[c]=p&&\"function\"!=typeof x[c]?n[c]:y&&f?i(l,r):m&&x[c]==l?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(l):h&&\"function\"==typeof l?i(Function.call,l):l,h&&((g.virtual||(g.virtual={}))[c]=l,t&s.R&&b&&!b[c]&&u(b,c,l)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var r=n(44),o=n(13);t.exports=function(t){return r(o(t))}},function(t,e){t.exports=function(t){if(null==t)throw TypeError(\"Can't call method on  \"+t);return t}},function(t,e){t.exports=function(t){return\"object\"==typeof t?null!==t:\"function\"==typeof t}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e,n){var r=n(27)(\"keys\"),o=n(28);t.exports=function(t){return r[t]||(r[t]=o(t))}},function(t,e,n){t.exports={default:n(39),__esModule:!0}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e,n){\"use strict\";var r=n(21),o=n(10),i=n(48),u=n(6),a=n(5),s=n(49),c=n(30),f=n(56),l=n(0)(\"iterator\"),d=!([].keys&&\"next\"in[].keys()),p=function(){return this};t.exports=function(t,e,n,v,h,y,m){s(n,e,v);var g,b,x,w=function(t){if(!d&&t in S)return S[t];switch(t){case\"keys\":case\"values\":return function(){return new n(this,t)}}return function(){return new n(this,t)}},_=e+\" Iterator\",C=\"values\"==h,L=!1,S=t.prototype,M=S[l]||S[\"@@iterator\"]||h&&S[h],O=M||w(h),E=h?C?w(\"entries\"):O:void 0,T=\"Array\"==e&&S.entries||M;if(T&&(x=f(T.call(new t)))!==Object.prototype&&x.next&&(c(x,_,!0),r||\"function\"==typeof x[l]||u(x,l,p)),C&&M&&\"values\"!==M.name&&(L=!0,O=function(){return M.call(this)}),r&&!m||!d&&!L&&S[l]||u(S,l,O),a[e]=O,a[_]=p,h)if(g={values:C?O:w(\"values\"),keys:y?O:w(\"keys\"),entries:E},m)for(b in g)b in S||i(S,b,g[b]);else o(o.P+o.F*(d||L),e,g);return g}},function(t,e){t.exports=!0},function(t,e,n){var r=n(45);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var r=n(14),o=n(2).document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},function(t,e,n){var r=n(8),o=n(50),i=n(29),u=n(17)(\"IE_PROTO\"),a=function(){},s=function(){var t,e=n(24)(\"iframe\"),r=i.length;for(e.style.display=\"none\",n(55).appendChild(e),e.src=\"javascript:\",(t=e.contentWindow.document).open(),t.write(\"<script>document.F=Object<\\/script>\"),t.close(),s=t.F;r--;)delete s.prototype[i[r]];return s()};t.exports=Object.create||function(t,e){var n;return null!==t?(a.prototype=r(t),n=new a,a.prototype=null,n[u]=t):n=s(),void 0===e?n:o(n,e)}},function(t,e,n){var r=n(16),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},function(t,e,n){var r=n(1),o=n(2),i=o[\"__core-js_shared__\"]||(o[\"__core-js_shared__\"]={});(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})(\"versions\",[]).push({version:r.version,mode:n(21)?\"pure\":\"global\",copyright:\"© 2018 Denis Pushkarev (zloirock.ru)\"})},function(t,e){var n=0,r=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++n+r).toString(36))}},function(t,e){t.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},function(t,e,n){var r=n(7).f,o=n(11),i=n(0)(\"toStringTag\");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},function(t,e,n){var r=n(13);t.exports=function(t){return Object(r(t))}},function(t,e,n){\"use strict\";var r=n(57)(!0);n(20)(String,\"String\",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){var r=n(59),o=n(0)(\"iterator\"),i=n(5);t.exports=n(1).getIteratorMethod=function(t){if(null!=t)return t[o]||t[\"@@iterator\"]||i[r(t)]}},function(t,e,n){\"use strict\";e.__esModule=!0,e.default=function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}},function(t,e,n){\"use strict\";e.__esModule=!0;var r,o=n(64),i=(r=o)&&r.__esModule?r:{default:r};e.default=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),(0,i.default)(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}()},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=u(n(34)),o=u(n(35)),i=u(n(4));function u(t){return t&&t.__esModule?t:{default:t}}var a=function(){function t(){(0,r.default)(this,t),this.listener=[],this.time=null,this._init()}return(0,o.default)(t,[{key:\"_init\",value:function(){var t=this;window.addEventListener(\"scroll\",function(e){t.time&&clearTimeout(t.time),t.time=setTimeout(t._dispatch,0,t.listener,e)})}},{key:\"_dispatch\",value:function(t,e){t.forEach(function(t){return t(e)})}},{key:\"addEvent\",value:function(t){if(!i.default.isFunc(t))throw new Error(\"params error.\");this.listener.push(t)}}]),t}();e.default=new a},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default=function(){var t=document.createElement(\"div\");t.className=\"mask none\",document.body.appendChild(t);var e=[];return t.addEventListener(\"click\",function(){e.forEach(function(t){t&&t()})}),{show:function(){return t.addClass(\"block\").removeClass(\"none\"),this},hide:function(){return t.addClass(\"none\").removeClass(\"block\"),this},addHideEvent:function(t){return e.push(t)-1},clear:function(){e=[]}}}()},function(t,e,n){\"use strict\";var r=l(n(18)),o=n(3),i=l(n(63)),u=l(n(67)),a=l(n(68)),s=l(n(69)),c=l(n(70)),f=l(n(71));function l(t){return t&&t.__esModule?t:{default:t}}n(72),n(81),(0,o.addLoadEvent)(function(){var t=[a.default,s.default,i.default,u.default,c.default,f.default],e=!0,n=!1,o=void 0;try{for(var l,d=(0,r.default)(t);!(e=(l=d.next()).done);e=!0){l.value.init()}}catch(t){n=!0,o=t}finally{try{!e&&d.return&&d.return()}finally{if(n)throw o}}}),console.log(\"Hexo Theme Nayo, By Lemonreds.\"),console.log(\"@see [https://github.com/Lemonreds/hexo-theme-nayo]\")},function(t,e,n){n(40),n(32),t.exports=n(58)},function(t,e,n){n(41);for(var r=n(2),o=n(6),i=n(5),u=n(0)(\"toStringTag\"),a=\"CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList\".split(\",\"),s=0;s<a.length;s++){var c=a[s],f=r[c],l=f&&f.prototype;l&&!l[u]&&o(l,u,c),i[c]=i.Array}},function(t,e,n){\"use strict\";var r=n(42),o=n(43),i=n(5),u=n(12);t.exports=n(20)(Array,\"Array\",function(t,e){this._t=u(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,\"keys\"==e?n:\"values\"==e?t[n]:[n,t[n]])},\"values\"),i.Arguments=i.Array,r(\"keys\"),r(\"values\"),r(\"entries\")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){var r=n(19);t.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==r(t)?t.split(\"\"):Object(t)}},function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},function(t,e,n){t.exports=!n(9)&&!n(23)(function(){return 7!=Object.defineProperty(n(24)(\"div\"),\"a\",{get:function(){return 7}}).a})},function(t,e,n){var r=n(14);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&\"function\"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if(\"function\"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&\"function\"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError(\"Can't convert object to primitive value\")}},function(t,e,n){t.exports=n(6)},function(t,e,n){\"use strict\";var r=n(25),o=n(15),i=n(30),u={};n(6)(u,n(0)(\"iterator\"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(u,{next:o(1,n)}),i(t,e+\" Iterator\")}},function(t,e,n){var r=n(7),o=n(8),i=n(51);t.exports=n(9)?Object.defineProperties:function(t,e){o(t);for(var n,u=i(e),a=u.length,s=0;a>s;)r.f(t,n=u[s++],e[n]);return t}},function(t,e,n){var r=n(52),o=n(29);t.exports=Object.keys||function(t){return r(t,o)}},function(t,e,n){var r=n(11),o=n(12),i=n(53)(!1),u=n(17)(\"IE_PROTO\");t.exports=function(t,e){var n,a=o(t),s=0,c=[];for(n in a)n!=u&&r(a,n)&&c.push(n);for(;e.length>s;)r(a,n=e[s++])&&(~i(c,n)||c.push(n));return c}},function(t,e,n){var r=n(12),o=n(26),i=n(54);t.exports=function(t){return function(e,n,u){var a,s=r(e),c=o(s.length),f=i(u,c);if(t&&n!=n){for(;c>f;)if((a=s[f++])!=a)return!0}else for(;c>f;f++)if((t||f in s)&&s[f]===n)return t||f||0;return!t&&-1}}},function(t,e,n){var r=n(16),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=r(t))<0?o(t+e,0):i(t,e)}},function(t,e,n){var r=n(2).document;t.exports=r&&r.documentElement},function(t,e,n){var r=n(11),o=n(31),i=n(17)(\"IE_PROTO\"),u=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},function(t,e,n){var r=n(16),o=n(13);t.exports=function(t){return function(e,n){var i,u,a=String(o(e)),s=r(n),c=a.length;return s<0||s>=c?t?\"\":void 0:(i=a.charCodeAt(s))<55296||i>56319||s+1===c||(u=a.charCodeAt(s+1))<56320||u>57343?t?a.charAt(s):i:t?a.slice(s,s+2):u-56320+(i-55296<<10)+65536}}},function(t,e,n){var r=n(8),o=n(33);t.exports=n(1).getIterator=function(t){var e=o(t);if(\"function\"!=typeof e)throw TypeError(t+\" is not iterable!\");return r(e.call(t))}},function(t,e,n){var r=n(19),o=n(0)(\"toStringTag\"),i=\"Arguments\"==r(function(){return arguments}());t.exports=function(t){var e,n,u;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),o))?n:i?r(e):\"Object\"==(u=r(e))&&\"function\"==typeof e.callee?\"Arguments\":u}},function(t,e,n){t.exports={default:n(61),__esModule:!0}},function(t,e,n){n(62);var r=n(1).Object;t.exports=function(t,e){return r.create(t,e)}},function(t,e,n){var r=n(10);r(r.S,\"Object\",{create:n(25)})},function(t,e,n){\"use strict\";var r=i(n(34)),o=i(n(35));function i(t){return t&&t.__esModule?t:{default:t}}var u=function(){function t(e){(0,r.default)(this,t),this.settings={src:\"data-src\",nolazy:\"noLazyLoad\"},this.root=window,this.images=e,this.observer=null,this.init()}return(0,o.default)(t,[{key:\"init\",value:function(){var t=this;if(this.root.IntersectionObserver){var e=this;this.observer=new IntersectionObserver(function(t){t.forEach(function(t){if(t.intersectionRatio>0){e.observer.unobserve(t.target);var n=t.target.getAttribute(e.settings.src);n&&(\"img\"===t.target.tagName.toLowerCase()?(t.target.src=n,t.target.removeAttribute(e.settings.src)):(t.target.style.backgroundImage=\"url(\"+n+\")\",t.target.removeAttribute(e.settings.src)))}})},{root:null,rootMargin:\"0px\",threshold:[0]}),this.images.forEach(function(n){if(t.isNolazy(n)){var r=n.getAttribute(e.settings.src);r&&(\"img\"===n.tagName.toLowerCase()?(n.src=r,n.removeAttribute(e.settings.src)):(n.style.backgroundImage=\"url(\"+r+\")\",n.removeAttribute(e.settings.src)))}else e.observer.observe(n)})}else this.loadImages()}},{key:\"loadImages\",value:function(){if(this.settings){var t=this;this.images.forEach(function(e){var n=e.getAttribute(t.settings.src);n&&(\"img\"===e.tagName.toLowerCase()?(e.src=n,e.removeAttribute(t.settings.src)):(e.style.backgroundImage=\"url(\"+n+\")\",e.removeAttribute(t.settings.src)))})}}},{key:\"isNolazy\",value:function(t){return-1!==t.className.split(\" \").indexOf(this.settings.nolazy)}}]),t}();e.init=function(){var t=document.getElementsByClassName(\"lazyload\");HTMLCollection.prototype.forEach||(HTMLCollection.prototype.forEach=function(t){Array.prototype.slice.call(this).forEach(t)}),new u(t)}},function(t,e,n){t.exports={default:n(65),__esModule:!0}},function(t,e,n){n(66);var r=n(1).Object;t.exports=function(t,e,n){return r.defineProperty(t,e,n)}},function(t,e,n){var r=n(10);r(r.S+r.F*!n(9),\"Object\",{defineProperty:n(7).f})},function(t,e,n){\"use strict\";var r=i(n(3)),o=i(n(36));function i(t){return t&&t.__esModule?t:{default:t}}e.init=function(){var t=\"#toTop\",e=\"leftIn\",n=\"rightOut\",i=r.default.query(t);i.addEventListener(\"click\",r.default.moveSmooth),o.default.addEvent(function(){document.documentElement.scrollTop>800?i.addClass(e).removeClass(n):i.addClass(n).removeClass(e)})}},function(t,e,n){\"use strict\";var r=u(n(18)),o=u(n(3)),i=u(n(4));function u(t){return t&&t.__esModule?t:{default:t}}e.init=function(){if(!i.default.isMobile()){var t={pages:[\"home\",\"archives\",\"categories\",\"tags\",\"about\"],acitveClass:\"menu-active\",activeCurrent:\"home\",prefixer:\"#menu-\"},e=window.location.href,n=!0,u=!1,a=void 0;try{for(var s,c=(0,r.default)(t.pages);!(n=(s=c.next()).done);n=!0){var f=s.value;if(-1!==e.indexOf(f)){t.activeCurrent=f;break}}}catch(t){u=!0,a=t}finally{try{!n&&c.return&&c.return()}finally{if(u)throw a}}var l=o.default.query(t.prefixer.concat(t.activeCurrent));try{l.addClass(t.acitveClass)}catch(e){o.default.query(t.prefixer.concat(\"home\")).addClass(t.acitveClass)}}}},function(t,e,n){\"use strict\";var r=u(n(3)),o=u(n(36)),i=u(n(4));function u(t){return t&&t.__esModule?t:{default:t}}e.init=function(){if(!i.default.isMobile()){var t=r.default.query(\".header-wrapper\"),e=0,n=0;o.default.addEvent(function(r){0===(n=window.pageYOffset)?t.addClass(\"header-static\").removeClass([\"header-fixed\",\"slideUp\",\"slideDown\"]):n-e>0?t.addClass([\"header-fixed\",\"slideUp\"]).removeClass([\"header-static\",\"slideDown\"]):t.addClass([\"header-fixed\",\"slideDown\"]).removeClass([\"header-static\",\"slideUp\"]),e=n})}}},function(t,e,n){\"use strict\";var r=u(n(3)),o=u(n(4)),i=u(n(37));function u(t){return t&&t.__esModule?t:{default:t}}e.init=function(){var t,e,n,u,a=\"#search\",s=\"#menu-search\",c=\".mobile-menu-search\",f=\"#search-cancel\",l=\"#search-input\",d=\"#search-result\",p=[\"show\"],v=[\"none\"],h=r.default.query(a),y=r.default.query(f),m=function(){i.default.show(),h.addClass(p).removeClass(v)};r.default.query(s).addEventListener(\"click\",m),y.addEventListener(\"click\",function(){i.default.hide(),h.addClass(v).removeClass(p)}),o.default.isMobile()&&r.default.query(c).addEventListener(\"click\",m),t=l,e=d,n={url:\"/search.xml\",success:function(n){var i=n.querySelectorAll(\"entry\").map(function(t){var e=t.children[0].textContent,n=o.default.filterHTML(t.children[2].textContent),r=t.children[1].attributes[0].nodeValue;return{title:e,content:n,href:r}}),u=r.default.query(t),a=r.default.query(e);u.addEventListener(\"input\",function(){var t=\"\",e=this.value.trim().toLowerCase().split(/[\\s\\-]+/);if(a.innerHTML=\"\",!(e.length<=0)){var n=!0;i.forEach(function(r){r.title&&\"\"!==r.title.trim()||(r.title=\"Untitled\");var o=r.title.trim().toLowerCase(),i=r.content.trim().toLowerCase(),u=r.href,a=-1,s=-1,c=-1;if(\"\"!==i?e.forEach(function(t,e){a=o.indexOf(t),s=i.indexOf(t),a<0&&s<0?n=!1:(s<0&&(s=0),0==e&&(c=s))}):n=!1,n){t+=\"<div class='search-item'>\",t+=\"<a href='\"+u+\"' class='search-title'>\"+o+\"</a>\";var f=r.content;if(c>=0){var l=c-40,d=c+60;l<0&&(l=0),0==l&&(d=100),d>f.length&&(d=f.length);var p=f.substr(l,d);e.forEach(function(t){var e=new RegExp(t,\"gi\");p=p.replace(e,'<span class=\"search-keyword\">'+t+\"</span>\")}),t+='<p class=\"search-content\">'+p+\"</p>\"}t+=\"</div>\"}}),-1===t.indexOf(\"<div\")?a.innerHTML=\"<div class='iconfont icon-nofound search-empty'></div>\":a.innerHTML=t}})}},(u=new XMLHttpRequest).onreadystatechange=function(){4===u.readyState&&(200==u.status?n.success&&n.success(u.responseXML):n.fail&&n.fail(status))},u.open(\"GET\",n.url,!0),u.send(null)}},function(t,e,n){\"use strict\";var r=u(n(3)),o=u(n(4)),i=u(n(37));function u(t){return t&&t.__esModule?t:{default:t}}e.init=function(){if(o.default.isMobile()){var t={isShow:!1,toggle:\"#mobile-toggle\",mobileMenu:\".mobile-menu\",header:\".mobile-header-wrapper\",container:\".container\",footer:\".footer\",menuShowClass:\"menuIn\",menuHideClass:\"menuOut\",pageShowClass:\"slideIn\",pageHideClass:\"slideOut\",hideToggleClass:\"icon-no-menu\",showToggleClass:\"icon-menu\"},e=r.default.query(t.toggle),n=r.default.query(t.mobileMenu),u=[r.default.query(t.header),r.default.query(t.container),r.default.query(t.footer)];n.addEventListener(\"click\",a),e.addEventListener(\"click\",function(){t.isShow?a():(i.default.show(),e.addClass(t.hideToggleClass).removeClass(t.showToggleClass),u.forEach(function(e){e.addClass(t.pageHideClass).removeClass(t.pageShowClass)}),n.addClass(t.menuShowClass).removeClass(t.menuHideClass),t.isShow=!0)})}function a(){i.default.hide(),e.addClass(t.showToggleClass).removeClass(t.hideToggleClass),u.forEach(function(e){e.addClass(t.pageShowClass).removeClass(t.pageHideClass)}),n.addClass(t.menuHideClass).removeClass(t.menuShowClass),t.isShow=!1}}},function(t,e,n){\"use strict\";var r,o=n(73),i=(r=o)&&r.__esModule?r:{default:r};NodeList.prototype.forEach=function(t){Array.prototype.slice.call(this).forEach(t)},NodeList.prototype.map=function(t){return Array.prototype.slice.call(this).map(t)},NodeList.prototype.filter=function(t){return Array.prototype.slice.call(this).filter(t)},Node.prototype.addClass=function(t){var e;Array.isArray(t)?(e=this.classList).add.apply(e,(0,i.default)(t)):this.classList.add(t);return this},Node.prototype.removeClass=function(t){var e;Array.isArray(t)?(e=this.classList).remove.apply(e,(0,i.default)(t)):this.classList.remove(t);return this}},function(t,e,n){\"use strict\";e.__esModule=!0;var r,o=n(74),i=(r=o)&&r.__esModule?r:{default:r};e.default=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return(0,i.default)(t)}},function(t,e,n){t.exports={default:n(75),__esModule:!0}},function(t,e,n){n(32),n(76),t.exports=n(1).Array.from},function(t,e,n){\"use strict\";var r=n(22),o=n(10),i=n(31),u=n(77),a=n(78),s=n(26),c=n(79),f=n(33);o(o.S+o.F*!n(80)(function(t){Array.from(t)}),\"Array\",{from:function(t){var e,n,o,l,d=i(t),p=\"function\"==typeof this?this:Array,v=arguments.length,h=v>1?arguments[1]:void 0,y=void 0!==h,m=0,g=f(d);if(y&&(h=r(h,v>2?arguments[2]:void 0,2)),null==g||p==Array&&a(g))for(n=new p(e=s(d.length));e>m;m++)c(n,m,y?h(d[m],m):d[m]);else for(l=g.call(d),n=new p;!(o=l.next()).done;m++)c(n,m,y?u(l,h,[o.value,m],!0):o.value);return n.length=m,n}})},function(t,e,n){var r=n(8);t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(e){var i=t.return;throw void 0!==i&&r(i.call(t)),e}}},function(t,e,n){var r=n(5),o=n(0)(\"iterator\"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||i[o]===t)}},function(t,e,n){\"use strict\";var r=n(7),o=n(15);t.exports=function(t,e,n){e in t?r.f(t,e,o(0,n)):t[e]=n}},function(t,e,n){var r=n(0)(\"iterator\"),o=!1;try{var i=[7][r]();i.return=function(){o=!0},Array.from(i,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i=[7],u=i[r]();u.next=function(){return{done:n=!0}},i[r]=function(){return u},t(i)}catch(t){}return n}},function(t,e){}]);"
  },
  {
    "path": "src/scripts/activeNav.js",
    "content": "import dom from '@scripts/dom'\nimport Util from '@scripts/util'\n\nexports.init = () => {\n\n    if (Util.isMobile()) return;\n\n    const _ = {\n        pages: ['home', 'archives', 'categories', 'tags', 'about'],\n        acitveClass: 'menu-active',\n        activeCurrent: 'home',\n        prefixer: '#menu-'\n    }\n\n    let href = window.location.href\n\n    for (let type of _.pages) {\n        if (href.indexOf(type) !== -1) {\n            _.activeCurrent = type\n            break\n        }\n    }\n\n    let activeItem = dom.query(_.prefixer.concat(_.activeCurrent))\n\n    try {\n        activeItem.addClass(_.acitveClass)\n    } catch (err) {\n        dom.query(_.prefixer.concat('home')).addClass(_.acitveClass)\n    }\n}"
  },
  {
    "path": "src/scripts/dom.js",
    "content": "/**\n * \n * DOM helper\n * \n */\n\nimport Util from '@scripts/util'\n\nconst dom = {\n    query(selector) {\n        if (!Util.isStr(selector)) return Object.create(null)\n        const res = document.querySelectorAll(selector)\n\n        if (res.length === 1) return res[0]\n        return res\n    },\n    addLoadEvent(fun) {\n        var old = window.onload\n        if (typeof window.onload != \"function\") {\n            window.onload = fun\n        } else {\n            window.onload = function () {\n                old()\n                fun()\n            }\n        }\n    },\n    moveSmooth(node) {\n\n        let offsetTop = 0\n\n        if (Util.isNode(node)) {\n            offsetTop = node.offsetTop\n        }\n\n        window.scrollTo({\n            top: offsetTop,\n            behavior: \"smooth\"\n        })\n    }\n}\n\n\nmodule.exports = dom"
  },
  {
    "path": "src/scripts/extends.js",
    "content": "/**\n *  扩展了原生DOM集合方法\n *  使得其支持 forEach,map,filter\n */\n\nNodeList.prototype.forEach = function (cb) {\n    Array.prototype.slice.call(this).forEach(cb)\n}\n\nNodeList.prototype.map = function (cb) {\n    return Array.prototype.slice.call(this).map(cb)\n}\n\nNodeList.prototype.filter = function (cb) {\n    return Array.prototype.slice.call(this).filter(cb)\n}\n\n\n/**\n * \n *扩展了原生NODE方法\n * \n */\n\nNode.prototype.addClass = function (className) {\n    if (Array.isArray(className)) {\n        this.classList.add(...className)\n    } else {\n        this.classList.add(className)\n    }\n    return this\n}\n\nNode.prototype.removeClass = function (className) {\n    if (Array.isArray(className)) {\n        this.classList.remove(...className)\n    } else {\n        this.classList.remove(className)\n    }\n    return this\n}"
  },
  {
    "path": "src/scripts/header.js",
    "content": "import dom from '@scripts/dom'\nimport scroll from '@scripts/scroll'\nimport Util from '@scripts/util'\n\nexports.init = () => {\n\n    if (Util.isMobile()) return;\n\n    const _ = {\n        dom: '.header-wrapper'\n    }\n\n    let node = dom.query(_.dom)\n    let last = 0,\n        current = 0\n\n    scroll.addEvent(e => {\n\n        current = window.pageYOffset\n        if (current === 0) {\n            // 到达顶部\n            node.addClass('header-static')\n                .removeClass(['header-fixed', 'slideUp', 'slideDown'])\n        } else if (current - last > 0) {\n            // 下滑            \n            node.addClass(['header-fixed', 'slideUp'])\n                .removeClass(['header-static', 'slideDown'])\n        } else {\n            // 上滑           \n            node.addClass(['header-fixed', 'slideDown'])\n                .removeClass(['header-static', 'slideUp'])\n        }\n\n        last = current\n    })\n}"
  },
  {
    "path": "src/scripts/lazyload.js",
    "content": "/**\n * LazyLoad 图片懒加载\n */\n\nclass LazyLoad {\n\n    constructor(images) {\n        this.settings = {\n            src: 'data-src',\n            nolazy: 'noLazyLoad'\n        }\n        this.root = window\n        this.images = images\n        this.observer = null\n        this.init()\n    }\n\n    init() {\n        if (!this.root.IntersectionObserver) {\n            this.loadImages()\n            return\n        }\n\n        let self = this\n        let observerConfig = {\n            root: null,\n            rootMargin: \"0px\",\n            threshold: [0]\n        }\n\n        this.observer = new IntersectionObserver(function (entries) {\n            entries.forEach(function (entry) {\n                if (entry.intersectionRatio > 0) {\n                    self.observer.unobserve(entry.target)\n\n                    let src = entry.target.getAttribute(self.settings.src)\n\n                    if (src) {\n                        if (\"img\" === entry.target.tagName.toLowerCase()) {\n\n                            entry.target.src = src\n                            entry.target.removeAttribute(self.settings.src)\n                        } else {\n                            entry.target.style.backgroundImage = \"url(\" + src + \")\"\n                            entry.target.removeAttribute(self.settings.src)\n                        }\n                    }\n                }\n            })\n        }, observerConfig)\n\n        this.images.forEach(image => {\n\n            if (this.isNolazy(image)) {\n\n                let src = image.getAttribute(self.settings.src)\n                if (src) {\n                    if (\"img\" === image.tagName.toLowerCase()) {\n\n                        image.src = src\n                        image.removeAttribute(self.settings.src)\n                    } else {\n                        image.style.backgroundImage = \"url(\" + src + \")\"\n                        image.removeAttribute(self.settings.src)\n                    }\n                }\n            } else {\n                self.observer.observe(image)\n            }\n        })\n    }\n\n\n    loadImages() {\n        if (!this.settings) {\n            return\n        }\n\n        let self = this\n        this.images.forEach(function (image) {\n            let src = image.getAttribute(self.settings.src)\n            if (src) {\n                if (\"img\" === image.tagName.toLowerCase()) {\n\n                    image.src = src\n                    image.removeAttribute(self.settings.src)\n                } else {\n                    image.style.backgroundImage = \"url(\" + src + \")\"\n                    image.removeAttribute(self.settings.src)\n                }\n            }\n\n        })\n    }\n\n\n    isNolazy(image) {\n        return image.className.split(' ').indexOf(this.settings.nolazy) !== -1\n    }\n}\n\n\nexports.init = () => {\n\n    let imgs = document.getElementsByClassName('lazyload')\n\n    if (!HTMLCollection.prototype.forEach) {\n        HTMLCollection.prototype.forEach = function (cb) {\n            Array.prototype.slice.call(this).forEach(cb)\n        }\n    }\n    new LazyLoad(imgs)\n}"
  },
  {
    "path": "src/scripts/main.js",
    "content": "require('@scripts/extends')\nrequire('@styles/styles.scss')\n\nimport {\n    addLoadEvent\n} from '@scripts/dom'\nimport Lazyload from '@scripts/lazyload'\nimport Totop from '@scripts/totop'\nimport ActiveNav from '@scripts/activeNav'\nimport Header from '@scripts/header'\nimport Search from '@scripts/search'\nimport Mobile from '@scripts/mobile'\n\n\naddLoadEvent(() => {\n\n    const funcs = [ActiveNav, Header, Lazyload, Totop, Search, Mobile]\n\n    for (let fn of funcs) {\n        fn.init()\n    }\n})\n\n// JUST SAY HELLO WORLD.\nconsole.log('Hexo Theme Nayo, By Lemonreds.')\nconsole.log('@see [https://github.com/Lemonreds/hexo-theme-nayo]')"
  },
  {
    "path": "src/scripts/mask.js",
    "content": "function mask() {\n\n    let mask = document.createElement('div')\n    mask.className = 'mask none'\n\n    document.body.appendChild(mask)\n\n    let event = []\n\n    mask.addEventListener('click', () => {\n        event.forEach(funs => {\n            funs && funs()\n        })\n    })\n\n\n    return {\n        show() {\n            mask.addClass('block').removeClass('none')\n            return this\n        },\n        hide() {\n            mask.addClass('none').removeClass('block')\n            return this\n        },\n        addHideEvent(funs) {\n            return event.push(funs) - 1\n        },\n        clear() {\n            event = []\n        }\n    }\n}\n\nexport default mask()"
  },
  {
    "path": "src/scripts/mobile.js",
    "content": "import dom from '@scripts/dom'\nimport Util from '@scripts/util'\nimport Mask from '@scripts/mask'\n\nexports.init = () => {\n\n    if (!Util.isMobile()) return;\n\n    const _ = {\n        isShow: false,\n        toggle: '#mobile-toggle',\n        mobileMenu: '.mobile-menu',\n\n        header: '.mobile-header-wrapper',\n        container: '.container',\n        footer: '.footer',\n\n        menuShowClass: 'menuIn',\n        menuHideClass: 'menuOut',\n\n        pageShowClass: 'slideIn',\n        pageHideClass: 'slideOut',\n\n        hideToggleClass: 'icon-no-menu',\n        showToggleClass: 'icon-menu',\n    }\n\n    const toggle = dom.query(_.toggle)\n    const mobileMenu = dom.query(_.mobileMenu)\n    const pageNodes = [dom.query(_.header), dom.query(_.container), dom.query(_.footer)]\n\n\n\n    mobileMenu.addEventListener('click', hideMobileMenu)\n\n    toggle.addEventListener('click', () => {\n        _.isShow ? hideMobileMenu() : showMobileMenu()\n    })\n\n\n    function hideMobileMenu() {\n        Mask.hide()\n\n        toggle.addClass(_.showToggleClass)\n            .removeClass(_.hideToggleClass)\n\n\n        pageNodes.forEach(node => {\n            node.addClass(_.pageShowClass)\n                .removeClass(_.pageHideClass)\n        })\n\n\n        mobileMenu.addClass(_.menuHideClass)\n            .removeClass(_.menuShowClass)\n\n        _.isShow = false\n    }\n\n\n    function showMobileMenu() {\n        Mask.show()\n\n\n        toggle.addClass(_.hideToggleClass)\n            .removeClass(_.showToggleClass)\n\n        pageNodes.forEach(node => {\n            node.addClass(_.pageHideClass)\n                .removeClass(_.pageShowClass)\n        })\n\n\n        mobileMenu.addClass(_.menuShowClass)\n            .removeClass(_.menuHideClass)\n\n        _.isShow = true\n    }\n\n}"
  },
  {
    "path": "src/scripts/scroll.js",
    "content": "/**\n * \n * \n * window scroll handler\n * \n * \n */\nimport Util from '@scripts/util'\n\nclass Scroll {\n\n    constructor() {\n        this.listener = []\n        this.time = null\n        this._init()\n    }\n\n    _init() {\n\n        window.addEventListener('scroll', event => {\n            if (this.time) {\n                clearTimeout(this.time)\n            }\n            this.time = setTimeout(this._dispatch, 0, this.listener, event)\n        })\n    }\n\n\n    _dispatch(listener, event) {\n        listener.forEach(item => (item(event)))\n    }\n\n\n    addEvent(func) {\n\n        if (!Util.isFunc(func)) throw new Error('params error.')\n\n\n        this.listener.push(func)\n    }\n\n}\n\nexport default new Scroll()"
  },
  {
    "path": "src/scripts/search.js",
    "content": "function ajax(options) {\n\n    const xhr = new XMLHttpRequest()\n\n    xhr.onreadystatechange = () => {\n        if (xhr.readyState === 4) {\n            if (xhr.status == 200) {\n                options.success && options.success(xhr.responseXML)\n            } else {\n                options.fail && options.fail(status)\n            }\n        }\n    }\n\n    xhr.open('GET', options.url, true)\n    xhr.send(null)\n}\n\n\nimport dom from '@scripts/dom'\nimport Util from '@scripts/util'\nimport Mask from '@scripts/mask'\n\n\nexports.init = () => {\n\n    const _ = {\n        search: '#search',\n        menuLink: '#menu-search',\n        moblieLink: '.mobile-menu-search',\n        cancel: '#search-cancel',\n        input: '#search-input',\n        result: '#search-result',\n        showClass: ['show'],\n        hideClass: ['none']\n    }\n\n    const search = dom.query(_.search),\n        cancel = dom.query(_.cancel),\n        menuLink = dom.query(_.menuLink)\n\n    const showSearch = () => {\n        Mask.show()\n\n        search.addClass(_.showClass)\n            .removeClass(_.hideClass)\n    }\n\n    const hideSeach = () => {\n        Mask.hide()\n\n        search.addClass(_.hideClass)\n            .removeClass(_.showClass)\n    }\n\n    menuLink.addEventListener('click', showSearch)\n    cancel.addEventListener('click', hideSeach)\n\n    if (Util.isMobile()) {\n        dom.query(_.moblieLink).addEventListener('click', showSearch)\n    }\n\n    fetch('/search.xml', _.input, _.result)\n}\n\n\n\n/**\n * 发起AJAX请求\n * 获取文档\n */\nfunction fetch(path, input, result) {\n    ajax({\n        url: path,\n        success: xml => {\n\n            /**\n             * 对数据进行过滤\n             */\n            const data = xml.querySelectorAll('entry').map(entry => {\n                let title = entry.children[0].textContent,\n                    content = Util.filterHTML(entry.children[2].textContent),\n                    href = entry.children[1].attributes[0].nodeValue\n                return {\n                    title,\n                    content,\n                    href\n                }\n            })\n\n            /**\n             * 插入数据\n             */\n\n            const $input = dom.query(input)\n            const $result = dom.query(result)\n\n            $input.addEventListener('input', function () {\n\n\n                let str = ''\n                let key = this.value.trim().toLowerCase().split(/[\\s\\-]+/)\n\n\n                $result.innerHTML = ''\n\n                if (key.length <= 0) return;\n\n                let isMatch = true\n\n                data.forEach(data => {\n\n\n                    if (!data.title || data.title.trim() === '') {\n                        data.title = 'Untitled'\n                    }\n\n                    let data_title = data.title.trim().toLowerCase()\n                    let data_content = data.content.trim().toLowerCase()\n                    let data_href = data.href\n\n                    let index_title = -1\n                    let index_content = -1\n                    let first_occur = -1\n\n                    if (data_content !== '') {\n                        key.forEach(function (keyword, i) {\n\n                            index_title = data_title.indexOf(keyword)\n                            index_content = data_content.indexOf(keyword)\n\n                            if (index_title < 0 && index_content < 0) {\n                                isMatch = false\n                            } else {\n                                if (index_content < 0) {\n                                    index_content = 0\n                                }\n                                if (i == 0) {\n                                    first_occur = index_content\n                                }\n                            }\n                        })\n                    } else {\n                        isMatch = false\n                    }\n\n\n\n                    if (isMatch) {\n                        str += '<div class=\\'search-item\\'>'\n                        str += '<a href=\\'' + data_href + '\\' class=\\'search-title\\'>' + data_title + '</a>'\n                        let content = data.content\n                        if (first_occur >= 0) {\n                            let start = first_occur - 40\n                            let end = first_occur + 60\n\n                            if (start < 0) {\n                                start = 0\n                            }\n                            if (start == 0) {\n                                end = 100\n                            }\n                            if (end > content.length) {\n                                end = content.length\n                            }\n\n                            let match_content = content.substr(start, end)\n                            key.forEach(function (keyword) {\n                                let regS = new RegExp(keyword, 'gi')\n                                match_content = match_content.replace(regS, '<span class=\"search-keyword\">' + keyword + '</span>')\n                            })\n\n                            str += '<p class=\"search-content\">' + match_content + '</p>'\n                        }\n                        str += '</div>'\n                    }\n                })\n\n\n                if (str.indexOf('<div') === -1) $result.innerHTML = '<div class=\\'iconfont icon-nofound search-empty\\'>' + '</div>'\n                else $result.innerHTML = str\n            })\n        }\n    })\n}"
  },
  {
    "path": "src/scripts/totop.js",
    "content": "import dom from '@scripts/dom'\nimport scroll from '@scripts/scroll'\n\nexports.init = () => {\n\n    const _ = {\n        dom: '#toTop',\n        showClass: 'leftIn',\n        hideClass: 'rightOut'\n    }\n\n    const toTop = dom.query(_.dom)\n    toTop.addEventListener('click', dom.moveSmooth)\n\n    scroll.addEvent(() => {\n\n        if (document.documentElement.scrollTop > 800) {\n            toTop.addClass(_.showClass).removeClass(_.hideClass)\n        } else {\n            toTop.addClass(_.hideClass).removeClass(_.showClass)\n        }\n    })\n\n}"
  },
  {
    "path": "src/scripts/util.js",
    "content": "module.exports = {\n    isMobile() {\n        const userAgentInfo = navigator.userAgent\n        for (let agent of ['Android', 'iPhone', 'SymbianOS', 'Windows Phone', 'iPad', 'iPod']) {\n            if (userAgentInfo.indexOf(agent) > 0) return true\n        }\n        return false\n    },\n    isFunc(func) {\n        return typeof func === 'function'\n    },\n    isStr(str) {\n        return typeof str === 'string'\n    },\n    isNode(node) {\n        return node.nodeType === Node.ELEMENT_NODE\n    },\n    isArray(arr) {\n        return Array.isArray(arr)\n    },\n    filterHTML(str) {\n        str = str.replace(/<\\/?[^>]*>/g, '')\n        str = str.replace(/[|]*\\n/, '')\n        str = str.replace(/&npsp;/ig, '')\n        return str\n    }\n\n}"
  },
  {
    "path": "src/styles/base.scss",
    "content": "::selection {\n    background: #EBEBEB\n}\n\n.container {\n    width: 980px;\n    min-height: 60vh;\n    margin: 2.5rem auto;\n    color: #555;\n    box-sizing: border-box;\n    z-index: 1;\n    overflow: hidden;\n}\n\n.none {\n    display: none;\n}\n\n.block {\n    display: block;\n}\n\n#toTop {\n    @extend .hoverReverse;\n    position: fixed;\n    opacity: 0;\n    z-index: 101;\n    bottom: 10%;\n    right: 2%;\n    padding: 2px 8px;\n    width: 2.4rem;\n    height: 2.4rem;\n    font-size: 2.5rem;\n    cursor: pointer;\n}\n\n.mask {\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    z-index: 99;\n    background-color: rgba(0, 0, 0, 0.04)\n}"
  },
  {
    "path": "src/styles/code/hightlight.scss",
    "content": "@import \"./theme.scss\";\n\n.codeBlock {\n    overflow: auto;\n    margin: 20px 0;\n    padding: 0;\n    font-size: $code-font-size;\n    color: $highlight-foreground;\n    background: $highlight-background;\n    line-height: $line-height-code-block;\n    letter-spacing: $code-letter-spacing;\n}\n\npre,\ncode {\n    font-family: $code-font-family;\n}\n\ncode {\n    padding: 4px 6px;\n    word-wrap: break-word;\n    color: $code-foreground;\n    background: $highlight-background;\n    border-radius: 2px;\n    font-size: $code-font-size;\n}\n\npre {\n    @extend .codeBlock;\n    padding: 10px;\n\n    code {\n        padding: 0;\n        color: $highlight-foreground;\n        background: none;\n        text-shadow: none;\n    }\n}\n\n.highlight {\n    @extend .codeBlock;\n    // Read values from NexT config and set they as local variables to use as string variables (in any CSS section). \n    border-radius: 4px;\n    border: .5px solid $highlight-border-color;\n\n    pre {\n        border: none;\n        margin: 0;\n        padding: 10px 0;\n    }\n\n    table {\n        margin: 0;\n        width: auto;\n        border: none;\n    }\n\n    td {\n        border: none;\n        padding: 0;\n    }\n\n    figcaption {\n        @extend .clearfix;\n        font-size: 1em;\n        color: $highlight-foreground;\n        line-height: 1em;\n        margin-bottom: 1em;\n        margin: 0em;\n        padding: 0.5em;\n        background: $highlight-background;\n        border-bottom: 1px solid #e9e9e9;\n\n        a {\n            float: right;\n            color: $highlight-foreground;\n\n            &:hover {\n                border-bottom-color: $highlight-foreground;\n            }\n        }\n    }\n\n    .gutter pre {\n        padding-left: 10px;\n        padding-right: 10px;\n        color: $highlight-gutter-color;\n        text-align: right;\n        background-color: $highlight-gutter-bgcolor;\n    }\n\n    .code pre {\n        width: 100%;\n        padding-left: 10px;\n        padding-right: 10px;\n        background-color: $highlight-background\n    }\n\n    .line {\n        line-height: 23px;\n    }\n}\n\n\n.gutter {\n    -webkit-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n}\n\n.gist table {\n    width: auto;\n\n    td {\n        border: none;\n    }\n}\n\n// For diff highlight\npre .deletion {\n    background: $highlight-deletion;\n}\n\npre .addition {\n    background: $highlight-addition;\n}\n\npre .meta {\n    color: $highlight-purple;\n}\n\n.code pre {\n\n    .comment {\n        color: $highlight-comment;\n    }\n\n    .variable,\n    .attribute,\n    .tag,\n    .regexp,\n    .ruby,\n    .constant,\n    .xml,\n    .tag,\n    .title,\n    .xml,\n    .pi,\n    .xml,\n    .doctype,\n    .html,\n    .doctype,\n    .css,\n    .id,\n    .css,\n    .class,\n    .css,\n    .pseudo {\n        color: $highlight-red;\n    }\n\n    .number,\n    .preprocessor,\n    .built_in,\n    .literal,\n    .params,\n    .constant,\n    .command {\n        color: $highlight-orange;\n    }\n\n    .ruby,\n    .class,\n    .title,\n    .css,\n    .rules,\n    .attribute,\n    .string,\n    .value,\n    .inheritance,\n    .header,\n    .ruby,\n    .symbol,\n    .xml,\n    .cdata,\n    .special,\n    .number,\n    .formula {\n        color: $highlight-green;\n    }\n\n    .title,\n    .css,\n    .hexcolor {\n        color: $highlight-aqua;\n    }\n\n    .function,\n    .python,\n    .decorator,\n    .python,\n    .title,\n    .ruby,\n    .function,\n    .title,\n    .ruby,\n    .title,\n    .keyword,\n    .perl,\n    .sub,\n    .javascript,\n    .title,\n    .coffeescript,\n    .title {\n        color: $highlight-blue;\n    }\n\n    .keyword,\n    .javascript,\n    .function {\n        color: $highlight-purple;\n    }\n}\n\n\n.highlight {\n    position: relative;\n    width: 100%;\n\n    &:after {\n        position: absolute;\n        top: 0;\n        right: 0;\n        color: #ccc;\n        content: \"Code\";\n        font-size: 12px;\n        padding: 5px 10px 0;\n        height: 15px;\n        ;\n    }\n}\n\n.html:after {\n    content: \"HTML\"\n}\n\n.javascript:after {\n    content: \"Javascript\"\n}\n\n.js:after {\n    content: \"Javascript\"\n}\n\n.shell:after {\n    content: \"Shell\"\n}\n\n.css:after {\n    content: \"CSS\"\n}\n\n.vue:after {\n    content: \"Vue\"\n}\n\n.sass:after {\n    content: \"SASS\"\n}\n\n.less:after {\n    content: \"LESS\"\n}\n\n.styl:after {\n    content: \"Styl\"\n}\n\n.java:after {\n    content: \"Java\"\n}\n\n\n.c:after {\n    content: \"C\"\n}\n\n.yml:after {\n    content: 'YML'\n}\n\n.php:after {\n    content: 'PHP'\n}\n\np code {\n    padding: 4px;\n    font-size: $code-font-size;\n    color: $highlight-foreground;\n    background: $highlight-background;\n    border: .5px solid $highlight-border-color;\n    border-radius: 2px;\n    -webkit-border-radius: 2px;\n    -moz-border-radius: 2px;\n    -ms-border-radius: 2px;\n    -o-border-radius: 2px;\n}"
  },
  {
    "path": "src/styles/code/theme.scss",
    "content": "// from hexo-theme-next\n\n$code-font-size : 13.5px;\n$number-font-size : 12px;\n$code-letter-spacing : .5px;\n$line-height-code-block : 1.75;\n\n$code-font-family : 'consolas','Arial';\n$number-font-family : 'Trebuchet MS','sans-serif','Arial';\n\n$highlight-foreground : #ffffff;\n$highlight-marked : #727272;\n\n$highlight-deletion : #fdd;\n$highlight-addition : #dfd;\n$highlight-background : #fcfcfc;\n$highlight-current-line : #ebebeb;\n$highlight-selection : #d6d6d6;\n$highlight-foreground : #262626;\n$highlight-comment : #8e908c;\n\n$highlight-red : #E24C38;\n$highlight-orange : #e78c45;\n$highlight-yellow : #e7c547;\n$highlight-green : #718c00;\n$highlight-aqua : #3e999f;\n$highlight-blue : #4271ae;\n$highlight-purple : #8959a8;\n$highlight-gray : #a6a6a6;\n\n$highlight-border-color : #fff;\n$highlight-gutter-color : #949da0;\n$highlight-gutter-bgcolor : #F7F8FA;\n\n$code-foreground : #F7F8FA;"
  },
  {
    "path": "src/styles/iconfont.scss",
    "content": "/**\n* @see http://www.iconfont.cn\n*/\n\n\n@font-face {\n  font-family: 'iconfont';\n  src: url('./iconfonts/iconfont.eot');\n  src: url('./iconfonts/iconfont.eot?#iefix') format('embedded-opentype'),\n    url('./iconfonts/iconfont.woff') format('woff'),\n    url('./iconfonts/iconfont.ttf') format('truetype'),\n    url('./iconfonts/iconfont.svg#iconfont') format('svg')\n}\n\n\n\n\n.iconfont {\n  font-family: \"iconfont\" !important;\n  font-size: 16px;\n  font-style: normal;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n.icon-Zhihu:before {\n  content: \"\\e6d1\";\n}\n\n.icon-tags:before {\n  content: \"\\e64d\";\n}\n\n.icon-share-google:before {\n  content: \"\\e611\";\n}\n\n.icon-menu:before {\n  content: \"\\e6ab\";\n}\n\n.icon-share-weixin:before {\n  content: \"\\e63e\";\n}\n\n.icon-share-douban:before {\n  content: \"\\e7a1\";\n}\n\n.icon-home:before {\n  content: \"\\e7a5\";\n}\n\n.icon-about:before {\n  content: \"\\e610\";\n}\n\n.icon-LinkedIn:before {\n  content: \"\\e64b\";\n}\n\n.icon-right:before {\n  content: \"\\e65f\";\n}\n\n.icon-left:before {\n  content: \"\\e660\";\n}\n\n.icon-words:before {\n  content: \"\\e696\";\n}\n\n.icon-nofound:before {\n  content: \"\\e67a\";\n}\n\n.icon-Github:before {\n  content: \"\\e667\";\n}\n\n.icon-Facebook:before {\n  content: \"\\e6e2\";\n}\n\n.icon-archives:before {\n  content: \"\\eb4d\";\n}\n\n.icon-share-facebook:before {\n  content: \"\\ee75\";\n}\n\n.icon-backtotop:before {\n  content: \"\\e697\";\n}\n\n.icon-search:before {\n  content: \"\\e60f\";\n}\n\n.icon-instagram:before {\n  content: \"\\e607\";\n}\n\n.icon-page-tags:before {\n  content: \"\\e672\";\n}\n\n.icon-share-tumblr:before {\n  content: \"\\e87b\";\n}\n\n.icon-share-qq:before {\n  content: \"\\e61e\";\n}\n\n.icon-Weibo:before {\n  content: \"\\e74c\";\n}\n\n.icon-share-twitter:before {\n  content: \"\\e606\";\n}\n\n.icon-Neteasemusic:before {\n  content: \"\\e600\";\n}\n\n.icon-share-weibo:before {\n  content: \"\\e74e\";\n}\n\n.icon-tag-inner:before {\n  content: \"\\e7a2\";\n}\n\n.icon-cancel:before {\n  content: \"\\e7a3\";\n}\n\n.icon-no-menu:before {\n  content: \"\\e7a4\";\n}\n\n.icon-Telegram:before {\n  content: \"\\e655\";\n}\n\n.icon-page-about:before {\n  content: \"\\eb4e\";\n}\n\n.icon-page-archive:before {\n  content: \"\\eb4f\";\n}\n\n.icon-tag:before {\n  content: \"\\eb50\";\n}\n\n.icon-category:before {\n  content: \"\\ee77\";\n}"
  },
  {
    "path": "src/styles/mobile/mobile.scss",
    "content": ".header-wrapper {\n    display: none\n}\n\n.mobile-header-wrapper {\n    width: 100%;\n    min-height: 60px;\n    transition: all 0.4s ease-in-out;\n    box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n    display: flex;\n    align-items: center;\n    padding: 0 2rem;\n\n    .iconfont {\n        font-size: 1.5rem;\n\n        &:hover {\n            color: $c-hover;\n        }\n    }\n\n    position: fixed;\n    top: 0;\n    left: 0;\n    z-index: 101;\n    background: #fff;\n}\n\n.container {\n    margin: 70px 0 0;\n    padding: 10px 16px;\n    width: 100%;\n    box-sizing: border-box;\n\n    time {\n        font-size: 12px;\n    }\n\n    .article {\n        padding: 0;\n        border-bottom: none;\n        margin-bottom: 26px;\n\n        .title {\n            font-size: 16px;\n            margin-bottom: 6px;\n        }\n\n        .thumb {\n            height: 220px;\n\n            .banner {\n                margin: 0 auto;\n                width: 98%;\n                height: 100%;\n            }\n        }\n    }\n\n    .post {\n        .title {\n            margin: 0;\n            font-size: 18px;\n        }\n\n\n\n        .other {\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            flex-direction: column\n        }\n\n        .nav {\n            padding: 0;\n\n            .link {\n                width: 100%;\n                margin: 0;\n                padding: 1rem 0;\n                .title{\n                    font-size: 14px;\n                    margin: 0;\n                }\n\n                &:last-child {\n                    border-bottom: none\n                }\n            }\n\n        }\n    }\n\n    .typo {\n        font-size: 13px;\n        line-height: 2;\n        color: #0d0d0d;\n\n        h1,\n        h2,\n        h3,\n        h4,\n        h5,\n        h6 {\n            margin: 1rem 0 .5rem 0;\n            padding: 0;\n            font-weight: normal;\n            color: #111;\n        }\n\n        h1 {\n            font-size: 18px\n        }\n\n        h2 {\n            font-size: 17px\n        }\n\n        h3 {\n            font-size: 16px\n        }\n\n        h4 {\n            font-size: 16px\n        }\n\n        h5,\n        h6 {\n            font-size: 15px\n        }\n\n        blockquote {\n            margin: 10px 0;\n\n            p {\n                font-size: 13px;\n            }\n        }\n\n    }\n\n    .page-name {\n        margin-bottom: 0;\n    }\n}\n\n\n#search {\n    width: 100%;\n    height: 100%;\n    margin: 0;\n    position: fixed;\n    top: 0;\n    left: 0;\n    z-index: 101;\n    background: #fff;\n\n    .result {\n        .search-item {\n            margin: 10px 2px;\n\n            .search-title {\n                padding: 0;\n                margin-bottom: 18px;\n                font-size: 14px;\n                color: $c-hover;\n            }\n\n            .search-content {\n                font-size: 13px;\n                padding: 10px 2px;\n            }\n\n            .search-keyword {\n                font-size: 13px;\n            }\n        }\n    }\n}\n\n\n\n.mobile-menu {\n    display: block;\n    position: fixed;\n    left: 0;\n    top: 0;\n    width: 200px;\n    height: 100%;\n    z-index: 999;\n    background: #fff;\n    text-align: center;\n    padding-top: 46px;\n    border-right: 1px solid #f1f1f1;\n\n    transform: translateX(-200px);\n\n    .mobile-menu-link {\n        display: block;\n        padding: 18px 16px;\n        font-size: 15px;\n        color: #232729;\n        line-height: 1\n    }\n\n    .mobile-menu-icon {\n        margin: 30px auto;\n        width: 40px;\n        padding: 4px;\n        border: 1px solid #f1f1f1;\n        border-radius: 5px;\n    }\n\n}"
  },
  {
    "path": "src/styles/partial/archive.scss",
    "content": ".archive {\n    text-align: center;\n\n    .archive-post {\n        margin-top: 1rem;\n\n        .archive-year {\n            margin: 1rem 0;\n\n            .year {\n                padding: 8px 10px;\n                font-size: 1.05rem;\n                color: #666;\n                font-weight: 600;\n                letter-spacing: 0.5px;\n                font-family: Arial, Helvetica, sans-serif\n            }\n        }\n\n        .archive-item {\n            display: flex;\n            align-items: center;\n            padding: 1.3rem 0;\n            position: relative;\n\n            // &::after {\n            //     content: \"\";\n            //     position: absolute;\n            //     left: 5%;\n            //     bottom: 0;\n            //     width: 90%;\n            //     height: 1px;\n            //     background-color: $c-shallow-line;\n            // }\n\n            .time {\n                width: 30%;\n                padding-left: 10px;\n                font-size: 0.85rem;\n                color: rgba(0, 0, 0, 0.65);\n                text-align: center;\n            }\n\n            .title {\n                @extend .hoverReverse;\n                width: 70%;\n                font-size: 1rem;\n                text-align: left;\n            }\n        }\n    }\n\n}"
  },
  {
    "path": "src/styles/partial/footer.scss",
    "content": ".footer {\n    width: 100%;\n    margin: 10vh 0 5vh;\n    color: #797f86;\n    text-align: center;\n    .inner {\n        margin: 0 auto;\n        height: 100%;\n\n        .copyright {\n            font-size: 12px;\n            font-family: Arial, Helvetica, sans-serif;\n            line-height: 2;\n            a {\n               @extend .hover\n            }\n        }\n    }\n}"
  },
  {
    "path": "src/styles/partial/header.scss",
    "content": ".header-wrapper {\n    width: 100%;\n    min-height: 70px;\n    transition: all 0.4s ease-in-out;\n    box-shadow: 0 1px 1px rgba(0, 0, 0, .04);\n\n    .inner {\n        margin: 0 auto;\n        width: 980px;\n        height: 70px;\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n\n        .title {\n            .logo {\n                width: 60px;\n                height: 60px;\n                padding: 4px 4px;\n                border: none;\n                opacity: 0.9;\n                box-sizing: border-box;\n                transition: opacity .4s ease-in-out;\n\n                &:hover {\n                    opacity: 0.8;\n                }\n            }\n        }\n\n        .menu {\n            list-style: none;\n            margin: 0;\n            padding: 0;\n\n            .item {\n                display: inline-block;\n                text-align: center;\n\n                .link {\n                    margin-right: 1.65rem;\n                    cursor: pointer;\n\n                    &:hover {\n                        color: $c-hover;\n                    }\n\n                    .iconfont {\n                        font-size: 1.3rem;\n                        width: 44px;\n                        height: 44px;\n                    }\n\n                }\n            }\n\n            .menu-active {\n                color: $c-hover;\n            }\n        }\n    }\n\n\n}\n\n/**\n*  For JAVASCRIPT\n* @see @scripts/header.js\n*/\n\n.header-static {\n    position: static;\n    background: #fff;\n    box-shadow: 0 1px 1px rgba(0, 0, 0, .05)\n}\n\n\n.header-fixed {\n    position: fixed;\n    left: 0;\n    top: 0;\n    background: #fff;\n    z-index: 9;\n    opacity: 0.9;\n    box-shadow: 0 2px 2px rgba(0, 0, 0, 0.15)\n}\n\n\n\n/**\n*\n* mobile\n*\n*/\n\n\n\n.mobile-menu {\n    display: none;\n}\n\n.mobile-header-wrapper {\n    display: none;\n}"
  },
  {
    "path": "src/styles/partial/index.scss",
    "content": "// porfile\n\n.profile {\n    margin-bottom: 28px;\n    text-align: center;\n    border-bottom: 0.5px solid $c-shallow-line;\n\n    .avatar {\n        @extend .hoverOpacity;\n        display: inline-block;\n        width: 92px;\n        height: 92px;\n        padding: 3px;\n        border: 1px solid $c-shallow-line;\n        border-radius: 50%;\n        transition: opacity .4s ease-in-out;\n\n        &:hover {\n            opacity: 0.8;\n        }\n    }\n\n    .author {\n        margin: 4px 0;\n        font-size: 1rem;\n        color: #4a4a4a;\n    }\n\n    .social {\n        margin: 10px 0;\n\n        .links {\n            margin-right: 1.5px;\n            font-size: 1.3rem;\n            color: #101010;\n            @extend .hoverReverse;\n\n            .iconfont {\n                font-size: inherit;\n            }\n        }\n\n    }\n}\n\n// article\n\n.article {\n    margin-bottom: 48px;\n    padding: 1.5rem 1.5rem;\n    border-bottom: 1px solid $c-shallow-line;\n\n    .article-header {\n        .title {\n            @extend .hoverReverse;\n            display: block;\n            font-size: 23px;\n            font-weight: 400;\n            line-height: 1.4;\n            margin-bottom: 1rem;\n            color: #333\n        }\n\n        .meta {\n            margin: 10px 0 0;\n            font-size: 0.85rem;\n            color: #666\n        }\n\n\n    }\n\n    .article-excerpt {\n        margin: 2rem 0 1.5rem;\n    }\n    .article-tags,\n    .article-categories {\n        display: inline-block;\n        .link {\n            @extend .hover;\n            margin-right: 6px;\n            font-size: 0.85rem;\n            text-decoration: underline;\n        }\n\n        .iconfont {\n            color: #000;\n        }\n    }\n\n    .article-bottom {\n        text-align: center;\n        margin: 2rem auto 0 auto;\n        height: 44px;\n        line-height: 44px;\n\n        .readmore {\n            font-size: 0.8rem;\n            padding: 8px 12px;\n            border-radius: 4px;\n            border: 1px solid $c-deep-line;\n            color: rgba(51, 51, 51, .7);\n            font-weight: 700;\n            @extend .hoverReverse;\n\n            &:hover {\n                border: 1px solid $c-hover;\n            }\n\n            transition: all 0.2s ease-in-out;\n            -webkit-transition: all 0.2s ease-in-out;\n            -moz-transition: all 0.2s ease-in-out;\n            -ms-transition: all 0.2s ease-in-out;\n            -o-transition: all 0.2s ease-in-out;\n        }\n    }\n\n\n    .thumb {\n        margin: 0.5rem 0;\n        width: 104%;\n        height: 24rem;\n        position: relative;\n        top: 0;\n        left: -2%;\n\n        .banner {\n            position: relative;\n            width: 100%;\n            height: 100%;\n            background-size: 100% 100%;\n            background-position: center center;\n            background-repeat: no-repeat;\n            border-radius: 3px;\n            -webkit-border-radius: 3px;\n            -moz-border-radius: 3px;\n            -ms-border-radius: 3px;\n            -o-border-radius: 3px;\n        }\n    }\n}"
  },
  {
    "path": "src/styles/partial/item.scss",
    "content": ".items {\n    .item {\n        display: flex;\n        align-items: center;\n        margin: 2rem 2rem;\n\n        .time {\n            width: 30%;\n            padding-left: 36px;\n            font-size: 0.9rem;\n            color: rgba(0, 0, 0, 0.65);\n            text-align: center;\n        }\n\n        .title {\n            @extend .hoverReverse;\n            width: 70%;\n            font-size: 1.05rem;\n            text-align: left;\n        }\n    }\n}"
  },
  {
    "path": "src/styles/partial/page-name.scss",
    "content": ".page-name {\n    margin-bottom: 1rem;\n    text-align: center;\n\n    .name {\n        font-size: 1rem;\n    }\n\n    .iconfont {\n        font-size: 1.25rem;\n        margin-right: 12px;\n        color: #333;\n    }\n}"
  },
  {
    "path": "src/styles/partial/paginator.scss",
    "content": ".paginator {\n    margin: 8rem 0;\n    padding: 0 1rem;\n    text-align: center;\n    color: $c-gray;\n    font-size: 0.825rem;\n    position: relative;\n    height: 40px;\n    line-height: 40px;\n\n    .prev,\n    .next {\n        position: absolute;\n        display: inline-block;\n        padding: 4px 8px;\n        border-radius: 4px;\n        border: 1px solid $c-shallow-line;\n        line-height: 2;\n        &:hover {\n            color: $c-hover;\n            border: 1px solid $c-hover;\n        }\n\n        transition: all .2s ease-in-out;\n        -webkit-transition: all .2s ease-in-out;\n        -moz-transition: all .2s ease-in-out;\n        -ms-transition: all .2s ease-in-out;\n        -o-transition: all .2s ease-in-out;\n    }\n\n    .prev {\n        left: 2px;\n    }\n\n    .next {\n        right: 2px;\n    }\n\n    .page-number {\n        font-size: 14px;\n        padding: 6px 2px;\n        height: 40px;\n        line-height: 40px;\n\n        strong {\n            color: $c-hover;\n            font-size: 1rem;\n        }\n    }\n}"
  },
  {
    "path": "src/styles/partial/post.scss",
    "content": "@import \"~@styles/three/valine.scss\";\n\n.post {    \n\n    .header {\n        padding-bottom: 12px;\n        border-bottom: 1px solid $c-shallow-line;\n\n        .title {\n            margin-top: 10px;\n            margin-bottom: 10px;\n            font-size: 1.55rem;\n            font-weight: 400;\n            line-height: 1.4;\n            color: #333\n        }\n\n        .info {\n            margin-top: 10px;\n\n            time,\n            span {\n                color: #666;\n                margin-right: 12px;\n                font-size: 0.9rem;\n            }\n        }\n    }\n    .post-content{\n        margin: 2.5rem 0;\n    }\n\n    .bottom {\n\n        .other {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            padding: 2rem 0;\n            border-top: 1px solid $c-shallow-line;\n            border-bottom: 1px solid $c-shallow-line;\n\n            .meta {\n\n                .category-link,\n                .tag-link {\n                    @extend .hover;\n                    font-size: 0.95rem;\n                    margin-right: 4px;\n                    text-decoration: underline;\n                }\n            }\n\n            .operate {\n                display: flex;\n                align-items: center;\n\n                .text {\n                    font-size: 12px;\n                    color: gray;\n                    margin: 0 10px;\n                    text-transform: uppercase\n                }\n\n\n                .share {\n                    list-style: none;\n\n                    .item {\n                        @extend .hoverReverse;\n                        display: inline-block;\n                        margin-right: 6px;\n                        font-size: 1.2rem;\n                        cursor: pointer;\n                    }\n                }\n            }\n        }\n\n\n\n        .nav {\n            @extend .clearfix;\n            padding: 3rem 0;\n\n            border-bottom: 0.5px solid $c-shallow-line;\n\n            .link {\n                width: 46%;\n                margin: 0 2%;\n                float: left;\n\n                .link-wrap {\n                    @extend .hoverReverse;\n                    display: block;\n                    padding: 14px 6px;\n                    text-decoration: none;\n                    text-shadow: 0 1px #fff;\n                    text-align: center;\n\n                    .caption {\n                        text-transform: uppercase;\n                        letter-spacing: 2px;\n                        line-height: 1rem;\n                        font-weight: blod;\n                        color: gray;\n                    }\n\n                    .title {\n                        display: block;\n                        text-align: center;\n                        font-size: 1rem;\n                        margin-top: 1.5rem;\n                    }\n                }\n\n            }\n        }\n    }\n\n\n\n    .comment {\n        margin-top: 2rem;\n    }\n\n    .gallery {\n        margin: 0 2px;\n        display: flex;\n\n        .image {\n            width: 230px;\n            height: 220px;\n            margin: 0 0.1rem;\n            padding: 4px;\n            border: 1px solid $c-shallow-line;\n            background-size: cover;\n            background-position: center;\n            background-repeat: no-repeat;\n            cursor: pointer;\n        }\n    }\n}"
  },
  {
    "path": "src/styles/partial/search.scss",
    "content": "#search {\n    width: 800px;\n    height: 620px;\n    position: fixed;\n    left: 50%;\n    top: 50%;\n    margin-left: -400px;\n    margin-top: -310px;\n    overflow-y: auto;\n    z-index: 100;\n    border: 1px solid $c-shallow-line;\n    background: #fefefe;\n    border-radius: 4px;\n    overflow-x: hidden;\n\n    .header {\n        margin: 0 16px;\n        height: 60px;\n        display: flex;\n        align-items: center;\n        border-bottom: 1px solid $c-shallow-line;\n\n        .input {\n            flex: 1;\n            caret-color: #000;\n            color: #333;\n            padding: 8px 12px;\n            font-size: 0.9rem;\n            outline: none;\n            background: #fff;\n        }\n\n        .iconfont {\n            @extend .hoverReverse;\n            font-size: 1.25rem;\n            cursor: pointer;\n        }\n    }\n\n    .result {\n        width: 100%;\n        min-height: 500px;\n        padding: 1rem 0.8rem;\n        box-sizing: border-box;\n        overflow: hidden;\n\n        .icon-nofound {\n            font-size: 1.5rem;\n            position: absolute;\n            left: 50%;\n            top: 50%;\n            transform: translate(-50%, -45%)\n        }\n\n        .search-item {\n            margin: 14px 4px;\n            border-bottom: 1px solid $c-shallow-line;\n\n            .search-title {\n                @extend .hoverReverse;\n                @extend .textOverflow;\n                font-size: 1.05rem;\n                padding-left: 12px;\n            }\n\n            .search-content {\n                @extend .textOverflow;\n\n                margin: 0;\n                padding: 20px 12px;\n                font-size: 0.9rem;\n                color: #333;\n            }\n\n            .search-keyword {\n                font-size: 0.9rem;\n                color: $c-hover;\n            }\n        }\n    }\n}"
  },
  {
    "path": "src/styles/partial/tag.scss",
    "content": ".tag {\n    .tag-item {\n        list-style: none;\n        display: inline-block;\n        margin-right: 1.8rem;\n\n        .tag-wrap {\n            @extend .hoverReverse;\n            text-decoration: underline;\n\n            .tag-name {\n                font-size: 0.95rem;\n            }\n\n            .tag-count {\n                color: $c-hover;\n                font-size: 0.8rem;\n            }\n        }\n    }\n}"
  },
  {
    "path": "src/styles/partial/toc.scss",
    "content": ".toc {\n    position: absolute;\n    padding: 8px 10px;\n    width: 250px;\n    max-height: 600px;\n    top: 140px;\n    right: 120px;\n    overflow-x: hidden;\n    overflow-y: auto;\n    border: 1px solid #f1f1f1;\n\n    .toc-title {\n        @extend .hoverReverse;\n        display: block;\n        margin: 0;\n        padding: 0.8rem 0;\n        text-align: center;\n        font-size: 1rem;\n        color: gray;\n        cursor: pointer;\n        font-size: 600;\n        border-bottom: 1px solid #f1f1f1;\n    }\n\n    .toc-list {\n        list-style: none;\n        margin: 16px 0 0 15px;\n\n        ol,\n        ul {\n            list-style-type: none;\n\n            li {\n                @extend .hoverReverse;\n                padding-left: 8px\n            }\n        }\n    }\n\n    .toc-text {\n        font-size: 0.75rem;\n        color: rgba(0, 0, 0, .7)\n    }\n\n    .toc-child {\n        .toc-text {\n            font-size: 0.8rem;\n            margin-left: 0.2rem;\n            color: rgba(0, 0, 0, 0.65)\n        }\n    }\n\n    .toc-inner-item {\n        font-size: 0.8rem;\n        padding-left: 0;\n        margin-bottom: 0.8rem;\n\n        .toc-inner-text {\n            @extend .hoverReverse;\n            display: inline-block;\n            margin: 0.8rem 0;\n        }\n\n    }\n\n    &::-webkit-scrollbar {\n        width: 4px;\n        height: 4px;\n        background-color: #F5F5F5;\n    }\n\n    &::-webkit-scrollbar-track {\n        box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.3);\n        border-radius: 10px;\n        background-color: #F5F5F5;\n    }\n\n    &::-webkit-scrollbar-thumb {\n        border-radius: 10px;\n        box-shadow: inset 0 0 1px rgba(0, 0, 0, .3);\n        background-color: #555;\n    }\n}"
  },
  {
    "path": "src/styles/styles.scss",
    "content": "@import \"~@styles/utils/reset.scss\";\n@import \"~@styles/utils/vars.scss\";\n@import \"~@styles/utils/typo.scss\";\n@import \"~@styles/utils/ani.scss\";\n@import \"~@styles/iconfont.scss\";\n@import \"~@styles/base.scss\";\n\n// code themse\n@import \"~@styles/code/hightlight.scss\";\n\n\n@import '~@styles/partial/header.scss';\n@import '~@styles/partial/footer.scss';\n@import '~@styles/partial/index.scss';\n@import '~@styles/partial/paginator.scss';\n@import '~@styles/partial/archive.scss';\n@import '~@styles/partial/tag.scss';\n@import '~@styles/partial/item.scss';\n@import '~@styles/partial/page-name.scss';\n@import '~@styles/partial/post.scss';\n@import '~@styles/partial/search.scss';\n// @import '~@styles/partial/toc.scss';\n\n@media screen and (max-width: 479px) {\n    @import '~@styles/mobile/mobile.scss';\n}"
  },
  {
    "path": "src/styles/three/hover.scss",
    "content": "$inactive-color : #747474;\n\n.inactive-item {\n    color: $inactive-color !important;\n\n    &:link,\n    &:visited,\n    &:active {\n        color: $inactive-color !important;\n    }\n}"
  },
  {
    "path": "src/styles/three/valine.scss",
    "content": "#comment {\n    margin-bottom: 4rem;\n    padding-bottom: 1rem;\n    position: relative;\n    border: none;\n}\n\n\n.power,\n.vempty,\n.col-60 {\n    visibility: hidden\n}\n\n.vnick,\n.veditor,\n.vmail,\n.vempty,\n.vsubmit {\n    font-size: 1rem;\n    border: none !important;\n}\n\n\n.vsubmit {\n    background-color: #F5F6FA !important;\n    color: rgba(0, 0, 0, .5) !important;\n    font-weight: 300 !important;\n    letter-spacing: .3px;\n    border: 1px solid transparent !important;\n\n    &:hover {\n        color: $c-hover !important;\n        border: 1px solid $c-hover !important;\n    }\n\n    transition: all .2s ease-in-out;\n    -webkit-transition: all .2s ease-in-out;\n    -moz-transition: all .2s ease-in-out;\n    -ms-transition: all .2s ease-in-out;\n    -o-transition: all .2s ease-in-out;\n}\n\n.vcard {\n    padding: 5px 0 0 20px !important\n}"
  },
  {
    "path": "src/styles/utils/ani.scss",
    "content": "@keyframes leftIn {\n    from {\n        transform: translateX(100px);\n        opacity: 0;\n    }\n\n    to {\n        transform: translateX(0px);\n        opacity: 1;\n    }\n}\n\n.leftIn {\n    animation: leftIn 0.6s ease-in-out forwards;\n}\n\n@keyframes rightOut {\n    from {\n        transform: translateX(0px);\n        opacity: 1;\n    }\n\n    to {\n        transform: translateX(100px);\n        opacity: 0;\n    }\n}\n\n\n.rightOut {\n    animation: rightOut 0.6s ease-in-out forwards;\n}\n\n\n@keyframes slideUp {\n    0% {\n        transform: translateY(0);\n    }\n\n    100% {\n        transform: translateY(-100px);\n    }\n}\n\n\n.slideUp {\n    animation: slideUp 0.5s ease-in-out forwards;\n}\n\n\n\n@keyframes slideDown {\n    0% {\n        transform: translateY(-100px);\n    }\n\n    100% {\n        transform: translateY(0);\n    }\n}\n\n.slideDown {\n    animation: slideDown 0.5s ease-in-out forwards;\n}\n\n\n\n\n@keyframes slideDownMin {\n    0% {\n        transform: translateY(-10px);\n        opacity: 0.1\n    }\n\n    100% {\n        transform: translateY(0);\n        opacity: 1\n    }\n}\n\n\n.slideDownMin {\n    animation: slideDownMin 0.5s ease-in-out forwards;\n}\n\n\n\n@keyframes sildeUpMin {\n    0% {\n        transform: translateY(10px);\n        opacity: 0.1\n    }\n\n    100% {\n        transform: translateY(0);\n        opacity: 1\n    }\n}\n\n.sildeUpMin {\n    animation: sildeUpMin 0.5s ease-in-out forwards;\n}\n\n\n\n\n\n\n@keyframes menuIn {\n    0% {\n        transform: translateX(-200px)\n    }\n\n    100% {\n        transform: translateX(0)\n    }\n}\n\n.menuIn {\n    animation: menuIn 0.5s ease-in-out forwards;\n}\n\n\n@keyframes menuOut {\n    0% {\n        transform: translateX(0)\n    }\n\n    100% {\n        transform: translateX(-200px)\n    }\n}\n\n.menuOut {\n    animation: menuOut 0.5s ease-in-out forwards;\n}\n\n\n\n\n@keyframes slideIn {\n    0% {\n        transform: translateX(200px)\n    }\n\n    100% {\n        transform: translateX(0)\n    }\n}\n\n.slideIn {\n    animation: slideIn 0.5s ease-in-out forwards;\n}\n\n\n@keyframes slideOut {\n    0% {\n        transform: translateX(0)\n    }\n\n    100% {\n        transform: translateX(200px)\n    }\n}\n\n.slideOut {\n    animation: slideOut 0.5s ease-in-out forwards;\n}"
  },
  {
    "path": "src/styles/utils/reset.scss",
    "content": "/**\n*   重置css样式\n*/\n\nhtml {\n    background: transparent;\n    -webkit-text-size-adjust: 100%;\n}\n\nbody {\n    font-family: -apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,sans-serif;\n    margin: 0px;\n    padding: 0px;\n    overflow-x: hidden;\n    overflow-y: auto;\n    -webkit-overflow-scrolling: touch;\n}\n\ninput,\nselect,\ntextarea {\n    border: 0;\n    -webkit-appearance: none;\n    appearance: none;\n}\n\nol,\nul {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n}\n\n\n\na {\n\n    &:link,\n    &:visited,\n    &:hover,\n    &:active {\n        text-decoration: none;\n        color: inherit;\n    }\n}\n\nimg {\n    display: block;\n    max-width: 100%;\n    padding: 4px;\n    opacity: 0.95;\n    border: 1px solid #eee;\n    border-radius: 4px;\n    -webkit-border-radius: 4px;\n    -moz-border-radius: 4px;\n    -ms-border-radius: 4px;\n    -o-border-radius: 4px;\n}"
  },
  {
    "path": "src/styles/utils/typo.scss",
    "content": ".typo {\n    font-size: 15px;\n    line-height: 2;\n    color: #0d0d0d;\n\n    h1,\n    h2,\n    h3,\n    h4,\n    h5,\n    h6 {\n        margin: 2rem 0 1.8rem 0;\n        padding: 0;\n        font-weight: 500;\n        color: #101010;\n    }\n\n    h1 {\n        font-size: 36px\n    }\n\n    h2 {\n        font-size: 32px\n    }\n\n    h3 {\n        font-size: 26px\n    }\n\n    h4 {\n        font-size: 19px\n    }\n\n    h5,\n    h6 {\n        font-size: 16px\n    }\n\n    strong {\n        font-weight: 500\n    }\n\n    hr {\n        margin-top: 22px;\n        border: none;\n        border-top: 1px solid rgba(102, 130, 153, 0.1)\n    }\n\n    p {\n        line-height: 30px;\n        margin-bottom: 14px;\n        color: #232323\n    }\n\n    img {\n        box-sizing: border-box;\n        margin: 1rem 0;\n    }\n\n    del {\n        opacity: 0.5;\n    }\n\n    ul,\n    ol {\n        margin: 12px 0;\n        padding-left: 22px;\n\n        p {\n            margin: 0;\n        }\n\n        & li {\n            margin: 4px 0;\n            padding-left: 8px;\n        }\n    }\n\n    ul li {\n        list-style: none;\n        position: relative;\n\n        &::before {\n            position: absolute;\n            content: \"•\";\n            top: 0px;\n            left: -16px;\n            font-size: 17px;\n            color: #333\n        }\n    }\n\n    ol li {\n        list-style: decimal\n    }\n\n    a {\n        @extend .hover;\n        font-size: 0.9rem;\n        text-decoration: underline;\n        font-family: Arial, Helvetica, sans-serif;\n    }\n\n    blockquote {\n        display: block;\n        letter-spacing: .4px;\n        font-size: 15px;\n        padding: 0 12px;\n        margin: 2rem 0;\n\n        p {\n            margin: 0;\n            padding-left: 10px;\n            border-left: 3px solid #eee;\n        }\n    }\n\n\n\n    table {\n        margin: 16px 0;\n        word-wrap: break-word;\n        border-collapse: collapse;\n        border-spacing: 0;\n        border-radius: 2px;\n\n        tr:nth-child(even) {\n            background: #fafafa\n        }\n\n        th {\n            font-weight: 500\n        }\n\n        th,\n        td {\n            border: 1px solid #f1f1f1;\n            padding: 0.4rem 1rem;\n            margin: 28px 0;\n        }\n\n\n        dt,\n        dd {\n            margin-bottom: 10px;\n        }\n\n\n    }\n\n    figure th,\n    figure td {\n        border: none;\n    }\n}"
  },
  {
    "path": "src/styles/utils/vars.scss",
    "content": "$c-shallow-line: #f5f5f5;\n$c-deep-line :#f1f1f1;\n$c-hover: #e26d6d;\n$c-black: #555;\n$c-gray : #727272;\n\n@mixin hover($beforeColor, $afterColor) {\n    color: $beforeColor;\n\n    &:hover {\n        color: $afterColor;\n    }\n\n    transition: color 0.2s ease-in-out;\n}\n\n.hover {\n    @include hover($c-hover, $c-black)\n}\n\n.hoverReverse {\n    @include hover($c-black, $c-hover)\n}\n\n.hoverOpacity {\n    opacity: 0.95;\n\n    &:hover {\n        color: 0.65;\n    }\n\n    cursor: pointer;\n    transition: opacity 0.3s ease-in-out;\n    -webkit-transition: opacity 0.3s ease-in-out;\n    -moz-transition: opacity 0.3s ease-in-out;\n    -ms-transition: opacity 0.3s ease-in-out;\n    -o-transition: opacity 0.3s ease-in-out;\n}\n\n\n.clearfix {\n\n    &:before,\n    &:after {\n        content: \" \";\n        display: table;\n    }\n\n    &:after {\n        clear: both\n    }\n}\n\n.textOverflow {\n    text-overflow: ellipsis;\n    overflow: hidden;\n    white-space: nowrap;\n}"
  },
  {
    "path": "webpack.config.js",
    "content": "/**\n * \n * webpack 4.0 配置文件\n * @time 2019-03-28\n */\n\nconst path = require('path')\nconst CleanPlugin = require('clean-webpack-plugin')\nconst ExtractTextPlugin = require('extract-text-webpack-plugin')\nconst OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin')\n\nconst extractSass = new ExtractTextPlugin({\n    filename: \"nayo.min.css\"\n});\n\n\nmodule.exports = {\n    mode: 'development',\n    entry: './src/scripts/main.js',\n    output: {\n        path: path.resolve(__dirname, 'source'),\n        filename: 'nayo.bundle.js'\n    },\n    module: {\n        rules: [{\n            // ES6 \n            test: /\\.js$/,\n            exclude: /(node_modules)/,\n            use: {\n                loader: \"babel-loader\"\n            }\n        }, {\n            // scss、sass\n            test: /\\.(sass|scss)$/,\n            use: extractSass.extract({\n                fallback: 'style-loader',\n                use: ['css-loader', 'postcss-loader', 'sass-loader']\n            })\n        },  {\n            // 图片\n            test: /\\.(png|jpg|gif)$/,\n            use: [{\n                loader: 'url-loader',\n                options: {\n                    name: 'img/[name].[hash:4].[ext]',\n                    limit: 1024\n                }\n            }]\n        }, {\n            // 字体,图标文件\n            test: /\\.(woff|svg|eot|ttf)\\??.*$/,\n            use: {\n                loader: 'url-loader',\n                options: {\n                    name: 'fonts/[name].[hash:2].[ext]',\n                    limit: 8192\n                }\n            }\n        }]\n    },\n    plugins: [       \n        new OptimizeCssAssetsPlugin(),\n        extractSass\n    ],\n    resolve: {\n        alias: {\n            '@scripts': path.resolve(__dirname, 'src/scripts/'),\n            '@styles': path.resolve(__dirname, 'src/styles/')\n        }\n    }\n}"
  }
]