@kanonak-protocol/sdk 3.53.0 → 3.54.0

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.
@@ -0,0 +1,148 @@
1
+ import{a as _e}from"./chunk-NIGFQYVA.js";import{a as q,c as Ue}from"./chunk-H2LEQLVD.js";import{a as Pe,f as Ve,h as Be,i as Le,k as on}from"./chunk-Q4DKP5DO.js";import{a as Ie,e as le}from"./chunk-FQHALFRR.js";import{c as re,d as E,g as Q,h as $e,i as ue,j as N,k as oe,l as Y}from"./chunk-W6T7MOKY.js";import{a as sn}from"./chunk-FUUTGGJS.js";var je="kanonak.org",un="look",we="core-rdf",wn={publisher:je,package_:un,name:"displayLabel"},On={publisher:je,package_:un,name:"displaySummary"},En={publisher:je,package_:we,name:"type"},In={publisher:je,package_:we,name:"subClassOf"},Un={publisher:je,package_:we,name:"label"},Fn={publisher:je,package_:we,name:"comment"},rn=new sn(je,we,"Resource");function A(h,e){let n=cn(h,e,wn)??Un,a=cn(h,e,On)??Fn,t=Be(e,n)??e.name,o=Be(e,a);return{label:t,summary:o}}function cn(h,e,n){let a=Le(e,n);if(a)return a;let t=new Set,o=ln(e,En);for(;o.length>0;){let s=o.shift(),r=Pe(s);if(t.has(r))continue;t.add(r);let c=Ve(h,s);if(!c)continue;let i=Le(c,n);if(i)return i;o.push(...ln(c,In))}if(!t.has(Pe(rn))){let s=Ve(h,rn);if(s){let r=Le(s,n);if(r)return r}}}function ln(h,e){let n=Le(h,e);if(n)return[n];let a=[];for(let t of on(h,e))t instanceof E&&a.push(t.subject);return a}function Ge(h,e={}){let n=h.replace(/\r\n/g,`
2
+ `).split(`
3
+ `),a=[],t=0;for(;t<n.length;){let o=n[t];if(o.trim()===""){t++;continue}let s=/^(\s*)```(\S*)\s*$/.exec(o);if(s){let i=s[2],l=[];for(t++;t<n.length&&!/^(\s*)```\s*$/.test(n[t]);)l.push(n[t]),t++;t++;let u=l.join(`
4
+ `),f=i&&e.highlight?e.highlight(i,u):ye(u),g=i?` class="language-${pn(i)}"`:"";a.push(`<pre class="kan-code"><code${g}>${f}</code></pre>`);continue}let r=/^(#{1,6})\s+(.*)$/.exec(o);if(r){let i=r[1].length,l=Re(r[2].trim());a.push(`<h${i}>${l}</h${i}>`),t++;continue}if(o.includes("|")&&t+1<n.length&&dn(n[t+1])){let i=He(o),l=Tn(n[t+1]);t+=2;let u=[];for(;t<n.length&&n[t].trim()!==""&&n[t].includes("|");)u.push(He(n[t])),t++;a.push(Cn(i,l,u));continue}if(/^\s*[-*]\s+/.test(o)){let i=[];for(;t<n.length&&/^\s*[-*]\s+/.test(n[t]);){let l=[n[t].replace(/^\s*[-*]\s+/,"")];for(t++;t<n.length&&n[t].trim()!==""&&!/^\s*[-*]\s+/.test(n[t])&&!/^\s*\d+\.\s+/.test(n[t]);)l.push(n[t]),t++;t<n.length&&n[t].trim()===""&&t++,i.push(`<li>${Re(l.join(" ").trim())}</li>`)}a.push(`<ul>
5
+ ${i.join(`
6
+ `)}
7
+ </ul>`);continue}if(/^\s*\d+\.\s+/.test(o)){let i=[];for(;t<n.length&&/^\s*\d+\.\s+/.test(n[t]);){let l=[n[t].replace(/^\s*\d+\.\s+/,"")];for(t++;t<n.length&&n[t].trim()!==""&&!/^\s*\d+\.\s+/.test(n[t])&&!/^\s*[-*]\s+/.test(n[t]);)l.push(n[t]),t++;t<n.length&&n[t].trim()===""&&t++,i.push(`<li>${Re(l.join(" ").trim())}</li>`)}a.push(`<ol>
8
+ ${i.join(`
9
+ `)}
10
+ </ol>`);continue}let c=[o];for(t++;t<n.length&&n[t].trim()!==""&&!/^(#{1,6})\s+/.test(n[t])&&!/^(\s*)```/.test(n[t])&&!/^\s*[-*]\s+/.test(n[t])&&!/^\s*\d+\.\s+/.test(n[t])&&!(n[t].includes("|")&&t+1<n.length&&dn(n[t+1]));)c.push(n[t]),t++;a.push(`<p>${Re(c.join(" "))}</p>`)}return a.join(`
11
+ `)}function dn(h){return h.includes("-")?/^[\s|:-]+$/.test(h):!1}function He(h){let e=h.trim();return e.startsWith("|")&&(e=e.slice(1)),e.endsWith("|")&&(e=e.slice(0,-1)),e.split("|").map(n=>n.trim())}function Tn(h){return He(h).map(e=>{let n=e.startsWith(":"),a=e.endsWith(":");return n&&a?"center":a?"right":n?"left":null})}function Cn(h,e,n){let a=s=>{let r=e[s];return r?` style="text-align:${r}"`:""},t=h.map((s,r)=>`<th${a(r)}>${Re(s)}</th>`).join(""),o=n.map(s=>`<tr>${s.map((c,i)=>`<td${a(i)}>${Re(c)}</td>`).join("")}</tr>`).join(`
12
+ `);return`<table>
13
+ <thead><tr>${t}</tr></thead>
14
+ <tbody>
15
+ ${o}
16
+ </tbody>
17
+ </table>`}function Re(h){let e=ye(h);return e=e.replace(/`([^`\n]+)`/g,(n,a)=>`<code>${a}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(n,a,t)=>`<a href="${pn(t)}">${a}</a>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,(n,a)=>`<strong>${a}</strong>`),e=e.replace(/(^|[^*])\*([^*\n]+)\*(?!\*)/g,(n,a,t)=>`${a}<em>${t}</em>`),e=e.replace(/(^|[\s(])_([^_\n]+)_(?=[\s).,;:!?]|$)/g,(n,a,t)=>`${a}<em>${t}</em>`),e}function ye(h){return h.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function pn(h){return h.replace(/"/g,"&quot;").replace(/&/g,"&amp;")}var Fe=class{byLang=new Map;constructor(e){for(let n of e){if(!n.language)continue;let a=[];for(let t of n.rules){if(!t.tokenClass||!t.pattern)continue;let o;try{o=new RegExp(t.pattern,"y")}catch{continue}a.push({tokenClass:t.tokenClass,re:o})}this.byLang.set(n.language,a)}}has(e){return this.byLang.has(e)}highlight(e,n){let a=this.byLang.get(e);return!a||a.length===0?ye(n):n.split(`
18
+ `).map(t=>this.highlightLine(t,a)).join(`
19
+ `)}highlightLine(e,n){let a="",t=0;for(;t<e.length;){let o=!1;for(let s of n){s.re.lastIndex=t;let r=s.re.exec(e);if(r&&r[0].length>0){a+=`<span class="kan-tok-${s.tokenClass}">${ye(r[0])}</span>`,t+=r[0].length,o=!0;break}}o||(a+=ye(e[t]),t++)}return a}};var Me={publisher:"kanonak.org",package_:"derivation",name:"look"},De={publisher:"kanonak.org",package_:"derivation",name:"tokens"},ge={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},ze={publisher:"kanonak.org",package_:"core-rdf",name:"label"},fn={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},An={publisher:"kanonak.org",package_:"core-rdf",name:"range"},Mn={publisher:"kanonak.org",package_:"core-rdf",name:"Class"},Dn={publisher:"kanonak.org",package_:"core-owl",name:"Class"},Nn={publisher:"kanonak.org",package_:"look",name:"Hero"},Pn={publisher:"kanonak.org",package_:"look",name:"PropertyList"},Vn={publisher:"kanonak.org",package_:"look",name:"PropertyTable"},Bn={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},Hn={publisher:"kanonak.org",package_:"look",name:"ChipRow"},Gn={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},zn={publisher:"kanonak.org",package_:"look",name:"ReferencedBy"},Wn={publisher:"kanonak.org",package_:"look",name:"Instances"},gn={publisher:"kanonak.org",package_:"look",name:"Markdown"},Yn={publisher:"kanonak.org",package_:"look",name:"NavGroup"},qn={publisher:"kanonak.org",package_:"look",name:"nav"},We={publisher:"kanonak.org",package_:"look",name:"NavLink"},Xn={publisher:"kanonak.org",package_:"look",name:"footer"},Zn={publisher:"kanonak.org",package_:"look",name:"text"},Jn={publisher:"kanonak.org",package_:"look",name:"links"},kn={publisher:"kanonak.org",package_:"look",name:"target"},Qn={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},et={publisher:"kanonak.org",package_:"look",name:"Timeline"},nt={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},tt={publisher:"kanonak.org",package_:"look",name:"Figure"},at={publisher:"kanonak.org",package_:"look",name:"Diagram"},st={publisher:"kanonak.org",package_:"look",name:"facets"},ot={publisher:"kanonak.org",package_:"look",name:"relation"},rt={publisher:"kanonak.org",package_:"look",name:"encode"},it={publisher:"kanonak.org",package_:"look",name:"cluster"},ct={publisher:"kanonak.org",package_:"look",name:"connector"},lt={publisher:"kanonak.org",package_:"look",name:"channels"},ut={publisher:"kanonak.org",package_:"look",name:"mapPath"},dt={publisher:"kanonak.org",package_:"look",name:"to"},pt={publisher:"kanonak.org",package_:"look",name:"mark"},ft={publisher:"kanonak.org",package_:"look",name:"expand"},gt={publisher:"kanonak.org",package_:"look",name:"edges"},kt={publisher:"kanonak.org",package_:"look",name:"nodeTier"},mt={publisher:"kanonak.org",package_:"look",name:"diagramTier"},ht={publisher:"kanonak.org",package_:"look",name:"nodeNote"},bt={publisher:"kanonak.org",package_:"look",name:"edgeLabel"},$t={publisher:"kanonak.org",package_:"look",name:"labelEdges"},vt={publisher:"kanonak.org",package_:"look",name:"edgeValue"},_t={publisher:"kanonak.org",package_:"look",name:"figureTitle"},jt={publisher:"kanonak.org",package_:"look",name:"titlePosition"},St=`(function(){
20
+ if(window.__kanDiagramZoom)return;window.__kanDiagramZoom=1;
21
+ var TIERS=['chip','icon','card','full'];
22
+ var css='.kan-dgm-tier[hidden]{display:none}.kan-dgm-tiers{position:relative}'
23
+ +'.kan-dgm-tiers>.kan-dgm-btn{opacity:0;transition:opacity .12s}.kan-dgm-tiers:hover>.kan-dgm-btn,.kan-dgm-btn:focus{opacity:1}'
24
+ +'#kan-dgm-modal{position:fixed;inset:0;z-index:9999;display:none;background:rgba(0,0,0,.85);cursor:grab}'
25
+ +'#kan-dgm-stage{position:absolute;top:50%;left:50%}'
26
+ +'#kan-dgm-bar{position:fixed;top:14px;left:50%;transform:translateX(-50%);display:flex;gap:9px;align-items:center;font:12px sans-serif;color:#cbd5e1;background:rgba(12,18,32,.92);border:1px solid #1e293b;border-radius:999px;padding:7px 14px;user-select:none}'
27
+ +'#kan-dgm-bar .pip{width:9px;height:9px;border-radius:50%;background:#334155;cursor:pointer}'
28
+ +'#kan-dgm-bar .pip.on{background:#38bdf8}'
29
+ +'#kan-dgm-lbl{min-width:32px;text-transform:capitalize}';
30
+ var sty=document.createElement('style');sty.textContent=css;(document.head||document.documentElement).appendChild(sty);
31
+ var S={cont:null,mode:'snap',tier:1,z:1,x:0,y:0,drag:0,sx:0,sy:0,lock:0};
32
+ function el(id){return document.getElementById(id);}
33
+ function modal(){var m=el('kan-dgm-modal');if(m)return m;
34
+ m=document.createElement('div');m.id='kan-dgm-modal';
35
+ var st=document.createElement('div');st.id='kan-dgm-stage';m.appendChild(st);
36
+ var bar=document.createElement('div');bar.id='kan-dgm-bar';
37
+ var lbl=document.createElement('span');lbl.id='kan-dgm-lbl';bar.appendChild(lbl);
38
+ for(var i=0;i<4;i++){(function(i){var p=document.createElement('span');p.className='pip';p.title=TIERS[i];p.addEventListener('click',function(e){e.stopPropagation();setTier(i);});bar.appendChild(p);})(i);}
39
+ var h=document.createElement('span');h.textContent='scroll: zoom \\u00b7 drag: pan \\u00b7 esc';h.style.cssText='margin-left:6px;color:#64748b';bar.appendChild(h);
40
+ m.appendChild(bar);m.addEventListener('click',function(e){if(e.target===m)close();});document.body.appendChild(m);return m;}
41
+ function apply(){var st=el('kan-dgm-stage');if(st)st.style.transform='translate(calc(-50% + '+S.x+'px),calc(-50% + '+S.y+'px)) scale('+S.z+')';}
42
+ function updBar(){var b=el('kan-dgm-bar');if(!b)return;var geo=S.mode==='geo';var ps=b.querySelectorAll('.pip');for(var i=0;i<ps.length;i++){ps[i].style.display=geo?'none':'';ps[i].className='pip'+(i===S.tier?' on':'');}el('kan-dgm-lbl').textContent=geo?'zoom':TIERS[S.tier];}
43
+ function sizeVisible(){var c=S.cont;if(!c||S.mode==='geo')return;var svg=c.querySelector('.kan-dgm-tier:not([hidden]) svg');if(svg){var vb=(svg.getAttribute('viewBox')||'0 0 800 600').split(' ');var w=parseFloat(vb[2])||800;svg.style.width=Math.min(w,window.innerWidth*0.92)+'px';svg.style.height='auto';svg.style.display='block';}apply();}
44
+ function setTier(i){i=Math.max(0,Math.min(3,i));S.tier=i;var c=S.cont;if(!c)return;var ts=c.querySelectorAll('.kan-dgm-tier');for(var j=0;j<ts.length;j++){if(ts[j].getAttribute('data-tier')===TIERS[i])ts[j].removeAttribute('hidden');else ts[j].setAttribute('hidden','');}sizeVisible();updBar();}
45
+ function uniq(root){var seq=(window.__kanMk=(window.__kanMk||0)+1);var map={};var mk=root.querySelectorAll('marker[id]');for(var i=0;i<mk.length;i++){var o=mk[i].getAttribute('id');var n=o+'_z'+seq;map[o]=n;mk[i].setAttribute('id',n);}var all=root.querySelectorAll('[marker-end],[marker-start],[marker-mid]');for(var j=0;j<all.length;j++){(function(e){['marker-end','marker-start','marker-mid'].forEach(function(a){var v=e.getAttribute(a);if(!v)return;var mm=v.match(/url\\(#(.+?)\\)/);if(mm&&map[mm[1]])e.setAttribute(a,'url(#'+map[mm[1]]+')');});})(all[j]);}}
46
+ function open(tiersEl){modal();var st=el('kan-dgm-stage');var c=tiersEl.cloneNode(true);uniq(c);var bb=c.querySelector('.kan-dgm-btn');if(bb&&bb.parentNode)bb.parentNode.removeChild(bb);st.innerHTML='';st.appendChild(c);S.cont=c;S.x=0;S.y=0;S.z=1;
47
+ S.mode=c.getAttribute('data-geo')?'geo':'snap';
48
+ var vis=c.querySelector('.kan-dgm-tier:not([hidden])');var t=vis?vis.getAttribute('data-tier'):'icon';S.tier=Math.max(0,TIERS.indexOf(t));
49
+ el('kan-dgm-modal').style.display='block';
50
+ if(S.mode==='geo'){var bw=c.getBoundingClientRect().width||600;S.z=Math.min(1.8,(window.innerWidth*0.9)/bw);if(!(S.z>0))S.z=1;}else sizeVisible();
51
+ apply();updBar();}
52
+ function close(){var m=el('kan-dgm-modal');if(m){m.style.display='none';el('kan-dgm-stage').innerHTML='';S.cont=null;}}
53
+ document.addEventListener('wheel',function(e){var m=el('kan-dgm-modal');if(!m||m.style.display==='none')return;e.preventDefault();
54
+ if(S.mode==='geo'){S.z*=e.deltaY<0?1.15:1/1.15;S.z=Math.max(.2,Math.min(S.z,9));apply();return;}
55
+ var n=Date.now();if(n-S.lock<200)return;S.lock=n;setTier(S.tier+(e.deltaY<0?1:-1));},{passive:false});
56
+ document.addEventListener('mousedown',function(e){var m=el('kan-dgm-modal');if(!m||m.style.display==='none')return;S.drag=1;S.sx=e.clientX-S.x;S.sy=e.clientY-S.y;m.style.cursor='grabbing';});
57
+ document.addEventListener('mousemove',function(e){if(!S.drag)return;S.x=e.clientX-S.sx;S.y=e.clientY-S.sy;apply();});
58
+ document.addEventListener('mouseup',function(){S.drag=0;var m=el('kan-dgm-modal');if(m)m.style.cursor='grab';});
59
+ document.addEventListener('keydown',function(e){if(e.key==='Escape')close();});
60
+ function enhance(){var cs=document.querySelectorAll('.kan-dgm-tiers');for(var i=0;i<cs.length;i++){(function(c){if(c.__kz)return;c.__kz=1;
61
+ var b=document.createElement('button');b.type='button';b.className='kan-dgm-btn';b.textContent='\\u2922';b.setAttribute('aria-label','Open and zoom');
62
+ b.style.cssText='position:absolute;top:6px;right:6px;z-index:3;border:1px solid var(--kan-border,#333);background:var(--kan-bg-card,#111);color:var(--kan-text,#ccc);border-radius:6px;width:28px;height:28px;cursor:pointer;font-size:15px;line-height:1;padding:0';
63
+ b.addEventListener('click',function(ev){ev.preventDefault();ev.stopPropagation();open(c);});c.appendChild(b);})(cs[i]);}}
64
+ if(document.readyState!=='loading')enhance();else document.addEventListener('DOMContentLoaded',enhance);
65
+ })();`,Oe={chip:56,icon:120,card:240,full:420},Rt=["chip","icon","card","full"],yt={56:"chip",120:"icon",240:"card",420:"full"},pe=11,Kt={publisher:"kanonak.org",package_:"look",name:"placement"},xt={publisher:"kanonak.org",package_:"look",name:"width"},Lt=4,wt={publisher:"kanonak.org",package_:"look",name:"StatRow"},Ot={publisher:"kanonak.org",package_:"look",name:"Horizon"},Et={publisher:"kanonak.org",package_:"look",name:"PackageContents"},Ye={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},It={publisher:"kanonak.org",package_:"core-kanonak",name:"Publisher"},Ut={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},Ft={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},Tt={publisher:"kanonak.org",package_:"look",name:"packages"},Ct={publisher:"kanonak.org",package_:"code-grammars",name:"CodeGrammar"},At={publisher:"kanonak.org",package_:"code-grammars",name:"language"},Mt={publisher:"kanonak.org",package_:"code-grammars",name:"rule"},Dt={publisher:"kanonak.org",package_:"code-grammars",name:"tokenClass"},Nt={publisher:"kanonak.org",package_:"code-grammars",name:"pattern"},Pt={publisher:"kanonak.org",package_:"look",name:"Links"},Vt={publisher:"kanonak.org",package_:"link",name:"url"},Bt={publisher:"kanonak.org",package_:"link",name:"links"};var Ht={publisher:"kanonak.org",package_:"look",name:"Distribution"},Gt={publisher:"kanonak.org",package_:"look",name:"alphaPath"},zt={publisher:"kanonak.org",package_:"look",name:"betaPath"},qe={publisher:"kanonak.org",package_:"look",name:"SectionHeading"},Wt={publisher:"kanonak.org",package_:"look",name:"SectionNav"},mn={publisher:"kanonak.org",package_:"look",name:"heading"},Yt={publisher:"kanonak.org",package_:"look",name:"note"},qt={publisher:"kanonak.org",package_:"look",name:"VersionDelta"},Xt={publisher:"kanonak.org",package_:"look",name:"TimePlot"},Zt={publisher:"kanonak.org",package_:"look",name:"Details"},Jt={publisher:"kanonak.org",package_:"look",name:"EmbeddedViews"},Qt={publisher:"kanonak.org",package_:"look",name:"skip"},ea={publisher:"kanonak.org",package_:"derivation",name:"derivations"},na={publisher:"kanonak.org",package_:"look",name:"laneBy"},ta={publisher:"kanonak.org",package_:"look",name:"stats"},aa={publisher:"kanonak.org",package_:"look",name:"statPath"},sa={publisher:"kanonak.org",package_:"look",name:"statLabel"},hn={publisher:"kanonak.org",package_:"look",name:"labelPath"},oa={publisher:"kanonak.org",package_:"look",name:"badgePath"},Xe={publisher:"kanonak.org",package_:"look",name:"orderBy"},bn={publisher:"kanonak.org",package_:"look",name:"track"},Te={publisher:"kanonak.org",package_:"look",name:"metricPath"},Ze={publisher:"kanonak.org",package_:"look",name:"hueBy"},$n={publisher:"kanonak.org",package_:"look",name:"lowerPath"},vn={publisher:"kanonak.org",package_:"look",name:"upperPath"},ra={publisher:"kanonak.org",package_:"look",name:"axisMin"},ia={publisher:"kanonak.org",package_:"look",name:"axisMax"},ca={publisher:"kanonak.org",package_:"look",name:"valueLabel"};var _n={publisher:"kanonak.org",package_:"look",name:"semanticSvg"},la={publisher:"kanonak.org",package_:"look",name:"tierChip"},ua={publisher:"kanonak.org",package_:"look",name:"tierIcon"},da={publisher:"kanonak.org",package_:"look",name:"tierCard"},pa={publisher:"kanonak.org",package_:"look",name:"tierFull"},fa={publisher:"kanonak.org",package_:"core-rdf",name:"type"},jn=6,Je={publisher:"kanonak.org",package_:"look",name:"bands"},ga={publisher:"kanonak.org",package_:"look",name:"title"},ka={publisher:"kanonak.org",package_:"look",name:"eyebrow"},ma={publisher:"kanonak.org",package_:"look",name:"subtitle"},Sn={publisher:"kanonak.org",package_:"look",name:"badges"},ae={publisher:"kanonak.org",package_:"look",name:"source"},ha={publisher:"kanonak.org",package_:"look",name:"via"},ba={publisher:"kanonak.org",package_:"look",name:"size"},$a={publisher:"kanonak.org",package_:"look",name:"icon"},va={publisher:"kanonak.org",package_:"look",name:"avatar"},_a={publisher:"kanonak.org",package_:"look",name:"contents"},ja={publisher:"kanonak.org",package_:"look",name:"transitive"},Sa={publisher:"kanonak.org",package_:"look",name:"chips"},Rn={publisher:"kanonak.org",package_:"look",name:"entries"},Ra={publisher:"kanonak.org",package_:"look",name:"urlForm"},an=class{constructor(e){this.catalog=e}catalog;_codeHighlighter;findCascadedLook(e){let n=Ka(e)?void 0:Ce(e);return n?{declaration:n,sourceClass:{publisher:B(e),package_:(e.namespace||"").split("/")[1]?.split("@")[0]??"",name:e.name}}:this.lookFromTypeRefs(ie(e))}lookFromTypeRefs(e){let n=new Set,a=[...e];for(;a.length>0;){let o=a.shift().subject,s=z(o);if(n.has(s))continue;n.add(s);let r=ke(this.catalog,o);for(let c of r){let i=Ce(c);if(i)return{declaration:i,sourceClass:{publisher:o.publisher,package_:o.package_,name:o.name}}}for(let c of r)for(let i of Ee(c))a.push(i)}if(!n.has(z(ge)))for(let t of ke(this.catalog,ge)){let o=Ce(t);if(o)return{declaration:o,sourceClass:{...ge}}}}findCascadedTokens(e){let n=new Map;for(let[o,s]of Qe(e))n.has(o)||n.set(o,s);let a=new Set,t=ie(e);for(;t.length>0;){let o=t.shift(),s=z(o.subject);if(a.has(s))continue;a.add(s);let r=ke(this.catalog,o.subject);if(r.length!==0)for(let c of r){for(let[i,l]of Qe(c))n.has(i)||n.set(i,l);for(let i of Ee(c))t.push(i)}}if(!a.has(z(ge))){let o=ke(this.catalog,ge);for(let s of o)for(let[r,c]of Qe(s))n.has(r)||n.set(r,c)}return n}renderSvg(e){let n=A(this.catalog,e).label,a=(n.trim().charAt(0)||"?").toUpperCase(),t=`${e.namespace??""}/${e.name}`,o={label:n,firstLetter:a,uri:t},s=this.collectCascadedSvgTiers(e),r=k=>this.applyPlaceholders(k,e,o),c=r(s.tierChip??""),i=r(s.tierIcon??""),l=r(s.tierCard??""),u=r(s.tierFull??""),g=[...this.findCascadedTokens(e)].map(([k,p])=>`--kan-${k}: ${p};`).join(" ");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" style="${me(g)}">
66
+ <style>
67
+ .tier-chip,.tier-icon,.tier-card{display:none}
68
+ .tier-full{display:block}
69
+ @media (max-width:400px){.tier-full{display:none}.tier-card{display:block}}
70
+ @media (max-width:160px){.tier-card{display:none}.tier-icon{display:block}}
71
+ @media (max-width:60px){.tier-icon{display:none}.tier-chip{display:block}}
72
+ </style>
73
+ <g class="tier-chip">${c}</g>
74
+ <g class="tier-icon">${i}</g>
75
+ <g class="tier-card">${l}</g>
76
+ <g class="tier-full">${u}</g>
77
+ </svg>`}applyPlaceholders(e,n,a){return e.replace(/\{\{([^}]+)\}\}/g,(t,o)=>{let s=o.trim();if(a[s]!==void 0)return me(a[s]);let r=s.indexOf(":");if(r>0){let i=s.slice(0,r),l=s.slice(r+1).trim();if(i==="delta"||i==="deltaArrow"||i==="deltaColor"||i==="deltaDir"){let u=this.metricDelta(n,l);return i==="deltaColor"?u?u.dir==="up"?"#34d399":u.dir==="down"?"#f87171":"#9aa5b8":"#9aa5b8":i==="deltaDir"?u?u.dir:"new":u?i==="deltaArrow"?u.dir==="up"?"\u25B2":u.dir==="down"?"\u25BC":"\u2014":me(`${u.delta>0?"+":""}${u.delta.toFixed(2)}`):""}if(i==="svg")return this.resolvePath(n,l)??""}let c=this.resolvePath(n,s);return c===void 0?`{{${s}}}`:me(c)})}metricDelta(e,n){let a=g=>{let k=this.resolvePath(g,n),p=k===void 0?NaN:parseFloat(k);return Number.isFinite(p)?p:void 0},t=a(e);if(t===void 0)return;let o=g=>le((g.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},s=(g,k)=>g.major-k.major||g.minor-k.minor||g.patch-k.patch,r={publisher:B(e),package_:(e.namespace||"").split("/")[1]?.split("@")[0]??"",name:e.name},c=o(e),i,l;for(let g of ke(this.catalog,r)){let k=o(g);s(k,c)<0&&(!l||s(k,l)>0)&&(i=g,l=k)}if(!i)return;let u=a(i);if(u===void 0)return;let f=t-u;return{delta:f,dir:Math.abs(f)<.005?"flat":f>0?"up":"down"}}resolvePath(e,n){let a=n.split("/").map(t=>t.trim()).filter(t=>t.length>0);if(a.length!==0)return this.resolvePathSteps(e,a)}resolvePathSteps(e,n){let a=xa(n[0]),t=La(e,a);if(!t)return;let o=n.length===1;if(t instanceof oe)return o?void 0:this.resolvePathSteps(t.object,n.slice(1));if(t instanceof N&&t.object instanceof E){let s=t.object.subject,r=ke(this.catalog,s);if(r.length===0){let i=G(this.catalog,s);i&&r.push(i)}if(o){for(let i of r){let l=A(this.catalog,i);if(l.label!==i.name)return l.label}return s.name}let c=n.slice(1);for(let i of r){let l=this.resolvePathSteps(i,c);if(l!==void 0)return l}return}if(o&&(t instanceof Q||t instanceof $e||t instanceof ue))return String(t.object)}collectCascadedSvgTiers(e){let n={},a=s=>{let r=P(s,_n);if(!(r instanceof oe))return;let c=r.object,i=L(c,la),l=L(c,ua),u=L(c,da),f=L(c,pa);n.tierChip===void 0&&i!==void 0&&(n.tierChip=i),n.tierIcon===void 0&&l!==void 0&&(n.tierIcon=l),n.tierCard===void 0&&u!==void 0&&(n.tierCard=u),n.tierFull===void 0&&f!==void 0&&(n.tierFull=f)};a(e);let t=new Set,o=ie(e);for(;o.length>0;){let s=o.shift(),r=z(s.subject);if(t.has(r))continue;t.add(r);let c=ke(this.catalog,s.subject);for(let i of c){a(i);for(let l of Ee(i))o.push(l)}}if(!t.has(z(ge)))for(let s of ke(this.catalog,ge))a(s);return n}renderStylesheet(e){let n=this.findCascadedTokens(e),a=[];for(let[s,r]of n)a.push(` --kan-${s}: ${r};`);let t=a.length>0?`:root {
78
+ ${a.join(`
79
+ `)}
80
+ }`:":root { /* no tokens resolved */ }",o=this.findBaseStylesheet(B(e))??"";return`${t}
81
+ ${o}`}findBaseStylesheet(e){let n="kanonak.org/site/content",a=i=>le((i.namespace||"").split("@")[1]??""),t,o,s,r;for(let i of this.catalog){if(!(i instanceof re)||i.name!=="base-stylesheet")continue;let l=i.namespace||"";if(l.startsWith(`${e}/look-styles@`)){let u=a(i);u&&(!o||Ie(u,o)>0)&&(t=i,o=u)}else if(l.startsWith("kanonak.org/look-styles@")){let u=a(i);u&&(!r||Ie(u,r)>0)&&(s=i,r=u)}}let c=t??s;if(c)for(let i of c.statement){let l=i.predicate?.subject;if(!l)continue;if(`${l.publisher}/${l.package_}/${l.name}`===n&&i instanceof Q)return i.object}}renderHtml(e){let n=this.findCascadedLook(e);if(!n)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let a=en(n.declaration);if(a.length===0)return"<!-- LookRenderer: look declaration has no bands -->";let t=B(e),o=this.collectSectionHeadings(a);this.diagramScriptEmitted=!1;let s=[];for(let r of a){let c=Ke(r);c&&R(c,qe)&&s.push('<div style="clear:both"></div>'),s.push(this.applyBandPlacement(r,this.renderBand(r,e,t,o)))}return s.push('<div style="clear:both"></div>'),s.join(`
82
+ `)}applyBandPlacement(e,n){let a=L(e,Kt);if(a!=="floatLeft"&&a!=="floatRight")return n;let t=a==="floatLeft"?"left":"right",o=L(e,xt),s=o&&/^\d+(\.\d+)?(%|px|rem|em)$/.test(o)?o:"42%";return`<div class="kan-band-float kan-band-${t}" style="float:${t};width:${s};margin:${t==="left"?"0 1.25rem 0.75rem 0":"0 0 0.75rem 1.25rem"}">${n}</div>`}collectSectionHeadings(e){let n=[];for(let a of e){let t=Ke(a);if(!t||!R(t,qe))continue;let o=L(a,mn);o&&n.push({slug:Kn(o),label:o})}return n}publisherSubject(e){for(let a of this.catalog)if(a instanceof re&&B(a)===e&&ie(a).some(t=>R(t.subject,It)))return a;let n=new re;return n.namespace=e,n.name=e,n.statement=[N.parse("kanonak.org/core-rdf/type","kanonak.org/core-kanonak/Publisher"),Q.parse("kanonak.org/core-rdf/label",e)],n}hasDeclaredView(e){let n=this.findCascadedLook(e);return n?!(t=>t.publisher===ge.publisher&&t.package_===ge.package_&&t.name===ge.name||t.publisher===Ye.publisher&&t.package_===Ye.package_&&t.name===Ye.name)(n.sourceClass):!1}renderPackageVersionList(e,n,a){let t=B(a),o=this.renderNavGroup(a,t),s=this.renderBreadcrumb(a,t,{bareOverview:!0}),r=n.map(i=>`<a class="kan-resource-card" href="/${d(e)}/${d(i)}/"><h3 class="kan-resource-card-title">${d(i)}</h3></a>`).join(`
83
+ `),c=`<header class="kan-hero">
84
+ <span class="kan-hero-eyebrow">PACKAGE</span>
85
+ <h1 class="kan-hero-title">${d(e)}</h1>
86
+ </header>
87
+ <section class="kan-resource-grid">
88
+ ${r}
89
+ </section>`;return`<!doctype html>
90
+ <html lang="en">
91
+ <head>
92
+ <meta charset="utf-8">
93
+ <meta name="viewport" content="width=device-width, initial-scale=1">
94
+ <title>${d(e)}</title>
95
+ <link rel="stylesheet" href="${d(a.name)}.css">
96
+ </head>
97
+ <body>
98
+ ${o}
99
+ ${s}
100
+ <main class="kan-main">
101
+ ${c}
102
+ </main>
103
+ </body>
104
+ </html>
105
+ `}renderDocument(e,n){let a=this.renderHtml(e),t=A(this.catalog,e).label,o=n?.rootIndex?"index.css":`${e.name}.css`,s=!n?.rootIndex&&this.hasSvgDerivation(e)?`<figure class="kan-figure"><img src="${d(e.name)}.svg" alt=""></figure>
106
+ `:"",r=B(e),c=this.renderNavGroup(e,r),i=this.renderSiteFooter(r),l=n?.rootIndex?"":this.renderBreadcrumb(e,r,n);return`<!doctype html>
107
+ <html lang="en">
108
+ <head>
109
+ <meta charset="utf-8">
110
+ <meta name="viewport" content="width=device-width, initial-scale=1">
111
+ <title>${d(t)}</title>
112
+ <link rel="stylesheet" href="${d(o)}">
113
+ </head>
114
+ <body>
115
+ ${c}
116
+ ${l}
117
+ <main class="kan-main">
118
+ ${s}${a}
119
+ </main>
120
+ ${i}
121
+ </body>
122
+ </html>
123
+ `}hasSvgDerivation(e){let n=new Set,a=ie(e);for(;a.length>0;){let t=a.shift(),o=z(t.subject);if(n.has(o))continue;n.add(o);let s=G(this.catalog,t.subject);if(s){for(let r of s.statement)if(r instanceof Y&&fe(r,"kanonak.org","derivation","derivations")){for(let c of r.object??[])if(c instanceof q)for(let i of c.statement){if(!(i instanceof N)||!fe(i,"kanonak.org","derivation","format")||!(i.object instanceof E))continue;let l=i.object.subject;if(l.publisher==="kanonak.org"&&l.package_==="formats"&&l.name==="svg")return!0}}for(let r of Ee(s))a.push(r)}}return!1}renderBand(e,n,a,t=[],o=""){let s=Ke(e);return s?R(s,Wt)?this.renderSectionNav(t):R(s,Nn)?this.renderHero(e,n,a):R(s,Pn)?this.renderPropertyList(e,n,a):R(s,Vn)?this.renderPropertyTable(e,n,a,o):R(s,Bn)?this.renderBadgeRow(e,n,a):R(s,Hn)?this.renderChipRow(e,n,a):R(s,Gn)?this.renderReferenceList(e,n,a):R(s,zn)?this.renderReferencedBy(e,n,a):R(s,Wn)?this.renderInstances(e,n,a):R(s,gn)?this.renderMarkdown(e,n,a):R(s,Pt)?this.renderLinks(e,n):R(s,Yn)?this.renderNavGroup(n,a):R(s,Qn)?this.renderResourceGrid(e,a,n):R(s,et)?this.renderTimeline(e,a):R(s,nt)?this.renderVersionDiff(e,a):R(s,tt)?this.renderFigure(e,n,a):R(s,at)?this.renderDiagram(e,n,a):R(s,wt)?this.renderStatRow(e,n):R(s,Ot)?this.renderHorizon(e,n,a):R(s,Et)?this.renderPackageContents(n,a):R(s,Ut)?this.renderFeaturedResource(e,a):R(s,Ft)?this.renderPublisherPackages(e,a):R(s,Ht)?this.renderDistribution(e,n):R(s,qe)?this.renderSectionHeading(e):R(s,qt)?this.renderVersionDelta(e,n):R(s,Xt)?this.renderTimePlot(e,n,a):R(s,Zt)?this.renderDetails(e,n,a):R(s,Jt)?this.renderEmbeddedViews(e,n,a,o):`<!-- LookRenderer: unsupported band ${s.publisher}/${s.package_}/${s.name} -->`:"<!-- LookRenderer: band has no rdf:type -->"}collectTrackedSeries(e,n,a,t){let{hueBy:o,lowerPath:s,upperPath:r}=t??{},c=new Map,i=e.length,l=(u,f)=>{let g=this.resolvePath(u,f);return g===void 0?NaN:parseFloat(g)};return e.forEach((u,f)=>{let g=this.readPropertyValueReferences(u,n);for(let k of g){let p=G(this.catalog,{publisher:k.subject.publisher,package_:k.subject.package_,name:k.subject.name,...k.subject.version?{version:k.subject.version}:{}});if(!p)continue;let m=k.subject.name,b=c.get(m);b||(b={key:m,label:A(this.catalog,p).label,points:new Array(i).fill(null),...s?{lower:new Array(i).fill(null)}:{},...r?{upper:new Array(i).fill(null)}:{}},c.set(m,b));let _=l(p,a);if(Number.isFinite(_)&&(b.points[f]=_),s&&b.lower){let v=l(p,s);Number.isFinite(v)&&(b.lower[f]=v)}if(r&&b.upper){let v=l(p,r);Number.isFinite(v)&&(b.upper[f]=v)}if(o){let v=l(p,o);Number.isFinite(v)&&(b.hue=v)}b.lastSubject=p}}),[...c.values()]}hrefForSubject(e,n,a="="){let t=e.namespace||"",o=t.split("/")[1]?.split("@")[0]??"",s=t.split("@")[1]??"",r=s?le(s):void 0;return _e.formatResourceUrl({publisher:B(e),package_:o,name:e.name,...r?{version:r}:{}},a,{contextPublisher:n})}renderVersionDiff(e,n){let a=M(e,ae);if(!a)return"<!-- LookRenderer.VersionDiff: no look.source -->";let t=L(e,Te),o=M(e,bn);if(!o||!t)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let s=M(e,Xe),r=L(e,Ze),c=this.findInstancesOfClass(a);if(c.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let i=g=>s?this.readPropertyValueText(g,s)??"":"",l=c.slice().sort((g,k)=>i(g).localeCompare(i(k))),u=this.collectTrackedSeries(l,o,t,{hueBy:r});return u.length===0?"<!-- LookRenderer.VersionDiff: no tracked series -->":`<section class="kan-vdiff">${u.map((g,k)=>{let p=g.hue!==void 0?g.hue:Math.round(k*360/u.length),m=g.points.filter(x=>x!==null);if(m.length===0)return"";let b=m[0],_=m[m.length-1],v=_-b,S;if(Math.abs(v)>=.005){let x=v>0?"up":"down",I=v>0?"\u25B2":"\u25BC";S=`<span class="kan-vdiff-delta ${x}">${v>0?"+":""}${v.toFixed(2)} ${I}</span>`}else S='<span class="kan-vdiff-delta flat">\u2014</span>';let w=g.lastSubject&&this.isLinkable(B(g.lastSubject),n)?`<a href="${d(this.hrefForSubject(g.lastSubject,n))}">${d(g.label)}</a>`:d(g.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${p}"><span class="kan-vdiff-label">${w}</span><span class="kan-vdiff-start">${b.toFixed(2)}</span>`+this.sparkline(g.points,p)+`<span class="kan-vdiff-end">${_.toFixed(2)}</span>`+S+"</div>"}).join("")}</section>`}sparkline(e,n){let s=`hsl(${n},65%,60%)`,r=e.filter(m=>m!==null);if(r.length===0)return'<svg class="kan-vdiff-spark" viewBox="0 0 132 30" xmlns="http://www.w3.org/2000/svg"></svg>';let c=Math.min(...r),l=Math.max(...r)-c,u=e.length,f=m=>u<=1?132/2:4+m/(u-1)*124,g=m=>l<1e-9?30/2:26-(m-c)/l*22,k=[],p=[];return e.forEach((m,b)=>{if(m===null)return;let _=f(b),v=g(m);k.push(`${_.toFixed(1)},${v.toFixed(1)}`),p.push(`<circle cx="${_.toFixed(1)}" cy="${v.toFixed(1)}" r="2" fill="${s}"/>`)}),`<svg class="kan-vdiff-spark" viewBox="0 0 132 30" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" role="img"><polyline points="${k.join(" ")}" fill="none" stroke="${s}" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round"/>`+p.join("")+"</svg>"}svgUrlForSubject(e,n,a="="){return`${this.hrefForSubject(e,n,a)}.svg`}renderFigure(e,n,a){let t=n,o=M(e,ae);if(o){let l=G(this.catalog,o);l&&(t=l)}let s=this.svgUrlForSubject(t,a),r=A(this.catalog,t).label,c=L(e,ba);return`<figure class="kan-figure${c==="small"||c==="medium"||c==="large"?` kan-figure-${c}`:""}"><img class="kan-figure-img" src="${d(s)}" alt="${d(r)}" loading="lazy"/></figure>`}diagramArrowSeq=0;diagramScriptEmitted=!1;renderDiagram(e,n,a,t=0,o=new Set){let s=this.gatherValueItems(P(e,st)).filter(k=>k instanceof q);if(s.length===0)return"<!-- LookRenderer.Diagram: no look.facets -->";let r=[];for(let k of s){let p=M(k,ot);if(!p){r.push("<!-- LookRenderer.Diagram: facet has no resolvable look.relation -->");continue}let m=M(k,rt),b=this.resolveFacetNodes(n,p);if(b.length===0){r.push(`<!-- LookRenderer.Diagram: relation ${p.publisher}/${p.package_}/${p.name} resolved to 0 instances -->`);continue}let _=this.resolveFacetChannels(k,b),v=P(k,pt),S=v instanceof oe&&v.object instanceof q?v.object:void 0,w=L(k,kt),x=w&&Oe[w]!==void 0?Oe[w]:void 0,I=x??this.classTierSize(b),F=yt[I??Oe.icon]??"icon",D=L(k,ht),W=M(k,ft),T=W?G(this.catalog,W):void 0;if(T){r.push(this.renderDiagramExpand(b,T,a,t,o,D,x));continue}if(m&&R(m,ct)){let O=M(k,gt),V=this.facetEdgeLabel(k,O??p),ee=L(k,vt);r.push(this.embedTiers(F,ce=>O?this.renderDiagramDag(b,O,_,a,ce,V,ee):this.renderDiagramConnector(n,b,_,a,ce,V,ee)));continue}if(m&&!R(m,it)){r.push(`<!-- LookRenderer.Diagram: unknown encode role ${m.publisher}/${m.package_}/${m.name} -->`);continue}r.push(S?`<div class="kan-dgm-tiers" data-geo="1"><div class="kan-dgm-tier" data-tier="card">${this.renderDiagramCluster(b,_,S,a,I)}</div></div>`:this.embedTiers(F,O=>this.renderDiagramCluster(b,_,void 0,a,O)))}let c=L(e,_t),i=L(e,jt),l=k=>`<div class="kan-diagram-title" style="font-weight:600;font-size:0.95rem;color:var(--kan-text);${k}">${d(c)}</div>`,u=c&&i!=="bottom"?l("margin:0 0 .5rem"):"",f=c&&i==="bottom"?l("margin:.5rem 0 0"):"",g="";return t===0&&!this.diagramScriptEmitted&&(this.diagramScriptEmitted=!0,g=`<script>${St}</script>`),`<section class="kan-diagram">${u}${r.join("")}${f}${g}</section>`}embedTiers(e,n){return`<div class="kan-dgm-tiers">${Rt.map(t=>`<div class="kan-dgm-tier" data-tier="${t}"${t===e?"":" hidden"}>${n(Oe[t])}</div>`).join("")}</div>`}renderDiagramExpand(e,n,a,t,o,s,r){return`<figure class="kan-diagram-figure"><div class="kan-diagram-tree">${e.map(i=>{let l=`${i.namespace??""}/${i.name}`,u=this.diagramNodeRow(i,a,r??56,s),g=t<Lt&&!o.has(l)?this.renderDiagram(n,i,a,t+1,new Set([...o,l])):"",k=g?`<div style="margin-left:30px;border-left:2px solid var(--kan-border);padding-left:14px;margin-top:6px">${g}</div>`:"";return`<div class="kan-diagram-node" style="margin:6px 0">${u}${k}</div>`}).join("")}</div></figure>`}diagramNodeRow(e,n,a=56,t){let o=this.hrefForSubject(e,n),s=this.svgUrlForSubject(e,n),r=A(this.catalog,e).label,c=t?this.resolvePath(e,t):void 0,i=c!==void 0?`<span class="kan-diagram-node-note" style="display:block;font-size:0.8em;color:var(--kan-text-dim)">${d(c)}</span>`:"";return`<a href="${d(o)}" style="display:inline-flex;align-items:center;gap:10px;text-decoration:none"><img src="${d(s)}" width="${a}" height="${a}" alt="" loading="lazy"/><span><span class="kan-diagram-node-label">${d(r)}</span>${i}</span></a>`}classTierSize(e){let n;for(let a of e)for(let t of ie(a)){let o=G(this.catalog,t.subject);if(!o)continue;let s=L(o,mt),r=s?Oe[s]:void 0;r!==void 0&&(n=n===void 0?r:Math.max(n,r))}return n}resolveFacetNodes(e,n){let a=[];for(let t of this.readPropertyValueReferences(e,n)){let o=t.subject,s=G(this.catalog,{publisher:o.publisher,package_:o.package_,name:o.name,...o.version?{version:o.version}:{}});s&&a.push(s)}return a}resolveFacetChannels(e,n){let a=this.gatherValueItems(P(e,lt)).filter(o=>o instanceof q),t=[];for(let o of a){let s=L(o,ut),r=L(o,dt);if(!s||!r)continue;let c=n.map(k=>{let p=this.resolvePath(k,s),m=p===void 0?NaN:parseFloat(p);return Number.isFinite(m)?m:NaN}),i=c.filter(k=>Number.isFinite(k)),l=i.length?Math.min(...i):0,f=(i.length?Math.max(...i):0)-l,g=c.map(k=>Number.isFinite(k)&&f>0?(k-l)/f:.5);t.push({to:r,norm:g})}return t}facetEdgeLabel(e,n){let a=L(e,bt);if(a)return a;if(ya(e,$t)&&n){let o=G(this.catalog,n);if(o)return A(this.catalog,o).label}}edgeText(e,n,a){let t=a&&n?this.resolvePath(n,a):void 0,o=[e,t].filter(s=>!!s);return o.length?o.join(" "):void 0}edgeLabelEl(e,n,a){return`<text x="${e.toFixed(1)}" y="${n.toFixed(1)}" text-anchor="middle" class="kan-diagram-edge-label" style="font-size:11px;paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px;fill:var(--kan-text-dim)">${d(a)}</text>`}renderDiagramCluster(e,n,a,t,o){let s=o??132,r=18,c=18,i=n.find(p=>p.to==="opacity");if(a)return`<figure class="kan-diagram-figure"><div class="kan-diagram-marks" style="display:flex;flex-wrap:wrap;gap:18px;align-items:flex-start">${e.map((m,b)=>{let _=this.renderBand(a,m,t),v=this.hrefForSubject(m,t),S=A(this.catalog,m).label,w=i?`opacity:${(.4+i.norm[b]*.6).toFixed(2)};`:"";return`<a class="kan-diagram-mark" href="${d(v)}" style="display:block;text-decoration:none;${w}">${_}<span class="kan-diagram-mark-label">${d(S)}</span></a>`}).join("")}</div></figure>`;let l=Math.min(e.length,4),u=Math.ceil(e.length/l),f=c*2+l*s+(l-1)*r,g=c*2+u*s+(u-1)*r,k=e.map((p,m)=>{let b=m%l,_=Math.floor(m/l),v=c+b*(s+r),S=c+_*(s+r),w=i?.4+i.norm[m]*.6:1;return this.diagramTile(p,v,S,s,t,w)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${f} ${g}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${k}</svg></figure>`}renderDiagramConnector(e,n,a,t,o,s,r){let c=o??120,i=24,l=130,u=18,f=a.find(W=>W.to==="thickness"),g=a.find(W=>W.to==="opacity"),k=n.length,p=k*c+(k-1)*i,m=u*2+p,b=u*2+c+l+c,_=u,v=u+(p-c)/2,S=u+c+l,w=`kan-arrow-${this.diagramArrowSeq++}`,x=[],I=[],F=[];n.forEach((W,T)=>{let O=u+T*(c+i),V=_+c,ee=v+c/2,ce=S-pe,K=O+c/2,H=(V+S)/2,$=f?1.5+f.norm[T]*5.5:2,y=g?.4+g.norm[T]*.6:1,U=g?` stroke-opacity="${y.toFixed(2)}"`:"";x.push(`<path d="M${V.toFixed(1)},${ee.toFixed(1)} C${H.toFixed(1)},${ee.toFixed(1)} ${H.toFixed(1)},${K.toFixed(1)} ${ce.toFixed(1)},${K.toFixed(1)}" class="kan-diagram-edge" fill="none" stroke="var(--kan-border)" stroke-width="${$.toFixed(1)}"${U} marker-end="url(#${w})"/>`);let j=this.edgeText(s,W,r);j&&I.push(this.edgeLabelEl((V+S)/2,(ee+K)/2-5,j)),F.push(this.diagramTile(W,S,O,c,t,g?y:1))});let D=this.diagramTile(e,_,v,c,t);return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${b.toFixed(0)} ${m.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(w,"var(--kan-border)")}${x.join("")}${I.join("")}${D}${F.join("")}</svg></figure>`}arrowMarkerDef(e,n){return`<defs><marker id="${e}" viewBox="0 0 ${pe} ${pe}" refX="0" refY="${(pe/2).toFixed(1)}" markerWidth="${pe}" markerHeight="${pe}" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,1 L${pe},${(pe/2).toFixed(1)} L0,${pe-1}" fill="${n}"/></marker></defs>`}renderDiagramDag(e,n,a,t,o,s,r){let c=o??110,i=110,l=22,u=18,f=new Map(e.map(($,y)=>[$.name,y])),g=new Set(e.map($=>$.name)),k=new Map(e.map($=>[$.name,[]])),p=new Map(e.map($=>[$.name,[]]));for(let $ of e)for(let y of this.readPropertyValueReferences($,n)){let U=y.subject.name;U!==$.name&&g.has(U)&&(k.get($.name).push(U),p.get(U).push($.name))}let m=new Map,b=new Set,_=$=>{let y=m.get($);if(y!==void 0)return y;if(b.has($))return 0;b.add($);let U=0;for(let j of p.get($)??[])U=Math.max(U,_(j)+1);return b.delete($),m.set($,U),U};for(let $ of e)_($.name);let v=Math.min(...m.values());if(v>0)for(let $ of[...m.keys()])m.set($,m.get($)-v);let S=Math.max(0,...m.values()),w=Array.from({length:S+1},()=>[]);for(let $ of e)w[m.get($.name)].push($);let x=Math.max(1,...w.map($=>$.length)),I=!1;for(let[$,y]of k)for(let U of y)m.get(U)<=m.get($)&&(I=!0);let F=I?84:0,D=x*c+(x-1)*l,W=u*2+(S+1)*c+S*i,T=u*2+F+D,O=new Map;w.forEach(($,y)=>{let U=$.length*c+($.length-1)*l,j=u+F+(D-U)/2;$.forEach((C,X)=>O.set(C.name,{x:u+y*(c+i),y:j+X*(c+l)}))});let V=a.find($=>$.to==="thickness"),ee=`kan-arrow-${this.diagramArrowSeq++}`,ce=[],K=[];for(let[$,y]of k){let U=O.get($);for(let j of y){let C=O.get(j),X=C.x>=U.x,se=V?1.5+V.norm[f.get($)]*4.5:2,Z,ne,te;if(X){let J=U.x+c,ve=U.y+c/2,be=C.x-pe,xe=C.y+c/2,Se=(J+be)/2;Z=`M${J.toFixed(1)},${ve.toFixed(1)} C${Se.toFixed(1)},${ve.toFixed(1)} ${Se.toFixed(1)},${xe.toFixed(1)} ${be.toFixed(1)},${xe.toFixed(1)}`,ne=(J+be)/2,te=(ve+xe)/2-5}else{let J=U.x+c/2,ve=U.y,be=C.x+c/2,xe=C.y-pe,Se=u+F*.2;Z=`M${J.toFixed(1)},${ve.toFixed(1)} C${J.toFixed(1)},${Se.toFixed(1)} ${be.toFixed(1)},${Se.toFixed(1)} ${be.toFixed(1)},${xe.toFixed(1)}`,ne=(J+be)/2,te=Se+4}let he=X?"":' stroke-dasharray="6 4"';ce.push(`<path d="${Z}" class="kan-diagram-edge" fill="none" stroke="var(--kan-accent)" stroke-width="${se.toFixed(1)}" stroke-opacity="0.75"${he} marker-end="url(#${ee})"/>`);let de=this.edgeText(s,e[f.get($)],r);de&&K.push(this.edgeLabelEl(ne,te,de))}}let H=e.map($=>{let y=O.get($.name);return this.diagramTile($,y.x,y.y,c,t)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${W.toFixed(0)} ${T.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(ee,"var(--kan-accent)")}${ce.join("")}${K.join("")}${H}</svg></figure>`}diagramTile(e,n,a,t,o,s=1){let r=this.hrefForSubject(e,o),c=this.svgUrlForSubject(e,o),i=A(this.catalog,e).label,l=s<1?` opacity="${s.toFixed(2)}"`:"";return`<a href="${d(r)}"><image href="${d(c)}" x="${n}" y="${a}" width="${t}" height="${t}"${l}><title>${d(i)}</title></image></a>`}renderStatRow(e,n){let a=P(e,ta),t=this.gatherValueItems(a).filter(s=>s instanceof q);if(t.length===0)return"<!-- LookRenderer.StatRow: no look.stats -->";let o=[];for(let s of t){let r=L(s,aa);if(!r)continue;let c=this.resolvePath(n,r);if(c===void 0)continue;let i=L(s,sa)??"";o.push('<div class="kan-stat">'+(i?`<span class="kan-stat-label">${d(i)}</span>`:"")+`<span class="kan-stat-val">${d(c)}</span></div>`)}return o.length===0?"":`<div class="kan-stat-row">${o.join("")}</div>`}renderHorizon(e,n,a){let t=M(e,ae);if(!t)return"<!-- LookRenderer.Horizon: no look.source -->";let o=this.gatherValueItems(P(n,t)).filter(r=>r instanceof q);return o.length===0?"":`<section class="kan-horizon">${o.map(r=>this.renderConditionNode(r,a,0)).join("")}</section>`}renderConditionNode(e,n,a){let t=Ke(e),o=t?this.readLabelForUri({publisher:t.publisher,package_:t.package_,name:t.name})??t.name:"Condition",s=[],r=[];for(let f of e.statement){let g=f.predicate?.subject;if(!g||g.name==="type")continue;let k=this.readLabelForUri({publisher:g.publisher,package_:g.package_,name:g.name})??g.name;if(f instanceof Q||f instanceof $e||f instanceof ue)s.push(`<div class="kan-cond-field"><span class="kan-cond-key">${d(k)}</span><span class="kan-cond-v">${d(String(f.object))}</span></div>`);else if(f instanceof N&&f.object instanceof E){let p=f.object.subject,m=this.readLabelForUri({publisher:p.publisher,package_:p.package_,name:p.name})??p.name;s.push(`<div class="kan-cond-field"><span class="kan-cond-key">${d(k)}</span><span class="kan-cond-v">${d(m)}</span></div>`)}else if(f instanceof oe)r.push(this.renderConditionNode(f.object,n,a+1));else if(f instanceof Y)for(let p of f.object??[])p instanceof q&&r.push(this.renderConditionNode(p,n,a+1))}let c=s.length?`<div class="kan-cond-fields">${s.join("")}</div>`:"",i=r.length?`<div class="kan-cond-children">${r.join("")}</div>`:"",l=r.length>0,u=l?`<span class="kan-cond-op">${d(o)}</span>`:`<div class="kan-cond-type">${d(o)}</div>`;return`<div class="kan-cond ${l?"kan-cond-branch":"kan-cond-leaf"}">${u}${c}${i}</div>`}renderSectionHeading(e){let n=e,a=L(n,mn);if(!a)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let t=L(n,Yt);return`<div class="kan-section" id="${Kn(a)}"><h2 class="kan-section-title">${d(a)}</h2>`+(t?`<p class="kan-section-note">${d(t)}</p>`:"")+"</div>"}renderSectionNav(e){return e.length===0?"<!-- LookRenderer.SectionNav: no section headings in this view -->":`<nav class="kan-section-nav" aria-label="On this page">${e.map(a=>`<a class="kan-section-nav-link" href="#${d(a.slug)}">${d(a.label)}</a>`).join("")}</nav>`}renderVersionDelta(e,n){let t=L(e,Te);if(!t)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let o=T=>{let O=this.resolvePath(T,t),V=O===void 0?NaN:parseFloat(O);return Number.isFinite(V)?V:void 0},s=o(n);if(s===void 0)return"";let r=T=>le((T.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},c=(T,O)=>T.major-O.major||T.minor-O.minor||T.patch-O.patch,i={publisher:B(n),package_:(n.namespace||"").split("/")[1]?.split("@")[0]??"",name:n.name},l=r(n),u,f;for(let T of ke(this.catalog,i)){let O=r(T);c(O,l)<0&&(!f||c(O,f)>0)&&(u=T,f=O)}if(!u||!f)return'<div class="kan-delta kan-delta-first">First tracked in this version</div>';let g=o(u);if(g===void 0)return"";let k=s-g,p=Math.abs(k)<.005?"flat":k>0?"up":"down",m=p==="up"?"\u25B2":p==="down"?"\u25BC":"\u2014",b=p==="up"?"#34d399":p==="down"?"#f87171":"var(--kan-text-faint)",_=`${f.major}.${f.minor}.${f.patch}`,v=320,S=46,w=14,x=30,I=T=>w+Math.min(1,Math.max(0,T))*(v-2*w),F=I(g),D=I(s),W=`<svg class="kan-delta-track" viewBox="0 0 ${v} ${S}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${w}" y1="${x}" x2="${v-w}" y2="${x}" class="kan-delta-base"/><line x1="${F.toFixed(1)}" y1="${x}" x2="${D.toFixed(1)}" y2="${x}" stroke="${b}" stroke-width="3"/><circle cx="${F.toFixed(1)}" cy="${x}" r="4" class="kan-delta-prev"/><circle cx="${D.toFixed(1)}" cy="${x}" r="5.5" fill="${b}"/><text x="${F.toFixed(1)}" y="${x-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${g.toFixed(2)}</text><text x="${D.toFixed(1)}" y="${x+17}" text-anchor="middle" class="kan-delta-tick">${s.toFixed(2)}</text></svg>`;return`<div class="kan-delta"><div class="kan-delta-head"><span class="kan-delta-vs">vs ${d(_)}</span><span class="kan-delta-badge ${p}">${k>0?"+":""}${k.toFixed(2)} ${m}</span></div>`+W+"</div>"}renderTimePlot(e,n,a){let t=M(e,ae),o=M(e,Xe);if(!t||!o)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let s=e,r=L(s,na),c=L(s,hn),i=[];for(let K of this.readPropertyValueReferences(n,t)){let H=G(this.catalog,{publisher:K.subject.publisher,package_:K.subject.package_,name:K.subject.name,...K.subject.version?{version:K.subject.version}:{}});if(!H)continue;let $=this.readPropertyValueText(H,o)??"",y=Date.parse($);if(!Number.isFinite(y))continue;let U=r?this.resolvePath(H,r)??"":"",j=(c?this.resolvePath(H,c):void 0)??A(this.catalog,H).label;i.push({t:y,dateStr:$,lane:U,label:j,href:this.hrefForSubject(H,a),linkable:this.isLinkable(B(H),a)})}if(i.length===0)return"<!-- LookRenderer.TimePlot: no dated points -->";let l=[];for(let K of i)l.includes(K.lane)||l.push(K.lane);let u=Math.min(...i.map(K=>K.t)),f=Math.max(...i.map(K=>K.t));f===u&&(f=u+1);let g=l.some(K=>K),k=720,p=g?96:16,m=18,b=12,_=24,v=36,S=b+l.length*v+_,w=p,x=k-m,I=x-w,F=K=>w+(K-u)/(f-u)*I,D=K=>b+K*v+v/2,W=K=>Math.round(K*360/Math.max(1,l.length)),T=[];l.forEach((K,H)=>{let $=D(H);T.push(`<line x1="${w}" y1="${$.toFixed(1)}" x2="${x}" y2="${$.toFixed(1)}" class="kan-plot-guide"/>`),K&&T.push(`<text x="${(p-8).toFixed(1)}" y="${($+4).toFixed(1)}" text-anchor="end" class="kan-plot-lane">${me(K)}</text>`)});let O={},V=[];for(let K of i){let H=l.indexOf(K.lane),y=((O[K.lane]=(O[K.lane]??0)+1)%3-1)*7,U=F(K.t),j=D(H)+y,C=`${Ae(K.dateStr)} \xB7 ${K.label}`,X=`<circle cx="${U.toFixed(1)}" cy="${j.toFixed(1)}" r="5" fill="hsl(${W(H)},65%,60%)" class="kan-plot-pt"><title>${me(C)}</title></circle>`;V.push(K.linkable?`<a href="${d(K.href)}" class="kan-plot-link">${X}</a>`:X)}let ee=`<text x="${w}" y="${(S-6).toFixed(1)}" text-anchor="start" class="kan-plot-axis">${me(Ae(new Date(u).toISOString()))}</text><text x="${x}" y="${(S-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${me(Ae(new Date(f).toISOString()))}</text>`;return`<section class="kan-plot">${`<svg class="kan-plot-svg" viewBox="0 0 ${k} ${S}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+T.join("")+V.join("")+ee+"</svg>"}</section>`}renderDetails(e,n,a){let t=nn(e,Qt),o=this.detailRows(n,a,t);return o?`<dl class="kan-details">${o}</dl>`:"<!-- LookRenderer.Details: no properties -->"}detailRows(e,n,a){let t=[];for(let o of e.statement){let s=o.predicate?.subject;if(!s||this.isMetaPredicate(s)||a.some(i=>R(i,s)))continue;let r=this.readLabelForUri({publisher:s.publisher,package_:s.package_,name:s.name})??s.name,c=this.detailValue(o,n,a);c&&t.push(`<dt class="kan-details-key">${d(r)}</dt><dd class="kan-details-val">${c}</dd>`)}return t.join("")}detailValue(e,n,a){if(e instanceof Q)return Ln(e.object);if(e instanceof $e||e instanceof ue)return d(String(e.object));if(e instanceof N&&e.object instanceof E)return this.detailReferenceLink(e.object,n);if(e instanceof oe)return this.detailEmbedded(e.object,n,a);if(e instanceof Y){let t=e.object??[];return t.length>0&&t.every(o=>o instanceof q)?t.map(o=>this.detailEmbedded(o,n,a)).join(""):t.map(o=>o instanceof E?this.detailReferenceLink(o,n):o instanceof q?this.detailEmbedded(o,n,a):d(String(o))).filter(o=>o).join(", ")}return""}detailReferenceLink(e,n){let a=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name;if(!this.isLinkable(e.subject.publisher,n))return`<span class="kan-link-plain">${d(a)}</span>`;let t=this.urlForReference(e,void 0,n);return`<img class="kan-md-chip" src="${d(`${t}.svg`)}" alt="" loading="lazy"><a class="kan-link" href="${d(t)}">${d(a)}</a>`}detailEmbedded(e,n,a){let t=Ke(e),o=t?this.readLabelForUri({publisher:t.publisher,package_:t.package_,name:t.name})??t.name:"",s=this.detailRows(e,n,a);return'<div class="kan-details-embed">'+(o?`<span class="kan-details-type">${d(o)}</span>`:"")+(s?`<dl class="kan-details">${s}</dl>`:"")+"</div>"}rangeTypeRefs(e){let n=G(this.catalog,e);if(!n)return[];let a=P(n,An);return a instanceof N&&a.object instanceof E?[a.object]:[]}renderEmbeddedViews(e,n,a,t=""){let o=M(e,ae);if(!o)return"<!-- LookRenderer: EmbeddedViews missing look.source -->";let s=this.gatherValueItems(P(n,o)).filter(g=>g instanceof q);if(s.length===0)return"";let r=t?`${t}.${o.name}`:o.name,c=P(e,_a),i=c instanceof ue?c.object===!0:c instanceof Q&&c.object==="true",l=[],u=s.map(g=>{let k=g,p=g.name?`${r}.${g.name}`:"";if(i&&p){let x=A(this.catalog,k).label||g.name||p;l.push(`<a class="kan-section-nav-link" href="#${d(p)}">${d(x)}</a>`)}let m=ie(k),b=m.length>0?m:this.rangeTypeRefs(o),_=Ce(k)?this.findCascadedLook(k):this.lookFromTypeRefs(b),v="";if(_)v=en(_.declaration).map(x=>this.renderBand(x,k,a,[],p)).join(`
124
+ `);else{let x=this.detailRows(g,a,[]);v=x?`<dl class="kan-details">${x}</dl>`:""}let S=p?` id="${d(p)}"`:"",w=p?this.anchorLink(p):"";return`<section class="kan-embedded-view"${S}>${w}${v}</section>`});return`<div class="kan-embedded-views">${l.length>0?`<nav class="kan-section-nav" aria-label="On this page">${l.join("")}</nav>
125
+ `:""}${u.join(`
126
+ `)}</div>`}anchorLink(e){return`<a class="kan-anchor" href="#${d(e)}" title="${d(e)}" aria-label="Link to this resource">#</a>`}isMetaPredicate(e){return R(e,fa)||R(e,ze)||R(e,fn)||R(e,Me)||R(e,De)||R(e,ea)||R(e,_n)||R(e,Bt)}renderPackageContents(e,n){let a=e.namespace||"";if(!a)return"";let t=this.catalog.filter(s=>s instanceof re&&s.namespace===a&&s.name!==e.name);return t.length===0?`<!-- LookRenderer.PackageContents: no members in ${a} -->`:(t.sort((s,r)=>{let c=A(this.catalog,s).label,i=A(this.catalog,r).label;return c.localeCompare(i)}),`<section class="kan-pkg-grid">${t.map(s=>{let r=A(this.catalog,s),c=r.label,i=r.summary,l=i?tn(i,160):"",u=this.hrefForSubject(s,n),f=this.svgUrlForSubject(s,n);return`<a class="kan-pkg-card" href="${d(u)}"><img class="kan-pkg-card-svg" src="${d(f)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${d(c)}</span>`+(l?`<span class="kan-pkg-card-comment">${d(l)}</span>`:"")+"</span></a>"}).join("")}</section>`)}renderReferencedBy(e,n,a){let t=M(e,ha),o={publisher:B(n),package_:(n.namespace||"").split("/")[1]?.split("@")[0]??"",name:n.name},s=z(o),r=f=>le((f.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},c=(f,g)=>f.major-g.major||f.minor-g.minor||f.patch-g.patch,i=new Map;for(let f of this.catalog){if(!(f instanceof re))continue;let g=z({publisher:B(f),package_:(f.namespace||"").split("/")[1]?.split("@")[0]??"",name:f.name});if(g!==s)for(let k of f.statement){let p=k.predicate?.subject;if(!p||p.name==="type"||t&&z(p)!==z(t))continue;let m=[];if(k instanceof N&&k.object instanceof E)m.push(k.object);else if(k instanceof Y)for(let S of k.object??[])S instanceof E&&m.push(S);if(!m.some(S=>z(S.subject)===s))continue;let b=z(p),_=i.get(b);_||(_={label:this.readLabelForUri(p)??p.name,best:new Map},i.set(b,_));let v=_.best.get(g);(!v||c(r(f),r(v))>0)&&_.best.set(g,f)}}return i.size===0?"<!-- LookRenderer.ReferencedBy: no incoming references -->":`<div class="kan-section"><h2 class="kan-section-title">Referenced by</h2></div>${[...i.values()].sort((f,g)=>f.label.localeCompare(g.label)).map(f=>{let k=[...f.best.values()].sort((p,m)=>A(this.catalog,p).label.localeCompare(A(this.catalog,m).label)).map(p=>this.resourceCard(p,a,n.namespace??void 0)).join("");return`<div class="kan-rel-group"><h3 class="kan-rel-prop"><span class="kan-rel-dir" title="incoming \u2014 references this resource">\u2190</span> ${d(f.label)}</h3><section class="kan-pkg-grid">${k}</section></div>`}).join("")}`}resourceCard(e,n,a){let t=A(this.catalog,e),o=t.summary?tn(t.summary,160):"",s=ie(e).map(m=>this.readLabelForUri({publisher:m.subject.publisher,package_:m.subject.package_,name:m.subject.name})??m.subject.name),c='<span class="kan-pkg-card-body">'+(s.length>0?`<span class="kan-card-types">${s.map(m=>`<span class="kan-card-type">${d(m)}</span>`).join("")}</span>`:"")+`<span class="kan-pkg-card-title">${d(t.label)}</span>`+(o?`<span class="kan-pkg-card-comment">${d(o)}</span>`:"")+"</span>",i=this.isLinkable(B(e),n),l=i?`<a class="kan-pkg-card-link" href="${d(this.hrefForSubject(e,n))}"><img class="kan-pkg-card-svg" src="${d(this.svgUrlForSubject(e,n))}" alt="" loading="lazy"/>`+c+"</a>":`<span class="kan-pkg-card-link">${c}</span>`,u=e.namespace||"",f=u.split("/")[0]??"",[g,k]=(u.split("/")[1]??"").split("@"),p="";if(g&&u!==a){let m=k?`<span class="kan-card-at">@</span><span class="kan-card-ver">${d(k)}</span>`:"";if(i){let b=`<span class="kan-card-pkg">${d(g)}</span>${m}`;p=`<a class="kan-pkg-card-foot" href="/${d(g)}${k?"/"+d(k):""}" title="${d(k?`${g}@${k}`:g)}">${b}</a>`}else{let b=`<span class="kan-card-pub">${d(f)}/</span><span class="kan-card-pkg">${d(g)}</span>${m}`;p=`<span class="kan-pkg-card-foot" title="${d(k?`${f}/${g}@${k}`:`${f}/${g}`)}">${b}</span>`}}return`<div class="kan-pkg-card kan-pkg-card--foot">${l}${p}</div>`}renderInstances(e,n,a){let t={publisher:B(n),package_:(n.namespace||"").split("/")[1]?.split("@")[0]??"",name:n.name},o=P(e,ja),s=o instanceof ue?o.object===!0:o instanceof Q&&o.object==="true",r=s?this.subclassClosure(t):new Set([z(t)]),c=b=>le((b.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},i=(b,_)=>b.major-_.major||b.minor-_.minor||b.patch-_.patch,l=new Map;for(let b of this.catalog){if(!(b instanceof re)||!ie(b).some(w=>r.has(z(w.subject))))continue;let v=z({publisher:B(b),package_:(b.namespace||"").split("/")[1]?.split("@")[0]??"",name:b.name}),S=l.get(v);(!S||i(c(b),c(S))>0)&&l.set(v,b)}let u=[...l.values()];if(u.length===0)return"<!-- LookRenderer.Instances: none -->";u.sort((b,_)=>A(this.catalog,b).label.localeCompare(A(this.catalog,_).label));let f=48,g=u.slice(0,f),k=g.map(b=>this.resourceCard(b,a,n.namespace??void 0)),p=u.length>f?` <span class="kan-count">${g.length} of ${u.length}</span>`:` <span class="kan-count">${u.length}</span>`;return`<div class="kan-section"><h2 class="kan-section-title">${s?"Instances (including subtypes)":"Instances"}${p}</h2></div><section class="kan-pkg-grid">${k.join("")}</section>`}subclassClosure(e){let n=new Set([z(e)]),a=!0;for(;a;){a=!1;for(let t of this.catalog){if(!(t instanceof re))continue;let o=z({publisher:B(t),package_:(t.namespace||"").split("/")[1]?.split("@")[0]??"",name:t.name});if(!n.has(o)){for(let s of Ee(t))if(n.has(z(s.subject))){n.add(o),a=!0;break}}}}return n}referencesTarget(e,n,a){for(let t of e.statement){let o=t.predicate?.subject;if(o?.name==="type"||a&&!(o&&z(o)===z(a)))continue;let s=[];if(t instanceof N&&t.object instanceof E)s.push(t.object);else if(t instanceof Y)for(let r of t.object??[])r instanceof E&&s.push(r);for(let r of s)if(z(r.subject)===n)return!0}return!1}renderFeaturedResource(e,n){let a=M(e,ae);if(!a)return"<!-- LookRenderer.FeaturedResource: no look.source -->";let t=ke(this.catalog,a),o=i=>le((i.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},s=t.length>0?t.slice().sort((i,l)=>{let u=o(i),f=o(l);return f.major-u.major||f.minor-u.minor||f.patch-u.patch})[0]:G(this.catalog,a);if(!s)return`<!-- LookRenderer.FeaturedResource: ${a.publisher}/${a.package_}/${a.name} not found -->`;let r=this.renderHtml(s),c=this.hrefForSubject(s,n);return`<section class="kan-featured"><a class="kan-featured-permalink" href="${d(c)}">View full resource \u2192</a>`+r+"</section>"}renderDistribution(e,n){let a=e,t=$=>{let y=L(a,$);if(!y)return;let U=this.resolvePath(n,y),j=U===void 0?NaN:parseFloat(U);return Number.isFinite(j)?j:void 0},o=t(Gt),s=t(zt);if(o===void 0||s===void 0||o<=0||s<=0)return"<!-- LookRenderer.Distribution: needs resolvable alphaPath + betaPath (> 0) -->";let r=t(Te)??o/(o+s),c=t($n),i=t(vn),l=t(Ze),u=l!==void 0?`hsl(${l},65%,60%)`:"var(--kan-accent)",f=$=>Number.isInteger($)?String($):$.toFixed(1),g=280,k=168,p={top:14,right:14,bottom:24,left:14},m=g-p.left-p.right,b=k-p.top-p.bottom,_=120,v=1e-4,S=[],w=[],x=0;for(let $=0;$<=_;$++){let y=$/_;y<v?y=v:y>1-v&&(y=1-v);let U=Math.exp((o-1)*Math.log(y)+(s-1)*Math.log(1-y));S.push(y),w.push(U),U>x&&(x=U)}let I=$=>p.left+Math.min(1,Math.max(0,$))*m,F=$=>p.top+(1-(x>0?$/x:0))*b,D=p.top+b,W=S.map(($,y)=>`${I($).toFixed(1)},${F(w[y]).toFixed(1)}`),T=`M${I(0).toFixed(1)},${D.toFixed(1)} L${W.join(" L")} L${I(1).toFixed(1)},${D.toFixed(1)} Z`,O="";if(c!==void 0&&i!==void 0&&i>c){let $=[`${I(c).toFixed(1)},${D.toFixed(1)}`];for(let y=0;y<=_;y++)S[y]>=c&&S[y]<=i&&$.push(`${I(S[y]).toFixed(1)},${F(w[y]).toFixed(1)}`);$.push(`${I(i).toFixed(1)},${D.toFixed(1)}`),O=`<path d="M${$.join(" L")} Z" fill="${u}" fill-opacity="0.3"/>`}let V=I(r),ee=`<line x1="${V.toFixed(1)}" y1="${p.top.toFixed(1)}" x2="${V.toFixed(1)}" y2="${D.toFixed(1)}" stroke="${u}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${V.toFixed(1)}" y="${(p.top-3).toFixed(1)}" text-anchor="middle" class="kan-dist-mean">\u03BC ${r.toFixed(2)}</text>`,ce=`<text x="${I(0).toFixed(1)}" y="${(D+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${I(1).toFixed(1)}" y="${(D+15).toFixed(1)}" text-anchor="end" class="kan-dist-axis">1</text>`,K=`<svg class="kan-dist-svg" viewBox="0 0 ${g} ${k}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${p.left}" y1="${D.toFixed(1)}" x2="${(g-p.right).toFixed(1)}" y2="${D.toFixed(1)}" class="kan-dist-base"/><path d="${T}" fill="${u}" fill-opacity="0.12"/>`+O+`<polyline points="${W.join(" ")}" fill="none" stroke="${u}" stroke-width="2"/>`+ee+ce+"</svg>",H=c!==void 0&&i!==void 0?` \xB7 95% CI [${c.toFixed(2)}\u2013${i.toFixed(2)}]`:"";return`<figure class="kan-dist">${K}<figcaption class="kan-dist-caption">Beta(${f(o)}, ${f(s)})${H}</figcaption></figure>`}renderPublisherPackages(e,n){let a=new Map;for(let c of this.catalog){if(!(c instanceof re)||B(c)!==n)continue;let i=(c.namespace||"").split("/")[1]?.split("@")[0]??"";if(!i||c.name!==i)continue;let l=a.get(i),u=le((c.namespace||"").split("@")[1]??""),f=l?le((l.namespace||"").split("@")[1]??""):void 0;(!l||u&&(!f||Ie(u,f)>0))&&a.set(i,c)}let t,o=P(e,Tt),s=o instanceof Y?o.object??[]:o instanceof N&&o.object instanceof E?[o.object]:[];if(s.length>0){t=[];for(let c of s){if(!(c instanceof E))continue;let i=c.subject.package_,l=a.get(i);l&&t.push([i,l])}}else t=[...a.entries()].sort((c,i)=>c[0].localeCompare(i[0]));return t.length===0?"":`<section class="kan-pkg-grid">${t.map(([c,i])=>{let l=A(this.catalog,i),u=l.label,f=l.summary,g=f?tn(f,160):"",k=this.svgUrlForSubject(i,n);return`<a class="kan-pkg-card" href="/${d(c)}"><img class="kan-pkg-card-svg" src="${d(k)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${d(u)}</span>`+(g?`<span class="kan-pkg-card-comment">${d(g)}</span>`:"")+"</span></a>"}).join("")}</section>`}renderTimeline(e,n){let a=M(e,ae);if(!a)return"<!-- LookRenderer.Timeline: no look.source -->";let t=M(e,Xe),o=this.findInstancesOfClass(a);if(o.length===0)return"<!-- LookRenderer.Timeline: no instances -->";let s=u=>t?this.readPropertyValueText(u,t)??"":"",r=o.slice().sort((u,f)=>s(u).localeCompare(s(f))),c=M(e,bn),i=L(e,Te);return c&&i?this.renderTrajectoryChart(r,c,i,e,n,s):`<section class="kan-timeline"><ol>
127
+ ${r.map(u=>{let f=u.namespace||"",g=f.split("/")[1]?.split("@")[0]??"",k=f.split("@")[1]??"",p=k?le(k):void 0,m=_e.formatResourceUrl({publisher:B(u),package_:g,name:u.name,...p?{version:p}:{}},"=",{contextPublisher:n}),b=s(u),_=b?`<span class="kan-timeline-date">${d(b)}</span>`:"",v=k||u.name;return`<li class="kan-timeline-node"><a href="${d(m)}"><span class="kan-timeline-key">${d(v)}</span>${_}</a></li>`}).join(`
128
+ `)}
129
+ </ol></section>`}renderTrajectoryChart(e,n,a,t,o,s){let r=t,c=L(r,Ze),i=L(r,$n),l=L(r,vn),u=L(r,ca),f=yn(r,ra),g=yn(r,ia),k=e.length,p=this.collectTrackedSeries(e,n,a,{hueBy:c,lowerPath:i,upperPath:l});if(p.length===0)return"<!-- LookRenderer.Timeline: no tracked series -->";let m=[];for(let j of p){for(let C of j.points)C!==null&&m.push(C);for(let C of j.lower??[])C!==null&&m.push(C);for(let C of j.upper??[])C!==null&&m.push(C)}if(m.length===0)return"<!-- LookRenderer.Timeline: no metric values -->";let b=Math.min(...m),_=Math.max(...m);_-b<1e-9&&(b-=.5,_+=.5);let v=(_-b)*.08,S=f!==void 0?f:b-v,w=g!==void 0?g:_+v;w-S<1e-9&&(w=S+1);let x=1e3,I=440,F={top:28,right:24,bottom:56,left:52},D=x-F.left-F.right,W=I-F.top-F.bottom,T=j=>k<=1?F.left+D/2:F.left+j/(k-1)*D,O=j=>F.top+(1-(j-S)/(w-S))*W,V=(j,C)=>j.hue!==void 0?j.hue:Math.round(C*360/p.length),ee=[];for(let j=0;j<5;j++){let C=S+j*(w-S)/4,X=O(C);ee.push(`<line x1="${F.left}" y1="${X.toFixed(1)}" x2="${(x-F.right).toFixed(1)}" y2="${X.toFixed(1)}" class="kan-fan-grid"/>`),ee.push(`<text x="${(F.left-8).toFixed(1)}" y="${(X+4).toFixed(1)}" class="kan-fan-axis" text-anchor="end">${C.toFixed(2)}</text>`)}let ce=[];e.forEach((j,C)=>{let X=this.hrefForSubject(j,o),se=(j.namespace||"").split("@")[1]??"",Z=T(C),ne=Ae(s(j));ce.push(`<a href="${d(X)}" class="kan-fan-xtick"><line x1="${Z.toFixed(1)}" y1="${F.top}" x2="${Z.toFixed(1)}" y2="${(I-F.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${Z.toFixed(1)}" y="${(I-F.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${me(se||j.name)}</text>`+(ne?`<text x="${Z.toFixed(1)}" y="${(I-F.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${me(ne)}</text>`:"")+"</a>")});let K=[];p.forEach((j,C)=>{if(!j.lower||!j.upper)return;let X=V(j,C),se=[],Z=[];for(let te=0;te<k;te++){let he=j.upper[te],de=j.lower[te];he==null||de===null||de===void 0||(se.push(`${T(te).toFixed(1)},${O(he).toFixed(1)}`),Z.unshift(`${T(te).toFixed(1)},${O(de).toFixed(1)}`))}let ne=se.concat(Z);ne.length<3||K.push(`<polygon class="kan-fan-band" points="${ne.join(" ")}" fill="hsl(${X},65%,60%)"/>`)});let H=[];p.forEach((j,C)=>{let se=`hsl(${V(j,C)},65%,60%)`,Z=[],ne=[];j.points.forEach((te,he)=>{if(te===null)return;let de=T(he),J=O(te);Z.push(`${de.toFixed(1)},${J.toFixed(1)}`),ne.push(`<circle cx="${de.toFixed(1)}" cy="${J.toFixed(1)}" r="3.5" fill="${se}"/>`)}),Z.length!==0&&H.push(`<g class="kan-fan-series" data-series="${d(j.key)}"><polyline points="${Z.join(" ")}" fill="none" stroke="${se}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`+ne.join("")+"</g>")});let $=`<svg class="kan-fan-svg" viewBox="0 0 ${x} ${I}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+ee.join("")+ce.join("")+K.join("")+H.join("")+"</svg>",y=u?`${d(u)}=`:"",U=p.map((j,C)=>{let X=V(j,C),se=j.points.filter(J=>J!==null),Z=se.length?se[0]:void 0,ne=se.length?se[se.length-1]:void 0,te="";if(ne!==void 0&&Z!==void 0){let J=ne-Z;if(Math.abs(J)>=.005){let ve=J>0?"up":"down",be=J>0?"\u25B2":"\u25BC";te=` <span class="kan-fan-delta ${ve}">${J>0?"+":""}${J.toFixed(2)} ${be}</span>`}else te=' <span class="kan-fan-delta flat">\u2014</span>'}let he=ne!==void 0?`${y}${ne.toFixed(2)}`:"\u2014",de=j.lastSubject&&this.isLinkable(B(j.lastSubject),o)?`<a href="${d(this.hrefForSubject(j.lastSubject,o))}">${d(j.label)}</a>`:d(j.label);return`<div class="kan-fan-legend-item" style="--kan-fan-hue:${X}"><span class="kan-fan-swatch"></span><span class="kan-fan-legend-label">${de}</span><span class="kan-fan-legend-cur">${he}${te}</span></div>`});return`<section class="kan-fan"><div class="kan-fan-chart">${$}</div><div class="kan-fan-legend">${U.join("")}</div></section>`}renderResourceGrid(e,n,a){let t=M(e,ae);if(!t)return"<!-- LookRenderer.ResourceGrid: no look.source -->";let o=G(this.catalog,t),s=o?ie(o).some(i=>{let l=i.subject.name;return l==="ObjectProperty"||l==="DatatypeProperty"||l==="Property"}):!1,r=[];if(s&&a){let i=this.readPropertyValueReferences(a,t);for(let l of i){let u=G(this.catalog,{publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name,...l.subject.version?{version:l.subject.version}:{}});u&&r.push(u)}}else r=this.findInstancesOfClass(t);if(r.length===0)return`<!-- LookRenderer.ResourceGrid: no resources for ${t.publisher}/${t.package_}/${t.name} -->`;let c=[];for(let i of r){let l=A(this.catalog,i),u=l.label,f=l.summary,g=i.namespace||"",k=g.split("/")[1]?.split("@")[0]??"",p=g.split("@")[1]??"",m=p?le(p):void 0,b=_e.formatResourceUrl({publisher:B(i),package_:k,name:i.name,...m?{version:m}:{}},"=",{contextPublisher:n}),_=f?`<p class="kan-resource-card-subtitle">${d(f)}</p>`:"",v=`<h3 class="kan-resource-card-title">${d(u)}</h3>${_}`;c.push(this.isLinkable(B(i),n)?`<a class="kan-resource-card" href="${d(b)}">${v}</a>`:`<span class="kan-resource-card">${v}</span>`)}return`<section class="kan-resource-grid">
130
+ ${c.join(`
131
+ `)}
132
+ </section>`}findInstancesOfClass(e){let n=[];for(let a of this.catalog){if(!(a instanceof re))continue;ie(a).map(s=>s.subject).some(s=>s.publisher===e.publisher&&s.package_===e.package_&&s.name===e.name)&&n.push(a)}return n}renderBreadcrumb(e,n,a){let o=(e.namespace||"").split("/");if(o.length<2)return"";let s=o[0],r=o[1]??"",c=r.split("@")[0]??"",i=r.split("@")[1]??"";if(!s||!c)return"";if(a?.bareOverview)return`<nav class="kan-breadcrumb"><ol>
133
+ <li><a href="/">${d(s)}</a></li>
134
+ <li aria-current="page">${d(c)}</li>
135
+ </ol></nav>`;let l=e.name,f=!!G(this.catalog,{publisher:s,package_:c,name:c}),g=i?`${c}@${i}`:c,k=i?`/${c}/${i}/${c}`:`/${c}/${c}`,p=e.name===c,m=[];return m.push(`<li><a href="/">${d(s)}</a></li>`),p?m.push(`<li aria-current="page">${d(g)}</li>`):(m.push(f?`<li><a href="${d(k)}">${d(g)}</a></li>`:`<li>${d(g)}</li>`),m.push(`<li aria-current="page">${d(l)}</li>`)),`<nav class="kan-breadcrumb"><ol>
136
+ ${m.join(`
137
+ `)}
138
+ </ol></nav>`}renderNavGroup(e,n){let a=P(this.publisherSubject(n),qn),t=a instanceof Y?a.object??[]:a instanceof N&&a.object instanceof E?[a.object]:[];if(t.length===0)return"";let o=[];for(let s of t){if(!(s instanceof E))continue;let r=G(this.catalog,{publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name}),{href:c,label:i}=this.resolveNavEntry(s,r,n),l=`/${e.namespace?.split("/")[1]?.split("@")[0]}/${(e.namespace||"").split("@")[1]}/${e.name}`,u=c===l?' aria-current="page"':"";o.push(`<li><a class="kan-nav-link" href="${d(c)}"${u}>${d(i)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
139
+ ${o.join(`
140
+ `)}
141
+ </ul></nav>`}renderSiteFooter(e){let n=P(this.publisherSubject(e),Xn),a;if(n instanceof oe?a=n.object:n instanceof N&&n.object instanceof E&&(a=G(this.catalog,{publisher:n.object.subject.publisher,package_:n.object.subject.package_,name:n.object.subject.name})),!a)return"";let t=L(a,Zn),o=P(a,Jn),s=o instanceof Y?o.object??[]:o instanceof N&&o.object instanceof E?[o.object]:[],r=[];for(let i of s){if(!(i instanceof E))continue;let l=G(this.catalog,{publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name}),{href:u,label:f}=this.resolveNavEntry(i,l,e);r.push(`<a class="kan-footer-link" href="${d(u)}">${d(f)}</a>`)}if(!t&&r.length===0)return"";let c=[];return r.length>0&&c.push(`<div class="kan-footer-links">${r.join("")}</div>`),t&&c.push(`<p class="kan-footer-text">${d(t)}</p>`),`<footer class="kan-site-footer">${c.join(`
142
+ `)}</footer>`}resolveNavEntry(e,n,a){if(n&&ie(n).map(c=>c.subject).some(c=>c.publisher===We.publisher&&c.package_===We.package_&&c.name===We.name)){let c=L(n,ze),i=P(n,kn);if(i instanceof N&&i.object instanceof E){let l=i.object,u=this.readLabelForUri({publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name});return{href:this.urlForReference(l,kn,a),label:c??u??l.subject.name}}}let t=_e.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},"*",{contextPublisher:a}),o=n?A(this.catalog,n).label:e.subject.name;return{href:t,label:o}}codeHighlighter(){return this._codeHighlighter||(this._codeHighlighter=new Fe(this.collectGrammars())),this._codeHighlighter}collectGrammars(){let e=[];for(let n of this.catalog){if(!(n instanceof re)||!ie(n).some(r=>R(r.subject,Ct)))continue;let a=L(n,At);if(!a)continue;let t=P(n,Mt),o=t instanceof Y?t.object??[]:[],s=[];for(let r of o){if(!(r instanceof q))continue;let c=M(r,Dt),i=L(r,Nt);!c||!i||s.push({tokenClass:c.name,pattern:i})}e.push({language:a,rules:s})}return e}renderLinks(e,n){let a=M(e,ae);if(!a)return"";let t=P(n,a),o=[];t instanceof Y?o=t.object??[]:t instanceof oe?o=[t.object]:t instanceof N&&t.object instanceof E&&(o=[t.object]);let s=[];for(let r of o){let c;if(r instanceof q?c=r:r instanceof E&&(c=G(this.catalog,{publisher:r.subject.publisher,package_:r.subject.package_,name:r.subject.name})),!c)continue;let i=L(c,Vt);if(!i)continue;let l=L(c,ze)??i,u=L(c,fn),f=u?` title="${d(u)}"`:"";s.push(`<a class="kan-extlink" href="${d(i)}"${f} target="_blank" rel="noopener noreferrer">${d(l)}</a>`)}return s.length===0?"":`<section class="kan-extlink-row">${s.join("")}</section>`}renderMarkdown(e,n,a){let t=M(e,ae);if(!t)return"<!-- LookRenderer.Markdown: no look.source -->";let o=P(n,t),s=new Map,r;if(o instanceof Ue?r=this.resolveMarkdownLinks(o,a,s):o instanceof Q?r=o.object:r=this.readPropertyValueText(n,t),!r)return"";let c=this.codeHighlighter(),i=Ge(r,{highlight:(l,u)=>c.highlight(l,u)});for(let[l,u]of s){let f=new RegExp('(<a href="'+xn(l)+'">)([^<]*)(</a>)',"g");i=i.replace(f,`$1<img class="kan-md-chip" src="${d(u)}" alt="" loading="lazy">$2$3`)}return`<section class="kan-markdown">
143
+ ${i}
144
+ </section>`}resolveMarkdownLinks(e,n,a){let t=e.object,o=[...e.links].sort((s,r)=>r.startOffset-s.startOffset);for(let s of o){let r;if(s.target&&this.isLinkable(s.target.subject.publisher,n)){let c=s.target.subject,i=(s.displayText??this.readLabelForUri({publisher:c.publisher,package_:c.package_,name:c.name})??s.reference).replace(/[[\]]/g,""),l=_e.formatResourceUrl({publisher:c.publisher,package_:c.package_,name:c.name,...c.version?{version:c.version}:{}},"=",{contextPublisher:n});a&&a.set(l,`${l}.svg`),r=`[${i}](${l})`}else if(s.target){let c=s.target.subject;r=(s.displayText??this.readLabelForUri({publisher:c.publisher,package_:c.package_,name:c.name})??s.reference).replace(/[[\]]/g,"")}else r=s.displayText??s.reference;t=t.slice(0,s.startOffset)+r+t.slice(s.endOffset)}return t}renderRawMarkdown(e){let n=this.findCascadedLook(e);if(!n)return;let a=en(n.declaration),t=[];for(let o of a){let s=Ke(o);if(!s||!R(s,gn))continue;let r=M(o,ae);if(!r)continue;let c=this.readPropertyValueText(e,r);c&&t.push(c)}return t.length>0?t.join(`
145
+
146
+ `):void 0}renderHero(e,n,a){let t=p=>{let m=P(e,p);return m instanceof ue?m.object===!0:m instanceof Q&&m.object==="true"},o=t(va),s=!o&&t($a),r=o||s,i=[`<header class="${o?"kan-hero kan-hero-has-avatar":s?"kan-hero kan-hero-has-icon":"kan-hero"}">`];if(r){let p=this.svgUrlForSubject(n,a),m=o?"kan-hero-avatar":"kan-hero-icon";i.push(`<img class="${m}" src="${d(p)}" alt="" loading="lazy"/>`),i.push('<div class="kan-hero-text">')}let l=M(e,ka);if(l){let p=this.readPropertyValueText(n,l);p&&i.push(`<span class="kan-hero-eyebrow">${d(Ne(p)??p)}</span>`)}let u=M(e,ga),f="";u&&(f=this.readPropertyValueText(n,u)??""),f||(f=A(this.catalog,n).label),i.push(`<h1 class="kan-hero-title">${d(Ne(f)??f)}</h1>`);let g=M(e,ma);if(g){let p=this.readPropertyValueText(n,g);p&&i.push(`<p class="kan-hero-subtitle">${d(Ne(p)??p)}</p>`)}let k=M(e,Sn);if(k){let p=this.readPropertyValueReferences(n,k);if(p.length>0){let m=p.map(b=>this.renderBadge(b,Sn,a)).join("");i.push(`<div class="kan-hero-badges">${m}</div>`)}}return r&&i.push("</div>"),i.push("</header>"),i.join(`
147
+ `)}renderPropertyList(e,n,a){let t=M(e,ae);if(!t)return"<!-- LookRenderer: PropertyList missing look.source -->";let o=this.readLabelForUri(t)??t.name,s=P(n,t),r=this.gatherValueItems(s),c=r.length>0?r.map(i=>`<li>${this.renderInlineValue(i,ae,a)}</li>`).join(""):'<li class="kan-empty">(no values)</li>';return['<section class="kan-property-list">',`<h3 class="kan-property-list-title">${d(o)}</h3>`,`<ul class="kan-property-list-items">${c}</ul>`,"</section>"].join(`
148
+ `)}renderPropertyTable(e,n,a,t=""){let o=M(e,ae);if(!o)return"<!-- LookRenderer: PropertyTable missing look.source -->";let s=this.gatherValueItems(P(n,o)).filter(i=>i instanceof q);if(s.length===0)return"";let r=this.readLabelForUri(o)??o.name,c=t?`${t}.${o.name}`:o.name;return this.renderEmbeddedTable(s,a,r,c)}renderEmbeddedTable(e,n,a,t){let o=[],s=new Set;for(let p of e)for(let m of p.statement){let b=m.predicate?.subject;if(!b||this.isMetaPredicate(b))continue;let _=`${b.publisher}/${b.package_}/${b.name}`;s.has(_)||(s.add(_),o.push({uri:{publisher:b.publisher,package_:b.package_,name:b.name},label:this.readLabelForUri(b)??b.name}))}if(o.length===0)return"";let r=e.map(p=>A(this.catalog,p).label),c=e.some((p,m)=>r[m]!==""&&r[m]!==p.name),i=!!t,l=(i?'<th class="kan-anchor-col"></th>':"")+(c?"<th></th>":"")+o.map(p=>`<th>${d(p.label)}</th>`).join(""),u=e.map((p,m)=>{let b=i&&p.name?`${t}.${p.name}`:"",_=b?` id="${d(b)}"`:"",v=i?`<td class="kan-anchor-col">${b?this.anchorLink(b):""}</td>`:"",S=c?`<th scope="row">${d(r[m]??"")}</th>`:"",w=o.map(x=>{let I=P(p,x.uri);return`<td>${I?this.tableCellValue(I,n):""}</td>`}).join("");return`<tr${_}>${v}${S}${w}</tr>`}).join(""),f=i&&t?` id="${d(t)}"`:"",g=i&&t?this.anchorLink(t):"",k=a?`<caption>${d(a)}${g}</caption>`:"";return`<table class="kan-property-table"${f}>${k}<thead><tr>${l}</tr></thead><tbody>${u}</tbody></table>`}tableCellValue(e,n){if(e instanceof Ue)return this.statementToMarkdownHtml(e,n);if(e instanceof Q)return Ln(e.object);if(e instanceof $e||e instanceof ue)return d(String(e.object));if(e instanceof N&&e.object instanceof E)return this.detailReferenceLink(e.object,n);if(e instanceof oe)return this.renderEmbeddedTable([e.object],n);if(e instanceof Y){let a=e.object??[],t=a.filter(o=>o instanceof q);return t.length>0&&t.length===a.length?this.renderEmbeddedTable(t,n):a.map(o=>o instanceof E?this.detailReferenceLink(o,n):o instanceof q?this.renderEmbeddedTable([o],n):d(String(o))).filter(o=>o).join(", ")}return""}statementToMarkdownHtml(e,n){let a=new Map,t;if(e instanceof Ue?t=this.resolveMarkdownLinks(e,n,a):e instanceof Q&&(t=e.object),!t)return"";let o=this.codeHighlighter(),s=Ge(t,{highlight:(r,c)=>o.highlight(r,c)});for(let[r,c]of a){let i=new RegExp('(<a href="'+xn(r)+'">)([^<]*)(</a>)',"g");s=s.replace(i,`$1<img class="kan-md-chip" src="${d(c)}" alt="" loading="lazy">$2$3`)}return s}renderBadgeRow(e,n,a){let t=M(e,ae);if(!t)return"<!-- LookRenderer: BadgeRow missing look.source -->";let o=this.readPropertyValueReferences(n,t);return o.length===0?"":`<div class="kan-badge-row">${o.map(r=>this.renderBadge(r,ae,a)).join("")}</div>`}renderChipRow(e,n,a){let t=nn(e,Sa);if(t.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let o=[];for(let s of t){let r=P(n,s);if(!r)continue;let c=this.readLabelForUri(s)??s.name,i=this.renderStatementInlineValue(r,s,a);i&&o.push(`<span class="kan-chip"><span class="kan-chip-key">${d(c)}</span> <span class="kan-chip-val">${i}</span></span>`)}return o.length===0?"":`<div class="kan-chip-row">${o.join("")}</div>`}renderReferenceList(e,n,a){let t=nn(e,Rn);if(t.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let o=L(e,hn),s=L(e,oa),r=[];for(let c of t){let i=this.readPropertyValueReferences(n,c);if(i.length===0)continue;let l=this.readLabelForUri(c)??c.name;if(o){let u=i.map(f=>this.renderDetailRow(f,o,s,a)).filter(f=>f).join("");u&&r.push(`<dt>${d(l)}</dt><dd><ul class="kan-ref-rows">${u}</ul></dd>`)}else{let u=i.map(f=>this.renderReferenceLink(f,Rn,a)).join(", ");r.push(`<dt>${d(l)}</dt><dd>${u}</dd>`)}}return r.length===0?"":`<dl class="kan-reference-list">${r.join("")}</dl>`}renderDetailRow(e,n,a,t){let o=G(this.catalog,{publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name,...e.subject.version?{version:e.subject.version}:{}});if(!o)return"";let s=this.resolvePath(o,n)??A(this.catalog,o).label,r="";if(a){let u=this.resolvePath(o,a);u&&(r=`<span class="kan-ref-badge">${d(u)}</span>`)}let c=`<span class="kan-ref-text">${d(s)}</span>${r}`;if(!this.isLinkable(B(o),t))return`<li class="kan-ref-row"><span class="kan-ref-rowlink">${c}</span></li>`;let i=this.hrefForSubject(o,t),l=this.svgUrlForSubject(o,t);return`<li class="kan-ref-row"><a class="kan-ref-rowlink" href="${d(i)}"><img class="kan-ref-icon" src="${d(l)}" alt="" loading="lazy"/>`+c+"</a></li>"}readPropertyValueText(e,n){let a=P(e,n);if(a){if(a instanceof Q)return a.object;if(a instanceof N){let t=a.object;return this.readLabelForUri({publisher:t.subject.publisher,package_:t.subject.package_,name:t.subject.name})??t.subject.name}if(a instanceof oe)return this.readEmbeddedText(a.object,0)||void 0;if(a instanceof Y)return(a.object??[]).map(o=>o instanceof E?this.readLabelForUri({publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name})??o.subject.name:o instanceof q?this.readEmbeddedText(o,0):String(o)).filter(o=>o).join(", ")}}readEmbeddedText(e,n){if(n>=jn)return"\u2026";let a=[];for(let t of e.statement)if(t.predicate?.subject?.name!=="type")if(t instanceof Q)a.push(t.object);else if(t instanceof $e||t instanceof ue)a.push(String(t.object));else if(t instanceof N){let s=t.object;a.push(this.readLabelForUri({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name})??s.subject.name)}else t instanceof oe&&a.push(this.readEmbeddedText(t.object,n+1));return a.filter(t=>t).join(", ")}readPropertyValueReferences(e,n){let a=P(e,n);if(!a)return[];if(a instanceof N)return[a.object];if(a instanceof Y){let t=[];for(let o of a.object??[])o instanceof E&&t.push(o);return t}return[]}gatherValueItems(e){return e?e instanceof Y?e.object??[]:e instanceof N?[e.object]:e instanceof oe?[e.object]:e instanceof Q?[e.object]:e instanceof $e||e instanceof ue?[e.object]:[]:[]}renderInlineValue(e,n,a,t=0){return e instanceof E?this.renderReferenceLink(e,n,a):e instanceof q?this.renderEmbeddedInline(e,a,t):typeof e=="string"?d(e):typeof e=="number"||typeof e=="boolean"?d(String(e)):""}renderStatementInlineValue(e,n,a,t=0){return e instanceof Q?d(e.object):e instanceof $e||e instanceof ue?d(String(e.object)):e instanceof N?this.renderReferenceLink(e.object,n,a):e instanceof oe?this.renderEmbeddedInline(e.object,a,t):e instanceof Y?(e.object??[]).map(s=>this.renderInlineValue(s,n,a,t)).filter(s=>s).join(", "):""}renderEmbeddedInline(e,n,a=0){if(a>=jn)return"\u2026";let t=[];for(let o of e.statement){let s=o.predicate?.subject;if(!s||s.name==="type")continue;let r=this.readLabelForUri({publisher:s.publisher,package_:s.package_,name:s.name})??s.name,c=this.renderStatementInlineValue(o,s,n,a+1);c&&t.push(`<dt>${d(r)}</dt><dd>${c}</dd>`)}return t.length?`<dl class="kan-embedded">${t.join("")}</dl>`:""}renderReferenceLink(e,n,a){let t=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name;if(!this.isLinkable(e.subject.publisher,a))return`<span class="kan-link-plain">${d(t)}</span>`;let o=this.urlForReference(e,n,a);return`<a class="kan-link" href="${d(o)}">${d(t)}</a>`}isLinkable(e,n){return e===n}renderBadge(e,n,a){let t=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name,o=this.readCommentForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name}),s=o?` title="${d(o)}"`:"";if(!this.isLinkable(e.subject.publisher,a))return`<span class="kan-badge"${s}>${d(t)}</span>`;let r=this.urlForReference(e,n,a);return`<a class="kan-badge" href="${d(r)}"${s}>${d(t)}</a>`}urlForReference(e,n,a){let t=n?this.getUrlFormForProperty(n):"=";return _e.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},t,{contextPublisher:a})}getUrlFormForProperty(e){let n=G(this.catalog,e);if(!n)return"=";let a=L(n,Ra);return a==="*"||a==="^"||a==="~"||a==="="?a:"="}readLabelForUri(e){let n=G(this.catalog,e);if(n)return A(this.catalog,n).label}readCommentForUri(e){let n=G(this.catalog,e);if(n)return A(this.catalog,n).summary}};function Qe(h){let e=new Map;for(let n of h.statement){if(!(n instanceof oe)||!fe(n,De.publisher,De.package_,De.name))continue;let a=n.object;for(let t of a.statement){if(!(t instanceof Q))continue;let o=t.predicate?.subject?.name;if(!o)continue;let s=t.object;e.has(o)||e.set(o,s)}}return e}function Ce(h){for(let e of h.statement)if(e instanceof oe&&fe(e,Me.publisher,Me.package_,Me.name))return e.object}function en(h){for(let e of h.statement){if(!(e instanceof Y)||!fe(e,Je.publisher,Je.package_,Je.name))continue;let n=[];for(let a of e.object??[])a instanceof q&&n.push(a);return n}return[]}function Ke(h){for(let e of h.statement)if(e instanceof N&&e.predicate?.subject?.name==="type"&&e.object instanceof E){let n=e.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function M(h,e){for(let n of h.statement)if(n instanceof N&&fe(n,e.publisher,e.package_,e.name)&&n.object instanceof E){let a=n.object.subject;return{publisher:a.publisher,package_:a.package_,name:a.name}}}function nn(h,e){for(let n of h.statement){if(!(n instanceof Y)||!fe(n,e.publisher,e.package_,e.name))continue;let a=[];for(let t of n.object??[])t instanceof E&&a.push({publisher:t.subject.publisher,package_:t.subject.package_,name:t.subject.name});return a}return[]}function P(h,e){for(let n of h.statement)if(fe(n,e.publisher,e.package_,e.name))return n}function L(h,e){for(let n of h.statement)if(n instanceof Q&&fe(n,e.publisher,e.package_,e.name))return n.object}function yn(h,e){for(let n of h.statement)if(n instanceof $e&&fe(n,e.publisher,e.package_,e.name))return n.object}function ya(h,e){for(let n of h.statement)if(n instanceof ue&&fe(n,e.publisher,e.package_,e.name))return n.object===!0;return!1}function Ka(h){for(let e of ie(h))if(R(e.subject,Mn)||R(e.subject,Dn))return!0;return!1}function ie(h){let e=[];for(let n of h.statement)if(n instanceof N){if(n.predicate?.subject?.name!=="type")continue;n.object instanceof E&&e.push(n.object)}else if(n instanceof Y){if(n.predicate?.subject?.name!=="type")continue;for(let a of n.object??[])a instanceof E&&e.push(a)}return e}function Ee(h){let e=[];for(let n of h.statement)if(n instanceof N){if(n.predicate?.subject?.name!=="subClassOf")continue;n.object instanceof E&&e.push(n.object)}else if(n instanceof Y){if(n.predicate?.subject?.name!=="subClassOf")continue;for(let a of n.object??[])a instanceof E&&e.push(a)}return e}function ke(h,e){let n=[];for(let a of h){if(!(a instanceof re)||a.name!==e.name)continue;(a.namespace||"").startsWith(`${e.publisher}/${e.package_}@`)&&n.push(a)}return n}function G(h,e){let n="version"in e?e.version:void 0;if(n){let a=`${e.publisher}/${e.package_}@${n.major}.${n.minor}.${n.patch}`;for(let t of h)if(t instanceof re&&t.name===e.name&&t.namespace===a)return t}for(let a of h){if(!(a instanceof re)||a.name!==e.name)continue;if((a.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return a}}function fe(h,e,n,a){let t=h.predicate?.subject;return t?t.publisher===e&&t.package_===n&&t.name===a:!1}function R(h,e){return h.publisher===e.publisher&&h.package_===e.package_&&h.name===e.name}function z(h){return`${h.publisher}/${h.package_}/${h.name}`}function B(h){let e=h.namespace||"",n=e.indexOf("/");return n>=0?e.substring(0,n):e}function d(h){return h.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function xa(h){let e=h.lastIndexOf(".");return e>=0?h.substring(e+1):h}function La(h,e){for(let n of h.statement)if(n.predicate?.subject?.name===e)return n}function me(h){return h.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function tn(h,e){return h.length<=e?h:h.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function Kn(h){return h.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function xn(h){return h.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ln(h){let e=Ne(h);return d(e||h)}function Ne(h){let e=/^(\d{4})-(\d{2})-(\d{2})([T ]\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?)?$/.exec(h.trim());if(!e)return;let n=Date.parse(h);if(!Number.isFinite(n))return;let a=new Date(n),o=`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][a.getUTCMonth()]} ${a.getUTCDate()}, ${a.getUTCFullYear()}`;if(!e[4])return o;let s=a.getUTCHours(),r=(s+11)%12+1,c=s>=12?"PM":"AM";return`${o} \xB7 ${r}:${String(a.getUTCMinutes()).padStart(2,"0")} ${c} UTC`}function Ae(h){if(!h)return"";let e=/^(\d{4})-(\d{2})-(\d{2})/.exec(h);return e?`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][parseInt(e[2],10)-1]??e[2]} ${parseInt(e[3],10)}`:h}export{A as a,Ge as b,an as c};
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{a as ct,b as lt,c as dt,d as ut,e as pt}from"./chunk-SD5QKNBC.js";import{a as or,c as ar}from"./chunk-WQZBKRDG.js";import{a as at,b as it,c as st,d as b,e as S,f as i}from"./chunk-WDQONH3P.js";import{a as nr}from"./chunk-IIODYDKS.js";import"./chunk-3NEUHF7E.js";import{a as Te,b as je,c as Le,d as Fe,e as De,f as Ue,g as Ve,h as He}from"./chunk-H673KOGN.js";import{a as Ie,b as Ne,c as Oe,d as Ae}from"./chunk-VHUJSHH7.js";import{a as ft,b as yt,c as gt,d as ht}from"./chunk-CYDDQF6S.js";import{a as kt,b as $t}from"./chunk-DC774EQL.js";import{a as Ct}from"./chunk-NIGFQYVA.js";import{A as Qt,B as er,C as tr,E as rr,a as vt,b as Et,c as Kt,d as It,e as Bt,f as Tt,g as jt,h as Lt,i as Ft,j as Dt,k as Nt,l as Ot,m as At,n as Ut,o as Vt,p as Ht,q as Mt,r as _t,s as zt,t as Gt,u as Wt,v as Jt,w as qt,x as Yt,y as Xt,z as Zt}from"./chunk-BSJ6PEKE.js";import{a as tt,b as rt,c as nt}from"./chunk-VJT6YUWK.js";import{a as F,b as N,c as We}from"./chunk-H2LEQLVD.js";import{a as Be}from"./chunk-7CUTGGH3.js";import{a as ot,b as bt,c as St,d as Pt,e as Rt,f as wt,g as xt}from"./chunk-N224PFBI.js";import"./chunk-Q4DKP5DO.js";import{a as Pe,b as Re,c as we,d as xe,e as $e,f as ve,g as Ee,h as Ke}from"./chunk-FQHALFRR.js";import{b as Je,c as qe,d as Ye,e as Xe,f as Ze,h as Qe,j as et}from"./chunk-64TVBQFR.js";import{a as Me,b as j,c as L,d as D,e as ze,f as Ge,g as O,h as A,i as U,j as V,k as H,l as M}from"./chunk-W6T7MOKY.js";import{a as _e}from"./chunk-FUUTGGJS.js";import{a as mt}from"./chunk-ODIECDN7.js";import{VersionOperator as yo}from"@kanonak-protocol/types/document/models/enums";import{existsSync as Rr,readFileSync as wr}from"fs";import{homedir as xr}from"os";import{join as $r}from"path";import{execFile as ir}from"child_process";import{promisify as sr}from"util";var C=sr(ir),P="kanonak",R="/usr/bin/security",p=class{async get(e){let r=i(e);try{let{stdout:n}=await C(R,["find-generic-password","-s",P,"-a",r,"-w"],{timeout:1e4});try{return JSON.parse(n.trim())}catch{throw new Error(`Stored credential for '${r}' is corrupted (not valid JSON).
1
+ import{a as ct,b as lt,c as dt,d as ut,e as pt}from"./chunk-SD5QKNBC.js";import{a as or,c as ar}from"./chunk-7O76F4TH.js";import{a as at,b as it,c as st,d as b,e as S,f as i}from"./chunk-WDQONH3P.js";import{a as nr}from"./chunk-IIODYDKS.js";import"./chunk-3NEUHF7E.js";import{a as Te,b as je,c as Le,d as Fe,e as De,f as Ue,g as Ve,h as He}from"./chunk-H673KOGN.js";import{a as Ie,b as Ne,c as Oe,d as Ae}from"./chunk-VHUJSHH7.js";import{a as ft,b as yt,c as gt,d as ht}from"./chunk-CYDDQF6S.js";import{a as kt,b as $t}from"./chunk-DC774EQL.js";import{a as Ct}from"./chunk-NIGFQYVA.js";import{A as Qt,B as er,C as tr,E as rr,a as vt,b as Et,c as Kt,d as It,e as Bt,f as Tt,g as jt,h as Lt,i as Ft,j as Dt,k as Nt,l as Ot,m as At,n as Ut,o as Vt,p as Ht,q as Mt,r as _t,s as zt,t as Gt,u as Wt,v as Jt,w as qt,x as Yt,y as Xt,z as Zt}from"./chunk-BSJ6PEKE.js";import{a as tt,b as rt,c as nt}from"./chunk-VJT6YUWK.js";import{a as F,b as N,c as We}from"./chunk-H2LEQLVD.js";import{a as Be}from"./chunk-7CUTGGH3.js";import{a as ot,b as bt,c as St,d as Pt,e as Rt,f as wt,g as xt}from"./chunk-N224PFBI.js";import"./chunk-Q4DKP5DO.js";import{a as Pe,b as Re,c as we,d as xe,e as $e,f as ve,g as Ee,h as Ke}from"./chunk-FQHALFRR.js";import{b as Je,c as qe,d as Ye,e as Xe,f as Ze,h as Qe,j as et}from"./chunk-64TVBQFR.js";import{a as Me,b as j,c as L,d as D,e as ze,f as Ge,g as O,h as A,i as U,j as V,k as H,l as M}from"./chunk-W6T7MOKY.js";import{a as _e}from"./chunk-FUUTGGJS.js";import{a as mt}from"./chunk-ODIECDN7.js";import{VersionOperator as yo}from"@kanonak-protocol/types/document/models/enums";import{existsSync as Rr,readFileSync as wr}from"fs";import{homedir as xr}from"os";import{join as $r}from"path";import{execFile as ir}from"child_process";import{promisify as sr}from"util";var C=sr(ir),P="kanonak",R="/usr/bin/security",p=class{async get(e){let r=i(e);try{let{stdout:n}=await C(R,["find-generic-password","-s",P,"-a",r,"-w"],{timeout:1e4});try{return JSON.parse(n.trim())}catch{throw new Error(`Stored credential for '${r}' is corrupted (not valid JSON).
2
2
  Run 'kanonak logout ${r}' then 'kanonak login ${r}' to fix.`)}}catch(n){if(X(n,44))return null;throw new Error(`macOS Keychain read failed for '${r}': ${w(n)}
3
3
  The Keychain may be locked or inaccessible.
4
4
  Try unlocking it via Keychain Access.app or running 'security unlock-keychain'.`)}}async store(e,r){let n=i(e),o=JSON.stringify(r);try{await C(R,["add-generic-password","-s",P,"-a",n,"-U","-w",o],{timeout:1e4})}catch(a){throw new Error(`macOS Keychain write failed for '${n}': ${w(a)}
@@ -161,6 +161,15 @@ export declare class LookRenderer {
161
161
  * Render the instance as body-only HTML using its cascaded look.
162
162
  */
163
163
  renderHtml(instance: SubjectKanonak): string;
164
+ /**
165
+ * Wrap a band's HTML in a float container when it declares `look.placement`
166
+ * (floatLeft / floatRight) so the FOLLOWING band's prose flows around it —
167
+ * a magazine-style article layout, done in the HTML layer (the band's own
168
+ * SVG/HTML stays an opaque block; native text reflow does the wrapping).
169
+ * `look.width` (a CSS length, default 42%) sizes the float; an unsafe width
170
+ * is ignored. Applies to any visual band, not just diagrams.
171
+ */
172
+ private applyBandPlacement;
164
173
  /**
165
174
  * Scan a view's bands for SectionHeading bands, returning each section's
166
175
  * anchor slug and label in document order — the table of contents a
@@ -261,6 +270,110 @@ export declare class LookRenderer {
261
270
  * at the figure's rendered width.
262
271
  */
263
272
  private renderFigure;
273
+ /**
274
+ * Render a Diagram band — a relationship diagram derived from the page
275
+ * instance. Each `look.facets` entry traverses a `relation` property to a
276
+ * set of node instances and renders them per its `encode` role. v1 supports
277
+ * the `cluster` role (a grouped set of identity tiles); other roles emit a
278
+ * visible diagnostic until implemented (no silent fallback, per the
279
+ * no-mocks rule). Relation/encode are resolved through the object model —
280
+ * statements are matched by the property's canonical URI, never by name.
281
+ */
282
+ /** Per-page counter so each diagram's arrowhead marker gets a unique id. */
283
+ private diagramArrowSeq;
284
+ /** Per-page guard so the zoom/modal client script is emitted only once. */
285
+ private diagramScriptEmitted;
286
+ private renderDiagram;
287
+ /**
288
+ * Render a tile figure at ALL FOUR tiers into one container (the declared
289
+ * `active` tier visible, the other three `hidden`). The zoom modal toggles
290
+ * which is shown to snap through detail levels — entirely client-side, so it
291
+ * works on static hosting with no server round-trip. The node `.svg` images
292
+ * are shared across the four, so only the small wrapper markup is duplicated.
293
+ */
294
+ private embedTiers;
295
+ /**
296
+ * Render an `expand` facet — each node recurses into the named sub-diagram
297
+ * `expandDiagram`, nested under the node's identity tile. Recursion is
298
+ * bounded by two guards: a cycle guard (the node is already on the expansion
299
+ * path) and a max-depth guard; when either trips, the node collapses to its
300
+ * identity tile with no sub-diagram. The `visited` set is per-PATH (copied
301
+ * with the node added on each descent), so a node may appear in sibling
302
+ * branches — only its own ancestry stops it. Deterministic, no DOM.
303
+ */
304
+ private renderDiagramExpand;
305
+ /**
306
+ * A node's identity tile + label as one inline, linked row (for tree rows).
307
+ * `notePath` adds a small secondary line of ontology-driven context (e.g. a
308
+ * weight or short description resolved off the node).
309
+ */
310
+ private diagramNodeRow;
311
+ /**
312
+ * The node tile size implied by the nodes' class-declared `look.diagramTier`,
313
+ * or undefined when none declare one. If node classes disagree, the larger
314
+ * tier wins (so detail isn't lost). Layout stays uniform (one size per facet);
315
+ * true per-node heterogeneous sizing is a later refinement.
316
+ */
317
+ private classTierSize;
318
+ /** Resolve a facet's `relation` property on the instance to node subjects. */
319
+ private resolveFacetNodes;
320
+ /**
321
+ * Resolve a facet's quantitative channels. Each `look.channels` entry reads
322
+ * a numeric off every node via its `mapPath` (the same `/`-path syntax as
323
+ * Distribution's metricPath) and auto-scales it linearly across the node
324
+ * set's observed [min, max] → a per-node value in [0, 1]. Nodes whose value
325
+ * is absent/non-numeric normalize to 0.5 (mid). Returns one entry per
326
+ * channel with its target visual variable (`to`) and the normalized values.
327
+ */
328
+ private resolveFacetChannels;
329
+ /**
330
+ * The label to draw on a facet's edges. An explicit `edgeLabel` wins; else,
331
+ * when `labelEdges` is true, the edge predicate's own `rdfs.label` is used —
332
+ * ontology-driven edge labels. Returns undefined when neither applies (edges
333
+ * stay unlabeled, the default — avoids clutter on same-relation fans).
334
+ */
335
+ private facetEdgeLabel;
336
+ /** Assemble an edge's label: static `edgeLabel` plus a per-edge dynamic value
337
+ * (resolved from `valuePath` on the given node), e.g. "weighs on" + "0.82". */
338
+ private edgeText;
339
+ /** A label chip (with a token-colored halo for legibility) at an edge midpoint. */
340
+ private edgeLabelEl;
341
+ /**
342
+ * Render a `cluster` facet — the node subjects as a grid of their own
343
+ * SemanticSvg identity tiles in one content-sized SVG. Each tile links to
344
+ * the node's resource page. Deterministic layout: fixed tile boxes wrapped
345
+ * into rows (node tiles have known size, so no DOM measurement is needed).
346
+ * An `opacity` channel fades each tile by its scaled value.
347
+ */
348
+ private renderDiagramCluster;
349
+ /**
350
+ * Render a `connector` facet — a hub-and-spoke diagram with the page
351
+ * instance as the central hub and each related node as a spoke, joined by a
352
+ * directed edge. The canonical architecture-graph encoding: "this instance
353
+ * relates to these, via this relationship." Two-rank layered layout (hub
354
+ * left, spokes column right) with curved edges + arrowheads. Deterministic:
355
+ * fixed tile sizes, no DOM measurement. Edge/arrow colors use look tokens so
356
+ * they stay theme-aware without a dedicated stylesheet rule.
357
+ */
358
+ private renderDiagramConnector;
359
+ /**
360
+ * An arrowhead marker whose BACK (x=0) is the reference point, so a path's
361
+ * end meets the back of the triangle and the tip points forward along the
362
+ * line. userSpaceOnUse keeps it a fixed size regardless of stroke width.
363
+ */
364
+ private arrowMarkerDef;
365
+ /**
366
+ * Render a `connector` facet with an `edges` predicate as a layered DAG:
367
+ * nodes ranked left-to-right by dependency order, with a directed edge per
368
+ * `nodeA <edges> nodeB` statement (both ends in the node set). Ranking is a
369
+ * cycle-tolerant longest-path layering (a back-edge into a node already on
370
+ * the DFS stack contributes rank 0, breaking the cycle); back-edges still
371
+ * render, so a cycle is visible as an edge curving leftward. Deterministic,
372
+ * no DOM. An optional `thickness` channel sizes edges by their source node.
373
+ */
374
+ private renderDiagramDag;
375
+ /** One node tile: its identity SVG as an `<image>`, linked, with a title. */
376
+ private diagramTile;
264
377
  /**
265
378
  * Render a StatRow band — a strip of labeled stats. `look.stats` is a
266
379
  * list of Stat specs, each with a `statLabel` and a `statPath` (the same
@@ -1,4 +1,4 @@
1
- import{a as p}from"../chunk-WQZBKRDG.js";import"../chunk-3NEUHF7E.js";import"../chunk-DC774EQL.js";import"../chunk-NIGFQYVA.js";import"../chunk-H2LEQLVD.js";import{d as m,g as x}from"../chunk-N224PFBI.js";import{a as d,f as S}from"../chunk-Q4DKP5DO.js";import{a as v}from"../chunk-FQHALFRR.js";import"../chunk-64TVBQFR.js";import{c as j}from"../chunk-W6T7MOKY.js";import"../chunk-FUUTGGJS.js";import{homedir as P}from"os";import{join as k}from"path";import{existsSync as B,mkdirSync as C,readFileSync as D,writeFileSync as O}from"fs";import{createHash as z}from"crypto";var f="Xenova/all-MiniLM-L6-v2",w="q8",b=32,g=null;async function K(){return g||(g=(async()=>{let t;try{t=await import("@huggingface/transformers")}catch(i){throw new Error(`Semantic search requires the embedding runtime, which is an optional dependency.
1
+ import{a as p}from"../chunk-7O76F4TH.js";import"../chunk-3NEUHF7E.js";import"../chunk-DC774EQL.js";import"../chunk-NIGFQYVA.js";import"../chunk-H2LEQLVD.js";import{d as m,g as x}from"../chunk-N224PFBI.js";import{a as d,f as S}from"../chunk-Q4DKP5DO.js";import{a as v}from"../chunk-FQHALFRR.js";import"../chunk-64TVBQFR.js";import{c as j}from"../chunk-W6T7MOKY.js";import"../chunk-FUUTGGJS.js";import{homedir as P}from"os";import{join as k}from"path";import{existsSync as B,mkdirSync as C,readFileSync as D,writeFileSync as O}from"fs";import{createHash as z}from"crypto";var f="Xenova/all-MiniLM-L6-v2",w="q8",b=32,g=null;async function K(){return g||(g=(async()=>{let t;try{t=await import("@huggingface/transformers")}catch(i){throw new Error(`Semantic search requires the embedding runtime, which is an optional dependency.
2
2
  Install it with:
3
3
  npm install @huggingface/transformers
4
4
  (underlying import error: ${i.message})`)}let{pipeline:r,env:n}=t;n.cacheDir=k(P(),".kanonak","models");let e=await r("feature-extraction",f,{dtype:w});return async i=>(await e(i,{pooling:"mean",normalize:!0})).tolist()})()),g}function H(t,r){let n=0;for(let e=0;e<t.length;e++)n+=t[e]*r[e];return n}function U(t,r){return r?t.version?r.version?v(t.version,r.version)>0:!0:!1:!0}function F(t,r){let n=p(t,r),e=[n.label],i=x(r);if(i.length>0){let s=S(t,i[0]),c=s?p(t,s).label:i[0].name;c&&e.push(`\u2014 a ${c}.`)}return n.summary&&e.push(n.summary),e.join(" ")}function M(t){let r=new Map;for(let n of t){if(!(n instanceof j))continue;let e=m(n);if(!e)continue;let i=d(e),s=r.get(i);(!s||U(e,m(s)))&&r.set(i,n)}return[...r.values()].sort((n,e)=>{let i=m(n)?d(m(n)):n.name,s=m(e)?d(m(e)):e.name;return i.localeCompare(s)})}var y=class{entries=[];get size(){return this.entries.length}async build(r,n={}){let e=M(r);if(n.include&&(e=e.filter(n.include)),e.length===0)return this.entries=[],{size:0,cached:!1};let i=e.map(o=>F(r,o)),s=n.cacheDir,c;if(s){let o=z("sha256").update(f+"|"+w+`
@@ -1,3 +1,3 @@
1
- import{c as E}from"../chunk-WQZBKRDG.js";import"../chunk-3NEUHF7E.js";import{a as K,d as P,f as N,g as C}from"../chunk-H673KOGN.js";import{a as _,d as F}from"../chunk-VHUJSHH7.js";import{a as O}from"../chunk-NIGFQYVA.js";import{c as L}from"../chunk-VJT6YUWK.js";import"../chunk-H2LEQLVD.js";import{a as M}from"../chunk-7CUTGGH3.js";import"../chunk-Q4DKP5DO.js";import{a as $,e as V}from"../chunk-FQHALFRR.js";import"../chunk-64TVBQFR.js";import{c as D}from"../chunk-W6T7MOKY.js";import"../chunk-FUUTGGJS.js";import{readFileSync as B}from"fs";async function T(n,r={}){let o=new M,t=new _(o),i=[],k=[];for(let e of C(n)){let g;try{g=B(e,"utf-8")}catch{continue}let f;try{f=o.parse(g).metadata?.namespace_}catch{continue}if(!f?.version)continue;let h=f.version;k.push({publisher:f.publisher,package_:f.package_,verStr:`${h.major}.${h.minor}.${h.patch}`,version:h,source:g})}k.sort((e,g)=>$(g.version,e.version));for(let e of k)await t.saveDocumentAsync(o.parse(e.source),`${e.publisher}/${e.package_}@${e.verStr}`),i.push({publisher:e.publisher,package_:e.package_,verStr:e.verStr,source:e.source});let d=[...new Set(i.map(e=>e.publisher))].sort(),l=r.publisher;if(l){if(!d.includes(l))throw new Error(`Publisher "${l}" not found in workspace. Available: ${d.join(", ")||"(none)"}`)}else if(d.length===1)l=d[0];else throw d.length===0?new Error(`No Kanonak packages found under ${n}`):new Error(`Workspace has multiple publishers (${d.join(", ")}). Pass --publisher <domain> to choose which one to serve.`);let y=new Set,b=new Map;for(let e of i)e.publisher===l&&(y.add(`${e.publisher}/${e.package_}@${e.verStr}`),b.set(`${e.package_}@${e.verStr}`,e.source));let a=r.repository??new N(t,new K(P(),!0,o),new F(r.httpCache?{getFromCache:r.httpCache.getFromCache,onFetch:r.httpCache.onFetch}:void 0)),s=await new L(o).parseKanonaks(a),c=new E(s),v=new Map,m=new Map,w=new Map,R=new Set;for(let e of s){if(!(e instanceof D))continue;let g=e.namespace||"";if(!y.has(g))continue;v.set(`${g}/${e.name}`,e);let f=g.split("/")[1]??"",[h,j]=f.split("@");if(!h||!j)continue;let x=V(j);x&&(R.has(f)||(R.add(f),m.has(h)||m.set(h,[]),m.get(h).push({verStr:j,version:x})),e.name===h&&w.set(f,e))}for(let e of m.values())e.sort((g,f)=>$(f.version,g.version));return{publisher:l,availablePublishers:d,catalog:s,lookRenderer:c,localNamespaces:y,rawByNsKey:b,bySubject:v,pkgVersions:m,pkgSelfByVer:w}}var u={".html":"text/html; charset=utf-8",".css":"text/css; charset=utf-8",".svg":"image/svg+xml",".md":"text/markdown; charset=utf-8",".kan.yml":"application/yaml; charset=utf-8",".txt":"text/plain; charset=utf-8",".json":"application/json; charset=utf-8"},p=(n,r,o,t)=>({status:n,headers:{"Content-Type":r,...t||{}},body:o}),S=n=>p(404,u[".html"],`<!doctype html><meta charset=utf-8><title>404</title><h1>404</h1><p>Not found: ${n}</p>`),W=n=>({status:301,headers:{Location:n},body:""});function A(n,r,o){let t=n.pkgVersions.get(r);if(!t||t.length===0)return null;switch(o.kind){case"any":return t[0].verStr;case"major-pin":return t.find(i=>i.version.major===o.major)?.verStr??null;case"minor-pin":return t.find(i=>i.version.major===o.major&&i.version.minor===o.minor)?.verStr??null;case"exact":return t.find(i=>i.version.major===o.major&&i.version.minor===o.minor&&i.version.patch===o.patch)?.verStr??null;default:return null}}function I(n,r,o=""){let{lookRenderer:t,publisher:i}=n;if(r==="/.well-known/kanonak.json")return p(200,u[".json"],JSON.stringify({version:1,auth:"none"},null,2));if(r==="/index.txt"){let s=[...n.localNamespaces].map(c=>c.split("/")[1].replace("@","/")).sort();return p(200,u[".txt"],s.join(`
1
+ import{c as U}from"../chunk-7O76F4TH.js";import"../chunk-3NEUHF7E.js";import{a as O,d as M,f as I,g as B}from"../chunk-H673KOGN.js";import{a as C,c as W,d as A}from"../chunk-VHUJSHH7.js";import{a as H}from"../chunk-NIGFQYVA.js";import{c as G}from"../chunk-VJT6YUWK.js";import"../chunk-H2LEQLVD.js";import{a as L}from"../chunk-7CUTGGH3.js";import"../chunk-Q4DKP5DO.js";import{a as V,e as E}from"../chunk-FQHALFRR.js";import"../chunk-64TVBQFR.js";import{c as T}from"../chunk-W6T7MOKY.js";import"../chunk-FUUTGGJS.js";import{readFileSync as q,existsSync as z,readdirSync as Q,writeFileSync as X,mkdirSync as Z}from"fs";import{join as K}from"path";var ee=["core-kanonak","site","link","look-tokens","look-styles","look","universal-look"];async function re(t,r={}){let o=new L,n=new C(o),s=[],v=[];for(let e of B(t)){let p;try{p=q(e,"utf-8")}catch{continue}let u;try{u=o.parse(p).metadata?.namespace_}catch{continue}if(!u?.version)continue;let k=u.version;v.push({publisher:u.publisher,package_:u.package_,verStr:`${k.major}.${k.minor}.${k.patch}`,version:k,source:p})}v.sort((e,p)=>V(p.version,e.version));for(let e of v)await n.saveDocumentAsync(o.parse(e.source),`${e.publisher}/${e.package_}@${e.verStr}`),s.push({publisher:e.publisher,package_:e.package_,verStr:e.verStr,source:e.source});let h=[...new Set(s.map(e=>e.publisher))].sort(),l=r.publisher;if(l){if(!h.includes(l))throw new Error(`Publisher "${l}" not found in workspace. Available: ${h.join(", ")||"(none)"}`)}else if(h.length===1)l=h[0];else throw h.length===0?new Error(`No Kanonak packages found under ${t}`):new Error(`Workspace has multiple publishers (${h.join(", ")}). Pass --publisher <domain> to choose which one to serve.`);let $=new Set,R=new Map;for(let e of s)e.publisher===l&&($.add(`${e.publisher}/${e.package_}@${e.verStr}`),R.set(`${e.package_}@${e.verStr}`,e.source));let c=new O(M(),!0,o),i=r.repository??new I(n,c,new A(r.httpCache?{getFromCache:r.httpCache.getFromCache,onFetch:r.httpCache.onFetch}:void 0));if(!r.repository){let e=M(),p=d=>K(e,d),u=d=>{let m=p(d);return z(m)?new Set(Q(m).filter(x=>x.endsWith(".kan.yml")).map(x=>x.split("@")[0])):new Set},k=d=>s.some(m=>m.publisher==="kanonak.org"&&m.package_===d),j=new W,_=u("kanonak.org");for(let d of ee)if(!(_.has(d)||k(d)))try{let m=await j.getHighestVersion("kanonak.org",d);if(!m)continue;let x=await j.getPackageUrl("kanonak.org",d,m),F=await fetch(x);if(!F.ok)continue;let J=await F.text(),D=K(e,"kanonak.org");Z(D,{recursive:!0}),X(K(D,`${d}@${m}.kan.yml`),J,"utf-8")}catch{}}let a=await new G(o).parseKanonaks(i),y=new U(a),w=new Map,b=new Map,P=new Map,N=new Set;for(let e of a){if(!(e instanceof T))continue;let p=e.namespace||"";if(!$.has(p))continue;w.set(`${p}/${e.name}`,e);let u=p.split("/")[1]??"",[k,j]=u.split("@");if(!k||!j)continue;let _=E(j);_&&(N.has(u)||(N.add(u),b.has(k)||b.set(k,[]),b.get(k).push({verStr:j,version:_})),e.name===k&&P.set(u,e))}for(let e of b.values())e.sort((p,u)=>V(u.version,p.version));return{publisher:l,availablePublishers:h,catalog:a,lookRenderer:y,localNamespaces:$,rawByNsKey:R,bySubject:w,pkgVersions:b,pkgSelfByVer:P}}var g={".html":"text/html; charset=utf-8",".css":"text/css; charset=utf-8",".svg":"image/svg+xml",".md":"text/markdown; charset=utf-8",".kan.yml":"application/yaml; charset=utf-8",".txt":"text/plain; charset=utf-8",".json":"application/json; charset=utf-8"},f=(t,r,o,n)=>({status:t,headers:{"Content-Type":r,...n||{}},body:o}),S=t=>f(404,g[".html"],`<!doctype html><meta charset=utf-8><title>404</title><h1>404</h1><p>Not found: ${t}</p>`),ne=t=>({status:301,headers:{Location:t},body:""});function Y(t,r,o){let n=t.pkgVersions.get(r);if(!n||n.length===0)return null;switch(o.kind){case"any":return n[0].verStr;case"major-pin":return n.find(s=>s.version.major===o.major)?.verStr??null;case"minor-pin":return n.find(s=>s.version.major===o.major&&s.version.minor===o.minor)?.verStr??null;case"exact":return n.find(s=>s.version.major===o.major&&s.version.minor===o.minor&&s.version.patch===o.patch)?.verStr??null;default:return null}}function te(t,r,o=""){let{lookRenderer:n,publisher:s}=t;if(r==="/.well-known/kanonak.json")return f(200,g[".json"],JSON.stringify({version:1,auth:"none"},null,2));if(r==="/index.txt"){let i=[...t.localNamespaces].map(a=>a.split("/")[1].replace("@","/")).sort();return f(200,g[".txt"],i.join(`
2
2
  `)+`
3
- `)}if(r==="/"||r==="/index.html"||r==="/index.css"){let s=t.publisherSubject(i);return r==="/index.css"?p(200,u[".css"],t.renderStylesheet(s)):p(200,u[".html"],t.renderDocument(s,{rootIndex:!0}))}let k=".html",d=!1,l=r;for(let s of[".kan.yml",".css",".svg",".md",".html"])if(r.endsWith(s)){k=s,d=!0,l=r.slice(0,-s.length);break}let y=!d&&/application\/yaml|text\/yaml/i.test(o),b=l.endsWith("/");b&&l!=="/"&&(l=l.slice(0,-1));let a=O.parse(l,i);if(!a)return S(r);if(a.kind==="package"){let s=A(n,a.package_,a.versionSpec);if(!s)return S(r);if(k===".kan.yml"||y){let m=n.rawByNsKey.get(`${a.package_}@${s}`);return m!==void 0?p(200,u[".kan.yml"],m):S(r)}let c=n.pkgSelfByVer.get(`${a.package_}@${s}`);if(!c)return S(r);if(k===".css")return p(200,u[".css"],t.renderStylesheet(c));if(!b)return W(l+"/");let v=a.versionSpec.kind==="any";if(v&&!t.hasDeclaredView(c)){let m=(n.pkgVersions.get(a.package_)||[]).map(w=>w.verStr);return p(200,u[".html"],t.renderPackageVersionList(a.package_,m,c))}return p(200,u[".html"],t.renderDocument(c,v?{bareOverview:!0}:void 0))}if(a.kind==="resource"){let s=A(n,a.package_,a.versionSpec);if(!s)return S(r);let c=n.bySubject.get(`${i}/${a.package_}@${s}/${a.name}`);if(!c)return S(r);switch(k){case".css":return p(200,u[".css"],t.renderStylesheet(c));case".svg":return p(200,u[".svg"],t.renderSvg(c));case".md":{let v=t.renderRawMarkdown(c);return v===void 0?S(r):p(200,u[".md"],v)}default:return p(200,u[".html"],t.renderDocument(c))}}return S(r)}export{T as loadServerModel,I as route};
3
+ `)}if(r==="/"||r==="/index.html"||r==="/index.css"){let i=n.publisherSubject(s);return r==="/index.css"?f(200,g[".css"],n.renderStylesheet(i)):f(200,g[".html"],n.renderDocument(i,{rootIndex:!0}))}let v=".html",h=!1,l=r;for(let i of[".kan.yml",".css",".svg",".md",".html"])if(r.endsWith(i)){v=i,h=!0,l=r.slice(0,-i.length);break}let $=!h&&/application\/yaml|text\/yaml/i.test(o),R=l.endsWith("/");R&&l!=="/"&&(l=l.slice(0,-1));let c=H.parse(l,s);if(!c)return S(r);if(c.kind==="package"){let i=Y(t,c.package_,c.versionSpec);if(!i)return S(r);if(v===".kan.yml"||$){let w=t.rawByNsKey.get(`${c.package_}@${i}`);return w!==void 0?f(200,g[".kan.yml"],w):S(r)}let a=t.pkgSelfByVer.get(`${c.package_}@${i}`);if(!a)return S(r);if(v===".css")return f(200,g[".css"],n.renderStylesheet(a));if(!R)return ne(l+"/");let y=c.versionSpec.kind==="any";if(y&&!n.hasDeclaredView(a)){let w=(t.pkgVersions.get(c.package_)||[]).map(b=>b.verStr);return f(200,g[".html"],n.renderPackageVersionList(c.package_,w,a))}return f(200,g[".html"],n.renderDocument(a,y?{bareOverview:!0}:void 0))}if(c.kind==="resource"){let i=Y(t,c.package_,c.versionSpec);if(!i)return S(r);let a=t.bySubject.get(`${s}/${c.package_}@${i}/${c.name}`);if(!a)return S(r);switch(v){case".css":return f(200,g[".css"],n.renderStylesheet(a));case".svg":return f(200,g[".svg"],n.renderSvg(a));case".md":{let y=n.renderRawMarkdown(a);return y===void 0?S(r):f(200,g[".md"],y)}default:return f(200,g[".html"],n.renderDocument(a))}}return S(r)}export{re as loadServerModel,te as route};
@@ -1,4 +1,4 @@
1
- import{b as X,c as ye}from"../chunk-WQZBKRDG.js";import{a as Ne}from"../chunk-IIODYDKS.js";import"../chunk-3NEUHF7E.js";import"../chunk-CYDDQF6S.js";import"../chunk-NIGFQYVA.js";import{c as Ue}from"../chunk-VJT6YUWK.js";import{a as C,c as Ce}from"../chunk-H2LEQLVD.js";import{a as Re}from"../chunk-7CUTGGH3.js";import{b as E,c as F,d as f,f as M,l as Oe}from"../chunk-Q4DKP5DO.js";import{e as Le}from"../chunk-FQHALFRR.js";import"../chunk-64TVBQFR.js";import{b as K,c as w,d as b,g as L,h as U,i as O,j,k as T,l as S}from"../chunk-W6T7MOKY.js";import"../chunk-FUUTGGJS.js";var yt="kanonak.org",kt="document-ast",m=t=>({publisher:yt,package_:kt,name:t}),k={Document:m("Document"),Block:m("Block"),Inline:m("Inline"),StructuredValue:m("StructuredValue"),Heading:m("Heading"),Paragraph:m("Paragraph"),RawBlock:m("RawBlock"),Text:m("Text"),StructuredMap:m("StructuredMap"),StructuredEntry:m("StructuredEntry"),StructuredList:m("StructuredList"),StringScalar:m("StringScalar"),IntegerScalar:m("IntegerScalar"),EscapeHint:m("EscapeHint"),MediaType:m("MediaType"),metadata:m("metadata"),children:m("children"),level:m("level"),inlines:m("inlines"),text:m("text"),entries:m("entries"),key:m("key"),value:m("value"),escapeHint:m("escapeHint"),items:m("items"),stringValue:m("stringValue"),integerValue:m("integerValue"),rawContent:m("rawContent"),mediaType:m("mediaType"),mimeType:m("mimeType"),ESC_RAW:m("esc-raw"),ESC_YAML_SAFE:m("esc-yaml-safe"),ESC_TOML_STRING:m("esc-toml-string"),ESC_TOML_MULTILINE:m("esc-toml-multiline"),ESC_JSON:m("esc-json"),ESC_DYNAMODB_BOOL:m("esc-dynamodb-bool"),ESC_DYNAMODB_NUMBER:m("esc-dynamodb-number"),ESC_DYNAMODB_NULL:m("esc-dynamodb-null"),TEXT_PLAIN:m("text-plain"),TEXT_MARKDOWN:m("text-markdown"),TEXT_HTML:m("text-html"),TEXT_CSS:m("text-css"),APPLICATION_JSON:m("application-json"),TEXT_YAML:m("text-yaml"),IMAGE_SVG_XML:m("image-svg-xml"),ResourceLink:m("ResourceLink"),target:m("target"),linkLabel:m("linkLabel"),PropertyList:m("PropertyList"),propertyEntries:m("propertyEntries"),PropertyEntry:m("PropertyEntry"),propertyKey:m("propertyKey"),propertyValue:m("propertyValue"),Table:m("Table"),tableColumnLabels:m("tableColumnLabels"),tableRows:m("tableRows"),TableRow:m("TableRow"),tableCells:m("tableCells")};function Ie(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var Y=class{backendUri="kanonak.org/transformations/markdown-with-frontmatter";render(e,n){let r=ht(e.metadata,n),a=St(e.children),u=["---",...r,"---","",a].join(`
1
+ import{b as X,c as ye}from"../chunk-7O76F4TH.js";import{a as Ne}from"../chunk-IIODYDKS.js";import"../chunk-3NEUHF7E.js";import"../chunk-CYDDQF6S.js";import"../chunk-NIGFQYVA.js";import{c as Ue}from"../chunk-VJT6YUWK.js";import{a as C,c as Ce}from"../chunk-H2LEQLVD.js";import{a as Re}from"../chunk-7CUTGGH3.js";import{b as E,c as F,d as f,f as M,l as Oe}from"../chunk-Q4DKP5DO.js";import{e as Le}from"../chunk-FQHALFRR.js";import"../chunk-64TVBQFR.js";import{b as K,c as w,d as b,g as L,h as U,i as O,j,k as T,l as S}from"../chunk-W6T7MOKY.js";import"../chunk-FUUTGGJS.js";var yt="kanonak.org",kt="document-ast",m=t=>({publisher:yt,package_:kt,name:t}),k={Document:m("Document"),Block:m("Block"),Inline:m("Inline"),StructuredValue:m("StructuredValue"),Heading:m("Heading"),Paragraph:m("Paragraph"),RawBlock:m("RawBlock"),Text:m("Text"),StructuredMap:m("StructuredMap"),StructuredEntry:m("StructuredEntry"),StructuredList:m("StructuredList"),StringScalar:m("StringScalar"),IntegerScalar:m("IntegerScalar"),EscapeHint:m("EscapeHint"),MediaType:m("MediaType"),metadata:m("metadata"),children:m("children"),level:m("level"),inlines:m("inlines"),text:m("text"),entries:m("entries"),key:m("key"),value:m("value"),escapeHint:m("escapeHint"),items:m("items"),stringValue:m("stringValue"),integerValue:m("integerValue"),rawContent:m("rawContent"),mediaType:m("mediaType"),mimeType:m("mimeType"),ESC_RAW:m("esc-raw"),ESC_YAML_SAFE:m("esc-yaml-safe"),ESC_TOML_STRING:m("esc-toml-string"),ESC_TOML_MULTILINE:m("esc-toml-multiline"),ESC_JSON:m("esc-json"),ESC_DYNAMODB_BOOL:m("esc-dynamodb-bool"),ESC_DYNAMODB_NUMBER:m("esc-dynamodb-number"),ESC_DYNAMODB_NULL:m("esc-dynamodb-null"),TEXT_PLAIN:m("text-plain"),TEXT_MARKDOWN:m("text-markdown"),TEXT_HTML:m("text-html"),TEXT_CSS:m("text-css"),APPLICATION_JSON:m("application-json"),TEXT_YAML:m("text-yaml"),IMAGE_SVG_XML:m("image-svg-xml"),ResourceLink:m("ResourceLink"),target:m("target"),linkLabel:m("linkLabel"),PropertyList:m("PropertyList"),propertyEntries:m("propertyEntries"),PropertyEntry:m("PropertyEntry"),propertyKey:m("propertyKey"),propertyValue:m("propertyValue"),Table:m("Table"),tableColumnLabels:m("tableColumnLabels"),tableRows:m("tableRows"),TableRow:m("TableRow"),tableCells:m("tableCells")};function Ie(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var Y=class{backendUri="kanonak.org/transformations/markdown-with-frontmatter";render(e,n){let r=ht(e.metadata,n),a=St(e.children),u=["---",...r,"---","",a].join(`
2
2
  `);return n?.trailingNewline&&(u.endsWith(`
3
3
  `)||(u+=`
4
4
  `)),u}};function ht(t,e){if(!t)return[];let n=new Map;for(let c of t.entries)n.set(ue(c.key),c);let r=new Map;if(e?.metadataRenames)for(let[c,l]of e.metadataRenames)r.set(ue(c),l);let i=(e?.metadataKeys??t.entries.map(c=>c.key)).map(ue),u=[];for(let c of i){let l=n.get(c);if(!l)continue;let p=r.get(c),y=ue(p??c),h=Me(l.value,l.escapeHint);h!==void 0&&u.push(`${y}: ${h}`)}return u}function ue(t){let e=t.lastIndexOf(".");return e===-1?t:t.substring(e+1)||t}function Me(t,e){switch(t.kind){case"StringScalar":return bt(t.stringValue,e);case"IntegerScalar":return String(t.integerValue);case"StructuredList":{let n=[];for(let r of t.items){let a=Me(r,e);a!==void 0&&n.push(a)}return n.join(", ")}case"StructuredMap":return;default:return}}function bt(t,e){return!e||Ie(e,k.ESC_RAW)?t:Ie(e,k.ESC_YAML_SAFE)?wt(t):t}function wt(t){return t.includes(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kanonak-protocol/sdk",
3
- "version": "3.53.0",
3
+ "version": "3.54.0",
4
4
  "description": "Kanonak Protocol SDK - Document repository and parsing implementations for TypeScript",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -121,7 +121,7 @@
121
121
  "yaml-parser"
122
122
  ],
123
123
  "dependencies": {
124
- "@kanonak-protocol/types": "^3.53.0",
124
+ "@kanonak-protocol/types": "^3.54.0",
125
125
  "ignore": "^7.0.5",
126
126
  "js-yaml": "^4.1.0",
127
127
  "yaml": "^2.7.0"
@@ -1,102 +0,0 @@
1
- import{a as me}from"./chunk-NIGFQYVA.js";import{a as z,c as Le}from"./chunk-H2LEQLVD.js";import{a as Te,f as Ce,h as Ae,i as ve,k as Ze}from"./chunk-Q4DKP5DO.js";import{a as ye,e as oe}from"./chunk-FQHALFRR.js";import{c as J,d as S,g as B,h as pe,i as re,j as x,k as X,l as D}from"./chunk-W6T7MOKY.js";import{a as Xe}from"./chunk-FUUTGGJS.js";var be="kanonak.org",tn="look",Re="core-rdf",Kn={publisher:be,package_:tn,name:"displayLabel"},yn={publisher:be,package_:tn,name:"displaySummary"},Ln={publisher:be,package_:Re,name:"type"},Un={publisher:be,package_:Re,name:"subClassOf"},On={publisher:be,package_:Re,name:"label"},In={publisher:be,package_:Re,name:"comment"},Qe=new Xe(be,Re,"Resource");function E(g,e){let n=en(g,e,Kn)??On,a=en(g,e,yn)??In,t=Ae(e,n)??e.name,o=Ae(e,a);return{label:t,summary:o}}function en(g,e,n){let a=ve(e,n);if(a)return a;let t=new Set,o=nn(e,Ln);for(;o.length>0;){let s=o.shift(),i=Te(s);if(t.has(i))continue;t.add(i);let c=Ce(g,s);if(!c)continue;let r=ve(c,n);if(r)return r;o.push(...nn(c,Un))}if(!t.has(Te(Qe))){let s=Ce(g,Qe);if(s){let i=ve(s,n);if(i)return i}}}function nn(g,e){let n=ve(g,e);if(n)return[n];let a=[];for(let t of Ze(g,e))t instanceof S&&a.push(t.subject);return a}function Me(g,e={}){let n=g.replace(/\r\n/g,`
2
- `).split(`
3
- `),a=[],t=0;for(;t<n.length;){let o=n[t];if(o.trim()===""){t++;continue}let s=/^(\s*)```(\S*)\s*$/.exec(o);if(s){let r=s[2],l=[];for(t++;t<n.length&&!/^(\s*)```\s*$/.test(n[t]);)l.push(n[t]),t++;t++;let u=l.join(`
4
- `),p=r&&e.highlight?e.highlight(r,u):je(u),k=r?` class="language-${sn(r)}"`:"";a.push(`<pre class="kan-code"><code${k}>${p}</code></pre>`);continue}let i=/^(#{1,6})\s+(.*)$/.exec(o);if(i){let r=i[1].length,l=$e(i[2].trim());a.push(`<h${r}>${l}</h${r}>`),t++;continue}if(o.includes("|")&&t+1<n.length&&an(n[t+1])){let r=Pe(o),l=wn(n[t+1]);t+=2;let u=[];for(;t<n.length&&n[t].trim()!==""&&n[t].includes("|");)u.push(Pe(n[t])),t++;a.push(xn(r,l,u));continue}if(/^\s*[-*]\s+/.test(o)){let r=[];for(;t<n.length&&/^\s*[-*]\s+/.test(n[t]);){let l=[n[t].replace(/^\s*[-*]\s+/,"")];for(t++;t<n.length&&n[t].trim()!==""&&!/^\s*[-*]\s+/.test(n[t])&&!/^\s*\d+\.\s+/.test(n[t]);)l.push(n[t]),t++;t<n.length&&n[t].trim()===""&&t++,r.push(`<li>${$e(l.join(" ").trim())}</li>`)}a.push(`<ul>
5
- ${r.join(`
6
- `)}
7
- </ul>`);continue}if(/^\s*\d+\.\s+/.test(o)){let r=[];for(;t<n.length&&/^\s*\d+\.\s+/.test(n[t]);){let l=[n[t].replace(/^\s*\d+\.\s+/,"")];for(t++;t<n.length&&n[t].trim()!==""&&!/^\s*\d+\.\s+/.test(n[t])&&!/^\s*[-*]\s+/.test(n[t]);)l.push(n[t]),t++;t<n.length&&n[t].trim()===""&&t++,r.push(`<li>${$e(l.join(" ").trim())}</li>`)}a.push(`<ol>
8
- ${r.join(`
9
- `)}
10
- </ol>`);continue}let c=[o];for(t++;t<n.length&&n[t].trim()!==""&&!/^(#{1,6})\s+/.test(n[t])&&!/^(\s*)```/.test(n[t])&&!/^\s*[-*]\s+/.test(n[t])&&!/^\s*\d+\.\s+/.test(n[t])&&!(n[t].includes("|")&&t+1<n.length&&an(n[t+1]));)c.push(n[t]),t++;a.push(`<p>${$e(c.join(" "))}</p>`)}return a.join(`
11
- `)}function an(g){return g.includes("-")?/^[\s|:-]+$/.test(g):!1}function Pe(g){let e=g.trim();return e.startsWith("|")&&(e=e.slice(1)),e.endsWith("|")&&(e=e.slice(0,-1)),e.split("|").map(n=>n.trim())}function wn(g){return Pe(g).map(e=>{let n=e.startsWith(":"),a=e.endsWith(":");return n&&a?"center":a?"right":n?"left":null})}function xn(g,e,n){let a=s=>{let i=e[s];return i?` style="text-align:${i}"`:""},t=g.map((s,i)=>`<th${a(i)}>${$e(s)}</th>`).join(""),o=n.map(s=>`<tr>${s.map((c,r)=>`<td${a(r)}>${$e(c)}</td>`).join("")}</tr>`).join(`
12
- `);return`<table>
13
- <thead><tr>${t}</tr></thead>
14
- <tbody>
15
- ${o}
16
- </tbody>
17
- </table>`}function $e(g){let e=je(g);return e=e.replace(/`([^`\n]+)`/g,(n,a)=>`<code>${a}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(n,a,t)=>`<a href="${sn(t)}">${a}</a>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,(n,a)=>`<strong>${a}</strong>`),e=e.replace(/(^|[^*])\*([^*\n]+)\*(?!\*)/g,(n,a,t)=>`${a}<em>${t}</em>`),e=e.replace(/(^|[\s(])_([^_\n]+)_(?=[\s).,;:!?]|$)/g,(n,a,t)=>`${a}<em>${t}</em>`),e}function je(g){return g.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function sn(g){return g.replace(/"/g,"&quot;").replace(/&/g,"&amp;")}var Ue=class{byLang=new Map;constructor(e){for(let n of e){if(!n.language)continue;let a=[];for(let t of n.rules){if(!t.tokenClass||!t.pattern)continue;let o;try{o=new RegExp(t.pattern,"y")}catch{continue}a.push({tokenClass:t.tokenClass,re:o})}this.byLang.set(n.language,a)}}has(e){return this.byLang.has(e)}highlight(e,n){let a=this.byLang.get(e);return!a||a.length===0?je(n):n.split(`
18
- `).map(t=>this.highlightLine(t,a)).join(`
19
- `)}highlightLine(e,n){let a="",t=0;for(;t<e.length;){let o=!1;for(let s of n){s.re.lastIndex=t;let i=s.re.exec(e);if(i&&i[0].length>0){a+=`<span class="kan-tok-${s.tokenClass}">${je(i[0])}</span>`,t+=i[0].length,o=!0;break}}o||(a+=je(e[t]),t++)}return a}};var xe={publisher:"kanonak.org",package_:"derivation",name:"look"},Ee={publisher:"kanonak.org",package_:"derivation",name:"tokens"},ce={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},Ve={publisher:"kanonak.org",package_:"core-rdf",name:"label"},on={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},En={publisher:"kanonak.org",package_:"core-rdf",name:"range"},Fn={publisher:"kanonak.org",package_:"core-rdf",name:"Class"},Tn={publisher:"kanonak.org",package_:"core-owl",name:"Class"},Cn={publisher:"kanonak.org",package_:"look",name:"Hero"},An={publisher:"kanonak.org",package_:"look",name:"PropertyList"},Pn={publisher:"kanonak.org",package_:"look",name:"PropertyTable"},Mn={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},Vn={publisher:"kanonak.org",package_:"look",name:"ChipRow"},Nn={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},Dn={publisher:"kanonak.org",package_:"look",name:"ReferencedBy"},Hn={publisher:"kanonak.org",package_:"look",name:"Instances"},rn={publisher:"kanonak.org",package_:"look",name:"Markdown"},Bn={publisher:"kanonak.org",package_:"look",name:"NavGroup"},Gn={publisher:"kanonak.org",package_:"look",name:"nav"},Ne={publisher:"kanonak.org",package_:"look",name:"NavLink"},Wn={publisher:"kanonak.org",package_:"look",name:"footer"},zn={publisher:"kanonak.org",package_:"look",name:"text"},Yn={publisher:"kanonak.org",package_:"look",name:"links"},cn={publisher:"kanonak.org",package_:"look",name:"target"},qn={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},Jn={publisher:"kanonak.org",package_:"look",name:"Timeline"},Xn={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},Zn={publisher:"kanonak.org",package_:"look",name:"Figure"},Qn={publisher:"kanonak.org",package_:"look",name:"StatRow"},et={publisher:"kanonak.org",package_:"look",name:"Horizon"},nt={publisher:"kanonak.org",package_:"look",name:"PackageContents"},De={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},tt={publisher:"kanonak.org",package_:"core-kanonak",name:"Publisher"},at={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},st={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},ot={publisher:"kanonak.org",package_:"look",name:"packages"},rt={publisher:"kanonak.org",package_:"code-grammars",name:"CodeGrammar"},it={publisher:"kanonak.org",package_:"code-grammars",name:"language"},ct={publisher:"kanonak.org",package_:"code-grammars",name:"rule"},lt={publisher:"kanonak.org",package_:"code-grammars",name:"tokenClass"},ut={publisher:"kanonak.org",package_:"code-grammars",name:"pattern"},dt={publisher:"kanonak.org",package_:"look",name:"Links"},pt={publisher:"kanonak.org",package_:"link",name:"url"},ft={publisher:"kanonak.org",package_:"link",name:"links"};var kt={publisher:"kanonak.org",package_:"look",name:"Distribution"},gt={publisher:"kanonak.org",package_:"look",name:"alphaPath"},ht={publisher:"kanonak.org",package_:"look",name:"betaPath"},ln={publisher:"kanonak.org",package_:"look",name:"SectionHeading"},mt={publisher:"kanonak.org",package_:"look",name:"SectionNav"},un={publisher:"kanonak.org",package_:"look",name:"heading"},bt={publisher:"kanonak.org",package_:"look",name:"note"},$t={publisher:"kanonak.org",package_:"look",name:"VersionDelta"},jt={publisher:"kanonak.org",package_:"look",name:"TimePlot"},_t={publisher:"kanonak.org",package_:"look",name:"Details"},vt={publisher:"kanonak.org",package_:"look",name:"EmbeddedViews"},Rt={publisher:"kanonak.org",package_:"look",name:"skip"},St={publisher:"kanonak.org",package_:"derivation",name:"derivations"},Kt={publisher:"kanonak.org",package_:"look",name:"laneBy"},yt={publisher:"kanonak.org",package_:"look",name:"stats"},Lt={publisher:"kanonak.org",package_:"look",name:"statPath"},Ut={publisher:"kanonak.org",package_:"look",name:"statLabel"},dn={publisher:"kanonak.org",package_:"look",name:"labelPath"},Ot={publisher:"kanonak.org",package_:"look",name:"badgePath"},He={publisher:"kanonak.org",package_:"look",name:"orderBy"},pn={publisher:"kanonak.org",package_:"look",name:"track"},Oe={publisher:"kanonak.org",package_:"look",name:"metricPath"},Be={publisher:"kanonak.org",package_:"look",name:"hueBy"},fn={publisher:"kanonak.org",package_:"look",name:"lowerPath"},kn={publisher:"kanonak.org",package_:"look",name:"upperPath"},It={publisher:"kanonak.org",package_:"look",name:"axisMin"},wt={publisher:"kanonak.org",package_:"look",name:"axisMax"},xt={publisher:"kanonak.org",package_:"look",name:"valueLabel"};var gn={publisher:"kanonak.org",package_:"look",name:"semanticSvg"},Et={publisher:"kanonak.org",package_:"look",name:"tierChip"},Ft={publisher:"kanonak.org",package_:"look",name:"tierIcon"},Tt={publisher:"kanonak.org",package_:"look",name:"tierCard"},Ct={publisher:"kanonak.org",package_:"look",name:"tierFull"},At={publisher:"kanonak.org",package_:"core-rdf",name:"type"},hn=6,Ge={publisher:"kanonak.org",package_:"look",name:"bands"},Pt={publisher:"kanonak.org",package_:"look",name:"title"},Mt={publisher:"kanonak.org",package_:"look",name:"eyebrow"},Vt={publisher:"kanonak.org",package_:"look",name:"subtitle"},mn={publisher:"kanonak.org",package_:"look",name:"badges"},Y={publisher:"kanonak.org",package_:"look",name:"source"},Nt={publisher:"kanonak.org",package_:"look",name:"via"},Dt={publisher:"kanonak.org",package_:"look",name:"size"},Ht={publisher:"kanonak.org",package_:"look",name:"icon"},Bt={publisher:"kanonak.org",package_:"look",name:"avatar"},Gt={publisher:"kanonak.org",package_:"look",name:"contents"},Wt={publisher:"kanonak.org",package_:"look",name:"transitive"},zt={publisher:"kanonak.org",package_:"look",name:"chips"},bn={publisher:"kanonak.org",package_:"look",name:"entries"},Yt={publisher:"kanonak.org",package_:"look",name:"urlForm"},Je=class{constructor(e){this.catalog=e}catalog;_codeHighlighter;findCascadedLook(e){let n=qt(e)?void 0:Ie(e);return n?{declaration:n,sourceClass:{publisher:P(e),package_:(e.namespace||"").split("/")[1]?.split("@")[0]??"",name:e.name}}:this.lookFromTypeRefs(ae(e))}lookFromTypeRefs(e){let n=new Set,a=[...e];for(;a.length>0;){let o=a.shift().subject,s=V(o);if(n.has(s))continue;n.add(s);let i=le(this.catalog,o);for(let c of i){let r=Ie(c);if(r)return{declaration:r,sourceClass:{publisher:o.publisher,package_:o.package_,name:o.name}}}for(let c of i)for(let r of Ke(c))a.push(r)}if(!n.has(V(ce)))for(let t of le(this.catalog,ce)){let o=Ie(t);if(o)return{declaration:o,sourceClass:{...ce}}}}findCascadedTokens(e){let n=new Map;for(let[o,s]of We(e))n.has(o)||n.set(o,s);let a=new Set,t=ae(e);for(;t.length>0;){let o=t.shift(),s=V(o.subject);if(a.has(s))continue;a.add(s);let i=le(this.catalog,o.subject);if(i.length!==0)for(let c of i){for(let[r,l]of We(c))n.has(r)||n.set(r,l);for(let r of Ke(c))t.push(r)}}if(!a.has(V(ce))){let o=le(this.catalog,ce);for(let s of o)for(let[i,c]of We(s))n.has(i)||n.set(i,c)}return n}renderSvg(e){let n=E(this.catalog,e).label,a=(n.trim().charAt(0)||"?").toUpperCase(),t=`${e.namespace??""}/${e.name}`,o={label:n,firstLetter:a,uri:t},s=this.collectCascadedSvgTiers(e),i=h=>this.applyPlaceholders(h,e,o),c=i(s.tierChip??""),r=i(s.tierIcon??""),l=i(s.tierCard??""),u=i(s.tierFull??""),k=[...this.findCascadedTokens(e)].map(([h,f])=>`--kan-${h}: ${f};`).join(" ");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" style="${ue(k)}">
20
- <style>
21
- .tier-chip,.tier-icon,.tier-card{display:none}
22
- .tier-full{display:block}
23
- @media (max-width:400px){.tier-full{display:none}.tier-card{display:block}}
24
- @media (max-width:160px){.tier-card{display:none}.tier-icon{display:block}}
25
- @media (max-width:60px){.tier-icon{display:none}.tier-chip{display:block}}
26
- </style>
27
- <g class="tier-chip">${c}</g>
28
- <g class="tier-icon">${r}</g>
29
- <g class="tier-card">${l}</g>
30
- <g class="tier-full">${u}</g>
31
- </svg>`}applyPlaceholders(e,n,a){return e.replace(/\{\{([^}]+)\}\}/g,(t,o)=>{let s=o.trim();if(a[s]!==void 0)return ue(a[s]);let i=s.indexOf(":");if(i>0){let r=s.slice(0,i),l=s.slice(i+1).trim();if(r==="delta"||r==="deltaArrow"||r==="deltaColor"||r==="deltaDir"){let u=this.metricDelta(n,l);return r==="deltaColor"?u?u.dir==="up"?"#34d399":u.dir==="down"?"#f87171":"#9aa5b8":"#9aa5b8":r==="deltaDir"?u?u.dir:"new":u?r==="deltaArrow"?u.dir==="up"?"\u25B2":u.dir==="down"?"\u25BC":"\u2014":ue(`${u.delta>0?"+":""}${u.delta.toFixed(2)}`):""}if(r==="svg")return this.resolvePath(n,l)??""}let c=this.resolvePath(n,s);return c===void 0?`{{${s}}}`:ue(c)})}metricDelta(e,n){let a=k=>{let h=this.resolvePath(k,n),f=h===void 0?NaN:parseFloat(h);return Number.isFinite(f)?f:void 0},t=a(e);if(t===void 0)return;let o=k=>oe((k.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},s=(k,h)=>k.major-h.major||k.minor-h.minor||k.patch-h.patch,i={publisher:P(e),package_:(e.namespace||"").split("/")[1]?.split("@")[0]??"",name:e.name},c=o(e),r,l;for(let k of le(this.catalog,i)){let h=o(k);s(h,c)<0&&(!l||s(h,l)>0)&&(r=k,l=h)}if(!r)return;let u=a(r);if(u===void 0)return;let p=t-u;return{delta:p,dir:Math.abs(p)<.005?"flat":p>0?"up":"down"}}resolvePath(e,n){let a=n.split("/").map(t=>t.trim()).filter(t=>t.length>0);if(a.length!==0)return this.resolvePathSteps(e,a)}resolvePathSteps(e,n){let a=Jt(n[0]),t=Xt(e,a);if(!t)return;let o=n.length===1;if(t instanceof X)return o?void 0:this.resolvePathSteps(t.object,n.slice(1));if(t instanceof x&&t.object instanceof S){let s=t.object.subject,i=le(this.catalog,s);if(i.length===0){let r=G(this.catalog,s);r&&i.push(r)}if(o){for(let r of i){let l=E(this.catalog,r);if(l.label!==r.name)return l.label}return s.name}let c=n.slice(1);for(let r of i){let l=this.resolvePathSteps(r,c);if(l!==void 0)return l}return}if(o&&(t instanceof B||t instanceof pe||t instanceof re))return String(t.object)}collectCascadedSvgTiers(e){let n={},a=s=>{let i=M(s,gn);if(!(i instanceof X))return;let c=i.object,r=L(c,Et),l=L(c,Ft),u=L(c,Tt),p=L(c,Ct);n.tierChip===void 0&&r!==void 0&&(n.tierChip=r),n.tierIcon===void 0&&l!==void 0&&(n.tierIcon=l),n.tierCard===void 0&&u!==void 0&&(n.tierCard=u),n.tierFull===void 0&&p!==void 0&&(n.tierFull=p)};a(e);let t=new Set,o=ae(e);for(;o.length>0;){let s=o.shift(),i=V(s.subject);if(t.has(i))continue;t.add(i);let c=le(this.catalog,s.subject);for(let r of c){a(r);for(let l of Ke(r))o.push(l)}}if(!t.has(V(ce)))for(let s of le(this.catalog,ce))a(s);return n}renderStylesheet(e){let n=this.findCascadedTokens(e),a=[];for(let[s,i]of n)a.push(` --kan-${s}: ${i};`);let t=a.length>0?`:root {
32
- ${a.join(`
33
- `)}
34
- }`:":root { /* no tokens resolved */ }",o=this.findBaseStylesheet(P(e))??"";return`${t}
35
- ${o}`}findBaseStylesheet(e){let n="kanonak.org/site/content",a=r=>oe((r.namespace||"").split("@")[1]??""),t,o,s,i;for(let r of this.catalog){if(!(r instanceof J)||r.name!=="base-stylesheet")continue;let l=r.namespace||"";if(l.startsWith(`${e}/look-styles@`)){let u=a(r);u&&(!o||ye(u,o)>0)&&(t=r,o=u)}else if(l.startsWith("kanonak.org/look-styles@")){let u=a(r);u&&(!i||ye(u,i)>0)&&(s=r,i=u)}}let c=t??s;if(c)for(let r of c.statement){let l=r.predicate?.subject;if(!l)continue;if(`${l.publisher}/${l.package_}/${l.name}`===n&&r instanceof B)return r.object}}renderHtml(e){let n=this.findCascadedLook(e);if(!n)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let a=ze(n.declaration);if(a.length===0)return"<!-- LookRenderer: look declaration has no bands -->";let t=P(e),o=this.collectSectionHeadings(a),s=[];for(let i of a)s.push(this.renderBand(i,e,t,o));return s.join(`
36
- `)}collectSectionHeadings(e){let n=[];for(let a of e){let t=Se(a);if(!t||!v(t,ln))continue;let o=L(a,un);o&&n.push({slug:jn(o),label:o})}return n}publisherSubject(e){for(let a of this.catalog)if(a instanceof J&&P(a)===e&&ae(a).some(t=>v(t.subject,tt)))return a;let n=new J;return n.namespace=e,n.name=e,n.statement=[x.parse("kanonak.org/core-rdf/type","kanonak.org/core-kanonak/Publisher"),B.parse("kanonak.org/core-rdf/label",e)],n}hasDeclaredView(e){let n=this.findCascadedLook(e);return n?!(t=>t.publisher===ce.publisher&&t.package_===ce.package_&&t.name===ce.name||t.publisher===De.publisher&&t.package_===De.package_&&t.name===De.name)(n.sourceClass):!1}renderPackageVersionList(e,n,a){let t=P(a),o=this.renderNavGroup(a,t),s=this.renderBreadcrumb(a,t,{bareOverview:!0}),i=n.map(r=>`<a class="kan-resource-card" href="/${d(e)}/${d(r)}/"><h3 class="kan-resource-card-title">${d(r)}</h3></a>`).join(`
37
- `),c=`<header class="kan-hero">
38
- <span class="kan-hero-eyebrow">PACKAGE</span>
39
- <h1 class="kan-hero-title">${d(e)}</h1>
40
- </header>
41
- <section class="kan-resource-grid">
42
- ${i}
43
- </section>`;return`<!doctype html>
44
- <html lang="en">
45
- <head>
46
- <meta charset="utf-8">
47
- <meta name="viewport" content="width=device-width, initial-scale=1">
48
- <title>${d(e)}</title>
49
- <link rel="stylesheet" href="${d(a.name)}.css">
50
- </head>
51
- <body>
52
- ${o}
53
- ${s}
54
- <main class="kan-main">
55
- ${c}
56
- </main>
57
- </body>
58
- </html>
59
- `}renderDocument(e,n){let a=this.renderHtml(e),t=E(this.catalog,e).label,o=n?.rootIndex?"index.css":`${e.name}.css`,s=!n?.rootIndex&&this.hasSvgDerivation(e)?`<figure class="kan-figure"><img src="${d(e.name)}.svg" alt=""></figure>
60
- `:"",i=P(e),c=this.renderNavGroup(e,i),r=this.renderSiteFooter(i),l=n?.rootIndex?"":this.renderBreadcrumb(e,i,n);return`<!doctype html>
61
- <html lang="en">
62
- <head>
63
- <meta charset="utf-8">
64
- <meta name="viewport" content="width=device-width, initial-scale=1">
65
- <title>${d(t)}</title>
66
- <link rel="stylesheet" href="${d(o)}">
67
- </head>
68
- <body>
69
- ${c}
70
- ${l}
71
- <main class="kan-main">
72
- ${s}${a}
73
- </main>
74
- ${r}
75
- </body>
76
- </html>
77
- `}hasSvgDerivation(e){let n=new Set,a=ae(e);for(;a.length>0;){let t=a.shift(),o=V(t.subject);if(n.has(o))continue;n.add(o);let s=G(this.catalog,t.subject);if(s){for(let i of s.statement)if(i instanceof D&&de(i,"kanonak.org","derivation","derivations")){for(let c of i.object??[])if(c instanceof z)for(let r of c.statement){if(!(r instanceof x)||!de(r,"kanonak.org","derivation","format")||!(r.object instanceof S))continue;let l=r.object.subject;if(l.publisher==="kanonak.org"&&l.package_==="formats"&&l.name==="svg")return!0}}for(let i of Ke(s))a.push(i)}}return!1}renderBand(e,n,a,t=[],o=""){let s=Se(e);return s?v(s,mt)?this.renderSectionNav(t):v(s,Cn)?this.renderHero(e,n,a):v(s,An)?this.renderPropertyList(e,n,a):v(s,Pn)?this.renderPropertyTable(e,n,a,o):v(s,Mn)?this.renderBadgeRow(e,n,a):v(s,Vn)?this.renderChipRow(e,n,a):v(s,Nn)?this.renderReferenceList(e,n,a):v(s,Dn)?this.renderReferencedBy(e,n,a):v(s,Hn)?this.renderInstances(e,n,a):v(s,rn)?this.renderMarkdown(e,n,a):v(s,dt)?this.renderLinks(e,n):v(s,Bn)?this.renderNavGroup(n,a):v(s,qn)?this.renderResourceGrid(e,a,n):v(s,Jn)?this.renderTimeline(e,a):v(s,Xn)?this.renderVersionDiff(e,a):v(s,Zn)?this.renderFigure(e,n,a):v(s,Qn)?this.renderStatRow(e,n):v(s,et)?this.renderHorizon(e,n,a):v(s,nt)?this.renderPackageContents(n,a):v(s,at)?this.renderFeaturedResource(e,a):v(s,st)?this.renderPublisherPackages(e,a):v(s,kt)?this.renderDistribution(e,n):v(s,ln)?this.renderSectionHeading(e):v(s,$t)?this.renderVersionDelta(e,n):v(s,jt)?this.renderTimePlot(e,n,a):v(s,_t)?this.renderDetails(e,n,a):v(s,vt)?this.renderEmbeddedViews(e,n,a,o):`<!-- LookRenderer: unsupported band ${s.publisher}/${s.package_}/${s.name} -->`:"<!-- LookRenderer: band has no rdf:type -->"}collectTrackedSeries(e,n,a,t){let{hueBy:o,lowerPath:s,upperPath:i}=t??{},c=new Map,r=e.length,l=(u,p)=>{let k=this.resolvePath(u,p);return k===void 0?NaN:parseFloat(k)};return e.forEach((u,p)=>{let k=this.readPropertyValueReferences(u,n);for(let h of k){let f=G(this.catalog,{publisher:h.subject.publisher,package_:h.subject.package_,name:h.subject.name,...h.subject.version?{version:h.subject.version}:{}});if(!f)continue;let m=h.subject.name,b=c.get(m);b||(b={key:m,label:E(this.catalog,f).label,points:new Array(r).fill(null),...s?{lower:new Array(r).fill(null)}:{},...i?{upper:new Array(r).fill(null)}:{}},c.set(m,b));let j=l(f,a);if(Number.isFinite(j)&&(b.points[p]=j),s&&b.lower){let $=l(f,s);Number.isFinite($)&&(b.lower[p]=$)}if(i&&b.upper){let $=l(f,i);Number.isFinite($)&&(b.upper[p]=$)}if(o){let $=l(f,o);Number.isFinite($)&&(b.hue=$)}b.lastSubject=f}}),[...c.values()]}hrefForSubject(e,n,a="="){let t=e.namespace||"",o=t.split("/")[1]?.split("@")[0]??"",s=t.split("@")[1]??"",i=s?oe(s):void 0;return me.formatResourceUrl({publisher:P(e),package_:o,name:e.name,...i?{version:i}:{}},a,{contextPublisher:n})}renderVersionDiff(e,n){let a=F(e,Y);if(!a)return"<!-- LookRenderer.VersionDiff: no look.source -->";let t=L(e,Oe),o=F(e,pn);if(!o||!t)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let s=F(e,He),i=L(e,Be),c=this.findInstancesOfClass(a);if(c.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let r=k=>s?this.readPropertyValueText(k,s)??"":"",l=c.slice().sort((k,h)=>r(k).localeCompare(r(h))),u=this.collectTrackedSeries(l,o,t,{hueBy:i});return u.length===0?"<!-- LookRenderer.VersionDiff: no tracked series -->":`<section class="kan-vdiff">${u.map((k,h)=>{let f=k.hue!==void 0?k.hue:Math.round(h*360/u.length),m=k.points.filter(y=>y!==null);if(m.length===0)return"";let b=m[0],j=m[m.length-1],$=j-b,K;if(Math.abs($)>=.005){let y=$>0?"up":"down",w=$>0?"\u25B2":"\u25BC";K=`<span class="kan-vdiff-delta ${y}">${$>0?"+":""}${$.toFixed(2)} ${w}</span>`}else K='<span class="kan-vdiff-delta flat">\u2014</span>';let O=k.lastSubject&&this.isLinkable(P(k.lastSubject),n)?`<a href="${d(this.hrefForSubject(k.lastSubject,n))}">${d(k.label)}</a>`:d(k.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${f}"><span class="kan-vdiff-label">${O}</span><span class="kan-vdiff-start">${b.toFixed(2)}</span>`+this.sparkline(k.points,f)+`<span class="kan-vdiff-end">${j.toFixed(2)}</span>`+K+"</div>"}).join("")}</section>`}sparkline(e,n){let s=`hsl(${n},65%,60%)`,i=e.filter(m=>m!==null);if(i.length===0)return'<svg class="kan-vdiff-spark" viewBox="0 0 132 30" xmlns="http://www.w3.org/2000/svg"></svg>';let c=Math.min(...i),l=Math.max(...i)-c,u=e.length,p=m=>u<=1?132/2:4+m/(u-1)*124,k=m=>l<1e-9?30/2:26-(m-c)/l*22,h=[],f=[];return e.forEach((m,b)=>{if(m===null)return;let j=p(b),$=k(m);h.push(`${j.toFixed(1)},${$.toFixed(1)}`),f.push(`<circle cx="${j.toFixed(1)}" cy="${$.toFixed(1)}" r="2" fill="${s}"/>`)}),`<svg class="kan-vdiff-spark" viewBox="0 0 132 30" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" role="img"><polyline points="${h.join(" ")}" fill="none" stroke="${s}" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round"/>`+f.join("")+"</svg>"}svgUrlForSubject(e,n,a="="){return`${this.hrefForSubject(e,n,a)}.svg`}renderFigure(e,n,a){let t=n,o=F(e,Y);if(o){let l=G(this.catalog,o);l&&(t=l)}let s=this.svgUrlForSubject(t,a),i=E(this.catalog,t).label,c=L(e,Dt);return`<figure class="kan-figure${c==="small"||c==="medium"||c==="large"?` kan-figure-${c}`:""}"><img class="kan-figure-img" src="${d(s)}" alt="${d(i)}" loading="lazy"/></figure>`}renderStatRow(e,n){let a=M(e,yt),t=this.gatherValueItems(a).filter(s=>s instanceof z);if(t.length===0)return"<!-- LookRenderer.StatRow: no look.stats -->";let o=[];for(let s of t){let i=L(s,Lt);if(!i)continue;let c=this.resolvePath(n,i);if(c===void 0)continue;let r=L(s,Ut)??"";o.push('<div class="kan-stat">'+(r?`<span class="kan-stat-label">${d(r)}</span>`:"")+`<span class="kan-stat-val">${d(c)}</span></div>`)}return o.length===0?"":`<div class="kan-stat-row">${o.join("")}</div>`}renderHorizon(e,n,a){let t=F(e,Y);if(!t)return"<!-- LookRenderer.Horizon: no look.source -->";let o=this.gatherValueItems(M(n,t)).filter(i=>i instanceof z);return o.length===0?"":`<section class="kan-horizon">${o.map(i=>this.renderConditionNode(i,a,0)).join("")}</section>`}renderConditionNode(e,n,a){let t=Se(e),o=t?this.readLabelForUri({publisher:t.publisher,package_:t.package_,name:t.name})??t.name:"Condition",s=[],i=[];for(let p of e.statement){let k=p.predicate?.subject;if(!k||k.name==="type")continue;let h=this.readLabelForUri({publisher:k.publisher,package_:k.package_,name:k.name})??k.name;if(p instanceof B||p instanceof pe||p instanceof re)s.push(`<div class="kan-cond-field"><span class="kan-cond-key">${d(h)}</span><span class="kan-cond-v">${d(String(p.object))}</span></div>`);else if(p instanceof x&&p.object instanceof S){let f=p.object.subject,m=this.readLabelForUri({publisher:f.publisher,package_:f.package_,name:f.name})??f.name;s.push(`<div class="kan-cond-field"><span class="kan-cond-key">${d(h)}</span><span class="kan-cond-v">${d(m)}</span></div>`)}else if(p instanceof X)i.push(this.renderConditionNode(p.object,n,a+1));else if(p instanceof D)for(let f of p.object??[])f instanceof z&&i.push(this.renderConditionNode(f,n,a+1))}let c=s.length?`<div class="kan-cond-fields">${s.join("")}</div>`:"",r=i.length?`<div class="kan-cond-children">${i.join("")}</div>`:"",l=i.length>0,u=l?`<span class="kan-cond-op">${d(o)}</span>`:`<div class="kan-cond-type">${d(o)}</div>`;return`<div class="kan-cond ${l?"kan-cond-branch":"kan-cond-leaf"}">${u}${c}${r}</div>`}renderSectionHeading(e){let n=e,a=L(n,un);if(!a)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let t=L(n,bt);return`<div class="kan-section" id="${jn(a)}"><h2 class="kan-section-title">${d(a)}</h2>`+(t?`<p class="kan-section-note">${d(t)}</p>`:"")+"</div>"}renderSectionNav(e){return e.length===0?"<!-- LookRenderer.SectionNav: no section headings in this view -->":`<nav class="kan-section-nav" aria-label="On this page">${e.map(a=>`<a class="kan-section-nav-link" href="#${d(a.slug)}">${d(a.label)}</a>`).join("")}</nav>`}renderVersionDelta(e,n){let t=L(e,Oe);if(!t)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let o=C=>{let N=this.resolvePath(C,t),Z=N===void 0?NaN:parseFloat(N);return Number.isFinite(Z)?Z:void 0},s=o(n);if(s===void 0)return"";let i=C=>oe((C.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},c=(C,N)=>C.major-N.major||C.minor-N.minor||C.patch-N.patch,r={publisher:P(n),package_:(n.namespace||"").split("/")[1]?.split("@")[0]??"",name:n.name},l=i(n),u,p;for(let C of le(this.catalog,r)){let N=i(C);c(N,l)<0&&(!p||c(N,p)>0)&&(u=C,p=N)}if(!u||!p)return'<div class="kan-delta kan-delta-first">First tracked in this version</div>';let k=o(u);if(k===void 0)return"";let h=s-k,f=Math.abs(h)<.005?"flat":h>0?"up":"down",m=f==="up"?"\u25B2":f==="down"?"\u25BC":"\u2014",b=f==="up"?"#34d399":f==="down"?"#f87171":"var(--kan-text-faint)",j=`${p.major}.${p.minor}.${p.patch}`,$=320,K=46,O=14,y=30,w=C=>O+Math.min(1,Math.max(0,C))*($-2*O),T=w(k),H=w(s),fe=`<svg class="kan-delta-track" viewBox="0 0 ${$} ${K}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${O}" y1="${y}" x2="${$-O}" y2="${y}" class="kan-delta-base"/><line x1="${T.toFixed(1)}" y1="${y}" x2="${H.toFixed(1)}" y2="${y}" stroke="${b}" stroke-width="3"/><circle cx="${T.toFixed(1)}" cy="${y}" r="4" class="kan-delta-prev"/><circle cx="${H.toFixed(1)}" cy="${y}" r="5.5" fill="${b}"/><text x="${T.toFixed(1)}" y="${y-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${k.toFixed(2)}</text><text x="${H.toFixed(1)}" y="${y+17}" text-anchor="middle" class="kan-delta-tick">${s.toFixed(2)}</text></svg>`;return`<div class="kan-delta"><div class="kan-delta-head"><span class="kan-delta-vs">vs ${d(j)}</span><span class="kan-delta-badge ${f}">${h>0?"+":""}${h.toFixed(2)} ${m}</span></div>`+fe+"</div>"}renderTimePlot(e,n,a){let t=F(e,Y),o=F(e,He);if(!t||!o)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let s=e,i=L(s,Kt),c=L(s,dn),r=[];for(let R of this.readPropertyValueReferences(n,t)){let W=G(this.catalog,{publisher:R.subject.publisher,package_:R.subject.package_,name:R.subject.name,...R.subject.version?{version:R.subject.version}:{}});if(!W)continue;let U=this.readPropertyValueText(W,o)??"",I=Date.parse(U);if(!Number.isFinite(I))continue;let se=i?this.resolvePath(W,i)??"":"",_=(c?this.resolvePath(W,c):void 0)??E(this.catalog,W).label;r.push({t:I,dateStr:U,lane:se,label:_,href:this.hrefForSubject(W,a),linkable:this.isLinkable(P(W),a)})}if(r.length===0)return"<!-- LookRenderer.TimePlot: no dated points -->";let l=[];for(let R of r)l.includes(R.lane)||l.push(R.lane);let u=Math.min(...r.map(R=>R.t)),p=Math.max(...r.map(R=>R.t));p===u&&(p=u+1);let k=l.some(R=>R),h=720,f=k?96:16,m=18,b=12,j=24,$=36,K=b+l.length*$+j,O=f,y=h-m,w=y-O,T=R=>O+(R-u)/(p-u)*w,H=R=>b+R*$+$/2,fe=R=>Math.round(R*360/Math.max(1,l.length)),C=[];l.forEach((R,W)=>{let U=H(W);C.push(`<line x1="${O}" y1="${U.toFixed(1)}" x2="${y}" y2="${U.toFixed(1)}" class="kan-plot-guide"/>`),R&&C.push(`<text x="${(f-8).toFixed(1)}" y="${(U+4).toFixed(1)}" text-anchor="end" class="kan-plot-lane">${ue(R)}</text>`)});let N={},Z=[];for(let R of r){let W=l.indexOf(R.lane),I=((N[R.lane]=(N[R.lane]??0)+1)%3-1)*7,se=T(R.t),_=H(W)+I,A=`${we(R.dateStr)} \xB7 ${R.label}`,Q=`<circle cx="${se.toFixed(1)}" cy="${_.toFixed(1)}" r="5" fill="hsl(${fe(W)},65%,60%)" class="kan-plot-pt"><title>${ue(A)}</title></circle>`;Z.push(R.linkable?`<a href="${d(R.href)}" class="kan-plot-link">${Q}</a>`:Q)}let ge=`<text x="${O}" y="${(K-6).toFixed(1)}" text-anchor="start" class="kan-plot-axis">${ue(we(new Date(u).toISOString()))}</text><text x="${y}" y="${(K-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${ue(we(new Date(p).toISOString()))}</text>`;return`<section class="kan-plot">${`<svg class="kan-plot-svg" viewBox="0 0 ${h} ${K}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+C.join("")+Z.join("")+ge+"</svg>"}</section>`}renderDetails(e,n,a){let t=Ye(e,Rt),o=this.detailRows(n,a,t);return o?`<dl class="kan-details">${o}</dl>`:"<!-- LookRenderer.Details: no properties -->"}detailRows(e,n,a){let t=[];for(let o of e.statement){let s=o.predicate?.subject;if(!s||this.isMetaPredicate(s)||a.some(r=>v(r,s)))continue;let i=this.readLabelForUri({publisher:s.publisher,package_:s.package_,name:s.name})??s.name,c=this.detailValue(o,n,a);c&&t.push(`<dt class="kan-details-key">${d(i)}</dt><dd class="kan-details-val">${c}</dd>`)}return t.join("")}detailValue(e,n,a){if(e instanceof B)return vn(e.object);if(e instanceof pe||e instanceof re)return d(String(e.object));if(e instanceof x&&e.object instanceof S)return this.detailReferenceLink(e.object,n);if(e instanceof X)return this.detailEmbedded(e.object,n,a);if(e instanceof D){let t=e.object??[];return t.length>0&&t.every(o=>o instanceof z)?t.map(o=>this.detailEmbedded(o,n,a)).join(""):t.map(o=>o instanceof S?this.detailReferenceLink(o,n):o instanceof z?this.detailEmbedded(o,n,a):d(String(o))).filter(o=>o).join(", ")}return""}detailReferenceLink(e,n){let a=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name;if(!this.isLinkable(e.subject.publisher,n))return`<span class="kan-link-plain">${d(a)}</span>`;let t=this.urlForReference(e,void 0,n);return`<img class="kan-md-chip" src="${d(`${t}.svg`)}" alt="" loading="lazy"><a class="kan-link" href="${d(t)}">${d(a)}</a>`}detailEmbedded(e,n,a){let t=Se(e),o=t?this.readLabelForUri({publisher:t.publisher,package_:t.package_,name:t.name})??t.name:"",s=this.detailRows(e,n,a);return'<div class="kan-details-embed">'+(o?`<span class="kan-details-type">${d(o)}</span>`:"")+(s?`<dl class="kan-details">${s}</dl>`:"")+"</div>"}rangeTypeRefs(e){let n=G(this.catalog,e);if(!n)return[];let a=M(n,En);return a instanceof x&&a.object instanceof S?[a.object]:[]}renderEmbeddedViews(e,n,a,t=""){let o=F(e,Y);if(!o)return"<!-- LookRenderer: EmbeddedViews missing look.source -->";let s=this.gatherValueItems(M(n,o)).filter(k=>k instanceof z);if(s.length===0)return"";let i=t?`${t}.${o.name}`:o.name,c=M(e,Gt),r=c instanceof re?c.object===!0:c instanceof B&&c.object==="true",l=[],u=s.map(k=>{let h=k,f=k.name?`${i}.${k.name}`:"";if(r&&f){let y=E(this.catalog,h).label||k.name||f;l.push(`<a class="kan-section-nav-link" href="#${d(f)}">${d(y)}</a>`)}let m=ae(h),b=m.length>0?m:this.rangeTypeRefs(o),j=Ie(h)?this.findCascadedLook(h):this.lookFromTypeRefs(b),$="";if(j)$=ze(j.declaration).map(y=>this.renderBand(y,h,a,[],f)).join(`
78
- `);else{let y=this.detailRows(k,a,[]);$=y?`<dl class="kan-details">${y}</dl>`:""}let K=f?` id="${d(f)}"`:"",O=f?this.anchorLink(f):"";return`<section class="kan-embedded-view"${K}>${O}${$}</section>`});return`<div class="kan-embedded-views">${l.length>0?`<nav class="kan-section-nav" aria-label="On this page">${l.join("")}</nav>
79
- `:""}${u.join(`
80
- `)}</div>`}anchorLink(e){return`<a class="kan-anchor" href="#${d(e)}" title="${d(e)}" aria-label="Link to this resource">#</a>`}isMetaPredicate(e){return v(e,At)||v(e,Ve)||v(e,on)||v(e,xe)||v(e,Ee)||v(e,St)||v(e,gn)||v(e,ft)}renderPackageContents(e,n){let a=e.namespace||"";if(!a)return"";let t=this.catalog.filter(s=>s instanceof J&&s.namespace===a&&s.name!==e.name);return t.length===0?`<!-- LookRenderer.PackageContents: no members in ${a} -->`:(t.sort((s,i)=>{let c=E(this.catalog,s).label,r=E(this.catalog,i).label;return c.localeCompare(r)}),`<section class="kan-pkg-grid">${t.map(s=>{let i=E(this.catalog,s),c=i.label,r=i.summary,l=r?qe(r,160):"",u=this.hrefForSubject(s,n),p=this.svgUrlForSubject(s,n);return`<a class="kan-pkg-card" href="${d(u)}"><img class="kan-pkg-card-svg" src="${d(p)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${d(c)}</span>`+(l?`<span class="kan-pkg-card-comment">${d(l)}</span>`:"")+"</span></a>"}).join("")}</section>`)}renderReferencedBy(e,n,a){let t=F(e,Nt),o={publisher:P(n),package_:(n.namespace||"").split("/")[1]?.split("@")[0]??"",name:n.name},s=V(o),i=p=>oe((p.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},c=(p,k)=>p.major-k.major||p.minor-k.minor||p.patch-k.patch,r=new Map;for(let p of this.catalog){if(!(p instanceof J))continue;let k=V({publisher:P(p),package_:(p.namespace||"").split("/")[1]?.split("@")[0]??"",name:p.name});if(k!==s)for(let h of p.statement){let f=h.predicate?.subject;if(!f||f.name==="type"||t&&V(f)!==V(t))continue;let m=[];if(h instanceof x&&h.object instanceof S)m.push(h.object);else if(h instanceof D)for(let K of h.object??[])K instanceof S&&m.push(K);if(!m.some(K=>V(K.subject)===s))continue;let b=V(f),j=r.get(b);j||(j={label:this.readLabelForUri(f)??f.name,best:new Map},r.set(b,j));let $=j.best.get(k);(!$||c(i(p),i($))>0)&&j.best.set(k,p)}}return r.size===0?"<!-- LookRenderer.ReferencedBy: no incoming references -->":`<div class="kan-section"><h2 class="kan-section-title">Referenced by</h2></div>${[...r.values()].sort((p,k)=>p.label.localeCompare(k.label)).map(p=>{let h=[...p.best.values()].sort((f,m)=>E(this.catalog,f).label.localeCompare(E(this.catalog,m).label)).map(f=>this.resourceCard(f,a,n.namespace??void 0)).join("");return`<div class="kan-rel-group"><h3 class="kan-rel-prop"><span class="kan-rel-dir" title="incoming \u2014 references this resource">\u2190</span> ${d(p.label)}</h3><section class="kan-pkg-grid">${h}</section></div>`}).join("")}`}resourceCard(e,n,a){let t=E(this.catalog,e),o=t.summary?qe(t.summary,160):"",s=ae(e).map(m=>this.readLabelForUri({publisher:m.subject.publisher,package_:m.subject.package_,name:m.subject.name})??m.subject.name),c='<span class="kan-pkg-card-body">'+(s.length>0?`<span class="kan-card-types">${s.map(m=>`<span class="kan-card-type">${d(m)}</span>`).join("")}</span>`:"")+`<span class="kan-pkg-card-title">${d(t.label)}</span>`+(o?`<span class="kan-pkg-card-comment">${d(o)}</span>`:"")+"</span>",r=this.isLinkable(P(e),n),l=r?`<a class="kan-pkg-card-link" href="${d(this.hrefForSubject(e,n))}"><img class="kan-pkg-card-svg" src="${d(this.svgUrlForSubject(e,n))}" alt="" loading="lazy"/>`+c+"</a>":`<span class="kan-pkg-card-link">${c}</span>`,u=e.namespace||"",p=u.split("/")[0]??"",[k,h]=(u.split("/")[1]??"").split("@"),f="";if(k&&u!==a){let m=h?`<span class="kan-card-at">@</span><span class="kan-card-ver">${d(h)}</span>`:"";if(r){let b=`<span class="kan-card-pkg">${d(k)}</span>${m}`;f=`<a class="kan-pkg-card-foot" href="/${d(k)}${h?"/"+d(h):""}" title="${d(h?`${k}@${h}`:k)}">${b}</a>`}else{let b=`<span class="kan-card-pub">${d(p)}/</span><span class="kan-card-pkg">${d(k)}</span>${m}`;f=`<span class="kan-pkg-card-foot" title="${d(h?`${p}/${k}@${h}`:`${p}/${k}`)}">${b}</span>`}}return`<div class="kan-pkg-card kan-pkg-card--foot">${l}${f}</div>`}renderInstances(e,n,a){let t={publisher:P(n),package_:(n.namespace||"").split("/")[1]?.split("@")[0]??"",name:n.name},o=M(e,Wt),s=o instanceof re?o.object===!0:o instanceof B&&o.object==="true",i=s?this.subclassClosure(t):new Set([V(t)]),c=b=>oe((b.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},r=(b,j)=>b.major-j.major||b.minor-j.minor||b.patch-j.patch,l=new Map;for(let b of this.catalog){if(!(b instanceof J)||!ae(b).some(O=>i.has(V(O.subject))))continue;let $=V({publisher:P(b),package_:(b.namespace||"").split("/")[1]?.split("@")[0]??"",name:b.name}),K=l.get($);(!K||r(c(b),c(K))>0)&&l.set($,b)}let u=[...l.values()];if(u.length===0)return"<!-- LookRenderer.Instances: none -->";u.sort((b,j)=>E(this.catalog,b).label.localeCompare(E(this.catalog,j).label));let p=48,k=u.slice(0,p),h=k.map(b=>this.resourceCard(b,a,n.namespace??void 0)),f=u.length>p?` <span class="kan-count">${k.length} of ${u.length}</span>`:` <span class="kan-count">${u.length}</span>`;return`<div class="kan-section"><h2 class="kan-section-title">${s?"Instances (including subtypes)":"Instances"}${f}</h2></div><section class="kan-pkg-grid">${h.join("")}</section>`}subclassClosure(e){let n=new Set([V(e)]),a=!0;for(;a;){a=!1;for(let t of this.catalog){if(!(t instanceof J))continue;let o=V({publisher:P(t),package_:(t.namespace||"").split("/")[1]?.split("@")[0]??"",name:t.name});if(!n.has(o)){for(let s of Ke(t))if(n.has(V(s.subject))){n.add(o),a=!0;break}}}}return n}referencesTarget(e,n,a){for(let t of e.statement){let o=t.predicate?.subject;if(o?.name==="type"||a&&!(o&&V(o)===V(a)))continue;let s=[];if(t instanceof x&&t.object instanceof S)s.push(t.object);else if(t instanceof D)for(let i of t.object??[])i instanceof S&&s.push(i);for(let i of s)if(V(i.subject)===n)return!0}return!1}renderFeaturedResource(e,n){let a=F(e,Y);if(!a)return"<!-- LookRenderer.FeaturedResource: no look.source -->";let t=le(this.catalog,a),o=r=>oe((r.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},s=t.length>0?t.slice().sort((r,l)=>{let u=o(r),p=o(l);return p.major-u.major||p.minor-u.minor||p.patch-u.patch})[0]:G(this.catalog,a);if(!s)return`<!-- LookRenderer.FeaturedResource: ${a.publisher}/${a.package_}/${a.name} not found -->`;let i=this.renderHtml(s),c=this.hrefForSubject(s,n);return`<section class="kan-featured"><a class="kan-featured-permalink" href="${d(c)}">View full resource \u2192</a>`+i+"</section>"}renderDistribution(e,n){let a=e,t=U=>{let I=L(a,U);if(!I)return;let se=this.resolvePath(n,I),_=se===void 0?NaN:parseFloat(se);return Number.isFinite(_)?_:void 0},o=t(gt),s=t(ht);if(o===void 0||s===void 0||o<=0||s<=0)return"<!-- LookRenderer.Distribution: needs resolvable alphaPath + betaPath (> 0) -->";let i=t(Oe)??o/(o+s),c=t(fn),r=t(kn),l=t(Be),u=l!==void 0?`hsl(${l},65%,60%)`:"var(--kan-accent)",p=U=>Number.isInteger(U)?String(U):U.toFixed(1),k=280,h=168,f={top:14,right:14,bottom:24,left:14},m=k-f.left-f.right,b=h-f.top-f.bottom,j=120,$=1e-4,K=[],O=[],y=0;for(let U=0;U<=j;U++){let I=U/j;I<$?I=$:I>1-$&&(I=1-$);let se=Math.exp((o-1)*Math.log(I)+(s-1)*Math.log(1-I));K.push(I),O.push(se),se>y&&(y=se)}let w=U=>f.left+Math.min(1,Math.max(0,U))*m,T=U=>f.top+(1-(y>0?U/y:0))*b,H=f.top+b,fe=K.map((U,I)=>`${w(U).toFixed(1)},${T(O[I]).toFixed(1)}`),C=`M${w(0).toFixed(1)},${H.toFixed(1)} L${fe.join(" L")} L${w(1).toFixed(1)},${H.toFixed(1)} Z`,N="";if(c!==void 0&&r!==void 0&&r>c){let U=[`${w(c).toFixed(1)},${H.toFixed(1)}`];for(let I=0;I<=j;I++)K[I]>=c&&K[I]<=r&&U.push(`${w(K[I]).toFixed(1)},${T(O[I]).toFixed(1)}`);U.push(`${w(r).toFixed(1)},${H.toFixed(1)}`),N=`<path d="M${U.join(" L")} Z" fill="${u}" fill-opacity="0.3"/>`}let Z=w(i),ge=`<line x1="${Z.toFixed(1)}" y1="${f.top.toFixed(1)}" x2="${Z.toFixed(1)}" y2="${H.toFixed(1)}" stroke="${u}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${Z.toFixed(1)}" y="${(f.top-3).toFixed(1)}" text-anchor="middle" class="kan-dist-mean">\u03BC ${i.toFixed(2)}</text>`,_e=`<text x="${w(0).toFixed(1)}" y="${(H+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${w(1).toFixed(1)}" y="${(H+15).toFixed(1)}" text-anchor="end" class="kan-dist-axis">1</text>`,R=`<svg class="kan-dist-svg" viewBox="0 0 ${k} ${h}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${f.left}" y1="${H.toFixed(1)}" x2="${(k-f.right).toFixed(1)}" y2="${H.toFixed(1)}" class="kan-dist-base"/><path d="${C}" fill="${u}" fill-opacity="0.12"/>`+N+`<polyline points="${fe.join(" ")}" fill="none" stroke="${u}" stroke-width="2"/>`+ge+_e+"</svg>",W=c!==void 0&&r!==void 0?` \xB7 95% CI [${c.toFixed(2)}\u2013${r.toFixed(2)}]`:"";return`<figure class="kan-dist">${R}<figcaption class="kan-dist-caption">Beta(${p(o)}, ${p(s)})${W}</figcaption></figure>`}renderPublisherPackages(e,n){let a=new Map;for(let c of this.catalog){if(!(c instanceof J)||P(c)!==n)continue;let r=(c.namespace||"").split("/")[1]?.split("@")[0]??"";if(!r||c.name!==r)continue;let l=a.get(r),u=oe((c.namespace||"").split("@")[1]??""),p=l?oe((l.namespace||"").split("@")[1]??""):void 0;(!l||u&&(!p||ye(u,p)>0))&&a.set(r,c)}let t,o=M(e,ot),s=o instanceof D?o.object??[]:o instanceof x&&o.object instanceof S?[o.object]:[];if(s.length>0){t=[];for(let c of s){if(!(c instanceof S))continue;let r=c.subject.package_,l=a.get(r);l&&t.push([r,l])}}else t=[...a.entries()].sort((c,r)=>c[0].localeCompare(r[0]));return t.length===0?"":`<section class="kan-pkg-grid">${t.map(([c,r])=>{let l=E(this.catalog,r),u=l.label,p=l.summary,k=p?qe(p,160):"",h=this.svgUrlForSubject(r,n);return`<a class="kan-pkg-card" href="/${d(c)}"><img class="kan-pkg-card-svg" src="${d(h)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${d(u)}</span>`+(k?`<span class="kan-pkg-card-comment">${d(k)}</span>`:"")+"</span></a>"}).join("")}</section>`}renderTimeline(e,n){let a=F(e,Y);if(!a)return"<!-- LookRenderer.Timeline: no look.source -->";let t=F(e,He),o=this.findInstancesOfClass(a);if(o.length===0)return"<!-- LookRenderer.Timeline: no instances -->";let s=u=>t?this.readPropertyValueText(u,t)??"":"",i=o.slice().sort((u,p)=>s(u).localeCompare(s(p))),c=F(e,pn),r=L(e,Oe);return c&&r?this.renderTrajectoryChart(i,c,r,e,n,s):`<section class="kan-timeline"><ol>
81
- ${i.map(u=>{let p=u.namespace||"",k=p.split("/")[1]?.split("@")[0]??"",h=p.split("@")[1]??"",f=h?oe(h):void 0,m=me.formatResourceUrl({publisher:P(u),package_:k,name:u.name,...f?{version:f}:{}},"=",{contextPublisher:n}),b=s(u),j=b?`<span class="kan-timeline-date">${d(b)}</span>`:"",$=h||u.name;return`<li class="kan-timeline-node"><a href="${d(m)}"><span class="kan-timeline-key">${d($)}</span>${j}</a></li>`}).join(`
82
- `)}
83
- </ol></section>`}renderTrajectoryChart(e,n,a,t,o,s){let i=t,c=L(i,Be),r=L(i,fn),l=L(i,kn),u=L(i,xt),p=$n(i,It),k=$n(i,wt),h=e.length,f=this.collectTrackedSeries(e,n,a,{hueBy:c,lowerPath:r,upperPath:l});if(f.length===0)return"<!-- LookRenderer.Timeline: no tracked series -->";let m=[];for(let _ of f){for(let A of _.points)A!==null&&m.push(A);for(let A of _.lower??[])A!==null&&m.push(A);for(let A of _.upper??[])A!==null&&m.push(A)}if(m.length===0)return"<!-- LookRenderer.Timeline: no metric values -->";let b=Math.min(...m),j=Math.max(...m);j-b<1e-9&&(b-=.5,j+=.5);let $=(j-b)*.08,K=p!==void 0?p:b-$,O=k!==void 0?k:j+$;O-K<1e-9&&(O=K+1);let y=1e3,w=440,T={top:28,right:24,bottom:56,left:52},H=y-T.left-T.right,fe=w-T.top-T.bottom,C=_=>h<=1?T.left+H/2:T.left+_/(h-1)*H,N=_=>T.top+(1-(_-K)/(O-K))*fe,Z=(_,A)=>_.hue!==void 0?_.hue:Math.round(A*360/f.length),ge=[];for(let _=0;_<5;_++){let A=K+_*(O-K)/4,Q=N(A);ge.push(`<line x1="${T.left}" y1="${Q.toFixed(1)}" x2="${(y-T.right).toFixed(1)}" y2="${Q.toFixed(1)}" class="kan-fan-grid"/>`),ge.push(`<text x="${(T.left-8).toFixed(1)}" y="${(Q+4).toFixed(1)}" class="kan-fan-axis" text-anchor="end">${A.toFixed(2)}</text>`)}let _e=[];e.forEach((_,A)=>{let Q=this.hrefForSubject(_,o),ee=(_.namespace||"").split("@")[1]??"",q=C(A),ne=we(s(_));_e.push(`<a href="${d(Q)}" class="kan-fan-xtick"><line x1="${q.toFixed(1)}" y1="${T.top}" x2="${q.toFixed(1)}" y2="${(w-T.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${q.toFixed(1)}" y="${(w-T.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${ue(ee||_.name)}</text>`+(ne?`<text x="${q.toFixed(1)}" y="${(w-T.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${ue(ne)}</text>`:"")+"</a>")});let R=[];f.forEach((_,A)=>{if(!_.lower||!_.upper)return;let Q=Z(_,A),ee=[],q=[];for(let te=0;te<h;te++){let he=_.upper[te],ke=_.lower[te];he==null||ke===null||ke===void 0||(ee.push(`${C(te).toFixed(1)},${N(he).toFixed(1)}`),q.unshift(`${C(te).toFixed(1)},${N(ke).toFixed(1)}`))}let ne=ee.concat(q);ne.length<3||R.push(`<polygon class="kan-fan-band" points="${ne.join(" ")}" fill="hsl(${Q},65%,60%)"/>`)});let W=[];f.forEach((_,A)=>{let ee=`hsl(${Z(_,A)},65%,60%)`,q=[],ne=[];_.points.forEach((te,he)=>{if(te===null)return;let ke=C(he),ie=N(te);q.push(`${ke.toFixed(1)},${ie.toFixed(1)}`),ne.push(`<circle cx="${ke.toFixed(1)}" cy="${ie.toFixed(1)}" r="3.5" fill="${ee}"/>`)}),q.length!==0&&W.push(`<g class="kan-fan-series" data-series="${d(_.key)}"><polyline points="${q.join(" ")}" fill="none" stroke="${ee}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`+ne.join("")+"</g>")});let U=`<svg class="kan-fan-svg" viewBox="0 0 ${y} ${w}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+ge.join("")+_e.join("")+R.join("")+W.join("")+"</svg>",I=u?`${d(u)}=`:"",se=f.map((_,A)=>{let Q=Z(_,A),ee=_.points.filter(ie=>ie!==null),q=ee.length?ee[0]:void 0,ne=ee.length?ee[ee.length-1]:void 0,te="";if(ne!==void 0&&q!==void 0){let ie=ne-q;if(Math.abs(ie)>=.005){let Rn=ie>0?"up":"down",Sn=ie>0?"\u25B2":"\u25BC";te=` <span class="kan-fan-delta ${Rn}">${ie>0?"+":""}${ie.toFixed(2)} ${Sn}</span>`}else te=' <span class="kan-fan-delta flat">\u2014</span>'}let he=ne!==void 0?`${I}${ne.toFixed(2)}`:"\u2014",ke=_.lastSubject&&this.isLinkable(P(_.lastSubject),o)?`<a href="${d(this.hrefForSubject(_.lastSubject,o))}">${d(_.label)}</a>`:d(_.label);return`<div class="kan-fan-legend-item" style="--kan-fan-hue:${Q}"><span class="kan-fan-swatch"></span><span class="kan-fan-legend-label">${ke}</span><span class="kan-fan-legend-cur">${he}${te}</span></div>`});return`<section class="kan-fan"><div class="kan-fan-chart">${U}</div><div class="kan-fan-legend">${se.join("")}</div></section>`}renderResourceGrid(e,n,a){let t=F(e,Y);if(!t)return"<!-- LookRenderer.ResourceGrid: no look.source -->";let o=G(this.catalog,t),s=o?ae(o).some(r=>{let l=r.subject.name;return l==="ObjectProperty"||l==="DatatypeProperty"||l==="Property"}):!1,i=[];if(s&&a){let r=this.readPropertyValueReferences(a,t);for(let l of r){let u=G(this.catalog,{publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name,...l.subject.version?{version:l.subject.version}:{}});u&&i.push(u)}}else i=this.findInstancesOfClass(t);if(i.length===0)return`<!-- LookRenderer.ResourceGrid: no resources for ${t.publisher}/${t.package_}/${t.name} -->`;let c=[];for(let r of i){let l=E(this.catalog,r),u=l.label,p=l.summary,k=r.namespace||"",h=k.split("/")[1]?.split("@")[0]??"",f=k.split("@")[1]??"",m=f?oe(f):void 0,b=me.formatResourceUrl({publisher:P(r),package_:h,name:r.name,...m?{version:m}:{}},"=",{contextPublisher:n}),j=p?`<p class="kan-resource-card-subtitle">${d(p)}</p>`:"",$=`<h3 class="kan-resource-card-title">${d(u)}</h3>${j}`;c.push(this.isLinkable(P(r),n)?`<a class="kan-resource-card" href="${d(b)}">${$}</a>`:`<span class="kan-resource-card">${$}</span>`)}return`<section class="kan-resource-grid">
84
- ${c.join(`
85
- `)}
86
- </section>`}findInstancesOfClass(e){let n=[];for(let a of this.catalog){if(!(a instanceof J))continue;ae(a).map(s=>s.subject).some(s=>s.publisher===e.publisher&&s.package_===e.package_&&s.name===e.name)&&n.push(a)}return n}renderBreadcrumb(e,n,a){let o=(e.namespace||"").split("/");if(o.length<2)return"";let s=o[0],i=o[1]??"",c=i.split("@")[0]??"",r=i.split("@")[1]??"";if(!s||!c)return"";if(a?.bareOverview)return`<nav class="kan-breadcrumb"><ol>
87
- <li><a href="/">${d(s)}</a></li>
88
- <li aria-current="page">${d(c)}</li>
89
- </ol></nav>`;let l=e.name,p=!!G(this.catalog,{publisher:s,package_:c,name:c}),k=r?`${c}@${r}`:c,h=r?`/${c}/${r}/${c}`:`/${c}/${c}`,f=e.name===c,m=[];return m.push(`<li><a href="/">${d(s)}</a></li>`),f?m.push(`<li aria-current="page">${d(k)}</li>`):(m.push(p?`<li><a href="${d(h)}">${d(k)}</a></li>`:`<li>${d(k)}</li>`),m.push(`<li aria-current="page">${d(l)}</li>`)),`<nav class="kan-breadcrumb"><ol>
90
- ${m.join(`
91
- `)}
92
- </ol></nav>`}renderNavGroup(e,n){let a=M(this.publisherSubject(n),Gn),t=a instanceof D?a.object??[]:a instanceof x&&a.object instanceof S?[a.object]:[];if(t.length===0)return"";let o=[];for(let s of t){if(!(s instanceof S))continue;let i=G(this.catalog,{publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name}),{href:c,label:r}=this.resolveNavEntry(s,i,n),l=`/${e.namespace?.split("/")[1]?.split("@")[0]}/${(e.namespace||"").split("@")[1]}/${e.name}`,u=c===l?' aria-current="page"':"";o.push(`<li><a class="kan-nav-link" href="${d(c)}"${u}>${d(r)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
93
- ${o.join(`
94
- `)}
95
- </ul></nav>`}renderSiteFooter(e){let n=M(this.publisherSubject(e),Wn),a;if(n instanceof X?a=n.object:n instanceof x&&n.object instanceof S&&(a=G(this.catalog,{publisher:n.object.subject.publisher,package_:n.object.subject.package_,name:n.object.subject.name})),!a)return"";let t=L(a,zn),o=M(a,Yn),s=o instanceof D?o.object??[]:o instanceof x&&o.object instanceof S?[o.object]:[],i=[];for(let r of s){if(!(r instanceof S))continue;let l=G(this.catalog,{publisher:r.subject.publisher,package_:r.subject.package_,name:r.subject.name}),{href:u,label:p}=this.resolveNavEntry(r,l,e);i.push(`<a class="kan-footer-link" href="${d(u)}">${d(p)}</a>`)}if(!t&&i.length===0)return"";let c=[];return i.length>0&&c.push(`<div class="kan-footer-links">${i.join("")}</div>`),t&&c.push(`<p class="kan-footer-text">${d(t)}</p>`),`<footer class="kan-site-footer">${c.join(`
96
- `)}</footer>`}resolveNavEntry(e,n,a){if(n&&ae(n).map(c=>c.subject).some(c=>c.publisher===Ne.publisher&&c.package_===Ne.package_&&c.name===Ne.name)){let c=L(n,Ve),r=M(n,cn);if(r instanceof x&&r.object instanceof S){let l=r.object,u=this.readLabelForUri({publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name});return{href:this.urlForReference(l,cn,a),label:c??u??l.subject.name}}}let t=me.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},"*",{contextPublisher:a}),o=n?E(this.catalog,n).label:e.subject.name;return{href:t,label:o}}codeHighlighter(){return this._codeHighlighter||(this._codeHighlighter=new Ue(this.collectGrammars())),this._codeHighlighter}collectGrammars(){let e=[];for(let n of this.catalog){if(!(n instanceof J)||!ae(n).some(i=>v(i.subject,rt)))continue;let a=L(n,it);if(!a)continue;let t=M(n,ct),o=t instanceof D?t.object??[]:[],s=[];for(let i of o){if(!(i instanceof z))continue;let c=F(i,lt),r=L(i,ut);!c||!r||s.push({tokenClass:c.name,pattern:r})}e.push({language:a,rules:s})}return e}renderLinks(e,n){let a=F(e,Y);if(!a)return"";let t=M(n,a),o=[];t instanceof D?o=t.object??[]:t instanceof X?o=[t.object]:t instanceof x&&t.object instanceof S&&(o=[t.object]);let s=[];for(let i of o){let c;if(i instanceof z?c=i:i instanceof S&&(c=G(this.catalog,{publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name})),!c)continue;let r=L(c,pt);if(!r)continue;let l=L(c,Ve)??r,u=L(c,on),p=u?` title="${d(u)}"`:"";s.push(`<a class="kan-extlink" href="${d(r)}"${p} target="_blank" rel="noopener noreferrer">${d(l)}</a>`)}return s.length===0?"":`<section class="kan-extlink-row">${s.join("")}</section>`}renderMarkdown(e,n,a){let t=F(e,Y);if(!t)return"<!-- LookRenderer.Markdown: no look.source -->";let o=M(n,t),s=new Map,i;if(o instanceof Le?i=this.resolveMarkdownLinks(o,a,s):o instanceof B?i=o.object:i=this.readPropertyValueText(n,t),!i)return"";let c=this.codeHighlighter(),r=Me(i,{highlight:(l,u)=>c.highlight(l,u)});for(let[l,u]of s){let p=new RegExp('(<a href="'+_n(l)+'">)([^<]*)(</a>)',"g");r=r.replace(p,`$1<img class="kan-md-chip" src="${d(u)}" alt="" loading="lazy">$2$3`)}return`<section class="kan-markdown">
97
- ${r}
98
- </section>`}resolveMarkdownLinks(e,n,a){let t=e.object,o=[...e.links].sort((s,i)=>i.startOffset-s.startOffset);for(let s of o){let i;if(s.target&&this.isLinkable(s.target.subject.publisher,n)){let c=s.target.subject,r=(s.displayText??this.readLabelForUri({publisher:c.publisher,package_:c.package_,name:c.name})??s.reference).replace(/[[\]]/g,""),l=me.formatResourceUrl({publisher:c.publisher,package_:c.package_,name:c.name,...c.version?{version:c.version}:{}},"=",{contextPublisher:n});a&&a.set(l,`${l}.svg`),i=`[${r}](${l})`}else if(s.target){let c=s.target.subject;i=(s.displayText??this.readLabelForUri({publisher:c.publisher,package_:c.package_,name:c.name})??s.reference).replace(/[[\]]/g,"")}else i=s.displayText??s.reference;t=t.slice(0,s.startOffset)+i+t.slice(s.endOffset)}return t}renderRawMarkdown(e){let n=this.findCascadedLook(e);if(!n)return;let a=ze(n.declaration),t=[];for(let o of a){let s=Se(o);if(!s||!v(s,rn))continue;let i=F(o,Y);if(!i)continue;let c=this.readPropertyValueText(e,i);c&&t.push(c)}return t.length>0?t.join(`
99
-
100
- `):void 0}renderHero(e,n,a){let t=f=>{let m=M(e,f);return m instanceof re?m.object===!0:m instanceof B&&m.object==="true"},o=t(Bt),s=!o&&t(Ht),i=o||s,r=[`<header class="${o?"kan-hero kan-hero-has-avatar":s?"kan-hero kan-hero-has-icon":"kan-hero"}">`];if(i){let f=this.svgUrlForSubject(n,a),m=o?"kan-hero-avatar":"kan-hero-icon";r.push(`<img class="${m}" src="${d(f)}" alt="" loading="lazy"/>`),r.push('<div class="kan-hero-text">')}let l=F(e,Mt);if(l){let f=this.readPropertyValueText(n,l);f&&r.push(`<span class="kan-hero-eyebrow">${d(Fe(f)??f)}</span>`)}let u=F(e,Pt),p="";u&&(p=this.readPropertyValueText(n,u)??""),p||(p=E(this.catalog,n).label),r.push(`<h1 class="kan-hero-title">${d(Fe(p)??p)}</h1>`);let k=F(e,Vt);if(k){let f=this.readPropertyValueText(n,k);f&&r.push(`<p class="kan-hero-subtitle">${d(Fe(f)??f)}</p>`)}let h=F(e,mn);if(h){let f=this.readPropertyValueReferences(n,h);if(f.length>0){let m=f.map(b=>this.renderBadge(b,mn,a)).join("");r.push(`<div class="kan-hero-badges">${m}</div>`)}}return i&&r.push("</div>"),r.push("</header>"),r.join(`
101
- `)}renderPropertyList(e,n,a){let t=F(e,Y);if(!t)return"<!-- LookRenderer: PropertyList missing look.source -->";let o=this.readLabelForUri(t)??t.name,s=M(n,t),i=this.gatherValueItems(s),c=i.length>0?i.map(r=>`<li>${this.renderInlineValue(r,Y,a)}</li>`).join(""):'<li class="kan-empty">(no values)</li>';return['<section class="kan-property-list">',`<h3 class="kan-property-list-title">${d(o)}</h3>`,`<ul class="kan-property-list-items">${c}</ul>`,"</section>"].join(`
102
- `)}renderPropertyTable(e,n,a,t=""){let o=F(e,Y);if(!o)return"<!-- LookRenderer: PropertyTable missing look.source -->";let s=this.gatherValueItems(M(n,o)).filter(r=>r instanceof z);if(s.length===0)return"";let i=this.readLabelForUri(o)??o.name,c=t?`${t}.${o.name}`:o.name;return this.renderEmbeddedTable(s,a,i,c)}renderEmbeddedTable(e,n,a,t){let o=[],s=new Set;for(let f of e)for(let m of f.statement){let b=m.predicate?.subject;if(!b||this.isMetaPredicate(b))continue;let j=`${b.publisher}/${b.package_}/${b.name}`;s.has(j)||(s.add(j),o.push({uri:{publisher:b.publisher,package_:b.package_,name:b.name},label:this.readLabelForUri(b)??b.name}))}if(o.length===0)return"";let i=e.map(f=>E(this.catalog,f).label),c=e.some((f,m)=>i[m]!==""&&i[m]!==f.name),r=!!t,l=(r?'<th class="kan-anchor-col"></th>':"")+(c?"<th></th>":"")+o.map(f=>`<th>${d(f.label)}</th>`).join(""),u=e.map((f,m)=>{let b=r&&f.name?`${t}.${f.name}`:"",j=b?` id="${d(b)}"`:"",$=r?`<td class="kan-anchor-col">${b?this.anchorLink(b):""}</td>`:"",K=c?`<th scope="row">${d(i[m]??"")}</th>`:"",O=o.map(y=>{let w=M(f,y.uri);return`<td>${w?this.tableCellValue(w,n):""}</td>`}).join("");return`<tr${j}>${$}${K}${O}</tr>`}).join(""),p=r&&t?` id="${d(t)}"`:"",k=r&&t?this.anchorLink(t):"",h=a?`<caption>${d(a)}${k}</caption>`:"";return`<table class="kan-property-table"${p}>${h}<thead><tr>${l}</tr></thead><tbody>${u}</tbody></table>`}tableCellValue(e,n){if(e instanceof Le)return this.statementToMarkdownHtml(e,n);if(e instanceof B)return vn(e.object);if(e instanceof pe||e instanceof re)return d(String(e.object));if(e instanceof x&&e.object instanceof S)return this.detailReferenceLink(e.object,n);if(e instanceof X)return this.renderEmbeddedTable([e.object],n);if(e instanceof D){let a=e.object??[],t=a.filter(o=>o instanceof z);return t.length>0&&t.length===a.length?this.renderEmbeddedTable(t,n):a.map(o=>o instanceof S?this.detailReferenceLink(o,n):o instanceof z?this.renderEmbeddedTable([o],n):d(String(o))).filter(o=>o).join(", ")}return""}statementToMarkdownHtml(e,n){let a=new Map,t;if(e instanceof Le?t=this.resolveMarkdownLinks(e,n,a):e instanceof B&&(t=e.object),!t)return"";let o=this.codeHighlighter(),s=Me(t,{highlight:(i,c)=>o.highlight(i,c)});for(let[i,c]of a){let r=new RegExp('(<a href="'+_n(i)+'">)([^<]*)(</a>)',"g");s=s.replace(r,`$1<img class="kan-md-chip" src="${d(c)}" alt="" loading="lazy">$2$3`)}return s}renderBadgeRow(e,n,a){let t=F(e,Y);if(!t)return"<!-- LookRenderer: BadgeRow missing look.source -->";let o=this.readPropertyValueReferences(n,t);return o.length===0?"":`<div class="kan-badge-row">${o.map(i=>this.renderBadge(i,Y,a)).join("")}</div>`}renderChipRow(e,n,a){let t=Ye(e,zt);if(t.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let o=[];for(let s of t){let i=M(n,s);if(!i)continue;let c=this.readLabelForUri(s)??s.name,r=this.renderStatementInlineValue(i,s,a);r&&o.push(`<span class="kan-chip"><span class="kan-chip-key">${d(c)}</span> <span class="kan-chip-val">${r}</span></span>`)}return o.length===0?"":`<div class="kan-chip-row">${o.join("")}</div>`}renderReferenceList(e,n,a){let t=Ye(e,bn);if(t.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let o=L(e,dn),s=L(e,Ot),i=[];for(let c of t){let r=this.readPropertyValueReferences(n,c);if(r.length===0)continue;let l=this.readLabelForUri(c)??c.name;if(o){let u=r.map(p=>this.renderDetailRow(p,o,s,a)).filter(p=>p).join("");u&&i.push(`<dt>${d(l)}</dt><dd><ul class="kan-ref-rows">${u}</ul></dd>`)}else{let u=r.map(p=>this.renderReferenceLink(p,bn,a)).join(", ");i.push(`<dt>${d(l)}</dt><dd>${u}</dd>`)}}return i.length===0?"":`<dl class="kan-reference-list">${i.join("")}</dl>`}renderDetailRow(e,n,a,t){let o=G(this.catalog,{publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name,...e.subject.version?{version:e.subject.version}:{}});if(!o)return"";let s=this.resolvePath(o,n)??E(this.catalog,o).label,i="";if(a){let u=this.resolvePath(o,a);u&&(i=`<span class="kan-ref-badge">${d(u)}</span>`)}let c=`<span class="kan-ref-text">${d(s)}</span>${i}`;if(!this.isLinkable(P(o),t))return`<li class="kan-ref-row"><span class="kan-ref-rowlink">${c}</span></li>`;let r=this.hrefForSubject(o,t),l=this.svgUrlForSubject(o,t);return`<li class="kan-ref-row"><a class="kan-ref-rowlink" href="${d(r)}"><img class="kan-ref-icon" src="${d(l)}" alt="" loading="lazy"/>`+c+"</a></li>"}readPropertyValueText(e,n){let a=M(e,n);if(a){if(a instanceof B)return a.object;if(a instanceof x){let t=a.object;return this.readLabelForUri({publisher:t.subject.publisher,package_:t.subject.package_,name:t.subject.name})??t.subject.name}if(a instanceof X)return this.readEmbeddedText(a.object,0)||void 0;if(a instanceof D)return(a.object??[]).map(o=>o instanceof S?this.readLabelForUri({publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name})??o.subject.name:o instanceof z?this.readEmbeddedText(o,0):String(o)).filter(o=>o).join(", ")}}readEmbeddedText(e,n){if(n>=hn)return"\u2026";let a=[];for(let t of e.statement)if(t.predicate?.subject?.name!=="type")if(t instanceof B)a.push(t.object);else if(t instanceof pe||t instanceof re)a.push(String(t.object));else if(t instanceof x){let s=t.object;a.push(this.readLabelForUri({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name})??s.subject.name)}else t instanceof X&&a.push(this.readEmbeddedText(t.object,n+1));return a.filter(t=>t).join(", ")}readPropertyValueReferences(e,n){let a=M(e,n);if(!a)return[];if(a instanceof x)return[a.object];if(a instanceof D){let t=[];for(let o of a.object??[])o instanceof S&&t.push(o);return t}return[]}gatherValueItems(e){return e?e instanceof D?e.object??[]:e instanceof x?[e.object]:e instanceof X?[e.object]:e instanceof B?[e.object]:e instanceof pe||e instanceof re?[e.object]:[]:[]}renderInlineValue(e,n,a,t=0){return e instanceof S?this.renderReferenceLink(e,n,a):e instanceof z?this.renderEmbeddedInline(e,a,t):typeof e=="string"?d(e):typeof e=="number"||typeof e=="boolean"?d(String(e)):""}renderStatementInlineValue(e,n,a,t=0){return e instanceof B?d(e.object):e instanceof pe||e instanceof re?d(String(e.object)):e instanceof x?this.renderReferenceLink(e.object,n,a):e instanceof X?this.renderEmbeddedInline(e.object,a,t):e instanceof D?(e.object??[]).map(s=>this.renderInlineValue(s,n,a,t)).filter(s=>s).join(", "):""}renderEmbeddedInline(e,n,a=0){if(a>=hn)return"\u2026";let t=[];for(let o of e.statement){let s=o.predicate?.subject;if(!s||s.name==="type")continue;let i=this.readLabelForUri({publisher:s.publisher,package_:s.package_,name:s.name})??s.name,c=this.renderStatementInlineValue(o,s,n,a+1);c&&t.push(`<dt>${d(i)}</dt><dd>${c}</dd>`)}return t.length?`<dl class="kan-embedded">${t.join("")}</dl>`:""}renderReferenceLink(e,n,a){let t=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name;if(!this.isLinkable(e.subject.publisher,a))return`<span class="kan-link-plain">${d(t)}</span>`;let o=this.urlForReference(e,n,a);return`<a class="kan-link" href="${d(o)}">${d(t)}</a>`}isLinkable(e,n){return e===n}renderBadge(e,n,a){let t=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name,o=this.readCommentForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name}),s=o?` title="${d(o)}"`:"";if(!this.isLinkable(e.subject.publisher,a))return`<span class="kan-badge"${s}>${d(t)}</span>`;let i=this.urlForReference(e,n,a);return`<a class="kan-badge" href="${d(i)}"${s}>${d(t)}</a>`}urlForReference(e,n,a){let t=n?this.getUrlFormForProperty(n):"=";return me.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},t,{contextPublisher:a})}getUrlFormForProperty(e){let n=G(this.catalog,e);if(!n)return"=";let a=L(n,Yt);return a==="*"||a==="^"||a==="~"||a==="="?a:"="}readLabelForUri(e){let n=G(this.catalog,e);if(n)return E(this.catalog,n).label}readCommentForUri(e){let n=G(this.catalog,e);if(n)return E(this.catalog,n).summary}};function We(g){let e=new Map;for(let n of g.statement){if(!(n instanceof X)||!de(n,Ee.publisher,Ee.package_,Ee.name))continue;let a=n.object;for(let t of a.statement){if(!(t instanceof B))continue;let o=t.predicate?.subject?.name;if(!o)continue;let s=t.object;e.has(o)||e.set(o,s)}}return e}function Ie(g){for(let e of g.statement)if(e instanceof X&&de(e,xe.publisher,xe.package_,xe.name))return e.object}function ze(g){for(let e of g.statement){if(!(e instanceof D)||!de(e,Ge.publisher,Ge.package_,Ge.name))continue;let n=[];for(let a of e.object??[])a instanceof z&&n.push(a);return n}return[]}function Se(g){for(let e of g.statement)if(e instanceof x&&e.predicate?.subject?.name==="type"&&e.object instanceof S){let n=e.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function F(g,e){for(let n of g.statement)if(n instanceof x&&de(n,e.publisher,e.package_,e.name)&&n.object instanceof S){let a=n.object.subject;return{publisher:a.publisher,package_:a.package_,name:a.name}}}function Ye(g,e){for(let n of g.statement){if(!(n instanceof D)||!de(n,e.publisher,e.package_,e.name))continue;let a=[];for(let t of n.object??[])t instanceof S&&a.push({publisher:t.subject.publisher,package_:t.subject.package_,name:t.subject.name});return a}return[]}function M(g,e){for(let n of g.statement)if(de(n,e.publisher,e.package_,e.name))return n}function L(g,e){for(let n of g.statement)if(n instanceof B&&de(n,e.publisher,e.package_,e.name))return n.object}function $n(g,e){for(let n of g.statement)if(n instanceof pe&&de(n,e.publisher,e.package_,e.name))return n.object}function qt(g){for(let e of ae(g))if(v(e.subject,Fn)||v(e.subject,Tn))return!0;return!1}function ae(g){let e=[];for(let n of g.statement)if(n instanceof x){if(n.predicate?.subject?.name!=="type")continue;n.object instanceof S&&e.push(n.object)}else if(n instanceof D){if(n.predicate?.subject?.name!=="type")continue;for(let a of n.object??[])a instanceof S&&e.push(a)}return e}function Ke(g){let e=[];for(let n of g.statement)if(n instanceof x){if(n.predicate?.subject?.name!=="subClassOf")continue;n.object instanceof S&&e.push(n.object)}else if(n instanceof D){if(n.predicate?.subject?.name!=="subClassOf")continue;for(let a of n.object??[])a instanceof S&&e.push(a)}return e}function le(g,e){let n=[];for(let a of g){if(!(a instanceof J)||a.name!==e.name)continue;(a.namespace||"").startsWith(`${e.publisher}/${e.package_}@`)&&n.push(a)}return n}function G(g,e){let n="version"in e?e.version:void 0;if(n){let a=`${e.publisher}/${e.package_}@${n.major}.${n.minor}.${n.patch}`;for(let t of g)if(t instanceof J&&t.name===e.name&&t.namespace===a)return t}for(let a of g){if(!(a instanceof J)||a.name!==e.name)continue;if((a.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return a}}function de(g,e,n,a){let t=g.predicate?.subject;return t?t.publisher===e&&t.package_===n&&t.name===a:!1}function v(g,e){return g.publisher===e.publisher&&g.package_===e.package_&&g.name===e.name}function V(g){return`${g.publisher}/${g.package_}/${g.name}`}function P(g){let e=g.namespace||"",n=e.indexOf("/");return n>=0?e.substring(0,n):e}function d(g){return g.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Jt(g){let e=g.lastIndexOf(".");return e>=0?g.substring(e+1):g}function Xt(g,e){for(let n of g.statement)if(n.predicate?.subject?.name===e)return n}function ue(g){return g.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function qe(g,e){return g.length<=e?g:g.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function jn(g){return g.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function _n(g){return g.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function vn(g){let e=Fe(g);return d(e||g)}function Fe(g){let e=/^(\d{4})-(\d{2})-(\d{2})([T ]\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?)?$/.exec(g.trim());if(!e)return;let n=Date.parse(g);if(!Number.isFinite(n))return;let a=new Date(n),o=`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][a.getUTCMonth()]} ${a.getUTCDate()}, ${a.getUTCFullYear()}`;if(!e[4])return o;let s=a.getUTCHours(),i=(s+11)%12+1,c=s>=12?"PM":"AM";return`${o} \xB7 ${i}:${String(a.getUTCMinutes()).padStart(2,"0")} ${c} UTC`}function we(g){if(!g)return"";let e=/^(\d{4})-(\d{2})-(\d{2})/.exec(g);return e?`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][parseInt(e[2],10)-1]??e[2]} ${parseInt(e[3],10)}`:g}export{E as a,Me as b,Je as c};