From 7e01b29bc5c6e687b3c5896e637b11dbfe9a9c82 Mon Sep 17 00:00:00 2001 From: solstice23 Date: Sun, 9 Aug 2020 04:54:17 +0800 Subject: [PATCH] 0.999.beta.1 --- README.md | 6 + archive.php | 25 +- argontheme.js | 350 ++----- assets/argon_js_merged.js | 6 +- assets/vendor/headroom/headroom.min.js | 6 +- .../jquery-pjax-plus/jquery.pjax.plus.js | 980 ++++++++++++++++++ functions.php | 15 +- header.php | 8 +- index.php | 3 + info.json | 4 +- languages/en_US.mo | Bin 38475 -> 38766 bytes languages/en_US.po | 653 ++++++------ msgboard.php | 2 + page.php | 2 + search.php | 23 +- shuoshuo.php | 25 +- sidebar.php | 4 +- single-shuoshuo.php | 2 + single.php | 2 + style.css | 12 +- timeline.php | 2 + 21 files changed, 1512 insertions(+), 618 deletions(-) create mode 100644 assets/vendor/jquery-pjax-plus/jquery.pjax.plus.js diff --git a/README.md b/README.md index e5d77397..c9029f39 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,12 @@ Argon 使用 [GPL V3.0](https://github.com/solstice23/argon-theme/blob/master/LI # 更新日志 +## 20200809 v0.999.beta.1 ++ 更换 Pjax 方案为 [jquery-pjax](https://github.com/defunkt/jquery-pjax/) 魔改后的版本 [jquery-pjax-plus](https://github.com/defunkt/jquery-pjax-plus) ++ 解决 Pjax 一些兼容性问题,修复之前 Pjax 后退定位的 BUG ++ 支持滚动时自动折叠顶栏(新增该设置项) ++ 其他一些优化 + ## 20200807 v0.994 + 支持将文章中第一张图片设为头图,支持每篇文章单独设置和跟随全局 + 更改评论区 Markdown 图片解析逻辑,增强兼容性 diff --git a/archive.php b/archive.php index 6cb2df0e..aded98db 100644 --- a/archive.php +++ b/archive.php @@ -1,19 +1,22 @@ -
-
-

- -

- +

+
+
+

+ +

+ +

+ +

+ + found_posts; ?>

- -

- - found_posts; ?> -

+
+
diff --git a/argontheme.js b/argontheme.js index 8486e3b9..c4afa0cb 100644 --- a/argontheme.js +++ b/argontheme.js @@ -269,7 +269,9 @@ $(document).on("keydown" , "#navbar_search_input_container #navbar_search_input" return; } let scrolltop = $(document).scrollTop(); - pjaxLoadUrl(argonConfig.wp_path + "?s=" + encodeURI(word) , true , 0 , scrolltop); + $.pjax({ + url: argonConfig.wp_path + "?s=" + encodeURI(word) + }); }); /*侧栏搜索*/ $(document).on("click" , "#leftbar_search_container" , function(){ @@ -293,8 +295,9 @@ $(document).on("keydown" , "#leftbar_search_input" , function(e){ return; } $("html").removeClass("leftbar-opened"); - let scrolltop = $(document).scrollTop(); - pjaxLoadUrl(argonConfig.wp_path + "?s=" + encodeURI(word) , true , 0 , scrolltop); + $.pjax({ + url: argonConfig.wp_path + "?s=" + encodeURI(word) + }); }); /*左侧栏随页面滚动浮动*/ @@ -316,6 +319,11 @@ $(document).on("keydown" , "#leftbar_search_input" , function(e){ //滚动条在顶部 不浮动状态 leftbarPart2.classList.remove('sticky'); } + if( part1OffsetTop + part1OuterHeight + 10 - scrollTop <= 20 ){//侧栏下部分是否可以随 Headroom 一起向上移动 + document.body.classList.add('leftbar-can-headroom'); + }else{ + document.body.classList.remove('leftbar-can-headroom'); + } } changeLeftbarStickyStatus(); document.addEventListener("scroll", changeLeftbarStickyStatus, {passive: true}); @@ -331,6 +339,26 @@ $(document).on("keydown" , "#leftbar_search_input" , function(e){ }).observe(leftbarPart1, {attributes: true, childList: true, subtree: true}); }(); +/*Headroom*/ +if (argonConfig.headroom){ + var headroom = new Headroom(document.querySelector("body"),{ + "tolerance" : { + up : 0, + down : 0 + }, + "offset": 0, + "classes": { + "initial": "with-headroom", + "pinned": "headroom---pinned", + "unpinned": "headroom---unpinned", + "top": "headroom---top", + "notTop": "headroom---not-top", + "bottom": "headroom---bottom", + "notBottom": "headroom---not-bottom", + "frozen": "headroom---frozen" + } + }).init(); +} /*浮动按钮栏相关 (回顶等)*/ !function(){ @@ -1074,17 +1102,16 @@ $(document).on("click" , ".show-full-comment" , function(){ $(document).on("submit" , ".post-password-form" , function(){ $("input[type='submit']", this).attr("disabled", "disabled"); let url = $(this).attr("action"); - let formdata = $(this).serialize(); - setTimeout(function(){ - pjaxLoadUrl(url , false , 0 , 0 , "POST" , formdata); - }, 1); + $.pjax.form(this, { + push: false, + replace: false + }); return false; }); /*评论分页加载*/ !function(){ $(document).on("click" , "#comments_navigation .page-item > div" , function(){ $("#comments").addClass("comments-loading"); - pjaxLoading = true; NProgress.set(0.618); url = $(this).attr("href"); $.ajax({ @@ -1093,7 +1120,6 @@ $(document).on("submit" , ".post-password-form" , function(){ dataType : "html", success : function(result){ NProgress.done(); - pjaxLoading = false; $vdom = $(result); $("#comments").html($("#comments", $vdom).html()); $("#comments").removeClass("comments-loading"); @@ -1105,14 +1131,12 @@ $(document).on("submit" , ".post-password-form" , function(){ panguInit(); }, error : function(){ - pjaxLoading = false; window.location.href = url; } }); }); $(document).on("click" , "#comments_more" , function(){ $("#comments_more").attr("disabled", "disabled"); - pjaxLoading = true; NProgress.set(0.618); url = $(this).attr("href"); $.ajax({ @@ -1124,7 +1148,6 @@ $(document).on("submit" , ".post-password-form" , function(){ dataType : "html", success : function(result){ NProgress.done(); - pjaxLoading = false; $vdom = $(result); $("#comments > .card-body > ol.comment-list").append($("#comments > .card-body > ol.comment-list", $vdom).html()); if ($("#comments_more", $vdom).length == 0){ @@ -1139,7 +1162,6 @@ $(document).on("submit" , ".post-password-form" , function(){ panguInit(); }, error : function(){ - pjaxLoading = false; window.location.href = url; } }); @@ -1230,254 +1252,82 @@ function panguInit(){ panguInit(); /*Pjax*/ -var pjaxUrlChanged , pjaxLoading = false; -function pjaxLoadUrl(url , pushstate , scrolltop , oldscrolltop , requestType , formdata){ - requestType = requestType || "GET"; - formdata = formdata || {}; - if (pjaxLoading == false){ - NProgress.remove(); - NProgress.start(); - pjaxLoading = true; - pjaxUrlChanged = false; - try{ - if (pushstate == true){ - if (url.match(/https?:\/\//) != null){ - if (window.location.href.match(/.*\:\/\/([^\/]*).*/)[1] != url.match(/.*\:\/\/([^\/]*).*/)[1]){ - throw "Cross Domain"; - } - if (window.location.href.match(/https?:\/\//)[0] != url.match(/https?:\/\//)[0]){ - throw "Different Protocols"; - } - } - } - NProgress.set(0.618); - let ajaxArgs = { - url : url, - type : requestType, - dataType : "html", - success : function(result){ - NProgress.inc(); - try{ - let vdom = document.createElement('html'); - vdom.innerHTML = result; - let $vdom = $('
'); - $vdom.html(result); - - if ($("#using_pjax" , $vdom).length == 0){ - throw "HTML struct not simular"; - } - document.body.setAttribute("class" , vdom.getElementsByTagName('body')[0].getAttribute("class")); - $("#leftbar_part2_inner").html($("#leftbar_part2_inner" , $vdom)[0].innerHTML); - $("#primary").html($("#primary" , $vdom)[0].innerHTML); - $("#leftbar_part1_menu").html($("#leftbar_part1_menu" , $vdom)[0].innerHTML); - $("#wpadminbar").html($("#wpadminbar" , $vdom).html()); - - $("#content .page-infomation-card").remove(); - if ($(".page-infomation-card" , $vdom).length > 0){ - $("#content").prepend($(".page-infomation-card" , $vdom)[0].outerHTML); - } - - if ($("#post_comment" , $vdom).length > 0){ - $("#fabtn_go_to_comment").removeClass("d-none"); - }else{ - $("#fabtn_go_to_comment").addClass("d-none"); - } - - $("body,html").animate({ - scrollTop: scrolltop - }, 600); - - NProgress.inc(); - - if (pushstate == true){ - window.history.replaceState({scrolltop: oldscrolltop , reloadonback: true , lastreloadscrolltop: null} , '' , '') - window.history.pushState('' , '' , url); - } - pjaxLoading = false; - pjaxUrlChanged = true; - - $("title").html($("title" , $vdom)[0].innerHTML); - - try{ - if (MathJax != undefined){ - MathJax.typeset(); - } - }catch (err){} - try{ - if ($("script#mathjax_v2_script" , $vdom).length > 0){ - MathJax.Hub.Typeset(); - } - }catch (err){} - try{ - if (renderMathInElement != undefined){ - renderMathInElement(document.body,{ - delimiters: [ - {left: "$$", right: "$$", display: true}, - {left: "$", right: "$", display: false}, - {left: "\\(", right: "\\)", display: false} - ] - }); - } - }catch (err){} - - lazyloadInit(); - - zoomifyInit(); - - highlightJsRender(); - - panguInit(); - - getGithubInfoCardContent(); - - showPostOutdateToast(); - - calcHumanTimesOnPage(); - - foldLongComments(); - - let scripts = $("#content script:not([no-pjax]):not(.no-pjax)" , $vdom); - for (let script of scripts){ - if (script.innerHTML.indexOf("\/*NO-PJAX*\/") == -1){ - try{ - eval(script.innerHTML); - }catch (err){} - } - } - - NProgress.done(); - - $(window).trigger("hashchange"); - $(window).trigger("scroll"); - - - if (window.location.hash != ""){ - gotoHash(window.location.hash); - } - - if (typeof(window.pjaxLoaded) == "function"){ - window.pjaxLoaded(); - } - }catch (err){ - console.log(err); - NProgress.done(); - if (pjaxUrlChanged){ - pjaxLoading = false; - window.location.reload(); - }else{ - pjaxUrlChanged = true; - pjaxLoading = false; - window.location.href = url; - } - } - }, - error : function(){ - NProgress.done(); - pjaxLoading = false; - pjaxUrlChanged = true; - window.location.href = url; - } - }; - if (requestType == "POST"){ - ajaxArgs.data = formdata; - } - $.ajax(ajaxArgs); - }catch(err){ - console.log(err); - NProgress.done(); - pjaxLoading = false; - pjaxUrlChanged = true; - window.location.href = url; - } - } -} -function removeUrlHash(url){ - if (url.indexOf('#') != -1){ - url = url.substring(0, url.indexOf('#')); +$.pjax.defaults.timeout = 10000; +$.pjax.defaults.container = ['#primary', '#leftbar_part1_menu', '#leftbar_part2_inner', '.page-infomation-card-container', '#wpadminbar']; +$.pjax.defaults.fragment = ['#primary', '#leftbar_part1_menu', '#leftbar_part2_inner', '.page-infomation-card-container', '#wpadminbar']; +$(document).pjax("a[href]:not([no-pjax]):not(.no-pjax):not([target='_blank']):not([download])") +.on('pjax:click', function(e, f, g){ + if (argonConfig.disable_pjax == true){ + e.preventDefault(); + return; } - if (url.charAt(url.length - 1) == '/'){ - url = url.substring(0, url.length - 1); + NProgress.remove(); + NProgress.start(); +}).on('pjax:afterGetContainers', function(e, f, g) { + if (g.is("#main article.post-preview a.post-title")){ + let $card = $(g.parents("article.post-preview")[0]); + $card.append("
"); + $card.addClass("post-pjax-loading"); + $("#main").addClass("post-list-pjax-loading"); + let offsetTop = $($card).offset().top - $("#main").offset().top; + $card.css("transform" , "translateY(-" + offsetTop + "px)"); + $("body,html").animate({ + scrollTop: 0 + }, 450); } - return url; -} -$(document).ready(function(){ - if ($("html").hasClass("no-pjax")){ - return; +}).on('pjax:send', function() { + NProgress.set(0.618); +}).on('pjax:beforeReplace', function(e, dom) { + if ($("#post_comment", dom[0]).length > 0){ + $("#fabtn_go_to_comment").removeClass("d-none"); + }else{ + $("#fabtn_go_to_comment").addClass("d-none"); } - window.history.scrollRestoration = "manual"; //接管浏览器滚动复位管理 - $(document).on("click" , "a[href]:not([no-pjax]):not(.no-pjax):not([target='_blank']):not([download])" , function(){ - if (pjaxLoading){ - return false; +}).on('pjax:complete', function() { + NProgress.inc(); + try{ + if (MathJax != undefined){ + MathJax.typeset(); } - let scrolltop = $(document).scrollTop(); - //对文章预览卡片使用过渡动画 - if ($(this).is("#main article.post-preview a.post-title")){ - let $card = $($(this).parents("article.post-preview")[0]); - $card.append("
"); - $card.addClass("post-pjax-loading"); - $("#main").addClass("post-list-pjax-loading"); - let offsetTop = $($card).offset().top - $("#main").offset().top; - $card.css("transform" , "translateY(-" + offsetTop + "px)"); - $("body,html").animate({ - scrollTop: 0 - }, 450); + }catch (err){} + try{ + if ($("script#mathjax_v2_script" , $vdom).length > 0){ + MathJax.Hub.Typeset(); } - //判断是否是同一个页面,只有 Hash 不同 - let now = window.location.href; - let url = this.getAttribute("href"); - if ((removeUrlHash(url) == removeUrlHash(now) || url.charAt(0) == '#') && url.indexOf("#") != -1){ - window.history.replaceState({scrolltop: scrolltop , reloadonback: /*false*/true , lastreloadscrolltop: null} , '' , url); - gotoHash(getHash(url)); - return false; + }catch (err){} + try{ + if (renderMathInElement != undefined){ + renderMathInElement(document.body,{ + delimiters: [ + {left: "$$", right: "$$", display: true}, + {left: "$", right: "$", display: false}, + {left: "\\(", right: "\\)", display: false} + ] + }); } - //Pjax 加载 - pjaxLoadUrl(url , true , 0 , scrolltop); - return false; - }); - $(window).on("popstate" , function(){ + }catch (err){} + + lazyloadInit(); + zoomifyInit(); + highlightJsRender(); + panguInit(); + getGithubInfoCardContent(); + showPostOutdateToast(); + calcHumanTimesOnPage(); + foldLongComments(); + + if (typeof(window.pjaxLoaded) == "function"){ try{ - $("article img.zoomify.zoomed").zoomify('zoomOut'); - }catch(err){} - let json = window.history.state; - if (json == null || json == ''){ - setTimeout(function(){ - pjaxLoadUrl(document.location , false , 0 , $(window).scrollTop()); - },1); - return false; - } - if (json.reloadonback != true){ - $("body,html").animate({ - scrollTop: json.scrolltop - }, 200); - }else{ - setTimeout(function(){ - pjaxLoadUrl(document.location , false , json.scrolltop , $(window).scrollTop()); - },1); - } - return false; - }); - function recordScrollTop(){ - let json = window.history.state; - if (json == null || json == ""){ - json = {}; - } - json.scrolltop = $(document).scrollTop(); - window.history.replaceState(json , '' , ''); - } - $(window).on("beforeunload" , function(){ - recordScrollTop(); - }); - //网页被载入时检测是否保存了刷新时滚动高度 - let json = window.history.state; - if (json != null){ - if (json.scrolltop != undefined){ - $(window).scrollTop(json.scrolltop); - //json.scrolltop = undefined; - //window.history.replaceState(json , '' , ''); + window.pjaxLoaded(); + }catch (err){ + console.error(err); } } + + NProgress.done(); }); + /*Tags Dialog pjax 加载后自动关闭*/ $(document).on("click" , "#blog_tags .tag" , function(){ $("#blog_tags button.close").trigger("click"); diff --git a/assets/argon_js_merged.js b/assets/argon_js_merged.js index ac89941e..00265c3d 100644 --- a/assets/argon_js_merged.js +++ b/assets/argon_js_merged.js @@ -7,7 +7,7 @@ /* assets/vendor/headindex/headindex.js */ ;(function($,window){var headIndex=(function(){function headIndex(element,options){this.settings=$.extend(true,$.fn.headIndex.default,options||{});this.element=element;this.init()}headIndex.prototype={init:function(){this.articleWrap=$(this.settings.articleWrapSelector);this.headerList=this.articleWrap.find(':header');this.indexBox=$(this.settings.indexBoxSelector);this.scrollBody=$(this.settings.scrollSelector);this.scrollWrap=$(this.settings.scrollWrap);this.manual=false;if(this.indexBox.length===0||this.headerList.length===0){return null}this.initHeader();this.event()},initHeader:function(){for(var i=0;i';this.indexBox.html(res)},event:function(){var that=this;var manualValTimer=null;this.indexBox.on('click.headindex',function(event){var target=$(event.target);if(target.hasClass(that.settings.linkClass)){event.preventDefault();var indexItem=target.parent('.'+that.settings.itemClass);that.manual=true;if(manualValTimer){clearTimeout(manualValTimer);manualValTimer=null}manualValTimer=setTimeout(function(){that.manual=false},300);that.current(indexItem);that.scrollTo(event.target.getAttribute('href'))}});$(this.scrollWrap).scroll(function(){if(that.manual)return;that.updateCurrent()});that.updateCurrent()},updateTopHeight:function(){var length=this.headerList.length;var i;if(length===0)return;if(this.headerList[0].topHeight===this.offsetTop(this.headerList[0])&&this.headerList[length-1].topHeight===this.offsetTop(this.headerList[length-1])){return}if((this.headerList[0].topHeight-this.offsetTop(this.headerList[0]))===(this.headerList[length-1].topHeight-this.offsetTop(this.headerList[length-1]))){var hx=this.offsetTop(this.headerList[0])-this.headerList[0].topHeight;for(i=0;i0){otherCurrent.removeClass(currentClass)}this.indexBox.find('ul.open').removeClass('open');subBox=indexItem.children('.'+this.settings.subItemBoxClass);if(subBox.length>0){subBox.addClass('open').slideDown()}var parentsBox=indexItem.parents('ul.'+this.settings.subItemBoxClass);if(parentsBox.length>0){parentsBox.addClass('open').slideDown()}subBox=this.indexBox.find('ul.'+this.settings.subItemBoxClass).not('.open');if(subBox.length>0){subBox.slideUp()}indexItem.addClass(currentClass)},buildHtml:function(tree){if(tree===undefined||tree.length===0)return;for(var i=0;i"+tree[i].item.innerText+"");if(tree[i].children.length!==0){this.tempHtml.push("
    ");this.buildHtml(tree[i].children);this.tempHtml.push("
")}this.tempHtml.push("")}},buildTree:function(){var current=null,tempCur,indexTree=[];for(var i=0;ithis.headerList[i].h){current=current.parent}if(current==null){current={item:this.headerList[i],parent:null,children:[],};indexTree.push(current);continue}i--}return indexTree},search:function(start,end,findValue){if(this.headerList.length===0)return null;if(end-start<=1){if(this.headerList[end].topHeightmiddleValue){start=middleIndex}else{return this.headerList[middleIndex]}return this.search(start,end,findValue)}},offsetTop:function(elem){return $(elem).offset().top-this.settings.offset},scrollTo:function(eid){this.scrollBody.stop().animate({scrollTop:this.offsetTop(document.querySelector(eid))},'fast')},updateCurrent:function(){var scrollTop=this.scrollBody.scrollTop();this.updateTopHeight();var find=this.search(0,this.headerList.length-1,scrollTop);if(!find){return}var indexItem=this.indexBox.find('a[href="#'+find.id+'"]').parent('li.'+this.settings.itemClass);this.current(indexItem)},clean:function(){if(this.element){this.element.data("headIndex",null)}},ignoreScrollEvent:function(ignore){if(ignore){this.manual=true}else{this.manual=false;this.updateCurrent()}}};headIndex.prototype.autoId=1;return headIndex})();$.fn.headIndex=function(options){return this.each(function(){var $this=$(this),instance=$this.data("headIndex");instance=new headIndex($this,options);$this.data("headIndex",instance);if($.type(options)==="string")return instance[options]()})};$.fn.headIndex.default={articleWrapSelector:".article-wrap",indexBoxSelector:".index-box",scrollSelector:'body,html',scrollWrap:window,subItemBoxClass:"index-subItem-box",itemClass:"index-item",linkClass:"index-link",offset:0,}})(jQuery,window); /* assets/vendor/headroom/headroom.min.js */ -!function(a,b){"use strict";"function"==typeof define&&define.amd?define([],b):"object"==typeof exports?module.exports=b():a.Headroom=b()}(this,function(){"use strict";function a(a){this.callback=a,this.ticking=!1}function b(a){return a&&"undefined"!=typeof window&&(a===window||a.nodeType)}function c(a){if(arguments.length<=0)throw new Error("Missing arguments in extend function");var d,e,f=a||{};for(e=1;ethis.getScrollerHeight();return b||c},toleranceExceeded:function(a,b){return Math.abs(a-this.lastKnownScrollY)>=this.tolerance[b]},shouldUnpin:function(a,b){var c=a>this.lastKnownScrollY,d=a>=this.offset;return c&&d&&b},shouldPin:function(a,b){var c=athis.lastKnownScrollY?"down":"up",c=this.toleranceExceeded(a,b);this.isOutOfBounds(a)||(a<=this.offset?this.top():this.notTop(),a+this.getViewportHeight()>=this.getScrollerHeight()?this.bottom():this.notBottom(),this.shouldUnpin(a,c)?this.unpin():this.shouldPin(a,c)&&this.pin(),this.lastKnownScrollY=a)}},e.options={tolerance:{up:0,down:0},offset:0,scroller:window,classes:{pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",bottom:"headroom--bottom",notBottom:"headroom--not-bottom",initial:"headroom"}},e.cutsTheMustard="undefined"!=typeof f&&f.rAF&&f.bind&&f.classList,e}); +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).Headroom=n()}(this,function(){"use strict";function t(){return"undefined"!=typeof window}function d(t){return function(t){return t&&t.document&&function(t){return 9===t.nodeType}(t.document)}(t)?function(t){var n=t.document,o=n.body,s=n.documentElement;return{scrollHeight:function(){return Math.max(o.scrollHeight,s.scrollHeight,o.offsetHeight,s.offsetHeight,o.clientHeight,s.clientHeight)},height:function(){return t.innerHeight||s.clientHeight||o.clientHeight},scrollY:function(){return void 0!==t.pageYOffset?t.pageYOffset:(s||o.parentNode||o).scrollTop}}}(t):function(t){return{scrollHeight:function(){return Math.max(t.scrollHeight,t.offsetHeight,t.clientHeight)},height:function(){return Math.max(t.offsetHeight,t.clientHeight)},scrollY:function(){return t.scrollTop}}}(t)}function n(t,s,e){var n,o=function(){var n=!1;try{var t={get passive(){n=!0}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){n=!1}return n}(),i=!1,r=d(t),l=r.scrollY(),a={};function c(){var t=Math.round(r.scrollY()),n=r.height(),o=r.scrollHeight();a.scrollY=t,a.lastScrollY=l,a.direction=ls.tolerance[a.direction],e(a),l=t,i=!1}function h(){i||(i=!0,n=requestAnimationFrame(c))}var u=!!o&&{passive:!0,capture:!1};return t.addEventListener("scroll",h,u),c(),{destroy:function(){cancelAnimationFrame(n),t.removeEventListener("scroll",h,u)}}}function o(t,n){n=n||{},Object.assign(this,o.options,n),this.classes=Object.assign({},o.options.classes,n.classes),this.elem=t,this.tolerance=function(t){return t===Object(t)?t:{down:t,up:t}}(this.tolerance),this.initialised=!1,this.frozen=!1}return o.prototype={constructor:o,init:function(){return o.cutsTheMustard&&!this.initialised&&(this.addClass("initial"),this.initialised=!0,setTimeout(function(t){t.scrollTracker=n(t.scroller,{offset:t.offset,tolerance:t.tolerance},t.update.bind(t))},100,this)),this},destroy:function(){this.initialised=!1,Object.keys(this.classes).forEach(this.removeClass,this),this.scrollTracker.destroy()},unpin:function(){!this.hasClass("pinned")&&this.hasClass("unpinned")||(this.addClass("unpinned"),this.removeClass("pinned"),this.onUnpin&&this.onUnpin.call(this))},pin:function(){this.hasClass("unpinned")&&(this.addClass("pinned"),this.removeClass("unpinned"),this.onPin&&this.onPin.call(this))},freeze:function(){this.frozen=!0,this.addClass("frozen")},unfreeze:function(){this.frozen=!1,this.removeClass("frozen")},top:function(){this.hasClass("top")||(this.addClass("top"),this.removeClass("notTop"),this.onTop&&this.onTop.call(this))},notTop:function(){this.hasClass("notTop")||(this.addClass("notTop"),this.removeClass("top"),this.onNotTop&&this.onNotTop.call(this))},bottom:function(){this.hasClass("bottom")||(this.addClass("bottom"),this.removeClass("notBottom"),this.onBottom&&this.onBottom.call(this))},notBottom:function(){this.hasClass("notBottom")||(this.addClass("notBottom"),this.removeClass("bottom"),this.onNotBottom&&this.onNotBottom.call(this))},shouldUnpin:function(t){return"down"===t.direction&&!t.top&&t.toleranceExceeded},shouldPin:function(t){return"up"===t.direction&&t.toleranceExceeded||t.top},addClass:function(t){this.elem.classList.add.apply(this.elem.classList,this.classes[t].split(" "))},removeClass:function(t){this.elem.classList.remove.apply(this.elem.classList,this.classes[t].split(" "))},hasClass:function(t){return this.classes[t].split(" ").every(function(t){return this.classList.contains(t)},this.elem)},update:function(t){t.isOutOfBounds||!0!==this.frozen&&(t.top?this.top():this.notTop(),t.bottom?this.bottom():this.notBottom(),this.shouldUnpin(t)?this.unpin():this.shouldPin(t)&&this.pin())}},o.options={tolerance:{up:0,down:0},offset:0,scroller:t()?window:null,classes:{frozen:"headroom--frozen",pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",bottom:"headroom--bottom",notBottom:"headroom--not-bottom",initial:"headroom"}},o.cutsTheMustard=!!(t()&&function(){}.bind&&"classList"in document.documentElement&&Object.assign&&Object.keys&&requestAnimationFrame),o}); /* assets/vendor/nprogress/nprogress.js */ ;(function(root,factory){if(typeof define==='function'&&define.amd){define(factory)}else if(typeof exports==='object'){module.exports=factory()}else{root.NProgress=factory()}})(this,function(){var NProgress={};NProgress.version='0.2.0';var Settings=NProgress.settings={minimum:0.08,easing:'ease',positionUsing:'',speed:200,trickle:true,trickleRate:0.02,trickleSpeed:800,showSpinner:true,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:'body',template:'
'};NProgress.configure=function(options){var key,value;for(key in options){value=options[key];if(value!==undefined&&options.hasOwnProperty(key))Settings[key]=value}return this};NProgress.status=null;NProgress.set=function(n){var started=NProgress.isStarted();n=clamp(n,Settings.minimum,1);NProgress.status=(n===1?null:n);var progress=NProgress.render(!started),bar=progress.querySelector(Settings.barSelector),speed=Settings.speed,ease=Settings.easing;progress.offsetWidth;queue(function(next){if(Settings.positionUsing==='')Settings.positionUsing=NProgress.getPositioningCSS();css(bar,barPositionCSS(n,speed,ease));if(n===1){css(progress,{transition:'none',opacity:1});progress.offsetWidth;setTimeout(function(){css(progress,{transition:'all '+speed+'ms linear',opacity:0});setTimeout(function(){NProgress.remove();next()},speed)},speed)}else{setTimeout(next,speed)}});return this};NProgress.isStarted=function(){return typeof NProgress.status==='number'};NProgress.start=function(){if(!NProgress.status)NProgress.set(0);var work=function(){setTimeout(function(){if(!NProgress.status)return;NProgress.trickle();work()},Settings.trickleSpeed)};if(Settings.trickle)work();return this};NProgress.done=function(force){if(!force&&!NProgress.status)return this;return NProgress.inc(0.3+0.5*Math.random()).set(1)};NProgress.inc=function(amount){var n=NProgress.status;if(!n){return NProgress.start()}else{if(typeof amount!=='number'){amount=(1-n)*clamp(Math.random()*n,0.1,0.95)}n=clamp(n+amount,0,0.994);return NProgress.set(n)}};NProgress.trickle=function(){return NProgress.inc(Math.random()*Settings.trickleRate)};(function(){var initial=0,current=0;NProgress.promise=function($promise){if(!$promise||$promise.state()==="resolved"){return this}if(current===0){NProgress.start()}initial++;current++;$promise.always(function(){current--;if(current===0){initial=0;NProgress.done()}else{NProgress.set((initial-current)/initial)}});return this}})();NProgress.render=function(fromStart){if(NProgress.isRendered())return document.getElementById('nprogress');addClass(document.documentElement,'nprogress-busy');var progress=document.createElement('div');progress.id='nprogress';progress.innerHTML=Settings.template;var bar=progress.querySelector(Settings.barSelector),perc=fromStart?'-100':toBarPerc(NProgress.status||0),parent=document.querySelector(Settings.parent),spinner;css(bar,{transition:'all 0 linear',transform:'translate3d('+perc+'%,0,0)'});if(!Settings.showSpinner){spinner=progress.querySelector(Settings.spinnerSelector);spinner&&removeElement(spinner)}if(parent!=document.body){addClass(parent,'nprogress-custom-parent')}parent.appendChild(progress);return progress};NProgress.remove=function(){removeClass(document.documentElement,'nprogress-busy');removeClass(document.querySelector(Settings.parent),'nprogress-custom-parent');var progress=document.getElementById('nprogress');progress&&removeElement(progress)};NProgress.isRendered=function(){return!!document.getElementById('nprogress')};NProgress.getPositioningCSS=function(){var bodyStyle=document.body.style;var vendorPrefix=('WebkitTransform'in bodyStyle)?'Webkit':('MozTransform'in bodyStyle)?'Moz':('msTransform'in bodyStyle)?'ms':('OTransform'in bodyStyle)?'O':'';if(vendorPrefix+'Perspective'in bodyStyle){return'translate3d'}else if(vendorPrefix+'Transform'in bodyStyle){return'translate'}else{return'margin'}};function clamp(n,min,max){if(nmax)return max;return n}function toBarPerc(n){return(-1+n)*100}function barPositionCSS(n,speed,ease){var barCSS;if(Settings.positionUsing==='translate3d'){barCSS={transform:'translate3d('+toBarPerc(n)+'%,0,0)'}}else if(Settings.positionUsing==='translate'){barCSS={transform:'translate('+toBarPerc(n)+'%,0)'}}else{barCSS={'margin-left':toBarPerc(n)+'%'}}barCSS.transition='all '+speed+'ms '+ease;return barCSS}var queue=(function(){var pending=[];function next(){var fn=pending.shift();if(fn){fn(next)}}return function(fn){pending.push(fn);if(pending.length==1)next()}})();var css=(function(){var cssPrefixes=['Webkit','O','Moz','ms'],cssProps={};function camelCase(string){return string.replace(/^-ms-/,'ms-').replace(/-([\da-z])/gi,function(match,letter){return letter.toUpperCase()})}function getVendorProp(name){var style=document.body.style;if(name in style)return name;var i=cssPrefixes.length,capName=name.charAt(0).toUpperCase()+name.slice(1),vendorName;while(i--){vendorName=cssPrefixes[i]+capName;if(vendorName in style)return vendorName}return name}function getStyleProp(name){name=camelCase(name);return cssProps[name]||(cssProps[name]=getVendorProp(name))}function applyCss(element,prop,value){prop=getStyleProp(prop);element.style[prop]=value}return function(element,properties){var args=arguments,prop,value;if(args.length==2){for(prop in properties){value=properties[prop];if(value!==undefined&&properties.hasOwnProperty(prop))applyCss(element,prop,value)}}else{applyCss(element,args[1],args[2])}}})();function hasClass(element,name){var list=typeof element=='string'?element:classList(element);return list.indexOf(' '+name+' ')>=0}function addClass(element,name){var oldList=classList(element),newList=oldList+name;if(hasClass(oldList,name))return;element.className=newList.substring(1)}function removeClass(element,name){var oldList=classList(element),newList;if(!hasClass(element,name))return;newList=oldList.replace(' '+name+' ',' ');element.className=newList.substring(1,newList.length-1)}function classList(element){return(' '+(element.className||'')+' ').replace(/\s+/gi,' ')}function removeElement(element){element&&element.parentNode&&element.parentNode.removeChild(element)}return NProgress}); /* assets/vendor/izitoast/js/iziToast.min.js */ @@ -29,4 +29,6 @@ var QRCode;!function(){function t(t){this.mode=l.MODE_8BIT_BYTE,this.data=t,this /* assets/vendor/highlight/highlight.pack.js */ !function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"==typeof exports||exports.nodeType?n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs})):e(exports)}(function(a){var f=[],i=Object.keys,_={},c={},C=!0,n=/^(no-?highlight|plain|text)$/i,l=/\blang(?:uage)?-([\w-]+)\b/i,t=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,r={case_insensitive:"cI",lexemes:"l",contains:"c",keywords:"k",subLanguage:"sL",className:"cN",begin:"b",beginKeywords:"bK",end:"e",endsWithParent:"eW",illegal:"i",excludeBegin:"eB",excludeEnd:"eE",returnBegin:"rB",returnEnd:"rE",variants:"v",IDENT_RE:"IR",UNDERSCORE_IDENT_RE:"UIR",NUMBER_RE:"NR",C_NUMBER_RE:"CNR",BINARY_NUMBER_RE:"BNR",RE_STARTERS_RE:"RSR",BACKSLASH_ESCAPE:"BE",APOS_STRING_MODE:"ASM",QUOTE_STRING_MODE:"QSM",PHRASAL_WORDS_MODE:"PWM",C_LINE_COMMENT_MODE:"CLCM",C_BLOCK_COMMENT_MODE:"CBCM",HASH_COMMENT_MODE:"HCM",NUMBER_MODE:"NM",C_NUMBER_MODE:"CNM",BINARY_NUMBER_MODE:"BNM",CSS_NUMBER_MODE:"CSSNM",REGEXP_MODE:"RM",TITLE_MODE:"TM",UNDERSCORE_TITLE_MODE:"UTM",COMMENT:"C",beginRe:"bR",endRe:"eR",illegalRe:"iR",lexemesRe:"lR",terminators:"t",terminator_end:"tE"},m="",O="Could not find the language '{}', did you forget to load/include a language module?",B={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},o="of and for in not or if then".split(" ");function x(e){return e.replace(/&/g,"&").replace(//g,">")}function g(e){return e.nodeName.toLowerCase()}function u(e){return n.test(e)}function s(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach(function(e){for(n in e)t[n]=e[n]}),t}function E(e){var a=[];return function e(n,t){for(var r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?t+=r.nodeValue.length:1===r.nodeType&&(a.push({event:"start",offset:t,node:r}),t=e(r,t),g(r).match(/br|hr|img|input/)||a.push({event:"stop",offset:t,node:r}));return t}(e,0),a}function d(e,n,t){var r=0,a="",i=[];function o(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset"}function l(e){a+=""}function u(e){("start"===e.event?c:l)(e.node)}for(;e.length||n.length;){var s=o();if(a+=x(t.substring(r,s[0].offset)),r=s[0].offset,s===e){for(i.reverse().forEach(l);u(s.splice(0,1)[0]),(s=o())===e&&s.length&&s[0].offset===r;);i.reverse().forEach(c)}else"start"===s[0].event?i.push(s[0].node):i.pop(),u(s.splice(0,1)[0])}return a+x(t.substr(r))}function R(n){return n.v&&!n.cached_variants&&(n.cached_variants=n.v.map(function(e){return s(n,{v:null},e)})),n.cached_variants?n.cached_variants:function e(n){return!!n&&(n.eW||e(n.starts))}(n)?[s(n,{starts:n.starts?s(n.starts):null})]:Object.isFrozen(n)?[s(n)]:[n]}function p(e){if(r&&!e.langApiRestored){for(var n in e.langApiRestored=!0,r)e[n]&&(e[r[n]]=e[n]);(e.c||[]).concat(e.v||[]).forEach(p)}}function v(n,r){var a={};return"string"==typeof n?t("keyword",n):i(n).forEach(function(e){t(e,n[e])}),a;function t(t,e){r&&(e=e.toLowerCase()),e.split(" ").forEach(function(e){var n=e.split("|");a[n[0]]=[t,function(e,n){return n?Number(n):function(e){return-1!=o.indexOf(e.toLowerCase())}(e)?0:1}(n[0],n[1])]})}}function S(r){function s(e){return e&&e.source||e}function f(e,n){return new RegExp(s(e),"m"+(r.cI?"i":"")+(n?"g":""))}function a(a){var i,e,o={},c=[],l={},t=1;function n(e,n){o[t]=e,c.push([e,n]),t+=function(e){return new RegExp(e.toString()+"|").exec("").length-1}(n)+1}for(var r=0;r')+n+(t?"":m)}function l(){p+=null!=d.sL?function(){var e="string"==typeof d.sL;if(e&&!_[d.sL])return x(v);var n=e?T(d.sL,v,!0,R[d.sL]):w(v,d.sL.length?d.sL:void 0);return 0")+'"');if("end"===n.type){var r=function(e){var n=e[0],t=i.substr(e.index),r=o(d,t);if(r){var a=d;for(a.skip?v+=n:(a.rE||a.eE||(v+=n),l(),a.eE&&(v=n));d.cN&&(p+=m),d.skip||d.sL||(M+=d.relevance),(d=d.parent)!==r.parent;);return r.starts&&(r.endSameAsBegin&&(r.starts.eR=r.eR),u(r.starts)),a.rE?0:n.length}}(n);if(null!=r)return r}return v+=t,t.length}var g=D(n);if(!g)throw console.error(O.replace("{}",n)),new Error('Unknown language: "'+n+'"');S(g);var E,d=t||g,R={},p="";for(E=d;E!==g;E=E.parent)E.cN&&(p=c(E.cN,"",!0)+p);var v="",M=0;try{for(var b,h,N=0;d.t.lastIndex=N,b=d.t.exec(i);)h=r(i.substring(N,b.index),b),N=b.index+h;for(r(i.substr(N)),E=d;E.parent;E=E.parent)E.cN&&(p+=m);return{relevance:M,value:p,i:!1,language:n,top:d}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{i:!0,relevance:0,value:x(i)};if(C)return{relevance:0,value:x(i),language:n,top:d,errorRaised:e};throw e}}function w(t,e){e=e||B.languages||i(_);var r={relevance:0,value:x(t)},a=r;return e.filter(D).filter(L).forEach(function(e){var n=T(e,t,!1);n.language=e,n.relevance>a.relevance&&(a=n),n.relevance>r.relevance&&(a=r,r=n)}),a.language&&(r.second_best=a),r}function M(e){return B.tabReplace||B.useBR?e.replace(t,function(e,n){return B.useBR&&"\n"===e?"
":B.tabReplace?n.replace(/\t/g,B.tabReplace):""}):e}function b(e){var n,t,r,a,i,o=function(e){var n,t,r,a,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",t=l.exec(i)){var o=D(t[1]);return o||(console.warn(O.replace("{}",t[1])),console.warn("Falling back to no-highlight mode for this block.",e)),o?t[1]:"no-highlight"}for(n=0,r=(i=i.split(/\s+/)).length;n/g,"\n"):n=e,i=n.textContent,r=o?T(o,i,!0):w(i),(t=E(n)).length&&((a=document.createElement("div")).innerHTML=r.value,r.value=d(t,E(a),i)),r.value=M(r.value),e.innerHTML=r.value,e.className=function(e,n,t){var r=n?c[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}(e.className,o,r.language),e.result={language:r.language,re:r.relevance},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.relevance}))}function h(){if(!h.called){h.called=!0;var e=document.querySelectorAll("pre code");f.forEach.call(e,b)}}var N={disableAutodetect:!0};function D(e){return e=(e||"").toLowerCase(),_[e]||_[c[e]]}function L(e){var n=D(e);return n&&!n.disableAutodetect}return a.highlight=T,a.highlightAuto=w,a.fixMarkup=M,a.highlightBlock=b,a.configure=function(e){B=s(B,e)},a.initHighlighting=h,a.initHighlightingOnLoad=function(){window.addEventListener("DOMContentLoaded",h,!1),window.addEventListener("load",h,!1)},a.registerLanguage=function(n,e){var t;try{t=e(a)}catch(e){if(console.error("Language definition for '{}' could not be registered.".replace("{}",n)),!C)throw e;console.error(e),t=N}p(_[n]=t),t.rawDefinition=e.bind(null,a),t.aliases&&t.aliases.forEach(function(e){c[e]=n})},a.listLanguages=function(){return i(_)},a.getLanguage=D,a.requireLanguage=function(e){var n=D(e);if(n)return n;throw new Error("The '{}' language is required, but not loaded.".replace("{}",e))},a.autoDetection=L,a.inherit=s,a.debugMode=function(){C=!1},a.IR=a.IDENT_RE="[a-zA-Z]\\w*",a.UIR=a.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",a.NR=a.NUMBER_RE="\\b\\d+(\\.\\d+)?",a.CNR=a.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",a.BNR=a.BINARY_NUMBER_RE="\\b(0b[01]+)",a.RSR=a.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",a.BE=a.BACKSLASH_ESCAPE={b:"\\\\[\\s\\S]",relevance:0},a.ASM=a.APOS_STRING_MODE={cN:"string",b:"'",e:"'",i:"\\n",c:[a.BE]},a.QSM=a.QUOTE_STRING_MODE={cN:"string",b:'"',e:'"',i:"\\n",c:[a.BE]},a.PWM=a.PHRASAL_WORDS_MODE={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},a.C=a.COMMENT=function(e,n,t){var r=a.inherit({cN:"comment",b:e,e:n,c:[]},t||{});return r.c.push(a.PWM),r.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),r},a.CLCM=a.C_LINE_COMMENT_MODE=a.C("//","$"),a.CBCM=a.C_BLOCK_COMMENT_MODE=a.C("/\\*","\\*/"),a.HCM=a.HASH_COMMENT_MODE=a.C("#","$"),a.NM=a.NUMBER_MODE={cN:"number",b:a.NR,relevance:0},a.CNM=a.C_NUMBER_MODE={cN:"number",b:a.CNR,relevance:0},a.BNM=a.BINARY_NUMBER_MODE={cN:"number",b:a.BNR,relevance:0},a.CSSNM=a.CSS_NUMBER_MODE={cN:"number",b:a.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},a.RM=a.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[a.BE,{b:/\[/,e:/\]/,relevance:0,c:[a.BE]}]},a.TM=a.TITLE_MODE={cN:"title",b:a.IR,relevance:0},a.UTM=a.UNDERSCORE_TITLE_MODE={cN:"title",b:a.UIR,relevance:0},a.METHOD_GUARD={b:"\\.\\s*"+a.UIR,relevance:0},[a.BE,a.ASM,a.QSM,a.PWM,a.C,a.CLCM,a.CBCM,a.HCM,a.NM,a.CNM,a.BNM,a.CSSNM,a.RM,a.TM,a.UTM,a.METHOD_GUARD].forEach(function(e){!function n(t){Object.freeze(t);var r="function"==typeof t;Object.getOwnPropertyNames(t).forEach(function(e){!t.hasOwnProperty(e)||null===t[e]||"object"!=typeof t[e]&&"function"!=typeof t[e]||r&&("caller"===e||"callee"===e||"arguments"===e)||Object.isFrozen(t[e])||n(t[e])});return t}(e)}),a});hljs.registerLanguage("swift",function(e){var i={keyword:"#available #colorLiteral #column #else #elseif #endif #file #fileLiteral #function #if #imageLiteral #line #selector #sourceLocation _ __COLUMN__ __FILE__ __FUNCTION__ __LINE__ Any as as! as? associatedtype associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},t=e.C("/\\*","\\*/",{c:["self"]}),n={cN:"subst",b:/\\\(/,e:"\\)",k:i,c:[]},r={cN:"string",c:[e.BE,n],v:[{b:/"""/,e:/"""/},{b:/"/,e:/"/}]},a={cN:"number",b:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0};return n.c=[a],{k:i,c:[r,e.CLCM,t,{cN:"type",b:"\\b[A-Z][\\wÀ-ʸ']*[!?]"},{cN:"type",b:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},a,{cN:"function",bK:"func",e:"{",eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{b://},{cN:"params",b:/\(/,e:/\)/,endsParent:!0,k:i,c:["self",a,r,e.CBCM,{b:":"}],i:/["']/}],i:/\[|%/},{cN:"class",bK:"struct protocol class extension enum",k:i,e:"\\{",eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{cN:"meta",b:"(@discardableResult|@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@objcMembers|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain|@dynamicMemberLookup|@propertyWrapper)"},{bK:"import",e:/$/,c:[e.CLCM,t]}]}});hljs.registerLanguage("less",function(e){function r(e){return{cN:"string",b:"~?"+e+".*?"+e}}function t(e,r,t){return{cN:e,b:r,relevance:t}}var a="[\\w-]+",c="("+a+"|@{"+a+"})",s=[],n=[],b={b:"\\(",e:"\\)",c:n,relevance:0};n.push(e.CLCM,e.CBCM,r("'"),r('"'),e.CSSNM,{b:"(url|data-uri)\\(",starts:{cN:"string",e:"[\\)\\n]",eE:!0}},t("number","#[0-9A-Fa-f]+\\b"),b,t("variable","@@?"+a,10),t("variable","@{"+a+"}"),t("built_in","~?`[^`]*?`"),{cN:"attribute",b:a+"\\s*:",e:":",rB:!0,eE:!0},{cN:"meta",b:"!important"});var i=n.concat({b:"{",e:"}",c:s}),l={bK:"when",eW:!0,c:[{bK:"and not"}].concat(n)},o={b:c+"\\s*:",rB:!0,e:"[;}]",relevance:0,c:[{cN:"attribute",b:c,e:":",eE:!0,starts:{eW:!0,i:"[<=$]",relevance:0,c:n}}]},u={cN:"keyword",b:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{e:"[;{}]",rE:!0,c:n,relevance:0}},v={cN:"variable",v:[{b:"@"+a+"\\s*:",relevance:15},{b:"@"+a}],starts:{e:"[;}]",rE:!0,c:i}},C={v:[{b:"[\\.#:&\\[>]",e:"[;{}]"},{b:c,e:"{"}],rB:!0,rE:!0,i:"[<='$\"]",relevance:0,c:[e.CLCM,e.CBCM,l,t("keyword","all\\b"),t("variable","@{"+a+"}"),t("selector-tag",c+"%?",0),t("selector-id","#"+c),t("selector-class","\\."+c,0),t("selector-tag","&",0),{cN:"selector-attr",b:"\\[",e:"\\]"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"\\(",e:"\\)",c:i},{b:"!important"}]};return s.push(e.CLCM,e.CBCM,u,v,o,C),{cI:!0,i:"[=>'/<($\"]",c:s}});hljs.registerLanguage("ruby",function(e){var c="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",b={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},r={cN:"doctag",b:"@[A-Za-z]+"},a={b:"#<",e:">"},n=[e.C("#","$",{c:[r]}),e.C("^\\=begin","^\\=end",{c:[r],relevance:10}),e.C("^__END__","\\n$")],s={cN:"subst",b:"#\\{",e:"}",k:b},t={cN:"string",c:[e.BE,s],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{b:/<<[-~]?'?(\w+)(?:.|\n)*?\n\s*\1\b/,rB:!0,c:[{b:/<<[-~]?'?/},{b:/\w+/,endSameAsBegin:!0,c:[e.BE,s]}]}]},i={cN:"params",b:"\\(",e:"\\)",endsParent:!0,k:b},l=[t,a,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{b:"<\\s*",c:[{b:"("+e.IR+"::)?"+e.IR}]}].concat(n)},{cN:"function",bK:"def",e:"$|;",c:[e.inherit(e.TM,{b:c}),i].concat(n)},{b:e.IR+"::"},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",relevance:0},{cN:"symbol",b:":(?!\\s)",c:[t,{b:c}],relevance:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{cN:"params",b:/\|/,e:/\|/,k:b},{b:"("+e.RSR+"|unless)\\s*",k:"unless",c:[a,{cN:"regexp",c:[e.BE,s],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(n),relevance:0}].concat(n);s.c=l;var d=[{b:/^\s*=>/,starts:{e:"$",c:i.c=l}},{cN:"meta",b:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{e:"$",c:l}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:b,i:/\/\*/,c:n.concat(d).concat(l)}});hljs.registerLanguage("lua",function(e){var t="\\[=*\\[",a="\\]=*\\]",n={b:t,e:a,c:["self"]},l=[e.C("--(?!"+t+")","$"),e.C("--"+t,a,{c:[n],relevance:10})];return{l:e.UIR,k:{literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstringmodule next pairs pcall print rawequal rawget rawset require select setfenvsetmetatable tonumber tostring type unpack xpcall arg selfcoroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},c:l.concat([{cN:"function",bK:"function",e:"\\)",c:[e.inherit(e.TM,{b:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{cN:"params",b:"\\(",eW:!0,c:l}].concat(l)},e.CNM,e.ASM,e.QSM,{cN:"string",b:t,e:a,c:[n],relevance:5}])}});hljs.registerLanguage("apache",function(e){var r={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"section",b:""},{cN:"attribute",b:/\w+/,relevance:0,k:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,relevance:0,k:{literal:"on off all"},c:[{cN:"meta",b:"\\s\\[",e:"\\]$"},{cN:"variable",b:"[\\$%]\\{",e:"\\}",c:["self",r]},r,e.QSM]}}],i:/\S/}});hljs.registerLanguage("yaml",function(e){var b="true false yes no null",a={cN:"string",relevance:0,v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/\S+/}],c:[e.BE,{cN:"template-variable",v:[{b:"{{",e:"}}"},{b:"%{",e:"}"}]}]};return{cI:!0,aliases:["yml","YAML","yaml"],c:[{cN:"attr",v:[{b:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{b:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{b:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{cN:"meta",b:"^---s*$",relevance:10},{cN:"string",b:"[\\|>]([0-9]?[+-])?[ ]*\\n( *)[\\S ]+\\n(\\2[\\S ]+\\n?)*"},{b:"<%[%=-]?",e:"[%-]?%>",sL:"ruby",eB:!0,eE:!0,relevance:0},{cN:"type",b:"!"+e.UIR},{cN:"type",b:"!!"+e.UIR},{cN:"meta",b:"&"+e.UIR+"$"},{cN:"meta",b:"\\*"+e.UIR+"$"},{cN:"bullet",b:"\\-(?=[ ]|$)",relevance:0},e.HCM,{bK:b,k:{literal:b}},{cN:"number",b:e.CNR+"\\b"},a]}});hljs.registerLanguage("plaintext",function(e){return{disableAutodetect:!0}});hljs.registerLanguage("kotlin",function(e){var t={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual trait volatile transient native default",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},a={cN:"symbol",b:e.UIR+"@"},n={cN:"subst",b:"\\${",e:"}",c:[e.CNM]},c={cN:"variable",b:"\\$"+e.UIR},r={cN:"string",v:[{b:'"""',e:'"""(?=[^"])',c:[c,n]},{b:"'",e:"'",i:/\n/,c:[e.BE]},{b:'"',e:'"',i:/\n/,c:[e.BE,c,n]}]};n.c.push(r);var i={cN:"meta",b:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UIR+")?"},l={cN:"meta",b:"@"+e.UIR,c:[{b:/\(/,e:/\)/,c:[e.inherit(r,{cN:"meta-string"})]}]},s={cN:"number",b:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0},b=e.C("/\\*","\\*/",{c:[e.CBCM]}),o={v:[{cN:"type",b:e.UIR},{b:/\(/,e:/\)/,c:[]}]},d=o;return d.v[1].c=[o],o.v[1].c=[d],{aliases:["kt"],k:t,c:[e.C("/\\*\\*","\\*/",{relevance:0,c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,b,{cN:"keyword",b:/\b(break|continue|return|this)\b/,starts:{c:[{cN:"symbol",b:/@\w+/}]}},a,i,l,{cN:"function",bK:"fun",e:"[(]|$",rB:!0,eE:!0,k:t,i:/fun\s+(<.*>)?[^\s\(]+(\s+[^\s\(]+)\s*=/,relevance:5,c:[{b:e.UIR+"\\s*\\(",rB:!0,relevance:0,c:[e.UTM]},{cN:"type",b://,k:"reified",relevance:0},{cN:"params",b:/\(/,e:/\)/,endsParent:!0,k:t,relevance:0,c:[{b:/:/,e:/[=,\/]/,eW:!0,c:[o,e.CLCM,b],relevance:0},e.CLCM,b,i,l,r,e.CNM]},b]},{cN:"class",bK:"class interface trait",e:/[:\{(]|$/,eE:!0,i:"extends implements",c:[{bK:"public protected internal private constructor"},e.UTM,{cN:"type",b://,eB:!0,eE:!0,relevance:0},{cN:"type",b:/[,:]\s*/,e:/[<\(,]|$/,eB:!0,rE:!0},i,l]},r,{cN:"meta",b:"^#!/usr/bin/env",e:"$",i:"\n"},s]}});hljs.registerLanguage("javascript",function(e){var r="<>",a="",t={b:/<[A-Za-z0-9\\._:-]+/,e:/\/[A-Za-z0-9\\._:-]+>|\/>/},c="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},s={cN:"number",v:[{b:"\\b(0[bB][01]+)n?"},{b:"\\b(0[oO][0-7]+)n?"},{b:e.CNR+"n?"}],relevance:0},o={cN:"subst",b:"\\$\\{",e:"\\}",k:n,c:[]},i={b:"html`",e:"",starts:{e:"`",rE:!1,c:[e.BE,o],sL:"xml"}},b={b:"css`",e:"",starts:{e:"`",rE:!1,c:[e.BE,o],sL:"css"}},l={cN:"string",b:"`",e:"`",c:[e.BE,o]};o.c=[e.ASM,e.QSM,i,b,l,s,e.RM];var u=o.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx","mjs","cjs"],k:n,c:[{cN:"meta",relevance:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,i,b,l,e.CLCM,e.C("/\\*\\*","\\*/",{relevance:0,c:[{cN:"doctag",b:"@[A-Za-z]+",c:[{cN:"type",b:"\\{",e:"\\}",relevance:0},{cN:"variable",b:c+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{b:/(?=[^\n])\s/,relevance:0}]}]}),e.CBCM,s,{b:/[{,\n]\s*/,relevance:0,c:[{b:c+"\\s*:",rB:!0,relevance:0,c:[{cN:"attr",b:c,relevance:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+c+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:c},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:n,c:u}]}]},{cN:"",b:/\s/,e:/\s*/,skip:!0},{v:[{b:r,e:a},{b:t.b,e:t.e}],sL:"xml",c:[{b:t.b,e:t.e,skip:!0,c:["self"]}]}],relevance:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:c}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:u}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor get set",e:/\{/,eE:!0}],i:/#(?!!)/}});hljs.registerLanguage("scss",function(e){var t="@[a-z-]+",r={cN:"variable",b:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"},i={cN:"number",b:"#[0-9A-Fa-f]+"};e.CSSNM,e.QSM,e.ASM,e.CBCM;return{cI:!0,i:"[=/|']",c:[e.CLCM,e.CBCM,{cN:"selector-id",b:"\\#[A-Za-z0-9_-]+",relevance:0},{cN:"selector-class",b:"\\.[A-Za-z0-9_-]+",relevance:0},{cN:"selector-attr",b:"\\[",e:"\\]",i:"$"},{cN:"selector-tag",b:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",relevance:0},{cN:"selector-pseudo",b:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"},{cN:"selector-pseudo",b:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"},r,{cN:"attribute",b:"\\b(src|z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",i:"[^\\s]"},{b:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{b:":",e:";",c:[r,i,e.CSSNM,e.QSM,e.ASM,{cN:"meta",b:"!important"}]},{b:"@(page|font-face)",l:t,k:"@page @font-face"},{b:"@",e:"[{;]",rB:!0,k:"and or not only",c:[{b:t,cN:"keyword"},r,e.QSM,e.ASM,i,e.CSSNM]}]}});hljs.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},s={b:"->{",e:"}"},n={v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,relevance:0}]},c=[e.BE,r,n],a=[n,e.HCM,e.C("^\\=\\w","\\=cut",{eW:!0}),s,{cN:"string",c:c,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",relevance:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",relevance:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",relevance:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",relevance:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",relevance:5},{b:"qw\\s+q",e:"q",relevance:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],relevance:0},{b:"-?\\w+\\s*\\=\\>",c:[],relevance:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",relevance:0,c:[e.HCM,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",relevance:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],relevance:0}]},{cN:"function",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",eE:!0,relevance:5,c:[e.TM]},{b:"-\\w\\b",relevance:0},{b:"^__DATA__$",e:"^__END__$",sL:"mojolicious",c:[{b:"^@@.*",e:"$",cN:"comment"}]}];return r.c=a,{aliases:["pl","pm"],l:/[\w\.]+/,k:t,c:s.c=a}});hljs.registerLanguage("go",function(e){var n={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",literal:"true false iota nil",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{aliases:["golang"],k:n,i:"")+")",c={cN:"keyword",b:"\\b[a-z\\d_]*_t\\b"},s={cN:"string",v:[{b:'(u8?|U|L)?"',e:'"',i:"\\n",c:[e.BE]},{b:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",e:"'",i:"."},{b:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\((?:.|\n)*?\)\1"/}]},n={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},o={cN:"meta",b:/#\s*[a-z]+\b/,e:/$/,k:{"meta-keyword":"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},c:[{b:/\\\n/,relevance:0},e.inherit(s,{cN:"meta-string"}),{cN:"meta-string",b:/<.*?>/,e:/$/,i:"\\n"},e.CLCM,e.CBCM]},l={cN:"title",b:t(a)+e.IR,relevance:0},u=t(a)+e.IR+"\\s*\\(",p={keyword:"int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid wchar_tshort reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignas alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict final override atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr _Bool complex _Complex imaginary _Imaginary",literal:"true false nullptr NULL"},m=[c,e.CLCM,e.CBCM,n,s],d={v:[{b:/=/,e:/;/},{b:/\(/,e:/\)/},{bK:"new throw return else",e:/;/}],k:p,c:m.concat([{b:/\(/,e:/\)/,k:p,c:m.concat(["self"]),relevance:0}]),relevance:0},b={cN:"function",b:"("+i+"[\\*&\\s]+)+"+u,rB:!0,e:/[{;=]/,eE:!0,k:p,i:/[^\w\s\*&:<>]/,c:[{b:r,k:p,relevance:0},{b:u,rB:!0,c:[l],relevance:0},{cN:"params",b:/\(/,e:/\)/,k:p,relevance:0,c:[e.CLCM,e.CBCM,s,n,c,{b:/\(/,e:/\)/,k:p,relevance:0,c:["self",e.CLCM,e.CBCM,s,n,c]}]},c,e.CLCM,e.CBCM,o]};return{aliases:["c","cc","h","c++","h++","hpp","hh","hxx","cxx"],k:p,i:"",k:p,c:["self",c]},{b:e.IR+"::",k:p},{cN:"class",bK:"class struct",e:/[{;:]/,c:[{b://,c:["self"]},e.TM]}]),exports:{preprocessor:o,strings:s,k:p}}});hljs.registerLanguage("nginx",function(e){var r={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},b={eW:!0,l:"[a-z/_]+",k:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},relevance:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,r],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[r]},{cN:"regexp",c:[e.BE,r],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",relevance:0},r]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s+{",rB:!0,e:"{",c:[{cN:"section",b:e.UIR}],relevance:0},{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"attribute",b:e.UIR,starts:b}],relevance:0}],i:"[^\\s\\}]"}});hljs.registerLanguage("xml",function(e){var c={cN:"symbol",b:"&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;"},s={b:"\\s",c:[{cN:"meta-keyword",b:"#?[a-z_][a-z1-9_-]+",i:"\\n"}]},a=e.inherit(s,{b:"\\(",e:"\\)"}),t=e.inherit(e.ASM,{cN:"meta-string"}),l=e.inherit(e.QSM,{cN:"meta-string"}),r={eW:!0,i:/`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],cI:!0,c:[{cN:"meta",b:"",relevance:10,c:[s,l,t,a,{b:"\\[",e:"\\]",c:[{cN:"meta",b:"",c:[s,a,l,t]}]}]},e.C("\x3c!--","--\x3e",{relevance:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",relevance:10},c,{cN:"meta",b:/<\?xml/,e:/\?>/,relevance:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0},{b:'b"',e:'"',skip:!0},{b:"b'",e:"'",skip:!0},e.inherit(e.ASM,{i:null,cN:null,c:null,skip:!0}),e.inherit(e.QSM,{i:null,cN:null,c:null,skip:!0})]},{cN:"tag",b:")",e:">",k:{name:"style"},c:[r],starts:{e:"",rE:!0,sL:["css","xml"]}},{cN:"tag",b:")",e:">",k:{name:"script"},c:[r],starts:{e:"<\/script>",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"tag",b:"",c:[{cN:"name",b:/[^\/><\s]+/,relevance:0},r]}]}});hljs.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",relevance:0},{cN:"bullet",b:"^\\s*([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",relevance:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"^```\\w*\\s*$",e:"^```[ ]*$"},{b:"`.+?`"},{b:"^( {4}|\\t)",e:"$",relevance:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,relevance:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],relevance:10},{b:/^\[[^\n]+\]:/,rB:!0,c:[{cN:"symbol",b:/\[/,e:/\]/,eB:!0,eE:!0},{cN:"link",b:/:\s*/,e:/$/,eB:!0}]}]}});hljs.registerLanguage("properties",function(e){var r="[ \\t\\f]*",t="("+r+"[:=]"+r+"|[ \\t\\f]+)",n="([^\\\\\\W:= \\t\\f\\n]|\\\\.)+",a="([^\\\\:= \\t\\f\\n]|\\\\.)+",c={e:t,relevance:0,starts:{cN:"string",e:/$/,relevance:0,c:[{b:"\\\\\\n"}]}};return{cI:!0,i:/\S/,c:[e.C("^\\s*[!#]","$"),{b:n+t,rB:!0,c:[{cN:"attr",b:n,endsParent:!0,relevance:0}],starts:c},{b:a+t,rB:!0,relevance:0,c:[{cN:"meta",b:a,endsParent:!0,relevance:0}],starts:c},{cN:"attr",relevance:0,b:a+r+"$"}]}});hljs.registerLanguage("python",function(e){var r={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10",built_in:"Ellipsis NotImplemented",literal:"False None True"},b={cN:"meta",b:/^(>>>|\.\.\.) /},c={cN:"subst",b:/\{/,e:/\}/,k:r,i:/#/},a={b:/\{\{/,relevance:0},l={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[e.BE,b],relevance:10},{b:/(u|b)?r?"""/,e:/"""/,c:[e.BE,b],relevance:10},{b:/(fr|rf|f)'''/,e:/'''/,c:[e.BE,b,a,c]},{b:/(fr|rf|f)"""/,e:/"""/,c:[e.BE,b,a,c]},{b:/(u|r|ur)'/,e:/'/,relevance:10},{b:/(u|r|ur)"/,e:/"/,relevance:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},{b:/(fr|rf|f)'/,e:/'/,c:[e.BE,a,c]},{b:/(fr|rf|f)"/,e:/"/,c:[e.BE,a,c]},e.ASM,e.QSM]},n={cN:"number",relevance:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},i={cN:"params",b:/\(/,e:/\)/,c:["self",b,n,l,e.HCM]};return c.c=[l,n,b],{aliases:["py","gyp","ipython"],k:r,i:/(<\/|->|\?)|=>/,c:[b,n,{bK:"if",relevance:0},l,e.HCM,{v:[{cN:"function",bK:"def"},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,i,{b:/->/,eW:!0,k:"None"}]},{cN:"meta",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}});hljs.registerLanguage("ini",function(e){var b={cN:"number",relevance:0,v:[{b:/([\+\-]+)?[\d]+_[\d_]+/},{b:e.NR}]},a=e.C();a.v=[{b:/;/,e:/$/},{b:/#/,e:/$/}];var c={cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},r={cN:"literal",b:/\bon|off|true|false|yes|no\b/},n={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",relevance:10},{b:'"""',e:'"""',relevance:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[a,{cN:"section",b:/\[+/,e:/\]+/},{b:/^[a-z0-9\[\]_\.-]+(?=\s*=\s*)/,cN:"attr",starts:{e:/$/,c:[a,{b:/\[/,e:/\]/,c:[a,r,c,n,b,"self"],relevance:0},r,c,n,b]}}]}});hljs.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"meta",relevance:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"comment",v:[{b:/Index: /,e:/$/},{b:/={3,}/,e:/$/},{b:/^\-{3}/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+{3}/,e:/$/},{b:/^\*{15}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"addition",b:"^\\!",e:"$"}]}});hljs.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],i:"\\S",c:[{b:"^"+t,e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{b:"^[A-Z]+ (.*?) "+t+"$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0},{b:t},{cN:"keyword",b:"[A-Z]+"}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{e:"$",relevance:0}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}});hljs.registerLanguage("smali",function(e){var n=["add","and","cmp","cmpg","cmpl","const","div","double","float","goto","if","int","long","move","mul","neg","new","nop","not","or","rem","return","shl","shr","sput","sub","throw","ushr","xor"];return{aliases:["smali"],c:[{cN:"string",b:'"',e:'"',relevance:0},e.C("#","$",{relevance:0}),{cN:"keyword",v:[{b:"\\s*\\.end\\s[a-zA-Z0-9]*"},{b:"^[ ]*\\.[a-zA-Z]*",relevance:0},{b:"\\s:[a-zA-Z_0-9]*",relevance:0},{b:"\\s("+["transient","constructor","abstract","final","synthetic","public","private","protected","static","bridge","system"].join("|")+")"}]},{cN:"built_in",v:[{b:"\\s("+n.join("|")+")\\s"},{b:"\\s("+n.join("|")+")((\\-|/)[a-zA-Z0-9]+)+\\s",relevance:10},{b:"\\s("+["aget","aput","array","check","execute","fill","filled","goto/16","goto/32","iget","instance","invoke","iput","monitor","packed","sget","sparse"].join("|")+")((\\-|/)[a-zA-Z0-9]+)*\\s",relevance:10}]},{cN:"class",b:"L[^(;:\n]*;",relevance:0},{b:"[vp][0-9]+"}]}});hljs.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>{}*]/,c:[{bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with",e:/;/,eW:!0,l:/[\w\.]+/,k:{keyword:"as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null unknown",built_in:"array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varchar2 varying void"},c:[{cN:"string",b:"'",e:"'",c:[{b:"''"}]},{cN:"string",b:'"',e:'"',c:[{b:'""'}]},{cN:"string",b:"`",e:"`"},e.CNM,e.CBCM,t,e.HCM]},e.CBCM,t,e.HCM]}});hljs.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},a={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]};return{aliases:["sh","zsh"],l:/\b-?[a-z\._]+\b/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,relevance:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],relevance:0},e.HCM,a,{cN:"",b:/\\"/},{cN:"string",b:/'/,e:/'/},t]}});hljs.registerLanguage("json",function(e){var i={literal:"true false null"},n=[e.CLCM,e.CBCM],c=[e.QSM,e.CNM],r={e:",",eW:!0,eE:!0,c:c,k:i},t={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(r,{b:/:/})].concat(n),i:"\\S"},a={b:"\\[",e:"\\]",c:[e.inherit(r)],i:"\\S"};return c.push(t,a),n.forEach(function(e){c.push(e)}),{c:c,k:i,i:"\\S"}});hljs.registerLanguage("rust",function(e){var t="([ui](8|16|32|64|128|size)|f(32|64))?",r="drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!";return{aliases:["rs"],k:{keyword:"abstract as async await become box break const continue crate do dyn else enum extern false final fn for if impl in let loop macro match mod move mut override priv pub ref return self Self static struct super trait true try type typeof unsafe unsized use virtual where while yield",literal:"true false Some None Ok Err",built_in:r},l:e.IR+"!?",i:""}]}});hljs.registerLanguage("java",function(e){var a="false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",t={cN:"number",b:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],k:a,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{relevance:0,c:[{b:/\w+@/,relevance:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",relevance:0},{cN:"function",b:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:a,c:[{b:e.UIR+"\\s*\\(",rB:!0,relevance:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:a,relevance:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},t,{cN:"meta",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("cs",function(e){var a={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let nameof on orderby partial remove select set value var when where yield",literal:"null false true"},i={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},c={cN:"string",b:'@"',e:'"',c:[{b:'""'}]},r=e.inherit(c,{i:/\n/}),n={cN:"subst",b:"{",e:"}",k:a},t=e.inherit(n,{i:/\n/}),s={cN:"string",b:/\$"/,e:'"',i:/\n/,c:[{b:"{{"},{b:"}}"},e.BE,t]},l={cN:"string",b:/\$@"/,e:'"',c:[{b:"{{"},{b:"}}"},{b:'""'},n]},b=e.inherit(l,{i:/\n/,c:[{b:"{{"},{b:"}}"},{b:'""'},t]});n.c=[l,s,c,e.ASM,e.QSM,i,e.CBCM],t.c=[b,s,r,e.ASM,e.QSM,i,e.inherit(e.CBCM,{i:/\n/})];var o={v:[l,s,c,e.ASM,e.QSM]},d=e.IR+"(<"+e.IR+"(\\s*,\\s*"+e.IR+")*>)?(\\[\\])?";return{aliases:["csharp","c#"],k:a,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"doctag",v:[{b:"///",relevance:0},{b:"\x3c!--|--\x3e"},{b:""}]}]}),e.CLCM,e.CBCM,{cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},o,i,{bK:"class interface",e:/[{;=]/,i:/[^\s:,]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[e.inherit(e.TM,{b:"[a-zA-Z](\\.?\\w)*"}),e.CLCM,e.CBCM]},{cN:"meta",b:"^\\s*\\[",eB:!0,e:"\\]",eE:!0,c:[{cN:"meta-string",b:/"/,e:/"/}]},{bK:"new return throw await else",relevance:0},{cN:"function",b:"("+d+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/\s*[{;=]/,eE:!0,k:a,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],relevance:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:a,relevance:0,c:[o,i,e.CBCM]},e.CLCM,e.CBCM]}]}});hljs.registerLanguage("makefile",function(e){var i={cN:"variable",v:[{b:"\\$\\("+e.UIR+"\\)",c:[e.BE]},{b:/\$[@%/,e:/$/,i:"\\n"},e.CLCM,e.CBCM]},{cN:"class",b:"("+i.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:i,l:t,c:[e.UTM]},{b:"\\."+e.UIR,relevance:0}]}});hljs.registerLanguage("shell",function(s){return{aliases:["console"],c:[{cN:"meta",b:"^\\s{0,3}[/\\w\\d\\[\\]()@-]*[>%$#]",starts:{e:"$",sL:"bash"}}]}});hljs.registerLanguage("typescript",function(e){var r="[A-Za-z$_][0-9A-Za-z$_]*",t={keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class public private protected get set super static implements enum export import declare type namespace abstract as from extends async await",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document any number boolean string void Promise"},n={cN:"meta",b:"@"+r},a={b:"\\(",e:/\)/,k:t,c:["self",e.QSM,e.ASM,e.NM]},c={cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,c:[e.CLCM,e.CBCM,n,a]},s={cN:"number",v:[{b:"\\b(0[bB][01]+)n?"},{b:"\\b(0[oO][0-7]+)n?"},{b:e.CNR+"n?"}],relevance:0},o={cN:"subst",b:"\\$\\{",e:"\\}",k:t,c:[]},i={b:"html`",e:"",starts:{e:"`",rE:!1,c:[e.BE,o],sL:"xml"}},l={b:"css`",e:"",starts:{e:"`",rE:!1,c:[e.BE,o],sL:"css"}},b={cN:"string",b:"`",e:"`",c:[e.BE,o]};return o.c=[e.ASM,e.QSM,i,l,b,s,e.RM],{aliases:["ts"],k:t,c:[{cN:"meta",b:/^\s*['"]use strict['"]/},e.ASM,e.QSM,i,l,b,e.CLCM,e.CBCM,s,{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+e.IR+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:e.IR},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,c:["self",e.CLCM,e.CBCM]}]}]}],relevance:0},{cN:"function",bK:"function",e:/[\{;]/,eE:!0,k:t,c:["self",e.inherit(e.TM,{b:r}),c],i:/%/,relevance:0},{bK:"constructor",e:/[\{;]/,eE:!0,c:["self",c]},{b:/module\./,k:{built_in:"module"},relevance:0},{bK:"module",e:/\{/,eE:!0},{bK:"interface",e:/\{/,eE:!0,k:"interface extends"},{b:/\$[(.]/},{b:"\\."+e.IR,relevance:0},n,a]}});hljs.registerLanguage("php",function(e){var c={b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},i={cN:"meta",b:/<\?(php)?|\?>/},t={cN:"string",c:[e.BE,i],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},a={v:[e.BNM,e.CNM]};return{aliases:["php","php3","php4","php5","php6","php7"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.HCM,e.C("//","$",{c:[i]}),e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},i,{cN:"keyword",b:/\$this\b/},c,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",c,e.CBCM,t,a]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},t,a]}});hljs.registerLanguage("coffeescript",function(e){var c={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={cN:"subst",b:/#\{/,e:/}/,k:c},i=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",relevance:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,r]},{b:/"/,e:/"/,c:[e.BE,r]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[r,e.HCM]},{b:"//[gim]{0,3}(?=\\W)",relevance:0},{b:/\/(?![ *]).*?(?![\\]).\/[gim]{0,3}(?=\W)/}]},{b:"@"+n},{sL:"javascript",eB:!0,eE:!0,v:[{b:"```",e:"```"},{b:"`",e:"`"}]}];r.c=i;var s=e.inherit(e.TM,{b:n}),t="(\\(.*\\))?\\s*\\B[-=]>",a={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:c,c:["self"].concat(i)}]};return{aliases:["coffee","cson","iced"],k:c,i:/\/\*/,c:i.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+n+"\\s*=\\s*"+t,e:"[-=]>",rB:!0,c:[s,a]},{b:/[:\(,=]\s*/,relevance:0,c:[{cN:"function",b:t,e:"[-=]>",rB:!0,c:[a]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[s]},s]},{b:n+":",e:":",rB:!0,rE:!0,relevance:0}])}});hljs.registerLanguage("css",function(e){var c={b:/(?:[A-Z\_\.\-]+|--[a-zA-Z0-9_-]+)\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM,e.CSSNM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$",c:[e.ASM,e.QSM]},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(page|font-face)",l:"@[a-z-]+",k:"@page @font-face"},{b:"@",e:"[{;]",i:/:/,rB:!0,c:[{cN:"keyword",b:/@\-?\w[\w]*(\-\w+)*/},{b:/\s/,eW:!0,eE:!0,relevance:0,k:"and or not only",c:[{b:/[a-z-]+:/,cN:"attribute"},e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:"[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,c]}]}}); /* assets/vendor/highlight/highlightjs-line-numbers.min.js */ -!function(e,n){"use strict";function t(e){for(var n=e;n;){if(n.className&&n.className.indexOf("hljs-ln-code")!==-1)return!0;n=n.parentNode}return!1}function r(e){for(var n=e;"TABLE"!==n.nodeName;)n=n.parentNode;return n}function o(e){for(var n=e.toString(),t=e.anchorNode;"TD"!==t.nodeName;)t=t.parentNode;for(var o=e.focusNode;"TD"!==o.nodeName;)o=o.parentNode;var a=parseInt(t.dataset.lineNumber),i=parseInt(o.dataset.lineNumber);if(a!=i){var l=t.textContent,s=o.textContent;if(a>i){var c=a;a=i,i=c,c=l,l=s,s=c}for(;0!==n.indexOf(l);)l=l.slice(1);for(;n.lastIndexOf(s)===-1;)s=s.slice(0,-1);for(var d=l,u=r(t),f=a+1;fn){for(var r="",o=0,a=t.length;o
{6}',[L,j,y,T,b,o+1,t[o].length>0?t[o]:" "]);return m('{1}
',[N,r])}return e}function f(e){var n=e.childNodes;for(var t in n)if(n.hasOwnProperty(t)){var r=n[t];p(r.textContent)>0&&(r.childNodes.length>0?f(r):h(r.parentNode))}}function h(e){var n=e.className;if(/hljs-/.test(n)){for(var t=v(e.innerHTML),r=0,o="";r0?t[r]:" ";o+=m('{1}\n',[n,a])}e.innerHTML=o.trim()}}function v(e){return 0===e.length?[]:e.split(x)}function p(e){return(e.trim().match(x)||[]).length}function g(n){e.setTimeout(n,0)}function m(e,n){return e.replace(/\{(\d+)\}/g,function(e,t){return n[t]?n[t]:e})}var N="hljs-ln",L="hljs-ln-line",b="hljs-ln-code",j="hljs-ln-numbers hljs",y="hljs-ln-n",T="data-line-number",x=/\r\n|\r|\n/g;e.hljs?(e.hljs.initLineNumbersOnLoad=i,e.hljs.lineNumbersBlock=s,e.hljs.lineNumbersValue=c,a()):e.console.error("highlight.js not detected!"),document.addEventListener("copy",function(e){var n=window.getSelection();if(t(n.anchorNode)){var r;r=window.navigator.userAgent.indexOf("Edge")!==-1?o(n):n.toString(),e.clipboardData.setData("text/plain",r),e.preventDefault()}})}(window,document); \ No newline at end of file +!function(e,n){"use strict";function t(e){for(var n=e;n;){if(n.className&&n.className.indexOf("hljs-ln-code")!==-1)return!0;n=n.parentNode}return!1}function r(e){for(var n=e;"TABLE"!==n.nodeName;)n=n.parentNode;return n}function o(e){for(var n=e.toString(),t=e.anchorNode;"TD"!==t.nodeName;)t=t.parentNode;for(var o=e.focusNode;"TD"!==o.nodeName;)o=o.parentNode;var a=parseInt(t.dataset.lineNumber),i=parseInt(o.dataset.lineNumber);if(a!=i){var l=t.textContent,s=o.textContent;if(a>i){var c=a;a=i,i=c,c=l,l=s,s=c}for(;0!==n.indexOf(l);)l=l.slice(1);for(;n.lastIndexOf(s)===-1;)s=s.slice(0,-1);for(var d=l,u=r(t),f=a+1;fn){for(var r="",o=0,a=t.length;o
{6}',[L,j,y,T,b,o+1,t[o].length>0?t[o]:" "]);return m('{1}
',[N,r])}return e}function f(e){var n=e.childNodes;for(var t in n)if(n.hasOwnProperty(t)){var r=n[t];p(r.textContent)>0&&(r.childNodes.length>0?f(r):h(r.parentNode))}}function h(e){var n=e.className;if(/hljs-/.test(n)){for(var t=v(e.innerHTML),r=0,o="";r0?t[r]:" ";o+=m('{1}\n',[n,a])}e.innerHTML=o.trim()}}function v(e){return 0===e.length?[]:e.split(x)}function p(e){return(e.trim().match(x)||[]).length}function g(n){e.setTimeout(n,0)}function m(e,n){return e.replace(/\{(\d+)\}/g,function(e,t){return n[t]?n[t]:e})}var N="hljs-ln",L="hljs-ln-line",b="hljs-ln-code",j="hljs-ln-numbers hljs",y="hljs-ln-n",T="data-line-number",x=/\r\n|\r|\n/g;e.hljs?(e.hljs.initLineNumbersOnLoad=i,e.hljs.lineNumbersBlock=s,e.hljs.lineNumbersValue=c,a()):e.console.error("highlight.js not detected!"),document.addEventListener("copy",function(e){var n=window.getSelection();if(t(n.anchorNode)){var r;r=window.navigator.userAgent.indexOf("Edge")!==-1?o(n):n.toString(),e.clipboardData.setData("text/plain",r),e.preventDefault()}})}(window,document); +/* assets/vendor/jquery-pjax-plus/jquery.pjax.plus.js */ +!function(t){function e(e,r,a){return a=j(r,a),this.on("click.pjax",e,function(e){var r=a;r.container||((r=t.extend({},a)).container=t(this).attr("data-pjax")),n(e,r)})}function n(e,n,r){r=j(n,r);var a=e.currentTarget,i=t(a);if("A"!==a.tagName.toUpperCase())throw"$.fn.pjax or $.pjax.click requires an anchor element";if(!(e.which>1||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||location.protocol!==a.protocol||location.hostname!==a.hostname||a.href.indexOf("#")>-1&&g(a)==g(location)||e.isDefaultPrevented())){var s={url:a.href,container:i.attr("data-pjax"),target:a},c=t.extend({},s,r),u=t.Event("pjax:click");i.trigger(u,[c,i]),u.isDefaultPrevented()||(o(c,i),e.preventDefault(),i.trigger("pjax:clicked",[c]))}}function r(e,n,r){r=j(n,r);var a=e.currentTarget,i=t(a);if("FORM"!==a.tagName.toUpperCase())throw"$.pjax.submit requires a form element";var s={type:(i.attr("method")||"GET").toUpperCase(),url:i.attr("action"),container:i.attr("data-pjax"),target:a};if("GET"!==s.type&&void 0!==window.FormData)s.data=new FormData(a),s.processData=!1,s.contentType=!1;else{if(i.find(":file").length)return;s.data=i.serializeArray()}o(t.extend({},s,r),i),e.preventDefault()}function a(e,n){var r=t(e);if("FORM"!==e.tagName.toUpperCase())throw"$.pjax.submit requires a form element";var a={type:(r.attr("method")||"GET").toUpperCase(),url:r.attr("action"),container:r.attr("data-pjax"),target:e};if("GET"!==a.type&&void 0!==window.FormData)a.data=new FormData(e),a.processData=!1,a.contentType=!1;else{if(r.find(":file").length)return;a.data=r.serializeArray()}o(t.extend({},a,n),r)}function o(e,n){e=t.extend(!0,{},t.ajaxSettings,o.defaults,e),t.isFunction(e.url)&&(e.url=e.url());var r,a=y(e.url).hash,s=(t.type(e.container),new Array),u=new Array;for(i in e.context=new Array,e.container){let n=t(e.container[i]);e.context.push(n),s.push(n),u.push(n.clone())}if(!s.length)throw"the container selector '"+e.container+"' did not match anything";function l(n,r,a){a||(a={}),a.relatedTarget=e.target;var i=t.Event(n,a);return s[0].trigger(i,r),!i.isDefaultPrevented()}void 0!==n&&n.trigger("pjax:afterGetContainers",[e,n]),e.data||(e.data={}),t.isArray(e.data),e.beforeSend=function(t,n){if("GET"!==n.type&&(n.timeout=0),t.setRequestHeader("X-PJAX","true"),t.setRequestHeader("X-PJAX-Container",e.container),!l("pjax:beforeSend",[t,n]))return!1;n.timeout>0&&(r=setTimeout(function(){l("pjax:timeout",[t,e])&&t.abort("timeout")},n.timeout),n.timeout=0);var i=y(n.url);a&&(i.hash=a),e.requestUrl=x(i)},e.complete=function(t,n){r&&clearTimeout(r),l("pjax:complete",[t,n,e]),l("pjax:end",[t,e])},e.error=function(t,n,r){var a=T("",t,e),i=l("pjax:error",[t,n,r,e]);"GET"==e.type&&"abort"!==n&&i&&c(a.url)},e.success=function(n,r,u){var p=o.state,f="function"==typeof t.pjax.defaults.version?t.pjax.defaults.version():t.pjax.defaults.version,d=u.getResponseHeader("X-PJAX-Version"),h=T(n,u,e),v=y(h.url);if(a&&(v.hash=a,h.url=v.href),f&&d&&f!==d)c(h.url);else if(h.contents&&null!=h.contents[0]){if(o.state={id:e.id||m(),url:h.url,title:h.title,container:e.container,fragment:e.fragment,timeout:e.timeout},(e.push||e.replace)&&window.history.replaceState(o.state,h.title,h.url),t.contains(s[0],document.activeElement))try{document.activeElement.blur()}catch(t){}for(i in h.title&&(document.title=h.title),l("pjax:beforeReplace",[h.contents,e],{state:o.state,previousState:p}),s)s[i].html(h.contents[i]);var x=s[0].find("input[autofocus], textarea[autofocus]").last()[0];x&&document.activeElement!==x&&x.focus(),function(e){if(!e)return;var n=t("script[src]");e.each(function(){var e=this.src,r=n.filter(function(){return this.src===e});if(!r.length){var a=document.createElement("script"),i=t(this).attr("type");i&&(a.type=i),a.src=t(this).attr("src"),document.head.appendChild(a)}})}(h.scripts);var g=e.scrollTo;if(a){var j=decodeURIComponent(a.slice(1)),w=document.getElementById(j)||document.getElementsByName(j)[0];w&&(g=t(w).offset().top)}"number"==typeof g&&t("html, body").animate({scrollTop:g},600),l("pjax:success",[n,r,u,e])}else c(h.url)},o.state||(o.state={id:m(),url:window.location.href,title:document.title,container:e.container,fragment:e.fragment,timeout:e.timeout},window.history.replaceState(o.state,document.title)),h(o.xhr),o.options=e;var p,f,d=o.xhr=t.ajax(e);return d.readyState>0&&(e.push&&!e.replace&&(p=o.state.id,f=[e.container,v(u)],E[p]=f,S.push(p),C(A,0),C(S,o.defaults.maxCacheLength),window.history.pushState(null,"",e.requestUrl)),l("pjax:start",[d,e]),l("pjax:send",[d,e])),o.xhr}function s(e,n){var r={url:window.location.href,push:!1,replace:!0,scrollTo:!1};return o(t.extend(r,j(e,n)))}function c(t){window.history.replaceState(null,"",o.state.url),window.location.replace(t)}var u=!0,l=window.location.href,p=window.history.state;function f(e){u||h(o.xhr);var n,r=o.state,a=e.state;if(a&&a.container){if(u&&l==a.url)return;if(r){if(r.id===a.id)return;n=r.id",{method:"GET"===r?"GET":"POST",action:n,style:"display:none"});"GET"!==r&&"POST"!==r&&a.append(t("",{type:"hidden",name:"_method",value:r.toLowerCase()}));var i=e.data;if("string"==typeof i)t.each(i.split("&"),function(e,n){var r=n.split("=");a.append(t("",{type:"hidden",name:r[0],value:r[1]}))});else if(t.isArray(i))t.each(i,function(e,n){a.append(t("",{type:"hidden",name:n.name,value:n.value}))});else if("object"==typeof i){var o;for(o in i)a.append(t("",{type:"hidden",name:o,value:i[o]}))}t(document.body).append(a),a.submit()}function h(e){e&&e.readyState<4&&(e.onreadystatechange=t.noop,e.abort())}function m(){return(new Date).getTime()}function v(e){var n=new Array;for(i in e)n.push(e[i].clone()),n[i].find("script").each(function(){this.src||t._data(this,"globalEval",!1)}),n[i]=n[i].contents();return n}function x(t){return t.search=t.search.replace(/([?&])(_pjax|_)=[^&]*/g,"").replace(/^&/,""),t.href.replace(/\?($|#)/,"$1")}function y(t){var e=document.createElement("a");return e.href=t,e}function g(t){return t.href.replace(/#.*/,"")}function j(e,n){return e&&n?((n=t.extend({},n)).container=e,n):t.isPlainObject(e)?e:{container:e}}function w(t,e){return t.filter(e).add(t.find(e))}function b(e){return t.parseHTML(e,document,!0)}function T(e,n,r){var a,o,s={},c=/]*>([\s\S.]*)<\/body>/i)[0]));var l=e.match(/]*>([\s\S.]*)<\/head>/i);a=null!=l?t(b(l[0])):o}else a=o=t(b(e));if(0===o.length)return s;if(s.title=w(a,"title").last().text(),s.contents=new Array,r.fragment){var p=new Array;for(i in r.fragment)p.push(o),s.contents.push(null),"body"!==p[i]&&(p[i]=w(p[i],r.fragment[i]).first()),p[i].length&&(s.contents[i]="body"===r.fragment[i]?p[i]:p[i].contents(),s.title||(s.title=p[i].attr("title")||p[i].data("title")))}else c||s.contents.push(o);if(null==s.contents[0])return s;if(s.contents)for(i in s.contents)null!=s.contents[i]&&(s.contents[i]=s.contents[i].not(function(){return t(this).is("title")}),s.contents[i].find("title").remove(),s.scripts=w(s.contents[i],"script[src]").remove(),s.contents[i]=s.contents[i].not(s.scripts[i]));return s.title&&(s.title=t.trim(s.title)),s}p&&p.container&&(o.state=p),"state"in window.history&&(u=!1);var E={},A=[],S=[];function C(t,e){for(;t.length>e;)delete E[t.shift()]}function P(){return t("meta").filter(function(){var e=t(this).attr("http-equiv");return e&&"X-PJAX-VERSION"===e.toUpperCase()}).attr("content")}function D(){t.fn.pjax=e,t.pjax=o,t.pjax.form=a,t.pjax.enable=t.noop,t.pjax.disable=G,t.pjax.click=n,t.pjax.submit=r,t.pjax.reload=s,t.pjax.defaults={timeout:650,push:!0,replace:!1,type:"GET",dataType:"html",scrollTo:0,maxCacheLength:20,version:P},t(window).on("popstate.pjax",f)}function G(){t.fn.pjax=function(){return this},t.pjax=d,t.pjax.enable=D,t.pjax.disable=t.noop,t.pjax.click=t.noop,t.pjax.submit=t.noop,t.pjax.reload=function(){window.location.reload()},t(window).off("popstate.pjax",f)}t.event.props&&t.inArray("state",t.event.props)<0?t.event.props.push("state"):"state"in t.Event.prototype||t.event.addProp("state"),t.support.pjax=window.history&&window.history.pushState&&window.history.replaceState&&!navigator.userAgent.match(/((iPod|iPhone|iPad).+\bOS\s+[1-4]\D|WebApps\/.+CFNetwork)/),t.support.pjax?D():G()}(jQuery); \ No newline at end of file diff --git a/assets/vendor/headroom/headroom.min.js b/assets/vendor/headroom/headroom.min.js index 39a74e34..433069fd 100644 --- a/assets/vendor/headroom/headroom.min.js +++ b/assets/vendor/headroom/headroom.min.js @@ -1,7 +1,7 @@ /*! - * headroom.js v0.9.4 - Give your page some headroom. Hide your header until you need it - * Copyright (c) 2017 Nick Williams - http://wicky.nillia.ms/headroom.js + * headroom.js v0.11.0 - Give your page some headroom. Hide your header until you need it + * Copyright (c) 2020 Nick Williams - http://wicky.nillia.ms/headroom.js * License: MIT */ -!function(a,b){"use strict";"function"==typeof define&&define.amd?define([],b):"object"==typeof exports?module.exports=b():a.Headroom=b()}(this,function(){"use strict";function a(a){this.callback=a,this.ticking=!1}function b(a){return a&&"undefined"!=typeof window&&(a===window||a.nodeType)}function c(a){if(arguments.length<=0)throw new Error("Missing arguments in extend function");var d,e,f=a||{};for(e=1;ethis.getScrollerHeight();return b||c},toleranceExceeded:function(a,b){return Math.abs(a-this.lastKnownScrollY)>=this.tolerance[b]},shouldUnpin:function(a,b){var c=a>this.lastKnownScrollY,d=a>=this.offset;return c&&d&&b},shouldPin:function(a,b){var c=athis.lastKnownScrollY?"down":"up",c=this.toleranceExceeded(a,b);this.isOutOfBounds(a)||(a<=this.offset?this.top():this.notTop(),a+this.getViewportHeight()>=this.getScrollerHeight()?this.bottom():this.notBottom(),this.shouldUnpin(a,c)?this.unpin():this.shouldPin(a,c)&&this.pin(),this.lastKnownScrollY=a)}},e.options={tolerance:{up:0,down:0},offset:0,scroller:window,classes:{pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",bottom:"headroom--bottom",notBottom:"headroom--not-bottom",initial:"headroom"}},e.cutsTheMustard="undefined"!=typeof f&&f.rAF&&f.bind&&f.classList,e}); \ No newline at end of file +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).Headroom=n()}(this,function(){"use strict";function t(){return"undefined"!=typeof window}function d(t){return function(t){return t&&t.document&&function(t){return 9===t.nodeType}(t.document)}(t)?function(t){var n=t.document,o=n.body,s=n.documentElement;return{scrollHeight:function(){return Math.max(o.scrollHeight,s.scrollHeight,o.offsetHeight,s.offsetHeight,o.clientHeight,s.clientHeight)},height:function(){return t.innerHeight||s.clientHeight||o.clientHeight},scrollY:function(){return void 0!==t.pageYOffset?t.pageYOffset:(s||o.parentNode||o).scrollTop}}}(t):function(t){return{scrollHeight:function(){return Math.max(t.scrollHeight,t.offsetHeight,t.clientHeight)},height:function(){return Math.max(t.offsetHeight,t.clientHeight)},scrollY:function(){return t.scrollTop}}}(t)}function n(t,s,e){var n,o=function(){var n=!1;try{var t={get passive(){n=!0}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){n=!1}return n}(),i=!1,r=d(t),l=r.scrollY(),a={};function c(){var t=Math.round(r.scrollY()),n=r.height(),o=r.scrollHeight();a.scrollY=t,a.lastScrollY=l,a.direction=ls.tolerance[a.direction],e(a),l=t,i=!1}function h(){i||(i=!0,n=requestAnimationFrame(c))}var u=!!o&&{passive:!0,capture:!1};return t.addEventListener("scroll",h,u),c(),{destroy:function(){cancelAnimationFrame(n),t.removeEventListener("scroll",h,u)}}}function o(t,n){n=n||{},Object.assign(this,o.options,n),this.classes=Object.assign({},o.options.classes,n.classes),this.elem=t,this.tolerance=function(t){return t===Object(t)?t:{down:t,up:t}}(this.tolerance),this.initialised=!1,this.frozen=!1}return o.prototype={constructor:o,init:function(){return o.cutsTheMustard&&!this.initialised&&(this.addClass("initial"),this.initialised=!0,setTimeout(function(t){t.scrollTracker=n(t.scroller,{offset:t.offset,tolerance:t.tolerance},t.update.bind(t))},100,this)),this},destroy:function(){this.initialised=!1,Object.keys(this.classes).forEach(this.removeClass,this),this.scrollTracker.destroy()},unpin:function(){!this.hasClass("pinned")&&this.hasClass("unpinned")||(this.addClass("unpinned"),this.removeClass("pinned"),this.onUnpin&&this.onUnpin.call(this))},pin:function(){this.hasClass("unpinned")&&(this.addClass("pinned"),this.removeClass("unpinned"),this.onPin&&this.onPin.call(this))},freeze:function(){this.frozen=!0,this.addClass("frozen")},unfreeze:function(){this.frozen=!1,this.removeClass("frozen")},top:function(){this.hasClass("top")||(this.addClass("top"),this.removeClass("notTop"),this.onTop&&this.onTop.call(this))},notTop:function(){this.hasClass("notTop")||(this.addClass("notTop"),this.removeClass("top"),this.onNotTop&&this.onNotTop.call(this))},bottom:function(){this.hasClass("bottom")||(this.addClass("bottom"),this.removeClass("notBottom"),this.onBottom&&this.onBottom.call(this))},notBottom:function(){this.hasClass("notBottom")||(this.addClass("notBottom"),this.removeClass("bottom"),this.onNotBottom&&this.onNotBottom.call(this))},shouldUnpin:function(t){return"down"===t.direction&&!t.top&&t.toleranceExceeded},shouldPin:function(t){return"up"===t.direction&&t.toleranceExceeded||t.top},addClass:function(t){this.elem.classList.add.apply(this.elem.classList,this.classes[t].split(" "))},removeClass:function(t){this.elem.classList.remove.apply(this.elem.classList,this.classes[t].split(" "))},hasClass:function(t){return this.classes[t].split(" ").every(function(t){return this.classList.contains(t)},this.elem)},update:function(t){t.isOutOfBounds||!0!==this.frozen&&(t.top?this.top():this.notTop(),t.bottom?this.bottom():this.notBottom(),this.shouldUnpin(t)?this.unpin():this.shouldPin(t)&&this.pin())}},o.options={tolerance:{up:0,down:0},offset:0,scroller:t()?window:null,classes:{frozen:"headroom--frozen",pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",bottom:"headroom--bottom",notBottom:"headroom--not-bottom",initial:"headroom"}},o.cutsTheMustard=!!(t()&&function(){}.bind&&"classList"in document.documentElement&&Object.assign&&Object.keys&&requestAnimationFrame),o}); \ No newline at end of file diff --git a/assets/vendor/jquery-pjax-plus/jquery.pjax.plus.js b/assets/vendor/jquery-pjax-plus/jquery.pjax.plus.js new file mode 100644 index 00000000..436e57d0 --- /dev/null +++ b/assets/vendor/jquery-pjax-plus/jquery.pjax.plus.js @@ -0,0 +1,980 @@ +/*! + * Copyright 2012, Chris Wanstrath + * Released under the MIT License + * https://github.com/defunkt/jquery-pjax + */ + +(function($){ + +// When called on a container with a selector, fetches the href with +// ajax into the container or with the data-pjax attribute on the link +// itself. +// +// Tries to make sure the back button and ctrl+click work the way +// you'd expect. +// +// Exported as $.fn.pjax +// +// Accepts a jQuery ajax options object that may include these +// pjax specific options: +// +// +// container - String selector for the element where to place the response body. +// push - Whether to pushState the URL. Defaults to true (of course). +// replace - Want to use replaceState instead? That's cool. +// +// For convenience the second parameter can be either the container or +// the options object. +// +// Returns the jQuery object +function fnPjax(selector, container, options) { + options = optionsFor(container, options) + return this.on('click.pjax', selector, function(event) { + var opts = options + if (!opts.container) { + opts = $.extend({}, options) + opts.container = $(this).attr('data-pjax') + } + handleClick(event, opts) + }) +} + +// Public: pjax on click handler +// +// Exported as $.pjax.click. +// +// event - "click" jQuery.Event +// options - pjax options +// +// Examples +// +// $(document).on('click', 'a', $.pjax.click) +// // is the same as +// $(document).pjax('a') +// +// Returns nothing. +function handleClick(event, container, options) { + options = optionsFor(container, options) + + var link = event.currentTarget + var $link = $(link) + + if (link.tagName.toUpperCase() !== 'A') + throw "$.fn.pjax or $.pjax.click requires an anchor element" + + // Middle click, cmd click, and ctrl click should open + // links in a new tab as normal. + if ( event.which > 1 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey ) + return + + // Ignore cross origin links + if ( location.protocol !== link.protocol || location.hostname !== link.hostname ) + return + + // Ignore case when a hash is being tacked on the current URL + if ( link.href.indexOf('#') > -1 && stripHash(link) == stripHash(location) ) + return + + // Ignore event with default prevented + if (event.isDefaultPrevented()) + return + + var defaults = { + url: link.href, + container: $link.attr('data-pjax'), + target: link + } + + var opts = $.extend({}, defaults, options) + var clickEvent = $.Event('pjax:click') + $link.trigger(clickEvent, [opts, $link]) + + if (!clickEvent.isDefaultPrevented()) { + pjax(opts, $link) + event.preventDefault() + $link.trigger('pjax:clicked', [opts]) + } +} + +// Public: pjax on form submit handler +// +// Exported as $.pjax.submit +// +// event - "click" jQuery.Event +// options - pjax options +// +// Examples +// +// $(document).on('submit', 'form', function(event) { +// $.pjax.submit(event, '[data-pjax-container]') +// }) +// +// Returns nothing. +function handleSubmit(event, container, options) { + options = optionsFor(container, options) + + var form = event.currentTarget + var $form = $(form) + + if (form.tagName.toUpperCase() !== 'FORM') + throw "$.pjax.submit requires a form element" + + var defaults = { + type: ($form.attr('method') || 'GET').toUpperCase(), + url: $form.attr('action'), + container: $form.attr('data-pjax'), + target: form + } + + if (defaults.type !== 'GET' && window.FormData !== undefined) { + defaults.data = new FormData(form) + defaults.processData = false + defaults.contentType = false + } else { + // Can't handle file uploads, exit + if ($form.find(':file').length) { + return + } + + // Fallback to manually serializing the fields + defaults.data = $form.serializeArray() + } + + pjax($.extend({}, defaults, options), $form) + + event.preventDefault() +} + +function pjaxForm(form, options) { + var $form = $(form) + + if (form.tagName.toUpperCase() !== 'FORM') + throw "$.pjax.submit requires a form element" + + var defaults = { + type: ($form.attr('method') || 'GET').toUpperCase(), + url: $form.attr('action'), + container: $form.attr('data-pjax'), + target: form + } + + if (defaults.type !== 'GET' && window.FormData !== undefined) { + defaults.data = new FormData(form) + defaults.processData = false + defaults.contentType = false + } else { + // Can't handle file uploads, exit + if ($form.find(':file').length) { + return + } + + // Fallback to manually serializing the fields + defaults.data = $form.serializeArray() + } + + pjax($.extend({}, defaults, options), $form) +} + +// Loads a URL with ajax, puts the response body inside a container, +// then pushState()'s the loaded URL. +// +// Works just like $.ajax in that it accepts a jQuery ajax +// settings object (with keys like url, type, data, etc). +// +// Accepts these extra keys: +// +// container - String selector for where to stick the response body. +// push - Whether to pushState the URL. Defaults to true (of course). +// replace - Want to use replaceState instead? That's cool. +// +// Use it just like $.ajax: +// +// var xhr = $.pjax({ url: this.href, container: '#main' }) +// console.log( xhr.readyState ) +// +// Returns whatever $.ajax returns. +function pjax(options, $tar) { + options = $.extend(true, {}, $.ajaxSettings, pjax.defaults, options) + + if ($.isFunction(options.url)) { + options.url = options.url() + } + + var hash = parseURL(options.url).hash + + var containerType = $.type(options.container) + /*if (containerType !== 'string') { + throw "expected string value for 'container' option; got " + containerType + }*/ + var contexts = new Array(), contextsClone = new Array() + options.context = new Array() + for (i in options.container) { + let tmp=$(options.container[i]) + options.context.push(tmp) + contexts.push(tmp) + contextsClone.push(tmp.clone()) + } + if (!contexts.length) { + throw "the container selector '" + options.container + "' did not match anything" + } + if (typeof($tar) != "undefined"){ + $tar.trigger('pjax:afterGetContainers', [options, $tar]) + } + // We want the browser to maintain two separate internal caches: one + // for pjax'd partial page loads and one for normal page loads. + // Without adding this secret parameter, some browsers will often + // confuse the two. + if (!options.data) options.data = {} + if ($.isArray(options.data)) { + //options.data.push({name: '_pjax', value: options.container[0]}) + } else { + //options.data._pjax = options.container[0] + } + + function fire(type, args, props) { + if (!props) props = {} + props.relatedTarget = options.target + var event = $.Event(type, props) + /*if (typeof($tar) != "undefined"){ + $tar.trigger(event, args) + }else{ + for (let context of contexts){ + context.trigger(event, args) + } + }*/ + contexts[0].trigger(event, args) + return !event.isDefaultPrevented() + } + + var timeoutTimer + + options.beforeSend = function(xhr, settings) { + // No timeout for non-GET requests + // Its not safe to request the resource again with a fallback method. + if (settings.type !== 'GET') { + settings.timeout = 0 + } + + xhr.setRequestHeader('X-PJAX', 'true') + xhr.setRequestHeader('X-PJAX-Container', options.container) + + if (!fire('pjax:beforeSend', [xhr, settings])) + return false + + if (settings.timeout > 0) { + timeoutTimer = setTimeout(function() { + if (fire('pjax:timeout', [xhr, options])) + xhr.abort('timeout') + }, settings.timeout) + + // Clear timeout setting so jquerys internal timeout isn't invoked + settings.timeout = 0 + } + + var url = parseURL(settings.url) + if (hash) url.hash = hash + options.requestUrl = stripInternalParams(url) + } + + options.complete = function(xhr, textStatus) { + if (timeoutTimer) + clearTimeout(timeoutTimer) + + fire('pjax:complete', [xhr, textStatus, options]) + + fire('pjax:end', [xhr, options]) + } + + options.error = function(xhr, textStatus, errorThrown) { + var container = extractContainer("", xhr, options) + + var allowed = fire('pjax:error', [xhr, textStatus, errorThrown, options]) + if (options.type == 'GET' && textStatus !== 'abort' && allowed) { + locationReplace(container.url) + } + } + + options.success = function(data, status, xhr) { + var previousState = pjax.state + + // If $.pjax.defaults.version is a function, invoke it first. + // Otherwise it can be a static string. + var currentVersion = typeof $.pjax.defaults.version === 'function' ? + $.pjax.defaults.version() : + $.pjax.defaults.version + + var latestVersion = xhr.getResponseHeader('X-PJAX-Version') + + var container = extractContainer(data, xhr, options) + + var url = parseURL(container.url) + if (hash) { + url.hash = hash + container.url = url.href + } + + // If there is a layout version mismatch, hard load the new url + if (currentVersion && latestVersion && currentVersion !== latestVersion) { + locationReplace(container.url) + return + } + + // If the new response is missing a body, hard load the page + if (!container.contents || container.contents[0] == null) { + locationReplace(container.url) + return + } + + pjax.state = { + id: options.id || uniqueId(), + url: container.url, + title: container.title, + container: options.container, + fragment: options.fragment, + timeout: options.timeout + } + + if (options.push || options.replace) { + window.history.replaceState(pjax.state, container.title, container.url) + } + + // Only blur the focus if the focused element is within the container. + var blurFocus = $.contains(contexts[0], document.activeElement) + + // Clear out any focused controls before inserting new page contents. + if (blurFocus) { + try { + document.activeElement.blur() + } catch (e) { /* ignore */ } + } + + if (container.title) document.title = container.title + + fire('pjax:beforeReplace', [container.contents, options], { + state: pjax.state, + previousState: previousState + }) + + for (i in contexts){ + contexts[i].html(container.contents[i]) + } + + // FF bug: Won't autofocus fields that are inserted via JS. + // This behavior is incorrect. So if theres no current focus, autofocus + // the last field. + // + // http://www.w3.org/html/wg/drafts/html/master/forms.html + var autofocusEl = contexts[0].find('input[autofocus], textarea[autofocus]').last()[0] + if (autofocusEl && document.activeElement !== autofocusEl) { + autofocusEl.focus() + } + + executeScriptTags(container.scripts) + + var scrollTo = options.scrollTo + + // Ensure browser scrolls to the element referenced by the URL anchor + if (hash) { + var name = decodeURIComponent(hash.slice(1)) + var target = document.getElementById(name) || document.getElementsByName(name)[0] + if (target) scrollTo = $(target).offset().top + } + + if (typeof scrollTo == 'number'){ + //$(window).scrollTop(scrollTo) + $("html, body").animate({ + scrollTop: scrollTo + }, 600) + } + + fire('pjax:success', [data, status, xhr, options]) + } + + + // Initialize pjax.state for the initial page load. Assume we're + // using the container and options of the link we're loading for the + // back button to the initial page. This ensures good back button + // behavior. + if (!pjax.state) { + pjax.state = { + id: uniqueId(), + url: window.location.href, + title: document.title, + container: options.container, + fragment: options.fragment, + timeout: options.timeout + } + window.history.replaceState(pjax.state, document.title) + } + + // Cancel the current request if we're already pjaxing + abortXHR(pjax.xhr) + + pjax.options = options + var xhr = pjax.xhr = $.ajax(options) + if (xhr.readyState > 0) { + if (options.push && !options.replace) { + // Cache current container element before replacing it + cachePush(pjax.state.id, [options.container, cloneContents(contextsClone)]) + window.history.pushState(null, "", options.requestUrl) + } + + fire('pjax:start', [xhr, options]) + fire('pjax:send', [xhr, options]) + } + + return pjax.xhr +} + +// Public: Reload current page with pjax. +// +// Returns whatever $.pjax returns. +function pjaxReload(container, options) { + var defaults = { + url: window.location.href, + push: false, + replace: true, + scrollTo: false + } + + return pjax($.extend(defaults, optionsFor(container, options))) +} + +// Internal: Hard replace current state with url. +// +// Work for around WebKit +// https://bugs.webkit.org/show_bug.cgi?id=93506 +// +// Returns nothing. +function locationReplace(url) { + window.history.replaceState(null, "", pjax.state.url) + window.location.replace(url) +} + + +var initialPop = true +var initialURL = window.location.href +var initialState = window.history.state + +// Initialize $.pjax.state if possible +// Happens when reloading a page and coming forward from a different +// session history. +if (initialState && initialState.container) { + pjax.state = initialState +} + +// Non-webkit browsers don't fire an initial popstate event +if ('state' in window.history) { + initialPop = false +} + +// popstate handler takes care of the back and forward buttons +// +// You probably shouldn't use pjax on pages with other pushState +// stuff yet. +function onPjaxPopstate(event) { + + // Hitting back or forward should override any pending PJAX request. + if (!initialPop) { + abortXHR(pjax.xhr) + } + + var previousState = pjax.state + var state = event.state + var direction + + if (state && state.container) { + // When coming forward from a separate history session, will get an + // initial pop with a state we are already at. Skip reloading the current + // page. + if (initialPop && initialURL == state.url) return + + if (previousState) { + // If popping back to the same state, just skip. + // Could be clicking back from hashchange rather than a pushState. + if (previousState.id === state.id) return + + // Since state IDs always increase, we can deduce the navigation direction + direction = previousState.id < state.id ? 'forward' : 'back' + } + + var cache = cacheMapping[state.id] || [] + var containerSelector = cache[0] || state.container + var container = Array(), contents = cache[1] + for (i in containerSelector){ + container.push($(containerSelector[i])) + } + if (container.length && container[0].length) { + if (previousState) { + // Cache current container before replacement and inform the + // cache which direction the history shifted. + cachePop(direction, previousState.id, [containerSelector, cloneContents(container)]) + } + + var popstateEvent = $.Event('pjax:popstate', { + state: state, + direction: direction + }) + for (i in container){ + container[i].trigger(popstateEvent) + } + + + var options = { + id: state.id, + url: state.url, + container: containerSelector, + push: false, + fragment: state.fragment, + timeout: state.timeout, + scrollTo: false + } + + if (contents) { + for (i in container){ + container[i].trigger('pjax:start', [null, options]) + + pjax.state = state + if (state.title) document.title = state.title + var beforeReplaceEvent = $.Event('pjax:beforeReplace', { + state: state, + previousState: previousState + }) + container[i].trigger(beforeReplaceEvent, [contents, options]) + container[i].html(contents[i]) + + container[i].trigger('pjax:end', [null, options]) + } + } else { + pjax(options) + } + + // Force reflow/relayout before the browser tries to restore the + // scroll position. + container[0].offsetHeight // eslint-disable-line no-unused-expressions + } else { + locationReplace(location.href) + } + } + initialPop = false +} + +// Fallback version of main pjax function for browsers that don't +// support pushState. +// +// Returns nothing since it retriggers a hard form submission. +function fallbackPjax(options) { + var url = $.isFunction(options.url) ? options.url() : options.url, + method = options.type ? options.type.toUpperCase() : 'GET' + + var form = $('
', { + method: method === 'GET' ? 'GET' : 'POST', + action: url, + style: 'display:none' + }) + + if (method !== 'GET' && method !== 'POST') { + form.append($('', { + type: 'hidden', + name: '_method', + value: method.toLowerCase() + })) + } + + var data = options.data + if (typeof data === 'string') { + $.each(data.split('&'), function(index, value) { + var pair = value.split('=') + form.append($('', {type: 'hidden', name: pair[0], value: pair[1]})) + }) + } else if ($.isArray(data)) { + $.each(data, function(index, value) { + form.append($('', {type: 'hidden', name: value.name, value: value.value})) + }) + } else if (typeof data === 'object') { + var key + for (key in data) + form.append($('', {type: 'hidden', name: key, value: data[key]})) + } + + $(document.body).append(form) + form.submit() +} + +// Internal: Abort an XmlHttpRequest if it hasn't been completed, +// also removing its event handlers. +function abortXHR(xhr) { + if ( xhr && xhr.readyState < 4) { + xhr.onreadystatechange = $.noop + xhr.abort() + } +} + +// Internal: Generate unique id for state object. +// +// Use a timestamp instead of a counter since ids should still be +// unique across page loads. +// +// Returns Number. +function uniqueId() { + return (new Date).getTime() +} + +function cloneContents(container) { + var cloned = new Array() + for (i in container){ + cloned.push(container[i].clone()) + cloned[i].find('script').each(function(){ + if (!this.src) $._data(this, 'globalEval', false) + }) + cloned[i] = cloned[i].contents() + } + // Unmark script tags as already being eval'd so they can get executed again + // when restored from cache. HAXX: Uses jQuery internal method. + return cloned +} + +// Internal: Strip internal query params from parsed URL. +// +// Returns sanitized url.href String. +function stripInternalParams(url) { + url.search = url.search.replace(/([?&])(_pjax|_)=[^&]*/g, '').replace(/^&/, '') + return url.href.replace(/\?($|#)/, '$1') +} + +// Internal: Parse URL components and returns a Locationish object. +// +// url - String URL +// +// Returns HTMLAnchorElement that acts like Location. +function parseURL(url) { + var a = document.createElement('a') + a.href = url + return a +} + +// Internal: Return the `href` component of given URL object with the hash +// portion removed. +// +// location - Location or HTMLAnchorElement +// +// Returns String +function stripHash(location) { + return location.href.replace(/#.*/, '') +} + +// Internal: Build options Object for arguments. +// +// For convenience the first parameter can be either the container or +// the options object. +// +// Examples +// +// optionsFor('#container') +// // => {container: '#container'} +// +// optionsFor('#container', {push: true}) +// // => {container: '#container', push: true} +// +// optionsFor({container: '#container', push: true}) +// // => {container: '#container', push: true} +// +// Returns options Object. +function optionsFor(container, options) { + if (container && options) { + options = $.extend({}, options) + options.container = container + return options + } else if ($.isPlainObject(container)) { + return container + } else { + return {container: container} + } +} + +// Internal: Filter and find all elements matching the selector. +// +// Where $.fn.find only matches descendants, findAll will test all the +// top level elements in the jQuery object as well. +// +// elems - jQuery object of Elements +// selector - String selector to match +// +// Returns a jQuery object. +function findAll(elems, selector) { + return elems.filter(selector).add(elems.find(selector)) +} + +function parseHTML(html) { + return $.parseHTML(html, document, true) +} + +// Internal: Extracts container and metadata from response. +// +// 1. Extracts X-PJAX-URL header if set +// 2. Extracts inline tags +// 3. Builds response Element and extracts fragment if set +// +// data - String response data +// xhr - XHR response +// options - pjax options Object +// +// Returns an Object with url, title, and contents keys. +function extractContainer(data, xhr, options) { + var obj = {}, fullDocument = /<html/i.test(data) + + // Prefer X-PJAX-URL header if it was set, otherwise fallback to + // using the original requested url. + var serverUrl = xhr.getResponseHeader('X-PJAX-URL') + obj.url = serverUrl ? stripInternalParams(parseURL(serverUrl)) : options.requestUrl + + var $head, $body + // Attempt to parse response html into elements + if (fullDocument) { + $body = $(parseHTML(data.match(/<body[^>]*>([\s\S.]*)<\/body>/i)[0])) + var head = data.match(/<head[^>]*>([\s\S.]*)<\/head>/i) + $head = head != null ? $(parseHTML(head[0])) : $body + } else { + $head = $body = $(parseHTML(data)) + } + + // If response data is empty, return fast + if ($body.length === 0) + return obj + + // If there's a <title> tag in the header, use it as + // the page's title. + obj.title = findAll($head, 'title').last().text() + + obj.contents = new Array() + if (options.fragment) { + var $fragment = new Array() + for (i in options.fragment){ + $fragment.push($body) + obj.contents.push(null) + // If they specified a fragment, look for it in the response + // and pull it out. + if ($fragment[i] !== 'body') { + $fragment[i] = findAll($fragment[i], options.fragment[i]).first() + } + if ($fragment[i].length) { + obj.contents[i] = options.fragment[i] === 'body' ? $fragment[i] : $fragment[i].contents() + + // If there's no title, look for data-title and title attributes + // on the fragment + if (!obj.title) + obj.title = $fragment[i].attr('title') || $fragment[i].data('title') + } + } + } else if (!fullDocument) { + obj.contents.push($body) + } + + // Clean up any <title> tags + if (obj.contents[0] == null){ + //locationReplace(obj.url) + return obj + } + if (obj.contents) { + for (i in obj.contents){ + if (obj.contents[i] == null){ + continue + } + + // Remove any parent title elements + obj.contents[i] = obj.contents[i].not(function() { return $(this).is('title') }) + + // Then scrub any titles from their descendants + obj.contents[i].find('title').remove() + // Gather all script[src] elements + obj.scripts = findAll(obj.contents[i], 'script[src]').remove() + obj.contents[i] = obj.contents[i].not(obj.scripts[i]) + } + + } + + // Trim any whitespace off the title + if (obj.title) obj.title = $.trim(obj.title) + + return obj +} + +// Load an execute scripts using standard script request. +// +// Avoids jQuery's traditional $.getScript which does a XHR request and +// globalEval. +// +// scripts - jQuery object of script Elements +// +// Returns nothing. +function executeScriptTags(scripts) { + if (!scripts) return + + var existingScripts = $('script[src]') + + scripts.each(function() { + var src = this.src + var matchedScripts = existingScripts.filter(function() { + return this.src === src + }) + if (matchedScripts.length) return + + var script = document.createElement('script') + var type = $(this).attr('type') + if (type) script.type = type + script.src = $(this).attr('src') + document.head.appendChild(script) + }) +} + +// Internal: History DOM caching class. +var cacheMapping = {} +var cacheForwardStack = [] +var cacheBackStack = [] + +// Push previous state id and container contents into the history +// cache. Should be called in conjunction with `pushState` to save the +// previous container contents. +// +// id - State ID Number +// value - DOM Element to cache +// +// Returns nothing. +function cachePush(id, value) { + cacheMapping[id] = value + cacheBackStack.push(id) + + // Remove all entries in forward history stack after pushing a new page. + trimCacheStack(cacheForwardStack, 0) + + // Trim back history stack to max cache length. + trimCacheStack(cacheBackStack, pjax.defaults.maxCacheLength) +} + +// Shifts cache from directional history cache. Should be +// called on `popstate` with the previous state id and container +// contents. +// +// direction - "forward" or "back" String +// id - State ID Number +// value - DOM Element to cache +// +// Returns nothing. +function cachePop(direction, id, value) { + var pushStack, popStack + cacheMapping[id] = value + + if (direction === 'forward') { + pushStack = cacheBackStack + popStack = cacheForwardStack + } else { + pushStack = cacheForwardStack + popStack = cacheBackStack + } + + pushStack.push(id) + id = popStack.pop() + if (id) delete cacheMapping[id] + + // Trim whichever stack we just pushed to to max cache length. + trimCacheStack(pushStack, pjax.defaults.maxCacheLength) +} + +// Trim a cache stack (either cacheBackStack or cacheForwardStack) to be no +// longer than the specified length, deleting cached DOM elements as necessary. +// +// stack - Array of state IDs +// length - Maximum length to trim to +// +// Returns nothing. +function trimCacheStack(stack, length) { + while (stack.length > length) + delete cacheMapping[stack.shift()] +} + +// Public: Find version identifier for the initial page load. +// +// Returns String version or undefined. +function findVersion() { + return $('meta').filter(function() { + var name = $(this).attr('http-equiv') + return name && name.toUpperCase() === 'X-PJAX-VERSION' + }).attr('content') +} + +// Install pjax functions on $.pjax to enable pushState behavior. +// +// Does nothing if already enabled. +// +// Examples +// +// $.pjax.enable() +// +// Returns nothing. +function enable() { + $.fn.pjax = fnPjax + $.pjax = pjax + $.pjax.form = pjaxForm + $.pjax.enable = $.noop + $.pjax.disable = disable + $.pjax.click = handleClick + $.pjax.submit = handleSubmit + $.pjax.reload = pjaxReload + $.pjax.defaults = { + timeout: 650, + push: true, + replace: false, + type: 'GET', + dataType: 'html', + scrollTo: 0, + maxCacheLength: 20, + version: findVersion + } + $(window).on('popstate.pjax', onPjaxPopstate) +} + +// Disable pushState behavior. +// +// This is the case when a browser doesn't support pushState. It is +// sometimes useful to disable pushState for debugging on a modern +// browser. +// +// Examples +// +// $.pjax.disable() +// +// Returns nothing. +function disable() { + $.fn.pjax = function() { return this } + $.pjax = fallbackPjax + $.pjax.enable = enable + $.pjax.disable = $.noop + $.pjax.click = $.noop + $.pjax.submit = $.noop + $.pjax.reload = function() { window.location.reload() } + + $(window).off('popstate.pjax', onPjaxPopstate) +} + + +// Add the state property to jQuery's event object so we can use it in +// $(window).bind('popstate') +if ($.event.props && $.inArray('state', $.event.props) < 0) { + $.event.props.push('state') +} else if (!('state' in $.Event.prototype)) { + $.event.addProp('state') +} + +// Is pjax supported by this browser? +$.support.pjax = + window.history && window.history.pushState && window.history.replaceState && + // pushState isn't reliable on iOS until 5. + !navigator.userAgent.match(/((iPod|iPhone|iPad).+\bOS\s+[1-4]\D|WebApps\/.+CFNetwork)/) + +if ($.support.pjax) { + enable() +} else { + disable() +} + +})(jQuery) diff --git a/functions.php b/functions.php index c6f8a17c..d99e10dc 100644 --- a/functions.php +++ b/functions.php @@ -2460,6 +2460,18 @@ function themeoptions_page(){ </td> </tr> <tr><th class="subtitle"><h2><?php _e('顶栏', 'argon');?></h2></th></tr> + <tr><th class="subtitle"><h3><?php _e('自动折叠顶栏', 'argon');?></h3></th></tr> + <tr> + <th><label><?php _e('滚动时自动折叠顶栏', 'argon');?></label></th> + <td> + <select name="argon_enable_headroom"> + <?php $argon_enable_headroom = get_option('argon_enable_headroom'); ?> + <option value="false" <?php if ($argon_enable_headroom=='false'){echo 'selected';} ?>>关闭</option> + <option value="true" <?php if ($argon_enable_headroom=='true'){echo 'selected';} ?>>开启</option> + </select> + <p class="description"><?php _e('在页面向下滚动时隐藏顶栏,向上滚动时显示顶栏', 'argon');?></p> + </td> + </tr> <tr><th class="subtitle"><h3><?php _e('标题', 'argon');?></h3></th></tr> <tr> <th><label><?php _e('顶栏标题', 'argon');?></label></th> @@ -3768,6 +3780,7 @@ function argon_update_themeoptions(){ argon_update_option('argon_article_meta'); argon_update_option('argon_fold_long_comments'); argon_update_option('argon_first_image_as_thumbnail_by_default'); + argon_update_option('argon_enable_headroom'); //LazyLoad 相关 argon_update_option('argon_enable_lazyload'); @@ -3807,7 +3820,7 @@ function argon_update_themeoptions(){ //隐藏 admin 管理条 -/*show_admin_bar(false);*/ +show_admin_bar(false); /*说说*/ add_action('init', 'init_shuoshuo'); diff --git a/header.php b/header.php index 83d140bd..5ade8324 100644 --- a/header.php +++ b/header.php @@ -1,9 +1,6 @@ <!DOCTYPE html> <?php $htmlclasses = ""; - if (get_option('argon_pjax_disabled') == "true"){ - $htmlclasses .= "no-pjax "; - } if (get_option('argon_page_layout') == "single"){ $htmlclasses .= "single-column "; } @@ -116,7 +113,9 @@ <?php } else { ?> lazyload: false, <?php } ?> - fold_long_comments: <?php echo get_option('argon_fold_long_comments', 'false'); ?> + fold_long_comments: <?php echo get_option('argon_fold_long_comments', 'false'); ?>, + disable_pjax: <?php echo get_option('argon_pjax_disabled', 'false'); ?>, + headroom: <?php echo get_option('argon_enable_headroom', 'false'); ?> } </script> <script> @@ -248,7 +247,6 @@ function toggleAmoledDarkMode(){ <body <?php body_class(); ?>> <?php /*wp_body_open();*/ ?> -<div id="using_pjax" style="display: none;"></div> <div id="toolbar"> <header class="header-global"> <nav id="navbar-main" class="navbar navbar-main navbar-expand-lg navbar-transparent navbar-light bg-primary headroom--not-bottom headroom--not-top headroom--pinned"> diff --git a/index.php b/index.php index 32c4101c..c4b20648 100644 --- a/index.php +++ b/index.php @@ -1,4 +1,7 @@ <?php get_header(); ?> + +<div class="page-infomation-card-container"></div> + <?php get_sidebar(); ?> <div id="primary" class="content-area"> diff --git a/info.json b/info.json index f79fc9e9..9118dd9b 100644 --- a/info.json +++ b/info.json @@ -1,5 +1,5 @@ { - "version" : "0.994", + "version" : "0.999.beta.1", "details_url" : "https://github.com/solstice23/argon-theme/releases", - "download_url" : "https://github.com/solstice23/argon-theme/releases/download/v0.994/argon.zip" + "download_url" : "https://github.com/solstice23/argon-theme/releases/download/v0.999.beta.1/argon.zip" } diff --git a/languages/en_US.mo b/languages/en_US.mo index f40b430c27bf25c57db96017a2b3a96fadcea7d7..7b798139d0acb20665792199dffe0c76d1e4fb8f 100644 GIT binary patch delta 10400 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 delta 10118 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 EKjO^O$^ZZW diff --git a/languages/en_US.po b/languages/en_US.po index 519361b4..4545d4bf 100644 --- a/languages/en_US.po +++ b/languages/en_US.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: argon\n" -"POT-Creation-Date: 2020-08-07 04:07+0800\n" -"PO-Revision-Date: 2020-08-07 04:09+0800\n" +"POT-Creation-Date: 2020-08-09 04:40+0800\n" +"PO-Revision-Date: 2020-08-09 04:41+0800\n" "Last-Translator: \n" "Language-Team: solstice23\n" "Language: en_US\n" @@ -19,11 +19,11 @@ msgstr "" "X-Poedit-SearchPathExcluded-2: theme-update-checker\n" "X-Poedit-SearchPathExcluded-3: argontheme.js\n" -#: archive.php:13 +#: archive.php:14 msgid "篇文章" msgstr "Posts" -#: comments.php:12 functions.php:3132 header.php:489 +#: comments.php:12 functions.php:3144 header.php:491 #: template-parts/shuoshuo-operations.php:5 msgid "评论" msgstr "Comments" @@ -36,7 +36,7 @@ msgstr "No Comments" msgid "本文评论已关闭" msgstr "Commenting is disabled" -#: comments.php:68 functions.php:3145 +#: comments.php:68 functions.php:3157 msgid "发送评论" msgstr "Send Comment" @@ -266,7 +266,7 @@ msgstr "" "Alert: The copyright in the footer may have been modified. You should " "maintain the GitHub Repo link of the theme." -#: functions.php:1558 functions.php:2771 +#: functions.php:1558 functions.php:2783 msgid "显示字数和预计阅读时间" msgstr "Display word count and estimated reading time" @@ -274,9 +274,9 @@ msgstr "Display word count and estimated reading time" msgid "跟随全局设置" msgstr "Follow general" -#: functions.php:1562 functions.php:2646 functions.php:2656 functions.php:2667 -#: functions.php:2732 functions.php:2776 functions.php:2818 functions.php:2829 -#: functions.php:3258 functions.php:3346 +#: functions.php:1562 functions.php:2658 functions.php:2668 functions.php:2679 +#: functions.php:2744 functions.php:2788 functions.php:2830 functions.php:2841 +#: functions.php:3270 functions.php:3358 msgid "不显示" msgstr "Hide" @@ -288,11 +288,11 @@ msgstr "Show meta of word count and estimated reading time" msgid "Meta 中隐藏发布时间和分类" msgstr "Hide post time and categories in meta" -#: functions.php:1568 functions.php:3151 +#: functions.php:1568 functions.php:3163 msgid "不隐藏" msgstr "Show" -#: functions.php:1569 functions.php:3152 +#: functions.php:1569 functions.php:3164 msgid "隐藏" msgstr "Hide" @@ -309,11 +309,11 @@ msgstr "" msgid "使用文章中第一张图作为头图" msgstr "Use the first image of article as the thumbnail by default" -#: functions.php:1576 functions.php:3358 +#: functions.php:1576 functions.php:3370 msgid "使用" msgstr "Use" -#: functions.php:1577 functions.php:2434 functions.php:3019 functions.php:3357 +#: functions.php:1577 functions.php:2434 functions.php:3031 functions.php:3369 msgid "不使用" msgstr "Do not use" @@ -349,7 +349,7 @@ msgstr "or find options in right catalog" msgid "全局" msgstr "General" -#: functions.php:2277 header.php:536 +#: functions.php:2277 header.php:538 msgid "主题色" msgstr "Theme Color" @@ -426,7 +426,7 @@ msgstr "" msgid "允许用户自定义主题色(位于博客浮动操作栏设置菜单中)" msgstr "Allow custom theme color (at blog floating settings menu)" -#: functions.php:2334 header.php:492 header.php:501 +#: functions.php:2334 header.php:494 header.php:503 msgid "夜间模式" msgstr "Dark Mode" @@ -498,11 +498,11 @@ msgstr ". Recommend :" msgid "卡片阴影" msgstr "Card Shadow" -#: functions.php:2374 header.php:516 +#: functions.php:2374 header.php:518 msgid "浅阴影" msgstr "Small" -#: functions.php:2378 header.php:516 +#: functions.php:2378 header.php:518 msgid "深阴影" msgstr "Large" @@ -542,7 +542,7 @@ msgstr "" "If using three columns, please go to the \"Appearance - Widgets\" setting " "page to configure the content of the right column." -#: functions.php:2410 header.php:508 +#: functions.php:2410 header.php:510 msgid "字体" msgstr "Font" @@ -596,130 +596,143 @@ msgid "顶栏" msgstr "Toolbar" #: functions.php:2463 +msgid "自动折叠顶栏" +msgstr "Auto Fold Toolbar" + +#: functions.php:2465 +msgid "滚动时自动折叠顶栏" +msgstr "Auto Fold Toolbar When Scrolling" + +#: functions.php:2472 +msgid "在页面向下滚动时隐藏顶栏,向上滚动时显示顶栏" +msgstr "" +"Hide the top bar when scrolling down the page, and show it when scrolling up." + +#: functions.php:2475 msgid "标题" msgstr "Title" -#: functions.php:2465 +#: functions.php:2477 msgid "顶栏标题" msgstr "Toolbar Title" -#: functions.php:2468 functions.php:2491 functions.php:2606 +#: functions.php:2480 functions.php:2503 functions.php:2618 msgid "留空则显示博客名称" msgstr "If this option is empty, theme will show the blog name." -#: functions.php:2471 +#: functions.php:2483 msgid "顶栏图标" msgstr "Toolbar Icon" -#: functions.php:2473 +#: functions.php:2485 msgid "图标地址" msgstr "Icon URL" -#: functions.php:2476 +#: functions.php:2488 msgid "图片地址,留空则不显示" msgstr "The URL of the icon, if this option is empty, it will not show." -#: functions.php:2480 +#: functions.php:2492 msgid "图标链接" msgstr "Icon Link" -#: functions.php:2483 +#: functions.php:2495 msgid "点击图标后会跳转到的链接,留空则不跳转" msgstr "" "The link that will jump to when clicking the icon, if this option is empty, " "it will not jump when clicking." -#: functions.php:2486 +#: functions.php:2498 msgid "顶部 Banner (封面)" msgstr "Banner" -#: functions.php:2488 +#: functions.php:2500 msgid "Banner 标题" msgstr "Banner Title" -#: functions.php:2495 +#: functions.php:2507 msgid "Banner 副标题" msgstr "Banner Subtitle" -#: functions.php:2498 +#: functions.php:2510 msgid "显示在 Banner 标题下,留空则不显示" msgstr "" "Show below the banner title, if this option is empty, it will not show." -#: functions.php:2502 +#: functions.php:2514 msgid "Banner 背景图 (地址)" msgstr "Banner Background URL" -#: functions.php:2505 +#: functions.php:2517 msgid "需带上 http(s) ,留空则显示默认背景" msgstr "With http(s) prefix, leave it blank to show the default background." -#: functions.php:2505 functions.php:2613 +#: functions.php:2517 functions.php:2625 msgid "输入" msgstr "Input" -#: functions.php:2505 +#: functions.php:2517 msgid "调用必应每日一图" msgstr "to use everyday background of Bing." -#: functions.php:2509 +#: functions.php:2521 msgid "Banner 渐变背景样式" msgstr "Banner gradient background style" -#: functions.php:2513 functions.php:2514 functions.php:2515 functions.php:2516 -#: functions.php:2517 functions.php:2518 functions.php:2519 functions.php:2528 -#: functions.php:2529 functions.php:2530 functions.php:2531 functions.php:2532 -#: functions.php:2533 functions.php:2534 +#: functions.php:2525 functions.php:2526 functions.php:2527 functions.php:2528 +#: functions.php:2529 functions.php:2530 functions.php:2531 functions.php:2540 +#: functions.php:2541 functions.php:2542 functions.php:2543 functions.php:2544 +#: functions.php:2545 functions.php:2546 msgid "样式" msgstr "Style" -#: functions.php:2523 +#: functions.php:2535 msgid "隐藏背景半透明圆" msgstr "Hide background semi-transparent circle" -#: functions.php:2525 +#: functions.php:2537 msgid "如果设置了背景图则不生效" msgstr "If the background image is set, it will not take effect" -#: functions.php:2526 +#: functions.php:2538 msgid "样式预览 (推荐选择前三个样式)" msgstr "Style preview (recommended to choose the first three styles)" -#: functions.php:2543 functions.php:3106 +#: functions.php:2555 functions.php:3118 msgid "动画" msgstr "Animation" -#: functions.php:2545 +#: functions.php:2557 msgid "Banner 标题打字动画" msgstr "Banner Title Typing Animation" -#: functions.php:2549 functions.php:2881 functions.php:2924 functions.php:3126 -#: functions.php:3286 functions.php:3335 +#: functions.php:2561 functions.php:2893 functions.php:2936 functions.php:3138 +#: functions.php:3298 functions.php:3347 msgid "不启用" msgstr "Disabled" -#: functions.php:2550 functions.php:2806 functions.php:2882 functions.php:2978 -#: functions.php:3030 functions.php:3127 functions.php:3285 functions.php:3336 +#: functions.php:2562 functions.php:2818 functions.php:2894 functions.php:2990 +#: functions.php:3042 functions.php:3139 functions.php:3297 functions.php:3348 msgid "启用" msgstr "Enabled" -#: functions.php:2552 +#: functions.php:2564 msgid "启用后 Banner 标题会以打字的形式出现。" msgstr "When enabled, the Banner title will appear as typing effect." -#: functions.php:2556 +#: functions.php:2568 msgid "Banner 标题打字动画时长" msgstr "Banner Title Typing Animation Speed" -#: functions.php:2558 +#: functions.php:2570 msgid "ms/字" msgstr "ms/letter" -#: functions.php:2562 functions.php:2564 +#: functions.php:2574 functions.php:2576 msgid "页面背景" msgstr "Page Background" -#: functions.php:2567 +#: functions.php:2579 msgid "" "页面背景的地址,需带上 http(s)。留空则不设置页面背景。如果设置了背景,推荐修" "改以下选项来增强页面整体观感。" @@ -729,11 +742,11 @@ msgstr "" "modify the following options to enhance the overall look and feel of the " "page." -#: functions.php:2571 +#: functions.php:2583 msgid "页面背景(夜间模式时)" msgstr "Page Background (Darkmode)" -#: functions.php:2574 +#: functions.php:2586 msgid "" "夜间模式时页面背景的地址,需带上 http(s)。设置后日间模式和夜间模式会使用不同" "的背景。留空则跟随日间模式背景。该选项仅在设置了日间模式背景时生效。" @@ -743,35 +756,35 @@ msgstr "" "the background of day mode. This option only takes effect when the day mode " "background is set." -#: functions.php:2578 +#: functions.php:2590 msgid "背景不透明度" msgstr "Background Opacity" -#: functions.php:2581 +#: functions.php:2593 msgid "0 ~ 1 的小数,越小透明度越高,默认为 1 不透明" msgstr "" "Decimal from 0 to 1, the smaller the higher the transparency, the default is " "1." -#: functions.php:2585 +#: functions.php:2597 msgid "Banner 透明化" msgstr "Make Banner Transparent" -#: functions.php:2589 functions.php:3368 header.php:522 +#: functions.php:2601 functions.php:3380 header.php:524 msgid "关闭" msgstr "Disabled" -#: functions.php:2590 functions.php:3369 +#: functions.php:2602 functions.php:3381 msgid "开启" msgstr "Enabled" -#: functions.php:2595 +#: functions.php:2607 msgid "在顶栏添加浅色遮罩,Banner 标题添加阴影(当背景过亮影响文字阅读时勾选)" msgstr "" "Add a mask to the top bar, and add a shadow to the banner title (check when " "the background is too bright and affect text reading)" -#: functions.php:2598 +#: functions.php:2610 msgid "" "Banner 透明化可以使博客背景沉浸。建议在设置背景时开启此选项。该选项仅会在设置" "页面背景时生效。" @@ -780,76 +793,76 @@ msgstr "" "to enable this option when setting the background. This option will only " "take effect when setting the page background." -#: functions.php:2601 +#: functions.php:2613 msgid "左侧栏" msgstr "Left Sidebar" -#: functions.php:2603 +#: functions.php:2615 msgid "左侧栏标题" msgstr "Left Sidebar Title" -#: functions.php:2610 +#: functions.php:2622 msgid "左侧栏子标题(格言)" msgstr "Left Sidebar Subtitle" -#: functions.php:2613 +#: functions.php:2625 msgid "留空则不显示" msgstr "Leave blank to not show." -#: functions.php:2613 +#: functions.php:2625 msgid "调用一言 API" msgstr "to use Hitokoto API." -#: functions.php:2617 +#: functions.php:2629 msgid "左侧栏作者名称" msgstr "Left Sidebar Author Name" -#: functions.php:2620 +#: functions.php:2632 msgid "留空则显示博客名" msgstr "If this option is empty, theme will show the blog name." -#: functions.php:2624 +#: functions.php:2636 msgid "左侧栏作者头像地址" msgstr "Left Sidebar Author Avatar URL" -#: functions.php:2627 +#: functions.php:2639 msgid "需带上 http(s) 开头" msgstr "With http(s) prefix" -#: functions.php:2630 +#: functions.php:2642 msgid "博客公告" msgstr "Blog Announcement" -#: functions.php:2632 +#: functions.php:2644 msgid "公告内容" msgstr "Announcement Content" -#: functions.php:2635 +#: functions.php:2647 msgid "显示在左侧栏顶部,留空则不显示,支持 HTML 标签" msgstr "" "Display at the top of the left sidebar, leave blank to not display, HTML " "tags are supported." -#: functions.php:2638 +#: functions.php:2650 msgid "浮动操作按钮" msgstr "Float Action Buttons" -#: functions.php:2639 +#: functions.php:2651 msgid "浮动操作按钮位于页面右下角(或左下角)" msgstr "" "Floating action buttons is placed in the right bottom corner (or lower left " "corner) of the page." -#: functions.php:2641 +#: functions.php:2653 msgid "显示设置按钮" msgstr "Show Settings Button" -#: functions.php:2645 functions.php:2657 functions.php:2668 functions.php:2728 -#: functions.php:2775 functions.php:2817 functions.php:2830 functions.php:3347 +#: functions.php:2657 functions.php:2669 functions.php:2680 functions.php:2740 +#: functions.php:2787 functions.php:2829 functions.php:2842 functions.php:3359 msgid "显示" msgstr "Show" -#: functions.php:2648 +#: functions.php:2660 msgid "" "是否在浮动操作按钮栏中显示设置按钮。点击设置按钮可以唤出设置菜单修改夜间模式/" "字体/滤镜等外观选项。" @@ -858,34 +871,34 @@ msgstr "" "Click the settings button to call up the settings menu to modify appearance " "options such as darkmode/font/filter." -#: functions.php:2652 +#: functions.php:2664 msgid "显示夜间模式切换按钮" msgstr "Display Darkmode Switch Button" -#: functions.php:2659 +#: functions.php:2671 msgid "" "如果开启了设置按钮显示,建议关闭此选项。(夜间模式选项在设置菜单中已经存在)" msgstr "" "If the setting button display option is turned on, it is recommended to turn " "off this option. (The darkmode option already exists in the settings menu)" -#: functions.php:2663 +#: functions.php:2675 msgid "显示跳转到评论按钮" msgstr "Show Jump To Comment Area Button" -#: functions.php:2670 +#: functions.php:2682 msgid "仅在允许评论的文章中显示" msgstr "Only show in articles that allow comments" -#: functions.php:2675 +#: functions.php:2687 msgid "网站描述 (Description Meta 标签)" msgstr "SEO Description Meta" -#: functions.php:2678 +#: functions.php:2690 msgid "设置针对搜索引擎的 Description Meta 标签内容。" msgstr "Set the description meta content for the search engine spiders." -#: functions.php:2678 +#: functions.php:2690 msgid "" "在文章中,Argon 会自动根据文章内容生成描述。在其他页面中,Argon 将使用这里设" "置的内容。如不填,Argon 将不会在其他页面输出 Description Meta 标签。" @@ -895,11 +908,11 @@ msgstr "" "If you leave it blank, Argon will not output Description Meta tags on other " "pages." -#: functions.php:2682 +#: functions.php:2694 msgid "搜索引擎关键词(Keywords Meta 标签)" msgstr "SEO Keywords Meta tag" -#: functions.php:2685 +#: functions.php:2697 msgid "" "设置针对搜索引擎使用的关键词(Keywords Meta 标签内容)。用英文逗号隔开。不设" "置则不输出该 Meta 标签。" @@ -907,252 +920,252 @@ msgstr "" "Set keyword meta tags for search engine spiders. Separate with commas. If " "not set, the meta tags will not be output." -#: functions.php:2688 sidebar.php:130 +#: functions.php:2700 sidebar.php:130 msgid "文章" msgstr "Articles" -#: functions.php:2689 +#: functions.php:2701 msgid "文章 Meta 信息" msgstr "Article Meta Information" -#: functions.php:2691 +#: functions.php:2703 msgid "第一行" msgstr "First Line" -#: functions.php:2726 +#: functions.php:2738 msgid "拖动来自定义文章 Meta 信息的显示和顺序" msgstr "" "Drag to customize the display and order of the meta information of the " "article." -#: functions.php:2734 functions.php:2851 +#: functions.php:2746 functions.php:2863 msgid "发布时间" msgstr "Post time" -#: functions.php:2735 +#: functions.php:2747 msgid "修改时间" msgstr "Edit time" -#: functions.php:2736 +#: functions.php:2748 msgid "浏览量" msgstr "Views" -#: functions.php:2737 +#: functions.php:2749 msgid "评论数" msgstr "Comments" -#: functions.php:2738 +#: functions.php:2750 msgid "所属分类" msgstr "Categories" -#: functions.php:2739 +#: functions.php:2751 msgid "作者" msgstr "Author" -#: functions.php:2769 +#: functions.php:2781 msgid "第二行" msgstr "Second Line" -#: functions.php:2781 +#: functions.php:2793 msgid "每分钟阅读字数" msgstr "Number of words read per minute" -#: functions.php:2784 +#: functions.php:2796 msgid "字/分钟" msgstr "words/minute" -#: functions.php:2785 +#: functions.php:2797 msgid "预计阅读时间由每分钟阅读字数计算" msgstr "" "Estimated reading time is calculated by the number of words read per minute" -#: functions.php:2788 +#: functions.php:2800 msgid "文章头图 (特色图片)" msgstr "Featured Picture" -#: functions.php:2790 +#: functions.php:2802 msgid "文章头图的位置" msgstr "Featured Picture Position" -#: functions.php:2794 +#: functions.php:2806 msgid "文章卡片顶端" msgstr "Top of article card" -#: functions.php:2795 +#: functions.php:2807 msgid "Banner (顶部背景)" msgstr "Banner Background" -#: functions.php:2797 +#: functions.php:2809 msgid "阅读界面中文章头图的位置" msgstr "The position of the article header image in the article page" -#: functions.php:2801 +#: functions.php:2813 msgid "默认使用文章中第一张图作为头图" msgstr "Use the first image of article as the thumbnail by default" -#: functions.php:2805 functions.php:2979 functions.php:3031 functions.php:3065 +#: functions.php:2817 functions.php:2991 functions.php:3043 functions.php:3077 msgid "禁用" msgstr "Disabled" -#: functions.php:2808 +#: functions.php:2820 msgid "也可以针对每篇文章单独设置" msgstr "Also can be set separately for every article." -#: functions.php:2811 template-parts/share.php:50 +#: functions.php:2823 template-parts/share.php:50 msgid "分享" msgstr "Share" -#: functions.php:2813 +#: functions.php:2825 msgid "显示文章分享按钮" msgstr "Show Share Button" -#: functions.php:2823 +#: functions.php:2835 msgid "左侧栏文章目录" msgstr "Catalog In Left Sidebar" -#: functions.php:2825 +#: functions.php:2837 msgid "在目录中显示序号" msgstr "Show chapter number in the catalog" -#: functions.php:2832 +#: functions.php:2844 msgid "例:3.2.5" msgstr "For example: 3.2.5" -#: functions.php:2835 template-parts/content-single.php:100 +#: functions.php:2847 template-parts/content-single.php:100 msgid "赞赏" msgstr "Donate" -#: functions.php:2837 +#: functions.php:2849 msgid "赞赏二维码图片链接" msgstr "Donating QR code image link" -#: functions.php:2840 +#: functions.php:2852 msgid "" "赞赏二维码图片链接,填写后会在文章最后显示赞赏按钮,留空则不显示赞赏按钮" msgstr "" "After filling in, the donate button will be displayed at the end of the " "article, leave it blank to not display the donate button" -#: functions.php:2843 +#: functions.php:2855 msgid "其他" msgstr "Other" -#: functions.php:2845 +#: functions.php:2857 msgid "文章过时信息显示" msgstr "Article outdated information" -#: functions.php:2847 +#: functions.php:2859 msgid "当一篇文章的" msgstr "When the" -#: functions.php:2850 +#: functions.php:2862 msgid "最后修改时间" msgstr "Last Modified Time" -#: functions.php:2853 +#: functions.php:2865 msgid "距离现在超过" msgstr "of an article from now more then" -#: functions.php:2855 +#: functions.php:2867 msgid "天时,用" msgstr "days, show a tip by" -#: functions.php:2858 +#: functions.php:2870 msgid "在文章顶部显示信息条" msgstr "Showing a information bar at the top of the article" -#: functions.php:2859 +#: functions.php:2871 msgid "在页面右上角弹出提示条" msgstr "Popping up a alert bar at the right top of the page" -#: functions.php:2861 +#: functions.php:2873 msgid "的方式提示" msgstr "." -#: functions.php:2863 +#: functions.php:2875 msgid "" "本文最后更新于 %date_delta% 天前,其中的信息可能已经有所发展或是发生改变。" msgstr "" "This article was last updated %date_delta% days ago. The information in it " "may have been changed." -#: functions.php:2864 +#: functions.php:2876 msgid "天数为 -1 表示永不提示。" msgstr "Set days to -1 to never show it." -#: functions.php:2864 +#: functions.php:2876 msgid "表示文章发布/修改时间与当前时间的差距," msgstr "" "means the gap between the post/modify time of the article and the current " "time," -#: functions.php:2864 +#: functions.php:2876 msgid "表示文章发布时间与当前时间的差距," msgstr "" "means the gap between the post time of the article and the current time," -#: functions.php:2864 +#: functions.php:2876 msgid "表示文章修改时间与当前时间的差距(单位: 天)。" msgstr "" "means the gap between the modify time of the article and the current time," -#: functions.php:2867 +#: functions.php:2879 msgid "页脚" msgstr "Footer" -#: functions.php:2869 +#: functions.php:2881 msgid "页脚内容" msgstr "Footer" -#: functions.php:2872 functions.php:3096 functions.php:3103 +#: functions.php:2884 functions.php:3108 functions.php:3115 msgid "HTML , 支持 script 等标签" msgstr "HTML, script and other tags are supported." -#: functions.php:2875 +#: functions.php:2887 msgid "代码高亮" msgstr "Code Highlight" -#: functions.php:2877 +#: functions.php:2889 msgid "启用 Highlight.js 代码高亮" msgstr "Enable Highlight.js code highlighting" -#: functions.php:2884 +#: functions.php:2896 msgid "所有 pre 下的 code 标签会被自动解析" msgstr "All code tags under pre will be automatically parsed" -#: functions.php:2888 +#: functions.php:2900 msgid "高亮配色方案(主题)" msgstr "Highlight color scheme" -#: functions.php:2906 +#: functions.php:2918 msgid "查看所有主题预览" msgstr "View all color scheme previews" -#: functions.php:2913 +#: functions.php:2925 msgid "数学公式" msgstr "Formulas Rendering" -#: functions.php:2915 +#: functions.php:2927 msgid "数学公式渲染方案" msgstr "Formula rendering library" -#: functions.php:2934 functions.php:2947 functions.php:2960 +#: functions.php:2946 functions.php:2959 functions.php:2972 msgid "地址" msgstr "URL" -#: functions.php:2936 functions.php:2949 +#: functions.php:2948 functions.php:2961 msgid ",默认为" msgstr ", Default is" -#: functions.php:2962 +#: functions.php:2974 msgid "Argon 会同时引用" msgstr "Argon will import both" -#: functions.php:2962 +#: functions.php:2974 msgid "和" msgstr "and" -#: functions.php:2962 +#: functions.php:2974 msgid "" "两个文件,所以在此填写的是上层的路径,而不是具体的文件。注意路径后要带一个斜" "杠。" @@ -1160,147 +1173,147 @@ msgstr "" "two files, so input the parent directory path in here, not the specific " "file. There is a slash after the path." -#: functions.php:2962 +#: functions.php:2974 msgid "默认为" msgstr "Default is" -#: functions.php:2974 +#: functions.php:2986 msgid "是否启用 Lazyload" msgstr "Enable Lazyload" -#: functions.php:2981 +#: functions.php:2993 msgid "是否启用 Lazyload 加载文章内图片" msgstr "Lazyload will load images when the page is about to scroll to them." -#: functions.php:2985 +#: functions.php:2997 msgid "提前加载阈值" msgstr "Lazyload threshold" -#: functions.php:2988 +#: functions.php:3000 msgid "图片距离页面底部还有多少距离就开始提前加载" msgstr "" "The distance from the bottom of the screen when the image start loading." -#: functions.php:2992 +#: functions.php:3004 msgid "LazyLoad 图片加载完成过渡" msgstr "Transition after the image is loaded" -#: functions.php:2998 +#: functions.php:3010 msgid "不使用过渡" msgstr "No transitions" -#: functions.php:3004 +#: functions.php:3016 msgid "LazyLoad 图片加载动效" msgstr "Lazyload Loading Animation" -#: functions.php:3008 functions.php:3009 functions.php:3010 functions.php:3011 -#: functions.php:3012 functions.php:3013 functions.php:3014 functions.php:3015 -#: functions.php:3016 functions.php:3017 functions.php:3018 +#: functions.php:3020 functions.php:3021 functions.php:3022 functions.php:3023 +#: functions.php:3024 functions.php:3025 functions.php:3026 functions.php:3027 +#: functions.php:3028 functions.php:3029 functions.php:3030 msgid "加载动画" msgstr "Loading Animation" -#: functions.php:3021 +#: functions.php:3033 msgid "在图片被加载之前显示的加载效果" msgstr "The loading animation displayed before the image is loaded." -#: functions.php:3021 +#: functions.php:3033 msgid "预览所有效果" msgstr "Preview all animations" -#: functions.php:3024 +#: functions.php:3036 msgid "图片放大浏览" msgstr "Image zooming in" -#: functions.php:3026 +#: functions.php:3038 msgid "是否启用图片放大浏览 (Zoomify)" msgstr "Enable Image Zooming In" -#: functions.php:3033 +#: functions.php:3045 msgid "开启后,文章中图片被单击时会放大预览" msgstr "" "If enabled, the image in the article will be enlarged and previewed when " "clicked" -#: functions.php:3037 +#: functions.php:3049 msgid "缩放动画长度" msgstr "Zooming Transition Duration" -#: functions.php:3040 +#: functions.php:3052 msgid "图片被单击后缩放到全屏动画的时间长度" msgstr "The duration of the image is clicked to zoom to full screen animation" -#: functions.php:3044 +#: functions.php:3056 msgid "缩放动画曲线" msgstr "Zooming Transition Timing Function" -#: functions.php:3048 +#: functions.php:3060 msgid "例:" msgstr "For example: " -#: functions.php:3048 +#: functions.php:3060 msgid "如果你不知道这是什么,参考" msgstr "If you don‘t know what this is, see" -#: functions.php:3048 +#: functions.php:3060 msgid "这里" msgstr "here" -#: functions.php:3053 +#: functions.php:3065 msgid "图片最大缩放比例" msgstr "Image maximum zoom ratio" -#: functions.php:3056 +#: functions.php:3068 msgid "图片相对于页面的最大缩放比例 (0 ~ 1 的小数)" msgstr "" "The maximum zoom ratio of the image relative to the page (decimal from 0 to " "1)" -#: functions.php:3061 +#: functions.php:3073 msgid "启用 Pangu.js (自动在中英文之间添加空格)" msgstr "Enable Pangu.js (automatically add spaces between Chinese and English)" -#: functions.php:3066 +#: functions.php:3078 msgid "格式化文章内容" msgstr "Format article content" -#: functions.php:3067 +#: functions.php:3079 msgid "格式化说说" msgstr "Format essays" -#: functions.php:3068 +#: functions.php:3080 msgid "格式化评论区" msgstr "Format comments" -#: functions.php:3069 +#: functions.php:3081 msgid "格式化文章内容和评论区" msgstr "Format articles and comments" -#: functions.php:3070 +#: functions.php:3082 msgid "格式化文章内容和说说" msgstr "Format articles and essays" -#: functions.php:3071 +#: functions.php:3083 msgid "格式化说说和评论区" msgstr "Format essays and comments" -#: functions.php:3072 +#: functions.php:3084 msgid "格式化文章内容、说说和评论区" msgstr "Format article, essays and comments" -#: functions.php:3074 +#: functions.php:3086 msgid "开启后,会自动在中文和英文之间添加空格" msgstr "" "After opening, it will automatically add space between Chinese and English" -#: functions.php:3077 +#: functions.php:3089 msgid "脚本" msgstr "Scripts" -#: functions.php:3079 +#: functions.php:3091 msgid "注意" msgstr "Attention" -#: functions.php:3081 +#: functions.php:3093 msgid "" "Argon 使用 pjax 方式加载页面 (无刷新加载) , 所以除非页面手动刷新,否则您的脚" "本只会被执行一次。" @@ -1308,118 +1321,118 @@ msgstr "" "Argon uses Pjax to load the page (loading without refresh), so unless the " "page is manually refreshed, your script will only be executed once." -#: functions.php:3082 +#: functions.php:3094 msgid "如果您想让每次页面跳转(加载新页面)时都执行脚本,请将脚本写入" msgstr "" "If you want to execute the script every time loading a new page, please " "write the script into" -#: functions.php:3082 +#: functions.php:3094 msgid "中" msgstr "function" -#: functions.php:3082 +#: functions.php:3094 msgid "示例写法" msgstr "For example" -#: functions.php:3085 +#: functions.php:3097 msgid "页面每次跳转都会执行这里的代码" msgstr "The code here will be executed every time the page loads" -#: functions.php:3089 +#: functions.php:3101 msgid "当页面第一次载入时," msgstr "When the page loads for the first time, the script in" -#: functions.php:3089 +#: functions.php:3101 msgid "中的脚本不会执行,所以您可以手动执行" msgstr "will not be executed, so you can manually execute" -#: functions.php:3089 +#: functions.php:3101 msgid "来让页面初次加载时也执行脚本" msgstr "to execute the script when the page first loads." -#: functions.php:3093 +#: functions.php:3105 msgid "页头脚本" msgstr "Header script" -#: functions.php:3096 +#: functions.php:3108 msgid "插入到 body 之前" msgstr "Will be inserted before body" -#: functions.php:3100 +#: functions.php:3112 msgid "页尾脚本" msgstr "Footer script" -#: functions.php:3103 +#: functions.php:3115 msgid "插入到 body 之后" msgstr "Will be inserted after body" -#: functions.php:3108 +#: functions.php:3120 msgid "是否启用平滑滚动" msgstr "Enable Smooth Scroll" -#: functions.php:3112 +#: functions.php:3124 msgid "使用平滑滚动方案 1 (平滑) (推荐)" msgstr "Smooth Scroll Scheme 1 (Smooth)(Recommend)" -#: functions.php:3113 +#: functions.php:3125 msgid "使用平滑滚动方案 1 (脉冲式滚动) (仿 Edge) (推荐)" msgstr "Smooth Scroll Scheme 1 (Impulsive, Edge like)(Recommend)" -#: functions.php:3114 +#: functions.php:3126 msgid "使用平滑滚动方案 2 (较稳)" msgstr "Smooth Scroll Scheme 2" -#: functions.php:3115 +#: functions.php:3127 msgid "使用平滑滚动方案 3" msgstr "Smooth Scroll Scheme 3" -#: functions.php:3116 +#: functions.php:3128 msgid "不使用平滑滚动" msgstr "Disabled" -#: functions.php:3118 +#: functions.php:3130 msgid "" "能增强浏览体验,但可能出现一些小问题,如果有问题请切换方案或关闭平滑滚动" msgstr "" "Can enhance the scrolling experience, but some minor problems may occur. If " "there is a problem, please switch the scheme or turn off smooth scrolling." -#: functions.php:3122 +#: functions.php:3134 msgid "是否启用进入文章动画" msgstr "Enable Entering Article Animation" -#: functions.php:3129 +#: functions.php:3141 msgid "从首页或分类目录进入文章时,使用平滑过渡(可能影响加载文章时的性能)" msgstr "" "Use transition when entering articles from the homepage or category " "directory (may affect the performance when loading articles)" -#: functions.php:3133 +#: functions.php:3145 msgid "评论分页" msgstr "Comment pagination" -#: functions.php:3135 +#: functions.php:3147 msgid "评论分页方式" msgstr "Comment pagination" -#: functions.php:3139 +#: functions.php:3151 msgid "无限加载" msgstr "Append" -#: functions.php:3140 +#: functions.php:3152 msgid "页码" msgstr "Page Number" -#: functions.php:3142 +#: functions.php:3154 msgid "无限加载:点击 \"加载更多\" 按钮来加载更多评论。" msgstr "Append: Click the \"Load more\" button to load more comments." -#: functions.php:3142 +#: functions.php:3154 msgid "页码:显示页码来分页。" msgstr "Page Number: Display the page number buttons." -#: functions.php:3142 +#: functions.php:3154 msgid "" "推荐选择\"无限加载\"时将 Wordpress 设置中的讨论设置项设为 \"默认显示最后一" "页,在每个页面顶部显示新的评论\"。" @@ -1428,11 +1441,11 @@ msgstr "" "item in Wordpress settings to \"Display the last page by default, and " "display new comments at the top of each page\"." -#: functions.php:3147 +#: functions.php:3159 msgid "是否隐藏 \"昵称\"、\"邮箱\"、\"网站\" 输入框" msgstr "Hide the \"name\", \"mail\", and \"website\" fields" -#: functions.php:3154 +#: functions.php:3166 msgid "" "选项仅在 \"设置-评论-评论作者必须填入姓名和电子邮件地址\" 选项未勾选的前提下" "生效。如勾选了 \"评论作者必须填入姓名和电子邮件地址\",则只有 \"网站\" 输入框" @@ -1443,438 +1456,438 @@ msgstr "" "author must fill in the name and email address\" is checked, only the " "\"Website\" input box will be hidden." -#: functions.php:3158 +#: functions.php:3170 msgid "评论是否需要验证码" msgstr "Comment CAPTCHA" -#: functions.php:3162 +#: functions.php:3174 msgid "需要" msgstr "Required" -#: functions.php:3163 +#: functions.php:3175 msgid "不需要" msgstr "Not Required" -#: functions.php:3169 +#: functions.php:3181 msgid "是否允许在评论中使用 Markdown 语法" msgstr "Allow Markdown In Comment" -#: functions.php:3173 functions.php:3184 functions.php:3196 functions.php:3207 -#: functions.php:3224 +#: functions.php:3185 functions.php:3196 functions.php:3208 functions.php:3219 +#: functions.php:3236 msgid "允许" msgstr "Allow" -#: functions.php:3174 functions.php:3185 functions.php:3195 functions.php:3206 -#: functions.php:3223 +#: functions.php:3186 functions.php:3197 functions.php:3207 functions.php:3218 +#: functions.php:3235 msgid "不允许" msgstr "Disallow" -#: functions.php:3180 +#: functions.php:3192 msgid "是否允许评论者再次编辑评论" msgstr "Allow Comment Editing" -#: functions.php:3187 +#: functions.php:3199 msgid "同一个评论者可以再次编辑评论。" msgstr "Commenter can edit the comment again." -#: functions.php:3191 +#: functions.php:3203 msgid "是否允许评论者使用悄悄话模式" msgstr "Allow private comment mode" -#: functions.php:3198 +#: functions.php:3210 msgid "评论者使用悄悄话模式发送的评论和其下的所有回复只有发送者和博主能看到。" msgstr "" "Only the sender and blog owner can see the comment sent using the private " "comment mode and all the replies under it." -#: functions.php:3202 +#: functions.php:3214 msgid "是否允许评论者接收评论回复邮件提醒" msgstr "Allow comment reply email notification" -#: functions.php:3212 +#: functions.php:3224 msgid "评论时默认勾选 \"启用邮件通知\" 复选框" msgstr "check the \"Enable Email Notification\" checkbox by default" -#: functions.php:3215 +#: functions.php:3227 msgid "评论者开启邮件提醒后,其评论有回复时会有邮件通知。" msgstr "" "If the commenter enable the email notification, there will be an email " "notification when the comment has a reply." -#: functions.php:3219 +#: functions.php:3231 msgid "允许评论者使用 QQ 头像" msgstr "Allow Using QQ Avatars" -#: functions.php:3226 +#: functions.php:3238 msgid "" "开启后,评论者可以使用 QQ 号代替邮箱输入,头像会根据评论者的 QQ 号获取。" msgstr "" "If this option is enabled, commenters can use QQ number instead of email, " "and the avatar will auto get from the commenter‘s QQ number." -#: functions.php:3229 +#: functions.php:3241 msgid "评论区" msgstr "Comments" -#: functions.php:3231 +#: functions.php:3243 msgid "评论头像垂直位置" msgstr "Avatar vertical position" -#: functions.php:3235 +#: functions.php:3247 msgid "居上" msgstr "Top" -#: functions.php:3236 +#: functions.php:3248 msgid "居中" msgstr "Middle" -#: functions.php:3242 +#: functions.php:3254 msgid "谁可以查看评论编辑记录" msgstr "Who can see comment edit history" -#: functions.php:3246 +#: functions.php:3258 msgid "只有博主" msgstr "Only blog owner" -#: functions.php:3247 +#: functions.php:3259 msgid "评论发送者和博主" msgstr "Comment sender and blog owner" -#: functions.php:3248 +#: functions.php:3260 msgid "任何人" msgstr "Everyone" -#: functions.php:3250 +#: functions.php:3262 msgid "点击评论右侧的 \"已编辑\" 标记来查看编辑记录" msgstr "" "Click the \"Edited\" mark on the right side of the comment to view the edit " "history" -#: functions.php:3254 +#: functions.php:3266 msgid "评论者 UA 显示" msgstr "Show commenters' User Agent" -#: functions.php:3259 +#: functions.php:3271 msgid "浏览器" msgstr "Browser" -#: functions.php:3260 +#: functions.php:3272 msgid "浏览器+版本号" msgstr "Browser+Version" -#: functions.php:3261 +#: functions.php:3273 msgid "平台+浏览器+版本号" msgstr "Platform+Browser+Version" -#: functions.php:3262 +#: functions.php:3274 msgid "平台+浏览器" msgstr "Platform+Browser" -#: functions.php:3263 +#: functions.php:3275 msgid "平台" msgstr "Platform" -#: functions.php:3265 +#: functions.php:3277 msgid "设置是否在评论区显示评论者 UA 及显示哪些部分" msgstr "" "Whether to display the commenter's UA in the comment area and which parts " "are displayed" -#: functions.php:3269 +#: functions.php:3281 msgid "折叠过长评论" msgstr "Fold Long Comments" -#: functions.php:3273 +#: functions.php:3285 msgid "不折叠" msgstr "Do not fold" -#: functions.php:3274 +#: functions.php:3286 msgid "折叠" msgstr "Fold" -#: functions.php:3276 +#: functions.php:3288 msgid "开启后,过长的评论会被折叠,需要手动展开" msgstr "After opening, comments that are too long will be collapsed" -#: functions.php:3279 +#: functions.php:3291 msgid "杂项" msgstr "Other" -#: functions.php:3281 +#: functions.php:3293 msgid "是否启用 Pjax" msgstr "Enable Pjax" -#: functions.php:3288 +#: functions.php:3300 msgid "Pjax 可以增强页面的跳转体验" msgstr "Pjax can enhance the page jumping experience" -#: functions.php:3292 +#: functions.php:3304 msgid "首页隐藏特定 分类/Tag 下的文章" msgstr "Hide specific categories/tags articles in home page" -#: functions.php:3295 +#: functions.php:3307 msgid "输入要隐藏的 分类/Tag 的 ID,用英文逗号分隔,留空则不隐藏" msgstr "" "Enter the IDs of the categories/Tags to be hidden, separated by commas, " "leave blank to not hide" -#: functions.php:3295 +#: functions.php:3307 msgid "点此查看" msgstr "Click Here" -#: functions.php:3295 +#: functions.php:3307 msgid "所有分类和 Tag 的 ID" msgstr "to view IDs of all categories and tags" -#: functions.php:3331 +#: functions.php:3343 msgid "美化登录界面" msgstr "Beautify the login page" -#: functions.php:3338 +#: functions.php:3350 msgid "使用 Argon Design 风格的登录界面" msgstr "Use Argon Design Style login interface" -#: functions.php:3342 +#: functions.php:3354 msgid "博客首页是否显示说说" msgstr "Show essays on the homepage" -#: functions.php:3349 +#: functions.php:3361 msgid "开启后,博客首页文章和说说穿插显示" msgstr "" "If enabled, articles and essays will be displayed on the homepage at the " "same time" -#: functions.php:3353 +#: functions.php:3365 msgid "是否使用 v2ex CDN 代理的 gravatar" msgstr "Use V2EX CDN Gravatar" -#: functions.php:3360 +#: functions.php:3372 msgid "可以大幅增加国内 gravatar 头像加载的速度" msgstr "Can increase the loading speed of gravatar in China." -#: functions.php:3364 +#: functions.php:3376 msgid "是否修正时区错误" msgstr "Time zone fix" -#: functions.php:3371 +#: functions.php:3383 msgid "如遇到时区错误(例如一条刚发的评论显示 8 小时前),这个选项" msgstr "" "If you encounter a time zone problem (for example, a comment is just posted " "but displays 8 hours ago), this option" -#: functions.php:3371 +#: functions.php:3383 msgid "可能" msgstr "may" -#: functions.php:3371 +#: functions.php:3383 msgid "可以修复这个问题" msgstr " can fix this problem" -#: functions.php:3375 +#: functions.php:3387 msgid "是否在文章列表内容预览中隐藏短代码" msgstr "Hide shortcodes in preview" -#: functions.php:3379 functions.php:3390 +#: functions.php:3391 functions.php:3402 msgid "否" msgstr "No" -#: functions.php:3380 functions.php:3391 +#: functions.php:3392 functions.php:3403 msgid "是" msgstr "Yes" -#: functions.php:3386 +#: functions.php:3398 msgid "是否允许移动端缩放页面" msgstr "Allow mobile browser zoom the page" -#: functions.php:3397 +#: functions.php:3409 msgid "检测更新源" msgstr "Theme update source" -#: functions.php:3405 +#: functions.php:3417 msgid "暂停更新 (不推荐)" msgstr "Stop Update" -#: functions.php:3407 +#: functions.php:3419 msgid "如更新主题速度较慢,可考虑更换更新源。" msgstr "If updating theme is slow, you can changing the update source." -#: functions.php:3411 +#: functions.php:3423 msgid "页脚附加内容" msgstr "Additional content in footer" -#: functions.php:3424 +#: functions.php:3436 msgid "保存更改" msgstr "Save Changes" -#: functions.php:3425 +#: functions.php:3437 msgid "导入设置" msgstr "Import" -#: functions.php:3426 +#: functions.php:3438 msgid "导出设置" msgstr "Export" -#: functions.php:3431 +#: functions.php:3443 msgid "收起" msgstr "Hide" -#: functions.php:3434 +#: functions.php:3446 msgid "请复制并保存导出后的 JSON" msgstr "Copy and save the JSON" -#: functions.php:3434 +#: functions.php:3446 msgid "确定" msgstr "OK" -#: functions.php:3510 +#: functions.php:3522 msgid "展开" msgstr "Show" -#: functions.php:3655 +#: functions.php:3667 msgid "字段导入失败" msgstr "Option Import Failed" -#: functions.php:3666 +#: functions.php:3678 msgid "请输入要导入的备份 JSON" msgstr "Input JSON" -#: functions.php:3669 +#: functions.php:3681 msgid "已导入,请保存更改" msgstr "Imported, Place save changes." -#: functions.php:3802 +#: functions.php:3815 msgid "顶部导航" msgstr "Toolbar Menu" -#: functions.php:3803 +#: functions.php:3816 msgid "左侧栏菜单" msgstr "Left Sidebar Menu" -#: functions.php:3804 +#: functions.php:3817 msgid "左侧栏作者个人链接" msgstr "Left Sidebar Author Links" -#: functions.php:3805 +#: functions.php:3818 msgid "左侧栏友情链接" msgstr "Left Sidebar Links" -#: functions.php:3816 functions.php:3817 functions.php:3827 shuoshuo.php:12 +#: functions.php:3829 functions.php:3830 functions.php:3840 shuoshuo.php:13 msgid "说说" msgstr "Essays" -#: functions.php:3818 functions.php:3819 +#: functions.php:3831 functions.php:3832 msgid "发表说说" msgstr "Post a essay" -#: functions.php:3820 +#: functions.php:3833 msgid "编辑说说" msgstr "Edit essay" -#: functions.php:3821 +#: functions.php:3834 msgid "新说说" msgstr "Add new essay" -#: functions.php:3822 +#: functions.php:3835 msgid "查看说说" msgstr "View essay" -#: functions.php:3823 +#: functions.php:3836 msgid "搜索说说" msgstr "Search essays" -#: functions.php:3824 +#: functions.php:3837 msgid "暂无说说" msgstr "No essays" -#: functions.php:3825 +#: functions.php:3838 msgid "没有已遗弃的说说" msgstr "No trashed essays" -#: header.php:282 header.php:363 searchform.php:11 sidebar.php:63 +#: header.php:284 header.php:365 searchform.php:11 sidebar.php:63 msgid "搜索" msgstr "Search" -#: header.php:343 searchform.php:7 sidebar.php:64 +#: header.php:345 searchform.php:7 sidebar.php:64 msgid "搜索什么..." msgstr "Search..." -#: header.php:482 +#: header.php:484 msgid "移至左侧" msgstr "Move To Left" -#: header.php:482 +#: header.php:484 msgid "移至右侧" msgstr "Move To Right" -#: header.php:486 +#: header.php:488 msgid "回到顶部" msgstr "Back To Top" -#: header.php:492 header.php:501 +#: header.php:494 header.php:503 msgid "暗黑模式" msgstr "Black Mode" -#: header.php:492 +#: header.php:494 msgid "日间模式" msgstr "Light Mode" -#: header.php:495 +#: header.php:497 msgid "设置" msgstr "Settings" -#: header.php:501 +#: header.php:503 msgid "切换到夜间模式" msgstr "Switch To Dark Mode" -#: header.php:501 +#: header.php:503 msgid "切换到暗黑模式" msgstr "Switch To Black Mode" -#: header.php:514 +#: header.php:516 msgid "阴影" msgstr "Shadow" -#: header.php:520 +#: header.php:522 msgid "滤镜" msgstr "Filter" -#: header.php:523 +#: header.php:525 msgid "日落" msgstr "Sunset" -#: header.php:524 +#: header.php:526 msgid "暗化" msgstr "Brightless" -#: header.php:525 +#: header.php:527 msgid "灰度" msgstr "Greyscale" -#: header.php:529 +#: header.php:531 msgid "恢复默认" msgstr "Set To Default" -#: header.php:529 +#: header.php:531 msgid "圆角" msgstr "Radius" -#: header.php:541 +#: header.php:543 msgid "菜单" msgstr "Menu" -#: header.php:544 +#: header.php:546 msgid "阅读进度" msgstr "Reading Progress" -#: search.php:7 +#: search.php:8 msgid "的搜索结果" msgstr "Search Results" -#: search.php:11 +#: search.php:12 msgid "个结果" msgstr "Results" -#: shuoshuo.php:20 +#: shuoshuo.php:21 msgid "条说说" msgstr "Essays" @@ -1902,11 +1915,11 @@ msgstr "Categories" msgid "标签" msgstr "Tags" -#: single.php:25 +#: single.php:27 msgid "上一篇" msgstr "Previous" -#: single.php:30 +#: single.php:32 msgid "下一篇" msgstr "Next" diff --git a/msgboard.php b/msgboard.php index ae3847de..7d710475 100644 --- a/msgboard.php +++ b/msgboard.php @@ -6,6 +6,8 @@ <?php get_header(); ?> +<div class="page-infomation-card-container"></div> + <?php get_sidebar(); ?> <div id="primary" class="content-area"> diff --git a/page.php b/page.php index 4dd511ec..e91a6c3e 100644 --- a/page.php +++ b/page.php @@ -1,5 +1,7 @@ <?php get_header(); ?> +<div class="page-infomation-card-container"></div> + <?php get_sidebar(); ?> <div id="primary" class="content-area"> diff --git a/search.php b/search.php index a8d0deb9..be7e8462 100644 --- a/search.php +++ b/search.php @@ -1,17 +1,20 @@ <?php get_header(); ?> -<div class="page-infomation-card card bg-gradient-secondary shadow-lg border-0"> - <div class="card-body"> - <h3 class="text-black mr-2 d-inline-block"> <?php echo get_search_query();?> </h3> - <p class="lead text-black mt-0 d-inline-block"> - <?php _e('的搜索结果', 'argon');?> - </p> - <p class="text-black mt-3 mb-0 opacity-8"> - <i class="fa fa-file-o mr-1"></i> - <?php global $wp_query; echo $wp_query -> found_posts; ?> <?php _e('个结果', 'argon');?> - </p> +<div class="page-infomation-card-container"> + <div class="page-infomation-card card bg-gradient-secondary shadow-lg border-0"> + <div class="card-body"> + <h3 class="text-black mr-2 d-inline-block"> <?php echo get_search_query();?> </h3> + <p class="lead text-black mt-0 d-inline-block"> + <?php _e('的搜索结果', 'argon');?> + </p> + <p class="text-black mt-3 mb-0 opacity-8"> + <i class="fa fa-file-o mr-1"></i> + <?php global $wp_query; echo $wp_query -> found_posts; ?> <?php _e('个结果', 'argon');?> + </p> + </div> </div> </div> + <?php get_sidebar(); ?> <div id="primary" class="content-area"> diff --git a/shuoshuo.php b/shuoshuo.php index 2ee895c5..215a2e1b 100644 --- a/shuoshuo.php +++ b/shuoshuo.php @@ -7,20 +7,23 @@ <?php get_header(); ?> -<div class="page-infomation-card card bg-gradient-secondary shadow-lg border-0"> - <div class="card-body"> - <h3 class="text-black"><?php _e('说说', 'argon');?></h3> - <?php if (the_archive_description() != ''){ ?> - <p class="text-black mt-3"> - <?php the_archive_description(); ?> +<div class="page-infomation-card-container"> + <div class="page-infomation-card card bg-gradient-secondary shadow-lg border-0"> + <div class="card-body"> + <h3 class="text-black"><?php _e('说说', 'argon');?></h3> + <?php if (the_archive_description() != ''){ ?> + <p class="text-black mt-3"> + <?php the_archive_description(); ?> + </p> + <?php } ?> + <p class="text-black mt-3 mb-0 opacity-8"> + <i class="fa fa-quote-left mr-1"></i> + <?php echo wp_count_posts('shuoshuo','') -> publish; ?> <?php _e('条说说', 'argon');?> </p> - <?php } ?> - <p class="text-black mt-3 mb-0 opacity-8"> - <i class="fa fa-quote-left mr-1"></i> - <?php echo wp_count_posts('shuoshuo','') -> publish; ?> <?php _e('条说说', 'argon');?> - </p> + </div> </div> </div> + <?php get_sidebar(); ?> <div id="primary" class="content-area"> diff --git a/sidebar.php b/sidebar.php index afdb1605..554ea275 100644 --- a/sidebar.php +++ b/sidebar.php @@ -41,9 +41,9 @@ public function start_el( &$output, $object, $depth = 0, $args = array(), $curre <a href='" . $object -> url . "'" . ( $args -> walker -> has_children == 1 ? " no-pjax onclick='return false;'" : "" ) . " target='" . $object -> target . "'>". $object -> title . "</a>"; } public function end_el( &$output, $object, $depth = 0, $args = array(), $current_object_id = 0 ) { - if ($depth == 0){ + //if ($depth == 0){ $output .= "</li>"; - } + //} } } echo "<ul id='leftbar_part1_menu' class='leftbar-menu'>"; diff --git a/single-shuoshuo.php b/single-shuoshuo.php index 8ba61639..67eae371 100644 --- a/single-shuoshuo.php +++ b/single-shuoshuo.php @@ -1,5 +1,7 @@ <?php get_header(); ?> +<div class="page-infomation-card-container"></div> + <?php get_sidebar(); ?> <div id="primary" class="content-area"> diff --git a/single.php b/single.php index 33dc16e9..26dc06f1 100644 --- a/single.php +++ b/single.php @@ -1,5 +1,7 @@ <?php get_header(); ?> +<div class="page-infomation-card-container"></div> + <?php get_sidebar(); ?> <div id="primary" class="content-area"> diff --git a/style.css b/style.css index 614865dd..ea4bbc4d 100644 --- a/style.css +++ b/style.css @@ -3,7 +3,7 @@ Theme Name: argon Author: solstice23 Author URI: https://solstice23.top/ Description: 轻盈、简洁、美观的 Wordpress 主题 -Version: 0.994 +Version: 0.999.beta.1 License: GNU General Public License v3.0 License URI: https://www.gnu.org/licenses/gpl-3.0.html Tags: 简约, 两栏, 侧栏在左边, 浮动侧栏, 文章目录, 自适应, 夜间模式, 可自定义 @@ -402,11 +402,17 @@ html.darkmode.amoled-dark #navbar-main{ #navbar-main{ transition: background 0s, padding .15s ease; background-color: var(--toolbar-color) !important; + padding-top: .5rem; + padding-bottom: .5rem; + transition: all .3s ease; } #navbar-main.navbar-ontop{ padding-top: 1rem; padding-bottom: 1rem; } +body.leftbar-can-headroom.headroom---unpinned #navbar-main{ + transform: translateY(-100%); +} #navbar_search_input_container:not(.open){ cursor: pointer; @@ -662,12 +668,16 @@ html.darkmode.amoled-dark #leftbar_search_container { #leftbar_part2{ margin-top: 10px; + transition: all .3s ease; } #leftbar_part2.sticky{ position: fixed; width: 240px; top: 80px; } +body.leftbar-can-headroom.headroom---unpinned #leftbar_part2.sticky{ + top: 10px; +} #leftbar_part2_inner{ max-height: calc(100vh - 110px); overflow-y: auto; diff --git a/timeline.php b/timeline.php index 543e9f65..33085f84 100644 --- a/timeline.php +++ b/timeline.php @@ -6,6 +6,8 @@ <?php get_header(); ?> +<div class="page-infomation-card-container"></div> + <?php get_sidebar(); ?> <div id="primary" class="content-area">