UNPKG

next-static-search

Version:

A powerful react search based on pagefind with beautiful UI

3 lines (2 loc) 10.1 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }"use client"; var E=Object.defineProperty,B=Object.defineProperties;var K=Object.getOwnPropertyDescriptors;var w=Object.getOwnPropertySymbols;var O=Object.prototype.hasOwnProperty,J=Object.prototype.propertyIsEnumerable;var S=(e,t)=>(t=Symbol[e])?t:Symbol.for("Symbol."+e);var N=(e,t,s)=>t in e?E(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,y=(e,t)=>{for(var s in t||(t={}))O.call(t,s)&&N(e,s,t[s]);if(w)for(var s of w(t))J.call(t,s)&&N(e,s,t[s]);return e},k=(e,t)=>B(e,K(t)),n=(e,t)=>E(e,"name",{value:t,configurable:!0});var I=(e,t,s)=>(t=e[S("asyncIterator")])?t.call(e):(e=e[S("iterator")](),t={},s=(o,l)=>(l=e[o])&&(t[o]=i=>new Promise((d,p,c)=>(i=l.call(e,i),c=i.done,Promise.resolve(i.value).then(h=>d({value:h,done:c}),p)))),s("next"),s("return"),t);var _react = require('react'); var _react2 = _interopRequireDefault(_react);var _reactdom = require('react-dom');var P=n((e,t)=>{let[s,o]=_react2.default.useState(!1),[l,i]=_react2.default.useState(null),[d,p]=_react2.default.useState(!1),c=n(a=>{t=="inline"},"handleSearchClose"),h=_react2.default.useCallback(a=>{if((a!=null&&a.ctrlKey||a!=null&&a.metaKey)&&a.key==="k"){a.preventDefault(),o(!0);let _=setTimeout(()=>{var u;(u=document.getElementById(t=="inline"?"rstse__search_bar_main_id":"rstse__search_bar_input_id"))==null||u.focus(),clearTimeout(_)},50)}},[]),m=_react2.default.useCallback(a=>{t=="modal"&&a&&a.target.id=="rstse__search_portal_id"&&e()},[]);return _react2.default.useEffect(()=>{p(!0);let a=navigator.userAgent.toUpperCase().includes("MAC");return i(!!a),window.addEventListener("keydown",h),window.addEventListener("click",c),()=>{window.removeEventListener("keydown",h),window.removeEventListener("click",c)}},[]),_react2.default.useEffect(()=>{if(d){let a=document.getElementById("rstse__search_portal_id");return a==null||a.addEventListener("click",m),()=>{a==null||a.removeEventListener("click",m)}}},[d]),{isMac:l,isMounted:d,isOpen:s,setIsOpen:o}},"useInitialMounting");var Q=n(async e=>await new Function(`return import("${e}")`)(),"importPageFind"),C=n(()=>{let[e,t]=_react2.default.useState(""),[s,o]=_react2.default.useState(!1),[l,i]=_react2.default.useState([]),[d,p]=_react2.default.useState(!1),c=_react2.default.useCallback(()=>{o(!0),window.pagefind={search:n(()=>Promise.resolve({results:[],query:""}),"search"),preload:n(()=>Promise.resolve(),"preload")}},[]),h=n(_=>{var u,b;console.log(_),(b=(u=_.reason)==null?void 0:u.message)!=null&&b.includes("Pagefind")&&c()},"rejectionHandler");_react2.default.useEffect(()=>{async function _(){if(typeof window.pagefind=="undefined")try{let u="/_next/static/pagefind/pagefind.js";if((await fetch(u,{method:"HEAD",cache:"no-store"})).status==404)throw Error("file not found");let A=await Q(u);window.pagefind=A,await window.pagefind.preload().catch(T=>{console.log(T),c()})}catch(u){console.log(u),c()}}return n(_,"loadPagefind"),window.addEventListener("unhandledrejection",h),_(),()=>{window.removeEventListener("unhandledrejection",h)}},[]);async function m(_){if(window.pagefind){let j=await window.pagefind.search(_),v=[];try{for(var u=I(j.results),b,A,T;b=!(A=await u.next()).done;b=!1){let x=A.value;let D=await(x==null?void 0:x.data());v.push(D)}}catch(A){T=[A]}finally{try{b&&(A=u.return)&&await A.call(u)}finally{if(T)throw T[0]}}i(v)}}return n(m,"handleSearch"),{isError:s,results:l,loading:d,onSearch:n(async _=>{t(_),s||(p(!0),await m(_),p(!1))},"onSearch"),search:e,setSearch:t,setLoading:p}},"usePagefind");var F={placeholder:"\u{1F680} Search this Site...",searchBoxTitle:"Search Your Query...",errorMessage:"There is an error loading the search result. Maybe you are running development build or the application can't access the results.",notFoundMessage:"No result found for this query. Try with some other keywords.",searchBoxType:"modal",pagesToIgnore:["404","500"]},W=n(({config:e,search:t,onSearch:s,isMac:o})=>{let l=n((i,d,p)=>i?d:p,"getKey");return _react2.default.createElement("div",{className:`rstse__search_bar ${(e==null?void 0:e.searchClassName)||""}`,id:"rstse__search_bar_id"},_react2.default.createElement("input",{id:"rstse__search_bar_main_id",className:"rstse__search_bar_input",type:"text",placeholder:(e==null?void 0:e.placeholder)||"",value:t,onChange:i=>s(i.target.value)}),o!=null&&_react2.default.createElement("div",{className:"rstse__search_bar_div"},_react2.default.createElement("span",{className:"rstse__search_bar_keys"},l(o,(e==null?void 0:e.macSymbol)||"Cmd",(e==null?void 0:e.windowsSymbol)||"Ctrl")),_react2.default.createElement("span",null,"+"),_react2.default.createElement("span",{className:"rstse__search_bar_keys"},"k")))},"SearchBar"),X=n(()=>_react2.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},_react2.default.createElement("rect",{width:"10",height:"10",x:"1",y:"1",rx:"1"},_react2.default.createElement("animate",{id:"spinner_c7A9",fill:"freeze",attributeName:"x",begin:"0;spinner_23zP.end",dur:"0.2s",values:"1;13"}),_react2.default.createElement("animate",{id:"spinner_Acnw",fill:"freeze",attributeName:"y",begin:"spinner_ZmWi.end",dur:"0.2s",values:"1;13"}),_react2.default.createElement("animate",{id:"spinner_iIcm",fill:"freeze",attributeName:"x",begin:"spinner_zfQN.end",dur:"0.2s",values:"13;1"}),_react2.default.createElement("animate",{id:"spinner_WX4U",fill:"freeze",attributeName:"y",begin:"spinner_rRAc.end",dur:"0.2s",values:"13;1"})),_react2.default.createElement("rect",{width:"10",height:"10",x:"1",y:"13",rx:"1"},_react2.default.createElement("animate",{id:"spinner_YLx7",fill:"freeze",attributeName:"y",begin:"spinner_c7A9.end",dur:"0.2s",values:"13;1"}),_react2.default.createElement("animate",{id:"spinner_vwnJ",fill:"freeze",attributeName:"x",begin:"spinner_Acnw.end",dur:"0.2s",values:"1;13"}),_react2.default.createElement("animate",{id:"spinner_KQuy",fill:"freeze",attributeName:"y",begin:"spinner_iIcm.end",dur:"0.2s",values:"1;13"}),_react2.default.createElement("animate",{id:"spinner_arKy",fill:"freeze",attributeName:"x",begin:"spinner_WX4U.end",dur:"0.2s",values:"13;1"})),_react2.default.createElement("rect",{width:"10",height:"10",x:"13",y:"13",rx:"1"},_react2.default.createElement("animate",{id:"spinner_ZmWi",fill:"freeze",attributeName:"x",begin:"spinner_YLx7.end",dur:"0.2s",values:"13;1"}),_react2.default.createElement("animate",{id:"spinner_zfQN",fill:"freeze",attributeName:"y",begin:"spinner_vwnJ.end",dur:"0.2s",values:"13;1"}),_react2.default.createElement("animate",{id:"spinner_rRAc",fill:"freeze",attributeName:"x",begin:"spinner_KQuy.end",dur:"0.2s",values:"1;13"}),_react2.default.createElement("animate",{id:"spinner_23zP",fill:"freeze",attributeName:"y",begin:"spinner_arKy.end",dur:"0.2s",values:"1;13"}))),"Loader"),H=n(()=>_react2.default.createElement("div",{className:"rstse__search_loading"},_react2.default.createElement(X,null),_react2.default.createElement("span",null,"Loading...")),"LoadingScreen"),U=n((e,t)=>e.filter(s=>!t.includes(s.meta.title)),"filterPages"),Y=n(({config:e,results:t})=>{let s=U(t,e.pagesToIgnore);return _react2.default.createElement("div",{className:"rstse__search_result_pane"},(s==null?void 0:s.length)>0?_react2.default.createElement(_react2.default.Fragment,null,s.map((o,l)=>_react2.default.createElement(_react2.default.Fragment,{key:l},_react2.default.createElement("h3",null,o.meta.title),_react2.default.createElement("div",null,o.sub_results.map(i=>{let d=i.url.replace("/_next/static/server/app","").replace("/server/app","").replace(".html","");return _react2.default.createElement("a",{href:d,key:i.title},_react2.default.createElement("h4",null,i.title),_react2.default.createElement("p",{dangerouslySetInnerHTML:{__html:i.excerpt}}))}))))):_react2.default.createElement("div",{className:"rstse__search_result_pane_no_result"},e==null?void 0:e.notFoundMessage))},"ResultPane"),L=n(({config:e,isError:t,loading:s,results:o})=>_react2.default.createElement(_react2.default.Fragment,null,t?_react2.default.createElement("div",{className:"rstse__search_result"},_react2.default.createElement("div",{className:"rstse__search_result_err"},e.errorMessage)):_react2.default.createElement("div",{className:"rstse__search_result"},s?_react2.default.createElement(H,null):_react2.default.createElement(Y,{config:e,results:o}))),"ResultWithError"),q=n(({isOpen:e,search:t,config:s,onSearch:o,isError:l,loading:i,results:d})=>_reactdom.createPortal.call(void 0, _react2.default.createElement("div",{className:e||(t==null?void 0:t.length)>0?"rstse__search_portal rstse-animate-fade-in":"rstse__search_portal__hidden",id:"rstse__search_portal_id"},_react2.default.createElement("div",null,_react2.default.createElement("input",{className:"rstse__search_bar_input",id:"rstse__search_bar_input_id",type:"text",placeholder:(s==null?void 0:s.placeholder)||"",value:t,onChange:p=>o(p.target.value),autoFocus:!0}),_react2.default.createElement(L,{config:s,isError:l,loading:i,results:d}))),document.body),"SearchModal"),pe= exports.NextStaticSearch =n(e=>{let t=k(y(y({},F),e),{pagesToIgnore:[...F.pagesToIgnore,...e.pagesToIgnore||[]]}),s=_react2.default.useCallback(()=>{d(!1),a(""),u(!1)},[]),{isMac:o,isMounted:l,isOpen:i,setIsOpen:d}=P(s,t.searchBoxType),{isError:p,results:c,loading:h,onSearch:m,setSearch:a,search:_,setLoading:u}=C();return _react2.default.createElement(_react2.default.Fragment,null,_react2.default.createElement(W,{config:t,search:_,onSearch:m,isMac:o}),t.searchBoxType=="modal"&&l&&_react2.default.createElement(q,{isOpen:i,search:_,config:t,onSearch:m,isError:p,loading:h,results:c}),t.searchBoxType=="inline"&&_.length>0&&l&&_reactdom.createPortal.call(void 0, _react2.default.createElement("div",{className:"rstse__search_bar_inline",id:"rstse__search_bar_inline_id"},_react2.default.createElement(L,{config:t,isError:p,loading:h,results:c})),document.getElementById("rstse__search_bar_id")))},"NextStaticSearch");exports.NextStaticSearch = pe;