lotus/_site/pagefind/pagefind.js

1 line
No EOL
21 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

let e;!function(){const t={};let n,a;n="undefined"==typeof document?location.href:new URL("UNHANDLED",location.href).toString();let r=null;function i(){return null!==r&&0!==r.byteLength||(r=new Uint8Array(a.memory.buffer)),r}let s=0;function o(e,t){const n=t(1*e.length);return i().set(e,n/1),s=e.length,n}t.init_pagefind=function(e){const t=o(e,a.__wbindgen_malloc),n=s;return a.init_pagefind(t,n)},t.load_index_chunk=function(e,t){const n=o(t,a.__wbindgen_malloc),r=s;return a.load_index_chunk(e,n,r)},t.load_filter_chunk=function(e,t){const n=o(t,a.__wbindgen_malloc),r=s;return a.load_filter_chunk(e,n,r)};const l=new TextEncoder("utf-8"),c="function"==typeof l.encodeInto?function(e,t){return l.encodeInto(e,t)}:function(e,t){const n=l.encode(e);return t.set(n),{read:e.length,written:n.length}};function h(e,t,n){if(void 0===n){const n=l.encode(e),a=t(n.length);return i().subarray(a,a+n.length).set(n),s=n.length,a}let a=e.length,r=t(a);const o=i();let h=0;for(;h<a;h++){const t=e.charCodeAt(h);if(t>127)break;o[r+h]=t}if(h!==a){0!==h&&(e=e.slice(h)),r=n(r,a,a=h+3*e.length);const t=i().subarray(r+h,r+a);h+=c(e,t).written}return s=h,r}t.add_synthetic_filter=function(e,t){const n=h(t,a.__wbindgen_malloc,a.__wbindgen_realloc),r=s;return a.add_synthetic_filter(e,n,r)};let d=null;function f(){return null!==d&&0!==d.byteLength||(d=new Int32Array(a.memory.buffer)),d}const u=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});function g(e,t){return u.decode(i().subarray(e,e+t))}function _(){const e={wbg:{}};return e}function w(e,t){return a=e.exports,p.__wbindgen_wasm_module=t,d=null,r=null,a}async function p(e){void 0===e&&(e=n.replace(/\.js$/,"_bg.wasm"));const t=_();("string"==typeof e||"function"==typeof Request&&e instanceof Request||"function"==typeof URL&&e instanceof URL)&&(e=fetch(e));const{instance:a,module:r}=await async function(e,t){if("function"==typeof Response&&e instanceof Response){if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(e,t)}catch(t){if("application/wasm"==e.headers.get("Content-Type"))throw t;console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",t)}const n=await e.arrayBuffer();return await WebAssembly.instantiate(n,t)}{const n=await WebAssembly.instantiate(e,t);return n instanceof WebAssembly.Instance?{instance:n,module:e}:n}}(await e,t);return w(a,r)}u.decode(),t.request_indexes=function(e,t){try{const i=a.__wbindgen_add_to_stack_pointer(-16),o=h(t,a.__wbindgen_malloc,a.__wbindgen_realloc),l=s;a.request_indexes(i,e,o,l);var n=f()[i/4+0],r=f()[i/4+1];return g(n,r)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_free(n,r)}},t.request_filter_indexes=function(e,t){try{const i=a.__wbindgen_add_to_stack_pointer(-16),o=h(t,a.__wbindgen_malloc,a.__wbindgen_realloc),l=s;a.request_filter_indexes(i,e,o,l);var n=f()[i/4+0],r=f()[i/4+1];return g(n,r)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_free(n,r)}},t.request_all_filter_indexes=function(e){try{const r=a.__wbindgen_add_to_stack_pointer(-16);a.request_all_filter_indexes(r,e);var t=f()[r/4+0],n=f()[r/4+1];return g(t,n)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_free(t,n)}},t.filters=function(e){try{const r=a.__wbindgen_add_to_stack_pointer(-16);a.filters(r,e);var t=f()[r/4+0],n=f()[r/4+1];return g(t,n)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_free(t,n)}},t.search=function(e,t,n,r,i){try{const c=a.__wbindgen_add_to_stack_pointer(-16),d=h(t,a.__wbindgen_malloc,a.__wbindgen_realloc),u=s,_=h(n,a.__wbindgen_malloc,a.__wbindgen_realloc),w=s,p=h(r,a.__wbindgen_malloc,a.__wbindgen_realloc),m=s;a.search(c,e,d,u,_,w,p,m,i);var o=f()[c/4+0],l=f()[c/4+1];return g(o,l)}finally{a.__wbindgen_add_to_stack_pointer(16),a.__wbindgen_free(o,l)}},e=Object.assign(p,{initSync:function(e){const t=_();return e instanceof WebAssembly.Module||(e=new WebAssembly.Module(e)),w(new WebAssembly.Instance(e,t),e)}},t)}();var t=Uint8Array,n=Uint16Array,a=Uint32Array,r=new t([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),i=new t([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),s=new t([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),o=function(e,t){for(var r=new n(31),i=0;i<31;++i)r[i]=t+=1<<e[i-1];var s=new a(r[30]);for(i=1;i<30;++i)for(var o=r[i];o<r[i+1];++o)s[o]=o-r[i]<<5|i;return[r,s]},l=o(r,2),c=l[0],h=l[1];c[28]=258,h[258]=28;var d,f=o(i,0),u=f[0],g=(f[1],new n(32768));for(p=0;p<32768;++p)d=(61680&(d=(52428&(d=(43690&p)>>>1|(21845&p)<<1))>>>2|(13107&d)<<2))>>>4|(3855&d)<<4,g[p]=((65280&d)>>>8|(255&d)<<8)>>>1;var _=function(e,t,a){for(var r=e.length,i=0,s=new n(t);i<r;++i)e[i]&&++s[e[i]-1];var o,l=new n(t);for(i=0;i<t;++i)l[i]=l[i-1]+s[i-1]<<1;if(a){o=new n(1<<t);var c=15-t;for(i=0;i<r;++i)if(e[i])for(var h=i<<4|e[i],d=t-e[i],f=l[e[i]-1]++<<d,u=f|(1<<d)-1;f<=u;++f)o[g[f]>>>c]=h}else for(o=new n(r),i=0;i<r;++i)e[i]&&(o[i]=g[l[e[i]-1]++]>>>15-e[i]);return o},w=new t(288);for(p=0;p<144;++p)w[p]=8;for(p=144;p<256;++p)w[p]=9;for(p=256;p<280;++p)w[p]=7;for(p=280;p<288;++p)w[p]=8;var p,m=new t(32);for(p=0;p<32;++p)m[p]=5;var y=_(w,9,1),b=_(m,5,1),P=function(e){for(var t=e[0],n=1;n<e.length;++n)e[n]>t&&(t=e[n]);return t},v=function(e,t,n){var a=t/8|0;return(e[a]|e[a+1]<<8)>>(7&t)&n},k=function(e,t){var n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(7&t)},$=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],x=function(e,t,n){var a=new Error(t||$[e]);if(a.code=e,Error.captureStackTrace&&Error.captureStackTrace(a,x),!n)throw a;return a},F=function(e,o,l){var h=e.length;if(!h||l&&l.f&&!l.l)return o||new t(0);var d=!o||l,f=!l||l.i;l||(l={}),o||(o=new t(3*h));var g=function(e){var n=o.length;if(e>n){var a=new t(Math.max(2*n,e));a.set(o),o=a}},w=l.f||0,p=l.p||0,m=l.b||0,$=l.l,F=l.d,S=l.m,U=l.n,E=8*h;do{if(!$){w=v(e,p,1);var L=v(e,p+1,3);if(p+=3,!L){var A=e[(O=4+((p+7)/8|0))-4]|e[O-3]<<8,I=O+A;if(I>h){f&&x(0);break}d&&g(m+A),o.set(e.subarray(O,I),m),l.b=m+=A,l.p=p=8*I,l.f=w;continue}if(1==L)$=y,F=b,S=9,U=5;else if(2==L){var M=v(e,p,31)+257,W=v(e,p+10,15)+4,D=M+v(e,p+5,31)+1;p+=14;for(var R=new t(D),j=new t(19),C=0;C<W;++C)j[s[C]]=v(e,p+3*C,7);p+=3*W;var T=P(j),q=(1<<T)-1,N=_(j,T,1);for(C=0;C<D;){var O,B=N[v(e,p,q)];if(p+=15&B,(O=B>>>4)<16)R[C++]=O;else{var J=0,G=0;for(16==O?(G=3+v(e,p,3),p+=2,J=R[C-1]):17==O?(G=3+v(e,p,7),p+=3):18==O&&(G=11+v(e,p,127),p+=7);G--;)R[C++]=J}}var z=R.subarray(0,M),Y=R.subarray(M);S=P(z),U=P(Y),$=_(z,S,1),F=_(Y,U,1)}else x(1);if(p>E){f&&x(0);break}}d&&g(m+131072);for(var H=(1<<S)-1,V=(1<<U)-1,K=p;;K=p){var Q=(J=$[k(e,p)&H])>>>4;if((p+=15&J)>E){f&&x(0);break}if(J||x(2),Q<256)o[m++]=Q;else{if(256==Q){K=p,$=null;break}var X=Q-254;if(Q>264){var Z=r[C=Q-257];X=v(e,p,(1<<Z)-1)+c[C],p+=Z}var ee=F[k(e,p)&V],te=ee>>>4;ee||x(3),p+=15&ee;Y=u[te];if(te>3){Z=i[te];Y+=k(e,p)&(1<<Z)-1,p+=Z}if(p>E){f&&x(0);break}d&&g(m+131072);for(var ne=m+X;m<ne;m+=4)o[m]=o[m-Y],o[m+1]=o[m+1-Y],o[m+2]=o[m+2-Y],o[m+3]=o[m+3-Y];m=ne}}l.l=$,l.p=K,l.b=m,l.f=w,$&&(w=1,l.m=S,l.d=F,l.n=U)}while(!w);return m==o.length?o:function(e,r,i){(null==r||r<0)&&(r=0),(null==i||i>e.length)&&(i=e.length);var s=new(2==e.BYTES_PER_ELEMENT?n:4==e.BYTES_PER_ELEMENT?a:t)(i-r);return s.set(e.subarray(r,i)),s}(o,0,m)},S=new t(0);var U="undefined"!=typeof TextDecoder&&new TextDecoder;try{U.decode(S,{stream:!0}),1}catch(e){}var E=function(e,n){return F(e.subarray(function(e){31==e[0]&&139==e[1]&&8==e[2]||x(6,"invalid gzip data");var t=e[3],n=10;4&t&&(n+=e[10]|2+(e[11]<<8));for(var a=(t>>3&1)+(t>>4&1);a>0;a-=!e[n++]);return n+(2&t)}(e),-8),n||new t((r=(a=e).length,(a[r-4]|a[r-3]<<8|a[r-2]<<16|a[r-1]<<24)>>>0)));var a,r},L=(e,t)=>{if(0===e.length)return 0;let n=[];for(const t of e)n[t.location]=n[t.location]||0,n[t.location]+=t.balanced_score;if(n.length<=t)return 0;let a=n.slice(0,t).reduce(((e,t)=>e+t),0),r=a,i=[0];for(let e=0;e<n.length;e++){r+=(n[e+t]??0)-(n[e]??0),r>a?(a=r,i=[e]):r===a&&i[i.length-1]===e-1&&i.push(e)}return i[Math.floor(i.length/2)]},A=(e,t,n,a,r,i)=>{let s=e.includes(""),o=[];o=s?e.split(""):e.split(/[\r\n\s]+/g);for(let e of a)o[e]?.startsWith("<mark>")||(o[e]=`<mark>${o[e]}</mark>`);let l=i??o.length,c=r??0;return l-c<n&&(n=l-c),t+n>l&&(t=l-n),t<c&&(t=c),o.slice(t,t+n).join(s?"":" ").trim()},I=async(e=100)=>new Promise((t=>setTimeout(t,e))),M=class{constructor(t={}){this.version="1.0.4",this.backend=e,this.decoder=new TextDecoder("utf-8"),this.wasm=null,this.basePath=t.basePath||"/pagefind/",this.primary=t.primary||!1,this.primary&&!t.basePath&&this.initPrimary(),/[^\/]$/.test(this.basePath)&&(this.basePath=`${this.basePath}/`),window?.location?.origin&&this.basePath.startsWith(window.location.origin)&&(this.basePath=this.basePath.replace(window.location.origin,"")),this.baseUrl=t.baseUrl||this.defaultBaseUrl(),/^(\/|https?:\/\/)/.test(this.baseUrl)||(this.baseUrl=`/${this.baseUrl}`),this.indexWeight=t.indexWeight??1,this.excerptLength=t.excerptLength??30,this.mergeFilter=t.mergeFilter??{},this.highlightParam=t.highlightParam??null,this.loaded_chunks={},this.loaded_filters={},this.loaded_fragments={},this.raw_ptr=null,this.searchMeta=null,this.languages=null}initPrimary(){let e=import.meta.url.match(/^(.*\/)pagefind.js.*$/)?.[1];e?this.basePath=e:console.warn(["Pagefind couldn't determine the base of the bundle from the import path. Falling back to the default.","Set a basePath option when initialising Pagefind to ignore this message."].join("\n"))}defaultBaseUrl(){let e=this.basePath.match(/^(.*\/)_?pagefind/)?.[1];return e||"/"}async options(e){const t=["basePath","baseUrl","indexWeight","excerptLength","mergeFilter","highlightParam"];for(const[n,a]of Object.entries(e))if("mergeFilter"===n){let e=this.stringifyFilters(a),t=await this.getPtr();this.raw_ptr=this.backend.add_synthetic_filter(t,e)}else t.includes(n)?("basePath"===n&&"string"==typeof a&&(this.basePath=a),"baseUrl"===n&&"string"==typeof a&&(this.baseUrl=a),"indexWeight"===n&&"number"==typeof a&&(this.indexWeight=a),"excerptLength"===n&&"number"==typeof a&&(this.excerptLength=a),"mergeFilter"===n&&"object"==typeof a&&(this.mergeFilter=a),"highlightParam"===n&&"string"==typeof a&&(this.highlightParam=a)):console.warn(`Unknown Pagefind option ${n}. Allowed options: [${t.join(", ")}]`)}decompress(e,t="unknown file"){return"pagefind_dcd"===this.decoder.decode(e.slice(0,12))?e.slice(12):(e=E(e),"pagefind_dcd"!==this.decoder.decode(e.slice(0,12))?(console.error(`Decompressing ${t} appears to have failed: Missing signature`),e):e.slice(12))}async init(e,t){await this.loadEntry();let n=this.findIndex(e),a=n.wasm?n.wasm:"unknown",r=[this.loadMeta(n.hash)];if(!0===t.load_wasm&&r.push(this.loadWasm(a)),await Promise.all(r),this.raw_ptr=this.backend.init_pagefind(new Uint8Array(this.searchMeta)),Object.keys(this.mergeFilter)?.length){let e=this.stringifyFilters(this.mergeFilter),t=await this.getPtr();this.raw_ptr=this.backend.add_synthetic_filter(t,e)}}async loadEntry(){try{let e=await fetch(`${this.basePath}pagefind-entry.json?ts=${Date.now()}`),t=await e.json();this.languages=t.languages,t.version!==this.version&&(this.primary?console.warn(["Pagefind JS version doesn't match the version in your search index.",`Pagefind JS: ${this.version}. Pagefind index: ${t.version}`,"If you upgraded Pagefind recently, you likely have a cached pagefind.js file.","If you encounter any search errors, try clearing your cache."].join("\n")):console.warn(["Merging a Pagefind index from a different version than the main Pagefind instance.",`Main Pagefind JS: ${this.version}. Merged index (${this.basePath}): ${t.version}`,"If you encounter any search errors, make sure that both sites are running the same version of Pagefind."].join("\n")))}catch(e){throw console.error(`Failed to load Pagefind metadata:\n${e?.toString()}`),new Error("Failed to load Pagefind metadata")}}findIndex(e){if(this.languages){let t=this.languages[e];if(t)return t;if(t=this.languages[e.split("-")[0]],t)return t;let n=Object.values(this.languages).sort(((e,t)=>t.page_count-e.page_count));if(n[0])return n[0]}throw new Error("Pagefind Error: No language indexes found.")}async loadMeta(e){try{let t=await fetch(`${this.basePath}pagefind.${e}.pf_meta`),n=await t.arrayBuffer();this.searchMeta=this.decompress(new Uint8Array(n),"Pagefind metadata")}catch(e){console.error(`Failed to load the meta index:\n${e?.toString()}`)}}async loadWasm(e){try{const t=`${this.basePath}wasm.${e}.pagefind`;let n=await fetch(t),a=await n.arrayBuffer();const r=this.decompress(new Uint8Array(a),"Pagefind WebAssembly");if(!r)throw new Error("No WASM after decompression");this.wasm=await this.backend(r)}catch(e){throw console.error(`Failed to load the Pagefind WASM:\n${e?.toString()}`),new Error(`Failed to load the Pagefind WASM:\n${e?.toString()}`)}}async _loadGenericChunk(e,t){try{let n=await fetch(e),a=await n.arrayBuffer(),r=this.decompress(new Uint8Array(a),e),i=await this.getPtr();this.raw_ptr=this.backend[t](i,r)}catch(t){console.error(`Failed to load the index chunk ${e}:\n${t?.toString()}`)}}async loadChunk(e){if(!this.loaded_chunks[e]){const t=`${this.basePath}index/${e}.pf_index`;this.loaded_chunks[e]=this._loadGenericChunk(t,"load_index_chunk")}return await this.loaded_chunks[e]}async loadFilterChunk(e){if(!this.loaded_filters[e]){const t=`${this.basePath}filter/${e}.pf_filter`;this.loaded_filters[e]=this._loadGenericChunk(t,"load_filter_chunk")}return await this.loaded_filters[e]}async _loadFragment(e){let t=await fetch(`${this.basePath}fragment/${e}.pf_fragment`),n=await t.arrayBuffer(),a=this.decompress(new Uint8Array(n),`Fragment ${e}`);return JSON.parse((new TextDecoder).decode(a))}async loadFragment(e,t=[],n){this.loaded_fragments[e]||(this.loaded_fragments[e]=this._loadFragment(e));let a=await this.loaded_fragments[e];a.weighted_locations=t,a.locations=t.map((e=>e.location)),a.raw_content||(a.raw_content=a.content.replace(/</g,"&lt;").replace(/>/g,"&gt;"),a.content=a.content.replace(/\u200B/g,"")),a.raw_url||(a.raw_url=a.url),a.url=this.processedUrl(a.raw_url,n);const r=L(t,this.excerptLength);return a.excerpt=A(a.raw_content,r,this.excerptLength,a.locations),a.sub_results=((e,t)=>{const n=e.anchors.filter((e=>/h\d/i.test(e.element)&&e.text?.length&&/\S/.test(e.text))).sort(((e,t)=>e.location-t.location)),a=[];let r=0,i={title:e.meta.title,url:e.url,weighted_locations:[],locations:[],excerpt:""};const s=n=>{if(i.locations.length){const s=i.weighted_locations.map((e=>({weight:e.weight,balanced_score:e.balanced_score,location:e.location-r}))),o=L(s,t)+r,l=n?Math.min(n-o,t):t;i.excerpt=A(e.raw_content??"",o,l,i.locations,r,n),a.push(i)}};for(let t of e.weighted_locations)if(!n.length||t.location<n[0].location)i.weighted_locations.push(t),i.locations.push(t.location);else{let a=n.shift();for(s(a.location);n.length&&t.location>=n[0].location;)a=n.shift();let o=e.url;try{if(/^((https?:)?\/\/)/.test(o)){let e=new URL(o);e.hash=a.id,o=e.toString()}else{/^\//.test(o)||(o=`/${o}`);let e=new URL(`https://example.com${o}`);e.hash=a.id,o=e.toString().replace(/^https:\/\/example.com/,"")}}catch(e){console.error(`Pagefind: Couldn't process ${o} for a search result`)}r=a.location,i={title:a.text,url:o,anchor:a,weighted_locations:[t],locations:[t.location],excerpt:""}}return s(n[0]?.location),a})(a,this.excerptLength),a}fullUrl(e){return/^(https?:)?\/\//.test(e)?e:`${this.baseUrl}/${e}`.replace(/\/+/g,"/").replace(/^(https?:\/)/,"$1/")}processedUrl(e,t){const n=this.fullUrl(e);if(null===this.highlightParam)return n;let a=t.split(/\s+/);try{let e=new URL(n);for(const t of a)e.searchParams.append(this.highlightParam,t);return e.toString()}catch(e){try{let e=new URL(`https://example.com${n}`);for(const t of a)e.searchParams.append(this.highlightParam,t);return e.toString().replace(/^https:\/\/example\.com/,"")}catch(e){return n}}}async getPtr(){for(;null===this.raw_ptr;)await I(50);if(!this.raw_ptr)throw console.error("Pagefind: WASM Error (No pointer)"),new Error("Pagefind: WASM Error (No pointer)");return this.raw_ptr}parseFilters(e){let t={};if(!e)return t;for(const n of e.split("__PF_FILTER_DELIM__")){let[e,a]=n.split(/:(.*)$/);if(t[e]={},a)for(const n of a.split("__PF_VALUE_DELIM__"))if(n){let a=n.match(/^(.*):(\d+)$/);if(a){let[,n,r]=a;t[e][n]=parseInt(r)??r}}}return t}stringifyFilters(e={}){return JSON.stringify(e)}stringifySorts(e={}){let t=Object.entries(e);for(let[e,n]of t)return t.length>1&&console.warn(`Pagefind was provided multiple sort options in this search, but can only operate on one. Using the ${e} sort.`),"asc"!==n&&"desc"!==n&&console.warn(`Pagefind was provided a sort with unknown direction ${n}. Supported: [asc, desc]`),`${e}:${n}`;return""}async filters(){let e=await this.getPtr(),t=this.backend.request_all_filter_indexes(e).split(" ").filter((e=>e)).map((e=>this.loadFilterChunk(e)));await Promise.all([...t]),e=await this.getPtr();let n=this.backend.filters(e);return this.parseFilters(n)}async preload(e,t={}){await this.search(e,{...t,preload:!0})}async search(e,t={}){t={verbose:!1,filters:{},sort:{},...t};const n=e=>{t.verbose&&console.log(e)};n(`Starting search on ${this.basePath}`);let a=Date.now(),r=await this.getPtr(),i=null===e,s=/^\s*".+"\s*$/.test(e=e??"");if(s&&n("Running an exact search"),e=e.toLowerCase().trim().replace(/[\.`~!@#\$%\^&\*\(\)\{\}\[\]\\\|:;'",<>\/\?\-]/g,"").replace(/\s{2,}/g," ").trim(),n(`Normalized search term to ${e}`),!e?.length&&!i)return{results:[],unfilteredResultCount:0,filters:{},totalFilters:{},timings:{preload:Date.now()-a,search:Date.now()-a,total:Date.now()-a}};let o=this.stringifySorts(t.sort);n(`Stringified sort to ${o}`);const l=this.stringifyFilters(t.filters);n(`Stringified filters to ${l}`);let c=this.backend.request_indexes(r,e),h=this.backend.request_filter_indexes(r,l),d=c.split(" ").filter((e=>e)).map((e=>this.loadChunk(e))),f=h.split(" ").filter((e=>e)).map((e=>this.loadFilterChunk(e)));if(await Promise.all([...d,...f]),n("Loaded necessary chunks to run search"),t.preload)return n("Preload — bailing out of search operation now."),null;r=await this.getPtr();let u=Date.now(),g=this.backend.search(r,e,l,o,s);n(`Got the raw search result: ${g}`);let[_,w,p,m]=g.split(/:([^:]*):(.*)__PF_UNFILTERED_DELIM__(.*)$/),y=this.parseFilters(p),b=this.parseFilters(m);n(`Remaining filters: ${JSON.stringify(g)}`);let P=w.length?w.split(" "):[],v=P.map((t=>{let[a,r,i]=t.split("@");n(`Processing result: \n hash:${a}\n score:${r}\n locations:${i}`);let s=i.length?i.split(",").map((e=>{let[t,n,a]=e.split(">");return{weight:parseInt(t)/24,balanced_score:parseFloat(n),location:parseInt(a)}})):[],o=s.map((e=>e.location));return{id:a,score:parseFloat(r)*this.indexWeight,words:o,data:async()=>await this.loadFragment(a,s,e)}}));const k=Date.now()-u,$=Date.now()-a;return n(`Found ${P.length} result${1==P.length?"":"s"} for "${e}" in ${Date.now()-u}ms (${Date.now()-a}ms realtime)`),{results:v,unfilteredResultCount:parseInt(_),filters:y,totalFilters:b,timings:{preload:$-k,search:k,total:$}}}},W=class{constructor(t={}){this.backend=e,this.primaryLanguage="unknown",this.searchID=0,this.primary=new M({...t,primary:!0}),this.instances=[this.primary],this.init(t?.language)}async options(e){await this.primary.options(e)}async init(e){if(document?.querySelector){const e=document.querySelector("html")?.getAttribute("lang")||"unknown";this.primaryLanguage=e.toLocaleLowerCase()}await this.primary.init(e||this.primaryLanguage,{load_wasm:!0})}async mergeIndex(e,t={}){if(this.primary.basePath.startsWith(e))return void console.warn(`Skipping mergeIndex ${e} that appears to be the same as the primary index (${this.primary.basePath})`);let n=new M({primary:!1,basePath:e});for(this.instances.push(n);null===this.primary.wasm;)await I(50);await n.init(t.language||this.primaryLanguage,{load_wasm:!1}),delete t.language,await n.options(t)}mergeFilters(e){const t={};for(const n of e)for(const[e,a]of Object.entries(n))if(t[e]){const n=t[e];for(const[e,t]of Object.entries(a))n[e]=(n[e]||0)+t}else t[e]=a;return t}async filters(){let e=await Promise.all(this.instances.map((e=>e.filters())));return this.mergeFilters(e)}async preload(e,t={}){await Promise.all(this.instances.map((n=>n.preload(e,t))))}async debouncedSearch(e,t,n){const a=++this.searchID;if(this.preload(e,t),await I(n),a!==this.searchID)return null;const r=await this.search(e,t);return a!==this.searchID?null:r}async search(e,t={}){let n=await Promise.all(this.instances.map((n=>n.search(e,t))));const a=this.mergeFilters(n.map((e=>e.filters))),r=this.mergeFilters(n.map((e=>e.totalFilters))),i=n.map((e=>e.results)).flat().sort(((e,t)=>t.score-e.score)),s=n.map((e=>e.timings));return{results:i,unfilteredResultCount:n.reduce(((e,t)=>e+t.unfilteredResultCount),0),filters:a,totalFilters:r,timings:s}}},D=void 0,R=void 0,j=()=>{D||(D=new W(R??{}))},C=async e=>{D?await D.options(e):R=e},T=async()=>{j()},q=async()=>{D=void 0,R=void 0},N=async(e,t)=>(j(),await D.mergeIndex(e,t)),O=async(e,t)=>(j(),await D.search(e,t)),B=async(e,t,n=300)=>(j(),await D.debouncedSearch(e,t,n)),J=async(e,t)=>(j(),await D.preload(e,t)),G=async()=>(j(),await D.filters());export{B as debouncedSearch,q as destroy,G as filters,T as init,N as mergeIndex,C as options,J as preload,O as search};