From 4a9175d56855419ce4a2139362a37100c67ab277 Mon Sep 17 00:00:00 2001 From: James Harton Date: Wed, 22 Jan 2025 11:46:39 +1300 Subject: [PATCH] wip: First draft of latest/related typesense search function. --- assets/js/globals.js | 4 ++ assets/js/search-page.js | 72 ++++++++++++++++--- .../{html-PJYCFMY2.js => html-XTJIJCYG.js} | 22 +++--- 3 files changed, 79 insertions(+), 19 deletions(-) rename formatters/html/dist/{html-PJYCFMY2.js => html-XTJIJCYG.js} (62%) diff --git a/assets/js/globals.js b/assets/js/globals.js index b36bcf221..43b1433b9 100644 --- a/assets/js/globals.js +++ b/assets/js/globals.js @@ -15,3 +15,7 @@ export function getSidebarNodes () { export function getVersionNodes () { return window.versionNodes || [] } + +export function getSearchNodes () { + return window.searchNodes || [] +} diff --git a/assets/js/search-page.js b/assets/js/search-page.js index a60b95c72..b82005010 100644 --- a/assets/js/search-page.js +++ b/assets/js/search-page.js @@ -4,6 +4,7 @@ import lunr from 'lunr' import { qs, escapeHtmlEntities, isBlank, getQueryParamByName, getProjectNameAndVersion } from './helpers' import { setSearchInputValue } from './search-bar' import searchResultsTemplate from './handlebars/templates/search-results.handlebars' +import { getSearchNodes } from './globals' const EXCERPT_RADIUS = 80 const SEARCH_CONTAINER_SELECTOR = '#search' @@ -27,23 +28,27 @@ function initialize () { const pathname = window.location.pathname if (pathname.endsWith('/search.html') || pathname.endsWith('/search')) { const query = getQueryParamByName('q') - search(query) + const queryType = getQueryParamByName('type') + search(query, queryType) } } -async function search (value) { +async function search (value, queryType) { if (isBlank(value)) { renderResults({ value }) } else { setSearchInputValue(value) - const index = await getIndex() - try { - // We cannot match on atoms :foo because that would be considered - // a filter. So we escape all colons not preceded by a word. - const fixedValue = value.replaceAll(/(\B|\\):/g, '\\:') - const results = searchResultsToDecoratedSearchItems(index.search(fixedValue)) + let results = [] + const searchNodes = getSearchNodes() + + if (['related', 'latest'].includes(queryType) && searchNodes.length > 0) { + results = await remoteSearch(value, queryType, searchNodes) + } else { + results = await localSearch(value) + } + renderResults({ value, results }) } catch (error) { renderResults({ value, errorMessage: error.message }) @@ -51,6 +56,57 @@ async function search (value) { } } +async function localSearch (value) { + const index = await getIndex() + + // We cannot match on atoms :foo because that would be considered + // a filter. So we escape all colons not preceded by a word. + const fixedValue = value.replaceAll(/(\B|\\):/g, '\\:') + return searchResultsToDecoratedSearchItems(index.search(fixedValue)) +} + +async function remoteSearch (value, queryType, searchNodes) { + let filterNodes = searchNodes + + if (queryType === 'latest') { + filterNodes = searchNodes.slice(0, 1) + } + + const filters = filterNodes.map(node => `package:=${node.name}-${node.version}`).join(' || ') + + const params = new URLSearchParams() + params.set('q', value) + params.set('query_by', 'title,doc') + params.set('filter_by', filters) + + const response = await fetch(`https://search.hexdocs.pm/?${params.toString()}`) + const payload = await response.json() + + if (Array.isArray(payload.hits)) { + return payload.hits.map(result => { + const [packageName, packageVersion] = result.document.package.split('-') + + const doc = result.document.doc + const excerpts = [doc] + const metadata = {} + const ref = `https://hexdocs.pm/${packageName}/${packageVersion}/${result.document.ref}` + const title = result.document.title + const type = result.document.type + + return { + doc, + excerpts, + metadata, + ref, + title, + type + } + }) + } else { + return [] + } +} + function renderResults ({ value, results, errorMessage }) { const searchContainer = qs(SEARCH_CONTAINER_SELECTOR) const resultsHtml = searchResultsTemplate({ value, results, errorMessage }) diff --git a/formatters/html/dist/html-PJYCFMY2.js b/formatters/html/dist/html-XTJIJCYG.js similarity index 62% rename from formatters/html/dist/html-PJYCFMY2.js rename to formatters/html/dist/html-XTJIJCYG.js index 03dc7db0b..15021520e 100644 --- a/formatters/html/dist/html-PJYCFMY2.js +++ b/formatters/html/dist/html-XTJIJCYG.js @@ -1,9 +1,9 @@ -(()=>{var Hs=Object.create;var jn=Object.defineProperty;var Ns=Object.getOwnPropertyDescriptor;var Ds=Object.getOwnPropertyNames;var Bs=Object.getPrototypeOf,Qs=Object.prototype.hasOwnProperty;var T=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var qs=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ds(e))!Qs.call(t,i)&&i!==n&&jn(t,i,{get:()=>e[i],enumerable:!(r=Ns(e,i))||r.enumerable});return t};var Y=(t,e,n)=>(n=t!=null?Hs(Bs(t)):{},qs(e||!t||!t.__esModule?jn(n,"default",{value:t,enumerable:!0}):n,t));var gr=T((sc,mr)=>{var pr="Expected a function",hr=NaN,js="[object Symbol]",Ws=/^\s+|\s+$/g,zs=/^[-+]0x[0-9a-f]+$/i,Gs=/^0b[01]+$/i,Ks=/^0o[0-7]+$/i,Ys=parseInt,Js=typeof global=="object"&&global&&global.Object===Object&&global,Xs=typeof self=="object"&&self&&self.Object===Object&&self,Zs=Js||Xs||Function("return this")(),eo=Object.prototype,to=eo.toString,no=Math.max,ro=Math.min,Nt=function(){return Zs.Date.now()};function io(t,e,n){var r,i,s,o,a,l,u=0,c=!1,d=!1,h=!0;if(typeof t!="function")throw new TypeError(pr);e=fr(e)||0,Fe(n)&&(c=!!n.leading,d="maxWait"in n,s=d?no(fr(n.maxWait)||0,e):s,h="trailing"in n?!!n.trailing:h);function p(S){var R=r,U=i;return r=i=void 0,u=S,o=t.apply(U,R),o}function m(S){return u=S,a=setTimeout(w,e),c?p(S):o}function g(S){var R=S-l,U=S-u,ee=e-R;return d?ro(ee,s-U):ee}function v(S){var R=S-l,U=S-u;return l===void 0||R>=e||R<0||d&&U>=s}function w(){var S=Nt();if(v(S))return x(S);a=setTimeout(w,g(S))}function x(S){return a=void 0,h&&r?p(S):(r=i=void 0,o)}function I(){a!==void 0&&clearTimeout(a),u=0,r=l=i=a=void 0}function q(){return a===void 0?o:x(Nt())}function $(){var S=Nt(),R=v(S);if(r=arguments,i=this,l=S,R){if(a===void 0)return m(l);if(d)return a=setTimeout(w,e),p(l)}return a===void 0&&(a=setTimeout(w,e)),o}return $.cancel=I,$.flush=q,$}function so(t,e,n){var r=!0,i=!0;if(typeof t!="function")throw new TypeError(pr);return Fe(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),io(t,e,{leading:r,maxWait:e,trailing:i})}function Fe(t){var e=typeof t;return!!t&&(e=="object"||e=="function")}function oo(t){return!!t&&typeof t=="object"}function ao(t){return typeof t=="symbol"||oo(t)&&to.call(t)==js}function fr(t){if(typeof t=="number")return t;if(ao(t))return hr;if(Fe(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=Fe(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=t.replace(Ws,"");var n=Gs.test(t);return n||Ks.test(t)?Ys(t.slice(2),n?2:8):zs.test(t)?hr:+t}mr.exports=so});var F=T(D=>{"use strict";D.__esModule=!0;D.extend=Ar;D.indexOf=bo;D.escapeExpression=Eo;D.isEmpty=xo;D.createFrame=ko;D.blockParams=So;D.appendContextPath=To;var go={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},vo=/[&<>"'`=]/g,yo=/[&<>"'`=]/;function wo(t){return go[t]}function Ar(t){for(var e=1;e{"use strict";je.__esModule=!0;var jt=["description","fileName","lineNumber","endLineNumber","message","name","number","stack"];function Wt(t,e){var n=e&&e.loc,r=void 0,i=void 0,s=void 0,o=void 0;n&&(r=n.start.line,i=n.end.line,s=n.start.column,o=n.end.column,t+=" - "+r+":"+s);for(var a=Error.prototype.constructor.call(this,t),l=0;l{"use strict";We.__esModule=!0;var zt=F();We.default=function(t){t.registerHelper("blockHelperMissing",function(e,n){var r=n.inverse,i=n.fn;if(e===!0)return i(this);if(e===!1||e==null)return r(this);if(zt.isArray(e))return e.length>0?(n.ids&&(n.ids=[n.name]),t.helpers.each(e,n)):r(this);if(n.data&&n.ids){var s=zt.createFrame(n.data);s.contextPath=zt.appendContextPath(n.data.contextPath,n.name),n={data:s}}return i(e,n)})};Mr.exports=We.default});var Dr=T((ze,Nr)=>{"use strict";ze.__esModule=!0;function _o(t){return t&&t.__esModule?t:{default:t}}var we=F(),Lo=X(),Po=_o(Lo);ze.default=function(t){t.registerHelper("each",function(e,n){if(!n)throw new Po.default("Must pass iterator to #each");var r=n.fn,i=n.inverse,s=0,o="",a=void 0,l=void 0;n.data&&n.ids&&(l=we.appendContextPath(n.data.contextPath,n.ids[0])+"."),we.isFunction(e)&&(e=e.call(this)),n.data&&(a=we.createFrame(n.data));function u(m,g,v){a&&(a.key=m,a.index=g,a.first=g===0,a.last=!!v,l&&(a.contextPath=l+m)),o=o+r(e[m],{data:a,blockParams:we.blockParams([e[m],m],[l+m,null])})}if(e&&typeof e=="object")if(we.isArray(e))for(var c=e.length;s{"use strict";Ge.__esModule=!0;function Oo(t){return t&&t.__esModule?t:{default:t}}var Io=X(),Ao=Oo(Io);Ge.default=function(t){t.registerHelper("helperMissing",function(){if(arguments.length!==1)throw new Ao.default('Missing helper: "'+arguments[arguments.length-1].name+'"')})};Br.exports=Ge.default});var $r=T((Ke,Vr)=>{"use strict";Ke.__esModule=!0;function Co(t){return t&&t.__esModule?t:{default:t}}var qr=F(),Ro=X(),Fr=Co(Ro);Ke.default=function(t){t.registerHelper("if",function(e,n){if(arguments.length!=2)throw new Fr.default("#if requires exactly one argument");return qr.isFunction(e)&&(e=e.call(this)),!n.hash.includeZero&&!e||qr.isEmpty(e)?n.inverse(this):n.fn(this)}),t.registerHelper("unless",function(e,n){if(arguments.length!=2)throw new Fr.default("#unless requires exactly one argument");return t.helpers.if.call(this,e,{fn:n.inverse,inverse:n.fn,hash:n.hash})})};Vr.exports=Ke.default});var jr=T((Ye,Ur)=>{"use strict";Ye.__esModule=!0;Ye.default=function(t){t.registerHelper("log",function(){for(var e=[void 0],n=arguments[arguments.length-1],r=0;r{"use strict";Je.__esModule=!0;Je.default=function(t){t.registerHelper("lookup",function(e,n,r){return e&&r.lookupProperty(e,n)})};Wr.exports=Je.default});var Kr=T((Xe,Gr)=>{"use strict";Xe.__esModule=!0;function Mo(t){return t&&t.__esModule?t:{default:t}}var be=F(),Ho=X(),No=Mo(Ho);Xe.default=function(t){t.registerHelper("with",function(e,n){if(arguments.length!=2)throw new No.default("#with requires exactly one argument");be.isFunction(e)&&(e=e.call(this));var r=n.fn;if(be.isEmpty(e))return n.inverse(this);var i=n.data;return n.data&&n.ids&&(i=be.createFrame(n.data),i.contextPath=be.appendContextPath(n.data.contextPath,n.ids[0])),r(e,{data:i,blockParams:be.blockParams([e],[i&&i.contextPath])})})};Gr.exports=Xe.default});var Gt=T(Ze=>{"use strict";Ze.__esModule=!0;Ze.registerDefaultHelpers=Jo;Ze.moveHelperToHooks=Xo;function se(t){return t&&t.__esModule?t:{default:t}}var Do=Hr(),Bo=se(Do),Qo=Dr(),qo=se(Qo),Fo=Qr(),Vo=se(Fo),$o=$r(),Uo=se($o),jo=jr(),Wo=se(jo),zo=zr(),Go=se(zo),Ko=Kr(),Yo=se(Ko);function Jo(t){Bo.default(t),qo.default(t),Vo.default(t),Uo.default(t),Wo.default(t),Go.default(t),Yo.default(t)}function Xo(t,e,n){t.helpers[e]&&(t.hooks[e]=t.helpers[e],n||delete t.helpers[e])}});var Jr=T((et,Yr)=>{"use strict";et.__esModule=!0;var Zo=F();et.default=function(t){t.registerDecorator("inline",function(e,n,r,i){var s=e;return n.partials||(n.partials={},s=function(o,a){var l=r.partials;r.partials=Zo.extend({},l,n.partials);var u=e(o,a);return r.partials=l,u}),n.partials[i.args[0]]=i.fn,s})};Yr.exports=et.default});var Xr=T(Kt=>{"use strict";Kt.__esModule=!0;Kt.registerDefaultDecorators=ra;function ea(t){return t&&t.__esModule?t:{default:t}}var ta=Jr(),na=ea(ta);function ra(t){na.default(t)}});var Yt=T((tt,Zr)=>{"use strict";tt.__esModule=!0;var ia=F(),fe={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(e){if(typeof e=="string"){var n=ia.indexOf(fe.methodMap,e.toLowerCase());n>=0?e=n:e=parseInt(e,10)}return e},log:function(e){if(e=fe.lookupLevel(e),typeof console<"u"&&fe.lookupLevel(fe.level)<=e){var n=fe.methodMap[e];console[n]||(n="log");for(var r=arguments.length,i=Array(r>1?r-1:0),s=1;s{"use strict";Jt.__esModule=!0;Jt.createNewLookupObject=oa;var sa=F();function oa(){for(var t=arguments.length,e=Array(t),n=0;n{"use strict";Ee.__esModule=!0;Ee.createProtoAccessControl=ca;Ee.resultIsAllowed=da;Ee.resetLoggedProperties=fa;function aa(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}var ti=ei(),la=Yt(),ua=aa(la),nt=Object.create(null);function ca(t){var e=Object.create(null);e.constructor=!1,e.__defineGetter__=!1,e.__defineSetter__=!1,e.__lookupGetter__=!1;var n=Object.create(null);return n.__proto__=!1,{properties:{whitelist:ti.createNewLookupObject(n,t.allowedProtoProperties),defaultValue:t.allowProtoPropertiesByDefault},methods:{whitelist:ti.createNewLookupObject(e,t.allowedProtoMethods),defaultValue:t.allowProtoMethodsByDefault}}}function da(t,e,n){return ni(typeof t=="function"?e.methods:e.properties,n)}function ni(t,e){return t.whitelist[e]!==void 0?t.whitelist[e]===!0:t.defaultValue!==void 0?t.defaultValue:(ha(e),!1)}function ha(t){nt[t]!==!0&&(nt[t]=!0,ua.log("error",'Handlebars: Access has been denied to resolve the property "'+t+`" because it is not an "own property" of its parent. +(()=>{var Ns=Object.create;var Wn=Object.defineProperty;var Ds=Object.getOwnPropertyDescriptor;var Bs=Object.getOwnPropertyNames;var Qs=Object.getPrototypeOf,qs=Object.prototype.hasOwnProperty;var _=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Fs=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Bs(e))!qs.call(t,i)&&i!==n&&Wn(t,i,{get:()=>e[i],enumerable:!(r=Ds(e,i))||r.enumerable});return t};var Y=(t,e,n)=>(n=t!=null?Ns(Qs(t)):{},Fs(e||!t||!t.__esModule?Wn(n,"default",{value:t,enumerable:!0}):n,t));var vr=_((lc,gr)=>{var mr="Expected a function",fr=NaN,Ws="[object Symbol]",zs=/^\s+|\s+$/g,Gs=/^[-+]0x[0-9a-f]+$/i,Ks=/^0b[01]+$/i,Ys=/^0o[0-7]+$/i,Js=parseInt,Xs=typeof global=="object"&&global&&global.Object===Object&&global,Zs=typeof self=="object"&&self&&self.Object===Object&&self,eo=Xs||Zs||Function("return this")(),to=Object.prototype,no=to.toString,ro=Math.max,io=Math.min,Dt=function(){return eo.Date.now()};function so(t,e,n){var r,i,s,o,a,l,u=0,c=!1,d=!1,h=!0;if(typeof t!="function")throw new TypeError(mr);e=pr(e)||0,Fe(n)&&(c=!!n.leading,d="maxWait"in n,s=d?ro(pr(n.maxWait)||0,e):s,h="trailing"in n?!!n.trailing:h);function f(S){var R=r,U=i;return r=i=void 0,u=S,o=t.apply(U,R),o}function m(S){return u=S,a=setTimeout(w,e),c?f(S):o}function g(S){var R=S-l,U=S-u,ee=e-R;return d?io(ee,s-U):ee}function v(S){var R=S-l,U=S-u;return l===void 0||R>=e||R<0||d&&U>=s}function w(){var S=Dt();if(v(S))return x(S);a=setTimeout(w,g(S))}function x(S){return a=void 0,h&&r?f(S):(r=i=void 0,o)}function I(){a!==void 0&&clearTimeout(a),u=0,r=l=i=a=void 0}function q(){return a===void 0?o:x(Dt())}function $(){var S=Dt(),R=v(S);if(r=arguments,i=this,l=S,R){if(a===void 0)return m(l);if(d)return a=setTimeout(w,e),f(l)}return a===void 0&&(a=setTimeout(w,e)),o}return $.cancel=I,$.flush=q,$}function oo(t,e,n){var r=!0,i=!0;if(typeof t!="function")throw new TypeError(mr);return Fe(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),so(t,e,{leading:r,maxWait:e,trailing:i})}function Fe(t){var e=typeof t;return!!t&&(e=="object"||e=="function")}function ao(t){return!!t&&typeof t=="object"}function lo(t){return typeof t=="symbol"||ao(t)&&no.call(t)==Ws}function pr(t){if(typeof t=="number")return t;if(lo(t))return fr;if(Fe(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=Fe(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=t.replace(zs,"");var n=Ks.test(t);return n||Ys.test(t)?Js(t.slice(2),n?2:8):Gs.test(t)?fr:+t}gr.exports=oo});var F=_(D=>{"use strict";D.__esModule=!0;D.extend=Cr;D.indexOf=Eo;D.escapeExpression=xo;D.isEmpty=ko;D.createFrame=So;D.blockParams=_o;D.appendContextPath=Lo;var vo={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},yo=/[&<>"'`=]/g,wo=/[&<>"'`=]/;function bo(t){return vo[t]}function Cr(t){for(var e=1;e{"use strict";je.__esModule=!0;var Wt=["description","fileName","lineNumber","endLineNumber","message","name","number","stack"];function zt(t,e){var n=e&&e.loc,r=void 0,i=void 0,s=void 0,o=void 0;n&&(r=n.start.line,i=n.end.line,s=n.start.column,o=n.end.column,t+=" - "+r+":"+s);for(var a=Error.prototype.constructor.call(this,t),l=0;l{"use strict";We.__esModule=!0;var Gt=F();We.default=function(t){t.registerHelper("blockHelperMissing",function(e,n){var r=n.inverse,i=n.fn;if(e===!0)return i(this);if(e===!1||e==null)return r(this);if(Gt.isArray(e))return e.length>0?(n.ids&&(n.ids=[n.name]),t.helpers.each(e,n)):r(this);if(n.data&&n.ids){var s=Gt.createFrame(n.data);s.contextPath=Gt.appendContextPath(n.data.contextPath,n.name),n={data:s}}return i(e,n)})};Hr.exports=We.default});var Br=_((ze,Dr)=>{"use strict";ze.__esModule=!0;function To(t){return t&&t.__esModule?t:{default:t}}var we=F(),Po=X(),Oo=To(Po);ze.default=function(t){t.registerHelper("each",function(e,n){if(!n)throw new Oo.default("Must pass iterator to #each");var r=n.fn,i=n.inverse,s=0,o="",a=void 0,l=void 0;n.data&&n.ids&&(l=we.appendContextPath(n.data.contextPath,n.ids[0])+"."),we.isFunction(e)&&(e=e.call(this)),n.data&&(a=we.createFrame(n.data));function u(m,g,v){a&&(a.key=m,a.index=g,a.first=g===0,a.last=!!v,l&&(a.contextPath=l+m)),o=o+r(e[m],{data:a,blockParams:we.blockParams([e[m],m],[l+m,null])})}if(e&&typeof e=="object")if(we.isArray(e))for(var c=e.length;s{"use strict";Ge.__esModule=!0;function Io(t){return t&&t.__esModule?t:{default:t}}var Ao=X(),Co=Io(Ao);Ge.default=function(t){t.registerHelper("helperMissing",function(){if(arguments.length!==1)throw new Co.default('Missing helper: "'+arguments[arguments.length-1].name+'"')})};Qr.exports=Ge.default});var Ur=_((Ke,$r)=>{"use strict";Ke.__esModule=!0;function Ro(t){return t&&t.__esModule?t:{default:t}}var Fr=F(),Mo=X(),Vr=Ro(Mo);Ke.default=function(t){t.registerHelper("if",function(e,n){if(arguments.length!=2)throw new Vr.default("#if requires exactly one argument");return Fr.isFunction(e)&&(e=e.call(this)),!n.hash.includeZero&&!e||Fr.isEmpty(e)?n.inverse(this):n.fn(this)}),t.registerHelper("unless",function(e,n){if(arguments.length!=2)throw new Vr.default("#unless requires exactly one argument");return t.helpers.if.call(this,e,{fn:n.inverse,inverse:n.fn,hash:n.hash})})};$r.exports=Ke.default});var Wr=_((Ye,jr)=>{"use strict";Ye.__esModule=!0;Ye.default=function(t){t.registerHelper("log",function(){for(var e=[void 0],n=arguments[arguments.length-1],r=0;r{"use strict";Je.__esModule=!0;Je.default=function(t){t.registerHelper("lookup",function(e,n,r){return e&&r.lookupProperty(e,n)})};zr.exports=Je.default});var Yr=_((Xe,Kr)=>{"use strict";Xe.__esModule=!0;function Ho(t){return t&&t.__esModule?t:{default:t}}var be=F(),No=X(),Do=Ho(No);Xe.default=function(t){t.registerHelper("with",function(e,n){if(arguments.length!=2)throw new Do.default("#with requires exactly one argument");be.isFunction(e)&&(e=e.call(this));var r=n.fn;if(be.isEmpty(e))return n.inverse(this);var i=n.data;return n.data&&n.ids&&(i=be.createFrame(n.data),i.contextPath=be.appendContextPath(n.data.contextPath,n.ids[0])),r(e,{data:i,blockParams:be.blockParams([e],[i&&i.contextPath])})})};Kr.exports=Xe.default});var Kt=_(Ze=>{"use strict";Ze.__esModule=!0;Ze.registerDefaultHelpers=Xo;Ze.moveHelperToHooks=Zo;function se(t){return t&&t.__esModule?t:{default:t}}var Bo=Nr(),Qo=se(Bo),qo=Br(),Fo=se(qo),Vo=qr(),$o=se(Vo),Uo=Ur(),jo=se(Uo),Wo=Wr(),zo=se(Wo),Go=Gr(),Ko=se(Go),Yo=Yr(),Jo=se(Yo);function Xo(t){Qo.default(t),Fo.default(t),$o.default(t),jo.default(t),zo.default(t),Ko.default(t),Jo.default(t)}function Zo(t,e,n){t.helpers[e]&&(t.hooks[e]=t.helpers[e],n||delete t.helpers[e])}});var Xr=_((et,Jr)=>{"use strict";et.__esModule=!0;var ea=F();et.default=function(t){t.registerDecorator("inline",function(e,n,r,i){var s=e;return n.partials||(n.partials={},s=function(o,a){var l=r.partials;r.partials=ea.extend({},l,n.partials);var u=e(o,a);return r.partials=l,u}),n.partials[i.args[0]]=i.fn,s})};Jr.exports=et.default});var Zr=_(Yt=>{"use strict";Yt.__esModule=!0;Yt.registerDefaultDecorators=ia;function ta(t){return t&&t.__esModule?t:{default:t}}var na=Xr(),ra=ta(na);function ia(t){ra.default(t)}});var Jt=_((tt,ei)=>{"use strict";tt.__esModule=!0;var sa=F(),fe={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(e){if(typeof e=="string"){var n=sa.indexOf(fe.methodMap,e.toLowerCase());n>=0?e=n:e=parseInt(e,10)}return e},log:function(e){if(e=fe.lookupLevel(e),typeof console<"u"&&fe.lookupLevel(fe.level)<=e){var n=fe.methodMap[e];console[n]||(n="log");for(var r=arguments.length,i=Array(r>1?r-1:0),s=1;s{"use strict";Xt.__esModule=!0;Xt.createNewLookupObject=aa;var oa=F();function aa(){for(var t=arguments.length,e=Array(t),n=0;n{"use strict";Ee.__esModule=!0;Ee.createProtoAccessControl=da;Ee.resultIsAllowed=ha;Ee.resetLoggedProperties=pa;function la(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}var ni=ti(),ua=Jt(),ca=la(ua),nt=Object.create(null);function da(t){var e=Object.create(null);e.constructor=!1,e.__defineGetter__=!1,e.__defineSetter__=!1,e.__lookupGetter__=!1;var n=Object.create(null);return n.__proto__=!1,{properties:{whitelist:ni.createNewLookupObject(n,t.allowedProtoProperties),defaultValue:t.allowProtoPropertiesByDefault},methods:{whitelist:ni.createNewLookupObject(e,t.allowedProtoMethods),defaultValue:t.allowProtoMethodsByDefault}}}function ha(t,e,n){return ri(typeof t=="function"?e.methods:e.properties,n)}function ri(t,e){return t.whitelist[e]!==void 0?t.whitelist[e]===!0:t.defaultValue!==void 0?t.defaultValue:(fa(e),!1)}function fa(t){nt[t]!==!0&&(nt[t]=!0,ca.log("error",'Handlebars: Access has been denied to resolve the property "'+t+`" because it is not an "own property" of its parent. You can add a runtime option to disable the check or this warning: -See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details`))}function fa(){Object.keys(nt).forEach(function(t){delete nt[t]})}});var nn=T(j=>{"use strict";j.__esModule=!0;j.HandlebarsEnvironment=tn;function ri(t){return t&&t.__esModule?t:{default:t}}var oe=F(),pa=X(),Zt=ri(pa),ma=Gt(),ga=Xr(),va=Yt(),rt=ri(va),ya=Xt(),wa="4.7.7";j.VERSION=wa;var ba=8;j.COMPILER_REVISION=ba;var Ea=7;j.LAST_COMPATIBLE_COMPILER_REVISION=Ea;var xa={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};j.REVISION_CHANGES=xa;var en="[object Object]";function tn(t,e,n){this.helpers=t||{},this.partials=e||{},this.decorators=n||{},ma.registerDefaultHelpers(this),ga.registerDefaultDecorators(this)}tn.prototype={constructor:tn,logger:rt.default,log:rt.default.log,registerHelper:function(e,n){if(oe.toString.call(e)===en){if(n)throw new Zt.default("Arg not supported with multiple helpers");oe.extend(this.helpers,e)}else this.helpers[e]=n},unregisterHelper:function(e){delete this.helpers[e]},registerPartial:function(e,n){if(oe.toString.call(e)===en)oe.extend(this.partials,e);else{if(typeof n>"u")throw new Zt.default('Attempting to register a partial called "'+e+'" as undefined');this.partials[e]=n}},unregisterPartial:function(e){delete this.partials[e]},registerDecorator:function(e,n){if(oe.toString.call(e)===en){if(n)throw new Zt.default("Arg not supported with multiple decorators");oe.extend(this.decorators,e)}else this.decorators[e]=n},unregisterDecorator:function(e){delete this.decorators[e]},resetLoggedPropertyAccesses:function(){ya.resetLoggedProperties()}};var ka=rt.default.log;j.log=ka;j.createFrame=oe.createFrame;j.logger=rt.default});var si=T((it,ii)=>{"use strict";it.__esModule=!0;function rn(t){this.string=t}rn.prototype.toString=rn.prototype.toHTML=function(){return""+this.string};it.default=rn;ii.exports=it.default});var oi=T(sn=>{"use strict";sn.__esModule=!0;sn.wrapHelper=Sa;function Sa(t,e){if(typeof t!="function")return t;var n=function(){var i=arguments[arguments.length-1];return arguments[arguments.length-1]=e(i),t.apply(this,arguments)};return n}});var di=T(Z=>{"use strict";Z.__esModule=!0;Z.checkRevision=Ia;Z.template=Aa;Z.wrapProgram=st;Z.resolvePartial=Ca;Z.invokePartial=Ra;Z.noop=ui;function Ta(t){return t&&t.__esModule?t:{default:t}}function _a(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}var La=F(),z=_a(La),Pa=X(),G=Ta(Pa),K=nn(),ai=Gt(),Oa=oi(),li=Xt();function Ia(t){var e=t&&t[0]||1,n=K.COMPILER_REVISION;if(!(e>=K.LAST_COMPATIBLE_COMPILER_REVISION&&e<=K.COMPILER_REVISION))if(e{"use strict";ot.__esModule=!0;ot.default=function(t){var e=typeof global<"u"?global:window,n=e.Handlebars;t.noConflict=function(){return e.Handlebars===t&&(e.Handlebars=n),t}};hi.exports=ot.default});var ae=T((at,vi)=>{"use strict";at.__esModule=!0;function an(t){return t&&t.__esModule?t:{default:t}}function ln(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}var Da=nn(),pi=ln(Da),Ba=si(),Qa=an(Ba),qa=X(),Fa=an(qa),Va=F(),on=ln(Va),$a=di(),mi=ln($a),Ua=fi(),ja=an(Ua);function gi(){var t=new pi.HandlebarsEnvironment;return on.extend(t,pi),t.SafeString=Qa.default,t.Exception=Fa.default,t.Utils=on,t.escapeExpression=on.escapeExpression,t.VM=mi,t.template=function(e){return mi.template(e,t)},t}var xe=gi();xe.create=gi;ja.default(xe);xe.default=xe;at.default=xe;vi.exports=at.default});var Xi=T((Yi,Ji)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var c=t.utils.clone(n)||{};c.position=[a,u],c.index=s.length,s.push(new t.Token(r.slice(a,o),c))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. -`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?c+=2:a==l&&(n+=r[u+1]*i[c+1],u+=2,c+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c=s.str.charAt(0),d=s.str.charAt(1),h;d in s.node.edges?h=s.node.edges[d]:(h=new t.TokenSet,s.node.edges[d]=h),s.str.length==1&&(h.final=!0),i.push({node:h,editsRemaining:s.editsRemaining-1,str:c+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof Yi=="object"?Ji.exports=n():e.lunr=n()}(this,function(){return t})})()});var Wn=new URLSearchParams(window.location.search),A=window.self!==window.parent,zn=Wn.has("preview"),Gn=Wn.has("hint");function Ae(){return window.sidebarNodes||{}}function Kn(){return window.versionNodes||[]}var f=document.querySelector.bind(document),M=document.querySelectorAll.bind(document);function Yn(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function Re(t){return String(t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}function Me(){return document.getElementById("main").dataset.type}var Ce=["H1","H2","H3","H4","H5","H6"];function He(t=!1){let e=window.location.hash.replace(/^#/,"");if(!e)return t?document.getElementById("top-content"):null;let n=document.getElementById(e);if(!n)return null;if(n.matches(".detail"))return n;if(Ce.includes(n.tagName))return Pt(n);let r=Fs(n);return r||document.getElementById("top-content")}function Fs(t){let e=t.previousElementSibling;for(;e;){if(Ce.includes(e.tagName))return Pt(e);e=e.previousElementSibling}let n=t.parentNode;for(;n;){for(e=n.previousElementSibling;e;){if(Ce.includes(e.tagName))return Pt(e);e=e.previousElementSibling}n=n.parentNode}return null}function Pt(t){let e=document.createElement("div"),n=[t],r=t;for(;(r=r.nextSibling)&&!(Ce.includes(r.tagName)&&r.tagName<=t.tagName);)n.push(r);return e.append(...n),e}function Jn(t){return new URLSearchParams(window.location.search).get(t)}function Ot(t){return fetch(t).then(e=>e.ok).catch(()=>!1)}function he(t){return!t||t.trim()===""}function Xn(t,e){let n;return function(...i){clearTimeout(n),n=setTimeout(()=>{n=null,t(...i)},e)}}function Ne(){return document.head.querySelector("meta[name=project][content]").content}function De(){return document.documentElement.classList.contains("apple-os")}function E(t,e,n){let r=document.createElement(t);for(let i in e)e[i]!=null&&r.setAttribute(i,e[i]);return n&&r.replaceChildren(...n),r}if(zn&&A){let t=He(!0);if(t){document.body.classList.add("preview"),document.getElementById("content").replaceChildren(...t.childNodes);let e=document.getElementsByTagName("a:not([target=_blank]");for(let n of e)n.setAttribute("target","_parent");window.scrollTo(0,0),document.body.style.position="fixed",setTimeout(Zn),window.addEventListener("resize",Zn)}}function Zn(){let t={type:"preview",contentHeight:document.getElementById("content").parentElement.offsetHeight};window.parent.postMessage(t,"*")}var ie={plain:"plain",function:"function",module:"module"},Vs=[{href:"typespecs.html#basic-types",hint:{kind:ie.plain,description:"Basic type"}},{href:"typespecs.html#literals",hint:{kind:ie.plain,description:"Literal"}},{href:"typespecs.html#built-in-types",hint:{kind:ie.plain,description:"Built-in type"}}],Be={cancelHintFetching:null};function er(t){if(nr(t))return!0;let e=/#.*\//;return t.includes("#")&&!e.test(t)?!1:t.includes(".html")}function tr(t){let e=nr(t);return e?Promise.resolve(e):$s(t)}function nr(t){let e=Vs.find(n=>t.includes(n.href));return e?e.hint:null}function $s(t){let e=t.replace(".html",".html?hint=true");return new Promise((n,r)=>{let i=document.createElement("iframe");i.setAttribute("src",e),i.style.display="none";function s(a){let{href:l,hint:u}=a.data;e===l&&(o(),n(u))}Be.cancelHintFetching=()=>{o(),r(new Error("cancelled"))};function o(){i.remove(),window.removeEventListener("message",s),Be.cancelHintFetching=null}window.addEventListener("message",s),document.body.appendChild(i)})}function rr(){Be.cancelHintFetching&&Be.cancelHintFetching()}function ir(t){let n=t.querySelector("h1").textContent,r=t.querySelector(".docstring > p"),i=r?r.innerHTML:"";return{kind:ie.function,title:n.trim(),description:i.trim()}}function sr(t){let n=t.querySelector("h1 > span").textContent,r=t.querySelector("#moduledoc p"),i=r?r.innerHTML:"";return{kind:ie.module,title:n.trim(),description:i.trim()}}if(Gn&&A){let t=He(),e=t?ir(t):["modules","tasks"].includes(Me())?sr(f(".content-inner")):null;if(e){let n={hint:{...e,version:Ne()},href:window.location.href};window.parent.postMessage(n,"*")}f(".content-inner")?.replaceChildren()}var It="ex_doc:settings",or="dark",At="system",Ct="dark",Rt="light";var Us={tooltips:!0,theme:null,livebookUrl:null},Mt=class{constructor(){this._subscribers=[],this._settings=Us,this._loadSettings()}get(){return this._settings}update(e){let n=this._settings;this._settings={...this._settings,...e},this._subscribers.forEach(r=>r(this._settings,n)),this._storeSettings()}getAndSubscribe(e){this._subscribers.push(e),e(this._settings)}_loadSettings(){try{let e=localStorage.getItem(It);if(e){let n=JSON.parse(e);this._settings={...this._settings,...n}}this._loadSettingsLegacy()}catch(e){console.error(`Failed to load settings: ${e}`)}}_storeSettings(){try{this._storeSettingsLegacy(),localStorage.setItem(It,JSON.stringify(this._settings))}catch(e){console.error(`Failed to persist settings: ${e}`)}}_loadSettingsLegacy(){localStorage.getItem("tooltipsDisabled")!==null&&(this._settings={...this._settings,tooltips:!1}),localStorage.getItem("night-mode")==="true"&&(this._settings={...this._settings,nightMode:!0}),this._settings.nightMode===!0&&(this._settings={...this._settings,theme:"dark"})}_storeSettingsLegacy(){this._settings.tooltips?localStorage.removeItem("tooltipsDisabled"):localStorage.setItem("tooltipsDisabled","true"),this._settings.nightMode!==null?localStorage.setItem("night-mode",this._settings.nightMode===!0?"true":"false"):localStorage.removeItem("night-mode"),this._settings.theme!==null?(localStorage.setItem("night-mode",this._settings.theme==="dark"?"true":"false"),this._settings.nightMode=this._settings.theme==="dark"):(delete this._settings.nightMode,localStorage.removeItem("night-mode"))}},H=new Mt;var ar=!1,Qe=null,J=null;function lr(t){ar||(ar=!0,J=document.getElementById("toast"),J?.addEventListener("click",()=>{clearTimeout(Qe),J.classList.remove("show")})),J&&(clearTimeout(Qe),J.innerText=t,J.classList.add("show"),Qe=setTimeout(()=>{J.classList.remove("show"),Qe=setTimeout(function(){J.innerText=""},1e3)},5e3))}var Ht=[At,Ct,Rt],ur=window.matchMedia("(prefers-color-scheme: dark)");H.getAndSubscribe(cr);ur.addEventListener("change",cr);function cr(){let t=qe(),e=t===Ct||t!==Rt&&ur.matches;document.body.classList.toggle(or,e)}function dr(){let t=Ht[Ht.indexOf(qe())+1]||Ht[0];H.update({theme:t}),lr(`Set theme to "${t}"`)}function qe(){return new URLSearchParams(window.location.search).get("theme")||H.get().theme||At}var kr=Y(gr());var Dt="sidebar_state",Bt="closed",vr="open",yr="sidebar_width";var Ve="sidebar-open",$e="sidebar-transition";var wr=!1;function br(){if(wr)return;wr=!0;let t=document.getElementById("sidebar-list-nav");if(!t)return;let e=Me(),n={extras:t.dataset.extras||"Pages",modules:"Modules",tasks:'Mix Tasks'};Object.entries(n).forEach(([r,i])=>{let s=Ae()[r];if(!s?.length)return;let o=`${r}-list-tab-button`,a=`${r}-tab-panel`,l=r===e,u=E("button",{id:o,role:"tab",tabindex:l?0:-1,"aria-selected":l||void 0,"aria-controls":a});u.innerHTML=i,u.addEventListener("keydown",co),u.addEventListener("click",ho),t.appendChild(E("li",{},[u]));let c=E("ul",{class:"full-list"});c.addEventListener("click",fo);let d=E("div",{id:a,class:"sidebar-tabpanel",role:"tabpanel","aria-labelledby":o,hidden:l?void 0:""},[c]);document.getElementById("sidebar").appendChild(d);let h="",p,m;c.replaceChildren(...s.flatMap(g=>{let v=[],w=Array.isArray(g.headers),x=w?void 0:"no";return g.group!==h&&(v.push(E("li",{class:"group",translate:x},[g.group])),h=g.group,p=void 0),g.nested_context&&g.nested_context!==p?(p=g.nested_context,m!==p&&v.push(E("li",{class:"nesting-context",translate:"no","aria-hidden":!0},[p]))):m=g.title,v.push(E("li",{},[E("a",{href:`${g.id}.html`,translate:x},[g.nested_title||g.title]),...qt(`node-${g.id}-headers`,w?lo(g):uo(g))])),v}))}),window.addEventListener("hashchange",Qt),window.addEventListener("swup:page:view",Qt),Qt(),requestAnimationFrame(Er)}function qt(t,e){return e.length?[E("button",{"aria-label":"expand","aria-expanded":!1,"aria-controls":t}),E("ul",{id:t},e)]:[]}function lo(t){return t.headers.map(({id:e,anchor:n})=>E("li",{},[E("a",{href:`${t.id}.html#${n}`},[e])]))}function uo(t){let e=[];return t.sections?.length&&e.push(E("li",{},[E("a",{href:`${t.id}.html#content`},["Sections"]),...qt(`${t.id}-sections-list`,t.sections.map(({id:n,anchor:r})=>E("li",{},[E("a",{href:`${t.id}.html#${r}`},[n])])))])),t.nodeGroups&&(e.push(E("li",{},[E("a",{href:`${t.id}.html#summary`},["Summary"])])),e.push(...t.nodeGroups.map(({key:n,name:r,nodes:i})=>E("li",{},[E("a",{href:`${t.id}.html#${n}`},[r]),...qt(`node-${t.id}-group-${n}-list`,i.map(({anchor:s,title:o,id:a})=>E("li",{},[E("a",{href:`${t.id}.html#${s}`,title:o,translate:"no"},[a])])))])))),e}function Ft(t){let e=document.getElementById("sidebar-list-nav").querySelector("[aria-selected]");e!==t&&(e&&(e.removeAttribute("aria-selected"),e.setAttribute("tabindex","-1"),document.getElementById(e.getAttribute("aria-controls")).setAttribute("hidden","hidden")),t.setAttribute("aria-selected","true"),t.setAttribute("tabindex","0"),document.getElementById(t.getAttribute("aria-controls")).removeAttribute("hidden"))}function Er(){f("#sidebar [role=tabpanel]:not([hidden]) a[aria-selected]")?.scrollIntoView()}function Qt(){let t=document.getElementById("sidebar"),{pathname:e,hash:n}=window.location,r=e.split("/").pop().replace(/\.html$/,"")+".html",i=t.querySelector(`li a[href="${r+n}"]`)||t.querySelector(`li a[href="${r}"]`);if(!i)return;t.querySelectorAll(".full-list a[aria-selected]").forEach(o=>{o.removeAttribute("aria-selected")}),t.querySelectorAll(".full-list button[aria-expanded=true]").forEach(o=>{o.setAttribute("aria-expanded",!1)});let s=i.parentElement;for(;s;){if(s.tagName==="LI"){let o=s.firstChild;o.setAttribute("aria-selected",o.getAttribute("href")===r?"page":"true");let a=o.nextSibling;a?.tagName==="BUTTON"&&a.setAttribute("aria-expanded",!0)}else if(s.role==="tabpanel"){s.hasAttribute("hidden")&&Ft(document.getElementById(s.getAttribute("aria-labelledby")));break}s=s.parentElement}}function co(t){if(!["ArrowRight","ArrowLeft"].includes(t.key))return;let e=Array.from(M('#sidebar-list-nav [role="tab"]')),r=e.indexOf(t.currentTarget)+(t.key==="ArrowRight"?1:-1),i=e.at(r%e.length);Ft(i),i.focus()}function ho(t){Ft(t.currentTarget),Er()}function fo(t){let e=t.target;e.tagName==="BUTTON"&&e.setAttribute("aria-expanded",e.getAttribute("aria-expanded")==="false")}var mo=300,Sr=".sidebar-toggle",Tr=window.matchMedia(`screen and (max-width: ${768}px)`);if(!A){Vt(),window.addEventListener("swup:page:view",Vt);let t=document.getElementById("sidebar"),e=f(Sr);e.addEventListener("click",Ue),document.body.addEventListener("click",i=>{Tr.matches&&_r()&&!t.contains(i.target)&&!e.contains(i.target)&&Ue()});let n=window.innerWidth;window.addEventListener("resize",(0,kr.default)(()=>{n!==window.innerWidth&&(n=window.innerWidth,Vt())},100));let r=new ResizeObserver(([i])=>{if(!i)return;let s=i.contentRect.width;sessionStorage.setItem(yr,s),document.body.style.setProperty("--sidebarWidth",`${s}px`)});t.addEventListener("mousedown",()=>r.observe(t)),t.addEventListener("mouseup",()=>r.unobserve(t))}function Vt(){let e=sessionStorage.getItem(Dt)!==Bt&&!Tr.matches;Pr(e)}function Ue(){let t=!_r();return sessionStorage.setItem(Dt,t?vr:Bt),Or(t)}function _r(){return document.body.classList.contains(Ve)}function Lr(){return document.body.classList.contains(Ve)&&!document.body.classList.contains($e)}function Pr(t){t&&br(),document.body.classList.toggle(Ve,t),f(Sr).setAttribute("aria-expanded",t?"true":"false")}var xr;function Or(t){return new Promise(e=>{document.body.classList.add($e),document.body.scrollTop,Pr(t),clearTimeout(xr),xr=setTimeout(()=>{document.body.classList.remove($e),e()},mo)})}function Ir(){return Or(!0)}var yi=Y(ae());var un=Y(ae());un.registerHelper("isArray",function(t,e){return Array.isArray(t)?e.fn(this):e.inverse(this)});un.registerHelper("isNonEmptyArray",function(t,e){return Array.isArray(t)&&t.length>0?e.fn(this):e.inverse(this)});var wi=yi.template({1:function(t,e,n,r,i){var s,o,a=e??(t.nullContext||{}),l=t.hooks.helperMissing,u="function",c=t.escapeExpression,d=t.lookupProperty||function(h,p){if(Object.prototype.hasOwnProperty.call(h,p))return h[p]};return'