mirror of
https://github.com/docsifyjs/docsify.git
synced 2025-12-08 19:55:52 +00:00
2 lines
4.2 KiB
JavaScript
2 lines
4.2 KiB
JavaScript
this.D=this.D||{},function(){"use strict";function e(e){var n={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return String(e).replace(/[&<>"'\/]/g,function(e){return n[e]})}function n(){var e=[];return d.dom.findAll("a:not(data-nosearch)").map(function(n){var t=n.href,i=n.getAttribute("href"),r=d.route.parse(t).path;r&&e.indexOf(r)===-1&&!d.route.isAbsolutePath(i)&&e.push(r)}),e}function t(e){localStorage.setItem("docsify.search.expires",Date.now()+e),localStorage.setItem("docsify.search.index",JSON.stringify(f))}function i(e,n){void 0===n&&(n="");var t,i=window.marked.lexer(n),r=window.Docsify.slugify,o=Docsify.route.toURL,a={};return i.forEach(function(n){if("heading"===n.type&&n.depth<=2)t=o(e,{id:r(n.text)}),a[t]={slug:t,title:n.text,body:""};else{if(!t)return;a[t]?a[t].body?a[t].body+="\n"+(n.text||""):a[t].body=n.text:a[t]={slug:t,title:"",body:""}}}),r.clear(),a}function r(n){var t=[],i=[];Object.keys(f).forEach(function(e){i=i.concat(Object.keys(f[e]).map(function(n){return f[e][n]}))}),n=n.trim().split(/[\s\-\,\\\/]+/);for(var r=function(r){var o=i[r],a=!1,s="",c=o.title&&o.title.trim(),l=o.body&&o.body.trim(),u=o.slug||"";if(c&&l&&(n.forEach(function(n,t){var i=new RegExp(n,"gi"),r=-1,o=-1;if(r=c&&c.search(i),o=l&&l.search(i),r<0&&o<0)a=!1;else{a=!0,o<0&&(o=0);var u=0,p=0;u=o<11?0:o-10,p=0===u?70:o+n.length+60,p>l.length&&(p=l.length);var d="..."+e(l).substring(u,p).replace(i,'<em class="search-keyword">'+n+"</em>")+"...";s+=d}}),a)){var p={title:e(c),content:s,url:u};t.push(p)}},o=0;o<i.length;o++)r(o);return t}function o(e,r){d=Docsify;var o="auto"===e.paths,a=localStorage.getItem("docsify.search.expires")<Date.now();if(f=JSON.parse(localStorage.getItem("docsify.search.index")),a)f={};else if(!o)return;var s=o?n():e.paths,c=s.length,l=0;s.forEach(function(n){return f[n]?l++:void d.get(r.$getFile(n)).then(function(r){f[n]=i(n,r),c===++l&&t(e.maxAge)})})}function a(){var e="\n.sidebar {\n padding-top: 0;\n}\n\n.search {\n margin-bottom: 20px;\n padding: 6px;\n border-bottom: 1px solid #eee;\n}\n\n.search .results-panel {\n display: none;\n}\n\n.search .results-panel.show {\n display: block;\n}\n\n.search input {\n outline: none;\n border: none;\n width: 100%;\n padding: 7px;\n line-height: 22px;\n font-size: 14px;\n}\n\n.search h2 {\n font-size: 17px;\n margin: 10px 0;\n}\n\n.search a {\n text-decoration: none;\n color: inherit;\n}\n\n.search .matching-post {\n border-bottom: 1px solid #eee;\n}\n\n.search .matching-post:last-child {\n border-bottom: 0;\n}\n\n.search p {\n font-size: 14px;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n.search p.empty {\n text-align: center;\n}",n=h.create("style",e);h.appendTo(h.head,n)}function s(e){var n='<input type="search" /><div class="results-panel"></div></div>',t=h.create("div",n),i=h.find("aside");h.toggleClass(t,"search"),h.before(i,t)}function c(){var e,n=h.find("div.search"),t=h.find(n,"input"),i=h.find(n,".results-panel"),o=function(e){if(!e)return i.classList.remove("show"),void(i.innerHTML="");var n=r(e),t="";n.forEach(function(e){t+='<div class="matching-post">\n <h2><a href="'+e.url+'">'+e.title+"</a></h2>\n <p>"+e.content+"</p>\n</div>"}),i.classList.add("show"),i.innerHTML=t||'<p class="empty">No Results!</p>'};h.on(n,"click",function(e){return"A"!==e.target.tagName&&e.stopPropagation()}),h.on(t,"input",function(n){clearTimeout(e),e=setTimeout(function(e){return o(n.target.value.trim())},100)})}function l(e,n){var t=h.getNode('.search input[type="search"]');if("string"==typeof e)t.placeholder=e;else{var i=Object.keys(e).find(function(e){return n.indexOf(e)>-1});t.placeholder=e[i]}}function u(e){h=Docsify.dom,a(),s(e),c()}function p(e,n){l(e.placeholder,n.route.path)}var d,h,f={},g={placeholder:"Type to search",paths:"auto",maxAge:864e5},m=function(e,n){var t=Docsify.util,i=n.config.search||g;Array.isArray(i)?g.paths=i:"object"==typeof i&&(g.paths=Array.isArray(i.paths)?i.paths:"auto",g.maxAge=t.isPrimitive(i.maxAge)?i.maxAge:g.maxAge,g.placeholder=i.placeholder||g.placeholder);var r="auto"===g.paths;e.mounted(function(e){u(g),!r&&o(g,n)}),e.doneEach(function(e){p(g,n),r&&o(g,n)})};window.$docsify.plugins=[].concat(m,window.$docsify.plugins)}();
|