From 04a59b2f1b6a2689d7695c579da566fd961b2c69 Mon Sep 17 00:00:00 2001 From: mbeckem Date: Thu, 22 Aug 2024 14:34:01 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20conterra?= =?UTF-8?q?/reactivity@c22cf7a81c713c02e3051aeda214ac7c6c925a6a=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dev/.nojekyll | 1 + dev/assets/highlight.css | 99 ++ dev/assets/icons.js | 18 + dev/assets/icons.svg | 1 + dev/assets/main.js | 60 + dev/assets/navigation.js | 1 + dev/assets/search.js | 1 + dev/assets/style.css | 1448 +++++++++++++++++ dev/functions/batch.html | 10 + dev/functions/computed.html | 13 + dev/functions/effect.html | 25 + dev/functions/external.html | 14 + dev/functions/getValue.html | 4 + dev/functions/isReactive.html | 2 + dev/functions/isReadonlyReactive.html | 2 + dev/functions/nextTick.html | 3 + dev/functions/peekValue.html | 4 + dev/functions/reactive-1.html | 11 + dev/functions/reactiveArray-1.html | 5 + dev/functions/reactiveMap-1.html | 5 + dev/functions/reactiveSet-1.html | 5 + dev/functions/reactiveStruct.html | 65 + dev/functions/syncEffect.html | 16 + dev/functions/syncEffectOnce.html | 6 + dev/functions/syncWatch.html | 24 + dev/functions/syncWatchValue.html | 24 + dev/functions/untracked.html | 5 + dev/functions/watch.html | 38 + dev/functions/watchValue.html | 37 + dev/hierarchy.html | 1 + dev/index.html | 50 + dev/interfaces/CleanupHandle.html | 5 + dev/interfaces/ComputedMemberType.html | 6 + dev/interfaces/ExternalReactive.html | 24 + dev/interfaces/MethodMemberType.html | 6 + dev/interfaces/PropertyMemberType.html | 12 + dev/interfaces/Reactive.html | 16 + dev/interfaces/ReactiveArray.html | 127 ++ dev/interfaces/ReactiveMap.html | 25 + dev/interfaces/ReactiveOptions.html | 7 + dev/interfaces/ReactiveSet.html | 24 + dev/interfaces/ReactiveStructBuilder.html | 4 + dev/interfaces/ReactiveStructConstructor.html | 6 + dev/interfaces/ReadonlyReactive.html | 17 + dev/interfaces/ReadonlyReactiveArray.html | 103 ++ dev/interfaces/WatchOptions.html | 11 + dev/types/CleanupFunc.html | 4 + dev/types/EffectCallback.html | 6 + dev/types/EqualsFunc.html | 2 + dev/types/ReactiveStructDefinition.html | 4 + dev/types/ReadonlyReactiveMap.html | 3 + dev/types/ReadonlyReactiveSet.html | 3 + dev/types/WatchCallback.html | 7 + dev/types/WatchImmediateCallback.html | 3 + 54 files changed, 2423 insertions(+) create mode 100644 dev/.nojekyll create mode 100644 dev/assets/highlight.css create mode 100644 dev/assets/icons.js create mode 100644 dev/assets/icons.svg create mode 100644 dev/assets/main.js create mode 100644 dev/assets/navigation.js create mode 100644 dev/assets/search.js create mode 100644 dev/assets/style.css create mode 100644 dev/functions/batch.html create mode 100644 dev/functions/computed.html create mode 100644 dev/functions/effect.html create mode 100644 dev/functions/external.html create mode 100644 dev/functions/getValue.html create mode 100644 dev/functions/isReactive.html create mode 100644 dev/functions/isReadonlyReactive.html create mode 100644 dev/functions/nextTick.html create mode 100644 dev/functions/peekValue.html create mode 100644 dev/functions/reactive-1.html create mode 100644 dev/functions/reactiveArray-1.html create mode 100644 dev/functions/reactiveMap-1.html create mode 100644 dev/functions/reactiveSet-1.html create mode 100644 dev/functions/reactiveStruct.html create mode 100644 dev/functions/syncEffect.html create mode 100644 dev/functions/syncEffectOnce.html create mode 100644 dev/functions/syncWatch.html create mode 100644 dev/functions/syncWatchValue.html create mode 100644 dev/functions/untracked.html create mode 100644 dev/functions/watch.html create mode 100644 dev/functions/watchValue.html create mode 100644 dev/hierarchy.html create mode 100644 dev/index.html create mode 100644 dev/interfaces/CleanupHandle.html create mode 100644 dev/interfaces/ComputedMemberType.html create mode 100644 dev/interfaces/ExternalReactive.html create mode 100644 dev/interfaces/MethodMemberType.html create mode 100644 dev/interfaces/PropertyMemberType.html create mode 100644 dev/interfaces/Reactive.html create mode 100644 dev/interfaces/ReactiveArray.html create mode 100644 dev/interfaces/ReactiveMap.html create mode 100644 dev/interfaces/ReactiveOptions.html create mode 100644 dev/interfaces/ReactiveSet.html create mode 100644 dev/interfaces/ReactiveStructBuilder.html create mode 100644 dev/interfaces/ReactiveStructConstructor.html create mode 100644 dev/interfaces/ReadonlyReactive.html create mode 100644 dev/interfaces/ReadonlyReactiveArray.html create mode 100644 dev/interfaces/WatchOptions.html create mode 100644 dev/types/CleanupFunc.html create mode 100644 dev/types/EffectCallback.html create mode 100644 dev/types/EqualsFunc.html create mode 100644 dev/types/ReactiveStructDefinition.html create mode 100644 dev/types/ReadonlyReactiveMap.html create mode 100644 dev/types/ReadonlyReactiveSet.html create mode 100644 dev/types/WatchCallback.html create mode 100644 dev/types/WatchImmediateCallback.html diff --git a/dev/.nojekyll b/dev/.nojekyll new file mode 100644 index 0000000..e2ac661 --- /dev/null +++ b/dev/.nojekyll @@ -0,0 +1 @@ +TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. \ No newline at end of file diff --git a/dev/assets/highlight.css b/dev/assets/highlight.css new file mode 100644 index 0000000..3974013 --- /dev/null +++ b/dev/assets/highlight.css @@ -0,0 +1,99 @@ +:root { + --light-hl-0: #0000FF; + --dark-hl-0: #569CD6; + --light-hl-1: #000000; + --dark-hl-1: #D4D4D4; + --light-hl-2: #0070C1; + --dark-hl-2: #4FC1FF; + --light-hl-3: #795E26; + --dark-hl-3: #DCDCAA; + --light-hl-4: #098658; + --dark-hl-4: #B5CEA8; + --light-hl-5: #008000; + --dark-hl-5: #6A9955; + --light-hl-6: #001080; + --dark-hl-6: #9CDCFE; + --light-hl-7: #AF00DB; + --dark-hl-7: #C586C0; + --light-hl-8: #A31515; + --dark-hl-8: #CE9178; + --light-hl-9: #267F99; + --dark-hl-9: #4EC9B0; + --light-hl-10: #000000FF; + --dark-hl-10: #D4D4D4; + --light-code-background: #FFFFFF; + --dark-code-background: #1E1E1E; +} + +@media (prefers-color-scheme: light) { :root { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --hl-10: var(--light-hl-10); + --code-background: var(--light-code-background); +} } + +@media (prefers-color-scheme: dark) { :root { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --hl-10: var(--dark-hl-10); + --code-background: var(--dark-code-background); +} } + +:root[data-theme='light'] { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --hl-10: var(--light-hl-10); + --code-background: var(--light-code-background); +} + +:root[data-theme='dark'] { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --hl-10: var(--dark-hl-10); + --code-background: var(--dark-code-background); +} + +.hl-0 { color: var(--hl-0); } +.hl-1 { color: var(--hl-1); } +.hl-2 { color: var(--hl-2); } +.hl-3 { color: var(--hl-3); } +.hl-4 { color: var(--hl-4); } +.hl-5 { color: var(--hl-5); } +.hl-6 { color: var(--hl-6); } +.hl-7 { color: var(--hl-7); } +.hl-8 { color: var(--hl-8); } +.hl-9 { color: var(--hl-9); } +.hl-10 { color: var(--hl-10); } +pre, code { background: var(--code-background); } diff --git a/dev/assets/icons.js b/dev/assets/icons.js new file mode 100644 index 0000000..e88e8ca --- /dev/null +++ b/dev/assets/icons.js @@ -0,0 +1,18 @@ +(function() { + addIcons(); + function addIcons() { + if (document.readyState === "loading") return document.addEventListener("DOMContentLoaded", addIcons); + const svg = document.body.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "svg")); + svg.innerHTML = `""`; + svg.style.display = "none"; + if (location.protocol === "file:") updateUseElements(); + } + + function updateUseElements() { + document.querySelectorAll("use").forEach(el => { + if (el.getAttribute("href").includes("#icon-")) { + el.setAttribute("href", el.getAttribute("href").replace(/.*#/, "#")); + } + }); + } +})() \ No newline at end of file diff --git a/dev/assets/icons.svg b/dev/assets/icons.svg new file mode 100644 index 0000000..e371b8b --- /dev/null +++ b/dev/assets/icons.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dev/assets/main.js b/dev/assets/main.js new file mode 100644 index 0000000..21a5d74 --- /dev/null +++ b/dev/assets/main.js @@ -0,0 +1,60 @@ +"use strict"; +window.translations={"copy":"Copy","copied":"Copied!","normally_hidden":"This member is normally hidden due to your filter settings."}; +"use strict";(()=>{var Pe=Object.create;var ie=Object.defineProperty;var Oe=Object.getOwnPropertyDescriptor;var _e=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,Me=Object.prototype.hasOwnProperty;var Fe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var De=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of _e(e))!Me.call(t,i)&&i!==n&&ie(t,i,{get:()=>e[i],enumerable:!(r=Oe(e,i))||r.enumerable});return t};var Ae=(t,e,n)=>(n=t!=null?Pe(Re(t)):{},De(e||!t||!t.__esModule?ie(n,"default",{value:t,enumerable:!0}):n,t));var ue=Fe((ae,le)=>{(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 d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}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?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=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 d=s.str.charAt(0),m=s.str.charAt(1),p;m in s.node.edges?p=s.node.edges[m]:(p=new t.TokenSet,s.node.edges[m]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:d+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 ae=="object"?le.exports=n():e.lunr=n()}(this,function(){return t})})()});var se=[];function G(t,e){se.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){se.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}showPage(){document.body.style.display&&(document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e&&!Ve(e)){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r,document.querySelector(".col-sidebar").scrollTop=r}}updateIndexVisibility(){let e=document.querySelector(".tsd-index-content"),n=e?.open;e&&(e.open=!0),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let i=Array.from(r.querySelectorAll(".tsd-index-link")).every(s=>s.offsetParent==null);r.style.display=i?"none":"block"}),e&&(e.open=n)}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(!n)return;let r=n.offsetParent==null,i=n;for(;i!==document.body;)i instanceof HTMLDetailsElement&&(i.open=!0),i=i.parentElement;if(n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let s=document.createElement("p");s.classList.add("warning"),s.textContent=window.translations.normally_hidden,n.prepend(s)}r&&e.scrollIntoView()}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent=window.translations.copied,e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent=window.translations.copy},100)},1e3)})})}};function Ve(t){let e=t.getBoundingClientRect(),n=Math.max(document.documentElement.clientHeight,window.innerHeight);return!(e.bottom<0||e.top-n>=0)}var oe=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var pe=Ae(ue());async function ce(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=pe.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function fe(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{ce(e,t)}),ce(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");i.addEventListener("mouseup",()=>{te(t)}),r.addEventListener("focus",()=>t.classList.add("has-focus")),He(t,i,r,e)}function He(t,e,n,r){n.addEventListener("input",oe(()=>{Ne(t,e,n,r)},200)),n.addEventListener("keydown",i=>{i.key=="Enter"?Be(e,t):i.key=="ArrowUp"?(de(e,n,-1),i.preventDefault()):i.key==="ArrowDown"&&(de(e,n,1),i.preventDefault())}),document.body.addEventListener("keypress",i=>{i.altKey||i.ctrlKey||i.metaKey||!n.matches(":focus")&&i.key==="/"&&(i.preventDefault(),n.focus())}),document.body.addEventListener("keyup",i=>{t.classList.contains("has-focus")&&(i.key==="Escape"||!e.matches(":focus-within")&&!n.matches(":focus"))&&(n.blur(),te(t))})}function te(t){t.classList.remove("has-focus")}function Ne(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=he(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` + ${he(l.parent,i)}.${d}`);let m=document.createElement("li");m.classList.value=l.classes??"";let p=document.createElement("a");p.href=r.base+l.url,p.innerHTML=u+d,m.append(p),p.addEventListener("focus",()=>{e.querySelector(".current")?.classList.remove("current"),m.classList.add("current")}),e.appendChild(m)}}function de(t,e,n){let r=t.querySelector(".current");if(!r)r=t.querySelector(n==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let i=r;if(n===1)do i=i.nextElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);else do i=i.previousElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);i?(r.classList.remove("current"),i.classList.add("current")):n===-1&&(r.classList.remove("current"),e.focus())}}function Be(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),te(e)}}function he(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(ee(t.substring(s,o)),`${ee(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(ee(t.substring(s))),i.join("")}var je={"&":"&","<":"<",">":">","'":"'",'"':"""};function ee(t){return t.replace(/[&<>"'"]/g,e=>je[e])}var I=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",ye="mousemove",N="mouseup",J={x:0,y:0},me=!1,ne=!1,qe=!1,D=!1,ve=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(ve?"is-mobile":"not-mobile");ve&&"ontouchstart"in document.documentElement&&(qe=!0,F="touchstart",ye="touchmove",N="touchend");document.addEventListener(F,t=>{ne=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(ye,t=>{if(ne&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(N,()=>{ne=!1});document.addEventListener("click",t=>{me&&(t.preventDefault(),t.stopImmediatePropagation(),me=!1)});var X=class extends I{constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(N,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(F,n=>this.onDocumentPointerDown(n)),document.addEventListener(N,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var re;try{re=localStorage}catch{re={getItem(){return null},setItem(){}}}var Q=re;var ge=document.head.appendChild(document.createElement("style"));ge.dataset.for="filters";var Y=class extends I{constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ge.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`,this.app.updateIndexVisibility()}fromLocalStorage(){let e=Q.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){Q.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),this.app.updateIndexVisibility()}};var Z=class extends I{constructor(e){super(e),this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let r=this.summary.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function Ee(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,xe(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),xe(t.value)})}function xe(t){document.documentElement.dataset.theme=t}var K;function we(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",Le),Le())}async function Le(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();K=t.dataset.base,K.endsWith("/")||(K+="/"),t.innerHTML="";for(let s of i)Se(s,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function Se(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-accordion`:"tsd-accordion";let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.dataset.key=i.join("$"),o.innerHTML='',be(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)Se(u,l,i)}else be(t,r,t.class)}function be(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=K+t.path,n&&(r.className=n),location.pathname===r.pathname&&!r.href.includes("#")&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Te=document.getElementById("tsd-theme");Te&&Ee(Te);var $e=new U;Object.defineProperty(window,"app",{value:$e});fe();we();})(); +/*! Bundled license information: + +lunr/lunr.js: + (** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + *) + (*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + *) + (*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + *) +*/ diff --git a/dev/assets/navigation.js b/dev/assets/navigation.js new file mode 100644 index 0000000..3453e91 --- /dev/null +++ b/dev/assets/navigation.js @@ -0,0 +1 @@ +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA5XVUW/TMBAH8O/i58LYtA3RNyhD8BAN0Yk9oD24zmW16jjGudBGiO+OmjVNHMdn763S/e/XOLYvv/4yhAOyJVsp4LoxX7nOFbAFMxy3bMmkRrAFF1BfOIm3WywVW7Cd1DlbXt3c/lsMVFWaBiHPoNyAfWhNwPNiFHp3QLCaqx/ABco/8+Q0RIEZ4LaKPeM0RIHfbWXAYhsh/RiFkstNWWaf+Wgtb0mlS6RQGTcklHGTwtwblJWuSeqUSeHWgCS1Bkxi0DYCPzVS5WBpcJxMp1eVrrsfVQo/Skf+Iq+0amPHxQm9BiSPj5+k6EeOYktt/jhAzpmXgfSl0WJwsDXDrDqWJsK7D+8vb67Gg6UoQOCKK7XhYjeF3GrU+t1wVc890FCJGe7+f4ZCanl8FVMxlEvwnf1ybvOZnkZeqzq3cV71L6SndichtDVOMUn6VpaQS45Akl4qZm+OXQNVNFp0Z/eiK7jdt9ejRnH6As719jWiHbqzOdf8UqFaTx/K2eZTjWh/BvzJVQNz7X2NaJe1P6cGYKjGiMDIm1DEzHNIDQd8kONDMUB9jWg3ALvgSzkXCcASC+lrby4TgMms9pUukEQ5w8GHMm6SGGca+MwaMI3pRh0pdQmCqlst7oL3ZqgmEfdazO6Wm4hQj6HpcS6mAMGT5yYIqtFoudjNT6NzkQD2oYXsI4vYkwvYhx/+6T+zsctBvwwAAA==" \ No newline at end of file diff --git a/dev/assets/search.js b/dev/assets/search.js new file mode 100644 index 0000000..df14fd9 --- /dev/null +++ b/dev/assets/search.js @@ -0,0 +1 @@ +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/dev/assets/style.css b/dev/assets/style.css new file mode 100644 index 0000000..9d619a6 --- /dev/null +++ b/dev/assets/style.css @@ -0,0 +1,1448 @@ +:root { + /* Light */ + --light-color-background: #f2f4f8; + --light-color-background-secondary: #eff0f1; + --light-color-warning-text: #222; + --light-color-background-warning: #e6e600; + --light-color-icon-background: var(--light-color-background); + --light-color-accent: #c5c7c9; + --light-color-active-menu-item: var(--light-color-accent); + --light-color-text: #222; + --light-color-text-aside: #6e6e6e; + --light-color-link: #1f70c2; + --light-color-focus-outline: #3584e4; + + --light-color-ts-keyword: #056bd6; + --light-color-ts-project: #b111c9; + --light-color-ts-module: var(--light-color-ts-project); + --light-color-ts-namespace: var(--light-color-ts-project); + --light-color-ts-enum: #7e6f15; + --light-color-ts-enum-member: var(--light-color-ts-enum); + --light-color-ts-variable: #4760ec; + --light-color-ts-function: #572be7; + --light-color-ts-class: #1f70c2; + --light-color-ts-interface: #108024; + --light-color-ts-constructor: var(--light-color-ts-class); + --light-color-ts-property: var(--light-color-ts-variable); + --light-color-ts-method: var(--light-color-ts-function); + --light-color-ts-call-signature: var(--light-color-ts-method); + --light-color-ts-index-signature: var(--light-color-ts-property); + --light-color-ts-constructor-signature: var(--light-color-ts-constructor); + --light-color-ts-parameter: var(--light-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --light-color-ts-type-parameter: #a55c0e; + --light-color-ts-accessor: var(--light-color-ts-property); + --light-color-ts-get-signature: var(--light-color-ts-accessor); + --light-color-ts-set-signature: var(--light-color-ts-accessor); + --light-color-ts-type-alias: #d51270; + /* reference not included as links will be colored with the kind that it points to */ + --light-color-document: #000000; + + --light-external-icon: url("data:image/svg+xml;utf8,"); + --light-color-scheme: light; + + /* Dark */ + --dark-color-background: #2b2e33; + --dark-color-background-secondary: #1e2024; + --dark-color-background-warning: #bebe00; + --dark-color-warning-text: #222; + --dark-color-icon-background: var(--dark-color-background-secondary); + --dark-color-accent: #9096a2; + --dark-color-active-menu-item: #5d5d6a; + --dark-color-text: #f5f5f5; + --dark-color-text-aside: #dddddd; + --dark-color-link: #00aff4; + --dark-color-focus-outline: #4c97f2; + + --dark-color-ts-keyword: #3399ff; + --dark-color-ts-project: #e358ff; + --dark-color-ts-module: var(--dark-color-ts-project); + --dark-color-ts-namespace: var(--dark-color-ts-project); + --dark-color-ts-enum: #f4d93e; + --dark-color-ts-enum-member: var(--dark-color-ts-enum); + --dark-color-ts-variable: #798dff; + --dark-color-ts-function: #a280ff; + --dark-color-ts-class: #8ac4ff; + --dark-color-ts-interface: #6cff87; + --dark-color-ts-constructor: var(--dark-color-ts-class); + --dark-color-ts-property: var(--dark-color-ts-variable); + --dark-color-ts-method: var(--dark-color-ts-function); + --dark-color-ts-call-signature: var(--dark-color-ts-method); + --dark-color-ts-index-signature: var(--dark-color-ts-property); + --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); + --dark-color-ts-parameter: var(--dark-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --dark-color-ts-type-parameter: #e07d13; + --dark-color-ts-accessor: var(--dark-color-ts-property); + --dark-color-ts-get-signature: var(--dark-color-ts-accessor); + --dark-color-ts-set-signature: var(--dark-color-ts-accessor); + --dark-color-ts-type-alias: #ff6492; + /* reference not included as links will be colored with the kind that it points to */ + --dark-color-document: #ffffff; + + --dark-external-icon: url("data:image/svg+xml;utf8,"); + --dark-color-scheme: dark; +} + +@media (prefers-color-scheme: light) { + :root { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + --color-focus-outline: var(--light-color-focus-outline); + + --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + --color-document: var(--light-color-document); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); + } +} + +@media (prefers-color-scheme: dark) { + :root { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + --color-focus-outline: var(--dark-color-focus-outline); + + --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + --color-document: var(--dark-color-document); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); + } +} + +html { + color-scheme: var(--color-scheme); +} + +body { + margin: 0; +} + +:root[data-theme="light"] { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + --color-focus-outline: var(--light-color-focus-outline); + + --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + --color-document: var(--light-color-document); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); +} + +:root[data-theme="dark"] { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + --color-focus-outline: var(--dark-color-focus-outline); + + --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + --color-document: var(--dark-color-document); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); +} + +*:focus-visible, +.tsd-accordion-summary:focus-visible svg { + outline: 2px solid var(--color-focus-outline); +} + +.always-visible, +.always-visible .tsd-signatures { + display: inherit !important; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + line-height: 1.2; +} + +h1 { + font-size: 1.875rem; + margin: 0.67rem 0; +} + +h2 { + font-size: 1.5rem; + margin: 0.83rem 0; +} + +h3 { + font-size: 1.25rem; + margin: 1rem 0; +} + +h4 { + font-size: 1.05rem; + margin: 1.33rem 0; +} + +h5 { + font-size: 1rem; + margin: 1.5rem 0; +} + +h6 { + font-size: 0.875rem; + margin: 2.33rem 0; +} + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +.container { + max-width: 1700px; + padding: 0 2rem; +} + +/* Footer */ +footer { + border-top: 1px solid var(--color-accent); + padding-top: 1rem; + padding-bottom: 1rem; + max-height: 3.5rem; +} +footer > p { + margin: 0 1em; +} + +.container-main { + margin: 0 auto; + /* toolbar, footer, margin */ + min-height: calc(100vh - 41px - 56px - 4rem); +} + +@keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes fade-out { + from { + opacity: 1; + visibility: visible; + } + to { + opacity: 0; + } +} +@keyframes fade-in-delayed { + 0% { + opacity: 0; + } + 33% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes fade-out-delayed { + 0% { + opacity: 1; + visibility: visible; + } + 66% { + opacity: 0; + } + 100% { + opacity: 0; + } +} +@keyframes pop-in-from-right { + from { + transform: translate(100%, 0); + } + to { + transform: translate(0, 0); + } +} +@keyframes pop-out-to-right { + from { + transform: translate(0, 0); + visibility: visible; + } + to { + transform: translate(100%, 0); + } +} +body { + background: var(--color-background); + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", + Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + font-size: 16px; + color: var(--color-text); +} + +a { + color: var(--color-link); + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +a.external[target="_blank"] { + background-image: var(--external-icon); + background-position: top 3px right; + background-repeat: no-repeat; + padding-right: 13px; +} +a.tsd-anchor-link { + color: var(--color-text); +} + +code, +pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + padding: 0.2em; + margin: 0; + font-size: 0.875rem; + border-radius: 0.8em; +} + +pre { + position: relative; + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; + padding: 10px; + border: 1px solid var(--color-accent); +} +pre code { + padding: 0; + font-size: 100%; +} +pre > button { + position: absolute; + top: 10px; + right: 10px; + opacity: 0; + transition: opacity 0.1s; + box-sizing: border-box; +} +pre:hover > button, +pre > button.visible { + opacity: 1; +} + +blockquote { + margin: 1em 0; + padding-left: 1em; + border-left: 4px solid gray; +} + +.tsd-typography { + line-height: 1.333em; +} +.tsd-typography ul { + list-style: square; + padding: 0 0 0 20px; + margin: 0; +} +.tsd-typography .tsd-index-panel h3, +.tsd-index-panel .tsd-typography h3, +.tsd-typography h4, +.tsd-typography h5, +.tsd-typography h6 { + font-size: 1em; +} +.tsd-typography h5, +.tsd-typography h6 { + font-weight: normal; +} +.tsd-typography p, +.tsd-typography ul, +.tsd-typography ol { + margin: 1em 0; +} +.tsd-typography table { + border-collapse: collapse; + border: none; +} +.tsd-typography td, +.tsd-typography th { + padding: 6px 13px; + border: 1px solid var(--color-accent); +} +.tsd-typography thead, +.tsd-typography tr:nth-child(even) { + background-color: var(--color-background-secondary); +} + +.tsd-breadcrumb { + margin: 0; + padding: 0; + color: var(--color-text-aside); +} +.tsd-breadcrumb a { + color: var(--color-text-aside); + text-decoration: none; +} +.tsd-breadcrumb a:hover { + text-decoration: underline; +} +.tsd-breadcrumb li { + display: inline; +} +.tsd-breadcrumb li:after { + content: " / "; +} + +.tsd-comment-tags { + display: flex; + flex-direction: column; +} +dl.tsd-comment-tag-group { + display: flex; + align-items: center; + overflow: hidden; + margin: 0.5em 0; +} +dl.tsd-comment-tag-group dt { + display: flex; + margin-right: 0.5em; + font-size: 0.875em; + font-weight: normal; +} +dl.tsd-comment-tag-group dd { + margin: 0; +} +code.tsd-tag { + padding: 0.25em 0.4em; + border: 0.1em solid var(--color-accent); + margin-right: 0.25em; + font-size: 70%; +} +h1 code.tsd-tag:first-of-type { + margin-left: 0.25em; +} + +dl.tsd-comment-tag-group dd:before, +dl.tsd-comment-tag-group dd:after { + content: " "; +} +dl.tsd-comment-tag-group dd pre, +dl.tsd-comment-tag-group dd:after { + clear: both; +} +dl.tsd-comment-tag-group p { + margin: 0; +} + +.tsd-panel.tsd-comment .lead { + font-size: 1.1em; + line-height: 1.333em; + margin-bottom: 2em; +} +.tsd-panel.tsd-comment .lead:last-child { + margin-bottom: 0; +} + +.tsd-filter-visibility h4 { + font-size: 1rem; + padding-top: 0.75rem; + padding-bottom: 0.5rem; + margin: 0; +} +.tsd-filter-item:not(:last-child) { + margin-bottom: 0.5rem; +} +.tsd-filter-input { + display: flex; + width: -moz-fit-content; + width: fit-content; + align-items: center; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; +} +.tsd-filter-input input[type="checkbox"] { + cursor: pointer; + position: absolute; + width: 1.5em; + height: 1.5em; + opacity: 0; +} +.tsd-filter-input input[type="checkbox"]:disabled { + pointer-events: none; +} +.tsd-filter-input svg { + cursor: pointer; + width: 1.5em; + height: 1.5em; + margin-right: 0.5em; + border-radius: 0.33em; + /* Leaving this at full opacity breaks event listeners on Firefox. + Don't remove unless you know what you're doing. */ + opacity: 0.99; +} +.tsd-filter-input input[type="checkbox"]:focus-visible + svg { + outline: 2px solid var(--color-focus-outline); +} +.tsd-checkbox-background { + fill: var(--color-accent); +} +input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { + stroke: var(--color-text); +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { + fill: var(--color-background); + stroke: var(--color-accent); + stroke-width: 0.25rem; +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { + stroke: var(--color-accent); +} + +.settings-label { + font-weight: bold; + text-transform: uppercase; + display: inline-block; +} + +.tsd-filter-visibility .settings-label { + margin: 0.75rem 0 0.5rem 0; +} + +.tsd-theme-toggle .settings-label { + margin: 0.75rem 0.75rem 0 0; +} + +.tsd-hierarchy { + list-style: square; + margin: 0; +} +.tsd-hierarchy .target { + font-weight: bold; +} + +.tsd-full-hierarchy:not(:last-child) { + margin-bottom: 1em; + padding-bottom: 1em; + border-bottom: 1px solid var(--color-accent); +} +.tsd-full-hierarchy, +.tsd-full-hierarchy ul { + list-style: none; + margin: 0; + padding: 0; +} +.tsd-full-hierarchy ul { + padding-left: 1.5rem; +} +.tsd-full-hierarchy a { + padding: 0.25rem 0 !important; + font-size: 1rem; + display: inline-flex; + align-items: center; + color: var(--color-text); +} + +.tsd-panel-group.tsd-index-group { + margin-bottom: 0; +} +.tsd-index-panel .tsd-index-list { + list-style: none; + line-height: 1.333em; + margin: 0; + padding: 0.25rem 0 0 0; + overflow: hidden; + display: grid; + grid-template-columns: repeat(3, 1fr); + column-gap: 1rem; + grid-template-rows: auto; +} +@media (max-width: 1024px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(2, 1fr); + } +} +@media (max-width: 768px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(1, 1fr); + } +} +.tsd-index-panel .tsd-index-list li { + -webkit-page-break-inside: avoid; + -moz-page-break-inside: avoid; + -ms-page-break-inside: avoid; + -o-page-break-inside: avoid; + page-break-inside: avoid; +} + +.tsd-flag { + display: inline-block; + padding: 0.25em 0.4em; + border-radius: 4px; + color: var(--color-comment-tag-text); + background-color: var(--color-comment-tag); + text-indent: 0; + font-size: 75%; + line-height: 1; + font-weight: normal; +} + +.tsd-anchor { + position: relative; + top: -100px; +} + +.tsd-member { + position: relative; +} +.tsd-member .tsd-anchor + h3 { + display: flex; + align-items: center; + margin-top: 0; + margin-bottom: 0; + border-bottom: none; +} + +.tsd-navigation.settings { + margin: 1rem 0; +} +.tsd-navigation > a, +.tsd-navigation .tsd-accordion-summary { + width: calc(100% - 0.25rem); + display: flex; + align-items: center; +} +.tsd-navigation a, +.tsd-navigation summary > span, +.tsd-page-navigation a { + display: flex; + width: calc(100% - 0.25rem); + align-items: center; + padding: 0.25rem; + color: var(--color-text); + text-decoration: none; + box-sizing: border-box; +} +.tsd-navigation a.current, +.tsd-page-navigation a.current { + background: var(--color-active-menu-item); +} +.tsd-navigation a:hover, +.tsd-page-navigation a:hover { + text-decoration: underline; +} +.tsd-navigation ul, +.tsd-page-navigation ul { + margin-top: 0; + margin-bottom: 0; + padding: 0; + list-style: none; +} +.tsd-navigation li, +.tsd-page-navigation li { + padding: 0; + max-width: 100%; +} +.tsd-navigation .tsd-nav-link { + display: none; +} +.tsd-nested-navigation { + margin-left: 3rem; +} +.tsd-nested-navigation > li > details { + margin-left: -1.5rem; +} +.tsd-small-nested-navigation { + margin-left: 1.5rem; +} +.tsd-small-nested-navigation > li > details { + margin-left: -1.5rem; +} + +.tsd-page-navigation-section { + margin-left: 10px; +} +.tsd-page-navigation-section > summary { + padding: 0.25rem; +} +.tsd-page-navigation-section > div { + margin-left: 20px; +} +.tsd-page-navigation ul { + padding-left: 1.75rem; +} + +#tsd-sidebar-links a { + margin-top: 0; + margin-bottom: 0.5rem; + line-height: 1.25rem; +} +#tsd-sidebar-links a:last-of-type { + margin-bottom: 0; +} + +a.tsd-index-link { + padding: 0.25rem 0 !important; + font-size: 1rem; + line-height: 1.25rem; + display: inline-flex; + align-items: center; + color: var(--color-text); +} +.tsd-accordion-summary { + list-style-type: none; /* hide marker on non-safari */ + outline: none; /* broken on safari, so just hide it */ +} +.tsd-accordion-summary::-webkit-details-marker { + display: none; /* hide marker on safari */ +} +.tsd-accordion-summary, +.tsd-accordion-summary a { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + + cursor: pointer; +} +.tsd-accordion-summary a { + width: calc(100% - 1.5rem); +} +.tsd-accordion-summary > * { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; +} +.tsd-accordion .tsd-accordion-summary > svg { + margin-left: 0.25rem; + vertical-align: text-top; +} +.tsd-index-content > :not(:first-child) { + margin-top: 0.75rem; +} +.tsd-index-heading { + margin-top: 1.5rem; + margin-bottom: 0.75rem; +} + +.tsd-kind-icon { + margin-right: 0.5rem; + width: 1.25rem; + height: 1.25rem; + min-width: 1.25rem; + min-height: 1.25rem; +} +.tsd-kind-icon path { + transform-origin: center; + transform: scale(1.1); +} +.tsd-signature > .tsd-kind-icon { + margin-right: 0.8rem; +} + +.tsd-panel { + margin-bottom: 2.5rem; +} +.tsd-panel.tsd-member { + margin-bottom: 4rem; +} +.tsd-panel:empty { + display: none; +} +.tsd-panel > h1, +.tsd-panel > h2, +.tsd-panel > h3 { + margin: 1.5rem -1.5rem 0.75rem -1.5rem; + padding: 0 1.5rem 0.75rem 1.5rem; +} +.tsd-panel > h1.tsd-before-signature, +.tsd-panel > h2.tsd-before-signature, +.tsd-panel > h3.tsd-before-signature { + margin-bottom: 0; + border-bottom: none; +} + +.tsd-panel-group { + margin: 2rem 0; +} +.tsd-panel-group.tsd-index-group { + margin: 2rem 0; +} +.tsd-panel-group.tsd-index-group details { + margin: 2rem 0; +} +.tsd-panel-group > .tsd-accordion-summary { + margin-bottom: 1rem; +} + +#tsd-search { + transition: background-color 0.2s; +} +#tsd-search .title { + position: relative; + z-index: 2; +} +#tsd-search .field { + position: absolute; + left: 0; + top: 0; + right: 2.5rem; + height: 100%; +} +#tsd-search .field input { + box-sizing: border-box; + position: relative; + top: -50px; + z-index: 1; + width: 100%; + padding: 0 10px; + opacity: 0; + outline: 0; + border: 0; + background: transparent; + color: var(--color-text); +} +#tsd-search .field label { + position: absolute; + overflow: hidden; + right: -40px; +} +#tsd-search .field input, +#tsd-search .title, +#tsd-toolbar-links a { + transition: opacity 0.2s; +} +#tsd-search .results { + position: absolute; + visibility: hidden; + top: 40px; + width: 100%; + margin: 0; + padding: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); +} +#tsd-search .results li { + background-color: var(--color-background); + line-height: initial; + padding: 4px; +} +#tsd-search .results li:nth-child(even) { + background-color: var(--color-background-secondary); +} +#tsd-search .results li.state { + display: none; +} +#tsd-search .results li.current:not(.no-results), +#tsd-search .results li:hover:not(.no-results) { + background-color: var(--color-accent); +} +#tsd-search .results a { + display: flex; + align-items: center; + padding: 0.25rem; + box-sizing: border-box; +} +#tsd-search .results a:before { + top: 10px; +} +#tsd-search .results span.parent { + color: var(--color-text-aside); + font-weight: normal; +} +#tsd-search.has-focus { + background-color: var(--color-accent); +} +#tsd-search.has-focus .field input { + top: 0; + opacity: 1; +} +#tsd-search.has-focus .title, +#tsd-search.has-focus #tsd-toolbar-links a { + z-index: 0; + opacity: 0; +} +#tsd-search.has-focus .results { + visibility: visible; +} +#tsd-search.loading .results li.state.loading { + display: block; +} +#tsd-search.failure .results li.state.failure { + display: block; +} + +#tsd-toolbar-links { + position: absolute; + top: 0; + right: 2rem; + height: 100%; + display: flex; + align-items: center; + justify-content: flex-end; +} +#tsd-toolbar-links a { + margin-left: 1.5rem; +} +#tsd-toolbar-links a:hover { + text-decoration: underline; +} + +.tsd-signature { + margin: 0 0 1rem 0; + padding: 1rem 0.5rem; + border: 1px solid var(--color-accent); + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 14px; + overflow-x: auto; +} + +.tsd-signature-keyword { + color: var(--color-ts-keyword); + font-weight: normal; +} + +.tsd-signature-symbol { + color: var(--color-text-aside); + font-weight: normal; +} + +.tsd-signature-type { + font-style: italic; + font-weight: normal; +} + +.tsd-signatures { + padding: 0; + margin: 0 0 1em 0; + list-style-type: none; +} +.tsd-signatures .tsd-signature { + margin: 0; + border-color: var(--color-accent); + border-width: 1px 0; + transition: background-color 0.1s; +} +.tsd-signatures .tsd-index-signature:not(:last-child) { + margin-bottom: 1em; +} +.tsd-signatures .tsd-index-signature .tsd-signature { + border-width: 1px; +} +.tsd-description .tsd-signatures .tsd-signature { + border-width: 1px; +} + +ul.tsd-parameter-list, +ul.tsd-type-parameter-list { + list-style: square; + margin: 0; + padding-left: 20px; +} +ul.tsd-parameter-list > li.tsd-parameter-signature, +ul.tsd-type-parameter-list > li.tsd-parameter-signature { + list-style: none; + margin-left: -20px; +} +ul.tsd-parameter-list h5, +ul.tsd-type-parameter-list h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; +} +.tsd-sources { + margin-top: 1rem; + font-size: 0.875em; +} +.tsd-sources a { + color: var(--color-text-aside); + text-decoration: underline; +} +.tsd-sources ul { + list-style: none; + padding: 0; +} + +.tsd-page-toolbar { + position: sticky; + z-index: 1; + top: 0; + left: 0; + width: 100%; + color: var(--color-text); + background: var(--color-background-secondary); + border-bottom: 1px var(--color-accent) solid; + transition: transform 0.3s ease-in-out; +} +.tsd-page-toolbar a { + color: var(--color-text); + text-decoration: none; +} +.tsd-page-toolbar a.title { + font-weight: bold; +} +.tsd-page-toolbar a.title:hover { + text-decoration: underline; +} +.tsd-page-toolbar .tsd-toolbar-contents { + display: flex; + justify-content: space-between; + height: 2.5rem; + margin: 0 auto; +} +.tsd-page-toolbar .table-cell { + position: relative; + white-space: nowrap; + line-height: 40px; +} +.tsd-page-toolbar .table-cell:first-child { + width: 100%; +} +.tsd-page-toolbar .tsd-toolbar-icon { + box-sizing: border-box; + line-height: 0; + padding: 12px 0; +} + +.tsd-widget { + display: inline-block; + overflow: hidden; + opacity: 0.8; + height: 40px; + transition: + opacity 0.1s, + background-color 0.2s; + vertical-align: bottom; + cursor: pointer; +} +.tsd-widget:hover { + opacity: 0.9; +} +.tsd-widget.active { + opacity: 1; + background-color: var(--color-accent); +} +.tsd-widget.no-caption { + width: 40px; +} +.tsd-widget.no-caption:before { + margin: 0; +} + +.tsd-widget.options, +.tsd-widget.menu { + display: none; +} +input[type="checkbox"] + .tsd-widget:before { + background-position: -120px 0; +} +input[type="checkbox"]:checked + .tsd-widget:before { + background-position: -160px 0; +} + +img { + max-width: 100%; +} + +.tsd-anchor-icon { + display: inline-flex; + align-items: center; + margin-left: 0.5rem; + vertical-align: middle; + color: var(--color-text); +} + +.tsd-anchor-icon svg { + width: 1em; + height: 1em; + visibility: hidden; +} + +.tsd-anchor-link:hover > .tsd-anchor-icon svg { + visibility: visible; +} + +.deprecated { + text-decoration: line-through !important; +} + +.warning { + padding: 1rem; + color: var(--color-warning-text); + background: var(--color-background-warning); +} + +.tsd-kind-project { + color: var(--color-ts-project); +} +.tsd-kind-module { + color: var(--color-ts-module); +} +.tsd-kind-namespace { + color: var(--color-ts-namespace); +} +.tsd-kind-enum { + color: var(--color-ts-enum); +} +.tsd-kind-enum-member { + color: var(--color-ts-enum-member); +} +.tsd-kind-variable { + color: var(--color-ts-variable); +} +.tsd-kind-function { + color: var(--color-ts-function); +} +.tsd-kind-class { + color: var(--color-ts-class); +} +.tsd-kind-interface { + color: var(--color-ts-interface); +} +.tsd-kind-constructor { + color: var(--color-ts-constructor); +} +.tsd-kind-property { + color: var(--color-ts-property); +} +.tsd-kind-method { + color: var(--color-ts-method); +} +.tsd-kind-call-signature { + color: var(--color-ts-call-signature); +} +.tsd-kind-index-signature { + color: var(--color-ts-index-signature); +} +.tsd-kind-constructor-signature { + color: var(--color-ts-constructor-signature); +} +.tsd-kind-parameter { + color: var(--color-ts-parameter); +} +.tsd-kind-type-literal { + color: var(--color-ts-type-literal); +} +.tsd-kind-type-parameter { + color: var(--color-ts-type-parameter); +} +.tsd-kind-accessor { + color: var(--color-ts-accessor); +} +.tsd-kind-get-signature { + color: var(--color-ts-get-signature); +} +.tsd-kind-set-signature { + color: var(--color-ts-set-signature); +} +.tsd-kind-type-alias { + color: var(--color-ts-type-alias); +} + +/* if we have a kind icon, don't color the text by kind */ +.tsd-kind-icon ~ span { + color: var(--color-text); +} + +* { + scrollbar-width: thin; + scrollbar-color: var(--color-accent) var(--color-icon-background); +} + +*::-webkit-scrollbar { + width: 0.75rem; +} + +*::-webkit-scrollbar-track { + background: var(--color-icon-background); +} + +*::-webkit-scrollbar-thumb { + background-color: var(--color-accent); + border-radius: 999rem; + border: 0.25rem solid var(--color-icon-background); +} + +/* mobile */ +@media (max-width: 769px) { + .tsd-widget.options, + .tsd-widget.menu { + display: inline-block; + } + + .container-main { + display: flex; + } + html .col-content { + float: none; + max-width: 100%; + width: 100%; + } + html .col-sidebar { + position: fixed !important; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 1024; + top: 0 !important; + bottom: 0 !important; + left: auto !important; + right: 0 !important; + padding: 1.5rem 1.5rem 0 0; + width: 75vw; + visibility: hidden; + background-color: var(--color-background); + transform: translate(100%, 0); + } + html .col-sidebar > *:last-child { + padding-bottom: 20px; + } + html .overlay { + content: ""; + display: block; + position: fixed; + z-index: 1023; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + visibility: hidden; + } + + .to-has-menu .overlay { + animation: fade-in 0.4s; + } + + .to-has-menu .col-sidebar { + animation: pop-in-from-right 0.4s; + } + + .from-has-menu .overlay { + animation: fade-out 0.4s; + } + + .from-has-menu .col-sidebar { + animation: pop-out-to-right 0.4s; + } + + .has-menu body { + overflow: hidden; + } + .has-menu .overlay { + visibility: visible; + } + .has-menu .col-sidebar { + visibility: visible; + transform: translate(0, 0); + display: flex; + flex-direction: column; + gap: 1.5rem; + max-height: 100vh; + padding: 1rem 2rem; + } + .has-menu .tsd-navigation { + max-height: 100%; + } + #tsd-toolbar-links { + display: none; + } + .tsd-navigation .tsd-nav-link { + display: flex; + } +} + +/* one sidebar */ +@media (min-width: 770px) { + .container-main { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); + grid-template-areas: "sidebar content"; + margin: 2rem auto; + } + + .col-sidebar { + grid-area: sidebar; + } + .col-content { + grid-area: content; + padding: 0 1rem; + } +} +@media (min-width: 770px) and (max-width: 1399px) { + .col-sidebar { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + padding-top: 1rem; + } + .site-menu { + margin-top: 1rem; + } +} + +/* two sidebars */ +@media (min-width: 1200px) { + .container-main { + grid-template-columns: minmax(0, 1fr) minmax(0, 2.5fr) minmax(0, 20rem); + grid-template-areas: "sidebar content toc"; + } + + .col-sidebar { + display: contents; + } + + .page-menu { + grid-area: toc; + padding-left: 1rem; + } + .site-menu { + grid-area: sidebar; + } + + .site-menu { + margin-top: 1rem 0; + } + + .page-menu, + .site-menu { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + } +} diff --git a/dev/functions/batch.html b/dev/functions/batch.html new file mode 100644 index 0000000..0975079 --- /dev/null +++ b/dev/functions/batch.html @@ -0,0 +1,10 @@ +batch | @conterra/reactivity-core - v0.4.0
  • Executes a set of reactive updates implemented in callback. +Effects are delayed until the batch has completed.

    +

    It is good practice to group multiple updates into a batch to prevent +an excessive number of effects from triggering.

    +

    batch returns the value of callback().

    +

    Example:

    +
    const r1 = reactive(1);
    const r2 = reactive(2);

    // Log r1 and r2 every time they change.
    syncEffect(() => {
    console.log(r1.value, r2.value);
    });

    // Trigger multiple updates at once.
    batch(() => {
    // these two updates don't trigger the effect yet
    r1.value = 2;
    r2.value = 3;
    });
    // now the effect runs once +
    + +

    Type Parameters

    • T

    Parameters

    • callback: (() => T)
        • (): T
        • Returns T

    Returns T

diff --git a/dev/functions/computed.html b/dev/functions/computed.html new file mode 100644 index 0000000..22511e2 --- /dev/null +++ b/dev/functions/computed.html @@ -0,0 +1,13 @@ +computed | @conterra/reactivity-core - v0.4.0
  • Creates a new computed signal.

    +

    The compute callback will be executed (and re-executed as necessary) to provide the current value. +The function body of compute is tracked automatically: any reactive values used by compute +will be watched automatically; if any of them changes then the computed value will be updated as well.

    +
    +

    NOTE: the compute callback should not have any side effects as it may be called any number of times +if its dependencies change.

    +
    +

    Example:

    +
    const foo = reactive(1);
    const doubleFoo = computed(() => foo.value * 2);
    console.log(doubleFoo.value); // 2

    foo.value = 2;
    console.log(doubleFoo.value); // 4 +
    + +

    Type Parameters

    • T

    Parameters

    Returns ReadonlyReactive<T>

diff --git a/dev/functions/effect.html b/dev/functions/effect.html new file mode 100644 index 0000000..e431ecf --- /dev/null +++ b/dev/functions/effect.html @@ -0,0 +1,25 @@ +effect | @conterra/reactivity-core - v0.4.0
  • Runs the callback function and tracks its reactive dependencies. +Whenever one of those dependencies changes, the callback will be executed again.

    +

    Example:

    +
    const count = reactive(0);
    effect(() => {
    console.log(count.value);
    });
    // Effect runs immediately, prints "0"

    // Triggers re-execution of the effect (with a minimal delay), prints "1"
    count.value = 1; +
    + +

    effect returns a handle that allows you to unsubscribe from changes. +That handle's destroy() function should be called in order to clean up the effect when you no longer need it, +otherwise the effect will keep running forever:

    +
    const handle = effect(() => {
    // ...
    });
    // later:
    handle.destroy(); +
    + +

    You can also return a function from your effect callback. +It will be called automatically when either the effect will be re-executed or when the effect is being destroyed. +This can be very convenient to revert (or clean up) the side effects made by an effect:

    +
    effect(() => {
    const job = startAJob();
    return () => job.stop();
    }); +
    + +
    +

    NOTE: This function will slightly defer re-executions of the given callback. +In other words, the re-execution does not happen immediately after a reactive dependency changed. +This is done to avoid redundant executions as a result of many fine-grained changes.

    +

    If you need more control, take a look at syncEffect.

    +
    +

    Parameters

    Returns CleanupHandle

diff --git a/dev/functions/external.html b/dev/functions/external.html new file mode 100644 index 0000000..96b7b39 --- /dev/null +++ b/dev/functions/external.html @@ -0,0 +1,14 @@ +external | @conterra/reactivity-core - v0.4.0
  • Creates a signal that integrates state from 'foreign' objects (e.g. different state management solutions) +into the reactivity system.

    +

    The compute function should return the current value from the foreign object. +Just like with computed objects, the return value of compute will be cached. +Unlike computed objects, the compute function will not be triggered automatically: you must subscribe +to changes on the foreign object (with whatever API is appropriate) and call the returned ExternalReactive's +trigger() method.

    +

    Once .trigger() has been called, accessing the reactive object's value will re-execute the compute method +and return the latest value.

    +

    Example:

    +
    // This example makes the state of an AbortSignal accessible as an reactive object.
    const controller = new AbortController();
    const signal = controller.signal;

    const aborted = external(() => signal.aborted);
    signal.addEventListener("abort", aborted.trigger);
    console.log(aborted.value); // false

    controller.abort(); // triggers the event handler registered above
    console.log(aborted.value); // true

    // later: unsubscribe from signal +
    + +

    Type Parameters

    • T

    Parameters

    Returns ExternalReactive<T>

diff --git a/dev/functions/getValue.html b/dev/functions/getValue.html new file mode 100644 index 0000000..073b91c --- /dev/null +++ b/dev/functions/getValue.html @@ -0,0 +1,4 @@ +getValue | @conterra/reactivity-core - v0.4.0
  • Returns the current .value of the given signal, or the input argument itself +if it is not reactive.

    +

    The access to .value is tracked.

    +

    Type Parameters

    • T

    Parameters

    Returns T

diff --git a/dev/functions/isReactive.html b/dev/functions/isReactive.html new file mode 100644 index 0000000..ca72f9f --- /dev/null +++ b/dev/functions/isReactive.html @@ -0,0 +1,2 @@ +isReactive | @conterra/reactivity-core - v0.4.0
  • Returns true if maybeReactive is any kind of writable signal.

    +

    Type Parameters

    • T

    Parameters

    Returns maybeReactive is Reactive<T>

diff --git a/dev/functions/isReadonlyReactive.html b/dev/functions/isReadonlyReactive.html new file mode 100644 index 0000000..efc3ea4 --- /dev/null +++ b/dev/functions/isReadonlyReactive.html @@ -0,0 +1,2 @@ +isReadonlyReactive | @conterra/reactivity-core - v0.4.0
diff --git a/dev/functions/nextTick.html b/dev/functions/nextTick.html new file mode 100644 index 0000000..3871499 --- /dev/null +++ b/dev/functions/nextTick.html @@ -0,0 +1,3 @@ +nextTick | @conterra/reactivity-core - v0.4.0
  • Returns a promise that resolves after all currently scheduled asynchronous callbacks have executed.

    +

    This function is useful in tests to wait for the execution of side effects triggered by an asynchronous watch or an effect.

    +

    Returns Promise<void>

diff --git a/dev/functions/peekValue.html b/dev/functions/peekValue.html new file mode 100644 index 0000000..633cd09 --- /dev/null +++ b/dev/functions/peekValue.html @@ -0,0 +1,4 @@ +peekValue | @conterra/reactivity-core - v0.4.0
  • Returns the current .value of the given signal, or the input argument itself +if it is not reactive.

    +

    The access to .value is not tracked.

    +

    Type Parameters

    • T

    Parameters

    Returns T

diff --git a/dev/functions/reactive-1.html b/dev/functions/reactive-1.html new file mode 100644 index 0000000..3f04812 --- /dev/null +++ b/dev/functions/reactive-1.html @@ -0,0 +1,11 @@ +reactive | @conterra/reactivity-core - v0.4.0
  • Creates a new mutable signal, initialized to undefined.

    +

    Example:

    +
    const foo = reactive<number>();
    console.log(foo.value); // undefined
    foo.value = 123; // updates the current value +
    + +

    Type Parameters

    • T

    Returns Reactive<T | undefined>

  • Creates a new mutable signal, initialized to the given value.

    +

    Example:

    +
    const foo = reactive(123);
    console.log(foo.value); // 123
    foo.value = 456; // updates the current value +
    + +

    Type Parameters

    • T

    Parameters

    Returns Reactive<T>

diff --git a/dev/functions/reactiveArray-1.html b/dev/functions/reactiveArray-1.html new file mode 100644 index 0000000..aaf8021 --- /dev/null +++ b/dev/functions/reactiveArray-1.html @@ -0,0 +1,5 @@ +reactiveArray | @conterra/reactivity-core - v0.4.0
  • Constructs a new ReactiveArray with the given initial content.

    +

    Type Parameters

    • T

    Parameters

    • Optionalitems: Iterable<T>

    Returns ReactiveArray<T>

    // Empty
    const array1 = reactiveArray<number>();

    // With initial content
    const array2 = reactiveArray<number>([1, 2, 3]); +
    + +
diff --git a/dev/functions/reactiveMap-1.html b/dev/functions/reactiveMap-1.html new file mode 100644 index 0000000..dd0fda7 --- /dev/null +++ b/dev/functions/reactiveMap-1.html @@ -0,0 +1,5 @@ +reactiveMap | @conterra/reactivity-core - v0.4.0
  • Constructs a new ReactiveMap with the given initial content.

    +

    Type Parameters

    • K
    • V

    Parameters

    • Optionalinitial: Iterable<[K, V]>

    Returns ReactiveMap<K, V>

    // Empty
    const map1 = reactiveMap<string, number>();

    // With initial content
    const map2 = reactiveMap<string, number>([["foo", 1], ["bar", 2]]); +
    + +
diff --git a/dev/functions/reactiveSet-1.html b/dev/functions/reactiveSet-1.html new file mode 100644 index 0000000..34e0bc7 --- /dev/null +++ b/dev/functions/reactiveSet-1.html @@ -0,0 +1,5 @@ +reactiveSet | @conterra/reactivity-core - v0.4.0
  • Constructs a new ReactiveMap with the given initial content.

    +

    Type Parameters

    • V

    Parameters

    • Optionalinitial: Iterable<V>

    Returns ReactiveSet<V>

    // Empty
    const set1 = reactiveSet<string>();

    // With initial content
    const set2 = reactiveSet<string>(["foo", "bar"]); +
    + +
diff --git a/dev/functions/reactiveStruct.html b/dev/functions/reactiveStruct.html new file mode 100644 index 0000000..6d0ebb5 --- /dev/null +++ b/dev/functions/reactiveStruct.html @@ -0,0 +1,65 @@ +reactiveStruct | @conterra/reactivity-core - v0.4.0
  • Creates a reactive structs with the help of the returned builder.

    +

    A reactive struct is a class like object that can contain properties, computed properties and methods. +By default all properties are reactive and writable.

    +

    To create a reactive struct proceed as follows:

    +
      +
    1. +

      Define the type of the struct.

      +
      type PersonType = {
      firstName: string;
      lastName: string;
      } +
      + +
    2. +
    3. +

      Create a definition for the struct according to the type.

      +
      const personDefinition: ReactiveStructDefinition<PersonType> = {
      firstName: {}, // default options (reactive and writable)
      lastName: {} // default options (reactive and writable)
      }; +
      + +
    4. +
    5. +

      Create a new reactive struct class based on the provided definition.

      +
      const PersonClass = reactiveStruct<PersonType>().define(personDefinition);
      +
      + +
    6. +
    7. +

      Create a new instance of the struct.

      +
      const person = new PersonClass({
      firstName: "John",
      lastName: "Doe"
      }); +
      + +
    8. +
    9. +

      Use the created instance.

      +

      Now, you can use the person instance for example to compute the person's full name.

      +
      const fullName = computed(() => `${person.firstName} ${person.lastName}`);
      console.log(fullName.value); // John Doe
      person.firstName = "Jane";
      console.log(fullName.value); // Jane Doe +
      + +
    10. +
    +

    The following options can be set for properties in the struct definition:

    +
      +
    • writable: if true the property is writable and it can be changed (the default). If false the property is read-only.
    • +
    • reactive: if true the property is reactive (the default). If false the property is not reactive.
    • +
    +

    To define a read-only property set writable to false:

    +
    type PersonType = {
    readonly lastName: string;
    }
    const personDefinition: ReactiveStructDefinition<PersonType> = {
    lastName: { writable: false }
    };
    const PersonClass = reactiveStruct<PersonType>().define(personDefinition);
    const person = new PersonClass({
    lastName: "Doe"
    });
    person.lastName = "Smith"; // type error, throws error at runtime +
    + +

    To define a non reactive property set reactive to false:

    +
    const personDefinition: ReactiveStructDefinition<PersonType> = {
    firstName: {},
    lastName: { reactive: false }
    };
    const PersonClass = reactiveStruct<PersonType>().define(personDefinition);
    const person = new PersonClass({
    firstName: "John",
    lastName: "Doe"
    });
    const fullName = computed(() => `${person.firstName} ${person.lastName}`);
    person.lastName = "Miller";
    console.log(fullName.value); // John Miller +
    + +

    Computed properties are properties that are computed based on other properties. +They can be defined in the struct definition as follows:

    +
    type PersonType = {
    firstName: string;
    lastName: string;
    fullName: string;
    };
    const personDefinition: ReactiveStructDefinition<PersonType> = {
    firstName: {},
    lastName: {},
    fullName: {
    compute() {
    return `${this.firstName} ${this.lastName}`;
    }
    }
    };
    const PersonClass = reactiveStruct<PersonType>().define(personDefinition);
    const person = new PersonClass({
    firstName: "John",
    lastName: "Doe"
    });
    console.log(person.fullName); // John Doe
    person.firstName = "Jane";
    console.log(person.fullName); // Jane Doe +
    + +

    You can also define methods in the struct definition:

    +
    type PersonType = {
    firstName: string;
    lastName: string;
    printName: () => void;
    };
    const personDefinition: ReactiveStructDefinition<PersonType> = {
    firstName: {},
    lastName: {},
    printName: {
    method() {
    return console.log(`${this.firstName} ${this.lastName}`);
    }
    }
    };
    const PersonClass = reactiveStruct<PersonType>().define(personDefinition);
    const person = new PersonClass({
    firstName: "John",
    lastName: "Doe"
    });
    person.printName(); // prints "John Doe" +
    + +
    +

    NOTE: +All strings or symbols are allowed as property names, except for strings starting with '$'. +Strings starting with '$' are reserved for future extensions.

    +
    +

    Type Parameters

    • T

    Returns ReactiveStructBuilder<T>

diff --git a/dev/functions/syncEffect.html b/dev/functions/syncEffect.html new file mode 100644 index 0000000..8afd0d7 --- /dev/null +++ b/dev/functions/syncEffect.html @@ -0,0 +1,16 @@ +syncEffect | @conterra/reactivity-core - v0.4.0
  • Runs the callback function and tracks its reactive dependencies. +Whenever one of those dependencies changes, the callback will be executed again.

    +

    This function is the synchronous variant of effect. +It will re-execute after every fine grained change, even if they occur in immediate succession. +syncEffect should therefore be considered a low level primitive, for most use cases effect should be the right tool instead.

    +

    Example:

    +
    const count = reactive(0);
    syncEffect(() => {
    console.log(count.value);
    });
    // Effect runs immediately, prints "0"

    count.value = 1; // Effect runs again, prints "1"
    count.value = 2; // Effect runs again, prints "2" +
    + +

    syncEffect returns a handle that allows you to unsubscribe from changes. +That handle's destroy() function should be called in order to clean up the effect when you no longer need it, +otherwise the effect will keep running forever:

    +
    const handle = syncEffect(() => {
    // ...
    });
    // later:
    handle.destroy(); +
    + +

    Parameters

    Returns CleanupHandle

diff --git a/dev/functions/syncEffectOnce.html b/dev/functions/syncEffectOnce.html new file mode 100644 index 0000000..27fbd04 --- /dev/null +++ b/dev/functions/syncEffectOnce.html @@ -0,0 +1,6 @@ +syncEffectOnce | @conterra/reactivity-core - v0.4.0
  • A variant of syncEffect that only executes the main callback once.

    +

    As soon as one or more reactive dependencies of callback have changed, onInvalidate will be invoked.

    +

    This gives users of this API the ability to listen for values that might have changed without doing much work. +Typically, onInvalidate will be very cheap (e.g. schedule a new render).

    +

    Note that onInvalidate will never be invoked more than once.

    +

    Parameters

    • callback: EffectCallback
    • onInvalidate: (() => void)
        • (): void
        • Returns void

    Returns CleanupHandle

diff --git a/dev/functions/syncWatch.html b/dev/functions/syncWatch.html new file mode 100644 index 0000000..030e95a --- /dev/null +++ b/dev/functions/syncWatch.html @@ -0,0 +1,24 @@ +syncWatch | @conterra/reactivity-core - v0.4.0
  • Watches reactive values and executes a callback whenever those values change.

    +

    This function is the synchronous variant of watch. +It will re-execute after every fine grained change, even if those changes occur in immediate succession. +syncWatch should therefore be considered a low level primitive, for most use cases watch should be the right tool instead.

    +

    Example:

    +
    const r1 = reactive(1);
    const r2 = reactive(2);
    syncWatch(
    // Selector: reactive code (may be complex, but should be fast).
    () => [r1.value, r2.value, r1.value + r2.value],

    // Callback: only executes if selector returns different values.
    ([v1, v2, v3]) => {
    console.log(v1, v2, v3);
    }
    ); +
    + +

    syncWatch returns a handle that can be used to unsubscribe from changes. +That handle's destroy() function should be called to stop watching when you are no longer interested in updates:

    +
    const handle = watch(() => [someReactive.value], () => {
    // ...
    });
    // later:
    handle.destroy(); +
    + +
    +

    NOTE: You must not modify the parameters that get passed into callback.

    +
    +

    Type Parameters

    • const Values extends readonly unknown[]

    Parameters

    • selector: (() => Values)

      a function that returns the values to watch.

      +
    • callback: WatchCallback<Values>

      a function that will be executed whenever the watched values changed.

      +
    • Optionaloptions: WatchOptions<Values> & {
          immediate?: false;
      }

      additional options.

      +

    Returns CleanupHandle

  • This overload is used when immediate is not set to false.

    +

    Type Parameters

    • const Values extends readonly unknown[]

    Parameters

    Returns CleanupHandle

diff --git a/dev/functions/syncWatchValue.html b/dev/functions/syncWatchValue.html new file mode 100644 index 0000000..e0adcb3 --- /dev/null +++ b/dev/functions/syncWatchValue.html @@ -0,0 +1,24 @@ +syncWatchValue | @conterra/reactivity-core - v0.4.0
  • Watches a single reactive value and executes a callback whenever that value changes.

    +

    This function is the synchronous variant of watchValue. +It will re-execute after every fine grained change, even if those changes occur in immediate succession. +syncWatchValue should therefore be considered a low level primitive, for most use cases watchValue should be the right tool instead.

    +

    Example:

    +
    import { reactive, syncWatchValue } from "@conterra/reactivity-core";

    const v1 = reactive(1);
    const v2 = reactive(2);

    // Executes whenever the _sum_ of the two values changes.
    syncWatchValue(() => v1.value + v2.value, (sum) => {
    console.log("new sum", sum);
    }); +
    + +

    syncWatchValue returns a handle that can be used to unsubscribe from changes. +That handle's destroy() function should be called to stop watching when you are no longer interested in updates:

    +
    const handle = syncWatchValue(() => someReactive.value, () => {
    // ...
    });
    // later:
    handle.destroy(); +
    + +
    +

    NOTE: You must not modify the parameters that get passed into callback.

    +
    +

    Type Parameters

    • T

    Parameters

    • selector: (() => T)

      a function that returns the value to watch.

      +
        • (): T
        • Returns T

    • callback: WatchCallback<T>

      a function that will be executed whenever the watched value changes.

      +
    • Optionaloptions: WatchOptions<T> & {
          immediate?: false;
      }

      additional options.

      +

    Returns CleanupHandle

  • This overload is used when immediate is not set to false.

    +

    Type Parameters

    • T

    Parameters

    • selector: (() => T)

      a function that returns the value to watch.

      +
        • (): T
        • Returns T

    • callback: WatchImmediateCallback<T>

      a function that will be executed whenever the watched value changes.

      +
    • Optionaloptions: WatchOptions<T>

      additional options.

      +

    Returns CleanupHandle

diff --git a/dev/functions/untracked.html b/dev/functions/untracked.html new file mode 100644 index 0000000..0b234dd --- /dev/null +++ b/dev/functions/untracked.html @@ -0,0 +1,5 @@ +untracked | @conterra/reactivity-core - v0.4.0
  • Executes non-reactive code.

    +

    Accesses on reactive objects made inside callback will not be tracked, +even if they occur inside a computed object or in an effect.

    +

    untracked returns the value of callback().

    +

    Type Parameters

    • T

    Parameters

    • callback: (() => T)
        • (): T
        • Returns T

    Returns T

diff --git a/dev/functions/watch.html b/dev/functions/watch.html new file mode 100644 index 0000000..1965cec --- /dev/null +++ b/dev/functions/watch.html @@ -0,0 +1,38 @@ +watch | @conterra/reactivity-core - v0.4.0
  • Watches reactive values and executes a callback whenever those values change.

    +

    watch works like this:

    +
      +
    1. The selector is a tracked function that shall return an array of values. +Those values are usually obtained by accessing one or more reactive objects.
    2. +
    3. Whenever the values inside the array returned by selector change, callback +will be executed with those values (the old values are available as well). +The body of callback is not reactive.
    4. +
    +

    The arrays returned by the selector are compared using shallow equality by default: the callback +runs if the length of the array changes or if one of its entries has a different identity. +Note that you can provide a custom equal function to change this behavior.

    +

    Example:

    +
    const r1 = reactive(1);
    const r2 = reactive(2);
    watch(
    // Selector: reactive code (may be complex, but should be fast).
    () => [r1.value, r2.value, r1.value + r2.value],

    // Callback: only executes if selector returns different values.
    ([v1, v2, v3]) => {
    console.log(v1, v2, v3);
    }
    ); +
    + +

    watch returns a handle that can be used to unsubscribe from changes. +That handle's destroy() function should be called to stop watching when you are no longer interested in updates:

    +
    const handle = watch(() => [someReactive.value], () => {
    // ...
    });
    // later:
    handle.destroy(); +
    + +
    +

    NOTE: You must not modify the parameters that get passed into callback.

    +
    +
    +

    NOTE: This function will slightly defer re-executions of the given callback. +In other words, the re-execution does not happen immediately after a reactive dependency changed. +This is done to avoid redundant executions as a result of many fine-grained changes.

    +

    If you need more control, take a look at syncWatch.

    +
    +

    Type Parameters

    • const Values extends readonly unknown[]

    Parameters

    • selector: (() => Values)

      a function that returns the values to watch.

      +
    • callback: WatchCallback<Values>

      a function that will be executed whenever the watched values changed.

      +
    • Optionaloptions: WatchOptions<Values> & {
          immediate?: false;
      }

      additional options.

      +

    Returns CleanupHandle

  • This overload is used when immediate is not set to false.

    +

    Type Parameters

    • const Values extends readonly unknown[]

    Parameters

    Returns CleanupHandle

diff --git a/dev/functions/watchValue.html b/dev/functions/watchValue.html new file mode 100644 index 0000000..8511e33 --- /dev/null +++ b/dev/functions/watchValue.html @@ -0,0 +1,37 @@ +watchValue | @conterra/reactivity-core - v0.4.0
  • Watches a single reactive value and executes a callback whenever that value changes.

    +

    watchValue works like this:

    +
      +
    1. The selector is a tracked function that shall return a value. +This value is usually obtained by accessing one or more reactive objects.
    2. +
    3. Whenever the value returned by selector changes, callback +will be executed with the new value (the old value is available as well). +The body of callback is not reactive.
    4. +
    +

    The values returned by the selector are compared using object identity by default (i.e. ===). +Note that you can provide a custom equal function to change this behavior.

    +

    Example:

    +
    import { reactive, watchValue } from "@conterra/reactivity-core";

    const v1 = reactive(1);
    const v2 = reactive(2);

    // Executes whenever the _sum_ of the two values changes.
    watchValue(() => v1.value + v2.value, (sum) => {
    console.log("new sum", sum);
    }); +
    + +

    watchValue returns a handle that can be used to unsubscribe from changes. +That handle's destroy() function should be called to stop watching when you are no longer interested in updates:

    +
    const handle = watchValue(() => someReactive.value, () => {
    // ...
    });
    // later:
    handle.destroy(); +
    + +
    +

    NOTE: You must not modify the parameters that get passed into callback.

    +
    +
    +

    NOTE: This function will slightly defer re-executions of the given callback. +In other words, the re-execution does not happen immediately after a reactive dependency changed. +This is done to avoid redundant executions as a result of many fine-grained changes.

    +

    If you need more control, take a look at syncWatchValue.

    +
    +

    Type Parameters

    • T

    Parameters

    • selector: (() => T)

      a function that returns the value to watch.

      +
        • (): T
        • Returns T

    • callback: WatchCallback<T>

      a function that will be executed whenever the watched value changes.

      +
    • Optionaloptions: WatchOptions<T> & {
          immediate?: false;
      }

      additional options.

      +

    Returns CleanupHandle

  • This overload is used when immediate is not set to false.

    +

    Type Parameters

    • T

    Parameters

    • selector: (() => T)

      a function that returns the value to watch.

      +
        • (): T
        • Returns T

    • callback: WatchImmediateCallback<T>

      a function that will be executed whenever the watched value changed.

      +
    • Optionaloptions: WatchOptions<T>

      additional options.

      +

    Returns CleanupHandle

diff --git a/dev/hierarchy.html b/dev/hierarchy.html new file mode 100644 index 0000000..f0ddafa --- /dev/null +++ b/dev/hierarchy.html @@ -0,0 +1 @@ +@conterra/reactivity-core - v0.4.0
diff --git a/dev/index.html b/dev/index.html new file mode 100644 index 0000000..ab28840 --- /dev/null +++ b/dev/index.html @@ -0,0 +1,50 @@ +@conterra/reactivity-core - v0.4.0

@conterra/reactivity-core - v0.4.0

A framework agnostic library for building reactive applications.

+

Index

Primitives

Primitive building blocks for reactive code.

+

Watching

Utilities to run code when reactive values change.

+

Collections

Reactive collections to simplify working with complex data structures.

+

Struct

Utilities to create reactive data structures/objects.

+
diff --git a/dev/interfaces/CleanupHandle.html b/dev/interfaces/CleanupHandle.html new file mode 100644 index 0000000..a3cfdf0 --- /dev/null +++ b/dev/interfaces/CleanupHandle.html @@ -0,0 +1,5 @@ +CleanupHandle | @conterra/reactivity-core - v0.4.0

A handle returned by various functions to dispose of a resource, +such as a watcher or an effect.

+
interface CleanupHandle {
    destroy(): void;
}

Methods

Methods

  • Performs the cleanup action associated with the resource.

    +

    Returns void

diff --git a/dev/interfaces/ComputedMemberType.html b/dev/interfaces/ComputedMemberType.html new file mode 100644 index 0000000..6ba0212 --- /dev/null +++ b/dev/interfaces/ComputedMemberType.html @@ -0,0 +1,6 @@ +ComputedMemberType | @conterra/reactivity-core - v0.4.0

Interface ComputedMemberType<T, V>

A computed property of a reactive struct.

+
interface ComputedMemberType<T, V> {
    compute: ((this: T) => V);
    type?: "computed";
}

Type Parameters

  • T
  • V

Properties

Properties

compute: ((this: T) => V)

The function to compute the value of the property.

+
type?: "computed"

Type to indicate that this member is a computed property.

+
diff --git a/dev/interfaces/ExternalReactive.html b/dev/interfaces/ExternalReactive.html new file mode 100644 index 0000000..8d64aa1 --- /dev/null +++ b/dev/interfaces/ExternalReactive.html @@ -0,0 +1,24 @@ +ExternalReactive | @conterra/reactivity-core - v0.4.0

Interface ExternalReactive<T>

A signal that holds a value from an external source.

+

Instances of this type are used to integrate "foreign" state into the reactivity system.

+
interface ExternalReactive<T> {
    value: T;
    peek(): T;
    toJSON(): T;
    toString(): string;
    trigger(): void;
}

Type Parameters

  • T

Hierarchy (view full)

Methods

Properties

Methods

  • Accesses the current value without being considered a user of this value.

    +

    Use this method if you do not wish to be notified about changes.

    +

    Returns T

  • Notifies the reactivity system that the external value has changed.

    +

    The users of this value will be notified automatically; if there are any users +then the value will be re-computed from its external source using the original callback.

    +
    +

    NOTE: This function is bound to its instance. You can use it directly as an event handler callback +without safeguarding this.

    +
    +

    Returns void

Properties

value: T

Accesses the current value stored in this signal.

+

This access is tracked: users (computed signals, effects, etc.) will be registered as a user of this value +and will be notified when it changes.

+
diff --git a/dev/interfaces/MethodMemberType.html b/dev/interfaces/MethodMemberType.html new file mode 100644 index 0000000..c12ded3 --- /dev/null +++ b/dev/interfaces/MethodMemberType.html @@ -0,0 +1,6 @@ +MethodMemberType | @conterra/reactivity-core - v0.4.0

Interface MethodMemberType<T, Params, Ret>

A method of a reactive struct.

+
interface MethodMemberType<T, Params, Ret> {
    method: ((this: T, ...args: Params) => Ret);
    type?: "method";
}

Type Parameters

  • T
  • Params extends any[]
  • Ret

Properties

Properties

method: ((this: T, ...args: Params) => Ret)

The method of the struct.

+
type?: "method"

Type to indicate that this member is a method.

+
diff --git a/dev/interfaces/PropertyMemberType.html b/dev/interfaces/PropertyMemberType.html new file mode 100644 index 0000000..40ae0e5 --- /dev/null +++ b/dev/interfaces/PropertyMemberType.html @@ -0,0 +1,12 @@ +PropertyMemberType | @conterra/reactivity-core - v0.4.0

A property of a reactive struct.

+
interface PropertyMemberType {
    reactive?: boolean;
    type?: "property";
    writable?: boolean;
}

Properties

Properties

reactive?: boolean

If true the property is reactive. +If false the property is not reactive. +Default is true.

+
type?: "property"

Type to indicate that this member is a property.

+
writable?: boolean

If true the property is writable and it can be changed. +If false the property is read-only. +Default is true.

+
diff --git a/dev/interfaces/Reactive.html b/dev/interfaces/Reactive.html new file mode 100644 index 0000000..c3c7f57 --- /dev/null +++ b/dev/interfaces/Reactive.html @@ -0,0 +1,16 @@ +Reactive | @conterra/reactivity-core - v0.4.0

A signal that holds a mutable value.

+

The value stored in this object can be changed through assignment, +and all its users will be notified automatically.

+
interface Reactive<T> {
    value: T;
    peek(): T;
    toJSON(): T;
    toString(): string;
}

Type Parameters

  • T

Hierarchy (view full)

Methods

Properties

Methods

  • Accesses the current value without being considered a user of this value.

    +

    Use this method if you do not wish to be notified about changes.

    +

    Returns T

Properties

value: T

Reads or writes the current value in this reactive object.

+
diff --git a/dev/interfaces/ReactiveArray.html b/dev/interfaces/ReactiveArray.html new file mode 100644 index 0000000..48124b4 --- /dev/null +++ b/dev/interfaces/ReactiveArray.html @@ -0,0 +1,127 @@ +ReactiveArray | @conterra/reactivity-core - v0.4.0

Interface ReactiveArray<T>

A reactive array class.

+

The array interface here works similar to the builtin Array (i.e. T[]). +The major difference is that one must use the get and set methods instead of +using square brackets, i.e. use array.get(i) instead of array[i] and array.set(i, v) instead of array[i] = v. +Not all builtin array methods are implemented right now, but most of them are.

+

Reads and writes to this array are reactive.

+
interface ReactiveArray<T> {
    length: number;
    at(index: number): undefined | T;
    concat(...values: T[]): ReactiveArray<T>;
    concat(...values: (T | ReadonlyReactiveArray<T> | T[])[]): ReactiveArray<T>;
    entries(): IterableIterator<[index: number, value: T]>;
    every(predicate: ((value: T, index: number) => boolean)): boolean;
    filter<U>(predicate: ((value: T, index: number) => value is U)): ReactiveArray<U>;
    filter(predicate: ((value: T, index: number) => boolean)): ReactiveArray<T>;
    find<U>(predicate: ((value: T, index: number) => value is U)): undefined | U;
    find(predicate: ((value: T, index: number) => boolean)): undefined | T;
    findIndex(predicate: ((value: T, index: number) => boolean)): number;
    findLast<U>(predicate: ((value: T, index: number) => value is U)): undefined | U;
    findLast(predicate: ((value: T, index: number) => boolean)): undefined | T;
    findLastIndex(predicate: ((value: T, index: number) => boolean)): number;
    flatMap<U>(callback: ((value: T, index: number) => U | readonly U[])): ReactiveArray<U>;
    forEach(callback: ((value: T, index: number) => void)): void;
    get(index: number): undefined | T;
    getItems(): T[];
    includes(value: T, fromIndex?: number): boolean;
    indexOf(value: T, fromIndex?: number): number;
    keys(): IterableIterator<number>;
    lastIndexOf(value: T): number;
    map<U>(callback: ((value: T, index: number) => U)): ReactiveArray<U>;
    pop(): undefined | T;
    push(...values: T[]): void;
    reduce(callback: ((previousValue: T, currentValue: T, currentIndex: number) => T)): T;
    reduce(callback: ((previousValue: T, currentValue: T, currentIndex: number) => T), initialValue: T): T;
    reduce<U>(callback: ((previousValue: U, currentValue: T, currentIndex: number) => U), initialValue: U): U;
    reduceRight(callback: ((previousValue: T, currentValue: T, currentIndex: number) => T)): T;
    reduceRight(callback: ((previousValue: T, currentValue: T, currentIndex: number) => T), initialValue: T): T;
    reduceRight<U>(callback: ((previousValue: U, currentValue: T, currentIndex: number) => U), initialValue: U): U;
    set(index: number, value: T): void;
    shift(): undefined | T;
    slice(start?: number): ReactiveArray<T>;
    slice(start: number, end?: number): ReactiveArray<T>;
    some(predicate: ((value: T, index: number) => boolean)): boolean;
    sort(compare: ((a: T, b: T) => number)): void;
    splice(start: number, deleteCount?: number): T[];
    splice(start: number, deleteCount: number, ...values: T[]): T[];
    unshift(...values: T[]): void;
    values(): IterableIterator<T>;
}

Type Parameters

  • T

Hierarchy (view full)

Methods

  • Returns the item at the given index, or undefined if the index is out of bounds. +You can use negative indices to address items starting from the end of the array.

    +

    See also Array.at.

    +

    Parameters

    • index: number

    Returns undefined | T

  • Returns true if the predicate is satisfied for every item in this array, false otherwise.

    +

    See also Array.every.

    +

    Parameters

    • predicate: ((value: T, index: number) => boolean)
        • (value, index): boolean
        • Parameters

          • value: T
          • index: number

          Returns boolean

    Returns boolean

  • Returns the first item that satisfies the given predicate, or undefined if there is no such item.

    +

    See also Array.find.

    +

    Type Parameters

    • U

    Parameters

    • predicate: ((value: T, index: number) => value is U)
        • (value, index): value is U
        • Parameters

          • value: T
          • index: number

          Returns value is U

    Returns undefined | U

  • Returns the first item that satisfies the given predicate, or undefined if there is no such item.

    +

    See also Array.find.

    +

    Parameters

    • predicate: ((value: T, index: number) => boolean)
        • (value, index): boolean
        • Parameters

          • value: T
          • index: number

          Returns boolean

    Returns undefined | T

  • Returns the index of the first item that satisfies the given predicate, -1 if no such item was found.

    +

    See also Array.findIndex.

    +

    Parameters

    • predicate: ((value: T, index: number) => boolean)
        • (value, index): boolean
        • Parameters

          • value: T
          • index: number

          Returns boolean

    Returns number

  • Returns the last item that satisfies the given predicate, or undefined if there is no such item.

    +

    See also Array.findLast.

    +

    Type Parameters

    • U

    Parameters

    • predicate: ((value: T, index: number) => value is U)
        • (value, index): value is U
        • Parameters

          • value: T
          • index: number

          Returns value is U

    Returns undefined | U

  • Returns the last item that satisfies the given predicate, or undefined if there is no such item.

    +

    See also Array.findLast.

    +

    Parameters

    • predicate: ((value: T, index: number) => boolean)
        • (value, index): boolean
        • Parameters

          • value: T
          • index: number

          Returns boolean

    Returns undefined | T

  • Returns a new array where every item has been replaced with the result of calling the given callback function. +If the callback function returns an array, the items in that array are included individually.

    +

    See also Array.flatMap.

    +

    Type Parameters

    • U

    Parameters

    • callback: ((value: T, index: number) => U | readonly U[])
        • (value, index): U | readonly U[]
        • Parameters

          • value: T
          • index: number

          Returns U | readonly U[]

    Returns ReactiveArray<U>

  • Removes the last item from this array and returns it, or undefined if the array was empty.

    +

    See also Array.pop.

    +

    Returns undefined | T

  • Calls the given callback function for all items in this array. +The return value of the previous callback invocation is passed in the next call. +The final result of the callback will be returned from this function.

    +

    See also Array.reduce.

    +

    Parameters

    • callback: ((previousValue: T, currentValue: T, currentIndex: number) => T)
        • (previousValue, currentValue, currentIndex): T
        • Parameters

          • previousValue: T
          • currentValue: T
          • currentIndex: number

          Returns T

    Returns T

  • Calls the given callback function for all items in this array. +The return value of the previous callback invocation is passed in the next call. +The final result of the callback will be returned from this function.

    +

    See also Array.reduce.

    +

    Parameters

    • callback: ((previousValue: T, currentValue: T, currentIndex: number) => T)
        • (previousValue, currentValue, currentIndex): T
        • Parameters

          • previousValue: T
          • currentValue: T
          • currentIndex: number

          Returns T

    • initialValue: T

    Returns T

  • Calls the given callback function for all items in this array. +The return value of the previous callback invocation is passed in the next call. +The final result of the callback will be returned from this function.

    +

    See also Array.reduce.

    +

    Type Parameters

    • U

    Parameters

    • callback: ((previousValue: U, currentValue: T, currentIndex: number) => U)
        • (previousValue, currentValue, currentIndex): U
        • Parameters

          • previousValue: U
          • currentValue: T
          • currentIndex: number

          Returns U

    • initialValue: U

    Returns U

  • Calls the given callback function for all items in this array, starting from the back. +The return value of the previous callback invocation is passed in the next call. +The final result of the callback will be returned from this function.

    +

    See also Array.reduceRight.

    +

    Parameters

    • callback: ((previousValue: T, currentValue: T, currentIndex: number) => T)
        • (previousValue, currentValue, currentIndex): T
        • Parameters

          • previousValue: T
          • currentValue: T
          • currentIndex: number

          Returns T

    Returns T

  • Calls the given callback function for all items in this array, starting from the back. +The return value of the previous callback invocation is passed in the next call. +The final result of the callback will be returned from this function.

    +

    See also Array.reduceRight.

    +

    Parameters

    • callback: ((previousValue: T, currentValue: T, currentIndex: number) => T)
        • (previousValue, currentValue, currentIndex): T
        • Parameters

          • previousValue: T
          • currentValue: T
          • currentIndex: number

          Returns T

    • initialValue: T

    Returns T

  • Calls the given callback function for all items in this array, starting from the back. +The return value of the previous callback invocation is passed in the next call. +The final result of the callback will be returned from this function.

    +

    See also Array.reduceRight.

    +

    Type Parameters

    • U

    Parameters

    • callback: ((previousValue: U, currentValue: T, currentIndex: number) => U)
        • (previousValue, currentValue, currentIndex): U
        • Parameters

          • previousValue: U
          • currentValue: T
          • currentIndex: number

          Returns U

    • initialValue: U

    Returns U

  • Removes the first value from this array and returns it, or undefined if the array was empty.

    +

    See also Array.shift.

    +

    Returns undefined | T

  • Returns true if at least one item satisfies the given predicate, false otherwise.

    +

    See also Array.some.

    +

    Parameters

    • predicate: ((value: T, index: number) => boolean)
        • (value, index): boolean
        • Parameters

          • value: T
          • index: number

          Returns boolean

    Returns boolean

  • Sorts this array using the given comparison function.

    +

    See also Array.sort.

    +

    Parameters

    • compare: ((a: T, b: T) => number)
        • (a, b): number
        • Parameters

          Returns number

    Returns void

  • Changes the contents of this array by removing, replacing and optionally adding new elements.

    +

    See also Array.splice.

    +

    Parameters

    • start: number
    • OptionaldeleteCount: number

    Returns T[]

  • Changes the contents of this array by removing, replacing and optionally adding new elements.

    +

    See also Array.splice.

    +

    Parameters

    • start: number
    • deleteCount: number
    • Rest...values: T[]

    Returns T[]

Properties

length: number

Returns the current number of items in this array.

+
diff --git a/dev/interfaces/ReactiveMap.html b/dev/interfaces/ReactiveMap.html new file mode 100644 index 0000000..5f2789b --- /dev/null +++ b/dev/interfaces/ReactiveMap.html @@ -0,0 +1,25 @@ +ReactiveMap | @conterra/reactivity-core - v0.4.0

Interface ReactiveMap<K, V>

A reactive map.

+

This map interface is designed to be very similar to (but not exactly the same as) the standard JavaScript Map.

+

Reads from and writes to this map are reactive.

+
interface ReactiveMap<K, V> {
    size: number;
    [iterator](): IterableIterator<[key: K, value: V]>;
    clear(): void;
    delete(key: K): boolean;
    entries(): IterableIterator<[key: K, value: V]>;
    get(key: K): undefined | V;
    has(key: K): boolean;
    keys(): IterableIterator<K>;
    set(key: K, value: V): this;
    values(): IterableIterator<V>;
}

Type Parameters

  • K
  • V

Hierarchy

  • Iterable<[key: K, value: V]>
    • ReactiveMap

Methods

Properties

Methods

  • Returns an iterator over the [key, value] entries in this map.

    +

    Returns IterableIterator<[key: K, value: V]>

  • Removes the entry for the given key. +Returns true if there was such an entry, or false otherwise.

    +

    Parameters

    • key: K

    Returns boolean

  • Returns an iterator over the [key, value] entries in this map.

    +

    Returns IterableIterator<[key: K, value: V]>

  • Returns the currently associated value for the given key, or undefined if there is no such value.

    +

    Parameters

    • key: K

    Returns undefined | V

  • Returns true if the map currently has an entry for the given key, false otherwise.

    +

    Parameters

    • key: K

    Returns boolean

  • Returns an iterator over the keys in this map.

    +

    Returns IterableIterator<K>

  • Associates the given key with value.

    +

    Parameters

    • key: K
    • value: V

    Returns this

  • Returns an iterator over the values in this map.

    +

    Returns IterableIterator<V>

Properties

size: number

Returns the current number of entries.

+
diff --git a/dev/interfaces/ReactiveOptions.html b/dev/interfaces/ReactiveOptions.html new file mode 100644 index 0000000..1ebc682 --- /dev/null +++ b/dev/interfaces/ReactiveOptions.html @@ -0,0 +1,7 @@ +ReactiveOptions | @conterra/reactivity-core - v0.4.0

Interface ReactiveOptions<T>

Options that can be passed when creating a new signal.

+
interface ReactiveOptions<T> {
    equal?: EqualsFunc<T>;
}

Type Parameters

  • T

Properties

Properties

equal?: EqualsFunc<T>

Shall return true if the two values are considered equal.

+

Reactive assignments using a new value equal to the current value +will be ignored. +By default, === is used to compare values.

+
diff --git a/dev/interfaces/ReactiveSet.html b/dev/interfaces/ReactiveSet.html new file mode 100644 index 0000000..baa1845 --- /dev/null +++ b/dev/interfaces/ReactiveSet.html @@ -0,0 +1,24 @@ +ReactiveSet | @conterra/reactivity-core - v0.4.0

Interface ReactiveSet<V>

A reactive set.

+

This set interface is designed to be very similar to (but not exactly the same as) the standard JavaScript Set.

+

Reads from and writes to this set are reactive.

+
interface ReactiveSet<V> {
    size: number;
    [iterator](): IterableIterator<V>;
    add(value: V): this;
    clear(): void;
    delete(value: V): boolean;
    entries(): IterableIterator<[value: V, value: V]>;
    has(value: V): boolean;
    values(): IterableIterator<V>;
}

Type Parameters

  • V

Hierarchy

  • Iterable<V>
    • ReactiveSet

Methods

Properties

Methods

  • Returns an iterator over the values in this set.

    +

    Returns IterableIterator<V>

  • Adds the given value to the set.

    +

    Parameters

    • value: V

    Returns this

  • Removes the given value from this set. +Returns true if value was a previously in this set, or false otherwise.

    +

    Parameters

    • value: V

    Returns boolean

  • Returns an iterator over the [value, value] entries in this set.

    +
    +

    NOTE: This is actually in the JS Standard..

    +
    +

    Returns IterableIterator<[value: V, value: V]>

  • Returns true if the set currently contains the given value, false otherwise.

    +

    Parameters

    • value: V

    Returns boolean

  • Returns an iterator over the values in this set.

    +

    Returns IterableIterator<V>

Properties

size: number

Returns the current number of entries.

+
diff --git a/dev/interfaces/ReactiveStructBuilder.html b/dev/interfaces/ReactiveStructBuilder.html new file mode 100644 index 0000000..9ef3fe9 --- /dev/null +++ b/dev/interfaces/ReactiveStructBuilder.html @@ -0,0 +1,4 @@ +ReactiveStructBuilder | @conterra/reactivity-core - v0.4.0

Interface ReactiveStructBuilder<T>

Used to build reactive structs using a struct definition.

+
interface ReactiveStructBuilder<T> {
    define<const Def>(def: Def): ReactiveStructConstructor<T, Def>;
}

Type Parameters

  • T

Methods

Methods

diff --git a/dev/interfaces/ReactiveStructConstructor.html b/dev/interfaces/ReactiveStructConstructor.html new file mode 100644 index 0000000..8eb19bd --- /dev/null +++ b/dev/interfaces/ReactiveStructConstructor.html @@ -0,0 +1,6 @@ +ReactiveStructConstructor | @conterra/reactivity-core - v0.4.0

Interface ReactiveStructConstructor<T, Def>

Constructor for reactive struct instances reactiveStruct.

+
interface ReactiveStructConstructor<T, Def> {
    new ReactiveStructConstructornew (...args: ConstructorArgs<ConstructorProps<PropertyMembers<T, Def>>>): T;
}

Type Parameters

  • T

    The type of the struct.

    +
  • Def

    The definition of the struct.

    +

Constructors

Constructors

  • Creates a new reactive struct instance.

    +

    Parameters

    • Rest...args: ConstructorArgs<ConstructorProps<PropertyMembers<T, Def>>>

    Returns T

diff --git a/dev/interfaces/ReadonlyReactive.html b/dev/interfaces/ReadonlyReactive.html new file mode 100644 index 0000000..5b30305 --- /dev/null +++ b/dev/interfaces/ReadonlyReactive.html @@ -0,0 +1,17 @@ +ReadonlyReactive | @conterra/reactivity-core - v0.4.0

Interface ReadonlyReactive<T>

A signal that holds a reactive value.

+

When the value changes, all users of that value (computed signals, effects, watchers) +are notified automatically.

+
interface ReadonlyReactive<T> {
    value: T;
    peek(): T;
    toJSON(): T;
    toString(): string;
}

Type Parameters

  • T

Hierarchy (view full)

Methods

Properties

Methods

  • Accesses the current value without being considered a user of this value.

    +

    Use this method if you do not wish to be notified about changes.

    +

    Returns T

  • Same as .value.

    +

    For compatibility with builtin JS constructs.

    +

    Returns T

  • Formats .value as a string.

    +

    For compatibility with builtin JS constructs.

    +

    Returns string

Properties

value: T

Accesses the current value stored in this signal.

+

This access is tracked: users (computed signals, effects, etc.) will be registered as a user of this value +and will be notified when it changes.

+
diff --git a/dev/interfaces/ReadonlyReactiveArray.html b/dev/interfaces/ReadonlyReactiveArray.html new file mode 100644 index 0000000..0d3cc67 --- /dev/null +++ b/dev/interfaces/ReadonlyReactiveArray.html @@ -0,0 +1,103 @@ +ReadonlyReactiveArray | @conterra/reactivity-core - v0.4.0

Interface ReadonlyReactiveArray<T>

Reactive array interface without modifying methods.

+

See also ReactiveArray.

+
interface ReadonlyReactiveArray<T> {
    length: number;
    at(index: number): undefined | T;
    concat(...values: T[]): ReactiveArray<T>;
    concat(...values: (ReadonlyReactiveArray<T> | T | T[])[]): ReactiveArray<T>;
    entries(): IterableIterator<[index: number, value: T]>;
    every(predicate: ((value: T, index: number) => boolean)): boolean;
    filter<U>(predicate: ((value: T, index: number) => value is U)): ReactiveArray<U>;
    filter(predicate: ((value: T, index: number) => boolean)): ReactiveArray<T>;
    find<U>(predicate: ((value: T, index: number) => value is U)): undefined | U;
    find(predicate: ((value: T, index: number) => boolean)): undefined | T;
    findIndex(predicate: ((value: T, index: number) => boolean)): number;
    findLast<U>(predicate: ((value: T, index: number) => value is U)): undefined | U;
    findLast(predicate: ((value: T, index: number) => boolean)): undefined | T;
    findLastIndex(predicate: ((value: T, index: number) => boolean)): number;
    flatMap<U>(callback: ((value: T, index: number) => U | readonly U[])): ReactiveArray<U>;
    forEach(callback: ((value: T, index: number) => void)): void;
    get(index: number): undefined | T;
    getItems(): T[];
    includes(value: T, fromIndex?: number): boolean;
    indexOf(value: T, fromIndex?: number): number;
    keys(): IterableIterator<number>;
    lastIndexOf(value: T): number;
    map<U>(callback: ((value: T, index: number) => U)): ReactiveArray<U>;
    reduce(callback: ((previousValue: T, currentValue: T, currentIndex: number) => T)): T;
    reduce(callback: ((previousValue: T, currentValue: T, currentIndex: number) => T), initialValue: T): T;
    reduce<U>(callback: ((previousValue: U, currentValue: T, currentIndex: number) => U), initialValue: U): U;
    reduceRight(callback: ((previousValue: T, currentValue: T, currentIndex: number) => T)): T;
    reduceRight(callback: ((previousValue: T, currentValue: T, currentIndex: number) => T), initialValue: T): T;
    reduceRight<U>(callback: ((previousValue: U, currentValue: T, currentIndex: number) => U), initialValue: U): U;
    set(index: number, value: T): void;
    slice(start?: number): ReactiveArray<T>;
    slice(start: number, end?: number): ReactiveArray<T>;
    some(predicate: ((value: T, index: number) => boolean)): boolean;
    values(): IterableIterator<T>;
}

Type Parameters

  • T

Hierarchy (view full)

Methods

  • Returns the item at the given index, or undefined if the index is out of bounds. +You can use negative indices to address items starting from the end of the array.

    +

    See also Array.at.

    +

    Parameters

    • index: number

    Returns undefined | T

  • Returns an iterator over the [index, value] entries in this array.

    +

    Returns IterableIterator<[index: number, value: T]>

  • Returns true if the predicate is satisfied for every item in this array, false otherwise.

    +

    See also Array.every.

    +

    Parameters

    • predicate: ((value: T, index: number) => boolean)
        • (value, index): boolean
        • Parameters

          • value: T
          • index: number

          Returns boolean

    Returns boolean

  • Returns a new array where only items are retained that fulfilled the given predicate.

    +

    See also Array.filter.

    +

    Type Parameters

    • U

    Parameters

    • predicate: ((value: T, index: number) => value is U)
        • (value, index): value is U
        • Parameters

          • value: T
          • index: number

          Returns value is U

    Returns ReactiveArray<U>

  • Returns a new array where only items are retained that fulfilled the given predicate.

    +

    See also Array.filter.

    +

    Parameters

    • predicate: ((value: T, index: number) => boolean)
        • (value, index): boolean
        • Parameters

          • value: T
          • index: number

          Returns boolean

    Returns ReactiveArray<T>

  • Returns the first item that satisfies the given predicate, or undefined if there is no such item.

    +

    See also Array.find.

    +

    Type Parameters

    • U

    Parameters

    • predicate: ((value: T, index: number) => value is U)
        • (value, index): value is U
        • Parameters

          • value: T
          • index: number

          Returns value is U

    Returns undefined | U

  • Returns the first item that satisfies the given predicate, or undefined if there is no such item.

    +

    See also Array.find.

    +

    Parameters

    • predicate: ((value: T, index: number) => boolean)
        • (value, index): boolean
        • Parameters

          • value: T
          • index: number

          Returns boolean

    Returns undefined | T

  • Returns the index of the first item that satisfies the given predicate, -1 if no such item was found.

    +

    See also Array.findIndex.

    +

    Parameters

    • predicate: ((value: T, index: number) => boolean)
        • (value, index): boolean
        • Parameters

          • value: T
          • index: number

          Returns boolean

    Returns number

  • Returns the last item that satisfies the given predicate, or undefined if there is no such item.

    +

    See also Array.findLast.

    +

    Type Parameters

    • U

    Parameters

    • predicate: ((value: T, index: number) => value is U)
        • (value, index): value is U
        • Parameters

          • value: T
          • index: number

          Returns value is U

    Returns undefined | U

  • Returns the last item that satisfies the given predicate, or undefined if there is no such item.

    +

    See also Array.findLast.

    +

    Parameters

    • predicate: ((value: T, index: number) => boolean)
        • (value, index): boolean
        • Parameters

          • value: T
          • index: number

          Returns boolean

    Returns undefined | T

  • Returns the index of the first item that satisfies the given predicate, -1 if no such item was found.

    +

    See also Array.findLastIndex.

    +

    Parameters

    • predicate: ((value: T, index: number) => boolean)
        • (value, index): boolean
        • Parameters

          • value: T
          • index: number

          Returns boolean

    Returns number

  • Returns a new array where every item has been replaced with the result of calling the given callback function. +If the callback function returns an array, the items in that array are included individually.

    +

    See also Array.flatMap.

    +

    Type Parameters

    • U

    Parameters

    • callback: ((value: T, index: number) => U | readonly U[])
        • (value, index): U | readonly U[]
        • Parameters

          • value: T
          • index: number

          Returns U | readonly U[]

    Returns ReactiveArray<U>

  • Executes the given callback for every item in the array.

    +

    See also Array.forEach.

    +

    Parameters

    • callback: ((value: T, index: number) => void)
        • (value, index): void
        • Parameters

          • value: T
          • index: number

          Returns void

    Returns void

  • Returns the item at the given index, or undefined if the index is out of bounds.

    +

    Parameters

    • index: number

    Returns undefined | T

  • Returns a new, non-reactive array with this array's current content.

    +

    Returns T[]

  • Searches for the given value and returns true if it was found, false otherwise.

    +

    See also Array.includes.

    +

    Parameters

    • value: T
    • OptionalfromIndex: number

    Returns boolean

  • Searches for the given value and returns its index, or -1 if it was not found.

    +

    See also Array.indexOf.

    +

    Parameters

    • value: T
    • OptionalfromIndex: number

    Returns number

  • Returns an iterator over the indices in this array.

    +

    Returns IterableIterator<number>

  • Searches backwards for the given value and returns its index, or -1 if it was not found.

    +

    See also Array.lastIndexOf.

    +

    Parameters

    • value: T

    Returns number

  • Returns a new array where every item has been replaced with the result of calling the given callback function.

    +

    See also Array.map.

    +

    Type Parameters

    • U

    Parameters

    • callback: ((value: T, index: number) => U)
        • (value, index): U
        • Parameters

          • value: T
          • index: number

          Returns U

    Returns ReactiveArray<U>

  • Calls the given callback function for all items in this array. +The return value of the previous callback invocation is passed in the next call. +The final result of the callback will be returned from this function.

    +

    See also Array.reduce.

    +

    Parameters

    • callback: ((previousValue: T, currentValue: T, currentIndex: number) => T)
        • (previousValue, currentValue, currentIndex): T
        • Parameters

          • previousValue: T
          • currentValue: T
          • currentIndex: number

          Returns T

    Returns T

  • Calls the given callback function for all items in this array. +The return value of the previous callback invocation is passed in the next call. +The final result of the callback will be returned from this function.

    +

    See also Array.reduce.

    +

    Parameters

    • callback: ((previousValue: T, currentValue: T, currentIndex: number) => T)
        • (previousValue, currentValue, currentIndex): T
        • Parameters

          • previousValue: T
          • currentValue: T
          • currentIndex: number

          Returns T

    • initialValue: T

    Returns T

  • Calls the given callback function for all items in this array. +The return value of the previous callback invocation is passed in the next call. +The final result of the callback will be returned from this function.

    +

    See also Array.reduce.

    +

    Type Parameters

    • U

    Parameters

    • callback: ((previousValue: U, currentValue: T, currentIndex: number) => U)
        • (previousValue, currentValue, currentIndex): U
        • Parameters

          • previousValue: U
          • currentValue: T
          • currentIndex: number

          Returns U

    • initialValue: U

    Returns U

  • Calls the given callback function for all items in this array, starting from the back. +The return value of the previous callback invocation is passed in the next call. +The final result of the callback will be returned from this function.

    +

    See also Array.reduceRight.

    +

    Parameters

    • callback: ((previousValue: T, currentValue: T, currentIndex: number) => T)
        • (previousValue, currentValue, currentIndex): T
        • Parameters

          • previousValue: T
          • currentValue: T
          • currentIndex: number

          Returns T

    Returns T

  • Calls the given callback function for all items in this array, starting from the back. +The return value of the previous callback invocation is passed in the next call. +The final result of the callback will be returned from this function.

    +

    See also Array.reduceRight.

    +

    Parameters

    • callback: ((previousValue: T, currentValue: T, currentIndex: number) => T)
        • (previousValue, currentValue, currentIndex): T
        • Parameters

          • previousValue: T
          • currentValue: T
          • currentIndex: number

          Returns T

    • initialValue: T

    Returns T

  • Calls the given callback function for all items in this array, starting from the back. +The return value of the previous callback invocation is passed in the next call. +The final result of the callback will be returned from this function.

    +

    See also Array.reduceRight.

    +

    Type Parameters

    • U

    Parameters

    • callback: ((previousValue: U, currentValue: T, currentIndex: number) => U)
        • (previousValue, currentValue, currentIndex): U
        • Parameters

          • previousValue: U
          • currentValue: T
          • currentIndex: number

          Returns U

    • initialValue: U

    Returns U

  • Sets the item at the given index to value.

    +

    Parameters

    • index: number
    • value: T

    Returns void

  • Returns true if at least one item satisfies the given predicate, false otherwise.

    +

    See also Array.some.

    +

    Parameters

    • predicate: ((value: T, index: number) => boolean)
        • (value, index): boolean
        • Parameters

          • value: T
          • index: number

          Returns boolean

    Returns boolean

  • Returns an iterator over the items in this array.

    +

    Returns IterableIterator<T>

Properties

length: number

Returns the current number of items in this array.

+
diff --git a/dev/interfaces/WatchOptions.html b/dev/interfaces/WatchOptions.html new file mode 100644 index 0000000..b502135 --- /dev/null +++ b/dev/interfaces/WatchOptions.html @@ -0,0 +1,11 @@ +WatchOptions | @conterra/reactivity-core - v0.4.0

Interface WatchOptions<T>

Options that can be passed to syncWatch.

+
interface WatchOptions<T> {
    immediate?: boolean;
    equal?(prev: T, next: T): boolean;
}

Type Parameters

  • T

Methods

Properties

Methods

  • A function that returns true if the two values are considered equal. +If this function is provided, the watch callback will only be triggered if this function returns false.

    +

    By default, an implementation based on object identity is used.

    +

    Parameters

    • prev: T
    • next: T

    Returns boolean

Properties

immediate?: boolean

Whether to call the watch callback once during setup (default: false).

+

If this is false, the watch callback will only be invoked +after at least a single value changed.

+

If this is true, the callback will fire immediately.

+
diff --git a/dev/types/CleanupFunc.html b/dev/types/CleanupFunc.html new file mode 100644 index 0000000..7336ef4 --- /dev/null +++ b/dev/types/CleanupFunc.html @@ -0,0 +1,4 @@ +CleanupFunc | @conterra/reactivity-core - v0.4.0
CleanupFunc: (() => void)

A cleanup function returned from an effect or a watch callback.

+

This function will be invoked before the effect or watch callback is triggered again, +or when it is being disposed.

+
diff --git a/dev/types/EffectCallback.html b/dev/types/EffectCallback.html new file mode 100644 index 0000000..9c6383f --- /dev/null +++ b/dev/types/EffectCallback.html @@ -0,0 +1,6 @@ +EffectCallback | @conterra/reactivity-core - v0.4.0
EffectCallback: (() => void | CleanupFunc)

The body of an effect.

+

Instructions in this function are tracked: when any of its reactive +dependencies change, the effect will be triggered again.

+

An effect may return a cleanup function that will be executed +before the effect is triggered again, or when the effect is being destroyed.

+
diff --git a/dev/types/EqualsFunc.html b/dev/types/EqualsFunc.html new file mode 100644 index 0000000..eb97471 --- /dev/null +++ b/dev/types/EqualsFunc.html @@ -0,0 +1,2 @@ +EqualsFunc | @conterra/reactivity-core - v0.4.0

Type Alias EqualsFunc<T>

EqualsFunc<T>: ((a: T, b: T) => boolean)

A function that shall return true if a and b are considered equal, false otherwise.

+

Type Parameters

  • T
diff --git a/dev/types/ReactiveStructDefinition.html b/dev/types/ReactiveStructDefinition.html new file mode 100644 index 0000000..5dea0ca --- /dev/null +++ b/dev/types/ReactiveStructDefinition.html @@ -0,0 +1,4 @@ +ReactiveStructDefinition | @conterra/reactivity-core - v0.4.0

Type Alias ReactiveStructDefinition<T>

ReactiveStructDefinition<T>: {
    [key in keyof T]-?: GetMemberSchemaForProp<T, T[key]>
}

Definition of a reactive struct. +All properties of T must be part of the definition.

+

Type Parameters

  • T

    The type of the struct.

    +
diff --git a/dev/types/ReadonlyReactiveMap.html b/dev/types/ReadonlyReactiveMap.html new file mode 100644 index 0000000..d6c1208 --- /dev/null +++ b/dev/types/ReadonlyReactiveMap.html @@ -0,0 +1,3 @@ +ReadonlyReactiveMap | @conterra/reactivity-core - v0.4.0

Type Alias ReadonlyReactiveMap<K, V>

ReadonlyReactiveMap<K, V>: Omit<ReactiveMap<K, V>, "set" | "delete" | "clear">

Reactive map interface without modifying methods.

+

See also ReactiveMap.

+

Type Parameters

  • K
  • V
diff --git a/dev/types/ReadonlyReactiveSet.html b/dev/types/ReadonlyReactiveSet.html new file mode 100644 index 0000000..1961c7a --- /dev/null +++ b/dev/types/ReadonlyReactiveSet.html @@ -0,0 +1,3 @@ +ReadonlyReactiveSet | @conterra/reactivity-core - v0.4.0

Type Alias ReadonlyReactiveSet<K>

ReadonlyReactiveSet<K>: Omit<ReactiveSet<K>, "add" | "delete" | "clear">

Reactive set interface without modifying methods.

+

See also ReactiveSet.

+

Type Parameters

  • K
diff --git a/dev/types/WatchCallback.html b/dev/types/WatchCallback.html new file mode 100644 index 0000000..2455a58 --- /dev/null +++ b/dev/types/WatchCallback.html @@ -0,0 +1,7 @@ +WatchCallback | @conterra/reactivity-core - v0.4.0

Type Alias WatchCallback<T>

WatchCallback<T>: ((value: T, oldValue: T) => void | CleanupFunc)

A watch callback triggered if observed values change.

+

It receives the current value of the watched signal(s) (returned by the selector) +and the previous value (if available).

+

The body of a watch statement is not tracked.

+

A watch callback may return a cleanup function that will be executed +before the callback is triggered again, or when the watch is being destroyed.

+

Type Parameters

  • T
diff --git a/dev/types/WatchImmediateCallback.html b/dev/types/WatchImmediateCallback.html new file mode 100644 index 0000000..f20b01e --- /dev/null +++ b/dev/types/WatchImmediateCallback.html @@ -0,0 +1,3 @@ +WatchImmediateCallback | @conterra/reactivity-core - v0.4.0

Type Alias WatchImmediateCallback<T>

WatchImmediateCallback<T>: ((value: T, oldValue: T | undefined) => void | CleanupFunc)

Like WatchCallback, but the oldValue parameter may be undefined for the first invocation. +This is the case when immediate: true has been passed to the watch function, in which case there cannot be a previous value.

+

Type Parameters

  • T