From a7244a2983538f373c0af2ecfa4d6377584b8063 Mon Sep 17 00:00:00 2001 From: Hysterelius <71912794+Hysterelius@users.noreply.github.com> Date: Sun, 21 Jul 2024 01:33:32 +1000 Subject: [PATCH] Add pagefind search to abridge (#179) * Start process of adding pagefind to abridge * Write to static to make index appear in public * Add multilingual support * Minify files and fix running in script * Add pagefind files * Add loading of pagefind data * Update gitignore to remove pagefind index files * Get basic search result surfacing working * Remove duplicate entries in search results * Sanitise except to remove unnecessary details * Finalise addition of pagefind * Add missing await * Fix config.toml and remove old files on rebuild * Finish chores on pagefind addition --- .gitignore | 3 + config.toml | 4 +- package.json | 9 +- package_abridge.js | 17 +- static/js/abridge.min.js | 3 +- static/js/abridge_nopwa.min.js | 3 +- static/js/pagefind-entry.json | 1 + static/js/pagefind-highlight.js | 1069 +++++++++++++++++++++++++++++ static/js/pagefind-modular-ui.css | 214 ++++++ static/js/pagefind-modular-ui.js | 8 + static/js/pagefind-ui.css | 1 + static/js/pagefind-ui.js | 2 + static/js/pagefind.index.js | 121 ++++ static/js/pagefind.js | 9 + static/js/pagefind.search.js | 247 +++++++ static/js/search.js | 6 +- static/js/searchChange.js | 69 ++ static/js/wasm.en.pagefind | Bin 0 -> 70887 bytes static/js/wasm.es.pagefind | Bin 0 -> 70956 bytes static/js/wasm.fr.pagefind | Bin 0 -> 71073 bytes static/js/wasm.unknown.pagefind | Bin 0 -> 66823 bytes static/sw.js | 2 +- static/sw.min.js | 2 +- templates/partials/head_js.html | 2 +- 24 files changed, 1778 insertions(+), 14 deletions(-) create mode 100644 static/js/pagefind-entry.json create mode 100644 static/js/pagefind-highlight.js create mode 100644 static/js/pagefind-modular-ui.css create mode 100644 static/js/pagefind-modular-ui.js create mode 100644 static/js/pagefind-ui.css create mode 100644 static/js/pagefind-ui.js create mode 100644 static/js/pagefind.index.js create mode 100644 static/js/pagefind.js create mode 100644 static/js/pagefind.search.js create mode 100644 static/js/searchChange.js create mode 100644 static/js/wasm.en.pagefind create mode 100644 static/js/wasm.es.pagefind create mode 100644 static/js/wasm.fr.pagefind create mode 100644 static/js/wasm.unknown.pagefind diff --git a/.gitignore b/.gitignore index e4227f1d..4929e66a 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,6 @@ static/tinysearch_engine.js static/tinysearch_engine.d.ts static/tinysearch_engine_bg.wasm.d.ts static/package.json +static/js/pagefind.*.pf_meta +static/js/index +static/js/fragment \ No newline at end of file diff --git a/config.toml b/config.toml index c2300d5e..d82748ea 100644 --- a/config.toml +++ b/config.toml @@ -24,7 +24,7 @@ taxonomies = [ #hard_link_static = false # set to true to hard link instead of copying, useful for very large files. [search] # Options specific to elasticlunr search. -# index format can be: elasticlunr_json or elasticlunr_javascript +# index format can be: elasticlunr_json or elasticlunr_javascript or fuse_json index_format = "elasticlunr_json" include_title = true # include title of page/section in index include_description = true # include description of page/section in index @@ -212,7 +212,7 @@ js_prestyle = true # used to preload: FontAwesome, Katex, external Google Fonts js_switcher = true # The button that allows manually changing between light/dark mode. js_switcher_default = "dark" # default nojs switcher mode: dark, light (make sure to also set $switcherDefault in abridge.scss) -search_library = 'elasticlunr' +search_library = "elasticlunr" stylesheets = ["abridge.css"] webmanifest = "manifest.min.json" # Required for PWAs diff --git a/package.json b/package.json index bfbf0eb6..0e629b2c 100644 --- a/package.json +++ b/package.json @@ -6,12 +6,15 @@ "license": "MIT", "homepage": "https://github.com/Jieiku/abridge", "scripts": { - "abridge": "node -e \"if ( require('fs').existsSync('./themes/abridge/package_abridge.js')) {require('fs').copyFileSync('./themes/abridge/package_abridge.js', './package_abridge.js')}\" && node package_abridge.js" + "abridge": "node -e \"if ( require('fs').existsSync('./themes/abridge/package_abridge.js')) {require('fs').copyFileSync('./themes/abridge/package_abridge.js', './package_abridge.js')}\" && node package_abridge.js", + "search:pagefind": "node -e \"if ( require('fs').existsSync('./themes/abridge/static/js/searchChange.js')) {require('fs').copyFileSync('./themes/abridge/static/js/searchChange.js', './static/js/searchChange.js')}\" && node ./static/js/searchChange.js --pagefind", + "search:elasticlunr": "node -e \"if ( require('fs').existsSync('./themes/abridge/static/js/searchChange.js')) {require('fs').copyFileSync('./themes/abridge/static/js/searchChange.js', './static/js/searchChange.js')}\" && node ./static/js/searchChange.js --elasticlunr" }, "dependencies": { "fast-toml": "^0.5.4", - "uglify-js": "^3.17.4", "jsonminify": "^0.4.2", - "replace-in-file": "^7.0.1" + "pagefind": "^1.1.0", + "replace-in-file": "^7.0.1", + "uglify-js": "^3.17.4" } } diff --git a/package_abridge.js b/package_abridge.js index 137fccc5..a15f3d3f 100644 --- a/package_abridge.js +++ b/package_abridge.js @@ -115,6 +115,18 @@ async function abridge() { replace.sync({files: 'content/static/tinysearch_json.md', from: /draft.*=.*/g, to: "draft = true"}); } // zola build && stork build --input public/data_stork/index.html --output static/stork.st + } else if (search_library === 'pagefind') { + if (fs.existsSync('content/static/stork_toml.md')) { + replace.sync({files: 'content/static/stork_toml.md', from: /draft.*=.*/g, to: "draft = true"}); + } + if (fs.existsSync('content/static/tinysearch_json.md')) { + replace.sync({files: 'content/static/tinysearch_json.md', from: /draft.*=.*/g, to: "draft = true"}); + } + + // Run the pagefind script to generate the index files. + // Has to happen at start otherwise, it happens too late asyncronously. + const createIndex = require('./static/js/pagefind.index.js'); // run the pagefind index.js script + await createIndex(); // makes program wait for pagefind build execution } if (pwa) {// Update pwa settings, file list, and hashes. @@ -185,7 +197,7 @@ async function abridge() { } if (bpath === '') {// abridge used directly - // These are truely static js files, so they should only need to be updated by abridge maintainer or contributors. + // These are truely static js files, so they should only need to be updated by the abridge maintainer or contributors. minify(['static/js/theme.js']); minify(['static/js/theme_light.js']); minify(['static/js/katex.min.js','static/js/mathtex-script-type.min.js','static/js/katex-auto-render.min.js','static/js/katexoptions.js'],'static/js/katexbundle.min.js'); @@ -254,6 +266,9 @@ function bundle(bpath,js_prestyle,js_switcher,js_email_encode,js_copycode,search minify_files.push(bpath+'static/js/stork_config.js'); } else if (search_library === 'tinysearch') { minify_files.push(bpath+'static/js/tinysearch.js'); + } else if (search_library === 'pagefind') { + minify_files.push(bpath+'static/js/pagefind.js'); + minify_files.push(bpath+'static/js/pagefind.search.js'); } } if (pwa) { diff --git a/static/js/abridge.min.js b/static/js/abridge.min.js index bfb6a8b6..7de0fea4 100644 --- a/static/js/abridge.min.js +++ b/static/js/abridge.min.js @@ -1 +1,2 @@ -let items=document.querySelectorAll(".preStyle"),changeIcon=(items.forEach(e=>{e.rel="stylesheet"}),document.getElementById("mode")&&document.getElementById("mode").addEventListener("click",()=>{document.documentElement.classList.toggle("switch"),localStorage.setItem("theme",document.documentElement.classList.contains("switch")?"switch":"default")}),!function(){for(var e=document.getElementsByClassName("m-protected"),t=0;t{e.classList.add(t),setTimeout(()=>e.classList.remove(t),2500)}),copyCodeAndChangeIcon=async(t,e)=>{e=(e.querySelector("table")?getTableCode:getNonTableCode)(e);try{await navigator.clipboard.writeText(e),changeIcon(t,"yes")}catch(e){changeIcon(t,"err")}},getNonTableCode=e=>[...e.querySelectorAll("code")].map(e=>e.textContent).join(""),getTableCode=e=>[...e.querySelectorAll("tr")].map(e=>e.querySelector("td:last-child")?.innerText??"").join("");document.querySelectorAll("pre").forEach(e=>{let t=document.createElement("div");t.className="cc svgs svgh copy",t.innerHTML=" ",e.prepend(t),t.addEventListener("click",()=>copyCodeAndChangeIcon(t,e))}),function(){function g(e){var t=new g.Index;return t.pipeline.add(g.trimmer,g.stopWordFilter,g.stemmer),e&&e.call(t,t),t}var a,c,e,t,d,h,f,p,m,v,y,S,x,b,w,I,E,C,D,F,k,L,_,N,n;g.version="0.9.5",((lunr=g).utils={}).warn=(n=this,function(e){n.console}),g.utils.toString=function(e){return null==e?"":e.toString()},(g.EventEmitter=function(){this.events={}}).prototype.addListener=function(){var e=[].slice.call(arguments),t=e.pop();if("function"!=typeof t)throw new TypeError("last argument must be a function");e.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},g.EventEmitter.prototype.removeListener=function(e,t){this.hasHandler(e)&&-1!=(t=this.events[e].indexOf(t))&&(this.events[e].splice(t,1),0==this.events[e].length)&&delete this.events[e]},g.EventEmitter.prototype.emit=function(e){var t;this.hasHandler(e)&&(t=[].slice.call(arguments,1),this.events[e].forEach(function(e){e.apply(void 0,t)},this))},g.EventEmitter.prototype.hasHandler=function(e){return e in this.events},(g.tokenizer=function(e){var t,n;return arguments.length&&null!=e?Array.isArray(e)?(t=(t=e.filter(function(e){return null!=e})).map(function(e){return g.utils.toString(e).toLowerCase()}),n=[],t.forEach(function(e){e=e.split(g.tokenizer.seperator);n=n.concat(e)},this),n):e.toString().trim().toLowerCase().split(g.tokenizer.seperator):[]}).defaultSeperator=/[\s\-]+/,g.tokenizer.seperator=g.tokenizer.defaultSeperator,g.tokenizer.setSeperator=function(e){null!=e&&"object"==typeof e&&(g.tokenizer.seperator=e)},g.tokenizer.resetSeperator=function(){g.tokenizer.seperator=g.tokenizer.defaultSeperator},g.tokenizer.getSeperator=function(){return g.tokenizer.seperator},(g.Pipeline=function(){this._queue=[]}).registeredFunctions={},g.Pipeline.registerFunction=function(e,t){t in g.Pipeline.registeredFunctions&&g.utils.warn("Overwriting existing registered function: "+t),e.label=t,g.Pipeline.registeredFunctions[t]=e},g.Pipeline.getRegisteredFunction=function(e){return e in g.Pipeline.registeredFunctions!=1?null:g.Pipeline.registeredFunctions[e]},g.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||g.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},g.Pipeline.load=function(e){var n=new g.Pipeline;return e.forEach(function(e){var t=g.Pipeline.getRegisteredFunction(e);if(!t)throw Error("Cannot load un-registered function: "+e);n.add(t)}),n},g.Pipeline.prototype.add=function(){[].slice.call(arguments).forEach(function(e){g.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},g.Pipeline.prototype.after=function(e,t){g.Pipeline.warnIfFunctionNotRegistered(t);e=this._queue.indexOf(e);if(-1==e)throw Error("Cannot find existingFn");this._queue.splice(1+e,0,t)},g.Pipeline.prototype.before=function(e,t){g.Pipeline.warnIfFunctionNotRegistered(t);e=this._queue.indexOf(e);if(-1==e)throw Error("Cannot find existingFn");this._queue.splice(e,0,t)},g.Pipeline.prototype.remove=function(e){e=this._queue.indexOf(e);-1!=e&&this._queue.splice(e,1)},g.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,o=this._queue.length,i=0;i=n&&r-1>=o;)s[n]!==u[o]?s[n]u[o]&&o++:(t.add(s[n]),n++,o++);return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){for(var t,e=this.length

'.concat(document.getElementById("searchinput").value,"

");return o.innerHTML=i,n.insertBefore(o,n.firstChild),e.innerHTML=n.outerHTML,t.innerHTML="",document.getElementById("searchinput").value="",document.body.contains(document.closeSearch)&&(document.closeSearch.onsubmit=function(){document.querySelector("main").innerHTML=window.main}),!1}function b(e){return e=parseInt(e,16).toString(2),[0,1,2,3,4][Math.ceil(e.length/8)]}var u,r,l,c,h;document.body.contains(document.goSearch)&&(document.goSearch.onsubmit=function(){return goSearchNow()},u=document.getElementById("suggestions"),r=document.getElementById("searchinput"),document.addEventListener("keydown",function(t){if(191===t.keyCode&&"INPUT"!==document.activeElement.tagName&&"TEXTAREA"!==document.activeElement.tagName&&(t.preventDefault(),r.focus(),u.classList.remove("d-none")),27===t.keyCode){r.blur(),u.classList.add("d-none");for(var e=document.getElementById("suggestions");e.firstChild;)e.removeChild(e.firstChild)}var n=u.querySelectorAll("a");if(!u.classList.contains("d-none")&&0!==n.length){var o=[...n],i=o.indexOf(document.activeElement);let e=0;38===t.keyCode?(t.preventDefault(),n[e=0",a=n.querySelector("a"),t=n.querySelector("span:first-child"),d=n.querySelector("span:nth-child(2)"),a.href=e.ref,t.textContent=e.doc.title,d.innerHTML=function(e,t){var n=t.map(function(e){return elasticlunr.stemmer(e.toLowerCase())}),o=!1,i=0,r=[],s=e.toLowerCase().split(". ");for(p in s){var u,l=s[p].split(/[\s\n]/),a=8;for(u in l){if(0<(S=l[u]).length){for(var c in n)elasticlunr.stemmer(S).startsWith(n[c])&&(a=40,o=!0);r.push([S,a,i]),a=2}i=i+S.length+1}i+=1}if(0===r.length)return void 0!==e.length&&300"),y=S[2]+S[0].length;40===S[1]||S[0].length<12||/^[\x00-\xff]+$/.test(S[0])?v.push(e.substring(S[2],y)):(x=function(e,t){for(var n="",o=!1,i=0,r=0,s=0,u=0;u")}return v.push("…"),v.join("")}(e.doc.body,s),u.appendChild(n))});i.length>r;)u.removeChild(i[0])},!0),u.addEventListener("click",function(){for(;u.lastChild;)u.removeChild(u.lastChild);return!1},!0),document.goSearch.onsubmit=e)},"serviceWorker"in navigator&&(navigator.serviceWorker.register("/sw.min.js?v=3.11.0",{scope:"/"}).then(()=>{},e=>{}),navigator.serviceWorker.ready.then(()=>{})); \ No newline at end of file +function gunzipSync(e,t){return inflt(e.subarray(gzs(e),-8),t||new u8(gzl(e)))}let items=document.querySelectorAll(".preStyle"),changeIcon=(items.forEach(e=>{e.rel="stylesheet"}),document.getElementById("mode")&&document.getElementById("mode").addEventListener("click",()=>{document.documentElement.classList.toggle("switch"),localStorage.setItem("theme",document.documentElement.classList.contains("switch")?"switch":"default")}),!function(){for(var e=document.getElementsByClassName("m-protected"),t=0;t{e.classList.add(t),setTimeout(()=>e.classList.remove(t),2500)}),copyCodeAndChangeIcon=async(t,e)=>{e=(e.querySelector("table")?getTableCode:getNonTableCode)(e);try{await navigator.clipboard.writeText(e),changeIcon(t,"yes")}catch(e){changeIcon(t,"err")}},getNonTableCode=e=>[...e.querySelectorAll("code")].map(e=>e.textContent).join(""),getTableCode=e=>[...e.querySelectorAll("tr")].map(e=>e.querySelector("td:last-child")?.innerText??"").join(""),pagefind_version=(document.querySelectorAll("pre").forEach(e=>{let t=document.createElement("div");t.className="cc svgs svgh copy",t.innerHTML=" ",e.prepend(t),t.addEventListener("click",()=>copyCodeAndChangeIcon(t,e))}),"1.1.0"),wasm_bindgen;!function(){function c(){return o=null!==o&&0!==o.byteLength?o:new Uint8Array(b.memory.buffer)}function r(e,t){t=t(+e.length,1)>>>0;return c().set(e,t),y=e.length,t}function m(t,n,e){if(void 0===e){var r=d.encode(t);let e=n(r.length,1)>>>0;return c().subarray(e,e+r.length).set(r),y=r.length,e}let a=t.length,i=n(a,1)>>>0;var s=c();let o=0;for(;o>>0,r=c().subarray(i+o,i+a),n=h(t,r),o+=n.written,i=e(i,a,o,1)>>>0),y=o,i}function p(){return l=null!==l&&0!==l.byteLength?l:new Int32Array(b.memory.buffer)}function w(e,t){return e>>>=0,u.decode(c().subarray(e,e+t))}function n(){var e={wbg:{}};return e}function a(e,t){return b=e.exports,i.__wbindgen_wasm_module=t,l=null,o=null,b}async function i(e){if(void 0!==b)return b;void 0===e&&void 0!==s&&(e=s.replace(/\.js$/,"_bg.wasm"));var t=n(),{instance:e,module:t}=await async function(t,e){if("function"==typeof Response&&t instanceof Response){if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(t,e)}catch(e){if("application/wasm"==t.headers.get("Content-Type"))throw e}var n=await t.arrayBuffer();return WebAssembly.instantiate(n,e)}return(n=await WebAssembly.instantiate(t,e))instanceof WebAssembly.Instance?{instance:n,module:t}:n}(await(e="string"==typeof e||"function"==typeof Request&&e instanceof Request||"function"==typeof URL&&e instanceof URL?fetch(e):e),t);return a(e,t)}var e={};let s,b=("undefined"!=typeof document&&null!==document.currentScript&&(s=new URL("UNHANDLED",location.href).toString()),void 0),o=null,y=0,d=(e.init_pagefind=function(e){var e=r(e,b.__wbindgen_malloc),t=y;return b.init_pagefind(e,t)>>>0},"undefined"!=typeof TextEncoder?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}}),h="function"==typeof d.encodeInto?function(e,t){return d.encodeInto(e,t)}:function(e,t){var n=d.encode(e);return t.set(n),{read:e.length,written:n.length}},l=(e.set_ranking_weights=function(e,t){var t=m(t,b.__wbindgen_malloc,b.__wbindgen_realloc),n=y;return b.set_ranking_weights(e,t,n)>>>0},e.load_index_chunk=function(e,t){var t=r(t,b.__wbindgen_malloc),n=y;return b.load_index_chunk(e,t,n)>>>0},e.load_filter_chunk=function(e,t){var t=r(t,b.__wbindgen_malloc),n=y;return b.load_filter_chunk(e,t,n)>>>0},e.add_synthetic_filter=function(e,t){var t=m(t,b.__wbindgen_malloc,b.__wbindgen_realloc),n=y;return b.add_synthetic_filter(e,t,n)>>>0},null),u="undefined"!=typeof TextDecoder?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};"undefined"!=typeof TextDecoder&&u.decode(),e.request_indexes=function(e,t){let n,r;try{var a=b.__wbindgen_add_to_stack_pointer(-16),i=m(t,b.__wbindgen_malloc,b.__wbindgen_realloc),s=y,o=(b.request_indexes(a,e,i,s),p()[a/4+0]),l=p()[a/4+1];return w(n=o,r=l)}finally{b.__wbindgen_add_to_stack_pointer(16),b.__wbindgen_free(n,r,1)}},e.request_filter_indexes=function(e,t){let n,r;try{var a=b.__wbindgen_add_to_stack_pointer(-16),i=m(t,b.__wbindgen_malloc,b.__wbindgen_realloc),s=y,o=(b.request_filter_indexes(a,e,i,s),p()[a/4+0]),l=p()[a/4+1];return w(n=o,r=l)}finally{b.__wbindgen_add_to_stack_pointer(16),b.__wbindgen_free(n,r,1)}},e.request_all_filter_indexes=function(e){let t,n;try{var r=b.__wbindgen_add_to_stack_pointer(-16),a=(b.request_all_filter_indexes(r,e),p()[r/4+0]),i=p()[r/4+1];return w(t=a,n=i)}finally{b.__wbindgen_add_to_stack_pointer(16),b.__wbindgen_free(t,n,1)}},e.filters=function(e){let t,n;try{var r=b.__wbindgen_add_to_stack_pointer(-16),a=(b.filters(r,e),p()[r/4+0]),i=p()[r/4+1];return w(t=a,n=i)}finally{b.__wbindgen_add_to_stack_pointer(16),b.__wbindgen_free(t,n,1)}},e.search=function(e,t,n,r,a){let i,s;try{var o=b.__wbindgen_add_to_stack_pointer(-16),l=m(t,b.__wbindgen_malloc,b.__wbindgen_realloc),c=y,d=m(n,b.__wbindgen_malloc,b.__wbindgen_realloc),h=y,u=m(r,b.__wbindgen_malloc,b.__wbindgen_realloc),f=y,g=(b.search(o,e,l,c,d,h,u,f,a),p()[o/4+0]),_=p()[o/4+1];return w(i=g,s=_)}finally{b.__wbindgen_add_to_stack_pointer(16),b.__wbindgen_free(i,s,1)}},wasm_bindgen=Object.assign(i,{initSync:function(e){var t;return void 0!==b?b:(t=n(),e instanceof WebAssembly.Module||(e=new WebAssembly.Module(e)),a(new WebAssembly.Instance(e,t),e))}},e)}();var x,u8=Uint8Array,u16=Uint16Array,u32=Uint32Array,fleb=new u8([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]),fdeb=new u8([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]),clim=new u8([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),freb=function(e,t){for(var n=new u16(31),r=0;r<31;++r)n[r]=t+=1<>>1|(21845&i)<<1))>>>2|(13107&x)<<2))>>>4|(3855&x)<<4))>>>8|(255&x)<<8)>>>1;var hMap=function(e,t,n){for(var r=e.length,a=0,i=new u16(t);a>>l]=c}else for(o=new u16(r),a=0;a>>15-e[a]);return o},flt=new u8(288);for(i=0;i<144;++i)flt[i]=8;for(i=144;i<256;++i)flt[i]=9;for(i=256;i<280;++i)flt[i]=7;for(i=280;i<288;++i)flt[i]=8;var i,fdt=new u8(32);for(i=0;i<32;++i)fdt[i]=5;var flrm=hMap(flt,9,1),fdrm=hMap(fdt,5,1),max=function(e){for(var t=e[0],n=1;nt&&(t=e[n]);return t},bits=function(e,t,n){var r=t/8|0;return(e[r]|e[1+r]<<8)>>(7&t)&n},bits16=function(e,t){var n=t/8|0;return(e[n]|e[1+n]<<8|e[2+n]<<16)>>(7&t)},shft=function(e){return(e+7)/8|0},slc=function(e,t,n){null!=n&&n<=e.length||(n=e.length);var r=new(2==e.BYTES_PER_ELEMENT?u16:4==e.BYTES_PER_ELEMENT?u32:u8)(n-(t=null!=t&&0<=t?t:0));return r.set(e.subarray(t,n)),r},ec=["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"],err=function(e,t,n){t=Error(t||ec[e]);if(t.code=e,Error.captureStackTrace&&Error.captureStackTrace(t,err),n)return t;throw t},inflt=function(e,n,t){var r=e.length;if(!r||t&&t.f&&!t.l)return n||new u8(0);function a(e){var t=n.length;t>>4)<16)y[k++]=P;else{var S=0,L=0;for(16==P?(L=3+bits(e,l,3),l+=2,S=y[k-1]):17==P?(L=3+bits(e,l,7),l+=3):18==P&&(L=11+bits(e,l,127),l+=7);L--;)y[k++]=S}}var F=y.subarray(0,m),C=y.subarray(m),u=max(F),f=max(C),d=hMap(F,u,1),h=hMap(C,f,1)}else err(1);if(g>>4;if(g<(l+=15&S)){s&&err(0);break}if(S||err(2),T<256)n[c++]=T;else{if(256==T){I=l,d=null;break}var A,U=T-254,T=(264>>4,C=(T||err(3),l+=15&T,fd[M]);if(3>3&1)+(t>>4&1);0>>0},td="undefined"!=typeof TextDecoder&&new TextDecoder,tds=0;try{td.decode(et,{stream:!0}),tds=1}catch(e){}var gz_default=gunzipSync,calculate_excerpt_region=(e,t)=>{if(0===e.length)return 0;var n,r=[];for(n of e)r[n.location]=r[n.location]||0,r[n.location]+=n.balanced_score;if(r.length<=t)return 0;let a=r.slice(0,t).reduce((e,t)=>e+t,0),i=a,s=[0];for(let e=0;ea?(a=i,s=[e]):i===a&&s[s.length-1]===e-1&&s.push(e)}return s[Math.floor(s.length/2)]},build_excerpt=(e,t,n,r,a,i)=>{var s,o=e.includes("​");let l=[];l=o?e.split("​"):e.split(/[\r\n\s]+/g);for(s of r)l[s]?.startsWith("")||(l[s]=`${l[s]}`);e=i??l.length,r=a??0;return(t=e{var n=r.anchors.filter(e=>/h\d/i.test(e.element)&&e.text?.length&&/\S/.test(e.text)).sort((e,t)=>e.location-t.location);let i=[],s=0,o={title:r.meta.title,url:r.url,weighted_locations:[],locations:[],excerpt:""};var l,c=e=>{var t,n;o.locations.length&&(t=o.weighted_locations.map(e=>({weight:e.weight,balanced_score:e.balanced_score,location:e.location-s})),t=calculate_excerpt_region(t,a)+s,n=e?Math.min(e-t,a):a,o.excerpt=build_excerpt(r.raw_content??"",t,n,o.locations,s,e),i.push(o))};for(l of r.weighted_locations)if(!n.length||l.location=n[0].location;)e=n.shift();let t=r.url;try{var d,h,u=/^((https?:)?\/\/)/.test(t);t=u?((d=new URL(t)).hash=e.id,d.toString()):(/^\//.test(t)||(t="/"+t),(h=new URL("https://example.com"+t)).hash=e.id,h.toString().replace(/^https:\/\/example.com/,""))}catch(e){}s=e.location,o={title:e.text,url:t,anchor:e,weighted_locations:[l],locations:[l.location],excerpt:""}}return c(n[0]?.location),i},asyncSleep=async(t=100)=>new Promise(e=>setTimeout(e,t)),PagefindInstance=class{constructor(e={}){this.version=pagefind_version,this.backend=wasm_bindgen,this.decoder=new TextDecoder("utf-8"),this.wasm=null,this.basePath=e.basePath||"/pagefind/",this.primary=e.primary||!1,this.primary&&!e.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=e.baseUrl||this.defaultBaseUrl(),/^(\/|https?:\/\/)/.test(this.baseUrl)||(this.baseUrl="/"+this.baseUrl),this.indexWeight=e.indexWeight??1,this.excerptLength=e.excerptLength??30,this.mergeFilter=e.mergeFilter??{},this.ranking=e.ranking,this.highlightParam=e.highlightParam??null,this.loaded_chunks={},this.loaded_filters={},this.loaded_fragments={},this.raw_ptr=null,this.searchMeta=null,this.languages=null}initPrimary(){}defaultBaseUrl(){return this.basePath.match(/^(.*\/)_?pagefind/)?.[1]||"/"}async options(e){var t,n,r,a,i=["basePath","baseUrl","indexWeight","excerptLength","mergeFilter","highlightParam","ranking"];for([t,n]of Object.entries(e))"mergeFilter"===t?(r=this.stringifyFilters(n),a=await this.getPtr(),this.raw_ptr=this.backend.add_synthetic_filter(a,r)):"ranking"===t?await this.set_ranking(e.ranking):i.includes(t)&&("basePath"===t&&"string"==typeof n&&(this.basePath=n),"baseUrl"===t&&"string"==typeof n&&(this.baseUrl=n),"indexWeight"===t&&"number"==typeof n&&(this.indexWeight=n),"excerptLength"===t&&"number"==typeof n&&(this.excerptLength=n),"mergeFilter"===t&&"object"==typeof n&&(this.mergeFilter=n),"highlightParam"===t)&&"string"==typeof n&&(this.highlightParam=n)}decompress(e,t=0){return"pagefind_dcd"!==this.decoder.decode(e.slice(0,12))&&(e=gz_default(e),"pagefind_dcd"!==this.decoder.decode(e.slice(0,12)))?e:e.slice(12)}async set_ranking(e){var t;e&&(e={term_similarity:e.termSimilarity??null,page_length:e.pageLength??null,term_saturation:e.termSaturation??null,term_frequency:e.termFrequency??null},t=await this.getPtr(),this.raw_ptr=this.backend.set_ranking_weights(t,JSON.stringify(e)))}async init(e,t){await this.loadEntry();var e=this.findIndex(e),n=e.wasm||"unknown",e=[this.loadMeta(e.hash)];!0===t.load_wasm&&e.push(this.loadWasm(n)),await Promise.all(e),this.raw_ptr=this.backend.init_pagefind(new Uint8Array(this.searchMeta)),Object.keys(this.mergeFilter)?.length&&(t=this.stringifyFilters(this.mergeFilter),n=await this.getPtr(),this.raw_ptr=this.backend.add_synthetic_filter(n,t)),this.ranking&&await this.set_ranking(this.ranking)}async loadEntry(){try{var e=await(await fetch(this.basePath+"pagefind-entry.json?ts="+Date.now())).json();this.languages=e.languages,e.version!==this.version&&this.primary}catch(e){throw Error("Failed to load Pagefind metadata")}}findIndex(e){if(this.languages){var t=this.languages[e];if(t)return t;if(t=this.languages[e.split("-")[0]])return t;e=Object.values(this.languages).sort((e,t)=>t.page_count-e.page_count);if(e[0])return e[0]}throw Error("Pagefind Error: No language indexes found.")}async loadMeta(e){try{var t=await(await fetch(this.basePath+`pagefind.${e}.pf_meta`)).arrayBuffer();this.searchMeta=this.decompress(new Uint8Array(t),"Pagefind metadata")}catch(e){}}async loadWasm(e){try{var t=this.basePath+`wasm.${e}.pagefind`,n=await(await fetch(t)).arrayBuffer(),r=this.decompress(new Uint8Array(n),"Pagefind WebAssembly");if(!r)throw Error("No WASM after decompression");this.wasm=await this.backend(r)}catch(e){throw Error(`Failed to load the Pagefind WASM: +`+e?.toString())}}async _loadGenericChunk(e,t){try{var n=await(await fetch(e)).arrayBuffer(),r=this.decompress(new Uint8Array(n),e),a=await this.getPtr();this.raw_ptr=this.backend[t](a,r)}catch(e){}}async loadChunk(e){var t;return this.loaded_chunks[e]||(t=this.basePath+`index/${e}.pf_index`,this.loaded_chunks[e]=this._loadGenericChunk(t,"load_index_chunk")),this.loaded_chunks[e]}async loadFilterChunk(e){var t;return this.loaded_filters[e]||(t=this.basePath+`filter/${e}.pf_filter`,this.loaded_filters[e]=this._loadGenericChunk(t,"load_filter_chunk")),this.loaded_filters[e]}async _loadFragment(e){var t=await(await fetch(this.basePath+`fragment/${e}.pf_fragment`)).arrayBuffer(),t=this.decompress(new Uint8Array(t),"Fragment "+e);return JSON.parse((new TextDecoder).decode(t))}async loadFragment(e,t=[],n){this.loaded_fragments[e]||(this.loaded_fragments[e]=this._loadFragment(e));e=await this.loaded_fragments[e],e.weighted_locations=t,e.locations=t.map(e=>e.location),e.raw_content||(e.raw_content=e.content.replace(//g,">"),e.content=e.content.replace(/\u200B/g,"")),e.raw_url||(e.raw_url=e.url),e.url=this.processedUrl(e.raw_url,n),n=calculate_excerpt_region(t,this.excerptLength);return e.excerpt=build_excerpt(e.raw_content,n,this.excerptLength,e.locations),e.sub_results=calculate_sub_results(e,this.excerptLength),e}fullUrl(e){return/^(https?:)?\/\//.test(e)?e:(this.baseUrl+"/"+e).replace(/\/+/g,"/").replace(/^(https?:\/)/,"$1/")}processedUrl(t,n){t=this.fullUrl(t);if(null===this.highlightParam)return t;n=n.split(/\s+/);try{var e,r=new URL(t);for(e of n)r.searchParams.append(this.highlightParam,e);return r.toString()}catch(e){try{var a,i=new URL("https://example.com"+t);for(a of n)i.searchParams.append(this.highlightParam,a);return i.toString().replace(/^https:\/\/example\.com/,"")}catch(e){return t}}}async getPtr(){for(;null===this.raw_ptr;)await asyncSleep(50);if(this.raw_ptr)return this.raw_ptr;throw Error("Pagefind: WASM Error (No pointer)")}parseFilters(e){var t={};if(e)for(var n of e.split("__PF_FILTER_DELIM__")){var r,[a,n]=n.split(/:(.*)$/);if(t[a]={},n)for(var i of n.split("__PF_VALUE_DELIM__"))i&&(i=i.match(/^(.*):(\d+)$/))&&([,i,r]=i,t[a][i]=parseInt(r)??r)}return t}stringifyFilters(e={}){return JSON.stringify(e)}stringifySorts(e={}){var t,n,r=Object.entries(e);for([t,n]of r)return r.length,"asc"!==n&&n,t+":"+n;return""}async filters(){var e=await this.getPtr(),t=this.backend.request_all_filter_indexes(e).split(" ").filter(e=>e).map(e=>this.loadFilterChunk(e)),t=(await Promise.all([...t]),e=await this.getPtr(),this.backend.filters(e));return this.parseFilters(t)}async preload(e,t={}){await this.search(e,{...t,preload:!0})}async search(i,t={}){t={verbose:!1,filters:{},sort:{},...t};let s=e=>{t.verbose};s(this.basePath);var e,n,r,a,o=Date.now(),l=await this.getPtr(),c=null===i,d=(i=i??"",/^\s*".+"\s*$/.test(i));return d&&s(),i=i.toLowerCase().trim().replace(/[\.`~!@#\$%\^&\*\(\)\{\}\[\]\\\|:;'",<>\/\?\-]/g,"").replace(/\s{2,}/g," ").trim(),s(),i?.length||c?(c=this.stringifySorts(t.sort),s(),n=this.stringifyFilters(t.filters),s(),r=this.backend.request_indexes(l,i),e=this.backend.request_filter_indexes(l,n),r=r.split(" ").filter(e=>e).map(e=>this.loadChunk(e)),e=e.split(" ").filter(e=>e).map(e=>this.loadFilterChunk(e)),await Promise.all([...r,...e]),s(),t.preload?(s(),null):(l=await this.getPtr(),r=Date.now(),e=this.backend.search(l,i,n,c,d),[l,n,c,d]=(s(),e.split(/:([^:]*):(.*)__PF_UNFILTERED_DELIM__(.*)$/)),c=this.parseFilters(c),d=this.parseFilters(d),s(JSON.stringify(e)),n=(e=n.length?n.split(" "):[]).map(e=>{let[t,n,r]=e.split("@"),a=(s(t),r.length?r.split(",").map(e=>{var[e,t,n]=e.split(">");return{weight:parseInt(e)/24,balanced_score:parseFloat(t),location:parseInt(n)}}):[]);e=a.map(e=>e.location);return{id:t,score:parseFloat(n)*this.indexWeight,words:e,data:async()=>this.loadFragment(t,a,i)}}),r=Date.now()-r,a=Date.now()-o,s((e.length,e.length,Date.now(),Date.now())),{results:n,unfilteredResultCount:parseInt(l),filters:c,totalFilters:d,timings:{preload:a-r,search:r,total:a}})):{results:[],unfilteredResultCount:0,filters:{},totalFilters:{},timings:{preload:Date.now()-o,search:Date.now()-o,total:Date.now()-o}}}},Pagefind=class{constructor(e={}){this.backend=wasm_bindgen,this.primaryLanguage="unknown",this.searchID=0,this.primary=new PagefindInstance({...e,primary:!0}),this.instances=[this.primary],this.init(e?.language)}async options(e){await this.primary.options(e)}async init(e){var t;document?.querySelector&&(t=document.querySelector("html")?.getAttribute("lang")||"unknown",this.primaryLanguage=t.toLocaleLowerCase()),await this.primary.init(e||this.primaryLanguage,{load_wasm:!0})}async mergeIndex(e,t={}){if(!this.primary.basePath.startsWith(e)){e=new PagefindInstance({primary:!1,basePath:e});for(this.instances.push(e);null===this.primary.wasm;)await asyncSleep(50);await e.init(t.language||this.primaryLanguage,{load_wasm:!1}),delete t.language,await e.options(t)}}mergeFilters(e){var t,n={};for(t of e)for(var[r,a]of Object.entries(t))if(n[r]){var i,s,o=n[r];for([i,s]of Object.entries(a))o[i]=(o[i]||0)+s}else n[r]=a;return n}async filters(){var e=await Promise.all(this.instances.map(e=>e.filters()));return this.mergeFilters(e)}async preload(t,n={}){await Promise.all(this.instances.map(e=>e.preload(t,n)))}async debouncedSearch(e,t,n){var r=++this.searchID;return this.preload(e,t),await asyncSleep(n),r!==this.searchID||(n=await this.search(e,t),r!==this.searchID)?null:n}async search(t,n={}){var e=await Promise.all(this.instances.map(e=>e.search(t,n))),r=this.mergeFilters(e.map(e=>e.filters)),a=this.mergeFilters(e.map(e=>e.totalFilters)),i=e.map(e=>e.results).flat().sort((e,t)=>t.score-e.score),s=e.map(e=>e.timings);return{results:i,unfilteredResultCount:e.reduce((e,t)=>e+t.unfilteredResultCount,0),filters:r,totalFilters:a,timings:s}}},pagefind=void 0,initial_options=void 0,init_pagefind=()=>{pagefind=pagefind||new Pagefind(initial_options??{})},options=async e=>{pagefind?await pagefind.options(e):initial_options=e},init=async()=>{init_pagefind()},destroy=async()=>{initial_options=pagefind=void 0},mergeIndex=async(e,t)=>(init_pagefind(),pagefind.mergeIndex(e,t)),search=async(e,t)=>(init_pagefind(),pagefind.search(e,t)),debouncedSearch=async(e,t,n=300)=>(init_pagefind(),pagefind.debouncedSearch(e,t,n)),preload=async(e,t)=>(init_pagefind(),pagefind.preload(e,t)),filters=async()=>(init_pagefind(),pagefind.filters());window.onload=function(){function e(){var e=document.querySelector("main"),t=(window.main||(window.main=e.innerHTML),document.getElementById("suggestions")),n=t.cloneNode(!0),r=(n.id="results",document.createElement("div")),a='

'.concat(document.getElementById("searchinput").value,"

");return r.innerHTML=a,n.insertBefore(r,n.firstChild),e.innerHTML=n.outerHTML,t.innerHTML="",document.getElementById("searchinput").value="",document.body.contains(document.closeSearch)&&(document.closeSearch.onsubmit=function(){document.querySelector("main").innerHTML=window.main}),!1}var c,i,n;document.body.contains(document.goSearch)&&(options({basePath:"/js/"}),init(),document.goSearch.onsubmit=function(){return goSearchNow()},c=document.getElementById("suggestions"),i=document.getElementById("searchinput"),document.addEventListener("keydown",function(t){if(191===t.keyCode&&"INPUT"!==document.activeElement.tagName&&"TEXTAREA"!==document.activeElement.tagName&&(t.preventDefault(),i.focus(),c.classList.remove("d-none")),27===t.keyCode){i.blur(),c.classList.add("d-none");for(var e=document.getElementById("suggestions");e.firstChild;)e.removeChild(e.firstChild)}var n=c.querySelectorAll("a");if(!c.classList.contains("d-none")&&0!==n.length){var r=[...n],a=r.indexOf(document.activeElement);let e=0;38===t.keyCode?(t.preventDefault(),n[e=0",a=e.querySelector("a"),t=e.querySelector("span:first-child"),d=e.querySelector("span:nth-child(2)"),a.href=l.url,t.textContent=l.meta.title,d.innerHTML=l.excerpt.replace(/\{\{.*?\}\}|—|<(?!\/?mark\b).*?>|<.*?>/g,""),c.appendChild(e))}for(;s.length>o;)c.removeChild(s[0])},!0),c.addEventListener("click",function(){for(;c.lastChild;)c.removeChild(c.lastChild);return!1},!0),document.goSearch.onsubmit=e)},"serviceWorker"in navigator&&(navigator.serviceWorker.register("/sw.min.js?v=3.11.0",{scope:"/"}).then(()=>{},e=>{}),navigator.serviceWorker.ready.then(()=>{})); \ No newline at end of file diff --git a/static/js/abridge_nopwa.min.js b/static/js/abridge_nopwa.min.js index 47124906..99b491b9 100644 --- a/static/js/abridge_nopwa.min.js +++ b/static/js/abridge_nopwa.min.js @@ -1 +1,2 @@ -let items=document.querySelectorAll(".preStyle"),changeIcon=(items.forEach(e=>{e.rel="stylesheet"}),document.getElementById("mode")&&document.getElementById("mode").addEventListener("click",()=>{document.documentElement.classList.toggle("switch"),localStorage.setItem("theme",document.documentElement.classList.contains("switch")?"switch":"default")}),!function(){for(var e=document.getElementsByClassName("m-protected"),t=0;t{e.classList.add(t),setTimeout(()=>e.classList.remove(t),2500)}),copyCodeAndChangeIcon=async(t,e)=>{e=(e.querySelector("table")?getTableCode:getNonTableCode)(e);try{await navigator.clipboard.writeText(e),changeIcon(t,"yes")}catch(e){changeIcon(t,"err")}},getNonTableCode=e=>[...e.querySelectorAll("code")].map(e=>e.textContent).join(""),getTableCode=e=>[...e.querySelectorAll("tr")].map(e=>e.querySelector("td:last-child")?.innerText??"").join("");document.querySelectorAll("pre").forEach(e=>{let t=document.createElement("div");t.className="cc svgs svgh copy",t.innerHTML=" ",e.prepend(t),t.addEventListener("click",()=>copyCodeAndChangeIcon(t,e))}),function(){function g(e){var t=new g.Index;return t.pipeline.add(g.trimmer,g.stopWordFilter,g.stemmer),e&&e.call(t,t),t}var a,c,e,t,d,h,f,p,m,v,y,S,x,b,w,I,E,C,D,F,k,L,_,N,n;g.version="0.9.5",((lunr=g).utils={}).warn=(n=this,function(e){n.console}),g.utils.toString=function(e){return null==e?"":e.toString()},(g.EventEmitter=function(){this.events={}}).prototype.addListener=function(){var e=[].slice.call(arguments),t=e.pop();if("function"!=typeof t)throw new TypeError("last argument must be a function");e.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},g.EventEmitter.prototype.removeListener=function(e,t){this.hasHandler(e)&&-1!=(t=this.events[e].indexOf(t))&&(this.events[e].splice(t,1),0==this.events[e].length)&&delete this.events[e]},g.EventEmitter.prototype.emit=function(e){var t;this.hasHandler(e)&&(t=[].slice.call(arguments,1),this.events[e].forEach(function(e){e.apply(void 0,t)},this))},g.EventEmitter.prototype.hasHandler=function(e){return e in this.events},(g.tokenizer=function(e){var t,n;return arguments.length&&null!=e?Array.isArray(e)?(t=(t=e.filter(function(e){return null!=e})).map(function(e){return g.utils.toString(e).toLowerCase()}),n=[],t.forEach(function(e){e=e.split(g.tokenizer.seperator);n=n.concat(e)},this),n):e.toString().trim().toLowerCase().split(g.tokenizer.seperator):[]}).defaultSeperator=/[\s\-]+/,g.tokenizer.seperator=g.tokenizer.defaultSeperator,g.tokenizer.setSeperator=function(e){null!=e&&"object"==typeof e&&(g.tokenizer.seperator=e)},g.tokenizer.resetSeperator=function(){g.tokenizer.seperator=g.tokenizer.defaultSeperator},g.tokenizer.getSeperator=function(){return g.tokenizer.seperator},(g.Pipeline=function(){this._queue=[]}).registeredFunctions={},g.Pipeline.registerFunction=function(e,t){t in g.Pipeline.registeredFunctions&&g.utils.warn("Overwriting existing registered function: "+t),e.label=t,g.Pipeline.registeredFunctions[t]=e},g.Pipeline.getRegisteredFunction=function(e){return e in g.Pipeline.registeredFunctions!=1?null:g.Pipeline.registeredFunctions[e]},g.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||g.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},g.Pipeline.load=function(e){var n=new g.Pipeline;return e.forEach(function(e){var t=g.Pipeline.getRegisteredFunction(e);if(!t)throw Error("Cannot load un-registered function: "+e);n.add(t)}),n},g.Pipeline.prototype.add=function(){[].slice.call(arguments).forEach(function(e){g.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},g.Pipeline.prototype.after=function(e,t){g.Pipeline.warnIfFunctionNotRegistered(t);e=this._queue.indexOf(e);if(-1==e)throw Error("Cannot find existingFn");this._queue.splice(1+e,0,t)},g.Pipeline.prototype.before=function(e,t){g.Pipeline.warnIfFunctionNotRegistered(t);e=this._queue.indexOf(e);if(-1==e)throw Error("Cannot find existingFn");this._queue.splice(e,0,t)},g.Pipeline.prototype.remove=function(e){e=this._queue.indexOf(e);-1!=e&&this._queue.splice(e,1)},g.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,o=this._queue.length,i=0;i=n&&r-1>=o;)s[n]!==u[o]?s[n]u[o]&&o++:(t.add(s[n]),n++,o++);return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){for(var t,e=this.length

'.concat(document.getElementById("searchinput").value,"

");return o.innerHTML=i,n.insertBefore(o,n.firstChild),e.innerHTML=n.outerHTML,t.innerHTML="",document.getElementById("searchinput").value="",document.body.contains(document.closeSearch)&&(document.closeSearch.onsubmit=function(){document.querySelector("main").innerHTML=window.main}),!1}function b(e){return e=parseInt(e,16).toString(2),[0,1,2,3,4][Math.ceil(e.length/8)]}var u,r,l,c,h;document.body.contains(document.goSearch)&&(document.goSearch.onsubmit=function(){return goSearchNow()},u=document.getElementById("suggestions"),r=document.getElementById("searchinput"),document.addEventListener("keydown",function(t){if(191===t.keyCode&&"INPUT"!==document.activeElement.tagName&&"TEXTAREA"!==document.activeElement.tagName&&(t.preventDefault(),r.focus(),u.classList.remove("d-none")),27===t.keyCode){r.blur(),u.classList.add("d-none");for(var e=document.getElementById("suggestions");e.firstChild;)e.removeChild(e.firstChild)}var n=u.querySelectorAll("a");if(!u.classList.contains("d-none")&&0!==n.length){var o=[...n],i=o.indexOf(document.activeElement);let e=0;38===t.keyCode?(t.preventDefault(),n[e=0",a=n.querySelector("a"),t=n.querySelector("span:first-child"),d=n.querySelector("span:nth-child(2)"),a.href=e.ref,t.textContent=e.doc.title,d.innerHTML=function(e,t){var n=t.map(function(e){return elasticlunr.stemmer(e.toLowerCase())}),o=!1,i=0,r=[],s=e.toLowerCase().split(". ");for(p in s){var u,l=s[p].split(/[\s\n]/),a=8;for(u in l){if(0<(S=l[u]).length){for(var c in n)elasticlunr.stemmer(S).startsWith(n[c])&&(a=40,o=!0);r.push([S,a,i]),a=2}i=i+S.length+1}i+=1}if(0===r.length)return void 0!==e.length&&300"),y=S[2]+S[0].length;40===S[1]||S[0].length<12||/^[\x00-\xff]+$/.test(S[0])?v.push(e.substring(S[2],y)):(x=function(e,t){for(var n="",o=!1,i=0,r=0,s=0,u=0;u")}return v.push("…"),v.join("")}(e.doc.body,s),u.appendChild(n))});i.length>r;)u.removeChild(i[0])},!0),u.addEventListener("click",function(){for(;u.lastChild;)u.removeChild(u.lastChild);return!1},!0),document.goSearch.onsubmit=e)}; \ No newline at end of file +function gunzipSync(e,t){return inflt(e.subarray(gzs(e),-8),t||new u8(gzl(e)))}let items=document.querySelectorAll(".preStyle"),changeIcon=(items.forEach(e=>{e.rel="stylesheet"}),document.getElementById("mode")&&document.getElementById("mode").addEventListener("click",()=>{document.documentElement.classList.toggle("switch"),localStorage.setItem("theme",document.documentElement.classList.contains("switch")?"switch":"default")}),!function(){for(var e=document.getElementsByClassName("m-protected"),t=0;t{e.classList.add(t),setTimeout(()=>e.classList.remove(t),2500)}),copyCodeAndChangeIcon=async(t,e)=>{e=(e.querySelector("table")?getTableCode:getNonTableCode)(e);try{await navigator.clipboard.writeText(e),changeIcon(t,"yes")}catch(e){changeIcon(t,"err")}},getNonTableCode=e=>[...e.querySelectorAll("code")].map(e=>e.textContent).join(""),getTableCode=e=>[...e.querySelectorAll("tr")].map(e=>e.querySelector("td:last-child")?.innerText??"").join(""),pagefind_version=(document.querySelectorAll("pre").forEach(e=>{let t=document.createElement("div");t.className="cc svgs svgh copy",t.innerHTML=" ",e.prepend(t),t.addEventListener("click",()=>copyCodeAndChangeIcon(t,e))}),"1.1.0"),wasm_bindgen;!function(){function c(){return o=null!==o&&0!==o.byteLength?o:new Uint8Array(b.memory.buffer)}function r(e,t){t=t(+e.length,1)>>>0;return c().set(e,t),y=e.length,t}function m(t,n,e){if(void 0===e){var r=d.encode(t);let e=n(r.length,1)>>>0;return c().subarray(e,e+r.length).set(r),y=r.length,e}let a=t.length,i=n(a,1)>>>0;var s=c();let o=0;for(;o>>0,r=c().subarray(i+o,i+a),n=h(t,r),o+=n.written,i=e(i,a,o,1)>>>0),y=o,i}function p(){return l=null!==l&&0!==l.byteLength?l:new Int32Array(b.memory.buffer)}function w(e,t){return e>>>=0,u.decode(c().subarray(e,e+t))}function n(){var e={wbg:{}};return e}function a(e,t){return b=e.exports,i.__wbindgen_wasm_module=t,l=null,o=null,b}async function i(e){if(void 0!==b)return b;void 0===e&&void 0!==s&&(e=s.replace(/\.js$/,"_bg.wasm"));var t=n(),{instance:e,module:t}=await async function(t,e){if("function"==typeof Response&&t instanceof Response){if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(t,e)}catch(e){if("application/wasm"==t.headers.get("Content-Type"))throw e}var n=await t.arrayBuffer();return WebAssembly.instantiate(n,e)}return(n=await WebAssembly.instantiate(t,e))instanceof WebAssembly.Instance?{instance:n,module:t}:n}(await(e="string"==typeof e||"function"==typeof Request&&e instanceof Request||"function"==typeof URL&&e instanceof URL?fetch(e):e),t);return a(e,t)}var e={};let s,b=("undefined"!=typeof document&&null!==document.currentScript&&(s=new URL("UNHANDLED",location.href).toString()),void 0),o=null,y=0,d=(e.init_pagefind=function(e){var e=r(e,b.__wbindgen_malloc),t=y;return b.init_pagefind(e,t)>>>0},"undefined"!=typeof TextEncoder?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}}),h="function"==typeof d.encodeInto?function(e,t){return d.encodeInto(e,t)}:function(e,t){var n=d.encode(e);return t.set(n),{read:e.length,written:n.length}},l=(e.set_ranking_weights=function(e,t){var t=m(t,b.__wbindgen_malloc,b.__wbindgen_realloc),n=y;return b.set_ranking_weights(e,t,n)>>>0},e.load_index_chunk=function(e,t){var t=r(t,b.__wbindgen_malloc),n=y;return b.load_index_chunk(e,t,n)>>>0},e.load_filter_chunk=function(e,t){var t=r(t,b.__wbindgen_malloc),n=y;return b.load_filter_chunk(e,t,n)>>>0},e.add_synthetic_filter=function(e,t){var t=m(t,b.__wbindgen_malloc,b.__wbindgen_realloc),n=y;return b.add_synthetic_filter(e,t,n)>>>0},null),u="undefined"!=typeof TextDecoder?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};"undefined"!=typeof TextDecoder&&u.decode(),e.request_indexes=function(e,t){let n,r;try{var a=b.__wbindgen_add_to_stack_pointer(-16),i=m(t,b.__wbindgen_malloc,b.__wbindgen_realloc),s=y,o=(b.request_indexes(a,e,i,s),p()[a/4+0]),l=p()[a/4+1];return w(n=o,r=l)}finally{b.__wbindgen_add_to_stack_pointer(16),b.__wbindgen_free(n,r,1)}},e.request_filter_indexes=function(e,t){let n,r;try{var a=b.__wbindgen_add_to_stack_pointer(-16),i=m(t,b.__wbindgen_malloc,b.__wbindgen_realloc),s=y,o=(b.request_filter_indexes(a,e,i,s),p()[a/4+0]),l=p()[a/4+1];return w(n=o,r=l)}finally{b.__wbindgen_add_to_stack_pointer(16),b.__wbindgen_free(n,r,1)}},e.request_all_filter_indexes=function(e){let t,n;try{var r=b.__wbindgen_add_to_stack_pointer(-16),a=(b.request_all_filter_indexes(r,e),p()[r/4+0]),i=p()[r/4+1];return w(t=a,n=i)}finally{b.__wbindgen_add_to_stack_pointer(16),b.__wbindgen_free(t,n,1)}},e.filters=function(e){let t,n;try{var r=b.__wbindgen_add_to_stack_pointer(-16),a=(b.filters(r,e),p()[r/4+0]),i=p()[r/4+1];return w(t=a,n=i)}finally{b.__wbindgen_add_to_stack_pointer(16),b.__wbindgen_free(t,n,1)}},e.search=function(e,t,n,r,a){let i,s;try{var o=b.__wbindgen_add_to_stack_pointer(-16),l=m(t,b.__wbindgen_malloc,b.__wbindgen_realloc),c=y,d=m(n,b.__wbindgen_malloc,b.__wbindgen_realloc),h=y,u=m(r,b.__wbindgen_malloc,b.__wbindgen_realloc),f=y,g=(b.search(o,e,l,c,d,h,u,f,a),p()[o/4+0]),_=p()[o/4+1];return w(i=g,s=_)}finally{b.__wbindgen_add_to_stack_pointer(16),b.__wbindgen_free(i,s,1)}},wasm_bindgen=Object.assign(i,{initSync:function(e){var t;return void 0!==b?b:(t=n(),e instanceof WebAssembly.Module||(e=new WebAssembly.Module(e)),a(new WebAssembly.Instance(e,t),e))}},e)}();var x,u8=Uint8Array,u16=Uint16Array,u32=Uint32Array,fleb=new u8([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]),fdeb=new u8([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]),clim=new u8([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),freb=function(e,t){for(var n=new u16(31),r=0;r<31;++r)n[r]=t+=1<>>1|(21845&i)<<1))>>>2|(13107&x)<<2))>>>4|(3855&x)<<4))>>>8|(255&x)<<8)>>>1;var hMap=function(e,t,n){for(var r=e.length,a=0,i=new u16(t);a>>l]=c}else for(o=new u16(r),a=0;a>>15-e[a]);return o},flt=new u8(288);for(i=0;i<144;++i)flt[i]=8;for(i=144;i<256;++i)flt[i]=9;for(i=256;i<280;++i)flt[i]=7;for(i=280;i<288;++i)flt[i]=8;var i,fdt=new u8(32);for(i=0;i<32;++i)fdt[i]=5;var flrm=hMap(flt,9,1),fdrm=hMap(fdt,5,1),max=function(e){for(var t=e[0],n=1;nt&&(t=e[n]);return t},bits=function(e,t,n){var r=t/8|0;return(e[r]|e[1+r]<<8)>>(7&t)&n},bits16=function(e,t){var n=t/8|0;return(e[n]|e[1+n]<<8|e[2+n]<<16)>>(7&t)},shft=function(e){return(e+7)/8|0},slc=function(e,t,n){null!=n&&n<=e.length||(n=e.length);var r=new(2==e.BYTES_PER_ELEMENT?u16:4==e.BYTES_PER_ELEMENT?u32:u8)(n-(t=null!=t&&0<=t?t:0));return r.set(e.subarray(t,n)),r},ec=["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"],err=function(e,t,n){t=Error(t||ec[e]);if(t.code=e,Error.captureStackTrace&&Error.captureStackTrace(t,err),n)return t;throw t},inflt=function(e,n,t){var r=e.length;if(!r||t&&t.f&&!t.l)return n||new u8(0);function a(e){var t=n.length;t>>4)<16)y[x++]=P;else{var S=0,L=0;for(16==P?(L=3+bits(e,l,3),l+=2,S=y[x-1]):17==P?(L=3+bits(e,l,7),l+=3):18==P&&(L=11+bits(e,l,127),l+=7);L--;)y[x++]=S}}var F=y.subarray(0,m),C=y.subarray(m),u=max(F),f=max(C),d=hMap(F,u,1),h=hMap(C,f,1)}else err(1);if(g>>4;if(g<(l+=15&S)){s&&err(0);break}if(S||err(2),T<256)n[c++]=T;else{if(256==T){I=l,d=null;break}var A,U=T-254,T=(264>>4,C=(T||err(3),l+=15&T,fd[M]);if(3>3&1)+(t>>4&1);0>>0},td="undefined"!=typeof TextDecoder&&new TextDecoder,tds=0;try{td.decode(et,{stream:!0}),tds=1}catch(e){}var gz_default=gunzipSync,calculate_excerpt_region=(e,t)=>{if(0===e.length)return 0;var n,r=[];for(n of e)r[n.location]=r[n.location]||0,r[n.location]+=n.balanced_score;if(r.length<=t)return 0;let a=r.slice(0,t).reduce((e,t)=>e+t,0),i=a,s=[0];for(let e=0;ea?(a=i,s=[e]):i===a&&s[s.length-1]===e-1&&s.push(e)}return s[Math.floor(s.length/2)]},build_excerpt=(e,t,n,r,a,i)=>{var s,o=e.includes("​");let l=[];l=o?e.split("​"):e.split(/[\r\n\s]+/g);for(s of r)l[s]?.startsWith("")||(l[s]=`${l[s]}`);e=i??l.length,r=a??0;return(t=e{var n=r.anchors.filter(e=>/h\d/i.test(e.element)&&e.text?.length&&/\S/.test(e.text)).sort((e,t)=>e.location-t.location);let i=[],s=0,o={title:r.meta.title,url:r.url,weighted_locations:[],locations:[],excerpt:""};var l,c=e=>{var t,n;o.locations.length&&(t=o.weighted_locations.map(e=>({weight:e.weight,balanced_score:e.balanced_score,location:e.location-s})),t=calculate_excerpt_region(t,a)+s,n=e?Math.min(e-t,a):a,o.excerpt=build_excerpt(r.raw_content??"",t,n,o.locations,s,e),i.push(o))};for(l of r.weighted_locations)if(!n.length||l.location=n[0].location;)e=n.shift();let t=r.url;try{var d,h,u=/^((https?:)?\/\/)/.test(t);t=u?((d=new URL(t)).hash=e.id,d.toString()):(/^\//.test(t)||(t="/"+t),(h=new URL("https://example.com"+t)).hash=e.id,h.toString().replace(/^https:\/\/example.com/,""))}catch(e){}s=e.location,o={title:e.text,url:t,anchor:e,weighted_locations:[l],locations:[l.location],excerpt:""}}return c(n[0]?.location),i},asyncSleep=async(t=100)=>new Promise(e=>setTimeout(e,t)),PagefindInstance=class{constructor(e={}){this.version=pagefind_version,this.backend=wasm_bindgen,this.decoder=new TextDecoder("utf-8"),this.wasm=null,this.basePath=e.basePath||"/pagefind/",this.primary=e.primary||!1,this.primary&&!e.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=e.baseUrl||this.defaultBaseUrl(),/^(\/|https?:\/\/)/.test(this.baseUrl)||(this.baseUrl="/"+this.baseUrl),this.indexWeight=e.indexWeight??1,this.excerptLength=e.excerptLength??30,this.mergeFilter=e.mergeFilter??{},this.ranking=e.ranking,this.highlightParam=e.highlightParam??null,this.loaded_chunks={},this.loaded_filters={},this.loaded_fragments={},this.raw_ptr=null,this.searchMeta=null,this.languages=null}initPrimary(){}defaultBaseUrl(){return this.basePath.match(/^(.*\/)_?pagefind/)?.[1]||"/"}async options(e){var t,n,r,a,i=["basePath","baseUrl","indexWeight","excerptLength","mergeFilter","highlightParam","ranking"];for([t,n]of Object.entries(e))"mergeFilter"===t?(r=this.stringifyFilters(n),a=await this.getPtr(),this.raw_ptr=this.backend.add_synthetic_filter(a,r)):"ranking"===t?await this.set_ranking(e.ranking):i.includes(t)&&("basePath"===t&&"string"==typeof n&&(this.basePath=n),"baseUrl"===t&&"string"==typeof n&&(this.baseUrl=n),"indexWeight"===t&&"number"==typeof n&&(this.indexWeight=n),"excerptLength"===t&&"number"==typeof n&&(this.excerptLength=n),"mergeFilter"===t&&"object"==typeof n&&(this.mergeFilter=n),"highlightParam"===t)&&"string"==typeof n&&(this.highlightParam=n)}decompress(e,t=0){return"pagefind_dcd"!==this.decoder.decode(e.slice(0,12))&&(e=gz_default(e),"pagefind_dcd"!==this.decoder.decode(e.slice(0,12)))?e:e.slice(12)}async set_ranking(e){var t;e&&(e={term_similarity:e.termSimilarity??null,page_length:e.pageLength??null,term_saturation:e.termSaturation??null,term_frequency:e.termFrequency??null},t=await this.getPtr(),this.raw_ptr=this.backend.set_ranking_weights(t,JSON.stringify(e)))}async init(e,t){await this.loadEntry();var e=this.findIndex(e),n=e.wasm||"unknown",e=[this.loadMeta(e.hash)];!0===t.load_wasm&&e.push(this.loadWasm(n)),await Promise.all(e),this.raw_ptr=this.backend.init_pagefind(new Uint8Array(this.searchMeta)),Object.keys(this.mergeFilter)?.length&&(t=this.stringifyFilters(this.mergeFilter),n=await this.getPtr(),this.raw_ptr=this.backend.add_synthetic_filter(n,t)),this.ranking&&await this.set_ranking(this.ranking)}async loadEntry(){try{var e=await(await fetch(this.basePath+"pagefind-entry.json?ts="+Date.now())).json();this.languages=e.languages,e.version!==this.version&&this.primary}catch(e){throw Error("Failed to load Pagefind metadata")}}findIndex(e){if(this.languages){var t=this.languages[e];if(t)return t;if(t=this.languages[e.split("-")[0]])return t;e=Object.values(this.languages).sort((e,t)=>t.page_count-e.page_count);if(e[0])return e[0]}throw Error("Pagefind Error: No language indexes found.")}async loadMeta(e){try{var t=await(await fetch(this.basePath+`pagefind.${e}.pf_meta`)).arrayBuffer();this.searchMeta=this.decompress(new Uint8Array(t),"Pagefind metadata")}catch(e){}}async loadWasm(e){try{var t=this.basePath+`wasm.${e}.pagefind`,n=await(await fetch(t)).arrayBuffer(),r=this.decompress(new Uint8Array(n),"Pagefind WebAssembly");if(!r)throw Error("No WASM after decompression");this.wasm=await this.backend(r)}catch(e){throw Error(`Failed to load the Pagefind WASM: +`+e?.toString())}}async _loadGenericChunk(e,t){try{var n=await(await fetch(e)).arrayBuffer(),r=this.decompress(new Uint8Array(n),e),a=await this.getPtr();this.raw_ptr=this.backend[t](a,r)}catch(e){}}async loadChunk(e){var t;return this.loaded_chunks[e]||(t=this.basePath+`index/${e}.pf_index`,this.loaded_chunks[e]=this._loadGenericChunk(t,"load_index_chunk")),this.loaded_chunks[e]}async loadFilterChunk(e){var t;return this.loaded_filters[e]||(t=this.basePath+`filter/${e}.pf_filter`,this.loaded_filters[e]=this._loadGenericChunk(t,"load_filter_chunk")),this.loaded_filters[e]}async _loadFragment(e){var t=await(await fetch(this.basePath+`fragment/${e}.pf_fragment`)).arrayBuffer(),t=this.decompress(new Uint8Array(t),"Fragment "+e);return JSON.parse((new TextDecoder).decode(t))}async loadFragment(e,t=[],n){this.loaded_fragments[e]||(this.loaded_fragments[e]=this._loadFragment(e));e=await this.loaded_fragments[e],e.weighted_locations=t,e.locations=t.map(e=>e.location),e.raw_content||(e.raw_content=e.content.replace(//g,">"),e.content=e.content.replace(/\u200B/g,"")),e.raw_url||(e.raw_url=e.url),e.url=this.processedUrl(e.raw_url,n),n=calculate_excerpt_region(t,this.excerptLength);return e.excerpt=build_excerpt(e.raw_content,n,this.excerptLength,e.locations),e.sub_results=calculate_sub_results(e,this.excerptLength),e}fullUrl(e){return/^(https?:)?\/\//.test(e)?e:(this.baseUrl+"/"+e).replace(/\/+/g,"/").replace(/^(https?:\/)/,"$1/")}processedUrl(t,n){t=this.fullUrl(t);if(null===this.highlightParam)return t;n=n.split(/\s+/);try{var e,r=new URL(t);for(e of n)r.searchParams.append(this.highlightParam,e);return r.toString()}catch(e){try{var a,i=new URL("https://example.com"+t);for(a of n)i.searchParams.append(this.highlightParam,a);return i.toString().replace(/^https:\/\/example\.com/,"")}catch(e){return t}}}async getPtr(){for(;null===this.raw_ptr;)await asyncSleep(50);if(this.raw_ptr)return this.raw_ptr;throw Error("Pagefind: WASM Error (No pointer)")}parseFilters(e){var t={};if(e)for(var n of e.split("__PF_FILTER_DELIM__")){var r,[a,n]=n.split(/:(.*)$/);if(t[a]={},n)for(var i of n.split("__PF_VALUE_DELIM__"))i&&(i=i.match(/^(.*):(\d+)$/))&&([,i,r]=i,t[a][i]=parseInt(r)??r)}return t}stringifyFilters(e={}){return JSON.stringify(e)}stringifySorts(e={}){var t,n,r=Object.entries(e);for([t,n]of r)return r.length,"asc"!==n&&n,t+":"+n;return""}async filters(){var e=await this.getPtr(),t=this.backend.request_all_filter_indexes(e).split(" ").filter(e=>e).map(e=>this.loadFilterChunk(e)),t=(await Promise.all([...t]),e=await this.getPtr(),this.backend.filters(e));return this.parseFilters(t)}async preload(e,t={}){await this.search(e,{...t,preload:!0})}async search(i,t={}){t={verbose:!1,filters:{},sort:{},...t};let s=e=>{t.verbose};s(this.basePath);var e,n,r,a,o=Date.now(),l=await this.getPtr(),c=null===i,d=(i=i??"",/^\s*".+"\s*$/.test(i));return d&&s(),i=i.toLowerCase().trim().replace(/[\.`~!@#\$%\^&\*\(\)\{\}\[\]\\\|:;'",<>\/\?\-]/g,"").replace(/\s{2,}/g," ").trim(),s(),i?.length||c?(c=this.stringifySorts(t.sort),s(),n=this.stringifyFilters(t.filters),s(),r=this.backend.request_indexes(l,i),e=this.backend.request_filter_indexes(l,n),r=r.split(" ").filter(e=>e).map(e=>this.loadChunk(e)),e=e.split(" ").filter(e=>e).map(e=>this.loadFilterChunk(e)),await Promise.all([...r,...e]),s(),t.preload?(s(),null):(l=await this.getPtr(),r=Date.now(),e=this.backend.search(l,i,n,c,d),[l,n,c,d]=(s(),e.split(/:([^:]*):(.*)__PF_UNFILTERED_DELIM__(.*)$/)),c=this.parseFilters(c),d=this.parseFilters(d),s(JSON.stringify(e)),n=(e=n.length?n.split(" "):[]).map(e=>{let[t,n,r]=e.split("@"),a=(s(t),r.length?r.split(",").map(e=>{var[e,t,n]=e.split(">");return{weight:parseInt(e)/24,balanced_score:parseFloat(t),location:parseInt(n)}}):[]);e=a.map(e=>e.location);return{id:t,score:parseFloat(n)*this.indexWeight,words:e,data:async()=>this.loadFragment(t,a,i)}}),r=Date.now()-r,a=Date.now()-o,s((e.length,e.length,Date.now(),Date.now())),{results:n,unfilteredResultCount:parseInt(l),filters:c,totalFilters:d,timings:{preload:a-r,search:r,total:a}})):{results:[],unfilteredResultCount:0,filters:{},totalFilters:{},timings:{preload:Date.now()-o,search:Date.now()-o,total:Date.now()-o}}}},Pagefind=class{constructor(e={}){this.backend=wasm_bindgen,this.primaryLanguage="unknown",this.searchID=0,this.primary=new PagefindInstance({...e,primary:!0}),this.instances=[this.primary],this.init(e?.language)}async options(e){await this.primary.options(e)}async init(e){var t;document?.querySelector&&(t=document.querySelector("html")?.getAttribute("lang")||"unknown",this.primaryLanguage=t.toLocaleLowerCase()),await this.primary.init(e||this.primaryLanguage,{load_wasm:!0})}async mergeIndex(e,t={}){if(!this.primary.basePath.startsWith(e)){e=new PagefindInstance({primary:!1,basePath:e});for(this.instances.push(e);null===this.primary.wasm;)await asyncSleep(50);await e.init(t.language||this.primaryLanguage,{load_wasm:!1}),delete t.language,await e.options(t)}}mergeFilters(e){var t,n={};for(t of e)for(var[r,a]of Object.entries(t))if(n[r]){var i,s,o=n[r];for([i,s]of Object.entries(a))o[i]=(o[i]||0)+s}else n[r]=a;return n}async filters(){var e=await Promise.all(this.instances.map(e=>e.filters()));return this.mergeFilters(e)}async preload(t,n={}){await Promise.all(this.instances.map(e=>e.preload(t,n)))}async debouncedSearch(e,t,n){var r=++this.searchID;return this.preload(e,t),await asyncSleep(n),r!==this.searchID||(n=await this.search(e,t),r!==this.searchID)?null:n}async search(t,n={}){var e=await Promise.all(this.instances.map(e=>e.search(t,n))),r=this.mergeFilters(e.map(e=>e.filters)),a=this.mergeFilters(e.map(e=>e.totalFilters)),i=e.map(e=>e.results).flat().sort((e,t)=>t.score-e.score),s=e.map(e=>e.timings);return{results:i,unfilteredResultCount:e.reduce((e,t)=>e+t.unfilteredResultCount,0),filters:r,totalFilters:a,timings:s}}},pagefind=void 0,initial_options=void 0,init_pagefind=()=>{pagefind=pagefind||new Pagefind(initial_options??{})},options=async e=>{pagefind?await pagefind.options(e):initial_options=e},init=async()=>{init_pagefind()},destroy=async()=>{initial_options=pagefind=void 0},mergeIndex=async(e,t)=>(init_pagefind(),pagefind.mergeIndex(e,t)),search=async(e,t)=>(init_pagefind(),pagefind.search(e,t)),debouncedSearch=async(e,t,n=300)=>(init_pagefind(),pagefind.debouncedSearch(e,t,n)),preload=async(e,t)=>(init_pagefind(),pagefind.preload(e,t)),filters=async()=>(init_pagefind(),pagefind.filters());window.onload=function(){function e(){var e=document.querySelector("main"),t=(window.main||(window.main=e.innerHTML),document.getElementById("suggestions")),n=t.cloneNode(!0),r=(n.id="results",document.createElement("div")),a='

'.concat(document.getElementById("searchinput").value,"

");return r.innerHTML=a,n.insertBefore(r,n.firstChild),e.innerHTML=n.outerHTML,t.innerHTML="",document.getElementById("searchinput").value="",document.body.contains(document.closeSearch)&&(document.closeSearch.onsubmit=function(){document.querySelector("main").innerHTML=window.main}),!1}var c,i,n;document.body.contains(document.goSearch)&&(options({basePath:"/js/"}),init(),document.goSearch.onsubmit=function(){return goSearchNow()},c=document.getElementById("suggestions"),i=document.getElementById("searchinput"),document.addEventListener("keydown",function(t){if(191===t.keyCode&&"INPUT"!==document.activeElement.tagName&&"TEXTAREA"!==document.activeElement.tagName&&(t.preventDefault(),i.focus(),c.classList.remove("d-none")),27===t.keyCode){i.blur(),c.classList.add("d-none");for(var e=document.getElementById("suggestions");e.firstChild;)e.removeChild(e.firstChild)}var n=c.querySelectorAll("a");if(!c.classList.contains("d-none")&&0!==n.length){var r=[...n],a=r.indexOf(document.activeElement);let e=0;38===t.keyCode?(t.preventDefault(),n[e=0",a=e.querySelector("a"),t=e.querySelector("span:first-child"),d=e.querySelector("span:nth-child(2)"),a.href=l.url,t.textContent=l.meta.title,d.innerHTML=l.excerpt.replace(/\{\{.*?\}\}|—|<(?!\/?mark\b).*?>|<.*?>/g,""),c.appendChild(e))}for(;s.length>o;)c.removeChild(s[0])},!0),c.addEventListener("click",function(){for(;c.lastChild;)c.removeChild(c.lastChild);return!1},!0),document.goSearch.onsubmit=e)}; \ No newline at end of file diff --git a/static/js/pagefind-entry.json b/static/js/pagefind-entry.json new file mode 100644 index 00000000..8e838273 --- /dev/null +++ b/static/js/pagefind-entry.json @@ -0,0 +1 @@ +{"version":"1.1.0","languages":{"en":{"hash":"en_64251876f7","wasm":"en","page_count":15},"fr":{"hash":"fr_db69a6374e","wasm":"fr","page_count":11},"es":{"hash":"es_d9188c3e85","wasm":"es","page_count":2}}} \ No newline at end of file diff --git a/static/js/pagefind-highlight.js b/static/js/pagefind-highlight.js new file mode 100644 index 00000000..c823fbfe --- /dev/null +++ b/static/js/pagefind-highlight.js @@ -0,0 +1,1069 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// node_modules/mark.js/dist/mark.js +var require_mark = __commonJS({ + "node_modules/mark.js/dist/mark.js"(exports, module) { + (function(global, factory) { + typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global.Mark = factory(); + })(exports, function() { + "use strict"; + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) { + return typeof obj; + } : function(obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + var classCallCheck = function(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + }; + var createClass = function() { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) + descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + return function(Constructor, protoProps, staticProps) { + if (protoProps) + defineProperties(Constructor.prototype, protoProps); + if (staticProps) + defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + var _extends = Object.assign || function(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; + var DOMIterator = function() { + function DOMIterator2(ctx) { + var iframes = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; + var exclude = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : []; + var iframesTimeout = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 5e3; + classCallCheck(this, DOMIterator2); + this.ctx = ctx; + this.iframes = iframes; + this.exclude = exclude; + this.iframesTimeout = iframesTimeout; + } + createClass(DOMIterator2, [{ + key: "getContexts", + value: function getContexts() { + var ctx = void 0, filteredCtx = []; + if (typeof this.ctx === "undefined" || !this.ctx) { + ctx = []; + } else if (NodeList.prototype.isPrototypeOf(this.ctx)) { + ctx = Array.prototype.slice.call(this.ctx); + } else if (Array.isArray(this.ctx)) { + ctx = this.ctx; + } else if (typeof this.ctx === "string") { + ctx = Array.prototype.slice.call(document.querySelectorAll(this.ctx)); + } else { + ctx = [this.ctx]; + } + ctx.forEach(function(ctx2) { + var isDescendant = filteredCtx.filter(function(contexts) { + return contexts.contains(ctx2); + }).length > 0; + if (filteredCtx.indexOf(ctx2) === -1 && !isDescendant) { + filteredCtx.push(ctx2); + } + }); + return filteredCtx; + } + }, { + key: "getIframeContents", + value: function getIframeContents(ifr, successFn) { + var errorFn = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : function() { + }; + var doc = void 0; + try { + var ifrWin = ifr.contentWindow; + doc = ifrWin.document; + if (!ifrWin || !doc) { + throw new Error("iframe inaccessible"); + } + } catch (e) { + errorFn(); + } + if (doc) { + successFn(doc); + } + } + }, { + key: "isIframeBlank", + value: function isIframeBlank(ifr) { + var bl = "about:blank", src = ifr.getAttribute("src").trim(), href = ifr.contentWindow.location.href; + return href === bl && src !== bl && src; + } + }, { + key: "observeIframeLoad", + value: function observeIframeLoad(ifr, successFn, errorFn) { + var _this = this; + var called = false, tout = null; + var listener = function listener2() { + if (called) { + return; + } + called = true; + clearTimeout(tout); + try { + if (!_this.isIframeBlank(ifr)) { + ifr.removeEventListener("load", listener2); + _this.getIframeContents(ifr, successFn, errorFn); + } + } catch (e) { + errorFn(); + } + }; + ifr.addEventListener("load", listener); + tout = setTimeout(listener, this.iframesTimeout); + } + }, { + key: "onIframeReady", + value: function onIframeReady(ifr, successFn, errorFn) { + try { + if (ifr.contentWindow.document.readyState === "complete") { + if (this.isIframeBlank(ifr)) { + this.observeIframeLoad(ifr, successFn, errorFn); + } else { + this.getIframeContents(ifr, successFn, errorFn); + } + } else { + this.observeIframeLoad(ifr, successFn, errorFn); + } + } catch (e) { + errorFn(); + } + } + }, { + key: "waitForIframes", + value: function waitForIframes(ctx, done) { + var _this2 = this; + var eachCalled = 0; + this.forEachIframe(ctx, function() { + return true; + }, function(ifr) { + eachCalled++; + _this2.waitForIframes(ifr.querySelector("html"), function() { + if (!--eachCalled) { + done(); + } + }); + }, function(handled) { + if (!handled) { + done(); + } + }); + } + }, { + key: "forEachIframe", + value: function forEachIframe(ctx, filter, each) { + var _this3 = this; + var end = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : function() { + }; + var ifr = ctx.querySelectorAll("iframe"), open = ifr.length, handled = 0; + ifr = Array.prototype.slice.call(ifr); + var checkEnd = function checkEnd2() { + if (--open <= 0) { + end(handled); + } + }; + if (!open) { + checkEnd(); + } + ifr.forEach(function(ifr2) { + if (DOMIterator2.matches(ifr2, _this3.exclude)) { + checkEnd(); + } else { + _this3.onIframeReady(ifr2, function(con) { + if (filter(ifr2)) { + handled++; + each(con); + } + checkEnd(); + }, checkEnd); + } + }); + } + }, { + key: "createIterator", + value: function createIterator(ctx, whatToShow, filter) { + return document.createNodeIterator(ctx, whatToShow, filter, false); + } + }, { + key: "createInstanceOnIframe", + value: function createInstanceOnIframe(contents) { + return new DOMIterator2(contents.querySelector("html"), this.iframes); + } + }, { + key: "compareNodeIframe", + value: function compareNodeIframe(node, prevNode, ifr) { + var compCurr = node.compareDocumentPosition(ifr), prev = Node.DOCUMENT_POSITION_PRECEDING; + if (compCurr & prev) { + if (prevNode !== null) { + var compPrev = prevNode.compareDocumentPosition(ifr), after = Node.DOCUMENT_POSITION_FOLLOWING; + if (compPrev & after) { + return true; + } + } else { + return true; + } + } + return false; + } + }, { + key: "getIteratorNode", + value: function getIteratorNode(itr) { + var prevNode = itr.previousNode(); + var node = void 0; + if (prevNode === null) { + node = itr.nextNode(); + } else { + node = itr.nextNode() && itr.nextNode(); + } + return { + prevNode, + node + }; + } + }, { + key: "checkIframeFilter", + value: function checkIframeFilter(node, prevNode, currIfr, ifr) { + var key = false, handled = false; + ifr.forEach(function(ifrDict, i) { + if (ifrDict.val === currIfr) { + key = i; + handled = ifrDict.handled; + } + }); + if (this.compareNodeIframe(node, prevNode, currIfr)) { + if (key === false && !handled) { + ifr.push({ + val: currIfr, + handled: true + }); + } else if (key !== false && !handled) { + ifr[key].handled = true; + } + return true; + } + if (key === false) { + ifr.push({ + val: currIfr, + handled: false + }); + } + return false; + } + }, { + key: "handleOpenIframes", + value: function handleOpenIframes(ifr, whatToShow, eCb, fCb) { + var _this4 = this; + ifr.forEach(function(ifrDict) { + if (!ifrDict.handled) { + _this4.getIframeContents(ifrDict.val, function(con) { + _this4.createInstanceOnIframe(con).forEachNode(whatToShow, eCb, fCb); + }); + } + }); + } + }, { + key: "iterateThroughNodes", + value: function iterateThroughNodes(whatToShow, ctx, eachCb, filterCb, doneCb) { + var _this5 = this; + var itr = this.createIterator(ctx, whatToShow, filterCb); + var ifr = [], elements = [], node = void 0, prevNode = void 0, retrieveNodes = function retrieveNodes2() { + var _getIteratorNode = _this5.getIteratorNode(itr); + prevNode = _getIteratorNode.prevNode; + node = _getIteratorNode.node; + return node; + }; + while (retrieveNodes()) { + if (this.iframes) { + this.forEachIframe(ctx, function(currIfr) { + return _this5.checkIframeFilter(node, prevNode, currIfr, ifr); + }, function(con) { + _this5.createInstanceOnIframe(con).forEachNode(whatToShow, function(ifrNode) { + return elements.push(ifrNode); + }, filterCb); + }); + } + elements.push(node); + } + elements.forEach(function(node2) { + eachCb(node2); + }); + if (this.iframes) { + this.handleOpenIframes(ifr, whatToShow, eachCb, filterCb); + } + doneCb(); + } + }, { + key: "forEachNode", + value: function forEachNode(whatToShow, each, filter) { + var _this6 = this; + var done = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : function() { + }; + var contexts = this.getContexts(); + var open = contexts.length; + if (!open) { + done(); + } + contexts.forEach(function(ctx) { + var ready = function ready2() { + _this6.iterateThroughNodes(whatToShow, ctx, each, filter, function() { + if (--open <= 0) { + done(); + } + }); + }; + if (_this6.iframes) { + _this6.waitForIframes(ctx, ready); + } else { + ready(); + } + }); + } + }], [{ + key: "matches", + value: function matches(element, selector) { + var selectors = typeof selector === "string" ? [selector] : selector, fn = element.matches || element.matchesSelector || element.msMatchesSelector || element.mozMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector; + if (fn) { + var match = false; + selectors.every(function(sel) { + if (fn.call(element, sel)) { + match = true; + return false; + } + return true; + }); + return match; + } else { + return false; + } + } + }]); + return DOMIterator2; + }(); + var Mark$1 = function() { + function Mark3(ctx) { + classCallCheck(this, Mark3); + this.ctx = ctx; + this.ie = false; + var ua = window.navigator.userAgent; + if (ua.indexOf("MSIE") > -1 || ua.indexOf("Trident") > -1) { + this.ie = true; + } + } + createClass(Mark3, [{ + key: "log", + value: function log(msg) { + var level = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "debug"; + var log2 = this.opt.log; + if (!this.opt.debug) { + return; + } + if ((typeof log2 === "undefined" ? "undefined" : _typeof(log2)) === "object" && typeof log2[level] === "function") { + log2[level]("mark.js: " + msg); + } + } + }, { + key: "escapeStr", + value: function escapeStr(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); + } + }, { + key: "createRegExp", + value: function createRegExp(str) { + if (this.opt.wildcards !== "disabled") { + str = this.setupWildcardsRegExp(str); + } + str = this.escapeStr(str); + if (Object.keys(this.opt.synonyms).length) { + str = this.createSynonymsRegExp(str); + } + if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) { + str = this.setupIgnoreJoinersRegExp(str); + } + if (this.opt.diacritics) { + str = this.createDiacriticsRegExp(str); + } + str = this.createMergedBlanksRegExp(str); + if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) { + str = this.createJoinersRegExp(str); + } + if (this.opt.wildcards !== "disabled") { + str = this.createWildcardsRegExp(str); + } + str = this.createAccuracyRegExp(str); + return str; + } + }, { + key: "createSynonymsRegExp", + value: function createSynonymsRegExp(str) { + var syn = this.opt.synonyms, sens = this.opt.caseSensitive ? "" : "i", joinerPlaceholder = this.opt.ignoreJoiners || this.opt.ignorePunctuation.length ? "\0" : ""; + for (var index in syn) { + if (syn.hasOwnProperty(index)) { + var value = syn[index], k1 = this.opt.wildcards !== "disabled" ? this.setupWildcardsRegExp(index) : this.escapeStr(index), k2 = this.opt.wildcards !== "disabled" ? this.setupWildcardsRegExp(value) : this.escapeStr(value); + if (k1 !== "" && k2 !== "") { + str = str.replace(new RegExp("(" + this.escapeStr(k1) + "|" + this.escapeStr(k2) + ")", "gm" + sens), joinerPlaceholder + ("(" + this.processSynomyms(k1) + "|") + (this.processSynomyms(k2) + ")") + joinerPlaceholder); + } + } + } + return str; + } + }, { + key: "processSynomyms", + value: function processSynomyms(str) { + if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) { + str = this.setupIgnoreJoinersRegExp(str); + } + return str; + } + }, { + key: "setupWildcardsRegExp", + value: function setupWildcardsRegExp(str) { + str = str.replace(/(?:\\)*\?/g, function(val) { + return val.charAt(0) === "\\" ? "?" : ""; + }); + return str.replace(/(?:\\)*\*/g, function(val) { + return val.charAt(0) === "\\" ? "*" : ""; + }); + } + }, { + key: "createWildcardsRegExp", + value: function createWildcardsRegExp(str) { + var spaces = this.opt.wildcards === "withSpaces"; + return str.replace(/\u0001/g, spaces ? "[\\S\\s]?" : "\\S?").replace(/\u0002/g, spaces ? "[\\S\\s]*?" : "\\S*"); + } + }, { + key: "setupIgnoreJoinersRegExp", + value: function setupIgnoreJoinersRegExp(str) { + return str.replace(/[^(|)\\]/g, function(val, indx, original) { + var nextChar = original.charAt(indx + 1); + if (/[(|)\\]/.test(nextChar) || nextChar === "") { + return val; + } else { + return val + "\0"; + } + }); + } + }, { + key: "createJoinersRegExp", + value: function createJoinersRegExp(str) { + var joiner = []; + var ignorePunctuation = this.opt.ignorePunctuation; + if (Array.isArray(ignorePunctuation) && ignorePunctuation.length) { + joiner.push(this.escapeStr(ignorePunctuation.join(""))); + } + if (this.opt.ignoreJoiners) { + joiner.push("\\u00ad\\u200b\\u200c\\u200d"); + } + return joiner.length ? str.split(/\u0000+/).join("[" + joiner.join("") + "]*") : str; + } + }, { + key: "createDiacriticsRegExp", + value: function createDiacriticsRegExp(str) { + var sens = this.opt.caseSensitive ? "" : "i", dct = this.opt.caseSensitive ? ["a\xE0\xE1\u1EA3\xE3\u1EA1\u0103\u1EB1\u1EAF\u1EB3\u1EB5\u1EB7\xE2\u1EA7\u1EA5\u1EA9\u1EAB\u1EAD\xE4\xE5\u0101\u0105", "A\xC0\xC1\u1EA2\xC3\u1EA0\u0102\u1EB0\u1EAE\u1EB2\u1EB4\u1EB6\xC2\u1EA6\u1EA4\u1EA8\u1EAA\u1EAC\xC4\xC5\u0100\u0104", "c\xE7\u0107\u010D", "C\xC7\u0106\u010C", "d\u0111\u010F", "D\u0110\u010E", "e\xE8\xE9\u1EBB\u1EBD\u1EB9\xEA\u1EC1\u1EBF\u1EC3\u1EC5\u1EC7\xEB\u011B\u0113\u0119", "E\xC8\xC9\u1EBA\u1EBC\u1EB8\xCA\u1EC0\u1EBE\u1EC2\u1EC4\u1EC6\xCB\u011A\u0112\u0118", "i\xEC\xED\u1EC9\u0129\u1ECB\xEE\xEF\u012B", "I\xCC\xCD\u1EC8\u0128\u1ECA\xCE\xCF\u012A", "l\u0142", "L\u0141", "n\xF1\u0148\u0144", "N\xD1\u0147\u0143", "o\xF2\xF3\u1ECF\xF5\u1ECD\xF4\u1ED3\u1ED1\u1ED5\u1ED7\u1ED9\u01A1\u1EDF\u1EE1\u1EDB\u1EDD\u1EE3\xF6\xF8\u014D", "O\xD2\xD3\u1ECE\xD5\u1ECC\xD4\u1ED2\u1ED0\u1ED4\u1ED6\u1ED8\u01A0\u1EDE\u1EE0\u1EDA\u1EDC\u1EE2\xD6\xD8\u014C", "r\u0159", "R\u0158", "s\u0161\u015B\u0219\u015F", "S\u0160\u015A\u0218\u015E", "t\u0165\u021B\u0163", "T\u0164\u021A\u0162", "u\xF9\xFA\u1EE7\u0169\u1EE5\u01B0\u1EEB\u1EE9\u1EED\u1EEF\u1EF1\xFB\xFC\u016F\u016B", "U\xD9\xDA\u1EE6\u0168\u1EE4\u01AF\u1EEA\u1EE8\u1EEC\u1EEE\u1EF0\xDB\xDC\u016E\u016A", "y\xFD\u1EF3\u1EF7\u1EF9\u1EF5\xFF", "Y\xDD\u1EF2\u1EF6\u1EF8\u1EF4\u0178", "z\u017E\u017C\u017A", "Z\u017D\u017B\u0179"] : ["a\xE0\xE1\u1EA3\xE3\u1EA1\u0103\u1EB1\u1EAF\u1EB3\u1EB5\u1EB7\xE2\u1EA7\u1EA5\u1EA9\u1EAB\u1EAD\xE4\xE5\u0101\u0105A\xC0\xC1\u1EA2\xC3\u1EA0\u0102\u1EB0\u1EAE\u1EB2\u1EB4\u1EB6\xC2\u1EA6\u1EA4\u1EA8\u1EAA\u1EAC\xC4\xC5\u0100\u0104", "c\xE7\u0107\u010DC\xC7\u0106\u010C", "d\u0111\u010FD\u0110\u010E", "e\xE8\xE9\u1EBB\u1EBD\u1EB9\xEA\u1EC1\u1EBF\u1EC3\u1EC5\u1EC7\xEB\u011B\u0113\u0119E\xC8\xC9\u1EBA\u1EBC\u1EB8\xCA\u1EC0\u1EBE\u1EC2\u1EC4\u1EC6\xCB\u011A\u0112\u0118", "i\xEC\xED\u1EC9\u0129\u1ECB\xEE\xEF\u012BI\xCC\xCD\u1EC8\u0128\u1ECA\xCE\xCF\u012A", "l\u0142L\u0141", "n\xF1\u0148\u0144N\xD1\u0147\u0143", "o\xF2\xF3\u1ECF\xF5\u1ECD\xF4\u1ED3\u1ED1\u1ED5\u1ED7\u1ED9\u01A1\u1EDF\u1EE1\u1EDB\u1EDD\u1EE3\xF6\xF8\u014DO\xD2\xD3\u1ECE\xD5\u1ECC\xD4\u1ED2\u1ED0\u1ED4\u1ED6\u1ED8\u01A0\u1EDE\u1EE0\u1EDA\u1EDC\u1EE2\xD6\xD8\u014C", "r\u0159R\u0158", "s\u0161\u015B\u0219\u015FS\u0160\u015A\u0218\u015E", "t\u0165\u021B\u0163T\u0164\u021A\u0162", "u\xF9\xFA\u1EE7\u0169\u1EE5\u01B0\u1EEB\u1EE9\u1EED\u1EEF\u1EF1\xFB\xFC\u016F\u016BU\xD9\xDA\u1EE6\u0168\u1EE4\u01AF\u1EEA\u1EE8\u1EEC\u1EEE\u1EF0\xDB\xDC\u016E\u016A", "y\xFD\u1EF3\u1EF7\u1EF9\u1EF5\xFFY\xDD\u1EF2\u1EF6\u1EF8\u1EF4\u0178", "z\u017E\u017C\u017AZ\u017D\u017B\u0179"]; + var handled = []; + str.split("").forEach(function(ch) { + dct.every(function(dct2) { + if (dct2.indexOf(ch) !== -1) { + if (handled.indexOf(dct2) > -1) { + return false; + } + str = str.replace(new RegExp("[" + dct2 + "]", "gm" + sens), "[" + dct2 + "]"); + handled.push(dct2); + } + return true; + }); + }); + return str; + } + }, { + key: "createMergedBlanksRegExp", + value: function createMergedBlanksRegExp(str) { + return str.replace(/[\s]+/gmi, "[\\s]+"); + } + }, { + key: "createAccuracyRegExp", + value: function createAccuracyRegExp(str) { + var _this = this; + var chars = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xA1\xBF"; + var acc = this.opt.accuracy, val = typeof acc === "string" ? acc : acc.value, ls = typeof acc === "string" ? [] : acc.limiters, lsJoin = ""; + ls.forEach(function(limiter) { + lsJoin += "|" + _this.escapeStr(limiter); + }); + switch (val) { + case "partially": + default: + return "()(" + str + ")"; + case "complementary": + lsJoin = "\\s" + (lsJoin ? lsJoin : this.escapeStr(chars)); + return "()([^" + lsJoin + "]*" + str + "[^" + lsJoin + "]*)"; + case "exactly": + return "(^|\\s" + lsJoin + ")(" + str + ")(?=$|\\s" + lsJoin + ")"; + } + } + }, { + key: "getSeparatedKeywords", + value: function getSeparatedKeywords(sv) { + var _this2 = this; + var stack = []; + sv.forEach(function(kw) { + if (!_this2.opt.separateWordSearch) { + if (kw.trim() && stack.indexOf(kw) === -1) { + stack.push(kw); + } + } else { + kw.split(" ").forEach(function(kwSplitted) { + if (kwSplitted.trim() && stack.indexOf(kwSplitted) === -1) { + stack.push(kwSplitted); + } + }); + } + }); + return { + "keywords": stack.sort(function(a, b) { + return b.length - a.length; + }), + "length": stack.length + }; + } + }, { + key: "isNumeric", + value: function isNumeric(value) { + return Number(parseFloat(value)) == value; + } + }, { + key: "checkRanges", + value: function checkRanges(array) { + var _this3 = this; + if (!Array.isArray(array) || Object.prototype.toString.call(array[0]) !== "[object Object]") { + this.log("markRanges() will only accept an array of objects"); + this.opt.noMatch(array); + return []; + } + var stack = []; + var last = 0; + array.sort(function(a, b) { + return a.start - b.start; + }).forEach(function(item) { + var _callNoMatchOnInvalid = _this3.callNoMatchOnInvalidRanges(item, last), start = _callNoMatchOnInvalid.start, end = _callNoMatchOnInvalid.end, valid = _callNoMatchOnInvalid.valid; + if (valid) { + item.start = start; + item.length = end - start; + stack.push(item); + last = end; + } + }); + return stack; + } + }, { + key: "callNoMatchOnInvalidRanges", + value: function callNoMatchOnInvalidRanges(range, last) { + var start = void 0, end = void 0, valid = false; + if (range && typeof range.start !== "undefined") { + start = parseInt(range.start, 10); + end = start + parseInt(range.length, 10); + if (this.isNumeric(range.start) && this.isNumeric(range.length) && end - last > 0 && end - start > 0) { + valid = true; + } else { + this.log("Ignoring invalid or overlapping range: " + ("" + JSON.stringify(range))); + this.opt.noMatch(range); + } + } else { + this.log("Ignoring invalid range: " + JSON.stringify(range)); + this.opt.noMatch(range); + } + return { + start, + end, + valid + }; + } + }, { + key: "checkWhitespaceRanges", + value: function checkWhitespaceRanges(range, originalLength, string) { + var end = void 0, valid = true, max = string.length, offset = originalLength - max, start = parseInt(range.start, 10) - offset; + start = start > max ? max : start; + end = start + parseInt(range.length, 10); + if (end > max) { + end = max; + this.log("End range automatically set to the max value of " + max); + } + if (start < 0 || end - start < 0 || start > max || end > max) { + valid = false; + this.log("Invalid range: " + JSON.stringify(range)); + this.opt.noMatch(range); + } else if (string.substring(start, end).replace(/\s+/g, "") === "") { + valid = false; + this.log("Skipping whitespace only range: " + JSON.stringify(range)); + this.opt.noMatch(range); + } + return { + start, + end, + valid + }; + } + }, { + key: "getTextNodes", + value: function getTextNodes(cb) { + var _this4 = this; + var val = "", nodes = []; + this.iterator.forEachNode(NodeFilter.SHOW_TEXT, function(node) { + nodes.push({ + start: val.length, + end: (val += node.textContent).length, + node + }); + }, function(node) { + if (_this4.matchesExclude(node.parentNode)) { + return NodeFilter.FILTER_REJECT; + } else { + return NodeFilter.FILTER_ACCEPT; + } + }, function() { + cb({ + value: val, + nodes + }); + }); + } + }, { + key: "matchesExclude", + value: function matchesExclude(el) { + return DOMIterator.matches(el, this.opt.exclude.concat(["script", "style", "title", "head", "html"])); + } + }, { + key: "wrapRangeInTextNode", + value: function wrapRangeInTextNode(node, start, end) { + var hEl = !this.opt.element ? "mark" : this.opt.element, startNode = node.splitText(start), ret = startNode.splitText(end - start); + var repl = document.createElement(hEl); + repl.setAttribute("data-markjs", "true"); + if (this.opt.className) { + repl.setAttribute("class", this.opt.className); + } + repl.textContent = startNode.textContent; + startNode.parentNode.replaceChild(repl, startNode); + return ret; + } + }, { + key: "wrapRangeInMappedTextNode", + value: function wrapRangeInMappedTextNode(dict, start, end, filterCb, eachCb) { + var _this5 = this; + dict.nodes.every(function(n, i) { + var sibl = dict.nodes[i + 1]; + if (typeof sibl === "undefined" || sibl.start > start) { + if (!filterCb(n.node)) { + return false; + } + var s = start - n.start, e = (end > n.end ? n.end : end) - n.start, startStr = dict.value.substr(0, n.start), endStr = dict.value.substr(e + n.start); + n.node = _this5.wrapRangeInTextNode(n.node, s, e); + dict.value = startStr + endStr; + dict.nodes.forEach(function(k, j) { + if (j >= i) { + if (dict.nodes[j].start > 0 && j !== i) { + dict.nodes[j].start -= e; + } + dict.nodes[j].end -= e; + } + }); + end -= e; + eachCb(n.node.previousSibling, n.start); + if (end > n.end) { + start = n.end; + } else { + return false; + } + } + return true; + }); + } + }, { + key: "wrapMatches", + value: function wrapMatches(regex, ignoreGroups, filterCb, eachCb, endCb) { + var _this6 = this; + var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1; + this.getTextNodes(function(dict) { + dict.nodes.forEach(function(node) { + node = node.node; + var match = void 0; + while ((match = regex.exec(node.textContent)) !== null && match[matchIdx] !== "") { + if (!filterCb(match[matchIdx], node)) { + continue; + } + var pos = match.index; + if (matchIdx !== 0) { + for (var i = 1; i < matchIdx; i++) { + pos += match[i].length; + } + } + node = _this6.wrapRangeInTextNode(node, pos, pos + match[matchIdx].length); + eachCb(node.previousSibling); + regex.lastIndex = 0; + } + }); + endCb(); + }); + } + }, { + key: "wrapMatchesAcrossElements", + value: function wrapMatchesAcrossElements(regex, ignoreGroups, filterCb, eachCb, endCb) { + var _this7 = this; + var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1; + this.getTextNodes(function(dict) { + var match = void 0; + while ((match = regex.exec(dict.value)) !== null && match[matchIdx] !== "") { + var start = match.index; + if (matchIdx !== 0) { + for (var i = 1; i < matchIdx; i++) { + start += match[i].length; + } + } + var end = start + match[matchIdx].length; + _this7.wrapRangeInMappedTextNode(dict, start, end, function(node) { + return filterCb(match[matchIdx], node); + }, function(node, lastIndex) { + regex.lastIndex = lastIndex; + eachCb(node); + }); + } + endCb(); + }); + } + }, { + key: "wrapRangeFromIndex", + value: function wrapRangeFromIndex(ranges, filterCb, eachCb, endCb) { + var _this8 = this; + this.getTextNodes(function(dict) { + var originalLength = dict.value.length; + ranges.forEach(function(range, counter) { + var _checkWhitespaceRange = _this8.checkWhitespaceRanges(range, originalLength, dict.value), start = _checkWhitespaceRange.start, end = _checkWhitespaceRange.end, valid = _checkWhitespaceRange.valid; + if (valid) { + _this8.wrapRangeInMappedTextNode(dict, start, end, function(node) { + return filterCb(node, range, dict.value.substring(start, end), counter); + }, function(node) { + eachCb(node, range); + }); + } + }); + endCb(); + }); + } + }, { + key: "unwrapMatches", + value: function unwrapMatches(node) { + var parent = node.parentNode; + var docFrag = document.createDocumentFragment(); + while (node.firstChild) { + docFrag.appendChild(node.removeChild(node.firstChild)); + } + parent.replaceChild(docFrag, node); + if (!this.ie) { + parent.normalize(); + } else { + this.normalizeTextNode(parent); + } + } + }, { + key: "normalizeTextNode", + value: function normalizeTextNode(node) { + if (!node) { + return; + } + if (node.nodeType === 3) { + while (node.nextSibling && node.nextSibling.nodeType === 3) { + node.nodeValue += node.nextSibling.nodeValue; + node.parentNode.removeChild(node.nextSibling); + } + } else { + this.normalizeTextNode(node.firstChild); + } + this.normalizeTextNode(node.nextSibling); + } + }, { + key: "markRegExp", + value: function markRegExp(regexp, opt) { + var _this9 = this; + this.opt = opt; + this.log('Searching with expression "' + regexp + '"'); + var totalMatches = 0, fn = "wrapMatches"; + var eachCb = function eachCb2(element) { + totalMatches++; + _this9.opt.each(element); + }; + if (this.opt.acrossElements) { + fn = "wrapMatchesAcrossElements"; + } + this[fn](regexp, this.opt.ignoreGroups, function(match, node) { + return _this9.opt.filter(node, match, totalMatches); + }, eachCb, function() { + if (totalMatches === 0) { + _this9.opt.noMatch(regexp); + } + _this9.opt.done(totalMatches); + }); + } + }, { + key: "mark", + value: function mark(sv, opt) { + var _this10 = this; + this.opt = opt; + var totalMatches = 0, fn = "wrapMatches"; + var _getSeparatedKeywords = this.getSeparatedKeywords(typeof sv === "string" ? [sv] : sv), kwArr = _getSeparatedKeywords.keywords, kwArrLen = _getSeparatedKeywords.length, sens = this.opt.caseSensitive ? "" : "i", handler = function handler2(kw) { + var regex = new RegExp(_this10.createRegExp(kw), "gm" + sens), matches = 0; + _this10.log('Searching with expression "' + regex + '"'); + _this10[fn](regex, 1, function(term, node) { + return _this10.opt.filter(node, kw, totalMatches, matches); + }, function(element) { + matches++; + totalMatches++; + _this10.opt.each(element); + }, function() { + if (matches === 0) { + _this10.opt.noMatch(kw); + } + if (kwArr[kwArrLen - 1] === kw) { + _this10.opt.done(totalMatches); + } else { + handler2(kwArr[kwArr.indexOf(kw) + 1]); + } + }); + }; + if (this.opt.acrossElements) { + fn = "wrapMatchesAcrossElements"; + } + if (kwArrLen === 0) { + this.opt.done(totalMatches); + } else { + handler(kwArr[0]); + } + } + }, { + key: "markRanges", + value: function markRanges(rawRanges, opt) { + var _this11 = this; + this.opt = opt; + var totalMatches = 0, ranges = this.checkRanges(rawRanges); + if (ranges && ranges.length) { + this.log("Starting to mark with the following ranges: " + JSON.stringify(ranges)); + this.wrapRangeFromIndex(ranges, function(node, range, match, counter) { + return _this11.opt.filter(node, range, match, counter); + }, function(element, range) { + totalMatches++; + _this11.opt.each(element, range); + }, function() { + _this11.opt.done(totalMatches); + }); + } else { + this.opt.done(totalMatches); + } + } + }, { + key: "unmark", + value: function unmark(opt) { + var _this12 = this; + this.opt = opt; + var sel = this.opt.element ? this.opt.element : "*"; + sel += "[data-markjs]"; + if (this.opt.className) { + sel += "." + this.opt.className; + } + this.log('Removal selector "' + sel + '"'); + this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT, function(node) { + _this12.unwrapMatches(node); + }, function(node) { + var matchesSel = DOMIterator.matches(node, sel), matchesExclude = _this12.matchesExclude(node); + if (!matchesSel || matchesExclude) { + return NodeFilter.FILTER_REJECT; + } else { + return NodeFilter.FILTER_ACCEPT; + } + }, this.opt.done); + } + }, { + key: "opt", + set: function set$$1(val) { + this._opt = _extends({}, { + "element": "", + "className": "", + "exclude": [], + "iframes": false, + "iframesTimeout": 5e3, + "separateWordSearch": true, + "diacritics": true, + "synonyms": {}, + "accuracy": "partially", + "acrossElements": false, + "caseSensitive": false, + "ignoreJoiners": false, + "ignoreGroups": 0, + "ignorePunctuation": [], + "wildcards": "disabled", + "each": function each() { + }, + "noMatch": function noMatch() { + }, + "filter": function filter() { + return true; + }, + "done": function done() { + }, + "debug": false, + "log": window.console + }, val); + }, + get: function get$$1() { + return this._opt; + } + }, { + key: "iterator", + get: function get$$1() { + return new DOMIterator(this.ctx, this.opt.iframes, this.opt.exclude, this.opt.iframesTimeout); + } + }]); + return Mark3; + }(); + function Mark2(ctx) { + var _this = this; + var instance = new Mark$1(ctx); + this.mark = function(sv, opt) { + instance.mark(sv, opt); + return _this; + }; + this.markRegExp = function(sv, opt) { + instance.markRegExp(sv, opt); + return _this; + }; + this.markRanges = function(sv, opt) { + instance.markRanges(sv, opt); + return _this; + }; + this.unmark = function(opt) { + instance.unmark(opt); + return _this; + }; + return this; + } + return Mark2; + }); + } +}); + +// lib/highlight.ts +var import_mark = __toESM(require_mark(), 1); +var PagefindHighlight = class { + constructor(options = { + markContext: null, + highlightParam: "pagefind-highlight", + markOptions: { + className: "pagefind-highlight", + exclude: ["[data-pagefind-ignore]", "[data-pagefind-ignore] *"] + }, + addStyles: true + }) { + var _a, _b; + const { highlightParam, markContext, markOptions, addStyles } = options; + this.highlightParam = highlightParam ?? "pagefind-highlight"; + this.addStyles = addStyles ?? true; + this.markContext = markContext !== void 0 ? markContext : null; + this.markOptions = markOptions !== void 0 ? markOptions : { + className: "pagefind-highlight", + exclude: ["[data-pagefind-ignore]", "[data-pagefind-ignore] *"] + }; + (_a = this.markOptions).className ?? (_a.className = "pagefind__highlight"); + (_b = this.markOptions).exclude ?? (_b.exclude = [ + "[data-pagefind-ignore]", + "[data-pagefind-ignore] *" + ]); + this.markOptions.separateWordSearch = false; + this.highlight(); + } + getHighlightParams(paramName) { + const urlParams = new URLSearchParams(window.location.search); + return urlParams.getAll(paramName); + } + // Inline styles might be too hard to override + addHighlightStyles(className) { + if (!className) + return; + const styleElement = document.createElement("style"); + styleElement.innerText = `:where(.${className}) { background-color: yellow; color: black; }`; + document.head.appendChild(styleElement); + } + createMarkInstance() { + if (this.markContext) { + return new import_mark.default(this.markContext); + } + const pagefindBody = document.querySelectorAll("[data-pagefind-body]"); + if (pagefindBody.length !== 0) { + return new import_mark.default(pagefindBody); + } else { + return new import_mark.default(document.body); + } + } + markText(instance, text) { + instance.mark(text, this.markOptions); + } + highlight() { + const params = this.getHighlightParams(this.highlightParam); + if (!params || params.length === 0) + return; + this.addStyles && this.addHighlightStyles(this.markOptions.className); + const markInstance = this.createMarkInstance(); + this.markText(markInstance, params); + } +}; +window.PagefindHighlight = PagefindHighlight; +export { + PagefindHighlight as default +}; +/*! Bundled license information: + +mark.js/dist/mark.js: + (*!*************************************************** + * mark.js v8.11.1 + * https://markjs.io/ + * Copyright (c) 2014–2018, Julian Kühnel + * Released under the MIT license https://git.io/vwTVl + *****************************************************) +*/ diff --git a/static/js/pagefind-modular-ui.css b/static/js/pagefind-modular-ui.css new file mode 100644 index 00000000..9c6793ed --- /dev/null +++ b/static/js/pagefind-modular-ui.css @@ -0,0 +1,214 @@ +:root { + --pagefind-ui-scale: 0.8; + --pagefind-ui-primary: #034AD8; + --pagefind-ui-fade: #707070; + --pagefind-ui-text: #393939; + --pagefind-ui-background: #ffffff; + --pagefind-ui-border: #eeeeee; + --pagefind-ui-tag: #eeeeee; + --pagefind-ui-border-width: 2px; + --pagefind-ui-border-radius: 8px; + --pagefind-ui-image-border-radius: 8px; + --pagefind-ui-image-box-ratio: 3 / 2; + --pagefind-ui-font: system, -apple-system, ".SFNSText-Regular", + "San Francisco", "Roboto", "Segoe UI", "Helvetica Neue", + "Lucida Grande", sans-serif; +} + +[data-pfmod-hidden] { + display: none !important; +} + +[data-pfmod-suppressed] { + opacity: 0 !important; + pointer-events: none !important; +} + +[data-pfmod-sr-hidden] { + -webkit-clip: rect(0 0 0 0) !important; + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(100%) !important; + clip-path: inset(100%) !important; + height: 1px !important; + overflow: hidden !important; + overflow: clip !important; + position: absolute !important; + white-space: nowrap !important; + width: 1px !important; +} + +[data-pfmod-loading] { + color: var(--pagefind-ui-text); + background-color: var(--pagefind-ui-text); + border-radius: var(--pagefind-ui-border-radius); + opacity: 0.1; + pointer-events: none; +} + +/* Input */ + +.pagefind-modular-input-wrapper { + position: relative; +} + +.pagefind-modular-input-wrapper::before { + background-color: var(--pagefind-ui-text); + width: calc(18px * var(--pagefind-ui-scale)); + height: calc(18px * var(--pagefind-ui-scale)); + top: calc(23px * var(--pagefind-ui-scale)); + left: calc(20px * var(--pagefind-ui-scale)); + content: ""; + position: absolute; + display: block; + opacity: 0.7; + -webkit-mask-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A"); + mask-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A"); + -webkit-mask-size: 100%; + mask-size: 100%; + z-index: 9; + pointer-events: none; +} + +.pagefind-modular-input { + height: calc(64px * var(--pagefind-ui-scale)); + padding: 0 calc(70px * var(--pagefind-ui-scale)) 0 calc(54px * var(--pagefind-ui-scale)); + background-color: var(--pagefind-ui-background); + border: var(--pagefind-ui-border-width) solid var(--pagefind-ui-border); + border-radius: var(--pagefind-ui-border-radius); + font-size: calc(21px * var(--pagefind-ui-scale)); + position: relative; + appearance: none; + -webkit-appearance: none; + display: flex; + width: 100%; + box-sizing: border-box; + font-weight: 700; +} + +.pagefind-modular-input::placeholder { + opacity: 0.2; +} + +.pagefind-modular-input-clear { + position: absolute; + top: calc(2px * var(--pagefind-ui-scale)); + right: calc(2px * var(--pagefind-ui-scale)); + height: calc(60px * var(--pagefind-ui-scale)); + border-radius: var(--pagefind-ui-border-radius); + padding: 0 calc(15px * var(--pagefind-ui-scale)) 0 calc(2px * var(--pagefind-ui-scale)); + color: var(--pagefind-ui-text); + font-size: calc(14px * var(--pagefind-ui-scale)); + cursor: pointer; + background-color: var(--pagefind-ui-background); + border: none; + appearance: none; +} + +/* ResultList */ + +.pagefind-modular-list-result { + list-style-type: none; + display: flex; + align-items: flex-start; + gap: min(calc(40px * var(--pagefind-ui-scale)), 3%); + padding: calc(30px * var(--pagefind-ui-scale)) 0 calc(40px * var(--pagefind-ui-scale)); + border-top: solid var(--pagefind-ui-border-width) var(--pagefind-ui-border); +} + +.pagefind-modular-list-result:last-of-type { + border-bottom: solid var(--pagefind-ui-border-width) var(--pagefind-ui-border); +} + +.pagefind-modular-list-thumb { + width: min(30%, + calc((30% - (100px * var(--pagefind-ui-scale))) * 100000)); + max-width: calc(120px * var(--pagefind-ui-scale)); + margin-top: calc(10px * var(--pagefind-ui-scale)); + aspect-ratio: var(--pagefind-ui-image-box-ratio); + position: relative; +} + +.pagefind-modular-list-image { + display: block; + position: absolute; + left: 50%; + transform: translateX(-50%); + font-size: 0; + width: auto; + height: auto; + max-width: 100%; + max-height: 100%; + border-radius: var(--pagefind-ui-image-border-radius); +} + +.pagefind-modular-list-inner { + flex: 1; + display: flex; + flex-direction: column; + align-items: flex-start; + margin-top: calc(10px * var(--pagefind-ui-scale)); +} + +.pagefind-modular-list-title { + display: inline-block; + font-weight: 700; + font-size: calc(21px * var(--pagefind-ui-scale)); + margin-top: 0; + margin-bottom: 0; +} + +.pagefind-modular-list-link { + color: var(--pagefind-ui-text); + text-decoration: none; +} + +.pagefind-modular-list-link:hover { + text-decoration: underline; +} + +.pagefind-modular-list-excerpt { + display: inline-block; + font-weight: 400; + font-size: calc(16px * var(--pagefind-ui-scale)); + margin-top: calc(4px * var(--pagefind-ui-scale)); + margin-bottom: 0; + min-width: calc(250px * var(--pagefind-ui-scale)); +} + +/* FilterPills */ + +.pagefind-modular-filter-pills-wrapper { + overflow-x: scroll; + padding: 15px 0; +} + +.pagefind-modular-filter-pills { + display: flex; + gap: 6px; +} + +.pagefind-modular-filter-pill { + display: flex; + justify-content: center; + align-items: center; + border: none; + appearance: none; + padding: 0 calc(24px * var(--pagefind-ui-scale)); + background-color: var(--pagefind-ui-background); + color: var(--pagefind-ui-fade); + border: var(--pagefind-ui-border-width) solid var(--pagefind-ui-border); + border-radius: calc(25px * var(--pagefind-ui-scale)); + font-size: calc(18px * var(--pagefind-ui-scale)); + height: calc(50px * var(--pagefind-ui-scale)); + cursor: pointer; + white-space: nowrap; +} + +.pagefind-modular-filter-pill:hover { + border-color: var(--pagefind-ui-primary); +} + +.pagefind-modular-filter-pill[aria-pressed="true"] { + border-color: var(--pagefind-ui-primary); + color: var(--pagefind-ui-primary); +} \ No newline at end of file diff --git a/static/js/pagefind-modular-ui.js b/static/js/pagefind-modular-ui.js new file mode 100644 index 00000000..93019091 --- /dev/null +++ b/static/js/pagefind-modular-ui.js @@ -0,0 +1,8 @@ +(()=>{var b=Object.defineProperty;var w=(i,e)=>{for(var t in e)b(i,t,{get:e[t],enumerable:!0})};var f={};w(f,{FilterPills:()=>h,Input:()=>l,Instance:()=>p,ResultList:()=>a,Summary:()=>o});var r=class i{constructor(e){this.element=document.createElement(e)}id(e){return this.element.id=e,this}class(e){return this.element.classList.add(e),this}attrs(e){for(let[t,s]of Object.entries(e))this.element.setAttribute(t,s);return this}text(e){return this.element.innerText=e,this}html(e){return this.element.innerHTML=e,this}handle(e,t){return this.element.addEventListener(e,t),this}addTo(e){return e instanceof i?e.element.appendChild(this.element):e.appendChild(this.element),this.element}};var T=async(i=100)=>new Promise(e=>setTimeout(e,i)),l=class{constructor(e={}){if(this.inputEl=null,this.clearEl=null,this.instance=null,this.searchID=0,this.debounceTimeoutMs=e.debounceTimeoutMs??300,e.inputElement){if(e.containerElement){console.warn("[Pagefind Input component]: inputElement and containerElement both supplied. Ignoring the container option.");return}this.initExisting(e.inputElement)}else if(e.containerElement)this.initContainer(e.containerElement);else{console.error("[Pagefind Input component]: No selector supplied for containerElement or inputElement");return}this.inputEl.addEventListener("input",async t=>{if(this.instance&&typeof t?.target?.value=="string"){this.updateState(t.target.value);let s=++this.searchID;if(await T(this.debounceTimeoutMs),s!==this.searchID)return null;this.instance?.triggerSearch(t.target.value)}}),this.inputEl.addEventListener("keydown",t=>{t.key==="Escape"&&(++this.searchID,this.inputEl.value="",this.instance?.triggerSearch(""),this.updateState("")),t.key==="Enter"&&t.preventDefault()}),this.inputEl.addEventListener("focus",()=>{this.instance?.triggerLoad()})}initContainer(e){let t=document.querySelector(e);if(!t){console.error(`[Pagefind Input component]: No container found for ${e} selector`);return}if(t.tagName==="INPUT")console.warn(`[Pagefind Input component]: Encountered input element for ${e} when a container was expected`),console.warn("[Pagefind Input component]: Treating containerElement option as inputElement and proceeding"),this.initExisting(e);else{t.innerHTML="";let s=0;for(;document.querySelector(`#pfmod-input-${s}`);)s+=1;let n=new r("form").class("pagefind-modular-input-wrapper").attrs({role:"search","aria-label":"Search this site",action:"javascript:void(0);"});new r("label").attrs({for:`pfmod-input-${s}`,"data-pfmod-sr-hidden":"true"}).text("Search this site").addTo(n),this.inputEl=new r("input").id(`pfmod-input-${s}`).class("pagefind-modular-input").attrs({autocapitalize:"none",enterkeyhint:"search"}).addTo(n),this.clearEl=new r("button").class("pagefind-modular-input-clear").attrs({"data-pfmod-suppressed":"true"}).text("Clear").handle("click",()=>{this.inputEl.value="",this.instance.triggerSearch(""),this.updateState("")}).addTo(n),n.addTo(t)}}initExisting(e){let t=document.querySelector(e);if(!t){console.error(`[Pagefind Input component]: No input element found for ${e} selector`);return}if(t.tagName!=="INPUT"){console.error(`[Pagefind Input component]: Expected ${e} to be an element`);return}this.inputEl=t}updateState(e){this.clearEl&&(e&&e?.length?this.clearEl.removeAttribute("data-pfmod-suppressed"):this.clearEl.setAttribute("data-pfmod-suppressed","true"))}register(e){this.instance=e,this.instance.on("search",(t,s)=>{this.inputEl&&document.activeElement!==this.inputEl&&(this.inputEl.value=t,this.updateState(t))})}focus(){this.inputEl&&this.inputEl.focus()}};var g=i=>{if(i instanceof Element)return[i];if(Array.isArray(i)&&i.every(e=>e instanceof Element))return i;if(typeof i=="string"||i instanceof String){let e=document.createElement("div");return e.innerHTML=i,[...e.childNodes]}else return console.error(`[Pagefind ResultList component]: Expected template function to return an HTML element or string, got ${typeof i}`),[]},v=()=>{let i=(e=30)=>". ".repeat(Math.floor(10+Math.random()*e));return`
  • +
    +
    +

    ${i(30)}

    +

    ${i(40)}

    +
    +
  • `},y=i=>{let e=new r("li").class("pagefind-modular-list-result"),t=new r("div").class("pagefind-modular-list-thumb").addTo(e);i?.meta?.image&&new r("img").class("pagefind-modular-list-image").attrs({src:i.meta.image,alt:i.meta.image_alt||i.meta.title}).addTo(t);let s=new r("div").class("pagefind-modular-list-inner").addTo(e),n=new r("p").class("pagefind-modular-list-title").addTo(s);return new r("a").class("pagefind-modular-list-link").text(i.meta?.title).attrs({href:i.meta?.url||i.url}).addTo(n),new r("p").class("pagefind-modular-list-excerpt").html(i.excerpt).addTo(s),e.element},E=i=>{if(!(i instanceof HTMLElement))return null;let e=window.getComputedStyle(i).overflowY;return e!=="visible"&&e!=="hidden"?i:E(i.parentNode)},d=class{constructor(e={}){this.rawResult=e.result,this.placeholderNodes=e.placeholderNodes,this.resultFn=e.resultFn,this.intersectionEl=e.intersectionEl,this.result=null,this.waitForIntersection()}waitForIntersection(){if(!this.placeholderNodes?.length)return;let e={root:this.intersectionEl,rootMargin:"0px",threshold:.01};new IntersectionObserver((s,n)=>{this.result===null&&s?.[0]?.isIntersecting&&(this.load(),n.disconnect())},e).observe(this.placeholderNodes[0])}async load(){if(!this.placeholderNodes?.length)return;this.result=await this.rawResult.data();let e=this.resultFn(this.result),t=g(e);for(;this.placeholderNodes.length>1;)this.placeholderNodes.pop().remove();this.placeholderNodes[0].replaceWith(...t)}},a=class{constructor(e){if(this.intersectionEl=document.body,this.containerEl=null,this.results=[],this.placeholderTemplate=e.placeholderTemplate??v,this.resultTemplate=e.resultTemplate??y,e.containerElement)this.initContainer(e.containerElement);else{console.error("[Pagefind ResultList component]: No selector supplied for containerElement");return}}initContainer(e){let t=document.querySelector(e);if(!t){console.error(`[Pagefind ResultList component]: No container found for ${e} selector`);return}this.containerEl=t}append(e){for(let t of e)this.containerEl.appendChild(t)}register(e){e.on("results",t=>{this.containerEl&&(this.containerEl.innerHTML="",this.intersectionEl=E(this.containerEl),this.results=t.results.map(s=>{let n=g(this.placeholderTemplate());return this.append(n),new d({result:s,placeholderNodes:n,resultFn:this.resultTemplate,intersectionEl:this.intersectionEl})}))}),e.on("loading",()=>{this.containerEl&&(this.containerEl.innerHTML="")})}};var o=class{constructor(e={}){if(this.containerEl=null,this.defaultMessage=e.defaultMessage??"",this.term="",e.containerElement)this.initContainer(e.containerElement);else{console.error("[Pagefind Summary component]: No selector supplied for containerElement");return}}initContainer(e){let t=document.querySelector(e);if(!t){console.error(`[Pagefind Summary component]: No container found for ${e} selector`);return}this.containerEl=t,this.containerEl.innerText=this.defaultMessage}register(e){e.on("search",(t,s)=>{this.term=t}),e.on("results",t=>{if(!this.containerEl||!t)return;if(!this.term){this.containerEl.innerText=this.defaultMessage;return}let s=t?.results?.length??0;this.containerEl.innerText=`${s} result${s===1?"":"s"} for ${this.term}`}),e.on("loading",()=>{this.containerEl&&(this.containerEl.innerText=`Searching for ${this.term}...`)})}};var h=class{constructor(e={}){if(this.instance=null,this.wrapper=null,this.pillContainer=null,this.available={},this.selected=["All"],this.total=0,this.filterMemo="",this.filter=e.filter,this.ordering=e.ordering??null,this.alwaysShow=e.alwaysShow??!1,this.selectMultiple=e.selectMultiple??!1,!this.filter?.length){console.error("[Pagefind FilterPills component]: No filter option supplied, nothing to display");return}if(e.containerElement)this.initContainer(e.containerElement);else{console.error("[Pagefind FilterPills component]: No selector supplied for containerElement");return}}initContainer(e){let t=document.querySelector(e);if(!t){console.error(`[Pagefind FilterPills component]: No container found for ${e} selector`);return}t.innerHTML="";let s=`pagefind_modular_filter_pills_${this.filter}`,n=new r("div").class("pagefind-modular-filter-pills-wrapper").attrs({role:"group","aria-labelledby":s});this.alwaysShow||n.attrs({"data-pfmod-hidden":!0}),new r("div").id(s).class("pagefind-modular-filter-pills-label").attrs({"data-pfmod-sr-hidden":!0}).text(`Filter results by ${this.filter}`).addTo(n),this.pillContainer=new r("div").class("pagefind-modular-filter-pills").addTo(n),this.wrapper=n.addTo(t)}update(){let e=this.available.map(t=>t[0]).join("~");e==this.filterMemo?this.updateExisting():(this.renderNew(),this.filterMemo=e)}pushFilters(){let e=this.selected.filter(t=>t!=="All");this.instance.triggerFilter(this.filter,e)}pillInner(e,t){return this.total?`${e} (${t})`:`${e}`}renderNew(){this.available.forEach(([e,t])=>{new r("button").class("pagefind-modular-filter-pill").html(this.pillInner(e,t)).attrs({"aria-pressed":this.selected.includes(e),type:"button"}).handle("click",()=>{e==="All"?this.selected=["All"]:this.selected.includes(e)?this.selected=this.selected.filter(s=>s!==e):this.selectMultiple?this.selected.push(e):this.selected=[e],this.selected?.length?this.selected?.length>1&&(this.selected=this.selected.filter(s=>s!=="All")):this.selected=["All"],this.update(),this.pushFilters()}).addTo(this.pillContainer)})}updateExisting(){let e=[...this.pillContainer.childNodes];this.available.forEach(([t,s],n)=>{e[n].innerHTML=this.pillInner(t,s),e[n].setAttribute("aria-pressed",this.selected.includes(t))})}register(e){this.instance=e,this.instance.on("filters",t=>{if(!this.pillContainer)return;this.selectMultiple?t=t.available:t=t.total;let s=t[this.filter];if(!s){console.warn(`[Pagefind FilterPills component]: No possible values found for the ${this.filter} filter`);return}this.available=Object.entries(s),Array.isArray(this.ordering)?this.available.sort((n,c)=>{let m=this.ordering.indexOf(n[0]),_=this.ordering.indexOf(c[0]);return(m===-1?1/0:m)-(_===-1?1/0:_)}):this.available.sort((n,c)=>n[0].localeCompare(c[0])),this.available.unshift(["All",this.total]),this.update()}),e.on("results",t=>{this.pillContainer&&(this.total=t?.unfilteredResultCount||0,this.available?.[0]?.[0]==="All"&&(this.available[0][1]=this.total),this.total||this.alwaysShow?this.wrapper.removeAttribute("data-pfmod-hidden"):this.wrapper.setAttribute("data-pfmod-hidden","true"),this.update())})}};var F=async(i=50)=>await new Promise(e=>setTimeout(e,i)),u;try{u=new URL(document.currentScript.src).pathname.match(/^(.*\/)(?:pagefind-)?modular-ui.js.*$/)[1]}catch{u="/pagefind/"}var p=class{constructor(e={}){this.__pagefind__=null,this.__initializing__=null,this.__searchID__=0,this.__hooks__={search:[],filters:[],loading:[],results:[]},this.components=[],this.searchTerm="",this.searchFilters={},this.searchResult={},this.availableFilters=null,this.totalFilters=null,this.options={bundlePath:e.bundlePath??u,mergeIndex:e.mergeIndex??[]},delete e.bundlePath,delete e.resetStyles,delete e.processResult,delete e.processTerm,delete e.debounceTimeoutMs,delete e.mergeIndex,delete e.translations,this.pagefindOptions=e}add(e){e?.register?.(this),this.components.push(e)}on(e,t){if(!this.__hooks__[e]){let s=Object.keys(this.__hooks__).join(", ");console.error(`[Pagefind Composable]: Unknown event type ${e}. Supported events: [${s}]`);return}if(typeof t!="function"){console.error(`[Pagefind Composable]: Expected callback to be a function, received ${typeof t}`);return}this.__hooks__[e].push(t)}triggerLoad(){this.__load__()}triggerSearch(e){this.searchTerm=e,this.__dispatch__("search",e,this.searchFilters),this.__search__(e,this.searchFilters)}triggerSearchWithFilters(e,t){this.searchTerm=e,this.searchFilters=t,this.__dispatch__("search",e,t),this.__search__(e,t)}triggerFilters(e){this.searchFilters=e,this.__dispatch__("search",this.searchTerm,e),this.__search__(this.searchTerm,e)}triggerFilter(e,t){this.searchFilters=this.searchFilters||{},this.searchFilters[e]=t,this.__dispatch__("search",this.searchTerm,this.searchFilters),this.__search__(this.searchTerm,this.searchFilters)}__dispatch__(e,...t){this.__hooks__[e]?.forEach(s=>s?.(...t))}async __clear__(){this.__dispatch__("results",{results:[],unfilteredTotalCount:0}),this.availableFilters=await this.__pagefind__.filters(),this.totalFilters=this.availableFilters,this.__dispatch__("filters",{available:this.availableFilters,total:this.totalFilters})}async __search__(e,t){this.__dispatch__("loading"),await this.__load__();let s=++this.__searchID__;if(!e||!e.length)return this.__clear__();let n=await this.__pagefind__.search(e,{filters:t});n&&this.__searchID__===s&&(n.filters&&Object.keys(n.filters)?.length&&(this.availableFilters=n.filters,this.totalFilters=n.totalFilters,this.__dispatch__("filters",{available:this.availableFilters,total:this.totalFilters})),this.searchResult=n,this.__dispatch__("results",this.searchResult))}async __load__(){if(this.__initializing__){for(;!this.__pagefind__;)await F(50);return}if(this.__initializing__=!0,!this.__pagefind__){let e;try{e=await import(`${this.options.bundlePath}pagefind.js`)}catch(t){console.error(t),console.error([`Pagefind couldn't be loaded from ${this.options.bundlePath}pagefind.js`,"You can configure this by passing a bundlePath option to PagefindComposable Instance",`[DEBUG: Loaded from ${document?.currentScript?.src??"no known script location"}]`].join(` +`))}await e.options(this.pagefindOptions||{});for(let t of this.options.mergeIndex){if(!t.bundlePath)throw new Error("mergeIndex requires a bundlePath parameter");let s=t.bundlePath;delete t.bundlePath,await e.mergeIndex(s,t)}this.__pagefind__=e}this.availableFilters=await this.__pagefind__.filters(),this.totalFilters=this.availableFilters,this.__dispatch__("filters",{available:this.availableFilters,total:this.totalFilters})}};window.PagefindModularUI=f;})(); diff --git a/static/js/pagefind-ui.css b/static/js/pagefind-ui.css new file mode 100644 index 00000000..d7984a98 --- /dev/null +++ b/static/js/pagefind-ui.css @@ -0,0 +1 @@ +.pagefind-ui__result.svelte-j9e30.svelte-j9e30{list-style-type:none;display:flex;align-items:flex-start;gap:min(calc(40px * var(--pagefind-ui-scale)),3%);padding:calc(30px * var(--pagefind-ui-scale)) 0 calc(40px * var(--pagefind-ui-scale));border-top:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result.svelte-j9e30.svelte-j9e30:last-of-type{border-bottom:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result-thumb.svelte-j9e30.svelte-j9e30{width:min(30%,calc((30% - (100px * var(--pagefind-ui-scale))) * 100000));max-width:calc(120px * var(--pagefind-ui-scale));margin-top:calc(10px * var(--pagefind-ui-scale));aspect-ratio:var(--pagefind-ui-image-box-ratio);position:relative}.pagefind-ui__result-image.svelte-j9e30.svelte-j9e30{display:block;position:absolute;left:50%;transform:translate(-50%);font-size:0;width:auto;height:auto;max-width:100%;max-height:100%;border-radius:var(--pagefind-ui-image-border-radius)}.pagefind-ui__result-inner.svelte-j9e30.svelte-j9e30{flex:1;display:flex;flex-direction:column;align-items:flex-start;margin-top:calc(10px * var(--pagefind-ui-scale))}.pagefind-ui__result-title.svelte-j9e30.svelte-j9e30{display:inline-block;font-weight:700;font-size:calc(21px * var(--pagefind-ui-scale));margin-top:0;margin-bottom:0}.pagefind-ui__result-title.svelte-j9e30 .pagefind-ui__result-link.svelte-j9e30{color:var(--pagefind-ui-text);text-decoration:none}.pagefind-ui__result-title.svelte-j9e30 .pagefind-ui__result-link.svelte-j9e30:hover{text-decoration:underline}.pagefind-ui__result-excerpt.svelte-j9e30.svelte-j9e30{display:inline-block;font-weight:400;font-size:calc(16px * var(--pagefind-ui-scale));margin-top:calc(4px * var(--pagefind-ui-scale));margin-bottom:0;min-width:calc(250px * var(--pagefind-ui-scale))}.pagefind-ui__loading.svelte-j9e30.svelte-j9e30{color:var(--pagefind-ui-text);background-color:var(--pagefind-ui-text);border-radius:var(--pagefind-ui-border-radius);opacity:.1;pointer-events:none}.pagefind-ui__result-tags.svelte-j9e30.svelte-j9e30{list-style-type:none;padding:0;display:flex;gap:calc(20px * var(--pagefind-ui-scale));flex-wrap:wrap;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__result-tag.svelte-j9e30.svelte-j9e30{padding:calc(4px * var(--pagefind-ui-scale)) calc(8px * var(--pagefind-ui-scale));font-size:calc(14px * var(--pagefind-ui-scale));border-radius:var(--pagefind-ui-border-radius);background-color:var(--pagefind-ui-tag)}.pagefind-ui__result.svelte-4xnkmf.svelte-4xnkmf{list-style-type:none;display:flex;align-items:flex-start;gap:min(calc(40px * var(--pagefind-ui-scale)),3%);padding:calc(30px * var(--pagefind-ui-scale)) 0 calc(40px * var(--pagefind-ui-scale));border-top:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result.svelte-4xnkmf.svelte-4xnkmf:last-of-type{border-bottom:solid var(--pagefind-ui-border-width) var(--pagefind-ui-border)}.pagefind-ui__result-nested.svelte-4xnkmf.svelte-4xnkmf{display:flex;flex-direction:column;padding-left:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__result-nested.svelte-4xnkmf.svelte-4xnkmf:first-of-type{padding-top:calc(10px * var(--pagefind-ui-scale))}.pagefind-ui__result-nested.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf{font-size:.9em;position:relative}.pagefind-ui__result-nested.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf:before{content:"\2937 ";position:absolute;top:0;right:calc(100% + .1em)}.pagefind-ui__result-thumb.svelte-4xnkmf.svelte-4xnkmf{width:min(30%,calc((30% - (100px * var(--pagefind-ui-scale))) * 100000));max-width:calc(120px * var(--pagefind-ui-scale));margin-top:calc(10px * var(--pagefind-ui-scale));aspect-ratio:var(--pagefind-ui-image-box-ratio);position:relative}.pagefind-ui__result-image.svelte-4xnkmf.svelte-4xnkmf{display:block;position:absolute;left:50%;transform:translate(-50%);font-size:0;width:auto;height:auto;max-width:100%;max-height:100%;border-radius:var(--pagefind-ui-image-border-radius)}.pagefind-ui__result-inner.svelte-4xnkmf.svelte-4xnkmf{flex:1;display:flex;flex-direction:column;align-items:flex-start;margin-top:calc(10px * var(--pagefind-ui-scale))}.pagefind-ui__result-title.svelte-4xnkmf.svelte-4xnkmf{display:inline-block;font-weight:700;font-size:calc(21px * var(--pagefind-ui-scale));margin-top:0;margin-bottom:0}.pagefind-ui__result-title.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf{color:var(--pagefind-ui-text);text-decoration:none}.pagefind-ui__result-title.svelte-4xnkmf .pagefind-ui__result-link.svelte-4xnkmf:hover{text-decoration:underline}.pagefind-ui__result-excerpt.svelte-4xnkmf.svelte-4xnkmf{display:inline-block;font-weight:400;font-size:calc(16px * var(--pagefind-ui-scale));margin-top:calc(4px * var(--pagefind-ui-scale));margin-bottom:0;min-width:calc(250px * var(--pagefind-ui-scale))}.pagefind-ui__loading.svelte-4xnkmf.svelte-4xnkmf{color:var(--pagefind-ui-text);background-color:var(--pagefind-ui-text);border-radius:var(--pagefind-ui-border-radius);opacity:.1;pointer-events:none}.pagefind-ui__result-tags.svelte-4xnkmf.svelte-4xnkmf{list-style-type:none;padding:0;display:flex;gap:calc(20px * var(--pagefind-ui-scale));flex-wrap:wrap;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__result-tag.svelte-4xnkmf.svelte-4xnkmf{padding:calc(4px * var(--pagefind-ui-scale)) calc(8px * var(--pagefind-ui-scale));font-size:calc(14px * var(--pagefind-ui-scale));border-radius:var(--pagefind-ui-border-radius);background-color:var(--pagefind-ui-tag)}legend.svelte-1v2r7ls.svelte-1v2r7ls{position:absolute;clip:rect(0 0 0 0)}.pagefind-ui__filter-panel.svelte-1v2r7ls.svelte-1v2r7ls{min-width:min(calc(260px * var(--pagefind-ui-scale)),100%);flex:1;display:flex;flex-direction:column;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__filter-group.svelte-1v2r7ls.svelte-1v2r7ls{border:0;padding:0}.pagefind-ui__filter-block.svelte-1v2r7ls.svelte-1v2r7ls{padding:0;display:block;border-bottom:solid calc(2px * var(--pagefind-ui-scale)) var(--pagefind-ui-border);padding:calc(20px * var(--pagefind-ui-scale)) 0}.pagefind-ui__filter-name.svelte-1v2r7ls.svelte-1v2r7ls{font-size:calc(16px * var(--pagefind-ui-scale));position:relative;display:flex;align-items:center;list-style:none;font-weight:700;cursor:pointer;height:calc(24px * var(--pagefind-ui-scale))}.pagefind-ui__filter-name.svelte-1v2r7ls.svelte-1v2r7ls::-webkit-details-marker{display:none}.pagefind-ui__filter-name.svelte-1v2r7ls.svelte-1v2r7ls:after{position:absolute;content:"";right:calc(6px * var(--pagefind-ui-scale));top:50%;width:calc(8px * var(--pagefind-ui-scale));height:calc(8px * var(--pagefind-ui-scale));border:solid calc(2px * var(--pagefind-ui-scale)) currentColor;border-right:0;border-top:0;transform:translateY(-70%) rotate(-45deg)}.pagefind-ui__filter-block[open].svelte-1v2r7ls .pagefind-ui__filter-name.svelte-1v2r7ls:after{transform:translateY(-70%) rotate(-225deg)}.pagefind-ui__filter-group.svelte-1v2r7ls.svelte-1v2r7ls{display:flex;flex-direction:column;gap:calc(20px * var(--pagefind-ui-scale));padding-top:calc(30px * var(--pagefind-ui-scale))}.pagefind-ui__filter-value.svelte-1v2r7ls.svelte-1v2r7ls{position:relative;display:flex;align-items:center;gap:calc(8px * var(--pagefind-ui-scale))}.pagefind-ui__filter-value.svelte-1v2r7ls.svelte-1v2r7ls:before{position:absolute;content:"";top:50%;left:calc(8px * var(--pagefind-ui-scale));width:0px;height:0px;border:solid 1px #fff;opacity:0;transform:translate(calc(4.5px * var(--pagefind-ui-scale) * -1),calc(.8px * var(--pagefind-ui-scale))) skew(-5deg) rotate(-45deg);transform-origin:top left;border-top:0;border-right:0;pointer-events:none}.pagefind-ui__filter-value.pagefind-ui__filter-value--checked.svelte-1v2r7ls.svelte-1v2r7ls:before{opacity:1;width:calc(9px * var(--pagefind-ui-scale));height:calc(4px * var(--pagefind-ui-scale));transition:width .1s ease-out .1s,height .1s ease-in}.pagefind-ui__filter-checkbox.svelte-1v2r7ls.svelte-1v2r7ls{margin:0;width:calc(16px * var(--pagefind-ui-scale));height:calc(16px * var(--pagefind-ui-scale));border:solid 1px var(--pagefind-ui-border);appearance:none;-webkit-appearance:none;border-radius:calc(var(--pagefind-ui-border-radius) / 2);background-color:var(--pagefind-ui-background);cursor:pointer}.pagefind-ui__filter-checkbox.svelte-1v2r7ls.svelte-1v2r7ls:checked{background-color:var(--pagefind-ui-primary);border:solid 1px var(--pagefind-ui-primary)}.pagefind-ui__filter-label.svelte-1v2r7ls.svelte-1v2r7ls{cursor:pointer;font-size:calc(16px * var(--pagefind-ui-scale));font-weight:400}.pagefind-ui--reset *:where(:not(html,iframe,canvas,img,svg,video):not(svg *,symbol *)){all:unset;display:revert;outline:revert}.pagefind-ui--reset *,.pagefind-ui--reset *:before,.pagefind-ui--reset *:after{box-sizing:border-box}.pagefind-ui--reset a,.pagefind-ui--reset button{cursor:revert}.pagefind-ui--reset ol,.pagefind-ui--reset ul,.pagefind-ui--reset menu{list-style:none}.pagefind-ui--reset img{max-width:100%}.pagefind-ui--reset table{border-collapse:collapse}.pagefind-ui--reset input,.pagefind-ui--reset textarea{-webkit-user-select:auto}.pagefind-ui--reset textarea{white-space:revert}.pagefind-ui--reset meter{-webkit-appearance:revert;appearance:revert}.pagefind-ui--reset ::placeholder{color:unset}.pagefind-ui--reset :where([hidden]){display:none}.pagefind-ui--reset :where([contenteditable]:not([contenteditable="false"])){-moz-user-modify:read-write;-webkit-user-modify:read-write;overflow-wrap:break-word;-webkit-line-break:after-white-space;-webkit-user-select:auto}.pagefind-ui--reset :where([draggable="true"]){-webkit-user-drag:element}.pagefind-ui--reset mark{all:revert}:root{--pagefind-ui-scale:.8;--pagefind-ui-primary:#393939;--pagefind-ui-text:#393939;--pagefind-ui-background:#ffffff;--pagefind-ui-border:#eeeeee;--pagefind-ui-tag:#eeeeee;--pagefind-ui-border-width:2px;--pagefind-ui-border-radius:8px;--pagefind-ui-image-border-radius:8px;--pagefind-ui-image-box-ratio:3 / 2;--pagefind-ui-font:system, -apple-system, "BlinkMacSystemFont", ".SFNSText-Regular", "San Francisco", "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", "Ubuntu", "arial", sans-serif}.pagefind-ui.svelte-e9gkc3{width:100%;color:var(--pagefind-ui-text);font-family:var(--pagefind-ui-font)}.pagefind-ui__hidden.svelte-e9gkc3{display:none!important}.pagefind-ui__suppressed.svelte-e9gkc3{opacity:0;pointer-events:none}.pagefind-ui__form.svelte-e9gkc3{position:relative}.pagefind-ui__form.svelte-e9gkc3:before{background-color:var(--pagefind-ui-text);width:calc(18px * var(--pagefind-ui-scale));height:calc(18px * var(--pagefind-ui-scale));top:calc(23px * var(--pagefind-ui-scale));left:calc(20px * var(--pagefind-ui-scale));content:"";position:absolute;display:block;opacity:.7;-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A");mask-image:url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A");-webkit-mask-size:100%;mask-size:100%;z-index:9;pointer-events:none}.pagefind-ui__search-input.svelte-e9gkc3{height:calc(64px * var(--pagefind-ui-scale));padding:0 calc(70px * var(--pagefind-ui-scale)) 0 calc(54px * var(--pagefind-ui-scale));background-color:var(--pagefind-ui-background);border:var(--pagefind-ui-border-width) solid var(--pagefind-ui-border);border-radius:var(--pagefind-ui-border-radius);font-size:calc(21px * var(--pagefind-ui-scale));position:relative;appearance:none;-webkit-appearance:none;display:flex;width:100%;box-sizing:border-box;font-weight:700}.pagefind-ui__search-input.svelte-e9gkc3::placeholder{opacity:.2}.pagefind-ui__search-clear.svelte-e9gkc3{position:absolute;top:calc(3px * var(--pagefind-ui-scale));right:calc(3px * var(--pagefind-ui-scale));height:calc(58px * var(--pagefind-ui-scale));padding:0 calc(15px * var(--pagefind-ui-scale)) 0 calc(2px * var(--pagefind-ui-scale));color:var(--pagefind-ui-text);font-size:calc(14px * var(--pagefind-ui-scale));cursor:pointer;background-color:var(--pagefind-ui-background);border-radius:var(--pagefind-ui-border-radius)}.pagefind-ui__drawer.svelte-e9gkc3{gap:calc(60px * var(--pagefind-ui-scale));display:flex;flex-direction:row;flex-wrap:wrap}.pagefind-ui__results-area.svelte-e9gkc3{min-width:min(calc(400px * var(--pagefind-ui-scale)),100%);flex:1000;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__results.svelte-e9gkc3{padding:0}.pagefind-ui__message.svelte-e9gkc3{box-sizing:content-box;font-size:calc(16px * var(--pagefind-ui-scale));height:calc(24px * var(--pagefind-ui-scale));padding:calc(20px * var(--pagefind-ui-scale)) 0;display:flex;align-items:center;font-weight:700;margin-top:0}.pagefind-ui__button.svelte-e9gkc3{margin-top:calc(40px * var(--pagefind-ui-scale));border:var(--pagefind-ui-border-width) solid var(--pagefind-ui-border);border-radius:var(--pagefind-ui-border-radius);height:calc(48px * var(--pagefind-ui-scale));padding:0 calc(12px * var(--pagefind-ui-scale));font-size:calc(16px * var(--pagefind-ui-scale));color:var(--pagefind-ui-primary);background:var(--pagefind-ui-background);width:100%;text-align:center;font-weight:700;cursor:pointer}.pagefind-ui__button.svelte-e9gkc3:hover{border-color:var(--pagefind-ui-primary);color:var(--pagefind-ui-primary);background:var(--pagefind-ui-background)} diff --git a/static/js/pagefind-ui.js b/static/js/pagefind-ui.js new file mode 100644 index 00000000..a20be551 --- /dev/null +++ b/static/js/pagefind-ui.js @@ -0,0 +1,2 @@ +(()=>{var Es=Object.defineProperty;var S=(n,e)=>{for(var t in e)Es(n,t,{get:e[t],enumerable:!0})};function j(){}function _t(n){return n()}function un(){return Object.create(null)}function G(n){n.forEach(_t)}function xe(n){return typeof n=="function"}function K(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}var Xe;function ie(n,e){return Xe||(Xe=document.createElement("a")),Xe.href=e,n===Xe.href}function cn(n){return Object.keys(n).length===0}var _n=typeof window<"u"?window:typeof globalThis<"u"?globalThis:global,de=class{constructor(e){this.options=e,this._listeners="WeakMap"in _n?new WeakMap:void 0}observe(e,t){return this._listeners.set(e,t),this._getObserver().observe(e,this.options),()=>{this._listeners.delete(e),this._observer.unobserve(e)}}_getObserver(){var e;return(e=this._observer)!==null&&e!==void 0?e:this._observer=new ResizeObserver(t=>{var s;for(let l of t)de.entries.set(l.target,l),(s=this._listeners.get(l.target))===null||s===void 0||s(l)})}};de.entries="WeakMap"in _n?new WeakMap:void 0;var fn=!1;function Rs(){fn=!0}function bs(){fn=!1}function b(n,e){n.appendChild(e)}function y(n,e,t){n.insertBefore(e,t||null)}function k(n){n.parentNode&&n.parentNode.removeChild(n)}function Q(n,e){for(let t=0;tn.removeEventListener(e,t,s)}function E(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}function Cs(n){return Array.from(n.childNodes)}function N(n,e){e=""+e,n.data!==e&&(n.data=e)}function ft(n,e){n.value=e??""}function B(n,e,t){n.classList[t?"add":"remove"](e)}var $e=class{constructor(e=!1){this.is_svg=!1,this.is_svg=e,this.e=this.n=null}c(e){this.h(e)}m(e,t,s=null){this.e||(this.is_svg?this.e=Ts(t.nodeName):this.e=C(t.nodeType===11?"TEMPLATE":t.nodeName),this.t=t.tagName!=="TEMPLATE"?t:t.content,this.c(e)),this.i(s)}h(e){this.e.innerHTML=e,this.n=Array.from(this.e.nodeName==="TEMPLATE"?this.e.content.childNodes:this.e.childNodes)}i(e){for(let t=0;tn.indexOf(s)===-1?e.push(s):t.push(s)),t.forEach(s=>s()),le=e}var Qe=new Set,ee;function ae(){ee={r:0,c:[],p:ee}}function oe(){ee.r||G(ee.c),ee=ee.p}function D(n,e){n&&n.i&&(Qe.delete(n),n.i(e))}function P(n,e,t,s){if(n&&n.o){if(Qe.has(n))return;Qe.add(n),ee.c.push(()=>{Qe.delete(n),s&&(t&&n.d(1),s())}),n.o(e)}else s&&s()}function pn(n,e){P(n,1,1,()=>{e.delete(n.key)})}function gn(n,e,t,s,l,r,i,a,o,h,c,m){let p=n.length,d=r.length,_=p,u={};for(;_--;)u[n[_].key]=_;let f=[],T=new Map,R=new Map,M=[];for(_=d;_--;){let v=m(l,r,_),F=t(v),O=i.get(F);O?s&&M.push(()=>O.p(v,e)):(O=h(F,v),O.c()),T.set(F,f[_]=O),F in u&&R.set(F,Math.abs(_-u[F]))}let U=new Set,X=new Set;function W(v){D(v,1),v.m(a,c),i.set(v.key,v),c=v.first,d--}for(;p&&d;){let v=f[d-1],F=n[p-1],O=v.key,V=F.key;v===F?(c=v.first,p--,d--):T.has(V)?!i.has(O)||U.has(O)?W(v):X.has(V)?p--:R.get(O)>R.get(V)?(X.add(O),W(v)):(U.add(V),p--):(o(F,i),p--)}for(;p--;){let v=n[p];T.has(v.key)||o(v,i)}for(;d;)W(f[d-1]);return G(M),f}var As=["allowfullscreen","allowpaymentrequest","async","autofocus","autoplay","checked","controls","default","defer","disabled","formnovalidate","hidden","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected"],oa=new Set([...As]);function En(n,e,t){let s=n.$$.props[e];s!==void 0&&(n.$$.bound[s]=t,t(n.$$.ctx[s]))}function et(n){n&&n.c()}function me(n,e,t,s){let{fragment:l,after_update:r}=n.$$;l&&l.m(e,t),s||ct(()=>{let i=n.$$.on_mount.map(_t).filter(xe);n.$$.on_destroy?n.$$.on_destroy.push(...i):G(i),n.$$.on_mount=[]}),r.forEach(ct)}function ue(n,e){let t=n.$$;t.fragment!==null&&(Ms(t.after_update),G(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function vs(n,e){n.$$.dirty[0]===-1&&(se.push(n),ys(),n.$$.dirty.fill(0)),n.$$.dirty[e/31|0]|=1<{let _=d.length?d[0]:p;return h.ctx&&l(h.ctx[m],h.ctx[m]=_)&&(!h.skip_bound&&h.bound[m]&&h.bound[m](_),c&&vs(n,m)),p}):[],h.update(),c=!0,G(h.before_update),h.fragment=s?s(h.ctx):!1,e.target){if(e.hydrate){Rs();let m=Cs(e.target);h.fragment&&h.fragment.l(m),m.forEach(k)}else h.fragment&&h.fragment.c();e.intro&&D(n.$$.fragment),me(n,e.target,e.anchor,e.customElement),bs(),mn()}fe(o)}var ws;typeof HTMLElement=="function"&&(ws=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){let{on_mount:n}=this.$$;this.$$.on_disconnect=n.map(_t).filter(xe);for(let e in this.$$.slotted)this.appendChild(this.$$.slotted[e])}attributeChangedCallback(n,e,t){this[n]=t}disconnectedCallback(){G(this.$$.on_disconnect)}$destroy(){ue(this,1),this.$destroy=j}$on(n,e){if(!xe(e))return j;let t=this.$$.callbacks[n]||(this.$$.callbacks[n]=[]);return t.push(e),()=>{let s=t.indexOf(e);s!==-1&&t.splice(s,1)}}$set(n){this.$$set&&!cn(n)&&(this.$$.skip_bound=!0,this.$$set(n),this.$$.skip_bound=!1)}});var q=class{$destroy(){ue(this,1),this.$destroy=j}$on(e,t){if(!xe(t))return j;let s=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return s.push(t),()=>{let l=s.indexOf(t);l!==-1&&s.splice(l,1)}}$set(e){this.$$set&&!cn(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}};function I(n){let e=typeof n=="string"?n.charCodeAt(0):n;return e>=97&&e<=122||e>=65&&e<=90}function $(n){let e=typeof n=="string"?n.charCodeAt(0):n;return e>=48&&e<=57}function Z(n){return I(n)||$(n)}var Rn=["art-lojban","cel-gaulish","no-bok","no-nyn","zh-guoyu","zh-hakka","zh-min","zh-min-nan","zh-xiang"];var mt={"en-gb-oed":"en-GB-oxendict","i-ami":"ami","i-bnn":"bnn","i-default":null,"i-enochian":null,"i-hak":"hak","i-klingon":"tlh","i-lux":"lb","i-mingo":null,"i-navajo":"nv","i-pwn":"pwn","i-tao":"tao","i-tay":"tay","i-tsu":"tsu","sgn-be-fr":"sfb","sgn-be-nl":"vgt","sgn-ch-de":"sgg","art-lojban":"jbo","cel-gaulish":null,"no-bok":"nb","no-nyn":"nn","zh-guoyu":"cmn","zh-hakka":"hak","zh-min":null,"zh-min-nan":"nan","zh-xiang":"hsn"};var Fs={}.hasOwnProperty;function tt(n,e={}){let t=bn(),s=String(n),l=s.toLowerCase(),r=0;if(n==null)throw new Error("Expected string, got `"+n+"`");if(Fs.call(mt,l)){let a=mt[l];return(e.normalize===void 0||e.normalize===null||e.normalize)&&typeof a=="string"?tt(a):(t[Rn.includes(l)?"regular":"irregular"]=s,t)}for(;I(l.charCodeAt(r))&&r<9;)r++;if(r>1&&r<9){if(t.language=s.slice(0,r),r<4){let a=0;for(;l.charCodeAt(r)===45&&I(l.charCodeAt(r+1))&&I(l.charCodeAt(r+2))&&I(l.charCodeAt(r+3))&&!I(l.charCodeAt(r+4));){if(a>2)return i(r,3,"Too many extended language subtags, expected at most 3 subtags");t.extendedLanguageSubtags.push(s.slice(r+1,r+4)),r+=4,a++}}for(l.charCodeAt(r)===45&&I(l.charCodeAt(r+1))&&I(l.charCodeAt(r+2))&&I(l.charCodeAt(r+3))&&I(l.charCodeAt(r+4))&&!I(l.charCodeAt(r+5))&&(t.script=s.slice(r+1,r+5),r+=5),l.charCodeAt(r)===45&&(I(l.charCodeAt(r+1))&&I(l.charCodeAt(r+2))&&!I(l.charCodeAt(r+3))?(t.region=s.slice(r+1,r+3),r+=3):$(l.charCodeAt(r+1))&&$(l.charCodeAt(r+2))&&$(l.charCodeAt(r+3))&&!$(l.charCodeAt(r+4))&&(t.region=s.slice(r+1,r+4),r+=4));l.charCodeAt(r)===45;){let a=r+1,o=a;for(;Z(l.charCodeAt(o));){if(o-a>7)return i(o,1,"Too long variant, expected at most 8 characters");o++}if(o-a>4||o-a>3&&$(l.charCodeAt(a)))t.variants.push(s.slice(a,o)),r=o;else break}for(;l.charCodeAt(r)===45&&!(l.charCodeAt(r+1)===120||!Z(l.charCodeAt(r+1))||l.charCodeAt(r+2)!==45||!Z(l.charCodeAt(r+3)));){let a=r+2,o=0;for(;l.charCodeAt(a)===45&&Z(l.charCodeAt(a+1))&&Z(l.charCodeAt(a+2));){let h=a+1;for(a=h+2,o++;Z(l.charCodeAt(a));){if(a-h>7)return i(a,2,"Too long extension, expected at most 8 characters");a++}}if(!o)return i(a,4,"Empty extension, extensions must have at least 2 characters of content");t.extensions.push({singleton:s.charAt(r+1),extensions:s.slice(r+3,a).split("-")}),r=a}}else r=0;if(r===0&&l.charCodeAt(r)===120||l.charCodeAt(r)===45&&l.charCodeAt(r+1)===120){r=r?r+2:1;let a=r;for(;l.charCodeAt(a)===45&&Z(l.charCodeAt(a+1));){let o=r+1;for(a=o;Z(l.charCodeAt(a));){if(a-o>7)return i(a,5,"Too long private-use area, expected at most 8 characters");a++}t.privateuse.push(s.slice(r+1,a)),r=a}}if(r!==s.length)return i(r,6,"Found superfluous content after tag");return t;function i(a,o,h){return e.warning&&e.warning(h,o,a),e.forgiving?t:bn()}}function bn(){return{language:null,extendedLanguageSubtags:[],script:null,region:null,variants:[],extensions:[],privateuse:[],irregular:null,regular:null}}function Tn(n,e,t){let s=n.slice();return s[8]=e[t][0],s[9]=e[t][1],s}function Hs(n){let e,t,s,l,r,i=n[0]&&Cn(n);return{c(){i&&i.c(),e=A(),t=C("div"),s=C("p"),s.textContent=`${n[3](30)}`,l=A(),r=C("p"),r.textContent=`${n[3](40)}`,E(s,"class","pagefind-ui__result-title pagefind-ui__loading svelte-j9e30"),E(r,"class","pagefind-ui__result-excerpt pagefind-ui__loading svelte-j9e30"),E(t,"class","pagefind-ui__result-inner svelte-j9e30")},m(a,o){i&&i.m(a,o),y(a,e,o),y(a,t,o),b(t,s),b(t,l),b(t,r)},p(a,o){a[0]?i||(i=Cn(a),i.c(),i.m(e.parentNode,e)):i&&(i.d(1),i=null)},d(a){i&&i.d(a),a&&k(e),a&&k(t)}}}function Ns(n){let e,t,s,l,r=n[1].meta?.title+"",i,a,o,h,c=n[1].excerpt+"",m,p=n[0]&&kn(n),d=n[2].length&&Sn(n);return{c(){p&&p.c(),e=A(),t=C("div"),s=C("p"),l=C("a"),i=w(r),o=A(),h=C("p"),m=A(),d&&d.c(),E(l,"class","pagefind-ui__result-link svelte-j9e30"),E(l,"href",a=n[1].meta?.url||n[1].url),E(s,"class","pagefind-ui__result-title svelte-j9e30"),E(h,"class","pagefind-ui__result-excerpt svelte-j9e30"),E(t,"class","pagefind-ui__result-inner svelte-j9e30")},m(_,u){p&&p.m(_,u),y(_,e,u),y(_,t,u),b(t,s),b(s,l),b(l,i),b(t,o),b(t,h),h.innerHTML=c,b(t,m),d&&d.m(t,null)},p(_,u){_[0]?p?p.p(_,u):(p=kn(_),p.c(),p.m(e.parentNode,e)):p&&(p.d(1),p=null),u&2&&r!==(r=_[1].meta?.title+"")&&N(i,r),u&2&&a!==(a=_[1].meta?.url||_[1].url)&&E(l,"href",a),u&2&&c!==(c=_[1].excerpt+"")&&(h.innerHTML=c),_[2].length?d?d.p(_,u):(d=Sn(_),d.c(),d.m(t,null)):d&&(d.d(1),d=null)},d(_){p&&p.d(_),_&&k(e),_&&k(t),d&&d.d()}}}function Cn(n){let e;return{c(){e=C("div"),E(e,"class","pagefind-ui__result-thumb pagefind-ui__loading svelte-j9e30")},m(t,s){y(t,e,s)},d(t){t&&k(e)}}}function kn(n){let e,t=n[1].meta.image&&yn(n);return{c(){e=C("div"),t&&t.c(),E(e,"class","pagefind-ui__result-thumb svelte-j9e30")},m(s,l){y(s,e,l),t&&t.m(e,null)},p(s,l){s[1].meta.image?t?t.p(s,l):(t=yn(s),t.c(),t.m(e,null)):t&&(t.d(1),t=null)},d(s){s&&k(e),t&&t.d()}}}function yn(n){let e,t,s;return{c(){e=C("img"),E(e,"class","pagefind-ui__result-image svelte-j9e30"),ie(e.src,t=n[1].meta?.image)||E(e,"src",t),E(e,"alt",s=n[1].meta?.image_alt||n[1].meta?.title)},m(l,r){y(l,e,r)},p(l,r){r&2&&!ie(e.src,t=l[1].meta?.image)&&E(e,"src",t),r&2&&s!==(s=l[1].meta?.image_alt||l[1].meta?.title)&&E(e,"alt",s)},d(l){l&&k(e)}}}function Sn(n){let e,t=n[2],s=[];for(let l=0;ln.toLocaleUpperCase();function zs(n,e,t){let{show_images:s=!0}=e,{process_result:l=null}=e,{result:r={data:async()=>{}}}=e,i=["title","image","image_alt","url"],a,o=[],h=async m=>{t(1,a=await m.data()),t(1,a=l?.(a)??a),t(2,o=Object.entries(a.meta).filter(([p])=>!i.includes(p)))},c=(m=30)=>". ".repeat(Math.floor(10+Math.random()*m));return n.$$set=m=>{"show_images"in m&&t(0,s=m.show_images),"process_result"in m&&t(4,l=m.process_result),"result"in m&&t(5,r=m.result)},n.$$.update=()=>{if(n.$$.dirty&32)e:h(r)},[s,a,o,c,l,r]}var pt=class extends q{constructor(e){super(),Y(this,e,zs,Os,K,{show_images:0,process_result:4,result:5})}},vn=pt;function wn(n,e,t){let s=n.slice();return s[11]=e[t][0],s[12]=e[t][1],s}function Fn(n,e,t){let s=n.slice();return s[15]=e[t],s}function js(n){let e,t,s,l,r,i=n[0]&&Hn(n);return{c(){i&&i.c(),e=A(),t=C("div"),s=C("p"),s.textContent=`${n[5](30)}`,l=A(),r=C("p"),r.textContent=`${n[5](40)}`,E(s,"class","pagefind-ui__result-title pagefind-ui__loading svelte-4xnkmf"),E(r,"class","pagefind-ui__result-excerpt pagefind-ui__loading svelte-4xnkmf"),E(t,"class","pagefind-ui__result-inner svelte-4xnkmf")},m(a,o){i&&i.m(a,o),y(a,e,o),y(a,t,o),b(t,s),b(t,l),b(t,r)},p(a,o){a[0]?i||(i=Hn(a),i.c(),i.m(e.parentNode,e)):i&&(i.d(1),i=null)},d(a){i&&i.d(a),a&&k(e),a&&k(t)}}}function Ds(n){let e,t,s,l,r=n[1].meta?.title+"",i,a,o,h,c,m=n[0]&&Nn(n),p=n[4]&&zn(n),d=n[3],_=[];for(let f=0;fn.toLocaleUpperCase();function Is(n,e,t){let{show_images:s=!0}=e,{process_result:l=null}=e,{result:r={data:async()=>{}}}=e,i=["title","image","image_alt","url"],a,o=[],h=[],c=!1,m=(_,u)=>{if(_.length<=u)return _;let f=[..._].sort((T,R)=>R.locations.length-T.locations.length).slice(0,3).map(T=>T.url);return _.filter(T=>f.includes(T.url))},p=async _=>{t(1,a=await _.data()),t(1,a=l?.(a)??a),t(2,o=Object.entries(a.meta).filter(([u])=>!i.includes(u))),Array.isArray(a.sub_results)&&(t(4,c=a.sub_results?.[0]?.url===(a.meta?.url||a.url)),c?t(3,h=m(a.sub_results.slice(1),3)):t(3,h=m([...a.sub_results],3)))},d=(_=30)=>". ".repeat(Math.floor(10+Math.random()*_));return n.$$set=_=>{"show_images"in _&&t(0,s=_.show_images),"process_result"in _&&t(6,l=_.process_result),"result"in _&&t(7,r=_.result)},n.$$.update=()=>{if(n.$$.dirty&128)e:p(r)},[s,a,o,h,c,d,l,r]}var gt=class extends q{constructor(e){super(),Y(this,e,Is,Us,K,{show_images:0,process_result:6,result:7})}},Pn=gt;function Ln(n,e,t){let s=n.slice();return s[10]=e[t][0],s[11]=e[t][1],s[12]=e,s[13]=t,s}function qn(n,e,t){let s=n.slice();return s[14]=e[t][0],s[15]=e[t][1],s[16]=e,s[17]=t,s}function Bn(n){let e,t,s=n[4]("filters_label",n[5],n[6])+"",l,r,i=Object.entries(n[1]),a=[];for(let o=0;on.toLocaleUpperCase(),Jn=n=>n.toLowerCase();function Ls(n,e,t){let{available_filters:s=null}=e,{show_empty_filters:l=!0}=e,{open_filters:r=[]}=e,{translate:i=()=>""}=e,{automatic_translations:a={}}=e,{translations:o={}}=e,{selected_filters:h={}}=e,c=!1,m=!1;function p(d,_){h[`${d}:${_}`]=this.checked,t(0,h)}return n.$$set=d=>{"available_filters"in d&&t(1,s=d.available_filters),"show_empty_filters"in d&&t(2,l=d.show_empty_filters),"open_filters"in d&&t(3,r=d.open_filters),"translate"in d&&t(4,i=d.translate),"automatic_translations"in d&&t(5,a=d.automatic_translations),"translations"in d&&t(6,o=d.translations),"selected_filters"in d&&t(0,h=d.selected_filters)},n.$$.update=()=>{if(n.$$.dirty&258){e:if(s&&!c){t(8,c=!0);let d=Object.entries(s||{});d.length===1&&Object.entries(d[0][1])?.length<=6&&t(7,m=!0)}}},[h,s,l,r,i,a,o,m,c,p]}var Et=class extends q{constructor(e){super(),Y(this,e,Ls,Ps,K,{available_filters:1,show_empty_filters:2,open_filters:3,translate:4,automatic_translations:5,translations:6,selected_filters:0})}},Yn=Et;var Rt={};S(Rt,{comments:()=>Bs,default:()=>Gs,direction:()=>Ws,strings:()=>Vs,thanks_to:()=>qs});var qs="Jan Claasen ",Bs="",Ws="ltr",Vs={placeholder:"Soek",clear_search:"Opruim",load_more:"Laai nog resultate",search_label:"Soek hierdie webwerf",filters_label:"Filters",zero_results:"Geen resultate vir [SEARCH_TERM]",many_results:"[COUNT] resultate vir [SEARCH_TERM]",one_result:"[COUNT] resultate vir [SEARCH_TERM]",alt_search:"Geen resultate vir [SEARCH_TERM]. Toon resultate vir [DIFFERENT_TERM] in plaas daarvan",search_suggestion:"Geen resultate vir [SEARCH_TERM]. Probeer eerder een van die volgende terme:",searching:"Soek vir [SEARCH_TERM]"},Gs={thanks_to:qs,comments:Bs,direction:Ws,strings:Vs};var bt={};S(bt,{comments:()=>Js,default:()=>Xs,direction:()=>Ys,strings:()=>Zs,thanks_to:()=>Ks});var Ks="Maruf Alom ",Js="",Ys="ltr",Zs={placeholder:"\u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8",clear_search:"\u09AE\u09C1\u099B\u09C7 \u09AB\u09C7\u09B2\u09C1\u09A8",load_more:"\u0986\u09B0\u09CB \u09AB\u09B2\u09BE\u09AB\u09B2 \u09A6\u09C7\u0996\u09C1\u09A8",search_label:"\u098F\u0987 \u0993\u09DF\u09C7\u09AC\u09B8\u09BE\u0987\u099F\u09C7 \u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8",filters_label:"\u09AB\u09BF\u09B2\u09CD\u099F\u09BE\u09B0",zero_results:"[SEARCH_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF \u0995\u09BF\u099B\u09C1 \u0996\u09C1\u0981\u099C\u09C7 \u09AA\u09BE\u0993\u09DF\u09BE \u09AF\u09BE\u09DF\u09A8\u09BF",many_results:"[COUNT]-\u099F\u09BF \u09AB\u09B2\u09BE\u09AB\u09B2 \u09AA\u09BE\u0993\u09DF\u09BE \u0997\u09BF\u09DF\u09C7\u099B\u09C7 [SEARCH_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF",one_result:"[COUNT]-\u099F\u09BF \u09AB\u09B2\u09BE\u09AB\u09B2 \u09AA\u09BE\u0993\u09DF\u09BE \u0997\u09BF\u09DF\u09C7\u099B\u09C7 [SEARCH_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF",alt_search:"\u0995\u09CB\u09A8 \u0995\u09BF\u099B\u09C1 \u0996\u09C1\u0981\u099C\u09C7 \u09AA\u09BE\u0993\u09DF\u09BE \u09AF\u09BE\u09DF\u09A8\u09BF [SEARCH_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF. \u09AA\u09B0\u09BF\u09AC\u09B0\u09CD\u09A4\u09C7 [DIFFERENT_TERM] \u098F\u09B0 \u099C\u09A8\u09CD\u09AF \u09A6\u09C7\u0996\u09BE\u09A8\u09CB \u09B9\u099A\u09CD\u099B\u09C7",search_suggestion:"\u0995\u09CB\u09A8 \u0995\u09BF\u099B\u09C1 \u0996\u09C1\u0981\u099C\u09C7 \u09AA\u09BE\u0993\u09DF\u09BE \u09AF\u09BE\u09DF\u09A8\u09BF [SEARCH_TERM] \u098F\u09B0 \u09AC\u09BF\u09B7\u09DF\u09C7. \u09A8\u09BF\u09A8\u09CD\u09AE\u09C7\u09B0 \u09AC\u09BF\u09B7\u09DF\u09AC\u09B8\u09CD\u09A4\u09C1 \u0996\u09C1\u0981\u099C\u09C7 \u09A6\u09C7\u0996\u09C1\u09A8:",searching:"\u0985\u09A8\u09C1\u09B8\u09A8\u09CD\u09A7\u09BE\u09A8 \u099A\u09B2\u099B\u09C7 [SEARCH_TERM]..."},Xs={thanks_to:Ks,comments:Js,direction:Ys,strings:Zs};var Tt={};S(Tt,{comments:()=>xs,default:()=>tl,direction:()=>$s,strings:()=>el,thanks_to:()=>Qs});var Qs="Pablo Villaverde ",xs="",$s="ltr",el={placeholder:"Cerca",clear_search:"Netejar",load_more:"Veure m\xE9es resultats",search_label:"Cerca en aquest lloc",filters_label:"Filtres",zero_results:"No es van trobar resultats per [SEARCH_TERM]",many_results:"[COUNT] resultats trobats per [SEARCH_TERM]",one_result:"[COUNT] resultat trobat per [SEARCH_TERM]",alt_search:"No es van trobar resultats per [SEARCH_TERM]. Mostrant al seu lloc resultats per [DIFFERENT_TERM]",search_suggestion:"No es van trobar resultats per [SEARCH_TERM]. Proveu una de les cerques seg\xFCents:",searching:"Cercant [SEARCH_TERM]..."},tl={thanks_to:Qs,comments:xs,direction:$s,strings:el};var Ct={};S(Ct,{comments:()=>sl,default:()=>il,direction:()=>ll,strings:()=>rl,thanks_to:()=>nl});var nl="Dalibor Hon ",sl="",ll="ltr",rl={placeholder:"Hledat",clear_search:"Smazat",load_more:"Na\u010D\xEDst dal\u0161\xED v\xFDsledky",search_label:"Prohledat tuto str\xE1nku",filters_label:"Filtry",zero_results:"\u017D\xE1dn\xE9 v\xFDsledky pro [SEARCH_TERM]",many_results:"[COUNT] v\xFDsledk\u016F pro [SEARCH_TERM]",one_result:"[COUNT] v\xFDsledek pro [SEARCH_TERM]",alt_search:"\u017D\xE1dn\xE9 v\xFDsledky pro [SEARCH_TERM]. Zobrazuj\xED se v\xFDsledky pro [DIFFERENT_TERM]",search_suggestion:"\u017D\xE1dn\xE9 v\xFDsledky pro [SEARCH_TERM]. Souvisej\xEDc\xED v\xFDsledky hled\xE1n\xED:",searching:"Hled\xE1m [SEARCH_TERM]..."},il={thanks_to:nl,comments:sl,direction:ll,strings:rl};var kt={};S(kt,{comments:()=>ol,default:()=>_l,direction:()=>ul,strings:()=>cl,thanks_to:()=>al});var al="Jonas Smedegaard ",ol="",ul="ltr",cl={placeholder:"S\xF8g",clear_search:"Nulstil",load_more:"Indl\xE6s flere resultater",search_label:"S\xF8g p\xE5 dette website",filters_label:"Filtre",zero_results:"Ingen resultater for [SEARCH_TERM]",many_results:"[COUNT] resultater for [SEARCH_TERM]",one_result:"[COUNT] resultat for [SEARCH_TERM]",alt_search:"Ingen resultater for [SEARCH_TERM]. Viser resultater for [DIFFERENT_TERM] i stedet",search_suggestion:"Ingen resultater for [SEARCH_TERM]. Pr\xF8v et af disse s\xF8geord i stedet:",searching:"S\xF8ger efter [SEARCH_TERM]..."},_l={thanks_to:al,comments:ol,direction:ul,strings:cl};var yt={};S(yt,{comments:()=>dl,default:()=>pl,direction:()=>hl,strings:()=>ml,thanks_to:()=>fl});var fl="Jan Claasen ",dl="",hl="ltr",ml={placeholder:"Suche",clear_search:"L\xF6schen",load_more:"Mehr Ergebnisse laden",search_label:"Suche diese Seite",filters_label:"Filter",zero_results:"Keine Ergebnisse f\xFCr [SEARCH_TERM]",many_results:"[COUNT] Ergebnisse f\xFCr [SEARCH_TERM]",one_result:"[COUNT] Ergebnis f\xFCr [SEARCH_TERM]",alt_search:"Keine Ergebnisse f\xFCr [SEARCH_TERM]. Stattdessen werden Ergebnisse f\xFCr [DIFFERENT_TERM] angezeigt",search_suggestion:"Keine Ergebnisse f\xFCr [SEARCH_TERM]. Versuchen Sie eine der folgenden Suchen:",searching:"Suche f\xFCr [SEARCH_TERM]"},pl={thanks_to:fl,comments:dl,direction:hl,strings:ml};var St={};S(St,{comments:()=>El,default:()=>Tl,direction:()=>Rl,strings:()=>bl,thanks_to:()=>gl});var gl="Liam Bigelow ",El="",Rl="ltr",bl={placeholder:"Search",clear_search:"Clear",load_more:"Load more results",search_label:"Search this site",filters_label:"Filters",zero_results:"No results for [SEARCH_TERM]",many_results:"[COUNT] results for [SEARCH_TERM]",one_result:"[COUNT] result for [SEARCH_TERM]",alt_search:"No results for [SEARCH_TERM]. Showing results for [DIFFERENT_TERM] instead",search_suggestion:"No results for [SEARCH_TERM]. Try one of the following searches:",searching:"Searching for [SEARCH_TERM]..."},Tl={thanks_to:gl,comments:El,direction:Rl,strings:bl};var Mt={};S(Mt,{comments:()=>kl,default:()=>Ml,direction:()=>yl,strings:()=>Sl,thanks_to:()=>Cl});var Cl="Pablo Villaverde ",kl="",yl="ltr",Sl={placeholder:"Buscar",clear_search:"Limpiar",load_more:"Ver m\xE1s resultados",search_label:"Buscar en este sitio",filters_label:"Filtros",zero_results:"No se encontraron resultados para [SEARCH_TERM]",many_results:"[COUNT] resultados encontrados para [SEARCH_TERM]",one_result:"[COUNT] resultado encontrado para [SEARCH_TERM]",alt_search:"No se encontraron resultados para [SEARCH_TERM]. Mostrando en su lugar resultados para [DIFFERENT_TERM]",search_suggestion:"No se encontraron resultados para [SEARCH_TERM]. Prueba una de las siguientes b\xFAsquedas:",searching:"Buscando [SEARCH_TERM]..."},Ml={thanks_to:Cl,comments:kl,direction:yl,strings:Sl};var At={};S(At,{comments:()=>vl,default:()=>Hl,direction:()=>wl,strings:()=>Fl,thanks_to:()=>Al});var Al="Valtteri Laitinen ",vl="",wl="ltr",Fl={placeholder:"Haku",clear_search:"Tyhjenn\xE4",load_more:"Lataa lis\xE4\xE4 tuloksia",search_label:"Hae t\xE4lt\xE4 sivustolta",filters_label:"Suodattimet",zero_results:"Ei tuloksia haulle [SEARCH_TERM]",many_results:"[COUNT] tulosta haulle [SEARCH_TERM]",one_result:"[COUNT] tulos haulle [SEARCH_TERM]",alt_search:"Ei tuloksia haulle [SEARCH_TERM]. N\xE4ytet\xE4\xE4n tulokset sen sijaan haulle [DIFFERENT_TERM]",search_suggestion:"Ei tuloksia haulle [SEARCH_TERM]. Kokeile jotain seuraavista:",searching:"Haetaan [SEARCH_TERM]..."},Hl={thanks_to:Al,comments:vl,direction:wl,strings:Fl};var vt={};S(vt,{comments:()=>Ol,default:()=>Dl,direction:()=>zl,strings:()=>jl,thanks_to:()=>Nl});var Nl="Nicolas Friedli ",Ol="",zl="ltr",jl={placeholder:"Rechercher",clear_search:"Nettoyer",load_more:"Charger plus de r\xE9sultats",search_label:"Recherche sur ce site",filters_label:"Filtres",zero_results:"Pas de r\xE9sultat pour [SEARCH_TERM]",many_results:"[COUNT] r\xE9sultats pour [SEARCH_TERM]",one_result:"[COUNT] r\xE9sultat pour [SEARCH_TERM]",alt_search:"Pas de r\xE9sultat pour [SEARCH_TERM]. Montre les r\xE9sultats pour [DIFFERENT_TERM] \xE0 la place",search_suggestion:"Pas de r\xE9sultat pour [SEARCH_TERM]. Essayer une des recherches suivantes:",searching:"Recherche [SEARCH_TERM]..."},Dl={thanks_to:Nl,comments:Ol,direction:zl,strings:jl};var wt={};S(wt,{comments:()=>Il,default:()=>ql,direction:()=>Pl,strings:()=>Ll,thanks_to:()=>Ul});var Ul="Pablo Villaverde ",Il="",Pl="ltr",Ll={placeholder:"Buscar",clear_search:"Limpar",load_more:"Ver m\xE1is resultados",search_label:"Buscar neste sitio",filters_label:"Filtros",zero_results:"Non se atoparon resultados para [SEARCH_TERM]",many_results:"[COUNT] resultados atopados para [SEARCH_TERM]",one_result:"[COUNT] resultado atopado para [SEARCH_TERM]",alt_search:"Non se atoparon resultados para [SEARCH_TERM]. Amosando no seu lugar resultados para [DIFFERENT_TERM]",search_suggestion:"Non se atoparon resultados para [SEARCH_TERM]. Probe unha das seguintes pesquisas:",searching:"Buscando [SEARCH_TERM]..."},ql={thanks_to:Ul,comments:Il,direction:Pl,strings:Ll};var Ft={};S(Ft,{comments:()=>Wl,default:()=>Kl,direction:()=>Vl,strings:()=>Gl,thanks_to:()=>Bl});var Bl="Amit Yadav ",Wl="",Vl="ltr",Gl={placeholder:"\u0916\u094B\u091C\u0947\u0902",clear_search:"\u0938\u093E\u092B \u0915\u0930\u0947\u0902",load_more:"\u0914\u0930 \u0905\u0927\u093F\u0915 \u092A\u0930\u093F\u0923\u093E\u092E \u0932\u094B\u0921 \u0915\u0930\u0947\u0902",search_label:"\u0907\u0938 \u0938\u093E\u0907\u091F \u092E\u0947\u0902 \u0916\u094B\u091C\u0947\u0902",filters_label:"\u092B\u093C\u093F\u0932\u094D\u091F\u0930",zero_results:"\u0915\u094B\u0908 \u092A\u0930\u093F\u0923\u093E\u092E [SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E",many_results:"[COUNT] \u092A\u0930\u093F\u0923\u093E\u092E [SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u092E\u093F\u0932\u0947",one_result:"[COUNT] \u092A\u0930\u093F\u0923\u093E\u092E [SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u092E\u093F\u0932\u093E",alt_search:"[SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u0915\u094B\u0908 \u092A\u0930\u093F\u0923\u093E\u092E \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E\u0964 \u0907\u0938\u0915\u0947 \u092C\u091C\u093E\u092F [DIFFERENT_TERM] \u0915\u0947 \u0932\u093F\u090F \u092A\u0930\u093F\u0923\u093E\u092E \u0926\u093F\u0916\u093E \u0930\u0939\u093E \u0939\u0948",search_suggestion:"[SEARCH_TERM] \u0915\u0947 \u0932\u093F\u090F \u0915\u094B\u0908 \u092A\u0930\u093F\u0923\u093E\u092E \u0928\u0939\u0940\u0902 \u092E\u093F\u0932\u093E\u0964 \u0928\u093F\u092E\u094D\u0928\u0932\u093F\u0916\u093F\u0924 \u0916\u094B\u091C\u094B\u0902 \u092E\u0947\u0902 \u0938\u0947 \u0915\u094B\u0908 \u090F\u0915 \u0906\u091C\u093C\u092E\u093E\u090F\u0902:",searching:"[SEARCH_TERM] \u0915\u0940 \u0916\u094B\u091C \u0915\u0940 \u091C\u093E \u0930\u0939\u0940 \u0939\u0948..."},Kl={thanks_to:Bl,comments:Wl,direction:Vl,strings:Gl};var Ht={};S(Ht,{comments:()=>Yl,default:()=>Ql,direction:()=>Zl,strings:()=>Xl,thanks_to:()=>Jl});var Jl="Diomed ",Yl="",Zl="ltr",Xl={placeholder:"Tra\u017Ei",clear_search:"O\u010Disti",load_more:"U\u010Ditaj vi\u0161e rezultata",search_label:"Pretra\u017Ei ovu stranicu",filters_label:"Filteri",zero_results:"Nema rezultata za [SEARCH_TERM]",many_results:"[COUNT] rezultata za [SEARCH_TERM]",one_result:"[COUNT] rezultat za [SEARCH_TERM]",alt_search:"Nema rezultata za [SEARCH_TERM]. Prikazujem rezultate za [DIFFERENT_TERM]",search_suggestion:"Nema rezultata za [SEARCH_TERM]. Poku\u0161aj s jednom od ovih pretraga:",searching:"Pretra\u017Eujem [SEARCH_TERM]..."},Ql={thanks_to:Jl,comments:Yl,direction:Zl,strings:Xl};var Nt={};S(Nt,{comments:()=>$l,default:()=>nr,direction:()=>er,strings:()=>tr,thanks_to:()=>xl});var xl="Adam Laki ",$l="",er="ltr",tr={placeholder:"Keres\xE9s",clear_search:"T\xF6rl\xE9s",load_more:"Tov\xE1bbi tal\xE1latok bet\xF6lt\xE9se",search_label:"Keres\xE9s az oldalon",filters_label:"Sz\u0171r\xE9s",zero_results:"Nincs tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre",many_results:"[COUNT] db tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre",one_result:"[COUNT] db tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre",alt_search:"Nincs tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre. Tal\xE1latok mutat\xE1sa ink\xE1bb a(z) [DIFFERENT_TERM] kifejez\xE9sre",search_suggestion:"Nincs tal\xE1lat a(z) [SEARCH_TERM] kifejez\xE9sre. Pr\xF3b\xE1ld meg a k\xF6vetkez\u0151 keres\xE9sek egyik\xE9t:",searching:"Keres\xE9s a(z) [SEARCH_TERM] kifejez\xE9sre..."},nr={thanks_to:xl,comments:$l,direction:er,strings:tr};var Ot={};S(Ot,{comments:()=>lr,default:()=>ar,direction:()=>rr,strings:()=>ir,thanks_to:()=>sr});var sr="Nixentric",lr="",rr="ltr",ir={placeholder:"Cari",clear_search:"Bersihkan",load_more:"Muat lebih banyak hasil",search_label:"Telusuri situs ini",filters_label:"Filter",zero_results:"[SEARCH_TERM] tidak ditemukan",many_results:"Ditemukan [COUNT] hasil untuk [SEARCH_TERM]",one_result:"Ditemukan [COUNT] hasil untuk [SEARCH_TERM]",alt_search:"[SEARCH_TERM] tidak ditemukan. Menampilkan hasil [DIFFERENT_TERM] sebagai gantinya",search_suggestion:"[SEARCH_TERM] tidak ditemukan. Coba salah satu pencarian berikut ini:",searching:"Mencari [SEARCH_TERM]..."},ar={thanks_to:sr,comments:lr,direction:rr,strings:ir};var zt={};S(zt,{comments:()=>ur,default:()=>fr,direction:()=>cr,strings:()=>_r,thanks_to:()=>or});var or="Cosette Bruhns Alonso, Andrew Janco ",ur="",cr="ltr",_r={placeholder:"Cerca",clear_search:"Cancella la cronologia",load_more:"Mostra pi\xF9 risultati",search_label:"Cerca nel sito",filters_label:"Filtri di ricerca",zero_results:"Nessun risultato per [SEARCH_TERM]",many_results:"[COUNT] risultati per [SEARCH_TERM]",one_result:"[COUNT] risultato per [SEARCH_TERM]",alt_search:"Nessun risultato per [SEARCH_TERM]. Mostrando risultati per [DIFFERENT_TERM] come alternativa.",search_suggestion:"Nessun risultato per [SEARCH_TERM]. Prova una delle seguenti ricerche:",searching:"Cercando [SEARCH_TERM]..."},fr={thanks_to:or,comments:ur,direction:cr,strings:_r};var jt={};S(jt,{comments:()=>hr,default:()=>gr,direction:()=>mr,strings:()=>pr,thanks_to:()=>dr});var dr="Tate",hr="",mr="ltr",pr={placeholder:"\u691C\u7D22",clear_search:"\u30AF\u30EA\u30A2",load_more:"\u6B21\u3092\u8AAD\u307F\u8FBC\u3080",search_label:"\u3053\u306E\u30B5\u30A4\u30C8\u3092\u691C\u7D22",filters_label:"\u30D5\u30A3\u30EB\u30BF",zero_results:"[SEARCH_TERM]\u306E\u691C\u7D22\u306B\u4E00\u81F4\u3059\u308B\u60C5\u5831\u306F\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F",many_results:"[SEARCH_TERM]\u306E[COUNT]\u4EF6\u306E\u691C\u7D22\u7D50\u679C",one_result:"[SEARCH_TERM]\u306E[COUNT]\u4EF6\u306E\u691C\u7D22\u7D50\u679C",alt_search:"[SEARCH_TERM]\u306E\u691C\u7D22\u306B\u4E00\u81F4\u3059\u308B\u60C5\u5831\u306F\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002[DIFFERENT_TERM]\u306E\u691C\u7D22\u7D50\u679C\u3092\u8868\u793A\u3057\u3066\u3044\u307E\u3059",search_suggestion:"[SEARCH_TERM]\u306E\u691C\u7D22\u306B\u4E00\u81F4\u3059\u308B\u60C5\u5831\u306F\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u6B21\u306E\u3044\u305A\u308C\u304B\u306E\u691C\u7D22\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044",searching:"[SEARCH_TERM]\u3092\u691C\u7D22\u3057\u3066\u3044\u307E\u3059"},gr={thanks_to:dr,comments:hr,direction:mr,strings:pr};var Dt={};S(Dt,{comments:()=>Rr,default:()=>Cr,direction:()=>br,strings:()=>Tr,thanks_to:()=>Er});var Er="Seokho Son ",Rr="",br="ltr",Tr={placeholder:"\uAC80\uC0C9\uC5B4",clear_search:"\uBE44\uC6B0\uAE30",load_more:"\uAC80\uC0C9 \uACB0\uACFC \uB354 \uBCF4\uAE30",search_label:"\uC0AC\uC774\uD2B8 \uAC80\uC0C9",filters_label:"\uD544\uD130",zero_results:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC \uC5C6\uC74C",many_results:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC [COUNT]\uAC74",one_result:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC [COUNT]\uAC74",alt_search:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC \uC5C6\uC74C. [DIFFERENT_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC",search_suggestion:"[SEARCH_TERM]\uC5D0 \uB300\uD55C \uACB0\uACFC \uC5C6\uC74C. \uCD94\uCC9C \uAC80\uC0C9\uC5B4: ",searching:"[SEARCH_TERM] \uAC80\uC0C9 \uC911..."},Cr={thanks_to:Er,comments:Rr,direction:br,strings:Tr};var Ut={};S(Ut,{comments:()=>yr,default:()=>Ar,direction:()=>Sr,strings:()=>Mr,thanks_to:()=>kr});var kr="",yr="",Sr="ltr",Mr={placeholder:"Rapu",clear_search:"Whakakore",load_more:"Whakauta \u0113tahi otinga k\u0113",search_label:"Rapu",filters_label:"T\u0101tari",zero_results:"Otinga kore ki [SEARCH_TERM]",many_results:"[COUNT] otinga ki [SEARCH_TERM]",one_result:"[COUNT] otinga ki [SEARCH_TERM]",alt_search:"Otinga kore ki [SEARCH_TERM]. Otinga k\u0113 ki [DIFFERENT_TERM]",search_suggestion:"Otinga kore ki [SEARCH_TERM]. whakam\u0101tau ki ng\u0101 mea atu:",searching:"Rapu ki [SEARCH_TERM]..."},Ar={thanks_to:kr,comments:yr,direction:Sr,strings:Mr};var It={};S(It,{comments:()=>wr,default:()=>Nr,direction:()=>Fr,strings:()=>Hr,thanks_to:()=>vr});var vr="Paul van Brouwershaven",wr="",Fr="ltr",Hr={placeholder:"Zoeken",clear_search:"Reset",load_more:"Meer resultaten laden",search_label:"Doorzoek deze site",filters_label:"Filters",zero_results:"Geen resultaten voor [SEARCH_TERM]",many_results:"[COUNT] resultaten voor [SEARCH_TERM]",one_result:"[COUNT] resultaat voor [SEARCH_TERM]",alt_search:"Geen resultaten voor [SEARCH_TERM]. In plaats daarvan worden resultaten voor [DIFFERENT_TERM] weergegeven",search_suggestion:"Geen resultaten voor [SEARCH_TERM]. Probeer een van de volgende zoekopdrachten:",searching:"Zoeken naar [SEARCH_TERM]..."},Nr={thanks_to:vr,comments:wr,direction:Fr,strings:Hr};var Pt={};S(Pt,{comments:()=>zr,default:()=>Ur,direction:()=>jr,strings:()=>Dr,thanks_to:()=>Or});var Or="Christopher Wingate",zr="",jr="ltr",Dr={placeholder:"S\xF8k",clear_search:"Fjern",load_more:"Last flere resultater",search_label:"S\xF8k p\xE5 denne siden",filters_label:"Filtre",zero_results:"Ingen resultater for [SEARCH_TERM]",many_results:"[COUNT] resultater for [SEARCH_TERM]",one_result:"[COUNT] resultat for [SEARCH_TERM]",alt_search:"Ingen resultater for [SEARCH_TERM]. Viser resultater for [DIFFERENT_TERM] i stedet",search_suggestion:"Ingen resultater for [SEARCH_TERM]. Pr\xF8v en av disse s\xF8keordene i stedet:",searching:"S\xF8ker etter [SEARCH_TERM]"},Ur={thanks_to:Or,comments:zr,direction:jr,strings:Dr};var Lt={};S(Lt,{comments:()=>Pr,default:()=>Br,direction:()=>Lr,strings:()=>qr,thanks_to:()=>Ir});var Ir="",Pr="",Lr="ltr",qr={placeholder:"Szukaj",clear_search:"Wyczy\u015B\u0107",load_more:"Za\u0142aduj wi\u0119cej",search_label:"Przeszukaj t\u0119 stron\u0119",filters_label:"Filtry",zero_results:"Brak wynik\xF3w dla [SEARCH_TERM]",many_results:"[COUNT] wynik\xF3w dla [SEARCH_TERM]",one_result:"[COUNT] wynik dla [SEARCH_TERM]",alt_search:"Brak wynik\xF3w dla [SEARCH_TERM]. Wy\u015Bwietlam wyniki dla [DIFFERENT_TERM]",search_suggestion:"Brak wynik\xF3w dla [SEARCH_TERM]. Pokrewne wyniki wyszukiwania:",searching:"Szukam [SEARCH_TERM]..."},Br={thanks_to:Ir,comments:Pr,direction:Lr,strings:qr};var qt={};S(qt,{comments:()=>Vr,default:()=>Jr,direction:()=>Gr,strings:()=>Kr,thanks_to:()=>Wr});var Wr="Jonatah",Vr="",Gr="ltr",Kr={placeholder:"Pesquisar",clear_search:"Limpar",load_more:"Ver mais resultados",search_label:"Pesquisar",filters_label:"Filtros",zero_results:"Nenhum resultado encontrado para [SEARCH_TERM]",many_results:"[COUNT] resultados encontrados para [SEARCH_TERM]",one_result:"[COUNT] resultado encontrado para [SEARCH_TERM]",alt_search:"Nenhum resultado encontrado para [SEARCH_TERM]. Exibindo resultados para [DIFFERENT_TERM]",search_suggestion:"Nenhum resultado encontrado para [SEARCH_TERM]. Tente uma das seguintes pesquisas:",searching:"Pesquisando por [SEARCH_TERM]..."},Jr={thanks_to:Wr,comments:Vr,direction:Gr,strings:Kr};var Bt={};S(Bt,{comments:()=>Zr,default:()=>xr,direction:()=>Xr,strings:()=>Qr,thanks_to:()=>Yr});var Yr="Bogdan Mateescu ",Zr="",Xr="ltr",Qr={placeholder:"C\u0103utare",clear_search:"\u015Eterge\u0163i",load_more:"\xCEnc\u0103rca\u021Bi mai multe rezultate",search_label:"C\u0103uta\u021Bi \xEEn acest site",filters_label:"Filtre",zero_results:"Niciun rezultat pentru [SEARCH_TERM]",many_results:"[COUNT] rezultate pentru [SEARCH_TERM]",one_result:"[COUNT] rezultat pentru [SEARCH_TERM]",alt_search:"Niciun rezultat pentru [SEARCH_TERM]. Se afi\u0219eaz\u0103 \xEEn schimb rezultatele pentru [DIFFERENT_TERM]",search_suggestion:"Niciun rezultat pentru [SEARCH_TERM]. \xCEncerca\u021Bi una dintre urm\u0103toarele c\u0103ut\u0103ri:",searching:"Se caut\u0103 dup\u0103: [SEARCH_TERM]..."},xr={thanks_to:Yr,comments:Zr,direction:Xr,strings:Qr};var Wt={};S(Wt,{comments:()=>ei,default:()=>si,direction:()=>ti,strings:()=>ni,thanks_to:()=>$r});var $r="Aleksandr Gordeev",ei="",ti="ltr",ni={placeholder:"\u041F\u043E\u0438\u0441\u043A",clear_search:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u043F\u043E\u043B\u0435",load_more:"\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0435\u0449\u0435",search_label:"\u041F\u043E\u0438\u0441\u043A \u043F\u043E \u0441\u0430\u0439\u0442\u0443",filters_label:"\u0424\u0438\u043B\u044C\u0442\u0440\u044B",zero_results:"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]",many_results:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]",one_result:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442 \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]",alt_search:"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]. \u041F\u043E\u043A\u0430\u0437\u0430\u043D\u044B \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [DIFFERENT_TERM]",search_suggestion:"\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u043E\u0434\u0438\u043D \u0438\u0437 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043D\u0442\u043E\u0432",searching:"\u041F\u043E\u0438\u0441\u043A \u043F\u043E \u0437\u0430\u043F\u0440\u043E\u0441\u0443: [SEARCH_TERM]"},si={thanks_to:$r,comments:ei,direction:ti,strings:ni};var Vt={};S(Vt,{comments:()=>ri,default:()=>oi,direction:()=>ii,strings:()=>ai,thanks_to:()=>li});var li="Andrija Sagicc",ri="",ii="ltr",ai={placeholder:"\u041F\u0440\u0435\u0442\u0440\u0430\u0433\u0430",clear_search:"\u0411\u0440\u0438\u0441\u0430\u045A\u0435",load_more:"\u041F\u0440\u0438\u043A\u0430\u0437 \u0432\u0438\u0448\u0435 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430",search_label:"\u041F\u0440\u0435\u0442\u0440\u0430\u0433\u0430 \u0441\u0430\u0458\u0442\u0430",filters_label:"\u0424\u0438\u043B\u0442\u0435\u0440\u0438",zero_results:"\u041D\u0435\u043C\u0430 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]",many_results:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]",one_result:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]",alt_search:"\u041D\u0435\u043C\u0430 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]. \u041F\u0440\u0438\u043A\u0430\u0437 \u0434\u043E\u0434\u0430\u0442\u043D\u0438\u043A \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [DIFFERENT_TERM]",search_suggestion:"\u041D\u0435\u043C\u0430 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430 \u0437\u0430 [SEARCH_TERM]. \u041F\u043E\u043A\u0443\u0448\u0430\u0458\u0442\u0435 \u0441\u0430 \u043D\u0435\u043A\u043E\u043C \u043E\u0434 \u0441\u043B\u0435\u0434\u0435\u045B\u0438\u0445 \u043F\u0440\u0435\u0442\u0440\u0430\u0433\u0430:",searching:"\u041F\u0440\u0435\u0442\u0440\u0430\u0433\u0430 \u0442\u0435\u0440\u043C\u0438\u043D\u0430 [SEARCH_TERM]..."},oi={thanks_to:li,comments:ri,direction:ii,strings:ai};var Gt={};S(Gt,{comments:()=>ci,default:()=>di,direction:()=>_i,strings:()=>fi,thanks_to:()=>ui});var ui="Montazar Al-Jaber ",ci="",_i="ltr",fi={placeholder:"S\xF6k",clear_search:"Rensa",load_more:"Visa fler tr\xE4ffar",search_label:"S\xF6k p\xE5 denna sida",filters_label:"Filter",zero_results:"[SEARCH_TERM] gav inga tr\xE4ffar",many_results:"[SEARCH_TERM] gav [COUNT] tr\xE4ffar",one_result:"[SEARCH_TERM] gav [COUNT] tr\xE4ff",alt_search:"[SEARCH_TERM] gav inga tr\xE4ffar. Visar resultat f\xF6r [DIFFERENT_TERM] ist\xE4llet",search_suggestion:"[SEARCH_TERM] gav inga tr\xE4ffar. F\xF6rs\xF6k igen med en av f\xF6ljande s\xF6kord:",searching:"S\xF6ker efter [SEARCH_TERM]..."},di={thanks_to:ui,comments:ci,direction:_i,strings:fi};var Kt={};S(Kt,{comments:()=>mi,default:()=>Ei,direction:()=>pi,strings:()=>gi,thanks_to:()=>hi});var hi="",mi="",pi="ltr",gi={placeholder:"\u0BA4\u0BC7\u0B9F\u0BC1\u0B95",clear_search:"\u0B85\u0BB4\u0BBF\u0B95\u0BCD\u0B95\u0BC1\u0B95",load_more:"\u0BAE\u0BC7\u0BB2\u0BC1\u0BAE\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BC8\u0B95\u0BCD \u0B95\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1\u0B95",search_label:"\u0B87\u0BA8\u0BCD\u0BA4 \u0BA4\u0BB3\u0BA4\u0BCD\u0BA4\u0BBF\u0BB2\u0BCD \u0BA4\u0BC7\u0B9F\u0BC1\u0B95",filters_label:"\u0BB5\u0B9F\u0BBF\u0B95\u0B9F\u0BCD\u0B9F\u0BB2\u0BCD\u0B95\u0BB3\u0BCD",zero_results:"[SEARCH_TERM] \u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD \u0B87\u0BB2\u0BCD\u0BB2\u0BC8",many_results:"[SEARCH_TERM] \u0B95\u0BCD\u0B95\u0BBE\u0BA9 [COUNT] \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD",one_result:"[SEARCH_TERM] \u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1",alt_search:"[SEARCH_TERM] \u0B87\u0BA4\u0BCD\u0BA4\u0BC7\u0B9F\u0BB2\u0BC1\u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD \u0B87\u0BB2\u0BCD\u0BB2\u0BC8, \u0B87\u0BA8\u0BCD\u0BA4 \u0BA4\u0BC7\u0B9F\u0BB2\u0BCD\u0B95\u0BB3\u0BC1\u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0B92\u0BA4\u0BCD\u0BA4 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD [DIFFERENT_TERM]",search_suggestion:"[SEARCH_TERM] \u0B87\u0BA4\u0BCD \u0BA4\u0BC7\u0B9F\u0BB2\u0BC1\u0B95\u0BCD\u0B95\u0BBE\u0BA9 \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0BC1\u0B95\u0BB3\u0BCD \u0B87\u0BB2\u0BCD\u0BB2\u0BC8.\u0B87\u0BA4\u0BB1\u0BCD\u0B95\u0BC1 \u0BAA\u0BA4\u0BBF\u0BB2\u0BC0\u0B9F\u0BBE\u0BA9 \u0BA4\u0BC7\u0B9F\u0BB2\u0BCD\u0B95\u0BB3\u0BC8 \u0BA4\u0BC7\u0B9F\u0BC1\u0B95:",searching:"[SEARCH_TERM] \u0BA4\u0BC7\u0B9F\u0BAA\u0BCD\u0BAA\u0B9F\u0BC1\u0B95\u0BBF\u0BA9\u0BCD\u0BB1\u0BA4\u0BC1"},Ei={thanks_to:hi,comments:mi,direction:pi,strings:gi};var Jt={};S(Jt,{comments:()=>bi,default:()=>ki,direction:()=>Ti,strings:()=>Ci,thanks_to:()=>Ri});var Ri="Taylan \xD6zg\xFCr Bildik",bi="",Ti="ltr",Ci={placeholder:"Ara\u015Ft\u0131r",clear_search:"Temizle",load_more:"Daha fazla sonu\xE7",search_label:"Site genelinde arama",filters_label:"Filtreler",zero_results:"[SEARCH_TERM] i\xE7in sonu\xE7 yok",many_results:"[SEARCH_TERM] i\xE7in [COUNT] sonu\xE7 bulundu",one_result:"[SEARCH_TERM] i\xE7in [COUNT] sonu\xE7 bulundu",alt_search:"[SEARCH_TERM] i\xE7in sonu\xE7 yok. Bunun yerine [DIFFERENT_TERM] i\xE7in sonu\xE7lar g\xF6steriliyor",search_suggestion:"[SEARCH_TERM] i\xE7in sonu\xE7 yok. Alternatif olarak a\u015Fa\u011F\u0131daki kelimelerden birini deneyebilirsiniz:",searching:"[SEARCH_TERM] ara\u015Ft\u0131r\u0131l\u0131yor..."},ki={thanks_to:Ri,comments:bi,direction:Ti,strings:Ci};var Yt={};S(Yt,{comments:()=>Si,default:()=>vi,direction:()=>Mi,strings:()=>Ai,thanks_to:()=>yi});var yi="Vladyslav Lyshenko ",Si="",Mi="ltr",Ai={placeholder:"\u041F\u043E\u0448\u0443\u043A",clear_search:"\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u043F\u043E\u043B\u0435",load_more:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438 \u0449\u0435",search_label:"\u041F\u043E\u0448\u0443\u043A \u043F\u043E \u0441\u0430\u0439\u0442\u0443",filters_label:"\u0424\u0456\u043B\u044C\u0442\u0440\u0438",zero_results:"\u041D\u0456\u0447\u043E\u0433\u043E \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E \u0437\u0430 \u0437\u0430\u043F\u0438\u0442\u043E\u043C: [SEARCH_TERM]",many_results:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0456\u0432 \u043D\u0430 \u0437\u0430\u043F\u0438\u0442: [SEARCH_TERM]",one_result:"[COUNT] \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442 \u0437\u0430 \u0437\u0430\u043F\u0438\u0442\u043E\u043C: [SEARCH_TERM]",alt_search:"\u041D\u0456\u0447\u043E\u0433\u043E \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043D\u0430 \u0437\u0430\u043F\u0438\u0442: [SEARCH_TERM]. \u041F\u043E\u043A\u0430\u0437\u0430\u043D\u043E \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0438 \u043D\u0430 \u0437\u0430\u043F\u0438\u0442: [DIFFERENT_TERM]",search_suggestion:"\u041D\u0456\u0447\u043E\u0433\u043E \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043D\u0430 \u0437\u0430\u043F\u0438\u0442: [SEARCH_TERM]. \u0421\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u043E\u0434\u0438\u043D \u0456\u0437 \u0442\u0430\u043A\u0438\u0445 \u0432\u0430\u0440\u0456\u0430\u043D\u0442\u0456\u0432",searching:"\u041F\u043E\u0448\u0443\u043A \u0437\u0430 \u0437\u0430\u043F\u0438\u0442\u043E\u043C: [SEARCH_TERM]"},vi={thanks_to:yi,comments:Si,direction:Mi,strings:Ai};var Zt={};S(Zt,{comments:()=>Fi,default:()=>Oi,direction:()=>Hi,strings:()=>Ni,thanks_to:()=>wi});var wi="Long Nhat Nguyen",Fi="",Hi="ltr",Ni={placeholder:"T\xECm ki\u1EBFm",clear_search:"X\xF3a",load_more:"Nhi\u1EC1u k\u1EBFt qu\u1EA3 h\u01A1n",search_label:"T\xECm ki\u1EBFm trong trang n\xE0y",filters_label:"B\u1ED9 l\u1ECDc",zero_results:"Kh\xF4ng t\xECm th\u1EA5y k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]",many_results:"[COUNT] k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]",one_result:"[COUNT] k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]",alt_search:"Kh\xF4ng t\xECm th\u1EA5y k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]. Ki\u1EC3m th\u1ECB k\u1EBFt qu\u1EA3 thay th\u1EBF v\u1EDBi [DIFFERENT_TERM]",search_suggestion:"Kh\xF4ng t\xECm th\u1EA5y k\u1EBFt qu\u1EA3 cho [SEARCH_TERM]. Th\u1EED m\u1ED9t trong c\xE1c t\xECm ki\u1EBFm:",searching:"\u0110ang t\xECm ki\u1EBFm cho [SEARCH_TERM]..."},Oi={thanks_to:wi,comments:Fi,direction:Hi,strings:Ni};var Xt={};S(Xt,{comments:()=>ji,default:()=>Ii,direction:()=>Di,strings:()=>Ui,thanks_to:()=>zi});var zi="Amber Song",ji="",Di="ltr",Ui={placeholder:"\u641C\u7D22",clear_search:"\u6E05\u9664",load_more:"\u52A0\u8F7D\u66F4\u591A\u7ED3\u679C",search_label:"\u7AD9\u5185\u641C\u7D22",filters_label:"\u7B5B\u9009",zero_results:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",many_results:"\u627E\u5230 [COUNT] \u4E2A [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",one_result:"\u627E\u5230 [COUNT] \u4E2A [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",alt_search:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C\u3002\u6539\u4E3A\u663E\u793A [DIFFERENT_TERM] \u7684\u76F8\u5173\u7ED3\u679C",search_suggestion:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C\u3002\u8BF7\u5C1D\u8BD5\u4EE5\u4E0B\u641C\u7D22\u3002",searching:"\u6B63\u5728\u641C\u7D22 [SEARCH_TERM]..."},Ii={thanks_to:zi,comments:ji,direction:Di,strings:Ui};var Qt={};S(Qt,{comments:()=>Li,default:()=>Wi,direction:()=>qi,strings:()=>Bi,thanks_to:()=>Pi});var Pi="Amber Song",Li="",qi="ltr",Bi={placeholder:"\u641C\u7D22",clear_search:"\u6E05\u9664",load_more:"\u52A0\u8F09\u66F4\u591A\u7D50\u679C",search_label:"\u7AD9\u5167\u641C\u7D22",filters_label:"\u7BE9\u9078",zero_results:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C",many_results:"\u627E\u5230 [COUNT] \u500B [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C",one_result:"\u627E\u5230 [COUNT] \u500B [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C",alt_search:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C\u3002\u6539\u70BA\u986F\u793A [DIFFERENT_TERM] \u7684\u76F8\u95DC\u7D50\u679C",search_suggestion:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u95DC\u7D50\u679C\u3002\u8ACB\u5617\u8A66\u4EE5\u4E0B\u641C\u7D22\u3002",searching:"\u6B63\u5728\u641C\u7D22 [SEARCH_TERM]..."},Wi={thanks_to:Pi,comments:Li,direction:qi,strings:Bi};var xt={};S(xt,{comments:()=>Gi,default:()=>Yi,direction:()=>Ki,strings:()=>Ji,thanks_to:()=>Vi});var Vi="Amber Song",Gi="",Ki="ltr",Ji={placeholder:"\u641C\u7D22",clear_search:"\u6E05\u9664",load_more:"\u52A0\u8F7D\u66F4\u591A\u7ED3\u679C",search_label:"\u7AD9\u5185\u641C\u7D22",filters_label:"\u7B5B\u9009",zero_results:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",many_results:"\u627E\u5230 [COUNT] \u4E2A [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",one_result:"\u627E\u5230 [COUNT] \u4E2A [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C",alt_search:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C\u3002\u6539\u4E3A\u663E\u793A [DIFFERENT_TERM] \u7684\u76F8\u5173\u7ED3\u679C",search_suggestion:"\u672A\u627E\u5230 [SEARCH_TERM] \u7684\u76F8\u5173\u7ED3\u679C\u3002\u8BF7\u5C1D\u8BD5\u4EE5\u4E0B\u641C\u7D22\u3002",searching:"\u6B63\u5728\u641C\u7D22 [SEARCH_TERM]..."},Yi={thanks_to:Vi,comments:Gi,direction:Ki,strings:Ji};var Zi=[Rt,bt,Tt,Ct,kt,yt,St,Mt,At,vt,wt,Ft,Ht,Nt,Ot,zt,jt,Dt,Ut,It,Pt,Lt,qt,Bt,Wt,Vt,Gt,Kt,Jt,Yt,Zt,Xt,Qt,xt],Zn=Zi,Xn=["../../translations/af.json","../../translations/bn.json","../../translations/ca.json","../../translations/cs.json","../../translations/da.json","../../translations/de.json","../../translations/en.json","../../translations/es.json","../../translations/fi.json","../../translations/fr.json","../../translations/gl.json","../../translations/hi.json","../../translations/hr.json","../../translations/hu.json","../../translations/id.json","../../translations/it.json","../../translations/ja.json","../../translations/ko.json","../../translations/mi.json","../../translations/nl.json","../../translations/no.json","../../translations/pl.json","../../translations/pt.json","../../translations/ro.json","../../translations/ru.json","../../translations/sr.json","../../translations/sv.json","../../translations/ta.json","../../translations/tr.json","../../translations/uk.json","../../translations/vi.json","../../translations/zh-cn.json","../../translations/zh-tw.json","../../translations/zh.json"];function Qn(n,e,t){let s=n.slice();return s[51]=e[t],s}function xn(n){let e,t,s;function l(i){n[37](i)}let r={show_empty_filters:n[5],open_filters:n[6],available_filters:n[18],translate:n[20],automatic_translations:n[19],translations:n[7]};return n[0]!==void 0&&(r.selected_filters=n[0]),e=new Yn({props:r}),re.push(()=>En(e,"selected_filters",l)),{c(){et(e.$$.fragment)},m(i,a){me(e,i,a),s=!0},p(i,a){let o={};a[0]&32&&(o.show_empty_filters=i[5]),a[0]&64&&(o.open_filters=i[6]),a[0]&262144&&(o.available_filters=i[18]),a[0]&524288&&(o.automatic_translations=i[19]),a[0]&128&&(o.translations=i[7]),!t&&a[0]&1&&(t=!0,o.selected_filters=i[0],hn(()=>t=!1)),e.$set(o)},i(i){s||(D(e.$$.fragment,i),s=!0)},o(i){P(e.$$.fragment,i),s=!1},d(i){ue(e,i)}}}function $n(n){let e,t,s,l,r=[xi,Qi],i=[];function a(o,h){return o[14]?0:1}return t=a(n,[-1,-1]),s=i[t]=r[t](n),{c(){e=C("div"),s.c(),E(e,"class","pagefind-ui__results-area svelte-e9gkc3")},m(o,h){y(o,e,h),i[t].m(e,null),l=!0},p(o,h){let c=t;t=a(o,h),t===c?i[t].p(o,h):(ae(),P(i[c],1,1,()=>{i[c]=null}),oe(),s=i[t],s?s.p(o,h):(s=i[t]=r[t](o),s.c()),D(s,1),s.m(e,null))},i(o){l||(D(s),l=!0)},o(o){P(s),l=!1},d(o){o&&k(e),i[t].d()}}}function Qi(n){let e,t,s,l=[],r=new Map,i,a,o;function h(u,f){return u[13].results.length===0?ta:u[13].results.length===1?ea:$i}let c=h(n,[-1,-1]),m=c(n),p=n[13].results.slice(0,n[17]),d=u=>u[51].id;for(let u=0;un[17]&&ts(n);return{c(){e=C("p"),m.c(),t=A(),s=C("ol");for(let u=0;uu[17]?_?_.p(u,f):(_=ts(u),_.c(),_.m(a.parentNode,a)):_&&(_.d(1),_=null)},i(u){if(!o){for(let f=0;f{o[p]=null}),oe(),l=o[s],l?l.p(e,m):(l=o[s]=a[s](e),l.c()),D(l,1),l.m(r.parentNode,r))},i(c){i||(D(l),i=!0)},o(c){P(l),i=!1},d(c){c&&k(t),o[s].d(c),c&&k(r)}}}function ts(n){let e,t=n[20]("load_more",n[19],n[7])+"",s,l,r;return{c(){e=C("button"),s=w(t),E(e,"type","button"),E(e,"class","pagefind-ui__button svelte-e9gkc3")},m(i,a){y(i,e,a),b(e,s),l||(r=J(e,"click",n[22]),l=!0)},p(i,a){a[0]&524416&&t!==(t=i[20]("load_more",i[19],i[7])+"")&&N(s,t)},d(i){i&&k(e),l=!1,r()}}}function ns(n){let e,t=n[20]("searching",n[19],n[7]).replace(/\[SEARCH_TERM\]/,n[16])+"",s;return{c(){e=C("p"),s=w(t),E(e,"class","pagefind-ui__message svelte-e9gkc3")},m(l,r){y(l,e,r),b(e,s)},p(l,r){r[0]&589952&&t!==(t=l[20]("searching",l[19],l[7]).replace(/\[SEARCH_TERM\]/,l[16])+"")&&N(s,t)},d(l){l&&k(e)}}}function la(n){let e,t,s,l,r,i,a=n[20]("clear_search",n[19],n[7])+"",o,h,c,m,p,d,_,u,f=n[12]&&xn(n),T=n[15]&&$n(n);return{c(){e=C("div"),t=C("form"),s=C("input"),r=A(),i=C("button"),o=w(a),h=A(),c=C("div"),f&&f.c(),m=A(),T&&T.c(),E(s,"class","pagefind-ui__search-input svelte-e9gkc3"),E(s,"type","text"),E(s,"placeholder",l=n[20]("placeholder",n[19],n[7])),E(s,"autocapitalize","none"),E(s,"enterkeyhint","search"),s.autofocus=n[8],E(i,"class","pagefind-ui__search-clear svelte-e9gkc3"),B(i,"pagefind-ui__suppressed",!n[9]),E(c,"class","pagefind-ui__drawer svelte-e9gkc3"),B(c,"pagefind-ui__hidden",!n[15]),E(t,"class","pagefind-ui__form svelte-e9gkc3"),E(t,"role","search"),E(t,"aria-label",p=n[20]("search_label",n[19],n[7])),E(t,"action","javascript:void(0);"),E(e,"class","pagefind-ui svelte-e9gkc3"),B(e,"pagefind-ui--reset",n[1])},m(R,M){y(R,e,M),b(e,t),b(t,s),ft(s,n[9]),n[34](s),b(t,r),b(t,i),b(i,o),n[35](i),b(t,h),b(t,c),f&&f.m(c,null),b(c,m),T&&T.m(c,null),d=!0,n[8]&&s.focus(),_||(u=[J(s,"focus",n[21]),J(s,"keydown",n[32]),J(s,"input",n[33]),J(i,"click",n[36]),J(t,"submit",ra)],_=!0)},p(R,M){(!d||M[0]&524416&&l!==(l=R[20]("placeholder",R[19],R[7])))&&E(s,"placeholder",l),(!d||M[0]&256)&&(s.autofocus=R[8]),M[0]&512&&s.value!==R[9]&&ft(s,R[9]),(!d||M[0]&524416)&&a!==(a=R[20]("clear_search",R[19],R[7])+"")&&N(o,a),(!d||M[0]&512)&&B(i,"pagefind-ui__suppressed",!R[9]),R[12]?f?(f.p(R,M),M[0]&4096&&D(f,1)):(f=xn(R),f.c(),D(f,1),f.m(c,m)):f&&(ae(),P(f,1,1,()=>{f=null}),oe()),R[15]?T?(T.p(R,M),M[0]&32768&&D(T,1)):(T=$n(R),T.c(),D(T,1),T.m(c,null)):T&&(ae(),P(T,1,1,()=>{T=null}),oe()),(!d||M[0]&32768)&&B(c,"pagefind-ui__hidden",!R[15]),(!d||M[0]&524416&&p!==(p=R[20]("search_label",R[19],R[7])))&&E(t,"aria-label",p),(!d||M[0]&2)&&B(e,"pagefind-ui--reset",R[1])},i(R){d||(D(f),D(T),d=!0)},o(R){P(f),P(T),d=!1},d(R){R&&k(e),n[34](null),n[35](null),f&&f.d(),T&&T.d(),_=!1,G(u)}}}var ra=n=>n.preventDefault();function ia(n,e,t){let s={},l=Xn.map(g=>g.match(/([^\/]+)\.json$/)[1]);for(let g=0;gz[g]??H[g]??"";dt(()=>{let g=document?.querySelector?.("html")?.getAttribute?.("lang")||"en",H=tt(g.toLocaleLowerCase());t(19,rn=s[`${H.language}-${H.script}-${H.region}`]||s[`${H.language}-${H.region}`]||s[`${H.language}`]||s.en)}),ht(()=>{F?.destroy?.(),F=null});let an=async()=>{if(!st&&(t(12,st=!0),!F)){let g;try{g=await import(`${r}pagefind.js`)}catch(z){console.error(z),console.error([`Pagefind couldn't be loaded from ${this.options.bundlePath}pagefind.js`,"You can configure this by passing a bundlePath option to PagefindUI",`[DEBUG: Loaded from ${document?.currentScript?.src??"no known script location"}]`].join(` +`))}c||t(24,c=h?12:30);let H={...f||{},excerptLength:c};await g.options(H);for(let z of T){if(!z.bundlePath)throw new Error("mergeIndex requires a bundlePath parameter");let L=z.bundlePath;delete z.bundlePath,await g.mergeIndex(L,z)}F=g,is()}},is=async()=>{F&&(ln=await F.filters(),(!ce||!Object.keys(ce).length)&&t(18,ce=ln))},as=g=>{let H={};return Object.entries(g).filter(([,z])=>z).forEach(([z])=>{let[L,te]=z.split(/:(.*)$/);H[L]=H[L]||[],H[L].push(te)}),H},_e,os=async(g,H)=>{if(!g){t(15,rt=!1),_e&&clearTimeout(_e);return}let z=as(H),L=()=>us(g,z);u>0&&g?(_e&&clearTimeout(_e),_e=setTimeout(L,u),await on(),F.preload(g,{filters:z})):L(),cs()},on=async()=>{for(;!F;)an(),await new Promise(g=>setTimeout(g,50))},us=async(g,H)=>{t(16,sn=g||""),typeof p=="function"&&(g=p(g)),t(14,lt=!0),t(15,rt=!0),await on();let z=++nn,L={filters:H};X&&typeof X=="object"&&(L.sort=X);let te=await F.search(g,L);nn===z&&(te.filters&&Object.keys(te.filters)?.length&&t(18,ce=te.filters),t(13,tn=te),t(14,lt=!1),t(17,it=i))},cs=()=>{let g=V.offsetWidth;g!=ls&&t(10,O.style.paddingRight=`${g+2}px`,O)},_s=g=>{g?.preventDefault(),t(17,it+=i)},fs=g=>{g.key==="Escape"&&(t(9,v=""),O.blur()),g.key==="Enter"&&g.preventDefault()};function ds(){v=this.value,t(9,v),t(23,R)}function hs(g){re[g?"unshift":"push"](()=>{O=g,t(10,O)})}function ms(g){re[g?"unshift":"push"](()=>{V=g,t(11,V)})}let ps=()=>{t(9,v=""),O.blur()};function gs(g){W=g,t(0,W)}return n.$$set=g=>{"base_path"in g&&t(25,r=g.base_path),"page_size"in g&&t(26,i=g.page_size),"reset_styles"in g&&t(1,a=g.reset_styles),"show_images"in g&&t(2,o=g.show_images),"show_sub_results"in g&&t(3,h=g.show_sub_results),"excerpt_length"in g&&t(24,c=g.excerpt_length),"process_result"in g&&t(4,m=g.process_result),"process_term"in g&&t(27,p=g.process_term),"show_empty_filters"in g&&t(5,d=g.show_empty_filters),"open_filters"in g&&t(6,_=g.open_filters),"debounce_timeout_ms"in g&&t(28,u=g.debounce_timeout_ms),"pagefind_options"in g&&t(29,f=g.pagefind_options),"merge_index"in g&&t(30,T=g.merge_index),"trigger_search_term"in g&&t(23,R=g.trigger_search_term),"translations"in g&&t(7,M=g.translations),"autofocus"in g&&t(8,U=g.autofocus),"sort"in g&&t(31,X=g.sort),"selected_filters"in g&&t(0,W=g.selected_filters)},n.$$.update=()=>{if(n.$$.dirty[0]&8388608)e:R&&(t(9,v=R),t(23,R=""));if(n.$$.dirty[0]&513)e:os(v,W)},[W,a,o,h,m,d,_,M,U,v,O,V,st,tn,lt,rt,sn,it,ce,rn,rs,an,_s,R,c,r,i,p,u,f,T,X,fs,ds,hs,ms,ps,gs]}var $t=class extends q{constructor(e){super(),Y(this,e,ia,la,K,{base_path:25,page_size:26,reset_styles:1,show_images:2,show_sub_results:3,excerpt_length:24,process_result:4,process_term:27,show_empty_filters:5,open_filters:6,debounce_timeout_ms:28,pagefind_options:29,merge_index:30,trigger_search_term:23,translations:7,autofocus:8,sort:31,selected_filters:0},null,[-1,-1])}},ss=$t;var en;try{en=new URL(document.currentScript.src).pathname.match(/^(.*\/)(?:pagefind-)?ui.js.*$/)[1]}catch{en="/pagefind/"}var nt=class{constructor(e){this._pfs=null;let t=e.element??"[data-pagefind-ui]",s=e.bundlePath??en,l=e.pageSize??5,r=e.resetStyles??!0,i=e.showImages??!0,a=e.showSubResults??!1,o=e.excerptLength??0,h=e.processResult??null,c=e.processTerm??null,m=e.showEmptyFilters??!0,p=e.openFilters??[],d=e.debounceTimeoutMs??300,_=e.mergeIndex??[],u=e.translations??[],f=e.autofocus??!1,T=e.sort??null;delete e.element,delete e.bundlePath,delete e.pageSize,delete e.resetStyles,delete e.showImages,delete e.showSubResults,delete e.excerptLength,delete e.processResult,delete e.processTerm,delete e.showEmptyFilters,delete e.openFilters,delete e.debounceTimeoutMs,delete e.mergeIndex,delete e.translations,delete e.autofocus,delete e.sort;let R=t instanceof HTMLElement?t:document.querySelector(t);R?this._pfs=new ss({target:R,props:{base_path:s,page_size:l,reset_styles:r,show_images:i,show_sub_results:a,excerpt_length:o,process_result:h,process_term:c,show_empty_filters:m,open_filters:p,debounce_timeout_ms:d,merge_index:_,translations:u,autofocus:f,sort:T,pagefind_options:e}}):console.error(`Pagefind UI couldn't find the selector ${t}`)}triggerSearch(e){this._pfs.$$set({trigger_search_term:e})}triggerFilters(e){let t={};for(let[s,l]of Object.entries(e))if(Array.isArray(l))for(let r of l)t[`${s}:${r}`]=!0;else t[`${s}:${l}`]=!0;this._pfs.$$set({selected_filters:t})}destroy(){this._pfs.$destroy()}};window.PagefindUI=nt;})(); diff --git a/static/js/pagefind.index.js b/static/js/pagefind.index.js new file mode 100644 index 00000000..8a685c07 --- /dev/null +++ b/static/js/pagefind.index.js @@ -0,0 +1,121 @@ +// Import the path and fs modules to fetch the search index +const path = require("path"); +const fs = require("fs"); + +async function createIndex() { + // Dynamically import the pagefind module + const pagefind = await import("pagefind"); + + removeOldIndex(); + + console.log("Creating index..."); + + const publicFolder = path.join(__dirname, "../../public"); + + const files = fs.readdirSync(publicFolder); + let langArray = []; + + files.forEach((file) => { + if (file.startsWith("search_index")) { + langArray.push(file.split(".")[1]); + } + }); + + const { index } = await pagefind.createIndex(); + // Assuming index, fs, and path are already defined and properly imported + + // Convert each lang in langArray to a promise that performs the desired operations + const promises = langArray.map((lang) => + (async () => { + const filePath = path.join( + __dirname, + "../../public/search_index." + lang + ".json" + ); + + // Read the file content synchronously (consider using async readFile for better performance) + const fileContent = fs.readFileSync(filePath); + const data = JSON.parse(fileContent); + + // Add each record to the index asynchronously + for (const record of data) { + await index.addCustomRecord({ + url: record.url, + content: record.body, + language: lang, + meta: { + title: record.title, + description: record.meta, + }, + }); + } + })() + ); + + // Execute all promises concurrently + await Promise.all(promises) + .then(async () => { + // Write the index files to disk + const { errors } = await index.writeFiles({ + outputPath: "./static/js/", + }); + if (errors.length > 0) { + console.log("Errors: ", errors); + } + }) + .then(async () => { + // Edit the pagefind to convert from MJS to CJS + const pagefindPath = path.join(__dirname, "pagefind.js"); + let pagefindContent = fs.readFileSync(pagefindPath, "utf8"); + // Remove 'import.meta.url' from the pagefind file and exports + pagefindContent = pagefindContent + .replace( + /initPrimary\(\)\{([^{}]*\{[^{}]*\})*[^{}]*\}/g, + `initPrimary(){}` + ) // Remove annoying function + .replace(/;export\{[^}]*\}/g, ""); + fs.writeFileSync(pagefindPath, pagefindContent); + }) + .then(async () => { + await pagefind.close(); + }) + .catch((error) => { + console.error("An error occurred:", error); + }); +} + +function removeOldIndex() { + // Remove all the old fragment, index and pagefind files + const indexFolder = path.join(__dirname, "../../static/js/index"); + const fragmentFolder = path.join(__dirname, "../../static/js/fragment"); + clearFolder(indexFolder); + clearFolder(fragmentFolder); + + // Delete all files in this format pagefind.*.pf_meta + const staticFolder = path.join(__dirname, "../../static/js"); + const files = fs.readdirSync(staticFolder); + files.forEach((file) => { + if (file.startsWith("pagefind") && file.endsWith(".pf_meta")) { + fs.unlinkSync(path.join(staticFolder, file)); + } + }); +} + +function clearFolder(directoryPath) { + try { + // Read all the files in the directory + const files = fs.readdirSync(directoryPath); + + // Iterate over each file and delete it + for (const file of files) { + const filePath = path.join(directoryPath, file); + fs.unlinkSync(filePath); + } + } catch (error) { + // Ignore the error if the directory does not exist, as that is a good behaviour :) + if (error.code !== 'ENOENT') { + console.error("An error occurred:", error); + } + } +} + +module.exports = createIndex; diff --git a/static/js/pagefind.js b/static/js/pagefind.js new file mode 100644 index 00000000..e41e7178 --- /dev/null +++ b/static/js/pagefind.js @@ -0,0 +1,9 @@ +const pagefind_version="1.1.0";let wasm_bindgen;(function(){const __exports={};let script_src;if(typeof document!=='undefined'&&document.currentScript!==null){script_src=new URL("UNHANDLED",location.href).toString()}let wasm=undefined;let cachedUint8Memory0=null;function getUint8Memory0(){if(cachedUint8Memory0===null||cachedUint8Memory0.byteLength===0){cachedUint8Memory0=new Uint8Array(wasm.memory.buffer)}return cachedUint8Memory0}let WASM_VECTOR_LEN=0;function passArray8ToWasm0(arg,malloc){const ptr=malloc(arg.length*1,1)>>>0;getUint8Memory0().set(arg,ptr/1);WASM_VECTOR_LEN=arg.length;return ptr}__exports.init_pagefind=function(metadata_bytes){const ptr0=passArray8ToWasm0(metadata_bytes,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;const ret=wasm.init_pagefind(ptr0,len0);return ret>>>0};const cachedTextEncoder=(typeof TextEncoder!=='undefined'?new TextEncoder('utf-8'):{encode:()=>{throw Error('TextEncoder not available')}});const encodeString=(typeof cachedTextEncoder.encodeInto==='function'?function(arg,view){return cachedTextEncoder.encodeInto(arg,view)}:function(arg,view){const buf=cachedTextEncoder.encode(arg);view.set(buf);return{read:arg.length,written:buf.length}});function passStringToWasm0(arg,malloc,realloc){if(realloc===undefined){const buf=cachedTextEncoder.encode(arg);const ptr=malloc(buf.length,1)>>>0;getUint8Memory0().subarray(ptr,ptr+buf.length).set(buf);WASM_VECTOR_LEN=buf.length;return ptr}let len=arg.length;let ptr=malloc(len,1)>>>0;const mem=getUint8Memory0();let offset=0;for(;offset0x7F)break;mem[ptr+offset]=code}if(offset!==len){if(offset!==0){arg=arg.slice(offset)}ptr=realloc(ptr,len,len=offset+arg.length*3,1)>>>0;const view=getUint8Memory0().subarray(ptr+offset,ptr+len);const ret=encodeString(arg,view);offset+=ret.written;ptr=realloc(ptr,len,offset,1)>>>0}WASM_VECTOR_LEN=offset;return ptr}__exports.set_ranking_weights=function(ptr,weights){const ptr0=passStringToWasm0(weights,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;const ret=wasm.set_ranking_weights(ptr,ptr0,len0);return ret>>>0};__exports.load_index_chunk=function(ptr,chunk_bytes){const ptr0=passArray8ToWasm0(chunk_bytes,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;const ret=wasm.load_index_chunk(ptr,ptr0,len0);return ret>>>0};__exports.load_filter_chunk=function(ptr,chunk_bytes){const ptr0=passArray8ToWasm0(chunk_bytes,wasm.__wbindgen_malloc);const len0=WASM_VECTOR_LEN;const ret=wasm.load_filter_chunk(ptr,ptr0,len0);return ret>>>0};__exports.add_synthetic_filter=function(ptr,filter){const ptr0=passStringToWasm0(filter,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;const ret=wasm.add_synthetic_filter(ptr,ptr0,len0);return ret>>>0};let cachedInt32Memory0=null;function getInt32Memory0(){if(cachedInt32Memory0===null||cachedInt32Memory0.byteLength===0){cachedInt32Memory0=new Int32Array(wasm.memory.buffer)}return cachedInt32Memory0}const cachedTextDecoder=(typeof TextDecoder!=='undefined'?new TextDecoder('utf-8',{ignoreBOM:true,fatal:true}):{decode:()=>{throw Error('TextDecoder not available')}});if(typeof TextDecoder!=='undefined'){cachedTextDecoder.decode()};function getStringFromWasm0(ptr,len){ptr=ptr>>>0;return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr,ptr+len))}__exports.request_indexes=function(ptr,query){let deferred2_0;let deferred2_1;try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passStringToWasm0(query,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;wasm.request_indexes(retptr,ptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];deferred2_0=r0;deferred2_1=r1;return getStringFromWasm0(r0,r1)}finally{wasm.__wbindgen_add_to_stack_pointer(16);wasm.__wbindgen_free(deferred2_0,deferred2_1,1)}};__exports.request_filter_indexes=function(ptr,filters){let deferred2_0;let deferred2_1;try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passStringToWasm0(filters,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;wasm.request_filter_indexes(retptr,ptr,ptr0,len0);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];deferred2_0=r0;deferred2_1=r1;return getStringFromWasm0(r0,r1)}finally{wasm.__wbindgen_add_to_stack_pointer(16);wasm.__wbindgen_free(deferred2_0,deferred2_1,1)}};__exports.request_all_filter_indexes=function(ptr){let deferred1_0;let deferred1_1;try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.request_all_filter_indexes(retptr,ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];deferred1_0=r0;deferred1_1=r1;return getStringFromWasm0(r0,r1)}finally{wasm.__wbindgen_add_to_stack_pointer(16);wasm.__wbindgen_free(deferred1_0,deferred1_1,1)}};__exports.filters=function(ptr){let deferred1_0;let deferred1_1;try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.filters(retptr,ptr);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];deferred1_0=r0;deferred1_1=r1;return getStringFromWasm0(r0,r1)}finally{wasm.__wbindgen_add_to_stack_pointer(16);wasm.__wbindgen_free(deferred1_0,deferred1_1,1)}};__exports.search=function(ptr,query,filter,sort,exact){let deferred4_0;let deferred4_1;try{const retptr=wasm.__wbindgen_add_to_stack_pointer(-16);const ptr0=passStringToWasm0(query,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len0=WASM_VECTOR_LEN;const ptr1=passStringToWasm0(filter,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len1=WASM_VECTOR_LEN;const ptr2=passStringToWasm0(sort,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc);const len2=WASM_VECTOR_LEN;wasm.search(retptr,ptr,ptr0,len0,ptr1,len1,ptr2,len2,exact);var r0=getInt32Memory0()[retptr/4+0];var r1=getInt32Memory0()[retptr/4+1];deferred4_0=r0;deferred4_1=r1;return getStringFromWasm0(r0,r1)}finally{wasm.__wbindgen_add_to_stack_pointer(16);wasm.__wbindgen_free(deferred4_0,deferred4_1,1)}};async function __wbg_load(module,imports){if(typeof Response==='function'&&module instanceof Response){if(typeof WebAssembly.instantiateStreaming==='function'){try{return await WebAssembly.instantiateStreaming(module,imports)}catch(e){if(module.headers.get('Content-Type')!='application/wasm'){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",e)}else{throw e}}}const bytes=await module.arrayBuffer();return await WebAssembly.instantiate(bytes,imports)}else{const instance=await WebAssembly.instantiate(module,imports);if(instance instanceof WebAssembly.Instance){return{instance,module}}else{return instance}}}function __wbg_get_imports(){const imports={};imports.wbg={};return imports}function __wbg_init_memory(imports,maybe_memory){}function __wbg_finalize_init(instance,module){wasm=instance.exports;__wbg_init.__wbindgen_wasm_module=module;cachedInt32Memory0=null;cachedUint8Memory0=null;return wasm}function initSync(module){if(wasm!==undefined)return wasm;const imports=__wbg_get_imports();__wbg_init_memory(imports);if(!(module instanceof WebAssembly.Module)){module=new WebAssembly.Module(module)}const instance=new WebAssembly.Instance(module,imports);return __wbg_finalize_init(instance,module)}async function __wbg_init(input){if(wasm!==undefined)return wasm;if(typeof input==='undefined'&&typeof script_src!=='undefined'){input=script_src.replace(/\.js$/,'_bg.wasm')}const imports=__wbg_get_imports();if(typeof input==='string'||(typeof Request==='function'&&input instanceof Request)||(typeof URL==='function'&&input instanceof URL)){input=fetch(input)}__wbg_init_memory(imports);const{instance,module}=await __wbg_load(await input,imports);return __wbg_finalize_init(instance,module)}wasm_bindgen=Object.assign(__wbg_init,{initSync},__exports)})();var u8=Uint8Array;var u16=Uint16Array;var u32=Uint32Array;var fleb=new u8([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]);var fdeb=new u8([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]);var clim=new u8([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);var freb=function(eb,start){var b=new u16(31);for(var i2=0;i2<31;++i2){b[i2]=start+=1<>>1|(i&21845)<<1;x=(x&52428)>>>2|(x&13107)<<2;x=(x&61680)>>>4|(x&3855)<<4;rev[i]=((x&65280)>>>8|(x&255)<<8)>>>1}var x;var i;var hMap=function(cd,mb,r){var s=cd.length;var i2=0;var l=new u16(mb);for(;i2>>rvb]=sv}}}}else{co=new u16(s);for(i2=0;i2>>15-cd[i2]}}}return co};var flt=new u8(288);for(i=0;i<144;++i)flt[i]=8;var i;for(i=144;i<256;++i)flt[i]=9;var i;for(i=256;i<280;++i)flt[i]=7;var i;for(i=280;i<288;++i)flt[i]=8;var i;var fdt=new u8(32);for(i=0;i<32;++i)fdt[i]=5;var i;var flrm=hMap(flt,9,1);var fdrm=hMap(fdt,5,1);var max=function(a){var m=a[0];for(var i2=1;i2m)m=a[i2]}return m};var bits=function(d,p,m){var o=p/8|0;return(d[o]|d[o+1]<<8)>>(p&7)&m};var bits16=function(d,p){var o=p/8|0;return(d[o]|d[o+1]<<8|d[o+2]<<16)>>(p&7)};var shft=function(p){return(p+7)/8|0};var slc=function(v,s,e){if(s==null||s<0)s=0;if(e==null||e>v.length)e=v.length;var n=new(v.BYTES_PER_ELEMENT==2?u16:v.BYTES_PER_ELEMENT==4?u32:u8)(e-s);n.set(v.subarray(s,e));return n};var ec=["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"];var err=function(ind,msg,nt){var e=new Error(msg||ec[ind]);e.code=ind;if(Error.captureStackTrace)Error.captureStackTrace(e,err);if(!nt)throw e;return e};var inflt=function(dat,buf,st){var sl=dat.length;if(!sl||st&&st.f&&!st.l)return buf||new u8(0);var noBuf=!buf||st;var noSt=!st||st.i;if(!st)st={};if(!buf)buf=new u8(sl*3);var cbuf=function(l2){var bl=buf.length;if(l2>bl){var nbuf=new u8(Math.max(bl*2,l2));nbuf.set(buf);buf=nbuf}};var final=st.f||0,pos=st.p||0,bt=st.b||0,lm=st.l,dm=st.d,lbt=st.m,dbt=st.n;var tbts=sl*8;do{if(!lm){final=bits(dat,pos,1);var type=bits(dat,pos+1,3);pos+=3;if(!type){var s=shft(pos)+4,l=dat[s-4]|dat[s-3]<<8,t=s+l;if(t>sl){if(noSt)err(0);break}if(noBuf)cbuf(bt+l);buf.set(dat.subarray(s,t),bt);st.b=bt+=l,st.p=pos=t*8,st.f=final;continue}else if(type==1)lm=flrm,dm=fdrm,lbt=9,dbt=5;else if(type==2){var hLit=bits(dat,pos,31)+257,hcLen=bits(dat,pos+10,15)+4;var tl=hLit+bits(dat,pos+5,31)+1;pos+=14;var ldt=new u8(tl);var clt=new u8(19);for(var i2=0;i2>>4;if(s<16){ldt[i2++]=s}else{var c=0,n=0;if(s==16)n=3+bits(dat,pos,3),pos+=2,c=ldt[i2-1];else if(s==17)n=3+bits(dat,pos,7),pos+=3;else if(s==18)n=11+bits(dat,pos,127),pos+=7;while(n--)ldt[i2++]=c}}var lt=ldt.subarray(0,hLit),dt=ldt.subarray(hLit);lbt=max(lt);dbt=max(dt);lm=hMap(lt,lbt,1);dm=hMap(dt,dbt,1)}else err(1);if(pos>tbts){if(noSt)err(0);break}}if(noBuf)cbuf(bt+131072);var lms=(1<>>4;pos+=c&15;if(pos>tbts){if(noSt)err(0);break}if(!c)err(2);if(sym<256)buf[bt++]=sym;else if(sym==256){lpos=pos,lm=null;break}else{var add=sym-254;if(sym>264){var i2=sym-257,b=fleb[i2];add=bits(dat,pos,(1<>>4;if(!d)err(3);pos+=d&15;var dt=fd[dsym];if(dsym>3){var b=fdeb[dsym];dt+=bits16(dat,pos)&(1<tbts){if(noSt)err(0);break}if(noBuf)cbuf(bt+131072);var end=bt+add;for(;bt>3&1)+(flg>>4&1);zs>0;zs-=!d[st++]);return st+(flg&2)};var gzl=function(d){var l=d.length;return(d[l-4]|d[l-3]<<8|d[l-2]<<16|d[l-1]<<24)>>>0};function gunzipSync(data,out){return inflt(data.subarray(gzs(data),-8),out||new u8(gzl(data)))}var td=typeof TextDecoder!="undefined"&&new TextDecoder();var tds=0;try{td.decode(et,{stream:true});tds=1}catch(e){}var gz_default=gunzipSync;var calculate_excerpt_region=(word_positions,excerpt_length)=>{if(word_positions.length===0){return 0}let words=[];for(const word of word_positions){words[word.location]=words[word.location]||0;words[word.location]+=word.balanced_score}if(words.length<=excerpt_length){return 0}let densest=words.slice(0,excerpt_length).reduce((partialSum,a)=>partialSum+a,0);let working_sum=densest;let densest_at=[0];for(let i2=0;i2densest){densest=working_sum;densest_at=[i2]}else if(working_sum===densest&&densest_at[densest_at.length-1]===i2-1){densest_at.push(i2)}}let midpoint=densest_at[Math.floor(densest_at.length/2)];return midpoint};var build_excerpt=(content,start,length,locations,not_before,not_from)=>{let is_zws_delimited=content.includes("\u200B");let fragment_words=[];if(is_zws_delimited){fragment_words=content.split("\u200B")}else{fragment_words=content.split(/[\r\n\s]+/g)}for(let word of locations){if(fragment_words[word]?.startsWith(``)){continue}fragment_words[word]=`${fragment_words[word]}`}let endcap=not_from??fragment_words.length;let startcap=not_before??0;if(endcap-startcapendcap){start=endcap-length}if(start{const anchors=fragment.anchors.filter((a)=>/h\d/i.test(a.element)&&a.text?.length&&/\S/.test(a.text)).sort((a,b)=>a.location-b.location);const results=[];let current_anchor_position=0;let current_anchor={title:fragment.meta["title"],url:fragment.url,weighted_locations:[],locations:[],excerpt:""};const add_result=(end_range)=>{if(current_anchor.locations.length){const relative_weighted_locations=current_anchor.weighted_locations.map((l)=>{return{weight:l.weight,balanced_score:l.balanced_score,location:l.location-current_anchor_position}});const excerpt_start=calculate_excerpt_region(relative_weighted_locations,desired_excerpt_length)+current_anchor_position;const excerpt_length=end_range?Math.min(end_range-excerpt_start,desired_excerpt_length):desired_excerpt_length;current_anchor.excerpt=build_excerpt(fragment.raw_content??"",excerpt_start,excerpt_length,current_anchor.locations,current_anchor_position,end_range);results.push(current_anchor)}};for(let word of fragment.weighted_locations){if(!anchors.length||word.location=anchors[0].location){next_anchor=anchors.shift()}let anchored_url=fragment.url;try{const url_is_fq=/^((https?:)?\/\/)/.test(anchored_url);if(url_is_fq){let fq_url=new URL(anchored_url);fq_url.hash=next_anchor.id;anchored_url=fq_url.toString()}else{if(!/^\//.test(anchored_url)){anchored_url=`/${anchored_url}`}let fq_url=new URL(`https://example.com${anchored_url}`);fq_url.hash=next_anchor.id;anchored_url=fq_url.toString().replace(/^https:\/\/example.com/,"")}}catch(e){console.error(`Pagefind: Couldn't process ${anchored_url} for a search result`)}current_anchor_position=next_anchor.location;current_anchor={title:next_anchor.text,url:anchored_url,anchor:next_anchor,weighted_locations:[word],locations:[word.location],excerpt:""}}}add_result(anchors[0]?.location);return results};var asyncSleep=async(ms=100)=>{return new Promise((r)=>setTimeout(r,ms))};var PagefindInstance=class{constructor(opts={}){this.version=pagefind_version;this.backend=wasm_bindgen;this.decoder=new TextDecoder("utf-8");this.wasm=null;this.basePath=opts.basePath||"/pagefind/";this.primary=opts.primary||false;if(this.primary&&!opts.basePath){this.initPrimary()}if(/[^\/]$/.test(this.basePath)){this.basePath=`${this.basePath}/`}if(window?.location?.origin&&this.basePath.startsWith(window.location.origin)){this.basePath=this.basePath.replace(window.location.origin,"")}this.baseUrl=opts.baseUrl||this.defaultBaseUrl();if(!/^(\/|https?:\/\/)/.test(this.baseUrl)){this.baseUrl=`/${this.baseUrl}`}this.indexWeight=opts.indexWeight??1;this.excerptLength=opts.excerptLength??30;this.mergeFilter=opts.mergeFilter??{};this.ranking=opts.ranking;this.highlightParam=opts.highlightParam??null;this.loaded_chunks={};this.loaded_filters={};this.loaded_fragments={};this.raw_ptr=null;this.searchMeta=null;this.languages=null}initPrimary(){}defaultBaseUrl(){let default_base=this.basePath.match(/^(.*\/)_?pagefind/)?.[1];return default_base||"/"}async options(options2){const opts=["basePath","baseUrl","indexWeight","excerptLength","mergeFilter","highlightParam","ranking"];for(const[k,v]of Object.entries(options2)){if(k==="mergeFilter"){let filters2=this.stringifyFilters(v);let ptr=await this.getPtr();this.raw_ptr=this.backend.add_synthetic_filter(ptr,filters2)}else if(k==="ranking"){await this.set_ranking(options2.ranking)}else if(opts.includes(k)){if(k==="basePath"&&typeof v==="string")this.basePath=v;if(k==="baseUrl"&&typeof v==="string")this.baseUrl=v;if(k==="indexWeight"&&typeof v==="number")this.indexWeight=v;if(k==="excerptLength"&&typeof v==="number")this.excerptLength=v;if(k==="mergeFilter"&&typeof v==="object")this.mergeFilter=v;if(k==="highlightParam"&&typeof v==="string")this.highlightParam=v}else{console.warn(`Unknown Pagefind option ${k}. Allowed options: [${opts.join(", ")}]`)}}}decompress(data,file="unknown file"){if(this.decoder.decode(data.slice(0,12))==="pagefind_dcd"){return data.slice(12)}data=gz_default(data);if(this.decoder.decode(data.slice(0,12))!=="pagefind_dcd"){console.error(`Decompressing ${file} appears to have failed: Missing signature`);return data}return data.slice(12)}async set_ranking(ranking){if(!ranking)return;let rankingWeights={term_similarity:ranking.termSimilarity??null,page_length:ranking.pageLength??null,term_saturation:ranking.termSaturation??null,term_frequency:ranking.termFrequency??null};let ptr=await this.getPtr();this.raw_ptr=this.backend.set_ranking_weights(ptr,JSON.stringify(rankingWeights))}async init(language,opts){await this.loadEntry();let index=this.findIndex(language);let lang_wasm=index.wasm?index.wasm:"unknown";let resources=[this.loadMeta(index.hash)];if(opts.load_wasm===true){resources.push(this.loadWasm(lang_wasm))}await Promise.all(resources);this.raw_ptr=this.backend.init_pagefind(new Uint8Array(this.searchMeta));if(Object.keys(this.mergeFilter)?.length){let filters2=this.stringifyFilters(this.mergeFilter);let ptr=await this.getPtr();this.raw_ptr=this.backend.add_synthetic_filter(ptr,filters2)}if(this.ranking){await this.set_ranking(this.ranking)}}async loadEntry(){try{let entry_response=await fetch(`${this.basePath}pagefind-entry.json?ts=${Date.now()}`);let entry_json=await entry_response.json();this.languages=entry_json.languages;if(entry_json.version!==this.version){if(this.primary){console.warn(["Pagefind JS version doesn't match the version in your search index.",`Pagefind JS: ${this.version}. Pagefind index: ${entry_json.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"))}else{console.warn(["Merging a Pagefind index from a different version than the main Pagefind instance.",`Main Pagefind JS: ${this.version}. Merged index (${this.basePath}): ${entry_json.version}`,"If you encounter any search errors, make sure that both sites are running the same version of Pagefind."].join("\n"))}}}catch(e){console.error(`Failed to load Pagefind metadata: +${e?.toString()}`);throw new Error("Failed to load Pagefind metadata")}}findIndex(language){if(this.languages){let index=this.languages[language];if(index)return index;index=this.languages[language.split("-")[0]];if(index)return index;let topLang=Object.values(this.languages).sort((a,b)=>b.page_count-a.page_count);if(topLang[0])return topLang[0]}throw new Error("Pagefind Error: No language indexes found.")}async loadMeta(index){try{let compressed_resp=await fetch(`${this.basePath}pagefind.${index}.pf_meta`);let compressed_meta=await compressed_resp.arrayBuffer();this.searchMeta=this.decompress(new Uint8Array(compressed_meta),"Pagefind metadata")}catch(e){console.error(`Failed to load the meta index: +${e?.toString()}`)}}async loadWasm(language){try{const wasm_url=`${this.basePath}wasm.${language}.pagefind`;let compressed_resp=await fetch(wasm_url);let compressed_wasm=await compressed_resp.arrayBuffer();const final_wasm=this.decompress(new Uint8Array(compressed_wasm),"Pagefind WebAssembly");if(!final_wasm){throw new Error("No WASM after decompression")}this.wasm=await this.backend(final_wasm)}catch(e){console.error(`Failed to load the Pagefind WASM: +${e?.toString()}`);throw new Error(`Failed to load the Pagefind WASM: +${e?.toString()}`)}}async _loadGenericChunk(url,method){try{let compressed_resp=await fetch(url);let compressed_chunk=await compressed_resp.arrayBuffer();let chunk=this.decompress(new Uint8Array(compressed_chunk),url);let ptr=await this.getPtr();this.raw_ptr=this.backend[method](ptr,chunk)}catch(e){console.error(`Failed to load the index chunk ${url}: +${e?.toString()}`)}}async loadChunk(hash){if(!this.loaded_chunks[hash]){const url=`${this.basePath}index/${hash}.pf_index`;this.loaded_chunks[hash]=this._loadGenericChunk(url,"load_index_chunk")}return await this.loaded_chunks[hash]}async loadFilterChunk(hash){if(!this.loaded_filters[hash]){const url=`${this.basePath}filter/${hash}.pf_filter`;this.loaded_filters[hash]=this._loadGenericChunk(url,"load_filter_chunk")}return await this.loaded_filters[hash]}async _loadFragment(hash){let compressed_resp=await fetch(`${this.basePath}fragment/${hash}.pf_fragment`);let compressed_fragment=await compressed_resp.arrayBuffer();let fragment=this.decompress(new Uint8Array(compressed_fragment),`Fragment ${hash}`);return JSON.parse(new TextDecoder().decode(fragment))}async loadFragment(hash,weighted_locations=[],search_term){if(!this.loaded_fragments[hash]){this.loaded_fragments[hash]=this._loadFragment(hash)}let fragment=await this.loaded_fragments[hash];fragment.weighted_locations=weighted_locations;fragment.locations=weighted_locations.map((l)=>l.location);if(!fragment.raw_content){fragment.raw_content=fragment.content.replace(//g,">");fragment.content=fragment.content.replace(/\u200B/g,"")}if(!fragment.raw_url){fragment.raw_url=fragment.url}fragment.url=this.processedUrl(fragment.raw_url,search_term);const excerpt_start=calculate_excerpt_region(weighted_locations,this.excerptLength);fragment.excerpt=build_excerpt(fragment.raw_content,excerpt_start,this.excerptLength,fragment.locations);fragment.sub_results=calculate_sub_results(fragment,this.excerptLength);return fragment}fullUrl(raw){if(/^(https?:)?\/\//.test(raw)){return raw}return`${this.baseUrl}/${raw}`.replace(/\/+/g,"/").replace(/^(https?:\/)/,"$1/")}processedUrl(url,search_term){const normalized=this.fullUrl(url);if(this.highlightParam===null){return normalized}let individual_terms=search_term.split(/\s+/);try{let processed=new URL(normalized);for(const term of individual_terms){processed.searchParams.append(this.highlightParam,term)}return processed.toString()}catch(e){try{let processed=new URL(`https://example.com${normalized}`);for(const term of individual_terms){processed.searchParams.append(this.highlightParam,term)}return processed.toString().replace(/^https:\/\/example\.com/,"")}catch(e2){return normalized}}}async getPtr(){while(this.raw_ptr===null){await asyncSleep(50)}if(!this.raw_ptr){console.error("Pagefind: WASM Error (No pointer)");throw new Error("Pagefind: WASM Error (No pointer)")}return this.raw_ptr}parseFilters(str){let output={};if(!str)return output;for(const block of str.split("__PF_FILTER_DELIM__")){let[filter,values]=block.split(/:(.*)$/);output[filter]={};if(values){for(const valueBlock of values.split("__PF_VALUE_DELIM__")){if(valueBlock){let extract=valueBlock.match(/^(.*):(\d+)$/);if(extract){let[,value,count]=extract;output[filter][value]=parseInt(count)??count}}}}}return output}stringifyFilters(obj={}){return JSON.stringify(obj)}stringifySorts(obj={}){let sorts=Object.entries(obj);for(let[sort,direction]of sorts){if(sorts.length>1){console.warn(`Pagefind was provided multiple sort options in this search, but can only operate on one. Using the ${sort} sort.`)}if(direction!=="asc"&&direction!=="desc"){console.warn(`Pagefind was provided a sort with unknown direction ${direction}. Supported: [asc, desc]`)}return`${sort}:${direction}`}return``}async filters(){let ptr=await this.getPtr();let filters2=this.backend.request_all_filter_indexes(ptr);let filter_chunks=filters2.split(" ").filter((v)=>v).map((chunk)=>this.loadFilterChunk(chunk));await Promise.all([...filter_chunks]);ptr=await this.getPtr();let results=this.backend.filters(ptr);return this.parseFilters(results)}async preload(term,options2={}){await this.search(term,{...options2,preload:true})}async search(term,options2={}){options2={verbose:false,filters:{},sort:{},...options2};const log=(str)=>{if(options2.verbose)console.log(str)};log(`Starting search on ${this.basePath}`);let start=Date.now();let ptr=await this.getPtr();let filter_only=term===null;term=term??"";let exact_search=/^\s*".+"\s*$/.test(term);if(exact_search){log(`Running an exact search`)}term=term.toLowerCase().trim().replace(/[\.`~!@#\$%\^&\*\(\)\{\}\[\]\\\|:;'",<>\/\?\-]/g,"").replace(/\s{2,}/g," ").trim();log(`Normalized search term to ${term}`);if(!term?.length&&!filter_only){return{results:[],unfilteredResultCount:0,filters:{},totalFilters:{},timings:{preload:Date.now()-start,search:Date.now()-start,total:Date.now()-start}}}let sort_list=this.stringifySorts(options2.sort);log(`Stringified sort to ${sort_list}`);const filter_list=this.stringifyFilters(options2.filters);log(`Stringified filters to ${filter_list}`);let index_resp=this.backend.request_indexes(ptr,term);let filter_resp=this.backend.request_filter_indexes(ptr,filter_list);let chunks=index_resp.split(" ").filter((v)=>v).map((chunk)=>this.loadChunk(chunk));let filter_chunks=filter_resp.split(" ").filter((v)=>v).map((chunk)=>this.loadFilterChunk(chunk));await Promise.all([...chunks,...filter_chunks]);log(`Loaded necessary chunks to run search`);if(options2.preload){log(`Preload \u2014 bailing out of search operation now.`);return null}ptr=await this.getPtr();let searchStart=Date.now();let result=this.backend.search(ptr,term,filter_list,sort_list,exact_search);log(`Got the raw search result: ${result}`);let[unfilteredResultCount,all_results,filters2,totalFilters]=result.split(/:([^:]*):(.*)__PF_UNFILTERED_DELIM__(.*)$/);let filterObj=this.parseFilters(filters2);let totalFilterObj=this.parseFilters(totalFilters);log(`Remaining filters: ${JSON.stringify(result)}`);let results=all_results.length?all_results.split(" "):[];let resultsInterface=results.map((result2)=>{let[hash,score,all_locations]=result2.split("@");log(`Processing result: + hash:${hash} + score:${score} + locations:${all_locations}`);let weighted_locations=all_locations.length?all_locations.split(",").map((l)=>{let[weight,balanced_score,location]=l.split(">");return{weight:parseInt(weight)/24,balanced_score:parseFloat(balanced_score),location:parseInt(location)}}):[];let locations=weighted_locations.map((l)=>l.location);return{id:hash,score:parseFloat(score)*this.indexWeight,words:locations,data:async()=>await this.loadFragment(hash,weighted_locations,term)}});const searchTime=Date.now()-searchStart;const realTime=Date.now()-start;log(`Found ${results.length} result${results.length == 1 ? "" : "s"} for "${term}" in ${Date.now() - searchStart}ms (${Date.now() - start}ms realtime)`);return{results:resultsInterface,unfilteredResultCount:parseInt(unfilteredResultCount),filters:filterObj,totalFilters:totalFilterObj,timings:{preload:realTime-searchTime,search:searchTime,total:realTime}}}};var Pagefind=class{constructor(options2={}){this.backend=wasm_bindgen;this.primaryLanguage="unknown";this.searchID=0;this.primary=new PagefindInstance({...options2,primary:true});this.instances=[this.primary];this.init(options2?.language)}async options(options2){await this.primary.options(options2)}async init(overrideLanguage){if(document?.querySelector){const langCode=document.querySelector("html")?.getAttribute("lang")||"unknown";this.primaryLanguage=langCode.toLocaleLowerCase()}await this.primary.init(overrideLanguage?overrideLanguage:this.primaryLanguage,{load_wasm:true})}async mergeIndex(indexPath,options2={}){if(this.primary.basePath.startsWith(indexPath)){console.warn(`Skipping mergeIndex ${indexPath} that appears to be the same as the primary index (${this.primary.basePath})`);return}let newInstance=new PagefindInstance({primary:false,basePath:indexPath});this.instances.push(newInstance);while(this.primary.wasm===null){await asyncSleep(50)}await newInstance.init(options2.language||this.primaryLanguage,{load_wasm:false});delete options2["language"];await newInstance.options(options2)}mergeFilters(filters2){const merged={};for(const searchFilter of filters2){for(const[filterKey,values]of Object.entries(searchFilter)){if(!merged[filterKey]){merged[filterKey]=values;continue}else{const filter=merged[filterKey];for(const[valueKey,count]of Object.entries(values)){filter[valueKey]=(filter[valueKey]||0)+count}}}}return merged}async filters(){let filters2=await Promise.all(this.instances.map((i2)=>i2.filters()));return this.mergeFilters(filters2)}async preload(term,options2={}){await Promise.all(this.instances.map((i2)=>i2.preload(term,options2)))}async debouncedSearch(term,options2,debounceTimeoutMs){const thisSearchID=++this.searchID;this.preload(term,options2);await asyncSleep(debounceTimeoutMs);if(thisSearchID!==this.searchID){return null}const searchResult=await this.search(term,options2);if(thisSearchID!==this.searchID){return null}return searchResult}async search(term,options2={}){let search2=await Promise.all(this.instances.map((i2)=>i2.search(term,options2)));const filters2=this.mergeFilters(search2.map((s)=>s.filters));const totalFilters=this.mergeFilters(search2.map((s)=>s.totalFilters));const results=search2.map((s)=>s.results).flat().sort((a,b)=>b.score-a.score);const timings=search2.map((s)=>s.timings);const unfilteredResultCount=search2.reduce((sum,s)=>sum+s.unfilteredResultCount,0);return{results,unfilteredResultCount,filters:filters2,totalFilters,timings}}};var pagefind=void 0;var initial_options=void 0;var init_pagefind=()=>{if(!pagefind){pagefind=new Pagefind(initial_options??{})}};var options=async(new_options)=>{if(pagefind){await pagefind.options(new_options)}else{initial_options=new_options}};var init=async()=>{init_pagefind()};var destroy=async()=>{pagefind=void 0;initial_options=void 0};var mergeIndex=async(indexPath,options2)=>{init_pagefind();return await pagefind.mergeIndex(indexPath,options2)};var search=async(term,options2)=>{init_pagefind();return await pagefind.search(term,options2)};var debouncedSearch=async(term,options2,debounceTimeoutMs=300)=>{init_pagefind();return await pagefind.debouncedSearch(term,options2,debounceTimeoutMs)};var preload=async(term,options2)=>{init_pagefind();return await pagefind.preload(term,options2)};var filters=async()=>{init_pagefind();return await pagefind.filters()} \ No newline at end of file diff --git a/static/js/pagefind.search.js b/static/js/pagefind.search.js new file mode 100644 index 00000000..3a61dc38 --- /dev/null +++ b/static/js/pagefind.search.js @@ -0,0 +1,247 @@ +window.onload = function () { + if (document.body.contains(document.goSearch)) { + options({ + basePath: "/js/" + }); + init(); + document.goSearch.onsubmit = function () { return goSearchNow() }; + + /* + Source: + - https://github.com/nextapps-de/flexsearch#index-documents-field-search + - https://raw.githack.com/nextapps-de/flexsearch/master/demo/autocomplete.html + - http://elasticlunr.com/ + - https://pagefind.app/ + - https://github.com/getzola/zola/blob/master/docs/static/search.js + - https://github.com/aaranxu/adidoks/blob/main/static/js/search.js + */ + (function () { + function inputFocus(e) { + + if (e.keyCode === 191//forward slash + && document.activeElement.tagName !== "INPUT" + && document.activeElement.tagName !== "TEXTAREA") { + e.preventDefault(); + searchinput.focus(); + suggestions.classList.remove('d-none'); + } + + if (e.keyCode === 27) {//escape + searchinput.blur(); + suggestions.classList.add('d-none'); + closeAllLists(); + } + + const focusableSuggestions = suggestions.querySelectorAll('a'); + if (suggestions.classList.contains('d-none') + || focusableSuggestions.length === 0) { + return; + } + const focusable = [...focusableSuggestions]; + const index = focusable.indexOf(document.activeElement); + + let nextIndex = 0; + + if (e.keyCode === 38) {//up arrow + e.preventDefault(); + nextIndex = index > 0 ? index - 1 : 0; + focusableSuggestions[nextIndex].focus(); + } + else if (e.keyCode === 40) {//down arrow + e.preventDefault(); + nextIndex = index + 1 < focusable.length ? index + 1 : index; + focusableSuggestions[nextIndex].focus(); + } + + } + + var suggestions = document.getElementById("suggestions"); + var searchinput = document.getElementById("searchinput"); + document.addEventListener("keydown", inputFocus); + document.addEventListener("click", function (event) { suggestions.contains(event.target) || suggestions.classList.add("d-none") }); + + var lang = document.documentElement.getAttribute("lang"); + var langOnly = lang.substring(0, 2); + var baseUrl = document.querySelector("meta[name='base']").getAttribute("content"); + if (baseUrl.slice(-1) == "/") { + baseUrl = baseUrl.slice(0, -1); + } + + var index; + searchinput.addEventListener('input', show_results, true); + suggestions.addEventListener('click', accept_suggestion, true); + + + // in page results when press enter or click search icon from search box + function closeSearchNow() { + const main = document.querySelector("main"); + main.innerHTML = window.main + } + + function goSearchNow() { + const main = document.querySelector("main"); + if (!window.main) { + window.main = main.innerHTML + }; + var results = document.getElementById("suggestions");// suggestions div generated by search box + + var ResultsClone = results.cloneNode(true);// make a clone of the results, so that we can alter it + ResultsClone.id = "results";// alter the id of our clone, so that we can apply different css style + + var headerDiv = document.createElement("div");// create a div element + + var headerContent = '

    '.concat(document.getElementById("searchinput").value, "

    ");// header to use at top of results page + + headerDiv.innerHTML = headerContent;// document element div (headerDiv), set the inner contents to our header html (headerContent) + + ResultsClone.insertBefore(headerDiv, ResultsClone.firstChild);//insert our header div at the top of the page + + main.innerHTML = ResultsClone.outerHTML;//display ResultsClone.outerHTML as the page + results.innerHTML = "";// clear the suggestions div popup + document.getElementById("searchinput").value = "";// clear the search input box + document.body.contains(document.closeSearch) && (document.closeSearch.onsubmit = function () { closeSearchNow() }) + return false + } + + /* Close search suggestion popup list */ + function closeAllLists(elmnt) { + var suggestions = document.getElementById("suggestions"); + while (suggestions.firstChild) { + suggestions.removeChild(suggestions.firstChild); + } + } + + + + async function show_results() { + var value = this.value.trim(); + + var searchResults = await search(value); + + var entry, childs = suggestions.childNodes; + var i = 0, len = searchResults.results.length; + var items = value.split(/\s+/); + suggestions.classList.remove('d-none'); + + for (const result of searchResults.results) { + const data = await result.data(); + if (data.content !== '') { + entry = document.createElement('div'); + + entry.innerHTML = ''; + + a = entry.querySelector('a'), + t = entry.querySelector('span:first-child'), + d = entry.querySelector('span:nth-child(2)'); + a.href = data.url; + t.textContent = data.meta.title; + d.innerHTML = sanitise(data.excerpt); + + suggestions.appendChild(entry); + } + } + + while (childs.length > len) { + suggestions.removeChild(childs[i]) + } + } + + function sanitise(str) { + return str.replace(/\{\{.*?\}\}|—|<(?!\/?mark\b).*?>|<.*?>/g, ''); + } + + + function accept_suggestion() { + + while (suggestions.lastChild) { + + suggestions.removeChild(suggestions.lastChild); + } + + return false; + } + // Get the string bytes from binary + function getByteByBinary(binaryCode) { + // Binary system, starts with `0b` in ES6 + // Octal number system, starts with `0` in ES5 and starts with `0o` in ES6 + // Hexadecimal, starts with `0x` in both ES5 and ES6 + var byteLengthDatas = [0, 1, 2, 3, 4]; + var len = byteLengthDatas[Math.ceil(binaryCode.length / 8)]; + return len; + } + + // Get the string bytes from hexadecimal + function getByteByHex(hexCode) { + return getByteByBinary(parseInt(hexCode, 16).toString(2)); + } + // Get substring by bytes + // If using JavaScript inline substring method, it will return error codes + // Source: https://www.52pojie.cn/thread-1059814-1-1.html + function substringByByte(str, maxLength) { + var result = ""; + var flag = false; + var len = 0; + var length = 0; + var length2 = 0; + for (var i = 0; i < str.length; i++) { + var code = str.codePointAt(i).toString(16); + if (code.length > 4) { + i++; + if ((i + 1) < str.length) { + flag = str.codePointAt(i + 1).toString(16) == "200d"; + } + } + if (flag) { + len += getByteByHex(code); + if (i == str.length - 1) { + length += len; + if (length <= maxLength) { + result += str.substr(length2, i - length2 + 1); + } else { + break + } + } + } else { + if (len != 0) { + length += len; + length += getByteByHex(code); + if (length <= maxLength) { + result += str.substr(length2, i - length2 + 1); + length2 = i + 1; + } else { + break + } + len = 0; + continue; + } + length += getByteByHex(code); + if (length <= maxLength) { + if (code.length <= 4) { + result += str[i] + } else { + result += str[i - 1] + str[i] + } + length2 = i + 1; + } else { + break + } + } + } + return result; + } + /* Taken from mdbook + // The strategy is as follows: + // First, assign a value to each word in the document: + // Words that correspond to search terms (stemmer aware): 40 + // Normal words: 2 + // First word in a sentence: 8 + // Then use a sliding window with a constant number of words and count the + // sum of the values of the words within the window. Then use the window that got the + // maximum sum. If there are multiple maximas, then get the last one. + // Enclose the terms in . + */ + + document.goSearch.onsubmit = function () { return goSearchNow() }; + }()); + } +}; \ No newline at end of file diff --git a/static/js/search.js b/static/js/search.js index 30cc2782..caf5817f 100644 --- a/static/js/search.js +++ b/static/js/search.js @@ -344,10 +344,10 @@ window.onload = function() { // Check the string is ascii characters or not var re = /^[\x00-\xff]+$/ if (word[1] !== TERM_WEIGHT && word[0].length >= 12 && !re.test(word[0])) { - // If the string's length is too long, it maybe a Chinese/Japance/Korean article + // If the string's length is too long, it maybe a Chinese/Japanese/Korean article // if using substring method directly, it may occur error codes on emoji chars - var strBefor = body.substring(word[2], startIndex); - var strAfter = substringByByte(strBefor, 12); + var strBefore = body.substring(word[2], startIndex); + var strAfter = substringByByte(strBefore, 12); teaser.push(strAfter); } else { teaser.push(body.substring(word[2], startIndex)); diff --git a/static/js/searchChange.js b/static/js/searchChange.js new file mode 100644 index 00000000..afe32143 --- /dev/null +++ b/static/js/searchChange.js @@ -0,0 +1,69 @@ +const fs = require('fs'); +const path = require("path"); +const replace = require('replace-in-file'); + +// Path for config.toml +const configTomlPath = path.join(__dirname, "../../config.toml"); + +async function main() { + // Process arguments to determine the search mode + const args = process.argv.slice(2); // Remove the first two default arguments + + if (args.length > 0) { + // Check the search mode based on the argument provided + switch (args[0]) { + case '--pagefind': + console.log('Pagefind search mode activated.'); + await swapToPagefind(); + break; + case '--elasticlunr': + console.log('Elasticlunr search mode activated.'); + await swapToElasticlunr(); + break; + default: + console.log('Unknown search mode. Please use --pagefind or --elasticlunr.'); + } + } else { + console.log('No search mode specified. Please use --pagefind or --elasticlunr.'); + } +} + +main(); + +async function swapToPagefind() { + // Edit the config.toml file + replace.sync({ + files: configTomlPath, + from: /search_library = ['|"]\w+['|"]/g, + to: 'search_library = "pagefind"', + }); + replace.sync({ + files: configTomlPath, + from: /online_indexformat = ['|"]\w+['|"]/g, + to: 'online_indexformat = "fuse_json"', + }); + replace.sync({ + files: configTomlPath, + from: /index_format = ['|"]\w+['|"]/g, + to: 'index_format = "fuse_json"', + }); +} + +async function swapToElasticlunr() { + // Edit the config.toml file + replace.sync({ + files: configTomlPath, + from: /search_library = ['|"]\w+['|"]/g, + to: 'search_library = "elasticlunr"', + }); + replace.sync({ + files: configTomlPath, + from: /online_indexformat = ['|"]\w+['|"]/g, + to: 'online_indexformat = "elasticlunr_json"', + }); + replace.sync({ + files: configTomlPath, + from: /index_format = ['|"]\w+['|"]/g, + to: 'index_format = "elasticlunr_json"', + }); +} \ No newline at end of file diff --git a/static/js/wasm.en.pagefind b/static/js/wasm.en.pagefind new file mode 100644 index 0000000000000000000000000000000000000000..83cf973c263042964e13321a5f619b1159b80172 GIT binary patch literal 70887 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 pvUUb@5VqaosE@g8rF)lGKFfMmtb8P_BT3d`1 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