tosijs-ui 1.6.12 → 1.6.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/iife.js.map CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../node_modules/tosijs/dist/module.js", "../src/ab-test.ts", "../src/via-tag.ts", "../src/icon-data.ts", "../src/icons.ts", "../src/babylon-3d.ts", "../src/bodymovin-player.ts", "../src/carousel.ts", "../src/diff.ts", "../src/code-editor.ts", "../src/color-input.ts", "../src/track-drag.ts", "../src/float.ts", "../src/pop-float.ts", "../src/make-sorter.ts", "../src/select.ts", "../src/localize.ts", "../src/match-shortcut.ts", "../src/drag-and-drop.ts", "../src/menu.ts", "../src/data-table.ts", "../src/dialog.ts", "../src/doc-system/routing.ts", "../src/doc-system/nav-tree.ts", "../node_modules/marked/lib/marked.esm.js", "../src/doc-system/render.ts", "../src/tab-selector.ts", "../src/live-example/code-transform.ts", "../src/live-example/remote-sync.ts", "../src/live-example/execution.ts", "../src/live-example/insert-examples.ts", "../src/live-example/save-to-source.ts", "../src/live-example/example-store.ts", "../src/live-example/styles.ts", "../src/live-example/test-harness.ts", "../src/live-example/component.ts", "../src/side-nav.ts", "../src/doc-browser.ts", "../src/doc-system/doc-system-styles.ts", "../src/doc-system/doc-system.ts", "../src/editable-rect.ts", "../src/filter-builder.ts", "../src/form.ts", "../src/header.ts", "../src/gamepad.ts", "../src/layout.ts", "../src/theme.ts", "../src/live-theme.ts", "../src/mapbox.ts", "../src/markdown-viewer.ts", "../src/month.ts", "../src/notifications.ts", "../src/password-strength.ts", "../src/rating.ts", "../src/rich-text.ts", "../src/router.ts", "../src/segmented.ts", "../src/size-break.ts", "../src/sizer.ts", "../src/tag-list.ts", "../src/version.ts", "../src/tooltip.ts", "../src/index-iife.ts"],
3
+ "sources": ["../node_modules/tosijs/dist/module.js", "../src/ab-test.ts", "../src/via-tag.ts", "../src/icon-data.ts", "../src/icons.ts", "../src/babylon-3d.ts", "../src/bodymovin-player.ts", "../src/carousel.ts", "../src/diff.ts", "../src/code-editor.ts", "../src/color-input.ts", "../src/track-drag.ts", "../src/float.ts", "../src/pop-float.ts", "../src/make-sorter.ts", "../src/select.ts", "../src/localize.ts", "../src/match-shortcut.ts", "../src/drag-and-drop.ts", "../src/menu.ts", "../src/data-table.ts", "../src/dialog.ts", "../src/doc-system/routing.ts", "../src/doc-system/nav-tree.ts", "../node_modules/marked/lib/marked.esm.js", "../src/doc-system/render.ts", "../src/tab-selector.ts", "../src/live-example/code-transform.ts", "../src/live-example/remote-sync.ts", "../src/live-example/execution.ts", "../src/live-example/insert-examples.ts", "../src/live-example/save-to-source.ts", "../src/live-example/example-store.ts", "../src/live-example/styles.ts", "../src/live-example/test-harness.ts", "../src/live-example/component.ts", "../src/side-nav.ts", "../src/doc-browser.ts", "../src/doc-system/book-html.ts", "../src/doc-system/doc-system-styles.ts", "../src/doc-system/doc-system.ts", "../src/editable-rect.ts", "../src/filter-builder.ts", "../src/form.ts", "../src/header.ts", "../src/gamepad.ts", "../src/layout.ts", "../src/theme.ts", "../src/live-theme.ts", "../src/mapbox.ts", "../src/markdown-viewer.ts", "../src/month.ts", "../src/notifications.ts", "../src/password-strength.ts", "../src/rating.ts", "../src/rich-text.ts", "../src/router.ts", "../src/segmented.ts", "../src/size-break.ts", "../src/sizer.ts", "../src/tag-list.ts", "../src/version.ts", "../src/tooltip.ts", "../src/index-iife.ts"],
4
4
  "sourcesContent": [
5
5
  "function n(E){if(E==null||typeof E!==\"object\")return E;if(E instanceof Set)return new Set(E);else if(Array.isArray(E))return E.map(n);let M={};for(let f in E){let L=E[f];if(E!=null&&typeof E===\"object\")M[f]=n(L);else M[f]=L}return M}var AE=\"-xin-data\",p=`.${AE}`,vE=\"-xin-event\",uE=`.${vE}`,m=Symbol.for(\"xin-path\"),r=Symbol.for(\"xin-value\"),IM=\"xinObserve\",BM=\"xinBind\",_M=\"xinOn\",jE=Symbol.for(\"tosi-accessor\"),ME=Symbol.for(\"tosi-take\"),QE=Symbol(\"list-binding\"),o=Symbol(\"list-instance\"),cE=new Map;function SM(E,M){let f=cE.get(E);if(f===void 0)f=new Set,cE.set(E,f);f.add(M)}function xM(E){return cE.get(E)}var kM=new Set;function T(E,M){if(!kM.has(E))console.warn(M),kM.add(E)}function gE(E,M){let f=!1;return(...L)=>{if(!f)console.warn(M),f=!0;return E(...L)}}var j=(E)=>{return E&&E[m]||void 0};function C(E){if(typeof E===\"object\"&&E!==null){let M=E[r];return M!==void 0?M:E}return E}function Vf(E){return E!=null?E[jE]:void 0}function Rf(E,M){if(j(E)===void 0)throw Error(\"tosiSetValue requires a xin or boxed proxy\");E[r]=M}var Tf=gE(j,\"xinPath is deprecated. Use tosiPath instead.\"),kf=gE(C,\"xinValue is deprecated. Use tosiValue instead.\"),EE=new WeakMap,b=new WeakMap;var fE=(E)=>{let M=E.cloneNode();if(M instanceof Element){let f=b.get(E),L=EE.get(E);if(f!=null)b.set(M,n(f));if(L!=null)EE.set(M,n(L))}for(let f of Array.from(E instanceof HTMLTemplateElement?E.content.childNodes:E.childNodes))if(f instanceof Element||f instanceof DocumentFragment)M.appendChild(fE(f));else M.appendChild(f.cloneNode());return M};var LE={debug:!1,perf:!1};var If=(E)=>{try{return JSON.stringify(E)}catch(M){return\"{has circular references}\"}},dE=(...E)=>Error(E.map(If).join(\" \"));var Bf=()=>new Date(parseInt(\"1000000000\",36)+Date.now()).valueOf().toString(36).slice(1),_f=0,Sf=()=>(parseInt(\"10000\",36)+ ++_f).toString(36).slice(-5),iE=()=>Bf()+Sf(),hE=Symbol(\"delete\"),PM=Symbol(\"new-object\"),nE=Symbol(\"automatic-index\");function mM(E){if(E===\"\")return[];if(Array.isArray(E))return E;else{let M=[];while(E.length>0){let f=E.search(/\\[[^\\]]+\\]/);if(f===-1){M.push(E.split(\".\"));break}else{let L=E.slice(0,f);if(E=E.slice(f),L!==\"\")M.push(L.split(\".\"));if(f=E.indexOf(\"]\")+1,M.push(E.slice(1,f-1)),E.slice(f,f+1)===\".\")f+=1;E=E.slice(f)}}return M}}var h=new WeakMap;function bM(E,M){if(h.get(E)===void 0)h.set(E,{});if(h.get(E)[M]===void 0)h.get(E)[M]={};let f=h.get(E)[M];if(M===\"_auto_\")E.forEach((L,H)=>{if(L[nE]===void 0)L[nE]=iE();f[L[nE]+\"\"]=H});else E.forEach((L,H)=>{f[V(L,M)+\"\"]=H});return f}function xf(E,M){if(h.get(E)===void 0||h.get(E)[M]===void 0)return bM(E,M);else return h.get(E)[M]}function Nf(E,M,f){f=f+\"\";let L=xf(E,M)[f];if(L===void 0||V(E[L],M)+\"\"!==f)L=bM(E,M)[f];return L}function yf(E,M,f){if(E[M]===void 0&&f!==void 0)E[M]=f;return E[M]}function cM(E,M,f,L){let H=M!==\"\"?Nf(E,M,f):f;if(L===hE)return E.splice(H,1),h.delete(E),Symbol(\"deleted\");else if(L===PM){if(M===\"\"&&E[H]===void 0)E[H]={}}else if(L!==void 0)if(H!==void 0)E[H]=L;else if(M!==\"\"&&V(L,M)+\"\"===f+\"\")E.push(L),H=E.length-1;else throw Error(`byIdPath insert failed at [${M}=${f}]`);return E[H]}function NM(E){if(!Array.isArray(E))throw dE(\"setByPath failed: expected array, found\",E)}function yM(E){if(E==null||!(E instanceof Object))throw dE(\"setByPath failed: expected Object, found\",E)}function V(E,M){let f=mM(M),L=E,H,$,J,Q;for(H=0,$=f.length;L!==void 0&&H<$;H++){let Z=f[H];if(Array.isArray(Z))for(J=0,Q=Z.length;L!==void 0&&J<Q;J++){let Y=Z[J];L=L[Y]}else if(L.length===0){if(L=L[Number(Z.slice(1))],Z[0]!==\"=\")return}else if(Z.includes(\"=\")){let[Y,...F]=Z.split(\"=\");L=cM(L,Y,F.join(\"=\"))}else J=parseInt(Z,10),L=L[J]}return L}function l(E,M,f){let L=E;if(M===\"\")throw Error(\"setByPath cannot be used to set the root object\");let H=mM(M);while(L!=null&&H.length>0){let $=H.shift();if(typeof $===\"string\"){let J=$.indexOf(\"=\");if(J>-1){if(J===0)yM(L);else NM(L);let Q=$.slice(0,J),Z=$.slice(J+1);if(L=cM(L,Q,Z,H.length>0?PM:f),H.length===0)return!0}else{NM(L);let Q=parseInt($,10);if(H.length>0)L=L[Q];else{if(f!==hE){if(L[Q]===f)return!1;L[Q]=f}else L.splice(Q,1);return!0}}}else if(Array.isArray($)&&$.length>0){yM(L);while($.length>0){let J=$.shift();if($.length>0||H.length>0)L=yf(L,J,$.length>0?{}:[]);else{if(f!==hE){if(L[J]===f)return!1;L[J]=f}else{if(!Object.prototype.hasOwnProperty.call(L,J))return!1;delete L[J]}return!0}}}else throw Error(`setByPath failed, bad path ${M}`)}throw Error(`setByPath(${E}, ${M}, ${f}) failed`)}var R={},sE=null,vM=(E)=>{sE=E},GE=()=>{if(sE===null)throw Error(\"xin proxy not initialized\");return sE},pE=null,rE=null,uM=(E,M)=>{pE=E,rE=M},gM=()=>{if(pE===null)throw Error(\"bind not initialized\");return pE},dM=()=>{if(rE===null)throw Error(\"on not initialized\");return rE};var nM=Symbol(\"observer should be removed\"),VE=[],YE=[],oE=!1,lE,tE;function Pf(E,M,f,L){let H=xM(E);if(H===void 0)return[];let $=[];for(let J of H){let Q=V(f,J);if(Q!==void 0)$.push(`${E}[${J}=${Q}]${L}`)}return $}class hM{description;test;callback;constructor(E,M){let f=typeof M===\"string\"?`\"${M}\"`:`function ${M.name}`,L;if(typeof E===\"string\")this.test=(H)=>typeof H===\"string\"&&H!==\"\"&&(E.startsWith(H)||H.startsWith(E)),L=`test = \"${E}\"`;else if(E instanceof RegExp)this.test=E.test.bind(E),L=`test = \"${E.toString()}\"`;else if(E instanceof Function)this.test=E,L=`test = function ${E.name}`;else throw Error(\"expect listener test to be a string, RegExp, or test function\");if(this.description=`${L}, ${f}`,typeof M===\"function\")this.callback=M;else throw Error(\"expect callback to be a path or function\");VE.push(this)}}var zE=async()=>{if(lE===void 0)return;await lE},mf=()=>{if(LE.perf)console.time(\"xin async update\");let E=Array.from(YE);YE.length=0,oE=!1;for(let M of E)VE.filter((f)=>{let L;try{L=f.test(M)}catch(H){throw Error(`Listener ${f.description} threw \"${H}\" at \"${M}\"`)}if(L===nM)return HE(f),!1;return L}).forEach((f)=>{let L;try{L=f.callback(M)}catch(H){console.error(`Listener ${f.description} threw \"${H}\" handling \"${M}\"`)}if(L===nM)HE(f)});if(typeof tE===\"function\")tE();if(LE.perf)console.timeEnd(\"xin async update\")},x=(E)=>{let M=typeof E===\"string\"?E:j(E);if(M===void 0)throw console.error(\"touch was called on an invalid target\",E),Error(\"touch was called on an invalid target\");if(oE===!1)lE=new Promise((L)=>{tE=L}),oE=setTimeout(mf);if(YE.find((L)=>M.startsWith(L))==null)YE.push(M);let f=M.match(/^(.+)\\[(\\d+)\\](.*)$/);if(f!==null){let[,L,H,$]=f,J=parseInt(H,10),Q=V(R,`${L}[${J}]`);if(Q!=null){let Z=Pf(L,J,Q,$);for(let Y of Z)if(YE.find((F)=>Y.startsWith(F))==null)YE.push(Y)}}},i=(E,M)=>{return new hM(E,M)},HE=(E)=>{let M=VE.indexOf(E);if(M>-1)VE.splice(M,1);else throw Error(\"unobserve failed, listener not found\")};var aE=(E,M)=>{let f=new Event(M);E.dispatchEvent(f)},sM=(E)=>{if(E instanceof HTMLInputElement)return E.type;else if(E instanceof HTMLSelectElement&&E.hasAttribute(\"multiple\"))return\"multi-select\";else return\"other\"},pM=(E,M)=>{switch(sM(E)){case\"radio\":E.checked=E.value===M;break;case\"checkbox\":E.checked=!!M;break;case\"date\":E.valueAsDate=new Date(M);break;case\"multi-select\":for(let f of Array.from(E.querySelectorAll(\"option\")))f.selected=M[f.value];break;default:E.value=M}},rM=(E)=>{switch(sM(E)){case\"radio\":{let M=E.parentElement?.querySelector(`[name=\"${E.name}\"]:checked`);return M!=null?M.value:null}case\"checkbox\":return E.checked;case\"date\":return E.valueAsDate?.toISOString();case\"multi-select\":return Array.from(E.querySelectorAll(\"option\")).reduce((M,f)=>{return M[f.value]=f.selected,M},{});default:return E.value}},{ResizeObserver:iM}=globalThis,WE=iM!=null?new iM((E)=>{for(let M of E){let f=M.target;aE(f,\"resize\")}}):{observe(){},unobserve(){}},eE=(E,M,f=!0)=>{if(E!=null&&M!=null)if(typeof M===\"string\")E.textContent=M;else if(Array.isArray(M))M.forEach((L)=>{E.append(L instanceof Node&&f?fE(L):L)});else if(M instanceof Node)E.append(f?fE(M):M);else throw Error(\"expect text content or document node\")};var UE=(E,M=250)=>{let f;return(...L)=>{if(f!==void 0)clearTimeout(f);f=setTimeout(()=>{E(...L)},M)}},FE=(E,M=250)=>{let f,L=Date.now()-M,H=!1;return(...$)=>{if(clearTimeout(f),f=setTimeout(()=>{E(...$),L=Date.now()},M),!H&&Date.now()-L>=M){H=!0;try{E(...$),L=Date.now()}finally{H=!1}}}};var RE={value:{toDOM:pM,fromDOM(E){return rM(E)}},text:{toDOM(E,M){E.textContent=M}},enabled:{toDOM(E,M){E.disabled=!M}},disabled:{toDOM(E,M){E.disabled=Boolean(M)}},list:{toDOM(E,M,f){DE(E,M,f).update(M)}}};function N(E){return E.replace(/[A-Z]/g,(M)=>{return`-${M.toLocaleLowerCase()}`})}function EM(E){return E.replace(/-([a-z])/g,(M,f)=>{return f.toLocaleUpperCase()})}var bf=180/Math.PI,cf=Math.PI/180;function c(E,M,f){return f<E?NaN:M<E?E:M>f?f:M}function s(E,M,f,L=!0){if(L)f=c(0,f,1);return f*(M-E)+E}var vf={RADIANS_TO_DEGREES:bf,DEGREES_TO_RADIANS:cf,clamp:c,lerp:s};function MM(E,M=document.body){let f=getComputedStyle(M);if(E.endsWith(\")\")&&E.startsWith(\"var(\"))E=E.slice(4,-1);return f.getPropertyValue(E).trim()}var uf=(E,M,f)=>{return(0.299*E+0.587*M+0.114*f)/255},JE=(E)=>(\"00\"+Math.round(Number(E)).toString(16)).slice(-2);class oM{h;s;l;constructor(E,M,f){E/=255,M/=255,f/=255;let L=Math.max(E,M,f),H=L-Math.min(E,M,f),$=H!==0?L===E?(M-f)/H:L===M?2+(f-E)/H:4+(E-M)/H:0;this.h=60*$<0?60*$+360:60*$,this.s=H!==0?L<=0.5?H/(2*L-H):H/(2-(2*L-H)):0,this.l=(2*L-H)/2}}var t=globalThis.document!==void 0?globalThis.document.createElement(\"span\"):void 0;if(t)t.style.display=\"none\";class X{r;g;b;a;static fromVar(E,M=document.body){return X.fromCss(MM(E,M))}static fromCss(E){let M=E.match(/^#([0-9a-fA-F]+)$/);if(M){let Z=M[1],Y=(F,z)=>parseInt(Z.slice(F,F+z),16);if(Z.length===3||Z.length===4){let F=(z)=>Y(z,1)*17;return new X(F(0),F(1),F(2),Z.length===4?F(3)/255:1)}if(Z.length===6||Z.length===8)return new X(Y(0,2),Y(2,2),Y(4,2),Z.length===8?Y(6,2)/255:1)}let f=E;if(t instanceof HTMLSpanElement)t.style.color=\"black\",t.style.color=E,document.body.appendChild(t),f=getComputedStyle(t).color,t.remove();let[L,H,$,J]=f.match(/[\\d.]+/g)||[\"0\",\"0\",\"0\",\"0\"],Q=f.startsWith(\"color(srgb\")?255:1;return new X(Number(L)*Q,Number(H)*Q,Number($)*Q,J==null?1:Number(J))}static fromHsl(E,M,f,L=1){let H,$,J;if(M===0)H=$=J=f;else{let Z=(G,B,W)=>{if(W<0)W+=1;if(W>1)W-=1;if(W<0.16666666666666666)return G+(B-G)*6*W;if(W<0.5)return B;if(W<0.6666666666666666)return G+(B-G)*(0.6666666666666666-W)*6;return G},Y=f<0.5?f*(1+M):f+M-f*M,F=2*f-Y,z=(E%360+360)%360/360;H=Z(F,Y,z+0.3333333333333333),$=Z(F,Y,z),J=Z(F,Y,z-0.3333333333333333)}let Q=new X(H*255,$*255,J*255,L);return Q.hslCached={h:(E%360+360)%360,s:M,l:f},Q}static black=new X(0,0,0);static white=new X(255,255,255);constructor(E,M,f,L=1){this.r=c(0,E,255),this.g=c(0,M,255),this.b=c(0,f,255),this.a=c(0,L,1)}get inverse(){return new X(255-this.r,255-this.g,255-this.b,this.a)}get inverseLuminance(){let{h:E,s:M,l:f}=this._hsl;return X.fromHsl(E,M,1-f,this.a)}get opaque(){return this.a===1?this:new X(this.r,this.g,this.b,1)}contrasting(E=1){return this.opaque.blend(this.brightness>0.5?X.black:X.white,E)}get rgb(){let{r:E,g:M,b:f}=this;return`rgb(${E.toFixed(0)},${M.toFixed(0)},${f.toFixed(0)})`}get rgba(){let{r:E,g:M,b:f,a:L}=this;return`rgba(${E.toFixed(0)},${M.toFixed(0)},${f.toFixed(0)},${L.toFixed(2)})`}get RGBA(){return[this.r/255,this.g/255,this.b/255,this.a]}get ARGB(){return[this.a,this.r/255,this.g/255,this.b/255]}hslCached;get _hsl(){if(this.hslCached==null)this.hslCached=new oM(this.r,this.g,this.b);return this.hslCached}get hsl(){let{h:E,s:M,l:f}=this._hsl;return`hsl(${E.toFixed(0)}deg ${(M*100).toFixed(0)}% ${(f*100).toFixed(0)}%)`}get hsla(){let{h:E,s:M,l:f}=this._hsl;return`hsl(${E.toFixed(0)}deg ${(M*100).toFixed(0)}% ${(f*100).toFixed(0)}% / ${(this.a*100).toFixed(0)}%)`}get mono(){let E=this.brightness*255;return new X(E,E,E)}get brightness(){return uf(this.r,this.g,this.b)}get html(){return this.toString()}toString(){return this.a===1?\"#\"+JE(this.r)+JE(this.g)+JE(this.b):\"#\"+JE(this.r)+JE(this.g)+JE(this.b)+JE(Math.floor(255*this.a))}brighten(E){let{h:M,s:f,l:L}=this._hsl,H=c(0,L+E*(1-L),1);return X.fromHsl(M,f,H,this.a)}darken(E){let{h:M,s:f,l:L}=this._hsl,H=c(0,L*(1-E),1);return X.fromHsl(M,f,H,this.a)}saturate(E){let{h:M,s:f,l:L}=this._hsl,H=c(0,f+E*(1-f),1);return X.fromHsl(M,H,L,this.a)}desaturate(E){let{h:M,s:f,l:L}=this._hsl,H=c(0,f*(1-E),1);return X.fromHsl(M,H,L,this.a)}rotate(E){let{h:M,s:f,l:L}=this._hsl,H=(M+360+E)%360;return X.fromHsl(H,f,L,this.a)}opacity(E){let{h:M,s:f,l:L}=this._hsl;return X.fromHsl(M,f,L,E)}swatch(){return console.log(`%c %c ${this.html}, ${this.rgba}`,`background-color: ${this.html}`,\"background-color: transparent\"),this}blend(E,M){return new X(s(this.r,E.r,M),s(this.g,E.g,M),s(this.b,E.b,M),s(this.a,E.a,M))}static blendHue(E,M,f){let L=(M-E+720)%360;if(L<180)return E+f*L;else return E-(360-L)*f}mix(E,M){let f=this._hsl,L=E._hsl;return X.fromHsl(f.s===0?L.h:L.s===0?f.h:X.blendHue(f.h,L.h,M),s(f.s,L.s,M),s(f.l,L.l,M),s(this.a,E.a,M))}colorMix(E,M){return X.fromCss(`color-mix(in hsl, ${this.html}, ${E.html} ${(M*100).toFixed(0)}%)`)}static computedColorStylesheet=null;static computedColors=new Map;static recomputeQueued=!1;static registerComputedColor(E,M,f,L){if(!X.computedColors.has(E))X.computedColors.set(E,{varName:M,scale:f,method:L}),X.queueRecompute()}static queueRecompute(){if(X.recomputeQueued)return;X.recomputeQueued=!0,queueMicrotask(()=>{X.recomputeQueued=!1,X.recomputeColors()})}static recomputeColors(){if(X.computedColors.size===0)return;let E=[];for(let[f,{varName:L,scale:H,method:$}]of X.computedColors)try{let J=X.fromVar(L),Q;switch($){case\"b\":Q=H>0?J.brighten(H):J.darken(-H);break;case\"s\":Q=H>0?J.saturate(H):J.desaturate(-H);break;case\"h\":Q=J.rotate(H*100);break;case\"o\":Q=J.opacity(H);break;default:continue}E.push(` ${f}: ${Q.rgba};`)}catch(J){}if(E.length===0)return;let M=`:root {\n${E.join(`\n`)}\n}`;if(X.computedColorStylesheet===null)X.computedColorStylesheet=document.createElement(\"style\"),X.computedColorStylesheet.id=\"tosijs-computed-colors\",document.head.append(X.computedColorStylesheet);X.computedColorStylesheet.textContent=M}}var TE=new Set,lM=!1;function gf(){if(!lM)lM=!0,TE.add(()=>X.queueRecompute())}function df(E){return TE.add(E),()=>TE.delete(E)}function nf(){gf();for(let E of TE)E()}function hf(E,M){let f=C(M),L=I.style($E(f));L.id=E,document.head.append(L);let H=j(M);if(H!==void 0)KE(H,()=>{L.textContent=$E(C(M)),nf()})}var sf=/^(animation-iteration-count|column-count|flex(-grow|-shrink)?|font-weight|line-height|opacity|order|orphans|scale|tab-size|widows|z-index|zoom)$/,fM=(E,M)=>{if(typeof M===\"number\"&&!sf.test(E))M=`${M}px`;if(E.startsWith(\"_\"))if(E.startsWith(\"__\"))E=\"--\"+E.substring(2),M=`var(${E}-default, ${M})`;else E=\"--\"+E.substring(1);return{prop:E,value:String(M)}},pf=(E,M,f)=>{if(f===void 0)return\"\";if(f instanceof X)f=f.html;let L=fM(M,f);return`${E} ${L.prop}: ${L.value};`},tM=(E,M,f=\"\")=>{let L=N(E);if(typeof M===\"object\"&&!(M instanceof X)){let H=Object.keys(M).map(($)=>tM($,M[$],`${f} `)).join(`\n`);return`${f} ${E} {\n${H}\n${f} }`}else return pf(f,L,M)},$E=(E,M=\"\")=>{return Object.keys(E).map((L)=>{let H=E[L];if(typeof H===\"string\"){if(L===\"@import\")return`@import url('${H}');`;throw Error(\"top-level string value only allowed for `@import`\")}let $=Object.keys(H).map((J)=>tM(J,H[J])).join(`\n`);return`${M}${L} {\n${$}\n}`}).join(`\n\n`)},rf=(E)=>{T(\"initVars\",\"initVars is deprecated. Just use _ and __ prefixes instead.\");let M={};for(let f of Object.keys(E)){let L=E[f],H=N(f);M[`--${H}`]=typeof L===\"number\"&&L!==0?String(L)+\"px\":L}return M},of=(E)=>{let M={};for(let f of Object.keys(E)){let L=E[f];if(L instanceof X)M[f]=L.inverseLuminance;else if(typeof L===\"string\"&&L.match(/^(#[0-9a-fA-F]{3}|rgba?\\(|hsla?\\()/))M[f]=X.fromCss(L).inverseLuminance}return M},kE=new Proxy({},{get(E,M){if(E[M]===void 0){let f=\"--\"+N(M);E[M]=(L)=>`var(${f}, ${L})`}return E[M]}}),LM=new Proxy({},{get(E,M){if(M===\"default\")return kE;if(E[M]==null){M=N(M);let[,f,,L,H,$]=M.match(/^([-\\w]*?)((_)?(\\d+)(\\w?))?$/)||[\"\",M],J=`--${f}`;if(H!=null){let Q=L==null?Number(H)/100:-Number(H)/100;switch($){case\"b\":case\"s\":case\"h\":case\"o\":{let Z=`--${M}`;X.registerComputedColor(Z,J,Q,$),E[M]=`var(${Z})`}break;case\"\":E[M]=`calc(var(${J}) * ${Q})`;break;default:throw console.error($),Error(`Unrecognized method ${$} for css variable ${J}`)}}else E[M]=`var(${J})`}return E[M]}});function aM(){let E=(M)=>typeof matchMedia<\"u\"&&matchMedia(M).matches;return{colorScheme:E(\"(prefers-color-scheme: dark)\")?\"dark\":\"light\",contrast:E(\"(prefers-contrast: more)\")?\"more\":E(\"(prefers-contrast: less)\")?\"less\":E(\"(prefers-contrast: custom)\")?\"custom\":\"no-preference\",reducedMotion:E(\"(prefers-reduced-motion: reduce)\"),reducedTransparency:E(\"(prefers-reduced-transparency: reduce)\"),forcedColors:E(\"(forced-colors: active)\")}}function lf(E){if(typeof matchMedia>\"u\")return()=>{};let M=[\"(prefers-color-scheme: dark)\",\"(prefers-contrast: more)\",\"(prefers-contrast: less)\",\"(prefers-contrast: custom)\",\"(prefers-reduced-motion: reduce)\",\"(prefers-reduced-transparency: reduce)\",\"(forced-colors: active)\"],f=()=>E(aM()),L=M.map((H)=>matchMedia(H));for(let H of L)H.addEventListener(\"change\",f);return()=>{for(let H of L)H.removeEventListener(\"change\",f)}}var eM=\"http://www.w3.org/1998/Math/MathML\",Ef=\"http://www.w3.org/2000/svg\";var IE={},Lf=(E,M,f)=>{let L=fM(N(M),f);if(L.prop.startsWith(\"--\"))E.style.setProperty(L.prop,L.value);else E.style[M]=L.value},tf=(E)=>{return{toDOM(M,f){Lf(M,E,f)}}},Hf=(E,M,f)=>{if(M===\"style\")if(typeof f===\"object\")for(let L of Object.keys(f))if(j(f[L]))v(E,f[L],tf(L));else Lf(E,L,f[L]);else E.setAttribute(\"style\",f);else{let L=N(M),H=E.constructor.observedAttributes;if(H?.includes(M)||H?.includes(L))if(typeof f===\"boolean\")f?E.setAttribute(L,\"\"):E.removeAttribute(L);else E.setAttribute(L,f);else if(E[M]!==void 0){let{MathMLElement:J}=globalThis;if(E instanceof SVGElement||J!==void 0&&E instanceof J)E.setAttribute(M,f);else E[M]=f}else if(L===\"class\")f.split(\" \").forEach((J)=>{E.classList.add(J)});else if(E[L]!==void 0)E[L]=f;else if(typeof f===\"boolean\")f?E.setAttribute(L,\"\"):E.removeAttribute(L);else E.setAttribute(L,f)}},HM={},Mf=(E)=>{if(!HM[E])HM[E]={toDOM(M,f){Hf(M,E,f)}};return HM[E]},BE=(E,M,f)=>{if(M===\"apply\")f(E);else if(M.match(/^on[A-Z]/)!=null){let L=M.substring(2).toLowerCase();XE(E,L,f)}else if(M===\"bind\")if((typeof f.binding===\"string\"?RE[f.binding]:f.binding)!==void 0&&f.value!==void 0)v(E,f.value,f.binding instanceof Function?{toDOM:f.binding}:f.binding);else throw Error(\"bad binding\");else if(M.match(/^bind[A-Z]/)!=null){let L=M.substring(4,5).toLowerCase()+M.substring(5);if(L!==\"value\"){let $=L===\"text\"?\"textContent\":L===\"enabled\"?\"disabled (with .tosi.take(v => !v))\":L===\"disabled\"?\"disabled\":L===\"list\"?\".tosi.listBinding()\":null;if($)T(`bind${L}`,`bind${M.substring(4)} is deprecated. Use { ${$}: ... } instead.`)}let H=RE[L];if(H!==void 0)v(E,f,H);else throw Error(`${M} is not allowed, bindings.${L} is not defined`)}else if(f!=null&&typeof f===\"object\"&&f[ME])v(E,f,Mf(M));else if(j(f))v(E,f,Mf(M));else Hf(E,M,f)},JM=(E,...M)=>{if(IE[E]===void 0){let[H,$]=E.split(\"|\");if($===void 0)IE[E]=globalThis.document.createElement(H);else IE[E]=globalThis.document.createElementNS($,H)}let f=IE[E].cloneNode(),L={};for(let H of M)if(H instanceof Element||H instanceof DocumentFragment||typeof H===\"string\"||typeof H===\"number\")if(f instanceof HTMLTemplateElement)f.content.append(H);else f.append(H);else if(j(H))f.append(I.span({bindText:H}));else Object.assign(L,H);for(let H of Object.keys(L)){let $=L[H];BE(f,H,$)}return f},$M=(...E)=>{let M=globalThis.document.createDocumentFragment();for(let f of E)M.append(f);return M},I=new Proxy({fragment:$M},{get(E,M){if(M=M.replace(/[A-Z]/g,(f)=>`-${f.toLocaleLowerCase()}`),E[M]===void 0)E[M]=(...f)=>JM(M,...f);return E[M]},set(){throw Error(\"You may not add new properties to elements\")}}),ZM=new Proxy({fragment:$M},{get(E,M){if(E[M]===void 0)E[M]=(...f)=>JM(`${M}|${Ef}`,...f);return E[M]},set(){throw Error(\"You may not add new properties to elements\")}}),QM=new Proxy({fragment:$M},{get(E,M){if(E[M]===void 0)E[M]=(...f)=>JM(`${M}|${eM}`,...f);return E[M]},set(){throw Error(\"You may not add new properties to elements\")}}),ff=new WeakSet;function af(E,M,f=\"part\"){let L=`[data-${f}]`;for(let H of Array.from(E.querySelectorAll(L))){if(ff.has(H))continue;let $=H.getAttribute(`data-${f}`);if($==null)continue;let J=M[$];if(J==null)continue;ff.add(H);for(let Q of Object.keys(J))BE(H,Q,J[Q])}}var ef=[\"sort\",\"splice\",\"copyWithin\",\"fill\",\"pop\",\"push\",\"reverse\",\"shift\",\"unshift\"],EL=!0,ML=/^\\.?([^.[\\](),])+(\\.[^.[\\](),]+|\\[\\d+\\]|\\[[^=[\\](),]*=[^[\\]()]+\\])*$/,fL=(E)=>ML.test(E),a=(E=\"\",M=\"\")=>{if(E===\"\")return M;else if(M.match(/^\\d+$/)!==null||M.includes(\"=\"))return`${E}[${M}]`;else return`${E}.${M}`},_E={};function YM(E,M){if(E!==null&&(typeof E===\"object\"||typeof E===\"function\"))return E;return new Proxy(_E,e(M,!0))}var Yf=()=>new Proxy({},e(\"^\",!0)),zM=(E)=>{let f=E(Yf())?.path;if(!f?.startsWith(\"^.\"))throw Error(\"selector must return a property of the item\");return f.substring(2)},FM=(E,M,f)=>{for(let L=0;L<E.length;L++)if(`${V(E[L],M)}`===`${f}`)return L;return-1},LL=(E,M)=>({listFind(f,L){if(f instanceof Element){let J=f;while(J&&!J[o]&&J.parentElement)J=J.parentElement;let Q=J?.[o];if(Q==null)return;let Z=M.indexOf(Q);return Z!==-1?y[E][Z]:void 0}let H=zM(f),$=FM(M,H,L);return $!==-1?y[E][$]:void 0},listUpdate(f,L){let H=zM(f),$=V(L,H),J=FM(M,H,$);if(J!==-1){let Q=y[E][J];for(let Z of Object.keys(L))Q[Z]=L[Z];return Q}return y[E].push(L),y[E][M.length-1]},listRemove(f,L){let H=zM(f),$=FM(M,H,L);if($===-1)return!1;return y[E].splice($,1),!0}}),Jf=!1;function HL(){if(!Jf)console.warn(\"xinValue, tosiValue, xinPath, tosiPath, etc. are deprecated. Use .tosi.value, .tosi.path, .tosi.observe(), etc. instead.\"),Jf=!0}var $f=(E)=>{return E===_E},JL=(E,M)=>({get(f,L){switch(L){case\"value\":return M===_E?V(R,E):M.valueOf?M.valueOf():M;case\"path\":return E;case\"touch\":return()=>x(E);case\"observe\":return(H)=>{let $=i(E,H);return()=>HE($)};case\"bind\":return(H,$,J)=>{gM()(H,E,$,J)};case\"on\":{let H=M===_E?V(R,E):M.valueOf?M.valueOf():M;return($,J)=>dM()($,J,H)}case\"binding\":return(H)=>({bind:{value:E,binding:H}});case\"listBinding\":return(H=({span:J})=>J({bindText:\"^\"}),$={})=>{let J=$.virtual?.itemsPerRow??1,Q=[];for(let Z=0;Z<J;Z++)Q.push(H(I,Yf(),Z));return[{bindList:{value:E,...$}},I.template(...Q)]};case\"listFind\":case\"listUpdate\":case\"listRemove\":return LL(E,Array.isArray(M)?M:[])[L];case\"take\":return(...H)=>{let $=H[H.length-1],Q=H.slice(0,-1).map((Z)=>typeof Z===\"string\"?Z:Z[m]);return{[ME]:!0,paths:[E,...Q],transform:$}}}return},set(f,L,H){if(L===\"value\"){if(H=C(H),C(k[E])!==H&&l(R,E,H))x(E);return!0}return!1}}),qE=(E,M)=>new Proxy(M,JL(E,M)),Zf=new Set([\"path\",\"value\",\"touch\",\"observe\",\"bind\",\"on\",\"binding\",\"listBinding\",\"listFind\",\"listUpdate\",\"listRemove\",\"take\"]),Qf=new Map([[m,\"path\"],[\"xinPath\",\"path\"],[\"tosiPath\",\"path\"],[r,\"value\"],[\"xinValue\",\"value\"],[\"tosiValue\",\"value\"],[IM,\"observe\"],[\"xinObserve\",\"observe\"],[\"tosiObserve\",\"observe\"],[_M,\"on\"],[\"xinOn\",\"on\"],[\"tosiOn\",\"on\"],[BM,\"bind\"],[\"xinBind\",\"bind\"],[\"tosiBind\",\"bind\"],[\"tosiBinding\",\"binding\"],[\"tosiListBinding\",\"listBinding\"]]),e=(E,M)=>({get(f,L){if((L===\"tosi\"||L===jE)&&M)return qE(E,f);if($f(f)){let Z=()=>V(R,E);switch(L){case\"valueOf\":case\"toJSON\":return()=>Z();case Symbol.toPrimitive:return(z)=>{let G=Z();if(z===\"number\")return Number(G);if(z===\"string\")return String(G);return G};case\"toString\":return()=>String(Z())}if(Zf.has(L))return qE(E,f)[L];let Y=Qf.get(L);if(Y!==void 0)return HL(),qE(E,f)[Y];let F=Z();if(F!=null){let z=Object(F);if(L in z){let G=z[L];return typeof G===\"function\"?G.bind(z):G}}return}if(M&&(L===\"valueOf\"||L===\"toJSON\"))return()=>f.valueOf?f.valueOf():f;if(M&&!(L in f)&&Zf.has(L))return qE(E,f)[L];let H=Qf.get(L);if(H!==void 0)return qE(E,f)[H];if(typeof L===\"symbol\")return f[L];let $=Object.getOwnPropertyDescriptor(f,L);if($&&!$.configurable&&!$.writable&&\"value\"in $)return $.value;let J=L,Q=J.match(/^([^.[]+)\\.(.+)$/)??J.match(/^([^\\]]+)(\\[.+)/)??J.match(/^(\\[[^\\]]+\\])\\.(.+)$/)??J.match(/^(\\[[^\\]]+\\])\\[(.+)$/);if(Q!==null){let[,Z,Y]=Q,F=a(E,Z),z=C(V(f,Z));return z!==null&&typeof z===\"object\"?new Proxy(z,e(F,M))[Y]:z}if(J.startsWith(\"[\")&&J.endsWith(\"]\"))J=J.substring(1,J.length-1);if(!Array.isArray(f)&&f[J]!==void 0||Array.isArray(f)&&J.includes(\"=\")){let Z;if(J.includes(\"=\")){let[Y,F]=J.split(\"=\");Z=f.find((z)=>`${V(z,Y)}`===F)}else Z=f[J];if(Z instanceof Object){Z=C(Z);let Y=a(E,J);return new Proxy(Z instanceof Function?Z.bind(f):Z,e(Y,M))}else return M?YM(Z,a(E,J)):Z}else if(Array.isArray(f)){let Z=f[J];return typeof Z===\"function\"?(...Y)=>{let F=Y.map((G)=>C(G)),z=Z.apply(f,F);if(ef.includes(J))x(E);if(z!=null&&typeof z===\"object\"){if(J===\"find\"||J===\"findLast\"||J===\"at\"){let G=f.indexOf(z);if(G!==-1)return new Proxy(z,e(a(E,String(G)),M))}}return z}:typeof Z===\"object\"?new Proxy(C(Z),e(a(E,J),M)):M?YM(Z,a(E,J)):Z}else{let Z=f[J];if(Z!==null&&typeof Z===\"object\")Z=C(Z);return M?YM(Z,a(E,J)):Z}},set(f,L,H){if(H=C(H),H!==null&&typeof H===\"object\")if(Array.isArray(H))for(let Z=0;Z<H.length;Z++)H[Z]=C(H[Z]);else for(let Z of Object.keys(H))H[Z]=C(H[Z]);let J=L===r||L===\"xinValue\"||L===\"tosiValue\"||L===\"value\"&&($f(f)||M)?E:a(E,L);if(EL&&!fL(J))throw Error(`setting invalid path ${J}`);if(C(k[J])!==H&&l(R,J,H))x(J);return!0}}),KE=(E,M)=>{let f=typeof M===\"function\"?M:k[M];if(typeof f!==\"function\")throw Error(`observe expects a function or path to a function, ${M} is neither`);return i(E,f)},k=new Proxy(R,e(\"\",!1));vM(k);var y=new Proxy(R,e(\"\",!0));var $L=16,ZL=100;function zf(E,M){let f=Array.from(E.querySelectorAll(p));if(E.matches(p))f.unshift(E);for(let L of f){let H=b.get(L);for(let $ of H){if($.path.startsWith(\"^\"))$.path=`${M}${$.path.substring(1)}`;if($.binding.toDOM!=null)$.binding.toDOM(L,k[$.path])}}}class Ff{boundElement;listTop;listBottom;isNamespaced;templates;options;itemToElement;idToElement=new Map;array=[];_filteredCache;_update;_previousSlice;static filterBoundObservers=new WeakMap;constructor(E,M,f={}){if(this.boundElement=E,this.itemToElement=new WeakMap,f.idPath!=null){let Q=j(M);if(Q!=null)SM(Q,f.idPath)}let L=f.virtual?.itemsPerRow??1,H=Array.from(E.children).find((Q)=>Q instanceof HTMLTemplateElement),$=null;if(H!=null){let Q=L;if(H.content.children.length<1||H.content.children.length!==Q)throw Error(`ListBinding expects a template with exactly ${Q} child element(s)`);this.templates=Array.from(H.content.children).map((Z)=>fE(Z)),$=H.nextElementSibling,H.remove()}else if(E.children.length===1)this.templates=[E.children[0]],this.templates[0].remove();else throw Error(\"ListBinding expects a <template> child or exactly one child element\");this.options=f;let J=E.namespaceURI;if(this.isNamespaced=J===\"http://www.w3.org/2000/svg\"||J===\"http://www.w3.org/1998/Math/MathML\",this.isNamespaced)this.listTop=null,this.listBottom=null;else if(this.listTop=document.createElement(\"div\"),this.listBottom=document.createElement(\"div\"),this.listTop.classList.add(\"virtual-list-padding\"),this.listBottom.classList.add(\"virtual-list-padding\"),this.listTop.setAttribute(\"role\",\"presentation\"),this.listBottom.setAttribute(\"role\",\"presentation\"),this.listTop.setAttribute(\"aria-hidden\",\"true\"),this.listBottom.setAttribute(\"aria-hidden\",\"true\"),$!=null)this.boundElement.insertBefore(this.listTop,$),this.boundElement.insertBefore(this.listBottom,$);else this.boundElement.append(this.listTop),this.boundElement.append(this.listBottom);if(L>1){this.boundElement.classList.add(\"tosi-virtual-grid\");let Q=this.boundElement.style;if(Q!=null)Q.setProperty(\"--tosi-columns\",String(L)),Q.display=Q.display||\"grid\",Q.gridTemplateColumns=Q.gridTemplateColumns||\"repeat(var(--tosi-columns), 1fr)\";if(this.listTop!=null&&this.listBottom!=null)this.listTop.style.gridColumn=\"1 / -1\",this.listBottom.style.gridColumn=\"1 / -1\"}if(f.virtual!=null&&!this.boundElement.getAttribute(\"role\"))this.boundElement.setAttribute(\"role\",L>1?\"grid\":\"list\");if(this.boundElement[QE]=this,this.isNamespaced&&f.virtual!=null)console.warn(\"ListBinding: virtual scrolling is not supported in SVG/MathML containers, ignoring virtual option\");if(!this.isNamespaced&&f.virtual!=null)if(WE.observe(this.boundElement),this._update=FE(()=>{this.update(this.array,!0)},$L),this.boundElement.addEventListener(\"resize\",this._update),f.virtual.scrollContainer===\"window\")window.addEventListener(\"scroll\",this._update),window.addEventListener(\"resize\",this._update);else this.boundElement.addEventListener(\"scroll\",this._update)}filteredArray(){if(this._filteredCache!=null)return this._filteredCache;let{hiddenProp:E,visibleProp:M}=this.options,f=this.array;if(E!==void 0)f=f.filter((L)=>L[E]!==!0);if(M!==void 0)f=f.filter((L)=>L[M]===!0);if(this.options.filter&&this.needle!==void 0)f=this.options.filter(f,this.needle);return this._filteredCache=f,f}visibleSlice(){let{virtual:E}=this.options,M=this.filteredArray(),f=0,L=M.length-1,H=0,$=0;if(E!=null&&this.boundElement instanceof HTMLElement){let J=this.boundElement.offsetWidth,Q=E.scrollContainer===\"window\",Z,Y;if(Q){Z=window.innerHeight;let G=this.boundElement.getBoundingClientRect();Y=Math.max(0,-G.top)}else Z=this.boundElement.offsetHeight,Y=this.boundElement.scrollTop;let F=E.width!=null?Math.max(1,Math.floor(J/E.width)):E.visibleColumns??1,z=Math.ceil(M.length/F);if(E.minHeight!=null){let G=E.minHeight,B=Math.ceil(Z/G)+(E.rowChunkSize||1),W=F*B,D=z*G,A=Math.max(0,D-Z),K=A>0?Math.min(1,Math.max(0,Y/A)):0,g=Math.max(0,z-B+1),P=K*g,S=Math.floor(P);if(E.rowChunkSize)S-=S%E.rowChunkSize;return f=S*F,L=f+W-1,H=Y,$=Math.max(0,D-Y-Z),{items:M,firstItem:f,lastItem:L,topBuffer:H,bottomBuffer:$,interpolation:{t:K,position:P,scrollTop:Y,viewportHeight:Z,totalScrollHeight:D,rowHeight:E.height}}}else{let G=Math.ceil(Z/E.height)+(E.rowChunkSize||1),B=F*G,W=Math.floor(Y/E.height);if(W>z-G+1)W=Math.max(0,z-G+1);if(E.rowChunkSize)W-=W%E.rowChunkSize;f=W*F,L=f+B-1,H=W*E.height,$=Math.max((z-G)*E.height-H,0)}}return{items:M,firstItem:f,lastItem:L,topBuffer:H,bottomBuffer:$}}needle;filter=FE((E)=>{if(this.needle!==E)this.needle=E,this.update(this.array)},ZL);update(E,M){if(E==null)E=[];if(this.array=E,!M)this._filteredCache=void 0;let{hiddenProp:f,visibleProp:L}=this.options,H=j(E),$=this.visibleSlice();if(this.boundElement.classList.toggle(\"-xin-empty-list\",$.items.length===0),this.options.virtual!=null)this.boundElement.setAttribute(\"aria-rowcount\",String($.items.length));let J=this._previousSlice,{firstItem:Q,lastItem:Z,topBuffer:Y,bottomBuffer:F}=$,z=f===void 0&&L===void 0&&M===!0&&J!=null&&Q===J.firstItem&&Z===J.lastItem;if(z&&$.interpolation==null&&Y===J.topBuffer&&F===J.bottomBuffer)return;if(z&&$.interpolation!=null){this._updateInterpolatedBuffers($);return}this._previousSlice=$;let G=0,B=0,W=0,{idPath:D}=this.options,A=this.options.virtual?.itemsPerRow??1,K;if(D!=null){K=new Set;for(let q=Q;q<=Z;q++){let U=$.items[q];if(U!==void 0)K.add(String(U[D]))}}let g=new Set;for(let q of Array.from(this.boundElement.children)){if(q===this.listTop||q===this.listBottom)continue;let U=q[o];if(U==null)continue;else if(U===!0)q.remove(),G++;else{if(g.has(U))continue;let O;if(D!=null)O=!K.has(String(U[D]));else{let _=$.items.indexOf(U);O=_<Q||_>Z}if(O){g.add(U);let _=this.itemToElement.get(U);if(_!=null)for(let w of _)w.remove();else q.remove();if(this.itemToElement.delete(U),D!=null)this.idToElement.delete(String(U[D]));G++}}}if(this.listTop!=null&&this.listBottom!=null)this.listTop.style.height=String(Y)+\"px\",this.listBottom.style.height=String(F)+\"px\";let P=[];for(let q=Q;q<=Z;q++){let U=$.items[q];if(U===void 0)continue;let O=this.itemToElement.get(C(U));if(O==null&&D!=null){let _=String(U[D]);if(O=this.idToElement.get(_),O!=null){let w=C(U);this.itemToElement.set(w,O);for(let d of O)d[o]=w}}if(O==null){W++;let _=C(U);if(O=this.templates.map((w)=>fE(w)),typeof U===\"object\")this.itemToElement.set(_,O);for(let w of O)w[o]=typeof U===\"object\"?_:!0;for(let w of O)if(this.listBottom!=null)this.boundElement.insertBefore(w,this.listBottom);else this.boundElement.append(w);if(D!=null){let w=U[D],d=`${H}[${D}=${w}]`;for(let jf of O)zf(jf,d);this.idToElement.set(String(w),O)}else{let w=`${H}[${q}]`;for(let d of O)zf(d,w)}}if(this.options.virtual!=null){let _=String(q+1);if(A>1)for(let w=0;w<O.length;w++){let d=O[w];d.setAttribute(\"role\",\"gridcell\"),d.setAttribute(\"aria-rowindex\",_),d.setAttribute(\"aria-colindex\",String(w+1))}else for(let w of O)w.setAttribute(\"role\",\"listitem\"),w.setAttribute(\"aria-rowindex\",_)}P.push(...O)}let S=null;for(let q of P){if(q.previousElementSibling!==S)if(B++,S?.nextElementSibling!=null)this.boundElement.insertBefore(q,S.nextElementSibling);else if(this.listBottom!=null)this.boundElement.insertBefore(q,this.listBottom);else this.boundElement.append(q);S=q}if($.interpolation!=null)this._updateInterpolatedBuffers($);if(LE.perf)console.log(H,\"updated\",{removed:G,created:W,moved:B})}_updateInterpolatedBuffers(E){let{t:M,position:f,scrollTop:L,viewportHeight:H,totalScrollHeight:$,rowHeight:J}=E.interpolation,Q=0;for(let z of Array.from(this.boundElement.children)){if(z===this.listTop||z===this.listBottom)continue;Q+=z.offsetHeight||J}let Z=L,Y=L+H-Q,F=Math.max(0,M*Y+(1-M)*Z-f%1*J);if(this.listTop!=null&&this.listBottom!=null)this.listTop.style.height=String(F)+\"px\",this.listBottom.style.height=String(Math.max(0,$-F-Q))+\"px\"}}var DE=(E,M,f)=>{let L=E[QE];if(M&&L===void 0)L=new Ff(E,M,f),E[QE]=L;return L},XM=(E)=>{let M;while(!(M=E[o])&&E&&E.parentElement)E=E.parentElement;return M?{element:E,item:M}:void 0},GM=(E)=>{let M=XM(E);return M?M.item:void 0},QL=(E)=>{let M=XM(E);if(!M)return console.error(\"deleteListItem failed, element is not part of a list instance\",E),!1;let f=DE(M.element.parentElement);if(!f.options.idPath)return console.error(\"deleteListItem failed, list binding has no idPath\",E.parentElement,f),!1;let L=f.array.indexOf(M.item);if(L>-1)return f.array.splice(L,1),!0;return!1},YL={start:\"start\",middle:\"center\",end:\"end\",nearest:\"nearest\"},zL=(E,M,f={})=>{let L=DE(E);if(L==null)return console.error(\"scrollListItemIntoView failed, element has no list binding\",E),!1;let{position:H=\"middle\",behavior:$=\"smooth\"}=f,J=L.filteredArray(),Q=C(M)??M,Z=J.indexOf(Q);if(Z===-1)return console.error(\"scrollListItemIntoView failed, item not found in list\",M),!1;let{virtual:Y}=L.options;if(Y!=null&&E instanceof HTMLElement){let F=Y.width!=null?Math.max(1,Math.floor(E.offsetWidth/Y.width)):Y.visibleColumns??1,z=Math.floor(Z/F),G=Y.minHeight??Y.height,B=Math.ceil(J.length/F),W=Y.scrollContainer===\"window\",D=W?window.innerHeight:E.offsetHeight,A;if(Y.minHeight!=null){let K=Math.ceil(D/G)+(Y.rowChunkSize||1),g=B*G,P=Math.max(0,g-D),S=Math.max(1,B-K+1),q=z/S;switch(H){case\"start\":A=q*P;break;case\"end\":A=Math.max(0,(z-K+1)/S*P);break;case\"nearest\":{let U=W?Math.max(0,-E.getBoundingClientRect().top):E.scrollTop,O=P>0?U/P:0,_=Math.floor(O*S);if(z<_)A=q*P;else if(z>=_+K)A=Math.max(0,(z-K+1)/S*P);else return!0;break}default:{let U=z-Math.floor(K/2);A=Math.max(0,U)/S*P}}}else{let K=z*Y.height;switch(H){case\"start\":A=K;break;case\"end\":A=K-D+Y.height;break;case\"nearest\":{let g=W?Math.max(0,-E.getBoundingClientRect().top):E.scrollTop;if(K<g)A=K;else if(K+Y.height>g+D)A=K-D+Y.height;else return!0;break}default:A=K-(D-Y.height)/2}}if(A=Math.max(0,A),W){let K=E.getBoundingClientRect().top+window.scrollY;window.scrollTo({top:K+A,behavior:$})}else E.scrollTo({top:A,behavior:$})}else{let F=L.itemToElement.get(Q);if(F==null||F.length===0)return console.error(\"scrollListItemIntoView failed, no DOM element found for item\",M),!1;F[0].scrollIntoView({block:YL[H]??\"center\",behavior:$})}return!0};var{document:OE,MutationObserver:Xf}=globalThis,WM=(E,M)=>{let f=b.get(E);if(f==null)return;for(let L of f){let{binding:H,options:$}=L,{path:J}=L,{toDOM:Q}=H;if(Q!=null){if(J.startsWith(\"^\")){let Z=GM(E);if(Z!=null&&Z[m]!=null)J=L.path=`${Z[m]}${J.substring(1)}`;else{if(E instanceof HTMLElement)console.warn(`Unresolved relative binding \"${J}\" —`,E,\"is not part of a list. If this is a list template, wrap it in a <template>.\");continue}}if(M==null||J.startsWith(M))Q(E,GE()[J],$)}}};if(Xf!=null)new Xf((M)=>{M.forEach((f)=>{Array.from(f.addedNodes).forEach((L)=>{if(L instanceof Element)Array.from(L.querySelectorAll(p)).forEach((H)=>WM(H))})})}).observe(OE.body,{subtree:!0,childList:!0});i(()=>!0,(E)=>{let M=Array.from(OE.querySelectorAll(p));for(let f of M)WM(f,E)});var Gf=(E)=>{let M=E.target?.closest(p);while(M!=null){let f=b.get(M);for(let L of f){let{binding:H,path:$}=L,{fromDOM:J}=H;if(J!=null){let Q;try{Q=J(M,L.options)}catch(Z){throw console.error(\"Cannot get value from\",M,\"via\",L),Error(\"Cannot obtain value fromDOM\")}if(Q!=null){let Z=GE(),Y=Z[$];if(Y==null)Z[$]=Q;else{let F=Y[m]!=null?Y[r]:Y,z=Q[m]!=null?Q[r]:Q;if(F!==z)Z[$]=z}}}}M=M.parentElement.closest(p)}};if(globalThis.document!=null)OE.body.addEventListener(\"change\",Gf,!0),OE.body.addEventListener(\"input\",Gf,!0);function FL(E,M,f,L){let{paths:H,transform:$}=M,{toDOM:J}=f;if(J==null)return E;let Q=null,Z={toDOM(F,z,G){let B=GE(),W=H.map((A)=>B[A]);if(Q!==null&&W.every((A,K)=>A===Q[K]))return;Q=W;let D=$(...W);J(F,D,G)},fromDOM:f.fromDOM};E.classList?.add(AE);let Y=b.get(E);if(Y==null)Y=[],b.set(E,Y);for(let F of H)Y.push({path:F,binding:Z,options:L});if(!H[0].startsWith(\"^\"))x(H[0]);return E}function v(E,M,f,L){if(E instanceof DocumentFragment)throw Error(\"bind cannot bind to a DocumentFragment\");if(M!=null&&typeof M===\"object\"&&M[ME])return FL(E,M,f,L);let H;if(typeof M===\"object\"&&M[m]===void 0&&L===void 0){let{value:Q}=M;H=typeof Q===\"string\"?Q:Q[m],L=M,delete L.value}else H=typeof M===\"string\"?M:M[m];if(H==null)throw Error(\"bind requires a path or object with xin Proxy\");let{toDOM:$}=f;E.classList?.add(AE);let J=b.get(E);if(J==null)J=[],b.set(E,J);if(J.push({path:H,binding:f,options:L}),$!=null&&!H.startsWith(\"^\"))x(H);if(L?.filter&&L?.needle)v(E,L.needle,{toDOM(Q,Z){console.log({needle:Z}),Q[QE]?.filter(Z)}});return E}var Wf=new Set,XL=(E)=>{let M=E?.target?.closest(uE),f=!1,L=new Proxy(E,{get($,J){if(J===\"stopPropagation\")return()=>{E.stopPropagation(),f=!0};else{let Q=$[J];return typeof Q===\"function\"?Q.bind($):Q}}}),H=new Set;while(!f&&M!=null){let J=EE.get(M)[E.type]||H;for(let Q of J){if(typeof Q===\"function\")Q(L);else{let Z=GE()[Q];if(typeof Z===\"function\")Z(L);else throw Error(`no event handler found at path ${Q}`)}if(f)continue}M=M.parentElement!=null?M.parentElement.closest(uE):null}};function XE(E,M,f){let L=EE.get(E);if(E.classList.add(vE),L==null)L={},EE.set(E,L);if(!L[M])L[M]=new Set;if(L[M].add(f),!Wf.has(M))Wf.add(M),OE.body.addEventListener(M,XL,!0);return()=>{L[M].delete(f)}}uM(v,XE);function UM(E,M){if(!E.internals)return;let f={},L=\"\";if(E.hasAttribute(\"required\")&&M===\"\")f.valueMissing=!0,L=\"Please fill out this field.\";let H=E.getAttribute(\"minlength\");if(H&&M.length<parseInt(H,10))f.tooShort=!0,L=`Please use at least ${H} characters.`;let $=E.getAttribute(\"maxlength\");if($&&M.length>parseInt($,10))f.tooLong=!0,L=`Please use no more than ${$} characters.`;let J=E.getAttribute(\"pattern\");if(J&&M!==\"\")try{if(!new RegExp(`^(?:${J})$`).test(M))f.patternMismatch=!0,L=\"Please match the requested format.\"}catch{}if(Object.keys(f).length>0)E.internals.setValidity(f,L,E);else E.internals.setValidity({})}var GL=0;function DM(){return`custom-elt${(GL++).toString(36)}`}var Uf=0,KM=null;function WL(){if(KM===null)KM=new MutationObserver((E)=>{let M=new Set;for(let f of E)if(f.type===\"attributes\"&&f.target instanceof u){let L=f.target,H=EM(f.attributeName);if(L._legacyTrackedAttrs?.has(H))M.add(L)}for(let f of M)f.queueRender(!1)});return KM}var wE={};function UL(E,M){let f=wE[E],L=$E(M).replace(/:host\\(([^)]+)\\)/g,`${E}$1`).replace(/:host\\b/g,E);wE[E]=f?f+`\n`+L:L}function DL(E){if(wE[E])document.head.append(I.style({id:E+\"-component\"},wE[E]));delete wE[E]}class u extends HTMLElement{static elements=I;static _elementCreator;static initAttributes;static formAssociated;static preferredTagName;static shadowStyleSpec;static lightStyleSpec;static extends;internals;get validity(){return this.internals?.validity}get validationMessage(){return this.internals?.validationMessage??\"\"}get willValidate(){return this.internals?.willValidate??!1}checkValidity(){return this.internals?.checkValidity()??!0}reportValidity(){return this.internals?.reportValidity()??!0}setCustomValidity(E){if(this.internals)if(E)this.internals.setValidity({customError:!0},E);else this.internals.setValidity({})}setValidity(E,M,f){this.internals?.setValidity(E,M,f)}setFormValue(E,M){this.internals?.setFormValue(E,M)}static get observedAttributes(){let E=this.initAttributes;if(E)return[\"hidden\",...Object.keys(E).map(N)];return[\"hidden\"]}instanceId;styleNode;static styleSpec;static styleNode;content=I.slot();isSlotted;static _tagName=null;static get tagName(){return this._tagName}_legacyTrackedAttrs;_attrValues;_valueChanged=!1;_pendingAttrOps;static StyleNode(E){return console.warn(\"StyleNode is deprecated, use static shadowStyleSpec instead\"),I.style($E(E))}static elementCreator(E={}){let M=this;if(!Object.prototype.hasOwnProperty.call(M,\"_elementCreator\")){if(E.tag!==void 0)T(\"elementCreator-tag\",\"Passing tag to elementCreator() is deprecated. Use static preferredTagName instead.\");if(E.styleSpec!==void 0)T(\"elementCreator-styleSpec\",\"Passing styleSpec to elementCreator() is deprecated. Use static lightStyleSpec instead.\");if(E.extends!==void 0)T(\"elementCreator-extends\",\"Passing extends to elementCreator() is deprecated. Use static extends instead.\");let f=E.tag??M.preferredTagName;if(f==null)if(typeof M.name===\"string\"&&M.name!==\"\"){if(f=N(M.name),f.startsWith(\"-\"))f=f.slice(1)}else f=DM();if(customElements.get(f)!=null)console.warn(`${f} is already defined`);if(f.match(/\\w+(-\\w+)+/)==null)console.warn(`${f} is not a legal tag for a custom-element`),f=DM();while(customElements.get(f)!==void 0)f=DM();M._tagName=f;let L=E.styleSpec??M.lightStyleSpec;if(L!==void 0)UL(f,L);let H=E.extends??M.extends,$=H?{extends:H}:void 0;window.customElements.define(f,this,$),M._elementCreator=I[f]}return M._elementCreator}initAttributes(...E){if(T(\"initAttributes\",\"initAttributes() is deprecated. Use static initAttributes = { ... } instead.\"),!this._legacyTrackedAttrs)this._legacyTrackedAttrs=new Set;for(let H of E)this._legacyTrackedAttrs.add(H);WL().observe(this,{attributes:!0});let f={},L={};E.forEach((H)=>{f[H]=n(this[H]);let $=N(H);Object.defineProperty(this,H,{enumerable:!1,get(){if(typeof f[H]===\"boolean\")return this.hasAttribute($);else if(this.hasAttribute($))return typeof f[H]===\"number\"?parseFloat(this.getAttribute($)):this.getAttribute($);else if(L[H]!==void 0)return L[H];else return f[H]},set(J){if(typeof f[H]===\"boolean\"){if(J!==this[H]){if(J)this.setAttribute($,\"\");else this.removeAttribute($);this.queueRender()}}else if(typeof f[H]===\"number\"){if(J!==parseFloat(this[H]))this.setAttribute($,J),this.queueRender()}else if(typeof J===\"object\"||`${J}`!==`${this[H]}`){if(J===null||J===void 0||typeof J===\"object\")this.removeAttribute($);else this.setAttribute($,J);this.queueRender(),L[H]=J}}})})}initValue(){let E=Object.getOwnPropertyDescriptor(this,\"value\");if(E===void 0||E.get!==void 0||E.set!==void 0)return;let M=this.hasAttribute(\"value\")?this.getAttribute(\"value\"):n(this.value);delete this.value,Object.defineProperty(this,\"value\",{enumerable:!1,get(){return M},set(f){if(M!==f)M=f,this._valueChanged=!0,this.queueRender(!0)}})}_parts;get parts(){let E=this.shadowRoot!=null?this.shadowRoot:this;if(this._parts==null)this._parts=new Proxy({},{get(M,f){if(M[f]===void 0){let L=E.querySelector(`[part=\"${f}\"]`);if(L==null)L=E.querySelector(f);if(L==null)throw Error(`elementRef \"${f}\" does not exist!`);L.removeAttribute(\"data-ref\"),M[f]=L}return M[f]}});return this._parts}attributeChangedCallback(E,M,f){let L=EM(E);if(!this._legacyTrackedAttrs?.has(L))this.queueRender(!1)}constructor(){super();if(Uf+=1,this._installAttributeQueue(),this.constructor.formAssociated&&typeof this.attachInternals===\"function\"&&!this.internals)this.internals=this.attachInternals();let E=this.constructor.initAttributes;if(E)this._setupAttributeAccessors(E);this.instanceId=`${this.tagName.toLocaleLowerCase()}-${Uf}`,this._value=n(this.defaultValue)}_installAttributeQueue(){let E=this.constructor.initAttributes;if(!E)return;let M=new Set(Object.keys(E).map(N)),f=[];this._pendingAttrOps=f;let L=HTMLElement.prototype;this.setAttribute=(H,$)=>{if(M.has(H))f.push([\"set\",H,String($)]);else L.setAttribute.call(this,H,$)},this.removeAttribute=(H)=>{if(M.has(H))f.push([\"remove\",H]);else L.removeAttribute.call(this,H)},queueMicrotask(()=>this._drainPendingAttrOps())}_drainPendingAttrOps(){let E=this._pendingAttrOps;if(E===void 0)return;this._pendingAttrOps=void 0,delete this.setAttribute,delete this.removeAttribute;for(let M of E)if(M[0]===\"set\"){if(!this.hasAttribute(M[1]))this.setAttribute(M[1],M[2])}else this.removeAttribute(M[1])}_setupAttributeAccessors(E){if(!this._attrValues)this._attrValues=new Map;for(let M of Object.keys(E)){let f=N(M),L=E[M];if(M===\"value\"){console.warn(`${this.tagName}: 'value' cannot be an attribute. Use the Component value property instead.`);continue}if(typeof L===\"object\"&&L!==null){console.warn(`${this.tagName}: initAttributes.${M} is an object. Use a regular property instead.`);continue}let H=this,$=!1;while(H){let J=Object.getOwnPropertyDescriptor(H,M);if(J){if(!J.configurable||J.get||J.set){$=!0;break}break}H=Object.getPrototypeOf(H)}if($)continue;Object.defineProperty(this,M,{enumerable:!1,get:()=>{if(typeof L===\"boolean\"){if(this.hasAttribute(f))return!0;if(this._attrValues.has(M))return this._attrValues.get(M);return!1}else if(this.hasAttribute(f))return typeof L===\"number\"?parseFloat(this.getAttribute(f)):this.getAttribute(f);else if(this._attrValues.has(M))return this._attrValues.get(M);else return L},set:(J)=>{if(typeof L===\"boolean\"){if(J!==this[M]){if(J)this.setAttribute(f,\"\");else this.removeAttribute(f);this.queueRender(),this._attrValues.set(M,!!J)}}else if(typeof L===\"number\"){if(J!==parseFloat(this[M]))this.setAttribute(f,J),this.queueRender(),this._attrValues.set(M,J)}else if(typeof J===\"object\"||`${J}`!==`${this[M]}`){if(J===null||J===void 0||typeof J===\"object\")this.removeAttribute(f);else this.setAttribute(f,J);this.queueRender(),this._attrValues.set(M,J)}}})}}connectedCallback(){if(this._drainPendingAttrOps(),DL(this.constructor.tagName),this.hydrate(),this.role!=null)this.setAttribute(\"role\",this.role);if(this.constructor.formAssociated&&!this.hasAttribute(\"tabindex\"))this.setAttribute(\"tabindex\",\"0\");if(this.onResize!==void 0){if(WE.observe(this),this._onResize==null)this._onResize=this.onResize.bind(this);this.addEventListener(\"resize\",this._onResize)}if(this.value!=null&&this.getAttribute(\"value\")!=null)this._value=this.getAttribute(\"value\");if(this.internals&&this.value!==void 0)this.internals.setFormValue(this.value),this.validateValue();this.queueRender()}disconnectedCallback(){WE.unobserve(this)}formResetCallback(){if(this.value!==void 0)this.value=this.defaultValue??\"\"}formDisabledCallback(E){if(E)this.setAttribute(\"disabled\",\"\");else this.removeAttribute(\"disabled\")}formStateRestoreCallback(E){if(this.value!==void 0&&typeof E===\"string\")this.value=E}_changeQueued=!1;_renderQueued=!1;queueRender(E=!1){if(!this._hydrated)return;if(!this._changeQueued)this._changeQueued=E;if(!this._renderQueued)this._renderQueued=!0,requestAnimationFrame(()=>{if(this._changeQueued){if(aE(this,\"change\"),this.internals&&this.value!==void 0)this.internals.setFormValue(this.value)}this._changeQueued=!1,this._renderQueued=!1,this.render()})}_hydrated=!1;hydrate(){if(!this._hydrated){this.initValue();let E=typeof this.content!==\"function\",M=typeof this.content===\"function\"?this.content(I):this.content;if(Array.isArray(M)){let $={};M=M.filter((J)=>{if(J instanceof Node||typeof J===\"string\"||typeof J===\"number\"||j(J))return!0;return Object.assign($,J),!1});for(let J of Object.keys($))BE(this,J,$[J])}let f=this.constructor,L=f.shadowStyleSpec??f.styleSpec;if(f.styleSpec&&!f.shadowStyleSpec)T(\"static-styleSpec\",\"static styleSpec is deprecated. Use static shadowStyleSpec instead.\");let{styleNode:H}=f;if(L)H=f.styleNode=I.style($E(L)),delete f.styleNode;if(this.styleNode)console.warn(this,\"styleNode is deprecated, use static shadowStyleSpec instead\"),H=this.styleNode;if(H){let $=this.attachShadow({mode:\"open\"});$.appendChild(H.cloneNode(!0)),eE($,M,E)}else if(M!==null){let $=Array.from(this.childNodes);eE(this,M,E),this.isSlotted=this.querySelector(\"slot,tosi-slot,xin-slot\")!==void 0;let J=Array.from(this.querySelectorAll(\"slot\"));if(J.length>0)J.forEach(SE.replaceSlot);if($.length>0){let Q={\"\":this};Array.from(this.querySelectorAll(\"tosi-slot,xin-slot\")).forEach((Z)=>{Q[Z.name]=Z}),$.forEach((Z)=>{let Y=Q[\"\"],F=Z instanceof Element?Q[Z.slot]:Y;(F!==void 0?F:Y).append(Z)})}}this._hydrated=!0}}render(){if(this._valueChanged&&this.internals&&this.value!==void 0)this.internals.setFormValue(this.value),this.validateValue();this._valueChanged=!1}validateValue(){if(!this.internals||this.value===void 0)return;let E=typeof this.value===\"string\"?this.value:String(this.value);UM(this,E)}}class SE extends u{static preferredTagName=\"tosi-slot\";static initAttributes={name:\"\"};content=null;static replaceSlot(E){let M=document.createElement(\"tosi-slot\");if(E.name!==\"\")M.setAttribute(\"name\",E.name);E.replaceWith(M)}}var KL=SE.elementCreator();class Df extends u{static preferredTagName=\"xin-slot\";static initAttributes={name:\"\"};content=null;constructor(){super();T(\"xin-slot\",\"<xin-slot> is deprecated. Use <tosi-slot> instead.\")}static replaceSlot=SE.replaceSlot}var qL=Df.elementCreator();var OL=(E=()=>!0)=>{let M=localStorage.getItem(\"xin-state\");if(M!=null){let L=JSON.parse(M);for(let H of Object.keys(L).filter(E))if(k[H]!==void 0)Object.assign(k[H],L[H]);else k[H]=L[H]}let f=UE(()=>{let L={},H=C(k);for(let $ of Object.keys(H).filter(E))L[$]=H[$];localStorage.setItem(\"xin-state\",JSON.stringify(L)),console.log(\"xin state saved to localStorage\")},500);KE(E,f)};var wL=\"tosijs-share\",CL=\"tosijs-share\",CE=\"shared\",AL=1,OM=new Set,wM=new Set,qM=new Map,ZE=null,CM=\"\",xE=null,jL=null;function Kf(){if(xE!=null)return Promise.resolve(xE);return new Promise((E,M)=>{let f=indexedDB.open(CL,AL);f.onupgradeneeded=()=>{f.result.createObjectStore(CE)},f.onsuccess=()=>{xE=f.result,E(xE)},f.onerror=()=>M(f.error)})}var VL={async get(E){let M=await Kf();return new Promise((f,L)=>{let $=M.transaction(CE,\"readonly\").objectStore(CE).get(E);$.onsuccess=()=>f($.result),$.onerror=()=>L($.error)})},async set(E,M){let f=await Kf();return new Promise((L,H)=>{let $=f.transaction(CE,\"readwrite\");$.objectStore(CE).put(M,E),$.oncomplete=()=>L(),$.onerror=()=>H($.error)})}};function qf(){return jL??VL}function RL(E){return E!=null&&E.type===\"tosijs-share\"&&typeof E.path===\"string\"}function Of(E){for(let M of OM)if(E===M||E.startsWith(M+\".\"))return M;return}function TL(E){for(let M of wM)if(E===M||E.startsWith(M+\".\"))return!0;return!1}function kL(E,M){wM.add(E),l(R,E,M),x(E),zE().then(()=>{wM.delete(E)})}function IL(){if(ZE!=null)return ZE;return CM=crypto.randomUUID(),ZE=new BroadcastChannel(wL),ZE.onmessage=(E)=>{let M=E.data;if(!RL(M))return;if(M.origin===CM)return;if(Of(M.path)===void 0)return;kL(M.path,M.value)},ZE}function BL(E,M){if(ZE==null)return;let f={type:\"tosijs-share\",path:E,value:M,origin:CM};ZE.postMessage(f)}function _L(E){if(!qM.has(E))qM.set(E,UE(()=>{let M=V(R,E);qf().set(E,M)},500));qM.get(E)()}async function SL(...E){if(typeof BroadcastChannel>\"u\")return{restored:[]};IL();let M=[],f=qf();for(let L of E){let H=typeof L===\"string\"?L:j(L);if(H===void 0)throw Error(\"share() requires boxed proxies or string paths. Got a non-proxy value.\");if(OM.has(H))continue;OM.add(H);let $=await f.get(H);if($!==void 0)l(R,H,$),x(H),M.push(L);else{let J=V(R,H);await f.set(H,J)}i((J)=>J===H||J.startsWith(H+\".\"),(J)=>{if(TL(J))return;let Q=Of(J);if(Q===void 0)return;let Z=V(R,J);BL(J,Z),_L(Q)})}return{restored:M}}var AM=new Set;function wf(E,M){for(let f of E)if(M===f||M.startsWith(f+\".\"))return f;return}function xL(E){for(let M of AM)if(E===M||E.startsWith(M+\".\"))return!0;return!1}function NL(E,M){AM.add(E),l(R,E,M),x(E),zE().then(()=>{AM.delete(E)})}async function yL(E,M,...f){let L=new Set,H=[],$=[],J=M.throttleInterval??100;await E.connect();let Q=FE(()=>{if(H.length===0)return;let Z=H.splice(0);E.send(Z)},J);E.onReceive((Z)=>{for(let Y of Z){if(wf(L,Y.path)===void 0)continue;NL(Y.path,Y.value)}});for(let Z of f){let Y=typeof Z===\"string\"?Z:j(Z);if(Y===void 0)throw Error(\"sync() requires boxed proxies or string paths. Got a non-proxy value.\");L.add(Y);let F=i((z)=>z===Y||z.startsWith(Y+\".\"),(z)=>{if(xL(z))return;if(wf(L,z)===void 0)return;let G=V(R,z);H.push({path:z,value:G}),Q()});$.push(F)}return{disconnect(){for(let Z of $)HE(Z);$.length=0,L.clear(),H.length=0,E.disconnect()}}}var jM=\"1.6.4\";function NE(E){return Object.assign(y,E),y}function yE(E){return T(\"boxedProxy\",\"boxedProxy is deprecated, please use tosi() instead\"),NE(E)}var PL=new FinalizationRegistry((E)=>{E()});function mL(E,M){let f=iE();y[f]=E;let L=y[f],H=()=>{delete k[f]};if(M)PL.register(M,H);return[L,H]}function VM(E,M=!1){if(M)return T(\"xinProxy-boxed\",\"xinProxy(..., true) is deprecated; use tosi(...) instead\"),yE(E);return Object.keys(E).forEach((f)=>{k[f]=E[f]}),k}var bL={};async function PE(E,M){let f=await M(E,{Color:X,Component:u,elements:I,svgElements:ZM,mathML:QM,varDefault:kE,vars:LM,xin:k,boxed:y,xinProxy:VM,boxedProxy:yE,tosi:NE,makeComponent:PE,bind:v,on:XE,version:jM}),{type:L}=f;L.preferredTagName=E;let H=f.lightStyleSpec??f.styleSpec;if(H)L.lightStyleSpec=H;let $={type:L,creator:L.elementCreator()};return bL[E]=$,$}var mE={\":host\":{display:\"none\"}},RM={},cL=(E)=>import(E);class bE extends u{static preferredTagName=\"tosi-blueprint\";static lightStyleSpec=mE;static initAttributes={tag:\"anon-elt\",src:\"\",property:\"default\"};loaded;blueprintLoaded=(E)=>{};async packaged(){let{tag:E,src:M,property:f}=this,L=`${E}.${f}:${M}`;if(!this.loaded){if(RM[L]===void 0)RM[L]=cL(M).then((H)=>{let $=H[f];return PE(E,$)});else console.log(`using cached ${E} with signature ${L}`);this.loaded=await RM[L],this.blueprintLoaded(this.loaded)}return this.loaded}}var vL=bE.elementCreator();class TM extends u{static preferredTagName=\"tosi-loader\";static lightStyleSpec=mE;allLoaded=()=>{};async load(){let M=Array.from(this.querySelectorAll(\"tosi-blueprint, xin-blueprint\")).filter((f)=>f.src).map((f)=>f.packaged());await Promise.all(M),this.allLoaded()}connectedCallback(){super.connectedCallback(),this.load()}}var uL=TM.elementCreator();class Cf extends bE{static preferredTagName=\"xin-blueprint\";static lightStyleSpec=mE;constructor(){super();T(\"xin-blueprint\",\"<xin-blueprint> is deprecated. Use <tosi-blueprint> instead.\")}}var gL=Cf.elementCreator();class Af extends u{static preferredTagName=\"xin-loader\";static lightStyleSpec=mE;allLoaded=()=>{};constructor(){super();T(\"xin-loader\",\"<xin-loader> is deprecated. Use <tosi-loader> instead.\")}async load(){let M=Array.from(this.querySelectorAll(\"xin-blueprint\")).filter((f)=>f.src).map((f)=>f.packaged());await Promise.all(M),this.allLoaded()}connectedCallback(){super.connectedCallback(),this.load()}}var dL=Af.elementCreator();export{kf as xinValue,qL as xinSlot,VM as xinProxy,Tf as xinPath,k as xin,T as warnDeprecated,jM as version,LM as vars,kE as varDefault,UM as validateAgainstConstraints,zE as updates,HE as unobserve,WM as touchElement,x as touch,C as tosiValue,mL as tosiUnique,KL as tosiSlot,Rf as tosiSetValue,j as tosiPath,uL as tosiLoader,vL as tosiBlueprint,Vf as tosiAccessor,NE as tosi,FE as throttle,yL as sync,ZM as svgElements,SL as share,LE as settings,zL as scrollListItemIntoView,lf as onThemePreferencesChange,df as onStylesheetChange,XE as on,KE as observe,QM as mathML,PE as makeComponent,of as invertLuminance,rf as initVars,OL as hotReload,aM as getThemePreferences,GM as getListItem,XM as getListInstance,DE as getListBinding,MM as getCssVar,I as elements,gE as deprecated,QL as deleteListItem,UE as debounce,$E as css,yE as boxedProxy,y as boxed,dL as blueprintLoader,gL as blueprint,RE as bindings,af as bindParts,v as bind,jE as TOSI_ACCESSOR,ME as TAKE_DESCRIPTOR,hf as StyleSheet,vf as MoreMath,u as Component,X as Color,TM as BlueprintLoader,bE as Blueprint};\n\n//# debugId=6764BE645D8E3BAE64756E2164756E21\n//# sourceMappingURL=module.js.map\n",
6
6
  "/*#\n# ab-test\n\n`<tosi-ab>` provides a simple method for implementing A|B-testing.\n\n```js\nimport { AbTest } from 'tosijs-ui'\n\nfunction randomize() {\n const conditions = {\n testA: Math.random() < 0.5,\n testB: Math.random() < 0.5,\n testC: Math.random() < 0.5\n }\n\n AbTest.conditions = conditions\n\n preview.querySelector('pre').innerText = JSON.stringify(conditions, null, 2)\n}\n\npreview.querySelector('.randomize-conditions').addEventListener('click', randomize)\n\nrandomize()\n```\n```html\n<div style=\"display: flex; gap: 10px; align-items: center;\">\n <div style=\"display: flex; flex-direction: column; gap: 10px;\">\n <tosi-ab class=\"a\" condition=\"testA\">\n <p>testA</p>\n </tosi-ab>\n <tosi-ab class=\"not-a\" not condition=\"testA\">\n <p>not testA</p>\n </tosi-ab>\n <tosi-ab class=\"b\" condition=\"testB\">\n <p>testB</p>\n </tosi-ab>\n <tosi-ab class=\"not-b\" not condition=\"testB\">\n <p>not testB</p>\n </tosi-ab>\n <tosi-ab class=\"c\" condition=\"testC\">\n <p>testC</p>\n </tosi-ab>\n <tosi-ab class=\"not-c\" not condition=\"testC\">\n <p>not testC</p>\n </tosi-ab>\n </div>\n <pre>\n </pre>\n</div>\n<button class=\"randomize-conditions\">Randomize</button>\n```\n```css\n.preview {\n display: flex;\n flex-direction: column;\n gap: 4px;\n align-items: flex-start;\n}\n.preview p {\n background: #44c;\n color: white;\n display: block;\n border-radius: 99px;\n padding: 4px 10px;\n margin: 0;\n}\n\n.preview tosi-ab[not] p {\n background: red;\n}\n```\n\n- Set `AbTest.conditions` to anything you like.\n- Use `<tosi-ab>` elements to display conditional content.\n- `condition` attribute determines which value in `AbTest.conditions` controls the element\n- `not` reverses the condition (so `<tosi-ab not condition=\"foo\">` will be visible if `conditions.foo` is `false`)\n*/\n\n/*{ \"parent\": \"Helper Libraries\" }*/\n\nimport { Component } from 'tosijs'\n\nconst abTestConditions = {} as { [key: string]: any }\n\nexport class AbTest extends Component {\n static preferredTagName = 'tosi-ab'\n\n static set conditions(context: { [key: string]: any }) {\n Object.assign(abTestConditions, context)\n\n for (const abTest of [...AbTest.instances]) {\n abTest.queueRender()\n }\n }\n\n static initAttributes = {\n condition: '',\n not: false,\n }\n\n static instances: Set<AbTest> = new Set()\n\n connectedCallback() {\n super.connectedCallback()\n AbTest.instances.add(this)\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n AbTest.instances.delete(this)\n }\n\n render(): void {\n if (\n this.condition !== '' &&\n (this.not\n ? abTestConditions[this.condition] !== true\n : abTestConditions[this.condition] === true)\n ) {\n this.toggleAttribute('hidden', false)\n } else {\n this.toggleAttribute('hidden', true)\n }\n }\n}\n\nexport const abTest = AbTest.elementCreator()\n",
@@ -27,21 +27,22 @@
27
27
  "/*\nShared slug / URL helpers for the static doc system.\n\nThese are used in BOTH places that must agree on URLs:\n- the build-time generator (bin/) which emits one /slug/index.html per doc\n- the runtime <tosi-doc-system> component which resolves location.pathname -> doc\n and builds nav hrefs.\n\nBecause the generator and the component both operate on the same docs.json, every\nfunction here is a pure, order-independent function of the docs array, so the two\nsides always produce identical slugs.\n*/\n\nexport interface DocLike {\n filename: string\n}\n\nconst README = /^readme\\.md$/i\n\n/** filename without its final extension; README.md maps to '' (the site root) */\nfunction baseSlug(filename: string): string {\n if (README.test(filename)) return ''\n return filename.replace(/\\.[^.]+$/, '')\n}\n\n/**\n * Build a deterministic { filename -> slug } map for a set of docs.\n *\n * Collisions (e.g. `layout.ts` and `layout.css` both -> `layout`) are resolved by\n * falling back to the dotted filename with dots turned into dashes for EVERY member\n * of the colliding group. Computed from counts first, so the result does not depend\n * on array order.\n */\nexport function buildSlugMap(docs: DocLike[]): Record<string, string> {\n const counts: Record<string, number> = {}\n for (const doc of docs) {\n const base = baseSlug(doc.filename)\n counts[base] = (counts[base] || 0) + 1\n }\n const map: Record<string, string> = {}\n for (const doc of docs) {\n const base = baseSlug(doc.filename)\n // README ('' base) is unique by construction; never disambiguate it.\n map[doc.filename] =\n base !== '' && counts[base] > 1\n ? doc.filename.replace(/\\./g, '-')\n : base\n }\n return map\n}\n\n/** site-root-relative path for a slug: '' -> '/', 'button' -> '/button/' */\nexport function pathForSlug(slug: string): string {\n return slug === '' ? '/' : `/${slug}/`\n}\n\n/**\n * Rewrite legacy `?<filename>` (and `/?<filename>`) doc links in an HTML string\n * to resolved hrefs. Used by the static generator so the pre-rendered pages have\n * clean links for no-JS readers, crawlers, and the brief window before the\n * doc-browser hydrates. `hrefFor` returns the target href for a known filename,\n * or null to leave the link untouched (unknown filename / a real query string).\n */\nexport function rewriteDocLinks(\n html: string,\n hrefFor: (filename: string) => string | null\n): string {\n return html.replace(/href=\"\\/?\\?([^\"&=]+)\"/g, (match, query: string) => {\n const href = hrefFor(decodeURIComponent(query))\n return href === null ? match : `href=\"${href}\"`\n })\n}\n\n/**\n * Map a legacy `?<filename>` query (the old doc-browser's query-param routing,\n * e.g. `?button.ts`, `?README.md`) to the new slug path (`/button/`, `/`).\n *\n * Returns the new path, or null when `search` isn't a bare-filename query or\n * doesn't match a known doc. Uses the slug map so README -> '/' and collision\n * disambiguation (foo.ts + foo.css -> /foo-ts/, /foo-css/) are handled.\n */\nexport function legacyQueryPath(\n search: string,\n slugMap: Record<string, string>\n): string | null {\n const query = search.replace(/^\\?/, '')\n // Legacy links are a single bare filename — anything with key=value pairs is\n // a real query string, not the old routing.\n if (!query || query.includes('=') || query.includes('&')) return null\n const filename = decodeURIComponent(query)\n const slug = slugMap[filename]\n if (slug === undefined) return null\n return pathForSlug(slug)\n}\n\n/** strip a pathname down to its slug: '/button/' -> 'button', '/' -> '' */\nexport function slugForPath(pathname: string): string {\n return pathname.replace(/^\\/+/, '').replace(/\\/+$/, '').replace(/\\/index\\.html$/i, '')\n}\n\n/**\n * Resolve a browser location.pathname to a doc filename, using a slug map.\n * Returns '' if nothing matches (caller falls back to the first/README doc).\n */\nexport function filenameForPath(\n pathname: string,\n slugMap: Record<string, string>\n): string {\n const slug = slugForPath(pathname)\n for (const [filename, docSlug] of Object.entries(slugMap)) {\n if (docSlug === slug) return filename\n }\n return ''\n}\n\n/** Turn a human name/title into a slug: 'Form Components' -> 'form-components'. */\nexport function slugify(s: string): string {\n return s\n .toLowerCase()\n .trim()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '')\n}\n\n/**\n * Resolve a doc's `parent` value (a NAME or a slug) to the parent doc's\n * filename. Tries, in order: exact filename, exact slug (slug->slug no-op),\n * slugify(value) against doc slugs, then slugify(value) against slugify(title).\n * Returns '' if nothing matches (the build then auto-creates a section doc).\n */\nexport function resolveParent(\n parentValue: string,\n docs: Array<{ filename: string; title?: string }>,\n slugMap: Record<string, string>\n): string {\n if (!parentValue) return ''\n for (const d of docs) if (d.filename === parentValue) return d.filename\n for (const d of docs) if (slugMap[d.filename] === parentValue) return d.filename\n const target = slugify(parentValue)\n for (const d of docs) if (slugMap[d.filename] === target) return d.filename\n for (const d of docs) if (d.title && slugify(d.title) === target) return d.filename\n return ''\n}\n",
28
28
  "/*\nShared, pure nav-tree model for the doc system.\n\nLike routing.ts, this is imported by BOTH the build-time generator\n(src/doc-system/site/generate-site.ts) and the runtime component\n(src/doc-browser.ts), so static and hydrated navigation always agree. Every\nfunction here is a pure, order-independent function of the docs array.\n\nA doc may declare a `parent` (a name or slug) in its metadata; docs sharing a\nparent form a nav section, nested arbitrarily deep. Parents are expected to\nexist as real docs by the time the tree is built (the build auto-creates any\nmissing section docs first), so this module never synthesizes.\n*/\n\nimport { resolveParent } from './routing'\n\nexport interface NavDoc {\n filename: string\n title: string\n pin?: 'top' | 'bottom'\n /** sub-order within a pin bucket (lower first); sections use this for order */\n order?: number\n /** parent doc name or slug; resolved via resolveParent */\n parent?: string\n}\n\nexport interface NavNode<T extends NavDoc = NavDoc> {\n doc: T\n slug: string\n children: NavNode<T>[]\n depth: number\n}\n\n/**\n * Total-order sort key: pin bucket (top<none<bottom), then `order` (default\n * 500), then title, then filename. The filename tiebreak guarantees a stable\n * total order even for equal titles — required so the generated TOC blocks are\n * idempotent (no build-to-build churn).\n */\nexport function navSortKey(doc: NavDoc): string {\n const bucket = doc.pin === 'top' ? 'A' : doc.pin === 'bottom' ? 'Z' : 'M'\n const order = String(doc.order ?? 500).padStart(4, '0')\n return bucket + order + (doc.title || '').toLocaleLowerCase() + '\u0000' + doc.filename\n}\n\nexport function pinnedSort(a: NavDoc, b: NavDoc): number {\n const ak = navSortKey(a)\n const bk = navSortKey(b)\n return ak > bk ? 1 : bk > ak ? -1 : 0\n}\n\n/**\n * Build the forest of top-level nav nodes. Children are grouped under their\n * resolved parent and each sibling group is sorted by pinnedSort. A doc whose\n * parent can't be resolved (or which would be its own ancestor) becomes a root.\n */\nexport function buildNavTree<T extends NavDoc>(\n docs: T[],\n slugMap: Record<string, string>\n): NavNode<T>[] {\n const nodes = new Map<string, NavNode<T>>()\n for (const doc of docs) {\n nodes.set(doc.filename, {\n doc,\n slug: slugMap[doc.filename] ?? '',\n children: [],\n depth: 0,\n })\n }\n\n // Resolve parents, guarding against missing parents and parent cycles.\n const parentOf = new Map<string, string>()\n for (const doc of docs) {\n let pf = doc.parent ? resolveParent(doc.parent, docs, slugMap) : ''\n if (pf && (pf === doc.filename || !nodes.has(pf) || createsCycle(doc.filename, pf, docs, slugMap))) {\n pf = ''\n }\n parentOf.set(doc.filename, pf)\n }\n\n const roots: NavNode<T>[] = []\n for (const doc of docs) {\n const pf = parentOf.get(doc.filename) || ''\n const node = nodes.get(doc.filename)!\n if (pf) nodes.get(pf)!.children.push(node)\n else roots.push(node)\n }\n\n const sortNodes = (arr: NavNode<T>[], depth: number): void => {\n arr.sort((x, y) => pinnedSort(x.doc, y.doc))\n for (const n of arr) {\n n.depth = depth\n sortNodes(n.children, depth + 1)\n }\n }\n sortNodes(roots, 0)\n return roots\n}\n\n/** Walk parent links from `start` to detect whether linking child->parent loops. */\nfunction createsCycle(\n child: string,\n parent: string,\n docs: Array<{ filename: string; title?: string; parent?: string }>,\n slugMap: Record<string, string>\n): boolean {\n const byFilename = new Map(docs.map((d) => [d.filename, d]))\n let cursor: string | undefined = parent\n const seen = new Set<string>([child])\n while (cursor) {\n if (seen.has(cursor)) return true\n seen.add(cursor)\n const doc = byFilename.get(cursor)\n cursor = doc?.parent ? resolveParent(doc.parent, docs, slugMap) : ''\n }\n return false\n}\n\n/**\n * Filenames of the nodes whose <details> should be open: every node that has\n * children and whose subtree contains `currentFilename`.\n */\nexport function navOpenPath<T extends NavDoc>(\n roots: NavNode<T>[],\n currentFilename: string\n): Set<string> {\n const open = new Set<string>()\n const containsCurrent = (node: NavNode<T>): boolean => {\n let found = node.doc.filename === currentFilename\n for (const child of node.children) {\n if (containsCurrent(child)) found = true\n }\n if (found && node.children.length > 0) open.add(node.doc.filename)\n return found\n }\n for (const root of roots) containsCurrent(root)\n return open\n}\n",
29
29
  "/**\n * marked v16.4.2 - a markdown parser\n * Copyright (c) 2018-2025, MarkedJS. (MIT License)\n * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT License)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction L(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var T=L();function G(l){T=l}var E={exec:()=>null};function d(l,e=\"\"){let t=typeof l==\"string\"?l:l.source,n={replace:(r,i)=>{let s=typeof i==\"string\"?i:i.source;return s=s.replace(m.caret,\"$1\"),t=t.replace(r,s),n},getRegex:()=>new RegExp(t,e)};return n}var be=(()=>{try{return!!new RegExp(\"(?<=1)(?<!1)\")}catch{return!1}})(),m={codeRemoveIndent:/^(?: {1,4}| {0,3}\\t)/gm,outputLinkReplace:/\\\\([\\[\\]])/g,indentCodeCompensation:/^(\\s+)(?:```)/,beginningSpace:/^\\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\\n/g,tabCharGlobal:/\\t/g,multipleSpaceGlobal:/\\s+/g,blankLine:/^[ \\t]*$/,doubleBlankLine:/\\n[ \\t]*\\n[ \\t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \\t]?/gm,listReplaceTabs:/^\\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\\[[ xX]\\] /,listReplaceTask:/^\\[[ xX]\\] +/,anyLine:/\\n.*\\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\\||\\| *$/g,tableRowBlankLine:/\\n[ \\t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\\s|>)/i,endPreScriptTag:/^<\\/(pre|code|kbd|script)(\\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,unicodeAlphaNumeric:/[\\p{L}\\p{N}]/u,escapeTest:/[&<>\"']/,escapeReplace:/[&<>\"']/g,escapeTestNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,escapeReplaceNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,unescapeTest:/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig,caret:/(^|[^\\[])\\^/g,percentDecode:/%25/g,findPipe:/\\|/g,splitPipe:/ \\|/,slashPipe:/\\\\\\|/g,carriageReturn:/\\r\\n|\\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\\S*/,endingNewline:/\\n$/,listItemRegex:l=>new RegExp(`^( {0,3}${l})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),nextBulletRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`),hrRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),fencesBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}(?:\\`\\`\\`|~~~)`),headingBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}#`),htmlBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}<(?:[a-z].*>|!--)`,\"i\")},Re=/^(?:[ \\t]*(?:\\n|$))+/,Te=/^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/,Oe=/^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,I=/^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,we=/^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,F=/(?:[*+-]|\\d{1,9}[.)])/,ie=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,oe=d(ie).replace(/bull/g,F).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g,\"\").getRegex(),ye=d(ie).replace(/bull/g,F).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/table/g,/ {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex(),j=/^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,Pe=/^[^\\n]+/,Q=/(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/,Se=d(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\",Q).replace(\"title\",/(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex(),$e=d(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g,F).getRegex(),v=\"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\",U=/<!--(?:-?>|[\\s\\S]*?(?:-->|$))/,_e=d(\"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\",\"i\").replace(\"comment\",U).replace(\"tag\",v).replace(\"attribute\",/ +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(),ae=d(j).replace(\"hr\",I).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),Le=d(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\",ae).getRegex(),K={blockquote:Le,code:Te,def:Se,fences:Oe,heading:we,hr:I,html:_e,lheading:oe,list:$e,newline:Re,paragraph:ae,table:E,text:Pe},re=d(\"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\").replace(\"hr\",I).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\",\" {0,3}>\").replace(\"code\",\"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),Me={...K,lheading:ye,table:re,paragraph:d(j).replace(\"hr\",I).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"table\",re).replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex()},ze={...K,html:d(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\",U).replace(/tag/g,\"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),def:/^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,heading:/^(#{1,6})(.*)(?:\\n+|$)/,fences:E,lheading:/^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,paragraph:d(j).replace(\"hr\",I).replace(\"heading\",` *#{1,6} *[^\n]`).replace(\"lheading\",oe).replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"|fences\",\"\").replace(\"|list\",\"\").replace(\"|html\",\"\").replace(\"|tag\",\"\").getRegex()},Ae=/^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,Ee=/^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,le=/^( {2,}|\\\\)\\n(?!\\s*$)/,Ie=/^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,D=/[\\p{P}\\p{S}]/u,W=/[\\s\\p{P}\\p{S}]/u,ue=/[^\\s\\p{P}\\p{S}]/u,Ce=d(/^((?![*_])punctSpace)/,\"u\").replace(/punctSpace/g,W).getRegex(),pe=/(?!~)[\\p{P}\\p{S}]/u,Be=/(?!~)[\\s\\p{P}\\p{S}]/u,qe=/(?:[^\\s\\p{P}\\p{S}]|~)/u,ve=d(/link|precode-code|html/,\"g\").replace(\"link\",/\\[(?:[^\\[\\]`]|(?<a>`+)[^`]+\\k<a>(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)/).replace(\"precode-\",be?\"(?<!`)()\":\"(^^|[^`])\").replace(\"code\",/(?<b>`+)[^`]+\\k<b>(?!`)/).replace(\"html\",/<(?! )[^<>]*?>/).getRegex(),ce=/^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/,De=d(ce,\"u\").replace(/punct/g,D).getRegex(),He=d(ce,\"u\").replace(/punct/g,pe).getRegex(),he=\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\",Ze=d(he,\"gu\").replace(/notPunctSpace/g,ue).replace(/punctSpace/g,W).replace(/punct/g,D).getRegex(),Ge=d(he,\"gu\").replace(/notPunctSpace/g,qe).replace(/punctSpace/g,Be).replace(/punct/g,pe).getRegex(),Ne=d(\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\"gu\").replace(/notPunctSpace/g,ue).replace(/punctSpace/g,W).replace(/punct/g,D).getRegex(),Fe=d(/\\\\(punct)/,\"gu\").replace(/punct/g,D).getRegex(),je=d(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Qe=d(U).replace(\"(?:-->|$)\",\"-->\").getRegex(),Ue=d(\"^comment|^</[a-zA-Z][\\\\w:-]*\\\\s*>|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\").replace(\"comment\",Qe).replace(\"attribute\",/\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex(),q=/(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+[^`]*?`+(?!`)|[^\\[\\]\\\\`])*?/,Ke=d(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/).replace(\"label\",q).replace(\"href\",/<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/).replace(\"title\",/\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex(),de=d(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",q).replace(\"ref\",Q).getRegex(),ke=d(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",Q).getRegex(),We=d(\"reflink|nolink(?!\\\\()\",\"g\").replace(\"reflink\",de).replace(\"nolink\",ke).getRegex(),se=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,X={_backpedal:E,anyPunctuation:Fe,autolink:je,blockSkip:ve,br:le,code:Ee,del:E,emStrongLDelim:De,emStrongRDelimAst:Ze,emStrongRDelimUnd:Ne,escape:Ae,link:Ke,nolink:ke,punctuation:Ce,reflink:de,reflinkSearch:We,tag:Ue,text:Ie,url:E},Xe={...X,link:d(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\",q).getRegex(),reflink:d(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\",q).getRegex()},N={...X,emStrongRDelimAst:Ge,emStrongLDelim:He,url:d(/^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/).replace(\"protocol\",se).replace(\"email\",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,del:/^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/,text:d(/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|protocol:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/).replace(\"protocol\",se).getRegex()},Je={...N,br:d(le).replace(\"{2,}\",\"*\").getRegex(),text:d(N.text).replace(\"\\\\b_\",\"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g,\"*\").getRegex()},C={normal:K,gfm:Me,pedantic:ze},M={normal:X,gfm:N,breaks:Je,pedantic:Xe};var Ve={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"},ge=l=>Ve[l];function w(l,e){if(e){if(m.escapeTest.test(l))return l.replace(m.escapeReplace,ge)}else if(m.escapeTestNoEncode.test(l))return l.replace(m.escapeReplaceNoEncode,ge);return l}function J(l){try{l=encodeURI(l).replace(m.percentDecode,\"%\")}catch{return null}return l}function V(l,e){let t=l.replace(m.findPipe,(i,s,a)=>{let o=!1,p=s;for(;--p>=0&&a[p]===\"\\\\\";)o=!o;return o?\"|\":\" |\"}),n=t.split(m.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length<e;)n.push(\"\");for(;r<n.length;r++)n[r]=n[r].trim().replace(m.slashPipe,\"|\");return n}function z(l,e,t){let n=l.length;if(n===0)return\"\";let r=0;for(;r<n;){let i=l.charAt(n-r-1);if(i===e&&!t)r++;else if(i!==e&&t)r++;else break}return l.slice(0,n-r)}function fe(l,e){if(l.indexOf(e[1])===-1)return-1;let t=0;for(let n=0;n<l.length;n++)if(l[n]===\"\\\\\")n++;else if(l[n]===e[0])t++;else if(l[n]===e[1]&&(t--,t<0))return n;return t>0?-2:-1}function me(l,e,t,n,r){let i=e.href,s=e.title||null,a=l[1].replace(r.other.outputLinkReplace,\"$1\");n.state.inLink=!0;let o={type:l[0].charAt(0)===\"!\"?\"image\":\"link\",raw:t,href:i,title:s,text:a,tokens:n.inlineTokens(a)};return n.state.inLink=!1,o}function Ye(l,e,t){let n=l.match(t.other.indentCodeCompensation);if(n===null)return e;let r=n[1];return e.split(`\n`).map(i=>{let s=i.match(t.other.beginningSpace);if(s===null)return i;let[a]=s;return a.length>=r.length?i.slice(r.length):i}).join(`\n`)}var y=class{options;rules;lexer;constructor(e){this.options=e||T}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:\"space\",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,\"\");return{type:\"code\",raw:t[0],codeBlockStyle:\"indented\",text:this.options.pedantic?n:z(n,`\n`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=Ye(n,t[3]||\"\",this.rules);return{type:\"code\",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,\"$1\"):t[2],text:r}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let r=z(n,\"#\");(this.options.pedantic||!r||this.rules.other.endingSpaceChar.test(r))&&(n=r.trim())}return{type:\"heading\",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:\"hr\",raw:z(t[0],`\n`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=z(t[0],`\n`).split(`\n`),r=\"\",i=\"\",s=[];for(;n.length>0;){let a=!1,o=[],p;for(p=0;p<n.length;p++)if(this.rules.other.blockquoteStart.test(n[p]))o.push(n[p]),a=!0;else if(!a)o.push(n[p]);else break;n=n.slice(p);let u=o.join(`\n`),c=u.replace(this.rules.other.blockquoteSetextReplace,`\n $1`).replace(this.rules.other.blockquoteSetextReplace2,\"\");r=r?`${r}\n${u}`:u,i=i?`${i}\n${c}`:c;let g=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,s,!0),this.lexer.state.top=g,n.length===0)break;let h=s.at(-1);if(h?.type===\"code\")break;if(h?.type===\"blockquote\"){let R=h,f=R.raw+`\n`+n.join(`\n`),O=this.blockquote(f);s[s.length-1]=O,r=r.substring(0,r.length-R.raw.length)+O.raw,i=i.substring(0,i.length-R.text.length)+O.text;break}else if(h?.type===\"list\"){let R=h,f=R.raw+`\n`+n.join(`\n`),O=this.list(f);s[s.length-1]=O,r=r.substring(0,r.length-h.raw.length)+O.raw,i=i.substring(0,i.length-R.raw.length)+O.raw,n=f.substring(s.at(-1).raw.length).split(`\n`);continue}}return{type:\"blockquote\",raw:r,tokens:s,text:i}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:\"list\",raw:\"\",ordered:r,start:r?+n.slice(0,-1):\"\",loose:!1,items:[]};n=r?`\\\\d{1,9}\\\\${n.slice(-1)}`:`\\\\${n}`,this.options.pedantic&&(n=r?n:\"[*+-]\");let s=this.rules.other.listItemRegex(n),a=!1;for(;e;){let p=!1,u=\"\",c=\"\";if(!(t=s.exec(e))||this.rules.block.hr.test(e))break;u=t[0],e=e.substring(u.length);let g=t[2].split(`\n`,1)[0].replace(this.rules.other.listReplaceTabs,H=>\" \".repeat(3*H.length)),h=e.split(`\n`,1)[0],R=!g.trim(),f=0;if(this.options.pedantic?(f=2,c=g.trimStart()):R?f=t[1].length+1:(f=t[2].search(this.rules.other.nonSpaceChar),f=f>4?1:f,c=g.slice(f),f+=t[1].length),R&&this.rules.other.blankLine.test(h)&&(u+=h+`\n`,e=e.substring(h.length+1),p=!0),!p){let H=this.rules.other.nextBulletRegex(f),ee=this.rules.other.hrRegex(f),te=this.rules.other.fencesBeginRegex(f),ne=this.rules.other.headingBeginRegex(f),xe=this.rules.other.htmlBeginRegex(f);for(;e;){let Z=e.split(`\n`,1)[0],A;if(h=Z,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting,\" \"),A=h):A=h.replace(this.rules.other.tabCharGlobal,\" \"),te.test(h)||ne.test(h)||xe.test(h)||H.test(h)||ee.test(h))break;if(A.search(this.rules.other.nonSpaceChar)>=f||!h.trim())c+=`\n`+A.slice(f);else{if(R||g.replace(this.rules.other.tabCharGlobal,\" \").search(this.rules.other.nonSpaceChar)>=4||te.test(g)||ne.test(g)||ee.test(g))break;c+=`\n`+h}!R&&!h.trim()&&(R=!0),u+=Z+`\n`,e=e.substring(Z.length+1),g=A.slice(f)}}i.loose||(a?i.loose=!0:this.rules.other.doubleBlankLine.test(u)&&(a=!0));let O=null,Y;this.options.gfm&&(O=this.rules.other.listIsTask.exec(c),O&&(Y=O[0]!==\"[ ] \",c=c.replace(this.rules.other.listReplaceTask,\"\"))),i.items.push({type:\"list_item\",raw:u,task:!!O,checked:Y,loose:!1,text:c,tokens:[]}),i.raw+=u}let o=i.items.at(-1);if(o)o.raw=o.raw.trimEnd(),o.text=o.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let p=0;p<i.items.length;p++)if(this.lexer.state.top=!1,i.items[p].tokens=this.lexer.blockTokens(i.items[p].text,[]),!i.loose){let u=i.items[p].tokens.filter(g=>g.type===\"space\"),c=u.length>0&&u.some(g=>this.rules.other.anyLine.test(g.raw));i.loose=c}if(i.loose)for(let p=0;p<i.items.length;p++)i.items[p].loose=!0;return i}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:\"html\",block:!0,raw:t[0],pre:t[1]===\"pre\"||t[1]===\"script\"||t[1]===\"style\",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,\" \"),r=t[2]?t[2].replace(this.rules.other.hrefBrackets,\"$1\").replace(this.rules.inline.anyPunctuation,\"$1\"):\"\",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,\"$1\"):t[3];return{type:\"def\",tag:n,raw:t[0],href:r,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=V(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,\"\").split(\"|\"),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,\"\").split(`\n`):[],s={type:\"table\",raw:t[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let a of r)this.rules.other.tableAlignRight.test(a)?s.align.push(\"right\"):this.rules.other.tableAlignCenter.test(a)?s.align.push(\"center\"):this.rules.other.tableAlignLeft.test(a)?s.align.push(\"left\"):s.align.push(null);for(let a=0;a<n.length;a++)s.header.push({text:n[a],tokens:this.lexer.inline(n[a]),header:!0,align:s.align[a]});for(let a of i)s.rows.push(V(a,s.header.length).map((o,p)=>({text:o,tokens:this.lexer.inline(o),header:!1,align:s.align[p]})));return s}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:\"heading\",raw:t[0],depth:t[2].charAt(0)===\"=\"?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`\n`?t[1].slice(0,-1):t[1];return{type:\"paragraph\",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:\"text\",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:\"escape\",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:\"html\",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let s=z(n.slice(0,-1),\"\\\\\");if((n.length-s.length)%2===0)return}else{let s=fe(t[2],\"()\");if(s===-2)return;if(s>-1){let o=(t[0].indexOf(\"!\")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,o).trim(),t[3]=\"\"}}let r=t[2],i=\"\";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(r);s&&(r=s[1],i=s[3])}else i=t[3]?t[3].slice(1,-1):\"\";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?r=r.slice(1):r=r.slice(1,-1)),me(t,{href:r&&r.replace(this.rules.inline.anyPunctuation,\"$1\"),title:i&&i.replace(this.rules.inline.anyPunctuation,\"$1\")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,\" \"),i=t[r.toLowerCase()];if(!i){let s=n[0].charAt(0);return{type:\"text\",raw:s,text:s}}return me(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=\"\"){let r=this.rules.inline.emStrongLDelim.exec(e);if(!r||r[3]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(r[1]||r[2]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let s=[...r[0]].length-1,a,o,p=s,u=0,c=r[0][0]===\"*\"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+s);(r=c.exec(t))!=null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a)continue;if(o=[...a].length,r[3]||r[4]){p+=o;continue}else if((r[5]||r[6])&&s%3&&!((s+o)%3)){u+=o;continue}if(p-=o,p>0)continue;o=Math.min(o,o+p+u);let g=[...r[0]][0].length,h=e.slice(0,s+r.index+g+o);if(Math.min(s,o)%2){let f=h.slice(1,-1);return{type:\"em\",raw:h,text:f,tokens:this.lexer.inlineTokens(f)}}let R=h.slice(2,-2);return{type:\"strong\",raw:h,text:R,tokens:this.lexer.inlineTokens(R)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal,\" \"),r=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&i&&(n=n.substring(1,n.length-1)),{type:\"codespan\",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:\"br\",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:\"del\",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,r;return t[2]===\"@\"?(n=t[1],r=\"mailto:\"+n):(n=t[1],r=n),{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,r;if(t[2]===\"@\")n=t[0],r=\"mailto:\"+n;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??\"\";while(i!==t[0]);n=t[0],t[1]===\"www.\"?r=\"http://\"+t[0]:r=t[0]}return{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:\"text\",raw:t[0],text:t[0],escaped:n}}}};var x=class l{tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||T,this.options.tokenizer=this.options.tokenizer||new y,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:m,block:C.normal,inline:M.normal};this.options.pedantic?(t.block=C.pedantic,t.inline=M.pedantic):this.options.gfm&&(t.block=C.gfm,this.options.breaks?t.inline=M.breaks:t.inline=M.gfm),this.tokenizer.rules=t}static get rules(){return{block:C,inline:M}}static lex(e,t){return new l(t).lex(e)}static lexInline(e,t){return new l(t).inlineTokens(e)}lex(e){e=e.replace(m.carriageReturn,`\n`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let n=this.inlineQueue[t];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){for(this.options.pedantic&&(e=e.replace(m.tabCharGlobal,\" \").replace(m.spaceLine,\"\"));e;){let r;if(this.options.extensions?.block?.some(s=>(r=s.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let s=t.at(-1);r.raw.length===1&&s!==void 0?s.raw+=`\n`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let s=1/0,a=e.slice(1),o;this.options.extensions.startBlock.forEach(p=>{o=p.call({lexer:this},a),typeof o==\"number\"&&o>=0&&(s=Math.min(s,o))}),s<1/0&&s>=0&&(i=e.substring(0,s+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let s=t.at(-1);n&&s?.type===\"paragraph\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(e){let s=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n=e,r=null;if(this.tokens.links){let o=Object.keys(this.tokens.links);if(o.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)o.includes(r[0].slice(r[0].lastIndexOf(\"[\")+1,-1))&&(n=n.slice(0,r.index)+\"[\"+\"a\".repeat(r[0].length-2)+\"]\"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,r.index)+\"++\"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)i=r[2]?r[2].length:0,n=n.slice(0,r.index+i)+\"[\"+\"a\".repeat(r[0].length-i-2)+\"]\"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let s=!1,a=\"\";for(;e;){s||(a=\"\"),s=!1;let o;if(this.options.extensions?.inline?.some(u=>(o=u.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let u=t.at(-1);o.type===\"text\"&&u?.type===\"text\"?(u.raw+=o.raw,u.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,a)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let p=e;if(this.options.extensions?.startInline){let u=1/0,c=e.slice(1),g;this.options.extensions.startInline.forEach(h=>{g=h.call({lexer:this},c),typeof g==\"number\"&&g>=0&&(u=Math.min(u,g))}),u<1/0&&u>=0&&(p=e.substring(0,u+1))}if(o=this.tokenizer.inlineText(p)){e=e.substring(o.raw.length),o.raw.slice(-1)!==\"_\"&&(a=o.raw.slice(-1)),s=!0;let u=t.at(-1);u?.type===\"text\"?(u.raw+=o.raw,u.text+=o.text):t.push(o);continue}if(e){let u=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(u);break}else throw new Error(u)}}return t}};var P=class{options;parser;constructor(e){this.options=e||T}space(e){return\"\"}code({text:e,lang:t,escaped:n}){let r=(t||\"\").match(m.notSpaceStart)?.[0],i=e.replace(m.endingNewline,\"\")+`\n`;return r?'<pre><code class=\"language-'+w(r)+'\">'+(n?i:w(i,!0))+`</code></pre>\n`:\"<pre><code>\"+(n?i:w(i,!0))+`</code></pre>\n`}blockquote({tokens:e}){return`<blockquote>\n${this.parser.parse(e)}</blockquote>\n`}html({text:e}){return e}def(e){return\"\"}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>\n`}hr(e){return`<hr>\n`}list(e){let t=e.ordered,n=e.start,r=\"\";for(let a=0;a<e.items.length;a++){let o=e.items[a];r+=this.listitem(o)}let i=t?\"ol\":\"ul\",s=t&&n!==1?' start=\"'+n+'\"':\"\";return\"<\"+i+s+`>\n`+r+\"</\"+i+`>\n`}listitem(e){let t=\"\";if(e.task){let n=this.checkbox({checked:!!e.checked});e.loose?e.tokens[0]?.type===\"paragraph\"?(e.tokens[0].text=n+\" \"+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&e.tokens[0].tokens[0].type===\"text\"&&(e.tokens[0].tokens[0].text=n+\" \"+w(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:\"text\",raw:n+\" \",text:n+\" \",escaped:!0}):t+=n+\" \"}return t+=this.parser.parse(e.tokens,!!e.loose),`<li>${t}</li>\n`}checkbox({checked:e}){return\"<input \"+(e?'checked=\"\" ':\"\")+'disabled=\"\" type=\"checkbox\">'}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>\n`}table(e){let t=\"\",n=\"\";for(let i=0;i<e.header.length;i++)n+=this.tablecell(e.header[i]);t+=this.tablerow({text:n});let r=\"\";for(let i=0;i<e.rows.length;i++){let s=e.rows[i];n=\"\";for(let a=0;a<s.length;a++)n+=this.tablecell(s[a]);r+=this.tablerow({text:n})}return r&&(r=`<tbody>${r}</tbody>`),`<table>\n<thead>\n`+t+`</thead>\n`+r+`</table>\n`}tablerow({text:e}){return`<tr>\n${e}</tr>\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?\"th\":\"td\";return(e.align?`<${n} align=\"${e.align}\">`:`<${n}>`)+t+`</${n}>\n`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${w(e,!0)}</code>`}br(e){return\"<br>\"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=J(e);if(i===null)return r;e=i;let s='<a href=\"'+e+'\"';return t&&(s+=' title=\"'+w(t)+'\"'),s+=\">\"+r+\"</a>\",s}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=J(e);if(i===null)return w(n);e=i;let s=`<img src=\"${e}\" alt=\"${n}\"`;return t&&(s+=` title=\"${w(t)}\"`),s+=\">\",s}text(e){return\"tokens\"in e&&e.tokens?this.parser.parseInline(e.tokens):\"escaped\"in e&&e.escaped?e.text:w(e.text)}};var $=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return\"\"+e}image({text:e}){return\"\"+e}br(){return\"\"}};var b=class l{options;renderer;textRenderer;constructor(e){this.options=e||T,this.options.renderer=this.options.renderer||new P,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new $}static parse(e,t){return new l(t).parse(e)}static parseInline(e,t){return new l(t).parseInline(e)}parse(e,t=!0){let n=\"\";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let a=i,o=this.options.extensions.renderers[a.type].call({parser:this},a);if(o!==!1||![\"space\",\"hr\",\"heading\",\"code\",\"table\",\"blockquote\",\"list\",\"html\",\"def\",\"paragraph\",\"text\"].includes(a.type)){n+=o||\"\";continue}}let s=i;switch(s.type){case\"space\":{n+=this.renderer.space(s);continue}case\"hr\":{n+=this.renderer.hr(s);continue}case\"heading\":{n+=this.renderer.heading(s);continue}case\"code\":{n+=this.renderer.code(s);continue}case\"table\":{n+=this.renderer.table(s);continue}case\"blockquote\":{n+=this.renderer.blockquote(s);continue}case\"list\":{n+=this.renderer.list(s);continue}case\"html\":{n+=this.renderer.html(s);continue}case\"def\":{n+=this.renderer.def(s);continue}case\"paragraph\":{n+=this.renderer.paragraph(s);continue}case\"text\":{let a=s,o=this.renderer.text(a);for(;r+1<e.length&&e[r+1].type===\"text\";)a=e[++r],o+=`\n`+this.renderer.text(a);t?n+=this.renderer.paragraph({type:\"paragraph\",raw:o,text:o,tokens:[{type:\"text\",raw:o,text:o,escaped:!0}]}):n+=o;continue}default:{let a='Token with \"'+s.type+'\" type was not found.';if(this.options.silent)return console.error(a),\"\";throw new Error(a)}}}return n}parseInline(e,t=this.renderer){let n=\"\";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let a=this.options.extensions.renderers[i.type].call({parser:this},i);if(a!==!1||![\"escape\",\"html\",\"link\",\"image\",\"strong\",\"em\",\"codespan\",\"br\",\"del\",\"text\"].includes(i.type)){n+=a||\"\";continue}}let s=i;switch(s.type){case\"escape\":{n+=t.text(s);break}case\"html\":{n+=t.html(s);break}case\"link\":{n+=t.link(s);break}case\"image\":{n+=t.image(s);break}case\"strong\":{n+=t.strong(s);break}case\"em\":{n+=t.em(s);break}case\"codespan\":{n+=t.codespan(s);break}case\"br\":{n+=t.br(s);break}case\"del\":{n+=t.del(s);break}case\"text\":{n+=t.text(s);break}default:{let a='Token with \"'+s.type+'\" type was not found.';if(this.options.silent)return console.error(a),\"\";throw new Error(a)}}}return n}};var S=class{options;block;constructor(e){this.options=e||T}static passThroughHooks=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\",\"emStrongMask\"]);static passThroughHooksRespectAsync=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(){return this.block?x.lex:x.lexInline}provideParser(){return this.block?b.parse:b.parseInline}};var B=class{defaults=L();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=b;Renderer=P;TextRenderer=$;Lexer=x;Tokenizer=y;Hooks=S;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case\"table\":{let i=r;for(let s of i.header)n=n.concat(this.walkTokens(s.tokens,t));for(let s of i.rows)for(let a of s)n=n.concat(this.walkTokens(a.tokens,t));break}case\"list\":{let i=r;n=n.concat(this.walkTokens(i.items,t));break}default:{let i=r;this.defaults.extensions?.childTokens?.[i.type]?this.defaults.extensions.childTokens[i.type].forEach(s=>{let a=i[s].flat(1/0);n=n.concat(this.walkTokens(a,t))}):i.tokens&&(n=n.concat(this.walkTokens(i.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error(\"extension name required\");if(\"renderer\"in i){let s=t.renderers[i.name];s?t.renderers[i.name]=function(...a){let o=i.renderer.apply(this,a);return o===!1&&(o=s.apply(this,a)),o}:t.renderers[i.name]=i.renderer}if(\"tokenizer\"in i){if(!i.level||i.level!==\"block\"&&i.level!==\"inline\")throw new Error(\"extension level must be 'block' or 'inline'\");let s=t[i.level];s?s.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level===\"block\"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level===\"inline\"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}\"childTokens\"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),r.extensions=t),n.renderer){let i=this.defaults.renderer||new P(this.defaults);for(let s in n.renderer){if(!(s in i))throw new Error(`renderer '${s}' does not exist`);if([\"options\",\"parser\"].includes(s))continue;let a=s,o=n.renderer[a],p=i[a];i[a]=(...u)=>{let c=o.apply(i,u);return c===!1&&(c=p.apply(i,u)),c||\"\"}}r.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new y(this.defaults);for(let s in n.tokenizer){if(!(s in i))throw new Error(`tokenizer '${s}' does not exist`);if([\"options\",\"rules\",\"lexer\"].includes(s))continue;let a=s,o=n.tokenizer[a],p=i[a];i[a]=(...u)=>{let c=o.apply(i,u);return c===!1&&(c=p.apply(i,u)),c}}r.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new S;for(let s in n.hooks){if(!(s in i))throw new Error(`hook '${s}' does not exist`);if([\"options\",\"block\"].includes(s))continue;let a=s,o=n.hooks[a],p=i[a];S.passThroughHooks.has(s)?i[a]=u=>{if(this.defaults.async&&S.passThroughHooksRespectAsync.has(s))return(async()=>{let g=await o.call(i,u);return p.call(i,g)})();let c=o.call(i,u);return p.call(i,c)}:i[a]=(...u)=>{if(this.defaults.async)return(async()=>{let g=await o.apply(i,u);return g===!1&&(g=await p.apply(i,u)),g})();let c=o.apply(i,u);return c===!1&&(c=p.apply(i,u)),c}}r.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,s=n.walkTokens;r.walkTokens=function(a){let o=[];return o.push(s.call(this,a)),i&&(o=o.concat(i.call(this,a))),o}}this.defaults={...this.defaults,...r}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return x.lex(e,t??this.defaults)}parser(e,t){return b.parse(e,t??this.defaults)}parseMarkdown(e){return(n,r)=>{let i={...r},s={...this.defaults,...i},a=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&i.async===!1)return a(new Error(\"marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.\"));if(typeof n>\"u\"||n===null)return a(new Error(\"marked(): input parameter is undefined or null\"));if(typeof n!=\"string\")return a(new Error(\"marked(): input parameter is of type \"+Object.prototype.toString.call(n)+\", string expected\"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=e),s.async)return(async()=>{let o=s.hooks?await s.hooks.preprocess(n):n,u=await(s.hooks?await s.hooks.provideLexer():e?x.lex:x.lexInline)(o,s),c=s.hooks?await s.hooks.processAllTokens(u):u;s.walkTokens&&await Promise.all(this.walkTokens(c,s.walkTokens));let h=await(s.hooks?await s.hooks.provideParser():e?b.parse:b.parseInline)(c,s);return s.hooks?await s.hooks.postprocess(h):h})().catch(a);try{s.hooks&&(n=s.hooks.preprocess(n));let p=(s.hooks?s.hooks.provideLexer():e?x.lex:x.lexInline)(n,s);s.hooks&&(p=s.hooks.processAllTokens(p)),s.walkTokens&&this.walkTokens(p,s.walkTokens);let c=(s.hooks?s.hooks.provideParser():e?b.parse:b.parseInline)(p,s);return s.hooks&&(c=s.hooks.postprocess(c)),c}catch(o){return a(o)}}}onError(e,t){return n=>{if(n.message+=`\nPlease report this to https://github.com/markedjs/marked.`,e){let r=\"<p>An error occurred:</p><pre>\"+w(n.message+\"\",!0)+\"</pre>\";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}};var _=new B;function k(l,e){return _.parse(l,e)}k.options=k.setOptions=function(l){return _.setOptions(l),k.defaults=_.defaults,G(k.defaults),k};k.getDefaults=L;k.defaults=T;k.use=function(...l){return _.use(...l),k.defaults=_.defaults,G(k.defaults),k};k.walkTokens=function(l,e){return _.walkTokens(l,e)};k.parseInline=_.parseInline;k.Parser=b;k.parser=b.parse;k.Renderer=P;k.TextRenderer=$;k.Lexer=x;k.lexer=x.lex;k.Tokenizer=y;k.Hooks=S;k.parse=k;var Zt=k.options,Gt=k.setOptions,Nt=k.use,Ft=k.walkTokens,jt=k.parseInline,Qt=k,Ut=b.parse,Kt=x.lex;export{S as Hooks,x as Lexer,B as Marked,b as Parser,P as Renderer,$ as TextRenderer,y as Tokenizer,T as defaults,L as getDefaults,Kt as lexer,k as marked,Zt as options,Qt as parse,jt as parseInline,Ut as parser,Gt as setOptions,Nt as use,Ft as walkTokens};\n//# sourceMappingURL=marked.esm.js.map\n",
30
- "/*\nShared markdown rendering for the static doc system.\n\n`renderDocMarkdown` MUST stay in lockstep with how <tosi-md> renders doc text\n(see src/markdown-viewer.ts: `marked(source, this.options)` with default options),\nso the build-time pre-render is byte-identical to what the component would produce\non the client. Fenced code blocks are left as <pre><code class=\"language-*\"> so the\nstatic page shows readable, indexable code AND the component can later upgrade\nconsecutive blocks into <live-example> widgets via insertExamples().\n*/\n\nimport { marked, MarkedOptions } from 'marked'\n\nexport const docMarkedOptions: MarkedOptions = {}\n\n/** Render a doc's markdown text to HTML (synchronous, default marked options). */\nexport function renderDocMarkdown(text: string): string {\n return marked(text, docMarkedOptions) as string\n}\n\n/**\n * Derive a clean <meta name=\"description\"> from a doc's first prose paragraph.\n * Skips the title heading, code fences, tables, quotes, html and image/link-only\n * lines; strips inline markdown; drops low-value \"This is a…\" leads; and truncates\n * on a sentence boundary where possible (never mid-clause ending in a comma).\n * Pages can override this entirely via their JSON metadata `description`.\n */\nexport function docDescription(text: string, maxLength = 160): string {\n const lines = text.split('\\n')\n let inFence = false\n const prose: string[] = []\n for (const raw of lines) {\n const line = raw.trim()\n if (line.startsWith('```') || line.startsWith('~~~')) {\n inFence = !inFence\n continue\n }\n if (inFence) continue\n if (line === '') {\n if (prose.length) break // end of the first prose paragraph\n continue\n }\n if (line.startsWith('#')) continue // headings\n if (line.startsWith('<!--') || line.startsWith('/*')) continue // metadata\n if (line.startsWith('<')) continue // raw html\n if (line.startsWith('|') || line.startsWith('>')) continue // tables, quotes\n if (line.startsWith('![') || /^\\[.*\\]\\(.*\\)$/.test(line)) continue // image/link-only\n prose.push(line)\n if (prose.join(' ').length >= maxLength) break\n }\n\n let s = prose\n .join(' ')\n .replace(/`([^`]+)`/g, '$1')\n .replace(/\\*\\*([^*]+)\\*\\*/g, '$1')\n .replace(/\\*([^*]+)\\*/g, '$1')\n .replace(/\\[([^\\]]+)\\]\\([^)]*\\)/g, '$1')\n .replace(/^This (?:is|component is|widget is)\\s+(?:a|an|the)\\s+/i, '')\n .trim()\n if (!s) return ''\n s = s.charAt(0).toUpperCase() + s.slice(1)\n if (s.length <= maxLength) return s.replace(/[,;:\\s]+$/, '')\n\n const slice = s.slice(0, maxLength)\n const sentenceEnd = Math.max(\n slice.lastIndexOf('. '),\n slice.lastIndexOf('! '),\n slice.lastIndexOf('? ')\n )\n if (sentenceEnd > maxLength * 0.6) return slice.slice(0, sentenceEnd + 1).trim()\n const wordEnd = slice.lastIndexOf(' ')\n return slice.slice(0, wordEnd).replace(/[,;:.\\s]+$/, '').trim() + '…'\n}\n",
30
+ "/*\nShared markdown rendering for the static doc system.\n\nBoth the build-time pre-render and the client (doc-browser) call THIS function, so\nthe static page hydrates byte-identically. Fenced code blocks are left as\n<pre><code class=\"language-*\"> so the static page shows readable, indexable code\nAND the component can later upgrade consecutive blocks into <live-example> widgets\nvia insertExamples(). A fence info string may carry a `#id` (```js#my-example) to\ngive that example a stable anchor — see the docMarked renderer below.\n*/\n\nimport { Marked, Renderer } from 'marked'\n\nconst baseRenderer = new Renderer()\n\n// A doc-scoped marked instance. Its ONLY customization: a fenced code block whose\n// info string carries a `#id` suffix — e.g. ```js#my-example — renders the lang\n// clean (`language-js`, so all existing grouping/highlighting is unaffected) but\n// stamps `data-example-id=\"my-example\"` on the <pre>. insertExamples (client) and\n// the book builders both read that to give the live example a stable anchor for\n// deep-linking. A block with no `#id` is byte-identical to default marked output.\nconst docMarked = new Marked()\ndocMarked.use({\n renderer: {\n code(token: any) {\n const info = String(token.lang || '')\n const hash = info.indexOf('#')\n if (hash === -1) return false // default rendering\n const id = info.slice(hash + 1).match(/^[A-Za-z0-9_-]+/)?.[0]\n if (!id) return false\n const html = baseRenderer.code({ ...token, lang: info.slice(0, hash) })\n return html.replace(/^<pre>/, `<pre data-example-id=\"${id}\">`)\n },\n },\n})\n\n/** Render a doc's markdown text to HTML (synchronous, default marked options). */\nexport function renderDocMarkdown(text: string): string {\n return docMarked.parse(text) as string\n}\n\n/**\n * Derive a clean <meta name=\"description\"> from a doc's first prose paragraph.\n * Skips the title heading, code fences, tables, quotes, html and image/link-only\n * lines; strips inline markdown; drops low-value \"This is a…\" leads; and truncates\n * on a sentence boundary where possible (never mid-clause ending in a comma).\n * Pages can override this entirely via their JSON metadata `description`.\n */\nexport function docDescription(text: string, maxLength = 160): string {\n const lines = text.split('\\n')\n let inFence = false\n const prose: string[] = []\n for (const raw of lines) {\n const line = raw.trim()\n if (line.startsWith('```') || line.startsWith('~~~')) {\n inFence = !inFence\n continue\n }\n if (inFence) continue\n if (line === '') {\n if (prose.length) break // end of the first prose paragraph\n continue\n }\n if (line.startsWith('#')) continue // headings\n if (line.startsWith('<!--') || line.startsWith('/*')) continue // metadata\n if (line.startsWith('<')) continue // raw html\n if (line.startsWith('|') || line.startsWith('>')) continue // tables, quotes\n if (line.startsWith('![') || /^\\[.*\\]\\(.*\\)$/.test(line)) continue // image/link-only\n prose.push(line)\n if (prose.join(' ').length >= maxLength) break\n }\n\n let s = prose\n .join(' ')\n .replace(/`([^`]+)`/g, '$1')\n .replace(/\\*\\*([^*]+)\\*\\*/g, '$1')\n .replace(/\\*([^*]+)\\*/g, '$1')\n .replace(/\\[([^\\]]+)\\]\\([^)]*\\)/g, '$1')\n .replace(/^This (?:is|component is|widget is)\\s+(?:a|an|the)\\s+/i, '')\n .trim()\n if (!s) return ''\n s = s.charAt(0).toUpperCase() + s.slice(1)\n if (s.length <= maxLength) return s.replace(/[,;:\\s]+$/, '')\n\n const slice = s.slice(0, maxLength)\n const sentenceEnd = Math.max(\n slice.lastIndexOf('. '),\n slice.lastIndexOf('! '),\n slice.lastIndexOf('? ')\n )\n if (sentenceEnd > maxLength * 0.6) return slice.slice(0, sentenceEnd + 1).trim()\n const wordEnd = slice.lastIndexOf(' ')\n return slice.slice(0, wordEnd).replace(/[,;:.\\s]+$/, '').trim() + '…'\n}\n",
31
31
  "/*#\n# tabs\n\n`<tosi-tabs>` creates a `tabpanel` for its children, creating a `tab` for each based on its\n`name` attribute.\n\n```js\n[...preview.querySelectorAll('div[name]')].forEach(div => {\n div.style.color = `hsl(${(Math.random() * 360).toFixed(0)} 50% 50%)`\n})\n\nimport { div, button } from 'tosijs'.elements\nconst tabSelector = preview.querySelector('tosi-tabs')\n\ntabSelector.onCloseTab = body => {\n if (!confirm(`Are you sure you want to close the ${body.getAttribute('name')} tab?`)) {\n return false\n }\n}\n\nlet bodycount = 0\npreview.querySelector('.add').addEventListener('click', () => {\n const name = `new tab ${++bodycount}`\n const body = div(\n {name, dataClose: true},\n name,\n )\n tabSelector.addTabBody(body, true)\n})\n```\n```html\n<tosi-tabs>\n <div name=\"first\">first body</div>\n <div name=\"second\" data-close>\n <template role=\"tab\">\n <tosi-icon\n style=\"\n display: inline-block;\n width: 16px;\n height: 16px;\n transform: translateY(2px);\n margin-right: 4px;\n stroke: var(--brand-color);\n \"\n icon=\"eye\"\n ></tosi-icon>\n <span>Ooooh!!!</span>\n </template>\n look at the html…\n </div>\n <div name=\"third\">third body</div>\n <button class=\"add\" slot=\"after-tabs\">\n <tosi-icon icon=\"plus\"></tosi-icon>\n </button>\n</tosi-tabs>\n```\n```css\n .preview tosi-tabs {\n height: 100%;\n }\n\n .preview div[name] {\n padding: 20px;\n text-align: center;\n height: 100%;\n font-size: 200%;\n }\n\n .preview .add {\n width: 38px;\n line-height: 38px;\n height: 38px;\n padding: 0;\n }\n```\n\nThe `<tosi-tabs>`s `value` is the index of its active body.\n\nA `<tosi-tabs>` has `addTabBody(body: HTMLElement, select?: boolean)` and\n`removeTabBody(body: number | HTMLElement)` methods for updating its content.\n\nYou can also just insert or remove tab bodies directly and call `setupTabs()`.\n\n## Closeable Tabs\n\nAdding the `data-close` attribute to a tab will make it closeable.\n\nWhen a tab is closed, the `<tosi-tabs>` element's `onCloseTab: (tabBody: Element) => boolean | undefined | void`\nwill be called. If you override this method and return `false`, the tab will\nnot be closed (e.g. if you want to implement save/cancel behavior).\n\n## Custom Tab Content\n\nYou can specify the exact content of the tab for a given body by\nadding a `<template role=\"tab\">` to that body. The contents of that\ntemplate will be cloned into the tab.\n\n## Localized Support\n\n```html\n<tosi-tabs localized>\n <div name=\"localize\"><h2>localize!</h2></div>\n <div name=\"tabs\"><h2>tabs</h2></div>\n</tosi-tabs>\n```\n\n`<tosi-tabs>` supports the `localized` attribute. It will automatically localize\ntab names (but it won't override custom tab content, so localizing that is on you).\n\n## Tab Tooltips\n\nAdd `data-tooltip` to a tab body and it will be shown on its tab button\n(requires `initTooltips()`).\n\n```js\nimport { initTooltips } from 'tosijs-ui'\n\ninitTooltips()\n```\n```html\n<tosi-tabs>\n <div name=\"Overview\" data-tooltip=\"Project summary and status\">Overview content</div>\n <div name=\"Details\" data-tooltip=\"Configuration and **advanced** settings\">Details content</div>\n <div name=\"Log\" data-tooltip=\"Recent activity and events\">Log content</div>\n</tosi-tabs>\n```\n```css\n.preview tosi-tabs {\n height: 100%;\n}\n.preview div[name] {\n padding: 20px;\n text-align: center;\n}\n```\n*/\n\n/*{ \"parent\": \"Components\" }*/\n\nimport {\n Component as WebComponent,\n ElementCreator,\n elements,\n vars,\n PartsMap,\n} from 'tosijs'\n\nimport { tosiLocalized, TosiLocalized } from './localize'\n\nimport { icons } from './icons'\n\nconst { div, slot, span, button } = elements\n\ntype TabCloseHandler = (tabBody: Element) => boolean | undefined | void\n\ninterface TabsParts extends PartsMap {\n tabs: HTMLElement\n selected: HTMLElement\n}\n\nexport class TosiTabs extends WebComponent {\n static preferredTagName = 'tosi-tabs'\n\n static initAttributes = {\n localized: false,\n }\n\n value = 0\n\n makeTab(tabs: TosiTabs, tabBody: HTMLElement, bodyId: string): HTMLElement {\n const tabName = tabBody.getAttribute('name') as string\n const tabContent =\n (\n tabBody.querySelector('template[role=\"tab\"]') as HTMLTemplateElement\n )?.content.cloneNode(true) ||\n (this.localized ? tosiLocalized(tabName) : span(tabName))\n const tab = div(\n tabContent,\n {\n part: 'tab',\n tabindex: 0,\n role: 'tab',\n ariaControls: bodyId,\n },\n tabBody.hasAttribute('data-close')\n ? button(\n {\n title: 'close',\n class: 'close',\n },\n icons.x()\n )\n : {}\n )\n const tooltip = tabBody.dataset.tooltip\n if (tooltip) {\n tab.dataset.tooltip = tooltip\n }\n return tab\n }\n\n static shadowStyleSpec = {\n ':host': {\n // New --tosi-tabs-* variables with legacy fallbacks\n '--tosi-tabs-selected-color':\n 'var(--xin-tabs-selected-color, var(--tosi-accent, currentColor))',\n '--tosi-tabs-bar-color': 'var(--xin-tabs-bar-color, #ccc)',\n '--tosi-tabs-bar-height': 'var(--xin-tabs-bar-height, 2px)',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n overflow: 'hidden',\n boxShadow: 'none !important',\n },\n slot: {\n position: 'relative',\n display: 'block',\n flex: '1',\n overflow: 'hidden',\n overflowY: 'auto',\n },\n 'slot[name=\"after-tabs\"]': {\n flex: '0 0 auto',\n },\n '::slotted([hidden])': {\n display: 'none !important',\n },\n ':host::part(tabpanel)': {\n display: 'flex',\n flexDirection: 'column',\n overflowX: 'auto',\n },\n ':host::part(tabrow)': {\n display: 'flex',\n },\n ':host .tabs': {\n display: 'flex',\n userSelect: 'none',\n whiteSpace: 'nowrap',\n },\n ':host .tabs > div': {\n padding: `${vars.spacing50} ${vars.spacing}`,\n cursor: 'default',\n display: 'flex',\n alignItems: 'baseline',\n },\n ':host .tabs > [aria-selected]': {\n '--text-color': vars.tosiTabsSelectedColor,\n color: vars.textColor,\n },\n ':host .elastic': {\n flex: '1',\n },\n ':host .border': {\n background: vars.tosiTabsBarColor,\n },\n ':host .border > .selected': {\n content: ' ',\n width: 0,\n height: vars.tosiTabsBarHeight,\n background: vars.tosiTabsSelectedColor,\n transition: 'ease-out 0.2s',\n },\n ':host button.close': {\n border: 0,\n background: 'transparent',\n textAlign: 'center',\n marginLeft: vars.spacing50,\n padding: 0,\n },\n ':host button.close > svg': {\n height: '12px',\n },\n }\n\n onCloseTab: TabCloseHandler | null = null\n\n content = [\n div(\n { role: 'tabpanel', part: 'tabpanel' },\n div(\n { part: 'tabrow' },\n div({ class: 'tabs', part: 'tabs' }),\n div({ class: 'elastic' }),\n slot({ name: 'after-tabs' })\n ),\n div({ class: 'border' }, div({ class: 'selected', part: 'selected' }))\n ),\n slot(),\n ]\n\n addTabBody(body: HTMLElement, selectTab = false): void {\n if (!body.hasAttribute('name')) {\n console.error('element has no name attribute', body)\n throw new Error('element has no name attribute')\n }\n this.append(body)\n this.setupTabs()\n if (selectTab) {\n this.value = this.bodies.length - 1\n }\n this.queueRender()\n }\n\n removeTabBody(body: HTMLElement): void {\n body.remove()\n this.setupTabs()\n this.queueRender()\n }\n\n keyTab = (event: Event): void => {\n const { tabs } = this.parts\n const tabIndex = [...tabs.children].indexOf(event.target as HTMLElement)\n switch ((event as KeyboardEvent).key) {\n case 'ArrowLeft':\n this.value =\n (tabIndex + Number(tabs.children.length) - 1) % tabs.children.length\n ;(tabs.children[this.value] as HTMLElement).focus()\n event.preventDefault()\n break\n case 'ArrowRight':\n this.value = (tabIndex + 1) % tabs.children.length\n ;(tabs.children[this.value] as HTMLElement).focus()\n event.preventDefault()\n break\n case ' ':\n this.pickTab(event)\n event.preventDefault()\n break\n default:\n // console.log(event.key)\n }\n }\n\n get bodies(): Element[] {\n return [...this.children].filter((elt) => elt.hasAttribute('name'))\n }\n\n pickTab = (event: Event): void => {\n const { tabs } = this.parts\n const target = event.target as HTMLElement\n const isCloseEvent = target.closest('button.close') !== null\n const tab = target.closest('.tabs > div') as HTMLElement\n const tabIndex = [...tabs.children].indexOf(tab)\n if (isCloseEvent) {\n const body = this.bodies[tabIndex]\n if (!this.onCloseTab || this.onCloseTab(body) !== false) {\n this.removeTabBody(this.bodies[tabIndex] as HTMLElement)\n }\n } else {\n if (tabIndex > -1) {\n this.value = tabIndex\n }\n }\n }\n\n setupTabs = (): void => {\n const { tabs } = this.parts\n const tabBodies = [...this.children].filter(\n (child) => !child.hasAttribute('slot') && child.hasAttribute('name')\n )\n tabs.textContent = ''\n if (this.value >= tabBodies.length) {\n this.value = tabBodies.length - 1\n }\n for (const index in tabBodies) {\n const tabBody = tabBodies[index] as HTMLElement\n const bodyId = `${this.instanceId}-${index}`\n tabBody.id = bodyId\n const tab = this.makeTab(this, tabBody, bodyId)\n tabs.append(tab)\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n const { tabs } = this.parts\n tabs.addEventListener('click', this.pickTab)\n tabs.addEventListener('keydown', this.keyTab)\n this.setupTabs()\n TosiLocalized.allInstances.add(this)\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n TosiLocalized.allInstances.delete(this)\n }\n\n localeChanged = () => {\n this.queueRender()\n }\n\n onResize(): void {\n this.queueRender()\n }\n\n render(): void {\n const { tabs, selected } = this.parts as TabsParts\n const tabBodies = this.bodies\n for (let i = 0; i < tabBodies.length; i++) {\n const tabBody = tabBodies[i]\n const tab = tabs.children[i] as HTMLElement\n const isSelected = this.value === Number(i)\n tab.toggleAttribute('aria-selected', isSelected)\n tabBody.toggleAttribute('hidden', !isSelected)\n if (isSelected) {\n selected.style!.marginLeft = `${tab.offsetLeft - tabs.offsetLeft}px`\n selected.style!.width = `${tab.offsetWidth}px`\n }\n }\n }\n}\n\n/** @deprecated Use TosiTabs instead */\nexport type TabSelector = TosiTabs\n/** @deprecated Use TosiTabs instead */\nexport const TabSelector: typeof TosiTabs = TosiTabs\n\nexport const tosiTabs = TosiTabs.elementCreator() as ElementCreator<TosiTabs>\n\n/** @deprecated Use tosiTabs instead */\nexport const tabSelector = tosiTabs\n\n/** @deprecated Use tosiTabs instead */\nexport const xinTabs = tosiTabs\n",
32
32
  "import { Dialect, ExampleContext, TransformFn } from './types'\n\nexport const AsyncFunction = (async () => {\n /* placeholder */\n}).constructor\n\n/**\n * Sanitize a context module key into a JS identifier used as the binding name\n * in rewritten imports and as the AsyncFunction parameter. Must be applied\n * consistently on both sides. e.g. 'tosijs-ui' -> 'tosijsui',\n * '@babylonjs/core' -> 'babylonjscore'.\n */\nexport function contextVarName(key: string): string {\n return key.replace(/[^a-zA-Z0-9_$]/g, '')\n}\n\n/**\n * Rewrite import statements (from the example context) to const bindings:\n * import { x } from 'tosijs' -> const { x } = tosijs\n * import * as B from '@babylonjs' -> const B = babylonjs (context key)\n * import Foo from 'my-lib' -> const Foo = mylib\n * The `.elements` accessor form (`import { x } from 'tosijs'.elements`) is\n * preserved. Any static import that isn't from a context module (or uses an\n * unsupported form) throws a clear error rather than becoming a SyntaxError in\n * the AsyncFunction body.\n */\nexport function rewriteImports(code: string, contextKeys: string[]): string {\n let result = code\n for (const moduleName of contextKeys) {\n const js = contextVarName(moduleName)\n const m = moduleName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n // import { a, b } from 'mod'\n result = result.replace(\n new RegExp(`import\\\\s*\\\\{([^}]*)\\\\}\\\\s*from\\\\s*'${m}'`, 'g'),\n (_, names: string) => `const { ${names.replace(/\\s+/g, ' ').trim()} } = ${js}`\n )\n // import * as X from 'mod'\n result = result.replace(\n new RegExp(`import\\\\s*\\\\*\\\\s*as\\\\s+(\\\\w+)\\\\s+from\\\\s*'${m}'`, 'g'),\n (_, name: string) => `const ${name} = ${js}`\n )\n // import X from 'mod' (default)\n result = result.replace(\n new RegExp(`import\\\\s+(\\\\w+)\\\\s+from\\\\s*'${m}'`, 'g'),\n (_, name: string) => `const ${name} = ${js}`\n )\n }\n // Anything still a static import is unsupported — fail loudly with the line.\n const leftover = result.match(/^\\s*import\\s+['\"{*\\w][^\\n]*/m)\n if (leftover) {\n throw new Error(\n `live example: unsupported import \\`${leftover[0].trim()}\\` — only imports ` +\n `from the example context (${contextKeys.join(', ')}) are supported, in ` +\n `{ named }, * as ns, or default form.`\n )\n }\n return result\n}\n\n/**\n * Execute code as an async function with injected context\n */\nexport async function executeCode(\n code: string,\n context: ExampleContext,\n transform: TransformFn\n): Promise<void> {\n const rewrittenCode = rewriteImports(code, Object.keys(context))\n const transformedCode = transform(rewrittenCode, {\n transforms: ['typescript'],\n }).code\n\n const contextKeys = Object.keys(context).map(contextVarName)\n const contextValues = Object.values(context)\n\n // @ts-expect-error AsyncFunction constructor typing\n const func = new AsyncFunction(...contextKeys, transformedCode)\n await func(...contextValues)\n}\n\n/** The tjs() entry from tjs-lang/lang — the only part we need at the JS seam. */\ntype TjsFn = (\n source: string,\n options?: { dialect?: 'js' | 'tjs'; runTests?: boolean | 'only' | 'report' }\n) => { code: string }\n\n/** The fromTS() entry from tjs-lang/lang/from-ts — lowers TypeScript to tjs. */\ntype FromTsFn = (\n source: string,\n options?: { emitTJS?: boolean }\n) => { code: string }\n\n// tjs-lang/lang is the TS-compiler-free entry (the TypeScript path lives behind\n// tjs-lang/lang/from-ts and is only loaded for `ts` examples). The `+esm` form is\n// required: the prebuilt bundle imports `acorn`/`tosijs-schema`, which jsdelivr's\n// esm build resolves (a raw file load would fail on those bare imports). Pinned to\n// match the dev dep.\nconst TJS_CDN = 'https://cdn.jsdelivr.net/npm/tjs-lang@0.8.2/lang/+esm'\nconst FROM_TS_CDN =\n 'https://cdn.jsdelivr.net/npm/tjs-lang@0.8.2/lang/from-ts/+esm'\n\nasync function loadTjs(): Promise<TjsFn | null> {\n // Installed peer (ESM consumers / dev build)\n try {\n const { tjs } = (await import('tjs-lang/lang')) as { tjs: TjsFn }\n if (typeof tjs === 'function') return tjs\n } catch {\n // not installed — try CDN\n }\n // CDN (IIFE consumers, or when tjs-lang isn't installed)\n try {\n const { tjs } = (await import(/* webpackIgnore: true */ TJS_CDN)) as {\n tjs: TjsFn\n }\n if (typeof tjs === 'function') return tjs\n } catch {\n // unavailable — fall through to degraded mode\n }\n return null\n}\n\n/**\n * tjs inline-test API (from tjs-lang/lang):\n * extractTests(src) → { code (test-stripped), tests, testRunner }\n * testUtils — a string defining `expect`/`assert` etc. for the runner\n * Run with: `new AsyncFunction(...ctx, execJs + testUtils + 'return ' + testRunner)`\n * which resolves to `{ passed, failed, results }`.\n */\nexport interface TjsTestApi {\n extractTests: (source: string) => {\n code: string\n tests: { description: string }[]\n testRunner: string\n }\n testUtils: string\n}\n\nexport interface TjsTestResult {\n passed: number\n failed: number\n results: { description: string; passed: boolean; error?: string }[]\n}\n\nlet testApiOnce: Promise<TjsTestApi | null> | undefined\n\nasync function loadTjsTestApiImpl(): Promise<TjsTestApi | null> {\n for (const mod of [\n () => import('tjs-lang/lang'),\n () => import(/* webpackIgnore: true */ TJS_CDN),\n ]) {\n try {\n const m = (await mod()) as Partial<TjsTestApi>\n if (typeof m.extractTests === 'function' && typeof m.testUtils === 'string') {\n return { extractTests: m.extractTests, testUtils: m.testUtils }\n }\n } catch {\n // try next source\n }\n }\n return null\n}\n\n/** Load the tjs inline-test API (memoized). null if tjs-lang is unavailable. */\nexport function loadTjsTestApi(): Promise<TjsTestApi | null> {\n return (testApiOnce ??= loadTjsTestApiImpl())\n}\n\n// from-ts pulls in the TypeScript compiler, so it's loaded lazily and only when a\n// `ts` example is actually transformed — never for `js`/`tjs` pages.\nasync function loadFromTs(): Promise<FromTsFn | null> {\n try {\n const { fromTS } = (await import('tjs-lang/lang/from-ts')) as {\n fromTS: FromTsFn\n }\n if (typeof fromTS === 'function') return fromTS\n } catch {\n // not installed — try CDN\n }\n try {\n const { fromTS } = (await import(\n /* webpackIgnore: true */ FROM_TS_CDN\n )) as { fromTS: FromTsFn }\n if (typeof fromTS === 'function') return fromTS\n } catch {\n // unavailable — fall through to degraded mode\n }\n return null\n}\n\n// Load tjs once per page, not once per example. refresh() runs on every render\n// (and renders fire repeatedly while tests run), so a per-call import + parse\n// would re-pay tjs's cost each time and make every preview swap visibly lag —\n// the engine load is memoized and transform output is cached by dialect+source.\nlet tjsOnce: Promise<TjsFn | null> | undefined\nlet fromTsOnce: Promise<FromTsFn | null> | undefined\nconst resultCache = new Map<string, { code: string }>()\nlet warnedNoTjs = false\nlet warnedNoFromTs = false\n\n/**\n * Load a live-example transform for a given source dialect.\n *\n * tjs-lang is the engine:\n * - `js` → `tjs(code, { dialect: 'js' })`, which leaves vanilla JavaScript\n * untouched (no footgun rewriting) — behavior-neutral for plain JS.\n * - `tjs` → `tjs(code, { dialect: 'tjs' })`, the full tjs lowering (structural\n * `==`, type guards, runtime instrumentation).\n * - `ts` → `fromTS(code)` → tjs source → `tjs(…, { dialect: 'tjs' })`. The\n * TypeScript compiler is loaded lazily, only here.\n *\n * The dialect is baked into the returned closure, so callers just pass code.\n *\n * Degraded mode: if tjs-lang can't be loaded, plain JS still runs unchanged\n * (`dialect: 'js'` is a no-op on it), so we pass the code through. A `ts` page\n * with no from-ts available likewise falls back to running the source as JS.\n */\nexport async function loadTransform(\n dialect: Dialect = 'js'\n): Promise<TransformFn> {\n const tjs = await (tjsOnce ??= loadTjs())\n if (!tjs && !warnedNoTjs) {\n warnedNoTjs = true\n console.warn(\n 'tjs-lang not available — live examples run as raw JavaScript ' +\n '(tjs/TypeScript examples will not transpile). Install with: npm install tjs-lang'\n )\n }\n const fromTS = dialect === 'ts' ? await (fromTsOnce ??= loadFromTs()) : null\n if (dialect === 'ts' && !fromTS && !warnedNoFromTs) {\n warnedNoFromTs = true\n console.warn(\n 'tjs-lang/lang/from-ts not available — `ts` examples run as raw JavaScript.'\n )\n }\n return (code) => {\n const cacheKey = `${dialect}\u0000${code}`\n const cached = resultCache.get(cacheKey)\n if (cached) return cached\n // runTests:false — examples must not run tjs inline tests at transpile time\n // (the default throws on failure, which would break the example render).\n let result: { code: string }\n if (!tjs) {\n result = { code }\n } else if (dialect === 'ts') {\n const tjsSource = fromTS ? fromTS(code, { emitTJS: true }).code : code\n result = { code: tjs(tjsSource, { dialect: 'tjs', runTests: false }).code }\n } else {\n result = { code: tjs(code, { dialect, runTests: false }).code }\n }\n resultCache.set(cacheKey, result)\n return result\n }\n}\n",
33
33
  "import { RemotePayload } from './types'\n\nexport const STORAGE_KEY = 'live-example-payload'\n\nexport function createRemoteKey(\n prefix: string,\n uuid: string,\n remoteId: string\n): string {\n return remoteId !== '' ? `${prefix}-${remoteId}` : `${prefix}-${uuid}`\n}\n\nexport function sendPayload(storageKey: string, payload: RemotePayload): void {\n try {\n localStorage.setItem(storageKey, JSON.stringify(payload))\n } catch (e) {\n console.warn('live-example: failed to write to localStorage', e)\n }\n}\n\nexport function parsePayload(data: string | null): RemotePayload | null {\n if (data === null) return null\n try {\n return JSON.parse(data)\n } catch {\n return null\n }\n}\n\nexport function openEditorWindow(\n prefix: string,\n uuid: string,\n storageKey: string,\n remoteKey: string,\n code: { css: string; html: string; js: string; test?: string }\n): void {\n const href = location.href.split('?')[0] + `?${prefix}=${uuid}`\n sendPayload(storageKey, {\n remoteKey,\n sentAt: Date.now(),\n ...code,\n })\n window.open(href)\n}\n\nexport function sendCloseSignal(storageKey: string, remoteKey: string): void {\n sendPayload(storageKey, {\n remoteKey,\n sentAt: Date.now(),\n css: '',\n html: '',\n js: '',\n close: true,\n })\n}\n\nconst hasBroadcastChannel = typeof BroadcastChannel !== 'undefined'\n\n/**\n * Manager for remote window synchronization.\n *\n * Primary transport: BroadcastChannel (reliable, instant, works when\n * tabs close). Falls back to localStorage polling for environments\n * that lack BroadcastChannel (e.g. older Quest 3 browser builds).\n *\n * localStorage is still used for the initial payload (persisted so the\n * new window can read it on first render).\n */\nexport class RemoteSyncManager {\n private storageKey: string\n private remoteKey: string\n private lastUpdate = 0\n private interval?: ReturnType<typeof setInterval>\n private channel?: BroadcastChannel\n private listening = false\n private onReceive: (payload: RemotePayload) => void\n\n constructor(\n storageKey: string,\n remoteKey: string,\n onReceive: (payload: RemotePayload) => void\n ) {\n this.storageKey = storageKey\n this.remoteKey = remoteKey\n this.onReceive = onReceive\n }\n\n private handlePayload = (payload: RemotePayload) => {\n if (payload.sentAt <= this.lastUpdate) return\n if (payload.remoteKey !== this.remoteKey) return\n\n this.lastUpdate = payload.sentAt\n this.onReceive(payload)\n }\n\n /** Handle incoming BroadcastChannel messages */\n private handleMessage = (event: MessageEvent) => {\n const payload = event.data as RemotePayload\n if (payload) this.handlePayload(payload)\n }\n\n /** Polling fallback — reads from localStorage */\n private handlePoll = () => {\n let data: string | null\n try {\n data = localStorage.getItem(this.storageKey)\n } catch {\n return\n }\n\n const payload = parsePayload(data)\n if (payload) this.handlePayload(payload)\n }\n\n startListening(): void {\n if (this.listening) return\n this.listening = true\n\n if (hasBroadcastChannel) {\n this.channel = new BroadcastChannel(this.storageKey)\n this.channel.onmessage = this.handleMessage\n }\n\n // Polling fallback — covers environments without BroadcastChannel\n // and catches the initial localStorage payload written before the\n // remote window's BroadcastChannel is ready.\n this.interval = setInterval(this.handlePoll, 500)\n }\n\n stopListening(): void {\n if (!this.listening) return\n this.listening = false\n\n if (this.channel) {\n this.channel.close()\n this.channel = undefined\n }\n\n if (this.interval) {\n clearInterval(this.interval)\n this.interval = undefined\n }\n }\n\n send(code: { css: string; html: string; js: string; test?: string }): void {\n const payload: RemotePayload = {\n remoteKey: this.remoteKey,\n sentAt: Date.now(),\n ...code,\n }\n\n // Write to localStorage (persistence for initial load + fallback)\n sendPayload(this.storageKey, payload)\n\n // Broadcast for instant delivery\n if (this.channel) {\n this.channel.postMessage(payload)\n }\n }\n\n sendClose(): void {\n const payload: RemotePayload = {\n remoteKey: this.remoteKey,\n sentAt: Date.now(),\n css: '',\n html: '',\n js: '',\n close: true,\n }\n\n sendPayload(this.storageKey, payload)\n\n if (this.channel) {\n this.channel.postMessage(payload)\n }\n }\n}\n",
34
34
  "import { elements } from 'tosijs'\nimport { ExampleContext, TransformFn } from './types'\nimport { rewriteImports, AsyncFunction, contextVarName } from './code-transform'\n\nconst { div } = elements\n\n/**\n * Register web components in an iframe's customElements registry.\n *\n * Uses two strategies:\n * 1. Scans context exports for creator functions with a `tagName` property\n * 2. Scans the iframe HTML for any custom-element tags (contain a hyphen)\n * and registers them from the main window's customElements registry\n */\nexport function registerComponentsInIframe(\n iframeWindow: Window,\n context: ExampleContext\n): void {\n const iframeCustomElements = iframeWindow.customElements\n if (!iframeCustomElements) return\n\n const register = (tagName: string) => {\n if (!tagName || iframeCustomElements.get(tagName)) return\n const ComponentClass = customElements.get(tagName)\n if (ComponentClass) {\n try {\n iframeCustomElements.define(tagName, ComponentClass)\n } catch {\n // May fail if already defined — ignore\n }\n }\n }\n\n // Strategy 1: context exports with tagName (e.g. element creators)\n for (const lib of Object.values(context)) {\n if (lib && typeof lib === 'object') {\n for (const creator of Object.values(lib as Record<string, unknown>)) {\n if (typeof creator === 'function' && 'tagName' in creator) {\n register((creator as { tagName: string }).tagName)\n }\n }\n }\n }\n\n // Strategy 2: scan iframe DOM for unregistered custom-element tags\n const iframeDoc = iframeWindow.document\n if (iframeDoc) {\n const allElements = iframeDoc.querySelectorAll('*')\n for (const el of allElements) {\n const tag = el.tagName.toLowerCase()\n if (tag.includes('-')) {\n register(tag)\n }\n }\n }\n}\n\nexport interface ExecutionOptions {\n html: string\n css: string\n js: string\n context: ExampleContext\n transform: TransformFn\n onError?: (error: Error) => void\n}\n\n/**\n * Execute code inline (directly in the page)\n */\nexport async function executeInline(\n options: ExecutionOptions & {\n exampleElement: HTMLElement\n styleElement: HTMLStyleElement\n widgetsElement: HTMLElement\n }\n): Promise<HTMLElement> {\n const {\n html,\n css,\n js,\n context,\n transform,\n exampleElement,\n styleElement,\n widgetsElement,\n onError,\n } = options\n\n const preview = div({ class: 'preview' })\n preview.innerHTML = html\n styleElement.innerText = css\n\n const oldPreview = exampleElement.querySelector('.preview')\n if (oldPreview) {\n oldPreview.replaceWith(preview)\n } else {\n exampleElement.insertBefore(preview, widgetsElement)\n }\n\n const fullContext = { preview, ...context }\n\n try {\n const code = rewriteImports(js, Object.keys(context))\n const transformedCode = transform(code, { transforms: ['typescript'] }).code\n\n const contextKeys = Object.keys(fullContext).map(contextVarName)\n const contextValues = Object.values(fullContext)\n\n // @ts-expect-error AsyncFunction constructor typing\n const func = new AsyncFunction(...contextKeys, transformedCode)\n await func(...contextValues)\n } catch (e) {\n console.error(e)\n preview.append(\n div({ class: 'preview-error' }, String((e as Error).message || e))\n )\n if (onError) onError(e as Error)\n else window.alert(`Error: ${e}, the console may have more information…`)\n }\n\n return preview\n}\n\n/**\n * Execute code in an isolated iframe\n */\nexport async function executeInIframe(\n options: ExecutionOptions & {\n exampleElement: HTMLElement\n widgetsElement: HTMLElement\n }\n): Promise<HTMLElement | null> {\n const {\n html,\n css,\n js,\n context,\n transform,\n exampleElement,\n widgetsElement,\n onError,\n } = options\n\n // Create or reuse iframe\n let iframe = exampleElement.querySelector(\n 'iframe.preview-iframe'\n ) as HTMLIFrameElement | null\n\n if (!iframe) {\n iframe = document.createElement('iframe')\n iframe.className = 'preview-iframe'\n iframe.style.cssText = 'width: 100%; height: 100%; border: none;'\n const oldPreview = exampleElement.querySelector('.preview')\n if (oldPreview) {\n oldPreview.replaceWith(iframe)\n } else {\n exampleElement.insertBefore(iframe, widgetsElement)\n }\n }\n\n const iframeDoc = iframe.contentDocument\n if (!iframeDoc) {\n console.error('Could not access iframe document')\n return null\n }\n\n const iframeWindow = iframe.contentWindow as Window & {\n tosijs?: unknown\n tosijsui?: unknown\n }\n\n // Copy libraries to iframe window\n if (context['tosijs']) {\n iframeWindow.tosijs = context['tosijs']\n }\n if (context['tosijs-ui']) {\n iframeWindow.tosijsui = context['tosijs-ui']\n }\n\n // Write HTML and CSS to iframe\n iframeDoc.open()\n iframeDoc.write(`<!DOCTYPE html>\n<html>\n<head>\n <style>\n body { margin: 0; }\n .preview { height: 100%; position: relative; }\n ${css}\n </style>\n</head>\n<body>\n <div class=\"preview\">${html}</div>\n</body>\n</html>`)\n iframeDoc.close()\n\n // Register web components in iframe\n registerComponentsInIframe(iframeWindow, context)\n\n const preview = iframeDoc.querySelector('.preview') as HTMLElement\n if (!preview) {\n console.error('Could not find preview element in iframe')\n return null\n }\n\n // Execute JS in iframe context\n const fullContext = { preview, ...context }\n\n try {\n const code = rewriteImports(js, Object.keys(context))\n const transformedCode = transform(code, { transforms: ['typescript'] }).code\n\n // Create AsyncFunction in iframe's context\n const IframeAsyncFunction = (\n iframeWindow as Window & { eval: typeof eval }\n ).eval('(async () => {}).constructor')\n\n const contextKeys = Object.keys(fullContext).map(contextVarName)\n const contextValues = Object.values(fullContext)\n\n const func = new IframeAsyncFunction(...contextKeys, transformedCode)\n await func(...contextValues)\n } catch (e) {\n console.error(e)\n const errorDiv = iframeDoc.createElement('div')\n errorDiv.className = 'preview-error'\n errorDiv.textContent = String((e as Error).message || e)\n preview.append(errorDiv)\n if (onError) onError(e as Error)\n else window.alert(`Error: ${e}, the console may have more information…`)\n }\n\n return preview\n}\n",
35
- "import { ElementCreator } from 'tosijs'\nimport { ExampleContext } from './types'\nimport type { LiveExample } from './component'\n\ninterface SourceBlock {\n block: HTMLPreElement\n language: string | undefined\n code: string\n}\n\n/**\n * Find and replace sequences of code blocks with live examples\n */\nexport function insertExamples(\n element: HTMLElement,\n context: ExampleContext,\n liveExampleCreator: ElementCreator<LiveExample>,\n liveExampleTagName: string,\n // The source file this doc was extracted from (a `.md`, or a `.ts`/`.js`/`.css`\n // with extracted doc comments). Stamped onto each example as\n // `data-source-file` + `data-example-ordinal` so a DocStore can locate the\n // originating fenced block to save edits back. Read-only; the write path comes\n // with Foundation B. Omitted when there's no source (e.g. embedded corpora).\n sourceFile?: string\n): void {\n const sources: SourceBlock[] = [\n ...element.querySelectorAll(\n '.language-html,.language-js,.language-tjs,.language-ts,.language-css,.language-test'\n ),\n ]\n .filter((el) => !el.closest(liveExampleTagName))\n .map((code) => ({\n block: code.parentElement as HTMLPreElement,\n language: code.classList[0].split('-').pop(),\n code: (code as HTMLElement).innerText,\n }))\n\n // Per-doc ordinal: the Nth live example on the page. Combined with sourceFile\n // it's the key back to the originating fenced-block group in the source.\n let ordinal = 0\n for (let index = 0; index < sources.length; index += 1) {\n const exampleSources = [sources[index]]\n\n // Group consecutive code blocks\n while (\n index < sources.length - 1 &&\n sources[index].block.nextElementSibling === sources[index + 1].block\n ) {\n exampleSources.push(sources[index + 1])\n index += 1\n }\n\n const example = liveExampleCreator({ context })\n if (sourceFile !== undefined) {\n example.setAttribute('data-source-file', sourceFile)\n example.setAttribute('data-example-ordinal', String(ordinal))\n }\n ordinal += 1\n const parent = exampleSources[0].block.parentElement as HTMLElement\n parent.insertBefore(example, exampleSources[0].block)\n\n exampleSources.forEach((source) => {\n switch (source.language) {\n case 'js':\n case 'tjs':\n case 'ts':\n // All three are the example's executable \"source\" block; they land in\n // the same editor and the dialect drives how it's transpiled/run.\n example.js = source.code\n example.dialect = source.language\n break\n case 'html':\n example.html = source.code\n break\n case 'css':\n example.css = source.code\n break\n case 'test':\n example.test = source.code\n break\n }\n source.block.remove()\n })\n\n example.showDefaultTab()\n // Snapshot the original source, then restore any locally-saved edit on top\n // (per-browser scratchpad, keyed by the data-source-file/ordinal stamps).\n example.snapshotAndRestoreLocalEdit()\n }\n}\n",
35
+ "import { ElementCreator } from 'tosijs'\nimport { ExampleContext } from './types'\nimport type { LiveExample } from './component'\n\ninterface SourceBlock {\n block: HTMLPreElement\n language: string | undefined\n code: string\n}\n\n/**\n * Find and replace sequences of code blocks with live examples\n */\nexport function insertExamples(\n element: HTMLElement,\n context: ExampleContext,\n liveExampleCreator: ElementCreator<LiveExample>,\n liveExampleTagName: string,\n // The source file this doc was extracted from (a `.md`, or a `.ts`/`.js`/`.css`\n // with extracted doc comments). Stamped onto each example as\n // `data-source-file` + `data-example-ordinal` so a DocStore can locate the\n // originating fenced block to save edits back. Read-only; the write path comes\n // with Foundation B. Omitted when there's no source (e.g. embedded corpora).\n sourceFile?: string\n): void {\n const sources: SourceBlock[] = [\n ...element.querySelectorAll(\n '.language-html,.language-js,.language-tjs,.language-ts,.language-css,.language-test'\n ),\n ]\n .filter((el) => !el.closest(liveExampleTagName))\n .map((code) => ({\n block: code.parentElement as HTMLPreElement,\n language: code.classList[0].split('-').pop(),\n code: (code as HTMLElement).innerText,\n }))\n\n // Per-doc ordinal: the Nth live example on the page. Combined with sourceFile\n // it's the key back to the originating fenced-block group in the source.\n let ordinal = 0\n for (let index = 0; index < sources.length; index += 1) {\n const exampleSources = [sources[index]]\n\n // Group consecutive code blocks\n while (\n index < sources.length - 1 &&\n sources[index].block.nextElementSibling === sources[index + 1].block\n ) {\n exampleSources.push(sources[index + 1])\n index += 1\n }\n\n const example = liveExampleCreator({ context })\n if (sourceFile !== undefined) {\n example.setAttribute('data-source-file', sourceFile)\n example.setAttribute('data-example-ordinal', String(ordinal))\n }\n // Stable anchor for deep-linking (and for book \"run this live\" links): an\n // author override `data-example-id` (from a ```js#my-id fence on any block in\n // the group) wins, else the 1-based positional `example-N`. The book builder\n // derives the same id from the same rendered DOM, so the links line up.\n const overrideId = exampleSources\n .map((s) => s.block.getAttribute('data-example-id'))\n .find((v): v is string => !!v)\n example.id = overrideId || `example-${ordinal + 1}`\n ordinal += 1\n const parent = exampleSources[0].block.parentElement as HTMLElement\n parent.insertBefore(example, exampleSources[0].block)\n\n exampleSources.forEach((source) => {\n switch (source.language) {\n case 'js':\n case 'tjs':\n case 'ts':\n // All three are the example's executable \"source\" block; they land in\n // the same editor and the dialect drives how it's transpiled/run.\n example.js = source.code\n example.dialect = source.language\n break\n case 'html':\n example.html = source.code\n break\n case 'css':\n example.css = source.code\n break\n case 'test':\n example.test = source.code\n break\n }\n source.block.remove()\n })\n\n example.showDefaultTab()\n // Snapshot the original source, then restore any locally-saved edit on top\n // (per-browser scratchpad, keyed by the data-source-file/ordinal stamps).\n example.snapshotAndRestoreLocalEdit()\n }\n}\n",
36
36
  "/*\nsave-to-source\n\nRewrites the fenced code blocks of a single live example back into the doc source\nstring, so an in-place example edit can be persisted to the file it came from.\n\nOperates on the *raw source* (the `.md`, or a `.ts`/`.js`/`.css` whose doc\ncomments contain the markdown), located by the example's ordinal — the same\ngrouping `insert-examples` uses: consecutive executable fenced blocks\n(`js`/`html`/`css`/`test`), separated only by whitespace, form one example; any\nother content (prose, a heading, or a non-executable block) starts a new one.\n\nLimitations (v1): only blocks already present in the source are updated — adding a\nnew block type to an example isn't persisted. Replaces by block position, so it\nnever depends on the rendered/entity-decoded text matching the source.\n*/\n\n// `js`/`tjs`/`ts` are interchangeable \"source\" blocks (the example's executable\n// code); html/css/test are the rest. All count toward grouping so example\n// ordinals stay aligned with insert-examples.\nconst SOURCE_LANGS = new Set(['js', 'tjs', 'ts'])\nconst EXECUTABLE = new Set(['js', 'tjs', 'ts', 'html', 'css', 'test'])\n\ninterface FencedBlock {\n lang: string\n start: number // index of the opening ```\n end: number // index just past the closing ```\n codeStart: number // index of the first char of the code body\n codeEnd: number // index just past the last char of the code body\n}\n\n/** Find every ```lang …``` fenced block in document order, with positions. */\nexport function findFencedBlocks(src: string): FencedBlock[] {\n const re = /```([\\w-]*)[^\\n]*\\n([\\s\\S]*?)\\n```/g\n const blocks: FencedBlock[] = []\n let m: RegExpExecArray | null\n while ((m = re.exec(src)) !== null) {\n const codeStart = m.index + m[0].indexOf('\\n') + 1\n blocks.push({\n lang: m[1] || '',\n start: m.index,\n end: m.index + m[0].length,\n codeStart,\n codeEnd: codeStart + m[2].length,\n })\n }\n return blocks\n}\n\n/** Group executable blocks into examples, mirroring insert-examples. */\nexport function groupExamples(src: string, blocks: FencedBlock[]): FencedBlock[][] {\n const groups: FencedBlock[][] = []\n let current: FencedBlock[] | null = null\n for (let i = 0; i < blocks.length; i += 1) {\n const block = blocks[i]\n if (!EXECUTABLE.has(block.lang)) {\n current = null // a non-executable block breaks the run\n continue\n }\n const prev = blocks[i - 1]\n const adjacent =\n current !== null &&\n prev !== undefined &&\n EXECUTABLE.has(prev.lang) &&\n src.slice(prev.end, block.start).trim() === ''\n if (adjacent && current) {\n current.push(block)\n } else {\n current = [block]\n groups.push(current)\n }\n }\n return groups\n}\n\nexport type ExampleEdits = {\n js?: string\n html?: string\n css?: string\n test?: string\n}\n\n/**\n * Return `src` with the `ordinal`-th example's edited blocks replaced, or `null`\n * if that example or none of the edited blocks exist in the source.\n */\nexport function rewriteExampleBlocks(\n src: string,\n ordinal: number,\n edits: ExampleEdits\n): string | null {\n const group = groupExamples(src, findFencedBlocks(src))[ordinal]\n if (!group) return null\n\n // Code editors normalize trailing whitespace (e.g. add a trailing newline), so\n // an *untouched* block's editor value rarely byte-matches the source. Compare\n // with trailing whitespace trimmed so we only rewrite blocks the user actually\n // changed — otherwise saving one block churns its unedited siblings.\n const trimEnd = (s: string): string => s.replace(/\\s+$/, '')\n const replacements: { start: number; end: number; text: string }[] = []\n // `edits.js` is the example's source code regardless of its dialect, so it maps\n // to whichever js/tjs/ts block the group actually has.\n const blockFor = (lang: 'js' | 'html' | 'css' | 'test') =>\n lang === 'js'\n ? group.find((b) => SOURCE_LANGS.has(b.lang))\n : group.find((b) => b.lang === lang)\n for (const lang of ['js', 'html', 'css', 'test'] as const) {\n const next = edits[lang]\n if (next === undefined) continue\n const block = blockFor(lang)\n if (!block) continue\n const sourceCode = src.slice(block.codeStart, block.codeEnd)\n if (trimEnd(sourceCode) === trimEnd(next)) continue // unchanged (mod trailing ws)\n replacements.push({ start: block.codeStart, end: block.codeEnd, text: next })\n }\n if (replacements.length === 0) return null\n\n // Apply right-to-left so earlier positions stay valid.\n replacements.sort((a, b) => b.start - a.start)\n let out = src\n for (const r of replacements) {\n out = out.slice(0, r.start) + r.text + out.slice(r.end)\n }\n return out\n}\n",
37
37
  "/*\nPer-example local edit scratchpad.\n\nLive examples can be edited in place; this persists those edits to the browser\n(localStorage) keyed by the source-to-doc map (sourceFile + ordinal) so they\nsurvive reloads. Per-browser, no server — the local-only flavor of the DocStore\nexample scratchpad. An example with no source map can't be keyed, so it isn't\npersisted.\n*/\n\nconst PREFIX = 'tosi-example-edit:'\n\nexport interface ExampleEdit {\n js?: string\n html?: string\n css?: string\n test?: string\n}\n\n/** Stable key for an example, from its source↔doc map attributes. */\nexport function exampleEditKey(\n sourceFile: string,\n ordinal: string | number\n): string {\n return `${PREFIX}${sourceFile}#${ordinal}`\n}\n\nexport function saveExampleEdit(key: string, edit: ExampleEdit): void {\n try {\n localStorage.setItem(key, JSON.stringify(edit))\n } catch (e) {\n console.warn('example-store: save failed', e)\n }\n}\n\nexport function loadExampleEdit(key: string): ExampleEdit | null {\n try {\n const raw = localStorage.getItem(key)\n return raw ? (JSON.parse(raw) as ExampleEdit) : null\n } catch {\n return null\n }\n}\n\nexport function clearExampleEdit(key: string): void {\n try {\n localStorage.removeItem(key)\n } catch {\n // ignore\n }\n}\n\nexport function hasExampleEdit(key: string): boolean {\n try {\n return localStorage.getItem(key) !== null\n } catch {\n return false\n }\n}\n",
38
38
  "export const liveExampleStyleSpec = {\n ':host': {\n '--tosi-example-height': '320px',\n '--code-editors-bar-bg': '#777',\n '--code-editors-bar-color': '#fff',\n '--widget-bg': '#fff8',\n '--widget-color': '#000',\n position: 'relative',\n display: 'flex',\n height: 'var(--tosi-example-height)',\n background: 'var(--background)',\n boxSizing: 'border-box',\n },\n\n // Local-edit indicator: an accent outline on the always-visible `<>` example\n // button (bottom-left) when this example differs from its doc source — visible\n // whether or not the code editor is open (e.g. an auto-restored saved edit).\n ':host.-locally-edited [part=\"exampleWidgets\"]': {\n outline: '2px solid var(--brand-color, #da1167)',\n outlineOffset: '1px',\n borderRadius: '4px',\n },\n\n ':host.-maximize': {\n position: 'fixed',\n left: '0',\n top: '0',\n height: '100vh',\n width: '100vw',\n margin: '0 !important',\n },\n\n '.-maximize': {\n zIndex: 101,\n },\n\n ':host.-vertical': {\n flexDirection: 'column',\n },\n\n ':host .layout-indicator': {\n transition: '0.5s ease-out',\n transform: 'rotateZ(270deg)',\n },\n\n ':host.-vertical .layout-indicator': {\n transform: 'rotateZ(180deg)',\n },\n\n ':host.-maximize .hide-if-maximized, :host:not(.-maximize) .show-if-maximized':\n {\n display: 'none',\n },\n\n ':host [part=\"example\"]': {\n flex: '1 1 50%',\n height: '100%',\n position: 'relative',\n overflowX: 'auto',\n },\n\n ':host .preview': {\n height: '100%',\n position: 'relative',\n overflow: 'hidden',\n boxShadow: 'inset 0 0 0 2px #8883',\n },\n\n ':host .preview-error': {\n padding: '8px 12px',\n margin: '8px',\n background: '#fee',\n color: '#900',\n borderRadius: '4px',\n fontSize: '13px',\n fontFamily: 'system-ui, sans-serif',\n whiteSpace: 'pre-wrap',\n },\n\n ':host [part=\"editors\"]': {\n flex: '1 1 200px',\n height: '100%',\n position: 'relative',\n },\n\n ':host [part=\"exampleWidgets\"]': {\n position: 'absolute',\n left: '5px',\n bottom: '5px',\n '--widget-color': 'var(--brand-color)',\n borderRadius: '5px',\n width: '44px',\n height: '44px',\n lineHeight: '44px',\n zIndex: '100',\n },\n\n ':host [part=\"exampleWidgets\"] svg': {\n stroke: 'var(--widget-color)',\n },\n\n ':host .code-editors': {\n overflow: 'hidden',\n background: 'white',\n position: 'relative',\n top: '0',\n right: '0',\n flex: '1 1 50%',\n height: '100%',\n flexDirection: 'column',\n zIndex: '10',\n },\n\n ':host .code-editors:not([hidden])': {\n display: 'flex',\n },\n\n ':host .code-editors > h4': {\n padding: '5px',\n margin: '0',\n textAlign: 'center',\n background: 'var(--code-editors-bar-bg)',\n color: 'var(--code-editors-bar-color)',\n cursor: 'move',\n },\n\n ':host button.transparent, :host .sizer': {\n width: '32px',\n height: '32px',\n lineHeight: '32px',\n textAlign: 'center',\n padding: '0',\n margin: '0',\n },\n\n ':host .sizer': {\n cursor: 'nwse-resize',\n },\n\n // Test status indicator (--tests-enabled CSS var pierces shadow DOM)\n ':host [part=\"testIndicator\"]': {\n position: 'absolute',\n top: '8px',\n right: '8px',\n width: '12px',\n height: '12px',\n borderRadius: '50%',\n background: '#888',\n zIndex: '100',\n display: 'none',\n },\n\n ':host.-has-tests [part=\"testIndicator\"]': {\n display: 'block',\n opacity: 'var(--tests-enabled, 1)',\n },\n\n ':host.-test-running [part=\"testIndicator\"]': {\n background: '#fa0',\n animation: 'test-pulse 0.5s ease-in-out infinite',\n },\n\n ':host.-test-passed [part=\"testIndicator\"]': {\n background: '#0a0',\n animation: 'test-fade 2s ease-out forwards',\n },\n\n ':host.-test-failed [part=\"testIndicator\"]': {\n background: '#c00',\n animation: 'test-pulse 1s ease-in-out infinite',\n },\n\n '@keyframes test-pulse': {\n '0%, 100%': { opacity: '1' },\n '50%': { opacity: '0.4' },\n },\n\n '@keyframes test-fade': {\n '0%': { opacity: '1' },\n '50%': { opacity: '1' },\n '100%': { opacity: '0' },\n },\n\n ':host.-test-passed [part=\"exampleWidgets\"]': {\n '--widget-color': '#0a0',\n },\n\n ':host.-test-failed [part=\"exampleWidgets\"]': {\n '--widget-color': '#f00',\n },\n\n ':host [part=\"testResults\"]': {\n position: 'absolute',\n bottom: '54px',\n left: '5px',\n background: 'var(--widget-bg)',\n borderRadius: '5px',\n padding: '8px',\n fontSize: '14px',\n margin: '0',\n maxWidth: '400px',\n maxHeight: '200px',\n overflow: 'auto',\n zIndex: '100',\n },\n\n ':host [part=\"testResults\"][hidden]': {\n display: 'none',\n },\n\n ':host .test-pass': {\n color: '#0a0',\n },\n\n ':host .test-fail': {\n color: '#f00',\n },\n\n // Read-only \"tjs tests\" results tab (inline /*test*/ results).\n ':host .tjs-test-results': {\n padding: '8px 12px',\n fontSize: '14px',\n fontFamily: 'var(--mono-font, monospace)',\n overflow: 'auto',\n lineHeight: '1.6',\n },\n\n ':host .tjs-test-summary': {\n fontWeight: 'bold',\n marginBottom: '6px',\n },\n\n ':host .tjs-test-empty': {\n opacity: '0.6',\n },\n\n ':host .tjs-test-error': {\n opacity: '0.7',\n },\n}\n",
39
39
  "import { ExampleContext, TransformFn } from './types'\nimport { rewriteImports, AsyncFunction } from './code-transform'\n\nexport interface TestResult {\n name: string\n passed: boolean\n error?: string\n}\n\nexport interface TestResults {\n passed: number\n failed: number\n tests: TestResult[]\n}\n\nclass AssertionError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'AssertionError'\n }\n}\n\n// Parse an Error.stack and return the first frame that isn't from inside\n// the bundled harness itself — that's the user's test code. The harness is\n// minified into a single bundle (index.js / module.js / iife.js), so we\n// skip frames whose URL ends in those filenames and pick the next one.\n// Stack-frame format varies across browsers (Chrome: \" at fn (url:line:col)\";\n// Safari/FF: \"fn@url:line:col\") — the trailing \"url:line:col\" capture handles\n// both.\nconst BUNDLE_FILES = /\\/(index|module|iife|module\\.debug|module\\.safe)\\.js$/\ninterface UserFrame {\n url: string\n line: number\n col: number\n}\nfunction firstUserStackFrame(stack: string | undefined): UserFrame | null {\n if (!stack) return null\n for (const raw of stack.split('\\n')) {\n const line = raw.trim()\n if (!line) continue\n // Skip the \"AssertionError: ...\" header line.\n if (/^\\w*Error[:\\s]/.test(line)) continue\n const match = line.match(/[(@\\s]([^()\\s]+):(\\d+):(\\d+)\\)?$/)\n if (!match) continue\n const [, url, ln, col] = match\n if (BUNDLE_FILES.test(url)) continue\n return { url, line: Number(ln), col: Number(col) }\n }\n return null\n}\n\n// Source of the currently-running test block, set by runTests so matchers\n// can lift the failing line out of it for inclusion in the error message.\nlet currentTestSource: string | null = null\nfunction getSourceLine(lineNum: number): string | null {\n if (!currentTestSource || lineNum < 1) return null\n const lines = currentTestSource.split('\\n')\n return lines[lineNum - 1]?.trim() || null\n}\n\ninterface Matchers {\n toBe: (expected: unknown) => void\n toEqual: (expected: unknown) => void\n toBeTruthy: () => void\n toBeFalsy: () => void\n toBeNull: () => void\n toBeUndefined: () => void\n toBeDefined: () => void\n toContain: (item: unknown) => void\n toHaveLength: (length: number) => void\n toMatch: (pattern: RegExp) => void\n toBeGreaterThan: (n: number) => void\n toBeLessThan: (n: number) => void\n toBeInstanceOf: (cls: new (...args: unknown[]) => unknown) => void\n not: Matchers\n}\n\nfunction deepEqual(a: unknown, b: unknown): boolean {\n if (a === b) return true\n if (typeof a !== typeof b) return false\n if (a === null || b === null) return a === b\n if (typeof a !== 'object') return false\n\n const aObj = a as Record<string, unknown>\n const bObj = b as Record<string, unknown>\n\n if (Array.isArray(aObj) !== Array.isArray(bObj)) return false\n\n const aKeys = Object.keys(aObj)\n const bKeys = Object.keys(bObj)\n if (aKeys.length !== bKeys.length) return false\n\n return aKeys.every((key) => deepEqual(aObj[key], bObj[key]))\n}\n\n/** Default timeout for individual tests (ms) */\nexport const TEST_TIMEOUT = 5000\n\n// Safe JSON that handles DOM elements and circular references\nconst safeJSON = {\n stringify(val: unknown): string {\n if (typeof val === 'undefined') return 'undefined'\n if (val === null) return 'null'\n if (typeof Element !== 'undefined' && val instanceof Element) {\n return `<${val.tagName.toLowerCase()}>`\n }\n if (typeof Node !== 'undefined' && val instanceof Node) {\n return `[${val.nodeName}]`\n }\n try {\n return JSON.stringify(val)\n } catch {\n return String(val)\n }\n },\n}\n\nconst { stringify } = safeJSON\n\nfunction createMatchers(value: unknown, negated = false): Matchers {\n const assert = (condition: boolean, message: string) => {\n const result = negated ? !condition : condition\n if (!result) {\n const err = new AssertionError(negated ? `not: ${message}` : message)\n const frame = firstUserStackFrame(err.stack)\n if (frame) {\n const src = getSourceLine(frame.line)\n const loc = `line ${frame.line}`\n err.message = src\n ? `${err.message} | ${src} (${loc})`\n : `${err.message} (${loc})`\n }\n throw err\n }\n }\n\n const matchers: Matchers = {\n toBe(expected: unknown) {\n assert(\n value === expected,\n `Expected ${stringify(value)} to be ${stringify(expected)}`\n )\n },\n toEqual(expected: unknown) {\n assert(\n deepEqual(value, expected),\n `Expected ${stringify(value)} to equal ${stringify(expected)}`\n )\n },\n toBeTruthy() {\n assert(!!value, `Expected ${stringify(value)} to be truthy`)\n },\n toBeFalsy() {\n assert(!value, `Expected ${stringify(value)} to be falsy`)\n },\n toBeNull() {\n assert(value === null, `Expected ${stringify(value)} to be null`)\n },\n toBeUndefined() {\n assert(\n value === undefined,\n `Expected ${stringify(value)} to be undefined`\n )\n },\n toBeDefined() {\n assert(value !== undefined, `Expected ${stringify(value)} to be defined`)\n },\n toContain(item: unknown) {\n if (typeof value === 'string') {\n assert(\n value.includes(item as string),\n `Expected \"${value}\" to contain \"${item}\"`\n )\n } else if (Array.isArray(value)) {\n assert(\n value.includes(item),\n `Expected array to contain ${stringify(item)}`\n )\n } else {\n throw new AssertionError('toContain requires string or array')\n }\n },\n toHaveLength(length: number) {\n const actual = (value as { length: number }).length\n assert(actual === length, `Expected length ${actual} to be ${length}`)\n },\n toMatch(pattern: RegExp) {\n assert(\n pattern.test(value as string),\n `Expected \"${value}\" to match ${pattern}`\n )\n },\n toBeGreaterThan(n: number) {\n assert((value as number) > n, `Expected ${value} to be greater than ${n}`)\n },\n toBeLessThan(n: number) {\n assert((value as number) < n, `Expected ${value} to be less than ${n}`)\n },\n toBeInstanceOf(cls: new (...args: unknown[]) => unknown) {\n assert(\n value instanceof cls,\n `Expected value to be instance of ${cls.name}`\n )\n },\n get not() {\n return createMatchers(value, !negated)\n },\n }\n\n return matchers\n}\n\nexport function expect(value: unknown): Matchers {\n return createMatchers(value)\n}\n\n/**\n * Wait for a specified number of milliseconds\n */\nexport function waitMs(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n\n/**\n * Wait for an element matching the selector to appear in the preview\n * @param preview - The preview element to search within\n * @param selector - CSS selector to find\n * @param timeout - Maximum time to wait in ms (default: 1000)\n */\nexport function waitFor(\n preview: HTMLElement,\n selector: string,\n timeout = 1000\n): Promise<Element> {\n return new Promise((resolve, reject) => {\n const startTime = Date.now()\n\n const check = () => {\n const element = preview.querySelector(selector)\n if (element) {\n resolve(element)\n return\n }\n\n if (Date.now() - startTime >= timeout) {\n reject(\n new Error(`Timeout waiting for \"${selector}\" after ${timeout}ms`)\n )\n return\n }\n\n requestAnimationFrame(check)\n }\n\n check()\n })\n}\n\nexport interface TestContext {\n expect: typeof expect\n test: (name: string, fn: () => void | Promise<void>) => void\n describe: (name: string, fn: () => void) => void\n}\n\nfunction withTimeout<T>(\n promise: Promise<T>,\n ms: number,\n name: string\n): Promise<T> {\n return Promise.race([\n promise,\n new Promise<never>((_, reject) =>\n setTimeout(\n () => reject(new Error(`Test \"${name}\" timed out after ${ms}ms`)),\n ms\n )\n ),\n ])\n}\n\n/**\n * Create a test context that collects results.\n * Returns the context and a `pending` promise array that must be awaited\n * to capture async test results.\n */\nexport function createTestContext(\n results: TestResult[],\n timeout = TEST_TIMEOUT\n): TestContext & { pending: Promise<void>[] } {\n let currentDescribe = ''\n const pending: Promise<void>[] = []\n\n return {\n pending,\n expect,\n test(name: string, fn: () => void | Promise<void>) {\n const fullName = currentDescribe ? `${currentDescribe} > ${name}` : name\n try {\n const result = fn()\n if (result instanceof Promise) {\n const wrapped = withTimeout(result, timeout, fullName)\n .then(() => {\n results.push({ name: fullName, passed: true })\n })\n .catch((err: Error) => {\n results.push({\n name: fullName,\n passed: false,\n error: err.message,\n })\n })\n pending.push(wrapped)\n } else {\n results.push({ name: fullName, passed: true })\n }\n } catch (err) {\n results.push({\n name: fullName,\n passed: false,\n error: (err as Error).message,\n })\n }\n },\n describe(name: string, fn: () => void) {\n const previousDescribe = currentDescribe\n currentDescribe = currentDescribe ? `${currentDescribe} > ${name}` : name\n fn()\n currentDescribe = previousDescribe\n },\n }\n}\n\n/**\n * Run test code and collect results\n */\nexport async function runTests(\n testCode: string,\n preview: HTMLElement,\n context: ExampleContext,\n transform: TransformFn\n): Promise<TestResults> {\n const results: TestResult[] = []\n const testContext = createTestContext(results)\n\n const fullContext = {\n preview,\n ...context,\n expect: testContext.expect,\n test: testContext.test,\n describe: testContext.describe,\n waitMs,\n waitFor: (selector: string, timeout?: number) =>\n waitFor(preview, selector, timeout),\n }\n\n try {\n const code = rewriteImports(testCode, Object.keys(context))\n const transformedCode = transform(code, { transforms: ['typescript'] }).code\n\n const contextKeys = Object.keys(fullContext).map((key) =>\n key.replace(/-/g, '')\n )\n const contextValues = Object.values(fullContext)\n\n // Tag the AsyncFunction body with a sourceURL so stack traces report\n // line numbers relative to the test source (not a position inside the\n // bundled harness). `firstUserStackFrame` uses this to skip our own\n // frames and surface the assertion's actual location to the user.\n const taggedCode = `${transformedCode}\\n//# sourceURL=inline-test`\n\n // Capture the source so matchers can lift the failing line into the\n // error message. rewriteImports + tjs (dialect: 'js') leave plain JS\n // untouched, preserving line breaks so stack line numbers match this source.\n currentTestSource = transformedCode\n\n // @ts-expect-error AsyncFunction constructor typing\n const func = new AsyncFunction(...contextKeys, taggedCode)\n await func(...contextValues)\n } catch (err) {\n // If the test code itself throws (not an assertion), add it as a failed test\n results.push({\n name: 'Test execution',\n passed: false,\n error: (err as Error).message,\n })\n }\n\n // Wait for any async tests to settle\n if (testContext.pending.length > 0) {\n await Promise.all(testContext.pending)\n }\n\n currentTestSource = null\n\n return {\n passed: results.filter((r) => r.passed).length,\n failed: results.filter((r) => !r.passed).length,\n tests: results,\n }\n}\n",
40
40
  "/*#\n# example\n\n`<tosi-example>` makes it easy to insert interactive code examples in a web page. It\nstarted life as a super lightweight, easier-to-embed implementation of\n[b8rjs's fiddle component](https://b8rjs.com)—which I dearly missed—but now the student\nis, by far, the master. And it's still super lightweight.\n\n*You're probably looking at it right now.*\n\n```js\n// this code executes in an async function body\n// it has tosijs, tosijsui, and preview (the preview div) available as local variables\nimport { div } from 'tosijs'.elements\npreview.append(div({class: 'example'}, 'fiddle de dee!'))\npreview.append('Try editing some code and hitting refresh…')\n```\n```html\n<h2>Example</h2>\n```\n```css\n.preview {\n padding: 0 var(--spacing);\n}\n\n.example {\n animation: throb ease-in-out 1s infinite alternate;\n}\n\n@keyframes throb {\n from { color: blue }\n to { color: red }\n}\n```\n\n## Source dialects: `js`, `tjs`, `ts`\n\nThe executable block's fence language picks how the source is compiled before it\nruns, via [tjs-lang](https://www.npmjs.com/package/tjs-lang):\n\n- **`js`** — plain JavaScript, run as-is (tjs's `dialect: 'js'` leaves vanilla JS\n untouched, so there's no surprise rewriting).\n- **`tjs`** — [tjs-lang](https://www.npmjs.com/package/tjs-lang) source, lowered to\n JavaScript. Type annotations and tjs's safety transforms are compiled away.\n- **`ts`** — TypeScript, lowered to tjs (via `tjs-lang/lang/from-ts`) and then to\n JavaScript. The TypeScript compiler loads lazily, only for pages that use it.\n\nA `tjs` block — note the type annotation (which a plain `js` block couldn't run)\nand the inline `test '…' { … }` unit test. Open the code panel: the source tab\nis labeled **tjs**, with read-only **JS** (the compiled output) and **tjs tests**\n(the inline-test results) tabs, alongside the **DOM tests** tab.\n\n```tjs\nimport { div } from 'tosijs'.elements\n\nfunction badge(label: string, n: number) {\n return `${label}: ${n}`\n}\n\ntest 'badge formats label and number' {\n expect(badge('count', 42)).toBe('count: 42')\n}\n\npreview.append(div({ class: 'badge' }, badge('count', 42)))\n```\n```test\ntest('tjs example transpiled and ran', () => {\n const badge = preview.querySelector('.badge')\n expect(badge).not.toBe(null)\n expect(badge.textContent).toBe('count: 42')\n})\n```\n\nThe inline test above is tjs's native `test '…' { … }` syntax. In a *TypeScript*\nexample the equivalent is written inside a comment (so it survives `tsc`) — but\nthat comment form can't appear inside a doc comment like this one, since the\ntest's own closing delimiter would end the doc comment.\n\n## CSS Isolation with `iframe`\n\nAdd the `iframe` attribute to render the preview inside an iframe for complete CSS isolation.\n\n## Test Blocks\n\nAdd `\\`\\`\\`test` code blocks to write inline tests that run against the preview:\n\n```html\n<button class=\"demo-btn\">Click me</button>\n```\n```js\npreview.querySelector('.demo-btn').onclick = () => {\n preview.querySelector('.demo-btn').textContent = 'Clicked!'\n}\n```\n```test\ntest('button exists', () => {\n const btn = preview.querySelector('.demo-btn')\n expect(btn).toBeDefined()\n expect(btn.textContent).toBe('Click me')\n})\n\ntest('slow test shows running state', async () => {\n await waitMs(500)\n expect(true).toBe(true)\n})\n```\n\nTests have access to:\n- `preview` - the DOM element containing the rendered HTML\n- `expect(value)` - Jest-like assertions (.toBe, .toEqual, .toBeTruthy, etc.)\n- `test(name, fn)` - define a test case (can be async)\n- `describe(name, fn)` - group tests\n- `waitMs(ms)` - wait for a specified number of milliseconds\n- `waitFor(selector, timeout?)` - wait for an element to appear (default 1s timeout)\n- All context libraries (tosijs, tosijs-ui, etc.)\n\n### Async Tests\n\nTests can be async functions. Use `waitMs` for simple delays and `waitFor` to wait\nfor dynamically created elements:\n\n```html\n<button class=\"async-btn\">Load Data</button>\n<div class=\"result\"></div>\n```\n```js\npreview.querySelector('.async-btn').onclick = () => {\n setTimeout(() => {\n preview.querySelector('.result').innerHTML = '<span class=\"data\">Loaded!</span>'\n }, 100)\n}\n// Auto-click to trigger the async behavior\npreview.querySelector('.async-btn').click()\n```\n```test\ntest('waitFor finds dynamically created element', async () => {\n const data = await waitFor('.data')\n expect(data.textContent).toBe('Loaded!')\n})\n\ntest('waitMs delays execution', async () => {\n const start = Date.now()\n await waitMs(50)\n expect(Date.now() - start).toBeGreaterThan(40)\n})\n```\n\n## `context`\n\nA `<tosi-example>` is given a `context` object which is the set of values available\nin the javascript's execution context. The context always includes `preview`.\n\n```\nimport * as tosijs from 'tosijs'\nimport * as tosijsui from 'tosijs-ui'\n\ncontext = {\n tosijs,\n 'tosijs-ui': tosijsui\n}\n```\n*/\n\n/*{ \"parent\": \"Components\" }*/\n\nimport { Component, ElementCreator, elements, tosi } from 'tosijs'\nimport { codeEditor, CodeEditor } from '../code-editor'\nimport { tosiTabs } from '../tab-selector'\nimport { icons } from '../icons'\nimport { popMenu } from '../menu'\n\nimport { Dialect, ExampleContext, ExampleParts, TransformFn } from './types'\nimport {\n loadTransform,\n loadTjsTestApi,\n rewriteImports,\n contextVarName,\n AsyncFunction,\n TjsTestResult,\n} from './code-transform'\nimport {\n STORAGE_KEY,\n createRemoteKey,\n RemoteSyncManager,\n openEditorWindow,\n} from './remote-sync'\nimport { executeInline, executeInIframe } from './execution'\nimport { insertExamples } from './insert-examples'\nimport { rewriteExampleBlocks } from './save-to-source'\nimport {\n exampleEditKey,\n saveExampleEdit,\n loadExampleEdit,\n clearExampleEdit,\n hasExampleEdit,\n ExampleEdit,\n} from './example-store'\nimport { liveExampleStyleSpec } from './styles'\nimport { runTests, TestResults } from './test-harness'\n\nconst { div, tosiSlot, style, button, pre, span } = elements\n\n// Test mode: controlled by localStorage, defaults to enabled on localhost\nconst TESTS_ENABLED_KEY = 'tosijs-ui-tests-enabled'\n\nconst isLocalhost =\n typeof window !== 'undefined' &&\n (window.location.hostname === 'localhost' ||\n window.location.hostname === '127.0.0.1')\n\nfunction getStoredTestsEnabled(): boolean {\n if (typeof localStorage === 'undefined') return false\n const stored = localStorage.getItem(TESTS_ENABLED_KEY)\n if (stored !== null) {\n return stored === 'true'\n }\n // Default: enabled on localhost, disabled elsewhere\n return isLocalhost\n}\n\n// Test manager - observable state for test mode\nexport const { testManager } = tosi({\n testManager: {\n enabled: getStoredTestsEnabled(),\n },\n})\n\n// Set CSS variable on body for test visibility (CSS vars pierce shadow DOM)\nfunction updateTestsEnabledClass() {\n document.body.classList.toggle('tests-enabled', testManager.enabled.value)\n document.body.style.setProperty(\n '--tests-enabled',\n testManager.enabled.value ? '1' : '0'\n )\n}\nif (typeof document !== 'undefined') {\n // Set initial state when DOM is ready\n if (document.body) {\n updateTestsEnabledClass()\n } else {\n document.addEventListener('DOMContentLoaded', updateTestsEnabledClass)\n }\n}\n\n/** Enable test mode (runs tests and shows indicators) */\nexport function enableTests(): void {\n localStorage.setItem(TESTS_ENABLED_KEY, 'true')\n testManager.enabled.value = true\n updateTestsEnabledClass()\n // Re-run tests on all existing examples\n document.querySelectorAll('tosi-example').forEach((el) => {\n ;(el as LiveExample).refresh()\n })\n}\n\n/** Disable test mode */\nexport function disableTests(): void {\n localStorage.setItem(TESTS_ENABLED_KEY, 'false')\n testManager.enabled.value = false\n updateTestsEnabledClass()\n}\n\nexport class LiveExample extends Component<ExampleParts> {\n static preferredTagName = 'tosi-example'\n static lightStyleSpec = liveExampleStyleSpec\n\n static initAttributes = {\n persistToDom: false,\n iframe: false,\n }\n\n prefix = 'lx'\n storageKey = STORAGE_KEY\n context: ExampleContext = {}\n uuid: string = crypto.randomUUID()\n remoteId = ''\n\n private remoteSync?: RemoteSyncManager\n private undoInterval?: ReturnType<typeof setInterval>\n private testResults?: TestResults\n private pendingValues: Record<string, string> = {}\n private pendingShowDefaultTab = false\n private beforeUnloadHandler?: () => void\n\n static insertExamples(\n element: HTMLElement,\n context: ExampleContext = {},\n sourceFile?: string\n ): void {\n insertExamples(\n element,\n context,\n liveExample,\n LiveExample.tagName as string,\n sourceFile\n )\n }\n\n get activeTab(): Element | undefined {\n const { editors } = this.parts\n return [...editors.children].find(\n (elt) => elt.getAttribute('hidden') === null\n )\n }\n\n private get hydrated(): boolean {\n try {\n return this.parts.js !== undefined\n } catch {\n return false\n }\n }\n\n private getEditorValue(which: string): string {\n if (!this.hydrated) return this.pendingValues[which] ?? ''\n return (this.parts[which] as CodeEditor).value\n }\n\n private setEditorValue(which: string, code: string): void {\n if (!this.hydrated) {\n this.pendingValues[which] = code\n return\n }\n const codeEditor = this.parts[which] as CodeEditor\n codeEditor.value = code\n }\n\n private flushPendingValues(): void {\n for (const [which, code] of Object.entries(this.pendingValues)) {\n const codeEditor = this.parts[which] as CodeEditor\n if (codeEditor) codeEditor.value = code\n }\n this.pendingValues = {}\n\n if (this.pendingShowDefaultTab) {\n this.pendingShowDefaultTab = false\n this.showDefaultTab()\n }\n }\n\n get css(): string {\n return this.getEditorValue('css')\n }\n set css(code: string) {\n this.setEditorValue('css', code)\n }\n\n get html(): string {\n return this.getEditorValue('html')\n }\n set html(code: string) {\n this.setEditorValue('html', code)\n }\n\n get js(): string {\n return this.getEditorValue('js')\n }\n set js(code: string) {\n this.setEditorValue('js', code)\n }\n\n get test(): string {\n return this.getEditorValue('test')\n }\n set test(code: string) {\n this.setEditorValue('test', code)\n }\n\n get remoteKey(): string {\n return createRemoteKey(this.prefix, this.uuid, this.remoteId)\n }\n\n // The source block's dialect (js | tjs | ts). Set by insert-examples from the\n // fenced-block language; persisted as an attribute so it survives a re-render.\n // `js` is the default and keeps the original pass-through behavior.\n get dialect(): Dialect {\n return (this.getAttribute('data-dialect') as Dialect) || 'js'\n }\n set dialect(value: Dialect) {\n this.setAttribute('data-dialect', value)\n }\n\n // ── Read-only product tabs (tjs/ts only) ──────────────────────────────────\n // A `tjs`/`ts` example's source is editable; the JavaScript it compiles to is\n // shown read-only in an extra \"JS\" tab. The tab is added lazily (examples show\n // every named editor as a tab, so a static child would pollute plain-`js`\n // examples) the first time the code panel opens. `js` examples get nothing.\n private jsOutEditor?: CodeEditor\n private tjsTestsView?: HTMLElement\n private productTabsReady = false\n private lastGeneratedJs = ''\n private inlineTjsTestCount = 0\n private lastTjsTests?: TjsTestResult\n\n // Run the example's inline tjs tests (the `/*test 'desc' { … }*/` comments in\n // the tjs/ts source — distinct from the DOM-testing `test` block). Extract +\n // strip the tests, transpile the rest the same way execution does, then run\n // `execJs + testUtils + return testRunner` with the example context injected.\n private async runInlineTjsTests(transform: TransformFn): Promise<void> {\n if (this.dialect === 'js') {\n this.inlineTjsTestCount = 0\n return\n }\n const api = await loadTjsTestApi()\n if (!api) {\n this.inlineTjsTestCount = 0\n return\n }\n let extracted\n try {\n extracted = api.extractTests(this.js)\n } catch {\n this.inlineTjsTestCount = 0\n return\n }\n this.inlineTjsTestCount = extracted.tests.length\n if (extracted.tests.length === 0) {\n this.lastTjsTests = undefined\n this.renderTjsTests()\n return\n }\n try {\n const execJs = transform(\n rewriteImports(extracted.code, Object.keys(this.context))\n ).code\n const body = `${execJs}\\n${api.testUtils}\\nreturn ${extracted.testRunner}`\n // The test-stripped source still runs its top-level statements (to define\n // the functions under test), which may touch `preview` — give them a\n // throwaway one, mirroring execution's `{ preview, ...context }` scope.\n const fullContext = { preview: div({ class: 'preview' }), ...this.context }\n const keys = Object.keys(fullContext).map(contextVarName)\n const values = Object.values(fullContext)\n // @ts-expect-error AsyncFunction constructor typing\n const fn = new AsyncFunction(...keys, body)\n this.lastTjsTests = (await fn(...values)) as TjsTestResult\n } catch (error) {\n this.lastTjsTests = {\n passed: 0,\n failed: 1,\n results: [\n {\n description: 'inline tests failed to run',\n passed: false,\n error: String(error),\n },\n ],\n }\n }\n this.renderTjsTests()\n }\n\n private renderTjsTests(): void {\n const view = this.tjsTestsView\n if (!view) return\n const results = this.lastTjsTests\n if (!results || results.results.length === 0) {\n view.replaceChildren(div({ class: 'tjs-test-empty' }, 'No inline tjs tests.'))\n return\n }\n view.replaceChildren(\n div(\n { class: 'tjs-test-summary' },\n `${results.passed}/${results.results.length} passed`\n ),\n ...results.results.map((r) =>\n div(\n { class: r.passed ? 'test-pass' : 'test-fail' },\n `${r.passed ? '✓' : '✗'} ${r.description}`,\n r.error ? span({ class: 'tjs-test-error' }, ` — ${r.error}`) : ''\n )\n )\n )\n }\n\n // The JavaScript `this.js` compiles to under the current dialect — the same\n // pipeline execution runs (rewriteImports → dialect transform), so the tab\n // shows what actually executes. Transpile errors render as a comment.\n private computeGeneratedJs(transform: TransformFn): string {\n if (this.dialect === 'js') return ''\n try {\n return transform(rewriteImports(this.js, Object.keys(this.context))).code\n } catch (error) {\n return `// transpile error:\\n// ${(error as Error).message}`\n }\n }\n\n private ensureProductTabs(): void {\n if (this.productTabsReady || this.dialect === 'js' || !this.hydrated) return\n this.productTabsReady = true\n const { editors } = this.parts\n // Relabel the source tab from \"js\" to the actual dialect (the `part` stays\n // `js`, so everything referencing this.parts.js / this.js is unaffected).\n this.parts.js.setAttribute('name', this.dialect)\n this.jsOutEditor = codeEditor({\n name: 'JS',\n mode: 'javascript',\n disabled: true,\n }) as unknown as CodeEditor\n editors.append(this.jsOutEditor)\n // Add a read-only \"tjs tests\" results tab only when the source has inline\n // `/*test*/` tests (computed during refresh, which runs before first open).\n if (this.inlineTjsTestCount > 0) {\n this.tjsTestsView = div({ name: 'tjs tests', class: 'tjs-test-results' })\n editors.append(this.tjsTestsView)\n }\n editors.setupTabs()\n this.jsOutEditor.value = this.lastGeneratedJs\n this.renderTjsTests()\n }\n\n updateUndo = () => {\n const { activeTab } = this\n const { undo, redo } = this.parts\n if (activeTab instanceof CodeEditor && activeTab.editor !== undefined) {\n const undoManager = activeTab.editor.session.getUndoManager()\n undo.disabled = !undoManager.hasUndo()\n redo.disabled = !undoManager.hasRedo()\n } else {\n undo.disabled = true\n redo.disabled = true\n }\n this.updateEditedIndicator()\n this.updateTestResultsVisibility()\n }\n\n private updateTestResultsVisibility(): void {\n const { testResults: resultsEl } = this.parts\n const results = this.testResults\n // The \"DOM tests\" tab's editor is this.parts.test (the part stays `test`\n // even though the tab label changed).\n const isTestTabActive = this.activeTab === this.parts.test\n const hasFailed = results && results.failed > 0\n\n // Show results if: has results AND (test tab is active OR there are failures)\n resultsEl.hidden =\n !results || results.tests.length === 0 || (!isTestTabActive && !hasFailed)\n }\n\n undo = () => {\n const { activeTab } = this\n if (activeTab instanceof CodeEditor) {\n activeTab.editor.undo()\n }\n }\n\n redo = () => {\n const { activeTab } = this\n if (activeTab instanceof CodeEditor) {\n activeTab.editor.redo()\n }\n }\n\n get isMaximized(): boolean {\n return this.classList.contains('-maximize')\n }\n\n flipLayout = () => {\n this.classList.toggle('-vertical')\n }\n\n // Persist this example's edits back to the source file's fenced blocks, located\n // by the source↔doc map (data-source-file + data-example-ordinal). Dev only —\n // writes via the /__docstore/source endpoint; the watcher then rebuilds.\n saveToSource = async (): Promise<void> => {\n const sourceFile = this.getAttribute('data-source-file')\n const ordinalAttr = this.getAttribute('data-example-ordinal')\n if (!sourceFile || ordinalAttr === null) {\n window.alert('No source mapping for this example.')\n return\n }\n let content: string\n try {\n const response = await fetch(\n `/__docstore/source?file=${encodeURIComponent(sourceFile)}`\n )\n if (!response.ok) throw new Error(String(response.status))\n content = await response.text()\n } catch {\n window.alert(\n 'Source endpoint unavailable — saving to source works in dev only.'\n )\n return\n }\n const updated = rewriteExampleBlocks(content, Number(ordinalAttr), {\n js: this.js,\n html: this.html,\n css: this.css,\n test: this.test,\n })\n if (updated === null) {\n window.alert('Nothing to save (no matching blocks or no changes).')\n return\n }\n try {\n const response = await fetch('/__docstore/source', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ file: sourceFile, content: updated }),\n })\n if (!response.ok) throw new Error(String(response.status))\n window.alert(`Saved to ${sourceFile}`)\n } catch {\n window.alert('Save failed.')\n }\n }\n\n exampleMenu = () => {\n const testsOn = testManager.enabled.value\n popMenu({\n target: this.parts.exampleWidgets,\n width: 'auto',\n menuItems: [\n {\n icon: 'edit2',\n caption: 'view/edit code',\n action: this.showCode,\n },\n {\n icon: 'edit',\n caption: 'view/edit code in a new window',\n action: this.openEditorWindow,\n },\n null,\n {\n icon: this.isMaximized ? 'minimize' : 'maximize',\n caption: this.isMaximized ? 'restore preview' : 'maximize preview',\n action: this.toggleMaximize,\n },\n null,\n {\n icon: testsOn ? 'check' : '',\n caption: 'Run tests',\n action: () => {\n if (testsOn) {\n disableTests()\n } else {\n enableTests()\n }\n },\n },\n ],\n })\n }\n\n handleShortcuts = (event: KeyboardEvent) => {\n if (event.metaKey || event.ctrlKey) {\n let block = false\n switch (event.key) {\n case 's':\n case 'r':\n this.doRefresh()\n block = true\n break\n case '/':\n this.flipLayout()\n break\n case 'c':\n if (event.shiftKey) {\n this.copy()\n block = true\n }\n break\n }\n if (block) {\n event.preventDefault()\n event.stopPropagation()\n }\n }\n }\n\n content = () => [\n div(\n { part: 'example' },\n style({ part: 'style' }),\n div({ part: 'testIndicator', title: 'test status' }),\n pre({ part: 'testResults', hidden: true }),\n button(\n {\n title: 'example menu',\n part: 'exampleWidgets',\n onClick: this.exampleMenu,\n },\n icons.code()\n )\n ),\n div(\n {\n class: 'code-editors',\n part: 'codeEditors',\n onKeydown: this.handleShortcuts,\n hidden: true,\n },\n tosiTabs(\n {\n part: 'editors',\n onChange: this.updateUndo,\n },\n codeEditor({ name: 'js', mode: 'javascript', part: 'js' }),\n codeEditor({ name: 'html', mode: 'html', part: 'html' }),\n codeEditor({ name: 'css', mode: 'css', part: 'css' }),\n // The `test` block tests the rendered preview (DOM), so its tab is\n // labeled \"DOM tests\" to distinguish it from inline tjs unit tests. The\n // `part`/`name` stay `test`; only the displayed label differs.\n codeEditor({ name: 'DOM tests', mode: 'javascript', part: 'test' }),\n div(\n { slot: 'after-tabs', class: 'row' },\n button(\n {\n title: 'undo',\n part: 'undo',\n class: 'transparent',\n onClick: this.undo,\n },\n icons.cornerUpLeft()\n ),\n button(\n {\n title: 'redo',\n part: 'redo',\n class: 'transparent',\n onClick: this.redo,\n },\n icons.cornerUpRight()\n ),\n button(\n {\n title: 'example menu — refresh, flip, undo, copy, save/revert edits',\n class: 'transparent source-menu',\n onClick: this.sourceMenu,\n },\n icons.moreVertical()\n ),\n button(\n {\n title: 'close code',\n class: 'transparent',\n onClick: this.closeCode,\n },\n icons.x()\n )\n )\n )\n ),\n tosiSlot({ part: 'sources', hidden: true }),\n ]\n\n connectedCallback(): void {\n super.connectedCallback()\n\n // Flush any values set before the shadow DOM was ready\n this.flushPendingValues()\n\n const { sources } = this.parts\n this.initFromElements([...sources.children] as HTMLElement[])\n\n // Set up remote sync\n this.remoteSync = new RemoteSyncManager(\n this.storageKey,\n this.remoteKey,\n (payload) => {\n if (payload.close) {\n if (this.remoteId !== '') {\n // Remote editor window — close the popup\n window.close()\n } else {\n // Original window — restore from maximized state\n this.classList.remove('-maximize')\n this.parts.codeEditors.hidden = true\n }\n return\n }\n this.css = payload.css\n this.html = payload.html\n this.js = payload.js\n if (payload.test) this.test = payload.test\n this.refresh()\n }\n )\n this.remoteSync.startListening()\n\n // Stochastic undo-state polling — jittered base interval avoids\n // synchronizing when many examples are on the same page.\n const jitter = Math.random() * 100\n this.undoInterval = setInterval(() => {\n if (!document.hidden) this.updateUndo()\n }, 250 + jitter)\n\n // Send close signal when the tab/window closes — disconnectedCallback\n // does not fire reliably during page unload.\n this.beforeUnloadHandler = () => this.remoteSync?.sendClose()\n addEventListener('beforeunload', this.beforeUnloadHandler)\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n\n this.remoteSync?.sendClose()\n this.remoteSync?.stopListening()\n\n if (this.undoInterval) {\n clearInterval(this.undoInterval)\n this.undoInterval = undefined\n }\n\n if (this.beforeUnloadHandler) {\n removeEventListener('beforeunload', this.beforeUnloadHandler)\n this.beforeUnloadHandler = undefined\n }\n }\n\n private exampleMarkdown(): string {\n const block = (lang: string, code: string) =>\n code !== '' ? '```' + lang + '\\n' + code.trim() + '\\n```\\n' : ''\n return (\n block(this.dialect, this.js) +\n block('html', this.html) +\n block('css', this.css) +\n block('test', this.test)\n )\n }\n\n copy = () => {\n navigator.clipboard.writeText(this.exampleMarkdown())\n }\n\n downloadExample = () => {\n const src = this.getAttribute('data-source-file') || 'example'\n const ord = this.getAttribute('data-example-ordinal')\n const name =\n (src.split('/').pop() || 'example').replace(/\\.\\w+$/, '') +\n (ord !== null ? `-example-${ord}` : '') +\n '.md'\n const url = URL.createObjectURL(\n new Blob([this.exampleMarkdown()], { type: 'text/markdown' })\n )\n const link = document.createElement('a')\n link.href = url\n link.download = name\n link.click()\n setTimeout(() => URL.revokeObjectURL(url), 1000)\n }\n\n // ── Local edit scratchpad (per-browser; keyed by the source↔doc map) ───────\n // The original source blocks, snapshotted at mount so \"revert\" can restore\n // them after a locally-saved edit.\n private originalCode: ExampleEdit | null = null\n\n private localEditKey(): string {\n const src = this.getAttribute('data-source-file')\n const ord = this.getAttribute('data-example-ordinal')\n return src && ord !== null ? exampleEditKey(src, ord) : ''\n }\n\n private applyEdit(edit: ExampleEdit): void {\n if (edit.js !== undefined) this.js = edit.js\n if (edit.html !== undefined) this.html = edit.html\n if (edit.css !== undefined) this.css = edit.css\n if (edit.test !== undefined) this.test = edit.test\n }\n\n // \"Has edits\" = current code differs from the snapshotted original (trailing\n // whitespace ignored, since editors normalize it). Drives Save/Revert enabled\n // state and the local-edit indicator.\n hasLocalEdits(): boolean {\n if (!this.originalCode) return false\n const o = this.originalCode\n const t = (s?: string) => (s ?? '').replace(/\\s+$/, '')\n return (\n t(this.js) !== t(o.js) ||\n t(this.html) !== t(o.html) ||\n t(this.css) !== t(o.css) ||\n t(this.test) !== t(o.test)\n )\n }\n\n private updateEditedIndicator(): void {\n this.classList.toggle('-locally-edited', this.hasLocalEdits())\n }\n\n private canUndo(): boolean {\n const t = this.activeTab\n return (\n t instanceof CodeEditor &&\n t.editor !== undefined &&\n t.editor.session.getUndoManager().hasUndo()\n )\n }\n\n private canRedo(): boolean {\n const t = this.activeTab\n return (\n t instanceof CodeEditor &&\n t.editor !== undefined &&\n t.editor.session.getUndoManager().hasRedo()\n )\n }\n\n saveLocalEdit = () => {\n const key = this.localEditKey()\n if (!key) {\n window.alert('This example has no source mapping to key a local save.')\n return\n }\n saveExampleEdit(key, {\n js: this.js,\n html: this.html,\n css: this.css,\n test: this.test,\n })\n this.updateEditedIndicator()\n }\n\n revertLocalEdit = () => {\n const key = this.localEditKey()\n if (key) clearExampleEdit(key)\n if (this.originalCode) this.applyEdit(this.originalCode)\n // Reverting leaves nothing to diff — drop out of the diff view if we're in it.\n if (this.viewingChanges) this.viewChanges()\n this.updateEditedIndicator()\n this.refresh()\n }\n\n // Called once by insert-examples after the source blocks + map attrs are set:\n // snapshot the original, then restore any saved local edit on top.\n snapshotAndRestoreLocalEdit = () => {\n // this.js/html/css/test are guarded (return '' before hydration). Do NOT\n // touch this.parts.* directly here — that throws \"elementRef does not exist\"\n // when the example isn't hydrated yet, which breaks the whole doc render.\n // Editor diff baselines are applied later, in viewChanges().\n this.originalCode = {\n js: this.js,\n html: this.html,\n css: this.css,\n test: this.test,\n }\n const key = this.localEditKey()\n if (!key || !hasExampleEdit(key)) return\n const edit = loadExampleEdit(key)\n if (edit) {\n this.applyEdit(edit)\n this.updateEditedIndicator()\n this.refresh()\n }\n }\n\n // Toggle a per-tab diff (current vs original source) across the example's\n // editors. Each editor diffs its own single text — no need to combine the\n // html/css/js/test split — so switching tabs shows that tab's changes.\n viewingChanges = false\n viewChanges = () => {\n if (!this.hydrated) return\n this.viewingChanges = !this.viewingChanges\n if (this.viewingChanges) this.showCode()\n const originals = this.originalCode ?? {}\n for (const tab of ['js', 'html', 'css', 'test'] as const) {\n // Set the diff baseline (the source) right before showing the diff, now\n // that the editors are hydrated.\n this.parts[tab].original = originals[tab] ?? ''\n this.parts[tab].showDiff(this.viewingChanges)\n }\n }\n\n // The example's overflow menu. Stable item set — actions stay put and toggle\n // enabled (Save/Revert key off whether there are edits); items are only hidden\n // when they could NEVER apply here (local save needs a source-map key; save to\n // source additionally needs the dev server). Shortcuts are display-only; the\n // keys are routed by handleShortcuts / the editor, not the menu.\n // Refresh means different things in the two modes: the page-embedded example\n // re-runs itself; the pop-out editor window (refresh() is a no-op there) pushes\n // its code to the main window so IT re-runs.\n doRefresh = () => {\n if (this.remoteId !== '') {\n this.refreshRemote()\n } else {\n void this.refresh()\n }\n }\n\n sourceMenu = (event: Event) => {\n const key = this.localEditKey()\n const hasEdits = () => this.hasLocalEdits()\n // View changes / Revert need the source snapshot, which only the page-embedded\n // example has — the pop-out editor window has no originalCode to compare to.\n const hasSnapshot = this.originalCode != null\n popMenu({\n target: (event.target as HTMLElement).closest('button') as HTMLElement,\n width: 'auto',\n menuItems: [\n {\n icon: 'refreshCw',\n caption: 'Refresh',\n shortcut: '⌘R',\n action: this.doRefresh,\n },\n { icon: 'columns', caption: 'Flip layout', shortcut: '⌘/', action: this.flipLayout },\n {\n icon: 'cornerUpLeft',\n caption: 'Undo',\n shortcut: '⌘Z',\n action: this.undo,\n enabled: () => this.canUndo(),\n },\n {\n icon: 'cornerUpRight',\n caption: 'Redo',\n shortcut: '⌘⇧Z',\n action: this.redo,\n enabled: () => this.canRedo(),\n },\n null,\n { icon: 'copy', caption: 'Copy as markdown', shortcut: '⌘⇧C', action: this.copy },\n { icon: 'download', caption: 'Download', action: this.downloadExample },\n null,\n ...(hasSnapshot\n ? [\n this.viewingChanges\n ? { icon: 'edit', caption: 'Back to editing', action: this.viewChanges }\n : {\n icon: 'code',\n caption: 'View changes',\n action: this.viewChanges,\n enabled: hasEdits,\n },\n ]\n : []),\n ...(key\n ? [\n {\n icon: 'save',\n caption: 'Save changes (local)',\n action: this.saveLocalEdit,\n enabled: hasEdits,\n },\n ]\n : []),\n ...(key && isLocalhost\n ? [\n {\n icon: 'upload',\n caption: 'Save to source',\n action: () => {\n void this.saveToSource()\n },\n enabled: hasEdits,\n },\n ]\n : []),\n ...(hasSnapshot\n ? [\n {\n icon: 'rotateCcw',\n caption: 'Revert to original',\n action: this.revertLocalEdit,\n enabled: hasEdits,\n },\n ]\n : []),\n ],\n })\n }\n\n toggleMaximize = () => {\n this.classList.toggle('-maximize')\n }\n\n showCode = () => {\n this.classList.add('-maximize')\n this.classList.toggle('-vertical', this.offsetHeight > this.offsetWidth)\n this.parts.codeEditors.hidden = false\n this.ensureProductTabs()\n }\n\n closeCode = () => {\n if (this.remoteId !== '') {\n // Remote editor window — send close signal to original, then close popup\n this.remoteSync?.sendClose()\n window.close()\n } else {\n // Original window — restore and close any remote editor\n this.remoteSync?.sendClose()\n this.classList.remove('-maximize')\n this.parts.codeEditors.hidden = true\n }\n }\n\n openEditorWindow = () => {\n const { css, html, js, test } = this\n openEditorWindow(this.prefix, this.uuid, this.storageKey, this.remoteKey, {\n css,\n html,\n js,\n test,\n })\n // Maximize preview — the remote window handles code editing\n this.classList.add('-maximize')\n }\n\n refreshRemote = () => {\n this.remoteSync?.send({\n css: this.css,\n html: this.html,\n js: this.js,\n test: this.test,\n })\n }\n\n updateSources = () => {\n if (this.persistToDom) {\n const { sources } = this.parts\n sources.innerText = ''\n for (const language of ['js', 'css', 'html', 'test']) {\n if (this[language as 'js' | 'css' | 'html' | 'test']) {\n sources.append(\n pre({\n class: `language-${language}`,\n innerHTML: this[language as 'js' | 'css' | 'html' | 'test'],\n })\n )\n }\n }\n }\n }\n\n refresh = async () => {\n if (this.remoteId !== '') return\n\n const transform = await loadTransform(this.dialect)\n const { example, style: styleEl, exampleWidgets } = this.parts\n\n // Keep the read-only generated-JS tab (tjs/ts) in sync with the source, and\n // re-run any inline tjs tests for the \"tjs tests\" results tab.\n if (this.dialect !== 'js') {\n this.lastGeneratedJs = this.computeGeneratedJs(transform)\n if (this.jsOutEditor) this.jsOutEditor.value = this.lastGeneratedJs\n await this.runInlineTjsTests(transform)\n }\n\n let preview: HTMLElement | null\n let executionError: Error | undefined\n\n const onError = (error: Error) => {\n executionError = error\n }\n\n if (this.iframe) {\n preview = await executeInIframe({\n html: this.html,\n css: this.css,\n js: this.js,\n context: this.context,\n transform,\n exampleElement: example,\n widgetsElement: exampleWidgets,\n onError,\n })\n } else {\n preview = await executeInline({\n html: this.html,\n css: this.css,\n js: this.js,\n context: this.context,\n transform,\n exampleElement: example,\n styleElement: styleEl,\n widgetsElement: exampleWidgets,\n onError,\n })\n }\n\n if (this.persistToDom) {\n this.updateSources()\n }\n\n // Run tests if enabled and there are any\n if ((this.test || executionError) && preview && testManager.enabled.value) {\n // Let queued renders (rAF) settle before running tests\n await new Promise((resolve) => requestAnimationFrame(resolve))\n\n this.classList.add('-has-tests', '-test-running')\n this.classList.remove('-test-passed', '-test-failed')\n // `test` blocks are conventional JS/TS regardless of the example's dialect,\n // so they're transpiled as plain js — never lowered through tjs/ts.\n const testTransform =\n this.dialect === 'js' ? transform : await loadTransform('js')\n this.testResults = this.test\n ? await runTests(this.test, preview, this.context, testTransform)\n : { passed: 0, failed: 0, tests: [] }\n if (executionError) {\n this.testResults.failed += 1\n this.testResults.tests.unshift({\n name: 'example loads without error',\n passed: false,\n error: String(executionError),\n })\n }\n this.classList.remove('-test-running')\n this.displayTestResults()\n } else {\n this.classList.remove(\n '-has-tests',\n '-test-running',\n '-test-passed',\n '-test-failed'\n )\n }\n }\n\n private displayTestResults(): void {\n const { testResults: resultsEl, testIndicator } = this.parts\n const results = this.testResults\n\n if (!results || results.tests.length === 0) {\n resultsEl.hidden = true\n this.classList.remove('-test-passed', '-test-failed')\n testIndicator.title = 'no tests'\n return\n }\n\n resultsEl.innerHTML = ''\n\n const summary = div(\n { style: { marginBottom: '8px', fontWeight: 'bold' } },\n `${results.passed}/${results.tests.length} tests passed`\n )\n resultsEl.append(summary)\n\n for (const test of results.tests) {\n const icon = test.passed ? '✓' : '✗'\n const cls = test.passed ? 'test-pass' : 'test-fail'\n const testEl = div(\n { class: cls },\n span(icon + ' '),\n test.name,\n test.error\n ? span({ style: { opacity: '0.7' } }, ` - ${test.error}`)\n : ''\n )\n resultsEl.append(testEl)\n }\n\n this.classList.toggle('-test-passed', results.failed === 0)\n this.classList.toggle('-test-failed', results.failed > 0)\n\n // Update indicator title\n testIndicator.title =\n results.failed === 0\n ? `${results.passed} tests passed`\n : `${results.failed}/${results.tests.length} tests failed`\n\n // Update visibility based on tab and failure status\n this.updateTestResultsVisibility()\n\n // Dispatch event for doc-browser to track results\n this.dispatchEvent(\n new CustomEvent('testcomplete', {\n bubbles: true,\n detail: {\n results,\n element: this,\n },\n })\n )\n }\n\n initFromElements(elements: HTMLElement[]) {\n for (const element of elements) {\n element.hidden = true\n const [mode, ...lines] = element.innerHTML.split('\\n') as string[]\n if (['js', 'html', 'css', 'test'].includes(mode)) {\n const minIndex = lines\n .filter((line) => line.trim() !== '')\n .map((line) => (line.match(/^\\s*/) as string[])[0].length)\n .sort()[0]\n const source = (\n minIndex > 0 ? lines.map((line) => line.substring(minIndex)) : lines\n ).join('\\n')\n this.setEditorValue(mode, source)\n } else {\n const language = ['js', 'html', 'css', 'test'].find((lang) =>\n element.matches(`.language-${lang}`)\n )\n if (language) {\n this.setEditorValue(\n language,\n language === 'html' ? element.innerHTML : element.innerText\n )\n }\n }\n }\n }\n\n showDefaultTab() {\n if (!this.hydrated) {\n this.pendingShowDefaultTab = true\n return\n }\n const { editors } = this.parts\n if (this.js !== '') {\n editors.value = 0\n } else if (this.html !== '') {\n editors.value = 1\n } else if (this.css !== '') {\n editors.value = 2\n } else if (this.test !== '') {\n editors.value = 3\n }\n }\n\n render(): void {\n super.render()\n\n if (this.remoteId !== '') {\n const data = localStorage.getItem(this.storageKey)\n if (data !== null) {\n const payload = JSON.parse(data)\n if (this.remoteKey !== payload.remoteKey) return\n\n this.css = payload.css\n this.html = payload.html\n this.js = payload.js\n if (payload.test) this.test = payload.test\n this.parts.example.hidden = true\n this.parts.codeEditors.hidden = false\n this.classList.add('-maximize')\n this.updateUndo()\n }\n } else {\n this.refresh()\n }\n }\n}\n\nexport const liveExample = LiveExample.elementCreator() as ElementCreator<LiveExample>\n\n// Auto-initialize remote editor window\nconst params = new URL(window.location.href).searchParams\nconst remoteId = params.get('lx')\nif (remoteId) {\n document.title += ' [code editor]'\n document.body.textContent = ''\n document.body.append(liveExample({ remoteId }))\n}\n",
41
41
  "/*#\n# sidebar\n\nThe default layout for iOS / iPadOS apps is to hide the sidebar when displaying content on small\nscreens, and display the sidebar when space is available (with the user able to explicitly hide\nthe sidebar if so desired). `<tosi-sidenav>` provides this functionality.\n\n`<tosi-sidenav>` is used to handle the layout of the documentation tab panel.\n\n`<tosi-sidenav>`'s behavior is controlled by two attributes, `minSize` is the point at which it will toggle between showing the navigation\nsidebar and content, while `navSize` is the width of the sidebar. You can interrogate its `compact` property to find out if it's\ncurrently in `compact` form.\n*/\n\n/*{ \"parent\": \"Components\" }*/\n\nimport { Component, ElementCreator, elements, varDefault } from 'tosijs'\n\nconst { slot } = elements\n\ntype NavState = 'normal' | 'compact/nav' | 'compact/content'\n\nexport class TosiSidenav extends Component {\n static preferredTagName = 'tosi-sidenav'\n\n static initAttributes = {\n minSize: 800,\n navSize: 200,\n compact: false,\n contentVisible: false,\n }\n\n value: NavState = 'normal'\n\n content = [slot({ name: 'nav', part: 'nav' }), slot({ part: 'content' })]\n\n static shadowStyleSpec = {\n ':host': {\n display: 'grid',\n gridTemplateColumns: `${varDefault.navWidth(\n '50%'\n )} ${varDefault.contentWidth('50%')}`,\n gridTemplateRows: '100%',\n position: 'relative',\n margin: varDefault.margin('0 0 0 -100%'),\n transition: varDefault.sideNavTransition('0.25s ease-out'),\n },\n ':host slot': {\n position: 'relative',\n },\n ':host slot:not([name])': {\n display: 'block',\n },\n ':host slot[name=\"nav\"]': {\n display: 'block',\n },\n }\n\n onResize = () => {\n const { content } = this.parts\n const parent = this.offsetParent as HTMLElement | null\n if (parent === null) {\n return\n }\n\n let navState: NavState\n\n this.compact = parent.offsetWidth < this.minSize\n\n const empty =\n [...this.childNodes].find((node) =>\n node instanceof Element ? node.getAttribute('slot') !== 'nav' : true\n ) === undefined\n if (empty) {\n navState = 'compact/nav'\n this.style.setProperty('--nav-width', '100%')\n this.style.setProperty('--content-width', '0%')\n } else if (!this.compact) {\n navState = 'normal'\n content.classList.add('-tosi-sidenav-visible')\n this.style.setProperty('--nav-width', `${this.navSize}px`)\n this.style.setProperty(\n '--content-width',\n `calc(100% - ${this.navSize}px)`\n )\n this.style.setProperty('--margin', '0')\n } else {\n content.classList.remove('-tosi-sidenav-visible')\n this.style.setProperty('--nav-width', '50%')\n this.style.setProperty('--content-width', '50%')\n\n if (this.contentVisible) {\n navState = 'compact/content'\n this.style.setProperty('--margin', '0 0 0 -100%')\n } else {\n navState = 'compact/nav'\n this.style.setProperty('--margin', '0 -100% 0 0')\n }\n }\n\n if (this.value !== navState) {\n this.value = navState\n }\n }\n\n private observer: any\n connectedCallback(): void {\n super.connectedCallback()\n this.contentVisible = this.parts.content.childNodes.length === 0\n globalThis.addEventListener('resize', this.onResize)\n\n this.observer = new MutationObserver(this.onResize)\n this.observer.observe(this, { childList: true })\n this.style.setProperty('--side-nav-transition', '0s')\n setTimeout(() => {\n this.style.removeProperty('--side-nav-transition')\n }, 250)\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n this.observer.disconnect()\n }\n\n render(): void {\n super.render()\n this.onResize()\n }\n}\n\n/** @deprecated Use TosiSidenav instead */\nexport type SideNav = TosiSidenav\n/** @deprecated Use TosiSidenav instead */\nexport const SideNav: typeof TosiSidenav = TosiSidenav\n\nexport const tosiSidenav = TosiSidenav.elementCreator() as ElementCreator<TosiSidenav>\n\n/** @deprecated Use tosiSidenav instead */\nexport const sideNav = tosiSidenav\n\n/** @deprecated Use tosiSidenav instead */\nexport const xinSidenav = tosiSidenav\n",
42
- "/*#\n# doc-browser\n\nThe `tosijs-ui` library provides everything you need to create a self-documented testbed similar\nto the [tosijs-ui documentation site](https://ui.tosijs.net). It's like Storybook but much simpler\nto set up and maintain.\n\n## Quick Start\n\n### 1. Extract Documentation\n\nUse the CLI tool to extract documentation from your source files:\n\n```bash\nnpx tosijs-ui-docs --dirs src,README.md --output docs.json\n```\n\nThis scans for:\n\n- `.md` files (uses entire content)\n- Multi-line comments starting with `/*#` in `.ts`, `.js`, `.css` files\n\n### 2. Create Your Doc Browser\n\n```typescript\nimport { createDocBrowser } from 'tosijs-ui'\nimport * as mylib from './my-library.js'\nimport docs from './docs.json'\n\nconst browser = createDocBrowser({\n docs,\n context: { mylib },\n projectName: 'My Project',\n projectLinks: {\n github: 'https://github.com/user/project',\n npm: 'https://www.npmjs.com/package/project',\n },\n})\n\ndocument.body.append(browser)\n```\n\n### 3. Add Live Examples in Your Docs\n\nIn your source files or markdown, use code fences. Any sequence of\nhtml, js, and css code examples will be turned in to a live, interactive\nexample.\n\n /*#\n # My Component\n\n This component does amazing things!\n\n ```html\n <my-component></my-component>\n ```\n ```js\n import { myComponent } from 'mylib'\n preview.append(myComponent({ value: 'Hello!' }))\n ```\n ```css\n my-component {\n color: blue;\n }\n ```\n *‎/\n\n export class MyComponent extends Component {\n // ...\n }\n\n export const myComponent = MyComponent.elementCreator({\n tag: 'my-component'\n })\n\n## Documentation Format\n\n### Inline Comments\n\nStart multi-line comments with `/*#` to mark them as documentation:\n\n```typescript\n/*#\n# Component Name\n\nDescription and examples go here...\n*‎/\n```\n\n### Metadata\n\nControl sort order with JSON metadata:\n\n```\n<!--{ \"pin\": \"bottom\" }-->\n```\n\nor\n\n```\n/*{ \"pin\": \"bottom\" }*‎/\n```\n\n## Programmatic API\n\n```typescript\nimport { extractDocs, saveDocsJSON } from 'tosijs-ui'\n\nconst docs = extractDocs({\n dirs: ['src', 'README.md'],\n ignore: ['node_modules', 'dist'],\n})\n\nsaveDocsJSON(docs, './docs.json')\n\n// Or use the docs directly\nimport { createDocBrowser } from 'tosijs-ui'\nconst browser = createDocBrowser({ docs, context: { mylib } })\n```\n\n## createDocBrowser Options\n\n```typescript\ninterface DocBrowserOptions {\n docs: Doc[] // Array of documentation objects\n context?: Record<string, any> // Modules for live examples\n projectName?: string // Display name\n projectLinks?: ProjectLinks // Links to show in header\n navSize?: number // Nav width (default: 200)\n minSize?: number // Min width before compact (default: 600)\n}\n\ninterface ProjectLinks {\n github?: string\n npm?: string\n discord?: string\n blog?: string\n tosijs?: string\n bundle?: string\n cdn?: string\n [key: string]: string | undefined\n}\n```\n\n## See Also\n\nThe `tosijs-ui` demo is a complete working example. See:\n\n- `/demo/src/index.ts` - How the doc browser is set up\n- `/bin/docs.ts` - The extraction tool\n- `/src/doc-browser.ts` - The createDocBrowser implementation\n*/\n/*{\"pin\":\"bottom\",\"parent\":\"Appendices\"}*/\n\nimport {\n elements,\n vars,\n varDefault,\n bindings,\n touch,\n getListItem,\n debounce,\n tosi,\n StyleSheet,\n XinStyleSheet,\n} from 'tosijs'\nimport { buildSlugMap, pathForSlug, filenameForPath } from './doc-system/routing'\nimport { buildNavTree, NavNode } from './doc-system/nav-tree'\nimport { renderDocMarkdown } from './doc-system/render'\nimport { LiveExample, testManager } from './live-example'\nimport { TestResults } from './live-example/test-harness'\nimport { tosiSidenav, TosiSidenav } from './side-nav'\nimport { icons } from './icons'\nimport { tosiLocalized } from './localize'\nimport { popMenu } from './menu'\nimport { codeEditor, CodeEditor } from './code-editor'\nimport { tosiDiff } from './diff'\n\n// Types for global test results\nexport interface PageTestResults {\n passed: boolean\n tests: TestResults['tests']\n totalPassed: number\n totalFailed: number\n}\n\nexport interface DocTestResults {\n passed: number\n failed: number\n pages: Record<string, PageTestResults>\n}\n\ndeclare global {\n interface Window {\n __docTestResults?: Promise<DocTestResults>\n }\n}\n\nconst { div, span, a, header, button, template, input, h2, details, summary, ul, li } =\n elements\n\n// Test colors\nconst testColor = {\n pass: varDefault.testColorPass('#0a0'),\n fail: varDefault.testColorFail('#c00'),\n running: varDefault.testColorRunning('#fa0'),\n}\n\n// Test indicator styles - widget inherits button styles from base stylesheet\nconst testIndicatorStyleSpec: XinStyleSheet = {\n '.view-source': { opacity: '0.9' },\n '.view-source:hover': { opacity: '1' },\n '@keyframes test-pulse': {\n '0%, 100%': { opacity: '1' },\n '50%': { opacity: '0.7' },\n },\n '@keyframes test-appear': {\n from: { opacity: '0', transform: 'scale(0.8)' },\n to: { opacity: '1', transform: 'scale(1)' },\n },\n '@keyframes test-fade': {\n '0%, 20%': { opacity: '1', transform: 'scale(1)' },\n '70%': { opacity: '1', transform: 'scale(1.1)' },\n '100%': { opacity: '0', transform: 'scale(0.9)', pointerEvents: 'none' },\n },\n\n // Hide when tests disabled\n 'body:not(.tests-enabled) .doc-link::after, body:not(.tests-enabled) .test-widget':\n {\n display: 'none !important',\n },\n\n // Nav link dot indicators\n '.doc-link.-test-passed::after, .doc-link.-test-failed::after': {\n content: \"''\",\n width: vars.fontSize50,\n height: vars.fontSize50,\n borderRadius: '50%',\n marginLeft: vars.spacing50,\n display: 'inline-block',\n verticalAlign: 'middle',\n },\n '.doc-link.-test-passed::after': { background: testColor.pass },\n '.doc-link.-test-failed::after': {\n background: testColor.fail,\n animation: 'test-pulse 2s ease-in-out infinite',\n },\n\n // Floating widget - position and colors only, inherits button structure\n '.test-widget': {\n _testBg: testColor.running,\n position: 'fixed',\n bottom: vars.spacing,\n right: vars.spacing,\n zIndex: '1000',\n background: vars.testBg,\n color: 'white',\n gap: vars.spacing50,\n },\n '.test-widget[hidden]': { display: 'none' },\n '.test-widget.-running': {\n _testBg: testColor.running,\n animation:\n 'test-appear 0.3s ease-out, test-pulse 2s ease-in-out 0.3s infinite',\n },\n '.test-widget.-passed': {\n _testBg: testColor.pass,\n animation: 'test-fade 3s ease-out forwards',\n },\n '.test-widget.-failed': {\n _testBg: testColor.fail,\n animation: 'test-pulse 2s ease-in-out infinite',\n },\n\n // Count badge\n '.test-widget .count': {\n background: 'white',\n color: vars.testBg,\n borderRadius: '50%',\n width: vars.lineHeight,\n height: vars.lineHeight,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 'bold',\n },\n}\n\nexport interface Doc {\n text: string\n title: string\n filename: string\n path: string\n pin?: string\n hidden?: boolean\n testStatus?: 'passed' | 'failed' | 'pending'\n}\n\nexport interface ProjectLinks {\n github?: string\n npm?: string\n discord?: string\n blog?: string\n tosijs?: string\n bundle?: string\n cdn?: string\n [key: string]: string | undefined\n}\n\n/** A configurable link for the header bar or the overflow menu. */\nexport interface LinkItem {\n href: string\n label: string\n /** optional icon name (from `icons`); falls back to the text label if unknown */\n icon?: string\n}\n\n/**\n * How the doc browser maps docs to URLs.\n * - 'query' (default, legacy): single-page app, links are `?filename`.\n * - 'path': clean per-page URLs (`/slug/`), for the static pre-rendered site\n * driven by <tosi-doc-system>. Requires a real page to exist at each path.\n * - 'memory': self-contained — navigation never touches window.history/location\n * and the instance ignores the page URL. For an embedded/nested browser (a\n * live demo, a floating help panel). Drive it via `initialRoute` +\n * `onRouteChange`, and the returned element's `.navigate(slug)` method.\n */\nexport type DocRoutingMode = 'query' | 'path' | 'memory'\n\nexport interface DocBrowserOptions {\n docs: Doc[]\n context?: Record<string, any>\n projectName?: string\n projectLinks?: ProjectLinks\n navSize?: number\n minSize?: number\n routing?: DocRoutingMode\n /**\n * Memory routing only: the slug to show first (instead of the page URL / first\n * doc). Lets a host mount the browser already pointed at a specific doc.\n */\n initialRoute?: string\n /**\n * Memory routing only: called with the current doc's slug whenever in-app\n * navigation happens, so a host can reflect it (e.g. to an attribute).\n */\n onRouteChange?: (slug: string) => void\n /**\n * Header-bar links. When provided, these replace the legacy `projectLinks` icon\n * set in the header (each renders as an icon if `icon` names a known icon, else\n * as its text label). `projectLinks` is still used for the logo and view-source.\n */\n navbarLinks?: LinkItem[]\n /**\n * Pre-rendered content for the landing doc to ADOPT in place (true hydration).\n * When provided, the current page's already-rendered markdown is left untouched\n * — only live examples are wired up — instead of being re-rendered from text.\n * Used by <tosi-doc-system>. Subsequent navigation renders from doc text.\n */\n contentElement?: HTMLElement\n}\n\nexport function createDocBrowser(options: DocBrowserOptions): HTMLElement {\n const {\n docs,\n context = {},\n projectName = '',\n projectLinks = {},\n navSize = 200,\n minSize = 600,\n routing = 'query',\n initialRoute,\n onRouteChange,\n navbarLinks,\n contentElement,\n } = options\n\n // Memory routing is fully self-contained: it never reads or writes\n // window.history/location, so an embedded or nested browser can't hijack the\n // host page's URL (or recurse into it).\n const memoryRouting = routing === 'memory'\n\n // Initialize testStatus on all docs so tosi can track it\n for (const doc of docs) {\n doc.testStatus = undefined\n }\n\n // Routing abstraction — keeps the legacy `?filename` SPA behavior the default,\n // while letting <tosi-doc-system> drive clean `/slug/` URLs off the same docs.\n // Both path and memory routing key off slugs; only legacy query routing doesn't.\n const slugMap = routing === 'query' ? {} : buildSlugMap(docs)\n const slugFor = (filename: string): string => slugMap[filename] ?? filename\n const filenameForSlug = (slug: string): string => {\n for (const d of docs) if (slugFor(d.filename) === slug) return d.filename\n return ''\n }\n const hrefFor = (filename: string): string =>\n routing === 'query' ? `?${filename}` : pathForSlug(slugFor(filename))\n const filenameFromLocation = (): string => {\n // Memory routing ignores the page URL entirely — it starts at initialRoute.\n if (memoryRouting) return initialRoute ? filenameForSlug(initialRoute) : ''\n return routing === 'path'\n ? filenameForPath(document.location.pathname, slugMap)\n : document.location.search !== ''\n ? document.location.search.substring(1).split('&')[0]\n : ''\n }\n\n // Resolve a content-link anchor to one of our docs' filenames, in either the\n // legacy `?filename` form or a clean `/slug/` path — or null for external\n // links, in-page anchors, mailto:, downloads, etc. Used to navigate internal\n // doc links client-side (via go()) instead of triggering a full page reload,\n // and to canonicalize their hrefs for the current routing mode.\n const docFilenameForHref = (anchor: HTMLAnchorElement): string | null => {\n const raw = anchor.getAttribute('href') || ''\n if (raw === '' || raw.startsWith('#')) return null\n let url: URL\n try {\n url = new URL(raw, document.location.href)\n } catch {\n return null\n }\n if (url.origin !== document.location.origin) return null // external\n const known = (filename: string): string | null =>\n docs.some((doc) => doc.filename === filename) ? filename : null\n // Legacy `?filename` form: a single bare filename, not a real query string.\n const query = url.search.replace(/^\\?/, '')\n if (query !== '' && !query.includes('=') && !query.includes('&')) {\n const filename = known(decodeURIComponent(query))\n if (filename) return filename\n }\n // Clean `/slug/` path form (only meaningful when slugs are in play).\n if (!memoryRouting && routing !== 'query') {\n const filename = known(filenameForPath(url.pathname, slugMap))\n if (filename) return filename\n }\n return null\n }\n\n const docName = filenameFromLocation() || docs[0]?.filename || 'README.md'\n\n const currentDoc = docs.find((doc) => doc.filename === docName) || docs[0]\n\n const { app } = tosi({\n app: {\n docs,\n currentDoc,\n compact: false,\n },\n })\n\n // Assigned by the hierarchical nav builder (path routing); re-applies current\n // highlight, test status, search visibility, and auto-open imperatively.\n // resetOpen=true collapses every section except the current doc's.\n let refreshNav: (resetOpen?: boolean) => void = () => {}\n\n // Test result tracking\n const pageTestResults: Record<string, PageTestResults> = {}\n let testResultsResolve: ((results: DocTestResults) => void) | undefined\n let backgroundTestsStarted = false\n let pagesWithTests = 0\n let pagesTested = 0\n\n // Set up global promise for scriptable browser integration. A memory-routed\n // (embedded) browser must not clobber the host page's global.\n if (!memoryRouting) {\n window.__docTestResults = new Promise((resolve) => {\n testResultsResolve = resolve\n })\n }\n\n const updateDocTestStatus = (filename: string) => {\n const results = pageTestResults[filename]\n // Callback receives bare object, return is proxy - cast to work with both\n const doc = (app.docs as unknown as Doc[]).find(\n (d) => d.filename === filename\n )\n if (doc) {\n doc.testStatus = results\n ? results.passed\n ? 'passed'\n : 'failed'\n : undefined\n }\n refreshNav()\n }\n\n const checkAllTestsComplete = () => {\n if (pagesTested >= pagesWithTests && testResultsResolve) {\n const allResults: DocTestResults = {\n passed: 0,\n failed: 0,\n pages: pageTestResults,\n }\n\n for (const pageResults of Object.values(pageTestResults)) {\n allResults.passed += pageResults.totalPassed\n allResults.failed += pageResults.totalFailed\n }\n\n testResultsResolve(allResults)\n testResultsResolve = undefined\n\n // Post results to dev server on localhost (not from test iframes)\n if (isLocalhost && !isTestFrame) {\n fetch('/report', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(allResults),\n }).catch(() => {\n // Ignore errors - server may not support this endpoint\n })\n }\n }\n }\n\n const isLocalhost =\n window.location.hostname === 'localhost' ||\n window.location.hostname === '127.0.0.1'\n\n const handleTestComplete = (event: CustomEvent) => {\n const { results } = event.detail as {\n results: TestResults\n element: LiveExample\n }\n const filename = String(app.currentDoc.filename)\n\n // Reset page results each time (don't accumulate across reloads)\n pageTestResults[filename] = {\n passed: results.failed === 0,\n tests: [...results.tests],\n totalPassed: results.passed,\n totalFailed: results.failed,\n }\n\n updateDocTestStatus(filename)\n }\n\n // Track when a page finishes loading all its tests\n const markPageTested = (_filename: string) => {\n pagesTested++\n checkAllTestsComplete()\n updateTestWidget()\n }\n\n bindings.docLink = {\n toDOM(elt, filename) {\n elt.setAttribute('href', hrefFor(filename))\n ;(elt as HTMLElement).dataset.filename = filename\n },\n }\n\n bindings.current = {\n toDOM(elt, currentFile) {\n elt.classList.toggle(\n 'current',\n currentFile === (elt as HTMLElement).dataset.filename\n )\n },\n }\n\n bindings.testStatus = {\n toDOM(elt, status) {\n elt.classList.remove('-test-passed', '-test-failed')\n if (status === 'passed') {\n elt.classList.add('-test-passed')\n } else if (status === 'failed') {\n elt.classList.add('-test-failed')\n }\n },\n }\n\n const filterDocs = debounce(() => {\n const needle = searchField.value.toLocaleLowerCase()\n app.docs.forEach((doc: any) => {\n doc.hidden =\n !doc.title.toLocaleLowerCase().includes(needle) &&\n !doc.text.toLocaleLowerCase().includes(needle)\n })\n touch(app.docs)\n // resetOpen: when the field is cleared this collapses back to the current\n // section; while typing, matching sections expand via the needle branch.\n refreshNav(true)\n })\n\n const searchField = input({\n slot: 'nav',\n placeholder: 'search',\n type: 'search',\n style: {\n width: 'calc(100% - 10px)',\n margin: '5px',\n },\n onInput: filterDocs,\n })\n\n // Memory routing is decoupled from the page URL, so it ignores browser\n // back/forward (the host owns history, if any).\n if (!memoryRouting) {\n window.addEventListener('popstate', () => {\n // Back/forward while the source editor is open with unsaved changes: the\n // URL already moved, so on \"keep editing\" we push it back to match the\n // still-open editor; on discard we close the editor and navigate.\n if (editUI) {\n if (\n editorHasUnsavedChanges() &&\n !window.confirm('Discard unsaved changes to the source?')\n ) {\n const href = hrefFor(String(editUI.doc.filename))\n window.history.pushState({ href }, '', href)\n return\n }\n closeEditor()\n }\n navigateTo(filenameFromLocation())\n })\n\n // Reload / tab-close / external navigation: native \"leave site?\" prompt when\n // there are unsaved source edits (the only guard the browser allows here).\n window.addEventListener('beforeunload', (event: BeforeUnloadEvent) => {\n if (editorHasUnsavedChanges()) {\n event.preventDefault()\n event.returnValue = ''\n }\n })\n }\n\n const headerContent: any[] = [\n button(\n {\n class: 'iconic',\n style: { color: vars.linkColor },\n title: 'navigation',\n bind: {\n value: app.compact,\n binding: {\n toDOM(element, compact) {\n element.style.display = compact ? '' : 'none'\n ;(element.nextSibling as HTMLElement).style.display = compact\n ? ''\n : 'none'\n },\n },\n },\n onClick() {\n const nav = document.querySelector(\n TosiSidenav.tagName!\n ) as TosiSidenav\n nav.contentVisible = !nav.contentVisible\n },\n },\n icons.menu()\n ),\n span({ style: { flex: '0 0 10px' } }),\n ]\n\n if (projectName) {\n headerContent.push(\n a(\n {\n href: '/',\n style: {\n display: 'flex',\n alignItems: 'center',\n borderBottom: 'none',\n },\n },\n projectLinks.tosijs\n ? icons.tosiUi({\n style: { _xinIconSize: 40, marginRight: 10 },\n })\n : span(),\n h2(projectName)\n )\n )\n }\n\n headerContent.push(span({ class: 'elastic' }))\n\n // A header link renders as an icon (if `icon` names a known icon) or its label.\n const headerLink = (link: LinkItem) => {\n const iconFactory = link.icon ? (icons as any)[link.icon] : undefined\n return a(\n {\n class: iconFactory ? 'iconic' : '',\n title: link.label,\n target: '_blank',\n href: link.href,\n },\n iconFactory ? iconFactory() : link.label\n )\n }\n\n if (navbarLinks) {\n // Configurable link set.\n navbarLinks.forEach((link) => headerContent.push(headerLink(link)))\n } else {\n // Legacy: derive header icons from the known `projectLinks` keys.\n const legacy: Array<[string | undefined, string, string]> = [\n [projectLinks.tosijs, 'tosi', 'tosijs'],\n [projectLinks.discord, 'discord', 'discord'],\n [projectLinks.blog, 'blog', 'blog'],\n [projectLinks.github, 'github', 'github'],\n [projectLinks.npm, 'npm', 'npmjs'],\n ]\n for (const [href, icon, label] of legacy) {\n if (href) headerContent.push(headerLink({ href, label, icon }))\n }\n }\n\n // The rendered-markdown content area. When hydrating a static page we ADOPT the\n // pre-rendered node so the landing page's HTML is never re-rendered; otherwise we\n // render from doc text. Every navigation funnels through navigateTo() -> showDoc().\n const docContent = contentElement || div()\n docContent.classList.add('doc-content')\n Object.assign(docContent.style, {\n display: 'block',\n maxWidth: '44em',\n margin: 'auto',\n padding: '0 1em',\n overflow: 'hidden',\n })\n\n // Adoption is zero-flash hydration of a statically pre-rendered page: it only\n // holds for the page's own path-routed instance, whose static `.doc-content`\n // matches the initial doc. A memory-routed embed's initial doc\n // (initialRoute/docs[0]) has no relation to whatever happens to sit inside the\n // host element (often an empty placeholder), so always render it fresh.\n // Canonicalize internal content links to the current routing mode's href and\n // tag them — so copy-link / right-click / no-JS land on the right page, and a\n // left-click can be short-circuited to client-side nav. Authored docs use the\n // routing-agnostic `?filename` form (the only one resolvable in every mode);\n // this rewrites them to `/slug/` on the static path-routed site, etc.\n const rewriteContentLinks = (): void => {\n for (const anchor of docContent.querySelectorAll('a')) {\n const filename = docFilenameForHref(anchor as HTMLAnchorElement)\n if (filename !== null) {\n anchor.setAttribute('href', hrefFor(filename))\n ;(anchor as HTMLElement).dataset.docLink = filename\n }\n }\n }\n\n let adoptInitialContent = contentElement !== undefined && !memoryRouting\n const showDoc = (doc: Doc) => {\n if (adoptInitialContent) {\n adoptInitialContent = false // leave the pre-rendered HTML untouched\n } else {\n docContent.innerHTML = renderDocMarkdown(doc.text)\n }\n rewriteContentLinks()\n // Stamp each example with its source file (for the source↔doc map). doc.path\n // is the extracted file (.md, or a source file with doc comments).\n LiveExample.insertExamples(docContent, context, doc.path || undefined)\n if (routing === 'path') {\n document.title = projectName\n ? `${doc.title} — ${projectName}`\n : doc.title\n }\n }\n // Always resolve to the RAW doc from the original array — docs reached via the\n // app.docs proxy expose BoxedScalar fields (doc.text), which break marked().\n const navigateTo = (filename: string) => {\n const doc = docs.find((d) => d.filename === filename) || docs[0]\n app.currentDoc = doc as any\n showDoc(doc)\n refreshNav(true)\n }\n\n // User-initiated navigation: record the new location (history for path/query,\n // the onRouteChange callback for memory) and then render the doc. Every nav\n // click funnels through here so memory mode never touches window.history.\n const go = (filename: string) => {\n // If the source editor is open with unsaved changes, confirm before leaving;\n // on confirm it discards + closes, otherwise navigation is aborted.\n if (!confirmLeaveEditor()) return\n if (memoryRouting) {\n onRouteChange?.(slugFor(filename))\n } else {\n const href = hrefFor(filename)\n window.history.pushState({ href }, '', href)\n }\n navigateTo(filename)\n }\n\n // Intercept clicks on internal doc links anywhere in the rendered content so\n // they navigate client-side instead of reloading the page. Plain left-clicks\n // only — modified clicks / middle-clicks / new-tab / download links fall\n // through to the browser. Works for both freshly-rendered and statically\n // pre-rendered (adopted) content, resolving the href at click time.\n docContent.addEventListener('click', (event: MouseEvent) => {\n if (\n event.defaultPrevented ||\n event.button !== 0 ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey\n )\n return\n const anchor = (event.target as HTMLElement).closest(\n 'a'\n ) as HTMLAnchorElement | null\n if (!anchor || anchor.target === '_blank' || anchor.hasAttribute('download'))\n return\n const filename = docFilenameForHref(anchor)\n if (filename === null) return\n event.preventDefault()\n go(filename)\n })\n\n // ── Edit page source (Foundation B / #4) ──────────────────────────────────\n // The \"view source\" affordance opens a menu: edit the whole source file in a\n // code editor that fills the content area, preview the result in-browser, and\n // save (dev: write the repo file via /__docstore/source; the watcher rebuilds)\n // or download it. Source is read from the dev endpoint, falling back to GitHub\n // raw, so editing works on the deployed site too (save there = download).\n const editorModeFor = (p: string): string =>\n p.endsWith('.md')\n ? 'markdown'\n : p.endsWith('.css')\n ? 'css'\n : p.endsWith('.ts') || p.endsWith('.tjs')\n ? 'typescript'\n : 'javascript'\n\n // Pure mirror of docs.ts extraction: a .md *is* the markdown; a source file is\n // the concatenation of its doc-comment blocks. Lets us preview an edit in the\n // browser with no rebuild.\n const docMarkdownFromSource = (content: string, p: string): string => {\n if (p.endsWith('.md')) return content\n const blocks = content.match(/\\/\\*#[\\s\\S]+?\\*\\//g) || []\n return blocks.map((s) => s.substring(3, s.length - 2).trim()).join('\\n\\n')\n }\n\n const githubRawUrl = (p: string): string | null => {\n const gh = projectLinks.github\n if (!gh || !p) return null\n const m = gh.match(/github\\.com\\/([^/]+)\\/([^/]+?)(?:\\.git)?\\/?$/)\n return m ? `https://raw.githubusercontent.com/${m[1]}/${m[2]}/main/${p}` : null\n }\n\n const loadSource = async (p: string): Promise<string | null> => {\n try {\n const r = await fetch(`/__docstore/source?file=${encodeURIComponent(p)}`)\n if (r.ok) return await r.text()\n } catch {\n // dev endpoint not available — fall through to GitHub raw\n }\n const raw = githubRawUrl(p)\n if (raw) {\n try {\n const r = await fetch(raw)\n if (r.ok) return await r.text()\n } catch {\n // offline / no network\n }\n }\n return null\n }\n\n const saveSourceToDisk = async (p: string, content: string): Promise<boolean> => {\n try {\n const r = await fetch('/__docstore/source', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ file: p, content }),\n })\n return r.ok\n } catch {\n return false\n }\n }\n\n const downloadText = (filename: string, content: string): void => {\n const url = URL.createObjectURL(new Blob([content], { type: 'text/plain' }))\n const link = a({ href: url, download: filename }) as HTMLAnchorElement\n link.click()\n setTimeout(() => URL.revokeObjectURL(url), 1000)\n }\n\n let editUI: {\n editor: CodeEditor\n doc: Doc\n view: 'edit' | 'preview' | 'diff'\n // The source as loaded (and re-baselined on save) — compared against the\n // editor value to detect unsaved changes when navigating away.\n original: string\n } | null = null\n\n const editorHasUnsavedChanges = (): boolean =>\n editUI !== null && editUI.editor.value !== editUI.original\n\n // Tear the editor down without re-rendering the current doc (the caller is\n // about to navigate). exitEditSource() restores the current doc instead.\n const closeEditor = (): void => {\n if (!editUI) return\n editUI.editor.remove()\n editUI = null\n docContent.style.display = ''\n }\n\n // Called before in-app navigation: if the editor is open with unsaved changes,\n // confirm discarding them. Returns false to abort navigation.\n const confirmLeaveEditor = (): boolean => {\n if (!editUI) return true\n if (\n editorHasUnsavedChanges() &&\n !window.confirm('Discard unsaved changes to the source?')\n ) {\n return false\n }\n closeEditor()\n return true\n }\n\n // Switch the source editor between the raw editor, the rendered preview, and a\n // diff of the edits against the loaded original. preview/diff render into the\n // doc-content area; edit shows the CodeEditor.\n const setSourceView = (view: 'edit' | 'preview' | 'diff'): void => {\n if (!editUI) return\n editUI.view = view\n if (view === 'preview') {\n docContent.innerHTML = renderDocMarkdown(\n docMarkdownFromSource(editUI.editor.value, editUI.doc.path)\n )\n rewriteContentLinks()\n LiveExample.insertExamples(docContent, context, editUI.doc.path || undefined)\n } else if (view === 'diff') {\n docContent.replaceChildren(\n tosiDiff({\n original: editUI.original,\n modified: editUI.editor.value,\n style: { display: 'block', width: '100%', height: '100%' },\n })\n )\n }\n docContent.style.display = view === 'edit' ? 'none' : ''\n editUI.editor.style.display = view === 'edit' ? 'block' : 'none'\n }\n\n const exitEditSource = (): void => {\n if (!editUI) return\n const filename = String(app.currentDoc.filename)\n closeEditor()\n navigateTo(filename) // restore the canonical rendered doc\n }\n\n const saveSourceEdit = async (): Promise<void> => {\n if (!editUI) return\n const { doc, editor } = editUI\n const ok = await saveSourceToDisk(doc.path, editor.value)\n if (ok) {\n editUI.original = editor.value // saved — this is the new clean baseline\n setSourceView('preview') // the watcher also rebuilds in the background\n } else {\n // No write endpoint (deployed site) — hand the file back for the repo.\n downloadText(doc.path.split('/').pop() || 'source.txt', editor.value)\n }\n }\n\n const enterEditSource = async (doc: Doc): Promise<void> => {\n if (editUI) return\n const content = await loadSource(doc.path)\n if (content === null) {\n window.alert(`Could not load source for ${doc.path}`)\n return\n }\n const editor = codeEditor({ mode: editorModeFor(doc.path) }) as CodeEditor\n // No toolbar — the Source menu carries the edit controls (it adapts while\n // editing), so the editor fills the whole content area.\n editor.style.cssText = 'display:block; width:100%; height:100%; border:none;'\n editor.value = content\n const container = docContent.parentElement as HTMLElement\n container.append(editor)\n editUI = { editor, doc, view: 'edit', original: content }\n setSourceView('edit')\n }\n\n const openSourceMenu = (target: HTMLElement): void => {\n const doc = docs.find(\n (d) => String(d.filename) === String(app.currentDoc.filename)\n )\n if (!doc) return\n const fileName = (path: string) => path.split('/').pop() || path\n\n // While editing, the Source menu becomes the editor's controls (no separate\n // toolbar). Otherwise it offers entry points: edit, view on GitHub, download.\n const menuItems = editUI\n ? [\n ...(editUI.view !== 'edit'\n ? [{ caption: 'Edit', icon: 'edit', action: () => setSourceView('edit') }]\n : []),\n ...(editUI.view !== 'preview'\n ? [{ caption: 'Preview', icon: 'eye', action: () => setSourceView('preview') }]\n : []),\n {\n caption: 'View changes',\n icon: 'code',\n action: () => setSourceView('diff'),\n enabled: () => editorHasUnsavedChanges(),\n },\n null,\n { caption: 'Save to source', icon: 'save', action: () => void saveSourceEdit() },\n {\n caption: 'Download',\n icon: 'download',\n action: () => downloadText(fileName(editUI!.doc.path), editUI!.editor.value),\n },\n null,\n { caption: 'Close editor', icon: 'x', action: exitEditSource },\n ]\n : [\n { caption: 'Edit page source', icon: 'edit', action: () => void enterEditSource(doc) },\n ...(projectLinks.github && doc.path && doc.path !== 'README.md'\n ? [\n {\n caption: 'View on GitHub',\n icon: 'github',\n action: () => {\n window.open(`${projectLinks.github}/blob/main/${doc.path}`, '_blank')\n },\n },\n ]\n : []),\n {\n caption: 'Download source',\n icon: 'download',\n action: () =>\n void loadSource(doc.path).then((c) => {\n if (c !== null) downloadText(fileName(doc.path), c)\n }),\n },\n ]\n\n popMenu({\n target,\n // The trigger is position:fixed at the top-right; `auto` placement opens\n // upward into zero space and collapses the menu, so open below-left.\n position: 'sw',\n menuItems,\n })\n }\n\n // ── Hierarchical nav (path routing) ───────────────────────────────────────\n // Build nested <details> from the doc tree; current-highlight, test status,\n // search visibility, and auto-open are applied imperatively by refreshNav.\n const navStyle = {\n slot: 'nav',\n // .doc-nav so the shared nav CSS (list reset, indentation) matches the\n // runtime nav too, not just the static pre-rendered <nav class=\"doc-nav\">.\n class: 'doc-nav',\n style: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n height: 'calc(100% - 44px)',\n overflowY: 'scroll',\n },\n }\n\n const buildHierarchicalNav = (): HTMLElement => {\n const roots = buildNavTree(docs as any, slugMap)\n const leaves = new Map<string, { li: HTMLElement; link: HTMLElement }>()\n const branches: {\n li: HTMLElement\n el: HTMLDetailsElement\n link: HTMLElement\n filename: string\n subtree: string[]\n }[] = []\n\n const subtreeFilenames = (node: NavNode<any>): string[] => {\n const out = [node.doc.filename]\n for (const c of node.children) out.push(...subtreeFilenames(c))\n return out\n }\n\n const navClick = (doc: Doc) => (event: Event) => {\n // Use the href from the closure, not the event — the click can land on a\n // child of the <a> (the localized label), so event.currentTarget/target\n // isn't reliably the anchor.\n const nav = (event.target as HTMLElement).closest(\n 'tosi-sidenav'\n ) as TosiSidenav | null\n if (nav) nav.contentVisible = true\n go(String(doc.filename))\n event.preventDefault()\n const results = pageTestResults[doc.filename]\n if (results && !results.passed) {\n setTimeout(() => {\n const failed = document.querySelector('tosi-example.-test-failed')\n if (failed)\n failed.scrollIntoView({ behavior: 'smooth', block: 'center' })\n }, 100)\n }\n }\n\n const renderNode = (node: NavNode<any>): HTMLElement => {\n const link = a(\n {\n class: 'doc-link',\n href: hrefFor(node.doc.filename),\n onClick: navClick(node.doc),\n },\n tosiLocalized(node.doc.title)\n )\n if (node.children.length === 0) {\n const item = li(link)\n leaves.set(node.doc.filename, { li: item, link })\n return item\n }\n const det = details(\n summary(link),\n ul(...node.children.map(renderNode))\n ) as HTMLDetailsElement\n const item = li(det)\n branches.push({\n li: item,\n el: det,\n link,\n filename: node.doc.filename,\n subtree: subtreeFilenames(node),\n })\n return item\n }\n\n const root = div(navStyle, ul(...roots.map(renderNode)))\n\n // Search is computed straight from the raw docs (plain strings) — going\n // through app.docs gives BoxedScalars / unreliable write-through.\n const matchesSearch = (filename: string, needle: string): boolean => {\n if (!needle) return true\n const doc = docs.find((d) => d.filename === filename) as any\n return (\n !!doc &&\n (String(doc.title).toLocaleLowerCase().includes(needle) ||\n String(doc.text).toLocaleLowerCase().includes(needle))\n )\n }\n const applyStatus = (link: HTMLElement, filename: string, current: string) => {\n link.classList.toggle('current', filename === current)\n const r = pageTestResults[filename]\n link.classList.toggle('-test-passed', !!r && r.passed)\n link.classList.toggle('-test-failed', !!r && !r.passed)\n }\n\n refreshNav = (resetOpen = false) => {\n // app.currentDoc.filename is a BoxedScalar; coerce so === / includes work.\n const cur = app.currentDoc as any\n const current = cur && cur.filename != null ? String(cur.filename) : ''\n const needle = searchField.value.trim().toLocaleLowerCase()\n\n // Use inline display (not the [hidden] attr): an author `display` rule on\n // .doc-nav li would override [hidden]'s display:none.\n for (const [filename, { li: item, link }] of leaves) {\n item.style.display = matchesSearch(filename, needle) ? '' : 'none'\n applyStatus(link, filename, current)\n }\n for (const { li: item, el, link, filename, subtree } of branches) {\n // Visible if the section name matches, or any descendant leaf is shown.\n const visible =\n matchesSearch(filename, needle) ||\n subtree.some(\n (fn) => leaves.has(fn) && leaves.get(fn)!.li.style.display !== 'none'\n )\n item.style.display = visible ? '' : 'none'\n applyStatus(link, filename, current)\n // While searching, expand sections with matches. On navigation/clear\n // (resetOpen), collapse everything except the current doc's section.\n // Otherwise (e.g. test-status refresh) leave user toggles alone.\n if (needle) el.open = visible\n else if (resetOpen) el.open = subtree.includes(current)\n else if (subtree.includes(current)) el.open = true\n }\n }\n refreshNav(true)\n return root\n }\n\n const navContent =\n routing !== 'query'\n ? buildHierarchicalNav()\n : div(\n {\n ...navStyle,\n bindList: {\n idPath: 'filename',\n hiddenProp: 'hidden',\n value: app.docs,\n },\n },\n template(\n a(\n {\n class: 'doc-link',\n bindCurrent: 'app.currentDoc.filename',\n bindDocLink: '^.filename',\n bindTestStatus: '^.testStatus',\n onClick(event: Event) {\n const doc = getListItem(event.target as HTMLElement)\n const nav = (event.target as HTMLElement).closest(\n 'tosi-sidenav'\n ) as TosiSidenav\n nav.contentVisible = true\n go(String((doc as Doc).filename))\n event.preventDefault()\n },\n },\n tosiLocalized({ bindText: '^.title' })\n )\n )\n )\n\n const container = div(\n {\n style: {\n display: 'flex',\n flexDirection: 'column',\n maxWidth: '100vw',\n height: '100vh',\n overflow: 'hidden',\n },\n },\n header(...headerContent),\n tosiSidenav(\n {\n name: 'Documentation',\n navSize,\n minSize,\n style: {\n flex: '1 1 auto',\n overflow: 'hidden',\n },\n onChange() {\n const nav = document.querySelector(\n TosiSidenav.tagName!\n ) as TosiSidenav\n app.compact = nav.compact as any\n },\n },\n searchField,\n navContent,\n div(\n {\n style: {\n position: 'relative',\n overflowY: 'scroll',\n height: '100%',\n },\n },\n button(\n {\n class: 'view-source',\n style: {\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n position: 'fixed',\n top: 'calc(var(--xin-header-height, 60px) + 5px)',\n right: '5px',\n // Above the code editor (which fills the content area); below the\n // popped menu (z 1002).\n zIndex: '100',\n fontSize: '0.875em',\n color: 'var(--brand-color, inherit)',\n // Solid, theme-aware chip so it stays legible over the editor.\n background: 'var(--background, white)',\n border: 'none',\n borderRadius: '4px',\n padding: '3px 8px',\n boxShadow: '0 1px 4px #0003',\n cursor: 'pointer',\n transition: 'opacity 0.2s ease',\n },\n // Opacity + :hover live in CSS (.view-source) — a JS hover handler\n // here would fade the delegation root (the whole page), not the button.\n onClick(event: Event) {\n // tosijs delegates clicks, so event.currentTarget is the delegation\n // root, not the button — resolve the real trigger for menu anchoring.\n const btn = (event.target as HTMLElement).closest(\n '.view-source'\n ) as HTMLElement | null\n if (btn) openSourceMenu(btn)\n },\n bind: {\n value: app.currentDoc,\n binding(element: HTMLButtonElement, doc: Doc) {\n // Show when there's a source file to edit/view (any doc with a\n // path); the menu handles dev-vs-GitHub availability per item.\n element.style.display = doc.path ? 'flex' : 'none'\n },\n },\n },\n icons.code({ style: { _xinIconSize: 16 } }),\n 'Source'\n ),\n docContent\n )\n )\n )\n\n // Render the landing doc (adopts pre-rendered HTML when hydrating).\n showDoc(currentDoc)\n\n // Inject test indicator styles\n StyleSheet('test-indicators', testIndicatorStyleSpec)\n\n // Floating widget for test status\n const testWidget = button(\n {\n class: 'test-widget',\n hidden: true,\n onClick: showTestMenu,\n },\n span({ part: 'label' }, 'Tests'),\n span({ class: 'count', part: 'count' }, '0')\n )\n container.appendChild(testWidget)\n\n let testsRunning = false\n\n function setTestWidgetRunning() {\n testsRunning = true\n testWidget.hidden = false\n testWidget.classList.remove('-passed', '-failed')\n testWidget.classList.add('-running')\n updateTestWidgetDisplay()\n }\n\n function updateTestWidgetDisplay() {\n const labelEl = testWidget.querySelector('[part=\"label\"]')\n const countEl = testWidget.querySelector('[part=\"count\"]')\n\n const totalPassed = Object.values(pageTestResults).reduce(\n (sum, r) => sum + r.totalPassed,\n 0\n )\n const totalFailed = Object.values(pageTestResults).reduce(\n (sum, r) => sum + r.totalFailed,\n 0\n )\n\n if (labelEl) {\n if (testsRunning) {\n labelEl.textContent = 'Running'\n } else if (totalFailed > 0) {\n labelEl.textContent = 'Failed'\n } else if (totalPassed > 0) {\n labelEl.textContent = 'Passed'\n } else {\n labelEl.textContent = 'Tests'\n }\n }\n if (countEl) {\n countEl.textContent =\n totalFailed > 0 ? String(totalFailed) : String(totalPassed)\n }\n }\n\n function updateTestWidget() {\n const totalFailed = Object.values(pageTestResults).reduce(\n (sum, r) => sum + r.totalFailed,\n 0\n )\n\n if (testsRunning && pagesTested >= pagesWithTests) {\n // Tests complete\n testsRunning = false\n testWidget.classList.remove('-running')\n if (totalFailed > 0) {\n testWidget.classList.add('-failed')\n testWidget.classList.remove('-passed')\n testWidget.hidden = false\n } else {\n testWidget.classList.add('-passed')\n testWidget.classList.remove('-failed')\n testWidget.hidden = false // Show briefly before fade\n }\n }\n\n updateTestWidgetDisplay()\n }\n\n function showTestMenu() {\n const failedPages = Object.entries(pageTestResults).filter(\n ([, results]) => !results.passed\n )\n\n const menuItems: any[] = []\n\n for (const [filename, results] of failedPages) {\n const doc = docs.find((d) => d.filename === filename)\n const failedTests = results.tests.filter((t) => !t.passed)\n\n for (const test of failedTests) {\n menuItems.push({\n caption: `${doc?.title || filename}: ${test.name}`,\n action: () => {\n // Navigate to the page\n const docObj = app.docs.find(\n (d: any) => String(d.filename) === filename\n )\n if (docObj) {\n go(filename)\n // Scroll to failing test after render\n setTimeout(() => {\n const failedExample = document.querySelector(\n 'tosi-example.-test-failed'\n )\n if (failedExample) {\n failedExample.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n })\n }\n }, 100)\n }\n },\n })\n }\n }\n\n if (menuItems.length > 0) {\n menuItems.push(null) // separator\n }\n\n menuItems.push({\n icon: 'copy',\n caption: 'Copy test results to clipboard',\n action: () => {\n const report = generateTestReport()\n navigator.clipboard.writeText(report)\n },\n })\n\n popMenu({\n target: testWidget,\n menuItems,\n })\n }\n\n function generateTestReport(): string {\n const lines: string[] = ['# Test Results', '']\n let totalPassed = 0\n let totalFailed = 0\n\n for (const [filename, results] of Object.entries(pageTestResults)) {\n const doc = docs.find((d) => d.filename === filename)\n const title = doc?.title || filename\n\n totalPassed += results.totalPassed\n totalFailed += results.totalFailed\n\n if (results.tests.length > 0) {\n lines.push(`## ${title}`)\n lines.push('')\n for (const test of results.tests) {\n const icon = test.passed ? '✓' : '✗'\n const line = test.error\n ? `- ${icon} ${test.name}: ${test.error}`\n : `- ${icon} ${test.name}`\n lines.push(line)\n }\n lines.push('')\n }\n }\n\n lines.unshift(\n `**Summary: ${totalPassed} passed, ${totalFailed} failed**`,\n ''\n )\n\n return lines.join('\\n')\n }\n\n // Detect if running as background test iframe (never for an embedded browser —\n // it shares the host page's URL but isn't the test target).\n const searchParams = new URLSearchParams(window.location.search)\n const isTestFrame = !memoryRouting && searchParams.get('_testMode') === '1'\n const testFrameFilename = isTestFrame ? filenameFromLocation() : null\n\n // Listen for test completion events\n container.addEventListener('testcomplete', ((event: CustomEvent) => {\n handleTestComplete(event)\n updateTestWidget()\n\n // If running in test iframe, post results to parent\n if (isTestFrame && window.parent !== window && testFrameFilename) {\n const { results } = event.detail as { results: TestResults }\n window.parent.postMessage(\n { type: 'tosi-test-results', filename: testFrameFilename, results },\n '*'\n )\n }\n }) as EventListener)\n\n // If running as test iframe, signal when all tests on this page are done\n if (isTestFrame && testFrameFilename) {\n const signalDone = () => {\n const examples = container.querySelectorAll('tosi-example')\n const withTests = [...examples].filter((ex) =>\n ex.classList.contains('-has-tests')\n )\n const running = withTests.filter((ex) =>\n ex.classList.contains('-test-running')\n )\n if (withTests.length > 0 && running.length === 0) {\n window.parent.postMessage(\n { type: 'tosi-tests-done', filename: testFrameFilename },\n '*'\n )\n } else {\n setTimeout(signalDone, 100)\n }\n }\n // Give time for examples to start running\n setTimeout(signalDone, 500)\n }\n\n // Background test runner for all doc pages\n const runBackgroundTests = async () => {\n if (backgroundTestsStarted) return\n if (!testManager.enabled.value) return\n if (isTestFrame) return // Don't run background tests in test iframe\n backgroundTestsStarted = true\n\n // Find all docs that have test blocks\n const docsWithTests = docs.filter((doc) => doc.text.includes('```test'))\n pagesWithTests = docsWithTests.length\n\n if (pagesWithTests > 0) {\n setTestWidgetRunning()\n }\n\n if (pagesWithTests === 0) {\n if (testResultsResolve) {\n testResultsResolve({ passed: 0, failed: 0, pages: {} })\n testResultsResolve = undefined\n }\n return\n }\n\n const currentFilename = String(app.currentDoc.filename)\n\n // Create a hidden iframe that loads the full page. Keep its real 800x600\n // layout size (layout-dependent example tests need it) but park it\n // off-screen rather than rely on opacity:0 over the visible page — Chromium\n // (and haltija on top of it) still composites a 0-opacity layer at 0,0,\n // which flashes as the frame navigates page to page.\n const testFrame = document.createElement('iframe')\n testFrame.style.cssText =\n 'position: fixed; left: -10000px; top: 0; width: 800px; height: 600px; opacity: 0; pointer-events: none;'\n document.body.appendChild(testFrame)\n\n // Listen for test results posted from the iframe\n const messageHandler = (event: MessageEvent) => {\n if (event.data?.type !== 'tosi-test-results') return\n const { filename, results } = event.data as {\n type: string\n filename: string\n results: TestResults\n }\n if (!pageTestResults[filename]) {\n pageTestResults[filename] = {\n passed: true,\n tests: [],\n totalPassed: 0,\n totalFailed: 0,\n }\n }\n const pageResults = pageTestResults[filename]\n pageResults.tests.push(...results.tests)\n pageResults.totalPassed += results.passed\n pageResults.totalFailed += results.failed\n pageResults.passed = pageResults.totalFailed === 0\n updateDocTestStatus(filename)\n updateTestWidget()\n }\n window.addEventListener('message', messageHandler)\n\n for (const doc of docsWithTests) {\n // Skip current page — it runs tests naturally\n if (doc.filename === currentFilename) continue\n\n // Navigate iframe to the page\n testFrame.src =\n routing === 'path'\n ? `${window.location.origin}${hrefFor(doc.filename)}?_testMode=1`\n : `${window.location.origin}${window.location.pathname}?${doc.filename}&_testMode=1`\n\n // Wait for the iframe to signal it's done (max 30s per page)\n await new Promise<void>((resolve) => {\n const deadline = Date.now() + 30_000\n const onDone = (event: MessageEvent) => {\n if (\n event.data?.type === 'tosi-tests-done' &&\n event.data.filename === doc.filename\n ) {\n window.removeEventListener('message', onDone)\n resolve()\n }\n }\n window.addEventListener('message', onDone)\n setTimeout(() => {\n window.removeEventListener('message', onDone)\n resolve()\n }, deadline - Date.now())\n })\n\n markPageTested(doc.filename)\n }\n\n // Clean up\n window.removeEventListener('message', messageHandler)\n testFrame.remove()\n\n // Mark current page as tested if it has tests\n if (docsWithTests.some((d) => d.filename === currentFilename)) {\n setTimeout(() => markPageTested(currentFilename), 1000)\n }\n }\n\n // Run background tests when enabled (initially or when toggled on)\n const startBackgroundTests = () => {\n if (!testManager.enabled.value) return\n if (isLocalhost) {\n setTimeout(runBackgroundTests, 1000)\n } else {\n const currentHasTests = currentDoc.text.includes('```test')\n if (currentHasTests) {\n pagesWithTests = 1\n setTestWidgetRunning()\n setTimeout(() => markPageTested(currentDoc.filename), 2000)\n } else if (testResultsResolve) {\n testResultsResolve({ passed: 0, failed: 0, pages: {} })\n testResultsResolve = undefined\n }\n }\n }\n\n // Start now if enabled, and watch for toggle. A memory-routed (embedded)\n // browser never spawns the test-runner iframes (they'd navigate the host site).\n if (!memoryRouting) {\n startBackgroundTests()\n testManager.enabled.observe(startBackgroundTests)\n }\n\n // Memory routing: let the host drive navigation programmatically (by slug) and\n // read the current slug back, so the browser can live in a floating panel etc.\n if (memoryRouting) {\n ;(container as any).navigate = (slug: string) =>\n navigateTo(filenameForSlug(slug) || slug)\n Object.defineProperty(container, 'currentSlug', {\n get: () => slugFor(String(app.currentDoc.filename)),\n })\n }\n\n return container as HTMLElement\n}\n",
42
+ "/*#\n# doc-browser\n\nThe `tosijs-ui` library provides everything you need to create a self-documented testbed similar\nto the [tosijs-ui documentation site](https://ui.tosijs.net). It's like Storybook but much simpler\nto set up and maintain.\n\n## Quick Start\n\n### 1. Extract Documentation\n\nUse the CLI tool to extract documentation from your source files:\n\n```bash\nnpx tosijs-ui-docs --dirs src,README.md --output docs.json\n```\n\nThis scans for:\n\n- `.md` files (uses entire content)\n- Multi-line comments starting with `/*#` in `.ts`, `.js`, `.css` files\n\n### 2. Create Your Doc Browser\n\n```typescript\nimport { createDocBrowser } from 'tosijs-ui'\nimport * as mylib from './my-library.js'\nimport docs from './docs.json'\n\nconst browser = createDocBrowser({\n docs,\n context: { mylib },\n projectName: 'My Project',\n projectLinks: {\n github: 'https://github.com/user/project',\n npm: 'https://www.npmjs.com/package/project',\n },\n})\n\ndocument.body.append(browser)\n```\n\n### 3. Add Live Examples in Your Docs\n\nIn your source files or markdown, use code fences. Any sequence of\nhtml, js, and css code examples will be turned in to a live, interactive\nexample.\n\n /*#\n # My Component\n\n This component does amazing things!\n\n ```html\n <my-component></my-component>\n ```\n ```js\n import { myComponent } from 'mylib'\n preview.append(myComponent({ value: 'Hello!' }))\n ```\n ```css\n my-component {\n color: blue;\n }\n ```\n *‎/\n\n export class MyComponent extends Component {\n // ...\n }\n\n export const myComponent = MyComponent.elementCreator({\n tag: 'my-component'\n })\n\n## Documentation Format\n\n### Inline Comments\n\nStart multi-line comments with `/*#` to mark them as documentation:\n\n```typescript\n/*#\n# Component Name\n\nDescription and examples go here...\n*‎/\n```\n\n### Metadata\n\nControl sort order with JSON metadata:\n\n```\n<!--{ \"pin\": \"bottom\" }-->\n```\n\nor\n\n```\n/*{ \"pin\": \"bottom\" }*‎/\n```\n\n## Programmatic API\n\n```typescript\nimport { extractDocs, saveDocsJSON } from 'tosijs-ui'\n\nconst docs = extractDocs({\n dirs: ['src', 'README.md'],\n ignore: ['node_modules', 'dist'],\n})\n\nsaveDocsJSON(docs, './docs.json')\n\n// Or use the docs directly\nimport { createDocBrowser } from 'tosijs-ui'\nconst browser = createDocBrowser({ docs, context: { mylib } })\n```\n\n## createDocBrowser Options\n\n```typescript\ninterface DocBrowserOptions {\n docs: Doc[] // Array of documentation objects\n context?: Record<string, any> // Modules for live examples\n projectName?: string // Display name\n projectLinks?: ProjectLinks // Links to show in header\n navSize?: number // Nav width (default: 200)\n minSize?: number // Min width before compact (default: 600)\n}\n\ninterface ProjectLinks {\n github?: string\n npm?: string\n discord?: string\n blog?: string\n tosijs?: string\n bundle?: string\n cdn?: string\n [key: string]: string | undefined\n}\n```\n\n## See Also\n\nThe `tosijs-ui` demo is a complete working example. See:\n\n- `/demo/src/index.ts` - How the doc browser is set up\n- `/bin/docs.ts` - The extraction tool\n- `/src/doc-browser.ts` - The createDocBrowser implementation\n*/\n/*{\"pin\":\"bottom\",\"parent\":\"Appendices\"}*/\n\nimport {\n elements,\n vars,\n varDefault,\n bindings,\n touch,\n getListItem,\n debounce,\n tosi,\n StyleSheet,\n XinStyleSheet,\n} from 'tosijs'\nimport { buildSlugMap, pathForSlug, filenameForPath } from './doc-system/routing'\nimport { buildNavTree, NavNode } from './doc-system/nav-tree'\nimport { renderDocMarkdown } from './doc-system/render'\nimport { LiveExample, testManager } from './live-example'\nimport { TestResults } from './live-example/test-harness'\nimport { tosiSidenav, TosiSidenav } from './side-nav'\nimport { icons } from './icons'\nimport { tosiLocalized } from './localize'\nimport { popMenu } from './menu'\nimport { codeEditor, CodeEditor } from './code-editor'\nimport { tosiDiff } from './diff'\n\n// Types for global test results\nexport interface PageTestResults {\n passed: boolean\n tests: TestResults['tests']\n totalPassed: number\n totalFailed: number\n}\n\nexport interface DocTestResults {\n passed: number\n failed: number\n pages: Record<string, PageTestResults>\n}\n\ndeclare global {\n interface Window {\n __docTestResults?: Promise<DocTestResults>\n }\n}\n\nconst { div, span, a, header, button, template, input, h2, details, summary, ul, li } =\n elements\n\n// Test colors\nconst testColor = {\n pass: varDefault.testColorPass('#0a0'),\n fail: varDefault.testColorFail('#c00'),\n running: varDefault.testColorRunning('#fa0'),\n}\n\n// Test indicator styles - widget inherits button styles from base stylesheet\nconst testIndicatorStyleSpec: XinStyleSheet = {\n '.view-source': { opacity: '0.9' },\n '.view-source:hover': { opacity: '1' },\n '@keyframes test-pulse': {\n '0%, 100%': { opacity: '1' },\n '50%': { opacity: '0.7' },\n },\n '@keyframes test-appear': {\n from: { opacity: '0', transform: 'scale(0.8)' },\n to: { opacity: '1', transform: 'scale(1)' },\n },\n '@keyframes test-fade': {\n '0%, 20%': { opacity: '1', transform: 'scale(1)' },\n '70%': { opacity: '1', transform: 'scale(1.1)' },\n '100%': { opacity: '0', transform: 'scale(0.9)', pointerEvents: 'none' },\n },\n\n // Hide when tests disabled\n 'body:not(.tests-enabled) .doc-link::after, body:not(.tests-enabled) .test-widget':\n {\n display: 'none !important',\n },\n\n // Nav link dot indicators\n '.doc-link.-test-passed::after, .doc-link.-test-failed::after': {\n content: \"''\",\n width: vars.fontSize50,\n height: vars.fontSize50,\n borderRadius: '50%',\n marginLeft: vars.spacing50,\n display: 'inline-block',\n verticalAlign: 'middle',\n },\n '.doc-link.-test-passed::after': { background: testColor.pass },\n '.doc-link.-test-failed::after': {\n background: testColor.fail,\n animation: 'test-pulse 2s ease-in-out infinite',\n },\n\n // Floating widget - position and colors only, inherits button structure\n '.test-widget': {\n _testBg: testColor.running,\n position: 'fixed',\n bottom: vars.spacing,\n right: vars.spacing,\n zIndex: '1000',\n background: vars.testBg,\n color: 'white',\n gap: vars.spacing50,\n },\n '.test-widget[hidden]': { display: 'none' },\n '.test-widget.-running': {\n _testBg: testColor.running,\n animation:\n 'test-appear 0.3s ease-out, test-pulse 2s ease-in-out 0.3s infinite',\n },\n '.test-widget.-passed': {\n _testBg: testColor.pass,\n animation: 'test-fade 3s ease-out forwards',\n },\n '.test-widget.-failed': {\n _testBg: testColor.fail,\n animation: 'test-pulse 2s ease-in-out infinite',\n },\n\n // Count badge\n '.test-widget .count': {\n background: 'white',\n color: vars.testBg,\n borderRadius: '50%',\n width: vars.lineHeight,\n height: vars.lineHeight,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 'bold',\n },\n\n // Deep-linked example (e.g. arriving at /slug/#example-2): brief highlight pulse\n '@keyframes example-target-pulse': {\n from: { boxShadow: `0 0 0 3px ${varDefault.accent('#007aff')}` },\n to: { boxShadow: '0 0 0 3px transparent' },\n },\n '.example-target': {\n animation: 'example-target-pulse 1.5s ease-out',\n borderRadius: vars.roundedRadius,\n },\n}\n\nexport interface Doc {\n text: string\n title: string\n filename: string\n path: string\n pin?: string\n hidden?: boolean\n testStatus?: 'passed' | 'failed' | 'pending'\n}\n\nexport interface ProjectLinks {\n github?: string\n npm?: string\n discord?: string\n blog?: string\n tosijs?: string\n bundle?: string\n cdn?: string\n [key: string]: string | undefined\n}\n\n/** A configurable link for the header bar or the overflow menu. */\nexport interface LinkItem {\n href: string\n label: string\n /** optional icon name (from `icons`); falls back to the text label if unknown */\n icon?: string\n}\n\n/**\n * How the doc browser maps docs to URLs.\n * - 'query' (default, legacy): single-page app, links are `?filename`.\n * - 'path': clean per-page URLs (`/slug/`), for the static pre-rendered site\n * driven by <tosi-doc-system>. Requires a real page to exist at each path.\n * - 'memory': self-contained — navigation never touches window.history/location\n * and the instance ignores the page URL. For an embedded/nested browser (a\n * live demo, a floating help panel). Drive it via `initialRoute` +\n * `onRouteChange`, and the returned element's `.navigate(slug)` method.\n */\nexport type DocRoutingMode = 'query' | 'path' | 'memory'\n\nexport interface DocBrowserOptions {\n docs: Doc[]\n context?: Record<string, any>\n projectName?: string\n projectLinks?: ProjectLinks\n navSize?: number\n minSize?: number\n routing?: DocRoutingMode\n /**\n * Memory routing only: the slug to show first (instead of the page URL / first\n * doc). Lets a host mount the browser already pointed at a specific doc.\n */\n initialRoute?: string\n /**\n * Memory routing only: called with the current doc's slug whenever in-app\n * navigation happens, so a host can reflect it (e.g. to an attribute).\n */\n onRouteChange?: (slug: string) => void\n /**\n * Header-bar links. When provided, these replace the legacy `projectLinks` icon\n * set in the header (each renders as an icon if `icon` names a known icon, else\n * as its text label). `projectLinks` is still used for the logo and view-source.\n */\n navbarLinks?: LinkItem[]\n /**\n * Pre-rendered content for the landing doc to ADOPT in place (true hydration).\n * When provided, the current page's already-rendered markdown is left untouched\n * — only live examples are wired up — instead of being re-rendered from text.\n * Used by <tosi-doc-system>. Subsequent navigation renders from doc text.\n */\n contentElement?: HTMLElement\n}\n\nexport function createDocBrowser(options: DocBrowserOptions): HTMLElement {\n const {\n docs,\n context = {},\n projectName = '',\n projectLinks = {},\n navSize = 200,\n minSize = 600,\n routing = 'query',\n initialRoute,\n onRouteChange,\n navbarLinks,\n contentElement,\n } = options\n\n // Memory routing is fully self-contained: it never reads or writes\n // window.history/location, so an embedded or nested browser can't hijack the\n // host page's URL (or recurse into it).\n const memoryRouting = routing === 'memory'\n\n // Initialize testStatus on all docs so tosi can track it\n for (const doc of docs) {\n doc.testStatus = undefined\n }\n\n // Routing abstraction — keeps the legacy `?filename` SPA behavior the default,\n // while letting <tosi-doc-system> drive clean `/slug/` URLs off the same docs.\n // Both path and memory routing key off slugs; only legacy query routing doesn't.\n const slugMap = routing === 'query' ? {} : buildSlugMap(docs)\n const slugFor = (filename: string): string => slugMap[filename] ?? filename\n const filenameForSlug = (slug: string): string => {\n for (const d of docs) if (slugFor(d.filename) === slug) return d.filename\n return ''\n }\n const hrefFor = (filename: string): string =>\n routing === 'query' ? `?${filename}` : pathForSlug(slugFor(filename))\n const filenameFromLocation = (): string => {\n // Memory routing ignores the page URL entirely — it starts at initialRoute.\n if (memoryRouting) return initialRoute ? filenameForSlug(initialRoute) : ''\n return routing === 'path'\n ? filenameForPath(document.location.pathname, slugMap)\n : document.location.search !== ''\n ? document.location.search.substring(1).split('&')[0]\n : ''\n }\n\n // Resolve a content-link anchor to one of our docs' filenames, in either the\n // legacy `?filename` form or a clean `/slug/` path — or null for external\n // links, in-page anchors, mailto:, downloads, etc. Used to navigate internal\n // doc links client-side (via go()) instead of triggering a full page reload,\n // and to canonicalize their hrefs for the current routing mode.\n const docFilenameForHref = (anchor: HTMLAnchorElement): string | null => {\n const raw = anchor.getAttribute('href') || ''\n if (raw === '' || raw.startsWith('#')) return null\n let url: URL\n try {\n url = new URL(raw, document.location.href)\n } catch {\n return null\n }\n if (url.origin !== document.location.origin) return null // external\n const known = (filename: string): string | null =>\n docs.some((doc) => doc.filename === filename) ? filename : null\n // Legacy `?filename` form: a single bare filename, not a real query string.\n const query = url.search.replace(/^\\?/, '')\n if (query !== '' && !query.includes('=') && !query.includes('&')) {\n const filename = known(decodeURIComponent(query))\n if (filename) return filename\n }\n // Clean `/slug/` path form (only meaningful when slugs are in play).\n if (!memoryRouting && routing !== 'query') {\n const filename = known(filenameForPath(url.pathname, slugMap))\n if (filename) return filename\n }\n return null\n }\n\n const docName = filenameFromLocation() || docs[0]?.filename || 'README.md'\n\n const currentDoc = docs.find((doc) => doc.filename === docName) || docs[0]\n\n const { app } = tosi({\n app: {\n docs,\n currentDoc,\n compact: false,\n },\n })\n\n // Assigned by the hierarchical nav builder (path routing); re-applies current\n // highlight, test status, search visibility, and auto-open imperatively.\n // resetOpen=true collapses every section except the current doc's.\n let refreshNav: (resetOpen?: boolean) => void = () => {}\n\n // Test result tracking\n const pageTestResults: Record<string, PageTestResults> = {}\n let testResultsResolve: ((results: DocTestResults) => void) | undefined\n let backgroundTestsStarted = false\n let pagesWithTests = 0\n let pagesTested = 0\n\n // Set up global promise for scriptable browser integration. A memory-routed\n // (embedded) browser must not clobber the host page's global.\n if (!memoryRouting) {\n window.__docTestResults = new Promise((resolve) => {\n testResultsResolve = resolve\n })\n }\n\n const updateDocTestStatus = (filename: string) => {\n const results = pageTestResults[filename]\n // Callback receives bare object, return is proxy - cast to work with both\n const doc = (app.docs as unknown as Doc[]).find(\n (d) => d.filename === filename\n )\n if (doc) {\n doc.testStatus = results\n ? results.passed\n ? 'passed'\n : 'failed'\n : undefined\n }\n refreshNav()\n }\n\n const checkAllTestsComplete = () => {\n if (pagesTested >= pagesWithTests && testResultsResolve) {\n const allResults: DocTestResults = {\n passed: 0,\n failed: 0,\n pages: pageTestResults,\n }\n\n for (const pageResults of Object.values(pageTestResults)) {\n allResults.passed += pageResults.totalPassed\n allResults.failed += pageResults.totalFailed\n }\n\n testResultsResolve(allResults)\n testResultsResolve = undefined\n\n // Post results to dev server on localhost (not from test iframes)\n if (isLocalhost && !isTestFrame) {\n fetch('/report', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(allResults),\n }).catch(() => {\n // Ignore errors - server may not support this endpoint\n })\n }\n }\n }\n\n const isLocalhost =\n window.location.hostname === 'localhost' ||\n window.location.hostname === '127.0.0.1'\n\n const handleTestComplete = (event: CustomEvent) => {\n const { results } = event.detail as {\n results: TestResults\n element: LiveExample\n }\n const filename = String(app.currentDoc.filename)\n\n // Reset page results each time (don't accumulate across reloads)\n pageTestResults[filename] = {\n passed: results.failed === 0,\n tests: [...results.tests],\n totalPassed: results.passed,\n totalFailed: results.failed,\n }\n\n updateDocTestStatus(filename)\n }\n\n // Track when a page finishes loading all its tests\n const markPageTested = (_filename: string) => {\n pagesTested++\n checkAllTestsComplete()\n updateTestWidget()\n }\n\n bindings.docLink = {\n toDOM(elt, filename) {\n elt.setAttribute('href', hrefFor(filename))\n ;(elt as HTMLElement).dataset.filename = filename\n },\n }\n\n bindings.current = {\n toDOM(elt, currentFile) {\n elt.classList.toggle(\n 'current',\n currentFile === (elt as HTMLElement).dataset.filename\n )\n },\n }\n\n bindings.testStatus = {\n toDOM(elt, status) {\n elt.classList.remove('-test-passed', '-test-failed')\n if (status === 'passed') {\n elt.classList.add('-test-passed')\n } else if (status === 'failed') {\n elt.classList.add('-test-failed')\n }\n },\n }\n\n const filterDocs = debounce(() => {\n const needle = searchField.value.toLocaleLowerCase()\n app.docs.forEach((doc: any) => {\n doc.hidden =\n !doc.title.toLocaleLowerCase().includes(needle) &&\n !doc.text.toLocaleLowerCase().includes(needle)\n })\n touch(app.docs)\n // resetOpen: when the field is cleared this collapses back to the current\n // section; while typing, matching sections expand via the needle branch.\n refreshNav(true)\n })\n\n const searchField = input({\n slot: 'nav',\n placeholder: 'search',\n type: 'search',\n style: {\n width: 'calc(100% - 10px)',\n margin: '5px',\n },\n onInput: filterDocs,\n })\n\n // Memory routing is decoupled from the page URL, so it ignores browser\n // back/forward (the host owns history, if any).\n if (!memoryRouting) {\n window.addEventListener('popstate', () => {\n // Back/forward while the source editor is open with unsaved changes: the\n // URL already moved, so on \"keep editing\" we push it back to match the\n // still-open editor; on discard we close the editor and navigate.\n if (editUI) {\n if (\n editorHasUnsavedChanges() &&\n !window.confirm('Discard unsaved changes to the source?')\n ) {\n const href = hrefFor(String(editUI.doc.filename))\n window.history.pushState({ href }, '', href)\n return\n }\n closeEditor()\n }\n navigateTo(filenameFromLocation())\n })\n\n // Reload / tab-close / external navigation: native \"leave site?\" prompt when\n // there are unsaved source edits (the only guard the browser allows here).\n window.addEventListener('beforeunload', (event: BeforeUnloadEvent) => {\n if (editorHasUnsavedChanges()) {\n event.preventDefault()\n event.returnValue = ''\n }\n })\n }\n\n const headerContent: any[] = [\n button(\n {\n class: 'iconic',\n style: { color: vars.linkColor },\n title: 'navigation',\n bind: {\n value: app.compact,\n binding: {\n toDOM(element, compact) {\n element.style.display = compact ? '' : 'none'\n ;(element.nextSibling as HTMLElement).style.display = compact\n ? ''\n : 'none'\n },\n },\n },\n onClick() {\n const nav = document.querySelector(\n TosiSidenav.tagName!\n ) as TosiSidenav\n nav.contentVisible = !nav.contentVisible\n },\n },\n icons.menu()\n ),\n span({ style: { flex: '0 0 10px' } }),\n ]\n\n if (projectName) {\n headerContent.push(\n a(\n {\n href: '/',\n style: {\n display: 'flex',\n alignItems: 'center',\n borderBottom: 'none',\n },\n },\n projectLinks.tosijs\n ? icons.tosiUi({\n style: { _xinIconSize: 40, marginRight: 10 },\n })\n : span(),\n h2(projectName)\n )\n )\n }\n\n headerContent.push(span({ class: 'elastic' }))\n\n // A header link renders as an icon (if `icon` names a known icon) or its label.\n const headerLink = (link: LinkItem) => {\n const iconFactory = link.icon ? (icons as any)[link.icon] : undefined\n return a(\n {\n class: iconFactory ? 'iconic' : '',\n title: link.label,\n target: '_blank',\n href: link.href,\n },\n iconFactory ? iconFactory() : link.label\n )\n }\n\n if (navbarLinks) {\n // Configurable link set.\n navbarLinks.forEach((link) => headerContent.push(headerLink(link)))\n } else {\n // Legacy: derive header icons from the known `projectLinks` keys.\n const legacy: Array<[string | undefined, string, string]> = [\n [projectLinks.tosijs, 'tosi', 'tosijs'],\n [projectLinks.discord, 'discord', 'discord'],\n [projectLinks.blog, 'blog', 'blog'],\n [projectLinks.github, 'github', 'github'],\n [projectLinks.npm, 'npm', 'npmjs'],\n ]\n for (const [href, icon, label] of legacy) {\n if (href) headerContent.push(headerLink({ href, label, icon }))\n }\n }\n\n // The rendered-markdown content area. When hydrating a static page we ADOPT the\n // pre-rendered node so the landing page's HTML is never re-rendered; otherwise we\n // render from doc text. Every navigation funnels through navigateTo() -> showDoc().\n const docContent = contentElement || div()\n docContent.classList.add('doc-content')\n Object.assign(docContent.style, {\n display: 'block',\n maxWidth: '44em',\n margin: 'auto',\n padding: '0 1em',\n overflow: 'hidden',\n })\n\n // Adoption is zero-flash hydration of a statically pre-rendered page: it only\n // holds for the page's own path-routed instance, whose static `.doc-content`\n // matches the initial doc. A memory-routed embed's initial doc\n // (initialRoute/docs[0]) has no relation to whatever happens to sit inside the\n // host element (often an empty placeholder), so always render it fresh.\n // Canonicalize internal content links to the current routing mode's href and\n // tag them — so copy-link / right-click / no-JS land on the right page, and a\n // left-click can be short-circuited to client-side nav. Authored docs use the\n // routing-agnostic `?filename` form (the only one resolvable in every mode);\n // this rewrites them to `/slug/` on the static path-routed site, etc.\n const rewriteContentLinks = (): void => {\n for (const anchor of docContent.querySelectorAll('a')) {\n const filename = docFilenameForHref(anchor as HTMLAnchorElement)\n if (filename !== null) {\n anchor.setAttribute('href', hrefFor(filename))\n ;(anchor as HTMLElement).dataset.docLink = filename\n }\n }\n }\n\n // Deep-link to a specific live example: arriving at /slug/#example-2 (or a\n // custom ```js#my-id anchor) scrolls it into view with a brief highlight. The\n // example ids are set by insertExamples, so this runs after it. Skipped in\n // memory routing (which must never touch window.location).\n const scrollToHashExample = (): void => {\n if (memoryRouting) return\n const hash = location.hash.replace(/^#/, '')\n if (!hash) return\n requestAnimationFrame(() => {\n let el: Element | null = null\n try {\n el = docContent.querySelector(`#${CSS.escape(hash)}`)\n } catch {\n el = null\n }\n if (!el) return\n el.scrollIntoView({ block: 'center', behavior: 'smooth' })\n el.classList.add('example-target')\n setTimeout(() => el && el.classList.remove('example-target'), 1600)\n })\n }\n\n let adoptInitialContent = contentElement !== undefined && !memoryRouting\n const showDoc = (doc: Doc) => {\n if (adoptInitialContent) {\n adoptInitialContent = false // leave the pre-rendered HTML untouched\n } else {\n docContent.innerHTML = renderDocMarkdown(doc.text)\n }\n rewriteContentLinks()\n // Stamp each example with its source file (for the source↔doc map). doc.path\n // is the extracted file (.md, or a source file with doc comments).\n LiveExample.insertExamples(docContent, context, doc.path || undefined)\n scrollToHashExample()\n if (routing === 'path') {\n document.title = projectName\n ? `${doc.title} — ${projectName}`\n : doc.title\n }\n }\n // Always resolve to the RAW doc from the original array — docs reached via the\n // app.docs proxy expose BoxedScalar fields (doc.text), which break marked().\n const navigateTo = (filename: string) => {\n const doc = docs.find((d) => d.filename === filename) || docs[0]\n app.currentDoc = doc as any\n showDoc(doc)\n refreshNav(true)\n }\n\n // User-initiated navigation: record the new location (history for path/query,\n // the onRouteChange callback for memory) and then render the doc. Every nav\n // click funnels through here so memory mode never touches window.history.\n const go = (filename: string) => {\n // If the source editor is open with unsaved changes, confirm before leaving;\n // on confirm it discards + closes, otherwise navigation is aborted.\n if (!confirmLeaveEditor()) return\n if (memoryRouting) {\n onRouteChange?.(slugFor(filename))\n } else {\n const href = hrefFor(filename)\n window.history.pushState({ href }, '', href)\n }\n navigateTo(filename)\n }\n\n // Intercept clicks on internal doc links anywhere in the rendered content so\n // they navigate client-side instead of reloading the page. Plain left-clicks\n // only — modified clicks / middle-clicks / new-tab / download links fall\n // through to the browser. Works for both freshly-rendered and statically\n // pre-rendered (adopted) content, resolving the href at click time.\n docContent.addEventListener('click', (event: MouseEvent) => {\n if (\n event.defaultPrevented ||\n event.button !== 0 ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey\n )\n return\n const anchor = (event.target as HTMLElement).closest(\n 'a'\n ) as HTMLAnchorElement | null\n if (!anchor || anchor.target === '_blank' || anchor.hasAttribute('download'))\n return\n const filename = docFilenameForHref(anchor)\n if (filename === null) return\n event.preventDefault()\n go(filename)\n })\n\n // ── Edit page source (Foundation B / #4) ──────────────────────────────────\n // The \"view source\" affordance opens a menu: edit the whole source file in a\n // code editor that fills the content area, preview the result in-browser, and\n // save (dev: write the repo file via /__docstore/source; the watcher rebuilds)\n // or download it. Source is read from the dev endpoint, falling back to GitHub\n // raw, so editing works on the deployed site too (save there = download).\n const editorModeFor = (p: string): string =>\n p.endsWith('.md')\n ? 'markdown'\n : p.endsWith('.css')\n ? 'css'\n : p.endsWith('.ts') || p.endsWith('.tjs')\n ? 'typescript'\n : 'javascript'\n\n // Pure mirror of docs.ts extraction: a .md *is* the markdown; a source file is\n // the concatenation of its doc-comment blocks. Lets us preview an edit in the\n // browser with no rebuild.\n const docMarkdownFromSource = (content: string, p: string): string => {\n if (p.endsWith('.md')) return content\n const blocks = content.match(/\\/\\*#[\\s\\S]+?\\*\\//g) || []\n return blocks.map((s) => s.substring(3, s.length - 2).trim()).join('\\n\\n')\n }\n\n const githubRawUrl = (p: string): string | null => {\n const gh = projectLinks.github\n if (!gh || !p) return null\n const m = gh.match(/github\\.com\\/([^/]+)\\/([^/]+?)(?:\\.git)?\\/?$/)\n return m ? `https://raw.githubusercontent.com/${m[1]}/${m[2]}/main/${p}` : null\n }\n\n const loadSource = async (p: string): Promise<string | null> => {\n try {\n const r = await fetch(`/__docstore/source?file=${encodeURIComponent(p)}`)\n if (r.ok) return await r.text()\n } catch {\n // dev endpoint not available — fall through to GitHub raw\n }\n const raw = githubRawUrl(p)\n if (raw) {\n try {\n const r = await fetch(raw)\n if (r.ok) return await r.text()\n } catch {\n // offline / no network\n }\n }\n return null\n }\n\n const saveSourceToDisk = async (p: string, content: string): Promise<boolean> => {\n try {\n const r = await fetch('/__docstore/source', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ file: p, content }),\n })\n return r.ok\n } catch {\n return false\n }\n }\n\n const downloadText = (filename: string, content: string): void => {\n const url = URL.createObjectURL(new Blob([content], { type: 'text/plain' }))\n const link = a({ href: url, download: filename }) as HTMLAnchorElement\n link.click()\n setTimeout(() => URL.revokeObjectURL(url), 1000)\n }\n\n let editUI: {\n editor: CodeEditor\n doc: Doc\n view: 'edit' | 'preview' | 'diff'\n // The source as loaded (and re-baselined on save) — compared against the\n // editor value to detect unsaved changes when navigating away.\n original: string\n } | null = null\n\n const editorHasUnsavedChanges = (): boolean =>\n editUI !== null && editUI.editor.value !== editUI.original\n\n // Tear the editor down without re-rendering the current doc (the caller is\n // about to navigate). exitEditSource() restores the current doc instead.\n const closeEditor = (): void => {\n if (!editUI) return\n editUI.editor.remove()\n editUI = null\n docContent.style.display = ''\n }\n\n // Called before in-app navigation: if the editor is open with unsaved changes,\n // confirm discarding them. Returns false to abort navigation.\n const confirmLeaveEditor = (): boolean => {\n if (!editUI) return true\n if (\n editorHasUnsavedChanges() &&\n !window.confirm('Discard unsaved changes to the source?')\n ) {\n return false\n }\n closeEditor()\n return true\n }\n\n // Switch the source editor between the raw editor, the rendered preview, and a\n // diff of the edits against the loaded original. preview/diff render into the\n // doc-content area; edit shows the CodeEditor.\n const setSourceView = (view: 'edit' | 'preview' | 'diff'): void => {\n if (!editUI) return\n editUI.view = view\n if (view === 'preview') {\n docContent.innerHTML = renderDocMarkdown(\n docMarkdownFromSource(editUI.editor.value, editUI.doc.path)\n )\n rewriteContentLinks()\n LiveExample.insertExamples(docContent, context, editUI.doc.path || undefined)\n } else if (view === 'diff') {\n docContent.replaceChildren(\n tosiDiff({\n original: editUI.original,\n modified: editUI.editor.value,\n style: { display: 'block', width: '100%', height: '100%' },\n })\n )\n }\n docContent.style.display = view === 'edit' ? 'none' : ''\n editUI.editor.style.display = view === 'edit' ? 'block' : 'none'\n }\n\n const exitEditSource = (): void => {\n if (!editUI) return\n const filename = String(app.currentDoc.filename)\n closeEditor()\n navigateTo(filename) // restore the canonical rendered doc\n }\n\n const saveSourceEdit = async (): Promise<void> => {\n if (!editUI) return\n const { doc, editor } = editUI\n const ok = await saveSourceToDisk(doc.path, editor.value)\n if (ok) {\n editUI.original = editor.value // saved — this is the new clean baseline\n setSourceView('preview') // the watcher also rebuilds in the background\n } else {\n // No write endpoint (deployed site) — hand the file back for the repo.\n downloadText(doc.path.split('/').pop() || 'source.txt', editor.value)\n }\n }\n\n const enterEditSource = async (doc: Doc): Promise<void> => {\n if (editUI) return\n const content = await loadSource(doc.path)\n if (content === null) {\n window.alert(`Could not load source for ${doc.path}`)\n return\n }\n const editor = codeEditor({ mode: editorModeFor(doc.path) }) as CodeEditor\n // No toolbar — the Source menu carries the edit controls (it adapts while\n // editing), so the editor fills the whole content area.\n editor.style.cssText = 'display:block; width:100%; height:100%; border:none;'\n editor.value = content\n const container = docContent.parentElement as HTMLElement\n container.append(editor)\n editUI = { editor, doc, view: 'edit', original: content }\n setSourceView('edit')\n }\n\n const openSourceMenu = (target: HTMLElement): void => {\n const doc = docs.find(\n (d) => String(d.filename) === String(app.currentDoc.filename)\n )\n if (!doc) return\n const fileName = (path: string) => path.split('/').pop() || path\n\n // While editing, the Source menu becomes the editor's controls (no separate\n // toolbar). Otherwise it offers entry points: edit, view on GitHub, download.\n const menuItems = editUI\n ? [\n ...(editUI.view !== 'edit'\n ? [{ caption: 'Edit', icon: 'edit', action: () => setSourceView('edit') }]\n : []),\n ...(editUI.view !== 'preview'\n ? [{ caption: 'Preview', icon: 'eye', action: () => setSourceView('preview') }]\n : []),\n {\n caption: 'View changes',\n icon: 'code',\n action: () => setSourceView('diff'),\n enabled: () => editorHasUnsavedChanges(),\n },\n null,\n { caption: 'Save to source', icon: 'save', action: () => void saveSourceEdit() },\n {\n caption: 'Download',\n icon: 'download',\n action: () => downloadText(fileName(editUI!.doc.path), editUI!.editor.value),\n },\n null,\n { caption: 'Close editor', icon: 'x', action: exitEditSource },\n ]\n : [\n { caption: 'Edit page source', icon: 'edit', action: () => void enterEditSource(doc) },\n ...(projectLinks.github && doc.path && doc.path !== 'README.md'\n ? [\n {\n caption: 'View on GitHub',\n icon: 'github',\n action: () => {\n window.open(`${projectLinks.github}/blob/main/${doc.path}`, '_blank')\n },\n },\n ]\n : []),\n {\n caption: 'Download source',\n icon: 'download',\n action: () =>\n void loadSource(doc.path).then((c) => {\n if (c !== null) downloadText(fileName(doc.path), c)\n }),\n },\n ]\n\n popMenu({\n target,\n // The trigger is position:fixed at the top-right; `auto` placement opens\n // upward into zero space and collapses the menu, so open below-left.\n position: 'sw',\n menuItems,\n })\n }\n\n // ── Hierarchical nav (path routing) ───────────────────────────────────────\n // Build nested <details> from the doc tree; current-highlight, test status,\n // search visibility, and auto-open are applied imperatively by refreshNav.\n const navStyle = {\n slot: 'nav',\n // .doc-nav so the shared nav CSS (list reset, indentation) matches the\n // runtime nav too, not just the static pre-rendered <nav class=\"doc-nav\">.\n class: 'doc-nav',\n style: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n height: 'calc(100% - 44px)',\n overflowY: 'scroll',\n },\n }\n\n const buildHierarchicalNav = (): HTMLElement => {\n const roots = buildNavTree(docs as any, slugMap)\n const leaves = new Map<string, { li: HTMLElement; link: HTMLElement }>()\n const branches: {\n li: HTMLElement\n el: HTMLDetailsElement\n link: HTMLElement\n filename: string\n subtree: string[]\n }[] = []\n\n const subtreeFilenames = (node: NavNode<any>): string[] => {\n const out = [node.doc.filename]\n for (const c of node.children) out.push(...subtreeFilenames(c))\n return out\n }\n\n const navClick = (doc: Doc) => (event: Event) => {\n // Use the href from the closure, not the event — the click can land on a\n // child of the <a> (the localized label), so event.currentTarget/target\n // isn't reliably the anchor.\n const nav = (event.target as HTMLElement).closest(\n 'tosi-sidenav'\n ) as TosiSidenav | null\n if (nav) nav.contentVisible = true\n go(String(doc.filename))\n event.preventDefault()\n const results = pageTestResults[doc.filename]\n if (results && !results.passed) {\n setTimeout(() => {\n const failed = document.querySelector('tosi-example.-test-failed')\n if (failed)\n failed.scrollIntoView({ behavior: 'smooth', block: 'center' })\n }, 100)\n }\n }\n\n const renderNode = (node: NavNode<any>): HTMLElement => {\n const link = a(\n {\n class: 'doc-link',\n href: hrefFor(node.doc.filename),\n onClick: navClick(node.doc),\n },\n tosiLocalized(node.doc.title)\n )\n if (node.children.length === 0) {\n const item = li(link)\n leaves.set(node.doc.filename, { li: item, link })\n return item\n }\n const det = details(\n summary(link),\n ul(...node.children.map(renderNode))\n ) as HTMLDetailsElement\n const item = li(det)\n branches.push({\n li: item,\n el: det,\n link,\n filename: node.doc.filename,\n subtree: subtreeFilenames(node),\n })\n return item\n }\n\n const root = div(navStyle, ul(...roots.map(renderNode)))\n\n // Search is computed straight from the raw docs (plain strings) — going\n // through app.docs gives BoxedScalars / unreliable write-through.\n const matchesSearch = (filename: string, needle: string): boolean => {\n if (!needle) return true\n const doc = docs.find((d) => d.filename === filename) as any\n return (\n !!doc &&\n (String(doc.title).toLocaleLowerCase().includes(needle) ||\n String(doc.text).toLocaleLowerCase().includes(needle))\n )\n }\n const applyStatus = (link: HTMLElement, filename: string, current: string) => {\n link.classList.toggle('current', filename === current)\n const r = pageTestResults[filename]\n link.classList.toggle('-test-passed', !!r && r.passed)\n link.classList.toggle('-test-failed', !!r && !r.passed)\n }\n\n refreshNav = (resetOpen = false) => {\n // app.currentDoc.filename is a BoxedScalar; coerce so === / includes work.\n const cur = app.currentDoc as any\n const current = cur && cur.filename != null ? String(cur.filename) : ''\n const needle = searchField.value.trim().toLocaleLowerCase()\n\n // Use inline display (not the [hidden] attr): an author `display` rule on\n // .doc-nav li would override [hidden]'s display:none.\n for (const [filename, { li: item, link }] of leaves) {\n item.style.display = matchesSearch(filename, needle) ? '' : 'none'\n applyStatus(link, filename, current)\n }\n for (const { li: item, el, link, filename, subtree } of branches) {\n // Visible if the section name matches, or any descendant leaf is shown.\n const visible =\n matchesSearch(filename, needle) ||\n subtree.some(\n (fn) => leaves.has(fn) && leaves.get(fn)!.li.style.display !== 'none'\n )\n item.style.display = visible ? '' : 'none'\n applyStatus(link, filename, current)\n // While searching, expand sections with matches. On navigation/clear\n // (resetOpen), collapse everything except the current doc's section.\n // Otherwise (e.g. test-status refresh) leave user toggles alone.\n if (needle) el.open = visible\n else if (resetOpen) el.open = subtree.includes(current)\n else if (subtree.includes(current)) el.open = true\n }\n }\n refreshNav(true)\n return root\n }\n\n const navContent =\n routing !== 'query'\n ? buildHierarchicalNav()\n : div(\n {\n ...navStyle,\n bindList: {\n idPath: 'filename',\n hiddenProp: 'hidden',\n value: app.docs,\n },\n },\n template(\n a(\n {\n class: 'doc-link',\n bindCurrent: 'app.currentDoc.filename',\n bindDocLink: '^.filename',\n bindTestStatus: '^.testStatus',\n onClick(event: Event) {\n const doc = getListItem(event.target as HTMLElement)\n const nav = (event.target as HTMLElement).closest(\n 'tosi-sidenav'\n ) as TosiSidenav\n nav.contentVisible = true\n go(String((doc as Doc).filename))\n event.preventDefault()\n },\n },\n tosiLocalized({ bindText: '^.title' })\n )\n )\n )\n\n const container = div(\n {\n style: {\n display: 'flex',\n flexDirection: 'column',\n maxWidth: '100vw',\n height: '100vh',\n overflow: 'hidden',\n },\n },\n header(...headerContent),\n tosiSidenav(\n {\n name: 'Documentation',\n navSize,\n minSize,\n style: {\n flex: '1 1 auto',\n overflow: 'hidden',\n },\n onChange() {\n const nav = document.querySelector(\n TosiSidenav.tagName!\n ) as TosiSidenav\n app.compact = nav.compact as any\n },\n },\n searchField,\n navContent,\n div(\n {\n style: {\n position: 'relative',\n overflowY: 'scroll',\n height: '100%',\n },\n },\n button(\n {\n class: 'view-source',\n style: {\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n position: 'fixed',\n top: 'calc(var(--xin-header-height, 60px) + 5px)',\n right: '5px',\n // Above the code editor (which fills the content area); below the\n // popped menu (z 1002).\n zIndex: '100',\n fontSize: '0.875em',\n color: 'var(--brand-color, inherit)',\n // Solid, theme-aware chip so it stays legible over the editor.\n background: 'var(--background, white)',\n border: 'none',\n borderRadius: '4px',\n padding: '3px 8px',\n boxShadow: '0 1px 4px #0003',\n cursor: 'pointer',\n transition: 'opacity 0.2s ease',\n },\n // Opacity + :hover live in CSS (.view-source) — a JS hover handler\n // here would fade the delegation root (the whole page), not the button.\n onClick(event: Event) {\n // tosijs delegates clicks, so event.currentTarget is the delegation\n // root, not the button — resolve the real trigger for menu anchoring.\n const btn = (event.target as HTMLElement).closest(\n '.view-source'\n ) as HTMLElement | null\n if (btn) openSourceMenu(btn)\n },\n bind: {\n value: app.currentDoc,\n binding(element: HTMLButtonElement, doc: Doc) {\n // Show when there's a source file to edit/view (any doc with a\n // path); the menu handles dev-vs-GitHub availability per item.\n element.style.display = doc.path ? 'flex' : 'none'\n },\n },\n },\n icons.code({ style: { _xinIconSize: 16 } }),\n 'Source'\n ),\n docContent\n )\n )\n )\n\n // Render the landing doc (adopts pre-rendered HTML when hydrating).\n showDoc(currentDoc)\n\n // Inject test indicator styles\n StyleSheet('test-indicators', testIndicatorStyleSpec)\n\n // Floating widget for test status\n const testWidget = button(\n {\n class: 'test-widget',\n hidden: true,\n onClick: showTestMenu,\n },\n span({ part: 'label' }, 'Tests'),\n span({ class: 'count', part: 'count' }, '0')\n )\n container.appendChild(testWidget)\n\n let testsRunning = false\n\n function setTestWidgetRunning() {\n testsRunning = true\n testWidget.hidden = false\n testWidget.classList.remove('-passed', '-failed')\n testWidget.classList.add('-running')\n updateTestWidgetDisplay()\n }\n\n function updateTestWidgetDisplay() {\n const labelEl = testWidget.querySelector('[part=\"label\"]')\n const countEl = testWidget.querySelector('[part=\"count\"]')\n\n const totalPassed = Object.values(pageTestResults).reduce(\n (sum, r) => sum + r.totalPassed,\n 0\n )\n const totalFailed = Object.values(pageTestResults).reduce(\n (sum, r) => sum + r.totalFailed,\n 0\n )\n\n if (labelEl) {\n if (testsRunning) {\n labelEl.textContent = 'Running'\n } else if (totalFailed > 0) {\n labelEl.textContent = 'Failed'\n } else if (totalPassed > 0) {\n labelEl.textContent = 'Passed'\n } else {\n labelEl.textContent = 'Tests'\n }\n }\n if (countEl) {\n countEl.textContent =\n totalFailed > 0 ? String(totalFailed) : String(totalPassed)\n }\n }\n\n function updateTestWidget() {\n const totalFailed = Object.values(pageTestResults).reduce(\n (sum, r) => sum + r.totalFailed,\n 0\n )\n\n if (testsRunning && pagesTested >= pagesWithTests) {\n // Tests complete\n testsRunning = false\n testWidget.classList.remove('-running')\n if (totalFailed > 0) {\n testWidget.classList.add('-failed')\n testWidget.classList.remove('-passed')\n testWidget.hidden = false\n } else {\n testWidget.classList.add('-passed')\n testWidget.classList.remove('-failed')\n testWidget.hidden = false // Show briefly before fade\n }\n }\n\n updateTestWidgetDisplay()\n }\n\n function showTestMenu() {\n const failedPages = Object.entries(pageTestResults).filter(\n ([, results]) => !results.passed\n )\n\n const menuItems: any[] = []\n\n for (const [filename, results] of failedPages) {\n const doc = docs.find((d) => d.filename === filename)\n const failedTests = results.tests.filter((t) => !t.passed)\n\n for (const test of failedTests) {\n menuItems.push({\n caption: `${doc?.title || filename}: ${test.name}`,\n action: () => {\n // Navigate to the page\n const docObj = app.docs.find(\n (d: any) => String(d.filename) === filename\n )\n if (docObj) {\n go(filename)\n // Scroll to failing test after render\n setTimeout(() => {\n const failedExample = document.querySelector(\n 'tosi-example.-test-failed'\n )\n if (failedExample) {\n failedExample.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n })\n }\n }, 100)\n }\n },\n })\n }\n }\n\n if (menuItems.length > 0) {\n menuItems.push(null) // separator\n }\n\n menuItems.push({\n icon: 'copy',\n caption: 'Copy test results to clipboard',\n action: () => {\n const report = generateTestReport()\n navigator.clipboard.writeText(report)\n },\n })\n\n popMenu({\n target: testWidget,\n menuItems,\n })\n }\n\n function generateTestReport(): string {\n const lines: string[] = ['# Test Results', '']\n let totalPassed = 0\n let totalFailed = 0\n\n for (const [filename, results] of Object.entries(pageTestResults)) {\n const doc = docs.find((d) => d.filename === filename)\n const title = doc?.title || filename\n\n totalPassed += results.totalPassed\n totalFailed += results.totalFailed\n\n if (results.tests.length > 0) {\n lines.push(`## ${title}`)\n lines.push('')\n for (const test of results.tests) {\n const icon = test.passed ? '✓' : '✗'\n const line = test.error\n ? `- ${icon} ${test.name}: ${test.error}`\n : `- ${icon} ${test.name}`\n lines.push(line)\n }\n lines.push('')\n }\n }\n\n lines.unshift(\n `**Summary: ${totalPassed} passed, ${totalFailed} failed**`,\n ''\n )\n\n return lines.join('\\n')\n }\n\n // Detect if running as background test iframe (never for an embedded browser —\n // it shares the host page's URL but isn't the test target).\n const searchParams = new URLSearchParams(window.location.search)\n const isTestFrame = !memoryRouting && searchParams.get('_testMode') === '1'\n const testFrameFilename = isTestFrame ? filenameFromLocation() : null\n\n // Listen for test completion events\n container.addEventListener('testcomplete', ((event: CustomEvent) => {\n handleTestComplete(event)\n updateTestWidget()\n\n // If running in test iframe, post results to parent\n if (isTestFrame && window.parent !== window && testFrameFilename) {\n const { results } = event.detail as { results: TestResults }\n window.parent.postMessage(\n { type: 'tosi-test-results', filename: testFrameFilename, results },\n '*'\n )\n }\n }) as EventListener)\n\n // If running as test iframe, signal when all tests on this page are done\n if (isTestFrame && testFrameFilename) {\n const signalDone = () => {\n const examples = container.querySelectorAll('tosi-example')\n const withTests = [...examples].filter((ex) =>\n ex.classList.contains('-has-tests')\n )\n const running = withTests.filter((ex) =>\n ex.classList.contains('-test-running')\n )\n if (withTests.length > 0 && running.length === 0) {\n window.parent.postMessage(\n { type: 'tosi-tests-done', filename: testFrameFilename },\n '*'\n )\n } else {\n setTimeout(signalDone, 100)\n }\n }\n // Give time for examples to start running\n setTimeout(signalDone, 500)\n }\n\n // Background test runner for all doc pages\n const runBackgroundTests = async () => {\n if (backgroundTestsStarted) return\n if (!testManager.enabled.value) return\n if (isTestFrame) return // Don't run background tests in test iframe\n backgroundTestsStarted = true\n\n // Find all docs that have test blocks\n const docsWithTests = docs.filter((doc) => doc.text.includes('```test'))\n pagesWithTests = docsWithTests.length\n\n if (pagesWithTests > 0) {\n setTestWidgetRunning()\n }\n\n if (pagesWithTests === 0) {\n if (testResultsResolve) {\n testResultsResolve({ passed: 0, failed: 0, pages: {} })\n testResultsResolve = undefined\n }\n return\n }\n\n const currentFilename = String(app.currentDoc.filename)\n\n // Create a hidden iframe that loads the full page. Keep its real 800x600\n // layout size (layout-dependent example tests need it) but park it\n // off-screen rather than rely on opacity:0 over the visible page — Chromium\n // (and haltija on top of it) still composites a 0-opacity layer at 0,0,\n // which flashes as the frame navigates page to page.\n const testFrame = document.createElement('iframe')\n testFrame.style.cssText =\n 'position: fixed; left: -10000px; top: 0; width: 800px; height: 600px; opacity: 0; pointer-events: none;'\n document.body.appendChild(testFrame)\n\n // Listen for test results posted from the iframe\n const messageHandler = (event: MessageEvent) => {\n if (event.data?.type !== 'tosi-test-results') return\n const { filename, results } = event.data as {\n type: string\n filename: string\n results: TestResults\n }\n if (!pageTestResults[filename]) {\n pageTestResults[filename] = {\n passed: true,\n tests: [],\n totalPassed: 0,\n totalFailed: 0,\n }\n }\n const pageResults = pageTestResults[filename]\n pageResults.tests.push(...results.tests)\n pageResults.totalPassed += results.passed\n pageResults.totalFailed += results.failed\n pageResults.passed = pageResults.totalFailed === 0\n updateDocTestStatus(filename)\n updateTestWidget()\n }\n window.addEventListener('message', messageHandler)\n\n for (const doc of docsWithTests) {\n // Skip current page — it runs tests naturally\n if (doc.filename === currentFilename) continue\n\n // Navigate iframe to the page\n testFrame.src =\n routing === 'path'\n ? `${window.location.origin}${hrefFor(doc.filename)}?_testMode=1`\n : `${window.location.origin}${window.location.pathname}?${doc.filename}&_testMode=1`\n\n // Wait for the iframe to signal it's done (max 30s per page)\n await new Promise<void>((resolve) => {\n const deadline = Date.now() + 30_000\n const onDone = (event: MessageEvent) => {\n if (\n event.data?.type === 'tosi-tests-done' &&\n event.data.filename === doc.filename\n ) {\n window.removeEventListener('message', onDone)\n resolve()\n }\n }\n window.addEventListener('message', onDone)\n setTimeout(() => {\n window.removeEventListener('message', onDone)\n resolve()\n }, deadline - Date.now())\n })\n\n markPageTested(doc.filename)\n }\n\n // Clean up\n window.removeEventListener('message', messageHandler)\n testFrame.remove()\n\n // Mark current page as tested if it has tests\n if (docsWithTests.some((d) => d.filename === currentFilename)) {\n setTimeout(() => markPageTested(currentFilename), 1000)\n }\n }\n\n // Run background tests when enabled (initially or when toggled on)\n const startBackgroundTests = () => {\n if (!testManager.enabled.value) return\n if (isLocalhost) {\n setTimeout(runBackgroundTests, 1000)\n } else {\n const currentHasTests = currentDoc.text.includes('```test')\n if (currentHasTests) {\n pagesWithTests = 1\n setTestWidgetRunning()\n setTimeout(() => markPageTested(currentDoc.filename), 2000)\n } else if (testResultsResolve) {\n testResultsResolve({ passed: 0, failed: 0, pages: {} })\n testResultsResolve = undefined\n }\n }\n }\n\n // Start now if enabled, and watch for toggle. A memory-routed (embedded)\n // browser never spawns the test-runner iframes (they'd navigate the host site).\n if (!memoryRouting) {\n startBackgroundTests()\n testManager.enabled.observe(startBackgroundTests)\n }\n\n // Memory routing: let the host drive navigation programmatically (by slug) and\n // read the current slug back, so the browser can live in a floating panel etc.\n if (memoryRouting) {\n ;(container as any).navigate = (slug: string) =>\n navigateTo(filenameForSlug(slug) || slug)\n Object.defineProperty(container, 'currentSlug', {\n get: () => slugFor(String(app.currentDoc.filename)),\n })\n }\n\n return container as HTMLElement\n}\n",
43
+ "/*\nShared, browser-safe assembly of the whole doc corpus into one printable HTML\n\"book\": a title page, a generated table of contents, then every doc as a chapter\nthat starts on a new page. Used by the client-side **Print** button in the\ndoc-browser (the user's browser prints it to PDF) and by the headless PDF builder\n(site/pdf.ts). Pure rendering — no fs, no Node-only APIs — so it bundles into the\niife. Live examples are pretty-printed, force-wrapped code listings, not executed.\n*/\n\nimport { renderDocMarkdown } from './render'\nimport { buildSlugMap } from './routing'\nimport { buildNavTree, NavNode, NavDoc } from './nav-tree'\n\nexport interface BookDoc {\n filename: string\n title: string\n text: string\n parent?: string\n hidden?: boolean\n}\n\n// Clean book typography; force-wraps code so listings never overflow a page.\nexport const DEFAULT_BOOK_CSS = `/* doc-system book stylesheet */\nhtml { font-size: 100%; }\nbody {\n font-family: Georgia, 'Times New Roman', serif;\n line-height: 1.5;\n margin: 0 1em;\n color: #1a1a1a;\n}\nh1, h2, h3, h4, h5, h6 {\n font-family: -apple-system, 'Helvetica Neue', Arial, sans-serif;\n line-height: 1.2;\n margin: 1.4em 0 0.5em;\n}\nh1 { font-size: 1.8em; }\nh2 { font-size: 1.4em; }\nh3 { font-size: 1.2em; }\np { margin: 0.6em 0; }\na { color: #08c; text-decoration: none; }\nul, ol { margin: 0.6em 0; padding-left: 1.4em; }\nblockquote {\n margin: 0.8em 0;\n padding: 0 0 0 1em;\n border-left: 3px solid #ccc;\n color: #555;\n}\nimg { max-width: 100%; height: auto; }\ntable { border-collapse: collapse; margin: 0.8em 0; font-size: 0.85em; }\nth, td { border: 1px solid #ccc; padding: 0.3em 0.6em; text-align: left; }\ncode, pre {\n font-family: 'SF Mono', Menlo, Consolas, monospace;\n font-size: 0.8em;\n}\n:not(pre) > code {\n background: #f3f3f3;\n padding: 0.1em 0.3em;\n border-radius: 3px;\n}\npre {\n background: #f6f8fa;\n border: 1px solid #e1e4e8;\n border-radius: 4px;\n padding: 0.7em 0.9em;\n margin: 0.8em 0;\n white-space: pre-wrap;\n word-break: break-word;\n overflow-wrap: anywhere;\n}\npre code { background: none; padding: 0; }\n/* the in-flow Contents page (ePub spine TOC) */\n.toc-title { text-align: center; }\nol.toc, ol.toc ol { list-style: none; padding-left: 0; }\nol.toc ol { padding-left: 1.2em; }\nol.toc li { margin: 0.3em 0; }\nol.toc > li > a { font-weight: bold; }\n/* per-example \"run this live\" deep link */\n.example-live-link { margin: 0.6em 0 0; font-size: 0.85em; }\n.example-live-link a { color: #08c; font-weight: bold; }\n`\n\n// Print-only layout: page margins, a chapter per page, an avoid-break TOC.\nexport const PRINT_CSS = `\n@page { margin: 18mm 16mm; }\n.book-title { text-align: center; margin: 30vh 0 1em; }\n.book-toc { page-break-after: always; }\n.book-toc h2 { page-break-before: avoid; }\n.book-toc ol { list-style: none; padding-left: 0; }\n.book-toc ol ol { padding-left: 1.2em; }\n.book-toc a { color: inherit; }\n.chapter { page-break-before: always; }\n`\n\nexport function escapeHtml(s: string): string {\n return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')\n}\n\nexport function slugify(s: string): string {\n return s.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '')\n}\n\n/** Drop the `<!--{ … }-->` metadata directives the extractor leaves in the text. */\nexport function stripDocMeta(text: string): string {\n return text.replace(/<!--\\{[\\s\\S]*?\\}-->\\s*/g, '')\n}\n\n/** Flatten a nav-tree depth-first into reading order. */\nexport function flatten<T extends NavDoc>(nodes: NavNode<T>[]): NavNode<T>[] {\n const out: NavNode<T>[] = []\n for (const node of nodes) {\n out.push(node)\n out.push(...flatten(node.children))\n }\n return out\n}\n\nfunction tocHtml(nodes: NavNode<BookDoc>[]): string {\n return nodes\n .map(\n (node) =>\n `<li><a href=\"#${slugify(node.doc.filename)}\">${escapeHtml(\n node.doc.title\n )}</a>${node.children.length ? `<ol>${tocHtml(node.children)}</ol>` : ''}</li>`\n )\n .join('')\n}\n\nexport interface BookHtmlOptions {\n title: string\n /** full stylesheet (defaults to DEFAULT_BOOK_CSS + PRINT_CSS) */\n css?: string\n lang?: string\n /** inject a script that opens the print dialog once the page has loaded */\n autoPrint?: boolean\n}\n\n/** Assemble the whole corpus into one self-contained printable HTML document. */\nexport function buildBookHtml(docs: BookDoc[], opts: BookHtmlOptions): string {\n const visible = docs.filter((d) => !d.hidden)\n const slugMap = buildSlugMap(visible)\n const roots = buildNavTree(visible, slugMap)\n const css = opts.css ?? `${DEFAULT_BOOK_CSS}\\n${PRINT_CSS}`\n\n const chapters = flatten(roots)\n .map(\n (node) =>\n `<section class=\"chapter\" id=\"${slugify(node.doc.filename)}\">\\n${renderDocMarkdown(\n stripDocMeta(node.doc.text)\n )}\\n</section>`\n )\n .join('\\n')\n\n return `<!DOCTYPE html>\n<html lang=\"${opts.lang ?? 'en'}\">\n<head>\n<meta charset=\"utf-8\"/>\n<title>${escapeHtml(opts.title)}</title>\n<style>${css}</style>\n</head>\n<body>\n<h1 class=\"book-title\">${escapeHtml(opts.title)}</h1>\n<nav class=\"book-toc\"><h2>Contents</h2><ol>${tocHtml(roots)}</ol></nav>\n${chapters}\n${opts.autoPrint ? '<script>addEventListener(\"load\",function(){setTimeout(function(){print()},300)})</script>' : ''}\n</body>\n</html>`\n}\n",
43
44
  "/*\nDefault theme + page styling for <tosi-doc-system>.\n\nThis is the stylesheet the component injects so a generated static page looks like\na finished doc site without depending on any app bootstrap. It uses the legacy\n`--brand-color` / `--background` / `--spacing` CSS-variable family that the doc\nbrowser and markdown styles are built on.\n\nColors are computed from a small set of base colors via tosijs `Color` math, so the\npalette can eventually be driven entirely by a few attributes on the element\n(accent/background/text) — most of the palette is derived from `accent`.\n*/\n\nimport {\n XinStyleSheet,\n XinStyleRule,\n vars,\n Color,\n invertLuminance,\n} from 'tosijs'\nimport { icons, svg2DataUrl } from '../icons'\n\nexport interface DocSystemTheme {\n /** brand / accent color — most of the palette is derived from this */\n accent?: string\n background?: string\n text?: string\n buttonBg?: string\n inputBg?: string\n}\n\n/** Compute the full set of `:root` color variables from a few base colors. */\nexport function docSystemColors(theme: DocSystemTheme = {}): XinStyleRule {\n const brandColor = Color.fromCss(theme.accent ?? '#EE257B')\n return {\n _textColor: theme.text ?? '#222',\n _brandColor: brandColor,\n _background: theme.background ?? '#fafafa',\n _buttonBg: theme.buttonBg ?? '#fdfdfd',\n _inputBg: theme.inputBg ?? '#fdfdfd',\n _backgroundShaded: '#f5f5f5',\n _navBg: brandColor.rotate(30).desaturate(0.5).brighten(0.9),\n _barColor: brandColor.opacity(0.4),\n _focusColor: brandColor.opacity(0.7),\n _placeholderColor: brandColor.opacity(0.4),\n _brandTextColor: brandColor.rotate(30).brighten(0.9),\n _insetBg: brandColor.rotate(45).brighten(0.8),\n _codeBg: brandColor.rotate(-15).desaturate(0.5).brighten(0.9),\n _linkColor: brandColor.rotate(-30).darken(0.5),\n _shadowColor: '#0004',\n _menuBg: '#fafafa',\n _menuItemActiveColor: '#000',\n _menuItemIconActiveColor: '#000',\n _menuItemActiveBg: '#aaa',\n _menuItemHoverBg: '#eee',\n _menuItemColor: '#222',\n _menuSeparatorColor: '#2224',\n _menuShadow: '0 4px 8px #0004',\n _scrollThumbColor: '#0006',\n _scrollBarColor: '#0001',\n _inputBorderShadow: 'inset 0 0 2px #0006',\n }\n}\n\n/** Build the full doc-system stylesheet for a given base theme. */\nexport function docSystemStyleSpec(theme: DocSystemTheme = {}): XinStyleSheet {\n const colors = docSystemColors(theme)\n const brandColor = Color.fromCss(theme.accent ?? '#EE257B')\n return {\n '@import':\n 'https://fonts.googleapis.com/css2?family=Aleo:ital,wght@0,100..900;1,100..900&famiSpline+Sans+Mono:ital,wght@0,300..700;1,300..700&display=swap',\n ':root': {\n _fontFamily: \"'Aleo', sans-serif\",\n _codeFontFamily: \"'Spline Sans Mono', monospace\",\n _fontSize: '16px',\n _codeFontSize: '14px',\n ...colors,\n _spacing: '10px',\n _lineHeight: 'calc(var(--font-size) * 1.6)',\n _h1Scale: '2',\n _h2Scale: '1.5',\n _h3Scale: '1.25',\n _touchSize: '32px',\n _headerHeight:\n 'calc( var(--line-height) * var(--h2-scale) + var(--spacing) * 2 )',\n },\n '.darkmode': {\n ...invertLuminance(colors),\n _shadowColor: brandColor.opacity(0.5),\n _menuShadow: `0 0 0 2px ${brandColor.opacity(0.75)}`,\n _menuSeparatorColor: brandColor.opacity(0.5),\n },\n '.high-contrast': {\n filter: 'contrast(2)',\n },\n '*': {\n boxSizing: 'border-box',\n scrollbarColor: `${vars.scrollThumbColor} ${vars.scrollBarColor}`,\n scrollbarWidth: 'thin',\n },\n body: {\n fontFamily: vars.fontFamily,\n fontSize: vars.fontSize,\n margin: '0',\n lineHeight: vars.lineHeight,\n background: vars.background,\n _tosiTabsSelectedColor: vars.brandColor,\n _tosiTabsBarColor: vars.brandTextColor,\n _menuItemIconColor: vars.brandColor,\n color: vars.textColor,\n },\n // <tosi-doc-system> is a light-DOM block that fills the viewport; the doc\n // browser container inside it provides the flex column + 100vh.\n 'tosi-doc-system': {\n display: 'block',\n },\n 'tosi-doc-system tosi-sidenav::part(nav)': {\n background: vars.navBg,\n },\n '.center': {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n 'input, button, select, textarea': {\n fontFamily: vars.fontFamily,\n fontSize: vars.fontSize,\n color: 'currentColor',\n background: vars.inputBg,\n },\n select: {\n WebkitAppearance: 'none',\n appearance: 'none',\n },\n header: {\n background: vars.brandColor,\n color: vars.brandTextColor,\n _textColor: vars.brandTextColor,\n _linkColor: vars.brandTextColor,\n display: 'flex',\n alignItems: 'center',\n padding: '0 var(--spacing)',\n lineHeight: 'calc(var(--line-height) * var(--h1-scale))',\n height: vars.headerHeight,\n whiteSpace: 'nowrap',\n },\n h1: {\n color: vars.brandColor,\n fontSize: 'calc(var(--font-size) * var(--h1-scale))',\n lineHeight: 'calc(var(--line-height) * var(--h1-scale))',\n fontWeight: '400',\n borderBottom: `4px solid ${vars.barColor}`,\n margin: `${vars.spacing} 0 ${vars.spacing200}`,\n padding: 0,\n },\n 'header h2': {\n color: vars.brandTextColor,\n whiteSpace: 'nowrap',\n },\n h2: {\n color: vars.brandColor,\n fontSize: 'calc(var(--font-size) * var(--h2-scale))',\n lineHeight: 'calc(var(--line-height) * var(--h2-scale))',\n margin: 'calc(var(--spacing) * var(--h2-scale)) 0',\n },\n h3: {\n fontSize: 'calc(var(--font-size) * var(--h3-scale))',\n lineHeight: 'calc(var(--line-height) * var(--h3-scale))',\n margin: 'calc(var(--spacing) * var(--h3-scale)) 0',\n },\n 'input[type=search]': {\n borderRadius: 99,\n },\n blockquote: {\n position: 'relative',\n background: vars.insetBg,\n margin: '0 48px 56px 0',\n borderRadius: vars.spacing,\n padding: 'var(--spacing) calc(var(--spacing) * 2)',\n filter: `drop-shadow(0px 1px 1px ${vars.shadowColor})`,\n },\n 'blockquote > :first-child': {\n marginTop: '0',\n },\n 'blockquote > :last-child': {\n marginBottom: '0',\n },\n 'blockquote::before': {\n content: '\" \"',\n display: 'block',\n width: 1,\n height: 1,\n border: '10px solid transparent',\n borderTopColor: vars.insetBg,\n borderRightColor: vars.insetBg,\n position: 'absolute',\n bottom: -20,\n right: 24,\n },\n 'blockquote::after': {\n content: '\" \"',\n width: 48,\n height: 48,\n display: 'block',\n bottom: -48,\n right: -24,\n position: 'absolute',\n background: svg2DataUrl(icons.tosi(), undefined, undefined, 2),\n },\n a: {\n textDecoration: 'none',\n color: vars.linkColor,\n opacity: '0.9',\n borderBottom: '1px solid var(--brand-color)',\n },\n 'button, select, .clickable': {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'ease-out 0.2s',\n _textColor: vars.brandColor,\n color: vars.textColor,\n textDecoration: 'none',\n background: vars.buttonBg,\n padding: '0 calc(var(--spacing) * 1.25)',\n border: 'none',\n borderRadius: 'calc(var(--spacing) * 0.5)',\n },\n 'button, select, .clickable, input': {\n lineHeight: 'calc(var(--line-height) + var(--spacing))',\n },\n 'input, textarea': {\n border: 'none',\n outline: 'none',\n borderRadius: 'calc(var(--spacing) * 0.5)',\n boxShadow: vars.inputBorderShadow,\n },\n input: {\n padding: '0 calc(var(--spacing) * 1.5)',\n },\n '::placeholder': {\n color: vars.placeholderColor,\n },\n img: {\n verticalAlign: 'middle',\n },\n 'button:hover, .clickable:hover': {\n boxShadow: 'inset 0 0 0 2px var(--brand-color)',\n },\n 'button:active, .clickable:active': {\n background: vars.brandColor,\n color: vars.brandTextColor,\n },\n label: {\n display: 'inline-flex',\n gap: 'calc(var(--spacing) * 0.5)',\n alignItems: 'center',\n },\n '.elastic': {\n flex: '1 1 auto',\n overflow: 'hidden',\n position: 'relative',\n },\n // Scope the icon styling (currentColor fill, click-through) to actual icons\n // and SVGs inside buttons — a blanket `svg` rule sets pointer-events:none on\n // every SVG, which breaks interactive SVG-based UIs (maps, charts, diagrams).\n 'svg.tosi-icon, button svg': {\n fill: 'currentColor',\n pointerEvents: 'none',\n },\n '[aria-selected]': {\n background: '#08835820',\n },\n ':disabled': {\n opacity: '0.5',\n filter: 'saturate(0)',\n pointerEvents: 'none',\n },\n pre: {\n background: vars.codeBg,\n padding: vars.spacing,\n borderRadius: 'calc(var(--spacing) * 0.25)',\n overflow: 'auto',\n fontSize: vars.codeFontSize,\n lineHeight: 'calc(var(--font-size) * 1.2)',\n },\n 'pre, code': {\n fontFamily: vars.codeFontFamily,\n _textColor: vars.brandColor,\n },\n '.transparent, .iconic': {\n background: 'none',\n },\n '.iconic': {\n padding: '0',\n fontSize: '150%',\n height: 'calc(var(--line-height) + var(--spacing))',\n lineHeight: 'calc(var(--line-height) + var(--spacing))',\n width: 'calc(var(--line-height) + var(--spacing))',\n textAlign: 'center',\n },\n '.transparent:hover, .iconic:hover': {\n background: '#0002',\n boxShadow: 'none',\n color: vars.textColor,\n },\n '.transparent:active, .iconic:active': {\n background: '#0004',\n boxShadow: 'none',\n color: vars.textColor,\n },\n '.current, summary:has(.current)': {\n background: vars.background,\n },\n '.doc-link': {\n cursor: 'pointer',\n borderBottom: 'none',\n transition: '0.15s ease-out',\n marginLeft: '10px',\n padding: 'calc(var(--spacing) * 0.5) calc(var(--spacing) * 1.5)',\n },\n '.doc-link:not(.current):hover': {\n background: vars.background,\n },\n '.doc-link:not(.current)': {\n opacity: '0.8',\n marginLeft: 0,\n },\n 'tosi-example': {\n margin: 'var(--spacing) 0',\n },\n 'tosi-example [part=editors]': {\n background: vars.insetBg,\n },\n \"[class*='icon-'], tosi-icon\": {\n color: 'currentcolor',\n pointerEvents: 'none',\n },\n \"[class*='icon-']\": {\n verticalAlign: 'middle',\n },\n table: {\n borderCollapse: 'collapse',\n },\n thead: {\n background: vars.brandColor,\n color: vars.brandTextColor,\n },\n tbody: {\n background: vars.background,\n },\n 'tr:nth-child(2n)': {\n background: vars.backgroundShaded,\n },\n 'th, td': {\n padding: 'calc(var(--spacing) * 0.5) var(--spacing)',\n },\n // Nav lists carry semantics only — no list styling. Hierarchy indentation\n // comes from left-padding on each section's child list (inside <details>).\n '.doc-nav ul, .doc-nav li': {\n listStyle: 'none',\n margin: 0,\n padding: 0,\n },\n '.doc-nav li': {\n display: 'flex',\n flexDirection: 'column',\n },\n '.doc-nav': {\n display: 'flex',\n flexDirection: 'column',\n },\n '.doc-nav details > ul': {\n paddingLeft: vars.spacing,\n },\n // <summary> is the section header (its triangle toggles; the link navigates).\n '.doc-nav summary': {\n cursor: 'pointer',\n // indent the disclosure marker a bit from the edge\n paddingLeft: 'calc(var(--spacing) * 0.5)',\n },\n '.doc-nav summary::marker': {\n color: vars.brandColor,\n },\n '.doc-nav summary > .doc-link': {\n display: 'inline-block',\n // push the summary text in a bit less than a normal doc-link\n paddingLeft: 'calc(var(--spacing) * 0.5)',\n },\n // Declarative header link list — shown for no-JS, removed on hydration.\n '.doc-navbar': {\n listStyle: 'none',\n display: 'flex',\n flexWrap: 'wrap',\n gap: vars.spacing,\n margin: 0,\n padding: vars.spacing,\n },\n }\n}\n",
44
- "/*#\n# doc-system\n\n`<tosi-doc-system>` turns a folder of pre-rendered, statically-served pages into a\nfast, SPA-like documentation site **without giving up SEO or web-1.0 fallback**.\n\nEach page is plain HTML — optimized `<head>`, the doc's markdown already rendered\nto HTML, and a real `<ul>` of links to every other page — so search engines and\nno-JS browsers get everything. When the library's IIFE bundle loads, the\n`<tosi-doc-system>` element upgrades that static content into the interactive\n[doc-browser](?doc-browser.ts): client-side navigation (no full reloads), live\ncode examples, search, responsive navigation, and a settings menu (theme +\nlanguage).\n\n```html\n<body>\n <tosi-doc-system docs=\"/docs.json\" config='{\"projectName\":\"My Project\"}'>\n <article class=\"doc-content\"><!-- markdown pre-rendered to HTML --></article>\n <ul class=\"doc-nav\"><!-- links to every page --></ul>\n <ul class=\"doc-navbar\"><!-- header-bar links --></ul>\n </tosi-doc-system>\n <script src=\"/iife.js\"></script>\n</body>\n```\n\n## Attributes\n\n- `docs` — URL of the generated `docs.json` (default `/docs.json`). The whole doc\n corpus is the size of a JPEG, so the client fetches it once and renders any page\n instantly.\n- `config` — inline JSON `{ projectName, projectLinks }` baked in at build time.\n- `localized` — URL of a tab-separated translation table; when set, it powers the\n settings menu's language picker.\n- `routing` — `''` (default) drives the page with clean `/slug/` URLs. Set\n `\"memory\"` for a **self-contained** instance whose navigation never touches the\n page URL or history — for embedding the docs in a dialog, side panel, or\n floating element. (A `<tosi-doc-system>` nested inside another one — e.g. the\n live demo on this page — is forced to memory routing automatically, and a demo\n nested two levels deep renders an inert placeholder instead of recursing.)\n- `route` — memory routing only: the current doc's slug. Set it to navigate the\n embedded browser to a doc; it's reflected back here as the user clicks around,\n so a host can observe/bind it (e.g. to remember where a help panel was left).\n- `accent` / `background` / `text` — base theme colors (most of the palette is\n derived from `accent` via color math).\n\nThe element is light-DOM (no shadow root) so the pre-rendered markdown remains the\nreal, indexable page content until hydration replaces it with the live browser.\nLive-example modules default to the `xinjs` / `xinjsui` IIFE globals; override by\nsetting the element's `context` property before it connects.\n\nA self-contained, controllable embed (e.g. docs in a floating panel):\n\n```html\n<tosi-doc-system docs=\"/docs.json\" routing=\"memory\" route=\"data-table\">\n</tosi-doc-system>\n```\n*/\n\n/*{ \"parent\": \"Appendices\" }*/\n\nimport { Component, ElementCreator, StyleSheet, elements, tosi, vars } from 'tosijs'\nimport { createDocBrowser, Doc, ProjectLinks, LinkItem } from '../doc-browser'\nimport { buildSlugMap, legacyQueryPath } from './routing'\nimport { docSystemStyleSpec } from './doc-system-styles'\nimport { icons } from '../icons'\nimport { popMenu } from '../menu'\nimport { i18n, setLocale, initLocalization } from '../localize'\n\nconst { button, div } = elements\n\ninterface DocSystemConfig {\n projectName?: string\n projectLinks?: ProjectLinks\n}\n\nconst PREFS_KEY = 'tosi-doc-system-prefs'\n\nexport class TosiDocSystem extends Component {\n static preferredTagName = 'tosi-doc-system'\n\n static initAttributes = {\n docs: '/docs.json',\n config: '',\n localized: '',\n // Routing mode. '' (default) → clean `/slug/` URLs that drive the page. Set\n // 'memory' (or 'internal') for a self-contained instance that never touches\n // the page URL — for embedding the docs in a panel, dialog, etc. A nested\n // <tosi-doc-system> (inside a live example) is forced to 'memory' too.\n routing: '',\n // Memory routing only: the current doc slug. Set it to navigate the embedded\n // browser; it's reflected back here as the user clicks around, so a host can\n // bind/observe it (e.g. docs in a floating element).\n route: '',\n // Base theme colors — most of the palette is derived from `accent`.\n accent: '',\n background: '',\n text: '',\n }\n\n // Modules exposed to live examples. Defaults to the IIFE globals on connect.\n context?: Record<string, any>\n\n // Light DOM: leave the pre-rendered children in place until render() swaps in\n // the live browser. (null = framework leaves our children alone, as in tosi-md.)\n content = null\n\n // The loaded corpus and the mounted browser; both also act as one-time guards.\n private corpus?: Doc[]\n private browser?: HTMLElement\n\n // Route-reflection bookkeeping (memory routing): the last slug applied to the\n // browser, so external `route` changes navigate but internal navigation (which\n // writes `route` back) doesn't re-navigate or loop.\n private appliedRoute = ''\n private suppressed = false\n\n // How many <tosi-doc-system> ancestors this element has, crossing shadow\n // boundaries. 0 = the page's own; ≥1 = embedded in another (e.g. the live\n // demo on the doc-system page). Used to force memory routing on nested\n // instances and to stop runaway recursion (a doc page that demos itself).\n private nestingDepth(): number {\n let depth = 0\n let node: Node | null = this.parentNode\n while (node) {\n if (\n node.nodeType === Node.ELEMENT_NODE &&\n (node as Element).tagName === 'TOSI-DOC-SYSTEM'\n ) {\n depth++\n }\n node = node.parentNode || (node as ShadowRoot).host || null\n }\n return depth\n }\n\n // User theme/locale preferences (persisted to localStorage).\n private prefs: any\n private stylesApplied = false\n\n // ---- Theme ---------------------------------------------------------------\n\n private applyStyles(): void {\n if (this.stylesApplied) return\n this.stylesApplied = true\n // When the generator has burned the theme into a static <link>, the page is\n // already styled (no JS / no flash) — don't inject a duplicate. Otherwise this\n // is a drop-in usage, so inject the computed theme.\n if (!document.querySelector('link[data-tosi-doc-system]')) {\n StyleSheet(\n 'tosi-doc-system',\n docSystemStyleSpec({\n accent: this.accent || undefined,\n background: this.background || undefined,\n text: this.text || undefined,\n })\n )\n }\n }\n\n private applyThemePrefs = (): void => {\n const theme = this.prefs.theme.value\n const dark =\n theme === 'dark' ||\n (theme === 'system' &&\n matchMedia('(prefers-color-scheme: dark)').matches)\n document.body.classList.toggle('darkmode', dark)\n document.body.classList.toggle('high-contrast', this.prefs.highContrast.value)\n }\n\n private persistPrefs(): void {\n try {\n localStorage.setItem(\n PREFS_KEY,\n JSON.stringify({\n theme: this.prefs.theme.value,\n highContrast: this.prefs.highContrast.value,\n locale: this.prefs.locale.value,\n })\n )\n } catch {\n // localStorage may be unavailable (private mode); preferences just won't persist.\n }\n }\n\n private initPrefs(): void {\n let saved: any = {}\n try {\n saved = JSON.parse(localStorage.getItem(PREFS_KEY) || '{}')\n } catch {\n /* ignore */\n }\n this.prefs = tosi({\n prefs: {\n theme: saved.theme || 'system',\n highContrast: saved.highContrast || false,\n locale: saved.locale || '',\n },\n }).prefs\n\n this.applyThemePrefs()\n matchMedia('(prefers-color-scheme: dark)').addEventListener(\n 'change',\n this.applyThemePrefs\n )\n this.prefs.theme.observe(() => {\n this.applyThemePrefs()\n this.persistPrefs()\n })\n this.prefs.highContrast.observe(() => {\n this.applyThemePrefs()\n this.persistPrefs()\n })\n this.prefs.locale.observe(() => this.persistPrefs())\n }\n\n // ---- Localization --------------------------------------------------------\n\n private async initLocale(): Promise<void> {\n if (!this.localized) return\n try {\n const text = await (await fetch(this.localized)).text()\n initLocalization(text)\n if (this.prefs.locale.value) setLocale(this.prefs.locale.value)\n } catch (error) {\n console.warn(\n '<tosi-doc-system> could not load localization from',\n this.localized,\n error\n )\n }\n }\n\n // ---- Settings menu -------------------------------------------------------\n\n private settingsButton(): HTMLElement {\n return button(\n {\n class: 'iconic',\n // Header buttons default to the brand color (invisible on the brand bar);\n // use the link color like the nav toggle so the icon is visible.\n style: { color: vars.linkColor },\n title: 'settings',\n onClick: (event: Event) => {\n const menuItems: any[] = []\n const localeOptions = (i18n.localeOptions.value as any[]) || []\n if (localeOptions.length > 1) {\n menuItems.push({\n caption: 'Language',\n icon: 'globe',\n menuItems: localeOptions.map((locale) => ({\n caption: locale.caption,\n icon: locale.icon,\n checked: () => locale.value === i18n.locale.value,\n action: () => {\n this.prefs.locale.value = locale.value\n setLocale(locale.value)\n },\n })),\n })\n }\n menuItems.push({\n caption: 'Color Theme',\n icon: 'rgb',\n menuItems: [\n {\n caption: 'System',\n checked: () => this.prefs.theme.value === 'system',\n action: () => (this.prefs.theme.value = 'system'),\n },\n {\n caption: 'Dark',\n checked: () => this.prefs.theme.value === 'dark',\n action: () => (this.prefs.theme.value = 'dark'),\n },\n {\n caption: 'Light',\n checked: () => this.prefs.theme.value === 'light',\n action: () => (this.prefs.theme.value = 'light'),\n },\n null,\n {\n caption: 'High Contrast',\n checked: () => this.prefs.highContrast.value,\n action: () =>\n (this.prefs.highContrast.value = !this.prefs.highContrast.value),\n },\n ],\n })\n popMenu({\n target: event.target as HTMLElement,\n localized: true,\n menuItems,\n })\n },\n },\n icons.moreVertical()\n )\n }\n\n // ---- Lifecycle -----------------------------------------------------------\n\n // Parse a declarative <ul class=\"...\"> of <li><a href data-icon?>label</a> into\n // LinkItem[]. Returns [] when the list is absent.\n private parseLinks(selector: string): LinkItem[] {\n const list = this.querySelector(selector)\n if (!list) return []\n return [...list.querySelectorAll('a')].map((anchor) => ({\n href: anchor.getAttribute('href') || '',\n label: (anchor.textContent || '').trim(),\n icon: (anchor as HTMLElement).dataset.icon || undefined,\n }))\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n // A doc page can demo the doc system itself. The page's browser (depth 0)\n // and one embedded demo (depth 1) are fine, but a demo INSIDE that demo\n // (depth ≥ 2) would recurse forever — so render an inert placeholder and\n // stop. (Don't even fetch the corpus.)\n if (this.nestingDepth() >= 2) {\n this.suppressed = true\n this.replaceChildren(\n div(\n { class: 'doc-system-nested' },\n '📖 nested doc-system preview (suppressed)'\n )\n )\n return\n }\n this.applyStyles()\n this.initPrefs()\n void this.initLocale()\n // Async data source: fetch once, then let the normal render pipeline mount.\n if (this.corpus === undefined) {\n const url = this.docs || '/docs.json'\n fetch(url)\n .then((response) => response.json())\n .then((corpus: Doc[]) => {\n this.corpus = corpus\n // Redirect legacy ?filename query-param links (the old doc-browser's\n // routing) to the new /slug/ paths.\n const legacy = legacyQueryPath(location.search, buildSlugMap(corpus))\n if (legacy) {\n if (legacy !== location.pathname) {\n // Different page — navigate to the real pre-rendered static page.\n location.replace(legacy + location.hash)\n return\n }\n // Same page — just drop the stale legacy query, no reload.\n history.replaceState(null, '', legacy + location.hash)\n }\n this.queueRender()\n })\n .catch((error) =>\n console.error('<tosi-doc-system> could not load docs from', url, error)\n )\n }\n }\n\n render(): void {\n super.render()\n if (this.suppressed || this.corpus === undefined) return\n\n // Already mounted: the only live input is an external `route` change (memory\n // routing), which navigates the embedded browser. The appliedRoute guard\n // stops the browser's own write-back to `route` from re-navigating.\n if (this.browser !== undefined) {\n const navigate = (this.browser as any).navigate as\n | ((slug: string) => void)\n | undefined\n if (navigate && this.route && this.route !== this.appliedRoute) {\n this.appliedRoute = this.route\n navigate(this.route)\n }\n return\n }\n\n let config: DocSystemConfig = {}\n if (this.config) {\n try {\n config = JSON.parse(this.config)\n } catch {\n console.warn('<tosi-doc-system> ignoring invalid config attribute')\n }\n }\n\n // Nested instances (a live demo of the doc system) must never drive the page\n // URL — force memory routing. A top-level instance opts in via the attribute.\n const nested = this.nestingDepth() >= 1\n const memory =\n nested || this.routing === 'memory' || this.routing === 'internal'\n\n // Adopt the pre-rendered markdown for the landing page so it is hydrated in\n // place, never re-rendered. createDocBrowser grafts this node into its content\n // area; the static nav list (already crawled) is replaced by the reactive one.\n const contentElement =\n (this.querySelector('.doc-content') as HTMLElement | null) || undefined\n\n // Header-bar links are declared as a real, crawlable list in the static page.\n const navbarLinks = this.parseLinks('.doc-navbar')\n\n this.appliedRoute = this.route\n\n this.browser = createDocBrowser({\n docs: this.corpus,\n routing: memory ? 'memory' : 'path',\n initialRoute: memory ? this.route || undefined : undefined,\n onRouteChange: memory\n ? (slug: string) => {\n // Record before reflecting so the resulting render() no-ops.\n this.appliedRoute = slug\n this.route = slug\n }\n : undefined,\n context: this.context || {\n tosijs: (globalThis as any).xinjs,\n 'tosijs-ui': (globalThis as any).xinjsui,\n },\n projectName: config.projectName,\n projectLinks: config.projectLinks,\n navbarLinks: navbarLinks.length ? navbarLinks : undefined,\n contentElement,\n })\n\n // Add the settings (theme + language) menu — except in a nested demo, where\n // a gear that retints the whole host page would be surprising.\n if (!nested) {\n const header = this.browser.querySelector('header')\n if (header) header.append(this.settingsButton())\n }\n\n this.replaceChildren(this.browser)\n\n // Hydration done: reveal the page (the generated <head> hid it to mask the\n // static→live swap). Only the page-owning instance touches document.body;\n // a nested demo must not. Next frame so the browser has painted first.\n if (!nested && typeof document !== 'undefined') {\n requestAnimationFrame(() => {\n document.body.style.opacity = '1'\n })\n }\n }\n}\n\nexport const tosiDocSystem =\n TosiDocSystem.elementCreator() as ElementCreator<TosiDocSystem>\n",
45
+ "/*#\n# doc-system\n\n`<tosi-doc-system>` turns a folder of pre-rendered, statically-served pages into a\nfast, SPA-like documentation site **without giving up SEO or web-1.0 fallback**.\n\nEach page is plain HTML — optimized `<head>`, the doc's markdown already rendered\nto HTML, and a real `<ul>` of links to every other page — so search engines and\nno-JS browsers get everything. When the library's IIFE bundle loads, the\n`<tosi-doc-system>` element upgrades that static content into the interactive\n[doc-browser](?doc-browser.ts): client-side navigation (no full reloads), live\ncode examples, search, responsive navigation, and a settings menu (theme +\nlanguage).\n\n```html\n<body>\n <tosi-doc-system docs=\"/docs.json\" config='{\"projectName\":\"My Project\"}'>\n <article class=\"doc-content\"><!-- markdown pre-rendered to HTML --></article>\n <ul class=\"doc-nav\"><!-- links to every page --></ul>\n <ul class=\"doc-navbar\"><!-- header-bar links --></ul>\n </tosi-doc-system>\n <script src=\"/iife.js\"></script>\n</body>\n```\n\n## Attributes\n\n- `docs` — URL of the generated `docs.json` (default `/docs.json`). The whole doc\n corpus is the size of a JPEG, so the client fetches it once and renders any page\n instantly.\n- `config` — inline JSON `{ projectName, projectLinks }` baked in at build time.\n- `localized` — URL of a tab-separated translation table; when set, it powers the\n settings menu's language picker.\n- `routing` — `''` (default) drives the page with clean `/slug/` URLs. Set\n `\"memory\"` for a **self-contained** instance whose navigation never touches the\n page URL or history — for embedding the docs in a dialog, side panel, or\n floating element. (A `<tosi-doc-system>` nested inside another one — e.g. the\n live demo on this page — is forced to memory routing automatically, and a demo\n nested two levels deep renders an inert placeholder instead of recursing.)\n- `route` — memory routing only: the current doc's slug. Set it to navigate the\n embedded browser to a doc; it's reflected back here as the user clicks around,\n so a host can observe/bind it (e.g. to remember where a help panel was left).\n- `accent` / `background` / `text` — base theme colors (most of the palette is\n derived from `accent` via color math).\n\nThe element is light-DOM (no shadow root) so the pre-rendered markdown remains the\nreal, indexable page content until hydration replaces it with the live browser.\nLive-example modules default to the `xinjs` / `xinjsui` IIFE globals; override by\nsetting the element's `context` property before it connects.\n\nA self-contained, controllable embed (e.g. docs in a floating panel):\n\n```html\n<tosi-doc-system docs=\"/docs.json\" routing=\"memory\" route=\"data-table\">\n</tosi-doc-system>\n```\n*/\n\n/*{ \"parent\": \"Appendices\" }*/\n\nimport { Component, ElementCreator, StyleSheet, elements, tosi, vars } from 'tosijs'\nimport { createDocBrowser, Doc, ProjectLinks, LinkItem } from '../doc-browser'\nimport { buildSlugMap, legacyQueryPath } from './routing'\nimport { buildBookHtml, slugify } from './book-html'\nimport { docSystemStyleSpec } from './doc-system-styles'\nimport { icons } from '../icons'\nimport { popMenu } from '../menu'\nimport { i18n, setLocale, initLocalization } from '../localize'\n\nconst { button, div } = elements\n\ninterface DocSystemConfig {\n projectName?: string\n projectLinks?: ProjectLinks\n}\n\nconst PREFS_KEY = 'tosi-doc-system-prefs'\n\nexport class TosiDocSystem extends Component {\n static preferredTagName = 'tosi-doc-system'\n\n static initAttributes = {\n docs: '/docs.json',\n config: '',\n localized: '',\n // Routing mode. '' (default) → clean `/slug/` URLs that drive the page. Set\n // 'memory' (or 'internal') for a self-contained instance that never touches\n // the page URL — for embedding the docs in a panel, dialog, etc. A nested\n // <tosi-doc-system> (inside a live example) is forced to 'memory' too.\n routing: '',\n // Memory routing only: the current doc slug. Set it to navigate the embedded\n // browser; it's reflected back here as the user clicks around, so a host can\n // bind/observe it (e.g. docs in a floating element).\n route: '',\n // Base theme colors — most of the palette is derived from `accent`.\n accent: '',\n background: '',\n text: '',\n }\n\n // Modules exposed to live examples. Defaults to the IIFE globals on connect.\n context?: Record<string, any>\n\n // Light DOM: leave the pre-rendered children in place until render() swaps in\n // the live browser. (null = framework leaves our children alone, as in tosi-md.)\n content = null\n\n // The loaded corpus and the mounted browser; both also act as one-time guards.\n private corpus?: Doc[]\n private browser?: HTMLElement\n\n // Route-reflection bookkeeping (memory routing): the last slug applied to the\n // browser, so external `route` changes navigate but internal navigation (which\n // writes `route` back) doesn't re-navigate or loop.\n private appliedRoute = ''\n private suppressed = false\n\n // How many <tosi-doc-system> ancestors this element has, crossing shadow\n // boundaries. 0 = the page's own; ≥1 = embedded in another (e.g. the live\n // demo on the doc-system page). Used to force memory routing on nested\n // instances and to stop runaway recursion (a doc page that demos itself).\n private nestingDepth(): number {\n let depth = 0\n let node: Node | null = this.parentNode\n while (node) {\n if (\n node.nodeType === Node.ELEMENT_NODE &&\n (node as Element).tagName === 'TOSI-DOC-SYSTEM'\n ) {\n depth++\n }\n node = node.parentNode || (node as ShadowRoot).host || null\n }\n return depth\n }\n\n // User theme/locale preferences (persisted to localStorage).\n private prefs: any\n private stylesApplied = false\n\n // ---- Theme ---------------------------------------------------------------\n\n private applyStyles(): void {\n if (this.stylesApplied) return\n this.stylesApplied = true\n // When the generator has burned the theme into a static <link>, the page is\n // already styled (no JS / no flash) — don't inject a duplicate. Otherwise this\n // is a drop-in usage, so inject the computed theme.\n if (!document.querySelector('link[data-tosi-doc-system]')) {\n StyleSheet(\n 'tosi-doc-system',\n docSystemStyleSpec({\n accent: this.accent || undefined,\n background: this.background || undefined,\n text: this.text || undefined,\n })\n )\n }\n }\n\n private applyThemePrefs = (): void => {\n const theme = this.prefs.theme.value\n const dark =\n theme === 'dark' ||\n (theme === 'system' &&\n matchMedia('(prefers-color-scheme: dark)').matches)\n document.body.classList.toggle('darkmode', dark)\n document.body.classList.toggle('high-contrast', this.prefs.highContrast.value)\n }\n\n private persistPrefs(): void {\n try {\n localStorage.setItem(\n PREFS_KEY,\n JSON.stringify({\n theme: this.prefs.theme.value,\n highContrast: this.prefs.highContrast.value,\n locale: this.prefs.locale.value,\n })\n )\n } catch {\n // localStorage may be unavailable (private mode); preferences just won't persist.\n }\n }\n\n private initPrefs(): void {\n let saved: any = {}\n try {\n saved = JSON.parse(localStorage.getItem(PREFS_KEY) || '{}')\n } catch {\n /* ignore */\n }\n this.prefs = tosi({\n prefs: {\n theme: saved.theme || 'system',\n highContrast: saved.highContrast || false,\n locale: saved.locale || '',\n },\n }).prefs\n\n this.applyThemePrefs()\n matchMedia('(prefers-color-scheme: dark)').addEventListener(\n 'change',\n this.applyThemePrefs\n )\n this.prefs.theme.observe(() => {\n this.applyThemePrefs()\n this.persistPrefs()\n })\n this.prefs.highContrast.observe(() => {\n this.applyThemePrefs()\n this.persistPrefs()\n })\n this.prefs.locale.observe(() => this.persistPrefs())\n }\n\n // ---- Localization --------------------------------------------------------\n\n private async initLocale(): Promise<void> {\n if (!this.localized) return\n try {\n const text = await (await fetch(this.localized)).text()\n initLocalization(text)\n if (this.prefs.locale.value) setLocale(this.prefs.locale.value)\n } catch (error) {\n console.warn(\n '<tosi-doc-system> could not load localization from',\n this.localized,\n error\n )\n }\n }\n\n // ---- Settings menu -------------------------------------------------------\n\n private settingsButton(): HTMLElement {\n return button(\n {\n class: 'iconic',\n // Header buttons default to the brand color (invisible on the brand bar);\n // use the link color like the nav toggle so the icon is visible.\n style: { color: vars.linkColor },\n title: 'settings',\n onClick: (event: Event) => {\n const menuItems: any[] = []\n\n // Print / ePub of the whole corpus, before a separator + the prefs.\n let projectName = ''\n try {\n projectName = JSON.parse(this.config || '{}').projectName || ''\n } catch {\n // ignore — fall through to document.title\n }\n const bookTitle = projectName || document.title || 'Documentation'\n menuItems.push({\n caption: 'Print as PDF',\n icon: 'printer',\n action: () => {\n const win = window.open('', '_blank')\n if (!win) {\n window.alert('Allow pop-ups to print the documentation as a book.')\n return\n }\n win.document.open()\n win.document.write(\n buildBookHtml(this.corpus as any, {\n title: bookTitle,\n autoPrint: true,\n })\n )\n win.document.close()\n },\n })\n menuItems.push({\n caption: 'Download ePub',\n icon: 'book',\n action: () => {\n const link = document.createElement('a')\n link.href = `/${slugify(bookTitle)}.epub`\n link.download = ''\n link.click()\n },\n })\n menuItems.push(null)\n\n const localeOptions = (i18n.localeOptions.value as any[]) || []\n if (localeOptions.length > 1) {\n menuItems.push({\n caption: 'Language',\n icon: 'globe',\n menuItems: localeOptions.map((locale) => ({\n caption: locale.caption,\n icon: locale.icon,\n checked: () => locale.value === i18n.locale.value,\n action: () => {\n this.prefs.locale.value = locale.value\n setLocale(locale.value)\n },\n })),\n })\n }\n menuItems.push({\n caption: 'Color Theme',\n icon: 'rgb',\n menuItems: [\n {\n caption: 'System',\n checked: () => this.prefs.theme.value === 'system',\n action: () => (this.prefs.theme.value = 'system'),\n },\n {\n caption: 'Dark',\n checked: () => this.prefs.theme.value === 'dark',\n action: () => (this.prefs.theme.value = 'dark'),\n },\n {\n caption: 'Light',\n checked: () => this.prefs.theme.value === 'light',\n action: () => (this.prefs.theme.value = 'light'),\n },\n null,\n {\n caption: 'High Contrast',\n checked: () => this.prefs.highContrast.value,\n action: () =>\n (this.prefs.highContrast.value = !this.prefs.highContrast.value),\n },\n ],\n })\n popMenu({\n target: event.target as HTMLElement,\n localized: true,\n menuItems,\n })\n },\n },\n icons.moreVertical()\n )\n }\n\n // ---- Lifecycle -----------------------------------------------------------\n\n // Parse a declarative <ul class=\"...\"> of <li><a href data-icon?>label</a> into\n // LinkItem[]. Returns [] when the list is absent.\n private parseLinks(selector: string): LinkItem[] {\n const list = this.querySelector(selector)\n if (!list) return []\n return [...list.querySelectorAll('a')].map((anchor) => ({\n href: anchor.getAttribute('href') || '',\n label: (anchor.textContent || '').trim(),\n icon: (anchor as HTMLElement).dataset.icon || undefined,\n }))\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n // A doc page can demo the doc system itself. The page's browser (depth 0)\n // and one embedded demo (depth 1) are fine, but a demo INSIDE that demo\n // (depth ≥ 2) would recurse forever — so render an inert placeholder and\n // stop. (Don't even fetch the corpus.)\n if (this.nestingDepth() >= 2) {\n this.suppressed = true\n this.replaceChildren(\n div(\n { class: 'doc-system-nested' },\n '📖 nested doc-system preview (suppressed)'\n )\n )\n return\n }\n this.applyStyles()\n this.initPrefs()\n void this.initLocale()\n // Async data source: fetch once, then let the normal render pipeline mount.\n if (this.corpus === undefined) {\n const url = this.docs || '/docs.json'\n fetch(url)\n .then((response) => response.json())\n .then((corpus: Doc[]) => {\n this.corpus = corpus\n // Redirect legacy ?filename query-param links (the old doc-browser's\n // routing) to the new /slug/ paths.\n const legacy = legacyQueryPath(location.search, buildSlugMap(corpus))\n if (legacy) {\n if (legacy !== location.pathname) {\n // Different page — navigate to the real pre-rendered static page.\n location.replace(legacy + location.hash)\n return\n }\n // Same page — just drop the stale legacy query, no reload.\n history.replaceState(null, '', legacy + location.hash)\n }\n this.queueRender()\n })\n .catch((error) =>\n console.error('<tosi-doc-system> could not load docs from', url, error)\n )\n }\n }\n\n render(): void {\n super.render()\n if (this.suppressed || this.corpus === undefined) return\n\n // Already mounted: the only live input is an external `route` change (memory\n // routing), which navigates the embedded browser. The appliedRoute guard\n // stops the browser's own write-back to `route` from re-navigating.\n if (this.browser !== undefined) {\n const navigate = (this.browser as any).navigate as\n | ((slug: string) => void)\n | undefined\n if (navigate && this.route && this.route !== this.appliedRoute) {\n this.appliedRoute = this.route\n navigate(this.route)\n }\n return\n }\n\n let config: DocSystemConfig = {}\n if (this.config) {\n try {\n config = JSON.parse(this.config)\n } catch {\n console.warn('<tosi-doc-system> ignoring invalid config attribute')\n }\n }\n\n // Nested instances (a live demo of the doc system) must never drive the page\n // URL — force memory routing. A top-level instance opts in via the attribute.\n const nested = this.nestingDepth() >= 1\n const memory =\n nested || this.routing === 'memory' || this.routing === 'internal'\n\n // Adopt the pre-rendered markdown for the landing page so it is hydrated in\n // place, never re-rendered. createDocBrowser grafts this node into its content\n // area; the static nav list (already crawled) is replaced by the reactive one.\n const contentElement =\n (this.querySelector('.doc-content') as HTMLElement | null) || undefined\n\n // Header-bar links are declared as a real, crawlable list in the static page.\n const navbarLinks = this.parseLinks('.doc-navbar')\n\n this.appliedRoute = this.route\n\n this.browser = createDocBrowser({\n docs: this.corpus,\n routing: memory ? 'memory' : 'path',\n initialRoute: memory ? this.route || undefined : undefined,\n onRouteChange: memory\n ? (slug: string) => {\n // Record before reflecting so the resulting render() no-ops.\n this.appliedRoute = slug\n this.route = slug\n }\n : undefined,\n context: this.context || {\n tosijs: (globalThis as any).xinjs,\n 'tosijs-ui': (globalThis as any).xinjsui,\n },\n projectName: config.projectName,\n projectLinks: config.projectLinks,\n navbarLinks: navbarLinks.length ? navbarLinks : undefined,\n contentElement,\n })\n\n // Add the settings (theme + language) menu — except in a nested demo, where\n // a gear that retints the whole host page would be surprising.\n if (!nested) {\n const header = this.browser.querySelector('header')\n if (header) header.append(this.settingsButton())\n }\n\n this.replaceChildren(this.browser)\n\n // Hydration done: reveal the page (the generated <head> hid it to mask the\n // static→live swap). Only the page-owning instance touches document.body;\n // a nested demo must not. Next frame so the browser has painted first.\n if (!nested && typeof document !== 'undefined') {\n requestAnimationFrame(() => {\n document.body.style.opacity = '1'\n })\n }\n }\n}\n\nexport const tosiDocSystem =\n TosiDocSystem.elementCreator() as ElementCreator<TosiDocSystem>\n",
45
46
  "/*#\n# editable-rect\n\n`<tosi-editable>` (`editableRect` is the `ElementCreator` and `EditableRect` is the class) is an element\nfor allowing the adjustment of another element's position and size. Simply insert it in a `position: absolute`\nor `position: fixed` element and you can directly adjust its CSS positioning, including rotation.\n\nClick on an element to adjust its position, dimensions, and rotation.\n\n```js\nimport { editableRect, icons } from 'tosijs-ui'\nimport { elements } from 'tosijs'\nconst { button } = elements\n\nfunction showTools(event) {\n event.stopPropagation()\n event.preventDefault()\n}\n\nconst editable = editableRect(button({class: 'more-popup', onClick: showTools}, icons.moreVertical()))\npreview.addEventListener('click', (event) => {\n const target = event.target\n if (['absolute', 'fixed'].includes(getComputedStyle(target).position)) {\n target.append(editable)\n } else {\n editable.remove()\n }\n})\npreview.addEventListener('change', event => console.log(event))\n```\n```html\n<div class=\"editable\" style=\"top: 20px; left: 20px; width: auto; height: auto; right: 20px; bottom: 20px;\">\n <div class=\"editable\" style=\"top: 20px; left: 20px; width: 200px; height: 150px;\">\n </div>\n <div class=\"editable\" style=\"bottom: 20px; top: 20px; width: 300px; height: auto; right: 20px;\">\n </div>\n</div>\n```\n```css\n.preview .editable {\n position: absolute;\n box-shadow: inset 0 0 0 1px #0ccc;\n background: #0cc1;\n}\n\n.preview button.more-popup {\n position: absolute;\n width: 44px;\n height: 44px;\n top: 2px;\n right: 2px;\n --text-color: black;\n background: transparent;\n box-shadow: none;\n}\n\n.previw button\n```\n\n## Snapping\n\nWhen `EditableRect.snapToGrid === true` or the shift-key is depresseed, position will snap to `EditableRect.gridSize` pixels (default = 8).\n\nSimilarly `EditableRect.snapAngle === true` or the shift-key will snap rotation to increments of `EditableRect.angleSize` degrees (default = 15).\n\n## Events\n\nAfter an element's position, size, or rotation are adjusted a `change` event is triggered on the element.\n*/\n\n/*{ \"parent\": \"Components\" }*/\n\nimport { Component, elements, vars } from 'tosijs'\nimport { icons } from './icons'\nimport { trackDrag } from './track-drag'\n\nconst { div, slot } = elements\n\ninterface Locks {\n left: boolean\n right: boolean\n top: boolean\n bottom: boolean\n}\n\ntype Side = keyof Locks\n\nexport class EditableRect extends Component {\n static preferredTagName = 'tosi-editable'\n\n static initAttributes = {\n rotationSnap: 0,\n positionSnap: 0,\n }\n\n static angleSize = 15\n static gridSize = 8\n static snapAngle = false\n static snapToGrid = false\n\n static shadowStyleSpec = {\n ':host': {\n '--handle-bg': '#fff4',\n '--handle-color': '#2228',\n '--handle-hover-bg': '#8ff8',\n '--handle-hover-color': '#222',\n '--handle-size': '20px',\n '--handle-padding': '2px',\n },\n ':host ::slotted(*)': {\n position: 'absolute',\n },\n ':host > :not(style,slot)': {\n boxSizing: 'border-box',\n content: '\" \"',\n position: 'absolute',\n display: 'flex',\n height: vars.handleSize,\n width: vars.handleSize,\n padding: vars.handlePadding,\n '--text-color': vars.handleColor,\n background: vars.handleBg,\n },\n ':host > .drag-size': {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n height: 'auto',\n width: 'auto',\n background: 'transparent',\n cursor: 'ew-resize',\n },\n ':host > [part=\"rotate\"]': {\n transform: `translateY(${vars.handleSize_50})`,\n },\n ':host > [locked] > svg:first-child, :host > :not([locked]) > svg+svg': {\n display: 'none',\n },\n ':host .icon-unlock': {\n opacity: 0.5,\n },\n ':host svg': {\n pointerEvents: 'none',\n },\n ':host > *:hover': {\n '--text-color': vars.handleHoverColor,\n background: vars.handleHoverBg,\n },\n }\n\n static snappedCoords(event: PointerEvent, coords: number[]): number[] {\n const { gridSize } = EditableRect\n return EditableRect.snapToGrid || event.shiftKey\n ? coords.map((v) => Math.round(v / gridSize) * gridSize)\n : coords\n }\n\n static snappedAngle(event: PointerEvent, a: number): number {\n const { angleSize } = EditableRect\n return EditableRect.snapAngle || event.shiftKey\n ? Math.round(a / angleSize) * angleSize\n : a\n }\n\n get locked(): Locks {\n const element = this.parentElement!\n if (element.style.inset) {\n return { left: true, top: true, bottom: true, right: true }\n }\n const right = element.style.right.match(/\\d/) !== null\n const left = !right || element.style.left.match(/\\d/) !== null\n const bottom = element.style.bottom.match(/\\d/) !== null\n const top = !bottom || element.style.top.match(/\\d/) !== null\n return { left, top, bottom, right }\n }\n\n set locked(locks: Locks) {\n const { bottom, right } = locks\n let { left, top } = locks\n const element = this.parentElement!\n const l = element.offsetLeft\n const t = element.offsetTop\n const w = element.offsetWidth\n const h = element.offsetHeight\n const r = (element.offsetParent as HTMLElement).offsetWidth - l - w\n const b = (element.offsetParent as HTMLElement).offsetHeight - t - h\n Object.assign(element.style, {\n left: '',\n right: '',\n top: '',\n bottom: '',\n width: '',\n height: '',\n })\n if (!right) left = true\n if (!bottom) top = true\n if (left) element.style.left = l + 'px'\n if (right) element.style.right = r + 'px'\n if (left && right) {\n element.style.width = 'auto'\n } else {\n element.style.width = w + 'px'\n }\n if (top) element.style.top = t + 'px'\n if (bottom) element.style.bottom = b + 'px'\n if (top && bottom) {\n element.style.height = 'auto'\n } else {\n element.style.height = h + 'px'\n }\n this.queueRender()\n }\n\n get coords(): { top: number; left: number; bottom: number; right: number } {\n const { top, left, right, bottom } = this.parentElement!.style\n return {\n top: parseFloat(top),\n left: parseFloat(left),\n right: parseFloat(right),\n bottom: parseFloat(bottom),\n }\n }\n\n get left(): number {\n return this.parentElement!.offsetLeft\n }\n\n get width(): number {\n return this.parentElement!.offsetWidth\n }\n\n get right(): number {\n return (\n (this.parentElement!.offsetParent as HTMLElement).offsetWidth -\n (this.left + this.width)\n )\n }\n\n get top(): number {\n return this.parentElement!.offsetTop\n }\n\n get height(): number {\n return this.parentElement!.offsetHeight\n }\n\n get bottom(): number {\n return (\n (this.parentElement!.offsetParent as HTMLElement).offsetHeight -\n (this.top + this.height)\n )\n }\n\n triggerChange = () => {\n this.parentElement!.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: true,\n })\n )\n }\n\n adjustPosition = (event: Event) => {\n // this means there will be some positioning coordinate set!\n const { locked } = this\n this.locked = locked\n const target = this.parentElement!\n const { top, left, bottom, right } = this.coords\n trackDrag(event as PointerEvent, (dx, dy, dragEvent) => {\n ;[dx, dy] = EditableRect.snappedCoords(dragEvent, [dx, dy])\n if (!isNaN(top)) {\n target.style.top = top + dy + 'px'\n }\n if (!isNaN(bottom)) {\n target.style.bottom = bottom - dy + 'px'\n }\n if (!isNaN(left)) {\n target.style.left = left + dx + 'px'\n }\n if (!isNaN(right)) {\n target.style.right = right - dx + 'px'\n }\n if (dragEvent.type === 'mouseup') {\n this.triggerChange()\n return true\n }\n })\n }\n\n resize = (event: Event) => {\n const target = this.parentElement!\n const { locked } = this\n this.locked = Object.assign({\n left: true,\n top: true,\n right: true,\n bottom: true,\n })\n const [right, bottom] = [this.right, this.bottom]\n\n trackDrag(event as PointerEvent, (dx, dy, dragEvent) => {\n let r = right - dx\n let b = bottom - dy\n ;[r, b] = EditableRect.snappedCoords(dragEvent as PointerEvent, [r, b])\n target.style.right = r + 'px'\n target.style.bottom = b + 'px'\n if (dragEvent.type === 'mouseup') {\n this.locked = locked\n this.triggerChange()\n return true\n }\n })\n }\n\n adjustSize = (event: Event) => {\n const target = this.parentElement!\n const { locked } = this\n const dimension = (event.target as HTMLElement).getAttribute('part') as Side\n this.locked = Object.assign({\n left: true,\n right: true,\n top: true,\n bottom: true,\n })\n const original = this[dimension]\n\n trackDrag(event as PointerEvent, (dx, dy, dragEvent) => {\n const [adjusted] = EditableRect.snappedCoords(dragEvent, [\n original +\n (['left', 'right'].includes(dimension) ? dx : dy) *\n (['right', 'bottom'].includes(dimension) ? -1 : 1),\n ])\n target.style[dimension] = adjusted + 'px'\n if (dragEvent.type === 'mouseup') {\n this.locked = locked\n this.triggerChange()\n return true\n }\n })\n }\n\n get rect(): DOMRect {\n return this.parentElement!.getBoundingClientRect()\n }\n\n get center(): { x: number; y: number } {\n const rect = this.parentElement!.getBoundingClientRect()\n return {\n x: rect.x + rect.width * 0.5,\n y: rect.y + rect.height * 0.5,\n }\n }\n\n get element(): HTMLElement {\n return this.parentElement as HTMLElement\n }\n\n adjustRotation = (event: Event) => {\n const { center } = this\n const { transformOrigin } = this.element.style\n if (!transformOrigin) {\n this.element.style.transformOrigin = '50% 50%'\n }\n trackDrag(event as PointerEvent, (_dx, _dy, dragEvent: PointerEvent) => {\n const { clientX, clientY } = dragEvent\n const x = clientX - center.x\n const y = clientY - center.y\n let alpha = y > 0 ? 90 : -90\n if (x !== 0) {\n alpha = (Math.atan2(y, x) * 180) / Math.PI\n }\n alpha = EditableRect.snappedAngle(dragEvent, alpha)\n if (alpha === 0) {\n this.element.style.transformOrigin = ''\n this.element.style.transform = ''\n } else {\n this.element.style.transform = `rotate(${alpha}deg)`\n }\n this.triggerChange()\n return dragEvent.type === 'mouseup'\n })\n }\n\n toggleLock = (event: Event) => {\n const { locked } = this\n const which = (event.target as HTMLElement).title.split(' ')[1] as Side\n locked[which] = !locked[which]\n this.locked = locked\n this.queueRender()\n event.stopPropagation()\n event.preventDefault()\n }\n\n content = () => [\n div(\n {\n part: 'move',\n style: { top: '50%', left: '50%', transform: 'translate(-50%,-50%)' },\n },\n icons.move()\n ),\n div({\n part: 'left',\n title: 'resize left',\n class: 'drag-size',\n style: { left: '-6px', width: '8px' },\n }),\n div({\n part: 'right',\n title: 'resize right',\n class: 'drag-size',\n style: { left: 'calc(100% - 2px)', width: '8px' },\n }),\n div({\n part: 'top',\n title: 'resize top',\n class: 'drag-size',\n style: { top: '-6px', height: '8px', cursor: 'ns-resize' },\n }),\n div({\n part: 'bottom',\n title: 'resize bottom',\n class: 'drag-size',\n style: { top: 'calc(100% - 2px)', height: '8px', cursor: 'ns-resize' },\n }),\n div(\n {\n part: 'resize',\n style: { top: '100%', left: '100%' },\n },\n icons.resize()\n ),\n div(\n {\n part: 'rotate',\n style: { top: '50%', right: '0' },\n },\n icons.refreshCw()\n ),\n div(\n {\n part: 'lockLeft',\n title: 'lock left',\n style: { top: '50%', left: 0, transform: 'translate(-100%, -50%)' },\n },\n icons.unlock(),\n icons.lock()\n ),\n div(\n {\n part: 'lockRight',\n title: 'lock right',\n style: { top: '50%', left: '100%', transform: 'translate(0%, -50%)' },\n },\n icons.unlock(),\n icons.lock()\n ),\n div(\n {\n part: 'lockTop',\n title: 'lock top',\n style: { top: 0, left: '50%', transform: 'translate(-50%, -100%)' },\n },\n icons.unlock(),\n icons.lock()\n ),\n div(\n {\n part: 'lockBottom',\n title: 'lock bottom',\n style: { top: '100%', left: '50%', transform: 'translate(-50%, 0%)' },\n },\n icons.unlock(),\n icons.lock()\n ),\n slot(),\n ]\n\n connectedCallback(): void {\n super.connectedCallback()\n\n const {\n left,\n right,\n top,\n bottom,\n lockLeft,\n lockRight,\n lockTop,\n lockBottom,\n move,\n resize,\n rotate,\n } = this.parts\n\n const PASSIVE = { passive: true }\n ;[left, right, top, bottom].forEach((elt) => {\n elt.addEventListener('mousedown', this.adjustSize, PASSIVE)\n elt.addEventListener('touchstart', this.adjustSize, PASSIVE)\n })\n ;[lockLeft, lockRight, lockTop, lockBottom].forEach((elt) => {\n elt.addEventListener('click', this.toggleLock)\n })\n resize.addEventListener('mousedown', this.resize, PASSIVE)\n move.addEventListener('mousedown', this.adjustPosition, PASSIVE)\n rotate.addEventListener('mousedown', this.adjustRotation, PASSIVE)\n resize.addEventListener('touchstart', this.resize, PASSIVE)\n move.addEventListener('touchstart', this.adjustPosition, PASSIVE)\n rotate.addEventListener('touchstart', this.adjustRotation, PASSIVE)\n }\n\n render() {\n super.render()\n\n if (!this.parentElement) {\n return\n }\n\n const { lockLeft, lockRight, lockTop, lockBottom } = this.parts\n const { left, right, top, bottom } = this.locked\n\n lockLeft.toggleAttribute('locked', left)\n lockRight.toggleAttribute('locked', right)\n lockTop.toggleAttribute('locked', top)\n lockBottom.toggleAttribute('locked', bottom)\n }\n}\n\nexport const editableRect = EditableRect.elementCreator()\n",
46
47
  "/*#\n# filter\n\nAutomatically creates `ArrayFilter` functions `(a: any[]) => any[]` based on the query you build using its\nmacOS Finder-inspired interface, using an easily customizable / extensible collection of `Filter` objects.\n\n```js\nimport { elements } from 'tosijs'\nimport { tosiTable, filterBuilder, availableFilters } from 'tosijs-ui'\n\nconst sourceWords = ['acorn', 'bubblegum', 'copper', 'daisy', 'ellipse', 'fabulous', 'gerund', 'hopscotch', 'idiom', 'joke']\nfunction randomWords () {\n let numWords = Math.random() * 4\n const words = []\n while (numWords > 0) {\n numWords -= 1\n words.push(sourceWords[Math.floor(Math.random() * 10)])\n }\n return [...new Set(words)]\n}\n\nconst array = []\nfor(let i = 0; i < 1000; i++) {\n array.push({\n date: new Date(Math.random() * Date.now()).toISOString().split('T')[0],\n isLucky: Math.random() < 0.1,\n number: Math.floor(Math.random() * 200 - 100),\n string: randomWords().join(' '),\n tags: randomWords()\n })\n}\n\nconst { span } = elements\nconst tagsBinding = {\n value: '^.tags',\n binding: {\n toDOM(element, value) {\n element.classList.add('tag-list')\n element.textContent = ''\n element.append(...value.map(tag => span(tag, {class: 'tag'})))\n }\n }\n}\n\nconst columns = [\n {\n prop: 'date',\n width: 120\n },\n {\n prop: 'isLucky',\n type: 'boolean',\n width: 90\n },\n {\n prop: 'number',\n align: 'right',\n width: 90\n },\n {\n prop: 'string',\n width: 200\n },\n {\n prop: 'tags',\n width: 200,\n dataCell() {\n return elements.div({ bind: tagsBinding })\n }\n },\n]\n\nconst table = tosiTable({ array, columns })\nconst filter = filterBuilder({\n fields: columns,\n onChange(event) {\n table.filter = filter.filter\n }\n})\npreview.append(filter, table)\n```\n```css\n.preview {\n display: flex;\n flex-direction: column;\n}\n\n.preview tosi-table {\n flex: 1 1 auto;\n}\n\n.preview .tag-list {\n display: flex;\n font-size: 80%;\n align-items: center;\n gap: 2px;\n}\n\n.preview .tag {\n display: inline-block;\n border-radius: 4px;\n padding: 0 5px;\n line-height: 20px;\n height: 20px;\n color: var(--brand-text-color);\n background: var(--brand-color);\n}\n```\n\n## serialization\n\nThe current state of a `<tosi-filter>` can be serialized as, and restored from, a Javascript object (which itself\ncan easily be converted into JSON or a URL component) via its `state` property. Obviously, a `<tosi-filter>` can\nonly restore state if it has the necessary constituent `filters`.\n\n## availableFilters\n\n`<tosi-filter>` has a default set of `FilterMaker` objects which it uses to construct filter function.\nIn the example above, the default collection of filters is reduced to `contains`, `equals`, `after`, and `isTrue`.\n\nThe full collection includes:\n\n- **contains** * looks for fields containing a string (ignoring case)\n- **equals** * looks for fields containing equivalent values (ignoring case)\n- **after** * looks for fields with a date after a provided value\n- **greaterThan** * looks for fields with a value greater than a provided value\n- **truthy** * looks for fields that are true / non-zero / non-empty\n- **true** looks for fields that are `true`\n- **false** looks for fields that are `false`\n- **hasTags** looks for fields that are arrays containing all the (space/comma) delimited strings\n- **doesNotHaveTags** looks for fields that are arrays containing *none* of the strings\n\n**Note**: the filters marked with an * have negative version (e.g. does not contain).\n\n```\ntype ObjectTest (obj: any) => boolean\n\ninterface FilterMaker {\n caption: string // describes the test condition\n negative?: string // describes the negative test condition\n needsValue?: boolean // if false, the filterMaker doesn't need a needle value\n filterMaker(needle: any) => ObjectTest // builds an ObjectTest\n}\n```\n*/\n\n/*{ \"parent\": \"Form Components\" }*/\n\nimport {\n Component as WebComponent,\n ElementCreator,\n elements,\n PartsMap,\n} from 'tosijs'\nimport { icons } from './icons'\nimport { tosiSelect, TosiSelect, SelectOption } from './select'\n\nconst { div, input, button, span } = elements\n\ntype ObjectTest = (obj: any) => boolean\ntype ArrayFilter = (array: any[]) => any[]\n\nconst passThru = (array: any[]) => array\nconst NULL_FILTER_DESCRIPTION = 'null filter, everything matches'\n\ninterface FilterMaker {\n caption: string\n negative?: string\n needsValue?: boolean // default true\n makeTest: (value: any) => ObjectTest\n}\n\nexport const availableFilters: { [key: string]: FilterMaker } = {\n contains: {\n caption: 'contains',\n negative: 'does not contain',\n makeTest: (value: string) => {\n value = value.toLocaleLowerCase()\n return (obj: any) => String(obj).toLocaleLowerCase().includes(value)\n },\n },\n hasTags: {\n caption: 'has tags',\n makeTest: (value: string) => {\n const tags = value\n .split(/[\\s,]/)\n .map((tag) => tag.trim().toLocaleLowerCase())\n .filter((tag) => tag !== '')\n return (obj: any) =>\n Array.isArray(obj) &&\n tags.find((tag) => !obj.includes(tag)) === undefined\n },\n },\n doesNotHaveTags: {\n caption: 'does not have tags',\n makeTest: (value: string) => {\n const tags = value\n .split(/[\\s,]/)\n .map((tag) => tag.trim().toLocaleLowerCase())\n .filter((tag) => tag !== '')\n return (obj: any) =>\n Array.isArray(obj) &&\n tags.find((tag) => obj.includes(tag)) === undefined\n },\n },\n equals: {\n caption: '=',\n negative: '≠',\n makeTest: (value: string) => {\n if (isNaN(Number(value))) {\n value = String(value).toLocaleLowerCase()\n return (obj: any) => String(obj).toLocaleLowerCase() === value\n }\n const num = Number(value)\n return (obj: any) => Number(obj) === num\n },\n },\n after: {\n caption: 'is after',\n negative: 'is before',\n makeTest: (value: any) => {\n const date = new Date(value)\n return (obj: any) => new Date(obj) > date\n },\n },\n greaterThan: {\n caption: '>',\n negative: '≤',\n makeTest: (value: any) => {\n if (!isNaN(Number(value))) {\n const num = Number(value)\n return (obj: any) => Number(obj) > num\n }\n value = value.toLocaleLowerCase()\n return (obj: any) => String(obj).toLocaleLowerCase() > value\n },\n },\n truthy: {\n caption: 'is true/non-empty/non-zero',\n negative: 'is false/empty/zero',\n needsValue: false,\n makeTest: () => (obj: any) => !!obj,\n },\n isTrue: {\n caption: '= true',\n needsValue: false,\n makeTest: () => (obj: any) => obj === true,\n },\n isFalse: {\n caption: '= false',\n needsValue: false,\n makeTest: () => (obj: any) => obj === false,\n },\n}\n\ninterface Filter {\n description: string\n test: ObjectTest\n}\n\nconst passAnything = {\n description: 'anything',\n test: () => true,\n}\n\nfunction getSelectText(select: TosiSelect): string {\n return (select.options[select.selectedIndex] as SelectOption)?.caption || ''\n}\n\ntype Fields = Array<{ name?: string; prop: string }>\n\nexport interface FilterPartState {\n haystack: string\n condition: string\n needle: string\n}\n\ninterface FilterPartParts extends PartsMap {\n haystack: TosiSelect\n condition: TosiSelect\n needle: HTMLInputElement\n remove: HTMLButtonElement\n}\n\nexport class FilterPart extends WebComponent<FilterPartParts> {\n static preferredTagName = 'tosi-filter-part'\n\n static lightStyleSpec = {\n ':host': {\n display: 'flex',\n },\n\n ':host .tosi-icon:': {\n verticalAlign: 'middle',\n pointerEvents: 'none',\n },\n\n ':host [part=\"haystack\"], :host [part=\"condition\"]': {\n flex: '1',\n },\n\n ':host [part=\"needle\"]': {\n flex: 2,\n },\n\n ':host [hidden]+[part=\"padding\"]': {\n display: 'block',\n content: ' ',\n flex: '1 1 auto',\n },\n }\n\n static initAttributes = {\n haystack: '*',\n condition: 'contains',\n needle: '',\n }\n\n fields: Fields = []\n filters = availableFilters\n\n content = () => [\n tosiSelect({ part: 'haystack' }),\n tosiSelect({ part: 'condition' }),\n input({ part: 'needle', type: 'search' }),\n span({ part: 'padding' }),\n button({ part: 'remove', title: 'delete' }, icons.trash()),\n ]\n\n filter: Filter = passAnything\n\n get state(): FilterPartState {\n const { haystack, needle, condition } = this.parts\n return {\n haystack: haystack.value,\n needle: needle.value,\n condition: condition.value,\n }\n }\n\n set state(newState: FilterPartState) {\n Object.assign(this, newState)\n }\n\n buildFilter = (/* event: Event */) => {\n const { haystack, condition, needle } = this.parts\n\n const negative = condition.value.startsWith('~')\n const key = negative ? condition.value.slice(1) : condition.value\n const filter = this.filters[key] as FilterMaker\n needle.hidden = filter.needsValue === false\n\n const baseTest =\n filter.needsValue === false\n ? filter.makeTest(undefined)\n : filter.makeTest(needle.value)\n const field = haystack.value\n let test\n\n if (field !== '*') {\n test = negative\n ? (obj: any) => !baseTest(obj[field])\n : (obj: any) => baseTest(obj[field])\n } else {\n test = negative\n ? (obj: any) =>\n Object.values(obj).find((v) => !baseTest(v)) !== undefined\n : (obj: any) =>\n Object.values(obj).find((v) => baseTest(v)) !== undefined\n }\n\n const matchValue = filter.needsValue !== false ? ` \"${needle.value}\"` : ''\n const description = `${getSelectText(haystack)} ${getSelectText(\n condition\n )}${matchValue}`\n\n this.filter = {\n description,\n test,\n }\n\n this.parentElement?.dispatchEvent(new Event('change'))\n }\n\n connectedCallback() {\n super.connectedCallback()\n\n const { haystack, condition, needle, remove } = this.parts\n\n haystack.addEventListener('change', this.buildFilter)\n condition.addEventListener('change', this.buildFilter)\n needle.addEventListener('input', this.buildFilter)\n haystack.value = this.haystack\n condition.value = this.condition\n needle.value = this.needle\n\n remove.addEventListener('click', () => {\n const { parentElement } = this\n this.remove()\n parentElement?.dispatchEvent(new Event('change'))\n })\n }\n\n render() {\n super.render()\n\n const { haystack, condition, needle } = this.parts\n\n haystack.options = [\n {\n caption: 'any field',\n value: '*',\n },\n ...this.fields.map((field) => field.prop),\n ]\n\n condition.options = Object.keys(this.filters)\n .map((key) => {\n const filter = this.filters[key]\n return filter.negative !== undefined\n ? [\n { caption: filter.caption, value: key },\n { caption: filter.negative, value: '~' + key },\n ]\n : { caption: filter.caption, value: key }\n })\n .flat() as SelectOption[]\n\n if (this.haystack !== '') {\n haystack.value = this.haystack\n }\n if (this.condition !== '') {\n condition.value = this.condition\n }\n if (this.needle !== '') {\n needle.value = this.needle\n }\n this.buildFilter()\n }\n}\n\nexport const filterPart = FilterPart.elementCreator() as ElementCreator<FilterPart>\n\nexport type FilterState = FilterPartState[]\n\nexport interface FilterBuilderParts extends PartsMap {\n add: HTMLButtonElement\n resent: HTMLButtonElement\n}\n\nexport class FilterBuilder extends WebComponent<FilterBuilderParts> {\n static preferredTagName = 'tosi-filter'\n\n static lightStyleSpec = {\n ':host': {\n height: 'auto',\n display: 'grid',\n gridTemplateColumns: '32px calc(100% - 64px) 32px',\n alignItems: 'center',\n },\n\n ':host [part=\"filterContainer\"]': {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n flex: '1 1 auto',\n },\n\n ':host [part=\"haystack\"]': {\n _fieldWidth: '100px',\n },\n\n ':host [part=\"condition\"]': {\n _fieldWidth: '60px',\n },\n\n ':host [part=\"needle\"]': {\n _fieldWidth: '80px',\n },\n\n ':host [part=\"add\"], :host [part=\"reset\"]': {\n '--button-size': 'var(--touch-size, 32px)',\n borderRadius: '999px',\n height: 'var(--button-size)',\n lineHeight: 'var(--button-size)',\n margin: '0',\n padding: '0',\n textAlign: 'center',\n width: 'var(--button-size)',\n flex: '0 0 var(--button-size)',\n },\n }\n\n private _fields: Fields = []\n\n get fields(): Fields {\n return this._fields\n }\n\n set fields(_fields: Fields) {\n this._fields = _fields\n this.queueRender()\n }\n\n get state(): FilterState {\n const { filterContainer } = this.parts\n return ([...filterContainer.children] as FilterPart[]).map(\n (part) => part.state\n )\n }\n\n set state(parts: FilterState) {\n const { fields, filters } = this\n const { filterContainer } = this.parts\n filterContainer.textContent = ''\n for (const state of parts) {\n filterContainer.append(filterPart({ fields, filters, ...state }))\n }\n }\n\n filter: ArrayFilter = passThru\n description = NULL_FILTER_DESCRIPTION\n\n addFilter = () => {\n const { fields, filters } = this\n const { filterContainer } = this.parts\n filterContainer.append(filterPart({ fields, filters }))\n }\n\n content = () => [\n button(\n {\n part: 'add',\n title: 'add filter condition',\n onClick: this.addFilter,\n class: 'round',\n },\n icons.plus()\n ),\n div({ part: 'filterContainer' }),\n button(\n { part: 'reset', title: 'reset filter', onClick: this.reset },\n icons.x()\n ),\n ]\n\n filters = availableFilters\n\n reset = () => {\n const { fields, filters } = this\n const { filterContainer } = this.parts\n this.description = NULL_FILTER_DESCRIPTION\n this.filter = passThru\n filterContainer.textContent = ''\n filterContainer.append(filterPart({ fields, filters }))\n this.dispatchEvent(new Event('change'))\n }\n\n buildFilter = (/* event: Event */) => {\n const { filterContainer } = this.parts\n if (filterContainer.children.length === 0) {\n this.reset()\n return\n }\n const filters = ([...filterContainer.children] as FilterPart[]).map(\n (filterPart) => filterPart.filter\n ) as Filter[]\n const tests = filters.map((filter) => filter.test) as ObjectTest[]\n this.description = filters.map((filter) => filter.description).join(', ')\n this.filter = (array: any[]) =>\n array.filter(\n (obj: any) => tests.find((f) => f(obj) === false) === undefined\n )\n this.dispatchEvent(new Event('change'))\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n\n const { filterContainer } = this.parts\n filterContainer.addEventListener('change', this.buildFilter)\n\n this.reset()\n }\n\n render() {\n super.render()\n }\n}\n\nexport const filterBuilder = FilterBuilder.elementCreator() as ElementCreator<FilterBuilder>\n",
47
48
  "/*#\n# forms\n\n`<tosi-form>` and `<tosi-field>` can be used to quickly create forms complete with\n[client-side validation](https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation#built-in_form_validation_examples).\n\n```js\nconst form = preview.querySelector('tosi-form')\npreview.querySelector('.submit').addEventListener('click', form.submit)\n```\n```html\n<tosi-form value='{\"formInitializer\": \"initial value from form\"}'>\n <h3 slot=\"header\">Example Form Header</h3>\n <tosi-field caption=\"Required field\" key=\"required\"></tosi-field>\n <tosi-field optional key=\"optional\"><i>Optional</i> Field</tosi-field>\n <tosi-field key=\"text\" type=\"text\" placeholder=\"type it in here\">Tell us a long story</tosi-field>\n <tosi-field caption=\"Zip Code\" placeholder=\"12345 or 12345-6789\" key=\"zipcode\" pattern=\"\\d{5}(-\\d{4})?\"></tosi-field>\n <tosi-field caption=\"Date\" key=\"date\" type=\"date\"></tosi-field>\n <tosi-field caption=\"Number\" key=\"number\" type=\"number\"></tosi-field>\n <tosi-field caption=\"Range\" key=\"range\" type=\"range\" min=\"0\" max=\"10\"></tosi-field>\n <tosi-field key=\"boolean\" type=\"checkbox\">😃 <b>Agreed?!</b></tosi-field>\n <tosi-field key=\"color\" type=\"color\" value=\"pink\">\n favorite color\n </tosi-field>\n <tosi-field key=\"select\">\n Custom Field\n <select slot=\"input\">\n <option>This</option>\n <option>That</option>\n <option>The Other</option>\n </select>\n </tosi-field>\n <tosi-field key=\"tags\">\n Tag List\n <tosi-tag-list editable slot=\"input\" available-tags=\"pick me,no pick me\"></tosi-tag-list>\n </tosi-field>\n <tosi-field key=\"rating\">\n Rate this form!\n <tosi-rating slot=\"input\"></tosi-rating>\n </tosi-field>\n <tosi-field key=\"like\">\n Do you like it?\n <tosi-segmented\n choices=\"yes=Yes:thumbsUp,no=No:thumbsDown\"\n slot=\"input\"\n ></tosi-segmented>\n </tosi-field>\n <tosi-field key=\"relationship\">\n Relationship Status\n <tosi-segmented\n style=\"--segmented-direction: column; --segmented-align-items: stretch\"\n choices=\"couple=In a relationship,single=Single\"\n other=\"It's complicated…\"\n slot=\"input\"\n ></tosi-segmented>\n </tosi-field>\n <tosi-field key=\"amount\" fixed-precision=\"2\" type=\"number\" prefix=\"$\" suffix=\"(USD)\">\n What's it worth?\n </tosi-field>\n <tosi-field key=\"valueInitializer\" value=\"initial value from field\">\n Initialized by field\n </tosi-field>\n <tosi-field key=\"formInitializer\">\n Initialized by form\n </tosi-field>\n <button slot=\"footer\" class=\"submit\">Submit</button>\n</tosi-form>\n```\n```css\n.preview tosi-form {\n height: 100%;\n}\n\n.preview ::part(header), .preview ::part(footer) {\n background: var(--inset-bg);\n justify-content: center;\n padding: calc(var(--spacing) * 0.5) var(--spacing);\n}\n\n.preview h3, .preview h4 {\n margin: 0;\n padding: 0;\n}\n\n.preview ::part(content) {\n padding: var(--spacing);\n gap: var(--spacing);\n background: var(--background);\n}\n\n.preview label {\n display: grid;\n grid-template-columns: 180px auto 100px;\n gap: var(--spacing);\n}\n\n.preview label [part=\"caption\"] {\n text-align: right;\n}\n\n.preview label:has(:invalid:required)::after {\n content: '* required'\n}\n\n@media (max-width: 500px) {\n .preview label [part=\"caption\"] {\n text-align: center;\n }\n\n .preview label {\n display: flex;\n flex-direction: column;\n position: relative;\n align-items: stretch;\n gap: calc(var(--spacing) * 0.5);\n }\n\n .preview label:has(:invalid:required)::after {\n position: absolute;\n top: 0;\n right: 0;\n content: '*'\n }\n\n .preview tosi-field [part=\"field\"],\n .preview tosi-field [part=\"input\"] > * {\n display: flex;\n justify-content: center;\n }\n}\n\n.preview :invalid {\n box-shadow: inset 0 0 0 2px #F008;\n}\n```\n\n## `<tosi-form>`\n\n`<tosi-form>` prevents the default form behavior when a `submit` event is triggered and instead validates the\nform contents (generating feedback if desired) and calls its `submitCallback(value: {[key: string]: any}, isValid: boolean): void`\nmethod.\n\n`<tosi-form>` offers a `fields` proxy that allows values stored in the form to be updated. Any changes will trigger a `change`\nevent on the `<tosi-form>` (in addition to any events fired by form fields).\n\n`<tosi-form>` instances have `value` and `isValid` properties you can access any time. Note that `isValid` is computed\nand triggers form validation.\n\n`<tosi-form>` has `header` and `footer` `<slot>`s in addition to default `<slot>`, which is tucked inside a `<form>` element.\n\n## `<tosi-field>`\n\n`<tosi-field>` is a simple web-component with no shadowDOM that combines an `<input>` field wrapped with a `<label>`. Any\ncontent of the custom-element will become the `caption` or you can simply set the `caption` attribute.\n\nYou can replace the default `<input>` field by adding an element to the slot `input` (it's a `tosiSlot`) whereupon\nthe `value` of that element will be used instead of the built-in `<input>`. (The `<input>` is retained and\nis used to drive form-validation.)\n\n`<tosi-field>` supports the following attributes:\n\n- `caption` labels the field\n- `key` determines the form property the field will populate\n- `type` determines the data-type: '' | 'checkbox' | 'number' | 'range' | 'date' | 'text' | 'color'\n- `optional` turns off the `required` attribute (fields are required by default)\n- `pattern` is an (optional) regex pattern\n- `placeholder` is an (optional) placeholder\n\nThe `text` type populates the `input` slot with a `<textarea>` element.\n\nThe `color` type populates the `input` slot with a `<tosi-color>` element (and thus supports colors with alpha values).\n\n<tosi-css-var-editor element-selector=\"tosi-field\" target-selector=\".preview\"></tosi-css-var-editor>\n\n## Native Form Integration\n\nThe following components support native form integration via `formAssociated`:\n\n- `<tosi-rating>` - star ratings\n- `<tosi-select>` - custom select dropdowns\n- `<tosi-segmented>` - segmented button groups\n- `<tosi-tag-list>` - tag selection lists\n\nThese components can be used directly in a standard `<form>` element with full support for:\n- Form submission (values included in FormData)\n- Form reset\n- Required field validation\n- The `:invalid` and `:valid` CSS pseudo-classes\n\n```html\n<form id=\"native-form\" class=\"native-form\">\n <label>\n <span>Rate our service (required):</span>\n <tosi-rating name=\"rating\" required min=\"1\"></tosi-rating>\n </label>\n\n <label>\n <span>Select your country:</span>\n <tosi-select name=\"country\" required placeholder=\"-- Select --\"\n options=\"us=United States:flag,uk=United Kingdom:flag,ca=Canada:flag,au=Australia:flag\"\n ></tosi-select>\n </label>\n\n <label>\n <span>Subscription tier:</span>\n <tosi-segmented\n name=\"tier\"\n required\n choices=\"free=Free,pro=Pro:star,enterprise=Enterprise:tosi\"\n ></tosi-segmented>\n </label>\n\n <label>\n <span>Interests (select at least one):</span>\n <tosi-tag-list\n name=\"interests\"\n required\n editable\n available-tags=\"Technology,Sports,Music,Art,Travel,Food\"\n ></tosi-tag-list>\n </label>\n\n <div class=\"buttons\">\n <button type=\"submit\">Submit</button>\n <button type=\"reset\">Reset</button>\n </div>\n</form>\n```\n```css\n.preview .native-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n overflow: auto;\n height: 100%;\n}\n\n.preview .native-form label {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.preview .native-form .buttons {\n display: flex;\n gap: 8px;\n}\n\n.preview tosi-rating:invalid,\n.preview tosi-select:invalid,\n.preview tosi-segmented:invalid,\n.preview tosi-tag-list:invalid {\n outline: 2px solid #f008;\n outline-offset: 2px;\n}\n\n.preview tosi-rating:valid,\n.preview tosi-select:valid,\n.preview tosi-segmented:valid,\n.preview tosi-tag-list:valid {\n outline: 2px solid #0a08;\n outline-offset: 2px;\n}\n```\n```js\nconst { TosiDialog } = tosijsui\nconst form = preview.querySelector('#native-form')\n\nform.addEventListener('submit', (e) => {\n e.preventDefault()\n const formData = new FormData(form)\n const data = Object.fromEntries(formData.entries())\n TosiDialog.alert(JSON.stringify(data, null, 2), 'Form Submitted')\n})\n\nform.addEventListener('reset', () => {\n TosiDialog.alert('Form has been reset', 'Reset')\n})\n```\n\n## Using formAssociated Components with tosi-form\n\nWhile the formAssociated components work with native `<form>` elements, using them with `<tosi-form>`\nprovides additional benefits:\n\n- **No submit prevention boilerplate** - `tosi-form` automatically prevents the default form submission\n- **JSON state management** - Initialize and access form state as a JavaScript object via `value` and `fields`\n- **Validation feedback** - Built-in `isValid` property and `submitCallback` with validation status\n- **Change events** - Unified change events on the form element\n\nSince these components now support `formAssociated`, they participate directly in form submission\nand validation without needing the hidden input workaround that `tosi-field` uses.\n\n```html\n<tosi-form id=\"tosi-form\" value='{\"rating\": 3, \"tier\": \"pro\"}'>\n <h4 slot=\"header\">tosi-form with formAssociated Components</h4>\n\n <label class=\"form-row\">\n <span>Service Rating:</span>\n <tosi-rating name=\"rating\" required min=\"1\"></tosi-rating>\n </label>\n\n <label class=\"form-row\">\n <span>Country:</span>\n <tosi-select name=\"country\" required placeholder=\"-- Select --\"\n options=\"us=United States:flag,uk=United Kingdom:flag,ca=Canada:flag\"\n ></tosi-select>\n </label>\n\n <label class=\"form-row\">\n <span>Subscription:</span>\n <tosi-segmented\n name=\"tier\"\n required\n choices=\"free=Free,pro=Pro:star,enterprise=Enterprise:tosi\"\n ></tosi-segmented>\n </label>\n\n <label class=\"form-row\">\n <span>Interests:</span>\n <tosi-tag-list\n name=\"interests\"\n required\n editable\n available-tags=\"Tech,Sports,Music,Art\"\n ></tosi-tag-list>\n </label>\n\n <div slot=\"footer\" style=\"display: flex; gap: 8px;\">\n <button class=\"submit-btn\">Submit</button>\n <button class=\"reset-btn\">Reset</button>\n <button class=\"set-values-btn\">Set Values</button>\n </div>\n</tosi-form>\n```\n```css\n.preview #tosi-form {\n height: auto;\n}\n\n.preview #tosi-form .form-row {\n display: grid;\n grid-template-columns: 120px 1fr;\n gap: 8px;\n align-items: center;\n}\n\n.preview #tosi-form .form-row > span {\n text-align: right;\n}\n\n.preview #tosi-form ::part(content) {\n padding: 16px;\n gap: 12px;\n}\n\n.preview #tosi-form ::part(header) {\n padding: 8px 16px;\n}\n\n.preview #tosi-form ::part(footer) {\n padding: 8px 16px;\n}\n```\n```js\nconst { TosiDialog } = tosijsui\nconst tosiForm = preview.querySelector('#tosi-form')\n\n// Set up submit callback\ntosiForm.submitCallback = (value, isValid) => {\n const title = isValid ? 'Form Submitted (Valid)' : 'Form Submitted (Invalid)'\n TosiDialog.alert(JSON.stringify(value, null, 2), title)\n}\n\npreview.querySelector('.submit-btn').addEventListener('click', () => {\n tosiForm.submit()\n})\n\npreview.querySelector('.reset-btn').addEventListener('click', () => {\n tosiForm.value = {}\n tosiForm.querySelectorAll('tosi-rating, tosi-select, tosi-segmented, tosi-tag-list').forEach(el => {\n el.value = el.tagName === 'TOSI-TAG-LIST' ? [] : null\n })\n TosiDialog.alert('Form has been reset', 'Reset')\n})\n\npreview.querySelector('.set-values-btn').addEventListener('click', () => {\n // Demonstrate programmatic value setting\n const rating = tosiForm.querySelector('tosi-rating')\n const select = tosiForm.querySelector('tosi-select')\n const segmented = tosiForm.querySelector('tosi-segmented')\n const tagList = tosiForm.querySelector('tosi-tag-list')\n\n rating.value = 5\n select.value = 'uk'\n segmented.value = 'enterprise'\n tagList.value = ['Tech', 'Music']\n\n TosiDialog.alert('Values set programmatically:\\n\\nRating: 5\\nCountry: uk\\nTier: enterprise\\nInterests: Tech, Music', 'Values Set')\n})\n```\n*/\n\n/*{ \"parent\": \"Form Components\" }*/\n\nimport {\n Component as XinComponent,\n ElementCreator,\n elements,\n varDefault,\n} from 'tosijs'\n\nimport { colorInput } from './color-input'\n\nconst { form, slot, tosiSlot, label, input, span } = elements\n\nfunction attr(element: HTMLElement, name: string, value: any): void {\n if (value !== '' && value !== false) {\n element.setAttribute(name, value)\n } else {\n element.removeAttribute(name)\n }\n}\n\nfunction getInputValue(input: HTMLInputElement): any {\n switch (input.type) {\n case 'checkbox':\n return input.checked\n case 'radio': {\n const picked = input.parentElement?.querySelector(\n `input[type=\"radio\"][name=\"${input.name}\"]:checked`\n ) as HTMLInputElement | null\n return picked ? picked.value : null\n }\n case 'range':\n case 'number':\n return Number(input.value)\n default:\n return Array.isArray(input.value) && input.value.length === 0\n ? null\n : input.value\n }\n}\n\nfunction setElementValue(input: HTMLElement | null | undefined, value: any) {\n if (!(input instanceof HTMLElement)) {\n // do nothing\n } else if (input instanceof HTMLInputElement) {\n switch (input.type) {\n case 'checkbox':\n input.checked = value\n break\n case 'radio':\n input.checked = value === input.value\n break\n default:\n input.value = String(value || '')\n }\n } else {\n if (value != null || (input as HTMLInputElement).value != null) {\n ;(input as HTMLInputElement).value = String(value || '')\n }\n }\n}\n\nexport class TosiField extends XinComponent {\n static preferredTagName = 'tosi-field'\n\n static lightStyleSpec = {\n ':host [part=\"field\"]': {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n gap: varDefault.prefixSuffixGap('8px'),\n },\n ':host [part=\"field\"][prefix]::before': {\n content: 'attr(prefix)',\n },\n ':host [part=\"field\"][suffix]::after': {\n content: 'attr(suffix)',\n },\n ':host [part=\"field\"] > *, :host [part=\"input\"] > *': {\n width: '100%',\n },\n ':host textarea': {\n resize: 'none',\n },\n ':host input[type=\"checkbox\"]': {\n width: 'fit-content',\n },\n ':host .hidden': {\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n },\n }\n\n static initAttributes = {\n caption: '',\n key: '',\n type: '' as\n | ''\n | 'checkbox'\n | 'number'\n | 'range'\n | 'date'\n | 'text'\n | 'color',\n optional: false,\n pattern: '',\n placeholder: '',\n min: '',\n max: '',\n step: '',\n fixedPrecision: -1,\n prefix: '',\n suffix: '',\n }\n\n value: any = null\n\n content = label(\n tosiSlot({ part: 'caption' }),\n span(\n { part: 'field' },\n tosiSlot({ part: 'input', name: 'input' }),\n input({ part: 'valueHolder' })\n )\n )\n\n private valueChanged = false\n handleChange = () => {\n const { input, valueHolder } = this.parts as {\n input: HTMLElement\n valueHolder: HTMLInputElement\n }\n const inputElement = (input.children[0] || valueHolder) as HTMLInputElement\n if (inputElement !== valueHolder) {\n valueHolder.value = inputElement.value\n }\n this.value = getInputValue(inputElement)\n this.valueChanged = true\n const form = this.closest('tosi-form') as TosiForm\n if (form && this.key !== '') {\n switch (this.type) {\n case 'checkbox':\n form.fields[this.key] = inputElement.checked\n break\n case 'number':\n case 'range':\n if (this.fixedPrecision > -1) {\n inputElement.value = Number(inputElement.value).toFixed(\n this.fixedPrecision\n )\n form.fields[this.key] = Number(inputElement.value)\n } else {\n form.fields[this.key] = Number(inputElement.value)\n }\n break\n default:\n form.fields[this.key] = inputElement.value\n }\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n const { input, valueHolder } = this.parts as {\n input: HTMLElement\n valueHolder: HTMLInputElement\n }\n\n // Initialization from form value is handled by tosi-form.initializeNamedElements()\n\n valueHolder.addEventListener('change', this.handleChange)\n input.addEventListener('change', this.handleChange, true)\n }\n\n render() {\n if (this.valueChanged) {\n this.valueChanged = false\n return\n }\n const { input, caption, valueHolder, field } = this.parts as {\n input: HTMLElement\n field: HTMLElement\n caption: HTMLElement\n valueHolder: HTMLInputElement\n }\n if (caption.textContent?.trim() === '') {\n caption.append(this.caption !== '' ? this.caption : this.key)\n }\n if (this.type === 'text') {\n input.textContent = ''\n const textarea = elements.textarea({ value: this.value })\n if (this.placeholder) {\n textarea.setAttribute('placeholder', this.placeholder)\n }\n input.append(textarea)\n } else if (this.type === 'color') {\n input.textContent = ''\n input.append(colorInput({ value: this.value }))\n } else if (input.children.length === 0) {\n attr(valueHolder, 'placeholder', this.placeholder)\n attr(valueHolder, 'type', this.type)\n attr(valueHolder, 'pattern', this.pattern)\n attr(valueHolder, 'min', this.min)\n attr(valueHolder, 'max', this.max)\n if (this.step) {\n attr(valueHolder, 'step', this.step)\n } else if (this.fixedPrecision > 0 && this.type === 'number') {\n attr(valueHolder, 'step', Math.pow(10, -this.fixedPrecision))\n }\n }\n setElementValue(valueHolder, this.value)\n setElementValue(input.children[0] as HTMLElement, this.value)\n\n if (this.prefix) {\n field.setAttribute('prefix', this.prefix)\n } else {\n field.removeAttribute('prefix')\n }\n if (this.suffix) {\n field.setAttribute('suffix', this.suffix)\n } else {\n field.removeAttribute('suffix')\n }\n\n valueHolder.classList.toggle('hidden', input.children.length > 0)\n if (input.children.length > 0) {\n valueHolder.setAttribute('tabindex', '-1')\n } else {\n valueHolder.removeAttribute('tabindex')\n }\n input.style.display = input.children.length === 0 ? 'none' : ''\n attr(valueHolder, 'required', !this.optional)\n }\n}\n\nexport class TosiForm extends XinComponent {\n static preferredTagName = 'tosi-form'\n\n context = {} as { [key: string]: any }\n value = {} as { [key: string]: any }\n get isValid(): boolean {\n const widgets = (\n [...this.querySelectorAll('*')] as HTMLInputElement[]\n ).filter((widget) => widget.required !== undefined)\n return widgets.find((widget) => !widget.reportValidity()) === undefined\n }\n\n static shadowStyleSpec = {\n ':host': {\n display: 'flex',\n flexDirection: 'column',\n },\n ':host::part(header), :host::part(footer)': {\n display: 'flex',\n },\n ':host::part(content)': {\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden auto',\n height: '100%',\n width: '100%',\n position: 'relative',\n boxSizing: 'border-box',\n },\n ':host form': {\n display: 'flex',\n flex: '1 1 auto',\n position: 'relative',\n overflow: 'hidden',\n },\n }\n\n content = [\n slot({ part: 'header', name: 'header' }),\n form({ part: 'form' }, slot({ part: 'content' })),\n slot({ part: 'footer', name: 'footer' }),\n ]\n\n getField = (key: string): TosiField | null => {\n return this.querySelector(`tosi-field[key=\"${key}\"]`) as TosiField | null\n }\n\n get fields(): any {\n if (typeof this.value === 'string') {\n try {\n this.value = JSON.parse(this.value)\n } catch {\n console.log('<tosi-form> could not use its value, expects valid JSON')\n this.value = {}\n }\n }\n const { getField } = this\n const dispatch = this.dispatchEvent.bind(this)\n return new Proxy(this.value, {\n get(target, prop: string): any {\n return target[prop]\n },\n\n set(target, prop: string, newValue: any): boolean {\n if (target[prop] !== newValue) {\n target[prop] = newValue\n const field = getField(prop)\n if (field) {\n field.value = newValue\n }\n dispatch(new Event('change'))\n }\n return true\n },\n })\n }\n\n set fields(values: { [key: string]: any }) {\n const fields = [...this.querySelectorAll('tosi-field')] as TosiField[]\n for (const field of fields) {\n field.value = values[field.key]\n }\n }\n\n submit = () => {\n this.parts.form.dispatchEvent(new Event('submit'))\n }\n\n handleSubmit = (event: SubmitEvent) => {\n event.preventDefault()\n event.stopPropagation()\n // Sync field values before submitting\n this.syncFieldValues()\n const value = this.fields\n this.submitCallback(value, this.isValid)\n }\n\n submitCallback = (value: { [key: string]: any }, isValid: boolean): void => {\n console.log('override submitCallback to handle this data', {\n value,\n isValid,\n })\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n const { form } = this.parts as { form: HTMLFormElement }\n form.addEventListener('submit', this.handleSubmit)\n\n // Listen for change events from named elements to update form value\n // Use 'this' to capture events from slotted content\n this.addEventListener('change', this.handleElementChange, true)\n\n // Initialize formAssociated components (those with name attribute) from form value\n this.initializeNamedElements()\n }\n\n private handleElementChange = (event: Event) => {\n const target = event.target as HTMLElement\n const name = target.getAttribute('name')\n if (name && 'value' in target) {\n this.fields[name] = (target as any).value\n }\n }\n\n private syncFieldValues(): void {\n const formValue = this.fields\n const namedElements = this.querySelectorAll(\n '[name], [key]'\n ) as NodeListOf<HTMLElement>\n for (const el of namedElements) {\n const key = el.getAttribute('name') || el.getAttribute('key')\n if (!key) continue\n if (formValue[key] === undefined) {\n const val = (el as any).value ?? el.getAttribute('value')\n if (val != null) {\n formValue[key] = val\n }\n }\n }\n }\n\n private initializeNamedElements(): void {\n const formValue = this.fields\n // Handle both 'name' (formAssociated) and 'key' (tosi-field) attributes\n const namedElements = this.querySelectorAll(\n '[name], [key]'\n ) as NodeListOf<HTMLElement>\n for (const el of namedElements) {\n const key = el.getAttribute('name') || el.getAttribute('key')\n if (!key) continue\n if (formValue[key] !== undefined) {\n ;(el as any).value = formValue[key]\n }\n }\n }\n}\n\n/** @deprecated Use TosiField instead */\nexport type XinField = TosiField\n/** @deprecated Use TosiField instead */\nexport const XinField: typeof TosiField = TosiField\n\n/** @deprecated Use TosiForm instead */\nexport type XinForm = TosiForm\n/** @deprecated Use TosiForm instead */\nexport const XinForm: typeof TosiForm = TosiForm\n\nexport const tosiField = TosiField.elementCreator() as ElementCreator<TosiField>\n\nexport const tosiForm = TosiForm.elementCreator() as ElementCreator<TosiForm>\n\n/** @deprecated Use tosiField instead (tag is now tosi-field) */\nexport const xinField = tosiField\n\n/** @deprecated Use tosiForm instead (tag is now tosi-form) */\nexport const xinForm = tosiForm\n",
@@ -59,14 +60,14 @@
59
60
  "/*#\n# rich text\n\n`<tosi-rich-text>` is a simple and easily extensible `document.execCommand` WYSIWYG editor with some conveniences.\nThe class name is `RichText` and the ElementCreator is `tosiRichText`.\n\n### `default` widgets\n\n```html\n<tosi-rich-text>\n<h3>Heading</h3>\n<p>And some <b>text</b></p>\n</tosi-rich-text>\n```\n```css\ntosi-rich-text {\n background: white;\n}\n\ntosi-rich-text [part=\"toolbar\"] {\n background: #f8f8f8;\n}\n\ntosi-rich-text [part=\"doc\"] {\n padding: 20px;\n}\n```\n\n### `minimal` widgets\n\n```html\n<tosi-rich-text widgets=\"minimal\">\n<h3>Heading</h3>\n<p>And some <b>text</b></p>\n</tosi-rich-text>\n```\n```css\ntosi-rich-text {\n background: white;\n}\n\ntosi-rich-text [part=\"toolbar\"] {\n background: #f8f8f8;\n}\n\ntosi-rich-text [part=\"doc\"] {\n padding: 20px;\n}\n```\n\nBy default, `<tosi-rich-text>` treats its initial contents as its document, but you can also set (and get)\nits `value`.\n\n## toolbar\n\n`<tosi-rich-text>` elements have a `toolbar` slot (actually a tosi-slot because it doesn't use\nthe shadowDOM).\n\nIf you set the `widgets` attribute to `default` or `minimal` you will get a toolbar\nfor free. Or you can add your own custom widgets.\n\n## helper functions\n\nA number of helper functions are available, including:\n\n- `commandButton(title: string, command: string, iconClass: string)`\n- `blockStyle(options: Array<{caption: string, tagType: string}>)`\n- `spacer(width = '10px')`\n- `elastic(width = '10px')`\n\nThese each create a toolbar widget. A `blockStyle`-generated `<select>` element will\nautomatically have its value changed based on the current selection.\n\n## properties\n\nA `<tosi-rich-text>` element also has `selectedText` and `selectedBlocks` properties, allowing\nyou to easily perform operations on text selections, and a `selectionChange` callback (which\nsimply passes through document `selectionchange` events, but also passes a reference to\nthe `<tosi-rich-text>` component).\n\n## Form Integration\n\n`<tosi-rich-text>` is form-associated, making it work directly in native forms:\n\n```html\n<form class=\"richtext-form\">\n <label>\n <b>Compose message (required):</b>\n <tosi-rich-text name=\"content\" widgets=\"minimal\" required style=\"height: 150px\">\n </tosi-rich-text>\n </label>\n <button type=\"submit\">Submit</button>\n <button type=\"reset\">Reset</button>\n <pre class=\"output\" style=\"max-height: 100px; overflow: auto\"></pre>\n</form>\n```\n```css\n.preview .richtext-form {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n.preview .richtext-form label {\n display: flex;\n flex-direction: column;\n gap: 5px;\n}\n.preview tosi-rich-text {\n background: white;\n}\n.preview tosi-rich-text [part=\"toolbar\"] {\n background: #f8f8f8;\n}\n```\n```js\nconst form = preview.querySelector('.richtext-form')\nform.addEventListener('submit', (e) => {\n e.preventDefault()\n const data = new FormData(form)\n form.querySelector('.output').textContent = 'Content: ' + data.get('content')\n})\n```\n*/\n\n/*{ \"parent\": \"Form Components\" }*/\n\nimport {\n Component as WebComponent,\n ElementCreator,\n PartsMap,\n elements,\n deprecated,\n XinStyleSheet,\n} from 'tosijs'\nimport { icons } from './icons'\n\nimport { tosiSelect, TosiSelect } from './select'\nimport { spacer as layoutSpacer } from './layout'\n\nconst { tosiSlot, div, button } = elements\n\nconst blockStyles = [\n {\n caption: 'Title',\n tagType: 'H1',\n },\n {\n caption: 'Heading',\n tagType: 'H2',\n },\n {\n caption: 'Subheading',\n tagType: 'H3',\n },\n {\n caption: 'Minor heading',\n tagType: 'H4',\n },\n {\n caption: 'Body',\n tagType: 'P',\n },\n {\n caption: 'Code Block',\n tagType: 'PRE',\n },\n]\n\nexport function blockStyle(options = blockStyles) {\n return tosiSelect({\n title: 'paragraph style',\n slot: 'toolbar',\n class: 'block-style',\n options: options.map(({ caption, tagType }) => ({\n caption,\n value: `formatBlock,${tagType}`,\n })),\n })\n}\n\nconst spacer = () => layoutSpacer({ slot: 'toolbar' })\n\nexport function commandButton(\n title: string,\n dataCommand: string,\n icon: SVGElement\n) {\n return button({ slot: 'toolbar', dataCommand, title }, icon)\n}\n\nconst paragraphStyleWidgets = () => [\n commandButton('left-justify', 'justifyLeft', icons.alignLeft()),\n commandButton('center', 'justifyCenter', icons.alignCenter()),\n commandButton('right-justify', 'justifyRight', icons.alignRight()),\n spacer(),\n commandButton('bullet list', 'insertUnorderedList', icons.listBullet()),\n commandButton('numbered list', 'insertOrderedList', icons.listNumber()),\n spacer(),\n commandButton('indent', 'indent', icons.indent()),\n commandButton('indent', 'outdent', icons.outdent()),\n]\n\nconst characterStyleWidgets = () => [\n commandButton('bold', 'bold', icons.fontBold()),\n commandButton('italic', 'italic', icons.fontItalic()),\n commandButton('underline', 'underline', icons.fontUnderline()),\n]\n\nconst minimalWidgets = () => [\n blockStyle(),\n spacer(),\n ...characterStyleWidgets(),\n]\n\nexport const richTextWidgets = () => [\n blockStyle(),\n spacer(),\n ...paragraphStyleWidgets(),\n spacer(),\n ...characterStyleWidgets(),\n]\n\ninterface EditorParts extends PartsMap {\n toolbar: HTMLElement\n doc: HTMLElement\n content: HTMLElement\n}\n\nexport class RichText extends WebComponent<EditorParts> {\n static preferredTagName = 'tosi-rich-text'\n\n static lightStyleSpec: XinStyleSheet = {\n ':host': {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n },\n ':host [part=\"toolbar\"]': {\n padding: 4,\n display: 'flex',\n gap: '0px',\n flex: '0 0 auto',\n flexWrap: 'wrap',\n },\n ':host [part=\"toolbar\"] > button': {\n _xinIconSize: 18,\n },\n }\n\n static formAssociated = true\n\n static initAttributes = {\n widgets: 'default' as 'none' | 'minimal' | 'default',\n name: '',\n required: false,\n }\n\n private isInitialized = false\n private savedValue = ''\n\n // Form lifecycle callbacks\n formDisabledCallback(disabled: boolean) {\n if (this.isInitialized) {\n this.parts.doc.contentEditable = disabled ? 'false' : 'true'\n }\n }\n\n formResetCallback() {\n this.value = ''\n }\n\n private _value = ''\n\n get value(): string {\n return this.isInitialized ? this.parts.doc.innerHTML : this._value\n }\n\n set value(docHtml: string) {\n const oldValue = this._value\n this._value = docHtml\n if (this.isInitialized) {\n if (this.parts.doc.innerHTML !== docHtml) {\n this.parts.doc.innerHTML = docHtml\n }\n }\n // Notify tosijs of the change for form value updates\n if (oldValue !== docHtml && this.internals) {\n this.internals.setFormValue(docHtml)\n }\n }\n\n blockElement(elt: Node): Element | undefined {\n const { doc } = this.parts\n while (elt.parentElement !== null && elt.parentElement !== doc) {\n elt = elt.parentElement\n }\n return elt.parentElement === doc ? (elt as Element) : undefined\n }\n\n get selectedBlocks(): any[] {\n const { doc } = this.parts\n const selObject = window.getSelection()\n if (selObject === null) {\n return []\n }\n const blocks = [] as any[]\n for (let i = 0; i < selObject.rangeCount; i++) {\n const range = selObject.getRangeAt(i)\n if (!doc.contains(range.commonAncestorContainer)) {\n continue\n }\n let block: Element | null = this.blockElement(\n range.startContainer\n ) as Element\n const lastBlock = this.blockElement(range.endContainer) as Element\n blocks.push(block)\n while (block !== lastBlock && block !== null) {\n block = block.nextElementSibling\n blocks.push(block)\n }\n }\n return blocks\n }\n\n get selectedText(): string {\n const selObject = window.getSelection()\n if (selObject === null) {\n return ''\n }\n return this.selectedBlocks.length ? selObject.toString() : ''\n }\n\n selectionChange: (event: Event, editor: RichText) => void = () => {\n /* no not care */\n }\n\n private _updatingBlockStyle = false\n\n handleSelectChange = (event: Event) => {\n // Ignore changes triggered by updateBlockStyle\n if (this._updatingBlockStyle) {\n return\n }\n\n const target = event.target as Element | null\n const select = target?.closest(\n TosiSelect.tagName as string\n ) as HTMLSelectElement | null\n if (select == null) {\n return\n }\n\n this.doCommand(select.value)\n }\n\n handleButtonClick = (event: Event) => {\n const target = event.target as Element | null\n const button = target?.closest('button')\n if (button == null) {\n return\n }\n\n this.doCommand(button.dataset.command)\n }\n\n content = [\n tosiSlot({\n name: 'toolbar',\n part: 'toolbar',\n onClick: this.handleButtonClick,\n onChange: this.handleSelectChange,\n }),\n div({\n part: 'doc',\n contenteditable: true,\n style: {\n flex: '1 1 auto',\n outline: 'none',\n },\n }),\n tosiSlot({\n part: 'content',\n }),\n ]\n\n doCommand(command?: string) {\n if (command === undefined) {\n return\n }\n const args = command.split(',') as string[]\n\n console.log('execCommand', args[0], false, ...args.slice(1))\n document.execCommand(args[0], false, ...args.slice(1))\n }\n\n updateBlockStyle() {\n const select = this.parts.toolbar.querySelector(\n '.block-style'\n ) as HTMLSelectElement | null\n if (select === null) {\n return\n }\n let blockTags = (this.selectedBlocks as HTMLElement[]).map(\n (block) => block.tagName\n )\n blockTags = [...new Set(blockTags)]\n this._updatingBlockStyle = true\n select.value = blockTags.length === 1 ? `formatBlock,${blockTags[0]}` : ''\n this._updatingBlockStyle = false\n }\n\n // Check if the editor has meaningful content\n private hasContent(): boolean {\n const text = this.parts.doc.textContent || ''\n return text.trim().length > 0\n }\n\n // Update form value and validity when content changes\n handleInput = () => {\n if (this.internals) {\n this.internals.setFormValue(this.parts.doc.innerHTML)\n this.updateValidity()\n }\n }\n\n private updateValidity(): void {\n if (this.internals) {\n if (this.required && !this.hasContent()) {\n this.internals.setValidity(\n { valueMissing: true },\n 'Please enter some content',\n this.parts.doc\n )\n } else {\n this.internals.setValidity({})\n }\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n\n const { doc, content } = this.parts\n if (content.innerHTML !== '' && doc.innerHTML === '') {\n doc.innerHTML = content.innerHTML\n content.innerHTML = ''\n }\n\n this.isInitialized = true\n\n content.style.display = 'none'\n\n // Listen for content changes\n doc.addEventListener('input', this.handleInput)\n\n // Initialize validity state\n this.updateValidity()\n\n document.addEventListener('selectionchange', (event: Event) => {\n this.updateBlockStyle()\n this.selectionChange(event, this)\n })\n }\n\n render(): void {\n const { toolbar } = this.parts\n\n super.render()\n\n if (toolbar.children.length === 0) {\n switch (this.widgets) {\n case 'minimal':\n toolbar.append(...minimalWidgets())\n break\n case 'default':\n toolbar.append(...richTextWidgets())\n break\n }\n }\n }\n}\n\n/** @deprecated Use RichText instead */\nexport type XinWord = RichText\n/** @deprecated Use RichText instead */\nexport const XinWord: typeof RichText = RichText\n\nexport const tosiRichText = RichText.elementCreator() as ElementCreator<RichText>\n\n/** @deprecated Use tosiRichText instead (tag is now <tosi-rich-text>) */\nexport const richText = deprecated(\n (...args: Parameters<typeof tosiRichText>) => tosiRichText(...args),\n 'richText is deprecated, use tosiRichText instead (tag is now <tosi-rich-text>)'\n) as ElementCreator<RichText>\n",
60
61
  "/*#\n# router\n\nA lightweight client-side router for single-page applications. Supports\npattern matching with named parameters, hash-based routing, and multiple\nnamed route views (slots).\n\n## Basic Usage\n\n```js\nimport { defineRoutes, navigate, router, tosiRouteView } from 'tosijs-ui'\n\nconst home = () => {\n const el = document.createElement('div')\n el.textContent = 'Home page'\n return el\n}\n\nconst about = () => {\n const el = document.createElement('div')\n el.textContent = 'About page'\n return el\n}\n\nconst greeting = (params) => {\n const el = document.createElement('div')\n el.textContent = `Hello, ${params.name}!`\n return el\n}\n\ndefineRoutes(\n [\n { pattern: '', targets: [{ component: home }] },\n { pattern: 'about', targets: [{ component: about }] },\n { pattern: 'greet/:name', targets: [{ component: greeting }] },\n ],\n { hashRouting: true }\n)\n\npreview.append(\n tosiRouteView(),\n)\n\n// Navigate programmatically\nnavigate('greet/World')\n```\n\n## Named Views\n\nRoutes can target multiple named views simultaneously. This is useful\nfor layouts where a route change should update several areas of the page.\n\n```js\nimport { defineRoutes, navigate, tosiRouteView } from 'tosijs-ui'\n\nconst mainContent = (params) => {\n const el = document.createElement('div')\n el.textContent = `Editing photo ${params.id}`\n el.style.padding = '12px'\n el.style.background = '#f0f0f0'\n return el\n}\n\nconst sidebar = () => {\n const el = document.createElement('div')\n el.textContent = 'Color palette tools'\n el.style.padding = '12px'\n el.style.background = '#e0e0ff'\n return el\n}\n\ndefineRoutes(\n [\n {\n pattern: 'photos/:id/edit',\n targets: [\n { view: 'main', component: mainContent },\n { view: 'tools', component: sidebar },\n ],\n },\n ],\n { hashRouting: true }\n)\n\nconst container = document.createElement('div')\ncontainer.style.display = 'flex'\ncontainer.style.gap = '8px'\ncontainer.append(\n tosiRouteView({ name: 'main', style: { flex: '1' } }),\n tosiRouteView({ name: 'tools', style: { width: '200px' } }),\n)\npreview.append(container)\n\nnavigate('photos/42/edit')\n```\n\n## Hash Routing\n\nSet `hashRouting: true` when defining routes to use hash-based URLs\n(`#/path`) instead of History API paths. This is useful when your app\nis served from a static file server that doesn't support URL rewriting.\n\n```js\nimport { defineRoutes, navigate, tosiRouteView } from 'tosijs-ui'\n\ndefineRoutes(\n [\n {\n pattern: 'page/:id',\n targets: [{\n component: (p) => {\n const el = document.createElement('div')\n el.textContent = `Page ${p.id}`\n return el\n },\n }],\n },\n ],\n { hashRouting: true }\n)\n\npreview.append(tosiRouteView())\nnavigate('page/1')\n```\n*/\n\n/*{ \"parent\": \"Helper Libraries\" }*/\n\nimport { Component, ElementCreator, tosi } from 'tosijs'\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface RouteParams {\n [key: string]: string\n}\n\nexport interface RouteTarget {\n view?: string\n component: (params: RouteParams) => HTMLElement\n}\n\nexport interface RouteDefinition {\n pattern: string\n targets: RouteTarget[]\n fallback?: boolean\n}\n\nexport interface RouterOptions {\n hashRouting?: boolean\n}\n\ninterface CompiledRoute {\n regex: RegExp\n paramNames: string[]\n targets: RouteTarget[]\n fallback: boolean\n}\n\n// ============================================================================\n// Router State\n// ============================================================================\n\nexport const { router } = tosi({\n router: {\n path: '',\n hash: '',\n pattern: '',\n },\n})\n\nlet routerParams: RouteParams = {}\n\nexport function getRouterParams(): RouteParams {\n return { ...routerParams }\n}\n\n// ============================================================================\n// Route Registry\n// ============================================================================\n\nlet compiledRoutes: CompiledRoute[] = []\nlet useHashRouting = false\nconst viewRegistry = new Set<TosiRouteView>()\n\n// ============================================================================\n// Pattern Compilation\n// ============================================================================\n\nfunction compilePattern(pattern: string): {\n regex: RegExp\n paramNames: string[]\n} {\n const paramNames: string[] = []\n\n if (pattern === '') {\n return { regex: /^\\/?$/, paramNames }\n }\n\n const regexParts = pattern.split('/').map((segment) => {\n if (segment.startsWith(':')) {\n paramNames.push(segment.slice(1))\n return '([^/]+)'\n }\n return segment.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n })\n\n const regex = new RegExp('^/?' + regexParts.join('/') + '/?$')\n return { regex, paramNames }\n}\n\n// ============================================================================\n// Route Matching\n// ============================================================================\n\nfunction matchRoute(path: string): {\n route: CompiledRoute\n params: RouteParams\n} | null {\n const cleanPath = path.split('?')[0].split('#')[0]\n\n for (const route of compiledRoutes) {\n if (route.fallback) continue\n const match = cleanPath.match(route.regex)\n if (match) {\n const params: RouteParams = {}\n route.paramNames.forEach((name, i) => {\n params[name] = decodeURIComponent(match[i + 1])\n })\n return { route, params }\n }\n }\n\n // Try fallback route\n const fallback = compiledRoutes.find((r) => r.fallback)\n if (fallback) {\n return { route: fallback, params: {} }\n }\n\n return null\n}\n\n// ============================================================================\n// Rendering\n// ============================================================================\n\nfunction renderRoute(): void {\n const path = useHashRouting\n ? window.location.hash.replace(/^#\\/?/, '')\n : window.location.pathname\n\n router.path.value = path\n router.hash.value = window.location.hash\n\n const match = matchRoute(path)\n\n if (match) {\n routerParams = match.params\n router.pattern.value = match.route.regex.source\n\n const targetsByView = new Map<string, RouteTarget>()\n for (const target of match.route.targets) {\n targetsByView.set(target.view ?? 'default', target)\n }\n\n for (const view of viewRegistry) {\n const viewName = view.name || 'default'\n const target = targetsByView.get(viewName)\n if (target) {\n view.replaceChildren(target.component(match.params))\n } else {\n view.replaceChildren()\n }\n }\n } else {\n routerParams = {}\n router.pattern.value = ''\n for (const view of viewRegistry) {\n view.replaceChildren()\n }\n }\n}\n\n// ============================================================================\n// Public API\n// ============================================================================\n\nlet initialized = false\n\nfunction ensureListeners(): void {\n if (initialized) return\n initialized = true\n\n window.addEventListener('popstate', renderRoute)\n window.addEventListener('hashchange', renderRoute)\n}\n\nexport function defineRoutes(\n routes: RouteDefinition[],\n options: RouterOptions = {}\n): void {\n useHashRouting = options.hashRouting ?? false\n\n compiledRoutes = routes.map((def) => {\n const { regex, paramNames } = compilePattern(def.pattern)\n return {\n regex,\n paramNames,\n targets: def.targets,\n fallback: def.fallback ?? false,\n }\n })\n\n ensureListeners()\n renderRoute()\n}\n\nexport function navigate(path: string): void {\n ensureListeners()\n\n if (useHashRouting) {\n window.location.hash = '#/' + path.replace(/^\\//, '')\n } else {\n window.history.pushState({}, '', '/' + path.replace(/^\\//, ''))\n }\n\n renderRoute()\n}\n\n// ============================================================================\n// Route View Component\n// ============================================================================\n\nexport class TosiRouteView extends Component {\n static preferredTagName = 'tosi-route-view'\n\n static initAttributes = {\n name: 'default',\n }\n\n content = null\n\n connectedCallback(): void {\n super.connectedCallback()\n viewRegistry.add(this)\n // Re-render if routes are already defined\n if (compiledRoutes.length > 0) {\n renderRoute()\n }\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n viewRegistry.delete(this)\n }\n}\n\nexport const tosiRouteView =\n TosiRouteView.elementCreator() as ElementCreator<TosiRouteView>\n",
61
62
  "/*#\n# segmented select\n\nThis is a fairly general-purpose segmented select control.\n\n```html\n<div class=\"grid\">\n <tosi-segmented value=\"yes\" choices=\"yes, no, don't care\">\n Should we?\n </tosi-segmented>\n\n <div>\n <b>Localized!</b><br>\n <tosi-segmented\n localized\n title=\"do you like?\"\n choices=\"yes=Yes:thumbsUp, no=No:thumbsDown\"\n ></tosi-segmented>\n </div>\n\n <tosi-segmented\n style=\"--segmented-direction: column; --segmented-align-items: stretch\"\n choices=\"in a relationship, single\"\n other=\"it's complicated...\"\n placeholder=\"please elaborate\"\n value=\"separated\"\n >\n Relationship Status\n </tosi-segmented>\n\n <tosi-segmented\n multiple\n style=\"--segmented-direction: column; --segmented-align-items: start; --segmented-option-grid-columns: 24px 24px 100px; --segmented-input-visibility: visible;\"\n choices=\"star=Star:star, game=Game:game, bug=Bug:bug, camera=Camera:camera\"\n value=\"star,bug\"\n >\n Pick all that apply\n </tosi-segmented>\n</div>\n```\n```css\n.preview .grid {\n --segmented-option-current-background: var(--brand-color);\n --segmented-option-current-color: var(--brand-text-color);\n padding: 16px;\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n}\n```\n```js\nfunction logEvent(event) {\n const { target } = event\n if (target.matches('tosi-segmented')) {\n console.log((target.textContent || target.title).trim(), target.value)\n }\n}\npreview.addEventListener('change', logEvent, true)\n```\n```test\nconst segmented = preview.querySelectorAll('tosi-segmented')\ntest('segmented controls render', () => {\n expect(segmented.length).toBe(4)\n})\ntest('first segmented has value \"yes\"', () => {\n expect(segmented[0].value).toBe('yes')\n})\ntest('multiple segmented has array value', () => {\n expect(segmented[3].value).toBe('star,bug')\n})\n```\n\n> Check the console to see the values being set.\n\n## Form Integration\n\n`<tosi-segmented>` is form-associated, meaning it works directly in native `<form>` elements:\n\n```html\n<form class=\"segmented-form\">\n <tosi-segmented name=\"choice\" choices=\"a,b,c\" required></tosi-segmented>\n <button type=\"submit\">Submit</button>\n <span class=\"output\"></span>\n</form>\n```\n```js\nconst form = preview.querySelector('.segmented-form')\nform.addEventListener('submit', (e) => {\n e.preventDefault()\n const data = new FormData(form)\n form.querySelector('.output').textContent = 'Submitted: ' + data.get('choice')\n})\n```\n\n## Properties\n\n- `values` is an array of values (only really useful if `multiple` is set to true)\n\nYou can set `choices` programmatically to an array of `Choice` objects:\n\n interface Choice {\n icon?: string | SVGElement\n value: string\n caption: string\n }\n\n## Attributes\n\n- `choices` is a string of comma-delimited options of the form `value=caption:icon`,\n where caption and icon are optional\n- `multiple` allows multiple selection\n- `name` the form field name (for formAssociated support)\n- `other` (default '', meaning other is not allowed) is the caption for other options, allowing\n the user to input their choice. It will be reset to '' if `multiple` is set.\n- `placeholder` is the placeholder displayed in the `<input>` field for **other** responses\n- `localized` automatically localizes captions\n- `required` marks the field as required for form validation\n\n## Styling\n\nThe following CSS variables can be used to control customize the `<tosi-segmented>` component.\n\n --segmented-align-items\n --segmented-direction\n --segmented-option-color\n --segmented-option-current-background\n --segmented-option-current-color\n --segmented-option-font\n --segmented-option-gap\n --segmented-option-grid-columns\n --segmented-option-icon-color\n --segmented-option-padding\n --segmented-options-background\n --segmented-options-border-radius\n --segmented-placeholder-opacity\n*/\n\n/*{ \"parent\": \"Form Components\" }*/\n\nimport {\n Component as WebComponent,\n ElementCreator,\n elements,\n varDefault,\n deprecated,\n} from 'tosijs'\nimport { icons } from './icons'\nimport { tosiLocalized } from './localize'\n\nconst { div, slot, label, span, input } = elements\n\ninterface Choice {\n icon?: string | SVGElement\n value: string\n caption: string\n}\n\ninterface SegmentParts {\n [key: string]: HTMLElement\n custom: HTMLInputElement\n options: HTMLElement\n}\n\nexport class TosiSegmented extends WebComponent {\n static preferredTagName = 'tosi-segmented'\n static formAssociated = true\n\n static initAttributes = {\n direction: 'row',\n other: '',\n multiple: false,\n name: '',\n placeholder: 'Please specify…',\n localized: false,\n required: false,\n }\n\n private _choices: Choice[] = []\n\n get choices(): Choice[] {\n return this._choices\n }\n\n set choices(v: Choice[] | string) {\n if (typeof v === 'string') {\n this._choices = TosiSegmented.parseChoicesString(v)\n } else {\n this._choices = v\n }\n this.queueRender()\n }\n\n // Parse choices string format: value=caption:icon (caption and icon are optional)\n private static parseChoicesString(choicesStr: string): Choice[] {\n return choicesStr\n .split(',')\n .filter((c) => c.trim() !== '')\n .map((c) => {\n const [value, remains] = c.split('=').map((v) => v.trim())\n const [caption, iconName] = (remains || value)\n .split(':')\n .map((v) => v.trim())\n\n const icon = iconName ? icons[iconName]() : ''\n return { value, icon, caption }\n })\n }\n\n value = ''\n\n // Form-associated lifecycle callbacks\n formDisabledCallback(disabled: boolean) {\n // Could add disabled support here\n void disabled\n }\n\n formResetCallback() {\n this.value = ''\n }\n\n get values(): string[] {\n return (this.value || '')\n .split(',')\n .map((v) => v.trim())\n .filter((v) => v !== '')\n }\n\n content = () => [\n slot(),\n div({ part: 'options' }, input({ part: 'custom', hidden: true })),\n ]\n\n static shadowStyleSpec = {\n ':host': {\n display: 'inline-flex',\n gap: varDefault.segmentedOptionGap('8px'),\n alignItems: varDefault.segmentedAlignItems('center'),\n },\n ':host, :host::part(options)': {\n flexDirection: varDefault.segmentedDirection('row'),\n },\n ':host label': {\n display: 'inline-grid',\n alignItems: 'center',\n gap: varDefault.segmentedOptionGap('8px'),\n gridTemplateColumns:\n varDefault.segmentedOptionGridColumns('0px 24px 1fr'),\n padding: varDefault.segmentedOptionPadding('4px 12px'),\n font: varDefault.segmentedOptionFont('16px'),\n },\n ':host label:focus': {\n outline: 'none',\n boxShadow: varDefault.segmentedFocusShadow(\n `inset 0 0 0 2px ${varDefault.segmentedOptionCurrentBackground('#44a')}`\n ),\n borderRadius: varDefault.segmentedOptionsBorderRadius('8px'),\n },\n // Selection highlight is driven by an explicit `.current` class rather than\n // `label:has(:checked)`. Firefox does not reliably re-evaluate `:has(:checked)`\n // when a descendant radio's checked state changes via interaction, leaving the\n // previously-selected segment highlighted (works in Chrome/Safari).\n ':host label.current': {\n color: varDefault.segmentedOptionCurrentColor('#eee'),\n background: varDefault.segmentedOptionCurrentBackground('#44a'),\n },\n ':host label.current:focus': {\n boxShadow: varDefault.segmentedCurrentFocusShadow(\n `inset 0 0 0 2px ${varDefault.segmentedOptionCurrentColor('#eee')}`\n ),\n },\n ':host svg': {\n height: varDefault.segmentOptionIconSize('16px'),\n stroke: varDefault.segmentedOptionIconColor('currentColor'),\n },\n ':host label.no-icon': {\n gap: 0,\n gridTemplateColumns: varDefault.segmentedOptionGridColumns('0px 1fr'),\n },\n ':host input[type=\"radio\"], :host input[type=\"checkbox\"]': {\n visibility: varDefault.segmentedInputVisibility('hidden'),\n },\n ':host::part(options)': {\n display: 'flex',\n borderRadius: varDefault.segmentedOptionsBorderRadius('8px'),\n background: varDefault.segmentedOptionsBackground('#fff'),\n color: varDefault.segmentedOptionColor('#222'),\n overflow: 'hidden',\n alignItems: varDefault.segmentedOptionAlignItems('stretch'),\n },\n ':host::part(custom)': {\n padding: varDefault.segmentedOptionPadding('4px 12px'),\n color: varDefault.segmentedOptionCurrentColor('#eee'),\n background: varDefault.segmentedOptionCurrentBackground('#44a'),\n font: varDefault.segmentedOptionFont('16px'),\n border: '0',\n outline: 'none',\n },\n ':host::part(custom)::placeholder': {\n color: varDefault.segmentedOptionCurrentColor('#eee'),\n opacity: varDefault.segmentedPlaceholderOpacity(0.75),\n },\n }\n\n // Reflects each radio/checkbox's checked state onto its containing label as a\n // `.current` class so the selection highlight updates reliably (see note on the\n // `.current` style rule).\n private syncCurrent() {\n const { options } = this.parts as SegmentParts\n options.querySelectorAll('label').forEach((label) => {\n const input = label.querySelector('input')\n label.classList.toggle('current', Boolean(input && input.checked))\n })\n }\n\n private valueChanged = false\n handleChange = () => {\n const { options, custom } = this.parts as SegmentParts\n if (this.multiple) {\n const inputs = [\n ...options.querySelectorAll('input:checked'),\n ] as HTMLInputElement[]\n this.value = inputs.map((input) => input.value).join(',')\n } else {\n const input = options.querySelector(\n 'input:checked'\n ) as HTMLInputElement | null\n if (!input) {\n this.value = ''\n } else if (input.value) {\n custom.setAttribute('hidden', '')\n this.value = input.value\n } else {\n custom.removeAttribute('hidden')\n custom.focus()\n custom.select()\n this.value = custom.value\n }\n }\n this.syncCurrent()\n this.valueChanged = true\n }\n\n handleKey = (event: KeyboardEvent) => {\n let blockEvent = false\n switch (event.code) {\n case 'Space':\n if (event.target instanceof HTMLLabelElement) {\n event.target.click()\n blockEvent = true\n }\n break\n case 'Tab':\n if (!(event.target instanceof HTMLLabelElement)) {\n const label = (event.target as HTMLElement).closest(\n 'label'\n ) as HTMLLabelElement\n label.focus()\n }\n break\n case 'ArrowLeft':\n case 'ArrowUp':\n {\n const label = (event.target as HTMLElement).closest(\n 'label'\n ) as HTMLLabelElement\n if (label.previousElementSibling instanceof HTMLLabelElement) {\n label.previousElementSibling.focus!()\n }\n }\n blockEvent = true\n break\n case 'ArrowRight':\n case 'ArrowDown':\n {\n const label = (event.target as HTMLElement).closest(\n 'label'\n ) as HTMLLabelElement\n if (label.nextElementSibling instanceof HTMLLabelElement) {\n label.nextElementSibling.focus!()\n }\n }\n blockEvent = true\n break\n }\n if (blockEvent) {\n event.preventDefault()\n event.stopPropagation()\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n\n // Parse choices from HTML attribute if present and not already set programmatically\n const choicesAttr = this.getAttribute('choices')\n if (choicesAttr && this._choices.length === 0) {\n this._choices = TosiSegmented.parseChoicesString(choicesAttr)\n }\n\n const { options } = this.parts\n\n if (this.name === '') {\n this.name = this.instanceId\n }\n\n options.addEventListener('change', this.handleChange)\n options.addEventListener('keydown', this.handleKey as EventListener)\n\n if (this.other && this.multiple) {\n console.warn(\n this,\n 'is set to [other] and [multiple]; [other] will be ignored'\n )\n this.other = ''\n }\n }\n\n private get _choicesWithOther(): Choice[] {\n const options: Choice[] = [...this.choices]\n\n if (this.other && !this.multiple) {\n const [caption, icon] = this.other.split(':')\n options.push({\n value: '',\n caption,\n icon,\n })\n }\n\n return options\n }\n\n get isOtherValue(): boolean {\n return Boolean(\n this.value === '' ||\n (this.value &&\n !this._choicesWithOther.find((choice) => choice.value === this.value))\n )\n }\n\n render() {\n super.render()\n\n if (this.valueChanged) {\n this.valueChanged = false\n return\n }\n\n const { options, custom } = this.parts as SegmentParts\n options.textContent = ''\n const type = this.multiple ? 'checkbox' : 'radio'\n const { values, isOtherValue } = this\n options.append(\n ...this._choicesWithOther.map((choice) => {\n return label(\n { tabindex: 0 },\n input({\n type,\n name: this.name,\n value: choice.value,\n checked:\n values.includes(choice.value) ||\n (choice.value === '' && isOtherValue),\n tabIndex: -1,\n }),\n choice.icon || { class: 'no-icon' },\n this.localized ? tosiLocalized(choice.caption) : span(choice.caption)\n )\n })\n )\n if (this.other && !this.multiple) {\n custom.hidden = !isOtherValue\n custom.value = isOtherValue ? (this.value as string) : ''\n custom.placeholder = this.placeholder\n options.append(custom)\n }\n this.syncCurrent()\n }\n}\n\n/** @deprecated Use TosiSegmented instead */\nexport type XinSegmented = TosiSegmented\n/** @deprecated Use TosiSegmented instead */\nexport const XinSegmented: typeof TosiSegmented = TosiSegmented\n\nexport const tosiSegmented = TosiSegmented.elementCreator() as ElementCreator<TosiSegmented>\n\n/** @deprecated Use tosiSegmented instead (tag is now tosi-segmented) */\nexport const xinSegmented = deprecated(\n (...args: Parameters<typeof tosiSegmented>) => tosiSegmented(...args),\n 'xinSegmented is deprecated, use tosiSegmented instead (tag is now <tosi-segmented>)'\n) as ElementCreator<TosiSegmented>\n",
62
- "import { Component as WebComponent, ElementCreator, elements } from 'tosijs'\n\nconst { slot } = elements\n\n/*#\n# size-break\n\nWhile we wait for enough browsers to implement [container-queries](https://www.w3.org/TR/css-contain-3/),\nand in any event when you simply want to do different things at different sizes (e.g. in the project I'm\nworking on right now, a row of buttons turns into a menu at narrow widths) there's `<tosi-sizebreak>`.\n\nNote that the sizes referred to are of the `<tosi-sizebreak>`'s `.offsetParent`, and it watches for\nthe window's `resize` events and its own (via `ResizeObserver`).\n\n```html\n<div class=\"container\">\n <tosi-sizebreak min-width=\"300\" min-height=\"150\">\n <h1>BIG!</h1>\n <i slot=\"small\">little</i>\n </tosi-sizebreak>\n <tosi-sizer></tosi-sizer>\n</div>\n```\n```css\n.preview {\n touch-action: none;\n}\n\n.preview tosi-sizebreak {\n width: 100%;\n height: 100%;\n background: #fff8;\n border: 1px solid #aaa;\n}\n\n.preview tosi-sizebreak * {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n}\n\n.preview .container {\n position: relative;\n min-width: 100px;\n min-height: 40px;\n max-height: 100%;\n width: 400px;\n height: 100px;\n}\n\n.preview .sizer {\n position: absolute;\n width: 24px;\n height: 24px;\n line-height: 24px;\n text-align: center;\n background: #0002;\n bottom: 0;\n right: 0;\n cursor: nwse-resize;\n opacity: 0.5;\n}\n\n.preview .sizer:hover {\n opacity: 1.0;\n}\n```\n\n`<tosi-sizebreak>` supports both `min-width` and/or `min-height`, and you can of course target only one\nof the slots if you like. The demo site uses them to hide the [bundlejs](https://bundlejs.com/) badge when\nspace is tight.\n*/\n\n/*{ \"parent\": \"Components\" }*/\n\nexport class SizeBreak extends WebComponent {\n static preferredTagName = 'tosi-sizebreak'\n\n static initAttributes = {\n minWidth: 0,\n minHeight: 0,\n }\n\n value: 'normal' | 'small' = 'normal'\n\n content = [slot({ part: 'normal' }), slot({ part: 'small', name: 'small' })]\n\n static shadowStyleSpec = {\n ':host': {\n display: 'inline-block',\n position: 'relative',\n },\n }\n\n onResize = () => {\n const { normal, small } = this.parts as { [key: string]: HTMLElement }\n const parent = this.offsetParent as HTMLElement | null\n if (!(parent instanceof HTMLElement)) {\n return\n } else if (\n parent.offsetWidth < this.minWidth ||\n parent.offsetHeight < this.minHeight\n ) {\n normal.hidden = true\n small.hidden = false\n this.value = 'small'\n } else {\n normal.hidden = false\n small.hidden = true\n this.value = 'normal'\n }\n }\n\n // TODO trigger a resize event when an ancestor element\n // is inserted or moved into the DOM.\n connectedCallback(): void {\n super.connectedCallback()\n globalThis.addEventListener('resize', this.onResize)\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n globalThis.removeEventListener('resize', this.onResize)\n }\n}\n\nexport const sizeBreak = SizeBreak.elementCreator() as ElementCreator<SizeBreak>\n",
63
+ "import { Component as WebComponent, ElementCreator, elements } from 'tosijs'\n\nconst { slot } = elements\n\n/*#\n# size-break\n\nWhile we wait for enough browsers to implement [container-queries](https://www.w3.org/TR/css-contain-3/),\nand in any event when you simply want to do different things at different sizes (e.g. in the project I'm\nworking on right now, a row of buttons turns into a menu at narrow widths) there's `<tosi-sizebreak>`.\n\nNote that the sizes referred to are of the `<tosi-sizebreak>`'s `.offsetParent`, and it watches for\nthe window's `resize` events and its own (via `ResizeObserver`).\n\n```html\n<div class=\"container\">\n <tosi-sizebreak min-width=\"300\" min-height=\"150\">\n <h1>BIG!</h1>\n <i slot=\"small\">little</i>\n </tosi-sizebreak>\n <tosi-sizer></tosi-sizer>\n</div>\n```\n```css\n.preview {\n touch-action: none;\n}\n\n.preview tosi-sizebreak {\n width: 100%;\n height: 100%;\n background: #fff8;\n border: 1px solid #aaa;\n}\n\n.preview tosi-sizebreak * {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n}\n\n.preview .container {\n position: relative;\n min-width: 100px;\n min-height: 40px;\n max-height: 100%;\n width: 400px;\n height: 100px;\n}\n\n.preview .sizer {\n position: absolute;\n width: 24px;\n height: 24px;\n line-height: 24px;\n text-align: center;\n background: #0002;\n bottom: 0;\n right: 0;\n cursor: nwse-resize;\n opacity: 0.5;\n}\n\n.preview .sizer:hover {\n opacity: 1.0;\n}\n```\n\n`<tosi-sizebreak>` supports both `min-width` and/or `min-height`, and you can of course target only one\nof the slots if you like. The demo site uses them to hide the\n[jsdelivr](https://www.jsdelivr.com/) badge when space is tight.\n*/\n\n/*{ \"parent\": \"Components\" }*/\n\nexport class SizeBreak extends WebComponent {\n static preferredTagName = 'tosi-sizebreak'\n\n static initAttributes = {\n minWidth: 0,\n minHeight: 0,\n }\n\n value: 'normal' | 'small' = 'normal'\n\n content = [slot({ part: 'normal' }), slot({ part: 'small', name: 'small' })]\n\n static shadowStyleSpec = {\n ':host': {\n display: 'inline-block',\n position: 'relative',\n },\n }\n\n onResize = () => {\n const { normal, small } = this.parts as { [key: string]: HTMLElement }\n const parent = this.offsetParent as HTMLElement | null\n if (!(parent instanceof HTMLElement)) {\n return\n } else if (\n parent.offsetWidth < this.minWidth ||\n parent.offsetHeight < this.minHeight\n ) {\n normal.hidden = true\n small.hidden = false\n this.value = 'small'\n } else {\n normal.hidden = false\n small.hidden = true\n this.value = 'normal'\n }\n }\n\n // TODO trigger a resize event when an ancestor element\n // is inserted or moved into the DOM.\n connectedCallback(): void {\n super.connectedCallback()\n globalThis.addEventListener('resize', this.onResize)\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n globalThis.removeEventListener('resize', this.onResize)\n }\n}\n\nexport const sizeBreak = SizeBreak.elementCreator() as ElementCreator<SizeBreak>\n",
63
64
  "/*#\n# sizer\n\nThis is a super-simple component that you can put in a fixed size element allowing it to be resized\nfrom the bottom-right.\n\n```html\n<div>\n <tosi-sizer></tosi-sizer>\n</div>\n```\n```css\n.preview div {\n position: absolute;\n top: 10px;\n left: 10px;\n width: 200px;\n height: 100px;\n background: #ff02;\n border: 1px solid #555;\n}\n```\n\n<tosi-css-var-editor element-selector=\"tosi-sizer\"></tosi-css-var-editor>\n*/\n\n/*{ \"parent\": \"Components\" }*/\n\nimport { Component as XinComponent, ElementCreator, vars } from 'tosijs'\nimport { icons } from './icons'\nimport { trackDrag } from './track-drag'\n\nexport class TosiSizer extends XinComponent {\n static preferredTagName = 'tosi-sizer'\n target?: HTMLElement | null = null\n\n static shadowStyleSpec = {\n ':host': {\n _resizeIconFill: '#222',\n display: 'block',\n position: 'absolute',\n bottom: -7,\n right: -7,\n padding: 14,\n width: 44,\n height: 44,\n opacity: 0.25,\n transition: 'opacity 0.25s ease-out',\n },\n ':host(:hover)': {\n opacity: 0.5,\n },\n ':host svg': {\n width: 16,\n height: 16,\n stroke: vars.resizeIconFill,\n },\n }\n\n content = icons.resize()\n\n get minSize(): { width: number; height: number } {\n const { minWidth, minHeight } = getComputedStyle(this.target!)\n return {\n width: parseFloat(minWidth) || 32,\n height: parseFloat(minHeight) || 32,\n }\n }\n\n resizeTarget = (event: Event): void => {\n const { target } = this\n if (!target) return\n const w = target.offsetWidth\n const h = target.offsetHeight\n target.style.left = target.offsetLeft + 'px'\n target.style.top = target.offsetTop + 'px'\n target.style.bottom = ''\n target.style.right = ''\n const { minSize } = this\n\n trackDrag(\n event as PointerEvent,\n (dx: number, dy: number, event: any): true | undefined => {\n target.style.width = Math.max(minSize.width, w + dx) + 'px'\n target.style.height = Math.max(minSize.height, h + dy) + 'px'\n if (event.type === 'mouseup') {\n return true\n }\n },\n 'nwse-resize'\n )\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n\n if (!this.target) {\n this.target = this.parentElement\n }\n\n const PASSIVE = { passive: true }\n this.addEventListener('mousedown', this.resizeTarget, PASSIVE)\n this.addEventListener('touchstart', this.resizeTarget, PASSIVE)\n }\n}\n\n/** @deprecated Use TosiSizer instead */\nexport type XinSizer = TosiSizer\n/** @deprecated Use TosiSizer instead */\nexport const XinSizer: typeof TosiSizer = TosiSizer\n\nexport const tosiSizer = TosiSizer.elementCreator() as ElementCreator<TosiSizer>\n\n/** @deprecated Use tosiSizer instead */\nexport const xinSizer = tosiSizer\n",
64
65
  "/*#\n# tag-list\n\nBuilding a tag-list from standard HTML elements is a bit of a nightmare.\n\n`<tosi-tag-list>` allows you to display an editable or read-only tag list (represented either\nas a comma-delimited string or an array of strings).\n\n```html\n<label style=\"position: absolute; right: 10px; top: 10px; display: block\">\n <input type=\"checkbox\" class=\"disable-toggle\">\n <b>Disable All</b>\n</label>\n<label>\n <b>Display Only</b>\n <tosi-tag-list\n value=\"this,that,,the-other\"\n ></tosi-tag-list>\n</label>\n<tosi-tag-list\n class=\"compact\"\n value=\"this,that,,the-other\"\n></tosi-tag-list>\n<br>\n<label>\n <b>Editable</b>\n <tosi-tag-list\n class=\"editable-tag-list\"\n value=\"belongs,also belongs,has\\, comma,custom\"\n editable\n available-tags=\"belongs,also belongs,has\\, comma,not initially chosen\"\n ></tosi-tag-list>\n</label>\n<br>\n<b>Text-Entry</b>\n<tosi-tag-list\n value=\"this,that,the-other,not,enough,space\"\n editable\n text-entry\n available-tags=\"tomasina,dick,,harriet\"\n></tosi-tag-list>\n```\n```css\n.preview .compact {\n --spacing: 8px;\n --font-size: 12px;\n --line-height: 18px;\n}\n.preview label {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n}\n```\n```js\npreview.addEventListener('change', (event) => {\n if (event.target.matches('tosi-tag-list')) {\n console.log(event.target, event.target.value)\n }\n}, true)\npreview.querySelector('.disable-toggle').addEventListener('change', (event) => {\n const tagLists = Array.from(preview.querySelectorAll('tosi-tag-list'))\n for(const tagList of tagLists) {\n tagList.disabled = event.target.checked\n }\n})\n```\n```test\nconst tagLists = preview.querySelectorAll('tosi-tag-list')\ntest('tag-lists render', () => {\n expect(tagLists.length).toBe(4)\n})\ntest('first tag-list has correct tags', () => {\n expect(tagLists[0].tags.length).toBe(3)\n expect(tagLists[0].tags).toContain('this')\n})\ntest('editable tag-list has editable attribute', () => {\n expect(tagLists[2].editable).toBe(true)\n})\ntest('a comma inside a tag survives the value round-trip', () => {\n const tl = document.createElement('tosi-tag-list')\n tl.tags = ['New York, NY', 'Boston']\n // the literal comma is escaped in `value` so it is not a delimiter\n expect(tl.value).toBe('New York\\\\, NY,Boston')\n expect(tl.tags.length).toBe(2)\n expect(tl.tags).toContain('New York, NY')\n})\ntest('an escaped comma in a value string parses as one tag', () => {\n const tl = document.createElement('tosi-tag-list')\n tl.value = 'New York\\\\, NY,Boston'\n expect(tl.tags.length).toBe(2)\n expect(tl.tags).toContain('New York, NY')\n})\n```\n\n## Properties\n\n### `value`: string | string[]\n\nA comma-delimited list of tags. A tag that itself contains a comma must\nescape it as `\\,` — e.g. `value=\"New York\\, NY,Boston\"` is two tags. The\n`tags` accessor handles this escaping for you in both directions.\n\n### `tags`: string[]\n\n## `popSelectMenu`: () => void\n\nThis is the method called when the user clicks the menu button. By default is displays a\npick list of tags, but if you wish to customize the behavior, just replace this method.\n\nA read-only property giving the value as an array.\n\n### `available-tags`: string | string[]\n\nA list of tags that will be displayed in the popup menu by default. The popup menu\nwill always display custom tags (allowing their removal). As with `value`, a\ncomma inside a tag must be escaped as `\\,` when set via the attribute string.\n\n### `editable`: boolean\n\nAllows the tag list to be modified via menu and removing tags.\n\n### `text-entry`: boolean\n\nIf `editable`, an input field is provided for entering tags directly.\n\n### `placeholder`: string = 'enter tags'\n\nPlaceholder shown on input field.\n*/\n\n/*{ \"parent\": \"Form Components\" }*/\n\nimport {\n Component as WebComponent,\n elements,\n vars,\n varDefault,\n ElementCreator,\n deprecated,\n XinStyleSheet,\n} from 'tosijs'\nimport { popMenu, MenuItem } from './menu'\nimport { icons } from './icons'\n\nconst { div, input, span, button } = elements\n\n// Tags are serialised as a comma-delimited string (the form `value`). A\n// literal comma inside a tag is escaped as `\\,` so it survives the\n// split/join round-trip — both in programmatic values and in the\n// `value` / `available-tags` HTML attributes.\nconst splitTags = (str: string): string[] =>\n str.split(/(?<!\\\\),/).map((tag) => tag.trim().replace(/\\\\,/g, ','))\n\nconst joinTags = (tags: string[]): string =>\n tags.map((tag) => tag.replace(/,/g, '\\\\,')).join(',')\n\nexport class TosiTag extends WebComponent {\n static preferredTagName = 'tosi-tag'\n\n static lightStyleSpec = {\n ':host': {\n '--tag-close-button-color': '#000c',\n '--tag-close-button-bg': '#fffc',\n '--tag-button-opacity': '0.5',\n '--tag-button-hover-opacity': '0.75',\n '--tag-bg': varDefault.brandColor('blue'),\n '--tag-text-color': varDefault.brandTextColor('white'),\n display: 'inline-flex',\n borderRadius: varDefault.tagRoundedRadius(vars.spacing50),\n color: vars.tagTextColor,\n background: vars.tagBg,\n padding: `0 ${vars.spacing75} 0 ${vars.spacing75}`,\n height: `calc(${vars.lineHeight} + ${vars.spacing50})`,\n lineHeight: `calc(${vars.lineHeight} + ${vars.spacing50})`,\n },\n ':host > [part=\"caption\"]': {\n position: 'relative',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n flex: '1 1 auto',\n fontSize: varDefault.fontSize('16px'),\n color: vars.tagTextColor,\n textOverflow: 'ellipsis',\n },\n ':host [part=\"remove\"]': {\n boxShadow: 'none',\n margin: `0 ${vars.spacing_50} 0 ${vars.spacing25}`,\n padding: 0,\n display: 'inline-flex',\n alignItems: 'center',\n alignSelf: 'center',\n justifyContent: 'center',\n height: vars.spacing150,\n width: vars.spacing150,\n color: vars.tagCloseButtonColor,\n background: vars.tagCloseButtonBg,\n borderRadius: varDefault.tagCloseButtonRadius('99px'),\n opacity: vars.tagButtonOpacity,\n },\n ':host [part=\"remove\"]:hover': {\n background: vars.tagCloseButtonBg,\n opacity: vars.tagButtonHoverOpacity,\n },\n }\n\n static initAttributes = {\n caption: '',\n removeable: false,\n }\n\n removeCallback: (event: Event) => void = () => {\n this.remove()\n }\n\n content = () => [\n span({ part: 'caption' }, this.caption),\n button(icons.x(), {\n type: 'button',\n part: 'remove',\n hidden: !this.removeable,\n ariaLabel: `Remove ${this.caption}`,\n onClick: this.removeCallback,\n }),\n ]\n}\n\n/** @deprecated Use TosiTag instead */\nexport type XinTag = TosiTag\n/** @deprecated Use TosiTag instead */\nexport const XinTag: typeof TosiTag = TosiTag\n\nexport const tosiTag = TosiTag.elementCreator() as ElementCreator<TosiTag>\n\n/** @deprecated Use tosiTag instead */\nexport const xinTag = deprecated(\n (...args: Parameters<typeof tosiTag>) => tosiTag(...args),\n 'xinTag is deprecated, use tosiTag instead (tag is now <tosi-tag>)'\n) as ElementCreator<TosiTag>\n\ninterface Tag {\n value: string\n caption?: string\n color?: string\n background?: string\n icon?: string | HTMLElement\n}\n\ntype TagList = (string | Tag | null)[]\n\nexport class TosiTagList extends WebComponent {\n static preferredTagName = 'tosi-tag-list'\n\n static lightStyleSpec: XinStyleSheet = {\n ':host': {\n '--tag-list-bg': '#f8f8f8',\n '--touch-size': '44px',\n '--spacing': '16px',\n display: 'grid',\n gridTemplateColumns: 'auto',\n alignItems: 'center',\n background: vars.tagListBg,\n gap: vars.spacing25,\n borderRadius: varDefault.taglistRoundedRadius(vars.spacing50),\n overflow: 'hidden',\n },\n ':host[editable]': {\n gridTemplateColumns: `0px auto ${vars.touchSize}`,\n },\n ':host[editable][text-entry]': {\n gridTemplateColumns: `0px 2fr 1fr ${vars.touchSize}`,\n },\n ':host [part=\"tagContainer\"]': {\n display: 'flex',\n content: '\" \"',\n alignItems: 'center',\n background: vars.inputBg,\n borderRadius: varDefault.tagContainerRadius(vars.spacing50),\n boxShadow: vars.borderShadow,\n flexWrap: 'nowrap',\n overflow: 'auto hidden',\n gap: vars.spacing25,\n minHeight: `calc(${vars.lineHeight} + ${vars.spacing})`,\n padding: vars.spacing25,\n },\n ':host [part=\"tagMenu\"]': {\n width: vars.touchSize,\n height: vars.touchSize,\n lineHeight: vars.touchSize,\n textAlign: 'center',\n padding: 0,\n margin: 0,\n },\n ':host [hidden]': {\n display: 'none !important',\n },\n ':host button[part=\"tagMenu\"]': {\n background: vars.brandColor,\n color: vars.brandTextColor,\n },\n }\n\n static formAssociated = true\n\n static initAttributes = {\n name: '',\n textEntry: false,\n editable: false,\n placeholder: 'enter tags',\n disabled: false,\n required: false,\n }\n\n // value is the source of truth (Component watches this for form handling)\n value = ''\n\n // tags parses value into array\n get tags(): string[] {\n return splitTags(this.value).filter((tag) => tag !== '')\n }\n\n set tags(v: string[]) {\n this.value = joinTags(v)\n }\n\n private _availableTags: TagList = []\n\n get availableTags(): TagList {\n return this._availableTags\n }\n\n set availableTags(v: TagList | string) {\n if (typeof v === 'string') {\n this._availableTags = TosiTagList.parseAvailableTagsString(v)\n } else {\n this._availableTags = v\n }\n this.queueRender()\n }\n\n // Parse available-tags string (comma-delimited; `\\,` is a literal comma).\n private static parseAvailableTagsString(tagsStr: string): TagList {\n return splitTags(tagsStr).map((tag) => (tag === '' ? null : tag))\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n // Parse available-tags from HTML attribute if present and not already set programmatically\n const tagsAttr = this.getAttribute('available-tags')\n if (tagsAttr && this._availableTags.length === 0) {\n this._availableTags = TosiTagList.parseAvailableTagsString(tagsAttr)\n }\n }\n\n // Form lifecycle callbacks\n formDisabledCallback(disabled: boolean): void {\n this.disabled = disabled\n }\n\n formResetCallback(): void {\n this.value = ''\n }\n\n addTag = (tag: string) => {\n const trimmed = tag.trim()\n if (trimmed === '' || this.tags.includes(trimmed)) {\n return\n }\n this.tags = [...this.tags, trimmed]\n this.queueRender(true)\n }\n\n toggleTag = (toggled: string) => {\n if (this.tags.includes(toggled)) {\n this.tags = this.tags.filter((t) => t !== toggled)\n this.queueRender(true)\n } else {\n this.addTag(toggled)\n }\n }\n\n enterTag = (event: KeyboardEvent) => {\n const { tagInput } = this.parts as { tagInput: HTMLInputElement }\n switch (event.key) {\n case ',':\n {\n const tag = tagInput.value.split(',')[0]\n this.addTag(tag)\n }\n break\n case 'Enter':\n {\n const tag = tagInput.value.split(',')[0]\n this.addTag(tag)\n }\n event.stopPropagation()\n event.preventDefault()\n break\n default:\n // do nothing\n }\n }\n\n popSelectMenu = () => {\n const { toggleTag } = this\n const { tagMenu } = this.parts\n const tags: TagList = [...this.availableTags]\n const extraTags = this.tags.filter((tag) => !tags.includes(tag))\n if (extraTags.length) {\n tags.push(null, ...extraTags)\n }\n const menuItems: MenuItem[] = tags.map((tag) => {\n if (tag === '' || tag === null) {\n return null\n } else if (typeof tag === 'object') {\n return {\n checked: () => this.tags.includes(tag.value),\n caption: tag.caption!,\n action() {\n toggleTag(tag.value)\n },\n }\n } else {\n return {\n checked: () => this.tags.includes(tag),\n caption: tag,\n action() {\n toggleTag(tag)\n },\n }\n }\n })\n\n popMenu({\n target: tagMenu as HTMLElement,\n width: 'auto',\n menuItems,\n })\n }\n\n content = () => [\n // this button is simply here to eat click events sent via a label\n button({ type: 'button', style: { visibility: 'hidden' }, tabindex: -1 }),\n div({\n part: 'tagContainer',\n class: 'row',\n role: 'list',\n ariaLabel: 'Selected tags',\n }),\n input({\n part: 'tagInput',\n class: 'elastic',\n ariaLabel: 'Enter new tag',\n onKeydown: this.enterTag,\n }),\n button(\n {\n type: 'button',\n title: 'add tag',\n ariaLabel: 'Select tags from list',\n ariaHaspopup: 'listbox',\n part: 'tagMenu',\n onClick: this.popSelectMenu,\n },\n icons.chevronDown()\n ),\n ]\n\n removeTag = (event: Event) => {\n if (this.editable && !this.disabled) {\n const tag = (event.target as HTMLElement).closest(\n TosiTag.tagName!\n ) as TosiTag\n this.tags = this.tags.filter((t) => t !== tag.caption)\n tag.remove()\n this.queueRender(true)\n }\n event.stopPropagation()\n event.preventDefault()\n }\n\n render(): void {\n super.render()\n\n const { tagContainer, tagMenu, tagInput } = this.parts as {\n tagContainer: HTMLDivElement\n tagMenu: HTMLButtonElement\n tagInput: HTMLInputElement\n }\n\n tagMenu.disabled = this.disabled\n tagInput.value = ''\n tagInput.setAttribute('placeholder', this.placeholder)\n if (this.editable && !this.disabled) {\n tagMenu.toggleAttribute('hidden', false)\n tagInput.toggleAttribute('hidden', !this.textEntry)\n } else {\n tagMenu.toggleAttribute('hidden', true)\n tagInput.toggleAttribute('hidden', true)\n }\n\n tagContainer.textContent = ''\n for (const tag of this.tags) {\n tagContainer.append(\n tosiTag({\n caption: tag,\n removeable: this.editable && !this.disabled,\n removeCallback: this.removeTag,\n })\n )\n }\n }\n}\n\n/** @deprecated Use TosiTagList instead */\nexport type XinTagList = TosiTagList\n/** @deprecated Use TosiTagList instead */\nexport const XinTagList: typeof TosiTagList = TosiTagList\n\nexport const tosiTagList =\n TosiTagList.elementCreator() as ElementCreator<TosiTagList>\n\n/** @deprecated Use tosiTagList instead */\nexport const xinTagList = deprecated(\n (...args: Parameters<typeof tosiTagList>) => tosiTagList(...args),\n 'xinTagList is deprecated, use tosiTagList instead (tag is now <tosi-tag-list>)'\n) as ElementCreator<TosiTagList>\n",
65
- "export const version = '1.6.12'",
66
+ "export const version = '1.6.13'",
66
67
  "/*#\n# tooltip\n\nAutomatic tooltips for any element with `data-tooltip` or `title` attributes.\nCall `initTooltips()` once to activate. By default, `title` attributes are\nconverted to `data-tooltip` on hover so the browser's native tooltip is\nreplaced.\n\nTooltip text is parsed as **markdown** (if `marked` is available), so you\ncan use `*bold*`, `` `code` ``, links, etc.\n\n```js\nimport { elements } from 'tosijs'\nimport { initTooltips } from 'tosijs-ui'\n\nconst { button, div } = elements\n\ninitTooltips()\n\npreview.append(\n div(\n { style: { display: 'flex', gap: '12px', flexWrap: 'wrap', alignItems: 'center' } },\n button({ dataTooltip: 'Save your work' }, 'Save'),\n button({ dataTooltip: '**Bold** and `code` work' }, 'Markdown'),\n button({ title: 'This was a title attribute' }, 'Title → Tooltip'),\n )\n)\n```\n\n## Options\n\n```\ninitTooltips({\n convertTitles: true, // convert title attrs to data-tooltip (default true)\n delay: 250, // ms before showing (default 250)\n localize: false, // pass tooltip text through localize() (default false)\n})\n```\n*/\n\n/*{ \"parent\": \"Components\" }*/\n\nimport { elements, StyleSheet, varDefault } from 'tosijs'\nimport { marked } from 'marked'\nimport { popFloat, FloatPosition } from './pop-float'\nimport { TosiFloat } from './float'\nimport { localize } from './localize'\n\nconst { span } = elements\n\nexport interface TooltipOptions {\n convertTitles?: boolean\n delay?: number\n localize?: boolean\n}\n\nlet tooltipFloat: TosiFloat | null = null\nlet showTimeout: ReturnType<typeof setTimeout> | null = null\nlet currentTarget: HTMLElement | null = null\n\nconst TOOLTIP_CLASS = 'tosi-tooltip'\n\nconst tooltipStyleSpec = {\n [`.${TOOLTIP_CLASS}`]: {\n pointerEvents: 'none',\n padding: varDefault.tosiTooltipPadding('4px 10px'),\n borderRadius: varDefault.tosiTooltipRadius('6px'),\n background: varDefault.tosiTooltipBg('#333'),\n color: varDefault.tosiTooltipColor('#fff'),\n fontSize: varDefault.tosiTooltipFontSize('13px'),\n lineHeight: '1.4',\n maxWidth: varDefault.tosiTooltipMaxWidth('280px'),\n whiteSpace: 'pre-line',\n boxShadow: '0 2px 8px #0003',\n position: 'relative',\n },\n [`.${TOOLTIP_CLASS} p`]: {\n margin: '0',\n },\n [`.${TOOLTIP_CLASS} code`]: {\n background: '#fff2',\n padding: '0 4px',\n borderRadius: '3px',\n fontSize: '0.9em',\n },\n [`.${TOOLTIP_CLASS} a`]: {\n color: 'inherit',\n },\n [`.${TOOLTIP_CLASS}::before`]: {\n content: '\"\"',\n position: 'absolute',\n width: '8px',\n height: '8px',\n background: 'inherit',\n transform: 'rotate(45deg)',\n },\n [`.${TOOLTIP_CLASS}.tt-s::before`]: {\n top: '-4px',\n left: 'var(--tosi-tooltip-arrow)',\n },\n [`.${TOOLTIP_CLASS}.tt-n::before`]: {\n bottom: '-4px',\n left: 'var(--tosi-tooltip-arrow)',\n },\n [`.${TOOLTIP_CLASS}.tt-e::before`]: {\n left: '-4px',\n top: 'var(--tosi-tooltip-arrow)',\n },\n [`.${TOOLTIP_CLASS}.tt-w::before`]: {\n right: '-4px',\n top: 'var(--tosi-tooltip-arrow)',\n },\n}\n\n// Inject tooltip styles on first use (showTooltip / initTooltips) rather than at\n// import, so importing this module has no side effect and it tree-shakes when\n// unused. StyleSheet() dedupes by id; the flag avoids re-calling it.\nlet tooltipStylesInjected = false\nfunction ensureTooltipStyles(): void {\n if (tooltipStylesInjected) return\n tooltipStylesInjected = true\n StyleSheet('tosi-tooltip', tooltipStyleSpec)\n}\n\nfunction hideTooltip(): void {\n if (showTimeout !== null) {\n clearTimeout(showTimeout)\n showTimeout = null\n }\n if (tooltipFloat !== null) {\n tooltipFloat.remove()\n tooltipFloat = null\n }\n currentTarget = null\n}\n\nfunction arrowClass(position: FloatPosition): string {\n if (position.startsWith('s')) return 'tt-s'\n if (position.startsWith('n')) return 'tt-n'\n if (position.startsWith('e')) return 'tt-e'\n if (position.startsWith('w')) return 'tt-w'\n return 'tt-s'\n}\n\nfunction positionArrow(\n tooltipEl: HTMLElement,\n target: HTMLElement,\n position: FloatPosition\n): void {\n const targetRect = target.getBoundingClientRect()\n const tipRect = tooltipEl.getBoundingClientRect()\n const targetCx = targetRect.left + targetRect.width * 0.5\n const targetCy = targetRect.top + targetRect.height * 0.5\n\n let offset: number\n if (position.startsWith('s') || position.startsWith('n')) {\n offset =\n Math.max(8, Math.min(tipRect.width - 8, targetCx - tipRect.left)) - 4\n } else {\n offset =\n Math.max(8, Math.min(tipRect.height - 8, targetCy - tipRect.top)) - 4\n }\n tooltipEl.style.setProperty('--tosi-tooltip-arrow', offset + 'px')\n}\n\nfunction renderText(text: string, useLocalize: boolean): HTMLElement {\n if (useLocalize) {\n text = localize(text)\n }\n const el = span({ class: TOOLTIP_CLASS })\n el.innerHTML = marked.parseInline(text) as string\n return el\n}\n\nfunction showTooltip(\n target: HTMLElement,\n text: string,\n useLocalize: boolean\n): void {\n ensureTooltipStyles()\n hideTooltip()\n currentTarget = target\n\n const { top, left, width } = target.getBoundingClientRect()\n const cx = left + width * 0.5\n const h = window.innerHeight\n const w = window.innerWidth\n const position: FloatPosition = ((top > h * 0.5 ? 'n' : 's') +\n (cx > w * 0.5 ? 'w' : 'e')) as FloatPosition\n\n const content = renderText(text, useLocalize)\n content.classList.add(arrowClass(position))\n\n tooltipFloat = popFloat({\n content,\n target,\n position,\n remainOnScroll: 'remove',\n remainOnResize: 'remove',\n })\n\n requestAnimationFrame(() => {\n if (tooltipFloat && currentTarget) {\n positionArrow(content, target, position)\n }\n })\n}\n\nfunction findTooltipTarget(event: Event): HTMLElement | null {\n for (const node of event.composedPath()) {\n if (node instanceof HTMLElement && node.dataset.tooltip) {\n return node\n }\n }\n return null\n}\n\nexport function initTooltips(options: TooltipOptions = {}): void {\n ensureTooltipStyles()\n const {\n convertTitles = true,\n delay = 250,\n localize: useLocalize = false,\n } = options\n\n document.addEventListener('pointermove', (event: PointerEvent) => {\n if (convertTitles) {\n for (const node of event.composedPath()) {\n if (node instanceof HTMLElement && node.title && !node.dataset.tooltip) {\n node.dataset.tooltip = node.title\n node.removeAttribute('title')\n break\n }\n }\n }\n\n const target = findTooltipTarget(event)\n\n if (target === currentTarget) return\n\n hideTooltip()\n\n if (!target) return\n const text = target.dataset.tooltip || null\n if (!text) return\n\n showTimeout = setTimeout(\n () => showTooltip(target, text, useLocalize),\n delay,\n )\n })\n\n document.addEventListener('pointerleave', hideTooltip)\n\n document.addEventListener('pointerdown', hideTooltip)\n document.addEventListener('keydown', hideTooltip)\n window.addEventListener('scroll', hideTooltip, true)\n}\n",
67
68
  "import * as xinjsui from './index'\nimport * as xinjs from 'tosijs'\n\nObject.assign(globalThis, { xinjs, xinjsui })\n"
68
69
  ],
69
- "mappings": "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",
70
- "debugId": "0A4A5A38EFD7B78764756E2164756E21",
70
+ "mappings": "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",
71
+ "debugId": "6E3C592691017A0F64756E2164756E21",
71
72
  "names": []
72
73
  }