3 lines
3.7 KiB
JavaScript
3 lines
3.7 KiB
JavaScript
import{ref as i,isRef as E,computed as u,inject as b,readonly as C,defineComponent as w,h as v,onMounted as I,watch as M}from"vue";import{useRouter as B,useRouteLocale as _,useLang as R}from"vuepress/client";import{deepAssign as d,isFunction as A}from"@vuepress/helper/client";import{useEventListener as P,watchImmediate as f}from"@vueuse/core";import{debounce as K}from"ts-debounce";import{removeLeadingSlash as O,resolveRoutePathFromUrl as T}from"vuepress/shared";const $=e=>{P("keydown",t=>{const o=t.key==="k"&&(t.ctrlKey||t.metaKey);t.key!=="/"&&!o||(t.preventDefault(),e())},{once:!0})},L=()=>{const e=B();return{transformItems:t=>t.map(o=>({...o,url:`${__VUEPRESS_BASE__}${O(T(o.url,__DOCSEARCH_INDEX_BASE__))}`})),navigator:{navigate:({itemUrl:t})=>{e.push(t.replace(__VUEPRESS_BASE__,"/"))}},transformSearchClient:t=>({...t,search:K(t.search,500)})}},c=__DOCSEARCH_OPTIONS__,s=i(c),y=Symbol(__VUEPRESS_DEV__?"docsearch":""),F=e=>{E(e)?f(()=>e.value,t=>{s.value=d({},c,t)}):A(e)?f(u(e),t=>{s.value=d({},c,t)}):s.value=d({},c,e)},k=()=>{const e=b(y),t=_();return u(()=>({...e.value,...e.value.locales?.[t.value]}))},U=e=>{e.provide(y,C(s))},V=(e,t=[])=>[`lang:${e}`,...Array.isArray(t)?t:[t]],q=({buttonText:e="Search",buttonAriaLabel:t=e}={})=>`<button type="button" class="DocSearch DocSearch-Button" aria-label="${t}"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">${e}</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"><svg width="15" height="15" class="DocSearch-Control-Key-Icon"><path d="M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953" stroke-width="1.2" stroke="currentColor" fill="none" stroke-linecap="square"></path></svg></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button>`,D=()=>{if(document.querySelector(".DocSearch-Modal"))return;const e=new Event("keydown");e.key="k",e.metaKey=!0,window.dispatchEvent(e),setTimeout(D,16)},j=e=>{const t="algolia-preconnect";("requestIdleCallback"in window?window.requestIdleCallback:setTimeout)(()=>{if(document.head.querySelector(`#${t}`))return;const o=document.createElement("link");o.id=t,o.rel="preconnect",o.href=`https://${e}-dsn.algolia.net`,o.crossOrigin="",document.head.appendChild(o)})},H=w({name:"DocSearch",props:{containerId:{type:String,default:"docsearch-container"},options:{type:Object,default:()=>({})}},setup(e){const t=k(),o=L(),g=R(),h=_(),n=i(!1),p=i(!1),a=u(()=>{const{locales:l={},...r}=e.options;return{...t.value,...r,...l[h.value]}}),S=async()=>{if(__VUEPRESS_SSR__)return;const{default:l}=await import("@docsearch/js"),{searchParameters:r}=a.value;l({...o,...a.value,container:`#${e.containerId}`,searchParameters:{...r,facetFilters:V(g.value,r?.facetFilters)}}),n.value=!0},m=()=>{p.value||n.value||(p.value=!0,S(),D(),M(h,S))};return $(m),I(()=>{j(a.value.appId)}),()=>[v("div",{id:e.containerId,style:{display:n.value?"block":"none"}}),n.value?null:v("div",{onClick:m,innerHTML:q(a.value.translations?.button)})]}});export{H as DocSearch,F as defineDocSearchConfig,U as injectDocSearchConfig,k as useDocSearchOptions};
|
|
//# sourceMappingURL=index.js.map
|