diff --git a/404.html b/404.html new file mode 100644 index 00000000..31a82c22 --- /dev/null +++ b/404.html @@ -0,0 +1,80 @@ + 404 | Radashi + + Skip to content

404

Page not found. Check the URL or try using the search bar.
\ No newline at end of file diff --git a/Changes-dark.svg b/Changes-dark.svg new file mode 100644 index 00000000..cf46925f --- /dev/null +++ b/Changes-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Community-dark.svg b/Community-dark.svg new file mode 100644 index 00000000..95760f9f --- /dev/null +++ b/Community-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Ethos-dark.svg b/Ethos-dark.svg new file mode 100644 index 00000000..6ae76c1e --- /dev/null +++ b/Ethos-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Github-dark.svg b/Github-dark.svg new file mode 100644 index 00000000..4a17894d --- /dev/null +++ b/Github-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Github-large.svg b/Github-large.svg new file mode 100644 index 00000000..ba93eab2 --- /dev/null +++ b/Github-large.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Install-dark.svg b/Install-dark.svg new file mode 100644 index 00000000..f6d2dbe6 --- /dev/null +++ b/Install-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/JSR-dark.svg b/JSR-dark.svg new file mode 100644 index 00000000..97e4bdb4 --- /dev/null +++ b/JSR-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Lodash-parity-dark.svg b/Lodash-parity-dark.svg new file mode 100644 index 00000000..7e669acd --- /dev/null +++ b/Lodash-parity-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Npm-dark.svg b/Npm-dark.svg new file mode 100644 index 00000000..e3272c50 --- /dev/null +++ b/Npm-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/Swup.BAW7Fnls.js b/assets/Swup.BAW7Fnls.js new file mode 100644 index 00000000..49d1370d --- /dev/null +++ b/assets/Swup.BAW7Fnls.js @@ -0,0 +1 @@ +const t=new WeakMap;function e(e,i,s,n){if(!e&&!t.has(i))return!1;const o=t.get(i)??new WeakMap;t.set(i,o);const a=o.get(s)??new Set;o.set(s,a);const r=a.has(n);return e?a.add(n):a.delete(n),r&&e}function i(t,i,s,n={}){const{signal:o,base:a=document}=n;if(o?.aborted)return;const{once:r,...l}=n,c=a instanceof Document?a.documentElement:a,h=Boolean("object"==typeof n?n.capture:n),u=n=>{const o=function(t,e){let i=t.target;if(i instanceof Text&&(i=i.parentElement),i instanceof Element&&t.currentTarget instanceof Element){const s=i.closest(e);if(s&&t.currentTarget.contains(s))return s}}(n,t);if(o){const t=Object.assign(n,{delegateTarget:o});s.call(c,t),r&&(c.removeEventListener(i,u,l),e(!1,c,s,d))}},d=JSON.stringify({selector:t,type:i,capture:h});e(!0,c,s,d)||c.addEventListener(i,u,l),o?.addEventListener("abort",(()=>{e(!1,c,s,d)}))}function s(){return s=Object.assign?Object.assign.bind():function(t){for(var e=1;eString(t).toLowerCase().replace(/[\s/_.]+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+|-+$/g,"")||e||"",o=({hash:t}={})=>window.location.pathname+window.location.search+(t?window.location.hash:""),a=(t,e={})=>{const i=s({url:t=t||o({hash:!0}),random:Math.random(),source:"swup"},e);window.history.pushState(i,"",t)},r=(t=null,e={})=>{t=t||o({hash:!0});const i=s({},window.history.state||{},{url:t,random:Math.random(),source:"swup"},e);window.history.replaceState(i,"",t)},l=(t,e,n,o)=>{const a=new AbortController;return i(t,e,n,o=s({},o,{signal:a.signal})),{destroy:()=>a.abort()}};let c=class t extends URL{constructor(e,i=document.baseURI){super(e.toString(),i),Object.setPrototypeOf(this,t.prototype)}get url(){return this.pathname+this.search}static fromElement(e){const i=e.getAttribute("href")||e.getAttribute("xlink:href")||"";return new t(i)}static fromUrl(e){return new t(e)}};class h extends Error{constructor(t,e){super(t),this.url=void 0,this.status=void 0,this.aborted=void 0,this.timedOut=void 0,this.name="FetchError",this.url=e.url,this.status=e.status,this.aborted=e.aborted||!1,this.timedOut=e.timedOut||!1}}async function u(t,e={}){var i;t=c.fromUrl(t).url;const{visit:n=this.visit}=e,o=s({},this.options.requestHeaders,e.headers),a=null!=(i=e.timeout)?i:this.options.timeout,r=new AbortController,{signal:l}=r;e=s({},e,{headers:o,signal:l});let u,d=!1,p=null;a&&a>0&&(p=setTimeout((()=>{d=!0,r.abort("timeout")}),a));try{u=await this.hooks.call("fetch:request",n,{url:t,options:e},((t,{url:e,options:i})=>fetch(e,i))),p&&clearTimeout(p)}catch(e){if(d)throw this.hooks.call("fetch:timeout",n,{url:t}),new h(`Request timed out: ${t}`,{url:t,timedOut:d});if("AbortError"===(null==e?void 0:e.name)||l.aborted)throw new h(`Request aborted: ${t}`,{url:t,aborted:!0});throw e}const{status:m,url:f}=u,g=await u.text();if(500===m)throw this.hooks.call("fetch:error",n,{status:m,response:u,url:f}),new h(`Server error: ${f}`,{status:m,url:f});if(!g)throw new h(`Empty response: ${f}`,{status:m,url:f});const{url:w}=c.fromUrl(f),v={url:w,html:g};return!n.cache.write||e.method&&"GET"!==e.method||t!==w||this.cache.set(v.url,v),v}class d{constructor(t){this.swup=void 0,this.pages=new Map,this.swup=t}get size(){return this.pages.size}get all(){const t=new Map;return this.pages.forEach(((e,i)=>{t.set(i,s({},e))})),t}has(t){return this.pages.has(this.resolve(t))}get(t){const e=this.pages.get(this.resolve(t));return e?s({},e):e}set(t,e){e=s({},e,{url:t=this.resolve(t)}),this.pages.set(t,e),this.swup.hooks.callSync("cache:set",void 0,{page:e})}update(t,e){t=this.resolve(t);const i=s({},this.get(t),e,{url:t});this.pages.set(t,i)}delete(t){this.pages.delete(this.resolve(t))}clear(){this.pages.clear(),this.swup.hooks.callSync("cache:clear",void 0,void 0)}prune(t){this.pages.forEach(((e,i)=>{t(i,e)&&this.delete(i)}))}resolve(t){const{url:e}=c.fromUrl(t);return this.swup.resolveUrl(e)}}const p=(t,e=document)=>e.querySelector(t),m=(t,e=document)=>Array.from(e.querySelectorAll(t)),f=()=>new Promise((t=>{requestAnimationFrame((()=>{requestAnimationFrame((()=>{t()}))}))}));function g(t){return!!t&&("object"==typeof t||"function"==typeof t)&&"function"==typeof t.then}function w(t,e=[]){return new Promise(((i,s)=>{const n=t(...e);g(n)?n.then(i,s):i(n)}))}function v(t,e){const i=null==t?void 0:t.closest(`[${e}]`);return null!=i&&i.hasAttribute(e)?(null==i?void 0:i.getAttribute(e))||!0:void 0}class y{constructor(t){this.swup=void 0,this.swupClasses=["to-","is-changing","is-rendering","is-popstate","is-animating","is-leaving"],this.swup=t}get selectors(){const{scope:t}=this.swup.visit.animation;return"containers"===t?this.swup.visit.containers:"html"===t?["html"]:Array.isArray(t)?t:[]}get selector(){return this.selectors.join(",")}get targets(){return this.selector.trim()?m(this.selector):[]}add(...t){this.targets.forEach((e=>e.classList.add(...t)))}remove(...t){this.targets.forEach((e=>e.classList.remove(...t)))}clear(){this.targets.forEach((t=>{const e=t.className.split(" ").filter((t=>this.isSwupClass(t)));t.classList.remove(...e)}))}isSwupClass(t){return this.swupClasses.some((e=>t.startsWith(e)))}}class k{constructor(t,e){this.id=void 0,this.state=void 0,this.from=void 0,this.to=void 0,this.containers=void 0,this.animation=void 0,this.trigger=void 0,this.cache=void 0,this.history=void 0,this.scroll=void 0;const{to:i,from:s,hash:n,el:o,event:a}=e;this.id=Math.random(),this.state=1,this.from={url:null!=s?s:t.location.url,hash:t.location.hash},this.to={url:i,hash:n},this.containers=t.options.containers,this.animation={animate:!0,wait:!1,name:void 0,native:t.options.native,scope:t.options.animationScope,selector:t.options.animationSelector},this.trigger={el:o,event:a},this.cache={read:t.options.cache,write:t.options.cache},this.history={action:"push",popstate:!1,direction:void 0},this.scroll={reset:!0,target:void 0}}advance(t){this.state=7}}function b(t){return new k(this,t)}class S{constructor(t){this.swup=void 0,this.registry=new Map,this.hooks=["animation:out:start","animation:out:await","animation:out:end","animation:in:start","animation:in:await","animation:in:end","animation:skip","cache:clear","cache:set","content:replace","content:scroll","enable","disable","fetch:request","fetch:error","fetch:timeout","history:popstate","link:click","link:self","link:anchor","link:newtab","page:load","page:view","scroll:top","scroll:anchor","visit:start","visit:transition","visit:abort","visit:end"],this.swup=t,this.init()}init(){this.hooks.forEach((t=>this.create(t)))}create(t){this.registry.has(t)||this.registry.set(t,new Map)}exists(t){return this.registry.has(t)}get(t){const e=this.registry.get(t);if(e)return e;console.error(`Unknown hook '${t}'`)}clear(){this.registry.forEach((t=>t.clear()))}on(t,e,i={}){const n=this.get(t);if(!n)return console.warn(`Hook '${t}' not found.`),()=>{};const o=s({},i,{id:n.size+1,hook:t,handler:e});return n.set(e,o),()=>this.off(t,e)}before(t,e,i={}){return this.on(t,e,s({},i,{before:!0}))}replace(t,e,i={}){return this.on(t,e,s({},i,{replace:!0}))}once(t,e,i={}){return this.on(t,e,s({},i,{once:!0}))}off(t,e){const i=this.get(t);i&&e?i.delete(e)||console.warn(`Handler for hook '${t}' not found.`):i&&i.clear()}async call(t,e,i,s){const[n,o,a]=this.parseCallArgs(t,e,i,s),{before:r,handler:l,after:c}=this.getHandlers(t,a);await this.run(r,n,o);const[h]=await this.run(l,n,o,!0);return await this.run(c,n,o),this.dispatchDomEvent(t,n,o),h}callSync(t,e,i,s){const[n,o,a]=this.parseCallArgs(t,e,i,s),{before:r,handler:l,after:c}=this.getHandlers(t,a);this.runSync(r,n,o);const[h]=this.runSync(l,n,o,!0);return this.runSync(c,n,o),this.dispatchDomEvent(t,n,o),h}parseCallArgs(t,e,i,s){return e instanceof k||"object"!=typeof e&&"function"!=typeof i?[e,i,s]:[void 0,e,i]}async run(t,e=this.swup.visit,i,s=!1){const n=[];for(const{hook:o,handler:a,defaultHandler:r,once:l}of t)if(null==e||!e.done){l&&this.off(o,a);try{const t=await w(a,[e,i,r]);n.push(t)}catch(t){if(s)throw t;console.error(`Error in hook '${o}':`,t)}}return n}runSync(t,e=this.swup.visit,i,s=!1){const n=[];for(const{hook:o,handler:a,defaultHandler:r,once:l}of t)if(null==e||!e.done){l&&this.off(o,a);try{const t=a(e,i,r);n.push(t),g(t)&&console.warn(`Swup will not await Promises in handler for synchronous hook '${o}'.`)}catch(t){if(s)throw t;console.error(`Error in hook '${o}':`,t)}}return n}getHandlers(t,e){const i=this.get(t);if(!i)return{found:!1,before:[],handler:[],after:[],replaced:!1};const s=Array.from(i.values()),n=this.sortRegistrations,o=s.filter((({before:t,replace:e})=>t&&!e)).sort(n),a=s.filter((({replace:t})=>t)).filter((t=>!0)).sort(n),r=s.filter((({before:t,replace:e})=>!t&&!e)).sort(n),l=a.length>0;let c=[];if(e&&(c=[{id:0,hook:t,handler:e}],l)){const i=a.length-1,s=t=>{const i=a[t-1];return i?(e,n)=>i.handler(e,n,s(t-1)):e};c=[{id:0,hook:t,handler:a[i].handler,defaultHandler:s(i)}]}return{found:!0,before:o,handler:c,after:r,replaced:l}}sortRegistrations(t,e){var i,s;return(null!=(i=t.priority)?i:0)-(null!=(s=e.priority)?s:0)||t.id-e.id||0}dispatchDomEvent(t,e,i){if(null!=e&&e.done)return;const s={hook:t,args:i,visit:e||this.swup.visit};document.dispatchEvent(new CustomEvent("swup:any",{detail:s,bubbles:!0})),document.dispatchEvent(new CustomEvent(`swup:${t}`,{detail:s,bubbles:!0}))}}const E=t=>{if(t&&"#"===t.charAt(0)&&(t=t.substring(1)),!t)return null;const e=decodeURIComponent(t);let i=document.getElementById(t)||document.getElementById(e)||p(`a[name='${CSS.escape(t)}']`)||p(`a[name='${CSS.escape(e)}']`);return i||"top"!==t||(i=document.body),i},C="transition",U="animation";async function P({selector:t,elements:e}){if(!1===t&&!e)return;let i=[];if(e)i=Array.from(e);else if(t&&(i=m(t,document.body),!i.length))return void console.warn(`[swup] No elements found matching animationSelector \`${t}\``);const s=i.map((t=>function(t){const{type:e,timeout:i,propCount:s}=function(t){const e=window.getComputedStyle(t),i=$(e,`${C}Delay`),s=$(e,`${C}Duration`),n=x(i,s),o=$(e,`${U}Delay`),a=$(e,`${U}Duration`),r=x(o,a),l=Math.max(n,r),c=l>0?n>r?C:U:null;return{type:c,timeout:l,propCount:c?c===C?s.length:a.length:0}}(t);return!(!e||!i)&&new Promise((n=>{const o=`${e}end`,a=performance.now();let r=0;const l=()=>{t.removeEventListener(o,c),n()},c=e=>{e.target===t&&((performance.now()-a)/1e3=s&&l())};setTimeout((()=>{r0?await Promise.all(s):t&&console.warn(`[swup] No CSS animation duration defined on elements matching \`${t}\``)}function $(t,e){return(t[e]||"").split(", ")}function x(t,e){for(;t.lengthA(e)+A(t[i]))))}function A(t){return 1e3*parseFloat(t)}function H(t,e={},i={}){if("string"!=typeof t)throw new Error("swup.navigate() requires a URL parameter");if(this.shouldIgnoreVisit(t,{el:i.el,event:i.event}))return void window.location.assign(t);const{url:n,hash:o}=c.fromUrl(t),a=this.createVisit(s({},i,{to:n,hash:o}));this.performNavigation(a,e)}async function T(t,e={}){if(this.navigating){if(this.visit.state>=6)return t.state=2,void(this.onVisitEnd=()=>this.performNavigation(t,e));await this.hooks.call("visit:abort",this.visit,void 0),delete this.visit.to.document,this.visit.state=8}this.navigating=!0,this.visit=t;const{el:i}=t.trigger;e.referrer=e.referrer||this.location.url,!1===e.animate&&(t.animation.animate=!1),t.animation.animate||this.classes.clear();const s=e.history||v(i,"data-swup-history");"string"==typeof s&&["push","replace"].includes(s)&&(t.history.action=s);const o=e.animation||v(i,"data-swup-animation");var l,h;"string"==typeof o&&(t.animation.name=o),"object"==typeof e.cache?(t.cache.read=null!=(l=e.cache.read)?l:t.cache.read,t.cache.write=null!=(h=e.cache.write)?h:t.cache.write):void 0!==e.cache&&(t.cache={read:!!e.cache,write:!!e.cache}),delete e.cache;try{await this.hooks.call("visit:start",t,void 0),t.state=3;const i=this.hooks.call("page:load",t,{options:e},(async(t,e)=>{let i;return t.cache.read&&(i=this.cache.get(t.to.url)),e.page=i||await this.fetchPage(t.to.url,e.options),e.cache=!!i,e.page}));i.then((({html:e})=>{t.advance(5),t.to.html=e,t.to.document=(new DOMParser).parseFromString(e,"text/html")}));const s=t.to.url+t.to.hash;if(t.history.popstate||("replace"===t.history.action||t.to.url===this.location.url?r(s):(this.currentHistoryIndex++,a(s,{index:this.currentHistoryIndex}))),this.location=c.fromUrl(s),t.history.popstate&&this.classes.add("is-popstate"),t.animation.name&&this.classes.add(`to-${n(t.animation.name)}`),t.animation.wait&&await i,t.done)return;if(await this.hooks.call("visit:transition",t,void 0,(async()=>{if(!t.animation.animate)return await this.hooks.call("animation:skip",void 0),void(await this.renderPage(t,await i));t.advance(4),await this.animatePageOut(t),t.animation.native&&document.startViewTransition?await document.startViewTransition((async()=>await this.renderPage(t,await i))).finished:await this.renderPage(t,await i),await this.animatePageIn(t)})),t.done)return;await this.hooks.call("visit:end",t,void 0,(()=>this.classes.clear())),t.state=7,this.navigating=!1,this.onVisitEnd&&(this.onVisitEnd(),this.onVisitEnd=void 0)}catch(e){if(!e||null!=e&&e.aborted)return void(t.state=8);t.state=9,console.error(e),this.options.skipPopStateHandling=()=>(window.location.assign(t.to.url+t.to.hash),!0),window.history.back()}finally{delete t.to.document}}const L=async function(t){await this.hooks.call("animation:out:start",t,void 0,(()=>{this.classes.add("is-changing","is-animating","is-leaving")})),await this.hooks.call("animation:out:await",t,{skip:!1},((t,{skip:e})=>{if(!e)return this.awaitAnimations({selector:t.animation.selector})})),await this.hooks.call("animation:out:end",t,void 0)},V=function(t){var e;const i=t.to.document;if(!i)return!1;const s=(null==(e=i.querySelector("title"))?void 0:e.innerText)||"";document.title=s;const n=m('[data-swup-persist]:not([data-swup-persist=""])'),o=t.containers.map((t=>{const e=document.querySelector(t),s=i.querySelector(t);return e&&s?(e.replaceWith(s.cloneNode(!0)),!0):(e||console.warn(`[swup] Container missing in current document: ${t}`),s||console.warn(`[swup] Container missing in incoming document: ${t}`),!1)})).filter(Boolean);return n.forEach((t=>{const e=t.getAttribute("data-swup-persist"),i=p(`[data-swup-persist="${e}"]`);i&&i!==t&&i.replaceWith(t)})),o.length===t.containers.length},I=function(t){const e={behavior:"auto"},{target:i,reset:n}=t.scroll,o=null!=i?i:t.to.hash;let a=!1;return o&&(a=this.hooks.callSync("scroll:anchor",t,{hash:o,options:e},((t,{hash:e,options:i})=>{const s=this.getAnchorElement(e);return s&&s.scrollIntoView(i),!!s}))),n&&!a&&(a=this.hooks.callSync("scroll:top",t,{options:e},((t,{options:e})=>(window.scrollTo(s({top:0,left:0},e)),!0)))),a},O=async function(t){if(t.done)return;const e=this.hooks.call("animation:in:await",t,{skip:!1},((t,{skip:e})=>{if(!e)return this.awaitAnimations({selector:t.animation.selector})}));await f(),await this.hooks.call("animation:in:start",t,void 0,(()=>{this.classes.remove("is-animating")})),await e,await this.hooks.call("animation:in:end",t,void 0)},q=async function(t,e){if(t.done)return;t.advance(6);const{url:i}=e;this.isSameResolvedUrl(o(),i)||(r(i),this.location=c.fromUrl(i),t.to.url=this.location.url,t.to.hash=this.location.hash),await this.hooks.call("content:replace",t,{page:e},((t,{})=>{if(this.classes.remove("is-leaving"),t.animation.animate&&this.classes.add("is-rendering"),!this.replaceContent(t))throw new Error("[swup] Container mismatch, aborting");t.animation.animate&&(this.classes.add("is-changing","is-animating","is-rendering"),t.animation.name&&this.classes.add(`to-${n(t.animation.name)}`))})),await this.hooks.call("content:scroll",t,void 0,(()=>this.scrollToContent(t))),await this.hooks.call("page:view",t,{url:this.location.url,title:document.title})},R=function(t){var e;if(e=t,Boolean(null==e?void 0:e.isSwupPlugin)){if(t.swup=this,!t._checkRequirements||t._checkRequirements())return t._beforeMount&&t._beforeMount(),t.mount(),this.plugins.push(t),this.plugins}else console.error("Not a swup plugin instance",t)};function M(t){const e=this.findPlugin(t);if(e)return e.unmount(),e._afterUnmount&&e._afterUnmount(),this.plugins=this.plugins.filter((t=>t!==e)),this.plugins;console.error("No such plugin",e)}function N(t){return this.plugins.find((e=>e===t||e.name===t||e.name===`Swup${String(t)}`))}function D(t){if("function"!=typeof this.options.resolveUrl)return console.warn("[swup] options.resolveUrl expects a callback function."),t;const e=this.options.resolveUrl(t);return e&&"string"==typeof e?e.startsWith("//")||e.startsWith("http")?(console.warn("[swup] options.resolveUrl needs to return a relative url"),t):e:(console.warn("[swup] options.resolveUrl needs to return a url"),t)}function W(t,e){return this.resolveUrl(t)===this.resolveUrl(e)}const _={animateHistoryBrowsing:!1,animationSelector:'[class*="transition-"]',animationScope:"html",cache:!0,containers:["#swup"],ignoreVisit:(t,{el:e}={})=>!(null==e||!e.closest("[data-no-swup]")),linkSelector:"a[href]",linkToSelf:"scroll",native:!1,plugins:[],resolveUrl:t=>t,requestHeaders:{"X-Requested-With":"swup",Accept:"text/html, application/xhtml+xml"},skipPopStateHandling:t=>{var e;return"swup"!==(null==(e=t.state)?void 0:e.source)},timeout:0};const j=Object.freeze(Object.defineProperty({__proto__:null,default:class{get currentPageUrl(){return this.location.url}constructor(t={}){var e,i;this.version="4.7.0",this.options=void 0,this.defaults=_,this.plugins=[],this.visit=void 0,this.cache=void 0,this.hooks=void 0,this.classes=void 0,this.location=c.fromUrl(window.location.href),this.currentHistoryIndex=void 0,this.clickDelegate=void 0,this.navigating=!1,this.onVisitEnd=void 0,this.use=R,this.unuse=M,this.findPlugin=N,this.log=()=>{},this.navigate=H,this.performNavigation=T,this.createVisit=b,this.delegateEvent=l,this.fetchPage=u,this.awaitAnimations=P,this.renderPage=q,this.replaceContent=V,this.animatePageIn=O,this.animatePageOut=L,this.scrollToContent=I,this.getAnchorElement=E,this.getCurrentUrl=o,this.resolveUrl=D,this.isSameResolvedUrl=W,this.options=s({},this.defaults,t),this.handleLinkClick=this.handleLinkClick.bind(this),this.handlePopState=this.handlePopState.bind(this),this.cache=new d(this),this.classes=new y(this),this.hooks=new S(this),this.visit=this.createVisit({to:""}),this.currentHistoryIndex=null!=(e=null==(i=window.history.state)?void 0:i.index)?e:1,this.enable()}async enable(){var t;const{linkSelector:e}=this.options;this.clickDelegate=this.delegateEvent(e,"click",this.handleLinkClick),window.addEventListener("popstate",this.handlePopState),this.options.animateHistoryBrowsing&&(window.history.scrollRestoration="manual"),this.options.native=this.options.native&&!!document.startViewTransition,this.options.plugins.forEach((t=>this.use(t))),"swup"!==(null==(t=window.history.state)?void 0:t.source)&&r(null,{index:this.currentHistoryIndex}),await f(),await this.hooks.call("enable",void 0,void 0,(()=>{const t=document.documentElement;t.classList.add("swup-enabled"),t.classList.toggle("swup-native",this.options.native)}))}async destroy(){this.clickDelegate.destroy(),window.removeEventListener("popstate",this.handlePopState),this.cache.clear(),this.options.plugins.forEach((t=>this.unuse(t))),await this.hooks.call("disable",void 0,void 0,(()=>{const t=document.documentElement;t.classList.remove("swup-enabled"),t.classList.remove("swup-native")})),this.hooks.clear()}shouldIgnoreVisit(t,{el:e,event:i}={}){const{origin:s,url:n,hash:o}=c.fromUrl(t);return s!==window.location.origin||!(!e||!this.triggerWillOpenNewWindow(e))||!!this.options.ignoreVisit(n+o,{el:e,event:i})}handleLinkClick(t){const e=t.delegateTarget,{href:i,url:s,hash:n}=c.fromElement(e);if(this.shouldIgnoreVisit(i,{el:e,event:t}))return;if(this.navigating&&s===this.visit.to.url)return void t.preventDefault();const o=this.createVisit({to:s,hash:n,el:e,event:t});t.metaKey||t.ctrlKey||t.shiftKey||t.altKey?this.hooks.callSync("link:newtab",o,{href:i}):0===t.button&&this.hooks.callSync("link:click",o,{el:e,event:t},(()=>{var e;const i=null!=(e=o.from.url)?e:"";t.preventDefault(),s&&s!==i?this.isSameResolvedUrl(s,i)||this.performNavigation(o):n?this.hooks.callSync("link:anchor",o,{hash:n},(()=>{r(s+n),this.scrollToContent(o)})):this.hooks.callSync("link:self",o,void 0,(()=>{"navigate"===this.options.linkToSelf?this.performNavigation(o):(r(s),this.scrollToContent(o))}))}))}handlePopState(t){var e,i,s,n;const a=null!=(e=null==(i=t.state)?void 0:i.url)?e:window.location.href;if(this.options.skipPopStateHandling(t))return;if(this.isSameResolvedUrl(o(),this.location.url))return;const{url:r,hash:l}=c.fromUrl(a),h=this.createVisit({to:r,hash:l,event:t});h.history.popstate=!0;const u=null!=(s=null==(n=t.state)?void 0:n.index)?s:0;u&&u!==this.currentHistoryIndex&&(h.history.direction=u-this.currentHistoryIndex>0?"forwards":"backwards",this.currentHistoryIndex=u),h.animation.animate=!1,h.scroll.reset=!1,h.scroll.target=!1,this.options.animateHistoryBrowsing&&(h.animation.animate=!0,h.scroll.reset=!0),this.hooks.callSync("history:popstate",h,{event:t},(()=>{this.performNavigation(h)}))}triggerWillOpenNewWindow(t){return!!t.matches('[download], [target="_blank"]')}}},Symbol.toStringTag,{value:"Module"}));export{j as S,c as l,m,o as n,f as w}; diff --git a/assets/SwupA11yPlugin.BwOJ-1de.js b/assets/SwupA11yPlugin.BwOJ-1de.js new file mode 100644 index 00000000..0e699e8b --- /dev/null +++ b/assets/SwupA11yPlugin.BwOJ-1de.js @@ -0,0 +1 @@ +import{l as t,w as e}from"./Swup.BAW7Fnls.js";import{e as n}from"./index.modern.CtKZhHHv.js";function i(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var o,s={exports:{}};o=s,function(t){function e(t){for(var e in t=t||{},this.settings={level:"polite",parent:"body",idPrefix:"live-region-",delay:0},t)t.hasOwnProperty(e)&&(this.settings[e]=t[e]);this.settings.parent=document.querySelector(this.settings.parent)}e.prototype.say=function(t,e){var n=this.settings.parent.querySelector('[id^="'+this.settings.idPrefix+'"]')||!1;n&&this.settings.parent.removeChild(n),e=e||this.settings.delay,this.currentRegion=document.createElement("span"),this.currentRegion.id=this.settings.idPrefix+Math.floor(1e4*Math.random());var i="assertive"!==this.settings.level?"status":"alert";return this.currentRegion.setAttribute("aria-live",this.settings.level),this.currentRegion.setAttribute("role",i),this.currentRegion.setAttribute("style","clip: rect(1px, 1px, 1px, 1px); height: 1px; overflow: hidden; position: absolute; white-space: nowrap; width: 1px"),this.settings.parent.appendChild(this.currentRegion),window.setTimeout(function(){this.currentRegion.textContent=t}.bind(this),e),this},o.exports=e}();const r=i(s.exports);function a(){return a=Object.assign?Object.assign.bind():function(t){for(var e=1;e=4"},this.defaults={contentSelector:"main",headingSelector:"h1, h2, [role=heading]",respectReducedMotion:!1,autofocus:!1,announcements:{visit:"Navigated to: {title}",url:"New page at {url}"}},this.options=void 0,this.liveRegion=void 0,this.announce=t=>{this.liveRegion.say(t)},t.announcements=a({},this.defaults.announcements,{visit:null!=(e=t.announcementTemplate)?e:String(this.defaults.announcements.visit),url:null!=(n=t.urlTemplate)?n:String(this.defaults.announcements.url)},t.announcements),this.options=a({},this.defaults,t),this.liveRegion=new r}mount(){this.swup.hooks.create("content:announce"),this.swup.hooks.create("content:focus"),this.before("visit:start",this.prepareVisit),this.on("visit:start",this.markAsBusy),this.on("visit:end",this.unmarkAsBusy),this.on("content:replace",this.prepareAnnouncement),this.on("content:replace",this.handleNewPageContent),this.options.respectReducedMotion&&(this.before("visit:start",this.disableTransitionAnimations),this.before("visit:start",this.disableScrollAnimations),this.before("link:self",this.disableScrollAnimations),this.before("link:anchor",this.disableScrollAnimations)),this.swup.announce=this.announce}unmount(){this.swup.announce=void 0}markAsBusy(){document.documentElement.setAttribute("aria-busy","true")}unmarkAsBusy(){document.documentElement.removeAttribute("aria-busy")}prepareVisit(t){t.a11y={announce:void 0,focus:this.options.contentSelector}}prepareAnnouncement(e){if(void 0!==e.a11y.announce)return;const{contentSelector:n,headingSelector:i,announcements:o}=this.options,{href:s,url:r,pathname:a}=t.fromUrl(window.location.href),u=o[document.documentElement.lang||"*"]||o["*"]||o;if("object"!=typeof u)return;const c=document.querySelector(`${n} ${i}`);let l=(null==c?void 0:c.getAttribute("aria-label"))||(null==c?void 0:c.textContent);l=l||document.title||this.parseTemplate(u.url,{href:s,url:r,path:a});const h=this.parseTemplate(u.visit,{title:l,href:s,url:r,path:a});e.a11y.announce=h}parseTemplate(t,e){return Object.keys(e).reduce(((t,n)=>t.replace(`{${n}}`,e[n]||"")),t||"")}handleNewPageContent(){var t=this;e().then((async function(){t.swup.hooks.call("content:announce",void 0,void 0,(e=>{t.announcePageName(e)})),t.swup.hooks.call("content:focus",void 0,void 0,(e=>{t.focusPageContent(e)}))}))}announcePageName(t){t.a11y.announce&&this.liveRegion.say(t.a11y.announce)}async focusPageContent(t){if(!t.a11y.focus)return;if(this.options.autofocus){const e=this.getAutofocusElement();if(e&&e!==document.activeElement)return void this.swup.hooks.once("visit:end",(n=>{n.id===t.id&&e.focus()}))}const e=document.querySelector(t.a11y.focus);e instanceof HTMLElement&&(this.needsTabindex(e)&&e.setAttribute("tabindex","-1"),e.focus({preventScroll:!0}))}getAutofocusElement(){const t=document.querySelector("body [autofocus]");if(t&&!t.closest('inert, [aria-disabled], [aria-hidden="true"]'))return t}disableTransitionAnimations(t){t.animation.animate=t.animation.animate&&this.shouldAnimate()}disableScrollAnimations(t){t.scroll.animate=t.scroll.animate&&this.shouldAnimate()}shouldAnimate(){return!window.matchMedia("(prefers-reduced-motion: reduce)").matches}needsTabindex(t){return!t.matches("a, button, input, textarea, select, details, [tabindex]")}}export{u as default}; diff --git a/assets/SwupBodyClassPlugin.B8ok040w.js b/assets/SwupBodyClassPlugin.B8ok040w.js new file mode 100644 index 00000000..b68a994b --- /dev/null +++ b/assets/SwupBodyClassPlugin.B8ok040w.js @@ -0,0 +1 @@ +import{e as s}from"./index.modern.CtKZhHHv.js";function t(){return t=Object.assign?Object.assign.bind():function(s){for(var t=1;t=4.6"},this.defaults={prefix:""},this.options=void 0,this.updateBodyClass=s=>{this.updateClassNames(document.body,s.to.document.body)},this.options=t({},this.defaults,s)}mount(){this.on("content:replace",this.updateBodyClass)}updateClassNames(s,t){const i=[...s.classList].filter((s=>this.isValidClassName(s))),a=[...t.classList].filter((s=>this.isValidClassName(s)));s.classList.remove(...i),s.classList.add(...a)}isValidClassName(s){return s&&s.startsWith(this.options.prefix)}}export{i as default}; diff --git a/assets/SwupHeadPlugin.6Q8td7LP.js b/assets/SwupHeadPlugin.6Q8td7LP.js new file mode 100644 index 00000000..c3bce493 --- /dev/null +++ b/assets/SwupHeadPlugin.6Q8td7LP.js @@ -0,0 +1 @@ +import{e}from"./index.modern.CtKZhHHv.js";function t(){return t=Object.assign?Object.assign.bind():function(e){for(var t=1;t=4.6"},this.defaults={persistTags:!1,persistAssets:!1,awaitAssets:!1,timeout:3e3},this.options=void 0,this.updateHead=async function(e,{page:{}}){const t=e.to.document,{removed:i,added:a}=function(e,t,{shouldPersist:r=(()=>!1)}={}){const o=Array.from(e.children),i=Array.from(t.children),a=(l=o,i.reduce(((e,t,s)=>(l.some((e=>n(t,e)))||e.push({el:t,index:s}),e)),[]));var l;const u=function(e,t){return e.reduce(((e,s)=>(t.some((e=>n(s,e)))||e.push({el:s}),e)),[])}(o,i);return u.reverse().filter((({el:e})=>s(e))).filter((({el:e})=>!r(e))).forEach((({el:t})=>e.removeChild(t))),a.filter((({el:e})=>s(e))).forEach((({el:t,index:s=0})=>{e.insertBefore(t.cloneNode(!0),e.children[s+1]||null)})),{removed:u.map((({el:e})=>e)),added:a.map((({el:e})=>e))}}(document.head,t.head,{shouldPersist:e=>o.isPersistentTag(e)});o.swup.log(`Removed ${i.length} / added ${a.length} tags in head`);const l=(u=document.documentElement).lang!==(d=t.documentElement).lang?(u.lang=d.lang,u.lang):null;var u,d;if(l&&o.swup.log(`Updated lang attribute: ${l}`),o.options.awaitAssets){const e=function(e,t=0){return e.filter(r).map((e=>function(e,t=0){const s=t=>{(({href:e})=>Array.from(document.styleSheets).map((({href:e})=>e)).includes(e))(e)?t():setTimeout((()=>s(t)),10)};return new Promise((e=>{s(e),t>0&&setTimeout(e,t)}))}(e,t)))}(a,o.options.timeout);e.length&&(o.swup.log(`Waiting for ${e.length} assets to load`),await Promise.all(e))}},this.options=t({},this.defaults,e),this.options.persistAssets&&!this.options.persistTags&&(this.options.persistTags="link[rel=stylesheet], script[src], style")}mount(){this.before("content:replace",this.updateHead)}isPersistentTag(e){const{persistTags:t}=this.options;return"function"==typeof t?t(e):"string"==typeof t?e.matches(t):Boolean(t)}}export{o as default}; diff --git a/assets/SwupPreloadPlugin.Bit36d99.js b/assets/SwupPreloadPlugin.Bit36d99.js new file mode 100644 index 00000000..7a6dac19 --- /dev/null +++ b/assets/SwupPreloadPlugin.Bit36d99.js @@ -0,0 +1 @@ +import{e}from"./index.modern.CtKZhHHv.js";import{l as t,n as s}from"./Swup.BAW7Fnls.js";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;tsetTimeout(e,1)),a=["preloadVisibleLinks"];class l extends e{constructor(e={}){var s;super(),s=this,this.name="SwupPreloadPlugin",this.requires={swup:">=4.5"},this.defaults={throttle:5,preloadInitialPage:!0,preloadHoveredLinks:!0,preloadVisibleLinks:{enabled:!1,threshold:.2,delay:500,containers:["body"],ignore:()=>!1}},this.options=void 0,this.queue=void 0,this.preloadObserver=void 0,this.preloadPromises=new Map,this.mouseEnterDelegate=void 0,this.touchStartDelegate=void 0,this.focusDelegate=void 0,this.onPageLoad=(e,t,s)=>{const{url:r}=e.to;return r&&this.preloadPromises.has(r)?this.preloadPromises.get(r):s(e,t)},this.onMouseEnter=async function(e){if(e.target!==e.delegateTarget)return;if(!o())return;const r=e.delegateTarget;if(!i(r))return;const{url:n,hash:a}=t.fromElement(r),l=s.swup.createVisit({to:n,hash:a,el:r,event:e});s.swup.hooks.callSync("link:hover",l,{el:r,event:e}),s.preload(r,{priority:!0})},this.onTouchStart=e=>{if(o())return;const t=e.delegateTarget;i(t)&&this.preload(t,{priority:!0})},this.onFocus=e=>{const t=e.delegateTarget;i(t)&&this.preload(t,{priority:!0})};const{preloadVisibleLinks:n}=e,l=function(e,t){if(null==e)return{};var s,r,o={},i=Object.keys(e);for(r=0;r=0||(o[s]=e[s]);return o}(e,a);this.options=r({},this.defaults,l),"object"==typeof n?this.options.preloadVisibleLinks=r({},this.options.preloadVisibleLinks,{enabled:!0},n):this.options.preloadVisibleLinks.enabled=Boolean(n),this.preload=this.preload.bind(this),this.queue=function(e=1){const t=[],s=[];let r=0,o=0;function i(){o0&&((s.shift()||t.shift()||(()=>{}))(),r--,o++)}return{add:function(e,o=!1){if(e.__queued){if(!o)return;{const s=t.indexOf(e);if(s>=0){const e=t.splice(s,1);r-=e.length}}}e.__queued=!0,(o?s:t).push(e),r++,r<=1&&i()},next:function(){o--,i()}}}(this.options.throttle)}mount(){const e=this.swup;e.options.cache?(e.hooks.create("page:preload"),e.hooks.create("link:hover"),e.preload=this.preload,e.preloadLinks=this.preloadLinks,this.replace("page:load",this.onPageLoad),this.preloadLinks(),this.on("page:view",(()=>this.preloadLinks())),this.options.preloadVisibleLinks.enabled&&(this.preloadVisibleLinks(),this.on("page:view",(()=>this.preloadVisibleLinks()))),this.options.preloadHoveredLinks&&this.preloadLinksOnAttention(),this.options.preloadInitialPage&&this.preload(s())):console.warn("SwupPreloadPlugin: swup cache needs to be enabled for preloading")}unmount(){var e,t,s;this.swup.preload=void 0,this.swup.preloadLinks=void 0,this.preloadPromises.clear(),null==(e=this.mouseEnterDelegate)||e.destroy(),null==(t=this.touchStartDelegate)||t.destroy(),null==(s=this.focusDelegate)||s.destroy(),this.stopPreloadingVisibleLinks()}async preload(e,s={}){var r;let o,n;const a=null!=(r=s.priority)&&r;if(Array.isArray(e))return Promise.all(e.map((e=>this.preload(e))));if(i(e))n=e,({href:o}=t.fromElement(e));else{if("string"!=typeof e)return;o=e}if(!o)return;if(this.preloadPromises.has(o))return this.preloadPromises.get(o);if(!this.shouldPreload(o,{el:n}))return;const l=new Promise((e=>{this.queue.add((()=>{this.performPreload(o).catch((()=>{})).then((t=>e(t))).finally((()=>{this.queue.next(),this.preloadPromises.delete(o)}))}),a)}));return this.preloadPromises.set(o,l),l}preloadLinks(){n((()=>{Array.from(document.querySelectorAll("a[data-swup-preload], [data-swup-preload-all] a")).forEach((e=>this.preload(e)))}))}preloadLinksOnAttention(){const{swup:e}=this,{linkSelector:t}=e.options,s={passive:!0,capture:!0};this.mouseEnterDelegate=e.delegateEvent(t,"mouseenter",this.onMouseEnter,s),this.touchStartDelegate=e.delegateEvent(t,"touchstart",this.onTouchStart,s),this.focusDelegate=e.delegateEvent(t,"focus",this.onFocus,s)}preloadVisibleLinks(){if(this.preloadObserver)return void this.preloadObserver.update();const{threshold:e,delay:s,containers:r}=this.options.preloadVisibleLinks;this.preloadObserver=function({threshold:e,delay:s,containers:r,callback:o,filter:i}){const a=new Map,l=new IntersectionObserver((e=>{e.forEach((e=>{e.isIntersecting?h(e.target):d(e.target)}))}),{threshold:e}),h=e=>{var r;const{href:i}=t.fromElement(e),n=null!=(r=a.get(i))?r:new Set;a.set(i,n),n.add(e),setTimeout((()=>{const t=a.get(i);null!=t&&t.size&&(o(e),l.unobserve(e),t.delete(e))}),s)},d=e=>{var s;const{href:r}=t.fromElement(e);null==(s=a.get(r))||s.delete(e)},u=()=>{n((()=>{const e=r.map((e=>`${e} a[*|href]`)).join(", ");Array.from(document.querySelectorAll(e)).filter((e=>i(e))).forEach((e=>l.observe(e)))}))};return{start:()=>u(),stop:()=>l.disconnect(),update:()=>(a.clear(),u())}}({threshold:e,delay:s,containers:r,callback:e=>this.preload(e),filter:e=>{if(this.options.preloadVisibleLinks.ignore(e))return!1;if(!e.matches(this.swup.options.linkSelector))return!1;const{href:s}=t.fromElement(e);return this.shouldPreload(s,{el:e})}}),this.preloadObserver.start()}stopPreloadingVisibleLinks(){this.preloadObserver&&this.preloadObserver.stop()}shouldPreload(e,{el:r}={}){const{url:o,href:i}=t.fromUrl(e);return!(!function(){if(navigator.connection){var e;if(navigator.connection.saveData)return!1;if(null!=(e=navigator.connection.effectiveType)&&e.endsWith("2g"))return!1}return!0}()||this.swup.cache.has(o)||this.preloadPromises.has(o)||this.swup.shouldIgnoreVisit(i,{el:r})||r&&this.swup.resolveUrl(o)===this.swup.resolveUrl(s()))}async performPreload(e){var s=this;const{url:r}=t.fromUrl(e),o=this.swup.createVisit({to:r}),i=await this.swup.hooks.call("page:preload",o,{url:r},(async function(t,r){return r.page=await s.swup.fetchPage(e,{visit:t}),r.page}));return i}}export{l as default}; diff --git a/assets/SwupScriptsPlugin.f2nwucqv.js b/assets/SwupScriptsPlugin.f2nwucqv.js new file mode 100644 index 00000000..bdd1bda4 --- /dev/null +++ b/assets/SwupScriptsPlugin.f2nwucqv.js @@ -0,0 +1 @@ +import{e as t}from"./index.modern.CtKZhHHv.js";function e(){return e=Object.assign?Object.assign.bind():function(t){for(var e=1;e=4"},this.defaults={head:!0,body:!0,optin:!1},this.options=void 0,this.options=e({},this.defaults,t)}mount(){this.on("content:replace",this.runScripts)}runScripts(){const{head:t,body:e,optin:r}=this.options,n=this.getScope({head:t,body:e});if(!n)return;const s=Array.from(n.querySelectorAll(r?"script[data-swup-reload-script]":"script:not([data-swup-ignore-script])"));s.forEach((t=>this.runScript(t))),this.swup.log(`Executed ${s.length} scripts.`)}runScript(t){const e=document.createElement("script");for(const{name:r,value:n}of t.attributes)e.setAttribute(r,n);return e.textContent=t.textContent,t.replaceWith(e),e}getScope({head:t,body:e}){return t&&e?document:t?document.head:e?document.body:null}}export{r as default}; diff --git a/assets/SwupScrollPlugin.rmSN6-xu.js b/assets/SwupScrollPlugin.rmSN6-xu.js new file mode 100644 index 00000000..bf0e7292 --- /dev/null +++ b/assets/SwupScrollPlugin.rmSN6-xu.js @@ -0,0 +1 @@ +import{e as t}from"./index.modern.CtKZhHHv.js";import{m as o}from"./Swup.BAW7Fnls.js";function i(){return i=Object.assign?Object.assign.bind():function(t){for(var o=1;o{if(t&&t.nodeType)this._targetPositionY=Math.round(t.getBoundingClientRect().top+window.pageYOffset);else{if(parseInt(this._targetPositionY)!==this._targetPositionY)return void console.error("Argument must be a number or an element.");this._targetPositionY=Math.round(t)}this._targetPositionY>document.documentElement.scrollHeight-window.innerHeight&&(this._targetPositionY=document.documentElement.scrollHeight-window.innerHeight),this._positionY=document.body.scrollTop||document.documentElement.scrollTop,this._direction=this._positionY>this._targetPositionY?-1:1,this._targetPositionYWithOffset=this._targetPositionY+this._direction,this._velocityY=0,this._positionY!==this._targetPositionY?(this.options.onStart(),this._animate()):this.options.onAlreadyAtPositions()},this._animate=()=>{this._update(),this._render(),1===this._direction&&this._targetPositionY>this._positionY||-1===this._direction&&this._targetPositionY{const t=this._targetPositionYWithOffset-this._positionY;return this._velocityY+=t*this.options.acceleration,this._velocityY*=this.options.friction,this._positionY+=this._velocityY,Math.abs(t)},this._render=()=>{window.scrollTo(0,this._positionY)},this.options=i({},{onAlreadyAtPositions:()=>{},onCancel:()=>{},onEnd:()=>{},onStart:()=>{},onTick:()=>{},friction:.7,acceleration:.04},t),t&&t.friction&&(this.options.friction=1-t.friction),window.addEventListener("mousewheel",(t=>{this._raf&&(this.options.onCancel(),cancelAnimationFrame(this._raf),this._raf=null)}),{passive:!0})}}function e(){return e=Object.assign?Object.assign.bind():function(t){for(var o=1;o=4.2.0"},this.scrl=void 0,this.defaults={doScrollingRightAway:!1,animateScroll:{betweenPages:!0,samePageWithHash:!0,samePage:!0},scrollFriction:.3,scrollAcceleration:.04,getAnchorElement:void 0,offset:0,scrollContainers:"[data-swup-scroll-container]",shouldResetScrollPosition:()=>!0,markScrollTarget:!1},this.options=void 0,this.cachedScrollPositions={},this.previousScrollRestoration=void 0,this.currentCacheKey=void 0,this.getAnchorElement=(t="")=>"function"==typeof this.options.getAnchorElement?this.options.getAnchorElement(t):this.swup.getAnchorElement(t),this.getOffset=t=>t?"function"==typeof this.options.offset?parseInt(String(this.options.offset(t)),10):parseInt(String(this.options.offset),10):0,this.onBeforeLinkToSelf=t=>{t.scroll.animate=this.shouldAnimate("samePage")},this.handleScrollToTop=t=>{var o,i;return null==(o=(i=this.swup).scrollTo)||o.call(i,0,t.scroll.animate),!0},this.onBeforeLinkToAnchor=t=>{t.scroll.animate=this.shouldAnimate("samePageWithHash")},this.handleScrollToAnchor=(t,{hash:o})=>this.maybeScrollToAnchor(o,t.scroll.animate),this.onBeforeVisitStart=t=>{t.scroll.scrolledToContent=!1,t.scroll.animate=this.shouldAnimate("betweenPages")},this.onVisitStart=t=>{var o;this.cacheScrollPositions(t.from.url),this.maybeResetScrollPositions(t);const i=null!=(o=t.scroll.target)?o:t.to.hash;t.scroll.animate&&this.options.doScrollingRightAway&&!i&&this.doScrollingBetweenPages(t)},this.handleScrollToContent=t=>{t.scroll.scrolledToContent||this.doScrollingBetweenPages(t),this.restoreScrollContainers(t.to.url)},this.doScrollingBetweenPages=t=>{var o,i;if(t.history.popstate&&!t.animation.animate)return;const s=null!=(o=t.scroll.target)?o:t.to.hash;if(s&&this.maybeScrollToAnchor(s,t.scroll.animate))return;if(!t.scroll.reset)return;const e=this.getCachedScrollPositions(t.to.url),n=(null==e||null==(i=e.window)?void 0:i.top)||0;requestAnimationFrame((()=>{var o,i;return null==(o=(i=this.swup).scrollTo)?void 0:o.call(i,n,t.scroll.animate)})),t.scroll.scrolledToContent=!0},this.maybeResetScrollPositions=t=>{const{popstate:o}=t.history,{url:i}=t.to,{el:s}=t.trigger;o||s&&!this.options.shouldResetScrollPosition(s)||this.resetScrollPositions(i)},this.options=e({},this.defaults,t)}mount(){const t=this.swup;t.hooks.create("scroll:start"),t.hooks.create("scroll:end");const o=this.swup.createVisit({to:this.swup.currentPageUrl});this.scrl=new s({onStart:()=>t.hooks.callSync("scroll:start",o,void 0),onEnd:()=>t.hooks.callSync("scroll:end",o,void 0),onCancel:()=>t.hooks.callSync("scroll:end",o,void 0),friction:this.options.scrollFriction,acceleration:this.options.scrollAcceleration}),t.scrollTo=(i,s=!0)=>{s?this.scrl.scrollTo(i):(t.hooks.callSync("scroll:start",o,void 0),window.scrollTo(0,i),t.hooks.callSync("scroll:end",o,void 0))},this.previousScrollRestoration=window.history.scrollRestoration,t.options.animateHistoryBrowsing&&(window.history.scrollRestoration="manual"),this.updateScrollTarget=this.updateScrollTarget.bind(this),this.options.markScrollTarget&&(window.addEventListener("popstate",this.updateScrollTarget),window.addEventListener("hashchange",this.updateScrollTarget),this.on("page:view",this.updateScrollTarget),this.on("link:anchor",this.updateScrollTarget),this.on("link:self",this.updateScrollTarget),this.updateScrollTarget()),this.before("visit:start",this.onBeforeVisitStart,{priority:-1}),this.on("visit:start",this.onVisitStart,{priority:1}),this.replace("content:scroll",this.handleScrollToContent),this.before("link:self",this.onBeforeLinkToSelf,{priority:-1}),this.replace("scroll:top",this.handleScrollToTop),this.before("link:anchor",this.onBeforeLinkToAnchor,{priority:-1}),this.replace("scroll:anchor",this.handleScrollToAnchor)}unmount(){super.unmount(),this.previousScrollRestoration&&(window.history.scrollRestoration=this.previousScrollRestoration),window.removeEventListener("popstate",this.updateScrollTarget),window.removeEventListener("hashchange",this.updateScrollTarget),this.cachedScrollPositions={},delete this.swup.scrollTo,delete this.scrl}shouldAnimate(t){return"boolean"==typeof this.options.animateScroll?this.options.animateScroll:this.options.animateScroll[t]}maybeScrollToAnchor(t,o=!1){var i,s;if(!t)return!1;const e=this.getAnchorElement(t);if(!e)return console.warn(`Anchor target ${t} not found`),!1;if(!(e instanceof Element))return console.warn(`Anchor target ${t} is not a DOM node`),!1;const{top:n}=e.getBoundingClientRect(),r=n+window.scrollY-this.getOffset(e);return null==(i=(s=this.swup).scrollTo)||i.call(s,r,o),!0}cacheScrollPositions(t){const i=this.swup.resolveUrl(t),s=o(this.options.scrollContainers).map((t=>({top:t.scrollTop,left:t.scrollLeft}))),e={window:{top:window.scrollY,left:window.scrollX},containers:s};this.cachedScrollPositions[i]=e}resetScrollPositions(t){const o=this.swup.resolveUrl(t);delete this.cachedScrollPositions[o]}getCachedScrollPositions(t){const o=this.swup.resolveUrl(t);return this.cachedScrollPositions[o]}restoreScrollContainers(t){const i=this.getCachedScrollPositions(t);i&&0!==i.containers.length&&o(this.options.scrollContainers).forEach(((t,o)=>{const s=i.containers[o];null!=s&&(t.scrollTop=s.top,t.scrollLeft=s.left)}))}updateScrollTarget(){var t;const{hash:o}=window.location,i=document.querySelector("[data-swup-scroll-target]");let s=this.getAnchorElement(o);s instanceof HTMLBodyElement&&(s=null),i!==s&&(null==i||i.removeAttribute("data-swup-scroll-target"),null==(t=s)||t.setAttribute("data-swup-scroll-target",""))}}export{n as default}; diff --git a/assets/browser-support.Dm4bF8Ee.css b/assets/browser-support.Dm4bF8Ee.css new file mode 100644 index 00000000..4d906fd9 --- /dev/null +++ b/assets/browser-support.Dm4bF8Ee.css @@ -0,0 +1 @@ +:root,::backdrop{--sl-color-white: hsl(0, 0%, 100%);--sl-color-gray-1: hsl(0, 20%, 94%);--sl-color-gray-2: hsl(0, 6%, 77%);--sl-color-gray-3: hsl(0, 6%, 56%);--sl-color-gray-4: hsl(0, 7%, 36%);--sl-color-gray-5: hsl(0, 10%, 23%);--sl-color-gray-6: hsl(0, 15%, 16%);--sl-color-black: hsl(224, 10%, 10%);--sl-hue-orange: 41;--sl-color-orange-low: hsl(var(--sl-hue-orange), 39%, 22%);--sl-color-orange: hsl(var(--sl-hue-orange), 82%, 63%);--sl-color-orange-high: hsl(var(--sl-hue-orange), 82%, 87%);--sl-hue-green: 101;--sl-color-green-low: hsl(var(--sl-hue-green), 39%, 22%);--sl-color-green: hsl(var(--sl-hue-green), 82%, 63%);--sl-color-green-high: hsl(var(--sl-hue-green), 82%, 80%);--sl-hue-blue: 234;--sl-color-blue-low: hsl(var(--sl-hue-blue), 54%, 20%);--sl-color-blue: hsl(var(--sl-hue-blue), 100%, 60%);--sl-color-blue-high: hsl(var(--sl-hue-blue), 100%, 87%);--sl-hue-purple: 281;--sl-color-purple-low: hsl(var(--sl-hue-purple), 39%, 22%);--sl-color-purple: hsl(var(--sl-hue-purple), 82%, 63%);--sl-color-purple-high: hsl(var(--sl-hue-purple), 82%, 89%);--sl-hue-red: 339;--sl-color-red-low: hsl(var(--sl-hue-red), 39%, 22%);--sl-color-red: hsl(var(--sl-hue-red), 82%, 63%);--sl-color-red-high: hsl(var(--sl-hue-red), 82%, 87%);--sl-color-accent-low: hsl(224, 54%, 20%);--sl-color-accent: hsl(0, 100%, 67%);--sl-color-accent-high: hsl(224, 100%, 85%);--sl-color-text: #ad9ca3;--sl-color-text-accent: var(--sl-color-accent-high);--sl-color-text-invert: var(--sl-color-accent-low);--sl-color-bg: var(--sl-color-black);--sl-color-bg-nav: var(--sl-color-gray-6);--sl-color-bg-sidebar: var(--sl-color-gray-6);--sl-color-bg-inline-code: #2f2927;--sl-color-bg-accent: var(--sl-color-accent-high);--sl-color-hairline-light: var(--sl-color-gray-5);--sl-color-hairline: var(--sl-color-gray-6);--sl-color-hairline-shade: var(--sl-color-black);--sl-color-backdrop-overlay: hsla(26, 14%, 10%, .66);--sl-shadow-sm: 0px 1px 1px hsla(0, 0%, 0%, .12), 0px 2px 1px hsla(0, 0%, 0%, .24);--sl-shadow-md: 0px 6px 4px hsla(0, 0%, 0%, .08), 0px 4px 2px hsla(0, 0%, 0%, .08), 0px 2px 2px hsla(0, 0%, 0%, .12), 0px 1px 1px hsla(0, 0%, 0%, .15);--sl-shadow-lg: 0px 25px 7px hsla(0, 0%, 0%, .03), 0px 16px 6px hsla(0, 0%, 0%, .1), 0px 9px 5px hsla(223, 13%, 10%, .33), 0px 4px 4px hsla(0, 0%, 0%, .75), 0px 4px 2px hsla(0, 0%, 0%, .25);--sl-text-xs: .8125rem;--sl-text-sm: .937rem;--sl-text-base: 1rem;--sl-text-lg: 1.125rem;--sl-text-xl: 1.25rem;--sl-text-2xl: 1.5rem;--sl-text-3xl: 1.8125rem;--sl-text-4xl: 2.1875rem;--sl-text-5xl: 2.625rem;--sl-text-6xl: 4rem;--sl-text-body: var(--sl-text-base);--sl-text-body-sm: var(--sl-text-xs);--sl-text-code: var(--sl-text-xs);--sl-text-code-sm: var(--sl-text-xs);--sl-text-h1: var(--sl-text-4xl);--sl-text-h2: var(--sl-text-3xl);--sl-text-h3: var(--sl-text-2xl);--sl-text-h4: var(--sl-text-xl);--sl-text-h5: var(--sl-text-lg);--sl-line-height: 1.75;--sl-line-height-headings: 1.2;--sl-font-system: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--sl-font-system-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--__sl-font: var(--sl-font, var(--sl-font-system)), var(--sl-font-system);--__sl-font-mono: var(--sl-font-mono, var(--sl-font-system-mono)), var(--sl-font-system-mono);--sl-nav-height: 3.5rem;--sl-nav-pad-x: 1rem;--sl-nav-pad-y: .75rem;--sl-mobile-toc-height: 3rem;--sl-sidebar-width: 16rem;--sl-sidebar-pad-x: 1rem;--sl-content-width: 45rem;--sl-content-pad-x: 1rem;--sl-menu-button-size: 2rem;--sl-nav-gap: var(--sl-content-pad-x);--sl-outline-offset-inside: -.1875rem;--sl-z-index-toc: 4;--sl-z-index-menu: 5;--sl-z-index-navbar: 10;--sl-z-index-skiplink: 20}@media (min-width: 50em){:root{--sl-nav-height: 4rem;--sl-nav-pad-x: 1.5rem;--sl-text-h1: var(--sl-text-5xl);--sl-text-h2: var(--sl-text-4xl);--sl-text-h3: var(--sl-text-3xl);--sl-text-h4: var(--sl-text-2xl)}}@media (min-width: 72rem){:root{--sl-content-pad-x: 1.5rem;--sl-mobile-toc-height: 0rem}}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{color-scheme:dark;accent-color:var(--sl-color-accent)}html[data-theme=light]{color-scheme:light}body{font-family:var(--__sl-font);line-height:var(--sl-line-height);-webkit-font-smoothing:antialiased;color:var(--sl-color-text);background-color:var(--sl-color-bg)}dialog{color:var(--sl-color-text)}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6,code{overflow-wrap:anywhere}code{font-family:var(--__sl-font-mono)}:root{--astro-code-color-text: var(--sl-color-white);--astro-code-color-background: var(--sl-color-gray-6);--astro-code-token-constant: var(--sl-color-blue-high);--astro-code-token-string: var(--sl-color-green-high);--astro-code-token-comment: var(--sl-color-gray-2);--astro-code-token-keyword: var(--sl-color-purple-high);--astro-code-token-parameter: var(--sl-color-red-high);--astro-code-token-function: var(--sl-color-red-high);--astro-code-token-string-expression: var(--sl-color-green-high);--astro-code-token-punctuation: var(--sl-color-gray-2);--astro-code-token-link: var(--sl-color-blue-high)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sl-hidden{display:none}.sl-flex{display:flex}.sl-block{display:block}@media (min-width: 50rem){.md\:sl-hidden{display:none}.md\:sl-flex{display:flex}.md\:sl-block{display:block}}@media (min-width: 72rem){.lg\:sl-hidden{display:none}.lg\:sl-flex{display:flex}.lg\:sl-block{display:block}}[data-theme=light] .light\:sl-hidden,[data-theme=dark] .dark\:sl-hidden{display:none}[dir=rtl] .rtl\:flip:not(:where([dir=rtl] [dir=ltr] *)){transform:scaleX(-1)}html.is-changing .transition-fade{transition:opacity .125s;opacity:1}html.is-animating .transition-fade{opacity:0}.sl-banner:where(.astro-tjnyjkj5){--__sl-banner-text: var(--sl-color-banner-text, var(--sl-color-text-invert));padding:var(--sl-nav-pad-y) var(--sl-nav-pad-x);background-color:var(--sl-color-banner-bg, var(--sl-color-bg-accent));color:var(--__sl-banner-text);line-height:var(--sl-line-height-headings);text-align:center;text-wrap:balance;box-shadow:var(--sl-shadow-sm)}.sl-banner:where(.astro-tjnyjkj5) a{color:var(--__sl-banner-text)}.content-panel:where(.astro-dmxftcma){padding:1.5rem var(--sl-content-pad-x);html[data-has-toc] &{margin-right:0!important}}.content-panel:where(.astro-dmxftcma)+.content-panel:where(.astro-dmxftcma){border-top:1px solid var(--sl-color-hairline)}.sl-container:where(.astro-dmxftcma){max-width:var(--sl-content-width)}.sl-container:where(.astro-dmxftcma)>*+*{margin-top:1.5rem}@media (min-width: 72rem){.sl-container:where(.astro-dmxftcma){margin-inline:var(--sl-content-margin-inline, auto)}}svg:where(.astro-bkchasgr){color:var(--sl-icon-color);font-size:var(--sl-icon-size, 1em);width:1em;height:1em}p:where(.astro-muzkw2mx){border:1px solid var(--sl-color-orange);padding:.75em 1em;background-color:var(--sl-color-orange-low);color:var(--sl-color-orange-high);width:max-content;max-width:100%;align-items:center;gap:.75em;font-size:var(--sl-text-body-sm);line-height:var(--sl-line-height-headings)}a:where(.astro-mkbcaxh2){gap:.5rem;align-items:center;text-decoration:none;color:var(--sl-color-gray-3);margin-left:1em}a:where(.astro-mkbcaxh2):hover{color:var(--sl-color-white)}:root{--sl-badge-default-border: var(--sl-color-accent);--sl-badge-default-bg: var(--sl-color-accent-low);--sl-badge-default-text: #fff;--sl-badge-note-border: var(--sl-color-blue);--sl-badge-note-bg: var(--sl-color-blue-low);--sl-badge-note-text: #fff;--sl-badge-danger-border: var(--sl-color-red);--sl-badge-danger-bg: var(--sl-color-red-low);--sl-badge-danger-text: #fff;--sl-badge-success-border: var(--sl-color-green);--sl-badge-success-bg: var(--sl-color-green-low);--sl-badge-success-text: #fff;--sl-badge-caution-border: var(--sl-color-orange);--sl-badge-caution-bg: var(--sl-color-orange-low);--sl-badge-caution-text: #fff;--sl-badge-tip-border: var(--sl-color-purple);--sl-badge-tip-bg: var(--sl-color-purple-low);--sl-badge-tip-text: #fff}.sl-badge:where(.astro-so62ltvt){display:inline-block;border:1px solid var(--sl-color-border-badge);border-radius:.25rem;font-family:var(--sl-font-system-mono);line-height:normal;color:var(--sl-color-text-badge);background-color:var(--sl-color-bg-badge);overflow-wrap:anywhere}.sidebar-content .sl-badge:where(.astro-so62ltvt){line-height:1;font-size:var(--sl-text-xs);padding:.125rem .375rem}.sidebar-content a[aria-current=page]>.sl-badge:where(.astro-so62ltvt){--sl-color-bg-badge: transparent;--sl-color-border-badge: currentColor;color:inherit}.default:where(.astro-so62ltvt){--sl-color-bg-badge: var(--sl-badge-default-bg);--sl-color-border-badge: var(--sl-badge-default-border);--sl-color-text-badge: var(--sl-badge-default-text)}.note:where(.astro-so62ltvt){--sl-color-bg-badge: var(--sl-badge-note-bg);--sl-color-border-badge: var(--sl-badge-note-border);--sl-color-text-badge: var(--sl-badge-note-text)}.danger:where(.astro-so62ltvt){--sl-color-bg-badge: var(--sl-badge-danger-bg);--sl-color-border-badge: var(--sl-badge-danger-border);--sl-color-text-badge: var(--sl-badge-danger-text)}.success:where(.astro-so62ltvt){--sl-color-bg-badge: var(--sl-badge-success-bg);--sl-color-border-badge: var(--sl-badge-success-border);--sl-color-text-badge: var(--sl-badge-success-text)}.tip:where(.astro-so62ltvt){--sl-color-bg-badge: var(--sl-badge-tip-bg);--sl-color-border-badge: var(--sl-badge-tip-border);--sl-color-text-badge: var(--sl-badge-tip-text)}.caution:where(.astro-so62ltvt){--sl-color-bg-badge: var(--sl-badge-caution-bg);--sl-color-border-badge: var(--sl-badge-caution-border);--sl-color-text-badge: var(--sl-badge-caution-text)}.small:where(.astro-so62ltvt){font-size:var(--sl-text-xs);padding:.125rem .25rem}.medium:where(.astro-so62ltvt){font-size:var(--sl-text-sm);padding:.175rem .35rem}.large:where(.astro-so62ltvt){font-size:var(--sl-text-base);padding:.225rem .45rem}.sl-markdown-content :is(h1,h2,h3,h4,h5,h6) .sl-badge:where(.astro-so62ltvt){vertical-align:middle}.sl-steps{--bullet-size: calc(var(--sl-line-height) * 1rem);--bullet-margin: .375rem;list-style:none;counter-reset:steps-counter var(--sl-steps-start, 0);padding-inline-start:0}.sl-steps>li{counter-increment:steps-counter;position:relative;padding-inline-start:calc(var(--bullet-size) + 1rem);padding-bottom:1px;min-height:calc(var(--bullet-size) + var(--bullet-margin))}.sl-steps>li+li{margin-top:0}.sl-steps>li:before{content:counter(steps-counter);position:absolute;top:0;inset-inline-start:0;width:var(--bullet-size);height:var(--bullet-size);line-height:var(--bullet-size);font-size:var(--sl-text-xs);font-weight:600;text-align:center;color:var(--sl-color-white);background-color:var(--sl-color-gray-6);border-radius:99rem;box-shadow:inset 0 0 0 1px var(--sl-color-gray-5)}.sl-steps>li:not(:last-of-type):after{--guide-width: 1px;content:"";position:absolute;top:calc(var(--bullet-size) + var(--bullet-margin));bottom:var(--bullet-margin);inset-inline-start:calc((var(--bullet-size) - var(--guide-width)) / 2);width:var(--guide-width);background-color:var(--sl-color-hairline-light)}.sl-steps>li>:first-child{--lh: calc(1em * var(--sl-line-height));--shift-y: calc(.5 * (var(--bullet-size) - var(--lh)));transform:translateY(var(--shift-y));margin-bottom:var(--shift-y)}.sl-steps>li>:first-child:where(h1,h2,h3,h4,h5,h6){--lh: calc(1em * var(--sl-line-height-headings))}@supports (--prop: 1lh){.sl-steps>li>:first-child{--lh: 1lh}}a:where(.astro-m6remgbt){text-decoration:none;color:inherit;transition:color .2s ease-in-out;&:hover{color:var(--sl-color-accent);cursor:pointer!important}}.icon:where(.astro-m6remgbt){vertical-align:baseline;display:inline-block;height:1em;transform:translateY(.15em);margin-right:.3em}time:where(.astro-m6remgbt){margin-left:.2em}.pagination-links:where(.astro-sh3f5jzw){display:grid;grid-template-columns:repeat(auto-fit,minmax(min(18rem,100%),1fr));gap:1rem}.pagination-links:where(.astro-sh3f5jzw)>:where(.astro-sh3f5jzw){display:flex;align-items:center;justify-content:flex-start;gap:.5rem;width:100%;flex-basis:calc(50% - .5rem);flex-grow:1;text-decoration:none;color:var(--sl-color-gray-2);overflow-wrap:anywhere}.pagination-links:where(.astro-sh3f5jzw)>a:where(.astro-sh3f5jzw){border:.6px solid var(--sl-color-gray-5);border-radius:1000rem;padding:1rem 1.6rem;box-shadow:var(--sl-shadow-md)}:where(.astro-sh3f5jzw)[rel=next]{justify-content:end;text-align:end;flex-direction:row-reverse;padding-right:1.6rem;padding-left:1.6rem}a:where(.astro-sh3f5jzw):hover{border-color:var(--sl-color-gray-4)}.link-title:where(.astro-sh3f5jzw){color:var(--sl-color-white);font-size:1.3rem;line-height:var(--sl-line-height-headings)}svg:where(.astro-sh3f5jzw){flex-shrink:0}.next-link-tag:where(.astro-sh3f5jzw){color:var(--sl-color-text-accent);font-size:.95rem;font-weight:var(--sl-font-weight-semibold)}footer:where(.astro-ws7dwejz){flex-direction:column;gap:1.5rem}.meta:where(.astro-ws7dwejz){gap:.75rem 3rem;justify-content:space-between;flex-wrap:wrap;margin-top:3rem;font-size:var(--sl-text-sm);color:var(--sl-color-gray-3)}.meta:where(.astro-ws7dwejz)>p:only-child{margin-inline-start:auto}label:where(.astro-xsfkp6md){--sl-label-icon-size: .875rem;--sl-caret-size: 1.25rem;--sl-inline-padding: .5rem;position:relative;display:flex;align-items:center;gap:.25rem;color:var(--sl-color-gray-1)}label:where(.astro-xsfkp6md):hover{color:var(--sl-color-gray-2)}.icon:where(.astro-xsfkp6md){position:absolute;top:50%;transform:translateY(-50%);pointer-events:none}.label-icon:where(.astro-xsfkp6md){font-size:var(--sl-label-icon-size);inset-inline-start:0}.caret:where(.astro-xsfkp6md){font-size:var(--sl-caret-size);inset-inline-end:0}select:where(.astro-xsfkp6md){border:0;padding-block:.625rem;padding-inline:calc(var(--sl-label-icon-size) + var(--sl-inline-padding) + .25rem) calc(var(--sl-caret-size) + var(--sl-inline-padding) + .25rem);margin-inline:calc(var(--sl-inline-padding) * -1);width:calc(var(--sl-select-width) + var(--sl-inline-padding) * 2);background-color:transparent;text-overflow:ellipsis;color:inherit;cursor:pointer;appearance:none}option:where(.astro-xsfkp6md){background-color:var(--sl-color-bg-nav);color:var(--sl-color-gray-1)}@media (min-width: 50rem){select:where(.astro-xsfkp6md){font-size:var(--sl-text-sm)}}.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:"⤷ ";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-1d60ae3{width:100%;color:var(--pagefind-ui-text);font-family:var(--pagefind-ui-font)}.pagefind-ui__hidden.svelte-1d60ae3{display:none!important}.pagefind-ui__suppressed.svelte-1d60ae3{opacity:0;pointer-events:none}.pagefind-ui__form.svelte-1d60ae3{position:relative}.pagefind-ui__form.svelte-1d60ae3: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-1d60ae3{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-1d60ae3::placeholder{opacity:.2}.pagefind-ui__search-clear.svelte-1d60ae3{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-1d60ae3{gap:calc(60px * var(--pagefind-ui-scale));display:flex;flex-direction:row;flex-wrap:wrap}.pagefind-ui__results-area.svelte-1d60ae3{min-width:min(calc(400px * var(--pagefind-ui-scale)),100%);flex:1000;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__results.svelte-1d60ae3{padding:0}.pagefind-ui__message.svelte-1d60ae3{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-1d60ae3{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-1d60ae3:hover{border-color:var(--pagefind-ui-primary);color:var(--pagefind-ui-primary);background:var(--pagefind-ui-background)}[data-search-modal-open]{overflow:hidden}#starlight__search{--sl-search-result-spacing: calc(1.25rem * var(--pagefind-ui-scale));--sl-search-result-pad-inline-start: calc(3.75rem * var(--pagefind-ui-scale));--sl-search-result-pad-inline-end: calc(1.25rem * var(--pagefind-ui-scale));--sl-search-result-pad-block: calc(.9375rem * var(--pagefind-ui-scale));--sl-search-result-nested-pad-block: calc(.625rem * var(--pagefind-ui-scale));--sl-search-corners: calc(.3125rem * var(--pagefind-ui-scale));--sl-search-page-icon-size: calc(1.875rem * var(--pagefind-ui-scale));--sl-search-page-icon-inline-start: calc( (var(--sl-search-result-pad-inline-start) - var(--sl-search-page-icon-size)) / 2 );--sl-search-tree-diagram-size: calc(2.5rem * var(--pagefind-ui-scale));--sl-search-tree-diagram-inline-start: calc( (var(--sl-search-result-pad-inline-start) - var(--sl-search-tree-diagram-size)) / 2 )}#starlight__search .pagefind-ui__form:before{--pagefind-ui-text: var(--sl-color-gray-1);opacity:1}#starlight__search .pagefind-ui__search-input{color:var(--sl-color-white);font-weight:400;width:calc(100% - var(--sl-search-cancel-space))}#starlight__search input:focus{--pagefind-ui-border: var(--sl-color-accent)}#starlight__search .pagefind-ui__search-clear{inset-inline-end:var(--sl-search-cancel-space);width:calc(60px * var(--pagefind-ui-scale));padding:0;background-color:transparent;overflow:hidden}#starlight__search .pagefind-ui__search-clear:focus{outline:1px solid var(--sl-color-accent)}#starlight__search .pagefind-ui__search-clear:before{content:"";-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m13.41 12 6.3-6.29a1 1 0 1 0-1.42-1.42L12 10.59l-6.29-6.3a1 1 0 0 0-1.42 1.42l6.3 6.29-6.3 6.29a1 1 0 0 0 .33 1.64 1 1 0 0 0 1.09-.22l6.29-6.3 6.29 6.3a1 1 0 0 0 1.64-.33 1 1 0 0 0-.22-1.09L13.41 12Z'/%3E%3C/svg%3E") center / 50% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m13.41 12 6.3-6.29a1 1 0 1 0-1.42-1.42L12 10.59l-6.29-6.3a1 1 0 0 0-1.42 1.42l6.3 6.29-6.3 6.29a1 1 0 0 0 .33 1.64 1 1 0 0 0 1.09-.22l6.29-6.3 6.29 6.3a1 1 0 0 0 1.64-.33 1 1 0 0 0-.22-1.09L13.41 12Z'/%3E%3C/svg%3E") center / 50% no-repeat;background-color:var(--sl-color-text-accent);display:block;width:100%;height:100%}#starlight__search .pagefind-ui__results>*+*{margin-top:var(--sl-search-result-spacing)}#starlight__search .pagefind-ui__result{border:0;padding:0}#starlight__search .pagefind-ui__result-nested{position:relative;padding:var(--sl-search-result-nested-pad-block) var(--sl-search-result-pad-inline-end);padding-inline-start:var(--sl-search-result-pad-inline-start)}#starlight__search .pagefind-ui__result-title:not(:where(.pagefind-ui__result-nested *)),#starlight__search .pagefind-ui__result-nested{position:relative;background-color:var(--sl-color-black)}#starlight__search .pagefind-ui__result-title:not(:where(.pagefind-ui__result-nested *)):hover,#starlight__search .pagefind-ui__result-title:not(:where(.pagefind-ui__result-nested *)):focus-within,#starlight__search .pagefind-ui__result-nested:hover,#starlight__search .pagefind-ui__result-nested:focus-within{outline:1px solid var(--sl-color-accent-high)}#starlight__search .pagefind-ui__result-title:not(:where(.pagefind-ui__result-nested *)):focus-within,#starlight__search .pagefind-ui__result-nested:focus-within{background-color:var(--sl-color-accent-low)}#starlight__search .pagefind-ui__result-thumb,#starlight__search .pagefind-ui__result-inner{margin-top:0}#starlight__search .pagefind-ui__result-inner>:first-child{border-radius:var(--sl-search-corners) var(--sl-search-corners) 0 0}#starlight__search .pagefind-ui__result-inner>:last-child{border-radius:0 0 var(--sl-search-corners) var(--sl-search-corners)}#starlight__search .pagefind-ui__result-inner>.pagefind-ui__result-title{padding:var(--sl-search-result-pad-block) var(--sl-search-result-pad-inline-end);padding-inline-start:var(--sl-search-result-pad-inline-start)}#starlight__search .pagefind-ui__result-inner>.pagefind-ui__result-title:before{content:"";position:absolute;inset-block:0;inset-inline-start:var(--sl-search-page-icon-inline-start);width:var(--sl-search-page-icon-size);background:var(--sl-color-gray-3);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='M9 10h1a1 1 0 1 0 0-2H9a1 1 0 0 0 0 2Zm0 2a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2H9Zm11-3V8l-6-6a1 1 0 0 0-1 0H7a3 3 0 0 0-3 3v14a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V9Zm-6-4 3 3h-2a1 1 0 0 1-1-1V5Zm4 14a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h5v3a3 3 0 0 0 3 3h3v9Zm-3-3H9a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2Z'/%3E%3C/svg%3E") center no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='M9 10h1a1 1 0 1 0 0-2H9a1 1 0 0 0 0 2Zm0 2a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2H9Zm11-3V8l-6-6a1 1 0 0 0-1 0H7a3 3 0 0 0-3 3v14a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V9Zm-6-4 3 3h-2a1 1 0 0 1-1-1V5Zm4 14a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h5v3a3 3 0 0 0 3 3h3v9Zm-3-3H9a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2Z'/%3E%3C/svg%3E") center no-repeat}#starlight__search .pagefind-ui__result-inner{align-items:stretch;gap:1px}#starlight__search .pagefind-ui__result-link{position:unset;--pagefind-ui-text: var(--sl-color-white);font-weight:600}#starlight__search .pagefind-ui__result-link:hover{text-decoration:none}#starlight__search .pagefind-ui__result-nested .pagefind-ui__result-link:before{content:unset}#starlight__search .pagefind-ui__result-nested:before{content:"";position:absolute;inset-block:0;inset-inline-start:var(--sl-search-tree-diagram-inline-start);width:var(--sl-search-tree-diagram-size);background:var(--sl-color-gray-4);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' viewBox='0 0 16 1000' preserveAspectRatio='xMinYMin slice'%3E%3Cpath d='M8 0v1000m6-988H8'/%3E%3C/svg%3E") 0% 0% / 100% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' viewBox='0 0 16 1000' preserveAspectRatio='xMinYMin slice'%3E%3Cpath d='M8 0v1000m6-988H8'/%3E%3C/svg%3E") 0% 0% / 100% no-repeat}#starlight__search .pagefind-ui__result-nested:last-child:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' viewBox='0 0 16 16'%3E%3Cpath d='M8 0v12m6 0H8'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' viewBox='0 0 16 16'%3E%3Cpath d='M8 0v12m6 0H8'/%3E%3C/svg%3E")}[dir=rtl] .pagefind-ui__result-title:before,[dir=rtl] .pagefind-ui__result-nested:before{transform:scaleX(-1)}#starlight__search .pagefind-ui__result-link:after{content:"";position:absolute;inset:0}#starlight__search .pagefind-ui__result-excerpt{font-size:calc(1rem * var(--pagefind-ui-scale));overflow-wrap:anywhere}#starlight__search mark{color:var(--sl-color-gray-2);background-color:transparent;font-weight:600}site-search:where(.astro-n63ahxst){display:contents}button:where(.astro-n63ahxst)[data-open-modal]{display:flex;border:0;background-color:transparent;color:var(--sl-color-gray-1);cursor:pointer;height:3rem;font-size:var(--sl-text-xl)}dialog:where(.astro-n63ahxst){margin:0;background-color:var(--sl-color-gray-6);border:1px solid var(--sl-color-gray-5);width:100%;max-width:100%;height:100%;max-height:100%;box-shadow:var(--sl-shadow-lg)}dialog:where(.astro-n63ahxst)[open]{display:flex}dialog:where(.astro-n63ahxst)::backdrop{background-color:var(--sl-color-backdrop-overlay);-webkit-backdrop-filter:blur(.25rem);backdrop-filter:blur(1.25rem)}.dialog-frame:where(.astro-n63ahxst){flex-direction:column;flex-grow:1;gap:1rem;padding:1rem}button:where(.astro-n63ahxst)[data-close-modal]{position:absolute;z-index:1;align-items:center;align-self:flex-end;height:calc(64px * var(--pagefind-ui-scale));padding:.25rem;border:0;background:transparent;cursor:pointer;color:var(--sl-color-text-accent)}#starlight__search:where(.astro-n63ahxst){--pagefind-ui-primary: var(--sl-color-accent-light);--pagefind-ui-text: var(--sl-color-gray-2);--pagefind-ui-font: var(--__sl-font);--pagefind-ui-background: var(--sl-color-black);--pagefind-ui-border: var(--sl-color-gray-5);--pagefind-ui-border-width: 1px;--sl-search-cancel-space: 5rem}@media (min-width: 50rem){#starlight__search:where(.astro-n63ahxst){--sl-search-cancel-space: 0px}dialog:where(.astro-n63ahxst){margin:4rem auto auto;border-radius:.5rem;width:90%;max-width:40rem;height:max-content;min-height:15rem;max-height:calc(100% - 8rem)}.dialog-frame:where(.astro-n63ahxst){padding:1.5rem}}.site-title:where(.astro-z73cwxac){align-items:center;gap:var(--sl-nav-gap);font-size:var(--sl-text-h4);font-weight:600;color:var(--sl-color-text-accent);text-decoration:none;white-space:nowrap}img:where(.astro-z73cwxac){height:calc(var(--sl-nav-height) - 2 * var(--sl-nav-pad-y));width:auto;max-width:100%;object-fit:contain;object-position:0 50%}.header:where(.astro-wagtsxap){gap:var(--sl-nav-gap);justify-content:space-between;align-items:center;height:100%;background-color:#0000!important}.search-root:where(.astro-wagtsxap){justify-content:flex-end}.title-wrapper:where(.astro-wagtsxap){overflow:hidden}.right-group:where(.astro-wagtsxap),.social-icons:where(.astro-wagtsxap){gap:1rem;align-items:center}.social-icons:where(.astro-wagtsxap):after{content:"";height:2rem;border-inline-end:1px solid var(--sl-color-gray-5)}@media (min-width: 50rem){:root[data-has-sidebar]{--__sidebar-pad: calc(2 * var(--sl-nav-pad-x))}:root:not([data-has-toc]){--__toc-width: 0rem}.header:where(.astro-wagtsxap){--__sidebar-width: max(0rem, var(--sl-content-inline-start, 0rem) - var(--sl-nav-pad-x));--__main-column-fr: calc( ( 100% + var(--__sidebar-pad, 0rem) - var(--__toc-width, var(--sl-sidebar-width)) - (2 * var(--__toc-width, var(--sl-nav-pad-x))) - var(--sl-content-inline-start, 0rem) - var(--sl-content-width) ) / 2 );display:grid;grid-template-columns:minmax(calc(var(--__sidebar-width) + max(0rem,var(--__main-column-fr) - var(--sl-nav-gap))),auto) 1fr auto;align-content:center}}.action:where(.astro-xlzjlryn){gap:.5em;align-items:center;border-radius:999rem;padding:.5rem 1.125rem;color:var(--sl-color-white);line-height:1.1875;text-decoration:none;font-size:var(--sl-text-sm)}.action:where(.astro-xlzjlryn).primary{background:var(--sl-color-text-accent);color:var(--sl-color-black)}.action:where(.astro-xlzjlryn).secondary{border:1px solid}.action:where(.astro-xlzjlryn).minimal{padding-inline:0}@media (min-width: 50rem){.action:where(.astro-xlzjlryn){font-size:var(--sl-text-base);padding:1rem 1.25rem}}.hero:where(.astro-pgofn2s2){display:grid;align-items:center;gap:1rem;padding-bottom:1rem}.hero:where(.astro-pgofn2s2)>img:where(.astro-pgofn2s2),.hero:where(.astro-pgofn2s2)>.hero-html:where(.astro-pgofn2s2){object-fit:contain;width:min(70%,20rem);height:auto;margin-inline:auto}.stack:where(.astro-pgofn2s2){flex-direction:column;gap:clamp(1.5rem,calc(1.5rem + 1vw),2rem);text-align:center}.copy:where(.astro-pgofn2s2){flex-direction:column;gap:1rem;align-items:center}.copy:where(.astro-pgofn2s2)>:where(.astro-pgofn2s2){max-width:50ch}h1:where(.astro-pgofn2s2){font-size:clamp(var(--sl-text-3xl),calc(.25rem + 5vw),var(--sl-text-6xl));line-height:var(--sl-line-height-headings);font-weight:600;color:var(--sl-color-white)}.tagline:where(.astro-pgofn2s2){font-size:clamp(var(--sl-text-base),calc(.0625rem + 2vw),var(--sl-text-xl));color:var(--sl-color-gray-2)}.actions:where(.astro-pgofn2s2){gap:1rem 2rem;flex-wrap:wrap;justify-content:center}@media (min-width: 50rem){.hero:where(.astro-pgofn2s2){grid-template-columns:7fr 4fr;gap:3%;padding-block:clamp(2.5rem,calc(1rem + 10vmin),10rem)}.hero:where(.astro-pgofn2s2)>img:where(.astro-pgofn2s2),.hero:where(.astro-pgofn2s2)>.hero-html:where(.astro-pgofn2s2){order:2;width:min(100%,25rem)}.stack:where(.astro-pgofn2s2){text-align:start}.copy:where(.astro-pgofn2s2){align-items:flex-start}.actions:where(.astro-pgofn2s2){justify-content:flex-start}}.sl-markdown-content :not(a,em,del,span,input,code,:where(.not-content *)){font-weight:300}.sl-markdown-content strong:not(:where(.not-content *)){font-weight:600}.sl-markdown-content :not(a,strong,em,del,span,input,code,hr)+:not(a,strong,em,del,span,input,code,hr,:where(.not-content *)){margin-top:1rem}.sl-markdown-content :not(h1,h2,h3,h4,h5,h6)+:is(h1,h2,h3):not(:where(.not-content *)){margin-top:5rem}.sl-markdown-content :not(h1,h2,h3,h4,h5,h6)+:is(h4):not(:where(.not-content *)){margin-top:4rem}.sl-markdown-content :not(h1,h2,h3,h4,h5,h6)+:is(h5,h6):not(:where(.not-content *)){margin-top:2.5rem}.sl-markdown-content ul ul:not(:where(not-content *)){margin-bottom:1.3rem}.sl-markdown-content :is(h4):not(:where(.not-content *)){margin-top:5rem;font-weight:500!important}.sl-markdown-content :is(h3){margin-top:5rem;color:#ffeee1;font-weight:600!important}.sl-markdown-content :first-child:where(h1,h2,h3,h4,h5,h6){margin-top:0}.sl-markdown-content li+li:not(:where(.not-content *)),.sl-markdown-content dt+dt:not(:where(.not-content *)),.sl-markdown-content dt+dd:not(:where(.not-content *)),.sl-markdown-content dd+dd:not(:where(.not-content *)){margin-top:.25rem}.sl-markdown-content li:not(:where(.not-content *)){overflow-wrap:anywhere}.sl-markdown-content li>:last-child:not(li,ul,ol):not(a,strong,em,del,span,input,:where(.not-content *)){margin-bottom:1.25rem}.sl-markdown-content dt:not(:where(.not-content *)){font-weight:700}.sl-markdown-content dd:not(:where(.not-content *)){padding-inline-start:1rem}.sl-markdown-content :is(h1,h2,h3,h4,h5,h6):not(:where(.not-content *)){color:#ebdbdb;line-height:var(--sl-line-height-headings);font-weight:600}.sl-markdown-content :is(h2){font-size:.6rem}.sl-markdown-content :is(img,picture,video,canvas,svg,iframe):not(:where(.not-content *)){display:block;max-width:100%;height:auto}.sl-markdown-content h1:not(:where(.not-content *)){font-size:var(--sl-text-h1)}.sl-markdown-content h2:not(:where(.not-content *)){font-size:var(--sl-text-base);color:var(--sl-color-accent)}.sl-markdown-content h3:not(:where(.not-content *)){font-size:var(--sl-text-h3)}.sl-markdown-content h4:not(:where(.not-content *)){font-size:var(--sl-text-h4)}.sl-markdown-content h5:not(:where(.not-content *)){font-size:var(--sl-text-h5)}.sl-markdown-content h6:not(:where(.not-content *)){font-size:var(--sl-text-h6)}.sl-markdown-content a:not(:where(.not-content *)){color:#eae0e0;font-weight:430;text-decoration-color:var(--sl-color-accent);text-decoration-style:solid;text-decoration-thickness:.09em;text-underline-offset:.14em;text-underline-position:from-font;transition:color .12s ease-in-out,text-decoration-color .12s ease-in-out;&:hover{color:#ffc56e;text-decoration-color:#ffc56e;text-decoration-style:solid}}.sl-markdown-content code:not(:where(.not-content *)){background-color:var(--sl-color-bg-inline-code);color:#eac183;margin-block:-.125rem;padding:.125rem .375rem;font-size:var(--sl-text-code-sm);border-radius:4px}.sl-markdown-content :is(h1,h2,h3,h4,h5,h6) code{font-size:inherit}.sl-markdown .sl-markdown-content pre:not(:where(.not-content *)){border:1px solid var(--sl-color-gray-5);padding:0;font-size:var(--sl-text-code);tab-size:2}.sl-markdown-content pre code:not(:where(.not-content *)){all:unset;font-family:var(--__sl-font-mono)}.sl-markdown-content blockquote:not(:where(.not-content *)){border-inline-start:1px solid var(--sl-color-gray-5);padding-inline-start:1rem;color:var(--sl-color-gray-2)}.sl-markdown-content table:not(:where(.not-content *)){display:block;overflow:auto;border-collapse:collapse}.sl-markdown-content tr:nth-child(2n):not(:where(.not-content *)){background-color:var(--sl-color-gray-7, var(--sl-color-gray-6))}.sl-markdown-content :is(th,td):not(:where(.not-content *)){border:1px solid var(--sl-color-hairline-light);padding:.375rem .8125rem}.sl-markdown-content hr:not(:where(.not-content *)){border:0;border-bottom:1px solid var(--sl-color-gray-5);margin:1.8rem 0}.sl-markdown-content details:not(:where(.not-content *)){--sl-details-border-color: var(--sl-color-gray-5);--sl-details-border-color--hover: var(--sl-color-text-accent);border-inline-start:2px solid var(--sl-details-border-color);padding-inline-start:1rem}.sl-markdown-content details:not([open]):hover:not(:where(.not-content *)),.sl-markdown-content details:has(>summary:hover):not(:where(.not-content *)){border-color:var(--sl-details-border-color--hover)}.sl-markdown-content summary:not(:where(.not-content *)){color:var(--sl-color-white);cursor:pointer;display:block;font-weight:600;margin-inline-start:-.5rem;padding-inline-start:.5rem}.sl-markdown-content details[open]>summary:not(:where(.not-content *)){margin-bottom:1rem}.sl-markdown-content summary:not(:where(.not-content *))::marker,.sl-markdown-content summary:not(:where(.not-content *))::-webkit-details-marker{display:none}.sl-markdown-content summary:not(:where(.not-content *)):before{--sl-details-marker-size: 1.25rem;background-color:currentColor;content:"";display:inline-block;height:var(--sl-details-marker-size);width:var(--sl-details-marker-size);margin-inline:calc((var(--sl-details-marker-size) / 4) * -1) .25rem;vertical-align:middle;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14.8 11.3 10.6 7a1 1 0 1 0-1.4 1.5l3.5 3.5-3.5 3.5a1 1 0 0 0 0 1.4 1 1 0 0 0 .7.3 1 1 0 0 0 .7-.3l4.2-4.2a1 1 0 0 0 0-1.4Z'/%3E%3C/svg%3E%0A");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14.8 11.3 10.6 7a1 1 0 1 0-1.4 1.5l3.5 3.5-3.5 3.5a1 1 0 0 0 0 1.4 1 1 0 0 0 .7.3 1 1 0 0 0 .7-.3l4.2-4.2a1 1 0 0 0 0-1.4Z'/%3E%3C/svg%3E%0A");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}@media (prefers-reduced-motion: no-preference){.sl-markdown-content summary:not(:where(.not-content *)):before{transition:transform .2s ease-in-out}}.sl-markdown-content details[open]>summary:not(:where(.not-content *)):before{transform:rotate(90deg)}[dir=rtl] .sl-markdown-content summary:not(:where(.not-content *)):before,.sl-markdown-content [dir=rtl] summary:not(:where(.not-content *)):before{transform:rotate(180deg)}.sl-markdown-content summary:not(:where(.not-content *)) p:only-child{display:inline}.sl-markdown-content .starlight-aside details:not(:where(.not-content *)){--sl-details-border-color: var(--sl-color-asides-border);--sl-details-border-color--hover: var(--sl-color-asides-text-accent)}[data-mobile-menu-expanded]{overflow:hidden}@media (min-width: 50rem){[data-mobile-menu-expanded]{overflow:auto}}button:where(.astro-dwzdllxx){position:fixed;top:calc((var(--sl-nav-height) - var(--sl-menu-button-size)) / 2);inset-inline-end:var(--sl-nav-pad-x);z-index:var(--sl-z-index-navbar);border:0;border-radius:50%;width:var(--sl-menu-button-size);height:var(--sl-menu-button-size);padding:.5rem;background-color:var(--sl-color-white);color:var(--sl-color-black);box-shadow:var(--sl-shadow-md);cursor:pointer}:where(.astro-dwzdllxx)[aria-expanded=true] button:where(.astro-dwzdllxx){background-color:var(--sl-color-gray-2);box-shadow:none}.page-frame:where(.astro-wu4nwam6){flex-direction:column;min-height:100vh}.header:where(.astro-wu4nwam6){z-index:var(--sl-z-index-navbar);position:fixed;inset-inline-start:0;inset-block-start:0;width:100%;height:var(--sl-nav-height);border-bottom:1px solid var(--sl-color-hairline-shade);padding:var(--sl-nav-pad-y) var(--sl-nav-pad-x);padding-inline-end:var(--sl-nav-pad-x);background-color:#0000}[data-has-sidebar] .header:where(.astro-wu4nwam6){padding-inline-end:calc(var(--sl-nav-gap) + var(--sl-nav-pad-x) + var(--sl-menu-button-size))}.sidebar-pane:where(.astro-wu4nwam6){visibility:var(--sl-sidebar-visibility, hidden);position:fixed;z-index:var(--sl-z-index-menu);inset-block:var(--sl-nav-height) 0;inset-inline-start:0;width:100%;background-color:var(--sl-color-black);overflow-y:auto}[aria-expanded=true]~.sidebar-pane:where(.astro-wu4nwam6){--sl-sidebar-visibility: visible}.sidebar-content:where(.astro-wu4nwam6){height:100%;min-height:max-content;padding:1rem var(--sl-sidebar-pad-x) 0;flex-direction:column;gap:1rem}@media (min-width: 50rem){.sidebar-content:where(.astro-wu4nwam6):after{content:"";padding-bottom:1px}}.main-frame:where(.astro-wu4nwam6){padding-top:calc(var(--sl-nav-height) + var(--sl-mobile-toc-height));padding-inline-start:var(--sl-content-inline-start)}@media (min-width: 50rem){[data-has-sidebar] .header:where(.astro-wu4nwam6){padding-inline-end:var(--sl-nav-pad-x)}.sidebar-pane:where(.astro-wu4nwam6){--sl-sidebar-visibility: visible;width:var(--sl-sidebar-width);background-color:var(--sl-color-bg-sidebar);border-inline-end:1px solid var(--sl-color-hairline-shade)}}ul:where(.astro-spfmaigg){padding:0;list-style:none}ul:where(.astro-spfmaigg) li:where(.astro-spfmaigg) a:where(.astro-spfmaigg){font-size:1.08rem}ul:where(.astro-spfmaigg) li:where(.astro-spfmaigg) li:where(.astro-spfmaigg) a:where(.astro-spfmaigg){font-size:.975em}a:where(.astro-spfmaigg){--pad-inline: .5rem;display:block;border-radius:.25rem;padding-block:.25rem;padding-inline:calc(1rem * var(--depth) + var(--pad-inline)) var(--pad-inline);line-height:1.25}a:where(.astro-spfmaigg)[aria-current=true]{color:var(--sl-color-white);&:hover{color:var(--sl-color-accent)}}.isMobile:where(.astro-spfmaigg) a:where(.astro-spfmaigg){--pad-inline: 1rem;display:flex;justify-content:space-between;gap:var(--pad-inline);border-top:1px solid var(--sl-color-gray-6);border-radius:0;padding-block:.5rem;color:var(--sl-color-text);font-size:var(--sl-text-sm);text-decoration:none;outline-offset:var(--sl-outline-offset-inside)}.isMobile:where(.astro-spfmaigg):first-child>li:where(.astro-spfmaigg):first-child>a:where(.astro-spfmaigg){border-top:0}.isMobile:where(.astro-spfmaigg) a:where(.astro-spfmaigg)[aria-current=true],.isMobile:where(.astro-spfmaigg) a:where(.astro-spfmaigg)[aria-current=true]:hover,.isMobile:where(.astro-spfmaigg) a:where(.astro-spfmaigg)[aria-current=true]:focus{background-color:unset}.isMobile:where(.astro-spfmaigg) a:where(.astro-spfmaigg)[aria-current=true]:after{content:"";width:1rem;background-color:var(--sl-color-text-accent);-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNCAxNCc+PHBhdGggZD0nTTEwLjkxNCA0LjIwNmEuNTgzLjU4MyAwIDAgMC0uODI4IDBMNS43NCA4LjU1NyAzLjkxNCA2LjcyNmEuNTk2LjU5NiAwIDAgMC0uODI4Ljg1N2wyLjI0IDIuMjRhLjU4My41ODMgMCAwIDAgLjgyOCAwbDQuNzYtNC43NmEuNTgzLjU4MyAwIDAgMCAwLS44NTdaJy8+PC9zdmc+Cg==);mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNCAxNCc+PHBhdGggZD0nTTEwLjkxNCA0LjIwNmEuNTgzLjU4MyAwIDAgMC0uODI4IDBMNS43NCA4LjU1NyAzLjkxNCA2LjcyNmEuNTk2LjU5NiAwIDAgMC0uODI4Ljg1N2wyLjI0IDIuMjRhLjU4My41ODMgMCAwIDAgLjgyOCAwbDQuNzYtNC43NmEuNTgzLjU4MyAwIDAgMCAwLS44NTdaJy8+PC9zdmc+Cg==);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;flex-shrink:0}nav:where(.astro-g2haqgb3){position:fixed;z-index:var(--sl-z-index-toc);top:calc(var(--sl-nav-height) - 1px);inset-inline:0;border-top:1px solid var(--sl-color-gray-5);background-color:var(--sl-color-bg-nav)}@media (min-width: 50rem){nav:where(.astro-g2haqgb3){inset-inline-start:var(--sl-content-inline-start, 0)}}summary:where(.astro-g2haqgb3){gap:.5rem;align-items:center;height:var(--sl-mobile-toc-height);border-bottom:1px solid var(--sl-color-hairline-shade);padding:.5rem 1rem;font-size:var(--sl-text-xs);outline-offset:var(--sl-outline-offset-inside)}summary:where(.astro-g2haqgb3)::marker,summary:where(.astro-g2haqgb3)::-webkit-details-marker{display:none}.toggle:where(.astro-g2haqgb3){flex-shrink:0;gap:1rem;align-items:center;justify-content:space-between;border:1px solid var(--sl-color-gray-5);border-radius:.5rem;padding-block:.5rem;padding-inline-start:.75rem;padding-inline-end:.5rem;line-height:1;background-color:var(--sl-color-black);user-select:none;cursor:pointer}details:where(.astro-g2haqgb3)[open] .toggle:where(.astro-g2haqgb3){color:var(--sl-color-white);border-color:var(--sl-color-accent)}details:where(.astro-g2haqgb3) .toggle:where(.astro-g2haqgb3):hover{color:var(--sl-color-white);border-color:var(--sl-color-gray-2)}[dir=rtl] .caret:where(.astro-g2haqgb3){transform:rotate(180deg)}details:where(.astro-g2haqgb3)[open] .caret:where(.astro-g2haqgb3){transform:rotate(90deg)}.display-current:where(.astro-g2haqgb3){white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:var(--sl-color-white)}.dropdown:where(.astro-g2haqgb3){--border-top: 1px;margin-top:calc(-1 * var(--border-top));border:var(--border-top) solid var(--sl-color-gray-6);border-top-color:var(--sl-color-hairline-shade);max-height:calc(85vh - var(--sl-nav-height) - var(--sl-mobile-toc-height));overflow-y:auto;background-color:var(--sl-color-black);box-shadow:var(--sl-shadow-md);overscroll-behavior:contain}.right-sidebar-panel:where(.astro-h3vzoehi){padding:1rem var(--sl-sidebar-pad-x)}.sl-container:where(.astro-h3vzoehi){width:calc(var(--sl-sidebar-width) - 2 * var(--sl-sidebar-pad-x))}.right-sidebar-panel:where(.astro-h3vzoehi) h2{color:var(--sl-color-white);font-size:var(--sl-text-h5);font-weight:600;line-height:var(--sl-line-height-headings);margin-bottom:.5rem}.right-sidebar-panel:where(.astro-h3vzoehi) :where(a){display:block;text-decoration:none;color:var(--sl-color-gray-3);overflow-wrap:anywhere}.right-sidebar-panel:where(.astro-h3vzoehi) :where(a):hover{color:var(--sl-color-accent)}@media (min-width: 72rem){.sl-container:where(.astro-h3vzoehi){max-width:calc(((100vw - var(--sl-sidebar-width) - 2 * var(--sl-content-pad-x) - 2 * var(--sl-sidebar-pad-x)) * .25))}}h1:where(.astro-3dzsydmp){margin-top:1rem;font-size:var(--sl-text-h1);line-height:var(--sl-line-height-headings);font-weight:700;letter-spacing:.03rem;color:var(--sl-color-white)}:root p:where(.astro-3dzsydmp){margin-top:.6rem;color:#bddef2;font-style:italic}a:where(.astro-7w7pdatc){color:var(--sl-color-text-accent);padding:.5em;margin:-.5em}a:where(.astro-7w7pdatc):hover{opacity:.66}.social-icons:where(.astro-ym3r2ldi){margin-inline-end:auto;gap:1rem;align-items:center;padding-block:1rem}.social-icons:where(.astro-ym3r2ldi):empty{display:none}.mobile-preferences:where(.astro-ym3r2ldi){justify-content:space-between;flex-wrap:wrap;border-top:1px solid var(--sl-color-gray-6);column-gap:1rem;padding:.5rem 0}hr:where(.astro-bgd6mkzw){display:block;width:calc(100% + 2rem);margin-top:1rem;margin-bottom:1rem;margin-left:-1rem}.sidebar-icon:where(.astro-bgd6mkzw){display:inline-block}ul:where(.astro-bgd6mkzw){list-style:none;padding:0}li:where(.astro-bgd6mkzw){overflow-wrap:anywhere}ul:where(.astro-bgd6mkzw) ul:where(.astro-bgd6mkzw) li:where(.astro-bgd6mkzw){margin-inline-start:var(--sl-sidebar-item-padding-inline);border-inline-start:1px solid var(--sl-color-hairline-light);padding-inline-start:var(--sl-sidebar-item-padding-inline)}ul:where(.astro-bgd6mkzw).top-level li:where(.astro-bgd6mkzw):first-child summary:where(.astro-bgd6mkzw){margin-top:0}.large:where(.astro-bgd6mkzw){font-size:var(--sl-text-lg)}.top-level:where(.astro-bgd6mkzw)>li:where(.astro-bgd6mkzw)+li:where(.astro-bgd6mkzw){margin-top:.75rem;font-weight:600;color:--sl-color-gray-2}.top-level:where(.astro-bgd6mkzw) a:where(.astro-bgd6mkzw){display:flex;flex-direction:row;align-items:center;border-radius:.25rem;text-decoration:none;color:var(--sl-color-gray-2);padding:.1em var(--sl-sidebar-item-padding-inline);line-height:2;font-size:1.08rem!important;margin-left:.6rem;span{flex-shrink:0}&:hover,&:focus{color:var(--sl-color-white)}&[aria-current=page]{opacity:.5;pointer-events:none}}summary:where(.astro-bgd6mkzw){display:flex;align-items:center;justify-content:space-between;padding:.2em var(--sl-sidebar-item-padding-inline);cursor:pointer;user-select:none;margin-top:.7rem}summary:where(.astro-bgd6mkzw)::marker,summary:where(.astro-bgd6mkzw)::-webkit-details-marker{display:none}details:where(.astro-bgd6mkzw)[open]{margin-bottom:1rem}.caret:where(.astro-bgd6mkzw){transition:transform .2s ease-in-out;flex-shrink:0;display:none}[dir=rtl] .caret:where(.astro-bgd6mkzw){transform:rotate(180deg);display:none}:where(.astro-bgd6mkzw)[open]>summary:where(.astro-bgd6mkzw) .caret:where(.astro-bgd6mkzw){transform:rotate(90deg)}.group-label:where(.astro-bgd6mkzw){font-weight:550;*{font-size:.96rem!important}}a:where(.astro-bgd6mkzw)>:where(.astro-bgd6mkzw):not(:last-child),.group-label:where(.astro-bgd6mkzw)>:where(.astro-bgd6mkzw):not(:last-child){margin-inline-end:.25em}@media (min-width: 50rem){.top-level:where(.astro-bgd6mkzw)>li:where(.astro-bgd6mkzw)+li:where(.astro-bgd6mkzw){margin-top:.5rem}.large:where(.astro-bgd6mkzw){font-size:1.2rem}a:where(.astro-bgd6mkzw){font-size:var(--sl-text-sm)}}a:where(.astro-z2miczde){clip:rect(0,0,0,0);position:fixed;top:.75rem;inset-inline-start:.75rem}a:where(.astro-z2miczde):focus{clip:unset;z-index:var(--sl-z-index-skiplink);display:block;padding:.5rem 1rem;text-decoration:none;color:var(--sl-color-text-invert);background-color:var(--sl-color-text-accent);box-shadow:var(--sl-shadow-lg)}.main-pane:where(.astro-qzsemow5){isolation:isolate}@media (min-width: 72rem){.right-sidebar-container:where(.astro-qzsemow5){order:2;position:relative;width:calc(var(--sl-sidebar-width) + (100% - var(--sl-content-width) - var(--sl-sidebar-width)) / 2)}.right-sidebar:where(.astro-qzsemow5){position:fixed;top:0;padding-top:var(--sl-nav-height);width:100%;height:100vh;overflow-y:auto;scrollbar-width:none}.main-pane:where(.astro-qzsemow5){width:100%}[data-has-sidebar][data-has-toc] .main-pane:where(.astro-qzsemow5){--sl-content-margin-inline: auto 0;order:1;width:calc(var(--sl-content-width) + (100% - var(--sl-content-width) - var(--sl-sidebar-width)) / 2)}}.starlight-aside{padding:1rem;border-inline-start:.25rem solid var(--sl-color-asides-border);color:var(--sl-color-white)}.starlight-aside--note{--sl-color-asides-text-accent: var(--sl-color-blue-high);--sl-color-asides-border: var(--sl-color-blue);background-color:var(--sl-color-blue-low)}.starlight-aside--tip{--sl-color-asides-text-accent: var(--sl-color-purple-high);--sl-color-asides-border: var(--sl-color-purple);background-color:var(--sl-color-purple-low)}.starlight-aside--caution{--sl-color-asides-text-accent: var(--sl-color-orange-high);--sl-color-asides-border: var(--sl-color-orange);background-color:var(--sl-color-orange-low)}.starlight-aside--danger{--sl-color-asides-text-accent: var(--sl-color-red-high);--sl-color-asides-border: var(--sl-color-red);background-color:var(--sl-color-red-low)}.starlight-aside__title{display:flex;gap:.5rem;align-items:center;font-size:var(--sl-text-h5);font-weight:600;line-height:var(--sl-line-height-headings);color:var(--sl-color-asides-text-accent)}.starlight-aside__icon{font-size:1.333em;width:1em;height:1em}.starlight-aside__title+.starlight-aside__content{margin-top:.5rem}.starlight-aside__content a{color:var(--sl-color-asides-text-accent);text-decoration-color:var(--sl-color-asides-text-accent)}.sl-markdown-content{h1{margin-bottom:1rem}.big-page-link{display:block;text-decoration:none;padding:1.2rem 2rem;margin-top:1rem;margin-left:-2rem;border-radius:1rem;h3{margin-top:0}p{color:#b9b9b9;margin-top:.5rem;font-size:110%}}}.sidebar-pane .h3{font-size:var(--sl-text-sm);font-weight:300;img+span{margin-left:.3rem}&.top-level-link{margin-left:0}&:not(:hover,:focus){color:var(--sl-color-text)}}:root,::backdrop{--sl-hue-red: 360;--sl-font-system: "Figtree", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--sl-color-text: #dfd1d7;--sl-color-bg: #1e1b1a;--sl-color-bg-nav: #1e1b1a;--sl-color-bg-sidebar: #1e1b1a;--sl-color-hairline: #221e1d;--sl-color-black: #1e1b1a;--sl-content-width: 45rem;--sl-color-text-accent: #ff6464;--sl-sidebar-item-padding-inline: 0rem;--ec-frm-inlBtnBg: #ff6464;#starlight__sidebar ul ul li{border-inline-start:none;font-weight:300}#starlight__sidebar summary{color:#ff6464}.content-panel{margin-right:14vw;margin-left:4vw}.header{border:none}.expressive-code{box-shadow:0 2px 4px #00000040;border-radius:8px}.expressive-code .frame pre{border-radius:8px;background:#221f1f;border:.6px solid #342f2f}.expressive-code .frame{--code-background: #00000000}.expressive-code pre{border-radius:8px}.content-panel+.content-panel{border-top:none}.sidebar-pane{padding-left:.8rem}--ec-codePadBlk: 2rem;.expressive-code .copy button:before{border:1px none #00000000}}.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}html:not([data-has-toc]){--sl-mobile-toc-height: 0rem}html:not([data-has-sidebar]){--sl-content-width: 67.5rem}html{scroll-padding-top:calc(1.5rem + var(--sl-nav-height) + var(--sl-mobile-toc-height))}main:where(.astro-rwlsmwlq){padding-bottom:3vh}@media (min-width: 50em){:where(.astro-rwlsmwlq)[data-has-sidebar]{--sl-content-inline-start: var(--sl-sidebar-width)}}@media (min-width: 72em){html{scroll-padding-top:calc(1.5rem + var(--sl-nav-height))}} diff --git a/assets/browser-support.QSDFT8qv.css b/assets/browser-support.QSDFT8qv.css new file mode 100644 index 00000000..fc4e6349 --- /dev/null +++ b/assets/browser-support.QSDFT8qv.css @@ -0,0 +1 @@ +*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5)}::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5)}.\!p-0{padding:0!important}.pa{padding:auto}.px,.px-4{padding-left:1rem;padding-right:1rem}.px-0\.8rem{padding-left:.8rem;padding-right:.8rem}.px-1\.125rem{padding-left:1.125rem;padding-right:1.125rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-0\.4rem{padding-top:.4rem;padding-bottom:.4rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-0\.8125rem{padding-top:.8125rem;padding-bottom:.8125rem}.pb{padding-bottom:1rem}.pb-8{padding-bottom:2rem}.pl-1\.125rem{padding-left:1.125rem}.pr-1\.495rem{padding-right:1.495rem}.pt-6{padding-top:1.5rem}.mt-3{margin-top:.75rem}.block{display:block}.inline-block{display:inline-block}.hidden{display:none}.opacity-50{opacity:.5}.bg-\#8a6e6f{--un-bg-opacity:1;background-color:rgb(138 110 111 / var(--un-bg-opacity))}.bg-\#bddef2{--un-bg-opacity:1;background-color:rgb(189 222 242 / var(--un-bg-opacity))}.bg-\#fffa85{--un-bg-opacity:1;background-color:rgb(255 250 133 / var(--un-bg-opacity))}.bg-\$sl-color-accent{background-color:var(--sl-color-accent)}.border-0{border-width:0px}.rounded-0\.6rem{border-radius:.6rem}.rounded-full{border-radius:9999px}.text-0\.8rem{font-size:.8rem}.text-0\.9rem{font-size:.9rem}.text-1rem{font-size:1rem}.text-pink100{--un-text-opacity:1;color:rgb(252 231 243 / var(--un-text-opacity))}.color-\[hsl\(224\,_10\%\,_10\%\)\]{--un-text-opacity:1;color:hsl(224 10% 10% / var(--un-text-opacity))}.color-\#1e1b1a{--un-text-opacity:1;color:rgb(30 27 26 / var(--un-text-opacity))}.font-500{font-weight:500}.font-600{font-weight:600}.font-700{font-weight:700}.font-800{font-weight:800}.tracking--0\.011em{letter-spacing:-.011em}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.indent{text-indent:1.5rem}.flex{display:flex}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.gap-0\.2{gap:.05rem}.absolute{position:absolute}.relative{position:relative}.h-1em{height:1em}.h-2\.6px{height:2.6px}.h1{height:.25rem}.w-1em{width:1em}.w-full{width:100%}.cursor-pointer{cursor:pointer}.whitespace-nowrap{white-space:nowrap}.overflow-hidden{overflow:hidden}.items-center{align-items:center}.\!self-start{align-self:flex-start!important}.bottom--1{bottom:-.25rem}.left-0{left:0}.transition-650{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.65s}.ease{transition-timing-function:cubic-bezier(.4,0,.2,1)}.translate-x-1rem{--un-translate-x:1rem;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.translate-y--20\%{--un-translate-y:-20%;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))} diff --git a/assets/client.CFbmdnQb.js b/assets/client.CFbmdnQb.js new file mode 100644 index 00000000..19eda97d --- /dev/null +++ b/assets/client.CFbmdnQb.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/signals.module.B8hOACSr.js","assets/preact.module.BP4etL1N.js","assets/hooks.module.vf81mID6.js"])))=>i.map(i=>d[i]); +import{_ as t}from"./preload-helper.B5A3MRH_.js";import{_ as e,B as a,D as n}from"./preact.module.BP4etL1N.js";const s=({value:t,name:a,hydrate:n=!0})=>{if(!t)return null;return e(n?"astro-slot":"astro-static-slot",{name:a,dangerouslySetInnerHTML:{__html:t}})};s.shouldComponentUpdate=()=>!1;var r=s;const o=new Map;var l=s=>async(l,i,{default:u,...c},{client:d})=>{if(!s.hasAttribute("ssr"))return;for(const[t,a]of Object.entries(c))i[t]=e(r,{value:a,name:t});if(s.dataset.preactSignals){const{signal:e}=await t((async()=>{const{signal:t}=await import("./signals.module.B8hOACSr.js");return{signal:t}}),__vite__mapDeps([0,1,2]));let a=JSON.parse(s.dataset.preactSignals);for(const[t,n]of Object.entries(a)){if(!o.has(n)){const a=e(i[t]);o.set(n,a)}i[t]=o.get(n)}}("only"!==d?n:a)(e(l,i,null!=u?e(r,{value:u}):u),s),s.addEventListener("astro:unmount",(()=>a(null,s)),{once:!0})};export{l as default}; diff --git a/assets/ec.3zb7u.js b/assets/ec.3zb7u.js new file mode 100644 index 00000000..8c0e188f --- /dev/null +++ b/assets/ec.3zb7u.js @@ -0,0 +1,3 @@ +try{(()=>{function i(e){if(!e)return;let r=e.getAttribute("tabindex")!==null,t=e.scrollWidth>e.clientWidth;t&&!r?e.setAttribute("tabindex","0"):!t&&r&&e.removeAttribute("tabindex")}function a(e){let r=new Set,t;return new ResizeObserver(u=>{u.forEach(o=>r.add(o.target)),t&&clearTimeout(t),t=setTimeout(()=>{t=void 0,r.forEach(o=>e(o)),r.clear()},250)})}function s(e,r){e.querySelectorAll?.(".expressive-code pre > code").forEach(t=>{let n=t.parentElement;n&&(i(n),r.observe(n))})}var d=a(i);s(document,d);var c=new MutationObserver(e=>e.forEach(r=>r.addedNodes.forEach(t=>{s(t,d)})));c.observe(document.body,{childList:!0,subtree:!0});document.addEventListener("astro:page-load",()=>{s(document,d)});})();}catch(e){console.error("[EC] tabindex-js-module failed:",e)} +try{(()=>{function i(o){let e=document.createElement("pre");Object.assign(e.style,{opacity:"0",pointerEvents:"none",position:"absolute",overflow:"hidden",left:"0",top:"0",width:"20px",height:"20px",webkitUserSelect:"auto",userSelect:"all"}),e.ariaHidden="true",e.textContent=o,document.body.appendChild(e);let a=document.createRange();a.selectNode(e);let n=getSelection();if(!n)return!1;n.removeAllRanges(),n.addRange(a);let r=!1;try{r=document.execCommand("copy")}finally{n.removeAllRanges(),document.body.removeChild(e)}return r}async function l(o){let e=o.currentTarget,a=e.dataset,n=!1,r=a.code.replace(/\u007f/g,` +`);try{await navigator.clipboard.writeText(r),n=!0}catch{n=i(r)}if(!n||e.parentNode?.querySelector(".feedback"))return;let t=document.createElement("div");t.classList.add("feedback"),t.append(a.copied),e.before(t),t.offsetWidth,requestAnimationFrame(()=>t?.classList.add("show"));let c=()=>!t||t.classList.remove("show"),d=()=>{!t||parseFloat(getComputedStyle(t).opacity)>0||(t.remove(),t=void 0)};setTimeout(c,1500),setTimeout(d,2500),e.addEventListener("blur",c),t.addEventListener("transitioncancel",d),t.addEventListener("transitionend",d)}function s(o){o.querySelectorAll?.(".expressive-code .copy button").forEach(e=>e.addEventListener("click",l))}s(document);var u=new MutationObserver(o=>o.forEach(e=>e.addedNodes.forEach(a=>{s(a)})));u.observe(document.body,{childList:!0,subtree:!0});document.addEventListener("astro:page-load",()=>{s(document)});})();}catch(e){console.error("[EC] copy-js-module failed:",e)} \ No newline at end of file diff --git a/assets/ec.wnxus.css b/assets/ec.wnxus.css new file mode 100644 index 00000000..59c3c6b0 --- /dev/null +++ b/assets/ec.wnxus.css @@ -0,0 +1 @@ +.expressive-code{font-family:var(--ec-uiFontFml);font-size:var(--ec-uiFontSize);font-weight:var(--ec-uiFontWg);line-height:var(--ec-uiLineHt);text-size-adjust:none;-webkit-text-size-adjust:none}.expressive-code *:not(path){all:revert;box-sizing:border-box}.expressive-code pre{display:flex;margin:0;padding:0;border:var(--ec-brdWd) solid var(--ec-brdCol);border-radius:calc(var(--ec-brdRad) + var(--ec-brdWd));background:var(--ec-codeBg)}.expressive-code pre:focus-visible{outline:3px solid var(--ec-focusBrd);outline-offset:-3px}.expressive-code pre > code{all:unset;display:block;flex:1 0 100%;padding:var(--ec-codePadBlk) 0;color:var(--ec-codeFg);font-family:var(--ec-codeFontFml);font-size:var(--ec-codeFontSize);font-weight:var(--ec-codeFontWg);line-height:var(--ec-codeLineHt)}.expressive-code pre{overflow-x:auto}.expressive-code pre.wrap .ec-line .code{white-space:pre-wrap;overflow-wrap:break-word;min-width:min(20ch, var(--ecMaxLine, 20ch))}.expressive-code pre.wrap .ec-line .code span.indent{white-space:pre}.expressive-code pre::-webkit-scrollbar,.expressive-code pre::-webkit-scrollbar-track{background-color:inherit;border-radius:calc(var(--ec-brdRad) + var(--ec-brdWd));border-top-left-radius:0;border-top-right-radius:0}.expressive-code pre::-webkit-scrollbar-thumb{background-color:var(--ec-sbThumbCol);border:4px solid transparent;background-clip:content-box;border-radius:10px}.expressive-code pre::-webkit-scrollbar-thumb:hover{background-color:var(--ec-sbThumbHoverCol)}.expressive-code .ec-line{direction:ltr;unicode-bidi:isolate;display:grid;grid-template-areas:'gutter code';grid-template-columns:auto 1fr;position:relative}.expressive-code .ec-line .gutter{grid-area:gutter;color:var(--ec-gtrFg)}.expressive-code .ec-line .gutter > *{pointer-events:none;user-select:none;-webkit-user-select:none}.expressive-code .ec-line .gutter ~ .code{--ecLineBrdCol:var(--ec-gtrBrdCol)}.expressive-code .ec-line.highlight .gutter{color:var(--ec-gtrHlFg)}.expressive-code .ec-line .code{grid-area:code;position:relative;box-sizing:content-box;padding-inline-start:calc(var(--ecIndent, 0ch) + var(--ec-codePadInl) - var(--ecGtrBrdWd));padding-inline-end:var(--ec-codePadInl);text-indent:calc(var(--ecIndent, 0ch) * -1)}.expressive-code .ec-line .code::before,.expressive-code .ec-line .code::after,.expressive-code .ec-line .code :where(*){text-indent:0}.expressive-code .ec-line .code{--ecGtrBrdWd:var(--ec-gtrBrdWd);border-inline-start:var(--ecGtrBrdWd) solid var(--ecLineBrdCol, transparent)}.expressive-code :nth-child(1 of .ec-line) .code{padding-inline-end:calc(2rem + var(--ec-codePadInl))}.expressive-code .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.expressive-code .ec-line.mark{--tmLineBgCol:var(--ec-tm-markBg)}.expressive-code .ec-line.mark .code{--ecLineBrdCol:var(--ec-tm-markBrdCol)}.expressive-code .ec-line.ins{--tmLineBgCol:var(--ec-tm-insBg);--tmLabel:var(--ec-tm-insDiffIndContent)}.expressive-code .ec-line.ins .code{--ecLineBrdCol:var(--ec-tm-insBrdCol)}.expressive-code .ec-line.ins .code::before{color:var(--ec-tm-insDiffIndCol)}.expressive-code .ec-line.del{--tmLineBgCol:var(--ec-tm-delBg);--tmLabel:var(--ec-tm-delDiffIndContent)}.expressive-code .ec-line.del .code{--ecLineBrdCol:var(--ec-tm-delBrdCol)}.expressive-code .ec-line.del .code::before{color:var(--ec-tm-delDiffIndCol)}.expressive-code .ec-line.mark,.expressive-code .ec-line.ins,.expressive-code .ec-line.del{background:var(--tmLineBgCol)}.expressive-code .ec-line.mark .code,.expressive-code .ec-line.ins .code,.expressive-code .ec-line.del .code{--ecGtrBrdWd:var(--ec-tm-lineMarkerAccentWd)}.expressive-code .ec-line.mark .code::before,.expressive-code .ec-line.ins .code::before,.expressive-code .ec-line.del .code::before{display:block;position:absolute;left:0;box-sizing:border-box;content:var(--tmLabel, ' ');padding-inline-start:var(--ec-tm-lineDiffIndMargLeft);text-align:center;white-space:pre}.expressive-code .ec-line.mark.tm-label .code::before,.expressive-code .ec-line.ins.tm-label .code::before,.expressive-code .ec-line.del.tm-label .code::before{background:var(--ecLineBrdCol);padding:0 calc(var(--ec-tm-lineMarkerLabelPadInl) + var(--ec-tm-lineMarkerAccentWd)) 0 var(--ec-tm-lineMarkerLabelPadInl);color:var(--ec-tm-lineMarkerLabelCol)}.expressive-code .ec-line mark{--tmInlineBgCol:var(--ec-tm-markBg);--tmInlineBrdCol:var(--ec-tm-markBrdCol)}.expressive-code .ec-line ins{--tmInlineBgCol:var(--ec-tm-insBg);--tmInlineBrdCol:var(--ec-tm-insBrdCol)}.expressive-code .ec-line del{--tmInlineBgCol:var(--ec-tm-delBg);--tmInlineBrdCol:var(--ec-tm-delBrdCol)}.expressive-code .ec-line mark,.expressive-code .ec-line ins,.expressive-code .ec-line del{all:unset;display:inline-block;position:relative;--tmBrdL:var(--ec-tm-inlMarkerBrdWd);--tmBrdR:var(--ec-tm-inlMarkerBrdWd);--tmRadL:var(--ec-tm-inlMarkerBrdRad);--tmRadR:var(--ec-tm-inlMarkerBrdRad);margin-inline:0.025rem;padding-inline:var(--ec-tm-inlMarkerPad);border-radius:var(--tmRadL) var(--tmRadR) var(--tmRadR) var(--tmRadL);background:var(--tmInlineBgCol);background-clip:padding-box}.expressive-code .ec-line mark.open-start,.expressive-code .ec-line ins.open-start,.expressive-code .ec-line del.open-start{margin-inline-start:0;padding-inline-start:0;--tmBrdL:0px;--tmRadL:0}.expressive-code .ec-line mark.open-end,.expressive-code .ec-line ins.open-end,.expressive-code .ec-line del.open-end{margin-inline-end:0;padding-inline-end:0;--tmBrdR:0px;--tmRadR:0}.expressive-code .ec-line mark::before,.expressive-code .ec-line ins::before,.expressive-code .ec-line del::before{content:'';position:absolute;pointer-events:none;display:inline-block;inset:0;border-radius:var(--tmRadL) var(--tmRadR) var(--tmRadR) var(--tmRadL);border:var(--ec-tm-inlMarkerBrdWd) solid var(--tmInlineBrdCol);border-inline-width:var(--tmBrdL) var(--tmBrdR)}.expressive-code .frame{all:unset;position:relative;display:block;--header-border-radius:calc(var(--ec-brdRad) + var(--ec-brdWd));--tab-border-radius:calc(var(--ec-frm-edTabBrdRad) + var(--ec-brdWd));--button-spacing:0.4rem;--code-background:var(--ec-frm-edBg);border-radius:var(--header-border-radius);box-shadow:var(--ec-frm-frameBoxShdCssVal)}.expressive-code .frame .header{display:none;z-index:1;position:relative;border-radius:var(--header-border-radius) var(--header-border-radius) 0 0}.expressive-code .frame.has-title pre,.expressive-code .frame.has-title code,.expressive-code .frame.is-terminal pre,.expressive-code .frame.is-terminal code{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.expressive-code .frame .title:empty:before{content:'\a0'}.expressive-code .frame.has-title:not(.is-terminal){--button-spacing:calc(1.9rem + 2 * (var(--ec-uiPadBlk) + var(--ec-frm-edActTabIndHt)))}.expressive-code .frame.has-title:not(.is-terminal) .title{position:relative;color:var(--ec-frm-edActTabFg);background:var(--ec-frm-edActTabBg);background-clip:padding-box;margin-block-start:var(--ec-frm-edTabsMargBlkStart);padding:calc(var(--ec-uiPadBlk) + var(--ec-frm-edActTabIndHt)) var(--ec-uiPadInl);border:var(--ec-brdWd) solid var(--ec-frm-edActTabBrdCol);border-radius:var(--tab-border-radius) var(--tab-border-radius) 0 0;border-bottom:none;overflow:hidden}.expressive-code .frame.has-title:not(.is-terminal) .title::after{content:'';position:absolute;pointer-events:none;inset:0;border-top:var(--ec-frm-edActTabIndHt) solid var(--ec-frm-edActTabIndTopCol);border-bottom:var(--ec-frm-edActTabIndHt) solid var(--ec-frm-edActTabIndBtmCol)}.expressive-code .frame.has-title:not(.is-terminal) .header{display:flex;background:linear-gradient(to top, var(--ec-frm-edTabBarBrdBtmCol) var(--ec-brdWd), transparent var(--ec-brdWd)),linear-gradient(var(--ec-frm-edTabBarBg), var(--ec-frm-edTabBarBg));background-repeat:no-repeat;padding-inline-start:var(--ec-frm-edTabsMargInlStart)}.expressive-code .frame.has-title:not(.is-terminal) .header::before{content:'';position:absolute;pointer-events:none;inset:0;border:var(--ec-brdWd) solid var(--ec-frm-edTabBarBrdCol);border-radius:inherit;border-bottom:none}.expressive-code .frame.is-terminal{--button-spacing:calc(1.9rem + var(--ec-brdWd) + 2 * var(--ec-uiPadBlk));--code-background:var(--ec-frm-trmBg)}.expressive-code .frame.is-terminal .header{display:flex;align-items:center;justify-content:center;padding-block:var(--ec-uiPadBlk);padding-block-end:calc(var(--ec-uiPadBlk) + var(--ec-brdWd));position:relative;font-weight:500;letter-spacing:0.025ch;color:var(--ec-frm-trmTtbFg);background:var(--ec-frm-trmTtbBg);border:var(--ec-brdWd) solid var(--ec-brdCol);border-bottom:none}.expressive-code .frame.is-terminal .header::before{content:'';position:absolute;pointer-events:none;left:var(--ec-uiPadInl);width:2.1rem;height:0.56rem;line-height:0;background-color:var(--ec-frm-trmTtbDotsFg);opacity:var(--ec-frm-trmTtbDotsOpa);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 16' preserveAspectRatio='xMidYMid meet'%3E%3Ccircle cx='8' cy='8' r='8'/%3E%3Ccircle cx='30' cy='8' r='8'/%3E%3Ccircle cx='52' cy='8' r='8'/%3E%3C/svg%3E");-webkit-mask-repeat:no-repeat;mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 16' preserveAspectRatio='xMidYMid meet'%3E%3Ccircle cx='8' cy='8' r='8'/%3E%3Ccircle cx='30' cy='8' r='8'/%3E%3Ccircle cx='52' cy='8' r='8'/%3E%3C/svg%3E");mask-repeat:no-repeat}.expressive-code .frame.is-terminal .header::after{content:'';position:absolute;pointer-events:none;inset:0;border-bottom:var(--ec-brdWd) solid var(--ec-frm-trmTtbBrdBtmCol)}.expressive-code .frame pre{background:var(--code-background)}.expressive-code .copy{display:flex;gap:0.25rem;flex-direction:row;position:absolute;inset-block-start:calc(var(--ec-brdWd) + var(--button-spacing));inset-inline-end:calc(var(--ec-brdWd) + var(--ec-uiPadInl) / 2);direction:ltr;unicode-bidi:isolate}.expressive-code .copy button{position:relative;align-self:flex-end;margin:0;padding:0;border:none;border-radius:0.2rem;z-index:1;cursor:pointer;transition-property:opacity, background, border-color;transition-duration:0.2s;transition-timing-function:cubic-bezier(0.25, 0.46, 0.45, 0.94);width:2.5rem;height:2.5rem;background:var(--code-background);opacity:0.75}.expressive-code .copy button div{position:absolute;inset:0;border-radius:inherit;background:var(--ec-frm-inlBtnBg);opacity:var(--ec-frm-inlBtnBgIdleOpa);transition-property:inherit;transition-duration:inherit;transition-timing-function:inherit}.expressive-code .copy button::before{content:'';position:absolute;pointer-events:none;inset:0;border-radius:inherit;border:var(--ec-brdWd) solid var(--ec-frm-inlBtnBrd);opacity:var(--ec-frm-inlBtnBrdOpa)}.expressive-code .copy button::after{content:'';position:absolute;pointer-events:none;inset:0;background-color:var(--ec-frm-inlBtnFg);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75'%3E%3Cpath d='M3 19a2 2 0 0 1-1-2V2a2 2 0 0 1 1-1h13a2 2 0 0 1 2 1'/%3E%3Crect x='6' y='5' width='16' height='18' rx='1.5' ry='1.5'/%3E%3C/svg%3E");-webkit-mask-repeat:no-repeat;mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75'%3E%3Cpath d='M3 19a2 2 0 0 1-1-2V2a2 2 0 0 1 1-1h13a2 2 0 0 1 2 1'/%3E%3Crect x='6' y='5' width='16' height='18' rx='1.5' ry='1.5'/%3E%3C/svg%3E");mask-repeat:no-repeat;margin:0.475rem;line-height:0}.expressive-code .copy button:hover,.expressive-code .copy button:focus:focus-visible{opacity:1}.expressive-code .copy button:hover div,.expressive-code .copy button:focus:focus-visible div{opacity:var(--ec-frm-inlBtnBgHoverOrFocusOpa)}.expressive-code .copy button:active{opacity:1}.expressive-code .copy button:active div{opacity:var(--ec-frm-inlBtnBgActOpa)}.expressive-code .copy .feedback{--tooltip-arrow-size:0.35rem;--tooltip-bg:var(--ec-frm-tooltipSuccessBg);color:var(--ec-frm-tooltipSuccessFg);pointer-events:none;user-select:none;-webkit-user-select:none;position:relative;align-self:center;background-color:var(--tooltip-bg);z-index:99;padding:0.125rem 0.75rem;border-radius:0.2rem;margin-inline-end:var(--tooltip-arrow-size);opacity:0;transition-property:opacity, transform;transition-duration:0.2s;transition-timing-function:ease-in-out;transform:translate3d(0, 0.25rem, 0)}.expressive-code .copy .feedback::after{content:'';position:absolute;pointer-events:none;top:calc(50% - var(--tooltip-arrow-size));inset-inline-end:calc(-2 * (var(--tooltip-arrow-size) - 0.5px));border:var(--tooltip-arrow-size) solid transparent;border-inline-start-color:var(--tooltip-bg)}.expressive-code .copy .feedback.show{opacity:1;transform:translate3d(0, 0, 0)}@media (hover: hover){.expressive-code{}.expressive-code .copy button{opacity:0;width:2rem;height:2rem}.expressive-code .frame:hover .copy button:not(:hover),.expressive-code .frame:focus-within :focus-visible ~ .copy button:not(:hover),.expressive-code .frame .copy .feedback.show ~ button:not(:hover){opacity:0.75}}:root,:root:not([data-theme='github-dark-dimmed']) .expressive-code[data-theme='github-dark-dimmed']{--ec-brdRad:0px;--ec-brdWd:1px;--ec-brdCol:#444c56;--ec-codeFontFml:var(--__sl-font-mono);--ec-codeFontSize:var(--sl-text-code);--ec-codeFontWg:400;--ec-codeLineHt:var(--sl-line-height);--ec-codePadBlk:0.75rem;--ec-codePadInl:1rem;--ec-codeBg:#22272e;--ec-codeFg:#adbac7;--ec-codeSelBg:#264f78;--ec-gtrFg:#6e7884;--ec-gtrBrdCol:#6e788433;--ec-gtrBrdWd:1.5px;--ec-gtrHlFg:#adbac7c1;--ec-uiFontFml:var(--__sl-font);--ec-uiFontSize:0.9rem;--ec-uiFontWg:400;--ec-uiLineHt:1.65;--ec-uiPadBlk:0.25rem;--ec-uiPadInl:1rem;--ec-uiSelBg:#636e7b66;--ec-uiSelFg:#adbac7;--ec-focusBrd:#316dca;--ec-sbThumbCol:#76839033;--ec-sbThumbHoverCol:#768390ab;--ec-tm-lineMarkerAccentMarg:0rem;--ec-tm-lineMarkerAccentWd:0.15rem;--ec-tm-lineMarkerLabelPadInl:0.2rem;--ec-tm-lineMarkerLabelCol:white;--ec-tm-lineDiffIndMargLeft:0.25rem;--ec-tm-inlMarkerBrdWd:1.5px;--ec-tm-inlMarkerBrdRad:0.2rem;--ec-tm-inlMarkerPad:0.15rem;--ec-tm-insDiffIndContent:'+';--ec-tm-delDiffIndContent:'-';--ec-tm-markBg:#174a9099;--ec-tm-markBrdCol:#4d70bcd0;--ec-tm-insBg:#1e571599;--ec-tm-insBrdCol:#487f3bd0;--ec-tm-insDiffIndCol:#79b169d0;--ec-tm-delBg:#862d2799;--ec-tm-delBrdCol:#b4554bd0;--ec-tm-delDiffIndCol:#ed8779d0;--ec-frm-shdCol:#0000005b;--ec-frm-frameBoxShdCssVal:0.1rem 0.1rem 0.2rem #0000005b;--ec-frm-edActTabBg:#22272e;--ec-frm-edActTabFg:#adbac7;--ec-frm-edActTabBrdCol:transparent;--ec-frm-edActTabIndHt:1px;--ec-frm-edActTabIndTopCol:#ec775c;--ec-frm-edActTabIndBtmCol:#22272e;--ec-frm-edTabsMargInlStart:0;--ec-frm-edTabsMargBlkStart:0;--ec-frm-edTabBrdRad:0px;--ec-frm-edTabBarBg:#1c2128;--ec-frm-edTabBarBrdCol:#444c56;--ec-frm-edTabBarBrdBtmCol:#444c56;--ec-frm-edBg:#22272e;--ec-frm-trmTtbFg:#768390;--ec-frm-trmTtbDotsFg:#768390;--ec-frm-trmTtbDotsOpa:0.15;--ec-frm-trmTtbBg:#22272e;--ec-frm-trmTtbBrdBtmCol:#444c56;--ec-frm-trmBg:#1c2128;--ec-frm-inlBtnFg:#adbac7;--ec-frm-inlBtnBg:#adbac7;--ec-frm-inlBtnBgIdleOpa:0;--ec-frm-inlBtnBgHoverOrFocusOpa:0.2;--ec-frm-inlBtnBgActOpa:0.3;--ec-frm-inlBtnBrd:#adbac7;--ec-frm-inlBtnBrdOpa:0.4;--ec-frm-tooltipSuccessBg:#438345;--ec-frm-tooltipSuccessFg:white}.expressive-code .ec-line :where(span[style^='--']:not([class])),:root:not([data-theme='github-dark-dimmed']) .expressive-code[data-theme='github-dark-dimmed'] .ec-line :where(span[style^='--']:not([class])){color:var(--0, inherit);font-style:var(--0fs, inherit);font-weight:var(--0fw, inherit);text-decoration:var(--0td, inherit)} \ No newline at end of file diff --git a/assets/hoisted.iBdn6T_D.js b/assets/hoisted.iBdn6T_D.js new file mode 100644 index 00000000..765e1185 --- /dev/null +++ b/assets/hoisted.iBdn6T_D.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ui-core.BmpKj71L.js","assets/preload-helper.B5A3MRH_.js"])))=>i.map(i=>d[i]); +import{_ as e}from"./preload-helper.B5A3MRH_.js";function t(){swup.hooks.on("visit:start",(()=>{document.querySelectorAll(".swup.transition-fade:not(.is-previous-container)").forEach((e=>{e instanceof HTMLElement&&(e.style.opacity="0")}))})),swup.hooks.on("content:replace",(()=>{const e=swup.getCurrentUrl();document.querySelectorAll(".page-frame").forEach((e=>{e.querySelectorAll("script").forEach((e=>{if(!e.textContent)return;const t=document.createElement("script");t.textContent=e.textContent;const n=e.parentElement;n&&n.appendChild(t),e.remove()}))}));const t=document.querySelector('.sidebar-content [aria-current="page"]'),n=document.querySelector(`.sidebar-content a[href="${e}"]`);t?.removeAttribute("aria-current"),n?.setAttribute("aria-current","page")}))}"swup"in window?t():document.addEventListener("swup:enable",t);var n="top",r="bottom",o="right",i="left",a="auto",s=[n,r,o,i],c="start",u="end",p="clippingParents",l="viewport",f="popper",d="reference",m=s.reduce((function(e,t){return e.concat([t+"-"+c,t+"-"+u])}),[]),h=[].concat(s,[a]).reduce((function(e,t){return e.concat([t,t+"-"+c,t+"-"+u])}),[]),v=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function g(e){return e?(e.nodeName||"").toLowerCase():null}function y(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function b(e){return e instanceof y(e).Element||e instanceof Element}function w(e){return e instanceof y(e).HTMLElement||e instanceof HTMLElement}function x(e){return"undefined"!=typeof ShadowRoot&&(e instanceof y(e).ShadowRoot||e instanceof ShadowRoot)}const E={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},o=t.elements[e];w(o)&&g(o)&&(Object.assign(o.style,n),Object.keys(r).forEach((function(e){var t=r[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var r=t.elements[e],o=t.attributes[e]||{},i=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});w(r)&&g(r)&&(Object.assign(r.style,i),Object.keys(o).forEach((function(e){r.removeAttribute(e)})))}))}},requires:["computeStyles"]};function O(e){return e.split("-")[0]}var T=Math.max,A=Math.min,L=Math.round;function k(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function S(){return!/^((?!chrome|android).)*safari/i.test(k())}function D(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var r=e.getBoundingClientRect(),o=1,i=1;t&&w(e)&&(o=e.offsetWidth>0&&L(r.width)/e.offsetWidth||1,i=e.offsetHeight>0&&L(r.height)/e.offsetHeight||1);var a=(b(e)?y(e):window).visualViewport,s=!S()&&n,c=(r.left+(s&&a?a.offsetLeft:0))/o,u=(r.top+(s&&a?a.offsetTop:0))/i,p=r.width/o,l=r.height/i;return{width:p,height:l,top:u,right:c+p,bottom:u+l,left:c,x:c,y:u}}function C(e){var t=D(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function j(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&x(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function M(e){return y(e).getComputedStyle(e)}function H(e){return["table","td","th"].indexOf(g(e))>=0}function q(e){return((b(e)?e.ownerDocument:e.document)||window.document).documentElement}function I(e){return"html"===g(e)?e:e.assignedSlot||e.parentNode||(x(e)?e.host:null)||q(e)}function R(e){return w(e)&&"fixed"!==M(e).position?e.offsetParent:null}function P(e){for(var t=y(e),n=R(e);n&&H(n)&&"static"===M(n).position;)n=R(n);return n&&("html"===g(n)||"body"===g(n)&&"static"===M(n).position)?t:n||function(e){var t=/firefox/i.test(k());if(/Trident/i.test(k())&&w(e)&&"fixed"===M(e).position)return null;var n=I(e);for(x(n)&&(n=n.host);w(n)&&["html","body"].indexOf(g(n))<0;){var r=M(n);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||t&&"filter"===r.willChange||t&&r.filter&&"none"!==r.filter)return n;n=n.parentNode}return null}(e)||t}function V(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function B(e,t,n){return T(e,A(t,n))}function W(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function _(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}const N={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,a=e.state,c=e.name,u=e.options,p=a.elements.arrow,l=a.modifiersData.popperOffsets,f=O(a.placement),d=V(f),m=[i,o].indexOf(f)>=0?"height":"width";if(p&&l){var h=function(e,t){return W("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:_(e,s))}(u.padding,a),v=C(p),g="y"===d?n:i,y="y"===d?r:o,b=a.rects.reference[m]+a.rects.reference[d]-l[d]-a.rects.popper[m],w=l[d]-a.rects.reference[d],x=P(p),E=x?"y"===d?x.clientHeight||0:x.clientWidth||0:0,T=b/2-w/2,A=h[g],L=E-v[m]-h[y],k=E/2-v[m]/2+T,S=B(A,k,L),D=d;a.modifiersData[c]=((t={})[D]=S,t.centerOffset=S-k,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&j(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function U(e){return e.split("-")[1]}var $={top:"auto",right:"auto",bottom:"auto",left:"auto"};function F(e){var t,a=e.popper,s=e.popperRect,c=e.placement,p=e.variation,l=e.offsets,f=e.position,d=e.gpuAcceleration,m=e.adaptive,h=e.roundOffsets,v=e.isFixed,g=l.x,b=void 0===g?0:g,w=l.y,x=void 0===w?0:w,E="function"==typeof h?h({x:b,y:x}):{x:b,y:x};b=E.x,x=E.y;var O=l.hasOwnProperty("x"),T=l.hasOwnProperty("y"),A=i,k=n,S=window;if(m){var D=P(a),C="clientHeight",j="clientWidth";if(D===y(a)&&"static"!==M(D=q(a)).position&&"absolute"===f&&(C="scrollHeight",j="scrollWidth"),c===n||(c===i||c===o)&&p===u)k=r,x-=(v&&D===S&&S.visualViewport?S.visualViewport.height:D[C])-s.height,x*=d?1:-1;if(c===i||(c===n||c===r)&&p===u)A=o,b-=(v&&D===S&&S.visualViewport?S.visualViewport.width:D[j])-s.width,b*=d?1:-1}var H,I=Object.assign({position:f},m&&$),R=!0===h?function(e,t){var n=e.x,r=e.y,o=t.devicePixelRatio||1;return{x:L(n*o)/o||0,y:L(r*o)/o||0}}({x:b,y:x},y(a)):{x:b,y:x};return b=R.x,x=R.y,d?Object.assign({},I,((H={})[k]=T?"0":"",H[A]=O?"0":"",H.transform=(S.devicePixelRatio||1)<=1?"translate("+b+"px, "+x+"px)":"translate3d("+b+"px, "+x+"px, 0)",H)):Object.assign({},I,((t={})[k]=T?x+"px":"",t[A]=O?b+"px":"",t.transform="",t))}var K={passive:!0};var z={left:"right",right:"left",bottom:"top",top:"bottom"};function Y(e){return e.replace(/left|right|bottom|top/g,(function(e){return z[e]}))}var J={start:"end",end:"start"};function X(e){return e.replace(/start|end/g,(function(e){return J[e]}))}function G(e){var t=y(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function Q(e){return D(q(e)).left+G(e).scrollLeft}function Z(e){var t=M(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function ee(e){return["html","body","#document"].indexOf(g(e))>=0?e.ownerDocument.body:w(e)&&Z(e)?e:ee(I(e))}function te(e,t){var n;void 0===t&&(t=[]);var r=ee(e),o=r===(null==(n=e.ownerDocument)?void 0:n.body),i=y(r),a=o?[i].concat(i.visualViewport||[],Z(r)?r:[]):r,s=t.concat(a);return o?s:s.concat(te(I(a)))}function ne(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function re(e,t,n){return t===l?ne(function(e,t){var n=y(e),r=q(e),o=n.visualViewport,i=r.clientWidth,a=r.clientHeight,s=0,c=0;if(o){i=o.width,a=o.height;var u=S();(u||!u&&"fixed"===t)&&(s=o.offsetLeft,c=o.offsetTop)}return{width:i,height:a,x:s+Q(e),y:c}}(e,n)):b(t)?function(e,t){var n=D(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):ne(function(e){var t,n=q(e),r=G(e),o=null==(t=e.ownerDocument)?void 0:t.body,i=T(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),a=T(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),s=-r.scrollLeft+Q(e),c=-r.scrollTop;return"rtl"===M(o||n).direction&&(s+=T(n.clientWidth,o?o.clientWidth:0)-i),{width:i,height:a,x:s,y:c}}(q(e)))}function oe(e,t,n,r){var o="clippingParents"===t?function(e){var t=te(I(e)),n=["absolute","fixed"].indexOf(M(e).position)>=0&&w(e)?P(e):e;return b(n)?t.filter((function(e){return b(e)&&j(e,n)&&"body"!==g(e)})):[]}(e):[].concat(t),i=[].concat(o,[n]),a=i[0],s=i.reduce((function(t,n){var o=re(e,n,r);return t.top=T(o.top,t.top),t.right=A(o.right,t.right),t.bottom=A(o.bottom,t.bottom),t.left=T(o.left,t.left),t}),re(e,a,r));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function ie(e){var t,a=e.reference,s=e.element,p=e.placement,l=p?O(p):null,f=p?U(p):null,d=a.x+a.width/2-s.width/2,m=a.y+a.height/2-s.height/2;switch(l){case n:t={x:d,y:a.y-s.height};break;case r:t={x:d,y:a.y+a.height};break;case o:t={x:a.x+a.width,y:m};break;case i:t={x:a.x-s.width,y:m};break;default:t={x:a.x,y:a.y}}var h=l?V(l):null;if(null!=h){var v="y"===h?"height":"width";switch(f){case c:t[h]=t[h]-(a[v]/2-s[v]/2);break;case u:t[h]=t[h]+(a[v]/2-s[v]/2)}}return t}function ae(e,t){void 0===t&&(t={});var i=t,a=i.placement,c=void 0===a?e.placement:a,u=i.strategy,m=void 0===u?e.strategy:u,h=i.boundary,v=void 0===h?p:h,g=i.rootBoundary,y=void 0===g?l:g,w=i.elementContext,x=void 0===w?f:w,E=i.altBoundary,O=void 0!==E&&E,T=i.padding,A=void 0===T?0:T,L=W("number"!=typeof A?A:_(A,s)),k=x===f?d:f,S=e.rects.popper,C=e.elements[O?k:x],j=oe(b(C)?C:C.contextElement||q(e.elements.popper),v,y,m),M=D(e.elements.reference),H=ie({reference:M,element:S,strategy:"absolute",placement:c}),I=ne(Object.assign({},S,H)),R=x===f?I:M,P={top:j.top-R.top+L.top,bottom:R.bottom-j.bottom+L.bottom,left:j.left-R.left+L.left,right:R.right-j.right+L.right},V=e.modifiersData.offset;if(x===f&&V){var B=V[c];Object.keys(P).forEach((function(e){var t=[o,r].indexOf(e)>=0?1:-1,i=[n,r].indexOf(e)>=0?"y":"x";P[e]+=B[i]*t}))}return P}function se(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,c=n.flipVariations,u=n.allowedAutoPlacements,p=void 0===u?h:u,l=U(r),f=l?c?m:m.filter((function(e){return U(e)===l})):s,d=f.filter((function(e){return p.indexOf(e)>=0}));0===d.length&&(d=f);var v=d.reduce((function(t,n){return t[n]=ae(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[O(n)],t}),{});return Object.keys(v).sort((function(e,t){return v[e]-v[t]}))}const ce={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,s=e.options,u=e.name;if(!t.modifiersData[u]._skip){for(var p=s.mainAxis,l=void 0===p||p,f=s.altAxis,d=void 0===f||f,m=s.fallbackPlacements,h=s.padding,v=s.boundary,g=s.rootBoundary,y=s.altBoundary,b=s.flipVariations,w=void 0===b||b,x=s.allowedAutoPlacements,E=t.options.placement,T=O(E),A=m||(T===E||!w?[Y(E)]:function(e){if(O(e)===a)return[];var t=Y(e);return[X(e),t,X(t)]}(E)),L=[E].concat(A).reduce((function(e,n){return e.concat(O(n)===a?se(t,{placement:n,boundary:v,rootBoundary:g,padding:h,flipVariations:w,allowedAutoPlacements:x}):n)}),[]),k=t.rects.reference,S=t.rects.popper,D=new Map,C=!0,j=L[0],M=0;M=0,P=R?"width":"height",V=ae(t,{placement:H,boundary:v,rootBoundary:g,altBoundary:y,padding:h}),B=R?I?o:i:I?r:n;k[P]>S[P]&&(B=Y(B));var W=Y(B),_=[];if(l&&_.push(V[q]<=0),d&&_.push(V[B]<=0,V[W]<=0),_.every((function(e){return e}))){j=H,C=!1;break}D.set(H,_)}if(C)for(var N=function(e){var t=L.find((function(t){var n=D.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return j=t,"break"},$=w?3:1;$>0;$--){if("break"===N($))break}t.placement!==j&&(t.modifiersData[u]._skip=!0,t.placement=j,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ue(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function pe(e){return[n,o,r,i].some((function(t){return e[t]>=0}))}const le={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,r=e.options,a=e.name,s=r.offset,c=void 0===s?[0,0]:s,u=h.reduce((function(e,r){return e[r]=function(e,t,r){var a=O(e),s=[i,n].indexOf(a)>=0?-1:1,c="function"==typeof r?r(Object.assign({},t,{placement:e})):r,u=c[0],p=c[1];return u=u||0,p=(p||0)*s,[i,o].indexOf(a)>=0?{x:p,y:u}:{x:u,y:p}}(r,t.rects,c),e}),{}),p=u[t.placement],l=p.x,f=p.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=f),t.modifiersData[a]=u}};const fe={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,a=e.options,s=e.name,u=a.mainAxis,p=void 0===u||u,l=a.altAxis,f=void 0!==l&&l,d=a.boundary,m=a.rootBoundary,h=a.altBoundary,v=a.padding,g=a.tether,y=void 0===g||g,b=a.tetherOffset,w=void 0===b?0:b,x=ae(t,{boundary:d,rootBoundary:m,padding:v,altBoundary:h}),E=O(t.placement),L=U(t.placement),k=!L,S=V(E),D="x"===S?"y":"x",j=t.modifiersData.popperOffsets,M=t.rects.reference,H=t.rects.popper,q="function"==typeof w?w(Object.assign({},t.rects,{placement:t.placement})):w,I="number"==typeof q?{mainAxis:q,altAxis:q}:Object.assign({mainAxis:0,altAxis:0},q),R=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,W={x:0,y:0};if(j){if(p){var _,N="y"===S?n:i,$="y"===S?r:o,F="y"===S?"height":"width",K=j[S],z=K+x[N],Y=K-x[$],J=y?-H[F]/2:0,X=L===c?M[F]:H[F],G=L===c?-H[F]:-M[F],Q=t.elements.arrow,Z=y&&Q?C(Q):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[N],ne=ee[$],re=B(0,M[F],Z[F]),oe=k?M[F]/2-J-re-te-I.mainAxis:X-re-te-I.mainAxis,ie=k?-M[F]/2+J+re+ne+I.mainAxis:G+re+ne+I.mainAxis,se=t.elements.arrow&&P(t.elements.arrow),ce=se?"y"===S?se.clientTop||0:se.clientLeft||0:0,ue=null!=(_=null==R?void 0:R[S])?_:0,pe=K+ie-ue,le=B(y?A(z,K+oe-ue-ce):z,K,y?T(Y,pe):Y);j[S]=le,W[S]=le-K}if(f){var fe,de="x"===S?n:i,me="x"===S?r:o,he=j[D],ve="y"===D?"height":"width",ge=he+x[de],ye=he-x[me],be=-1!==[n,i].indexOf(E),we=null!=(fe=null==R?void 0:R[D])?fe:0,xe=be?ge:he-M[ve]-H[ve]-we+I.altAxis,Ee=be?he+M[ve]+H[ve]-we-I.altAxis:ye,Oe=y&&be?function(e,t,n){var r=B(e,t,n);return r>n?n:r}(xe,he,Ee):B(y?xe:ge,he,y?Ee:ye);j[D]=Oe,W[D]=Oe-he}t.modifiersData[s]=W}},requiresIfExists:["offset"]};function de(e,t,n){void 0===n&&(n=!1);var r,o,i=w(t),a=w(t)&&function(e){var t=e.getBoundingClientRect(),n=L(t.width)/e.offsetWidth||1,r=L(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(t),s=q(t),c=D(e,a,n),u={scrollLeft:0,scrollTop:0},p={x:0,y:0};return(i||!i&&!n)&&(("body"!==g(t)||Z(s))&&(u=(r=t)!==y(r)&&w(r)?{scrollLeft:(o=r).scrollLeft,scrollTop:o.scrollTop}:G(r)),w(t)?((p=D(t,!0)).x+=t.clientLeft,p.y+=t.clientTop):s&&(p.x=Q(s))),{x:c.left+u.scrollLeft-p.x,y:c.top+u.scrollTop-p.y,width:c.width,height:c.height}}function me(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}var he={placement:"bottom",modifiers:[],strategy:"absolute"};function ve(){for(var e=arguments.length,t=new Array(e),n=0;n-1}function ke(e,t){return"function"==typeof e?e.apply(void 0,t):e}function Se(e,t){return 0===t?e:function(r){clearTimeout(n),n=setTimeout((function(){e(r)}),t)};var n}function De(e){return[].concat(e)}function Ce(e,t){-1===e.indexOf(t)&&e.push(t)}function je(e){return[].slice.call(e)}function Me(e){return Object.keys(e).reduce((function(t,n){return void 0!==e[n]&&(t[n]=e[n]),t}),{})}function He(){return document.createElement("div")}function qe(e){return["Element","Fragment"].some((function(t){return Le(e,t)}))}function Ie(e){return qe(e)?[e]:function(e){return Le(e,"NodeList")}(e)?je(e):Array.isArray(e)?e:je(document.querySelectorAll(e))}function Re(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function Pe(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function Ve(e,t,n){var r=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[r](t,n)}))}function Be(e,t){for(var n=t;n;){var r;if(e.contains(n))return!0;n=null==n.getRootNode||null==(r=n.getRootNode())?void 0:r.host}return!1}var We={isTouch:!1},_e=0;function Ne(){We.isTouch||(We.isTouch=!0,window.performance&&document.addEventListener("mousemove",Ue))}function Ue(){var e=performance.now();e-_e<20&&(We.isTouch=!1,document.removeEventListener("mousemove",Ue)),_e=e}function $e(){var e,t=document.activeElement;if((e=t)&&e._tippy&&e._tippy.reference===e){var n=t._tippy;t.blur&&!n.state.isVisible&&t.blur()}}var Fe=!!("undefined"!=typeof window&&"undefined"!=typeof document)&&!!window.msCrypto,Ke=Object.assign({appendTo:Te,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),ze=Object.keys(Ke);function Ye(e){var t=(e.plugins||[]).reduce((function(t,n){var r,o=n.name,i=n.defaultValue;o&&(t[o]=void 0!==e[o]?e[o]:null!=(r=Ke[o])?r:i);return t}),{});return Object.assign({},e,t)}function Je(e,t){var n=Object.assign({},t,{content:ke(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(Ye(Object.assign({},Ke,{plugins:t}))):ze).reduce((function(t,n){var r=(e.getAttribute("data-tippy-"+n)||"").trim();if(!r)return t;if("content"===n)t[n]=r;else try{t[n]=JSON.parse(r)}catch(o){t[n]=r}return t}),{})}(e,t.plugins));return n.aria=Object.assign({},Ke.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?t.interactive:n.aria.expanded,content:"auto"===n.aria.content?t.interactive?null:"describedby":n.aria.content},n}var Xe=function(){return"innerHTML"};function Ge(e,t){e[Xe()]=t}function Qe(e){var t=He();return!0===e?t.className=xe:(t.className=Ee,qe(e)?t.appendChild(e):Ge(t,e)),t}function Ze(e,t){qe(t.content)?(Ge(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?Ge(e,t.content):e.textContent=t.content)}function et(e){var t=e.firstElementChild,n=je(t.children);return{box:t,content:n.find((function(e){return e.classList.contains(be)})),arrow:n.find((function(e){return e.classList.contains(xe)||e.classList.contains(Ee)})),backdrop:n.find((function(e){return e.classList.contains(we)}))}}function tt(e){var t=He(),n=He();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=He();function o(n,r){var o=et(t),i=o.box,a=o.content,s=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||Ze(a,e.props),r.arrow?s?n.arrow!==r.arrow&&(i.removeChild(s),i.appendChild(Qe(r.arrow))):i.appendChild(Qe(r.arrow)):s&&i.removeChild(s)}return r.className=be,r.setAttribute("data-state","hidden"),Ze(r,e.props),t.appendChild(n),n.appendChild(r),o(e.props,e.props),{popper:t,onUpdate:o}}tt.$$tippy=!0;var nt=1,rt=[],ot=[];function it(e,t){var n,r,o,i,a,s,c,u,p=Je(e,Object.assign({},Ke,Ye(Me(t)))),l=!1,f=!1,d=!1,m=!1,h=[],v=Se(z,p.interactiveDebounce),g=nt++,y=(u=p.plugins).filter((function(e,t){return u.indexOf(e)===t})),b={id:g,reference:e,popper:He(),popperInstance:null,props:p,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:y,clearDelayTimeouts:function(){clearTimeout(n),clearTimeout(r),cancelAnimationFrame(o)},setProps:function(t){if(b.state.isDestroyed)return;H("onBeforeUpdate",[b,t]),F();var n=b.props,r=Je(e,Object.assign({},n,Me(t),{ignoreAttributes:!0}));b.props=r,$(),n.interactiveDebounce!==r.interactiveDebounce&&(R(),v=Se(z,r.interactiveDebounce));n.triggerTarget&&!r.triggerTarget?De(n.triggerTarget).forEach((function(e){e.removeAttribute("aria-expanded")})):r.triggerTarget&&e.removeAttribute("aria-expanded");I(),M(),E&&E(n,r);b.popperInstance&&(G(),Z().forEach((function(e){requestAnimationFrame(e._tippy.popperInstance.forceUpdate)})));H("onAfterUpdate",[b,t])},setContent:function(e){b.setProps({content:e})},show:function(){var e=b.state.isVisible,t=b.state.isDestroyed,n=!b.state.isEnabled,r=We.isTouch&&!b.props.touch,o=Ae(b.props.duration,0,Ke.duration);if(e||t||n||r)return;if(S().hasAttribute("disabled"))return;if(H("onShow",[b],!1),!1===b.props.onShow(b))return;b.state.isVisible=!0,k()&&(x.style.visibility="visible");M(),W(),b.state.isMounted||(x.style.transition="none");if(k()){var i=C();Re([i.box,i.content],0)}s=function(){var e;if(b.state.isVisible&&!m){if(m=!0,x.offsetHeight,x.style.transition=b.props.moveTransition,k()&&b.props.animation){var t=C(),n=t.box,r=t.content;Re([n,r],o),Pe([n,r],"visible")}q(),I(),Ce(ot,b),null==(e=b.popperInstance)||e.forceUpdate(),H("onMount",[b]),b.props.animation&&k()&&function(e,t){N(e,t)}(o,(function(){b.state.isShown=!0,H("onShown",[b])}))}},function(){var e,t=b.props.appendTo,n=S();e=b.props.interactive&&t===Te||"parent"===t?n.parentNode:ke(t,[n]);e.contains(x)||e.appendChild(x);b.state.isMounted=!0,G()}()},hide:function(){var e=!b.state.isVisible,t=b.state.isDestroyed,n=!b.state.isEnabled,r=Ae(b.props.duration,1,Ke.duration);if(e||t||n)return;if(H("onHide",[b],!1),!1===b.props.onHide(b))return;b.state.isVisible=!1,b.state.isShown=!1,m=!1,l=!1,k()&&(x.style.visibility="hidden");if(R(),_(),M(!0),k()){var o=C(),i=o.box,a=o.content;b.props.animation&&(Re([i,a],r),Pe([i,a],"hidden"))}q(),I(),b.props.animation?k()&&function(e,t){N(e,(function(){!b.state.isVisible&&x.parentNode&&x.parentNode.contains(x)&&t()}))}(r,b.unmount):b.unmount()},hideWithInteractivity:function(e){D().addEventListener("mousemove",v),Ce(rt,v),v(e)},enable:function(){b.state.isEnabled=!0},disable:function(){b.hide(),b.state.isEnabled=!1},unmount:function(){b.state.isVisible&&b.hide();if(!b.state.isMounted)return;Q(),Z().forEach((function(e){e._tippy.unmount()})),x.parentNode&&x.parentNode.removeChild(x);ot=ot.filter((function(e){return e!==b})),b.state.isMounted=!1,H("onHidden",[b])},destroy:function(){if(b.state.isDestroyed)return;b.clearDelayTimeouts(),b.unmount(),F(),delete e._tippy,b.state.isDestroyed=!0,H("onDestroy",[b])}};if(!p.render)return b;var w=p.render(b),x=w.popper,E=w.onUpdate;x.setAttribute("data-tippy-root",""),x.id="tippy-"+b.id,b.popper=x,e._tippy=b,x._tippy=b;var O=y.map((function(e){return e.fn(b)})),T=e.hasAttribute("aria-expanded");return $(),I(),M(),H("onCreate",[b]),p.showOnCreate&&ee(),x.addEventListener("mouseenter",(function(){b.props.interactive&&b.state.isVisible&&b.clearDelayTimeouts()})),x.addEventListener("mouseleave",(function(){b.props.interactive&&b.props.trigger.indexOf("mouseenter")>=0&&D().addEventListener("mousemove",v)})),b;function A(){var e=b.props.touch;return Array.isArray(e)?e:[e,0]}function L(){return"hold"===A()[0]}function k(){var e;return!(null==(e=b.props.render)||!e.$$tippy)}function S(){return c||e}function D(){var e,t,n=S().parentNode;return n?null!=(t=De(n)[0])&&null!=(e=t.ownerDocument)&&e.body?t.ownerDocument:document:document}function C(){return et(x)}function j(e){return b.state.isMounted&&!b.state.isVisible||We.isTouch||i&&"focus"===i.type?0:Ae(b.props.delay,e?0:1,Ke.delay)}function M(e){void 0===e&&(e=!1),x.style.pointerEvents=b.props.interactive&&!e?"":"none",x.style.zIndex=""+b.props.zIndex}function H(e,t,n){var r;(void 0===n&&(n=!0),O.forEach((function(n){n[e]&&n[e].apply(n,t)})),n)&&(r=b.props)[e].apply(r,t)}function q(){var t=b.props.aria;if(t.content){var n="aria-"+t.content,r=x.id;De(b.props.triggerTarget||e).forEach((function(e){var t=e.getAttribute(n);if(b.state.isVisible)e.setAttribute(n,t?t+" "+r:r);else{var o=t&&t.replace(r,"").trim();o?e.setAttribute(n,o):e.removeAttribute(n)}}))}}function I(){!T&&b.props.aria.expanded&&De(b.props.triggerTarget||e).forEach((function(e){b.props.interactive?e.setAttribute("aria-expanded",b.state.isVisible&&e===S()?"true":"false"):e.removeAttribute("aria-expanded")}))}function R(){D().removeEventListener("mousemove",v),rt=rt.filter((function(e){return e!==v}))}function P(t){if(!We.isTouch||!d&&"mousedown"!==t.type){var n=t.composedPath&&t.composedPath()[0]||t.target;if(!b.props.interactive||!Be(x,n)){if(De(b.props.triggerTarget||e).some((function(e){return Be(e,n)}))){if(We.isTouch)return;if(b.state.isVisible&&b.props.trigger.indexOf("click")>=0)return}else H("onClickOutside",[b,t]);!0===b.props.hideOnClick&&(b.clearDelayTimeouts(),b.hide(),f=!0,setTimeout((function(){f=!1})),b.state.isMounted||_())}}}function V(){d=!0}function B(){d=!1}function W(){var e=D();e.addEventListener("mousedown",P,!0),e.addEventListener("touchend",P,Oe),e.addEventListener("touchstart",B,Oe),e.addEventListener("touchmove",V,Oe)}function _(){var e=D();e.removeEventListener("mousedown",P,!0),e.removeEventListener("touchend",P,Oe),e.removeEventListener("touchstart",B,Oe),e.removeEventListener("touchmove",V,Oe)}function N(e,t){var n=C().box;function r(e){e.target===n&&(Ve(n,"remove",r),t())}if(0===e)return t();Ve(n,"remove",a),Ve(n,"add",r),a=r}function U(t,n,r){void 0===r&&(r=!1),De(b.props.triggerTarget||e).forEach((function(e){e.addEventListener(t,n,r),h.push({node:e,eventType:t,handler:n,options:r})}))}function $(){var e;L()&&(U("touchstart",K,{passive:!0}),U("touchend",Y,{passive:!0})),(e=b.props.trigger,e.split(/\s+/).filter(Boolean)).forEach((function(e){if("manual"!==e)switch(U(e,K),e){case"mouseenter":U("mouseleave",Y);break;case"focus":U(Fe?"focusout":"blur",J);break;case"focusin":U("focusout",J)}}))}function F(){h.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),h=[]}function K(e){var t,n=!1;if(b.state.isEnabled&&!X(e)&&!f){var r="focus"===(null==(t=i)?void 0:t.type);i=e,c=e.currentTarget,I(),!b.state.isVisible&&Le(e,"MouseEvent")&&rt.forEach((function(t){return t(e)})),"click"===e.type&&(b.props.trigger.indexOf("mouseenter")<0||l)&&!1!==b.props.hideOnClick&&b.state.isVisible?n=!0:ee(e),"click"===e.type&&(l=!n),n&&!r&&te(e)}}function z(e){var t=e.target,n=S().contains(t)||x.contains(t);"mousemove"===e.type&&n||function(e,t){var n=t.clientX,r=t.clientY;return e.every((function(e){var t=e.popperRect,o=e.popperState,i=e.props.interactiveBorder,a=o.placement.split("-")[0],s=o.modifiersData.offset;if(!s)return!0;var c="bottom"===a?s.top.y:0,u="top"===a?s.bottom.y:0,p="right"===a?s.left.x:0,l="left"===a?s.right.x:0,f=t.top-r+c>i,d=r-t.bottom-u>i,m=t.left-n+p>i,h=n-t.right-l>i;return f||d||m||h}))}(Z().concat(x).map((function(e){var t,n=null==(t=e._tippy.popperInstance)?void 0:t.state;return n?{popperRect:e.getBoundingClientRect(),popperState:n,props:p}:null})).filter(Boolean),e)&&(R(),te(e))}function Y(e){X(e)||b.props.trigger.indexOf("click")>=0&&l||(b.props.interactive?b.hideWithInteractivity(e):te(e))}function J(e){b.props.trigger.indexOf("focusin")<0&&e.target!==S()||b.props.interactive&&e.relatedTarget&&x.contains(e.relatedTarget)||te(e)}function X(e){return!!We.isTouch&&L()!==e.type.indexOf("touch")>=0}function G(){Q();var t=b.props,n=t.popperOptions,r=t.placement,o=t.offset,i=t.getReferenceClientRect,a=t.moveTransition,c=k()?et(x).arrow:null,u=i?{getBoundingClientRect:i,contextElement:i.contextElement||S()}:e,p=[{name:"offset",options:{offset:o}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!a}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var t=e.state;if(k()){var n=C().box;["placement","reference-hidden","escaped"].forEach((function(e){"placement"===e?n.setAttribute("data-placement",t.placement):t.attributes.popper["data-popper-"+e]?n.setAttribute("data-"+e,""):n.removeAttribute("data-"+e)})),t.attributes.popper={}}}}];k()&&c&&p.push({name:"arrow",options:{element:c,padding:3}}),p.push.apply(p,(null==n?void 0:n.modifiers)||[]),b.popperInstance=ye(u,x,Object.assign({},n,{placement:r,onFirstUpdate:s,modifiers:p}))}function Q(){b.popperInstance&&(b.popperInstance.destroy(),b.popperInstance=null)}function Z(){return je(x.querySelectorAll("[data-tippy-root]"))}function ee(e){b.clearDelayTimeouts(),e&&H("onTrigger",[b,e]),W();var t=j(!0),r=A(),o=r[0],i=r[1];We.isTouch&&"hold"===o&&i&&(t=i),t?n=setTimeout((function(){b.show()}),t):b.show()}function te(e){if(b.clearDelayTimeouts(),H("onUntrigger",[b,e]),b.state.isVisible){if(!(b.props.trigger.indexOf("mouseenter")>=0&&b.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(e.type)>=0&&l)){var t=j(!1);t?r=setTimeout((function(){b.state.isVisible&&b.hide()}),t):o=requestAnimationFrame((function(){b.hide()}))}}else _()}}function at(e,t){void 0===t&&(t={});var n=Ke.plugins.concat(t.plugins||[]);document.addEventListener("touchstart",Ne,Oe),window.addEventListener("blur",$e);var r=Object.assign({},t,{plugins:n}),o=Ie(e).reduce((function(e,t){var n=t&&it(t,r);return n&&e.push(n),e}),[]);return qe(e)?o[0]:o}at.defaultProps=Ke,at.setDefaultProps=function(e){Object.keys(e).forEach((function(t){Ke[t]=e[t]}))},at.currentInput=We,Object.assign({},E,{effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow)}}),at.setDefaultProps({render:tt});const st=document.querySelectorAll("[title]"),ct=document.querySelector("[data-tooltips-options]");let ut={};if(ct)try{ut=JSON.parse(ct?.innerHTML)}catch(xt){throw new Error(xt)}const pt={allowHTML:!0,theme:"default",maxWidth:"none",delay:[15,150],placement:"auto",interactive:!0,...ut};for(let Et=0,Ot=st.length;Et{e.currentTarget instanceof HTMLSelectElement&&(window.location.pathname=e.currentTarget.value)}))}}customElements.define("starlight-lang-select",lt);class ft extends HTMLElement{constructor(){super();const t=this.querySelector("button[data-open-modal]"),n=this.querySelector("button[data-close-modal]"),r=this.querySelector("dialog"),o=this.querySelector(".dialog-frame"),i=e=>{("href"in(e.target||{})||document.body.contains(e.target)&&!o.contains(e.target))&&s()},a=e=>{r.showModal(),document.body.toggleAttribute("data-search-modal-open",!0),this.querySelector("input")?.focus(),e?.stopPropagation(),window.addEventListener("click",i)},s=()=>r.close();t.addEventListener("click",a),t.disabled=!1,n.addEventListener("click",s),r.addEventListener("close",(()=>{document.body.toggleAttribute("data-search-modal-open",!1),window.removeEventListener("click",i)})),document.addEventListener("keydown",(e=>{const t=document.activeElement instanceof HTMLElement&&(["input","select","textarea"].includes(document.activeElement.tagName.toLowerCase())||document.activeElement.isContentEditable);!0!==e.metaKey&&!0!==e.ctrlKey||"k"!==e.key?"/"!==e.key||r.open||t||(a(),e.preventDefault()):(r.open?s():a(),e.preventDefault())}),{capture:!0});let c={};try{c=JSON.parse(this.dataset.translations||"{}")}catch{}const u=void 0!==this.dataset.stripTrailingSlash?e=>e.replace(/(.)\/(#.*)?$/,"$1$2"):e=>e;window.addEventListener("DOMContentLoaded",(()=>{(window.requestIdleCallback||(e=>setTimeout(e,1)))((async()=>{const{PagefindUI:t}=await e((async()=>{const{PagefindUI:e}=await import("./ui-core.BmpKj71L.js");return{PagefindUI:e}}),__vite__mapDeps([0,1]));new t({element:"#starlight__search",baseUrl:"/",bundlePath:"/".replace(/\/$/,"")+"/pagefind/",showImages:!1,translations:c,showSubResults:!0,processResult:e=>{e.url=u(e.url),e.sub_results=e.sub_results.map((e=>(e.url=u(e.url),e)))}})}))}))}}customElements.define("site-search",ft);class dt extends HTMLElement{_current=this.querySelector('a[aria-current="true"]');minH=parseInt(this.dataset.minH||"2",10);maxH=parseInt(this.dataset.maxH||"3",10);set current(e){e!==this._current&&(this._current&&this._current.removeAttribute("aria-current"),e.setAttribute("aria-current","true"),this._current=e)}constructor(){super();const e=[...this.querySelectorAll("a")],t=e=>{if(e instanceof HTMLHeadingElement){if("_top"===e.id)return!0;const t=e.tagName[1];if(t){const e=parseInt(t,10);if(e>=this.minH&&e<=this.maxH)return!0}}return!1},n=e=>{if(!e)return null;const r=e;for(;e;){if(t(e))return e;for(e=e.previousElementSibling;e?.lastElementChild;)e=e.lastElementChild;const r=n(e);if(r)return r}return n(r.parentElement)},r=t=>{for(const{isIntersecting:r,target:o}of t){if(!r)continue;const t=n(o);if(!t)continue;const i=e.find((e=>e.hash==="#"+encodeURIComponent(t.id)));if(i){this.current=i;break}}},o=document.querySelectorAll("main [id], main [id] ~ *, main .content > *");let i;const a=()=>{i&&i.disconnect(),i=new IntersectionObserver(r,{rootMargin:this.getRootMargin()}),o.forEach((e=>i.observe(e)))};a();const s=window.requestIdleCallback||(e=>setTimeout(e,1));let c;window.addEventListener("resize",(()=>{i&&i.disconnect(),clearTimeout(c),c=setTimeout((()=>s(a)),200)}))}getRootMargin(){const e=(document.querySelector("header")?.getBoundingClientRect().height||0)+(this.querySelector("summary")?.getBoundingClientRect().height||0)+32;return`-${e}px 0% ${e+53-document.documentElement.clientHeight}px`}}customElements.define("starlight-toc",dt);customElements.define("mobile-starlight-toc",class extends dt{set current(e){super.current=e;const t=this.querySelector(".display-current");t&&(t.textContent=e.textContent)}constructor(){super();const e=this.querySelector("details");if(!e)return;const t=()=>{e.open=!1};e.querySelectorAll("a").forEach((e=>{e.addEventListener("click",t)})),window.addEventListener("click",(n=>{e.contains(n.target)||t()})),window.addEventListener("keydown",(n=>{if("Escape"===n.key&&e.open){const n=e.contains(document.activeElement);if(t(),n){const t=e.querySelector("summary");t&&t.focus()}}}))}});class mt extends HTMLElement{btn=this.querySelector("button");constructor(){super(),this.btn.addEventListener("click",(()=>this.toggleExpanded()));const e=this.closest("nav");e&&e.addEventListener("keyup",(e=>this.closeOnEscape(e)))}setExpanded(e){this.setAttribute("aria-expanded",String(e)),document.body.toggleAttribute("data-mobile-menu-expanded",e)}toggleExpanded(){this.setExpanded("true"!==this.getAttribute("aria-expanded"))}closeOnEscape(e){"Escape"===e.code&&(this.setExpanded(!1),this.btn.focus())}}customElements.define("starlight-menu-button",mt);const ht="starlight-theme",vt=e=>"auto"===e||"dark"===e||"light"===e?e:"auto",gt=()=>vt("undefined"!=typeof localStorage&&localStorage.getItem(ht));function yt(e){StarlightThemeProvider.updatePickers(e),document.documentElement.dataset.theme="auto"===e?matchMedia("(prefers-color-scheme: light)").matches?"light":"dark":e,function(e){"undefined"!=typeof localStorage&&localStorage.setItem(ht,"light"===e||"dark"===e?e:"")}(e)}matchMedia("(prefers-color-scheme: light)").addEventListener("change",(()=>{"auto"===gt()&&yt("auto")}));class bt extends HTMLElement{constructor(){super(),yt(gt()),this.querySelector("select")?.addEventListener("change",(e=>{e.currentTarget instanceof HTMLSelectElement&&yt(vt(e.currentTarget.value))}))}}customElements.define("starlight-theme-select",bt);class wt extends HTMLElement{static#e=new Map;tabs;panels;#t;constructor(){super();const e=this.querySelector('[role="tablist"]');if(this.tabs=[...e.querySelectorAll('[role="tab"]')],this.panels=[...this.querySelectorAll(':scope > [role="tabpanel"]')],this.#t=this.dataset.syncKey,this.#t){const e=wt.#e.get(this.#t)??[];e.push(this),wt.#e.set(this.#t,e)}this.tabs.forEach(((t,n)=>{t.addEventListener("click",(t=>{t.preventDefault();const r=e.querySelector('[aria-selected="true"]');t.currentTarget!==r&&this.switchTab(t.currentTarget,n)})),t.addEventListener("keydown",(e=>{const t=this.tabs.indexOf(e.currentTarget),n="ArrowLeft"===e.key?t-1:"ArrowRight"===e.key?t+1:"Home"===e.key?0:"End"===e.key?this.tabs.length-1:null;null!==n&&this.tabs[n]&&(e.preventDefault(),this.switchTab(this.tabs[n],n))}))}))}switchTab(e,t,n=!0){if(!e)return;const r=n?this.getBoundingClientRect().top:0;this.tabs.forEach((e=>{e.setAttribute("aria-selected","false"),e.setAttribute("tabindex","-1")})),this.panels.forEach((e=>{e.hidden=!0}));const o=this.panels[t];o&&(o.hidden=!1),e.removeAttribute("tabindex"),e.setAttribute("aria-selected","true"),n&&(e.focus(),wt.#n(this,e.innerText),window.scrollTo({top:window.scrollY+(this.getBoundingClientRect().top-r)}))}static#n(e,t){const n=e.#t;if(!n||!t)return;const r=wt.#e.get(n);if(r)for(const o of r){if(o===e)continue;const n=o.tabs.findIndex((e=>e.innerText===t));-1!==n&&o.switchTab(o.tabs[n],n,!1)}}}customElements.define("starlight-tabs",wt); diff --git a/assets/hooks.module.vf81mID6.js b/assets/hooks.module.vf81mID6.js new file mode 100644 index 00000000..ebc6f3e8 --- /dev/null +++ b/assets/hooks.module.vf81mID6.js @@ -0,0 +1 @@ +import{l as _}from"./preact.module.BP4etL1N.js";var n,t,r,o,i=0,c=[],u=_,e=u.__b,f=u.__r,a=u.diffed,h=u.__c,v=u.unmount,m=u.__;function l(_,n){u.__h&&u.__h(t,_,i||n),i=0;var r=t.__H||(t.__H={__:[],__h:[]});return _>=r.__.length&&r.__.push({}),r.__[_]}function s(_){return i=1,function(_,r,o){var i=l(n++,2);if(i.t=_,!i.__c&&(i.__=[U(void 0,r),function(_){var n=i.__N?i.__N[0]:i.__[0],t=i.t(n,_);n!==t&&(i.__N=[t,i.__[1]],i.__c.setState({}))}],i.__c=t,!t.u)){var c=function(_,n,t){if(!i.__c.__H)return!0;var r=i.__c.__H.__.filter((function(_){return!!_.__c}));if(r.every((function(_){return!_.__N})))return!u||u.call(this,_,n,t);var o=!1;return r.forEach((function(_){if(_.__N){var n=_.__[0];_.__=_.__N,_.__N=void 0,n!==_.__[0]&&(o=!0)}})),!(!o&&i.__c.props===_)&&(!u||u.call(this,_,n,t))};t.u=!0;var u=t.shouldComponentUpdate,e=t.componentWillUpdate;t.componentWillUpdate=function(_,n,t){if(this.__e){var r=u;u=void 0,c(_,n,t),u=r}e&&e.call(this,_,n,t)},t.shouldComponentUpdate=c}return i.__N||i.__}(U,_)}function H(_,r){var o=l(n++,3);!u.__s&&q(o.__H,r)&&(o.__=_,o.i=r,t.__H.__h.push(o))}function p(_,r){var o=l(n++,4);!u.__s&&q(o.__H,r)&&(o.__=_,o.i=r,t.__h.push(o))}function d(_){return i=5,N((function(){return{current:_}}),[])}function N(_,t){var r=l(n++,7);return q(r.__H,t)&&(r.__=_(),r.__H=t,r.__h=_),r.__}function E(){for(var _;_=c.shift();)if(_.__P&&_.__H)try{_.__H.__h.forEach(F),_.__H.__h.forEach(g),_.__H.__h=[]}catch(n){_.__H.__h=[],u.__e(n,_.__v)}}u.__b=function(_){t=null,e&&e(_)},u.__=function(_,n){_&&n.__k&&n.__k.__m&&(_.__m=n.__k.__m),m&&m(_,n)},u.__r=function(_){f&&f(_),n=0;var o=(t=_.__c).__H;o&&(r===t?(o.__h=[],t.__h=[],o.__.forEach((function(_){_.__N&&(_.__=_.__N),_.i=_.__N=void 0}))):(o.__h.forEach(F),o.__h.forEach(g),o.__h=[],n=0)),r=t},u.diffed=function(_){a&&a(_);var n=_.__c;n&&n.__H&&(n.__H.__h.length&&(1!==c.push(n)&&o===u.requestAnimationFrame||((o=u.requestAnimationFrame)||A)(E)),n.__H.__.forEach((function(_){_.i&&(_.__H=_.i),_.i=void 0}))),r=t=null},u.__c=function(_,n){n.some((function(_){try{_.__h.forEach(F),_.__h=_.__h.filter((function(_){return!_.__||g(_)}))}catch(t){n.some((function(_){_.__h&&(_.__h=[])})),n=[],u.__e(t,_.__v)}})),h&&h(_,n)},u.unmount=function(_){v&&v(_);var n,t=_.__c;t&&t.__H&&(t.__H.__.forEach((function(_){try{F(_)}catch(_){n=_}})),t.__H=void 0,n&&u.__e(n,t.__v))};var y="function"==typeof requestAnimationFrame;function A(_){var n,t=function(){clearTimeout(r),y&&cancelAnimationFrame(n),setTimeout(_)},r=setTimeout(t,100);y&&(n=requestAnimationFrame(t))}function F(_){var n=t,r=_.__c;"function"==typeof r&&(_.__c=void 0,r()),t=n}function g(_){var n=t;_.__c=_.__(),t=n}function q(_,n){return!_||_.length!==n.length||n.some((function(n,t){return n!==_[t]}))}function U(_,n){return"function"==typeof n?n(_):n}export{d as A,N as T,p as _,s as h,H as y}; diff --git a/assets/index.modern.CtKZhHHv.js b/assets/index.modern.CtKZhHHv.js new file mode 100644 index 00000000..e9ccd3a2 --- /dev/null +++ b/assets/index.modern.CtKZhHHv.js @@ -0,0 +1 @@ +function r(){return r=Object.assign?Object.assign.bind():function(r){for(var n=1;nString(r).split(".").map((r=>String(parseInt(r||"0",10)))).concat(["0","0"]).slice(0,3).join(".");class e{constructor(){this.isSwupPlugin=!0,this.swup=void 0,this.version=void 0,this.requires={},this.handlersToUnregister=[]}mount(){}unmount(){this.handlersToUnregister.forEach((r=>r())),this.handlersToUnregister=[]}_beforeMount(){if(!this.name)throw new Error("You must define a name of plugin when creating a class.")}_afterUnmount(){}_checkRequirements(){return"object"!=typeof this.requires||Object.entries(this.requires).forEach((([r,e])=>{if(!function(r,e,t){const s=function(r,n){var e;if("swup"===r)return null!=(e=n.version)?e:"";{var t;const e=n.findPlugin(r);return null!=(t=null==e?void 0:e.version)?t:""}}(r,t);return!!s&&((r,e)=>e.every((e=>{const[,t,s]=e.match(/^([\D]+)?(.*)$/)||[];var o,i;return((r,n)=>{const e={"":r=>0===r,">":r=>r>0,">=":r=>r>=0,"<":r=>r<0,"<=":r=>r<=0};return(e[n]||e[""])(r)})((i=s,o=n(o=r),i=n(i),o.localeCompare(i,void 0,{numeric:!0})),t||">=")})))(s,e)}(r,e=Array.isArray(e)?e:[e],this.swup)){const n=`${r} ${e.join(", ")}`;throw new Error(`Plugin version mismatch: ${this.name} requires ${n}`)}})),!0}on(r,n,e={}){var t;n=!(t=n).name.startsWith("bound ")||t.hasOwnProperty("prototype")?n.bind(this):n;const s=this.swup.hooks.on(r,n,e);return this.handlersToUnregister.push(s),s}once(n,e,t={}){return this.on(n,e,r({},t,{once:!0}))}before(n,e,t={}){return this.on(n,e,r({},t,{before:!0}))}replace(n,e,t={}){return this.on(n,e,r({},t,{replace:!0}))}off(r,n){return this.swup.hooks.off(r,n)}}export{e}; diff --git a/assets/page.LpqHvsRr.js b/assets/page.LpqHvsRr.js new file mode 100644 index 00000000..2db3521f --- /dev/null +++ b/assets/page.LpqHvsRr.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/SwupA11yPlugin.BwOJ-1de.js","assets/Swup.BAW7Fnls.js","assets/index.modern.CtKZhHHv.js","assets/SwupPreloadPlugin.Bit36d99.js","assets/SwupScrollPlugin.rmSN6-xu.js","assets/SwupBodyClassPlugin.B8ok040w.js","assets/SwupHeadPlugin.6Q8td7LP.js","assets/SwupScriptsPlugin.f2nwucqv.js"])))=>i.map(i=>d[i]); +import{_ as e}from"./preload-helper.B5A3MRH_.js";function t(e){return JSON.parse(e,n)}function n(e,t){if(Array.isArray(t)&&2===t.length&&"string"==typeof t[1]){const e=t[0];if(t=t[1],":regex:"===e){const e=t.match(/\/(.*?)\/([a-z]*)?$/i)||[];return new RegExp(e[1],e[2]||"")}if(":function:"===e)return new Function(`return (${t}).apply(this, arguments);`)}return t}function o(e,{timeoutFallback:t=1e3}={}){"requestIdleCallback"in window?window.requestIdleCallback((()=>e())):setTimeout((()=>e()),t)}const r=new Set,a=new WeakSet;let i,s=!0,u=!1;function c(){const e=new WeakMap;return new IntersectionObserver(((t,n)=>{for(const o of t){const t=o.target,r=e.get(t);o.isIntersecting?(r&&clearTimeout(r),e.set(t,setTimeout((()=>{n.unobserve(t),e.delete(t),l(t.href)}),300))):r&&(clearTimeout(r),e.delete(t))}}))}function l(e,t){if(function(e,t){if(!navigator.onLine)return!1;if(!t&&f())return!1;try{const t=new URL(e,location.href);return location.origin===t.origin&&(location.pathname!==t.pathname||location.search!==t.search)&&!r.has(e)}catch{}return!1}(e,t?.ignoreSlowConnection??!1))if(r.add(e),document.createElement("link").relList?.supports?.("prefetch")&&"fetch"!==t?.with){const t=document.createElement("link");t.rel="prefetch",t.setAttribute("href",e),document.head.append(t)}else fetch(e,{priority:"low"})}function d(e,t){if("A"!==e?.tagName)return!1;const n=e.dataset.astroPrefetch;return"false"!==n&&(!("tap"!==t||null==n&&!s||!f())||(null==n&&s||""===n?t===i:n===t))}function f(){if("connection"in navigator){const e=navigator.connection;return e.saveData||/2g/.test(e.effectiveType)}return!1}function m(e){e();let t=!1;document.addEventListener("astro:page-load",(()=>{t?e():t=!0}))}!function(e,{delayAfterLoad:t=0}={}){!function(e){"complete"===document.readyState?setTimeout((()=>e()),0):window.addEventListener("load",(()=>e()))}((()=>{t>0?setTimeout((()=>o(e)),t):o(e)}))}((async function(){const[n,o,r,a,i,s,u]=await Promise.all([e((()=>import("./Swup.BAW7Fnls.js").then((e=>e.S))),[]).then((e=>e.default)),e((()=>import("./SwupA11yPlugin.BwOJ-1de.js")),__vite__mapDeps([0,1,2])).then((e=>e.default)),e((()=>import("./SwupPreloadPlugin.Bit36d99.js")),__vite__mapDeps([3,2,1])).then((e=>e.default)),e((()=>import("./SwupScrollPlugin.rmSN6-xu.js")),__vite__mapDeps([4,2,1])).then((e=>e.default)),e((()=>import("./SwupBodyClassPlugin.B8ok040w.js")),__vite__mapDeps([5,2])).then((e=>e.default)),e((()=>import("./SwupHeadPlugin.6Q8td7LP.js")),__vite__mapDeps([6,2])).then((e=>e.default)),e((()=>import("./SwupScriptsPlugin.f2nwucqv.js")),__vite__mapDeps([7,2])).then((e=>e.default))]),c=new n({animationSelector:'[class*="transition-"]',containers:[".swup.page-frame"],cache:!0,plugins:[new o(t("{}")),new r(t('{"preloadHoveredLinks":true,"preloadVisibleLinks":false}')),new a(t("{}")),new i(t("{}")),new s(t('{"awaitAssets":true}')),new u(t("{}"))]});window.swup=c})),u||(u=!0,s??=!1,i??="hover",function(){for(const e of["touchstart","mousedown"])document.body.addEventListener(e,(e=>{d(e.target,"tap")&&l(e.target.href,{ignoreSlowConnection:!0})}),{passive:!0})}(),function(){let e;function t(t){const n=t.target.href;e&&clearTimeout(e),e=setTimeout((()=>{l(n)}),80)}function n(){e&&(clearTimeout(e),e=0)}document.body.addEventListener("focusin",(e=>{d(e.target,"hover")&&t(e)}),{passive:!0}),document.body.addEventListener("focusout",n,{passive:!0}),m((()=>{for(const e of document.getElementsByTagName("a"))a.has(e)||d(e,"hover")&&(a.add(e),e.addEventListener("mouseenter",t,{passive:!0}),e.addEventListener("mouseleave",n,{passive:!0}))}))}(),function(){let e;m((()=>{for(const t of document.getElementsByTagName("a"))a.has(t)||d(t,"viewport")&&(a.add(t),e??=c(),e.observe(t))}))}(),m((()=>{for(const e of document.getElementsByTagName("a"))d(e,"load")&&l(e.href)}))); diff --git a/assets/preact.module.BP4etL1N.js b/assets/preact.module.BP4etL1N.js new file mode 100644 index 00000000..9a97ec3e --- /dev/null +++ b/assets/preact.module.BP4etL1N.js @@ -0,0 +1 @@ +var e,_,n,t,l,o,r,u,i,s,f,c={},p=[],a=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,d=Array.isArray;function h(e,_){for(var n in _)e[n]=_[n];return e}function v(e){var _=e.parentNode;_&&_.removeChild(e)}function y(_,n,t){var l,o,r,u={};for(r in n)"key"==r?l=n[r]:"ref"==r?o=n[r]:u[r]=n[r];if(arguments.length>2&&(u.children=arguments.length>3?e.call(arguments,2):t),"function"==typeof _&&null!=_.defaultProps)for(r in _.defaultProps)void 0===u[r]&&(u[r]=_.defaultProps[r]);return g(_,u,l,o,null)}function g(e,t,l,o,r){var u={type:e,props:t,key:l,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:null==r?++n:r,__i:-1,__u:0};return null==r&&null!=_.vnode&&_.vnode(u),u}function m(e){return e.children}function k(e,_){this.props=e,this.context=_}function b(e,_){if(null==_)return e.__?b(e.__,e.__i+1):null;for(var n;_n&&l.sort(u));S.__r=0}function P(e,_,n,t,l,o,r,u,i,s,f){var a,d,h,v,y,g=t&&t.__k||p,m=_.length;for(n.__d=i,C(n,_,g),i=n.__d,a=0;a0?g(l.type,l.props,l.key,l.ref?l.ref:null,l.__v):l)?(l.__=e,l.__b=e.__b+1,u=U(l,n,r,f),l.__i=u,o=null,-1!==u&&(f--,(o=n[u])&&(o.__u|=131072)),null==o||null===o.__v?(-1==u&&c--,"function"!=typeof l.type&&(l.__u|=65536)):u!==r&&(u==r-1?c=u-r:u==r+1?c++:u>r?f>i-r?c+=u-r:c--:u(null==i||131072&i.__u?0:1))for(;r>=0||u<_.length;){if(r>=0){if((i=_[r])&&!(131072&i.__u)&&l==i.key&&o===i.type)return r;r--}if(u<_.length){if((i=_[u])&&!(131072&i.__u)&&l==i.key&&o===i.type)return u;u++}}return-1}function D(e,_,n){"-"===_[0]?e.setProperty(_,null==n?"":n):e[_]=null==n?"":"number"!=typeof n||a.test(_)?n:n+"px"}function M(e,_,n,t,l){var o;e:if("style"===_)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof t&&(e.style.cssText=t=""),t)for(_ in t)n&&_ in n||D(e.style,_,"");if(n)for(_ in n)t&&n[_]===t[_]||D(e.style,_,n[_])}else if("o"===_[0]&&"n"===_[1])o=_!==(_=_.replace(/(PointerCapture)$|Capture$/i,"$1")),_=_.toLowerCase()in e||"onFocusOut"===_||"onFocusIn"===_?_.toLowerCase().slice(2):_.slice(2),e.l||(e.l={}),e.l[_+o]=n,n?t?n.u=t.u:(n.u=i,e.addEventListener(_,o?f:s,o)):e.removeEventListener(_,o?f:s,o);else{if("http://www.w3.org/2000/svg"==l)_=_.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!=_&&"height"!=_&&"href"!=_&&"list"!=_&&"form"!=_&&"tabIndex"!=_&&"download"!=_&&"rowSpan"!=_&&"colSpan"!=_&&"role"!=_&&"popover"!=_&&_ in e)try{e[_]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null==n||!1===n&&"-"!==_[4]?e.removeAttribute(_):e.setAttribute(_,"popover"==_&&1==n?"":n))}}function L(e){return function(n){if(this.l){var t=this.l[n.type+e];if(null==n.t)n.t=i++;else if(n.t0){document.getElementsByTagName("link");const t=document.querySelector("meta[property=csp-nonce]"),r=t?.nonce||t?.getAttribute("nonce");o=Promise.all(n.map((t=>{if((t=function(e){return"/"+e}(t))in e)return;e[t]=!0;const n=t.endsWith(".css"),o=n?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${t}"]${o}`))return;const c=document.createElement("link");return c.rel=n?"stylesheet":"modulepreload",n||(c.as="script",c.crossOrigin=""),c.href=t,r&&c.setAttribute("nonce",r),document.head.appendChild(c),n?new Promise(((e,n)=>{c.addEventListener("load",e),c.addEventListener("error",(()=>n(new Error(`Unable to preload CSS for ${t}`))))})):void 0})))}return o.then((()=>t())).catch((e=>{const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}))};export{t as _}; diff --git a/assets/radashi-logo-dark@3x.BWiB2XXX.webp b/assets/radashi-logo-dark@3x.BWiB2XXX.webp new file mode 100644 index 00000000..f7ebfc9b Binary files /dev/null and b/assets/radashi-logo-dark@3x.BWiB2XXX.webp differ diff --git a/assets/signals.module.B8hOACSr.js b/assets/signals.module.B8hOACSr.js new file mode 100644 index 00000000..7b36f220 --- /dev/null +++ b/assets/signals.module.B8hOACSr.js @@ -0,0 +1 @@ +import{l as t,t as i,b as o}from"./preact.module.BP4etL1N.js";import{T as r}from"./hooks.module.vf81mID6.js";var n=Symbol.for("preact-signals");function e(){if(u>1)u--;else{for(var t,i=!1;void 0!==v;){var o=v;for(v=void 0,h++;void 0!==o;){var r=o.o;if(o.o=void 0,o.f&=-3,!(8&o.f)&&l(o))try{o.c()}catch(o){i||(t=o,i=!0)}o=r}}if(h=0,u--,i)throw t}}var f,s=void 0,v=void 0,u=0,h=0,a=0;function c(t){if(void 0!==s){var i=t.n;if(void 0===i||i.t!==s)return i={i:0,S:t,p:s.s,n:void 0,t:s,e:void 0,x:void 0,r:i},void 0!==s.s&&(s.s.n=i),s.s=i,t.n=i,32&s.f&&t.S(i),i;if(-1===i.i)return i.i=0,void 0!==i.n&&(i.n.p=i.p,void 0!==i.p&&(i.p.n=i.n),i.p=s.s,i.n=void 0,s.s.n=i,s.s=i),i}}function d(t){this.v=t,this.i=0,this.n=void 0,this.t=void 0}function p(t){return new d(t)}function l(t){for(var i=t.s;void 0!==i;i=i.n)if(i.S.i!==i.i||!i.S.h()||i.S.i!==i.i)return!0;return!1}function _(t){for(var i=t.s;void 0!==i;i=i.n){var o=i.S.n;if(void 0!==o&&(i.r=o),i.S.n=i,i.i=-1,void 0===i.n){t.s=i;break}}}function y(t){for(var i=t.s,o=void 0;void 0!==i;){var r=i.p;-1===i.i?(i.S.U(i),void 0!==r&&(r.n=i.n),void 0!==i.n&&(i.n.p=r)):o=i,i.S.n=i.r,void 0!==i.r&&(i.r=void 0),i=r}t.s=o}function S(t){d.call(this,void 0),this.x=t,this.s=void 0,this.g=a-1,this.f=4}function b(t){return new S(t)}function g(t){var i=t.u;if(t.u=void 0,"function"==typeof i){u++;var o=s;s=void 0;try{i()}catch(e){throw t.f&=-2,t.f|=8,w(t),e}finally{s=o,e()}}}function w(t){for(var i=t.s;void 0!==i;i=i.n)i.S.U(i);t.x=void 0,t.s=void 0,g(t)}function x(t){if(s!==this)throw new Error("Out-of-order effect");y(this),s=t,this.f&=-2,8&this.f&&w(this),e()}function m(t){this.x=t,this.u=void 0,this.s=void 0,this.o=void 0,this.f=32}function $(t){var i=new m(t);try{i.c()}catch(t){throw i.d(),t}return i.d.bind(i)}function U(i,o){t[i]=o.bind(null,t[i]||function(){})}function k(t){f&&f(),f=t&&t.S()}function N(t){var o=this,n=t.data,e=j(n);e.value=n;var f=r((function(){for(var t=o.__v;t=t.__;)if(t.__c){t.__c.__$f|=4;break}return o.__$u.c=function(){var t;i(f.peek())||3!==(null==(t=o.base)?void 0:t.nodeType)?(o.__$f|=1,o.setState({})):o.base.data=f.peek()},b((function(){var t=e.value.value;return 0===t?0:!0===t?"":t||""}))}),[]);return f.value}function O(t,i,o,r){var n=i in t&&void 0===t.ownerSVGElement,e=p(o);return{o:function(t,i){e.value=t,r=i},d:$((function(){var o=e.value.value;r[i]!==o&&(r[i]=o,n?t[i]=o:o?t.setAttribute(i,o):t.removeAttribute(i))}))}}function j(t){return r((function(){return p(t)}),[])}d.prototype.brand=n,d.prototype.h=function(){return!0},d.prototype.S=function(t){this.t!==t&&void 0===t.e&&(t.x=this.t,void 0!==this.t&&(this.t.e=t),this.t=t)},d.prototype.U=function(t){if(void 0!==this.t){var i=t.e,o=t.x;void 0!==i&&(i.x=o,t.e=void 0),void 0!==o&&(o.e=i,t.x=void 0),t===this.t&&(this.t=o)}},d.prototype.subscribe=function(t){var i=this;return $((function(){var o=i.value,r=s;s=void 0;try{t(o)}finally{s=r}}))},d.prototype.valueOf=function(){return this.value},d.prototype.toString=function(){return this.value+""},d.prototype.toJSON=function(){return this.value},d.prototype.peek=function(){var t=s;s=void 0;try{return this.value}finally{s=t}},Object.defineProperty(d.prototype,"value",{get:function(){var t=c(this);return void 0!==t&&(t.i=this.i),this.v},set:function(t){if(t!==this.v){if(h>100)throw new Error("Cycle detected");this.v=t,this.i++,a++,u++;try{for(var i=this.t;void 0!==i;i=i.x)i.t.N()}finally{e()}}}}),(S.prototype=new d).h=function(){if(this.f&=-3,1&this.f)return!1;if(32==(36&this.f))return!0;if(this.f&=-5,this.g===a)return!0;if(this.g=a,this.f|=1,this.i>0&&!l(this))return this.f&=-2,!0;var t=s;try{_(this),s=this;var i=this.x();(16&this.f||this.v!==i||0===this.i)&&(this.v=i,this.f&=-17,this.i++)}catch(t){this.v=t,this.f|=16,this.i++}return s=t,y(this),this.f&=-2,!0},S.prototype.S=function(t){if(void 0===this.t){this.f|=36;for(var i=this.s;void 0!==i;i=i.n)i.S.S(i)}d.prototype.S.call(this,t)},S.prototype.U=function(t){if(void 0!==this.t&&(d.prototype.U.call(this,t),void 0===this.t)){this.f&=-33;for(var i=this.s;void 0!==i;i=i.n)i.S.U(i)}},S.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var t=this.t;void 0!==t;t=t.x)t.t.N()}},Object.defineProperty(S.prototype,"value",{get:function(){if(1&this.f)throw new Error("Cycle detected");var t=c(this);if(this.h(),void 0!==t&&(t.i=this.i),16&this.f)throw this.v;return this.v}}),m.prototype.c=function(){var t=this.S();try{if(8&this.f)return;if(void 0===this.x)return;var i=this.x();"function"==typeof i&&(this.u=i)}finally{t()}},m.prototype.S=function(){if(1&this.f)throw new Error("Cycle detected");this.f|=1,this.f&=-9,g(this),_(this),u++;var t=s;return s=this,x.bind(this,t)},m.prototype.N=function(){2&this.f||(this.f|=2,this.o=v,v=this)},m.prototype.d=function(){this.f|=8,1&this.f||w(this)},N.displayName="_st",Object.defineProperties(d.prototype,{constructor:{configurable:!0,value:void 0},type:{configurable:!0,value:N},props:{configurable:!0,get:function(){return{data:this}}},__b:{configurable:!0,value:1}}),U("__b",(function(t,i){if("string"==typeof i.type){var o,r=i.props;for(var n in r)if("children"!==n){var e=r[n];e instanceof d&&(o||(i.__np=o={}),o[n]=e,r[n]=e.peek())}}t(i)})),U("__r",(function(t,i){k();var o,r=i.__c;r&&(r.__$f&=-2,void 0===(o=r.__$u)&&(r.__$u=o=function(t){var i;return $((function(){i=this})),i.c=function(){r.__$f|=1,r.setState({})},i}())),k(o),t(i)})),U("__e",(function(t,i,o,r){k(),t(i,o,r)})),U("diffed",(function(t,i){var o;if(k(),"string"==typeof i.type&&(o=i.__e)){var r=i.__np,n=i.props;if(r){var e=o.U;if(e)for(var f in e){var s=e[f];void 0===s||f in r||(s.d(),e[f]=void 0)}else o.U=e={};for(var v in r){var u=e[v],h=r[v];void 0===u?(u=O(o,v,h,n),e[v]=u):u.o(h,n)}}}t(i)})),U("unmount",(function(t,i){if("string"==typeof i.type){var o=i.__e;if(o){var r=o.U;if(r)for(var n in o.U=void 0,r){var e=r[n];e&&e.d()}}}else{var f=i.__c;if(f){var s=f.__$u;s&&(f.__$u=void 0,s.d())}}t(i)})),U("__h",(function(t,i,o,r){(r<3||9===r)&&(i.__$f|=2),t(i,o,r)})),o.prototype.shouldComponentUpdate=function(t,i){var o=this.__$u;if(!(o&&void 0!==o.s||4&this.__$f))return!0;if(3&this.__$f)return!0;for(var r in i)return!0;for(var n in t)if("__source"!==n&&t[n]!==this.props[n])return!0;for(var e in this.props)if(!(e in t))return!0;return!1};export{d as Signal,b as computed,$ as effect,p as signal,j as useSignal}; diff --git a/assets/tabbed-code-block.D-hdeFmn.js b/assets/tabbed-code-block.D-hdeFmn.js new file mode 100644 index 00000000..fa5cec20 --- /dev/null +++ b/assets/tabbed-code-block.D-hdeFmn.js @@ -0,0 +1 @@ +import{A as e,h as n,_ as t,y as o}from"./hooks.module.vf81mID6.js";import{l as r}from"./preact.module.BP4etL1N.js";function i(e){var n,t,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e)){var r=e.length;for(n=0;n[])),[a,u]=n(-1),[d,p]=n(!1),[m,v]=n(!1);let[h,y]=n(!0);function _(e){const n=a;u(e),e!==n&&-1!==n&&(f[n].style.display="none"),f[e].style.removeProperty("display")}return(d||m)&&(h=!0),t((()=>{const e=s.current;e.style.removeProperty("display");const n=[];let t=e.firstElementChild.firstElementChild;for(;t;){if(t instanceof HTMLElement&&t.matches(".expressive-code")){const e=[];let o=t.previousElementSibling;for(;o&&!o.matches(".expressive-code");)o instanceof HTMLElement&&e.unshift(o),o=o.previousElementSibling;let r=t;n.push((()=>{if(e.length>0){const n=document.createElement("div");e.forEach((e=>{n.appendChild(e)})),r.replaceWith(n),n.append(r),r=n}f.push(r),r.style.visibility="hidden",f.length>1&&(r.style.position="absolute"),r.addEventListener("mouseenter",(()=>{v(!0)})),r.addEventListener("mouseleave",(()=>{v(!1)})),r.addEventListener("click",(()=>{y((e=>!e))}))}))}t=t.nextElementSibling}for(const o of n)o();console.log({names:r.names,codeBlocks:f}),r.names.length!==f.length&&console.error(new Error("Number of names and code blocks must match")),requestAnimationFrame((function e(){let n=1/0,t=f[0];for(const o of f){const r=o.offsetHeight;if(0===r)return requestAnimationFrame(e);r{e.style.maxHeight=`${n}px`,e.style.overflowY=e!==t?"scroll":"hidden",e.style.display="none",e.style.removeProperty("position"),e.style.removeProperty("visibility")})),_(0),y(!1)}))}),[]),o((()=>{if(!h){const e=setTimeout((()=>{_((a+1)%r.names.length)}),2500);return()=>clearTimeout(e)}}),[a,h]),o((()=>{const e=new IntersectionObserver((([e])=>{p(!e.isIntersecting)}),{rootMargin:"-50% 0px -37% 0px"});return e.observe(i.current),()=>e.disconnect()}),[]),c("div",{ref:i,children:[c("div",{class:"not-content flex flex-row items-center mt-3",onMouseEnter:()=>v(!0),onMouseLeave:()=>v(!1),children:r.names.map(((e,n)=>c("div",{role:"button",class:"relative cursor-pointer px-4 py-0.5 rounded-full",onMouseEnter:()=>_(n),onClick:()=>_(n),children:[c("span",{class:"block text-pink100 font-600 text-0.9rem",children:e}),c("div",{class:"absolute left-0 bottom--1 w-full px-3",children:c("div",{class:l(["h-2.6px w-full rounded-full transition-650",a===n?m?"bg-#fffa85":"bg-$sl-color-accent":"bg-#8a6e6f opacity-50"])})})]})))}),c("div",{ref:s,style:{display:"none"},children:r.children})]})}export{f as TabbedCodeBlock}; diff --git a/assets/ui-core.BmpKj71L.js b/assets/ui-core.BmpKj71L.js new file mode 100644 index 00000000..e5321bac --- /dev/null +++ b/assets/ui-core.BmpKj71L.js @@ -0,0 +1 @@ +import{_ as e}from"./preload-helper.B5A3MRH_.js";var t,s=Object.defineProperty,r=(e,t)=>{for(var r in t)s(e,r,{get:t[r],enumerable:!0})};function n(){}function a(e){return e()}function l(){return Object.create(null)}function o(e){e.forEach(a)}function i(e){return"function"==typeof e}function c(e,t){return e!=e?t==t:e!==t||e&&"object"==typeof e||"function"==typeof e}function u(e,s){return t||(t=document.createElement("a")),t.href=s,e===t.href}function _(e,t){e.appendChild(t)}function d(e,t,s){e.insertBefore(t,s||null)}function h(e){e.parentNode&&e.parentNode.removeChild(e)}function g(e,t){for(let s=0;se.removeEventListener(t,s,r)}function T(e,t,s){null==s?e.removeAttribute(t):e.getAttribute(t)!==s&&e.setAttribute(t,s)}function C(e,t){t=""+t,e.data!==t&&(e.data=t)}function v(e,t){e.value=null==t?"":t}function A(e,t,s){e.classList[s?"add":"remove"](t)}var b,M=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){var r;this.e||(this.is_svg?this.e=(r=t.nodeName,document.createElementNS("http://www.w3.org/2000/svg",r)):this.e=m(11===t.nodeType?"TEMPLATE":t.nodeName),this.t="TEMPLATE"!==t.tagName?t:t.content,this.c(e)),this.i(s)}h(e){this.e.innerHTML=e,this.n=Array.from("TEMPLATE"===this.e.nodeName?this.e.content.childNodes:this.e.childNodes)}i(e){for(let t=0;t{I.delete(e),r&&(s&&e.d(1),r())})),e.o(t)}else r&&r()}function V(e,t){q(e,1,1,(()=>{t.delete(e.key)}))}function G(e){e&&e.c()}function J(e,t,s,r){const{fragment:n,after_update:l}=e.$$;n&&n.m(t,s),r||j((()=>{const t=e.$$.on_mount.map(a).filter(i);e.$$.on_destroy?e.$$.on_destroy.push(...t):o(t),e.$$.on_mount=[]})),l.forEach(j)}function K(e,t){const s=e.$$;null!==s.fragment&&(!function(e){const t=[],s=[];$.forEach((r=>-1===e.indexOf(r)?t.push(r):s.push(r))),s.forEach((e=>e())),$=t}(s.after_update),o(s.on_destroy),s.fragment&&s.fragment.d(t),s.on_destroy=s.fragment=null,s.ctx=[])}function W(e,t){-1===e.$$.dirty[0]&&(k.push(e),x||(x=!0,w.then(U)),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<{const n=r.length?r[0]:s;return d.ctx&&a(d.ctx[t],d.ctx[t]=n)&&(!d.skip_bound&&d.bound[t]&&d.bound[t](n),g&&W(e,t)),s})):[],d.update(),g=!0,o(d.before_update),d.fragment=!!r&&r(d.ctx),t.target){if(t.hydrate){const e=(m=t.target,Array.from(m.childNodes));d.fragment&&d.fragment.l(e),e.forEach(h)}else d.fragment&&d.fragment.c();t.intro&&B(e.$$.fragment),J(e,t.target,t.anchor,t.customElement),U()}var m;S(_)}var Z=class{$destroy(){K(this,1),this.$destroy=n}$on(e,t){if(!i(t))return n;const s=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return s.push(t),()=>{const e=s.indexOf(t);-1!==e&&s.splice(e,1)}}$set(e){var t;this.$$set&&(t=e,0!==Object.keys(t).length)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}};function Q(e){const t="string"==typeof e?e.charCodeAt(0):e;return t>=97&&t<=122||t>=65&&t<=90}function X(e){const t="string"==typeof e?e.charCodeAt(0):e;return t>=48&&t<=57}function ee(e){return Q(e)||X(e)}var te=["art-lojban","cel-gaulish","no-bok","no-nyn","zh-guoyu","zh-hakka","zh-min","zh-min-nan","zh-xiang"],se={"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"},re={}.hasOwnProperty;function ne(e,t={}){const s={language:null,extendedLanguageSubtags:[],script:null,region:null,variants:[],extensions:[],privateuse:[],irregular:null,regular:null},r=String(e),n=r.toLowerCase();let a=0;if(null==e)throw new Error("Expected string, got `"+e+"`");if(re.call(se,n)){const e=se[n];return void 0!==t.normalize&&null!==t.normalize&&!t.normalize||"string"!=typeof e?(s[te.includes(n)?"regular":"irregular"]=r,s):ne(e)}for(;Q(n.charCodeAt(a))&&a<9;)a++;if(a>1&&a<9){if(s.language=r.slice(0,a),a<4){let e=0;for(;45===n.charCodeAt(a)&&Q(n.charCodeAt(a+1))&&Q(n.charCodeAt(a+2))&&Q(n.charCodeAt(a+3))&&!Q(n.charCodeAt(a+4));){if(e>2)return l(a,3,"Too many extended language subtags, expected at most 3 subtags");s.extendedLanguageSubtags.push(r.slice(a+1,a+4)),a+=4,e++}}for(45===n.charCodeAt(a)&&Q(n.charCodeAt(a+1))&&Q(n.charCodeAt(a+2))&&Q(n.charCodeAt(a+3))&&Q(n.charCodeAt(a+4))&&!Q(n.charCodeAt(a+5))&&(s.script=r.slice(a+1,a+5),a+=5),45===n.charCodeAt(a)&&(Q(n.charCodeAt(a+1))&&Q(n.charCodeAt(a+2))&&!Q(n.charCodeAt(a+3))?(s.region=r.slice(a+1,a+3),a+=3):X(n.charCodeAt(a+1))&&X(n.charCodeAt(a+2))&&X(n.charCodeAt(a+3))&&!X(n.charCodeAt(a+4))&&(s.region=r.slice(a+1,a+4),a+=4));45===n.charCodeAt(a);){const e=a+1;let t=e;for(;ee(n.charCodeAt(t));){if(t-e>7)return l(t,1,"Too long variant, expected at most 8 characters");t++}if(!(t-e>4||t-e>3&&X(n.charCodeAt(e))))break;s.variants.push(r.slice(e,t)),a=t}for(;45===n.charCodeAt(a)&&120!==n.charCodeAt(a+1)&&ee(n.charCodeAt(a+1))&&45===n.charCodeAt(a+2)&&ee(n.charCodeAt(a+3));){let e=a+2,t=0;for(;45===n.charCodeAt(e)&&ee(n.charCodeAt(e+1))&&ee(n.charCodeAt(e+2));){const s=e+1;for(e=s+2,t++;ee(n.charCodeAt(e));){if(e-s>7)return l(e,2,"Too long extension, expected at most 8 characters");e++}}if(!t)return l(e,4,"Empty extension, extensions must have at least 2 characters of content");s.extensions.push({singleton:r.charAt(a+1),extensions:r.slice(a+3,e).split("-")}),a=e}}else a=0;if(0===a&&120===n.charCodeAt(a)||45===n.charCodeAt(a)&&120===n.charCodeAt(a+1)){a=a?a+2:1;let e=a;for(;45===n.charCodeAt(e)&&ee(n.charCodeAt(e+1));){const t=a+1;for(e=t;ee(n.charCodeAt(e));){if(e-t>7)return l(e,5,"Too long private-use area, expected at most 8 characters");e++}s.privateuse.push(r.slice(a+1,e)),a=e}}return a!==r.length?l(a,6,"Found superfluous content after tag"):s;function l(e,r,n){return t.warning&&t.warning(n,r,e),t.forgiving?s:{language:null,extendedLanguageSubtags:[],script:null,region:null,variants:[],extensions:[],privateuse:[],irregular:null,regular:null}}}function ae(e,t,s){const r=e.slice();return r[8]=t[s][0],r[9]=t[s][1],r}function le(e){let t,s,r,n,a,l=e[0]&&ie();return{c(){l&&l.c(),t=p(),s=m("div"),r=m("p"),r.textContent=`${e[3](30)}`,n=p(),a=m("p"),a.textContent=`${e[3](40)}`,T(r,"class","pagefind-ui__result-title pagefind-ui__loading svelte-j9e30"),T(a,"class","pagefind-ui__result-excerpt pagefind-ui__loading svelte-j9e30"),T(s,"class","pagefind-ui__result-inner svelte-j9e30")},m(e,o){l&&l.m(e,o),d(e,t,o),d(e,s,o),_(s,r),_(s,n),_(s,a)},p(e,s){e[0]?l||(l=ie(),l.c(),l.m(t.parentNode,t)):l&&(l.d(1),l=null)},d(e){l&&l.d(e),e&&h(t),e&&h(s)}}}function oe(e){let t,s,r,n,a,l,o,i,c,u=e[1].meta?.title+"",g=e[1].excerpt+"",E=e[0]&&ce(e),R=e[2].length&&_e(e);return{c(){E&&E.c(),t=p(),s=m("div"),r=m("p"),n=m("a"),a=f(u),o=p(),i=m("p"),c=p(),R&&R.c(),T(n,"class","pagefind-ui__result-link svelte-j9e30"),T(n,"href",l=e[1].meta?.url||e[1].url),T(r,"class","pagefind-ui__result-title svelte-j9e30"),T(i,"class","pagefind-ui__result-excerpt svelte-j9e30"),T(s,"class","pagefind-ui__result-inner svelte-j9e30")},m(e,l){E&&E.m(e,l),d(e,t,l),d(e,s,l),_(s,r),_(r,n),_(n,a),_(s,o),_(s,i),i.innerHTML=g,_(s,c),R&&R.m(s,null)},p(e,r){e[0]?E?E.p(e,r):(E=ce(e),E.c(),E.m(t.parentNode,t)):E&&(E.d(1),E=null),2&r&&u!==(u=e[1].meta?.title+"")&&C(a,u),2&r&&l!==(l=e[1].meta?.url||e[1].url)&&T(n,"href",l),2&r&&g!==(g=e[1].excerpt+"")&&(i.innerHTML=g),e[2].length?R?R.p(e,r):(R=_e(e),R.c(),R.m(s,null)):R&&(R.d(1),R=null)},d(e){E&&E.d(e),e&&h(t),e&&h(s),R&&R.d()}}}function ie(e){let t;return{c(){t=m("div"),T(t,"class","pagefind-ui__result-thumb pagefind-ui__loading svelte-j9e30")},m(e,s){d(e,t,s)},d(e){e&&h(t)}}}function ce(e){let t,s=e[1].meta.image&&ue(e);return{c(){t=m("div"),s&&s.c(),T(t,"class","pagefind-ui__result-thumb svelte-j9e30")},m(e,r){d(e,t,r),s&&s.m(t,null)},p(e,r){e[1].meta.image?s?s.p(e,r):(s=ue(e),s.c(),s.m(t,null)):s&&(s.d(1),s=null)},d(e){e&&h(t),s&&s.d()}}}function ue(e){let t,s,r;return{c(){t=m("img"),T(t,"class","pagefind-ui__result-image svelte-j9e30"),u(t.src,s=e[1].meta?.image)||T(t,"src",s),T(t,"alt",r=e[1].meta?.image_alt||e[1].meta?.title)},m(e,s){d(e,t,s)},p(e,n){2&n&&!u(t.src,s=e[1].meta?.image)&&T(t,"src",s),2&n&&r!==(r=e[1].meta?.image_alt||e[1].meta?.title)&&T(t,"alt",r)},d(e){e&&h(t)}}}function _e(e){let t,s=e[2],r=[];for(let n=0;ne.toLocaleUpperCase();function me(e,t,s){let{show_images:r=!0}=t,{process_result:n=null}=t,{result:a={data:async()=>{}}}=t;const l=["title","image","image_alt","url"];let o,i=[];return e.$$set=e=>{"show_images"in e&&s(0,r=e.show_images),"process_result"in e&&s(4,n=e.process_result),"result"in e&&s(5,a=e.result)},e.$$.update=()=>{32&e.$$.dirty&&(async e=>{s(1,o=await e.data()),s(1,o=n?.(o)??o),s(2,i=Object.entries(o.meta).filter((([e])=>!l.includes(e))))})(a)},[r,o,i,(e=30)=>". ".repeat(Math.floor(10+Math.random()*e)),n,a]}var fe=class extends Z{constructor(e){super(),Y(this,e,me,he,c,{show_images:0,process_result:4,result:5})}};function pe(e,t,s){const r=e.slice();return r[11]=t[s][0],r[12]=t[s][1],r}function Ee(e,t,s){const r=e.slice();return r[15]=t[s],r}function Re(e){let t,s,r,n,a,l=e[0]&&Ce();return{c(){l&&l.c(),t=p(),s=m("div"),r=m("p"),r.textContent=`${e[5](30)}`,n=p(),a=m("p"),a.textContent=`${e[5](40)}`,T(r,"class","pagefind-ui__result-title pagefind-ui__loading svelte-4xnkmf"),T(a,"class","pagefind-ui__result-excerpt pagefind-ui__loading svelte-4xnkmf"),T(s,"class","pagefind-ui__result-inner svelte-4xnkmf")},m(e,o){l&&l.m(e,o),d(e,t,o),d(e,s,o),_(s,r),_(s,n),_(s,a)},p(e,s){e[0]?l||(l=Ce(),l.c(),l.m(t.parentNode,t)):l&&(l.d(1),l=null)},d(e){l&&l.d(e),e&&h(t),e&&h(s)}}}function Te(e){let t,s,r,n,a,l,o,i,c,u=e[1].meta?.title+"",E=e[0]&&ve(e),R=e[4]&&be(e),v=e[3],A=[];for(let _=0;_e.toLocaleUpperCase();function $e(e,t,s){let{show_images:r=!0}=t,{process_result:n=null}=t,{result:a={data:async()=>{}}}=t;const l=["title","image","image_alt","url"];let o,i=[],c=[],u=!1;const _=(e,t)=>{if(e.length<=t)return e;const s=[...e].sort(((e,t)=>t.locations.length-e.locations.length)).slice(0,3).map((e=>e.url));return e.filter((e=>s.includes(e.url)))};return e.$$set=e=>{"show_images"in e&&s(0,r=e.show_images),"process_result"in e&&s(6,n=e.process_result),"result"in e&&s(7,a=e.result)},e.$$.update=()=>{128&e.$$.dirty&&(async e=>{s(1,o=await e.data()),s(1,o=n?.(o)??o),s(2,i=Object.entries(o.meta).filter((([e])=>!l.includes(e)))),Array.isArray(o.sub_results)&&(s(4,u=o.sub_results?.[0]?.url===(o.meta?.url||o.url)),s(3,c=_(u?o.sub_results.slice(1):[...o.sub_results],3)))})(a)},[r,o,i,c,u,(e=30)=>". ".repeat(Math.floor(10+Math.random()*e)),n,a]}var Ne=class extends Z{constructor(e){super(),Y(this,e,$e,ke,c,{show_images:0,process_result:6,result:7})}};function we(e,t,s){const r=e.slice();return r[9]=t[s][0],r[10]=t[s][1],r[11]=t,r[12]=s,r}function xe(e,t,s){const r=e.slice();return r[13]=t[s][0],r[14]=t[s][1],r[15]=t,r[16]=s,r}function je(e){let t,s,r,n,a=e[3]("filters_label",e[4],e[5])+"",l=Object.entries(e[1]),o=[];for(let i=0;ie.toLocaleUpperCase();function Ie(e,t,s){let{available_filters:r=null}=t,{show_empty_filters:n=!0}=t,{translate:a=(()=>"")}=t,{automatic_translations:l={}}=t,{translations:o={}}=t;const i={};let c=!1,u=!1;return e.$$set=e=>{"available_filters"in e&&s(1,r=e.available_filters),"show_empty_filters"in e&&s(2,n=e.show_empty_filters),"translate"in e&&s(3,a=e.translate),"automatic_translations"in e&&s(4,l=e.automatic_translations),"translations"in e&&s(5,o=e.translations)},e.$$.update=()=>{if(130&e.$$.dirty&&r&&!c){s(7,c=!0);let e=Object.entries(r||{});if(1===e.length){let t=Object.entries(e[0][1]);t?.length<=6&&s(6,u=!0)}}},[i,r,n,a,l,o,u,c,function(e,t){i[`${e}:${t}`]=this.checked,s(0,i)}]}var Pe=class extends Z{constructor(e){super(),Y(this,e,Ie,ze,c,{available_filters:1,show_empty_filters:2,translate:3,automatic_translations:4,translations:5,selected_filters:0})}get selected_filters(){return this.$$.ctx[0]}},De={};r(De,{comments:()=>qe,default:()=>Je,direction:()=>Ve,strings:()=>Ge,thanks_to:()=>Be});var Be="Jan Claasen",qe="",Ve="ltr",Ge={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]"},Je={thanks_to:Be,comments:qe,direction:Ve,strings:Ge},Ke={};r(Ke,{comments:()=>Ye,default:()=>Xe,direction:()=>Ze,strings:()=>Qe,thanks_to:()=>We});var We="Pablo Villaverde ",Ye="",Ze="ltr",Qe={placeholder:"Cerca",clear_search:"Netejar",load_more:"Veure mées 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üents:",searching:"Cercant [SEARCH_TERM]..."},Xe={thanks_to:We,comments:Ye,direction:Ze,strings:Qe},et={};r(et,{comments:()=>st,default:()=>at,direction:()=>rt,strings:()=>nt,thanks_to:()=>tt});var tt="Jan Claasen",st="",rt="ltr",nt={placeholder:"Suche",clear_search:"Löschen",load_more:"Mehr Ergebnisse laden",search_label:"Suche diese Seite",filters_label:"Filter",zero_results:"Keine Ergebnisse für [SEARCH_TERM]",many_results:"[COUNT] Ergebnisse für [SEARCH_TERM]",one_result:"[COUNT] Ergebnis für [SEARCH_TERM]",alt_search:"Keine Ergebnisse für [SEARCH_TERM]. Stattdessen werden Ergebnisse für [DIFFERENT_TERM] angezeigt",search_suggestion:"Keine Ergebnisse für [SEARCH_TERM]. Versuchen Sie eine der folgenden Suchen:",searching:"Suche für [SEARCH_TERM]"},at={thanks_to:tt,comments:st,direction:rt,strings:nt},lt={};r(lt,{comments:()=>it,default:()=>_t,direction:()=>ct,strings:()=>ut,thanks_to:()=>ot});var ot="Liam Bigelow ",it="",ct="ltr",ut={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]..."},_t={thanks_to:ot,comments:it,direction:ct,strings:ut},dt={};r(dt,{comments:()=>gt,default:()=>pt,direction:()=>mt,strings:()=>ft,thanks_to:()=>ht});var ht="Pablo Villaverde ",gt="",mt="ltr",ft={placeholder:"Buscar",clear_search:"Limpiar",load_more:"Ver más 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úsquedas:",searching:"Buscando [SEARCH_TERM]..."},pt={thanks_to:ht,comments:gt,direction:mt,strings:ft},Et={};r(Et,{comments:()=>Tt,default:()=>At,direction:()=>Ct,strings:()=>vt,thanks_to:()=>Rt});var Rt="Valtteri Laitinen ",Tt="",Ct="ltr",vt={placeholder:"Haku",clear_search:"Tyhjennä",load_more:"Lataa lisää tuloksia",search_label:"Hae tältä 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äytetään tulokset sen sijaan haulle [DIFFERENT_TERM]",search_suggestion:"Ei tuloksia haulle [SEARCH_TERM]. Kokeile jotain seuraavista:",searching:"Haetaan [SEARCH_TERM]..."},At={thanks_to:Rt,comments:Tt,direction:Ct,strings:vt},bt={};r(bt,{comments:()=>St,default:()=>yt,direction:()=>Ht,strings:()=>kt,thanks_to:()=>Mt});var Mt="Nicolas Friedli ",St="",Ht="ltr",kt={placeholder:"Rechercher",clear_search:"Nettoyer",load_more:"Charger plus de résultats",search_label:"Recherche sur ce site",filters_label:"Filtres",zero_results:"Pas de résultat pour [SEARCH_TERM]",many_results:"[COUNT] résultats pour [SEARCH_TERM]",one_result:"[COUNT] résultat pour [SEARCH_TERM]",alt_search:"Pas de résultat pour [SEARCH_TERM]. Montre les résultats pour [DIFFERENT_TERM] à la place",search_suggestion:"Pas de résultat pour [SEARCH_TERM]. Essayer une des recherches suivantes:",searching:"Recherche [SEARCH_TERM]..."},yt={thanks_to:Mt,comments:St,direction:Ht,strings:kt},$t={};r($t,{comments:()=>wt,default:()=>Ft,direction:()=>xt,strings:()=>jt,thanks_to:()=>Nt});var Nt="Pablo Villaverde ",wt="",xt="ltr",jt={placeholder:"Buscar",clear_search:"Limpar",load_more:"Ver máis 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]..."},Ft={thanks_to:Nt,comments:wt,direction:xt,strings:jt},Ot={};r(Ot,{comments:()=>zt,default:()=>Pt,direction:()=>Lt,strings:()=>It,thanks_to:()=>Ut});var Ut="Amit Yadav ",zt="",Lt="ltr",It={placeholder:"खोजें",clear_search:"साफ करें",load_more:"और अधिक परिणाम लोड करें",search_label:"इस साइट में खोजें",filters_label:"फ़िल्टर",zero_results:"कोई परिणाम [SEARCH_TERM] के लिए नहीं मिला",many_results:"[COUNT] परिणाम [SEARCH_TERM] के लिए मिले",one_result:"[COUNT] परिणाम [SEARCH_TERM] के लिए मिला",alt_search:"[SEARCH_TERM] के लिए कोई परिणाम नहीं मिला। इसके बजाय [DIFFERENT_TERM] के लिए परिणाम दिखा रहा है",search_suggestion:"[SEARCH_TERM] के लिए कोई परिणाम नहीं मिला। निम्नलिखित खोजों में से कोई एक आज़माएं:",searching:"[SEARCH_TERM] की खोज की जा रही है..."},Pt={thanks_to:Ut,comments:zt,direction:Lt,strings:It},Dt={};r(Dt,{comments:()=>qt,default:()=>Jt,direction:()=>Vt,strings:()=>Gt,thanks_to:()=>Bt});var Bt="Nixentric",qt="",Vt="ltr",Gt={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]..."},Jt={thanks_to:Bt,comments:qt,direction:Vt,strings:Gt},Kt={};r(Kt,{comments:()=>Yt,default:()=>Xt,direction:()=>Zt,strings:()=>Qt,thanks_to:()=>Wt});var Wt="Cosette Bruhns Alonso, Andrew Janco ",Yt="",Zt="ltr",Qt={placeholder:"Cerca",clear_search:"Cancella la cronologia",load_more:"Mostra più 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]..."},Xt={thanks_to:Wt,comments:Yt,direction:Zt,strings:Qt},es={};r(es,{comments:()=>ss,default:()=>as,direction:()=>rs,strings:()=>ns,thanks_to:()=>ts});var ts="Tate",ss="",rs="ltr",ns={placeholder:"検索",clear_search:"消す",load_more:"もっと読み込む",search_label:"このサイトを検索",filters_label:"フィルタ",zero_results:"[SEARCH_TERM]の検索に一致する件はありませんでした",many_results:"[SEARCH_TERM]の[COUNT]件の検索結果",one_result:"[SEARCH_TERM]の[COUNT]件の検索結果",alt_search:"[SEARCH_TERM]の検索に一致する件はありませんでした。[DIFFERENT_TERM]の検索結果を表示しています",search_suggestion:"[SEARCH_TERM]の検索に一致する件はありませんでした。次のいずれかの検索を試してください",searching:"[SEARCH_TERM]を検索しています"},as={thanks_to:ts,comments:ss,direction:rs,strings:ns},ls={};r(ls,{comments:()=>is,default:()=>_s,direction:()=>cs,strings:()=>us,thanks_to:()=>os});var os="Paul van Brouwershaven",is="",cs="ltr",us={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]..."},_s={thanks_to:os,comments:is,direction:cs,strings:us},ds={};r(ds,{comments:()=>gs,default:()=>ps,direction:()=>ms,strings:()=>fs,thanks_to:()=>hs});var hs="Christopher Wingate",gs="",ms="ltr",fs={placeholder:"Søk",clear_search:"Fjern",load_more:"Last flere resultater",search_label:"Søk på 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øv en av disse søkeordene i stedet:",searching:"Søker etter [SEARCH_TERM]"},ps={thanks_to:hs,comments:gs,direction:ms,strings:fs},Es={};r(Es,{comments:()=>Ts,default:()=>As,direction:()=>Cs,strings:()=>vs,thanks_to:()=>Rs});var Rs="Jonatah",Ts="",Cs="ltr",vs={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]..."},As={thanks_to:Rs,comments:Ts,direction:Cs,strings:vs},bs={};r(bs,{comments:()=>Ss,default:()=>ys,direction:()=>Hs,strings:()=>ks,thanks_to:()=>Ms});var Ms="Aleksandr Gordeev",Ss="",Hs="ltr",ks={placeholder:"Поиск",clear_search:"Очистить поле",load_more:"Загрузить еще",search_label:"Поиск по сайту",filters_label:"Фильтры",zero_results:"Ничего не найдено по запросу: [SEARCH_TERM]",many_results:"[COUNT] результатов по запросу: [SEARCH_TERM]",one_result:"[COUNT] результат по запросу: [SEARCH_TERM]",alt_search:"Ничего не найдено по запросу: [SEARCH_TERM]. Показаны результаты по запросу: [DIFFERENT_TERM]",search_suggestion:"Ничего не найдено по запросу: [SEARCH_TERM]. Попробуйте один из следующих вариантов",searching:"Поиск по запросу: [SEARCH_TERM]"},ys={thanks_to:Ms,comments:Ss,direction:Hs,strings:ks},$s={};r($s,{comments:()=>ws,default:()=>Fs,direction:()=>xs,strings:()=>js,thanks_to:()=>Ns});var Ns="Andrija Sagicc",ws="",xs="ltr",js={placeholder:"Претрага",clear_search:"Брисање",load_more:"Приказ више резултата",search_label:"Претрага сајта",filters_label:"Филтери",zero_results:"Нема резултата за [SEARCH_TERM]",many_results:"[COUNT] резултата за [SEARCH_TERM]",one_result:"[COUNT] резултата за [SEARCH_TERM]",alt_search:"Нема резултата за [SEARCH_TERM]. Приказ додатник резултата за [DIFFERENT_TERM]",search_suggestion:"Нема резултата за [SEARCH_TERM]. Покушајте са неком од следећих претрага:",searching:"Претрага термина [SEARCH_TERM]..."},Fs={thanks_to:Ns,comments:ws,direction:xs,strings:js},Os={};r(Os,{comments:()=>zs,default:()=>Ps,direction:()=>Ls,strings:()=>Is,thanks_to:()=>Us});var Us="Montazar Al-Jaber ",zs="",Ls="ltr",Is={placeholder:"Sök",clear_search:"Rensa",load_more:"Visa fler träffar",search_label:"Sök på denna sida",filters_label:"Filter",zero_results:"[SEARCH_TERM] gav inga träffar",many_results:"[SEARCH_TERM] gav [COUNT] träffar",one_result:"[SEARCH_TERM] gav [COUNT] träff",alt_search:"[SEARCH_TERM] gav inga träffar. Visar resultat för [DIFFERENT_TERM] istället",search_suggestion:"[SEARCH_TERM] gav inga träffar. Försök igen med en av följande sökord:",searching:"Söker efter [SEARCH_TERM]..."},Ps={thanks_to:Us,comments:zs,direction:Ls,strings:Is},Ds={};r(Ds,{comments:()=>qs,default:()=>Js,direction:()=>Vs,strings:()=>Gs,thanks_to:()=>Bs});var Bs="",qs="",Vs="ltr",Gs={placeholder:"தேடுக",clear_search:"அழிக்குக",load_more:"மேலும் முடிவுகளைக் காட்டுக",search_label:"இந்த தளத்தில் தேடுக",filters_label:"வடிகட்டல்கள்",zero_results:"[SEARCH_TERM] க்கான முடிவுகள் இல்லை",many_results:"[SEARCH_TERM] க்கான [COUNT] முடிவுகள்",one_result:"[SEARCH_TERM] க்கான முடிவு",alt_search:"[SEARCH_TERM] இத்தேடலுக்கான முடிவுகள் இல்லை, இந்த தேடல்களுக்கான ஒத்த முடிவுகள் [DIFFERENT_TERM]",search_suggestion:"[SEARCH_TERM] இத் தேடலுக்கான முடிவுகள் இல்லை.இதற்கு பதிலீடான தேடல்களை தேடுக:",searching:"[SEARCH_TERM] தேடப்படுகின்றது"},Js={thanks_to:Bs,comments:qs,direction:Vs,strings:Gs},Ks={};r(Ks,{comments:()=>Ys,default:()=>Xs,direction:()=>Zs,strings:()=>Qs,thanks_to:()=>Ws});var Ws="Taylan Özgür Bildik",Ys="",Zs="ltr",Qs={placeholder:"Araştır",clear_search:"Temizle",load_more:"Daha fazla sonuç",search_label:"Site genelinde arama",filters_label:"Filtreler",zero_results:"[SEARCH_TERM] için sonuç yok",many_results:"[SEARCH_TERM] için [COUNT] sonuç bulundu",one_result:"[SEARCH_TERM] için [COUNT] sonuç bulundu",alt_search:"[SEARCH_TERM] için sonuç yok. Bunun yerine [DIFFERENT_TERM] için sonuçlar gösteriliyor",search_suggestion:"[SEARCH_TERM] için sonuç yok. Alternatif olarak aşağıdaki kelimelerden birini deneyebilirsiniz:",searching:"[SEARCH_TERM] araştırılıyor..."},Xs={thanks_to:Ws,comments:Ys,direction:Zs,strings:Qs},er={};r(er,{comments:()=>sr,default:()=>ar,direction:()=>rr,strings:()=>nr,thanks_to:()=>tr});var tr="Amber Song",sr="",rr="ltr",nr={placeholder:"搜索",clear_search:"清除",load_more:"加载更多结果",search_label:"站内搜索",filters_label:"筛选",zero_results:"未找到 [SEARCH_TERM] 的相关结果",many_results:"找到 [COUNT] 个 [SEARCH_TERM] 的相关结果",one_result:"找到 [COUNT] 个 [SEARCH_TERM] 的相关结果",alt_search:"未找到 [SEARCH_TERM] 的相关结果。改为显示 [DIFFERENT_TERM] 的相关结果",search_suggestion:"未找到 [SEARCH_TERM] 的相关结果。请尝试以下搜索。",searching:"正在搜索 [SEARCH_TERM]..."},ar={thanks_to:tr,comments:sr,direction:rr,strings:nr},lr={};r(lr,{comments:()=>ir,default:()=>_r,direction:()=>cr,strings:()=>ur,thanks_to:()=>or});var or="Amber Song",ir="",cr="ltr",ur={placeholder:"搜索",clear_search:"清除",load_more:"加載更多結果",search_label:"站內搜索",filters_label:"篩選",zero_results:"未找到 [SEARCH_TERM] 的相關結果",many_results:"找到 [COUNT] 個 [SEARCH_TERM] 的相關結果",one_result:"找到 [COUNT] 個 [SEARCH_TERM] 的相關結果",alt_search:"未找到 [SEARCH_TERM] 的相關結果。改為顯示 [DIFFERENT_TERM] 的相關結果",search_suggestion:"未找到 [SEARCH_TERM] 的相關結果。請嘗試以下搜索。",searching:"正在搜索 [SEARCH_TERM]..."},_r={thanks_to:or,comments:ir,direction:cr,strings:ur},dr={};r(dr,{comments:()=>gr,default:()=>pr,direction:()=>mr,strings:()=>fr,thanks_to:()=>hr});var hr="Amber Song",gr="",mr="ltr",fr={placeholder:"搜索",clear_search:"清除",load_more:"加载更多结果",search_label:"站内搜索",filters_label:"筛选",zero_results:"未找到 [SEARCH_TERM] 的相关结果",many_results:"找到 [COUNT] 个 [SEARCH_TERM] 的相关结果",one_result:"找到 [COUNT] 个 [SEARCH_TERM] 的相关结果",alt_search:"未找到 [SEARCH_TERM] 的相关结果。改为显示 [DIFFERENT_TERM] 的相关结果",search_suggestion:"未找到 [SEARCH_TERM] 的相关结果。请尝试以下搜索。",searching:"正在搜索 [SEARCH_TERM]..."},pr={thanks_to:hr,comments:gr,direction:mr,strings:fr},Er=[De,Ke,et,lt,dt,Et,bt,$t,Ot,Dt,Kt,es,ls,ds,Es,bs,$s,Os,Ds,Ks,er,lr,dr],Rr=["../../translations/af.json","../../translations/ca.json","../../translations/de.json","../../translations/en.json","../../translations/es.json","../../translations/fi.json","../../translations/fr.json","../../translations/gl.json","../../translations/hi.json","../../translations/id.json","../../translations/it.json","../../translations/ja.json","../../translations/nl.json","../../translations/no.json","../../translations/pt.json","../../translations/ru.json","../../translations/sr.json","../../translations/sv.json","../../translations/ta.json","../../translations/tr.json","../../translations/zh-cn.json","../../translations/zh-tw.json","../../translations/zh.json"];function Tr(e,t,s){const r=e.slice();return r[47]=t[s],r}function Cr(e){let t,s,r;function n(t){e[33](t)}let a={show_empty_filters:e[4],available_filters:e[16],translate:e[18],automatic_translations:e[17],translations:e[5]};return void 0!==e[7]&&(a.selected_filters=e[7]),t=new Pe({props:a}),y.push((()=>function(e,t,s){const r=e.$$.props[t];void 0!==r&&(e.$$.bound[r]=s,s(e.$$.ctx[r]))}(t,"selected_filters",n))),{c(){G(t.$$.fragment)},m(e,s){J(t,e,s),r=!0},p(e,r){const n={};var a;16&r[0]&&(n.show_empty_filters=e[4]),65536&r[0]&&(n.available_filters=e[16]),131072&r[0]&&(n.automatic_translations=e[17]),32&r[0]&&(n.translations=e[5]),!s&&128&r[0]&&(s=!0,n.selected_filters=e[7],a=()=>s=!1,N.push(a)),t.$set(n)},i(e){r||(B(t.$$.fragment,e),r=!0)},o(e){q(t.$$.fragment,e),r=!1},d(e){K(t,e)}}}function vr(e){let t,s,r,n;const a=[br,Ar],l=[];function o(e,t){return e[12]?0:1}return s=o(e),r=l[s]=a[s](e),{c(){t=m("div"),r.c(),T(t,"class","pagefind-ui__results-area svelte-1d60ae3")},m(e,r){d(e,t,r),l[s].m(t,null),n=!0},p(e,n){let i=s;s=o(e),s===i?l[s].p(e,n):(P(),q(l[i],1,1,(()=>{l[i]=null})),D(),r=l[s],r?r.p(e,n):(r=l[s]=a[s](e),r.c()),B(r,1),r.m(t,null))},i(e){n||(B(r),n=!0)},o(e){q(r),n=!1},d(e){e&&h(t),l[s].d()}}}function Ar(e){let t,s,r,n,a,l,i=[],c=new Map;function u(e,t){return 0===e[11].results.length?Hr:1===e[11].results.length?Sr:Mr}let _=u(e),g=_(e),f=e[11].results.slice(0,e[15]);const R=e=>e[47].id;for(let o=0;oe[15]&&Nr(e);return{c(){t=m("p"),g.c(),s=p(),r=m("ol");for(let e=0;eo.p(e,t))):(o=u(r,e),o.c()),E.set(r,p[m]=o),r in f&&R.set(r,Math.abs(m-f[r]))}const C=new Set,v=new Set;function A(e){B(e,1),e.m(i,_),l.set(e.key,e),_=e.first,g--}for(;h&&g;){const t=p[g-1],s=e[h-1],r=t.key,n=s.key;t===s?(_=t.first,h--,g--):E.has(n)?!l.has(r)||C.has(r)?A(t):v.has(n)?h--:R.get(r)>R.get(n)?(v.add(r),A(t)):(C.add(n),h--):(c(s,l),h--)}for(;h--;){const t=e[h];E.has(t.key)||c(t,l)}for(;g;)A(p[g-1]);return o(T),p}(i,s,R,0,e,f,c,r,V,$r,null,Tr),D()),e[11].results.length>e[15]?C?C.p(e,s):(C=Nr(e),C.c(),C.m(a.parentNode,a)):C&&(C.d(1),C=null)},i(e){if(!l){for(let e=0;e{i[l]=null})),D(),n=i[r],n?n.p(t,s):(n=i[r]=o[r](t),n.c()),B(n,1),n.m(a.parentNode,a))},i(e){l||(B(n),l=!0)},o(e){q(n),l=!1},d(e){e&&h(s),i[r].d(e),e&&h(a)}}}function Nr(e){let t,s,r,n,a=e[18]("load_more",e[17],e[5])+"";return{c(){t=m("button"),s=f(a),T(t,"type","button"),T(t,"class","pagefind-ui__button svelte-1d60ae3")},m(a,l){d(a,t,l),_(t,s),r||(n=R(t,"click",e[20]),r=!0)},p(e,t){131104&t[0]&&a!==(a=e[18]("load_more",e[17],e[5])+"")&&C(s,a)},d(e){e&&h(t),r=!1,n()}}}function wr(e){let t,s,r=e[18]("searching",e[17],e[5]).replace(/\[SEARCH_TERM\]/,e[14])+"";return{c(){t=m("p"),s=f(r),T(t,"class","pagefind-ui__message svelte-1d60ae3")},m(e,r){d(e,t,r),_(t,s)},p(e,t){147488&t[0]&&r!==(r=e[18]("searching",e[17],e[5]).replace(/\[SEARCH_TERM\]/,e[14])+"")&&C(s,r)},d(e){e&&h(t)}}}function xr(e){let t,s,r,n,a,l,i,c,u,g,E,b,M,S,H=e[18]("clear_search",e[17],e[5])+"",k=e[10]&&Cr(e),y=e[13]&&vr(e);return{c(){t=m("div"),s=m("form"),r=m("input"),a=p(),l=m("button"),i=f(H),c=p(),u=m("div"),k&&k.c(),g=p(),y&&y.c(),T(r,"class","pagefind-ui__search-input svelte-1d60ae3"),T(r,"type","text"),T(r,"placeholder",n=e[18]("placeholder",e[17],e[5])),T(r,"autocapitalize","none"),T(r,"enterkeyhint","search"),T(l,"class","pagefind-ui__search-clear svelte-1d60ae3"),A(l,"pagefind-ui__suppressed",!e[6]),T(u,"class","pagefind-ui__drawer svelte-1d60ae3"),A(u,"pagefind-ui__hidden",!e[13]),T(s,"class","pagefind-ui__form svelte-1d60ae3"),T(s,"role","search"),T(s,"aria-label",E=e[18]("search_label",e[17],e[5])),T(s,"action","javascript:void(0);"),T(t,"class","pagefind-ui svelte-1d60ae3"),A(t,"pagefind-ui--reset",e[0])},m(n,o){d(n,t,o),_(t,s),_(s,r),v(r,e[6]),e[30](r),_(s,a),_(s,l),_(l,i),e[31](l),_(s,c),_(s,u),k&&k.m(u,null),_(u,g),y&&y.m(u,null),b=!0,M||(S=[R(r,"focus",e[19]),R(r,"keydown",e[28]),R(r,"input",e[29]),R(l,"click",e[32]),R(s,"submit",jr)],M=!0)},p(e,a){(!b||131104&a[0]&&n!==(n=e[18]("placeholder",e[17],e[5])))&&T(r,"placeholder",n),64&a[0]&&r.value!==e[6]&&v(r,e[6]),(!b||131104&a[0])&&H!==(H=e[18]("clear_search",e[17],e[5])+"")&&C(i,H),(!b||64&a[0])&&A(l,"pagefind-ui__suppressed",!e[6]),e[10]?k?(k.p(e,a),1024&a[0]&&B(k,1)):(k=Cr(e),k.c(),B(k,1),k.m(u,g)):k&&(P(),q(k,1,1,(()=>{k=null})),D()),e[13]?y?(y.p(e,a),8192&a[0]&&B(y,1)):(y=vr(e),y.c(),B(y,1),y.m(u,null)):y&&(P(),q(y,1,1,(()=>{y=null})),D()),(!b||8192&a[0])&&A(u,"pagefind-ui__hidden",!e[13]),(!b||131104&a[0]&&E!==(E=e[18]("search_label",e[17],e[5])))&&T(s,"aria-label",E),(!b||1&a[0])&&A(t,"pagefind-ui--reset",e[0])},i(e){b||(B(k),B(y),b=!0)},o(e){q(k),q(y),b=!1},d(s){s&&h(t),e[30](null),e[31](null),k&&k.d(),y&&y.d(),M=!1,o(S)}}}var jr=e=>e.preventDefault();function Fr(t,s,r){const n={},a=Rr.map((e=>e.match(/([^\/]+)\.json$/)[1]));for(let e=0;e{let e=ne((document?.querySelector?.("html")?.getAttribute?.("lang")||"en").toLocaleLowerCase());r(17,F=n[`${e.language}-${e.script}-${e.region}`]||n[`${e.language}-${e.region}`]||n[`${e.language}`]||n.en)}));const O=async()=>{if(!A&&(r(10,A=!0),!l)){let s;try{s=await e((()=>import(`${c}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 PagefindUI",`[DEBUG: Loaded from ${document?.currentScript?.src??"no known script location"}]`].join("\n"))}h||r(22,h=d?12:30);let n={...E||{},excerptLength:h};await s.options(n);for(const e of R){if(!e.bundlePath)throw new Error("mergeIndex requires a bundlePath parameter");const t=e.bundlePath;delete e.bundlePath,await s.mergeIndex(t,e)}l=s,U()}},U=async()=>{l&&(w=await l.filters(),x&&Object.keys(x).length||r(16,x=w))};let z;const L=async(e,t)=>{if(!e)return r(13,S=!1),void(z&&clearTimeout(z));const s=(e=>{let t={};return Object.entries(e).filter((([,e])=>e)).forEach((([e])=>{let[s,r]=e.split(/:(.*)$/);t[s]=t[s]||[],t[s].push(r)})),t})(t),n=()=>P(e,s);p>0&&e?(z&&clearTimeout(z),z=setTimeout(n,p),await I(),l.preload(e,{filters:s})):n(),D()},I=async()=>{for(;!l;)O(),await new Promise((e=>setTimeout(e,50)))},P=async(e,t)=>{r(14,$=e||""),"function"==typeof m&&(e=m(e)),r(12,M=!0),r(13,S=!0),await I();const s=++k,n=await l.search(e,{filters:t});k===s&&(n.filters&&Object.keys(n.filters)?.length&&r(16,x=n.filters),r(11,b=n),r(12,M=!1),r(15,N=5))},D=()=>{const e=i.offsetWidth;40!=e&&r(8,o.style.paddingRight=`${e+2}px`,o)};return t.$$set=e=>{"base_path"in e&&r(23,c=e.base_path),"reset_styles"in e&&r(0,u=e.reset_styles),"show_images"in e&&r(1,_=e.show_images),"show_sub_results"in e&&r(2,d=e.show_sub_results),"excerpt_length"in e&&r(22,h=e.excerpt_length),"process_result"in e&&r(3,g=e.process_result),"process_term"in e&&r(24,m=e.process_term),"show_empty_filters"in e&&r(4,f=e.show_empty_filters),"debounce_timeout_ms"in e&&r(25,p=e.debounce_timeout_ms),"pagefind_options"in e&&r(26,E=e.pagefind_options),"merge_index"in e&&r(27,R=e.merge_index),"trigger_search_term"in e&&r(21,T=e.trigger_search_term),"translations"in e&&r(5,C=e.translations)},t.$$.update=()=>{2097152&t.$$.dirty[0]&&T&&(r(6,v=T),r(21,T="")),192&t.$$.dirty[0]&&L(v,j)},[u,_,d,g,f,C,v,j,o,i,A,b,M,S,$,N,x,F,(e,t,s)=>s[e]??t[e]??"",O,e=>{e?.preventDefault(),r(15,N+=5)},T,h,c,m,p,E,R,e=>{"Escape"===e.key&&(r(6,v=""),o.blur()),"Enter"===e.key&&e.preventDefault()},function(){v=this.value,r(6,v),r(21,T)},function(e){y[e?"unshift":"push"]((()=>{o=e,r(8,o)}))},function(e){y[e?"unshift":"push"]((()=>{i=e,r(9,i)}))},()=>{r(6,v=""),o.blur()},function(e){j=e,r(7,j)}]}var Or,Ur=class extends Z{constructor(e){super(),Y(this,e,Fr,xr,c,{base_path:23,reset_styles:0,show_images:1,show_sub_results:2,excerpt_length:22,process_result:3,process_term:24,show_empty_filters:4,debounce_timeout_ms:25,pagefind_options:26,merge_index:27,trigger_search_term:21,translations:5},null,[-1,-1])}};try{Or=new URL(document.currentScript.src).pathname.match(/^(.*\/)(?:pagefind-)?ui.js.*$/)[1]}catch(Lr){Or="/pagefind/"}var zr=class{constructor(e){this._pfs=null;let t=e.element??"[data-pagefind-ui]",s=e.bundlePath??Or,r=e.resetStyles??!0,n=e.showImages??!0,a=e.showSubResults??!1,l=e.excerptLength??0,o=e.processResult??null,i=e.processTerm??null,c=e.showEmptyFilters??!0,u=e.debounceTimeoutMs??300,_=e.mergeIndex??[],d=e.translations??[];delete e.element,delete e.bundlePath,delete e.resetStyles,delete e.showImages,delete e.showSubResults,delete e.excerptLength,delete e.processResult,delete e.processTerm,delete e.showEmptyFilters,delete e.debounceTimeoutMs,delete e.mergeIndex,delete e.translations;const h=t instanceof HTMLElement?t:document.querySelector(t);h?this._pfs=new Ur({target:h,props:{base_path:s,reset_styles:r,show_images:n,show_sub_results:a,excerpt_length:l,process_result:o,process_term:i,show_empty_filters:c,debounce_timeout_ms:u,merge_index:_,translations:d,pagefind_options:e}}):console.error(`Pagefind UI couldn't find the selector ${t}`)}triggerSearch(e){this._pfs.$$set({trigger_search_term:e})}};export{zr as PagefindUI}; diff --git a/bell.svg b/bell.svg new file mode 100644 index 00000000..daf9124f --- /dev/null +++ b/bell.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/browser-support/index.html b/browser-support/index.html new file mode 100644 index 00000000..b295dac2 --- /dev/null +++ b/browser-support/index.html @@ -0,0 +1,214 @@ + Browser Support | Radashi + + Skip to content

Browser Support

Discover which browsers and versions Radashi supports.

Browser support is a crucial factor to consider when choosing a utility library +like Radashi. It determines which browsers and versions your application will be compatible with, +potentially affecting your user base and the features you can utilize.

+
Legacy Transformations
+

While Radashi aims to strike a balance between modern functionality and broad compatibility, it’s +important to note that you may need to compile your application bundle using tools like:

+ +

…to ensure compatibility with browsers older than we officially support (like IE 11).

+

The Query

+

Radashi currently uses the following Browserslist query:

+
>0.1% and not dead
node >= 16
+

If you’d like to understand Browserslist better, check out this exceptional article by Alexander Morse.

+

Quality Assurance

+

To ensure that Radashi keeps its promise of broad compatibility, we use ESLint with only the eslint-plugin-compat plugin by Amila Welihinda.

+

When you run pnpm lint in the Radashi repository, ESLint will check that all the functions in Radashi are compatible with the browsers specified in the browserlist query in our package.json file.

+

Coverage

+

”Coverage” refers to audience coverage, which is an estimated percentage of users likely to be using devices that Radashi officially supports. This estimate is based on Browserslist data and is not intended to reflect the actual usage rate of your specific website or application.

+

This coverage data is automatically updated whenever the Radashi docs are rebuilt and re-deployed. This page was generated on August 6, 2024.

+
Location-Based Coverage
+ + + + + + + + + + + + + + + + + + + + + + + + + +
RegionCoverage
Global92.62%
USA91.83%
Europe92.60%
China79.78%
+
IE 11
+

China’s lower coverage is mainly due to a lack of support for IE 11 on Radashi’s part. Radashi does not intend to support IE 11.

+
Device-Based Coverage
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BrowserVersionCoverage
Chrome for Android≥ 12744.10%
Chrome≥ 7919.72%
Safari on iOS≥ 11.013.88%
Edge≥ 1254.58%
Safari≥ 15.62.54%
Firefox≥ 1151.89%
Samsung Internet≥ 251.66%
Opera Mobile≥ 801.12%
UC Browser for Android≥ 15.51.05%
Android Browser≥ 1270.81%
Opera≥ 1090.60%
Firefox for Android≥ 1270.35%
QQ Browser≥ 14.90.34%
Node≥ 16.0.0
\ No newline at end of file diff --git a/changelog/index.html b/changelog/index.html new file mode 100644 index 00000000..b53e47c6 --- /dev/null +++ b/changelog/index.html @@ -0,0 +1,324 @@ + Changelog | Radashi + + Skip to content

Changelog

Changelog

+

All notable changes to this project will be documented in this file.

+

The format is based on Keep a Changelog, +and this project adheres to Semantic Versioning.

+

radashi@beta

+

Details

+

Added

+ +

Changed

+ +

Fixed

+ +

Performance

+
    +
  • +

    Avoid excessive array allocation in fork by @localusercamp in #33

    +
  • +
  • +

    Make template faster by @aleclarson in #32

    +
  • +
  • +

    (series) Avoid object spread in loop by @cdreeves in #37

    +
  • +
  • +

    (cluster) Avoid an array allocation by @aleclarson in #63

    +
  • +
  • +

    (replace) Avoid creating 2 intermediate arrays by @aleclarson in #61

    +
  • +
  • +

    (merge) Avoid arrow function in loop and avoid calling user-provided key generator more than once per item by @aleclarson in #60

    +
  • +
  • +

    (replaceOrAppend) Avoid creating 2 intermediate arrays by @aleclarson in #62

    +
  • +
  • +

    (shuffle) Use the Fisher-Yates algorithm by @eumkz in #76

    +
  • +
+

Types

+ +

New Contributors

+ +
\ No newline at end of file diff --git a/clipboard.svg b/clipboard.svg new file mode 100644 index 00000000..5639cce8 --- /dev/null +++ b/clipboard.svg @@ -0,0 +1,3 @@ + + + diff --git a/contributing/index.html b/contributing/index.html new file mode 100644 index 00000000..1ccc0be2 --- /dev/null +++ b/contributing/index.html @@ -0,0 +1,111 @@ + Contributing to Radashi | Radashi + + Skip to content

Contributing to Radashi

We've been waiting for you...

Thank you for investing your time in contributing to Radashi.

+

Note that this document explains how to contribute through a fork of Radashi. If you’re looking to contribute through a Radashi template, check out this page instead.

+

You have a question?

+

If you have a general question about Radashi, how to use it, the roadmap, or an idea to chat about you can ask it on the discussions page. Before you do, search to see if it’s been asked before. If a related topic doesn’t exist, you can start a new one.

+

You have a problem?

+

If you have an issue with Radashi, you want to report a bug, or you need an improvement you can create an issue on the issues page. Before you do, search to see if it’s already been brought up. If a similar issue doesn’t exist, you can create a new one.

+

You want to contribute?

+

Before adding new functions or features, please review our design principles. If you’re just fixing some existing code, you can skip this step.

+The ethos of Radashi +

Scan through the existing issues to find one that interests you. As a general rule, we don’t assign issues to anyone. If you find an issue to work on, you are welcome to open a PR with a fix. Feel free to ask questions about the implementation or design in a comment on the issue before diving in.

+

You want to write code?

+
    +
  • To get started, run pnpm i in the project’s root directory to install the dependencies.
  • +
  • You can add a new function with pnpm add-function <group-name>/<function-name>. This will create the necessary files and open a PR with the new function. Try to use a group-name that already exists, if possible (check the src directory). Note that you will need to manually export the function from src/mod.ts before you can use it.
  • +
  • You can run the unit tests with pnpm test. They require Node v16+. You can run nvm use in the root directory to change to the correct Node version. Passing tests and 100% code coverage is required.
  • +
  • You can lint your code with pnpm lint and format it with pnpm format. You’ll want to do both before sending a pull request.
  • +
  • To get familiar with the existing code, it’s recommended to look through the docs and the codebase in parallel. For each function in the docs, find the implementation in the source and skim over the code.
  • +
+

You’re ready to push a change?

+

Once you’ve made your changes on a fork of the Radashi repo, create a pull request to the main branch of the radashi repository. If you made a breaking change, please target the next branch instead.

+
    +
  • Be sure to fill in a description that lets readers and reviewers understand both the implementation and intent of your changes.
  • +
  • Don’t forget to link the PR to an issue if you are solving one.
  • +
  • Enable the checkbox to allow maintainer edits so the branch can be updated for a merge.
  • +
  • Remember to create a new branch with your changes, rather than using your fork’s main branch in the PR. Using main can cause issues.
  • +
+

Once you submit your PR, one of Radashi’s maintainers will review it. They might ask questions or request additional information.

+

Your PR gets merged!

+

Congratulations! 🥳

+

Stable versions of Radashi are published manually. Beta versions are published automatically, every day, at 5:00AM UTC (if a PR has been merged). Your PR will be updated with a comment when your PR is included in a beta release.

\ No newline at end of file diff --git a/favicon.svg b/favicon.svg new file mode 100644 index 00000000..cba5ac14 --- /dev/null +++ b/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/github-big.svg b/github-big.svg new file mode 100644 index 00000000..f5a0e564 --- /dev/null +++ b/github-big.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..d441c8d3 --- /dev/null +++ b/index.html @@ -0,0 +1,136 @@ + Introducing Radashi | Radashi + + Skip to content

Introducing Radashi

A new frontier in TypeScript utility libraries.

Welcome to Radashi! We’re here to make your development life easier with a collection of super handy functions designed for modern JavaScript and TypeScript developers. Think of Radashi as a friendly toolbelt that’s all about simplicity, customization, and community.

+

Key Features

+

✨ Built for TypeScript

+

Radashi is made with TypeScript at its core. This means our functions not only help you write better code but also catch errors early, making your development smoother and more reliable.

+ +
castArray
chain

Below is our castArray implementation. If you can read our CastArray<T> type, you’re officially a TypeScript nerd. But good news, we wrote it so you don’t have to!

export function castArray<T>(value: T): CastArray<T>
export function castArray(value: unknown): unknown {
return Array.isArray(value) ? value.slice() : [value]
}
+
export type CastArray<T> = [T] extends [never]
? never[]
: [unknown] extends [T]
? unknown[]
:
| (T extends any
? T extends readonly (infer U)[]
? U[]
: never
: never)
| (Exclude<T, readonly any[]> extends never
? never
: Exclude<T, readonly any[]>[])

Our chain function also has a gnarly type definition. As you can see, there’s a lot we can do to make your life with TypeScript easier.

export function chain<T1 extends any[], T2, T3>(
f1: (...arg: T1) => T2,
f2: (arg: T2) => T3
): (...arg: T1) => T3
export function chain<T1 extends any[], T2, T3, T4>(
f1: (...arg: T1) => T2,
f2: (arg: T2) => T3,
f3: (arg: T3) => T4
): (...arg: T1) => T4
export function chain<T1 extends any[], T2, T3, T4, T5>(
f1: (...arg: T1) => T2,
f2: (arg: T2) => T3,
f3: (arg: T3) => T4,
f4: (arg: T3) => T5
): (...arg: T1) => T5
export function chain<T1 extends any[], T2, T3, T4, T5, T6>(
f1: (...arg: T1) => T2,
f2: (arg: T2) => T3,
f3: (arg: T3) => T4,
f4: (arg: T3) => T5,
f5: (arg: T3) => T6
): (...arg: T1) => T6
export function chain<T1 extends any[], T2, T3, T4, T5, T6, T7>(
f1: (...arg: T1) => T2,
f2: (arg: T2) => T3,
f3: (arg: T3) => T4,
f4: (arg: T3) => T5,
f5: (arg: T3) => T6,
f6: (arg: T3) => T7
): (...arg: T1) => T7
export function chain<T1 extends any[], T2, T3, T4, T5, T6, T7, T8>(
f1: (...arg: T1) => T2,
f2: (arg: T2) => T3,
f3: (arg: T3) => T4,
f4: (arg: T3) => T5,
f5: (arg: T3) => T6,
f6: (arg: T3) => T7,
f7: (arg: T3) => T8
): (...arg: T1) => T8
export function chain<T1 extends any[], T2, T3, T4, T5, T6, T7, T8, T9>(
f1: (...arg: T1) => T2,
f2: (arg: T2) => T3,
f3: (arg: T3) => T4,
f4: (arg: T3) => T5,
f5: (arg: T3) => T6,
f6: (arg: T3) => T7,
f7: (arg: T3) => T8,
f8: (arg: T3) => T9
): (...arg: T1) => T9
export function chain<T1 extends any[], T2, T3, T4, T5, T6, T7, T8, T9, T10>(
f1: (...arg: T1) => T2,
f2: (arg: T2) => T3,
f3: (arg: T3) => T4,
f4: (arg: T3) => T5,
f5: (arg: T3) => T6,
f6: (arg: T3) => T7,
f7: (arg: T3) => T8,
f8: (arg: T3) => T9,
f9: (arg: T3) => T10
): (...arg: T1) => T10
export function chain<
T1 extends any[],
T2,
T3,
T4,
T5,
T6,
T7,
T8,
T9,
T10,
T11,
>(
f1: (...arg: T1) => T2,
f2: (arg: T2) => T3,
f3: (arg: T3) => T4,
f4: (arg: T3) => T5,
f5: (arg: T3) => T6,
f6: (arg: T3) => T7,
f7: (arg: T3) => T8,
f8: (arg: T3) => T9,
f9: (arg: T3) => T10,
f10: (arg: T3) => T11
): (...arg: T1) => T11
export function chain(...funcs: ((...args: any[]) => any)[]) {
return (...args: any[]) => {
return funcs.slice(1).reduce((acc, fn) => fn(acc), funcs[0](...args))
}
}
+

🎯 Smart Function Choices

+

We pick our functions based on real needs and popular use cases. Our goal is to give you just what you need without the extra fluff, keeping everything straightforward and understandable.

+
select
objectify
defer

Use select to create an array by filtering and mapping another array’s items.

import { select } from 'radashi'
+
// Example: Filtering and transforming a list of products
const products = [
{ id: 1, name: 'Laptop', price: 1000, inStock: true },
{ id: 2, name: 'Phone', price: 800, inStock: false },
{ id: 3, name: 'Tablet', price: 500, inStock: true },
{ id: 4, name: 'Headphones', price: 100, inStock: true },
]
+
// Map to a new object with the name and price.
// Filter out products that are not in stock or are too expensive.
const affordableInStockProducts = select(
products,
product => ({ name: product.name, price: product.price }),
product => product.inStock && product.price < 600
)
// => [{ name: 'Tablet', price: 500 }, { name: 'Headphones', price: 100 }]

Use objectify to create an object from an array.

import { objectify } from 'radashi'
+
// A list of employees with their IDs and salaries
const employees = [
{ id: 101, name: 'Alice', salary: 75000 },
{ id: 102, name: 'Bob', salary: 82000 },
{ id: 103, name: 'Charlie', salary: 68000 },
]
+
// Create a dictionary of employee salaries by their ID
const salariesById = objectify(
employees,
employee => employee.id,
employee => employee.salary
)
// => { 101: 75000, 102: 82000, 103: 68000 }
+
// Quickly look up an employee's salary
console.log(`Bob's salary: $${salariesById[102]}`)
// Logs "Bob's salary: $82000"

Use defer for co-location of cleanup logic with resource creation.

import { defer } from 'radashi'
+
async function runDatabaseMigration() {
await defer(async cleanup => {
const tempTable = await createTempTable()
cleanup(async () => dropTable(tempTable))
+
const backupFile = await backupExistingData()
cleanup(async () => deleteFile(backupFile))
+
try {
await migrateData(tempTable)
await swapTables(tempTable, 'production_table')
} catch (error) {
console.error('Migration failed:', error)
throw error
}
+
console.log('Migration completed successfully')
})
}
+
runDatabaseMigration().catch(console.error)
+

🪶 Lightweight and Efficient

+

We keep things simple to ensure your projects stay light and fast. Radashi is fully tree-shakeable, so you only include the functions you use. This means no unnecessary bulk in your code.

+
radashi
lodash-es

For fun, let’s compare the size of Radashi’s mapValues function to that of Lodash’s. I can assure you, this massive difference is not uncommon.

export function mapValues(obj, mapFunc) {
const keys2 = Object.keys(obj)
return keys2.reduce((acc, key) => {
acc[key] = mapFunc(obj[key], key)
return acc
}, {})
}

This is the mapValues function from Lodash. The bundle size clocks in at 16.6 kB minified. Obviously, we all want to avoid this!

// http-url:https://unpkg.com/lodash-es@4.17.21/_freeGlobal.js
var freeGlobal =
typeof global == 'object' && global && global.Object === Object && global
var freeGlobal_default = freeGlobal
+
// http-url:https://unpkg.com/lodash-es@4.17.21/_root.js
var freeSelf = typeof self == 'object' && self && self.Object === Object && self
var root = freeGlobal_default || freeSelf || Function('return this')()
var root_default = root
+
/* ~1300 Lines Later... */
+
// http-url:https://unpkg.com/lodash-es@4.17.21/mapValues.js
function mapValues(object, iteratee) {
var result = {}
iteratee = baseIteratee_default(iteratee, 3)
baseForOwn_default(object, function (value, key, object2) {
baseAssignValue_default(result, key, iteratee(value, key, object2))
})
return result
}
var mapValues_default = mapValues
export { mapValues_default as mapValues }
+

🛠️ Easy to Customize

+

Want to add your own touch? You can easily extend Radashi with your own functions using our template repository. Make it yours and easily contribute your functions back to the community.

+ +

🤝 Community-Powered

+

Radashi thrives on contributions and new ideas. We welcome everyone to join in, share their knowledge, and help the library evolve. Our open process and regular updates keep us in tune with what developers need.

+ +

Tackling Common Problems

+

Radashi is here to solve some big issues in utility libraries:

+
    +
  1. Central Control: We support a decentralized, community-driven approach.
  2. +
  3. Customization: Easily extend Radashi with our template repository.
  4. +
  5. Fragmentation: We offer a unified platform for sharing and adopting TypeScript utility functions.
  6. +
+

Our Core Values

+
    +
  • Purposeful Design: Guided by our evolving “Our Ethos” document
  • +
  • Simplicity: Keeping code light and efficient
  • +
  • Pragmatism: Focusing on what’s most useful
  • +
  • Innovation: Staying ahead of emerging needs
  • +
+

 

+
+

Radashi helps you write cleaner, more efficient code by offering a curated set of TypeScript utility functions. Customize it to fit your needs, contribute your own functions, and collaborate with a community of developers to build a better JavaScript ecosystem.

+

Ready to dive in? Choose your next step with Radashi:

+
\ No newline at end of file diff --git a/installation/index.html b/installation/index.html new file mode 100644 index 00000000..4b6bc37f --- /dev/null +++ b/installation/index.html @@ -0,0 +1,136 @@ + Installation | Radashi + + Skip to content

Installation

Use Radashi in your project

Quick Start

+
+ +

Node

+

PNPM

+

Install the latest stable version:

+
pnpm install radashi
+

Install the latest beta version, which includes merged PRs not yet included in a stable release:

+
pnpm install radashi@beta
+

What is PNPM?

+
+

With PNPM, all the package files are saved in a single place on the disk. When packages are installed to your project, their files are hard-linked from that single place, consuming no additional disk space. This allows you to share dependencies of the same version across projects.

+
+

Bun

+

Install the latest stable version:

+
bun install radashi
+

Install the latest beta version, which includes merged PRs not yet included in a stable release:

+
bun install radashi@beta
+

What is Bun?

+
+

⚡️ 25x faster — Switch from npm install to bun install in any Node.js project to make your installations up to 25x faster.

+
+

NPM

+

Install the latest stable version:

+
npm install radashi
+

Install the latest beta version, which includes merged PRs not yet included in a stable release:

+
npm install radashi@beta
+

Yarn

+

Install the latest stable version:

+
yarn add radashi
+

Install the latest beta version, which includes merged PRs not yet included in a stable release:

+
yarn add radashi@beta
+

JSR

+
jsr add @radashi-org/radashi
+ +

Deno

+

Deno

+
deno add @radashi-org/radashi
+

What is Deno?

\ No newline at end of file diff --git a/our-ethos/index.html b/our-ethos/index.html new file mode 100644 index 00000000..32ae1b30 --- /dev/null +++ b/our-ethos/index.html @@ -0,0 +1,124 @@ + Our Ethos | Radashi + + Skip to content

Our Ethos

The guiding principles of Radashi development and community

Radashi’s ethos is rooted in pragmatism, flexibility, and community-driven development. We aim to provide a modern, customizable utility library that serves the needs of TypeScript developers while maintaining simplicity and reliability. This document serves as a living guide for our development process and community interactions, subject to evolution as our project grows and adapts to the changing landscape of software development.

+

Core Principles

+

Pragmatic TypeScript Utility

+

Radashi is designed for TypeScript developers who appreciate utility libraries without fully embracing Functional Programming. We aim to provide a modern, TypeScript-first approach to common programming tasks, balancing practicality with advanced features.

+

Customization and Flexibility

+

At the heart of Radashi is the priority of customizability, allowing developers to tailor the library to their specific project needs. We provide tools and guidance for creating personalized versions of Radashi, empowering users to shape the library according to their unique requirements.

+

Minimalist Design

+

Radashi embraces a minimalist design philosophy. Our functions are focused, clear, and predictable, avoiding unnecessary complexity. We carefully consider each addition to the library, prioritizing readability and practical utility to ensure that every feature serves a valuable purpose.

+

Modern Architecture

+

Built with ESM and TypeScript from the ground up, Radashi leverages modern development practices. We optimize for tree-shaking to keep bundles lean and utilize cutting-edge tools like Biome and Vitest, ensuring that Radashi remains at the forefront of JavaScript development.

+

Robust and Reliable

+

We strive for perfect TypeScript support and maintain comprehensive test coverage across all functions. Performance benchmarks and browser compatibility checks are integral to our development process, ensuring that Radashi remains dependable across various environments.

+

Development Guidelines

+

Function Independence

+

We avoid creating internal APIs or functions not exported for client use. Dependencies between Radashi modules are minimized to maintain simplicity and ease of understanding, allowing each function to stand on its own as much as possible.

+

Concise Implementations

+

Radashi functions are designed to be concise, generally not exceeding ~20 lines of code. Complex implementations that require more extensive code may be better suited for separate packages or libraries, maintaining the library’s focus on simplicity.

+

Copy-Paste Friendly

+

Each function in Radashi is designed to be easily transferable to a user’s project with zero modifications. This approach supports quick customization and integration, allowing developers to use Radashi functions flexibly within their own codebases.

+

Test-Driven Development

+

All contributions to Radashi must include comprehensive tests, aiming for 100% line coverage. We emphasize the importance of considering edge cases carefully in test design, ensuring robust and reliable functionality across various scenarios.

+

Documentation First

+

Clear and accurate documentation is required for all new features and changes in Radashi. We prioritize clarity and grammatical correctness in our documentation, ensuring that users can easily understand and implement Radashi’s features.

+

Design Philosophy

+

Abstraction over Syntactic Sugar

+

Radashi functions are designed to enable common use cases that are awkward to implement in vanilla JavaScript. We avoid replicating functionality that’s already simple in standard JavaScript, focusing instead on providing valuable abstractions.

+

Balance Utility and Simplicity

+

Our functions address common use cases without overcomplicating the library. We err on the side of simplicity to avoid bloat and unused code, ensuring that Radashi remains lean and focused on essential utilities.

+

Performance and Readability Trade-offs

+

Radashi strives for a balance between performance and code brevity. We prioritize understandability to maintain a low contribution barrier and ease of customization, while still ensuring that our functions perform efficiently.

+

Strategic Feature Parity

+

We implement popular functions based on usage data, without aiming for full parity with other libraries. This approach allows us to innovate on API design while maintaining familiarity where appropriate, creating a unique and valuable utility library.

+

Community and Contribution

+

Open to Feedback and Contributions

+

Radashi actively seeks real-world feedback to improve reliability and performance. We value and encourage community contributions, recognizing that diverse perspectives enhance the library’s utility and robustness.

+

Transparent Development

+

We openly acknowledge areas for growth and actively work to address them. Regular updates and beta releases keep the community informed and involved, fostering an environment of open collaboration and continuous improvement.

+

Collaborative Decision Making

+

Major changes to this ethos or the library’s direction are open for community discussion. We welcome amendments and re-drafts of this document through official channels, ensuring that Radashi’s development remains aligned with the needs and values of its user community.

+

Amendments

+

Amendment 0

+

This document is yet to be amended.

+
\ No newline at end of file diff --git a/pagefind/fragment/en_0c51cd4.pf_fragment b/pagefind/fragment/en_0c51cd4.pf_fragment new file mode 100644 index 00000000..a5272133 Binary files /dev/null and b/pagefind/fragment/en_0c51cd4.pf_fragment differ diff --git a/pagefind/fragment/en_1132a24.pf_fragment b/pagefind/fragment/en_1132a24.pf_fragment new file mode 100644 index 00000000..4d6741c9 Binary files /dev/null and b/pagefind/fragment/en_1132a24.pf_fragment differ diff --git a/pagefind/fragment/en_136b475.pf_fragment b/pagefind/fragment/en_136b475.pf_fragment new file mode 100644 index 00000000..ce86357e Binary files /dev/null and b/pagefind/fragment/en_136b475.pf_fragment differ diff --git a/pagefind/fragment/en_139eb6b.pf_fragment b/pagefind/fragment/en_139eb6b.pf_fragment new file mode 100644 index 00000000..5022da11 Binary files /dev/null and b/pagefind/fragment/en_139eb6b.pf_fragment differ diff --git a/pagefind/fragment/en_1488656.pf_fragment b/pagefind/fragment/en_1488656.pf_fragment new file mode 100644 index 00000000..54b1343c Binary files /dev/null and b/pagefind/fragment/en_1488656.pf_fragment differ diff --git a/pagefind/fragment/en_1518cb6.pf_fragment b/pagefind/fragment/en_1518cb6.pf_fragment new file mode 100644 index 00000000..8b14f883 Binary files /dev/null and b/pagefind/fragment/en_1518cb6.pf_fragment differ diff --git a/pagefind/fragment/en_152440f.pf_fragment b/pagefind/fragment/en_152440f.pf_fragment new file mode 100644 index 00000000..044c9e53 Binary files /dev/null and b/pagefind/fragment/en_152440f.pf_fragment differ diff --git a/pagefind/fragment/en_154e135.pf_fragment b/pagefind/fragment/en_154e135.pf_fragment new file mode 100644 index 00000000..ca22d58e Binary files /dev/null and b/pagefind/fragment/en_154e135.pf_fragment differ diff --git a/pagefind/fragment/en_179c2f3.pf_fragment b/pagefind/fragment/en_179c2f3.pf_fragment new file mode 100644 index 00000000..f4033cd1 Binary files /dev/null and b/pagefind/fragment/en_179c2f3.pf_fragment differ diff --git a/pagefind/fragment/en_1966a63.pf_fragment b/pagefind/fragment/en_1966a63.pf_fragment new file mode 100644 index 00000000..a698b787 Binary files /dev/null and b/pagefind/fragment/en_1966a63.pf_fragment differ diff --git a/pagefind/fragment/en_19ef97b.pf_fragment b/pagefind/fragment/en_19ef97b.pf_fragment new file mode 100644 index 00000000..7f5a799c Binary files /dev/null and b/pagefind/fragment/en_19ef97b.pf_fragment differ diff --git a/pagefind/fragment/en_1c383b1.pf_fragment b/pagefind/fragment/en_1c383b1.pf_fragment new file mode 100644 index 00000000..988ee0c7 Binary files /dev/null and b/pagefind/fragment/en_1c383b1.pf_fragment differ diff --git a/pagefind/fragment/en_1fa3a12.pf_fragment b/pagefind/fragment/en_1fa3a12.pf_fragment new file mode 100644 index 00000000..6934465c Binary files /dev/null and b/pagefind/fragment/en_1fa3a12.pf_fragment differ diff --git a/pagefind/fragment/en_1fbe2d8.pf_fragment b/pagefind/fragment/en_1fbe2d8.pf_fragment new file mode 100644 index 00000000..541d31f7 Binary files /dev/null and b/pagefind/fragment/en_1fbe2d8.pf_fragment differ diff --git a/pagefind/fragment/en_20591fb.pf_fragment b/pagefind/fragment/en_20591fb.pf_fragment new file mode 100644 index 00000000..4d25540e Binary files /dev/null and b/pagefind/fragment/en_20591fb.pf_fragment differ diff --git a/pagefind/fragment/en_2637a16.pf_fragment b/pagefind/fragment/en_2637a16.pf_fragment new file mode 100644 index 00000000..588ccd22 Binary files /dev/null and b/pagefind/fragment/en_2637a16.pf_fragment differ diff --git a/pagefind/fragment/en_2671c63.pf_fragment b/pagefind/fragment/en_2671c63.pf_fragment new file mode 100644 index 00000000..1489e2af Binary files /dev/null and b/pagefind/fragment/en_2671c63.pf_fragment differ diff --git a/pagefind/fragment/en_26baff4.pf_fragment b/pagefind/fragment/en_26baff4.pf_fragment new file mode 100644 index 00000000..9281bda9 Binary files /dev/null and b/pagefind/fragment/en_26baff4.pf_fragment differ diff --git a/pagefind/fragment/en_2857c2d.pf_fragment b/pagefind/fragment/en_2857c2d.pf_fragment new file mode 100644 index 00000000..0afefe19 Binary files /dev/null and b/pagefind/fragment/en_2857c2d.pf_fragment differ diff --git a/pagefind/fragment/en_2e97b45.pf_fragment b/pagefind/fragment/en_2e97b45.pf_fragment new file mode 100644 index 00000000..fdc31501 Binary files /dev/null and b/pagefind/fragment/en_2e97b45.pf_fragment differ diff --git a/pagefind/fragment/en_30577e3.pf_fragment b/pagefind/fragment/en_30577e3.pf_fragment new file mode 100644 index 00000000..d66dcd01 Binary files /dev/null and b/pagefind/fragment/en_30577e3.pf_fragment differ diff --git a/pagefind/fragment/en_32c9803.pf_fragment b/pagefind/fragment/en_32c9803.pf_fragment new file mode 100644 index 00000000..756122b1 Binary files /dev/null and b/pagefind/fragment/en_32c9803.pf_fragment differ diff --git a/pagefind/fragment/en_3918eac.pf_fragment b/pagefind/fragment/en_3918eac.pf_fragment new file mode 100644 index 00000000..f6035172 Binary files /dev/null and b/pagefind/fragment/en_3918eac.pf_fragment differ diff --git a/pagefind/fragment/en_3a32beb.pf_fragment b/pagefind/fragment/en_3a32beb.pf_fragment new file mode 100644 index 00000000..9210f2c4 Binary files /dev/null and b/pagefind/fragment/en_3a32beb.pf_fragment differ diff --git a/pagefind/fragment/en_3b8ae19.pf_fragment b/pagefind/fragment/en_3b8ae19.pf_fragment new file mode 100644 index 00000000..216a2bfb Binary files /dev/null and b/pagefind/fragment/en_3b8ae19.pf_fragment differ diff --git a/pagefind/fragment/en_40315b9.pf_fragment b/pagefind/fragment/en_40315b9.pf_fragment new file mode 100644 index 00000000..9a935c16 Binary files /dev/null and b/pagefind/fragment/en_40315b9.pf_fragment differ diff --git a/pagefind/fragment/en_452f157.pf_fragment b/pagefind/fragment/en_452f157.pf_fragment new file mode 100644 index 00000000..397e10e5 Binary files /dev/null and b/pagefind/fragment/en_452f157.pf_fragment differ diff --git a/pagefind/fragment/en_46a9708.pf_fragment b/pagefind/fragment/en_46a9708.pf_fragment new file mode 100644 index 00000000..51d1d219 Binary files /dev/null and b/pagefind/fragment/en_46a9708.pf_fragment differ diff --git a/pagefind/fragment/en_4852bdb.pf_fragment b/pagefind/fragment/en_4852bdb.pf_fragment new file mode 100644 index 00000000..f968dbed Binary files /dev/null and b/pagefind/fragment/en_4852bdb.pf_fragment differ diff --git a/pagefind/fragment/en_4a9fa49.pf_fragment b/pagefind/fragment/en_4a9fa49.pf_fragment new file mode 100644 index 00000000..a3e238f0 Binary files /dev/null and b/pagefind/fragment/en_4a9fa49.pf_fragment differ diff --git a/pagefind/fragment/en_4c2a837.pf_fragment b/pagefind/fragment/en_4c2a837.pf_fragment new file mode 100644 index 00000000..ba47c27d Binary files /dev/null and b/pagefind/fragment/en_4c2a837.pf_fragment differ diff --git a/pagefind/fragment/en_4dfa389.pf_fragment b/pagefind/fragment/en_4dfa389.pf_fragment new file mode 100644 index 00000000..7a2cb42d Binary files /dev/null and b/pagefind/fragment/en_4dfa389.pf_fragment differ diff --git a/pagefind/fragment/en_5234d2d.pf_fragment b/pagefind/fragment/en_5234d2d.pf_fragment new file mode 100644 index 00000000..7f85d7fe Binary files /dev/null and b/pagefind/fragment/en_5234d2d.pf_fragment differ diff --git a/pagefind/fragment/en_5237137.pf_fragment b/pagefind/fragment/en_5237137.pf_fragment new file mode 100644 index 00000000..9f063b65 Binary files /dev/null and b/pagefind/fragment/en_5237137.pf_fragment differ diff --git a/pagefind/fragment/en_552e1ff.pf_fragment b/pagefind/fragment/en_552e1ff.pf_fragment new file mode 100644 index 00000000..9089881d Binary files /dev/null and b/pagefind/fragment/en_552e1ff.pf_fragment differ diff --git a/pagefind/fragment/en_561c4f3.pf_fragment b/pagefind/fragment/en_561c4f3.pf_fragment new file mode 100644 index 00000000..606921bb Binary files /dev/null and b/pagefind/fragment/en_561c4f3.pf_fragment differ diff --git a/pagefind/fragment/en_581d4d7.pf_fragment b/pagefind/fragment/en_581d4d7.pf_fragment new file mode 100644 index 00000000..468844fe Binary files /dev/null and b/pagefind/fragment/en_581d4d7.pf_fragment differ diff --git a/pagefind/fragment/en_58fa83c.pf_fragment b/pagefind/fragment/en_58fa83c.pf_fragment new file mode 100644 index 00000000..13c88141 Binary files /dev/null and b/pagefind/fragment/en_58fa83c.pf_fragment differ diff --git a/pagefind/fragment/en_5aba3f7.pf_fragment b/pagefind/fragment/en_5aba3f7.pf_fragment new file mode 100644 index 00000000..dd77b7ef Binary files /dev/null and b/pagefind/fragment/en_5aba3f7.pf_fragment differ diff --git a/pagefind/fragment/en_5ad39f4.pf_fragment b/pagefind/fragment/en_5ad39f4.pf_fragment new file mode 100644 index 00000000..50caf805 Binary files /dev/null and b/pagefind/fragment/en_5ad39f4.pf_fragment differ diff --git a/pagefind/fragment/en_5c4d19b.pf_fragment b/pagefind/fragment/en_5c4d19b.pf_fragment new file mode 100644 index 00000000..2e32a18d Binary files /dev/null and b/pagefind/fragment/en_5c4d19b.pf_fragment differ diff --git a/pagefind/fragment/en_5cc01d2.pf_fragment b/pagefind/fragment/en_5cc01d2.pf_fragment new file mode 100644 index 00000000..1b0239ff Binary files /dev/null and b/pagefind/fragment/en_5cc01d2.pf_fragment differ diff --git a/pagefind/fragment/en_5d6871c.pf_fragment b/pagefind/fragment/en_5d6871c.pf_fragment new file mode 100644 index 00000000..4c455a79 Binary files /dev/null and b/pagefind/fragment/en_5d6871c.pf_fragment differ diff --git a/pagefind/fragment/en_61533e6.pf_fragment b/pagefind/fragment/en_61533e6.pf_fragment new file mode 100644 index 00000000..0e067f22 Binary files /dev/null and b/pagefind/fragment/en_61533e6.pf_fragment differ diff --git a/pagefind/fragment/en_63f987d.pf_fragment b/pagefind/fragment/en_63f987d.pf_fragment new file mode 100644 index 00000000..121b5290 Binary files /dev/null and b/pagefind/fragment/en_63f987d.pf_fragment differ diff --git a/pagefind/fragment/en_6952aaa.pf_fragment b/pagefind/fragment/en_6952aaa.pf_fragment new file mode 100644 index 00000000..bff0a333 Binary files /dev/null and b/pagefind/fragment/en_6952aaa.pf_fragment differ diff --git a/pagefind/fragment/en_69ec4c7.pf_fragment b/pagefind/fragment/en_69ec4c7.pf_fragment new file mode 100644 index 00000000..7ab24b4e Binary files /dev/null and b/pagefind/fragment/en_69ec4c7.pf_fragment differ diff --git a/pagefind/fragment/en_6a6bc2e.pf_fragment b/pagefind/fragment/en_6a6bc2e.pf_fragment new file mode 100644 index 00000000..ddb8f846 Binary files /dev/null and b/pagefind/fragment/en_6a6bc2e.pf_fragment differ diff --git a/pagefind/fragment/en_6c2392f.pf_fragment b/pagefind/fragment/en_6c2392f.pf_fragment new file mode 100644 index 00000000..26797bda Binary files /dev/null and b/pagefind/fragment/en_6c2392f.pf_fragment differ diff --git a/pagefind/fragment/en_7211a31.pf_fragment b/pagefind/fragment/en_7211a31.pf_fragment new file mode 100644 index 00000000..c7dfc422 Binary files /dev/null and b/pagefind/fragment/en_7211a31.pf_fragment differ diff --git a/pagefind/fragment/en_7470966.pf_fragment b/pagefind/fragment/en_7470966.pf_fragment new file mode 100644 index 00000000..449c7334 Binary files /dev/null and b/pagefind/fragment/en_7470966.pf_fragment differ diff --git a/pagefind/fragment/en_7493951.pf_fragment b/pagefind/fragment/en_7493951.pf_fragment new file mode 100644 index 00000000..f477c10c Binary files /dev/null and b/pagefind/fragment/en_7493951.pf_fragment differ diff --git a/pagefind/fragment/en_76f1c41.pf_fragment b/pagefind/fragment/en_76f1c41.pf_fragment new file mode 100644 index 00000000..8b05d55e Binary files /dev/null and b/pagefind/fragment/en_76f1c41.pf_fragment differ diff --git a/pagefind/fragment/en_77d65a4.pf_fragment b/pagefind/fragment/en_77d65a4.pf_fragment new file mode 100644 index 00000000..61725f68 Binary files /dev/null and b/pagefind/fragment/en_77d65a4.pf_fragment differ diff --git a/pagefind/fragment/en_77fcc9a.pf_fragment b/pagefind/fragment/en_77fcc9a.pf_fragment new file mode 100644 index 00000000..da8a1aeb Binary files /dev/null and b/pagefind/fragment/en_77fcc9a.pf_fragment differ diff --git a/pagefind/fragment/en_7850e44.pf_fragment b/pagefind/fragment/en_7850e44.pf_fragment new file mode 100644 index 00000000..e0419e30 Binary files /dev/null and b/pagefind/fragment/en_7850e44.pf_fragment differ diff --git a/pagefind/fragment/en_7be5d1f.pf_fragment b/pagefind/fragment/en_7be5d1f.pf_fragment new file mode 100644 index 00000000..81507d5e Binary files /dev/null and b/pagefind/fragment/en_7be5d1f.pf_fragment differ diff --git a/pagefind/fragment/en_7d46d2a.pf_fragment b/pagefind/fragment/en_7d46d2a.pf_fragment new file mode 100644 index 00000000..35b4c9f9 Binary files /dev/null and b/pagefind/fragment/en_7d46d2a.pf_fragment differ diff --git a/pagefind/fragment/en_7e69ae4.pf_fragment b/pagefind/fragment/en_7e69ae4.pf_fragment new file mode 100644 index 00000000..7d6a38bf Binary files /dev/null and b/pagefind/fragment/en_7e69ae4.pf_fragment differ diff --git a/pagefind/fragment/en_8193822.pf_fragment b/pagefind/fragment/en_8193822.pf_fragment new file mode 100644 index 00000000..8e8952fc Binary files /dev/null and b/pagefind/fragment/en_8193822.pf_fragment differ diff --git a/pagefind/fragment/en_82b37ce.pf_fragment b/pagefind/fragment/en_82b37ce.pf_fragment new file mode 100644 index 00000000..c825fb09 Binary files /dev/null and b/pagefind/fragment/en_82b37ce.pf_fragment differ diff --git a/pagefind/fragment/en_8630d57.pf_fragment b/pagefind/fragment/en_8630d57.pf_fragment new file mode 100644 index 00000000..00df58f1 Binary files /dev/null and b/pagefind/fragment/en_8630d57.pf_fragment differ diff --git a/pagefind/fragment/en_866f716.pf_fragment b/pagefind/fragment/en_866f716.pf_fragment new file mode 100644 index 00000000..6f2b3efd Binary files /dev/null and b/pagefind/fragment/en_866f716.pf_fragment differ diff --git a/pagefind/fragment/en_88b4125.pf_fragment b/pagefind/fragment/en_88b4125.pf_fragment new file mode 100644 index 00000000..59930a7d Binary files /dev/null and b/pagefind/fragment/en_88b4125.pf_fragment differ diff --git a/pagefind/fragment/en_8b83c0e.pf_fragment b/pagefind/fragment/en_8b83c0e.pf_fragment new file mode 100644 index 00000000..86a7278d Binary files /dev/null and b/pagefind/fragment/en_8b83c0e.pf_fragment differ diff --git a/pagefind/fragment/en_8ed909e.pf_fragment b/pagefind/fragment/en_8ed909e.pf_fragment new file mode 100644 index 00000000..64de6fea Binary files /dev/null and b/pagefind/fragment/en_8ed909e.pf_fragment differ diff --git a/pagefind/fragment/en_8f702de.pf_fragment b/pagefind/fragment/en_8f702de.pf_fragment new file mode 100644 index 00000000..1f764f19 Binary files /dev/null and b/pagefind/fragment/en_8f702de.pf_fragment differ diff --git a/pagefind/fragment/en_9255fac.pf_fragment b/pagefind/fragment/en_9255fac.pf_fragment new file mode 100644 index 00000000..a818a574 Binary files /dev/null and b/pagefind/fragment/en_9255fac.pf_fragment differ diff --git a/pagefind/fragment/en_9316176.pf_fragment b/pagefind/fragment/en_9316176.pf_fragment new file mode 100644 index 00000000..6f5f5fd7 Binary files /dev/null and b/pagefind/fragment/en_9316176.pf_fragment differ diff --git a/pagefind/fragment/en_94dff80.pf_fragment b/pagefind/fragment/en_94dff80.pf_fragment new file mode 100644 index 00000000..cc1ea510 Binary files /dev/null and b/pagefind/fragment/en_94dff80.pf_fragment differ diff --git a/pagefind/fragment/en_95143a2.pf_fragment b/pagefind/fragment/en_95143a2.pf_fragment new file mode 100644 index 00000000..d40c452d Binary files /dev/null and b/pagefind/fragment/en_95143a2.pf_fragment differ diff --git a/pagefind/fragment/en_96b85fd.pf_fragment b/pagefind/fragment/en_96b85fd.pf_fragment new file mode 100644 index 00000000..e30e5c55 Binary files /dev/null and b/pagefind/fragment/en_96b85fd.pf_fragment differ diff --git a/pagefind/fragment/en_998e5ac.pf_fragment b/pagefind/fragment/en_998e5ac.pf_fragment new file mode 100644 index 00000000..58647ed8 Binary files /dev/null and b/pagefind/fragment/en_998e5ac.pf_fragment differ diff --git a/pagefind/fragment/en_9cd1277.pf_fragment b/pagefind/fragment/en_9cd1277.pf_fragment new file mode 100644 index 00000000..8df69abe Binary files /dev/null and b/pagefind/fragment/en_9cd1277.pf_fragment differ diff --git a/pagefind/fragment/en_9e3fcbb.pf_fragment b/pagefind/fragment/en_9e3fcbb.pf_fragment new file mode 100644 index 00000000..9d80f0a6 Binary files /dev/null and b/pagefind/fragment/en_9e3fcbb.pf_fragment differ diff --git a/pagefind/fragment/en_a2f80e9.pf_fragment b/pagefind/fragment/en_a2f80e9.pf_fragment new file mode 100644 index 00000000..02881578 Binary files /dev/null and b/pagefind/fragment/en_a2f80e9.pf_fragment differ diff --git a/pagefind/fragment/en_a535ca7.pf_fragment b/pagefind/fragment/en_a535ca7.pf_fragment new file mode 100644 index 00000000..7e8f386e Binary files /dev/null and b/pagefind/fragment/en_a535ca7.pf_fragment differ diff --git a/pagefind/fragment/en_a65b29b.pf_fragment b/pagefind/fragment/en_a65b29b.pf_fragment new file mode 100644 index 00000000..af9d9a09 Binary files /dev/null and b/pagefind/fragment/en_a65b29b.pf_fragment differ diff --git a/pagefind/fragment/en_a67f6dc.pf_fragment b/pagefind/fragment/en_a67f6dc.pf_fragment new file mode 100644 index 00000000..96f11786 Binary files /dev/null and b/pagefind/fragment/en_a67f6dc.pf_fragment differ diff --git a/pagefind/fragment/en_a91f898.pf_fragment b/pagefind/fragment/en_a91f898.pf_fragment new file mode 100644 index 00000000..3dfaf991 Binary files /dev/null and b/pagefind/fragment/en_a91f898.pf_fragment differ diff --git a/pagefind/fragment/en_abd1677.pf_fragment b/pagefind/fragment/en_abd1677.pf_fragment new file mode 100644 index 00000000..0538a526 Binary files /dev/null and b/pagefind/fragment/en_abd1677.pf_fragment differ diff --git a/pagefind/fragment/en_b1d8f02.pf_fragment b/pagefind/fragment/en_b1d8f02.pf_fragment new file mode 100644 index 00000000..92d92f58 Binary files /dev/null and b/pagefind/fragment/en_b1d8f02.pf_fragment differ diff --git a/pagefind/fragment/en_b35542d.pf_fragment b/pagefind/fragment/en_b35542d.pf_fragment new file mode 100644 index 00000000..e626c27b Binary files /dev/null and b/pagefind/fragment/en_b35542d.pf_fragment differ diff --git a/pagefind/fragment/en_b372d81.pf_fragment b/pagefind/fragment/en_b372d81.pf_fragment new file mode 100644 index 00000000..00978758 Binary files /dev/null and b/pagefind/fragment/en_b372d81.pf_fragment differ diff --git a/pagefind/fragment/en_b57a71e.pf_fragment b/pagefind/fragment/en_b57a71e.pf_fragment new file mode 100644 index 00000000..9cd1f115 Binary files /dev/null and b/pagefind/fragment/en_b57a71e.pf_fragment differ diff --git a/pagefind/fragment/en_b88475c.pf_fragment b/pagefind/fragment/en_b88475c.pf_fragment new file mode 100644 index 00000000..47d4b295 Binary files /dev/null and b/pagefind/fragment/en_b88475c.pf_fragment differ diff --git a/pagefind/fragment/en_b8e6c14.pf_fragment b/pagefind/fragment/en_b8e6c14.pf_fragment new file mode 100644 index 00000000..89fdacc0 Binary files /dev/null and b/pagefind/fragment/en_b8e6c14.pf_fragment differ diff --git a/pagefind/fragment/en_b8e919d.pf_fragment b/pagefind/fragment/en_b8e919d.pf_fragment new file mode 100644 index 00000000..acde9f28 Binary files /dev/null and b/pagefind/fragment/en_b8e919d.pf_fragment differ diff --git a/pagefind/fragment/en_beb0be5.pf_fragment b/pagefind/fragment/en_beb0be5.pf_fragment new file mode 100644 index 00000000..74ffc742 Binary files /dev/null and b/pagefind/fragment/en_beb0be5.pf_fragment differ diff --git a/pagefind/fragment/en_c0ccb61.pf_fragment b/pagefind/fragment/en_c0ccb61.pf_fragment new file mode 100644 index 00000000..2dd88237 Binary files /dev/null and b/pagefind/fragment/en_c0ccb61.pf_fragment differ diff --git a/pagefind/fragment/en_c0eddaf.pf_fragment b/pagefind/fragment/en_c0eddaf.pf_fragment new file mode 100644 index 00000000..2b6623c8 Binary files /dev/null and b/pagefind/fragment/en_c0eddaf.pf_fragment differ diff --git a/pagefind/fragment/en_c46eca2.pf_fragment b/pagefind/fragment/en_c46eca2.pf_fragment new file mode 100644 index 00000000..4f99f889 Binary files /dev/null and b/pagefind/fragment/en_c46eca2.pf_fragment differ diff --git a/pagefind/fragment/en_c64b689.pf_fragment b/pagefind/fragment/en_c64b689.pf_fragment new file mode 100644 index 00000000..3c5734db Binary files /dev/null and b/pagefind/fragment/en_c64b689.pf_fragment differ diff --git a/pagefind/fragment/en_c721d46.pf_fragment b/pagefind/fragment/en_c721d46.pf_fragment new file mode 100644 index 00000000..b7fe83ca Binary files /dev/null and b/pagefind/fragment/en_c721d46.pf_fragment differ diff --git a/pagefind/fragment/en_c8f6d24.pf_fragment b/pagefind/fragment/en_c8f6d24.pf_fragment new file mode 100644 index 00000000..20d171cd Binary files /dev/null and b/pagefind/fragment/en_c8f6d24.pf_fragment differ diff --git a/pagefind/fragment/en_cd93a23.pf_fragment b/pagefind/fragment/en_cd93a23.pf_fragment new file mode 100644 index 00000000..43922e44 Binary files /dev/null and b/pagefind/fragment/en_cd93a23.pf_fragment differ diff --git a/pagefind/fragment/en_d442f28.pf_fragment b/pagefind/fragment/en_d442f28.pf_fragment new file mode 100644 index 00000000..f2be1f97 Binary files /dev/null and b/pagefind/fragment/en_d442f28.pf_fragment differ diff --git a/pagefind/fragment/en_d4f7f6b.pf_fragment b/pagefind/fragment/en_d4f7f6b.pf_fragment new file mode 100644 index 00000000..90470297 Binary files /dev/null and b/pagefind/fragment/en_d4f7f6b.pf_fragment differ diff --git a/pagefind/fragment/en_d57a80b.pf_fragment b/pagefind/fragment/en_d57a80b.pf_fragment new file mode 100644 index 00000000..3c9b45bb Binary files /dev/null and b/pagefind/fragment/en_d57a80b.pf_fragment differ diff --git a/pagefind/fragment/en_d64f98a.pf_fragment b/pagefind/fragment/en_d64f98a.pf_fragment new file mode 100644 index 00000000..3e8a3bad Binary files /dev/null and b/pagefind/fragment/en_d64f98a.pf_fragment differ diff --git a/pagefind/fragment/en_d844c42.pf_fragment b/pagefind/fragment/en_d844c42.pf_fragment new file mode 100644 index 00000000..68bed58a Binary files /dev/null and b/pagefind/fragment/en_d844c42.pf_fragment differ diff --git a/pagefind/fragment/en_da3b82e.pf_fragment b/pagefind/fragment/en_da3b82e.pf_fragment new file mode 100644 index 00000000..0ac85413 Binary files /dev/null and b/pagefind/fragment/en_da3b82e.pf_fragment differ diff --git a/pagefind/fragment/en_dd9d49d.pf_fragment b/pagefind/fragment/en_dd9d49d.pf_fragment new file mode 100644 index 00000000..76520118 Binary files /dev/null and b/pagefind/fragment/en_dd9d49d.pf_fragment differ diff --git a/pagefind/fragment/en_dea4b9d.pf_fragment b/pagefind/fragment/en_dea4b9d.pf_fragment new file mode 100644 index 00000000..9ebd1f79 Binary files /dev/null and b/pagefind/fragment/en_dea4b9d.pf_fragment differ diff --git a/pagefind/fragment/en_df1bf5f.pf_fragment b/pagefind/fragment/en_df1bf5f.pf_fragment new file mode 100644 index 00000000..4bdc4a8c Binary files /dev/null and b/pagefind/fragment/en_df1bf5f.pf_fragment differ diff --git a/pagefind/fragment/en_e3ab39e.pf_fragment b/pagefind/fragment/en_e3ab39e.pf_fragment new file mode 100644 index 00000000..ee86c391 Binary files /dev/null and b/pagefind/fragment/en_e3ab39e.pf_fragment differ diff --git a/pagefind/fragment/en_e51e17d.pf_fragment b/pagefind/fragment/en_e51e17d.pf_fragment new file mode 100644 index 00000000..59cddcaa Binary files /dev/null and b/pagefind/fragment/en_e51e17d.pf_fragment differ diff --git a/pagefind/fragment/en_e7fb665.pf_fragment b/pagefind/fragment/en_e7fb665.pf_fragment new file mode 100644 index 00000000..948cc30c Binary files /dev/null and b/pagefind/fragment/en_e7fb665.pf_fragment differ diff --git a/pagefind/fragment/en_e8fa90b.pf_fragment b/pagefind/fragment/en_e8fa90b.pf_fragment new file mode 100644 index 00000000..99a3e88a Binary files /dev/null and b/pagefind/fragment/en_e8fa90b.pf_fragment differ diff --git a/pagefind/fragment/en_eb424d9.pf_fragment b/pagefind/fragment/en_eb424d9.pf_fragment new file mode 100644 index 00000000..0bb18325 Binary files /dev/null and b/pagefind/fragment/en_eb424d9.pf_fragment differ diff --git a/pagefind/fragment/en_ebab7a5.pf_fragment b/pagefind/fragment/en_ebab7a5.pf_fragment new file mode 100644 index 00000000..9a530cfb Binary files /dev/null and b/pagefind/fragment/en_ebab7a5.pf_fragment differ diff --git a/pagefind/fragment/en_ebd0194.pf_fragment b/pagefind/fragment/en_ebd0194.pf_fragment new file mode 100644 index 00000000..c08eb825 Binary files /dev/null and b/pagefind/fragment/en_ebd0194.pf_fragment differ diff --git a/pagefind/fragment/en_ec57b37.pf_fragment b/pagefind/fragment/en_ec57b37.pf_fragment new file mode 100644 index 00000000..487eea4a Binary files /dev/null and b/pagefind/fragment/en_ec57b37.pf_fragment differ diff --git a/pagefind/fragment/en_eebee6f.pf_fragment b/pagefind/fragment/en_eebee6f.pf_fragment new file mode 100644 index 00000000..dc44983b Binary files /dev/null and b/pagefind/fragment/en_eebee6f.pf_fragment differ diff --git a/pagefind/fragment/en_f155edc.pf_fragment b/pagefind/fragment/en_f155edc.pf_fragment new file mode 100644 index 00000000..b67435a7 Binary files /dev/null and b/pagefind/fragment/en_f155edc.pf_fragment differ diff --git a/pagefind/fragment/en_f1f4213.pf_fragment b/pagefind/fragment/en_f1f4213.pf_fragment new file mode 100644 index 00000000..90c8d845 Binary files /dev/null and b/pagefind/fragment/en_f1f4213.pf_fragment differ diff --git a/pagefind/fragment/en_f4b341b.pf_fragment b/pagefind/fragment/en_f4b341b.pf_fragment new file mode 100644 index 00000000..29e89cba Binary files /dev/null and b/pagefind/fragment/en_f4b341b.pf_fragment differ diff --git a/pagefind/fragment/en_f7586eb.pf_fragment b/pagefind/fragment/en_f7586eb.pf_fragment new file mode 100644 index 00000000..14f49bc6 Binary files /dev/null and b/pagefind/fragment/en_f7586eb.pf_fragment differ diff --git a/pagefind/fragment/en_f75c789.pf_fragment b/pagefind/fragment/en_f75c789.pf_fragment new file mode 100644 index 00000000..4e1a84d0 Binary files /dev/null and b/pagefind/fragment/en_f75c789.pf_fragment differ diff --git a/pagefind/fragment/en_f7bce5b.pf_fragment b/pagefind/fragment/en_f7bce5b.pf_fragment new file mode 100644 index 00000000..38717fbe Binary files /dev/null and b/pagefind/fragment/en_f7bce5b.pf_fragment differ diff --git a/pagefind/fragment/en_f8c57a2.pf_fragment b/pagefind/fragment/en_f8c57a2.pf_fragment new file mode 100644 index 00000000..755ace9d Binary files /dev/null and b/pagefind/fragment/en_f8c57a2.pf_fragment differ diff --git a/pagefind/fragment/en_f8d27cb.pf_fragment b/pagefind/fragment/en_f8d27cb.pf_fragment new file mode 100644 index 00000000..0d75cff1 Binary files /dev/null and b/pagefind/fragment/en_f8d27cb.pf_fragment differ diff --git a/pagefind/fragment/en_f9abcc6.pf_fragment b/pagefind/fragment/en_f9abcc6.pf_fragment new file mode 100644 index 00000000..8e908a54 Binary files /dev/null and b/pagefind/fragment/en_f9abcc6.pf_fragment differ diff --git a/pagefind/fragment/en_fb29739.pf_fragment b/pagefind/fragment/en_fb29739.pf_fragment new file mode 100644 index 00000000..c82d54f6 Binary files /dev/null and b/pagefind/fragment/en_fb29739.pf_fragment differ diff --git a/pagefind/fragment/en_fb9d195.pf_fragment b/pagefind/fragment/en_fb9d195.pf_fragment new file mode 100644 index 00000000..e2f3bf53 Binary files /dev/null and b/pagefind/fragment/en_fb9d195.pf_fragment differ diff --git a/pagefind/index/en_3655664.pf_index b/pagefind/index/en_3655664.pf_index new file mode 100644 index 00000000..5b8a615c Binary files /dev/null and b/pagefind/index/en_3655664.pf_index differ diff --git a/pagefind/index/en_f92d448.pf_index b/pagefind/index/en_f92d448.pf_index new file mode 100644 index 00000000..15eae040 Binary files /dev/null and b/pagefind/index/en_f92d448.pf_index differ diff --git a/pagefind/pagefind-entry.json b/pagefind/pagefind-entry.json new file mode 100644 index 00000000..be111304 --- /dev/null +++ b/pagefind/pagefind-entry.json @@ -0,0 +1 @@ +{"version":"1.0.3","languages":{"en":{"hash":"en_b77047e476","wasm":"en","page_count":125}}} \ No newline at end of file diff --git a/pagefind/pagefind-modular-ui.css b/pagefind/pagefind-modular-ui.css new file mode 100644 index 00000000..9c6793ed --- /dev/null +++ b/pagefind/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/pagefind/pagefind-modular-ui.js b/pagefind/pagefind-modular-ui.js new file mode 100644 index 00000000..93019091 --- /dev/null +++ b/pagefind/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/pagefind/pagefind-ui.css b/pagefind/pagefind-ui.css new file mode 100644 index 00000000..d98ef36f --- /dev/null +++ b/pagefind/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-1d60ae3{width:100%;color:var(--pagefind-ui-text);font-family:var(--pagefind-ui-font)}.pagefind-ui__hidden.svelte-1d60ae3{display:none!important}.pagefind-ui__suppressed.svelte-1d60ae3{opacity:0;pointer-events:none}.pagefind-ui__form.svelte-1d60ae3{position:relative}.pagefind-ui__form.svelte-1d60ae3: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-1d60ae3{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-1d60ae3::placeholder{opacity:.2}.pagefind-ui__search-clear.svelte-1d60ae3{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-1d60ae3{gap:calc(60px * var(--pagefind-ui-scale));display:flex;flex-direction:row;flex-wrap:wrap}.pagefind-ui__results-area.svelte-1d60ae3{min-width:min(calc(400px * var(--pagefind-ui-scale)),100%);flex:1000;margin-top:calc(20px * var(--pagefind-ui-scale))}.pagefind-ui__results.svelte-1d60ae3{padding:0}.pagefind-ui__message.svelte-1d60ae3{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-1d60ae3{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-1d60ae3:hover{border-color:var(--pagefind-ui-primary);color:var(--pagefind-ui-primary);background:var(--pagefind-ui-background)} diff --git a/pagefind/pagefind-ui.js b/pagefind/pagefind-ui.js new file mode 100644 index 00000000..6b362422 --- /dev/null +++ b/pagefind/pagefind-ui.js @@ -0,0 +1,2 @@ +(()=>{var Gn=Object.defineProperty;var A=(n,e)=>{for(var t in e)Gn(n,t,{get:e[t],enumerable:!0})};function j(){}function Qe(n){return n()}function Dt(){return Object.create(null)}function G(n){n.forEach(Qe)}function qe(n){return typeof n=="function"}function V(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}var Le;function se(n,e){return Le||(Le=document.createElement("a")),Le.href=e,n===Le.href}function zt(n){return Object.keys(n).length===0}var Ut=typeof window<"u"?window:typeof globalThis<"u"?globalThis:global,_e=class{constructor(e){this.options=e,this._listeners="WeakMap"in Ut?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 l;for(let s of t)_e.entries.set(s.target,s),(l=this._listeners.get(s.target))===null||l===void 0||l(s)})}};_e.entries="WeakMap"in Ut?new WeakMap:void 0;var It=!1;function Vn(){It=!0}function Wn(){It=!1}function b(n,e){n.appendChild(e)}function y(n,e,t){n.insertBefore(e,t||null)}function v(n){n.parentNode&&n.parentNode.removeChild(n)}function X(n,e){for(let t=0;tn.removeEventListener(e,t,l)}function p(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}function Kn(n){return Array.from(n.childNodes)}function N(n,e){e=""+e,n.data!==e&&(n.data=e)}function xe(n,e){n.value=e??""}function B(n,e,t){n.classList[t?"add":"remove"](e)}var Be=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,l=null){this.e||(this.is_svg?this.e=Jn(t.nodeName):this.e=C(t.nodeType===11?"TEMPLATE":t.nodeName),this.t=t.tagName!=="TEMPLATE"?t:t.content,this.c(e)),this.i(l)}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(l)===-1?e.push(l):t.push(l)),t.forEach(l=>l()),ne=e}var Pe=new Set,$;function re(){$={r:0,c:[],p:$}}function ie(){$.r||G($.c),$=$.p}function D(n,e){n&&n.i&&(Pe.delete(n),n.i(e))}function I(n,e,t,l){if(n&&n.o){if(Pe.has(n))return;Pe.add(n),$.c.push(()=>{Pe.delete(n),l&&(t&&n.d(1),l())}),n.o(e)}else l&&l()}function qt(n,e){I(n,1,1,()=>{e.delete(n.key)})}function Bt(n,e,t,l,s,r,i,o,a,h,_,f){let c=n.length,E=r.length,u=c,m={};for(;u--;)m[n[u].key]=u;let d=[],T=new Map,R=new Map,k=[];for(u=E;u--;){let M=f(s,r,u),L=t(M),U=i.get(L);U?l&&k.push(()=>U.p(M,e)):(U=h(L,M),U.c()),T.set(L,d[u]=U),L in m&&R.set(L,Math.abs(u-m[L]))}let F=new Set,x=new Set;function ae(M){D(M,1),M.m(o,_),i.set(M.key,M),_=M.first,E--}for(;c&&E;){let M=d[E-1],L=n[c-1],U=M.key,Y=L.key;M===L?(_=M.first,c--,E--):T.has(Y)?!i.has(U)||F.has(U)?ae(M):x.has(Y)?c--:R.get(U)>R.get(Y)?(x.add(U),ae(M)):(F.add(Y),c--):(a(L,i),c--)}for(;c--;){let M=n[c];T.has(M.key)||a(M,i)}for(;E;)ae(d[E-1]);return G(k),d}var $n=["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"],Or=new Set([...$n]);function Gt(n,e,t){let l=n.$$.props[e];l!==void 0&&(n.$$.bound[l]=t,t(n.$$.ctx[l]))}function Ge(n){n&&n.c()}function he(n,e,t,l){let{fragment:s,after_update:r}=n.$$;s&&s.m(e,t),l||Ze(()=>{let i=n.$$.on_mount.map(Qe).filter(qe);n.$$.on_destroy?n.$$.on_destroy.push(...i):G(i),n.$$.on_mount=[]}),r.forEach(Ze)}function oe(n,e){let t=n.$$;t.fragment!==null&&(xn(t.after_update),G(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function el(n,e){n.$$.dirty[0]===-1&&(te.push(n),Zn(),n.$$.dirty.fill(0)),n.$$.dirty[e/31|0]|=1<{let u=E.length?E[0]:c;return h.ctx&&s(h.ctx[f],h.ctx[f]=u)&&(!h.skip_bound&&h.bound[f]&&h.bound[f](u),_&&el(n,f)),c}):[],h.update(),_=!0,G(h.before_update),h.fragment=l?l(h.ctx):!1,e.target){if(e.hydrate){Vn();let f=Kn(e.target);h.fragment&&h.fragment.l(f),f.forEach(v)}else h.fragment&&h.fragment.c();e.intro&&D(n.$$.fragment),he(n,e.target,e.anchor,e.customElement),Wn(),Pt()}fe(a)}var tl;typeof HTMLElement=="function"&&(tl=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){let{on_mount:n}=this.$$;this.$$.on_disconnect=n.map(Qe).filter(qe);for(let e in this.$$.slotted)this.appendChild(this.$$.slotted[e])}attributeChangedCallback(n,e,t){this[n]=t}disconnectedCallback(){G(this.$$.on_disconnect)}$destroy(){oe(this,1),this.$destroy=j}$on(n,e){if(!qe(e))return j;let t=this.$$.callbacks[n]||(this.$$.callbacks[n]=[]);return t.push(e),()=>{let l=t.indexOf(e);l!==-1&&t.splice(l,1)}}$set(n){this.$$set&&!zt(n)&&(this.$$.skip_bound=!0,this.$$set(n),this.$$.skip_bound=!1)}});var q=class{$destroy(){oe(this,1),this.$destroy=j}$on(e,t){if(!qe(t))return j;let l=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return l.push(t),()=>{let s=l.indexOf(t);s!==-1&&l.splice(s,1)}}$set(e){this.$$set&&!zt(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}};function z(n){let e=typeof n=="string"?n.charCodeAt(0):n;return e>=97&&e<=122||e>=65&&e<=90}function Q(n){let e=typeof n=="string"?n.charCodeAt(0):n;return e>=48&&e<=57}function K(n){return z(n)||Q(n)}var Vt=["art-lojban","cel-gaulish","no-bok","no-nyn","zh-guoyu","zh-hakka","zh-min","zh-min-nan","zh-xiang"];var et={"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 nl={}.hasOwnProperty;function Ve(n,e={}){let t=Wt(),l=String(n),s=l.toLowerCase(),r=0;if(n==null)throw new Error("Expected string, got `"+n+"`");if(nl.call(et,s)){let o=et[s];return(e.normalize===void 0||e.normalize===null||e.normalize)&&typeof o=="string"?Ve(o):(t[Vt.includes(s)?"regular":"irregular"]=l,t)}for(;z(s.charCodeAt(r))&&r<9;)r++;if(r>1&&r<9){if(t.language=l.slice(0,r),r<4){let o=0;for(;s.charCodeAt(r)===45&&z(s.charCodeAt(r+1))&&z(s.charCodeAt(r+2))&&z(s.charCodeAt(r+3))&&!z(s.charCodeAt(r+4));){if(o>2)return i(r,3,"Too many extended language subtags, expected at most 3 subtags");t.extendedLanguageSubtags.push(l.slice(r+1,r+4)),r+=4,o++}}for(s.charCodeAt(r)===45&&z(s.charCodeAt(r+1))&&z(s.charCodeAt(r+2))&&z(s.charCodeAt(r+3))&&z(s.charCodeAt(r+4))&&!z(s.charCodeAt(r+5))&&(t.script=l.slice(r+1,r+5),r+=5),s.charCodeAt(r)===45&&(z(s.charCodeAt(r+1))&&z(s.charCodeAt(r+2))&&!z(s.charCodeAt(r+3))?(t.region=l.slice(r+1,r+3),r+=3):Q(s.charCodeAt(r+1))&&Q(s.charCodeAt(r+2))&&Q(s.charCodeAt(r+3))&&!Q(s.charCodeAt(r+4))&&(t.region=l.slice(r+1,r+4),r+=4));s.charCodeAt(r)===45;){let o=r+1,a=o;for(;K(s.charCodeAt(a));){if(a-o>7)return i(a,1,"Too long variant, expected at most 8 characters");a++}if(a-o>4||a-o>3&&Q(s.charCodeAt(o)))t.variants.push(l.slice(o,a)),r=a;else break}for(;s.charCodeAt(r)===45&&!(s.charCodeAt(r+1)===120||!K(s.charCodeAt(r+1))||s.charCodeAt(r+2)!==45||!K(s.charCodeAt(r+3)));){let o=r+2,a=0;for(;s.charCodeAt(o)===45&&K(s.charCodeAt(o+1))&&K(s.charCodeAt(o+2));){let h=o+1;for(o=h+2,a++;K(s.charCodeAt(o));){if(o-h>7)return i(o,2,"Too long extension, expected at most 8 characters");o++}}if(!a)return i(o,4,"Empty extension, extensions must have at least 2 characters of content");t.extensions.push({singleton:l.charAt(r+1),extensions:l.slice(r+3,o).split("-")}),r=o}}else r=0;if(r===0&&s.charCodeAt(r)===120||s.charCodeAt(r)===45&&s.charCodeAt(r+1)===120){r=r?r+2:1;let o=r;for(;s.charCodeAt(o)===45&&K(s.charCodeAt(o+1));){let a=r+1;for(o=a;K(s.charCodeAt(o));){if(o-a>7)return i(o,5,"Too long private-use area, expected at most 8 characters");o++}t.privateuse.push(l.slice(r+1,o)),r=o}}if(r!==l.length)return i(r,6,"Found superfluous content after tag");return t;function i(o,a,h){return e.warning&&e.warning(h,a,o),e.forgiving?t:Wt()}}function Wt(){return{language:null,extendedLanguageSubtags:[],script:null,region:null,variants:[],extensions:[],privateuse:[],irregular:null,regular:null}}function Jt(n,e,t){let l=n.slice();return l[8]=e[t][0],l[9]=e[t][1],l}function ll(n){let e,t,l,s,r,i=n[0]&&Kt(n);return{c(){i&&i.c(),e=S(),t=C("div"),l=C("p"),l.textContent=`${n[3](30)}`,s=S(),r=C("p"),r.textContent=`${n[3](40)}`,p(l,"class","pagefind-ui__result-title pagefind-ui__loading svelte-j9e30"),p(r,"class","pagefind-ui__result-excerpt pagefind-ui__loading svelte-j9e30"),p(t,"class","pagefind-ui__result-inner svelte-j9e30")},m(o,a){i&&i.m(o,a),y(o,e,a),y(o,t,a),b(t,l),b(t,s),b(t,r)},p(o,a){o[0]?i||(i=Kt(o),i.c(),i.m(e.parentNode,e)):i&&(i.d(1),i=null)},d(o){i&&i.d(o),o&&v(e),o&&v(t)}}}function sl(n){let e,t,l,s,r=n[1].meta?.title+"",i,o,a,h,_=n[1].excerpt+"",f,c=n[0]&&Yt(n),E=n[2].length&&Zt(n);return{c(){c&&c.c(),e=S(),t=C("div"),l=C("p"),s=C("a"),i=w(r),a=S(),h=C("p"),f=S(),E&&E.c(),p(s,"class","pagefind-ui__result-link svelte-j9e30"),p(s,"href",o=n[1].meta?.url||n[1].url),p(l,"class","pagefind-ui__result-title svelte-j9e30"),p(h,"class","pagefind-ui__result-excerpt svelte-j9e30"),p(t,"class","pagefind-ui__result-inner svelte-j9e30")},m(u,m){c&&c.m(u,m),y(u,e,m),y(u,t,m),b(t,l),b(l,s),b(s,i),b(t,a),b(t,h),h.innerHTML=_,b(t,f),E&&E.m(t,null)},p(u,m){u[0]?c?c.p(u,m):(c=Yt(u),c.c(),c.m(e.parentNode,e)):c&&(c.d(1),c=null),m&2&&r!==(r=u[1].meta?.title+"")&&N(i,r),m&2&&o!==(o=u[1].meta?.url||u[1].url)&&p(s,"href",o),m&2&&_!==(_=u[1].excerpt+"")&&(h.innerHTML=_),u[2].length?E?E.p(u,m):(E=Zt(u),E.c(),E.m(t,null)):E&&(E.d(1),E=null)},d(u){c&&c.d(u),u&&v(e),u&&v(t),E&&E.d()}}}function Kt(n){let e;return{c(){e=C("div"),p(e,"class","pagefind-ui__result-thumb pagefind-ui__loading svelte-j9e30")},m(t,l){y(t,e,l)},d(t){t&&v(e)}}}function Yt(n){let e,t=n[1].meta.image&&Xt(n);return{c(){e=C("div"),t&&t.c(),p(e,"class","pagefind-ui__result-thumb svelte-j9e30")},m(l,s){y(l,e,s),t&&t.m(e,null)},p(l,s){l[1].meta.image?t?t.p(l,s):(t=Xt(l),t.c(),t.m(e,null)):t&&(t.d(1),t=null)},d(l){l&&v(e),t&&t.d()}}}function Xt(n){let e,t,l;return{c(){e=C("img"),p(e,"class","pagefind-ui__result-image svelte-j9e30"),se(e.src,t=n[1].meta?.image)||p(e,"src",t),p(e,"alt",l=n[1].meta?.image_alt||n[1].meta?.title)},m(s,r){y(s,e,r)},p(s,r){r&2&&!se(e.src,t=s[1].meta?.image)&&p(e,"src",t),r&2&&l!==(l=s[1].meta?.image_alt||s[1].meta?.title)&&p(e,"alt",l)},d(s){s&&v(e)}}}function Zt(n){let e,t=n[2],l=[];for(let s=0;sn.toLocaleUpperCase();function il(n,e,t){let{show_images:l=!0}=e,{process_result:s=null}=e,{result:r={data:async()=>{}}}=e,i=["title","image","image_alt","url"],o,a=[],h=async f=>{t(1,o=await f.data()),t(1,o=s?.(o)??o),t(2,a=Object.entries(o.meta).filter(([c])=>!i.includes(c)))},_=(f=30)=>". ".repeat(Math.floor(10+Math.random()*f));return n.$$set=f=>{"show_images"in f&&t(0,l=f.show_images),"process_result"in f&&t(4,s=f.process_result),"result"in f&&t(5,r=f.result)},n.$$.update=()=>{if(n.$$.dirty&32)e:h(r)},[l,o,a,_,s,r]}var tt=class extends q{constructor(e){super(),J(this,e,il,rl,V,{show_images:0,process_result:4,result:5})}},$t=tt;function en(n,e,t){let l=n.slice();return l[11]=e[t][0],l[12]=e[t][1],l}function tn(n,e,t){let l=n.slice();return l[15]=e[t],l}function ol(n){let e,t,l,s,r,i=n[0]&&nn(n);return{c(){i&&i.c(),e=S(),t=C("div"),l=C("p"),l.textContent=`${n[5](30)}`,s=S(),r=C("p"),r.textContent=`${n[5](40)}`,p(l,"class","pagefind-ui__result-title pagefind-ui__loading svelte-4xnkmf"),p(r,"class","pagefind-ui__result-excerpt pagefind-ui__loading svelte-4xnkmf"),p(t,"class","pagefind-ui__result-inner svelte-4xnkmf")},m(o,a){i&&i.m(o,a),y(o,e,a),y(o,t,a),b(t,l),b(t,s),b(t,r)},p(o,a){o[0]?i||(i=nn(o),i.c(),i.m(e.parentNode,e)):i&&(i.d(1),i=null)},d(o){i&&i.d(o),o&&v(e),o&&v(t)}}}function al(n){let e,t,l,s,r=n[1].meta?.title+"",i,o,a,h,_,f=n[0]&&ln(n),c=n[4]&&rn(n),E=n[3],u=[];for(let d=0;dn.toLocaleUpperCase();function cl(n,e,t){let{show_images:l=!0}=e,{process_result:s=null}=e,{result:r={data:async()=>{}}}=e,i=["title","image","image_alt","url"],o,a=[],h=[],_=!1,f=(u,m)=>{if(u.length<=m)return u;let d=[...u].sort((T,R)=>R.locations.length-T.locations.length).slice(0,3).map(T=>T.url);return u.filter(T=>d.includes(T.url))},c=async u=>{t(1,o=await u.data()),t(1,o=s?.(o)??o),t(2,a=Object.entries(o.meta).filter(([m])=>!i.includes(m))),Array.isArray(o.sub_results)&&(t(4,_=o.sub_results?.[0]?.url===(o.meta?.url||o.url)),_?t(3,h=f(o.sub_results.slice(1),3)):t(3,h=f([...o.sub_results],3)))},E=(u=30)=>". ".repeat(Math.floor(10+Math.random()*u));return n.$$set=u=>{"show_images"in u&&t(0,l=u.show_images),"process_result"in u&&t(6,s=u.process_result),"result"in u&&t(7,r=u.result)},n.$$.update=()=>{if(n.$$.dirty&128)e:c(r)},[l,o,a,h,_,E,s,r]}var nt=class extends q{constructor(e){super(),J(this,e,cl,ul,V,{show_images:0,process_result:6,result:7})}},fn=nt;function _n(n,e,t){let l=n.slice();return l[9]=e[t][0],l[10]=e[t][1],l[11]=e,l[12]=t,l}function dn(n,e,t){let l=n.slice();return l[13]=e[t][0],l[14]=e[t][1],l[15]=e,l[16]=t,l}function hn(n){let e,t,l=n[3]("filters_label",n[4],n[5])+"",s,r,i=Object.entries(n[1]),o=[];for(let a=0;an.toLocaleUpperCase();function _l(n,e,t){let{available_filters:l=null}=e,{show_empty_filters:s=!0}=e,{translate:r=()=>""}=e,{automatic_translations:i={}}=e,{translations:o={}}=e,a={},h=!1,_=!1;function f(c,E){a[`${c}:${E}`]=this.checked,t(0,a)}return n.$$set=c=>{"available_filters"in c&&t(1,l=c.available_filters),"show_empty_filters"in c&&t(2,s=c.show_empty_filters),"translate"in c&&t(3,r=c.translate),"automatic_translations"in c&&t(4,i=c.automatic_translations),"translations"in c&&t(5,o=c.translations)},n.$$.update=()=>{if(n.$$.dirty&130){e:if(l&&!h){t(7,h=!0);let c=Object.entries(l||{});c.length===1&&Object.entries(c[0][1])?.length<=6&&t(6,_=!0)}}},[a,l,s,r,i,o,_,h,f]}var lt=class extends q{constructor(e){super(),J(this,e,_l,fl,V,{available_filters:1,show_empty_filters:2,translate:3,automatic_translations:4,translations:5,selected_filters:0})}get selected_filters(){return this.$$.ctx[0]}},bn=lt;var st={};A(st,{comments:()=>hl,default:()=>gl,direction:()=>ml,strings:()=>pl,thanks_to:()=>dl});var dl="Jan Claasen",hl="",ml="ltr",pl={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]"},gl={thanks_to:dl,comments:hl,direction:ml,strings:pl};var rt={};A(rt,{comments:()=>bl,default:()=>Cl,direction:()=>Rl,strings:()=>Tl,thanks_to:()=>El});var El="Pablo Villaverde ",bl="",Rl="ltr",Tl={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]..."},Cl={thanks_to:El,comments:bl,direction:Rl,strings:Tl};var it={};A(it,{comments:()=>yl,default:()=>wl,direction:()=>kl,strings:()=>Sl,thanks_to:()=>vl});var vl="Jan Claasen",yl="",kl="ltr",Sl={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]"},wl={thanks_to:vl,comments:yl,direction:kl,strings:Sl};var ot={};A(ot,{comments:()=>Ml,default:()=>Nl,direction:()=>Fl,strings:()=>Hl,thanks_to:()=>Al});var Al="Liam Bigelow ",Ml="",Fl="ltr",Hl={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]..."},Nl={thanks_to:Al,comments:Ml,direction:Fl,strings:Hl};var at={};A(at,{comments:()=>jl,default:()=>Ul,direction:()=>Dl,strings:()=>zl,thanks_to:()=>Ol});var Ol="Pablo Villaverde ",jl="",Dl="ltr",zl={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]..."},Ul={thanks_to:Ol,comments:jl,direction:Dl,strings:zl};var ut={};A(ut,{comments:()=>Ll,default:()=>Bl,direction:()=>Pl,strings:()=>ql,thanks_to:()=>Il});var Il="Valtteri Laitinen ",Ll="",Pl="ltr",ql={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]..."},Bl={thanks_to:Il,comments:Ll,direction:Pl,strings:ql};var ct={};A(ct,{comments:()=>Vl,default:()=>Kl,direction:()=>Wl,strings:()=>Jl,thanks_to:()=>Gl});var Gl="Nicolas Friedli ",Vl="",Wl="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]..."},Kl={thanks_to:Gl,comments:Vl,direction:Wl,strings:Jl};var ft={};A(ft,{comments:()=>Xl,default:()=>xl,direction:()=>Zl,strings:()=>Ql,thanks_to:()=>Yl});var Yl="Pablo Villaverde ",Xl="",Zl="ltr",Ql={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]..."},xl={thanks_to:Yl,comments:Xl,direction:Zl,strings:Ql};var _t={};A(_t,{comments:()=>es,default:()=>ls,direction:()=>ts,strings:()=>ns,thanks_to:()=>$l});var $l="Amit Yadav ",es="",ts="ltr",ns={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..."},ls={thanks_to:$l,comments:es,direction:ts,strings:ns};var dt={};A(dt,{comments:()=>rs,default:()=>as,direction:()=>is,strings:()=>os,thanks_to:()=>ss});var ss="Nixentric",rs="",is="ltr",os={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]..."},as={thanks_to:ss,comments:rs,direction:is,strings:os};var ht={};A(ht,{comments:()=>cs,default:()=>ds,direction:()=>fs,strings:()=>_s,thanks_to:()=>us});var us="Cosette Bruhns Alonso, Andrew Janco ",cs="",fs="ltr",_s={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]..."},ds={thanks_to:us,comments:cs,direction:fs,strings:_s};var mt={};A(mt,{comments:()=>ms,default:()=>Es,direction:()=>ps,strings:()=>gs,thanks_to:()=>hs});var hs="Tate",ms="",ps="ltr",gs={placeholder:"\u691C\u7D22",clear_search:"\u6D88\u3059",load_more:"\u3082\u3063\u3068\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\u4EF6\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\u4EF6\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\u4EF6\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"},Es={thanks_to:hs,comments:ms,direction:ps,strings:gs};var pt={};A(pt,{comments:()=>Rs,default:()=>vs,direction:()=>Ts,strings:()=>Cs,thanks_to:()=>bs});var bs="Paul van Brouwershaven",Rs="",Ts="ltr",Cs={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]..."},vs={thanks_to:bs,comments:Rs,direction:Ts,strings:Cs};var gt={};A(gt,{comments:()=>ks,default:()=>As,direction:()=>Ss,strings:()=>ws,thanks_to:()=>ys});var ys="Christopher Wingate",ks="",Ss="ltr",ws={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]"},As={thanks_to:ys,comments:ks,direction:Ss,strings:ws};var Et={};A(Et,{comments:()=>Fs,default:()=>Os,direction:()=>Hs,strings:()=>Ns,thanks_to:()=>Ms});var Ms="Jonatah",Fs="",Hs="ltr",Ns={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]..."},Os={thanks_to:Ms,comments:Fs,direction:Hs,strings:Ns};var bt={};A(bt,{comments:()=>Ds,default:()=>Is,direction:()=>zs,strings:()=>Us,thanks_to:()=>js});var js="Aleksandr Gordeev",Ds="",zs="ltr",Us={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]"},Is={thanks_to:js,comments:Ds,direction:zs,strings:Us};var Rt={};A(Rt,{comments:()=>Ps,default:()=>Gs,direction:()=>qs,strings:()=>Bs,thanks_to:()=>Ls});var Ls="Andrija Sagicc",Ps="",qs="ltr",Bs={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]..."},Gs={thanks_to:Ls,comments:Ps,direction:qs,strings:Bs};var Tt={};A(Tt,{comments:()=>Ws,default:()=>Ys,direction:()=>Js,strings:()=>Ks,thanks_to:()=>Vs});var Vs="Montazar Al-Jaber ",Ws="",Js="ltr",Ks={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]..."},Ys={thanks_to:Vs,comments:Ws,direction:Js,strings:Ks};var Ct={};A(Ct,{comments:()=>Zs,default:()=>$s,direction:()=>Qs,strings:()=>xs,thanks_to:()=>Xs});var Xs="",Zs="",Qs="ltr",xs={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"},$s={thanks_to:Xs,comments:Zs,direction:Qs,strings:xs};var vt={};A(vt,{comments:()=>tr,default:()=>sr,direction:()=>nr,strings:()=>lr,thanks_to:()=>er});var er="Taylan \xD6zg\xFCr Bildik",tr="",nr="ltr",lr={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..."},sr={thanks_to:er,comments:tr,direction:nr,strings:lr};var yt={};A(yt,{comments:()=>ir,default:()=>ur,direction:()=>or,strings:()=>ar,thanks_to:()=>rr});var rr="Amber Song",ir="",or="ltr",ar={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]..."},ur={thanks_to:rr,comments:ir,direction:or,strings:ar};var kt={};A(kt,{comments:()=>fr,default:()=>hr,direction:()=>_r,strings:()=>dr,thanks_to:()=>cr});var cr="Amber Song",fr="",_r="ltr",dr={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]..."},hr={thanks_to:cr,comments:fr,direction:_r,strings:dr};var St={};A(St,{comments:()=>pr,default:()=>br,direction:()=>gr,strings:()=>Er,thanks_to:()=>mr});var mr="Amber Song",pr="",gr="ltr",Er={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]..."},br={thanks_to:mr,comments:pr,direction:gr,strings:Er};var Rr=[st,rt,it,ot,at,ut,ct,ft,_t,dt,ht,mt,pt,gt,Et,bt,Rt,Tt,Ct,vt,yt,kt,St],Rn=Rr,Tn=["../../translations/af.json","../../translations/ca.json","../../translations/de.json","../../translations/en.json","../../translations/es.json","../../translations/fi.json","../../translations/fr.json","../../translations/gl.json","../../translations/hi.json","../../translations/id.json","../../translations/it.json","../../translations/ja.json","../../translations/nl.json","../../translations/no.json","../../translations/pt.json","../../translations/ru.json","../../translations/sr.json","../../translations/sv.json","../../translations/ta.json","../../translations/tr.json","../../translations/zh-cn.json","../../translations/zh-tw.json","../../translations/zh.json"];function Cn(n,e,t){let l=n.slice();return l[47]=e[t],l}function vn(n){let e,t,l;function s(i){n[33](i)}let r={show_empty_filters:n[4],available_filters:n[16],translate:n[18],automatic_translations:n[17],translations:n[5]};return n[7]!==void 0&&(r.selected_filters=n[7]),e=new bn({props:r}),le.push(()=>Gt(e,"selected_filters",s)),{c(){Ge(e.$$.fragment)},m(i,o){he(e,i,o),l=!0},p(i,o){let a={};o[0]&16&&(a.show_empty_filters=i[4]),o[0]&65536&&(a.available_filters=i[16]),o[0]&131072&&(a.automatic_translations=i[17]),o[0]&32&&(a.translations=i[5]),!t&&o[0]&128&&(t=!0,a.selected_filters=i[7],Lt(()=>t=!1)),e.$set(a)},i(i){l||(D(e.$$.fragment,i),l=!0)},o(i){I(e.$$.fragment,i),l=!1},d(i){oe(e,i)}}}function yn(n){let e,t,l,s,r=[vr,Cr],i=[];function o(a,h){return a[12]?0:1}return t=o(n,[-1,-1]),l=i[t]=r[t](n),{c(){e=C("div"),l.c(),p(e,"class","pagefind-ui__results-area svelte-1d60ae3")},m(a,h){y(a,e,h),i[t].m(e,null),s=!0},p(a,h){let _=t;t=o(a,h),t===_?i[t].p(a,h):(re(),I(i[_],1,1,()=>{i[_]=null}),ie(),l=i[t],l?l.p(a,h):(l=i[t]=r[t](a),l.c()),D(l,1),l.m(e,null))},i(a){s||(D(l),s=!0)},o(a){I(l),s=!1},d(a){a&&v(e),i[t].d()}}}function Cr(n){let e,t,l,s=[],r=new Map,i,o,a;function h(m,d){return m[11].results.length===0?Sr:m[11].results.length===1?kr:yr}let _=h(n,[-1,-1]),f=_(n),c=n[11].results.slice(0,n[15]),E=m=>m[47].id;for(let m=0;mn[15]&&Sn(n);return{c(){e=C("p"),f.c(),t=S(),l=C("ol");for(let m=0;mm[15]?u?u.p(m,d):(u=Sn(m),u.c(),u.m(o.parentNode,o)):u&&(u.d(1),u=null)},i(m){if(!a){for(let d=0;d{a[c]=null}),ie(),s=a[l],s?s.p(e,f):(s=a[l]=o[l](e),s.c()),D(s,1),s.m(r.parentNode,r))},i(_){i||(D(s),i=!0)},o(_){I(s),i=!1},d(_){_&&v(t),a[l].d(_),_&&v(r)}}}function Sn(n){let e,t=n[18]("load_more",n[17],n[5])+"",l,s,r;return{c(){e=C("button"),l=w(t),p(e,"type","button"),p(e,"class","pagefind-ui__button svelte-1d60ae3")},m(i,o){y(i,e,o),b(e,l),s||(r=W(e,"click",n[20]),s=!0)},p(i,o){o[0]&131104&&t!==(t=i[18]("load_more",i[17],i[5])+"")&&N(l,t)},d(i){i&&v(e),s=!1,r()}}}function wn(n){let e,t=n[18]("searching",n[17],n[5]).replace(/\[SEARCH_TERM\]/,n[14])+"",l;return{c(){e=C("p"),l=w(t),p(e,"class","pagefind-ui__message svelte-1d60ae3")},m(s,r){y(s,e,r),b(e,l)},p(s,r){r[0]&147488&&t!==(t=s[18]("searching",s[17],s[5]).replace(/\[SEARCH_TERM\]/,s[14])+"")&&N(l,t)},d(s){s&&v(e)}}}function Mr(n){let e,t,l,s,r,i,o=n[18]("clear_search",n[17],n[5])+"",a,h,_,f,c,E,u,m,d=n[10]&&vn(n),T=n[13]&&yn(n);return{c(){e=C("div"),t=C("form"),l=C("input"),r=S(),i=C("button"),a=w(o),h=S(),_=C("div"),d&&d.c(),f=S(),T&&T.c(),p(l,"class","pagefind-ui__search-input svelte-1d60ae3"),p(l,"type","text"),p(l,"placeholder",s=n[18]("placeholder",n[17],n[5])),p(l,"autocapitalize","none"),p(l,"enterkeyhint","search"),p(i,"class","pagefind-ui__search-clear svelte-1d60ae3"),B(i,"pagefind-ui__suppressed",!n[6]),p(_,"class","pagefind-ui__drawer svelte-1d60ae3"),B(_,"pagefind-ui__hidden",!n[13]),p(t,"class","pagefind-ui__form svelte-1d60ae3"),p(t,"role","search"),p(t,"aria-label",c=n[18]("search_label",n[17],n[5])),p(t,"action","javascript:void(0);"),p(e,"class","pagefind-ui svelte-1d60ae3"),B(e,"pagefind-ui--reset",n[0])},m(R,k){y(R,e,k),b(e,t),b(t,l),xe(l,n[6]),n[30](l),b(t,r),b(t,i),b(i,a),n[31](i),b(t,h),b(t,_),d&&d.m(_,null),b(_,f),T&&T.m(_,null),E=!0,u||(m=[W(l,"focus",n[19]),W(l,"keydown",n[28]),W(l,"input",n[29]),W(i,"click",n[32]),W(t,"submit",Fr)],u=!0)},p(R,k){(!E||k[0]&131104&&s!==(s=R[18]("placeholder",R[17],R[5])))&&p(l,"placeholder",s),k[0]&64&&l.value!==R[6]&&xe(l,R[6]),(!E||k[0]&131104)&&o!==(o=R[18]("clear_search",R[17],R[5])+"")&&N(a,o),(!E||k[0]&64)&&B(i,"pagefind-ui__suppressed",!R[6]),R[10]?d?(d.p(R,k),k[0]&1024&&D(d,1)):(d=vn(R),d.c(),D(d,1),d.m(_,f)):d&&(re(),I(d,1,1,()=>{d=null}),ie()),R[13]?T?(T.p(R,k),k[0]&8192&&D(T,1)):(T=yn(R),T.c(),D(T,1),T.m(_,null)):T&&(re(),I(T,1,1,()=>{T=null}),ie()),(!E||k[0]&8192)&&B(_,"pagefind-ui__hidden",!R[13]),(!E||k[0]&131104&&c!==(c=R[18]("search_label",R[17],R[5])))&&p(t,"aria-label",c),(!E||k[0]&1)&&B(e,"pagefind-ui--reset",R[0])},i(R){E||(D(d),D(T),E=!0)},o(R){I(d),I(T),E=!1},d(R){R&&v(e),n[30](null),n[31](null),d&&d.d(),T&&T.d(),u=!1,G(m)}}}var Fr=n=>n.preventDefault();function Hr(n,e,t){let l={},s=Tn.map(g=>g.match(/([^\/]+)\.json$/)[1]);for(let g=0;gO[g]??H[g]??"";$e(()=>{let g=document?.querySelector?.("html")?.getAttribute?.("lang")||"en",H=Ve(g.toLocaleLowerCase());t(17,Nt=l[`${H.language}-${H.script}-${H.region}`]||l[`${H.language}-${H.region}`]||l[`${H.language}`]||l.en)});let Ot=async()=>{if(!M&&(t(10,M=!0),!k)){let g;try{g=await import(`${r}pagefind.js`)}catch(O){console.error(O),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(` +`))}h||t(22,h=a?12:30);let H={...u||{},excerptLength:h};await g.options(H);for(let O of m){if(!O.bundlePath)throw new Error("mergeIndex requires a bundlePath parameter");let P=O.bundlePath;delete O.bundlePath,await g.mergeIndex(P,O)}k=g,Fn()}},Fn=async()=>{k&&(Ht=await k.filters(),(!ue||!Object.keys(ue).length)&&t(16,ue=Ht))},Hn=g=>{let H={};return Object.entries(g).filter(([,O])=>O).forEach(([O])=>{let[P,Bn]=O.split(/:(.*)$/);H[P]=H[P]||[],H[P].push(Bn)}),H},ce,Nn=async(g,H)=>{if(!g){t(13,Y=!1),ce&&clearTimeout(ce);return}let O=Hn(H),P=()=>On(g,O);E>0&&g?(ce&&clearTimeout(ce),ce=setTimeout(P,E),await jt(),k.preload(g,{filters:O})):P(),jn()},jt=async()=>{for(;!k;)Ot(),await new Promise(g=>setTimeout(g,50))},On=async(g,H)=>{t(14,Ft=g||""),typeof f=="function"&&(g=f(g)),t(12,U=!0),t(13,Y=!0),await jt();let O=++Mt,P=await k.search(g,{filters:H});Mt===O&&(P.filters&&Object.keys(P.filters)?.length&&t(16,ue=P.filters),t(11,L=P),t(12,U=!1),t(15,Je=5))},jn=()=>{let g=x.offsetWidth;g!=ae&&t(8,F.style.paddingRight=`${g+2}px`,F)},Dn=g=>{g?.preventDefault(),t(15,Je+=5)},zn=g=>{g.key==="Escape"&&(t(6,R=""),F.blur()),g.key==="Enter"&&g.preventDefault()};function Un(){R=this.value,t(6,R),t(21,d)}function In(g){le[g?"unshift":"push"](()=>{F=g,t(8,F)})}function Ln(g){le[g?"unshift":"push"](()=>{x=g,t(9,x)})}let Pn=()=>{t(6,R=""),F.blur()};function qn(g){Ie=g,t(7,Ie)}return n.$$set=g=>{"base_path"in g&&t(23,r=g.base_path),"reset_styles"in g&&t(0,i=g.reset_styles),"show_images"in g&&t(1,o=g.show_images),"show_sub_results"in g&&t(2,a=g.show_sub_results),"excerpt_length"in g&&t(22,h=g.excerpt_length),"process_result"in g&&t(3,_=g.process_result),"process_term"in g&&t(24,f=g.process_term),"show_empty_filters"in g&&t(4,c=g.show_empty_filters),"debounce_timeout_ms"in g&&t(25,E=g.debounce_timeout_ms),"pagefind_options"in g&&t(26,u=g.pagefind_options),"merge_index"in g&&t(27,m=g.merge_index),"trigger_search_term"in g&&t(21,d=g.trigger_search_term),"translations"in g&&t(5,T=g.translations)},n.$$.update=()=>{if(n.$$.dirty[0]&2097152)e:d&&(t(6,R=d),t(21,d=""));if(n.$$.dirty[0]&192)e:Nn(R,Ie)},[i,o,a,_,c,T,R,Ie,F,x,M,L,U,Y,Ft,Je,ue,Nt,Mn,Ot,Dn,d,h,r,f,E,u,m,zn,Un,In,Ln,Pn,qn]}var wt=class extends q{constructor(e){super(),J(this,e,Hr,Mr,V,{base_path:23,reset_styles:0,show_images:1,show_sub_results:2,excerpt_length:22,process_result:3,process_term:24,show_empty_filters:4,debounce_timeout_ms:25,pagefind_options:26,merge_index:27,trigger_search_term:21,translations:5},null,[-1,-1])}},An=wt;var At;try{At=new URL(document.currentScript.src).pathname.match(/^(.*\/)(?:pagefind-)?ui.js.*$/)[1]}catch{At="/pagefind/"}var We=class{constructor(e){this._pfs=null;let t=e.element??"[data-pagefind-ui]",l=e.bundlePath??At,s=e.resetStyles??!0,r=e.showImages??!0,i=e.showSubResults??!1,o=e.excerptLength??0,a=e.processResult??null,h=e.processTerm??null,_=e.showEmptyFilters??!0,f=e.debounceTimeoutMs??300,c=e.mergeIndex??[],E=e.translations??[];delete e.element,delete e.bundlePath,delete e.resetStyles,delete e.showImages,delete e.showSubResults,delete e.excerptLength,delete e.processResult,delete e.processTerm,delete e.showEmptyFilters,delete e.debounceTimeoutMs,delete e.mergeIndex,delete e.translations;let u=t instanceof HTMLElement?t:document.querySelector(t);u?this._pfs=new An({target:u,props:{base_path:l,reset_styles:s,show_images:r,show_sub_results:i,excerpt_length:o,process_result:a,process_term:h,show_empty_filters:_,debounce_timeout_ms:f,merge_index:c,translations:E,pagefind_options:e}}):console.error(`Pagefind UI couldn't find the selector ${t}`)}triggerSearch(e){this._pfs.$$set({trigger_search_term:e})}};window.PagefindUI=We;})(); diff --git a/pagefind/pagefind.en_b77047e476.pf_meta b/pagefind/pagefind.en_b77047e476.pf_meta new file mode 100644 index 00000000..2805240f Binary files /dev/null and b/pagefind/pagefind.en_b77047e476.pf_meta differ diff --git a/pagefind/pagefind.js b/pagefind/pagefind.js new file mode 100644 index 00000000..7954ecf9 --- /dev/null +++ b/pagefind/pagefind.js @@ -0,0 +1,9 @@ +const pagefind_version="1.0.3";let wasm_bindgen;(function(){const __exports={};let script_src;if(typeof document==='undefined'){script_src=location.href}else{script_src=new URL("UNHANDLED",location.href).toString()}let wasm;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);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};__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};__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};const cachedTextEncoder=new TextEncoder('utf-8');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);getUint8Memory0().subarray(ptr,ptr+buf.length).set(buf);WASM_VECTOR_LEN=buf.length;return ptr}let len=arg.length;let ptr=malloc(len);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);const view=getUint8Memory0().subarray(ptr+offset,ptr+len);const ret=encodeString(arg,view);offset+=ret.written}WASM_VECTOR_LEN=offset;return ptr}__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};let cachedInt32Memory0=null;function getInt32Memory0(){if(cachedInt32Memory0===null||cachedInt32Memory0.byteLength===0){cachedInt32Memory0=new Int32Array(wasm.memory.buffer)}return cachedInt32Memory0}const cachedTextDecoder=new TextDecoder('utf-8',{ignoreBOM:true,fatal:true});cachedTextDecoder.decode();function getStringFromWasm0(ptr,len){return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr,ptr+len))}__exports.request_indexes=function(ptr,query){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];return getStringFromWasm0(r0,r1)}finally{wasm.__wbindgen_add_to_stack_pointer(16);wasm.__wbindgen_free(r0,r1)}};__exports.request_filter_indexes=function(ptr,filters){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];return getStringFromWasm0(r0,r1)}finally{wasm.__wbindgen_add_to_stack_pointer(16);wasm.__wbindgen_free(r0,r1)}};__exports.request_all_filter_indexes=function(ptr){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];return getStringFromWasm0(r0,r1)}finally{wasm.__wbindgen_add_to_stack_pointer(16);wasm.__wbindgen_free(r0,r1)}};__exports.filters=function(ptr){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];return getStringFromWasm0(r0,r1)}finally{wasm.__wbindgen_add_to_stack_pointer(16);wasm.__wbindgen_free(r0,r1)}};__exports.search=function(ptr,query,filter,sort,exact){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];return getStringFromWasm0(r0,r1)}finally{wasm.__wbindgen_add_to_stack_pointer(16);wasm.__wbindgen_free(r0,r1)}};async function 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 getImports(){const imports={};imports.wbg={};return imports}function initMemory(imports,maybe_memory){}function finalizeInit(instance,module){wasm=instance.exports;init.__wbindgen_wasm_module=module;cachedInt32Memory0=null;cachedUint8Memory0=null;return wasm}function initSync(module){const imports=getImports();initMemory(imports);if(!(module instanceof WebAssembly.Module)){module=new WebAssembly.Module(module)}const instance=new WebAssembly.Instance(module,imports);return finalizeInit(instance,module)}async function init(input){if(typeof input==='undefined'){input=script_src.replace(/\.js$/,'_bg.wasm')}const imports=getImports();if(typeof input==='string'||(typeof Request==='function'&&input instanceof Request)||(typeof URL==='function'&&input instanceof URL)){input=fetch(input)}initMemory(imports);const{instance,module}=await load(await input,imports);return finalizeInit(instance,module)}wasm_bindgen=Object.assign(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&&/\w/.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.loaded_chunks={};this.loaded_filters={};this.loaded_fragments={};this.raw_ptr=null;this.searchMeta=null;this.languages=null}initPrimary(){let derivedBasePath=import.meta.url.match(/^(.*\/)pagefind.js.*$/)?.[1];if(derivedBasePath){this.basePath=derivedBasePath}else{console.warn(["Pagefind couldn't determine the base of the bundle from the import path. Falling back to the default.","Set a basePath option when initialising Pagefind to ignore this message."].join("\n"))}}defaultBaseUrl(){let default_base=this.basePath.match(/^(.*\/)_?pagefind/)?.[1];return default_base||"/"}async options(options2){const opts=["basePath","baseUrl","indexWeight","excerptLength","mergeFilter"];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(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}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 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)}}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=[]){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.fullUrl(fragment.raw_url)}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){return`${this.baseUrl}/${raw}`.replace(/\/+/g,"/").replace(/^(https?:\/)/,"$1/")}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={}){options2.preload=true;await this.search(term,options2)}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)}});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 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()};export{debouncedSearch,filters,init,mergeIndex,options,preload,search} \ No newline at end of file diff --git a/pagefind/wasm.en.pagefind b/pagefind/wasm.en.pagefind new file mode 100644 index 00000000..d8a3a7fc Binary files /dev/null and b/pagefind/wasm.en.pagefind differ diff --git a/pagefind/wasm.unknown.pagefind b/pagefind/wasm.unknown.pagefind new file mode 100644 index 00000000..a77c2e4b Binary files /dev/null and b/pagefind/wasm.unknown.pagefind differ diff --git a/parity/100.svg b/parity/100.svg new file mode 100644 index 00000000..3ee78cb4 --- /dev/null +++ b/parity/100.svg @@ -0,0 +1,30 @@ + + + 100 + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/parity/no.svg b/parity/no.svg new file mode 100644 index 00000000..53e4dca4 --- /dev/null +++ b/parity/no.svg @@ -0,0 +1,22 @@ + + + no + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/parity/null.svg b/parity/null.svg new file mode 100644 index 00000000..6404fccc --- /dev/null +++ b/parity/null.svg @@ -0,0 +1,41 @@ + + + null + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/parity/soon.svg b/parity/soon.svg new file mode 100644 index 00000000..456e6fa6 --- /dev/null +++ b/parity/soon.svg @@ -0,0 +1,35 @@ + + + soon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/parity/yes.svg b/parity/yes.svg new file mode 100644 index 00000000..43323998 --- /dev/null +++ b/parity/yes.svg @@ -0,0 +1,22 @@ + + + yes + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/reference/array/alphabetical/index.html b/reference/array/alphabetical/index.html new file mode 100644 index 00000000..94554ef6 --- /dev/null +++ b/reference/array/alphabetical/index.html @@ -0,0 +1,96 @@ + alphabetical | Radashi + + Skip to content

    alphabetical

    Sorts an array of objects alphabetically by a property

    186 bytes +

    Usage

    +

    Given an array of objects and a callback function used to determine +the property to use for sorting, return a new array with the objects +sorted alphabetically. A third, and optional, argument allows you to +sort in descending order instead of the default ascending order.

    +

    For numerical sorting, see the sort function.

    +
    import * as _ from 'radashi'
    +
    const gods = [
    {
    name: 'Ra',
    power: 100,
    },
    {
    name: 'Zeus',
    power: 98,
    },
    {
    name: 'Loki',
    power: 72,
    },
    {
    name: 'Vishnu',
    power: 100,
    },
    ]
    +
    _.alphabetical(gods, g => g.name) // => [Loki, Ra, Vishnu, Zeus]
    _.alphabetical(gods, g => g.name, 'desc') // => [Zeus, Vishnu, Ra, Loki]
    \ No newline at end of file diff --git a/reference/array/boil/index.html b/reference/array/boil/index.html new file mode 100644 index 00000000..3c7dece0 --- /dev/null +++ b/reference/array/boil/index.html @@ -0,0 +1,92 @@ + boil | Radashi + + Skip to content

    boil

    Reduce a list of items down to one item

    80 bytes +

    Usage

    +

    Given an array of items return the final item that wins the comparison condition. Useful for more complicated min/max.

    +
    import * as _ from 'radashi'
    +
    const gods = [
    {
    name: 'Ra',
    power: 100,
    },
    {
    name: 'Zeus',
    power: 98,
    },
    {
    name: 'Loki',
    power: 72,
    },
    ]
    +
    _.boil(gods, (a, b) => (a.power > b.power ? a : b))
    // => { name: 'Ra', power: 100 }
    \ No newline at end of file diff --git a/reference/array/castArray/index.html b/reference/array/castArray/index.html new file mode 100644 index 00000000..1061fe0c --- /dev/null +++ b/reference/array/castArray/index.html @@ -0,0 +1,91 @@ + castArray | Radashi + + Skip to content

    castArray

    Cast a value into an array

    76 bytes +

    Usage

    +

    The castArray function ensures that the input value is always returned as an array. If the input is already an array, it returns a shallow copy of the array. If the input is not an array, it wraps the input in a new array.

    +
    import * as _ from 'radashi'
    +
    _.castArray(1) // => [1]
    _.castArray([1, 2, 3]) // => [1, 2, 3]
    _.castArray('hello') // => ['hello']
    \ No newline at end of file diff --git a/reference/array/castArrayIfExists/index.html b/reference/array/castArrayIfExists/index.html new file mode 100644 index 00000000..423e5bf6 --- /dev/null +++ b/reference/array/castArrayIfExists/index.html @@ -0,0 +1,91 @@ + castArrayIfExists | Radashi + + Skip to content

    castArrayIfExists

    Cast a non-nullish value into an array

    94 bytes +

    Usage

    +

    The castArrayIfExists function ensures that a non-nullish input value is always returned as an array. If the input is already an array, it returns a shallow copy of the array. If the input is not an array, it wraps the input in a new array. Nullish values (null or undefined) are passed through as is.

    +
    import * as _ from 'radashi'
    +
    _.castArrayIfExists(1) // => [1]
    _.castArrayIfExists([1, 2, 3]) // => [1, 2, 3]
    _.castArrayIfExists('hello') // => ['hello']
    _.castArrayIfExists(null) // => null
    _.castArrayIfExists(undefined) // => undefined
    \ No newline at end of file diff --git a/reference/array/cluster/index.html b/reference/array/cluster/index.html new file mode 100644 index 00000000..ba9174ab --- /dev/null +++ b/reference/array/cluster/index.html @@ -0,0 +1,94 @@ + cluster | Radashi + + Skip to content

    cluster

    Split a list into many lists of the given size

    109 bytes +

    Usage

    +

    Given an array of items and a desired cluster size (n), returns an array +of arrays. Each child array containing n (cluster size) items +split as evenly as possible.

    +
    import * as _ from 'radashi'
    +
    const gods = [
    'Ra',
    'Zeus',
    'Loki',
    'Vishnu',
    'Icarus',
    'Osiris',
    'Thor',
    'Apollo',
    'Artemis',
    'Athena',
    ]
    +
    _.cluster(gods, 3)
    // => [
    // [ 'Ra', 'Zeus', 'Loki' ],
    // [ 'Vishnu', 'Icarus', 'Osiris' ],
    // ['Thor', 'Apollo', 'Artemis'],
    // ['Athena']
    // ]
    \ No newline at end of file diff --git a/reference/array/counting/index.html b/reference/array/counting/index.html new file mode 100644 index 00000000..6ee3af8a --- /dev/null +++ b/reference/array/counting/index.html @@ -0,0 +1,95 @@ + counting | Radashi + + Skip to content

    counting

    Creates an object with counts of occurrences of items

    110 bytes +

    Usage

    +

    Given an array of objects and an identity callback function to determine +how each object should be identified. Returns an object where the keys +are the id values the callback returned and each value is an integer +telling how many times that id occurred.

    +
    import * as _ from 'radashi'
    +
    const gods = [
    {
    name: 'Ra',
    culture: 'egypt',
    },
    {
    name: 'Zeus',
    culture: 'greek',
    },
    {
    name: 'Loki',
    culture: 'greek',
    },
    ]
    +
    _.counting(gods, g => g.culture) // => { egypt: 1, greek: 2 }
    \ No newline at end of file diff --git a/reference/array/diff/index.html b/reference/array/diff/index.html new file mode 100644 index 00000000..3b37b651 --- /dev/null +++ b/reference/array/diff/index.html @@ -0,0 +1,93 @@ + diff | Radashi + + Skip to content

    diff

    Create an array of differences between two arrays

    209 bytes +

    Usage

    +

    Given two arrays, returns an array of all items that exist in the first array +but do not exist in the second array.

    +
    import * as _ from 'radashi'
    +
    const oldWorldGods = ['ra', 'zeus']
    const newWorldGods = ['vishnu', 'zeus']
    +
    _.diff(oldWorldGods, newWorldGods) // => ['ra']
    \ No newline at end of file diff --git a/reference/array/first/index.html b/reference/array/first/index.html new file mode 100644 index 00000000..0e43c166 --- /dev/null +++ b/reference/array/first/index.html @@ -0,0 +1,92 @@ + first | Radashi + + Skip to content

    first

    Get the first item from a list

    62 bytes +

    Usage

    +

    Given an array of items return the first item or a default value if no items exists.

    +
    import * as _ from 'radashi'
    +
    const gods = ['ra', 'loki', 'zeus']
    +
    _.first(gods) // => 'ra'
    _.first([], 'vishnu') // => 'vishnu'
    \ No newline at end of file diff --git a/reference/array/flat/index.html b/reference/array/flat/index.html new file mode 100644 index 00000000..26b17885 --- /dev/null +++ b/reference/array/flat/index.html @@ -0,0 +1,93 @@ + flat | Radashi + + Skip to content

    flat

    Flatten an array of arrays into a single dimension

    77 bytes +

    Usage

    +

    Given an array that contains many arrays, return a new array where all items from the children are present at the top level.

    +
    import * as _ from 'radashi'
    +
    const gods = [['ra', 'loki'], ['zeus']]
    +
    _.flat(gods) // => [ra, loki, zeus]
    +

    Note, _.flat is not recursive and will not flatten children of children of children … of children. It will only flatten T[][] an array of arrays.

    \ No newline at end of file diff --git a/reference/array/fork/index.html b/reference/array/fork/index.html new file mode 100644 index 00000000..d3180ab2 --- /dev/null +++ b/reference/array/fork/index.html @@ -0,0 +1,92 @@ + fork | Radashi + + Skip to content

    fork

    Split an array into two arrays by a condition

    98 bytes +

    Usage

    +

    Given an array of items and a condition, returns two arrays where the first contains all items that passed the condition and the second contains all items that failed the condition.

    +
    import * as _ from 'radashi'
    +
    const gods = [
    {
    name: 'Ra',
    power: 100,
    },
    {
    name: 'Zeus',
    power: 98,
    },
    {
    name: 'Loki',
    power: 72,
    },
    {
    name: 'Vishnu',
    power: 100,
    },
    ]
    +
    const [finalGods, lesserGods] = _.fork(gods, f => f.power > 90) // [[ra, vishnu, zues], [loki]]
    \ No newline at end of file diff --git a/reference/array/group/index.html b/reference/array/group/index.html new file mode 100644 index 00000000..879cabb7 --- /dev/null +++ b/reference/array/group/index.html @@ -0,0 +1,92 @@ + group | Radashi + + Skip to content

    group

    Sort an array of items into groups

    114 bytes +

    Usage

    +

    Given an array of items, group will build up an object where each key is an array of the items that belong in that group. Generally, this can be useful to categorize an array.

    +
    import * as _ from 'radashi'
    +
    const fish = [
    {
    name: 'Marlin',
    source: 'ocean',
    },
    {
    name: 'Bass',
    source: 'lake',
    },
    {
    name: 'Trout',
    source: 'lake',
    },
    ]
    +
    const fishBySource = _.group(fish, f => f.source) // => { ocean: [marlin], lake: [bass, trout] }
    \ No newline at end of file diff --git a/reference/array/intersects/index.html b/reference/array/intersects/index.html new file mode 100644 index 00000000..56d04e58 --- /dev/null +++ b/reference/array/intersects/index.html @@ -0,0 +1,94 @@ + intersects | Radashi + + Skip to content

    intersects

    Determine if two arrays have a common item

    154 bytes +

    Usage

    +

    Given two arrays of items, returns true if any item exists in both arrays.

    +
    import * as _ from 'radashi'
    +
    const oceanFish = ['tuna', 'tarpon']
    const lakeFish = ['bass', 'trout']
    +
    _.intersects(oceanFish, lakeFish) // => false
    +
    const brackishFish = ['tarpon', 'snook']
    +
    _.intersects(oceanFish, brackishFish) // => true
    \ No newline at end of file diff --git a/reference/array/iterate/index.html b/reference/array/iterate/index.html new file mode 100644 index 00000000..9f8f2d5d --- /dev/null +++ b/reference/array/iterate/index.html @@ -0,0 +1,92 @@ + iterate | Radashi + + Skip to content

    iterate

    Iterate over a callback n times

    87 bytes +

    Usage

    +

    A bit like forEach meets reduce. Useful for running a function n number of times to generate a value. The _.iterate function takes a count (the number of times to run the callback), a callback function, and an initial value. The callback is run count many times as a reducer and the accumulated value is then returned.

    +
    import * as _ from 'radashi'
    +
    const value = _.iterate(
    4,
    (acc, idx) => {
    return acc + idx
    },
    0,
    ) // => 10
    +

    Note, this is NOT zero indexed. If you pass a count of 5 you will get an index of 1, 2, 3, 4, 5 in the callback function.

    \ No newline at end of file diff --git a/reference/array/last/index.html b/reference/array/last/index.html new file mode 100644 index 00000000..9be5995d --- /dev/null +++ b/reference/array/last/index.html @@ -0,0 +1,92 @@ + last | Radashi + + Skip to content

    last

    Get the last item from a list

    70 bytes +

    Usage

    +

    Given an array of items return the last item or a default value if no items exists.

    +
    import * as _ from 'radashi'
    +
    const fish = ['marlin', 'bass', 'trout']
    +
    const lastFish = _.last(fish) // => 'trout'
    const lastItem = _.last([], 'bass') // => 'bass'
    \ No newline at end of file diff --git a/reference/array/list/index.html b/reference/array/list/index.html new file mode 100644 index 00000000..9d0a7eb5 --- /dev/null +++ b/reference/array/list/index.html @@ -0,0 +1,106 @@ + list | Radashi + + Skip to content

    list

    Create a list with specific items

    219 bytes +

    Usage

    +

    Given a start, end, value, and step size returns a list with values from start to end by step size.

    +

    The interface is identical to range.

    +

    A hat tip to Python’s range functionality

    +
    import * as _ from 'radashi'
    +
    _.list(3) // [0, 1, 2, 3]
    _.list(0, 3) // [0, 1, 2, 3]
    _.list(0, 3, 'y') // [y, y, y, y]
    _.list(0, 3, () => 'y') // [y, y, y, y]
    _.list(0, 3, i => i) // [0, 1, 2, 3]
    _.list(0, 3, i => `y${i}`) // [y0, y1, y2, y3]
    _.list(0, 3, obj) // [obj, obj, obj, obj]
    _.list(0, 6, i => i, 2) // [0, 2, 4, 6]
    +

    Signatures

    +

    list(size)

    +

    When givin a single argument, it’s treated as the size. Returns a list with values from 0 to size.

    +
    _.list(3) // [0, 1, 2, 3]
    +

    list(start, end)

    +

    When given two arguments, they’re treated as the start and end. Returns a list with values from start to end

    +
    _.list(2, 6) // [2, 3, 4, 5, 6]
    +

    list(start, end, value)

    +

    When given a third argument it’s treated as the value to be used in the list. If the value is a function it will be called, with an index argument, to create every value.

    +
    _.list(2, 4, {}) // [{}, {}, {}]
    _.list(2, 4, null) // [null, null, null]
    _.list(2, 4, i => i) // [2, 3, 4]
    +

    list(start, end, value, step)

    +

    When given a fourth argument it’s treated as the step size to skip when generating values from start to end.

    +
    _.list(2, 4, i => i, 2) // [2, 4]
    _.list(25, 100, i => i, 25) // [25, 50, 75, 100]
    \ No newline at end of file diff --git a/reference/array/mapify/index.html b/reference/array/mapify/index.html new file mode 100644 index 00000000..8560ec65 --- /dev/null +++ b/reference/array/mapify/index.html @@ -0,0 +1,111 @@ + mapify | Radashi + + Skip to content

    mapify

    Convert an array to a map

    113 bytes +

    Usage

    +

    The mapify function converts an array into a Map object, allowing you to specify how keys and values are derived from each array item.

    +

    Parameters

    +
      +
    1. array: The input array to be converted into a Map.
    2. +
    3. getKey: A function that determines the key for each item in the array. It receives two arguments: +
        +
      • item: The current array item.
      • +
      • index: The index of the current item in the array.
      • +
      +
    4. +
    5. getValue (optional): A function that determines the value for each item in the array. If not provided, the original array item is used as the value. It also receives two arguments: +
        +
      • item: The current array item.
      • +
      • index: The index of the current item in the array.
      • +
      +
    6. +
    +

    Return Value

    +

    Returns a new Map object where keys and values are derived from the input array using the provided mapping functions.

    +

    Example

    +
    import * as _ from 'radashi'
    +
    const fish = [
    {
    name: 'Marlin',
    weight: 105,
    },
    {
    name: 'Bass',
    weight: 8,
    },
    {
    name: 'Trout',
    weight: 13,
    },
    ]
    +
    _.mapify(fish, f => f.name) // => Map(3) {'Marlin' => { name: 'Marlin', weight: 105 }, 'Bass' => { name: 'Bass', weight: 8 }, 'Trout' => { name: 'Trout', weight: 13 }}
    _.mapify(
    fish,
    f => f.name,
    f => f.weight,
    ) // => Map(3) { 'Marlin' => 105, 'Bass' => 8, 'Trout' => 13 }
    \ No newline at end of file diff --git a/reference/array/merge/index.html b/reference/array/merge/index.html new file mode 100644 index 00000000..15925e75 --- /dev/null +++ b/reference/array/merge/index.html @@ -0,0 +1,94 @@ + merge | Radashi + + Skip to content

    merge

    Combine two lists overriding items in the first

    185 bytes +

    Usage

    +

    Given two arrays of items and an identity function, returns the first +list with all items from the second list where there was a match.

    +
    import * as _ from 'radashi'
    +
    const gods = [
    {
    name: 'Zeus',
    power: 92,
    },
    {
    name: 'Ra',
    power: 97,
    },
    ]
    +
    const newGods = [
    {
    name: 'Zeus',
    power: 100,
    },
    ]
    +
    _.merge(gods, newGods, f => f.name) // => [{name: "Zeus" power: 100}, {name: "Ra", power: 97}]
    \ No newline at end of file diff --git a/reference/array/objectify/index.html b/reference/array/objectify/index.html new file mode 100644 index 00000000..d6a95fc3 --- /dev/null +++ b/reference/array/objectify/index.html @@ -0,0 +1,94 @@ + objectify | Radashi + + Skip to content

    objectify

    Convert a list to a dictionary object

    91 bytes +

    Usage

    +

    Given an array of items, create a dictionary with keys and values mapped by given functions. +First argument is the array to map. The second argument is the function to determine the key +for each item. The third argument is optional and determines the value for each item.

    +
    import * as _ from 'radashi'
    +
    const fish = [
    {
    name: 'Marlin',
    weight: 105,
    },
    {
    name: 'Bass',
    weight: 8,
    },
    {
    name: 'Trout',
    weight: 13,
    },
    ]
    +
    _.objectify(fish, f => f.name) // => { Marlin: [marlin object], Bass: [bass object], ... }
    _.objectify(
    fish,
    f => f.name,
    f => f.weight,
    ) // => { Marlin: 105, Bass: 8, Trout: 13 }
    \ No newline at end of file diff --git a/reference/array/replace/index.html b/reference/array/replace/index.html new file mode 100644 index 00000000..5ee92465 --- /dev/null +++ b/reference/array/replace/index.html @@ -0,0 +1,93 @@ + replace | Radashi + + Skip to content

    replace

    Replace an item in an array

    161 bytes +

    Usage

    +

    Given an array of items, replace the one that matches the given condition function. Only replaces the first match. Always returns a copy of the original array.

    +
    import * as _ from 'radashi'
    +
    const fish = [
    {
    name: 'Marlin',
    weight: 105,
    },
    {
    name: 'Bass',
    weight: 8,
    },
    {
    name: 'Trout',
    weight: 13,
    },
    ]
    +
    const salmon = {
    name: 'Salmon',
    weight: 22,
    }
    +
    // read: replace fish with salmon where the name is Bass
    _.replace(fish, salmon, f => f.name === 'Bass') // => [marlin, salmon, trout]
    \ No newline at end of file diff --git a/reference/array/replaceOrAppend/index.html b/reference/array/replaceOrAppend/index.html new file mode 100644 index 00000000..eec71308 --- /dev/null +++ b/reference/array/replaceOrAppend/index.html @@ -0,0 +1,94 @@ + replaceOrAppend | Radashi + + Skip to content

    replaceOrAppend

    Replace item in array or append if no match

    193 bytes +

    Usage

    +

    Given an array of items, an item and an identity function, returns a new array with the item either replaced at the index of the existing item — if it exists, else it is appended at the end.

    +
    import * as _ from 'radashi'
    +
    const fish = [
    {
    name: 'Marlin',
    weight: 105,
    },
    {
    name: 'Salmon',
    weight: 19,
    },
    {
    name: 'Trout',
    weight: 13,
    },
    ]
    +
    const salmon = {
    name: 'Salmon',
    weight: 22,
    }
    +
    const sockeye = {
    name: 'Sockeye',
    weight: 8,
    }
    +
    _.replaceOrAppend(fish, salmon, f => f.name === 'Salmon') // => [marlin, salmon (weight:22), trout]
    _.replaceOrAppend(fish, sockeye, f => f.name === 'Sockeye') // => [marlin, salmon, trout, sockeye]
    \ No newline at end of file diff --git a/reference/array/select/index.html b/reference/array/select/index.html new file mode 100644 index 00000000..5fc31b4a --- /dev/null +++ b/reference/array/select/index.html @@ -0,0 +1,93 @@ + select | Radashi + + Skip to content

    select

    Filter and map an array

    146 bytes +

    Usage

    +

    Applies a filter and a map operation at once and in one pass. +If the filter is omitted, returns all non-nullish mapped values.

    +
    import * as _ from 'radashi'
    +
    const fish = [
    {
    name: 'Marlin',
    weight: 105,
    source: 'ocean',
    },
    {
    name: 'Bass',
    weight: 8,
    source: 'lake',
    },
    {
    name: 'Trout',
    weight: 13,
    source: 'lake',
    },
    ]
    +
    _.select(
    fish,
    f => f.weight,
    f => f.source === 'lake',
    ) // => [8, 13]
    \ No newline at end of file diff --git a/reference/array/selectFirst/index.html b/reference/array/selectFirst/index.html new file mode 100644 index 00000000..cfd9f135 --- /dev/null +++ b/reference/array/selectFirst/index.html @@ -0,0 +1,101 @@ + selectFirst | Radashi + + Skip to content

    selectFirst

    Find and map the first array element meeting a condition

    143 bytes +

    Usage

    +

    The selectFirst function combines the functionality of find and map operations on an array. It iterates through the array, applying a mapper function to each element, and returns the first mapped value that satisfies a given condition. If no condition is provided, it returns the first non-nullish mapped value.

    +

    This function is particularly useful when you need to find and transform an element in a single operation, potentially saving time and improving code readability.

    +

    Key features:

    +
      +
    • Short-circuits on the first element that satisfies the condition
    • +
    • Allows for separate mapping and condition functions
    • +
    • Returns undefined if no element satisfies the condition or if the array is empty/nullish
    • +
    +
    import * as _ from 'radashi'
    +
    // Find the first even number and double it
    _.selectFirst(
    [1, 3, 4, 6, 8],
    x => x * 2,
    x => x % 2 === 0,
    )
    // => 8
    +
    // Find the first non-empty string and convert to uppercase
    _.selectFirst(
    ['', null, 'hello', 'world'],
    s => s?.toUpperCase(),
    s => s !== null && s !== '',
    )
    // => 'HELLO'
    +
    // Find the first object with a specific property and extract a value
    const users = [
    { id: 1, name: 'Alice', age: 30 },
    { id: 2, name: 'Bob', age: 25 },
    { id: 3, name: 'Charlie', age: 35 },
    ]
    _.selectFirst(
    users,
    user => user.name,
    user => user.age > 30,
    )
    // => 'Charlie'
    +
    // Using default condition (non-nullish)
    _.selectFirst([null, undefined, 0, '', false, 'found'], x => x)
    // => 0
    \ No newline at end of file diff --git a/reference/array/shift/index.html b/reference/array/shift/index.html new file mode 100644 index 00000000..b0d650d2 --- /dev/null +++ b/reference/array/shift/index.html @@ -0,0 +1,90 @@ + shift | Radashi + + Skip to content

    shift

    Shift array items by n steps

    145 bytes +

    Usage

    +

    Given a list of items, return an array that shift right n positions.

    +
    import * as _ from 'radashi'
    const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    _.shift(arr, 3) // => [7, 8, 9, 1, 2, 3, 4, 5, 6]
    \ No newline at end of file diff --git a/reference/array/sift/index.html b/reference/array/sift/index.html new file mode 100644 index 00000000..1ee0991f --- /dev/null +++ b/reference/array/sift/index.html @@ -0,0 +1,92 @@ + sift | Radashi + + Skip to content

    sift

    Remove all falsy items from list

    62 bytes +

    Usage

    +

    Given a list of items, return a new list with all items that are not falsy.

    +
    import * as _ from 'radashi'
    +
    const fish = ['salmon', null, false, NaN, 'sockeye', 'bass']
    +
    _.sift(fish) // => ['salmon', 'sockeye', 'bass']
    \ No newline at end of file diff --git a/reference/array/sort/index.html b/reference/array/sort/index.html new file mode 100644 index 00000000..fc3dc27b --- /dev/null +++ b/reference/array/sort/index.html @@ -0,0 +1,93 @@ + sort | Radashi + + Skip to content

    sort

    Sort a list of objects by a numerical property

    131 bytes +

    Usage

    +

    Given an array of objects, return a new array sorted by the numerical property specified in the get function. A third, and optional, argument allows you to sort in descending order instead of the default ascending order.

    +

    This function only supports numerical sorting. For alphabetic sorting, see the alphabetical function.

    +
    import * as _ from 'radashi'
    +
    const fish = [
    {
    name: 'Marlin',
    weight: 105,
    },
    {
    name: 'Bass',
    weight: 8,
    },
    {
    name: 'Trout',
    weight: 13,
    },
    ]
    +
    _.sort(fish, f => f.weight) // => [bass, trout, marlin]
    _.sort(fish, f => f.weight, true) // => [marlin, trout, bass]
    \ No newline at end of file diff --git a/reference/array/toggle/index.html b/reference/array/toggle/index.html new file mode 100644 index 00000000..d0c86c02 --- /dev/null +++ b/reference/array/toggle/index.html @@ -0,0 +1,103 @@ + toggle | Radashi + + Skip to content

    toggle

    Toggles an items existance in an array

    232 bytes +

    Usage

    +

    If the item matching the condition already exists in the list it will be removed. If it does not it will be added.

    +
    import * as _ from 'radashi'
    +
    const gods = ['ra', 'zeus', 'loki']
    +
    _.toggle(gods, 'ra') // => ['zeus', 'loki']
    _.toggle(gods, 'vishnu') // => ['ra', 'zeus', 'loki', 'vishnu']
    +

    toggle(list, item, identity)

    +

    You can pass an optional toKey function to determine the identity of non-primitive values. Helpful when working with more complex data types.

    +
    import * as _ from 'radashi'
    +
    const ra = { name: 'Ra' }
    const zeus = { name: 'Zeus' }
    const loki = { name: 'Loki' }
    const vishnu = { name: 'Vishnu' }
    +
    const gods = [ra, zeus, loki]
    +
    _.toggle(gods, ra, g => g.name) // => [zeus, loki]
    _.toggle(gods, vishnu, g => g.name) // => [ra, zeus, loki, vishnu]
    +

    toggle(list, item, identity, options)

    +

    By default, toggle will append the item if it does not exist. If you need to prepend the item instead you can override the strategy in the options argument.

    +
    import * as _ from 'radashi'
    +
    const gods = ['ra', 'zeus', 'loki']
    +
    _.toggle(gods, 'vishnu', g => g, { strategy: 'prepend' }) // => ['vishnu', 'ra', 'zeus', 'loki']
    \ No newline at end of file diff --git a/reference/array/unique/index.html b/reference/array/unique/index.html new file mode 100644 index 00000000..314bd69c --- /dev/null +++ b/reference/array/unique/index.html @@ -0,0 +1,93 @@ + unique | Radashi + + Skip to content

    unique

    Remove duplicates from an array

    159 bytes +

    Usage

    +

    Given an array of items — and optionally, a function to determine their identity — return a new array without any duplicates.

    +

    The function does not preserve the original order of items.

    +
    import * as _ from 'radashi'
    +
    const fish = [
    {
    name: 'Marlin',
    weight: 105,
    source: 'ocean',
    },
    {
    name: 'Salmon',
    weight: 22,
    source: 'river',
    },
    {
    name: 'Salmon',
    weight: 22,
    source: 'river',
    },
    ]
    +
    _.unique(fish, f => f.name)
    // [
    // { name: 'Marlin', weight: 105, source: 'ocean' },
    // { name: 'Salmon', weight: 22, source: 'river' }
    // ]
    \ No newline at end of file diff --git a/reference/array/unzip/index.html b/reference/array/unzip/index.html new file mode 100644 index 00000000..d44f76d4 --- /dev/null +++ b/reference/array/unzip/index.html @@ -0,0 +1,91 @@ + unzip | Radashi + + Skip to content

    unzip

    Group array elements by their index position across the input arrays

    181 bytes +

    Usage

    +

    Creates an array of ungrouped elements, where each resulting array contains all elements at a specific index from the input arrays. The first array contains all first elements, the second array contains all second elements, and so on.

    +
    import * as _ from 'radashi'
    +
    _.unzip([
    ['a', 1, true],
    ['b', 2, false],
    ])
    // => [
    // ['a', 'b'],
    // [1, 2],
    // [true, false],
    // ]
    \ No newline at end of file diff --git a/reference/array/zip/index.html b/reference/array/zip/index.html new file mode 100644 index 00000000..4a10ae26 --- /dev/null +++ b/reference/array/zip/index.html @@ -0,0 +1,92 @@ + zip | Radashi + + Skip to content

    zip

    Combine multiple arrays in sets

    208 bytes +

    Usage

    +

    Creates an array of grouped elements, the first of which contains the first elements of the given arrays, the second of which contains the second elements of the given arrays, and so on.

    +
    import * as _ from 'radashi'
    +
    const names = ['ra', 'zeus', 'loki']
    const cultures = ['egypt', 'greek', 'norse']
    +
    _.zip(names, cultures)
    // => [
    // [ra, egypt]
    // [zeus, greek]
    // [loki, norse]
    // ]
    \ No newline at end of file diff --git a/reference/array/zipToObject/index.html b/reference/array/zipToObject/index.html new file mode 100644 index 00000000..c7e34e95 --- /dev/null +++ b/reference/array/zipToObject/index.html @@ -0,0 +1,94 @@ + zipToObject | Radashi + + Skip to content

    zipToObject

    Combine multiple arrays in sets

    214 bytes +

    Usage

    +

    Creates an object mapping the keys in the first array to their corresponding values in the second array.

    +
    import * as _ from 'radashi'
    +
    const names = ['ra', 'zeus', 'loki']
    const cultures = ['egypt', 'greek', 'norse']
    +
    _.zipToObject(names, cultures)
    // => { ra: egypt, zeus: greek, loki: norse }
    +
    _.zipToObject(names, (k, i) => k + i)
    // => { ra: ra0, zeus: zeus1, loki: loki2 }
    +
    _.zipToObject(names, null)
    // => { ra: null, zeus: null, loki: null }
    \ No newline at end of file diff --git a/reference/async/all/index.html b/reference/async/all/index.html new file mode 100644 index 00000000..8bb300e7 --- /dev/null +++ b/reference/async/all/index.html @@ -0,0 +1,98 @@ + all | Radashi + + Skip to content

    all

    Await many promises

    632 bytes +

    The all function is similar to the builtin Promise.all or Promise.allSettled +functions. Given a list (or object) of promises, if any errors are thrown, all +errors are gathered and thrown in an AggregateError.

    +

    Using an Array

    +

    Passing an array as an argument will return the resolved promise values as an array in the same order.

    +
    import * as _ from 'radashi'
    +
    const [user] = await _.all([
    api.users.create(...),
    s3.buckets.create(...),
    slack.customerSuccessChannel.sendMessage(...)
    ])
    +

    Using an Object

    +

    Passing an object as an argument will return an object with the same keys and the values as the resolved promise values.

    +
    import * as _ from 'radashi'
    +
    const { user } = await _.all({
    user: api.users.create(...),
    bucket: s3.buckets.create(...),
    message: slack.customerSuccessChannel.sendMessage(...)
    })
    \ No newline at end of file diff --git a/reference/async/defer/index.html b/reference/async/defer/index.html new file mode 100644 index 00000000..ef26a737 --- /dev/null +++ b/reference/async/defer/index.html @@ -0,0 +1,105 @@ + defer | Radashi + + Skip to content

    defer

    Run an async function with deferred functions

    422 bytes +

    Usage

    +

    The _.defer functions lets you run an async function, registering functions as you go +that should be deferred until the async function completes, and then executed. This is +really useful in scripts where failure up to or after a specific point will require some +cleanup. It’s a bit like a finally block.

    +

    A hat tip to Swift’s defer for the inspiration.

    +

    The function passed to _.defer is called with a single register function argument that +can be used to register the work you want to be called when the function completes. If your function throws an error and then a registered cleanup function throws +and error it is ignored by default. The register +function supports an optional second options argument that lets you configure a rethrow +strategy so that error in the cleanup function is rethrown.

    +
    import * as _ from 'radashi'
    +
    await _.defer(async cleanup => {
    const buildDir = await createBuildDir()
    +
    cleanup(() => fs.unlink(buildDir))
    +
    await build()
    })
    +
    await _.defer(async register => {
    const org = await api.org.create()
    register(async () => api.org.delete(org.id), { rethrow: true })
    +
    const user = await api.user.create()
    register(async () => api.users.delete(user.id), { rethrow: true })
    +
    await executeTest(org, user)
    })
    \ No newline at end of file diff --git a/reference/async/guard/index.html b/reference/async/guard/index.html new file mode 100644 index 00000000..08ae126f --- /dev/null +++ b/reference/async/guard/index.html @@ -0,0 +1,92 @@ + guard | Radashi + + Skip to content

    guard

    Have a function return undefined if it errors out

    144 bytes +

    Usage

    +

    This lets you set a default value if an async function errors out.

    +
    const users = (await guard(fetchUsers)) ?? []
    +

    You can choose to guard only specific errors too

    +
    const isInvalidUserError = (err: any) => err.code === 'INVALID_ID'
    const user = (await guard(fetchUser, isInvalidUserError)) ?? DEFAULT_USER
    \ No newline at end of file diff --git a/reference/async/map/index.html b/reference/async/map/index.html new file mode 100644 index 00000000..3776cff5 --- /dev/null +++ b/reference/async/map/index.html @@ -0,0 +1,92 @@ + map | Radashi + + Skip to content

    map

    Map an array with an async function

    124 bytes +

    Usage

    +

    A map that handles callback functions that return a promise.

    +
    import * as _ from 'radashi'
    +
    const userIds = [1, 2, 3, 4]
    +
    const users = await _.map(userIds, async userId => {
    return await api.users.find(userId)
    })
    \ No newline at end of file diff --git a/reference/async/parallel/index.html b/reference/async/parallel/index.html new file mode 100644 index 00000000..7ea11b39 --- /dev/null +++ b/reference/async/parallel/index.html @@ -0,0 +1,102 @@ + parallel | Radashi + + Skip to content

    parallel

    Run many async function in parallel

    1232 bytes +

    Usage

    +

    Like _.map but built specifically to run the async callback functions +in parallel. The first argument is a limit of how many functions should +be allowed to run at once. Returns an array of results.

    +
    import * as _ from 'radashi'
    +
    const userIds = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    +
    // Will run the find user async function 3 at a time
    // starting another request when one of the 3 is freed
    const users = await _.parallel(3, userIds, async userId => {
    return await api.users.find(userId)
    })
    +

    Errors

    +

    When all work is complete parallel will check for errors. If any +occurred they will all be thrown in a single AggregateError that +has an errors property that is all the errors that were thrown.

    +
    import * as _ from 'radashi'
    +
    const userIds = [1, 2, 3]
    +
    const [err, users] = await _.tryit(_.parallel)(3, userIds, async userId => {
    throw new Error(`No, I don\'t want to find user ${userId}`)
    })
    +
    console.log(err) // => AggregateError
    console.log(err.errors) // => [Error, Error, Error]
    console.log(err.errors[1].message) // => No, I don't want to find user 2
    \ No newline at end of file diff --git a/reference/async/reduce/index.html b/reference/async/reduce/index.html new file mode 100644 index 00000000..1acf7e1d --- /dev/null +++ b/reference/async/reduce/index.html @@ -0,0 +1,92 @@ + reduce | Radashi + + Skip to content

    reduce

    Reduce an array with an async function

    230 bytes +

    Usage

    +

    A reduce that handles callback functions that return a promise.

    +
    import * as _ from 'radashi'
    +
    const userIds = [1, 2, 3, 4]
    +
    const users = await _.reduce(
    userIds,
    async (acc, userId) => {
    const user = await api.users.find(userId)
    return {
    ...acc,
    [userId]: user,
    }
    },
    {},
    )
    \ No newline at end of file diff --git a/reference/async/retry/index.html b/reference/async/retry/index.html new file mode 100644 index 00000000..b7f80132 --- /dev/null +++ b/reference/async/retry/index.html @@ -0,0 +1,94 @@ + retry | Radashi + + Skip to content

    retry

    Run an async function retrying if it fails

    510 bytes +

    Usage

    +

    The _.retry function allows you to run an async function and automagically retry it if it fails. Given the async func to run, an optional max number of retries (r), and an optional milliseconds to delay between retries (d), the given async function will be called, retrying r many times, and waiting d milliseconds between retries.

    +

    The times option defaults to 3. The delay option (defaults to null) can specify milliseconds to sleep between attempts.

    +

    The backoff option is like delay but uses a function to sleep — makes for easy exponential backoff.

    +
    import * as _ from 'radashi'
    +
    await _.retry({}, api.users.list)
    await _.retry({ times: 10 }, api.users.list)
    await _.retry({ times: 2, delay: 1000 }, api.users.list)
    +
    // exponential backoff
    await _.retry({ backoff: i => 10 ** i }, api.users.list)
    \ No newline at end of file diff --git a/reference/async/sleep/index.html b/reference/async/sleep/index.html new file mode 100644 index 00000000..0d977ffc --- /dev/null +++ b/reference/async/sleep/index.html @@ -0,0 +1,91 @@ + sleep | Radashi + + Skip to content

    sleep

    Asynchronously wait for time to pass

    73 bytes +

    Usage

    +

    The _.sleep function allows you to delay in milliseconds.

    +
    import * as _ from 'radashi'
    +
    await _.sleep(2000) // => waits 2 seconds
    \ No newline at end of file diff --git a/reference/async/tryit/index.html b/reference/async/tryit/index.html new file mode 100644 index 00000000..42096988 --- /dev/null +++ b/reference/async/tryit/index.html @@ -0,0 +1,97 @@ + tryit | Radashi + + Skip to content

    tryit

    Convert a function to an error-first function

    247 bytes +

    Usage

    +

    Error-first callbacks were cool. Using mutable variables to hoist state when doing try/catch was not cool.

    +

    The tryit function let’s you wrap a function to convert it to an error-first function. Works for both async and sync functions.

    +
    import * as _ from 'radashi'
    +
    const [err, user] = await _.tryit(api.users.find)(userId)
    +

    Currying

    +

    You can curry tryit if you like.

    +
    import * as _ from 'radashi'
    +
    const findUser = _.tryit(api.users.find)
    +
    const [err, user] = await findUser(userId)
    \ No newline at end of file diff --git a/reference/curry/chain/index.html b/reference/curry/chain/index.html new file mode 100644 index 00000000..2c2fe316 --- /dev/null +++ b/reference/curry/chain/index.html @@ -0,0 +1,100 @@ + chain | Radashi + + Skip to content

    chain

    Create a chain of function to run in order

    93 bytes +

    Usage

    +

    Chaining functions will cause them to execute one after another, passing the output from each function as the input to the next, returning the final output at the end of the chain.

    +
    import * as _ from 'radashi'
    +
    const add = (y: number) => (x: number) => x + y
    const mult = (y: number) => (x: number) => x * y
    const addFive = add(5)
    const double = mult(2)
    +
    const chained = _.chain(addFive, double)
    +
    chained(0) // => 10
    chained(7) // => 24
    +

    Example

    +
    import * as _ from 'radashi'
    +
    type Deity = {
    name: string
    rank: number
    }
    +
    const gods: Deity[] = [
    { rank: 8, name: 'Ra' },
    { rank: 7, name: 'Zeus' },
    { rank: 9, name: 'Loki' },
    ]
    +
    const getName = (god: Deity) => item.name
    const upperCase = (text: string) => text.toUpperCase() as Uppercase<string>
    +
    const getUpperName = _.chain(getName, upperCase)
    +
    getUpperName(gods[0]) // => 'RA'
    gods.map(getUpperName) // => ['RA', 'ZEUS', 'LOKI']
    \ No newline at end of file diff --git a/reference/curry/compose/index.html b/reference/curry/compose/index.html new file mode 100644 index 00000000..9b002e21 --- /dev/null +++ b/reference/curry/compose/index.html @@ -0,0 +1,96 @@ + compose | Radashi + + Skip to content

    compose

    Create a composition of functions

    78 bytes +

    Usage

    +

    In a composition of functions, each function is given the next function as an argument and must call it to continue executing.

    +
    import * as _ from 'radashi'
    +
    const useZero = (fn: any) => () => fn(0)
    const objectize = (fn: any) => (num: any) => fn({ num })
    const increment =
    (fn: any) =>
    ({ num }: any) =>
    fn({ num: num + 1 })
    const returnArg = (arg: any) => (args: any) => args[arg]
    +
    const composed = _.compose(
    useZero,
    objectize,
    increment,
    increment,
    returnArg('num'),
    )
    +
    composed() // => 2
    +

    This can be a little jarring if you haven’t seen it before. Here’s a broken down composition. It’s equivelent to the code above.

    +
    const decomposed = useZero(objectize(increment(increment(_.returnArg('num')))))
    +
    decomposed() // => 2
    \ No newline at end of file diff --git a/reference/curry/debounce/index.html b/reference/curry/debounce/index.html new file mode 100644 index 00000000..3829b4d3 --- /dev/null +++ b/reference/curry/debounce/index.html @@ -0,0 +1,115 @@ + debounce | Radashi + + Skip to content

    debounce

    Create a debounced callback function

    220 bytes +

    Usage

    +

    Debounce accepts an options object with a delay and a source function to call +when invoked. When the returned function is invoked it will only call the source +function after the delay milliseconds of time has passed. Calls that don’t result +in invoking the source reset the delay, pushing off the next invocation.

    +
    import * as _ from 'radashi'
    +
    const makeSearchRequest = event => {
    api.movies.search(event.target.value)
    }
    +
    input.addEventListener('change', _.debounce({ delay: 100 }, makeSearchRequest))
    +

    Timing

    +

    A visual of the debounce behavior when delay is 100. The debounce function +returned by debounce can be called every millisecond but it will only call +the given callback after delay milliseconds have passed.

    +
    Terminal window
    Time: 0ms - - - - 100ms - - - - 200ms - - - - 300ms - - - - 400ms - - - -
    debounce Invocations: x x x x - - - - - - - - x x x x x x x x x x - - - - - - - - - - - -
    Source Invocations: - - - - - - - - - - x - - - - - - - - - - - - - - - - - x - - - - -
    +

    Cancel

    +

    The function returned by debounce has a cancel method that when called will permanently stop the source function from being debounced.

    +
    const debounced = _.debounce({ delay: 100 }, api.feed.refresh)
    +
    // ... sometime later
    +
    debounced.cancel()
    +

    Flush

    +

    The function returned by debounce has a flush method that when called will directly invoke the source function.

    +
    const debounced = _.debounce({ delay: 100 }, api.feed.refresh)
    +
    // ... sometime later
    +
    debounced.flush(event)
    +

    isPending

    +

    The function returned by debounce has a isPending method that when called will return if there is any pending invocation the source function.

    +
    const debounced = _.debounce({ delay: 100 }, api.feed.refresh)
    +
    // ... sometime later
    +
    debounced.isPending()
    \ No newline at end of file diff --git a/reference/curry/flip/index.html b/reference/curry/flip/index.html new file mode 100644 index 00000000..a42f99bf --- /dev/null +++ b/reference/curry/flip/index.html @@ -0,0 +1,93 @@ + flip | Radashi + + Skip to content

    flip

    Swap the only two arguments of a function

    63 bytes +

    Usage

    +

    Return a new function that swaps the only two arguments of the original function. This is most useful for reversing the order of a “comparator” (i.e. a function used for sorting).

    +
    import * as _ from 'radashi'
    +
    const subtract = (a: number, b: number) => a - b
    +
    subtract(1, 2) // => -1
    _.flip(subtract)(1, 2) // => 1
    +

    Note that functions with more than two arguments are not supported.

    \ No newline at end of file diff --git a/reference/curry/memo/index.html b/reference/curry/memo/index.html new file mode 100644 index 00000000..e9bf69ad --- /dev/null +++ b/reference/curry/memo/index.html @@ -0,0 +1,106 @@ + memo | Radashi + + Skip to content

    memo

    Memoize a function

    307 bytes +

    Usage

    +

    Wrap a function with memo to get a function back that automagically returns values that have already been calculated.

    +
    import * as _ from 'radashi'
    +
    const timestamp = _.memo(() => Date.now())
    +
    const now = timestamp()
    const later = timestamp()
    +
    now === later // => true
    +

    Expiration

    +

    You can optionally pass a ttl (time to live) that will expire memoized results. In versions prior to version 10, ttl had a value of 300 milliseconds if not specified.

    +
    import * as _ from 'radashi'
    +
    const timestamp = _.memo(() => Date.now(), {
    ttl: 1000, // milliseconds
    })
    +
    const now = timestamp()
    const later = timestamp()
    +
    await _.sleep(2000)
    +
    const muchLater = timestamp()
    +
    now === later // => true
    now === muchLater // => false
    +

    Key Function

    +

    You can optionally customize how values are stored when memoized.

    +
    const timestamp = _.memo(
    ({ group }: { group: string }) => {
    const ts = Date.now()
    return `${ts}::${group}`
    },
    {
    key: ({ group }: { group: string }) => group,
    },
    )
    +
    const now = timestamp({ group: 'alpha' })
    const later = timestamp({ group: 'alpha' })
    const beta = timestamp({ group: 'beta' })
    +
    now === later // => true
    beta === now // => false
    \ No newline at end of file diff --git a/reference/curry/once/index.html b/reference/curry/once/index.html new file mode 100644 index 00000000..991f2853 --- /dev/null +++ b/reference/curry/once/index.html @@ -0,0 +1,96 @@ + once | Radashi + + Skip to content

    once

    Create a function that runs at most once

    169 bytes +

    Usage

    +

    Create a wrapper around a given function such that it executes at most once. Subsequent calls to the wrapped function return the result from the first execution, regardless of the arguments provided. This behavior is akin to memoization but specifically designed for single-use functions. The result of the first call is stored internally, allowing for efficient retrieval without recomputation.

    +
    import * as _ from 'radashi'
    +
    const fn = once(() => Math.random())
    fn() // 0.5
    fn() // 0.5
    +

    Resetting the function

    +

    The once.reset function clears the stored result of a function that was previously wrapped with once. This allows the function to be executed again as if it were never called before, enabling dynamic reuse of the function with fresh computations.

    +
    import * as _ from 'radashi'
    +
    const fn = once(() => Math.random())
    fn() // 0.5
    fn() // 0.5
    +
    once.reset(fn)
    fn() // 0.3
    fn() // 0.3
    \ No newline at end of file diff --git a/reference/curry/partial/index.html b/reference/curry/partial/index.html new file mode 100644 index 00000000..e12e6f6a --- /dev/null +++ b/reference/curry/partial/index.html @@ -0,0 +1,93 @@ + partial | Radashi + + Skip to content

    partial

    Create a partial a function

    68 bytes +

    Usage

    +

    Create a partial function by providing some — or all — of the arguments the given function needs.

    +
    import * as _ from 'radashi'
    +
    const add = (a: number, b: number) => a + b
    +
    const addFive = _.partial(add, 5)
    +
    addFive(2) // => 7
    \ No newline at end of file diff --git a/reference/curry/partob/index.html b/reference/curry/partob/index.html new file mode 100644 index 00000000..8fd4ce78 --- /dev/null +++ b/reference/curry/partob/index.html @@ -0,0 +1,93 @@ + partob | Radashi + + Skip to content

    partob

    Create a partob a function

    62 bytes +

    Usage

    +

    Modern javascript destructuring means a lot of developers, libraries, and frameworks are all opting for unary functions that take a single object that contains the arguments. The _.partob function let’s you partob these unary functions.

    +
    import * as _ from 'radashi'
    +
    const add = (props: { a: number; b: number }) => props.a + props.b
    +
    const addFive = _.partob(add, { a: 5 })
    +
    addFive({ b: 2 }) // => 7
    \ No newline at end of file diff --git a/reference/curry/proxied/index.html b/reference/curry/proxied/index.html new file mode 100644 index 00000000..0c922aae --- /dev/null +++ b/reference/curry/proxied/index.html @@ -0,0 +1,93 @@ + proxied | Radashi + + Skip to content

    proxied

    Create a dynamic proxied a object

    75 bytes +

    Usage

    +

    Javascript’s Proxy object is powerful but a bit awkward to use. The _.proxied function creates the Proxy for you and handles calling back to your handler when functions on the Proxy are called or properties are accessed.

    +
    import * as _ from 'radashi'
    +
    type Property = 'name' | 'size' | 'getLocation'
    +
    const person = _.proxied((prop: Property) => {
    switch (prop) {
    case 'name':
    return 'Joe'
    case 'size':
    return 20
    case 'getLocation'
    return () => 'here'
    }
    })
    +
    person.name // => Joe
    person.size // => 20
    person.getLocation() // => here
    \ No newline at end of file diff --git a/reference/curry/throttle/index.html b/reference/curry/throttle/index.html new file mode 100644 index 00000000..b4ab9932 --- /dev/null +++ b/reference/curry/throttle/index.html @@ -0,0 +1,114 @@ + throttle | Radashi + + Skip to content

    throttle

    Creates a throttled function that limits invocations to a specified interval

    260 bytes +

    Usage

    +

    The throttle function creates a new function that, when called, will only execute the original function at most once per specified time interval. This is useful for limiting the rate at which a function can fire, especially for performance-intensive operations like handling scroll or resize events.

    +

    The function accepts two parameters:

    +
      +
    1. An options object with: +
        +
      • interval: The minimum time (in milliseconds) between function invocations
      • +
      • trailing (optional): If true, also calls the function after the throttle period if it was invoked during the throttle
      • +
      +
    2. +
    3. The function to be throttled
    4. +
    +

    The returned throttled function also includes these methods:

    +
      +
    • isThrottled(): boolean: To check if there’s currently an active throttle
    • +
    • trigger(...args): void: To invoke the wrapped function without waiting for the next interval
    • +
    +
    import { throttle } from 'radashi'
    +
    // Throttle a scroll event handler
    const handleScroll = () => {
    console.log('Scroll position:', window.scrollY)
    }
    const throttledScroll = throttle({ interval: 200 }, handleScroll)
    window.addEventListener('scroll', throttledScroll)
    +
    // Throttle an API call
    const throttledFetch = throttle(
    { interval: 5000, trailing: true },
    async () => {
    const response = await fetch('https://api.example.com/data')
    const data = await response.json()
    console.log(data)
    },
    )
    +
    // Check if throttled
    console.log('Is throttled:', throttledFetch.isThrottled())
    +

    Timing

    +

    A visual representation of the throttle behavior when interval is set to 200ms:

    +
    Time: 0ms - - - - 100ms - - - - 200ms - - - - 300ms - - - - 400ms - - - -
    Throttle Invocations: x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x - - -
    Source Invocations: x - - - - - - - - - - - - x - - - - - - - - - - - - - x - - - - - -
    +

    When the trailing option is set to true, an additional invocation occurs after the throttle period if any calls were made during the throttled time:

    +
    Time: 0ms - - - - 100ms - - - - 200ms - - - - 300ms - - - - 400ms - - - -
    Throttle Invocations: x x x x x x x x x x x x x x x x x x x x x - - - - - - - - - - - - -
    Source Invocations: x - - - - - - - - - - - - x - - - - - - - - - - - - - x - - - - - -
    +

    In this diagram, ‘x’ represents function invocations, and ’-’ represents time passing.

    \ No newline at end of file diff --git a/reference/function/always/index.html b/reference/function/always/index.html new file mode 100644 index 00000000..a89f0dc5 --- /dev/null +++ b/reference/function/always/index.html @@ -0,0 +1,96 @@ + always | Radashi + + Skip to content

    always

    Create a function that always returns the same value

    47 bytes +

    Usage

    +

    Creates a function that always returns the same value, regardless of any arguments passed to it.

    +
    import * as _ from 'radashi'
    +
    const alwaysTrue = _.always(true)
    +
    alwaysTrue() // true
    alwaysTrue(1, 2, 3) // true
    +

    Use cases

    +

    You can avoid using always if the value is a primitive (use () => true instead), but it can be useful if you need a function that always returns the same object reference, or if you want to memoize a calculation across multiple calls.

    +
    // Not memoized
    () => someCalculation()
    // Memoized
    _.always(someCalculation())
    +
    // Not same object
    () => ({ a: 1, b: 2 })
    // Same object
    _.always({ a: 1, b: 2 })
    \ No newline at end of file diff --git a/reference/function/castComparator/index.html b/reference/function/castComparator/index.html new file mode 100644 index 00000000..a3488ba9 --- /dev/null +++ b/reference/function/castComparator/index.html @@ -0,0 +1,104 @@ + castComparator | Radashi + + Skip to content

    castComparator

    Cast a value into a comparator function

    230 bytes +

    Usage

    +

    Create a comparator function which can be passed into Array.prototype.sort. It accepts either a property name or a mapping function. Optionally, you can pass a custom compare function (e.g. for localeCompare use cases).

    +

    The first argument of castComparator is called the mapping. This can be either:

    +
      +
    • Function: If mapping is a function, it maps the input values to a comparable value.
    • +
    • Property Name: If mapping is a property name, it maps the input values to a property of the input values with a comparable value.
    • +
    +
    import * as _ from 'radash'
    +
    const users = [
    { id: 1, firstName: 'Alice', lastName: 'Smith' },
    { id: 3, firstName: 'Charlie', lastName: 'Brown' },
    { id: 2, firstName: 'Drew', lastName: 'Johnson' },
    ]
    +
    const compareById = _.castComparator('id')
    users.sort(compareById)
    // [Alice, Drew, Charlie]
    +
    const compareByFullName = _.castComparator(
    user => `${user.firstName} ${user.lastName}`,
    (a, b) => b.localeCompare(a),
    )
    users.sort(compareByFullName)
    // [Alice, Charlie, Drew]
    +

    Compare Function

    +

    Optionally, you can pass a custom compare function that receives the mapped values and returns a number. If not provided, values are compared with the < and > built-in operators.

    +

    A positive number means the “right value” is greater than the “left value”, a negative number means the “left value” is greater than the “right value”, and 0 means both values are equal.

    +
    const users = [
    { id: 1, firstName: 'Alice', lastName: 'Smith' },
    { id: 3, firstName: 'Charlie', lastName: 'Brown' },
    { id: 2, firstName: 'Drew', lastName: 'Johnson' },
    ]
    +
    const compareByFullName = _.castComparator(
    user => `${user.firstName} ${user.lastName}`,
    (a, b) => b.localeCompare(a),
    )
    +
    users.sort(compareByFullName)
    // [Alice, Charlie, Drew]
    \ No newline at end of file diff --git a/reference/function/castMapping/index.html b/reference/function/castMapping/index.html new file mode 100644 index 00000000..d0251154 --- /dev/null +++ b/reference/function/castMapping/index.html @@ -0,0 +1,132 @@ + castMapping | Radashi + + Skip to content

    castMapping

    Cast a value into a mapping function

    117 bytes +

    Usage

    +

    Improve your own utility function by adding a flexible value-mapping option, using castMapping to retrieve a mapping function.

    +

    The following types can be casted into a mapping function:

    +
      +
    1. Function: If the input is a function, it returns the function as is.
    2. +
    3. Property Name: If the input is a property name, it returns a function that retrieves the value of that property from an object.
    4. +
    5. Nullish: If the input is nullish (null or undefined), it returns a function that simply returns the input object itself.
    6. +
    +
    import * as _ from 'radashi'
    +
    // Using a property name
    const getName = _.castMapping('name')
    getName({ name: 'Alice' }) // => 'Alice'
    +
    // Using a function
    const getLength = _.castMapping((str: string) => str.length)
    getLength('Hello') // => 5
    +
    // Using undefined
    const identity = _.castMapping(undefined)
    identity({ any: 'value' }) // => { any: 'value' }
    +

    Types

    +

    CastMapping

    +

    This is the return type of castMapping.

    +
    import * as _ from 'radashi'
    import type { CastMapping } from 'radashi'
    +
    const data = { a: 1, b: '2' }
    +
    const mapper: CastMapping<typeof data, number> = _.castMapping(data => data.a)
    +

    MappedOutput

    +

    As you may have noticed in the previous example, the MappedOutput type is used to infer the type of the value returned by the mapping function.

    +
    import type { MappedOutput } from 'radashi'
    +
    type Data = { a: number; b: string }
    +
    const test = <T>() => T
    +
    test<MappedOutput<Data, (data: Data) => number>>()
    // is number
    +
    test<MappedOutput<CastMapping<'a'>>>()
    // is number
    +
    test<MappedOutput<undefined>>()
    // is Data
    +

    Mapping

    +

    You can use the Mapping type to accept a value that can be passed into castMapping.

    +
    import * as _ from 'radashi'
    import type { Mapping, MappedOutput } from 'radashi'
    +
    function mapArray<T, TMapping extends Mapping<T>>(
    array: readonly T[],
    mapping: TMapping,
    ): MappedOutput<TMapping, T>[] {
    return array.map(_.castMapping(mapping))
    }
    +

    If you want a mapping to be optional, use the OptionalMapping type instead.

    +
    import type { OptionalMapping, MappedOutput } from 'radashi'
    +
    function mapArray<T, TMapping extends OptionalMapping<T>>(
    array: readonly T[],
    mapping?: TMapping,
    ): MappedOutput<TMapping, T>[] {
    return array.map(_.castMapping(mapping))
    }
    +

    Etymology

    +

    Origin

    +

    The term “castMapping” combines two key concepts from programming:

    +
      +
    1. +

      “Cast” originates from type casting in programming, which involves converting a value from one data type to another. This process ensures that data is in the correct format for a specific operation.

      +
    2. +
    3. +

      ”Mapping” as a noun refers to a correspondence between elements of two sets, or a function that defines such a correspondence. In programming, it often represents a data structure that associates keys with values, or a function that transforms one set of data into another.

      +
    4. +
    +

    Together, “castMapping” describes a function that takes a value (which could be a function, a property name, or undefined) and converts or “casts” it into a standardized mapping. This resulting mapping can then be used to transform data consistently, regardless of the initial input type. The process enhances flexibility in data manipulation by allowing various input types to be treated uniformly as mappings for data transformation.

    \ No newline at end of file diff --git a/reference/function/noop/index.html b/reference/function/noop/index.html new file mode 100644 index 00000000..755b5b82 --- /dev/null +++ b/reference/function/noop/index.html @@ -0,0 +1,97 @@ + noop | Radashi + + Skip to content

    noop

    Does nothing and returns undefined

    33 bytes +

    Usage

    +

    This is useful when you need to pass a function somewhere, but you don’t care when it runs or what it receives.

    +

    Since noop has a function signature of () => undefined, you will be warned by TypeScript if you pass it where a function is expected to return something different.

    +
    import * as _ from 'radashi'
    +
    _.noop() // => undefined
    +

    FAQ

    +
      +
    • Shouldn’t I just use ?. operator?
      +Where possible, yes you should. The noop is best for cases where you’re not in control of the code that calls it and a function is required.
    • +
    \ No newline at end of file diff --git a/reference/index.html b/reference/index.html new file mode 100644 index 00000000..944d4ad5 --- /dev/null +++ b/reference/index.html @@ -0,0 +1,210 @@ + Functions overview | Radashi + + Skip to content

    Functions overview

    Welcome to the Radashi API Reference.

    +

    Array

    +

    alphabetical

    Sorts an array of objects alphabetically by a property

    +

    boil

    Reduce a list of items down to one item

    +

    castArray

    Cast a value into an array

    +

    castArrayIfExists

    Cast a non-nullish value into an array

    +

    cluster

    Split a list into many lists of the given size

    +

    counting

    Creates an object with counts of occurrences of items

    +

    diff

    Create an array of differences between two arrays

    +

    first

    Get the first item from a list

    +

    flat

    Flatten an array of arrays into a single dimension

    +

    fork

    Split an array into two arrays by a condition

    +

    group

    Sort an array of items into groups

    +

    intersects

    Determine if two arrays have a common item

    +

    iterate

    Iterate over a callback n times

    +

    last

    Get the last item from a list

    +

    list

    Create a list with specific items

    +

    mapify

    Convert an array to a map

    +

    merge

    Combine two lists overriding items in the first

    +

    objectify

    Convert a list to a dictionary object

    +

    replace

    Replace an item in an array

    +

    replaceOrAppend

    Replace item in array or append if no match

    +

    select

    Filter and map an array

    +

    selectFirst

    Find and map the first array element meeting a condition

    +

    shift

    Shift array items by n steps

    +

    sift

    Remove all falsy items from list

    +

    sort

    Sort a list of objects by a numerical property

    +

    toggle

    Toggles an items existance in an array

    +

    unique

    Remove duplicates from an array

    +

    unzip

    Group array elements by their index position across the input arrays

    +

    zip

    Combine multiple arrays in sets

    +

    zipToObject

    Combine multiple arrays in sets

    +

    Async

    +

    all

    Await many promises

    +

    defer

    Run an async function with deferred functions

    +

    guard

    Have a function return undefined if it errors out

    +

    map

    Map an array with an async function

    +

    parallel

    Run many async function in parallel

    +

    reduce

    Reduce an array with an async function

    +

    retry

    Run an async function retrying if it fails

    +

    sleep

    Asynchronously wait for time to pass

    +

    tryit

    Convert a function to an error-first function

    +

    Curry

    +

    chain

    Create a chain of function to run in order

    +

    compose

    Create a composition of functions

    +

    debounce

    Create a debounced callback function

    +

    flip

    Swap the only two arguments of a function

    +

    memo

    Memoize a function

    +

    once

    Create a function that runs at most once

    +

    partial

    Create a partial a function

    +

    partob

    Create a partob a function

    +

    proxied

    Create a dynamic proxied a object

    +

    throttle

    Creates a throttled function that limits invocations to a specified interval

    +

    Function

    +

    always

    Create a function that always returns the same value

    +

    castComparator

    Cast a value into a comparator function

    +

    castMapping

    Cast a value into a mapping function

    +

    noop

    Does nothing and returns undefined

    +

    Number

    +

    clamp

    Limit the range of a variable number

    +

    inRange

    Verifies number within range, inclusive start, exclusive end, flexible order, defaulting to 0 if end unspecified

    +

    lerp

    Smoothly transitions between two values based on a factor

    +

    max

    Get the largest item from an array

    +

    min

    Get the smallest item from an array

    +

    range

    Create a range used for iterating

    +

    round

    Rounds a number to a specified precision.

    +

    sum

    Add up all items of an array

    +

    toFloat

    Convert a value to a float if possible

    +

    toInt

    Convert a value to an int if possible

    +

    Object

    +

    assign

    Merges two objects together recursively

    +

    clone

    Creates a shallow copy of the given object/value.

    +

    cloneDeep

    Create a deep copy of an object or array

    +

    construct

    Builds an object from key paths and values

    +

    crush

    Flattens a deep object to a single dimension

    +

    filterKey

    Check if an object key passes a filter

    +

    get

    Get any attribute or child attribute using a deep path

    +

    invert

    Invert the keys and values of an object

    +

    keys

    Get all keys from an object deeply

    +

    listify

    Convert an object to a list

    +

    lowerize

    Convert all object keys to lower case

    +

    mapEntries

    Map the keys and values of an object

    +

    mapKeys

    Map over the keys of an object

    +

    mapValues

    Map over the keys of an object

    +

    omit

    Omit unwanted attributes from an object

    +

    pick

    Pick only the desired properties from an object

    +

    set

    Set a value on an object using a path key

    +

    shake

    Remove unwanted values from an object

    +

    traverse

    Deeply enumerate an object and any nested objects

    +

    upperize

    Convert all object keys to upper case

    +

    Random

    +

    draw

    Get a random item from a list

    +

    random

    Generate a random number

    +

    shuffle

    Randomly shuffle an array

    +

    uid

    Generate a unique identifier

    +

    Series

    +

    series

    Create an ordered series object

    +

    String

    +

    camel

    Convert a string to camel case

    +

    capitalize

    Convert a string to a capitalized format

    +

    dash

    Convert a string to dash case

    +

    pascal

    Convert a string to pascal case

    +

    similarity

    Calculate the similarity between two strings using the Levenshtein distance algorithm

    +

    snake

    Convert a string to snake case

    +

    template

    Template a string with values from a data object using a search expression

    +

    title

    Convert a string to title case

    +

    trim

    Trim values from a string

    +

    Typed

    +

    isArray

    Determine if a value is an Array

    +

    isBoolean

    Check if a value is a boolean type

    +

    isDate

    Determine if a value is a Date

    +

    isEmpty

    Determine if a value is empty

    +

    isEqual

    Determine if two values are equal

    +

    isFloat

    Determine if a value is a float

    +

    isFunction

    Determine if a value is a Function

    +

    isInt

    Determine if a value is an int

    +

    isIntString

    Determine if a value is an int in string form

    +

    isMap

    Returns true for Map instances

    +

    isNumber

    Determine if a value is a number

    +

    isObject

    Determine if a value is an Object

    +

    isPlainObject

    Determine if a value is a plain object

    +

    isPrimitive

    Checks if the given value is primitive

    +

    isPromise

    Determine if a value is a Promise

    +

    isRegExp

    Returns true for RegExp instances

    +

    isSet

    Returns true for Set instances

    +

    isString

    Determine if a value is a String

    +

    isSymbol

    Determine if a value is a Symbol

    +

    isWeakMap

    Returns true for WeakMap instances

    +

    isWeakSet

    Returns true for WeakSet instances

    \ No newline at end of file diff --git a/reference/number/clamp/index.html b/reference/number/clamp/index.html new file mode 100644 index 00000000..438571b8 --- /dev/null +++ b/reference/number/clamp/index.html @@ -0,0 +1,101 @@ + clamp | Radashi + + Skip to content

    clamp

    Limit the range of a variable number

    141 bytes +

    Usage

    +

    The clamp function restricts a number to be within a specified +range.

    +
      +
    • It takes three arguments: the number to clamp, the minimum value, +and the maximum value.
    • +
    • If the number is less than the minimum, it returns the minimum.
    • +
    • If the number is greater than the maximum, it returns the +maximum.
    • +
    • Otherwise, it returns the number itself.
    • +
    +
    import * as _ from 'radashi'
    +
    _.clamp(5, 1, 10) // returns 5
    _.clamp(0, 1, 10) // returns 1
    _.clamp(15, 1, 10) // returns 10
    +
    // Invalid range
    _.clamp(1, 10, 1) // throws
    \ No newline at end of file diff --git a/reference/number/inRange/index.html b/reference/number/inRange/index.html new file mode 100644 index 00000000..066085dd --- /dev/null +++ b/reference/number/inRange/index.html @@ -0,0 +1,97 @@ + inRange | Radashi + + Skip to content

    inRange

    Verifies number within range, inclusive start, exclusive end, flexible order, defaulting to 0 if end unspecified

    185 bytes +

    Basic usage

    +

    Pass the number, the start and the end (optional) of the range. The _.inRange function will return true if the given number is in the range.

    +
      +
    • The start is inclusive, the end is exclusive. So 10 is in the range 0-11 and 10-20, but not 0-10.
    • +
    • If an end is unspecified, the range defaults to >= 0 and < start.
    • +
    • If the end is lower than the start, the range is reversed.
    • +
    +
    import * as _ from 'radashi'
    +
    _.inRange(10, 0, 20) // true
    _.inRange(9.99, 0, 10) // true
    _.inRange(Math.PI, 0, 3.15) // true
    _.inRange(10, 10, 20) // true
    _.inRange(10, 0, 10) // false
    +
    _.inRange(1, 2) // true
    _.inRange(1, 0) // false
    \ No newline at end of file diff --git a/reference/number/lerp/index.html b/reference/number/lerp/index.html new file mode 100644 index 00000000..0940ed11 --- /dev/null +++ b/reference/number/lerp/index.html @@ -0,0 +1,94 @@ + lerp | Radashi + + Skip to content

    lerp

    Smoothly transitions between two values based on a factor

    54 bytes +

    Usage

    +

    The lerp function is used to linearly interpolate between two numbers based on a specified amount. This function is particularly useful in animations, graphics, and games for smooth transitions.

    +
    import * as _ from 'radashi'
    +
    _.lerp(0, 10, 0.5) // => 5
    _.lerp(5, 15, 0.2) // => 7
    _.lerp(-10, 10, 0.75) // => 5
    +

    Etymology

    +

    The name lerp is short for “linear interpolation”. It’s a term from computer graphics that means “interpolate linearly between two values”.

    +

    For more information, check out the Wikipedia article on linear interpolation.

    \ No newline at end of file diff --git a/reference/number/max/index.html b/reference/number/max/index.html new file mode 100644 index 00000000..aa3a6401 --- /dev/null +++ b/reference/number/max/index.html @@ -0,0 +1,92 @@ + max | Radashi + + Skip to content

    max

    Get the largest item from an array

    125 bytes +

    Usage

    +

    Given an array of items and a function to get the value of each item, returns the item with the largest value. Uses _.boil under the hood.

    +
    import * as _ from 'radashi'
    +
    const fish = [
    {
    name: 'Marlin',
    weight: 105,
    source: 'ocean',
    },
    {
    name: 'Bass',
    weight: 8,
    source: 'lake',
    },
    {
    name: 'Trout',
    weight: 13,
    source: 'lake',
    },
    ]
    +
    _.max(fish, f => f.weight) // => {name: "Marlin", weight: 105, source: "ocean"}
    \ No newline at end of file diff --git a/reference/number/min/index.html b/reference/number/min/index.html new file mode 100644 index 00000000..4da278bb --- /dev/null +++ b/reference/number/min/index.html @@ -0,0 +1,92 @@ + min | Radashi + + Skip to content

    min

    Get the smallest item from an array

    125 bytes +

    Usage

    +

    Given an array of items and a function to get the value of each item, returns the item with the smallest value. Uses _.boil under the hood.

    +
    import * as _ from 'radashi'
    +
    const fish = [
    {
    name: 'Marlin',
    weight: 105,
    source: 'ocean',
    },
    {
    name: 'Bass',
    weight: 8,
    source: 'lake',
    },
    {
    name: 'Trout',
    weight: 13,
    source: 'lake',
    },
    ]
    +
    _.min(fish, f => f.weight) // => {name: "Bass", weight: 8, source: "lake"}
    \ No newline at end of file diff --git a/reference/number/range/index.html b/reference/number/range/index.html new file mode 100644 index 00000000..8fabdcf6 --- /dev/null +++ b/reference/number/range/index.html @@ -0,0 +1,109 @@ + range | Radashi + + Skip to content

    range

    Create a range used for iterating

    170 bytes +

    Usage

    +

    Given a start, end, value, and step size returns a generator that will yield values from start to end by step size. Useful for replacing for (let i = 0) with for of. Range will return a generator that for of will call one at a time, so it’s safe to create large ranges.

    +

    The interface is identical to list.

    +

    A hat tip to Python’s range functionality

    +
    import * as _ from 'radashi'
    +
    _.range(3) // yields 0, 1, 2, 3
    _.range(0, 3) // yields 0, 1, 2, 3
    _.range(0, 3, 'y') // yields y, y, y, y
    _.range(0, 3, () => 'y') // yields y, y, y, y
    _.range(0, 3, i => i) // yields 0, 1, 2, 3
    _.range(0, 3, i => `y${i}`) // yields y0, y1, y2, y3
    _.range(0, 3, obj) // yields obj, obj, obj, obj
    _.range(0, 6, i => i, 2) // yields 0, 2, 4, 6
    +
    for (const i of _.range(0, 200, 10)) {
    console.log(i) // => 0, 10, 20, 30 ... 190, 200
    }
    +
    for (const i of _.range(0, 5)) {
    console.log(i) // => 0, 1, 2, 3, 4, 5
    }
    +

    Signatures

    +

    The range function can do a lot with different arguments.

    +

    range(size)

    +

    When givin a single argument, it’s treated as the size. Returns a generator that yields values from 0 to size.

    +
    _.range(3) // yields 0, 1, 2, 3
    +

    range(start, end)

    +

    When given two arguments, they’re treated as the start and end. Returns a generator that yields values from start to end

    +
    _.range(2, 6) // yields 2, 3, 4, 5, 6
    +

    range(start, end, value)

    +

    When given a third argument it’s treated as the value to be yielded in the generator. If the value is a function it will be called, with an index argument, to create every value.

    +
    _.range(2, 4, {}) // yields {}, {}, {}
    _.range(2, 4, null) // yields null, null, null
    _.range(2, 4, i => i) // yields 2, 3, 4
    +

    range(start, end, value, step)

    +

    When given a fourth argument it’s treated as the step size to skip when yielding values from start to end.

    +
    _.range(2, 4, i => i, 2) // yields 2, 4
    _.range(25, 100, i => i, 25) // yields 25, 50, 75, 100
    \ No newline at end of file diff --git a/reference/number/round/index.html b/reference/number/round/index.html new file mode 100644 index 00000000..065c5a4a --- /dev/null +++ b/reference/number/round/index.html @@ -0,0 +1,97 @@ + round | Radashi + + Skip to content

    round

    Rounds a number to a specified precision.

    199 bytes +

    Usage

    +

    The _.round function rounds a given number to a specified precision.

    +
    import * as _ from 'radashi'
    +
    _.round(123.456) // => 123
    _.round(1234.56, -2) // => 1200
    +

    Precision

    +

    The precision argument is limited to be within the range of -323 to +292. +Without this limit, precision values outside this range can result in NaN.

    +

    Rounding Method

    +

    You may provide a custom rounding method. The default is Math.round.

    +
    _.round(4.001, 2, Math.ceil) // => 4.01
    _.round(4.089, 2, Math.floor) // => 4.08
    \ No newline at end of file diff --git a/reference/number/sum/index.html b/reference/number/sum/index.html new file mode 100644 index 00000000..58b1b37a --- /dev/null +++ b/reference/number/sum/index.html @@ -0,0 +1,92 @@ + sum | Radashi + + Skip to content

    sum

    Add up all items of an array

    78 bytes +

    Usage

    +

    Given an array of items, and an optional function to map each item to a number, add up all the items.

    +
    import * as _ from 'radashi'
    +
    const fish = [
    {
    name: 'Marlin',
    weight: 100,
    },
    {
    name: 'Bass',
    weight: 10,
    },
    {
    name: 'Trout',
    weight: 15,
    },
    ]
    +
    _.sum(fish, f => f.weight) // => 125
    \ No newline at end of file diff --git a/reference/number/toFloat/index.html b/reference/number/toFloat/index.html new file mode 100644 index 00000000..e2498fe4 --- /dev/null +++ b/reference/number/toFloat/index.html @@ -0,0 +1,91 @@ + toFloat | Radashi + + Skip to content

    toFloat

    Convert a value to a float if possible

    161 bytes +

    Usage

    +

    The _.toFloat function will do its best to convert the given value to a float.

    +
    import * as _ from 'radashi'
    +
    _.toFloat(0) // => 0.0
    _.toFloat(null) // => 0.0
    _.toFloat(null, 3.33) // => 3.33
    \ No newline at end of file diff --git a/reference/number/toInt/index.html b/reference/number/toInt/index.html new file mode 100644 index 00000000..1a978c45 --- /dev/null +++ b/reference/number/toInt/index.html @@ -0,0 +1,91 @@ + toInt | Radashi + + Skip to content

    toInt

    Convert a value to an int if possible

    157 bytes +

    Usage

    +

    The _.toInt function will do its best to convert the given value to an int.

    +
    import * as _ from 'radashi'
    +
    _.toInt(0) // => 0
    _.toInt(null) // => 0
    _.toInt(null, 3) // => 3
    \ No newline at end of file diff --git a/reference/object/assign/index.html b/reference/object/assign/index.html new file mode 100644 index 00000000..6bd3f371 --- /dev/null +++ b/reference/object/assign/index.html @@ -0,0 +1,92 @@ + assign | Radashi + + Skip to content

    assign

    Merges two objects together recursively

    373 bytes +

    Usage

    +

    Merges two objects together recursively into a new object applying values from right to left. Recursion only applies to child object properties.

    +
    import * as _ from 'radashi'
    +
    const ra = {
    name: 'Ra',
    power: 100,
    }
    +
    _.assign(ra, { name: 'Loki' })
    // => { name: Loki, power: 100 }
    \ No newline at end of file diff --git a/reference/object/clone/index.html b/reference/object/clone/index.html new file mode 100644 index 00000000..f3d20045 --- /dev/null +++ b/reference/object/clone/index.html @@ -0,0 +1,93 @@ + clone | Radashi + + Skip to content

    clone

    Creates a shallow copy of the given object/value.

    328 bytes +

    Usage

    +

    Creates a shallow copy of the given object/value.

    +
    import * as _ from 'radashi'
    +
    const ra = {
    name: 'Ra',
    power: 100,
    }
    +
    const gods = [ra]
    +
    _.clone(ra) // => copy of ra
    _.clone(gods) // => copy of gods
    \ No newline at end of file diff --git a/reference/object/cloneDeep/index.html b/reference/object/cloneDeep/index.html new file mode 100644 index 00000000..a76b9d14 --- /dev/null +++ b/reference/object/cloneDeep/index.html @@ -0,0 +1,107 @@ + cloneDeep | Radashi + + Skip to content

    cloneDeep

    Create a deep copy of an object or array

    1142 bytes +

    Usage

    +

    Deeply clone the given object or array. The only nested objects that get cloned by default are: plain objects, arrays, Map instances, and Set instances.

    +

    The default behavior aims to support the most popular use cases. See “Customized cloning” below if you need more control.

    +

    By default, non-enumerable properties and computed properties are copied losslessly. Note that you can opt out of this behavior if you need better performance (see “Faster cloning” below).

    +
    import * as _ from 'radashi'
    +
    _.cloneDeep()
    +

    Faster cloning

    +

    You can pass the FastCloningStrategy for better performance, but bear in mind the following tradeoff.

    +

    All plain objects and class instances are cloned with {...obj}. This means that the original prototype, computed properties, and non-enumerable properties are not preserved.

    +

    Also note that built-in, complex objects like RegExp and Date are still not cloned with this cloning strategy. You can override the cloneOther function if you need to clone these object types.

    +

    Customized cloning

    +

    “Cloning strategies” control how certain object types are handled by cloneDeep. You can pass in a custom strategy, which may even be a partial strategy. Any undefined methods in your strategy will inherit the default logic. Your custom methods can return null to use the default logic, or they can return the received object to skip cloning.

    +
    import * as _ from 'radashi'
    +
    _.cloneDeep(obj, {
    // Clone arrays with default logic if they are not frozen.
    cloneArray: array => (Object.isFrozen(array) ? array : null),
    })
    +

    If you clone the object in your custom method, make sure to pass the clone into the track function before cloning the nested objects. Here’s an example with cloneOther that handles a custom class instance.

    +
    import * as _ from 'radashi'
    +
    _.cloneDeep(obj, {
    cloneOther: (obj, track, clone) => {
    if (obj instanceof MyClass) {
    // 1. Create a new instance and track it.
    const clone = track(new MyClass())
    +
    // 2. Copy over the properties of the original instance.
    for (const key in obj) {
    clone[key] = clone(obj[key])
    }
    +
    // 3. Return the cloned instance.
    return clone
    }
    +
    // Use default logic for anything else.
    return null
    },
    })
    \ No newline at end of file diff --git a/reference/object/construct/index.html b/reference/object/construct/index.html new file mode 100644 index 00000000..5895fc98 --- /dev/null +++ b/reference/object/construct/index.html @@ -0,0 +1,92 @@ + construct | Radashi + + Skip to content

    construct

    Builds an object from key paths and values

    693 bytes +

    Usage

    +

    The opposite of crush, given an object that was crushed into key paths and values will return the original object reconstructed.

    +
    import * as _ from 'radashi'
    +
    const flat = {
    name: 'ra',
    power: 100,
    'friend.name': 'loki',
    'friend.power': 80,
    'enemies.0.name': 'hathor',
    'enemies.0.power': 12,
    }
    +
    _.construct(flat)
    // {
    // name: 'ra',
    // power: 100,
    // friend: {
    // name: 'loki',
    // power: 80
    // },
    // enemies: [
    // {
    // name: 'hathor',
    // power: 12
    // }
    // ]
    // }
    \ No newline at end of file diff --git a/reference/object/crush/index.html b/reference/object/crush/index.html new file mode 100644 index 00000000..6f61e503 --- /dev/null +++ b/reference/object/crush/index.html @@ -0,0 +1,92 @@ + crush | Radashi + + Skip to content

    crush

    Flattens a deep object to a single dimension

    290 bytes +

    Usage

    +

    Flattens a deep object to a single dimension. The deep keys will be converted to a dot notation in the new object.

    +
    import * as _ from 'radashi'
    +
    const ra = {
    name: 'ra',
    power: 100,
    friend: {
    name: 'loki',
    power: 80,
    },
    enemies: [
    {
    name: 'hathor',
    power: 12,
    },
    ],
    }
    +
    _.crush(ra)
    // {
    // name: 'ra',
    // power: 100,
    // 'friend.name': 'loki',
    // 'friend.power': 80,
    // 'enemies.0.name': 'hathor',
    // 'enemies.0.power': 12
    // }
    \ No newline at end of file diff --git a/reference/object/filterKey/index.html b/reference/object/filterKey/index.html new file mode 100644 index 00000000..a94c51d8 --- /dev/null +++ b/reference/object/filterKey/index.html @@ -0,0 +1,92 @@ + filterKey | Radashi + + Skip to content

    filterKey

    Check if an object key passes a filter

    146 bytes +

    Usage

    +

    You have a utility function that is filtering an object’s properties somehow. Using filterKey will allow your function to filter those properties based on either an array of keys (an allowlist) or a function that returns a boolean for each property.

    +

    The KeyFilter type provided by Radashi is fundamental in taking advantage of the filterKey function. Be sure to use it to ensure type safety and maintainable code.

    +
    import * as _ from 'radashi'
    +
    function filterObject(obj: object, filter: _.KeyFilter) {
    for (const key in obj) {
    if (_.filterKey(obj, key, filter)) {
    // ...
    }
    }
    }
    \ No newline at end of file diff --git a/reference/object/get/index.html b/reference/object/get/index.html new file mode 100644 index 00000000..7b3f925f --- /dev/null +++ b/reference/object/get/index.html @@ -0,0 +1,92 @@ + get | Radashi + + Skip to content

    get

    Get any attribute or child attribute using a deep path

    190 bytes +

    Usage

    +

    Given any value and a select function to get the desired attribute, returns the desired value or a default value if the desired value couldn’t be found.

    +
    import * as _ from 'radashi'
    +
    const fish = {
    name: 'Bass',
    weight: 8,
    sizes: [
    {
    maturity: 'adult',
    range: [7, 18],
    unit: 'inches',
    },
    ],
    }
    +
    _.get(fish, 'sizes[0].range[1]') // 18
    _.get(fish, 'sizes.0.range.1') // 18
    _.get(fish, 'foo', 'default') // 'default'
    \ No newline at end of file diff --git a/reference/object/invert/index.html b/reference/object/invert/index.html new file mode 100644 index 00000000..516a0f4f --- /dev/null +++ b/reference/object/invert/index.html @@ -0,0 +1,92 @@ + invert | Radashi + + Skip to content

    invert

    Invert the keys and values of an object

    94 bytes +

    Usage

    +

    Given an object returns a new object with the keys and values reversed.

    +
    import * as _ from 'radashi'
    +
    const powersByGod = {
    ra: 'sun',
    loki: 'tricks',
    zeus: 'lighning',
    }
    +
    _.invert(powersByGod) // => { sun: ra, tricks: loki, lightning: zeus }
    \ No newline at end of file diff --git a/reference/object/keys/index.html b/reference/object/keys/index.html new file mode 100644 index 00000000..e34ef210 --- /dev/null +++ b/reference/object/keys/index.html @@ -0,0 +1,96 @@ + keys | Radashi + + Skip to content

    keys

    Get all keys from an object deeply

    397 bytes +

    Usage

    +

    Given an object, return all of it’s keys and children’s keys deeply as a flat string list.

    +
    import * as _ from 'radashi'
    +
    const ra = {
    name: 'ra',
    power: 100,
    friend: {
    name: 'loki',
    power: 80,
    },
    enemies: [
    {
    name: 'hathor',
    power: 12,
    },
    ],
    }
    +
    _.keys(ra)
    // => [
    // 'name',
    // 'power',
    // 'friend.name',
    // 'friend.power',
    // 'enemies.0.name',
    // 'enemies.0.power'
    // ]
    +

    This is a function you might like to use with get, which dynamically looks up values in an object given a string path. Using the two together you could do something like flatten a deep object.

    +
    import * as _ from 'radashi'
    +
    _.objectify(
    _.keys(ra),
    key => key,
    key => _.get(ra, key),
    )
    // => {
    // 'name': 'ra'
    // 'power': 100
    // 'friend.name': 'loki'
    // 'friend.power': 80
    // 'enemies.0.name': 'hathor'
    // 'enemies.0.power': 12
    // }
    +

    As of v10.5.0+ you can get this behavior via the crush function

    \ No newline at end of file diff --git a/reference/object/listify/index.html b/reference/object/listify/index.html new file mode 100644 index 00000000..ec2754f8 --- /dev/null +++ b/reference/object/listify/index.html @@ -0,0 +1,92 @@ + listify | Radashi + + Skip to content

    listify

    Convert an object to a list

    145 bytes +

    Usage

    +

    Given an object and a mapping function, return an array with an item for each entry in the object.

    +
    import * as _ from 'radashi'
    +
    const fish = {
    marlin: {
    weight: 105,
    },
    bass: {
    weight: 8,
    },
    }
    +
    _.listify(fish, (key, value) => ({ ...value, name: key })) // => [{ name: 'marlin', weight: 105 }, { name: 'bass', weight: 8 }]
    \ No newline at end of file diff --git a/reference/object/lowerize/index.html b/reference/object/lowerize/index.html new file mode 100644 index 00000000..7bd8a215 --- /dev/null +++ b/reference/object/lowerize/index.html @@ -0,0 +1,93 @@ + lowerize | Radashi + + Skip to content

    lowerize

    Convert all object keys to lower case

    146 bytes +

    Usage

    +

    Convert all keys in an object to lower case. Useful to standardize attribute key casing. For example, headers.

    +
    import * as _ from 'radashi'
    +
    const ra = {
    Mode: 'god',
    Power: 'sun',
    }
    +
    _.lowerize(ra) // => { mode, power }
    +

    The _.lowerize function is a shortcut for _.mapKeys(obj, k => k.toLowerCase())

    \ No newline at end of file diff --git a/reference/object/mapEntries/index.html b/reference/object/mapEntries/index.html new file mode 100644 index 00000000..c1add47a --- /dev/null +++ b/reference/object/mapEntries/index.html @@ -0,0 +1,95 @@ + mapEntries | Radashi + + Skip to content

    mapEntries

    Map the keys and values of an object

    127 bytes +

    Usage

    +

    Iterates the entries of an object, calling the given toEntry callback function +to generate new entries. It’s a _.mapValues and _.mapKeys +in one. The toEntry callback function should return an array with +two items [key, value] (a.k.a the new entry).

    +
    import * as _ from 'radashi'
    +
    const ra = {
    name: 'Ra',
    power: 'sun',
    rank: 100,
    culture: 'egypt',
    }
    +
    _.mapEntries(ra, (key, value) => [key.toUpperCase(), `${value}`]) // => { NAME: 'Ra', POWER: 'sun', RANK: '100', CULTURE: 'egypt' }
    \ No newline at end of file diff --git a/reference/object/mapKeys/index.html b/reference/object/mapKeys/index.html new file mode 100644 index 00000000..b5bc3b8d --- /dev/null +++ b/reference/object/mapKeys/index.html @@ -0,0 +1,93 @@ + mapKeys | Radashi + + Skip to content

    mapKeys

    Map over the keys of an object

    100 bytes +

    Usage

    +

    Given an object and a toKey callback function, returns a new object with all the keys +mapped through the toKey function. The callback is given both the key and value for each entry.

    +
    import * as _ from 'radashi'
    +
    const ra = {
    mode: 'god',
    power: 'sun',
    }
    +
    _.mapKeys(ra, key => key.toUpperCase()) // => { MODE, POWER }
    _.mapKeys(ra, (key, value) => value) // => { god: 'god', power: 'power' }
    \ No newline at end of file diff --git a/reference/object/mapValues/index.html b/reference/object/mapValues/index.html new file mode 100644 index 00000000..e9fd8d5c --- /dev/null +++ b/reference/object/mapValues/index.html @@ -0,0 +1,93 @@ + mapValues | Radashi + + Skip to content

    mapValues

    Map over the keys of an object

    99 bytes +

    Usage

    +

    Given an object and a toValue callback function, returns a new object with all the values +mapped through the toValue function. The callback is given both the value and key for each entry.

    +
    import * as _ from 'radashi'
    +
    const ra = {
    mode: 'god',
    power: 'sun',
    }
    +
    _.mapValues(ra, value => value.toUpperCase()) // => { mode: 'GOD', power: 'SUN' }
    _.mapValues(ra, (value, key) => key) // => { mode: 'mode', power: 'power' }
    \ No newline at end of file diff --git a/reference/object/omit/index.html b/reference/object/omit/index.html new file mode 100644 index 00000000..f3a4d26f --- /dev/null +++ b/reference/object/omit/index.html @@ -0,0 +1,92 @@ + omit | Radashi + + Skip to content

    omit

    Omit unwanted attributes from an object

    106 bytes +

    Usage

    +

    Given an object and a list of keys in the object, returns a new object without any of the given keys.

    +
    import * as _ from 'radashi'
    +
    const fish = {
    name: 'Bass',
    weight: 8,
    source: 'lake',
    brackish: false,
    }
    +
    _.omit(fish, ['name', 'source']) // => { weight, brackish }
    \ No newline at end of file diff --git a/reference/object/pick/index.html b/reference/object/pick/index.html new file mode 100644 index 00000000..dd003bb6 --- /dev/null +++ b/reference/object/pick/index.html @@ -0,0 +1,104 @@ + pick | Radashi + + Skip to content

    pick

    Pick only the desired properties from an object

    266 bytes +

    Usage

    +

    Given an object and a list of keys in the object, returns a new object with only the given keys.

    +
    import * as _ from 'radashi'
    +
    const fish = {
    name: 'Bass',
    weight: 8,
    source: 'lake',
    brackish: false,
    }
    +
    _.pick(fish, ['name', 'source']) // => { name, source }
    +

    Predicate function

    +

    The pick function can also accept a predicate function as the filter argument. This allows for more complex filtering logic beyond simple key inclusion or exclusion.

    +
    import * as _ from 'radashi'
    +
    const source = { a: 1, b: 2, c: 3, d: 4 }
    +
    _.pick(source, (value, key) => {
    return value % 2 === 0 // Include only even values
    })
    // => { b: 2, d: 4 }
    +

    Unsafe predicate function

    + +
    // Example demonstrating potential inaccuracy in `key` and `value` types within `_.pick` callback
    import _ from 'lodash'
    +
    interface User {
    name: string
    age: number
    }
    +
    function getUserDetails(user: User) {
    return _.pick(user, (value, key) => {
    // TypeScript believes `key` is 'name' | 'age', but at runtime
    // it could be 'email'
    if (key === 'name' || key === 'age') {
    console.log(key, '=', value)
    } else {
    // TypeScript believes this will never run, but it does.
    console.log('Unexpected key:', key)
    }
    })
    }
    +
    // At runtime, the function may receive an object with more properties
    const runtimeUser = {
    name: 'John',
    age: 30,
    // This property is not listed in the User type:
    email: 'john@example.com',
    }
    +
    getUserDetails(runtimeUser)
    // Logs the following:
    // name = John
    // age = 30
    // Unexpected key: email
    \ No newline at end of file diff --git a/reference/object/set/index.html b/reference/object/set/index.html new file mode 100644 index 00000000..38bed325 --- /dev/null +++ b/reference/object/set/index.html @@ -0,0 +1,92 @@ + set | Radashi + + Skip to content

    set

    Set a value on an object using a path key

    616 bytes +

    Usage

    +

    Opposite of get, dynamically set a nested value into an object using a key path. Does not modify the given initial object.

    +
    import * as _ from 'radashi'
    +
    _.set({}, 'name', 'ra')
    // => { name: 'ra' }
    +
    _.set({}, 'cards[0].value', 2)
    // => { cards: [{ value: 2 }] }
    \ No newline at end of file diff --git a/reference/object/shake/index.html b/reference/object/shake/index.html new file mode 100644 index 00000000..1bb0ef2e --- /dev/null +++ b/reference/object/shake/index.html @@ -0,0 +1,92 @@ + shake | Radashi + + Skip to content

    shake

    Remove unwanted values from an object

    120 bytes +

    Usage

    +

    A bit like _.sift but for objects. By default, it will return a new object with all the undefined attributes removed. You can pass a second function argument to remove any attributes by a custom condition.

    +
    import * as _ from 'radashi'
    +
    const ra = {
    mode: 'god',
    greek: false,
    limit: undefined,
    }
    +
    _.shake(ra) // => { mode, greek }
    _.shake(ra, a => !a) // => { mode }
    \ No newline at end of file diff --git a/reference/object/traverse/index.html b/reference/object/traverse/index.html new file mode 100644 index 00000000..8054d4a8 --- /dev/null +++ b/reference/object/traverse/index.html @@ -0,0 +1,160 @@ + traverse | Radashi + + Skip to content

    traverse

    Deeply enumerate an object and any nested objects

    1284 bytes +

    Usage

    +

    Recursively visit each property of an object (or each element of an array) and its nested objects or arrays. To traverse non-array iterables (e.g. Map, Set) and class instances, see the Traversing other objects section.

    +

    Traversal is performed in a depth-first manner. That means the deepest object will be visited before the last property of the root object.

    +
    import * as _ from 'radashi'
    +
    const root = { a: { b: 2 }, c: [1, 2] }
    +
    _.traverse(root, (value, key, parent, context) => {
    const depth = context.parents.length
    console.log(' '.repeat(depth * 2), key, '=>', value)
    })
    // Logs the following:
    // a => { b: 2 }
    // b => 2
    // c => [1, 2]
    // 0 => 1
    // 1 => 2
    +

    Tip: Check out the Advanced section to see what else is possible.

    + +

    Types

    +

    TraverseVisitor

    +

    The TraverseVisitor type represents the function passed to traverse as its 2nd argument. If you ever need to declare a visitor separate from a traverse call, you can do so by declaring a function with this type signature.

    +
    import { TraverseVisitor } from 'radashi'
    +
    const visitor: TraverseVisitor = (value, key, parent, context) => {
    // ...
    }
    +

    TraverseContext

    +

    Every visit includes a context object typed with TraverseContext, which contains the following properties:

    +
      +
    • key: The current key being visited.
    • +
    • parent: The parent object of the current value.
    • +
    • parents: An array of objects (from parent to child) that the current value is contained by.
    • +
    • path: An array describing the key path to the current value from the root.
    • +
    • skip: A function used for skipping traversal of an object. If no object is provided, the current value is skipped. See Skipping objects for more details.
    • +
    • skipped: A set of objects that have been skipped.
    • +
    • value: The current value being visited.
    • +
    + +

    TraverseOptions

    +

    You may set these options for traverse using an object as its 3rd argument.

    +
      +
    • ownKeys: A function that returns the own enumerable property names of an object.
    • +
    • rootNeedsVisit: A boolean indicating whether the root object should be visited.
    • +
    +

    See the Options section for more details.

    +

    Options

    +

    Traversing all properties

    +

    By default, non-enumerable properties and symbol properties are skipped. You can pass in a custom ownKeys implementation to control which object properties are visited.

    +

    This example shows how Reflect.ownKeys can be used to include non-enumerable properties and symbol properties. Note that symbol properties are always traversed last when using Reflect.ownKeys.

    +
    import * as _ from 'radashi'
    +
    const symbol = Symbol('b')
    const root = { [symbol]: 1 }
    Object.defineProperty(root, 'a', { value: 2, enumerable: false })
    +
    _.traverse(
    root,
    (value, key) => {
    console.log(key, '=>', value)
    },
    { ownKeys: Reflect.ownKeys },
    )
    // Logs the following:
    // a => 2
    // Symbol(b) => 1
    +

    Visiting the root object

    +

    By default, your visitor callback will never receive the object passed into traverse. To override this behavior, set the rootNeedsVisit option to true.

    +

    When the root object is visited, the key will be null.

    +
    import * as _ from 'radashi'
    +
    const root = { a: 1 }
    +
    _.traverse(
    root,
    (value, key) => {
    console.log(key, '=>', value)
    },
    { rootNeedsVisit: true },
    )
    // Logs the following:
    // null => { a: 1 }
    // a => 1
    +

    Advanced

    +

    Traversing other objects

    +

    If traversing plain objects and arrays isn’t enough, try calling traverse from within another traverse callback like follows. This takes advantage of the fact that the root object is always traversed.

    +
    import * as _ from 'radashi'
    +
    // Note how we're using a named visitor function so it can reference itself.
    _.traverse(root, function visitor(value, key, parent, context, options) {
    if (value instanceof MyClass) {
    return _.traverse(value, visitor, options, context)
    }
    // TODO: Handle other values as needed.
    })
    +

    If you didn’t set any options, the options argument can be null:

    +
    return _.traverse(root, visitor, null, context)
    +

    Skipping objects

    +

    Using the TraverseContext::skip method, you can prevent an object from being traversed. By calling skip() with no arguments, the current value won’t be traversed.

    +
    import * as _ from 'radashi'
    +
    const root = {
    a: { b: 1 },
    c: { d: 2 },
    }
    +
    _.traverse(root, (value, key, parent, context) => {
    console.log(key, '=>', value)
    +
    // Skip traversal of the 'a' object.
    if (key === 'a') {
    context.skip()
    }
    })
    // Logs the following:
    // a => { b: 1 }
    // c => { d: 2 }
    // d => 2
    +

    You can pass any object to skip() to skip traversal of that object.

    +
    import * as _ from 'radashi'
    +
    const root = {
    a: {
    b: {
    c: 1,
    },
    },
    }
    +
    _.traverse(root, (value, key, parent, context) => {
    console.log(key, '=>', value)
    +
    // Visit the properties of the current object, but skip any objects nested within.
    Object.values(value).forEach(nestedValue => {
    if (_.isObject(nestedValue)) {
    context.skip(nestedValue)
    }
    })
    })
    // Logs the following:
    // a => { b: { c: 1 } }
    // b => { c: 1 }
    +

    Exiting early

    +

    If your visitor callback returns false, traverse will exit early and also return false. This is useful if you found what you wanted, so you don’t need to traverse the rest of the objects.

    +
    let found = null
    _.traverse(root, value => {
    if (isWhatImLookingFor(value)) {
    found = value
    return false
    }
    })
    +

    Leave callbacks

    +

    If your visitor callback returns a function, it will be called once traverse has visited every visitable property/element within the current object. This is known as a “leave callback”.

    +

    Your leave callback can return false to exit traversal early.

    +
    _.traverse({ arr: ['a', 'b'] }, (value, key) => {
    if (isArray(value)) {
    console.log('start of array')
    return () => {
    console.log('end of array')
    return false
    }
    } else {
    console.log(key, '=>', value)
    }
    })
    // Logs the following:
    // start of array
    // 0 => 'a'
    // 1 => 'b'
    // end of array
    \ No newline at end of file diff --git a/reference/object/upperize/index.html b/reference/object/upperize/index.html new file mode 100644 index 00000000..37234096 --- /dev/null +++ b/reference/object/upperize/index.html @@ -0,0 +1,93 @@ + upperize | Radashi + + Skip to content

    upperize

    Convert all object keys to upper case

    146 bytes +

    Usage

    +

    Convert all keys in an object to upper case.

    +
    import * as _ from 'radashi'
    +
    const ra = {
    Mode: 'god',
    Power: 'sun',
    }
    +
    _.upperize(ra) // => { MODE, POWER }
    +

    The _.upperize function is a shortcut for _.mapKeys(obj, k => k.toUpperCase())

    \ No newline at end of file diff --git a/reference/random/draw/index.html b/reference/random/draw/index.html new file mode 100644 index 00000000..4ea0ce9d --- /dev/null +++ b/reference/random/draw/index.html @@ -0,0 +1,92 @@ + draw | Radashi + + Skip to content

    draw

    Get a random item from a list

    155 bytes +

    Usage

    +

    Draw, as in ‘to draw a card from a deck’, is used to get a random item from an array.

    +
    import * as _ from 'radashi'
    +
    const fish = ['marlin', 'bass', 'trout']
    +
    _.draw(fish) // => a random fish
    \ No newline at end of file diff --git a/reference/random/random/index.html b/reference/random/random/index.html new file mode 100644 index 00000000..fa77ff1d --- /dev/null +++ b/reference/random/random/index.html @@ -0,0 +1,91 @@ + random | Radashi + + Skip to content

    random

    Generate a random number

    80 bytes +

    Usage

    +

    Genearate a number within a range. This function is meant for utility use — not cryptographic.

    +
    import * as _ from 'radashi'
    +
    _.random(0, 100) // => a random number between 0 and 100
    \ No newline at end of file diff --git a/reference/random/shuffle/index.html b/reference/random/shuffle/index.html new file mode 100644 index 00000000..29ed7ede --- /dev/null +++ b/reference/random/shuffle/index.html @@ -0,0 +1,92 @@ + shuffle | Radashi + + Skip to content

    shuffle

    Randomly shuffle an array

    197 bytes +

    Usage

    +

    Create a new array with the items of the given array but in a random order. The randomization is done using the Fisher-Yates algorithm, which is mathematically proven to be unbiased (i.e. all permutations are equally likely).

    +
    import * as _ from 'radashi'
    +
    const fish = [
    {
    name: 'Marlin',
    weight: 105,
    source: 'ocean',
    },
    {
    name: 'Salmon',
    weight: 22,
    source: 'river',
    },
    {
    name: 'Salmon',
    weight: 22,
    source: 'river',
    },
    ]
    +
    _.shuffle(fish)
    \ No newline at end of file diff --git a/reference/random/uid/index.html b/reference/random/uid/index.html new file mode 100644 index 00000000..9bdf6deb --- /dev/null +++ b/reference/random/uid/index.html @@ -0,0 +1,92 @@ + uid | Radashi + + Skip to content

    uid

    Generate a unique identifier

    280 bytes +

    Usage

    +

    Generates a unique string with optional special characters.

    +
    import * as _ from 'radashi'
    +
    _.uid(7) // => UaOKdlW
    _.uid(20, '*') // => dyJdbC*NsEgcnGjTHS
    +

    Note, this function is optimized for simplicity and usability — not performance or security. If you need to create universally unique or cryptographically random strings use a package specifically for that purpose.

    \ No newline at end of file diff --git a/reference/series/series/index.html b/reference/series/series/index.html new file mode 100644 index 00000000..9307efc5 --- /dev/null +++ b/reference/series/series/index.html @@ -0,0 +1,99 @@ + series | Radashi + + Skip to content

    series

    Create an ordered series object

    642 bytes +

    Usage

    +

    Sometimes you have an enum or union type, possibly a status, that has inherint order and you need to work with values as though they’re ordered. The series function takes many values and returns an object that let’s you do ordered logic on those values.

    +
    import * as _ from 'radashi'
    +
    type Weekday = 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday'
    +
    const weekdays = _.series<Weekday>([
    'monday',
    'tuesday',
    'wednesday',
    'thursday',
    'friday',
    ])
    +
    weekdays.min('tuesday', 'thursday') // => 'tuesday'
    weekdays.max('wednesday', 'monday') // => 'wednesday'
    weekdays.next('wednesday') // => 'thursday'
    weekdays.previous('tuesday') // => 'monday'
    weekdays.first() // => 'monday'
    weekdays.last() // => 'friday'
    weekdays.next('friday') // => null
    weekdays.next('friday', weekdays.first()) // => 'monday'
    weekdays.spin('monday', 3) // => 'thursday'
    +

    Complex Data Types

    +

    When working with objects you’ll want to provide a second argument to series, a function that converts non-primitive values into an identity that can be checked for equality.

    +
    import * as _ from 'radashi'
    +
    type Weekday = {
    day: 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday'
    }
    +
    const weekdays = _.series<Weekday>(
    [
    { day: 'monday' },
    { day: 'tuesday' },
    { day: 'wednesday' },
    { day: 'thursday' },
    { day: 'friday' },
    ],
    w => w.day,
    )
    +
    weekdays.next({ day: 'wednesday' }) // => { day: 'thursday' }
    weekdays.previous({ day: 'tuesday' }) // => { day: 'monday' }
    \ No newline at end of file diff --git a/reference/string/camel/index.html b/reference/string/camel/index.html new file mode 100644 index 00000000..934112f0 --- /dev/null +++ b/reference/string/camel/index.html @@ -0,0 +1,91 @@ + camel | Radashi + + Skip to content

    camel

    Convert a string to camel case

    357 bytes +

    Usage

    +

    Given a string returns it in camel case format.

    +
    import * as _ from 'radashi'
    +
    _.camel('green fish blue fish') // => greenFishBlueFish
    \ No newline at end of file diff --git a/reference/string/capitalize/index.html b/reference/string/capitalize/index.html new file mode 100644 index 00000000..490b7c0e --- /dev/null +++ b/reference/string/capitalize/index.html @@ -0,0 +1,91 @@ + capitalize | Radashi + + Skip to content

    capitalize

    Convert a string to a capitalized format

    152 bytes +

    Usage

    +

    Given a string returns it with the first letter upper cased and all other letters lower cased.

    +
    import * as _ from 'radashi'
    +
    _.capitalize('green fish blue FISH') // => Green fish blue fish
    \ No newline at end of file diff --git a/reference/string/dash/index.html b/reference/string/dash/index.html new file mode 100644 index 00000000..7fd36a7f --- /dev/null +++ b/reference/string/dash/index.html @@ -0,0 +1,91 @@ + dash | Radashi + + Skip to content

    dash

    Convert a string to dash case

    334 bytes +

    Usage

    +

    Given a string returns it in dash case format.

    +
    import * as _ from 'radashi'
    +
    _.dash('green fish blue fish') // => green-fish-blue-fish
    \ No newline at end of file diff --git a/reference/string/pascal/index.html b/reference/string/pascal/index.html new file mode 100644 index 00000000..7688d10c --- /dev/null +++ b/reference/string/pascal/index.html @@ -0,0 +1,91 @@ + pascal | Radashi + + Skip to content

    pascal

    Convert a string to pascal case

    170 bytes +

    Usage

    +

    Formats the given string in pascal case fashion.

    +
    import * as _ from 'radashi'
    +
    _.pascal('hello world') // => 'HelloWorld'
    _.pascal('va va boom') // => 'VaVaBoom'
    \ No newline at end of file diff --git a/reference/string/similarity/index.html b/reference/string/similarity/index.html new file mode 100644 index 00000000..fc18f990 --- /dev/null +++ b/reference/string/similarity/index.html @@ -0,0 +1,105 @@ + similarity | Radashi + + Skip to content

    similarity

    Calculate the similarity between two strings using the Levenshtein distance algorithm

    455 bytes +

    Usage

    +

    The similarity function computes the Levenshtein distance between two input strings. This distance represents the minimum number of single-character edits (insertions, deletions, or substitutions) required to change one string into the other.

    +

    This function is useful for various applications, including:

    +
      +
    • Spell checking and autocorrect features
    • +
    • Fuzzy string matching
    • +
    • DNA sequence analysis
    • +
    • Plagiarism detection
    • +
    +

    The function is case-sensitive and treats whitespace as significant characters. The order of the input strings doesn’t affect the result, as the Levenshtein distance is symmetric.

    +
    import * as _ from 'radashi'
    +
    // Identical strings
    _.similarity('hello', 'hello') // => 0
    +
    // One character difference
    _.similarity('kitten', 'sitten') // => 1
    +
    // Multiple differences
    _.similarity('saturday', 'sunday') // => 3
    +
    // Case sensitivity
    _.similarity('foo', 'FOO') // => 3
    +
    // Whitespace significance
    _.similarity('bar ', 'bar') // => 1
    +
    // Argument order doesn't matter
    _.similarity('abc', 'cba') // => 2
    _.similarity('cba', 'abc') // => 2
    +

    The function returns a number representing the Levenshtein distance between the two input strings. A lower number indicates higher similarity, with 0 meaning the strings are identical.

    \ No newline at end of file diff --git a/reference/string/snake/index.html b/reference/string/snake/index.html new file mode 100644 index 00000000..6b847d73 --- /dev/null +++ b/reference/string/snake/index.html @@ -0,0 +1,94 @@ + snake | Radashi + + Skip to content

    snake

    Convert a string to snake case

    441 bytes +

    Usage

    +

    Given a string returns it in snake case format.

    +
    import * as _ from 'radashi'
    +
    _.snake('green fish blue fish') // => green_fish_blue_fish
    +

    Warning: In v11.0.0 a change was made to fix this function so that it correctly splits numbers from neighbouring letters (hello5 becomes hello_5). You can opt out of this behavior and continue with the legacy style (hello5 becomes hello5) by passing the splitOnNumber options.

    +
    _.snake('5green fish 2blue fish') // => 5_green_fish_2_blue_fish
    +
    _.snake('5green fish 2blue fish', {
    splitOnNumber: false,
    }) // => 5green_fish_2blue_fish
    \ No newline at end of file diff --git a/reference/string/template/index.html b/reference/string/template/index.html new file mode 100644 index 00000000..4401967d --- /dev/null +++ b/reference/string/template/index.html @@ -0,0 +1,91 @@ + template | Radashi + + Skip to content

    template

    Template a string with values from a data object using a search expression

    155 bytes +

    Usage

    +

    Given a string, an object of data, and a format expression to search for, returns a string with all elements that matched the search replaced with their matching value from the data object.

    +
    import * as _ from 'radashi'
    +
    _.template('It is {{color}}', { color: 'blue' }) // => It is blue
    _.template('It is <color>', { color: 'blue' }, /<(.+?)>/g) // => It is blue
    \ No newline at end of file diff --git a/reference/string/title/index.html b/reference/string/title/index.html new file mode 100644 index 00000000..332e8738 --- /dev/null +++ b/reference/string/title/index.html @@ -0,0 +1,91 @@ + title | Radashi + + Skip to content

    title

    Convert a string to title case

    273 bytes +

    Usage

    +

    Formats the given string in title case fashion

    +
    import * as _ from 'radashi'
    +
    _.title('hello world') // => 'Hello World'
    _.title('va_va_boom') // => 'Va Va Boom'
    _.title('root-hook') // => 'Root Hook'
    _.title('queryItems') // => 'Query Items'
    \ No newline at end of file diff --git a/reference/string/trim/index.html b/reference/string/trim/index.html new file mode 100644 index 00000000..0f6590dc --- /dev/null +++ b/reference/string/trim/index.html @@ -0,0 +1,93 @@ + trim | Radashi + + Skip to content

    trim

    Trim values from a string

    150 bytes +

    Usage

    +

    Trims all prefix and suffix characters from the given string. Like the builtin trim function but accepts alternate (other than space) characters you would like to trim.

    +
    import * as _ from 'radashi'
    +
    _.trim(' hello ') // => hello
    _.trim('__hello__', '_') // => hello
    _.trim('/repos/:owner/', '/') // => repos/:owner
    +

    Trim also handles more than one character to trim.

    +
    _.trim('222__hello__111', '12_') // => hello
    \ No newline at end of file diff --git a/reference/typed/isArray/index.html b/reference/typed/isArray/index.html new file mode 100644 index 00000000..6619f54e --- /dev/null +++ b/reference/typed/isArray/index.html @@ -0,0 +1,91 @@ + isArray | Radashi + + Skip to content

    isArray

    Determine if a value is an Array

    42 bytes +

    Usage

    +

    Pass in a value and get a boolean telling you if the value is an Array.

    +
    import * as _ from 'radashi'
    +
    _.isArray('hello') // => false
    _.isArray(['hello']) // => true
    \ No newline at end of file diff --git a/reference/typed/isBoolean/index.html b/reference/typed/isBoolean/index.html new file mode 100644 index 00000000..295dccc0 --- /dev/null +++ b/reference/typed/isBoolean/index.html @@ -0,0 +1,91 @@ + isBoolean | Radashi + + Skip to content

    isBoolean

    Check if a value is a boolean type

    65 bytes +

    Usage

    +

    Returns true if the value is a boolean type. Boxed boolean values (e.g. new Boolean(false)) are not considered booleans by this function.

    +
    import * as _ from 'radashi'
    +
    _.isBoolean(true) // => true
    _.isBoolean(false) // => true
    _.isBoolean('true') // => false
    _.isBoolean(1) // => false
    _.isBoolean(new Boolean(true)) // => false
    _.isBoolean(undefined) // => false
    _.isBoolean(null) // => false
    \ No newline at end of file diff --git a/reference/typed/isDate/index.html b/reference/typed/isDate/index.html new file mode 100644 index 00000000..d82ba7d0 --- /dev/null +++ b/reference/typed/isDate/index.html @@ -0,0 +1,91 @@ + isDate | Radashi + + Skip to content

    isDate

    Determine if a value is a Date

    124 bytes +

    Usage

    +

    Determine if a value is a Date. Does not check that the input date is valid, only that it is a Javascript Date type.

    +
    import * as _ from 'radashi'
    +
    _.isDate(new Date()) // => true
    _.isDate(12) // => false
    _.isDate('hello') // => false
    \ No newline at end of file diff --git a/reference/typed/isEmpty/index.html b/reference/typed/isEmpty/index.html new file mode 100644 index 00000000..b740805b --- /dev/null +++ b/reference/typed/isEmpty/index.html @@ -0,0 +1,92 @@ + isEmpty | Radashi + + Skip to content

    isEmpty

    Determine if a value is empty

    493 bytes +

    Usage

    +

    Pass in a value and get a boolean telling you if the value is empty.

    +
    import * as _ from 'radashi'
    +
    _.isEmpty([]) // => true
    _.isEmpty('') // => true
    +
    _.isEmpty('hello') // => false
    _.isEmpty(['hello']) // => false
    \ No newline at end of file diff --git a/reference/typed/isEqual/index.html b/reference/typed/isEqual/index.html new file mode 100644 index 00000000..e81a4530 --- /dev/null +++ b/reference/typed/isEqual/index.html @@ -0,0 +1,92 @@ + isEqual | Radashi + + Skip to content

    isEqual

    Determine if two values are equal

    456 bytes +

    Usage

    +

    Given two values, returns true if they are equal.

    +
    import * as _ from 'radashi'
    +
    _.isEqual(null, null) // => true
    _.isEqual([], []) // => true
    +
    _.isEqual('hello', 'world') // => false
    _.isEqual(22, 'abc') // => false
    \ No newline at end of file diff --git a/reference/typed/isFloat/index.html b/reference/typed/isFloat/index.html new file mode 100644 index 00000000..86b2de41 --- /dev/null +++ b/reference/typed/isFloat/index.html @@ -0,0 +1,91 @@ + isFloat | Radashi + + Skip to content

    isFloat

    Determine if a value is a float

    115 bytes +

    Usage

    +

    Pass in a value and get a boolean telling you if the value is a float.

    +
    import * as _ from 'radashi'
    +
    _.isFloat(12.233) // => true
    _.isFloat(12) // => false
    _.isFloat('hello') // => false
    \ No newline at end of file diff --git a/reference/typed/isFunction/index.html b/reference/typed/isFunction/index.html new file mode 100644 index 00000000..9fdf5dec --- /dev/null +++ b/reference/typed/isFunction/index.html @@ -0,0 +1,91 @@ + isFunction | Radashi + + Skip to content

    isFunction

    Determine if a value is a Function

    67 bytes +

    Usage

    +

    Pass in a value and get a boolean telling you if the value is a function.

    +
    import * as _ from 'radashi'
    +
    _.isFunction('hello') // => false
    _.isFunction(['hello']) // => false
    _.isFunction(() => 'hello') // => true
    \ No newline at end of file diff --git a/reference/typed/isInt/index.html b/reference/typed/isInt/index.html new file mode 100644 index 00000000..fef1af42 --- /dev/null +++ b/reference/typed/isInt/index.html @@ -0,0 +1,91 @@ + isInt | Radashi + + Skip to content

    isInt

    Determine if a value is an int

    43 bytes +

    Usage

    +

    Pass in a value and get a boolean telling you if the value is an int.

    +
    import * as _ from 'radashi'
    +
    _.isInt(12) // => true
    _.isInt(12.233) // => false
    _.isInt('hello') // => false
    \ No newline at end of file diff --git a/reference/typed/isIntString/index.html b/reference/typed/isIntString/index.html new file mode 100644 index 00000000..ce7d17e1 --- /dev/null +++ b/reference/typed/isIntString/index.html @@ -0,0 +1,93 @@ + isIntString | Radashi + + Skip to content

    isIntString

    Determine if a value is an int in string form

    146 bytes +

    Usage

    +

    Pass in a value and get a boolean telling you if the value is an int in string form.

    +
    import * as _ from 'radashi'
    +
    _.isIntString('12') // => true
    _.isIntString('-12') // => true
    +
    _.isIntString('12.233') // => false
    _.isIntString('12.0') // => false
    _.isIntString('+12') // => false
    +
    _.isIntString('hello') // => false
    _.isIntString(null) // => false
    _.isIntString(12) // => false
    \ No newline at end of file diff --git a/reference/typed/isMap/index.html b/reference/typed/isMap/index.html new file mode 100644 index 00000000..d27d7e65 --- /dev/null +++ b/reference/typed/isMap/index.html @@ -0,0 +1,92 @@ + isMap | Radashi + + Skip to content

    isMap

    Returns true for Map instances

    122 bytes +

    Usage

    +

    Returns true for Map instances, even if they are subclass instances or from +other realms.

    +
    import * as _ from 'radashi'
    +
    _.isMap(new Map()) // true
    _.isMap(new (class extends Map {})()) // true
    \ No newline at end of file diff --git a/reference/typed/isNumber/index.html b/reference/typed/isNumber/index.html new file mode 100644 index 00000000..afbee026 --- /dev/null +++ b/reference/typed/isNumber/index.html @@ -0,0 +1,91 @@ + isNumber | Radashi + + Skip to content

    isNumber

    Determine if a value is a number

    81 bytes +

    Usage

    +

    Pass in a value and get a boolean telling you if the value is a number.

    +
    import * as _ from 'radashi'
    +
    _.isNumber('hello') // => false
    _.isNumber(['hello']) // => false
    _.isNumber(12) // => true
    \ No newline at end of file diff --git a/reference/typed/isObject/index.html b/reference/typed/isObject/index.html new file mode 100644 index 00000000..1c7cc49a --- /dev/null +++ b/reference/typed/isObject/index.html @@ -0,0 +1,92 @@ + isObject | Radashi + + Skip to content

    isObject

    Determine if a value is an Object

    128 bytes +

    Usage

    +

    Pass in a value and get a boolean telling you if the value is an instance of Object (or a subclass of Object).

    +
    import * as _ from 'radashi'
    +
    _.isObject('hello') // => false
    _.isObject(['hello']) // => false
    _.isObject(null) // => false
    _.isObject({ say: 'hello' }) // => true
    +

    Beware: This function returns false for objects created with Object.create(null). If you want to check if a value is a plain object, use _.isPlainObject instead.

    \ No newline at end of file diff --git a/reference/typed/isPlainObject/index.html b/reference/typed/isPlainObject/index.html new file mode 100644 index 00000000..3f4f8923 --- /dev/null +++ b/reference/typed/isPlainObject/index.html @@ -0,0 +1,92 @@ + isPlainObject | Radashi + + Skip to content

    isPlainObject

    Determine if a value is a plain object

    185 bytes +

    Usage

    +

    Pass in a value and get a boolean telling you if the value is a plain object.

    +
    import * as _ from 'radashi'
    +
    _.isPlainObject({}) // => true
    _.isPlainObject(Object.create(null)) // => true
    +
    _.isPlainObject([]) // => false
    _.isPlainObject(null) // => false
    _.isPlainObject(new Date()) // => false
    \ No newline at end of file diff --git a/reference/typed/isPrimitive/index.html b/reference/typed/isPrimitive/index.html new file mode 100644 index 00000000..fd5149db --- /dev/null +++ b/reference/typed/isPrimitive/index.html @@ -0,0 +1,92 @@ + isPrimitive | Radashi + + Skip to content

    isPrimitive

    Checks if the given value is primitive

    97 bytes +

    Usage

    +

    Checks if the given value is primitive.

    +

    Primitive Types: number , string , boolean , symbol, bigint, undefined, null

    +
    import * as _ from 'radashi'
    +
    _.isPrimitive(22) // => true
    _.isPrimitive('hello') // => true
    _.isPrimitive(['hello']) // => false
    \ No newline at end of file diff --git a/reference/typed/isPromise/index.html b/reference/typed/isPromise/index.html new file mode 100644 index 00000000..1ea1b229 --- /dev/null +++ b/reference/typed/isPromise/index.html @@ -0,0 +1,91 @@ + isPromise | Radashi + + Skip to content

    isPromise

    Determine if a value is a Promise

    101 bytes +

    Usage

    +

    Pass in a value and get a boolean telling you if the value is a Promise. This function is not “bullet proof” because determining if a value is a Promise in javascript is not “bullet proof”. The standard/recommended method is to use Promise.resolve to essentially cast any value, promise or not, into an awaited value. However, this may do in a pinch.

    +
    import * as _ from 'radashi'
    +
    _.isPromise('hello') // => false
    _.isPromise(['hello']) // => false
    _.isPromise(new Promise(res => res())) // => true
    \ No newline at end of file diff --git a/reference/typed/isRegExp/index.html b/reference/typed/isRegExp/index.html new file mode 100644 index 00000000..c07289e5 --- /dev/null +++ b/reference/typed/isRegExp/index.html @@ -0,0 +1,92 @@ + isRegExp | Radashi + + Skip to content

    isRegExp

    Returns true for RegExp instances

    128 bytes +

    Usage

    +

    Returns true for RegExp instances, even if they are subclass instances or from +other realms.

    +
    import * as _ from 'radashi'
    +
    _.isRegExp(/.+/) // true
    _.isRegExp(new RegExp('.+')) // true
    _.isRegExp(new (class extends RegExp {})('.+')) // true
    \ No newline at end of file diff --git a/reference/typed/isSet/index.html b/reference/typed/isSet/index.html new file mode 100644 index 00000000..9d51c655 --- /dev/null +++ b/reference/typed/isSet/index.html @@ -0,0 +1,92 @@ + isSet | Radashi + + Skip to content

    isSet

    Returns true for Set instances

    122 bytes +

    Usage

    +

    Returns true for Set instances, even if they are subclass instances or from +other realms.

    +
    import * as _ from 'radashi'
    +
    _.isSet(new Set()) // true
    _.isSet(new (class extends Set {})()) // true
    \ No newline at end of file diff --git a/reference/typed/isString/index.html b/reference/typed/isString/index.html new file mode 100644 index 00000000..74d1d6f5 --- /dev/null +++ b/reference/typed/isString/index.html @@ -0,0 +1,91 @@ + isString | Radashi + + Skip to content

    isString

    Determine if a value is a String

    63 bytes +

    Usage

    +

    Pass in a value and get a boolean telling you if the value is a string.

    +
    import * as _ from 'radashi'
    +
    _.isString('hello') // => true
    _.isString(['hello']) // => false
    \ No newline at end of file diff --git a/reference/typed/isSymbol/index.html b/reference/typed/isSymbol/index.html new file mode 100644 index 00000000..088c8837 --- /dev/null +++ b/reference/typed/isSymbol/index.html @@ -0,0 +1,91 @@ + isSymbol | Radashi + + Skip to content

    isSymbol

    Determine if a value is a Symbol

    63 bytes +

    Usage

    +

    Pass in a value and get a boolean telling you if the value is a Symbol.

    +
    import * as _ from 'radashi'
    +
    _.isSymbol('hello') // => false
    _.isSymbol(Symbol('hello')) // => true
    \ No newline at end of file diff --git a/reference/typed/isWeakMap/index.html b/reference/typed/isWeakMap/index.html new file mode 100644 index 00000000..fee005b4 --- /dev/null +++ b/reference/typed/isWeakMap/index.html @@ -0,0 +1,92 @@ + isWeakMap | Radashi + + Skip to content

    isWeakMap

    Returns true for WeakMap instances

    130 bytes +

    Usage

    +

    Returns true for WeakMap instances, even if they are subclass instances or from +other realms.

    +
    import * as _ from 'radashi'
    +
    _.isWeakMap(new WeakMap()) // true
    _.isWeakMap(new (class extends WeakMap {})()) // true
    \ No newline at end of file diff --git a/reference/typed/isWeakSet/index.html b/reference/typed/isWeakSet/index.html new file mode 100644 index 00000000..12f3d102 --- /dev/null +++ b/reference/typed/isWeakSet/index.html @@ -0,0 +1,92 @@ + isWeakSet | Radashi + + Skip to content

    isWeakSet

    Returns true for WeakSet instances

    130 bytes +

    Usage

    +

    Returns true for WeakSet instances, even if they are subclass instances or from +other realms.

    +
    import * as _ from 'radashi'
    +
    _.isWeakSet(new WeakSet()) // true
    _.isWeakSet(new (class extends WeakSet {})()) // true
    \ No newline at end of file diff --git a/search-dark.svg b/search-dark.svg new file mode 100644 index 00000000..b5d42a7d --- /dev/null +++ b/search-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/search.svg b/search.svg new file mode 100644 index 00000000..065fdd00 --- /dev/null +++ b/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sitemap-0.xml b/sitemap-0.xml new file mode 100644 index 00000000..21e03864 --- /dev/null +++ b/sitemap-0.xml @@ -0,0 +1 @@ +https://radashi-org.github.io/https://radashi-org.github.io/browser-support/https://radashi-org.github.io/changelog/https://radashi-org.github.io/contributing/https://radashi-org.github.io/installation/https://radashi-org.github.io/our-ethos/https://radashi-org.github.io/reference/https://radashi-org.github.io/reference/array/alphabetical/https://radashi-org.github.io/reference/array/boil/https://radashi-org.github.io/reference/array/castArray/https://radashi-org.github.io/reference/array/castArrayIfExists/https://radashi-org.github.io/reference/array/cluster/https://radashi-org.github.io/reference/array/counting/https://radashi-org.github.io/reference/array/diff/https://radashi-org.github.io/reference/array/first/https://radashi-org.github.io/reference/array/flat/https://radashi-org.github.io/reference/array/fork/https://radashi-org.github.io/reference/array/group/https://radashi-org.github.io/reference/array/intersects/https://radashi-org.github.io/reference/array/iterate/https://radashi-org.github.io/reference/array/last/https://radashi-org.github.io/reference/array/list/https://radashi-org.github.io/reference/array/mapify/https://radashi-org.github.io/reference/array/merge/https://radashi-org.github.io/reference/array/objectify/https://radashi-org.github.io/reference/array/replace/https://radashi-org.github.io/reference/array/replaceOrAppend/https://radashi-org.github.io/reference/array/select/https://radashi-org.github.io/reference/array/selectFirst/https://radashi-org.github.io/reference/array/shift/https://radashi-org.github.io/reference/array/sift/https://radashi-org.github.io/reference/array/sort/https://radashi-org.github.io/reference/array/toggle/https://radashi-org.github.io/reference/array/unique/https://radashi-org.github.io/reference/array/unzip/https://radashi-org.github.io/reference/array/zip/https://radashi-org.github.io/reference/array/zipToObject/https://radashi-org.github.io/reference/async/all/https://radashi-org.github.io/reference/async/defer/https://radashi-org.github.io/reference/async/guard/https://radashi-org.github.io/reference/async/map/https://radashi-org.github.io/reference/async/parallel/https://radashi-org.github.io/reference/async/reduce/https://radashi-org.github.io/reference/async/retry/https://radashi-org.github.io/reference/async/sleep/https://radashi-org.github.io/reference/async/tryit/https://radashi-org.github.io/reference/curry/chain/https://radashi-org.github.io/reference/curry/compose/https://radashi-org.github.io/reference/curry/debounce/https://radashi-org.github.io/reference/curry/flip/https://radashi-org.github.io/reference/curry/memo/https://radashi-org.github.io/reference/curry/once/https://radashi-org.github.io/reference/curry/partial/https://radashi-org.github.io/reference/curry/partob/https://radashi-org.github.io/reference/curry/proxied/https://radashi-org.github.io/reference/curry/throttle/https://radashi-org.github.io/reference/function/always/https://radashi-org.github.io/reference/function/castComparator/https://radashi-org.github.io/reference/function/castMapping/https://radashi-org.github.io/reference/function/noop/https://radashi-org.github.io/reference/number/clamp/https://radashi-org.github.io/reference/number/inRange/https://radashi-org.github.io/reference/number/lerp/https://radashi-org.github.io/reference/number/max/https://radashi-org.github.io/reference/number/min/https://radashi-org.github.io/reference/number/range/https://radashi-org.github.io/reference/number/round/https://radashi-org.github.io/reference/number/sum/https://radashi-org.github.io/reference/number/toFloat/https://radashi-org.github.io/reference/number/toInt/https://radashi-org.github.io/reference/object/assign/https://radashi-org.github.io/reference/object/clone/https://radashi-org.github.io/reference/object/cloneDeep/https://radashi-org.github.io/reference/object/construct/https://radashi-org.github.io/reference/object/crush/https://radashi-org.github.io/reference/object/filterKey/https://radashi-org.github.io/reference/object/get/https://radashi-org.github.io/reference/object/invert/https://radashi-org.github.io/reference/object/keys/https://radashi-org.github.io/reference/object/listify/https://radashi-org.github.io/reference/object/lowerize/https://radashi-org.github.io/reference/object/mapEntries/https://radashi-org.github.io/reference/object/mapKeys/https://radashi-org.github.io/reference/object/mapValues/https://radashi-org.github.io/reference/object/omit/https://radashi-org.github.io/reference/object/pick/https://radashi-org.github.io/reference/object/set/https://radashi-org.github.io/reference/object/shake/https://radashi-org.github.io/reference/object/traverse/https://radashi-org.github.io/reference/object/upperize/https://radashi-org.github.io/reference/random/draw/https://radashi-org.github.io/reference/random/random/https://radashi-org.github.io/reference/random/shuffle/https://radashi-org.github.io/reference/random/uid/https://radashi-org.github.io/reference/series/series/https://radashi-org.github.io/reference/string/camel/https://radashi-org.github.io/reference/string/capitalize/https://radashi-org.github.io/reference/string/dash/https://radashi-org.github.io/reference/string/pascal/https://radashi-org.github.io/reference/string/similarity/https://radashi-org.github.io/reference/string/snake/https://radashi-org.github.io/reference/string/template/https://radashi-org.github.io/reference/string/title/https://radashi-org.github.io/reference/string/trim/https://radashi-org.github.io/reference/typed/isArray/https://radashi-org.github.io/reference/typed/isBoolean/https://radashi-org.github.io/reference/typed/isDate/https://radashi-org.github.io/reference/typed/isEmpty/https://radashi-org.github.io/reference/typed/isEqual/https://radashi-org.github.io/reference/typed/isFloat/https://radashi-org.github.io/reference/typed/isFunction/https://radashi-org.github.io/reference/typed/isInt/https://radashi-org.github.io/reference/typed/isIntString/https://radashi-org.github.io/reference/typed/isMap/https://radashi-org.github.io/reference/typed/isNumber/https://radashi-org.github.io/reference/typed/isObject/https://radashi-org.github.io/reference/typed/isPlainObject/https://radashi-org.github.io/reference/typed/isPrimitive/https://radashi-org.github.io/reference/typed/isPromise/https://radashi-org.github.io/reference/typed/isRegExp/https://radashi-org.github.io/reference/typed/isSet/https://radashi-org.github.io/reference/typed/isString/https://radashi-org.github.io/reference/typed/isSymbol/https://radashi-org.github.io/reference/typed/isWeakMap/https://radashi-org.github.io/reference/typed/isWeakSet/ \ No newline at end of file diff --git a/sitemap-index.xml b/sitemap-index.xml new file mode 100644 index 00000000..0cbb09f0 --- /dev/null +++ b/sitemap-index.xml @@ -0,0 +1 @@ +https://radashi-org.github.io/sitemap-0.xml \ No newline at end of file