diff --git a/docs/.nojekyll b/docs/.nojekyll new file mode 100644 index 0000000..e2ac661 --- /dev/null +++ b/docs/.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/docs/assets/highlight.css b/docs/assets/highlight.css new file mode 100644 index 0000000..fb0df38 --- /dev/null +++ b/docs/assets/highlight.css @@ -0,0 +1,120 @@ +:root { + --light-hl-0: #795E26; + --dark-hl-0: #DCDCAA; + --light-hl-1: #000000; + --dark-hl-1: #D4D4D4; + --light-hl-2: #A31515; + --dark-hl-2: #CE9178; + --light-hl-3: #AF00DB; + --dark-hl-3: #C586C0; + --light-hl-4: #001080; + --dark-hl-4: #9CDCFE; + --light-hl-5: #0000FF; + --dark-hl-5: #569CD6; + --light-hl-6: #0070C1; + --dark-hl-6: #4FC1FF; + --light-hl-7: #008000; + --dark-hl-7: #6A9955; + --light-hl-8: #800000; + --dark-hl-8: #808080; + --light-hl-9: #800000; + --dark-hl-9: #569CD6; + --light-hl-10: #E50000; + --dark-hl-10: #9CDCFE; + --light-hl-11: #0451A5; + --dark-hl-11: #9CDCFE; + --light-hl-12: #000000; + --dark-hl-12: #C8C8C8; + --light-hl-13: #098658; + --dark-hl-13: #B5CEA8; + --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); + --hl-11: var(--light-hl-11); + --hl-12: var(--light-hl-12); + --hl-13: var(--light-hl-13); + --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); + --hl-11: var(--dark-hl-11); + --hl-12: var(--dark-hl-12); + --hl-13: var(--dark-hl-13); + --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); + --hl-11: var(--light-hl-11); + --hl-12: var(--light-hl-12); + --hl-13: var(--light-hl-13); + --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); + --hl-11: var(--dark-hl-11); + --hl-12: var(--dark-hl-12); + --hl-13: var(--dark-hl-13); + --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); } +.hl-11 { color: var(--hl-11); } +.hl-12 { color: var(--hl-12); } +.hl-13 { color: var(--hl-13); } +pre, code { background: var(--code-background); } diff --git a/docs/assets/main.js b/docs/assets/main.js new file mode 100644 index 0000000..d0aa8d5 --- /dev/null +++ b/docs/assets/main.js @@ -0,0 +1,59 @@ +"use strict"; +"use strict";(()=>{var Pe=Object.create;var ne=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Fe=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!Re.call(t,i)&&i!==n&&ne(t,i,{get:()=>e[i],enumerable:!(r=Ie(e,i))||r.enumerable});return t};var De=(t,e,n)=>(n=t!=null?Pe(_e(t)):{},Fe(e||!t||!t.__esModule?ne(n,"default",{value:t,enumerable:!0}):n,t));var ae=Me((se,oe)=>{(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),v=s.str.charAt(1),f;v in s.node.edges?f=s.node.edges[v]:(f=new t.TokenSet,s.node.edges[v]=f),s.str.length==1&&(f.final=!0),i.push({node:f,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 se=="object"?oe.exports=n():e.lunr=n()}(this,function(){return t})})()});var re=[];function G(t,e){re.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureActivePageVisible(),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible())}createComponents(e){re.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()}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){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r}}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&&n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let r=document.createElement("p");r.classList.add("warning"),r.textContent="This member is normally hidden due to your filter settings.",n.prepend(r)}}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="Copied!",e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var de=De(ae());async function le(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=de.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function he(){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",()=>{le(e,t)}),le(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");let s=!1;i.addEventListener("mousedown",()=>s=!0),i.addEventListener("mouseup",()=>{s=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{s||(s=!1,t.classList.remove("has-focus"))}),Ae(t,i,r,e)}function Ae(t,e,n,r){n.addEventListener("input",ie(()=>{Ne(t,e,n,r)},200));let i=!1;n.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Ve(e,n):s.key=="Escape"?n.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),n.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!n.matches(":focus")&&s.key==="/"&&(n.focus(),s.preventDefault())})}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=ce(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` + ${ce(l.parent,i)}.${d}`);let v=document.createElement("li");v.classList.value=l.classes??"";let f=document.createElement("a");f.href=r.base+l.url,f.innerHTML=u+d,v.append(f),e.appendChild(v)}}function ue(t,e){let n=t.querySelector(".current");if(!n)n=t.querySelector(e==1?"li:first-child":"li:last-child"),n&&n.classList.add("current");else{let r=n;if(e===1)do r=r.nextElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);else do r=r.previousElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);r&&(n.classList.remove("current"),r.classList.add("current"))}}function Ve(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),e.blur()}}function ce(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(K(t.substring(s,o)),`${K(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(K(t.substring(s))),i.join("")}var Be={"&":"&","<":"<",">":">","'":"'",'"':"""};function K(t){return t.replace(/[&<>"'"]/g,e=>Be[e])}var C=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",pe="mousemove",B="mouseup",J={x:0,y:0},fe=!1,ee=!1,He=!1,D=!1,me=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(me?"is-mobile":"not-mobile");me&&"ontouchstart"in document.documentElement&&(He=!0,F="touchstart",pe="touchmove",B="touchend");document.addEventListener(F,t=>{ee=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(pe,t=>{if(ee&&!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(B,()=>{ee=!1});document.addEventListener("click",t=>{fe&&(t.preventDefault(),t.stopImmediatePropagation(),fe=!1)});var X=class extends C{constructor(n){super(n);this.className=this.el.dataset.toggle||"",this.el.addEventListener(B,r=>this.onPointerUp(r)),this.el.addEventListener("click",r=>r.preventDefault()),document.addEventListener(F,r=>this.onDocumentPointerDown(r)),document.addEventListener(B,r=>this.onDocumentPointerUp(r))}setActive(n){if(this.active==n)return;this.active=n,document.documentElement.classList.toggle("has-"+this.className,n),this.el.classList.toggle("active",n);let r=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(r),setTimeout(()=>document.documentElement.classList.remove(r),500)}onPointerUp(n){D||(this.setActive(!0),n.preventDefault())}onDocumentPointerDown(n){if(this.active){if(n.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(n){if(!D&&this.active&&n.target.closest(".col-sidebar")){let r=n.target.closest("a");if(r){let i=window.location.href;i.indexOf("#")!=-1&&(i=i.substring(0,i.indexOf("#"))),r.href.substring(0,i.length)==i&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var ve=document.head.appendChild(document.createElement("style"));ve.dataset.for="filters";var Y=class extends C{constructor(n){super(n);this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ve.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`}fromLocalStorage(){let n=Q.getItem(this.key);return n?n==="true":this.el.checked}setLocalStorage(n){Q.setItem(this.key,n.toString()),this.value=n,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),document.querySelectorAll(".tsd-index-section").forEach(n=>{n.style.display="block";let r=Array.from(n.querySelectorAll(".tsd-index-link")).every(i=>i.offsetParent==null);n.style.display=r?"none":"block"})}};var Z=class extends C{constructor(n){super(n);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 r=Q.getItem(this.key);this.el.open=r?r==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let i=this.summary.querySelector("a");i&&i.addEventListener("click",()=>{location.assign(i.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ge(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ye(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ye(t.value)})}function ye(t){document.documentElement.dataset.theme=t}var Le;function be(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",xe),xe())}async function xe(){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();Le=t.dataset.base+"/",t.innerHTML="";for(let s of i)we(s,t,[]);window.app.createComponents(t),window.app.ensureActivePageVisible()}function we(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-index-accordion`:"tsd-index-accordion",s.dataset.key=i.join("$");let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.innerHTML='',Ee(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)we(u,l,i)}else Ee(t,r,t.class)}function Ee(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=Le+t.path,n&&(r.className=n),location.href===r.href&&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-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Se=document.getElementById("tsd-theme");Se&&ge(Se);var je=new U;Object.defineProperty(window,"app",{value:je});he();be();})(); +/*! 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/docs/assets/navigation.js b/docs/assets/navigation.js new file mode 100644 index 0000000..2866059 --- /dev/null +++ b/docs/assets/navigation.js @@ -0,0 +1 @@ +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE62UQW+CMBTHv0vPbkZnlsWb05kddG4J2cV46GgdZNCStjjIsu8+IAgFXp8edjL2/36/vkcL+x9ieGbInAQmjsiIJNQExb9YsjTielyu3tbRVygYmc9GxA/CiCkuyHzf4MdQabMJBW8dJ6pC+tFYmoqu7276O3I00RMMeynYg0Vn0ATZfwyQXdl/Brdf4oM+es2/r6Tv5Ym1vR9RrQv6nHTxyfShR6cxFwbGq+gqfq3o5wXPuQT1PUXcoakTlH72thtkIjtGPS+SQQ+0XL7IvaVc5Q64ylCDV/w6dj9HGM8Gw7e3iYGTd98j8CVCgOVq4S1a6JgK34RS6HEVdMH7mQX6ilPDh2fVGroVF1Xw0fd17hvQUXLt06QqhlRtiiiChfqstnmlSnMFeXolmGxNfSPta2VZ6gzDqWCRc5w2RRV69y1gvEwwtPNxtsBi/WaCgEn5WFxdNyEiUDyWJ/4oWb6UwtDiGwyeA1CGSE3I8tVuC4nqCIFTgV8tO0c0JyZjCC/XESyDDyIDz+HwBx6tY/zkBwAA" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js new file mode 100644 index 0000000..e35a585 --- /dev/null +++ b/docs/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/docs/assets/style.css b/docs/assets/style.css new file mode 100644 index 0000000..07a385b --- /dev/null +++ b/docs/assets/style.css @@ -0,0 +1,1394 @@ +: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-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: var(--light-color-ts-type-alias); + --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-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-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: var(--dark-color-ts-type-alias); + --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-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-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); + + --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-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); + + --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-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); + + --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-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); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); +} + +.always-visible, +.always-visible .tsd-signatures { + display: inherit !important; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + line-height: 1.2; +} + +h1 > a, +h2 > a, +h3 > a, +h4 > a, +h5 > a, +h6 > a { + text-decoration: none; + color: var(--color-text); +} + +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; +} + +.uppercase { + text-transform: uppercase; +} + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +.container { + max-width: 1700px; + padding: 0 2rem; +} + +/* Footer */ +.tsd-generator { + border-top: 1px solid var(--color-accent); + padding-top: 1rem; + padding-bottom: 1rem; + max-height: 3.5rem; +} + +.tsd-generator > p { + margin-top: 0; + margin-bottom: 0; + padding: 0 1rem; +} + +.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: "Segoe UI", sans-serif; + 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; +} + +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: fit-content; + width: -moz-fit-content; + align-items: center; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-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 + svg { + transform: scale(0.95); +} +.tsd-filter-input input[type="checkbox"]:focus:not(:focus-visible) + svg { + transform: scale(1); +} +.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); +} + +.tsd-theme-toggle { + padding-top: 0.75rem; +} +.tsd-theme-toggle > h4 { + display: inline; + vertical-align: middle; + margin-right: 0.75rem; +} + +.tsd-hierarchy { + list-style: square; + margin: 0; +} +.tsd-hierarchy .target { + font-weight: bold; +} + +.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.5rem); +} +.tsd-navigation a, +.tsd-navigation summary > span, +.tsd-page-navigation a { + display: inline-flex; + 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-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-nested-navigation > li > a, +.tsd-nested-navigation > li > span { + width: calc(100% - 1.75rem - 0.5rem); +} + +.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 { + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + -ms-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-index-accordion .tsd-accordion-summary > svg { + margin-left: 0.25rem; +} +.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: 4rem 0; +} +.tsd-panel-group.tsd-index-group { + margin: 2rem 0; +} +.tsd-panel-group.tsd-index-group details { + margin: 2rem 0; +} + +#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-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%; + } +} + +/* 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/docs/classes/VDocType.html b/docs/classes/VDocType.html new file mode 100644 index 0000000..244a08f --- /dev/null +++ b/docs/classes/VDocType.html @@ -0,0 +1,46 @@ +VDocType | zeed-dom

Class VDocType

Hierarchy

Constructors

Properties

_childNodes: any[]
_parentNode: any
append: ((node) => void) = ...

Type declaration

    • (node): void
    • Parameters

      • node: undefined | null | string | string[] | VNode | VNode[]

      Returns void

name: any
publicId: any
systemId: any
CDATA_SECTION_NODE: number = 4
COMMENT_NODE: number = 8
DOCUMENT_FRAGMENT_NODE: number = 11
DOCUMENT_NODE: number = 9
DOCUMENT_TYPE_NODE: number = 10
ELEMENT_NODE: number = 1
PROCESSING_INSTRUCTION_NODE: number = 7
TEXT_NODE: number = 3

Accessors

  • get childNodes(): any[]
  • Returns any[]

  • get children(): any[]
  • Returns any[]

  • get firstChild(): any
  • Returns any

  • get lastChild(): any
  • Returns any

  • get nextSibling(): any
  • Returns any

  • get nodeName(): string
  • Returns string

  • get nodeType(): number
  • Returns number

  • get nodeValue(): null | string
  • Returns null | string

  • get ownerDocument(): any
  • Returns any

  • get parentNode(): any
  • Returns any

  • get previousSibling(): any
  • Returns any

  • get textContent(): null | string
  • Returns null | string

  • set textContent(text): void
  • Parameters

    • text: null | string

    Returns void

Methods

  • Parameters

    • node: {
          _parentNode: null;
      }
      • _parentNode: null

    Returns void

  • Replace content of node with text or nodes

    +

    Parameters

    • Rest ...nodes: any[]

    Returns void

  • Replace node itself with nodes

    +

    Parameters

    • Rest ...nodes: any[]

    Returns void

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/VDocument.html b/docs/classes/VDocument.html new file mode 100644 index 0000000..dcb8f92 --- /dev/null +++ b/docs/classes/VDocument.html @@ -0,0 +1,59 @@ +VDocument | zeed-dom

Class VDocument

Hierarchy

Constructors

Properties

_childNodes: any[]
_parentNode: any
append: ((node) => void) = ...

Type declaration

    • (node): void
    • Parameters

      • node: undefined | null | string | string[] | VNode | VNode[]

      Returns void

docType?: VDocType
CDATA_SECTION_NODE: number = 4
COMMENT_NODE: number = 8
DOCUMENT_FRAGMENT_NODE: number = 11
DOCUMENT_NODE: number = 9
DOCUMENT_TYPE_NODE: number = 10
ELEMENT_NODE: number = 1
PROCESSING_INSTRUCTION_NODE: number = 7
TEXT_NODE: number = 3

Accessors

  • get childNodes(): any[]
  • Returns any[]

  • get children(): any[]
  • Returns any[]

  • get firstChild(): any
  • Returns any

  • get innerHTML(): string
  • Returns string

  • get lastChild(): any
  • Returns any

  • get nextSibling(): any
  • Returns any

  • get nodeName(): string
  • Returns string

  • get nodeType(): number
  • Returns number

  • get nodeValue(): null | string
  • Returns null | string

  • get ownerDocument(): any
  • Returns any

  • get parentNode(): any
  • Returns any

  • get previousSibling(): any
  • Returns any

  • get textContent(): null | string
  • Returns null | string

  • set textContent(text): void
  • Parameters

    • text: null | string

    Returns void

Methods

  • Parameters

    • h: ((...args) => string) = htmlVDOM
        • (...args): string
        • For a given function, creates a bound function that has the same body as the original function. +The this object of the bound function is associated with the specified object, and has the specified initial parameters.

          +

          Parameters

          • Rest ...args: [tag: string, attrs: any, children?: string | any[]]

            Arguments to bind to the parameters of the function.

            +

          Returns string

    Returns string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/VDocumentFragment.html b/docs/classes/VDocumentFragment.html new file mode 100644 index 0000000..47b8c4e --- /dev/null +++ b/docs/classes/VDocumentFragment.html @@ -0,0 +1,58 @@ +VDocumentFragment | zeed-dom

Class VDocumentFragment

Hierarchy

Constructors

Properties

_childNodes: any[]
_parentNode: any
append: ((node) => void) = ...

Type declaration

    • (node): void
    • Parameters

      • node: undefined | null | string | string[] | VNode | VNode[]

      Returns void

docType?: VDocType
CDATA_SECTION_NODE: number = 4
COMMENT_NODE: number = 8
DOCUMENT_FRAGMENT_NODE: number = 11
DOCUMENT_NODE: number = 9
DOCUMENT_TYPE_NODE: number = 10
ELEMENT_NODE: number = 1
PROCESSING_INSTRUCTION_NODE: number = 7
TEXT_NODE: number = 3

Accessors

  • get childNodes(): any[]
  • Returns any[]

  • get children(): any[]
  • Returns any[]

  • get firstChild(): any
  • Returns any

  • get lastChild(): any
  • Returns any

  • get nextSibling(): any
  • Returns any

  • get nodeName(): string
  • Returns string

  • get nodeType(): number
  • Returns number

  • get nodeValue(): null | string
  • Returns null | string

  • get ownerDocument(): any
  • Returns any

  • get parentNode(): any
  • Returns any

  • get previousSibling(): any
  • Returns any

  • get textContent(): null | string
  • Returns null | string

  • set textContent(text): void
  • Parameters

    • text: null | string

    Returns void

Methods

  • Parameters

    • selector: any
    • handler: ((arg0, arg1) => void)
        • (arg0, arg1): void
        • Parameters

          Returns void

    Returns void

  • Parameters

    • h: ((...args) => string) = htmlVDOM
        • (...args): string
        • For a given function, creates a bound function that has the same body as the original function. +The this object of the bound function is associated with the specified object, and has the specified initial parameters.

          +

          Parameters

          • Rest ...args: [tag: string, attrs: any, children?: string | any[]]

            Arguments to bind to the parameters of the function.

            +

          Returns string

    Returns string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/VElement.html b/docs/classes/VElement.html new file mode 100644 index 0000000..0a16599 --- /dev/null +++ b/docs/classes/VElement.html @@ -0,0 +1,76 @@ +VElement | zeed-dom

Class VElement

Hierarchy

Constructors

Properties

_attributes: Record<string, string>
_childNodes: any[]
_nodeName: any
_originalTagName: string
_parentNode: any
_styles: any
append: ((node) => void) = ...

Type declaration

    • (node): void
    • Parameters

      • node: undefined | null | string | string[] | VNode | VNode[]

      Returns void

CDATA_SECTION_NODE: number = 4
COMMENT_NODE: number = 8
DOCUMENT_FRAGMENT_NODE: number = 11
DOCUMENT_NODE: number = 9
DOCUMENT_TYPE_NODE: number = 10
ELEMENT_NODE: number = 1
PROCESSING_INSTRUCTION_NODE: number = 7
TEXT_NODE: number = 3

Accessors

  • get childNodes(): any[]
  • Returns any[]

  • get children(): any[]
  • Returns any[]

  • get classList(): {
        add: ((s) => void);
        remove: ((s) => void);
        contains(s): boolean;
    }
  • Returns {
        add: ((s) => void);
        remove: ((s) => void);
        contains(s): boolean;
    }

    • add: ((s) => void)
        • (s): void
        • Parameters

          • s: any

          Returns void

    • remove: ((s) => void)
        • (s): void
        • Parameters

          • s: any

          Returns void

    • contains:function
      • Parameters

        • s: any

        Returns boolean

  • get className(): string
  • Returns string

  • set className(name): void
  • Parameters

    • name: string | string[]

    Returns void

  • get firstChild(): any
  • Returns any

  • get id(): null | string
  • Returns null | string

  • set id(value): void
  • Parameters

    • value: null | string

    Returns void

  • get lastChild(): any
  • Returns any

  • get nextSibling(): any
  • Returns any

  • get nodeName(): any
  • Returns any

  • get nodeType(): number
  • Returns number

  • get nodeValue(): null | string
  • Returns null | string

  • get ownerDocument(): any
  • Returns any

  • get parentNode(): any
  • Returns any

  • get previousSibling(): any
  • Returns any

  • get src(): null | string
  • Returns null | string

  • set src(value): void
  • Parameters

    • value: null | string

    Returns void

  • get textContent(): null | string
  • Returns null | string

  • set textContent(text): void
  • Parameters

    • text: null | string

    Returns void

Methods

  • Parameters

    • name: string

    Returns null | string

  • Parameters

    • name: string

    Returns null | string

  • Parameters

    • selector: any
    • handler: ((arg0, arg1) => void)
        • (arg0, arg1): void
        • Parameters

          Returns void

    Returns void

  • Parameters

    • name: any

    Returns boolean

  • Parameters

    • name: string | number

    Returns void

  • Parameters

    • h: ((...args) => string) = htmlVDOM
        • (...args): string
        • For a given function, creates a bound function that has the same body as the original function. +The this object of the bound function is associated with the specified object, and has the specified initial parameters.

          +

          Parameters

          • Rest ...args: [tag: string, attrs: any, children?: string | any[]]

            Arguments to bind to the parameters of the function.

            +

          Returns string

    Returns string

  • Parameters

    • name: string
    • value: string

    Returns void

  • Parameters

    • _html: string

    Returns void

  • Private function to easily change the tagName

    +

    Parameters

    • name: string

    Returns void

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/VHTMLDocument.html b/docs/classes/VHTMLDocument.html new file mode 100644 index 0000000..a58dc91 --- /dev/null +++ b/docs/classes/VHTMLDocument.html @@ -0,0 +1,62 @@ +VHTMLDocument | zeed-dom

Class VHTMLDocument

Hierarchy

Constructors

Properties

_childNodes: any[]
_parentNode: any
append: ((node) => void) = ...

Type declaration

    • (node): void
    • Parameters

      • node: undefined | null | string | string[] | VNode | VNode[]

      Returns void

docType?: VDocType
CDATA_SECTION_NODE: number = 4
COMMENT_NODE: number = 8
DOCUMENT_FRAGMENT_NODE: number = 11
DOCUMENT_NODE: number = 9
DOCUMENT_TYPE_NODE: number = 10
ELEMENT_NODE: number = 1
PROCESSING_INSTRUCTION_NODE: number = 7
TEXT_NODE: number = 3

Accessors

  • get childNodes(): any[]
  • Returns any[]

  • get children(): any[]
  • Returns any[]

  • get documentElement(): any
  • Returns any

  • get firstChild(): any
  • Returns any

  • get innerHTML(): string
  • Returns string

  • get lastChild(): any
  • Returns any

  • get nextSibling(): any
  • Returns any

  • get nodeName(): string
  • Returns string

  • get nodeType(): number
  • Returns number

  • get nodeValue(): null | string
  • Returns null | string

  • get ownerDocument(): any
  • Returns any

  • get parentNode(): any
  • Returns any

  • get previousSibling(): any
  • Returns any

  • get textContent(): null | string
  • Returns null | string

  • set textContent(text): void
  • Parameters

    • text: null | string

    Returns void

Methods

  • Parameters

    • selector: any
    • handler: ((arg0, arg1) => void)
        • (arg0, arg1): void
        • Parameters

          Returns void

    Returns void

  • Parameters

    • h: ((...args) => string) = htmlVDOM
        • (...args): string
        • For a given function, creates a bound function that has the same body as the original function. +The this object of the bound function is associated with the specified object, and has the specified initial parameters.

          +

          Parameters

          • Rest ...args: [tag: string, attrs: any, children?: string | any[]]

            Arguments to bind to the parameters of the function.

            +

          Returns string

    Returns string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/VNode.html b/docs/classes/VNode.html new file mode 100644 index 0000000..c131a79 --- /dev/null +++ b/docs/classes/VNode.html @@ -0,0 +1,43 @@ +VNode | zeed-dom

Class VNode

Hierarchy

Constructors

Properties

_childNodes: any[]
_parentNode: any
append: ((node) => void) = ...

Type declaration

    • (node): void
    • Parameters

      • node: undefined | null | string | string[] | VNode | VNode[]

      Returns void

CDATA_SECTION_NODE: number = 4
COMMENT_NODE: number = 8
DOCUMENT_FRAGMENT_NODE: number = 11
DOCUMENT_NODE: number = 9
DOCUMENT_TYPE_NODE: number = 10
ELEMENT_NODE: number = 1
PROCESSING_INSTRUCTION_NODE: number = 7
TEXT_NODE: number = 3

Accessors

  • get nodeValue(): null | string
  • Returns null | string

  • get textContent(): null | string
  • Returns null | string

  • set textContent(text): void
  • Parameters

    • text: null | string

    Returns void

Methods

  • Parameters

    • node: undefined | null | string | string[] | VNode | VNode[]

    Returns void

  • Parameters

    • deep: boolean = false

    Returns any

  • Parameters

    • node: {
          _parentNode: null;
      }
      • _parentNode: null

    Returns void

  • Replace content of node with text or nodes

    +

    Parameters

    • Rest ...nodes: any[]

    Returns void

  • Replace node itself with nodes

    +

    Parameters

    • Rest ...nodes: any[]

    Returns void

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/VNodeQuery.html b/docs/classes/VNodeQuery.html new file mode 100644 index 0000000..036da5f --- /dev/null +++ b/docs/classes/VNodeQuery.html @@ -0,0 +1,50 @@ +VNodeQuery | zeed-dom

Class VNodeQuery

Hierarchy

Constructors

Properties

_childNodes: any[]
_parentNode: any
append: ((node) => void) = ...

Type declaration

    • (node): void
    • Parameters

      • node: undefined | null | string | string[] | VNode | VNode[]

      Returns void

CDATA_SECTION_NODE: number = 4
COMMENT_NODE: number = 8
DOCUMENT_FRAGMENT_NODE: number = 11
DOCUMENT_NODE: number = 9
DOCUMENT_TYPE_NODE: number = 10
ELEMENT_NODE: number = 1
PROCESSING_INSTRUCTION_NODE: number = 7
TEXT_NODE: number = 3

Accessors

  • get childNodes(): any[]
  • Returns any[]

  • get children(): any[]
  • Returns any[]

  • get firstChild(): any
  • Returns any

  • get lastChild(): any
  • Returns any

  • get nextSibling(): any
  • Returns any

  • get nodeName(): string
  • Returns string

  • get nodeType(): number
  • Returns number

  • get nodeValue(): null | string
  • Returns null | string

  • get ownerDocument(): any
  • Returns any

  • get parentNode(): any
  • Returns any

  • get previousSibling(): any
  • Returns any

  • get textContent(): null | string
  • Returns null | string

  • set textContent(text): void
  • Parameters

    • text: null | string

    Returns void

Methods

  • Parameters

    • selector: any
    • handler: ((arg0, arg1) => void)
        • (arg0, arg1): void
        • Parameters

          Returns void

    Returns void

  • Parameters

    • selector: string

    Returns boolean

  • Parameters

    • selector: string

    Returns any

  • Parameters

    • node: {
          _parentNode: null;
      }
      • _parentNode: null

    Returns void

  • Replace content of node with text or nodes

    +

    Parameters

    • Rest ...nodes: any[]

    Returns void

  • Replace node itself with nodes

    +

    Parameters

    • Rest ...nodes: any[]

    Returns void

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/VTextNode.html b/docs/classes/VTextNode.html new file mode 100644 index 0000000..0b886dd --- /dev/null +++ b/docs/classes/VTextNode.html @@ -0,0 +1,44 @@ +VTextNode | zeed-dom

Class VTextNode

Hierarchy

Constructors

Properties

_childNodes: any[]
_parentNode: any
_text: string
append: ((node) => void) = ...

Type declaration

    • (node): void
    • Parameters

      • node: undefined | null | string | string[] | VNode | VNode[]

      Returns void

CDATA_SECTION_NODE: number = 4
COMMENT_NODE: number = 8
DOCUMENT_FRAGMENT_NODE: number = 11
DOCUMENT_NODE: number = 9
DOCUMENT_TYPE_NODE: number = 10
ELEMENT_NODE: number = 1
PROCESSING_INSTRUCTION_NODE: number = 7
TEXT_NODE: number = 3

Accessors

  • get childNodes(): any[]
  • Returns any[]

  • get children(): any[]
  • Returns any[]

  • get firstChild(): any
  • Returns any

  • get lastChild(): any
  • Returns any

  • get nextSibling(): any
  • Returns any

  • get nodeName(): string
  • Returns string

  • get nodeType(): number
  • Returns number

  • get nodeValue(): null | string
  • Returns null | string

  • get ownerDocument(): any
  • Returns any

  • get parentNode(): any
  • Returns any

  • get previousSibling(): any
  • Returns any

  • get textContent(): null | string
  • Returns null | string

Methods

  • Parameters

    • node: {
          _parentNode: null;
      }
      • _parentNode: null

    Returns void

  • Replace content of node with text or nodes

    +

    Parameters

    • Rest ...nodes: any[]

    Returns void

  • Replace node itself with nodes

    +

    Parameters

    • Rest ...nodes: any[]

    Returns void

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/CDATA.html b/docs/functions/CDATA.html new file mode 100644 index 0000000..fe560ea --- /dev/null +++ b/docs/functions/CDATA.html @@ -0,0 +1 @@ +CDATA | zeed-dom

Function CDATA

  • Parameters

    • s: string

    Returns string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/createDocument.html b/docs/functions/createDocument.html new file mode 100644 index 0000000..bcb4b83 --- /dev/null +++ b/docs/functions/createDocument.html @@ -0,0 +1 @@ +createDocument | zeed-dom

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/createHTMLDocument.html b/docs/functions/createHTMLDocument.html new file mode 100644 index 0000000..a8f7959 --- /dev/null +++ b/docs/functions/createHTMLDocument.html @@ -0,0 +1 @@ +createHTMLDocument | zeed-dom

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/escapeHTML.html b/docs/functions/escapeHTML.html new file mode 100644 index 0000000..3032935 --- /dev/null +++ b/docs/functions/escapeHTML.html @@ -0,0 +1 @@ +escapeHTML | zeed-dom

Function escapeHTML

  • Parameters

    • text: string

    Returns string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/hArgumentParser.html b/docs/functions/hArgumentParser.html new file mode 100644 index 0000000..16a1482 --- /dev/null +++ b/docs/functions/hArgumentParser.html @@ -0,0 +1 @@ +hArgumentParser | zeed-dom

Function hArgumentParser

  • Parameters

    • tag: any
    • attrs: any
    • Rest ...children: any[]

    Returns {
        attrs: any;
        children: any[];
        tag: any;
    }

    • attrs: any
    • children: any[]
    • tag: any

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/hFactory.html b/docs/functions/hFactory.html new file mode 100644 index 0000000..f788115 --- /dev/null +++ b/docs/functions/hFactory.html @@ -0,0 +1 @@ +hFactory | zeed-dom

Function hFactory

  • Parameters

    • context: Context

    Returns any

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/handleHTML.html b/docs/functions/handleHTML.html new file mode 100644 index 0000000..149204c --- /dev/null +++ b/docs/functions/handleHTML.html @@ -0,0 +1 @@ +handleHTML | zeed-dom

Function handleHTML

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/hasOwn.html b/docs/functions/hasOwn.html new file mode 100644 index 0000000..4d8a02c --- /dev/null +++ b/docs/functions/hasOwn.html @@ -0,0 +1,2 @@ +hasOwn | zeed-dom

Function hasOwn

  • Fallback for Object.hasOwn

    +

    Parameters

    • object: any
    • propertyName: string

    Returns boolean

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/html-1.html b/docs/functions/html-1.html new file mode 100644 index 0000000..33cd6ec --- /dev/null +++ b/docs/functions/html-1.html @@ -0,0 +1 @@ +html | zeed-dom

Function html

  • Parameters

    • itag: string
    • Optional iattrs: object
    • Rest ...ichildren: any[]

    Returns string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/parseHTML.html b/docs/functions/parseHTML.html new file mode 100644 index 0000000..69e89ff --- /dev/null +++ b/docs/functions/parseHTML.html @@ -0,0 +1 @@ +parseHTML | zeed-dom

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/removeBodyContainer.html b/docs/functions/removeBodyContainer.html new file mode 100644 index 0000000..dc4c084 --- /dev/null +++ b/docs/functions/removeBodyContainer.html @@ -0,0 +1 @@ +removeBodyContainer | zeed-dom

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/tidyDOM.html b/docs/functions/tidyDOM.html new file mode 100644 index 0000000..6e7d104 --- /dev/null +++ b/docs/functions/tidyDOM.html @@ -0,0 +1 @@ +tidyDOM | zeed-dom

Function tidyDOM

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/unescapeHTML.html b/docs/functions/unescapeHTML.html new file mode 100644 index 0000000..b656216 --- /dev/null +++ b/docs/functions/unescapeHTML.html @@ -0,0 +1 @@ +unescapeHTML | zeed-dom

Function unescapeHTML

  • Parameters

    • html: string

    Returns string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/vdom.html b/docs/functions/vdom.html new file mode 100644 index 0000000..7307436 --- /dev/null +++ b/docs/functions/vdom.html @@ -0,0 +1 @@ +vdom | zeed-dom

Function vdom

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/xml-1.html b/docs/functions/xml-1.html new file mode 100644 index 0000000..75e5232 --- /dev/null +++ b/docs/functions/xml-1.html @@ -0,0 +1 @@ +xml | zeed-dom

Function xml

  • Parameters

    • itag: string
    • Optional iattrs: object
    • Rest ...ichildren: any[]

    Returns string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..f5011ae --- /dev/null +++ b/docs/index.html @@ -0,0 +1,59 @@ +zeed-dom

zeed-dom

🌱 zeed-dom

    +
  • Lightweight virtual / offline DOM (Document Object Model)
  • +
  • Great to use in node or exporting to plain strings
  • +
  • Written in Typescript
  • +
  • Generates HTML and XML
  • +
  • Parses HTML
  • +
  • Supports CSS selectors and queries
  • +
  • JSX compatible
  • +
  • Easy content manipulation (e.g. through element.handle helper)
  • +
  • Pretty print HTML (tidyDOM)
  • +
+

Does not aim for completeness!

+

Get started

npm i zeed-dom
+
+

Related projects

    +
  • zeed - Foundation library
  • +
  • zerva - Event driven server
  • +
  • hostic - Static site generator
  • +
+

Used by TipTap in its html-package.

+

Example

A simple example without JSX:

+
import { h, xml } from 'zeed-dom'

const dom = h(
'ol',
{
class: 'projects',
},
[
h('li', null, 'zeed ', h('img', { src: 'logo.png' })),
h('li', null, 'zeed-dom'),
]
)

console.log(dom.render())
// Output: <ol class="projects"><li>zeed <img src="logo.png"></li><li>zeed-dom</li></ol>

console.log(dom.render(xml))
// Output: <ol class="projects"><li>zeed <img src="logo.png" /></li><li>zeed-dom</li></ol> +
+

And this one with JSX:

+
import { h } from "zeed-dom"

let dom = (
<ol className="projects">
<li>zeed</li>
<li>zeed-dom</li>
</ol>
)

let projects = dom
.querySelectorAll("li")
.map((e) => e.textContent)
.join(", ")

console.log(projects)
// Output: zeed, zeed-dom

dom.handle("li", (e) => {
if (!e.textContent.endsWith("-dom")) {
e.remove()
} else {
e.innerHTML = "<b>zeed-dom</b> - great DOM helper for static content"
}
})

console.log(dom.render())
// Output: <ol class="projects"><li><b>zeed-dom</b> - great DOM helper for static content</li></ol> +
+

In the second example you can see the special manipulation helper .handle(selector, fn) in action. You can also see HTML parsing works seamlessly. You can also parse directly:

+
import { tidyDOM, vdom } from 'zeed-dom'

const dom = vdom('<div>Hello World</div>')
tidyDOM(dom)
console.log(dom.render())
// Output is pretty printed like: <div>
// Hello World
// </div> +
+

These examples are available at /example.

+

JSX

Usually JSX is optimized for React i.e. it expects React.creatElement to exist and be the factory for generating the nodes. You can of course get the same effect here if you set up a helper like this:

+
import { html } from 'zeed-dom'

const React = {
createElement: html,
} +
+

But more common is the use of h as the factory function. Here is how you can set up this behavior for various environments:

+

Babel.js

Add required plugins:

+
npm i -D @babel/plugin-syntax-jsx @babel/plugin-transform-react-jsx
+
+

Then add this to .babelrc:

+
{
"plugins": [
"@babel/plugin-syntax-jsx",
[
"@babel/plugin-transform-react-jsx",
{
"pragma": "h"
}
]
]
} +
+

TypeScript

In tsconfig.json:

+
{
"compilerOptions": {
"jsx": "react",
"jsxFactory": "h"
}
} +
+

ESBuild

In options:

+
{
jsxFactory: 'h'
} +
+

Or alternatively as command line option: --jsx-factory=h

+

Browser DOM

The JSX factory can also be used to directly create HTML DOM nodes in the browser. Just create the h function and let it use the browser's document object:

+
const { hFactory } = require('zeed-dom')

export const h = hFactory({ document }) +
+

Performance

The parser isn't doing too bad, according to the benchmarks of htmlparser-benchmark ;)

+
tl                 : 1.02699 ms/file ± 0.679139
htmlparser2 : 1.98505 ms/file ± 2.94434
node-html-parser : 2.24176 ms/file ± 1.52112
neutron-html5parser: 2.36648 ms/file ± 1.38879
html5parser : 2.39891 ms/file ± 2.83056
htmlparser2-dom : 2.57523 ms/file ± 3.35587
html-dom-parser : 2.84910 ms/file ± 3.61615
libxmljs : 3.81665 ms/file ± 2.79295
zeed-dom : 5.05130 ms/file ± 3.57184
htmljs-parser : 5.58557 ms/file ± 6.47597
parse5 : 9.07862 ms/file ± 6.50856
htmlparser : 21.2274 ms/file ± 150.951
html-parser : 30.9104 ms/file ± 24.3930
saxes : 49.5906 ms/file ± 141.194
html5 : 114.771 ms/file ± 148.345 +
+

Misc

    +
  • To set namespace colons in JSX use double underscore i.e. <xhtml__link /> becomes <xhtml:link />
  • +
  • To allow CDATA use the helper function e.g. <div>{ CDATA(yourRawData) }</div>
  • +
  • style attributes can handle objects e.g. <span style={{backgroundColor: 'red'}} /> becomes <span style="background-color: red" />
  • +
+

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules.html b/docs/modules.html new file mode 100644 index 0000000..8f334ed --- /dev/null +++ b/docs/modules.html @@ -0,0 +1,28 @@ +zeed-dom

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/html.html b/docs/modules/html.html new file mode 100644 index 0000000..aa3cd75 --- /dev/null +++ b/docs/modules/html.html @@ -0,0 +1,3 @@ +html | zeed-dom

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/xml.html b/docs/modules/xml.html new file mode 100644 index 0000000..41fce81 --- /dev/null +++ b/docs/modules/xml.html @@ -0,0 +1,3 @@ +xml | zeed-dom

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/document.html b/docs/variables/document.html new file mode 100644 index 0000000..47badc5 --- /dev/null +++ b/docs/variables/document.html @@ -0,0 +1 @@ +document | zeed-dom

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/h.html b/docs/variables/h.html new file mode 100644 index 0000000..89bba56 --- /dev/null +++ b/docs/variables/h.html @@ -0,0 +1 @@ +h | zeed-dom

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/html.firstLine.html b/docs/variables/html.firstLine.html new file mode 100644 index 0000000..2f7b94d --- /dev/null +++ b/docs/variables/html.firstLine.html @@ -0,0 +1 @@ +firstLine | zeed-dom

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/html.html.html b/docs/variables/html.html.html new file mode 100644 index 0000000..8dc8fa7 --- /dev/null +++ b/docs/variables/html.html.html @@ -0,0 +1 @@ +html | zeed-dom

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/xml.firstLine.html b/docs/variables/xml.firstLine.html new file mode 100644 index 0000000..df2f288 --- /dev/null +++ b/docs/variables/xml.firstLine.html @@ -0,0 +1 @@ +firstLine | zeed-dom

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/xml.xml.html b/docs/variables/xml.xml.html new file mode 100644 index 0000000..65251c7 --- /dev/null +++ b/docs/variables/xml.xml.html @@ -0,0 +1 @@ +xml | zeed-dom

Generated using TypeDoc

\ No newline at end of file diff --git a/examples/auto-jsx/index.js b/examples/auto-jsx/index.js deleted file mode 100644 index 0a02729..0000000 --- a/examples/auto-jsx/index.js +++ /dev/null @@ -1,10 +0,0 @@ -/* eslint-disable no-console */ -'use strict' -exports.__esModule = true -const dom = ( -
    -
  1. hostic
  2. -
  3. hostic-dom
  4. -
-) -console.log(dom) diff --git a/examples/handle-html/in.html b/examples/handle-html/in.html new file mode 100644 index 0000000..69763a7 --- /dev/null +++ b/examples/handle-html/in.html @@ -0,0 +1,11 @@ + + + + + + Document + + + + + \ No newline at end of file diff --git a/examples/handle-html/index.tsx b/examples/handle-html/index.tsx new file mode 100755 index 0000000..c73fc81 --- /dev/null +++ b/examples/handle-html/index.tsx @@ -0,0 +1,22 @@ +#!/usr/bin/env tsx + +/** @jsx h */ + +import { resolve } from 'node:path' +import * as url from 'node:url' +import { h, handleHTMLFile } from '../../src/index.node' + +const __filename = url.fileURLToPath(import.meta.url) +const __dirname = url.fileURLToPath(new URL('.', import.meta.url)) + +const _keepH = h + +handleHTMLFile( + resolve(__dirname, 'in.html'), + (document) => { + const head = document.querySelector('head') + head!.appendChild() + document.body.innerHTML = 'Hello World' + }, + resolve(__dirname, 'out.html'), +) diff --git a/examples/handle-html/out.html b/examples/handle-html/out.html new file mode 100644 index 0000000..abb174b --- /dev/null +++ b/examples/handle-html/out.html @@ -0,0 +1,9 @@ + + + + + + Document + +Hello World + \ No newline at end of file diff --git a/examples/handle-html/package.json b/examples/handle-html/package.json new file mode 100644 index 0000000..b3ea8e3 --- /dev/null +++ b/examples/handle-html/package.json @@ -0,0 +1,19 @@ +{ + "name": "zeed-dom-example", + "type": "module", + "version": "1.0.0", + "description": "", + "author": "Dirk Holtwick", + "license": "MIT", + "main": "index.js", + "scripts": { + "start": "tsx index.tsx", + "build": "tsc index.tsx" + }, + "dependencies": { + "zeed-dom": "link:../.." + }, + "devDependencies": { + "tsx": "^3.8.0" + } +} diff --git a/package.json b/package.json index ddb9851..39e8812 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "zeed-dom", "type": "module", - "version": "0.11.1", + "version": "0.12.0", "description": "🌱 Lightweight offline DOM", "author": { "name": "Dirk Holtwick", @@ -24,11 +24,11 @@ "sideEffects": false, "exports": { ".": { - "types": "./dist/index.d.ts", - "browser": "./dist/index.js", - "require": "./dist/index.cjs", - "node": "./dist/index.js", - "default": "./dist/index.js" + "types": "./dist/index.node.d.ts", + "browser": "./dist/index.browser.js", + "require": "./dist/index.browser.cjs", + "node": "./dist/index.node.js", + "default": "./dist/index.browser.js" }, "./jsx-runtime": { "types": "./dist/jsx-runtime.d.ts", @@ -42,9 +42,9 @@ "require": "./dist/jsx-runtime.cjs" } }, - "main": "dist/index.cjs", - "module": "dist/index.js", - "typings": "dist/index.d.ts", + "main": "dist/index.node.cjs", + "module": "dist/index.browser.js", + "typings": "dist/index.node.d.ts", "files": [ "dist", "jsx-runtime" @@ -54,7 +54,8 @@ }, "scripts": { "build": "npm run clean && npm run build:tsup", - "build:tsup": "tsup src/index.ts src/jsx-runtime.ts --dts --sourcemap --format esm,cjs", + "build:tsup": "tsup src/index.browser.ts src/index.node.ts src/jsx-runtime.ts --dts --sourcemap --format esm,cjs", + "build:docs": "typedoc src/index.ts", "check": "tsc --noEmit -p tsconfig.json", "clean": "rm -rf dist", "lint": "eslint .", @@ -75,6 +76,7 @@ "c8": "^8.0.1", "eslint": "^8.55.0", "tsup": "^8.0.1", + "typedoc": "^0.25.4", "typescript": "^5.3.3", "vite": "^5.0.9", "vitest": "^1.0.4" diff --git a/src/index.ts b/src/index.browser.ts similarity index 100% rename from src/index.ts rename to src/index.browser.ts diff --git a/src/index.node.ts b/src/index.node.ts new file mode 100644 index 0000000..fa260c2 --- /dev/null +++ b/src/index.node.ts @@ -0,0 +1,4 @@ +// (C)opyright 2023 Dirk Holtwick, holtwick.it. All rights reserved. + +export * from './index.browser' +export { handleHTMLFile } from './node' diff --git a/src/node.ts b/src/node.ts new file mode 100644 index 0000000..b05075d --- /dev/null +++ b/src/node.ts @@ -0,0 +1,17 @@ +import { readFileSync, writeFileSync } from 'node:fs' +import type { VHTMLDocument } from './vdom' +import { parseHTML } from './vdomparser' + +/** Manipulate HTMl file directly on disk. Only writes back if there were significant changes. */ +export function handleHTMLFile(filePath: string, handler: (document: VHTMLDocument) => void, outPath?: string): string { + const html = readFileSync(filePath, 'utf-8') + const document = parseHTML(html) + const htmlIn = document.render() + handler(document as VHTMLDocument) + const htmlOut = document.render() + if (outPath || htmlOut !== htmlIn) { + writeFileSync(outPath ?? filePath, htmlOut, 'utf-8') + return htmlOut + } + return html +}