@kanonak-protocol/sdk 3.39.0 → 3.40.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.
- package/dist/chunk-LKDDPNIW.js +116 -0
- package/dist/index.js +1 -1
- package/dist/look/LookRenderer.d.ts +14 -0
- package/dist/transformations/index.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-ETB6CEAH.js +0 -116
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import{a as ce}from"./chunk-NIGFQYVA.js";import{a as se,c as Pe}from"./chunk-SQDXESNM.js";import{c as J,d as E,g as X,h as me,i as Ke,j as A,k as ie,l as D}from"./chunk-W6T7MOKY.js";function Ce(d){let e=d.replace(/\r\n/g,`
|
|
2
|
+
`).split(`
|
|
3
|
+
`),t=[],n=0;for(;n<e.length;){let s=e[n];if(s.trim()===""){n++;continue}let o=/^(\s*)```(\S*)\s*$/.exec(s);if(o){let i=o[2],c=[];for(n++;n<e.length&&!/^(\s*)```\s*$/.test(e[n]);)c.push(e[n]),n++;n++;let l=Ae(c.join(`
|
|
4
|
+
`)),p=i?` class="language-${Ne(i)}"`:"";t.push(`<pre><code${p}>${l}</code></pre>`);continue}let a=/^(#{1,6})\s+(.*)$/.exec(s);if(a){let i=a[1].length,c=de(a[2].trim());t.push(`<h${i}>${c}</h${i}>`),n++;continue}if(s.includes("|")&&n+1<e.length&&Te(e[n+1])){let i=ye(s),c=nn(e[n+1]);n+=2;let l=[];for(;n<e.length&&e[n].trim()!==""&&e[n].includes("|");)l.push(ye(e[n])),n++;t.push(tn(i,c,l));continue}if(/^\s*[-*]\s+/.test(s)){let i=[];for(;n<e.length&&/^\s*[-*]\s+/.test(e[n]);){let c=[e[n].replace(/^\s*[-*]\s+/,"")];for(n++;n<e.length&&e[n].trim()!==""&&!/^\s*[-*]\s+/.test(e[n])&&!/^\s*\d+\.\s+/.test(e[n]);)c.push(e[n]),n++;n<e.length&&e[n].trim()===""&&n++,i.push(`<li>${de(c.join(" ").trim())}</li>`)}t.push(`<ul>
|
|
5
|
+
${i.join(`
|
|
6
|
+
`)}
|
|
7
|
+
</ul>`);continue}if(/^\s*\d+\.\s+/.test(s)){let i=[];for(;n<e.length&&/^\s*\d+\.\s+/.test(e[n]);){let c=[e[n].replace(/^\s*\d+\.\s+/,"")];for(n++;n<e.length&&e[n].trim()!==""&&!/^\s*\d+\.\s+/.test(e[n])&&!/^\s*[-*]\s+/.test(e[n]);)c.push(e[n]),n++;n<e.length&&e[n].trim()===""&&n++,i.push(`<li>${de(c.join(" ").trim())}</li>`)}t.push(`<ol>
|
|
8
|
+
${i.join(`
|
|
9
|
+
`)}
|
|
10
|
+
</ol>`);continue}let r=[s];for(n++;n<e.length&&e[n].trim()!==""&&!/^(#{1,6})\s+/.test(e[n])&&!/^(\s*)```/.test(e[n])&&!/^\s*[-*]\s+/.test(e[n])&&!/^\s*\d+\.\s+/.test(e[n])&&!(e[n].includes("|")&&n+1<e.length&&Te(e[n+1]));)r.push(e[n]),n++;t.push(`<p>${de(r.join(" "))}</p>`)}return t.join(`
|
|
11
|
+
`)}function Te(d){return d.includes("-")?/^[\s|:-]+$/.test(d):!1}function ye(d){let e=d.trim();return e.startsWith("|")&&(e=e.slice(1)),e.endsWith("|")&&(e=e.slice(0,-1)),e.split("|").map(t=>t.trim())}function nn(d){return ye(d).map(e=>{let t=e.startsWith(":"),n=e.endsWith(":");return t&&n?"center":n?"right":t?"left":null})}function tn(d,e,t){let n=a=>{let r=e[a];return r?` style="text-align:${r}"`:""},s=d.map((a,r)=>`<th${n(r)}>${de(a)}</th>`).join(""),o=t.map(a=>`<tr>${a.map((i,c)=>`<td${n(c)}>${de(i)}</td>`).join("")}</tr>`).join(`
|
|
12
|
+
`);return`<table>
|
|
13
|
+
<thead><tr>${s}</tr></thead>
|
|
14
|
+
<tbody>
|
|
15
|
+
${o}
|
|
16
|
+
</tbody>
|
|
17
|
+
</table>`}function de(d){let e=Ae(d);return e=e.replace(/`([^`\n]+)`/g,(t,n)=>`<code>${n}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(t,n,s)=>`<a href="${Ne(s)}">${n}</a>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,(t,n)=>`<strong>${n}</strong>`),e=e.replace(/(^|[^*])\*([^*\n]+)\*(?!\*)/g,(t,n,s)=>`${n}<em>${s}</em>`),e=e.replace(/(^|[\s(])_([^_\n]+)_(?=[\s).,;:!?]|$)/g,(t,n,s)=>`${n}<em>${s}</em>`),e}function Ae(d){return d.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Ne(d){return d.replace(/"/g,""").replace(/&/g,"&")}var xe={publisher:"kanonak.org",package_:"derivation",name:"look"},Le={publisher:"kanonak.org",package_:"derivation",name:"tokens"},Z={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},N={publisher:"kanonak.org",package_:"core-rdf",name:"label"},be={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},sn={publisher:"kanonak.org",package_:"look",name:"Hero"},an={publisher:"kanonak.org",package_:"look",name:"PropertyList"},rn={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},on={publisher:"kanonak.org",package_:"look",name:"ChipRow"},cn={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},Ve={publisher:"kanonak.org",package_:"look",name:"Markdown"},$e={publisher:"kanonak.org",package_:"look",name:"NavGroup"},Oe={publisher:"kanonak.org",package_:"look",name:"NavLink"},Me={publisher:"kanonak.org",package_:"look",name:"target"},ln={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},un={publisher:"kanonak.org",package_:"look",name:"Timeline"},dn={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},pn={publisher:"kanonak.org",package_:"look",name:"Figure"},fn={publisher:"kanonak.org",package_:"look",name:"StatRow"},kn={publisher:"kanonak.org",package_:"look",name:"Horizon"},gn={publisher:"kanonak.org",package_:"look",name:"PackageContents"},Se={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},hn={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},mn={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},bn={publisher:"kanonak.org",package_:"look",name:"PublisherView"},$n={publisher:"kanonak.org",package_:"look",name:"Distribution"},jn={publisher:"kanonak.org",package_:"look",name:"alphaPath"},_n={publisher:"kanonak.org",package_:"look",name:"betaPath"},vn={publisher:"kanonak.org",package_:"look",name:"SectionHeading"},Rn={publisher:"kanonak.org",package_:"look",name:"heading"},Sn={publisher:"kanonak.org",package_:"look",name:"note"},Kn={publisher:"kanonak.org",package_:"look",name:"VersionDelta"},yn={publisher:"kanonak.org",package_:"look",name:"stats"},xn={publisher:"kanonak.org",package_:"look",name:"statPath"},Ln={publisher:"kanonak.org",package_:"look",name:"statLabel"},On={publisher:"kanonak.org",package_:"look",name:"labelPath"},wn={publisher:"kanonak.org",package_:"look",name:"badgePath"},He={publisher:"kanonak.org",package_:"look",name:"orderBy"},Be={publisher:"kanonak.org",package_:"look",name:"track"},je={publisher:"kanonak.org",package_:"look",name:"metricPath"},we={publisher:"kanonak.org",package_:"look",name:"hueBy"},De={publisher:"kanonak.org",package_:"look",name:"lowerPath"},Ge={publisher:"kanonak.org",package_:"look",name:"upperPath"},Fn={publisher:"kanonak.org",package_:"look",name:"axisMin"},Un={publisher:"kanonak.org",package_:"look",name:"axisMax"},In={publisher:"kanonak.org",package_:"look",name:"valueLabel"};var En={publisher:"kanonak.org",package_:"look",name:"semanticSvg"},Pn={publisher:"kanonak.org",package_:"look",name:"tierChip"},Tn={publisher:"kanonak.org",package_:"look",name:"tierIcon"},Cn={publisher:"kanonak.org",package_:"look",name:"tierCard"},An={publisher:"kanonak.org",package_:"look",name:"tierFull"};var Fe={publisher:"kanonak.org",package_:"look",name:"bands"},Nn={publisher:"kanonak.org",package_:"look",name:"title"},Vn={publisher:"kanonak.org",package_:"look",name:"eyebrow"},Mn={publisher:"kanonak.org",package_:"look",name:"subtitle"},We={publisher:"kanonak.org",package_:"look",name:"badges"},G={publisher:"kanonak.org",package_:"look",name:"source"},Hn={publisher:"kanonak.org",package_:"look",name:"chips"},Ue={publisher:"kanonak.org",package_:"look",name:"entries"},Bn={publisher:"kanonak.org",package_:"look",name:"urlForm"},Ee=class{constructor(e){this.catalog=e}catalog;findCascadedLook(e){let t=_e(e);if(t)return{declaration:t,sourceClass:{publisher:W(e),package_:(e.namespace||"").split("/")[1]?.split("@")[0]??"",name:e.name}};let n=new Set,s=ae(e);for(;s.length>0;){let o=s.shift(),a=Dn(o.subject),r=le(a);if(n.has(r))continue;n.add(r);let i=re(this.catalog,a);for(let c of i){let l=_e(c);if(l)return{declaration:l,sourceClass:{publisher:a.publisher,package_:a.package_,name:a.name}}}for(let c of i)for(let l of Re(c))s.push(l)}if(!n.has(le(Z)))for(let o of re(this.catalog,Z)){let a=_e(o);if(a)return{declaration:a,sourceClass:{...Z}}}}findCascadedTokens(e){let t=new Map;for(let[o,a]of Ie(e))t.has(o)||t.set(o,a);let n=new Set,s=ae(e);for(;s.length>0;){let o=s.shift(),a=le(o.subject);if(n.has(a))continue;n.add(a);let r=re(this.catalog,o.subject);if(r.length!==0)for(let i of r){for(let[c,l]of Ie(i))t.has(c)||t.set(c,l);for(let c of Re(i))s.push(c)}}if(!n.has(le(Z))){let o=re(this.catalog,Z);for(let a of o)for(let[r,i]of Ie(a))t.has(r)||t.set(r,i)}return t}renderSvg(e){let t=$(e,N)??e.name,n=(t.trim().charAt(0)||"?").toUpperCase(),s=`${e.namespace??""}/${e.name}`,o={label:t,firstLetter:n,uri:s},a=this.collectCascadedSvgTiers(e),r=h=>this.applyPlaceholders(h,e,o),i=r(a.tierChip??""),c=r(a.tierIcon??""),l=r(a.tierCard??""),p=r(a.tierFull??""),g=[...this.findCascadedTokens(e)].map(([h,k])=>`--kan-${h}: ${k};`).join(" ");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" width="400" height="400" style="${fe(g)}">
|
|
18
|
+
<style>
|
|
19
|
+
.tier-chip,.tier-icon,.tier-card{display:none}
|
|
20
|
+
.tier-full{display:block}
|
|
21
|
+
@media (max-width:400px){.tier-full{display:none}.tier-card{display:block}}
|
|
22
|
+
@media (max-width:160px){.tier-card{display:none}.tier-icon{display:block}}
|
|
23
|
+
@media (max-width:60px){.tier-icon{display:none}.tier-chip{display:block}}
|
|
24
|
+
</style>
|
|
25
|
+
<g class="tier-chip">${i}</g>
|
|
26
|
+
<g class="tier-icon">${c}</g>
|
|
27
|
+
<g class="tier-card">${l}</g>
|
|
28
|
+
<g class="tier-full">${p}</g>
|
|
29
|
+
</svg>`}applyPlaceholders(e,t,n){return e.replace(/\{\{([^}]+)\}\}/g,(s,o)=>{let a=o.trim();if(n[a]!==void 0)return fe(n[a]);let r=this.resolvePath(t,a);return r===void 0?`{{${a}}}`:fe(r)})}resolvePath(e,t){let n=t.split("/").map(r=>r.trim()).filter(r=>r.length>0);if(n.length===0)return;let s=e;for(let r=0;r<n.length-1;r++){if(!s)return;let i=Je(n[r]),c=Xe(s,i);if(!c)return;if(c instanceof A&&c.object instanceof E){let l=V(this.catalog,c.object.subject);if(!l)return;s=l}else if(c instanceof ie)s=c.object;else return}if(!s)return;let o=Je(n[n.length-1]),a=Xe(s,o);if(a){if(a instanceof X||a instanceof me||a instanceof Ke)return String(a.object);if(a instanceof A&&a.object instanceof E){let r=a.object,i=V(this.catalog,r.subject);return i?$(i,N)??r.subject.name:r.subject.name}}}collectCascadedSvgTiers(e){let t={},n=a=>{let r=Q(a,En);if(!(r instanceof ie))return;let i=r.object,c=$(i,Pn),l=$(i,Tn),p=$(i,Cn),f=$(i,An);t.tierChip===void 0&&c!==void 0&&(t.tierChip=c),t.tierIcon===void 0&&l!==void 0&&(t.tierIcon=l),t.tierCard===void 0&&p!==void 0&&(t.tierCard=p),t.tierFull===void 0&&f!==void 0&&(t.tierFull=f)};n(e);let s=new Set,o=ae(e);for(;o.length>0;){let a=o.shift(),r=le(a.subject);if(s.has(r))continue;s.add(r);let i=re(this.catalog,a.subject);for(let c of i){n(c);for(let l of Re(c))o.push(l)}}if(!s.has(le(Z)))for(let a of re(this.catalog,Z))n(a);return t}renderStylesheet(e){let t=this.findCascadedTokens(e),n=[];for(let[a,r]of t)n.push(` --kan-${a}: ${r};`);let s=n.length>0?`:root {
|
|
30
|
+
${n.join(`
|
|
31
|
+
`)}
|
|
32
|
+
}`:":root { /* no tokens resolved */ }",o=this.findBaseStylesheet(W(e))??"";return`${s}
|
|
33
|
+
${o}`}findBaseStylesheet(e){let t="kanonak.org/site/content",n,s;for(let a of this.catalog){if(!(a instanceof J)||a.name!=="base-stylesheet")continue;let r=a.namespace||"";r.startsWith(`${e}/look-styles@`)?n=a:r.startsWith("kanonak.org/look-styles@")&&(s=a)}let o=n??s;if(o)for(let a of o.statement){let r=a.predicate?.subject;if(!r)continue;if(`${r.publisher}/${r.package_}/${r.name}`===t&&a instanceof X)return a.object}}renderHtml(e){let t=this.findCascadedLook(e);if(!t)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let n=ze(t.declaration);if(n.length===0)return"<!-- LookRenderer: look declaration has no bands -->";let s=W(e),o=[];for(let a of n)o.push(this.renderBand(a,e,s));return o.join(`
|
|
34
|
+
`)}renderPublisherIndex(e,t,n){let s=n?this.renderNavGroup(n,e):"",o=t.map(r=>{let i=r.comment?`<p class="kan-resource-card-subtitle">${u(r.comment)}</p>`:"";return`<a class="kan-resource-card" href="${u(r.href)}"><h3 class="kan-resource-card-title">${u(r.label)}</h3>${i}</a>`}).join(`
|
|
35
|
+
`),a=`<header class="kan-hero">
|
|
36
|
+
<h1 class="kan-hero-title">${u(e)}</h1>
|
|
37
|
+
</header>
|
|
38
|
+
<section class="kan-resource-grid">
|
|
39
|
+
${o}
|
|
40
|
+
</section>`;return`<!doctype html>
|
|
41
|
+
<html lang="en">
|
|
42
|
+
<head>
|
|
43
|
+
<meta charset="utf-8">
|
|
44
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
45
|
+
<title>${u(e)}</title>
|
|
46
|
+
<link rel="stylesheet" href="index.css">
|
|
47
|
+
</head>
|
|
48
|
+
<body>
|
|
49
|
+
${s}
|
|
50
|
+
<main class="kan-main">
|
|
51
|
+
${a}
|
|
52
|
+
</main>
|
|
53
|
+
</body>
|
|
54
|
+
</html>
|
|
55
|
+
`}renderPublisherIndexStylesheet(e){return e?this.renderStylesheet(e):""}hasDeclaredView(e){let t=this.findCascadedLook(e);return t?!(s=>s.publisher===Z.publisher&&s.package_===Z.package_&&s.name===Z.name||s.publisher===Se.publisher&&s.package_===Se.package_&&s.name===Se.name)(t.sourceClass):!1}renderPackageVersionList(e,t,n){let s=W(n),o=this.renderNavGroup(n,s),a=this.renderBreadcrumb(n,s,{bareOverview:!0}),r=t.map(c=>`<a class="kan-resource-card" href="/${u(e)}/${u(c)}/"><h3 class="kan-resource-card-title">${u(c)}</h3></a>`).join(`
|
|
56
|
+
`),i=`<header class="kan-hero">
|
|
57
|
+
<span class="kan-hero-eyebrow">PACKAGE</span>
|
|
58
|
+
<h1 class="kan-hero-title">${u(e)}</h1>
|
|
59
|
+
</header>
|
|
60
|
+
<section class="kan-resource-grid">
|
|
61
|
+
${r}
|
|
62
|
+
</section>`;return`<!doctype html>
|
|
63
|
+
<html lang="en">
|
|
64
|
+
<head>
|
|
65
|
+
<meta charset="utf-8">
|
|
66
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
67
|
+
<title>${u(e)}</title>
|
|
68
|
+
<link rel="stylesheet" href="${u(n.name)}.css">
|
|
69
|
+
</head>
|
|
70
|
+
<body>
|
|
71
|
+
${o}
|
|
72
|
+
${a}
|
|
73
|
+
<main class="kan-main">
|
|
74
|
+
${i}
|
|
75
|
+
</main>
|
|
76
|
+
</body>
|
|
77
|
+
</html>
|
|
78
|
+
`}renderDocument(e,t){let n=this.renderHtml(e),s=this.readPropertyValueText(e,N)??e.name,o=t?.rootIndex?"index.css":`${e.name}.css`,a=!t?.rootIndex&&this.hasSvgDerivation(e)?`<figure class="kan-figure"><img src="${u(e.name)}.svg" alt=""></figure>
|
|
79
|
+
`:"",r=W(e),i=this.renderNavGroup(e,r),c=t?.rootIndex?"":this.renderBreadcrumb(e,r,t);return`<!doctype html>
|
|
80
|
+
<html lang="en">
|
|
81
|
+
<head>
|
|
82
|
+
<meta charset="utf-8">
|
|
83
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
84
|
+
<title>${u(s)}</title>
|
|
85
|
+
<link rel="stylesheet" href="${u(o)}">
|
|
86
|
+
</head>
|
|
87
|
+
<body>
|
|
88
|
+
${i}
|
|
89
|
+
${c}
|
|
90
|
+
<main class="kan-main">
|
|
91
|
+
${a}${n}
|
|
92
|
+
</main>
|
|
93
|
+
</body>
|
|
94
|
+
</html>
|
|
95
|
+
`}hasSvgDerivation(e){let t=new Set,n=ae(e);for(;n.length>0;){let s=n.shift(),o=le(s.subject);if(t.has(o))continue;t.add(o);let a=V(this.catalog,s.subject);if(a){for(let r of a.statement)if(r instanceof D&&ee(r,"kanonak.org","derivation","derivations")){for(let i of r.object??[])if(i instanceof se)for(let c of i.statement){if(!(c instanceof A)||!ee(c,"kanonak.org","derivation","format")||!(c.object instanceof E))continue;let l=c.object.subject;if(l.publisher==="kanonak.org"&&l.package_==="formats"&&l.name==="svg")return!0}}for(let r of Re(a))n.push(r)}}return!1}renderBand(e,t,n){let s=ve(e);return s?L(s,sn)?this.renderHero(e,t,n):L(s,an)?this.renderPropertyList(e,t,n):L(s,rn)?this.renderBadgeRow(e,t,n):L(s,on)?this.renderChipRow(e,t,n):L(s,cn)?this.renderReferenceList(e,t,n):L(s,Ve)?this.renderMarkdown(e,t,n):L(s,$e)?this.renderNavGroup(t,n):L(s,ln)?this.renderResourceGrid(e,n,t):L(s,un)?this.renderTimeline(e,n):L(s,dn)?this.renderVersionDiff(e,n):L(s,pn)?this.renderFigure(e,t,n):L(s,fn)?this.renderStatRow(e,t):L(s,kn)?this.renderHorizon(e,t,n):L(s,gn)?this.renderPackageContents(t,n):L(s,hn)?this.renderFeaturedResource(e,n):L(s,mn)?this.renderPublisherPackages(n):L(s,$n)?this.renderDistribution(e,t):L(s,vn)?this.renderSectionHeading(e):L(s,Kn)?this.renderVersionDelta(e,t):`<!-- LookRenderer: unsupported band ${s.publisher}/${s.package_}/${s.name} -->`:"<!-- LookRenderer: band has no rdf:type -->"}collectTrackedSeries(e,t,n,s){let{hueBy:o,lowerPath:a,upperPath:r}=s??{},i=new Map,c=e.length,l=(p,f)=>{let g=this.resolvePath(p,f);return g===void 0?NaN:parseFloat(g)};return e.forEach((p,f)=>{let g=this.readPropertyValueReferences(p,t);for(let h of g){let k=V(this.catalog,{publisher:h.subject.publisher,package_:h.subject.package_,name:h.subject.name,...h.subject.version?{version:h.subject.version}:{}});if(!k)continue;let m=h.subject.name,j=i.get(m);j||(j={key:m,label:$(k,N)??m,points:new Array(c).fill(null),...a?{lower:new Array(c).fill(null)}:{},...r?{upper:new Array(c).fill(null)}:{}},i.set(m,j));let v=l(k,n);if(Number.isFinite(v)&&(j.points[f]=v),a&&j.lower){let _=l(k,a);Number.isFinite(_)&&(j.lower[f]=_)}if(r&&j.upper){let _=l(k,r);Number.isFinite(_)&&(j.upper[f]=_)}if(o){let _=l(k,o);Number.isFinite(_)&&(j.hue=_)}j.lastSubject=k}}),[...i.values()]}hrefForSubject(e,t,n="="){let s=e.namespace||"",o=s.split("/")[1]?.split("@")[0]??"",a=s.split("@")[1]??"",r=a?this.parseVersion(a):void 0;return ce.formatResourceUrl({publisher:W(e),package_:o,name:e.name,...r?{version:r}:{}},n,{contextPublisher:t})}renderVersionDiff(e,t){let n=I(e,G);if(!n)return"<!-- LookRenderer.VersionDiff: no look.source -->";let s=$(e,je),o=I(e,Be);if(!o||!s)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let a=I(e,He),r=$(e,we),i=this.findInstancesOfClass(n);if(i.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let c=g=>a?this.readPropertyValueText(g,a)??"":"",l=i.slice().sort((g,h)=>c(g).localeCompare(c(h))),p=this.collectTrackedSeries(l,o,s,{hueBy:r});return p.length===0?"<!-- LookRenderer.VersionDiff: no tracked series -->":`<section class="kan-vdiff">${p.map((g,h)=>{let k=g.hue!==void 0?g.hue:Math.round(h*360/p.length),m=g.points.filter(R=>R!==null);if(m.length===0)return"";let j=m[0],v=m[m.length-1],_=v-j,F;if(Math.abs(_)>=.005){let R=_>0?"up":"down",O=_>0?"\u25B2":"\u25BC";F=`<span class="kan-vdiff-delta ${R}">${_>0?"+":""}${_.toFixed(2)} ${O}</span>`}else F='<span class="kan-vdiff-delta flat">\u2014</span>';let T=g.lastSubject?`<a href="${u(this.hrefForSubject(g.lastSubject,t))}">${u(g.label)}</a>`:u(g.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${k}"><span class="kan-vdiff-label">${T}</span><span class="kan-vdiff-start">${j.toFixed(2)}</span>`+this.sparkline(g.points,k)+`<span class="kan-vdiff-end">${v.toFixed(2)}</span>`+F+"</div>"}).join("")}</section>`}sparkline(e,t){let a=`hsl(${t},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 i=Math.min(...r),l=Math.max(...r)-i,p=e.length,f=m=>p<=1?132/2:4+m/(p-1)*124,g=m=>l<1e-9?30/2:26-(m-i)/l*22,h=[],k=[];return e.forEach((m,j)=>{if(m===null)return;let v=f(j),_=g(m);h.push(`${v.toFixed(1)},${_.toFixed(1)}`),k.push(`<circle cx="${v.toFixed(1)}" cy="${_.toFixed(1)}" r="2" fill="${a}"/>`)}),`<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="${a}" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round"/>`+k.join("")+"</svg>"}svgUrlForSubject(e,t,n="="){return`${this.hrefForSubject(e,t,n)}.svg`}renderFigure(e,t,n){let s=t,o=I(e,G);if(o){let i=V(this.catalog,o);i&&(s=i)}let a=this.svgUrlForSubject(s,n),r=$(s,N)??s.name;return`<figure class="kan-figure"><img class="kan-figure-img" src="${u(a)}" alt="${u(r)}" loading="lazy"/></figure>`}renderStatRow(e,t){let n=Q(e,yn),s=this.gatherValueItems(n).filter(a=>a instanceof se);if(s.length===0)return"<!-- LookRenderer.StatRow: no look.stats -->";let o=[];for(let a of s){let r=$(a,xn);if(!r)continue;let i=this.resolvePath(t,r);if(i===void 0)continue;let c=$(a,Ln)??"";o.push('<div class="kan-stat">'+(c?`<span class="kan-stat-label">${u(c)}</span>`:"")+`<span class="kan-stat-val">${u(i)}</span></div>`)}return o.length===0?"":`<div class="kan-stat-row">${o.join("")}</div>`}renderHorizon(e,t,n){let s=I(e,G);if(!s)return"<!-- LookRenderer.Horizon: no look.source -->";let o=this.gatherValueItems(Q(t,s)).filter(r=>r instanceof se);return o.length===0?"":`<section class="kan-horizon">${o.map(r=>this.renderConditionNode(r,n,0)).join("")}</section>`}renderConditionNode(e,t,n){let s=ve(e),o=s?this.readLabelForUri({publisher:s.publisher,package_:s.package_,name:s.name})??s.name:"Condition",a=[],r=[];for(let f of e.statement){let g=f.predicate?.subject;if(!g||g.name==="type")continue;let h=this.readLabelForUri({publisher:g.publisher,package_:g.package_,name:g.name})??g.name;if(f instanceof X||f instanceof me||f instanceof Ke)a.push(`<div class="kan-cond-field"><span class="kan-cond-key">${u(h)}</span><span class="kan-cond-v">${u(String(f.object))}</span></div>`);else if(f instanceof A&&f.object instanceof E){let k=f.object.subject,m=this.readLabelForUri({publisher:k.publisher,package_:k.package_,name:k.name})??k.name;a.push(`<div class="kan-cond-field"><span class="kan-cond-key">${u(h)}</span><span class="kan-cond-v">${u(m)}</span></div>`)}else if(f instanceof ie)r.push(this.renderConditionNode(f.object,t,n+1));else if(f instanceof D)for(let k of f.object??[])k instanceof se&&r.push(this.renderConditionNode(k,t,n+1))}let i=a.length?`<div class="kan-cond-fields">${a.join("")}</div>`:"",c=r.length?`<div class="kan-cond-children">${r.join("")}</div>`:"",l=r.length>0,p=l?`<span class="kan-cond-op">${u(o)}</span>`:`<div class="kan-cond-type">${u(o)}</div>`;return`<div class="kan-cond ${l?"kan-cond-branch":"kan-cond-leaf"}">${p}${i}${c}</div>`}renderSectionHeading(e){let t=e,n=$(t,Rn);if(!n)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let s=$(t,Sn);return`<div class="kan-section"><h2 class="kan-section-title">${u(n)}</h2>`+(s?`<p class="kan-section-note">${u(s)}</p>`:"")+"</div>"}renderVersionDelta(e,t){let s=$(e,je);if(!s)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let o=w=>{let U=this.resolvePath(w,s),z=U===void 0?NaN:parseFloat(U);return Number.isFinite(z)?z:void 0},a=o(t);if(a===void 0)return"";let r=w=>this.parseVersion((w.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},i=(w,U)=>w.major-U.major||w.minor-U.minor||w.patch-U.patch,c={publisher:W(t),package_:(t.namespace||"").split("/")[1]?.split("@")[0]??"",name:t.name},l=r(t),p,f;for(let w of re(this.catalog,c)){let U=r(w);i(U,l)<0&&(!f||i(U,f)>0)&&(p=w,f=U)}if(!p||!f)return'<div class="kan-delta kan-delta-first">First tracked in this version</div>';let g=o(p);if(g===void 0)return"";let h=a-g,k=Math.abs(h)<.005?"flat":h>0?"up":"down",m=k==="up"?"\u25B2":k==="down"?"\u25BC":"\u2014",j=k==="up"?"#34d399":k==="down"?"#f87171":"var(--kan-text-faint)",v=`${f.major}.${f.minor}.${f.patch}`,_=320,F=46,T=14,R=30,O=w=>T+Math.min(1,Math.max(0,w))*(_-2*T),S=O(g),P=O(a),ue=`<svg class="kan-delta-track" viewBox="0 0 ${_} ${F}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${T}" y1="${R}" x2="${_-T}" y2="${R}" class="kan-delta-base"/><line x1="${S.toFixed(1)}" y1="${R}" x2="${P.toFixed(1)}" y2="${R}" stroke="${j}" stroke-width="3"/><circle cx="${S.toFixed(1)}" cy="${R}" r="4" class="kan-delta-prev"/><circle cx="${P.toFixed(1)}" cy="${R}" r="5.5" fill="${j}"/><text x="${S.toFixed(1)}" y="${R-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${g.toFixed(2)}</text><text x="${P.toFixed(1)}" y="${R+17}" text-anchor="middle" class="kan-delta-tick">${a.toFixed(2)}</text></svg>`;return`<div class="kan-delta"><div class="kan-delta-head"><span class="kan-delta-vs">vs ${u(v)}</span><span class="kan-delta-badge ${k}">${h>0?"+":""}${h.toFixed(2)} ${m}</span></div>`+ue+"</div>"}renderPackageContents(e,t){let n=e.namespace||"";if(!n)return"";let s=this.catalog.filter(a=>a instanceof J&&a.namespace===n&&a.name!==e.name);return s.length===0?`<!-- LookRenderer.PackageContents: no members in ${n} -->`:(s.sort((a,r)=>{let i=$(a,N)??a.name,c=$(r,N)??r.name;return i.localeCompare(c)}),`<section class="kan-pkg-grid">${s.map(a=>{let r=$(a,N)??a.name,i=$(a,be),c=i?Ze(i,160):"",l=this.hrefForSubject(a,t),p=this.svgUrlForSubject(a,t);return`<a class="kan-pkg-card" href="${u(l)}"><img class="kan-pkg-card-svg" src="${u(p)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${u(r)}</span>`+(c?`<span class="kan-pkg-card-comment">${u(c)}</span>`:"")+"</span></a>"}).join("")}</section>`)}renderFeaturedResource(e,t){let n=I(e,G);if(!n)return"<!-- LookRenderer.FeaturedResource: no look.source -->";let s=re(this.catalog,n),o=c=>this.parseVersion((c.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},a=s.length>0?s.slice().sort((c,l)=>{let p=o(c),f=o(l);return f.major-p.major||f.minor-p.minor||f.patch-p.patch})[0]:V(this.catalog,n);if(!a)return`<!-- LookRenderer.FeaturedResource: ${n.publisher}/${n.package_}/${n.name} not found -->`;let r=this.renderHtml(a),i=this.hrefForSubject(a,t);return`<section class="kan-featured"><a class="kan-featured-permalink" href="${u(i)}">View full resource \u2192</a>`+r+"</section>"}renderDistribution(e,t){let n=e,s=K=>{let y=$(n,K);if(!y)return;let ne=this.resolvePath(t,y),b=ne===void 0?NaN:parseFloat(ne);return Number.isFinite(b)?b:void 0},o=s(jn),a=s(_n);if(o===void 0||a===void 0||o<=0||a<=0)return"<!-- LookRenderer.Distribution: needs resolvable alphaPath + betaPath (> 0) -->";let r=s(je)??o/(o+a),i=s(De),c=s(Ge),l=s(we),p=l!==void 0?`hsl(${l},65%,60%)`:"var(--kan-accent)",f=K=>Number.isInteger(K)?String(K):K.toFixed(1),g=280,h=168,k={top:14,right:14,bottom:24,left:14},m=g-k.left-k.right,j=h-k.top-k.bottom,v=120,_=1e-4,F=[],T=[],R=0;for(let K=0;K<=v;K++){let y=K/v;y<_?y=_:y>1-_&&(y=1-_);let ne=Math.exp((o-1)*Math.log(y)+(a-1)*Math.log(1-y));F.push(y),T.push(ne),ne>R&&(R=ne)}let O=K=>k.left+Math.min(1,Math.max(0,K))*m,S=K=>k.top+(1-(R>0?K/R:0))*j,P=k.top+j,ue=F.map((K,y)=>`${O(K).toFixed(1)},${S(T[y]).toFixed(1)}`),w=`M${O(0).toFixed(1)},${P.toFixed(1)} L${ue.join(" L")} L${O(1).toFixed(1)},${P.toFixed(1)} Z`,U="";if(i!==void 0&&c!==void 0&&c>i){let K=[`${O(i).toFixed(1)},${P.toFixed(1)}`];for(let y=0;y<=v;y++)F[y]>=i&&F[y]<=c&&K.push(`${O(F[y]).toFixed(1)},${S(T[y]).toFixed(1)}`);K.push(`${O(c).toFixed(1)},${P.toFixed(1)}`),U=`<path d="M${K.join(" L")} Z" fill="${p}" fill-opacity="0.3"/>`}let z=O(r),pe=`<line x1="${z.toFixed(1)}" y1="${k.top.toFixed(1)}" x2="${z.toFixed(1)}" y2="${P.toFixed(1)}" stroke="${p}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${z.toFixed(1)}" y="${(k.top-3).toFixed(1)}" text-anchor="middle" class="kan-dist-mean">\u03BC ${r.toFixed(2)}</text>`,ke=`<text x="${O(0).toFixed(1)}" y="${(P+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${O(1).toFixed(1)}" y="${(P+15).toFixed(1)}" text-anchor="end" class="kan-dist-axis">1</text>`,ge=`<svg class="kan-dist-svg" viewBox="0 0 ${g} ${h}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${k.left}" y1="${P.toFixed(1)}" x2="${(g-k.right).toFixed(1)}" y2="${P.toFixed(1)}" class="kan-dist-base"/><path d="${w}" fill="${p}" fill-opacity="0.12"/>`+U+`<polyline points="${ue.join(" ")}" fill="none" stroke="${p}" stroke-width="2"/>`+pe+ke+"</svg>",he=i!==void 0&&c!==void 0?` \xB7 95% CI [${i.toFixed(2)}\u2013${c.toFixed(2)}]`:"";return`<figure class="kan-dist">${ge}<figcaption class="kan-dist-caption">Beta(${f(o)}, ${f(a)})${he}</figcaption></figure>`}renderPublisherPackages(e){let t=new Map,n=r=>this.parseVersion((r.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},s=(r,i)=>r.major>i.major||r.major===i.major&&(r.minor>i.minor||r.minor===i.minor&&r.patch>i.patch);for(let r of this.catalog){if(!(r instanceof J)||W(r)!==e)continue;let i=(r.namespace||"").split("/")[1]?.split("@")[0]??"";if(!i||r.name!==i)continue;let c=t.get(i);(!c||s(n(r),n(c)))&&t.set(i,r)}let o=[...t.entries()].sort((r,i)=>r[0].localeCompare(i[0]));return o.length===0?"":`<section class="kan-pkg-grid">${o.map(([r,i])=>{let c=$(i,N)??r,l=$(i,be),p=l?Ze(l,160):"",f=this.svgUrlForSubject(i,e);return`<a class="kan-pkg-card" href="/${u(r)}"><img class="kan-pkg-card-svg" src="${u(f)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${u(c)}</span>`+(p?`<span class="kan-pkg-card-comment">${u(p)}</span>`:"")+"</span></a>"}).join("")}</section>`}findPublisherRootView(e){for(let t of this.catalog){if(!(t instanceof J)||W(t)!==e)continue;let n=_e(t);if(!n)continue;let s=ve(n);if(s&&L(s,bn))return t}}renderTimeline(e,t){let n=I(e,G);if(!n)return"<!-- LookRenderer.Timeline: no look.source -->";let s=I(e,He),o=this.findInstancesOfClass(n);if(o.length===0)return"<!-- LookRenderer.Timeline: no instances -->";let a=p=>s?this.readPropertyValueText(p,s)??"":"",r=o.slice().sort((p,f)=>a(p).localeCompare(a(f))),i=I(e,Be),c=$(e,je);return i&&c?this.renderTrajectoryChart(r,i,c,e,t,a):`<section class="kan-timeline"><ol>
|
|
96
|
+
${r.map(p=>{let f=p.namespace||"",g=f.split("/")[1]?.split("@")[0]??"",h=f.split("@")[1]??"",k=h?this.parseVersion(h):void 0,m=ce.formatResourceUrl({publisher:W(p),package_:g,name:p.name,...k?{version:k}:{}},"=",{contextPublisher:t}),j=a(p),v=j?`<span class="kan-timeline-date">${u(j)}</span>`:"",_=h||p.name;return`<li class="kan-timeline-node"><a href="${u(m)}"><span class="kan-timeline-key">${u(_)}</span>${v}</a></li>`}).join(`
|
|
97
|
+
`)}
|
|
98
|
+
</ol></section>`}renderTrajectoryChart(e,t,n,s,o,a){let r=s,i=$(r,we),c=$(r,De),l=$(r,Ge),p=$(r,In),f=Ye(r,Fn),g=Ye(r,Un),h=e.length,k=this.collectTrackedSeries(e,t,n,{hueBy:i,lowerPath:c,upperPath:l});if(k.length===0)return"<!-- LookRenderer.Timeline: no tracked series -->";let m=[];for(let b of k){for(let x of b.points)x!==null&&m.push(x);for(let x of b.lower??[])x!==null&&m.push(x);for(let x of b.upper??[])x!==null&&m.push(x)}if(m.length===0)return"<!-- LookRenderer.Timeline: no metric values -->";let j=Math.min(...m),v=Math.max(...m);v-j<1e-9&&(j-=.5,v+=.5);let _=(v-j)*.08,F=f!==void 0?f:j-_,T=g!==void 0?g:v+_;T-F<1e-9&&(T=F+1);let R=1e3,O=440,S={top:28,right:24,bottom:56,left:52},P=R-S.left-S.right,ue=O-S.top-S.bottom,w=b=>h<=1?S.left+P/2:S.left+b/(h-1)*P,U=b=>S.top+(1-(b-F)/(T-F))*ue,z=(b,x)=>b.hue!==void 0?b.hue:Math.round(x*360/k.length),pe=[];for(let b=0;b<5;b++){let x=F+b*(T-F)/4,q=U(x);pe.push(`<line x1="${S.left}" y1="${q.toFixed(1)}" x2="${(R-S.right).toFixed(1)}" y2="${q.toFixed(1)}" class="kan-fan-grid"/>`),pe.push(`<text x="${(S.left-8).toFixed(1)}" y="${(q+4).toFixed(1)}" class="kan-fan-axis" text-anchor="end">${x.toFixed(2)}</text>`)}let ke=[];e.forEach((b,x)=>{let q=this.hrefForSubject(b,o),M=(b.namespace||"").split("@")[1]??"",C=w(x),H=Gn(a(b));ke.push(`<a href="${u(q)}" class="kan-fan-xtick"><line x1="${C.toFixed(1)}" y1="${S.top}" x2="${C.toFixed(1)}" y2="${(O-S.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${C.toFixed(1)}" y="${(O-S.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${fe(M||b.name)}</text>`+(H?`<text x="${C.toFixed(1)}" y="${(O-S.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${fe(H)}</text>`:"")+"</a>")});let ge=[];k.forEach((b,x)=>{if(!b.lower||!b.upper)return;let q=z(b,x),M=[],C=[];for(let B=0;B<h;B++){let oe=b.upper[B],te=b.lower[B];oe==null||te===null||te===void 0||(M.push(`${w(B).toFixed(1)},${U(oe).toFixed(1)}`),C.unshift(`${w(B).toFixed(1)},${U(te).toFixed(1)}`))}let H=M.concat(C);H.length<3||ge.push(`<polygon class="kan-fan-band" points="${H.join(" ")}" fill="hsl(${q},65%,60%)"/>`)});let he=[];k.forEach((b,x)=>{let M=`hsl(${z(b,x)},65%,60%)`,C=[],H=[];b.points.forEach((B,oe)=>{if(B===null)return;let te=w(oe),Y=U(B);C.push(`${te.toFixed(1)},${Y.toFixed(1)}`),H.push(`<circle cx="${te.toFixed(1)}" cy="${Y.toFixed(1)}" r="3.5" fill="${M}"/>`)}),C.length!==0&&he.push(`<g class="kan-fan-series" data-series="${u(b.key)}"><polyline points="${C.join(" ")}" fill="none" stroke="${M}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`+H.join("")+"</g>")});let K=`<svg class="kan-fan-svg" viewBox="0 0 ${R} ${O}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+pe.join("")+ke.join("")+ge.join("")+he.join("")+"</svg>",y=p?`${u(p)}=`:"",ne=k.map((b,x)=>{let q=z(b,x),M=b.points.filter(Y=>Y!==null),C=M.length?M[0]:void 0,H=M.length?M[M.length-1]:void 0,B="";if(H!==void 0&&C!==void 0){let Y=H-C;if(Math.abs(Y)>=.005){let Qe=Y>0?"up":"down",en=Y>0?"\u25B2":"\u25BC";B=` <span class="kan-fan-delta ${Qe}">${Y>0?"+":""}${Y.toFixed(2)} ${en}</span>`}else B=' <span class="kan-fan-delta flat">\u2014</span>'}let oe=H!==void 0?`${y}${H.toFixed(2)}`:"\u2014",te=b.lastSubject?`<a href="${u(this.hrefForSubject(b.lastSubject,o))}">${u(b.label)}</a>`:u(b.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">${te}</span><span class="kan-fan-legend-cur">${oe}${B}</span></div>`});return`<section class="kan-fan"><div class="kan-fan-chart">${K}</div><div class="kan-fan-legend">${ne.join("")}</div></section>`}renderResourceGrid(e,t,n){let s=I(e,G);if(!s)return"<!-- LookRenderer.ResourceGrid: no look.source -->";let o=V(this.catalog,s),a=o?ae(o).some(c=>{let l=c.subject.name;return l==="ObjectProperty"||l==="DatatypeProperty"||l==="Property"}):!1,r=[];if(a&&n){let c=this.readPropertyValueReferences(n,s);for(let l of c){let p=V(this.catalog,{publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name,...l.subject.version?{version:l.subject.version}:{}});p&&r.push(p)}}else r=this.findInstancesOfClass(s);if(r.length===0)return`<!-- LookRenderer.ResourceGrid: no resources for ${s.publisher}/${s.package_}/${s.name} -->`;let i=[];for(let c of r){let l=$(c,N)??c.name,p=$(c,be),f=c.namespace||"",g=f.split("/")[1]?.split("@")[0]??"",h=f.split("@")[1]??"",k=h?this.parseVersion(h):void 0,m=ce.formatResourceUrl({publisher:W(c),package_:g,name:c.name,...k?{version:k}:{}},"=",{contextPublisher:t}),j=p?`<p class="kan-resource-card-subtitle">${u(p)}</p>`:"";i.push(`<a class="kan-resource-card" href="${u(m)}"><h3 class="kan-resource-card-title">${u(l)}</h3>${j}</a>`)}return`<section class="kan-resource-grid">
|
|
99
|
+
${i.join(`
|
|
100
|
+
`)}
|
|
101
|
+
</section>`}parseVersion(e){let t=e.split(".").map(Number);if(!(t.length!==3||t.some(n=>Number.isNaN(n))))return{major:t[0],minor:t[1],patch:t[2]}}findInstancesOfClass(e){let t=[];for(let n of this.catalog){if(!(n instanceof J))continue;ae(n).map(a=>a.subject).some(a=>a.publisher===e.publisher&&a.package_===e.package_&&a.name===e.name)&&t.push(n)}return t}renderBreadcrumb(e,t,n){let o=(e.namespace||"").split("/");if(o.length<2)return"";let a=o[0],r=o[1]??"",i=r.split("@")[0]??"",c=r.split("@")[1]??"";if(!a||!i)return"";if(n?.bareOverview)return`<nav class="kan-breadcrumb"><ol>
|
|
102
|
+
<li><a href="/">${u(a)}</a></li>
|
|
103
|
+
<li aria-current="page">${u(i)}</li>
|
|
104
|
+
</ol></nav>`;let l=e.name,f=!!V(this.catalog,{publisher:a,package_:i,name:i}),g=c?`${i}@${c}`:i,h=c?`/${i}/${c}/${i}`:`/${i}/${i}`,k=e.name===i,m=[];return m.push(`<li><a href="/">${u(a)}</a></li>`),k?m.push(`<li aria-current="page">${u(g)}</li>`):(m.push(f?`<li><a href="${u(h)}">${u(g)}</a></li>`:`<li>${u(g)}</li>`),m.push(`<li aria-current="page">${u(l)}</li>`)),`<nav class="kan-breadcrumb"><ol>
|
|
105
|
+
${m.join(`
|
|
106
|
+
`)}
|
|
107
|
+
</ol></nav>`}renderNavGroup(e,t){let n=this.findNavGroupForPublisher(t);if(!n)return"";let s=Q(n,Ue);if(!(s instanceof D))return"";let o=s.object??[];if(o.length===0)return"";let a=[];for(let r of o){if(!(r instanceof E))continue;let i=V(this.catalog,{publisher:r.subject.publisher,package_:r.subject.package_,name:r.subject.name}),{href:c,label:l}=this.resolveNavEntry(r,i,t),p=`/${e.namespace?.split("/")[1]?.split("@")[0]}/${(e.namespace||"").split("@")[1]}/${e.name}`,f=c===p?' aria-current="page"':"";a.push(`<li><a class="kan-nav-link" href="${u(c)}"${f}>${u(l)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
|
|
108
|
+
${a.join(`
|
|
109
|
+
`)}
|
|
110
|
+
</ul></nav>`}resolveNavEntry(e,t,n){if(t&&ae(t).map(i=>i.subject).some(i=>i.publisher===Oe.publisher&&i.package_===Oe.package_&&i.name===Oe.name)){let i=$(t,N),c=Q(t,Me);if(c instanceof A&&c.object instanceof E){let l=c.object,p=this.readLabelForUri({publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name});return{href:this.urlForReference(l,Me,n),label:i??p??l.subject.name}}}let s=ce.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},"*",{contextPublisher:n}),o=t?$(t,N)??e.subject.name:e.subject.name;return{href:s,label:o}}findNavGroupForPublisher(e){for(let t of this.catalog){if(!(t instanceof J)||!(t.namespace||"").startsWith(`${e}/`))continue;if(ae(t).map(a=>a.subject).some(a=>a.publisher===$e.publisher&&a.package_===$e.package_&&a.name===$e.name))return t}}renderMarkdown(e,t,n){let s=I(e,G);if(!s)return"<!-- LookRenderer.Markdown: no look.source -->";let o=Q(t,s),a;return o instanceof Pe?a=this.resolveMarkdownLinks(o,n):o instanceof X?a=o.object:a=this.readPropertyValueText(t,s),a?`<section class="kan-markdown">
|
|
111
|
+
${Ce(a)}
|
|
112
|
+
</section>`:""}resolveMarkdownLinks(e,t){let n=e.object,s=[...e.links].sort((o,a)=>a.startOffset-o.startOffset);for(let o of s){let a;if(o.target){let r=o.target.subject,i=(o.displayText??this.readLabelForUri({publisher:r.publisher,package_:r.package_,name:r.name})??o.reference).replace(/[[\]]/g,""),c=ce.formatResourceUrl({publisher:r.publisher,package_:r.package_,name:r.name,...r.version?{version:r.version}:{}},"=",{contextPublisher:t});a=`[${i}](${c})`}else a=o.displayText??o.reference;n=n.slice(0,o.startOffset)+a+n.slice(o.endOffset)}return n}renderRawMarkdown(e){let t=this.findCascadedLook(e);if(!t)return;let n=ze(t.declaration),s=[];for(let o of n){let a=ve(o);if(!a||!L(a,Ve))continue;let r=I(o,G);if(!r)continue;let i=this.readPropertyValueText(e,r);i&&s.push(i)}return s.length>0?s.join(`
|
|
113
|
+
|
|
114
|
+
`):void 0}renderHero(e,t,n){let s=['<header class="kan-hero">'],o=I(e,Vn);if(o){let l=this.readPropertyValueText(t,o);l&&s.push(`<span class="kan-hero-eyebrow">${u(l)}</span>`)}let a=I(e,Nn),r="";a&&(r=this.readPropertyValueText(t,a)??""),r||(r=t.name),s.push(`<h1 class="kan-hero-title">${u(r)}</h1>`);let i=I(e,Mn);if(i){let l=this.readPropertyValueText(t,i);l&&s.push(`<p class="kan-hero-subtitle">${u(l)}</p>`)}let c=I(e,We);if(c){let l=this.readPropertyValueReferences(t,c);if(l.length>0){let p=l.map(f=>this.renderBadge(f,We,n)).join("");s.push(`<div class="kan-hero-badges">${p}</div>`)}}return s.push("</header>"),s.join(`
|
|
115
|
+
`)}renderPropertyList(e,t,n){let s=I(e,G);if(!s)return"<!-- LookRenderer: PropertyList missing look.source -->";let o=this.readLabelForUri(s)??s.name,a=Q(t,s),r=this.gatherValueItems(a),i=r.length>0?r.map(c=>`<li>${this.renderInlineValue(c,G,n)}</li>`).join(""):'<li class="kan-empty">(no values)</li>';return['<section class="kan-property-list">',`<h3 class="kan-property-list-title">${u(o)}</h3>`,`<ul class="kan-property-list-items">${i}</ul>`,"</section>"].join(`
|
|
116
|
+
`)}renderBadgeRow(e,t,n){let s=I(e,G);if(!s)return"<!-- LookRenderer: BadgeRow missing look.source -->";let o=this.readPropertyValueReferences(t,s);return o.length===0?"":`<div class="kan-badge-row">${o.map(r=>this.renderBadge(r,G,n)).join("")}</div>`}renderChipRow(e,t,n){let s=qe(e,Hn);if(s.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let o=[];for(let a of s){let r=Q(t,a);if(!r)continue;let i=this.readLabelForUri(a)??a.name,c=this.renderStatementInlineValue(r,a,n);c&&o.push(`<span class="kan-chip"><span class="kan-chip-key">${u(i)}</span> <span class="kan-chip-val">${c}</span></span>`)}return o.length===0?"":`<div class="kan-chip-row">${o.join("")}</div>`}renderReferenceList(e,t,n){let s=qe(e,Ue);if(s.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let o=$(e,On),a=$(e,wn),r=[];for(let i of s){let c=this.readPropertyValueReferences(t,i);if(c.length===0)continue;let l=this.readLabelForUri(i)??i.name;if(o){let p=c.map(f=>this.renderDetailRow(f,o,a,n)).filter(f=>f).join("");p&&r.push(`<dt>${u(l)}</dt><dd><ul class="kan-ref-rows">${p}</ul></dd>`)}else{let p=c.map(f=>this.renderReferenceLink(f,Ue,n)).join(", ");r.push(`<dt>${u(l)}</dt><dd>${p}</dd>`)}}return r.length===0?"":`<dl class="kan-reference-list">${r.join("")}</dl>`}renderDetailRow(e,t,n,s){let o=V(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 a=this.resolvePath(o,t)??$(o,N)??o.name,r=this.hrefForSubject(o,s),i=this.svgUrlForSubject(o,s),c="";if(n){let l=this.resolvePath(o,n);l&&(c=`<span class="kan-ref-badge">${u(l)}</span>`)}return`<li class="kan-ref-row"><a class="kan-ref-rowlink" href="${u(r)}"><img class="kan-ref-icon" src="${u(i)}" alt="" loading="lazy"/><span class="kan-ref-text">${u(a)}</span>${c}</a></li>`}readPropertyValueText(e,t){let n=Q(e,t);if(n){if(n instanceof X)return n.object;if(n instanceof A){let s=n.object;return this.readLabelForUri({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name})??s.subject.name}if(n instanceof D)return(n.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 se?o.name??"":String(o)).filter(o=>o).join(", ")}}readPropertyValueReferences(e,t){let n=Q(e,t);if(!n)return[];if(n instanceof A)return[n.object];if(n instanceof D){let s=[];for(let o of n.object??[])o instanceof E&&s.push(o);return s}return[]}gatherValueItems(e){return e?e instanceof D?e.object??[]:e instanceof A?[e.object]:e instanceof ie?[e.object]:e instanceof X?[e.object]:[]:[]}renderInlineValue(e,t,n){return e instanceof E?this.renderReferenceLink(e,t,n):e instanceof se?u(e.name??"(embedded)"):typeof e=="string"?u(e):typeof e=="number"||typeof e=="boolean"?u(String(e)):""}renderStatementInlineValue(e,t,n){return e instanceof X?u(e.object):e instanceof A?this.renderReferenceLink(e.object,t,n):e instanceof D?(e.object??[]).map(o=>this.renderInlineValue(o,t,n)).filter(o=>o).join(", "):""}renderReferenceLink(e,t,n){let s=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name,o=this.urlForReference(e,t,n);return`<a class="kan-link" href="${u(o)}">${u(s)}</a>`}renderBadge(e,t,n){let s=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}),a=this.urlForReference(e,t,n),r=o?` title="${u(o)}"`:"";return`<a class="kan-badge" href="${u(a)}"${r}>${u(s)}</a>`}urlForReference(e,t,n){let s=t?this.getUrlFormForProperty(t):"=";return ce.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},s,{contextPublisher:n})}getUrlFormForProperty(e){let t=V(this.catalog,e);if(!t)return"=";let n=$(t,Bn);return n==="*"||n==="^"||n==="~"||n==="="?n:"="}readLabelForUri(e){let t=V(this.catalog,e);if(t)return $(t,N)}readCommentForUri(e){let t=V(this.catalog,e);if(t)return $(t,be)}};function Ie(d){let e=new Map;for(let t of d.statement){if(!(t instanceof ie)||!ee(t,Le.publisher,Le.package_,Le.name))continue;let n=t.object;for(let s of n.statement){if(!(s instanceof X))continue;let o=s.predicate?.subject?.name;if(!o)continue;let a=s.object;e.has(o)||e.set(o,a)}}return e}function _e(d){for(let e of d.statement)if(e instanceof ie&&ee(e,xe.publisher,xe.package_,xe.name))return e.object}function ze(d){for(let e of d.statement){if(!(e instanceof D)||!ee(e,Fe.publisher,Fe.package_,Fe.name))continue;let t=[];for(let n of e.object??[])n instanceof se&&t.push(n);return t}return[]}function ve(d){for(let e of d.statement)if(e instanceof A&&e.predicate?.subject?.name==="type"&&e.object instanceof E){let t=e.object.subject;return{publisher:t.publisher,package_:t.package_,name:t.name}}}function I(d,e){for(let t of d.statement)if(t instanceof A&&ee(t,e.publisher,e.package_,e.name)&&t.object instanceof E){let n=t.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function qe(d,e){for(let t of d.statement){if(!(t instanceof D)||!ee(t,e.publisher,e.package_,e.name))continue;let n=[];for(let s of t.object??[])s instanceof E&&n.push({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name});return n}return[]}function Q(d,e){for(let t of d.statement)if(ee(t,e.publisher,e.package_,e.name))return t}function $(d,e){for(let t of d.statement)if(t instanceof X&&ee(t,e.publisher,e.package_,e.name))return t.object}function Ye(d,e){for(let t of d.statement)if(t instanceof me&&ee(t,e.publisher,e.package_,e.name))return t.object}function ae(d){let e=[];for(let t of d.statement)if(t instanceof A){if(t.predicate?.subject?.name!=="type")continue;t.object instanceof E&&e.push(t.object)}else if(t instanceof D){if(t.predicate?.subject?.name!=="type")continue;for(let n of t.object??[])n instanceof E&&e.push(n)}return e}function Re(d){let e=[];for(let t of d.statement)if(t instanceof A){if(t.predicate?.subject?.name!=="subClassOf")continue;t.object instanceof E&&e.push(t.object)}else if(t instanceof D){if(t.predicate?.subject?.name!=="subClassOf")continue;for(let n of t.object??[])n instanceof E&&e.push(n)}return e}function re(d,e){let t=[];for(let n of d){if(!(n instanceof J)||n.name!==e.name)continue;(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`)&&t.push(n)}return t}function V(d,e){let t="version"in e?e.version:void 0;if(t){let n=`${e.publisher}/${e.package_}@${t.major}.${t.minor}.${t.patch}`;for(let s of d)if(s instanceof J&&s.name===e.name&&s.namespace===n)return s}for(let n of d){if(!(n instanceof J)||n.name!==e.name)continue;if((n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return n}}function ee(d,e,t,n){let s=d.predicate?.subject;return s?s.publisher===e&&s.package_===t&&s.name===n:!1}function L(d,e){return d.publisher===e.publisher&&d.package_===e.package_&&d.name===e.name}function le(d){return`${d.publisher}/${d.package_}/${d.name}`}function Dn(d){return d.name==="Package"?{...Se}:d}function W(d){let e=d.namespace||"",t=e.indexOf("/");return t>=0?e.substring(0,t):e}function u(d){return d.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Je(d){let e=d.lastIndexOf(".");return e>=0?d.substring(e+1):d}function Xe(d,e){for(let t of d.statement)if(t.predicate?.subject?.name===e)return t}function fe(d){return d.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function Ze(d,e){return d.length<=e?d:d.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function Gn(d){if(!d)return"";let e=/^(\d{4})-(\d{2})-(\d{2})/.exec(d);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)}`:d}export{Ce as a,Ee as b};
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as et,b as tt,c as rt,d as nt,e as ot,f as at,g as it,h as st,i as ct,j as lt}from"./chunk-4EWKM5LF.js";import{b as Zt}from"./chunk-
|
|
1
|
+
import{a as et,b as tt,c as rt,d as nt,e as ot,f as at,g as it,h as st,i as ct,j as lt}from"./chunk-4EWKM5LF.js";import{b as Zt}from"./chunk-LKDDPNIW.js";import{a as Xe,b as Ze,c as Qe,d as b,e as S,f as i}from"./chunk-EGHULU3U.js";import{a as Xt}from"./chunk-KE4QZNDZ.js";import{a as Te,b as je,c as Le,d as Fe,e as Ne}from"./chunk-5AH6GIPO.js";import{a as Be,b as De,c as Oe,d as Ae}from"./chunk-VQFL5C7Q.js";import{a as ut,b as pt,c as mt,d as ft}from"./chunk-RZ57SDAT.js";import{a as Ye,b as yt,c as gt,d as ht,e as bt}from"./chunk-4TJZIM7A.js";import{a as kt}from"./chunk-NIGFQYVA.js";import{A as Gt,B as Wt,C as Jt,D as qt,E as Yt,a as St,b as Ct,c as Pt,d as Rt,e as wt,f as xt,g as $t,h as vt,i as Et,j as Kt,k as Bt,l as It,m as Tt,n as jt,o as Lt,p as Ft,q as Nt,r as Dt,s as Ot,t as At,u as Ut,v as Mt,w as Vt,x as Ht,y as _t,z as zt}from"./chunk-YRMZ5R2W.js";import"./chunk-FJ35VIV6.js";import{a as F,b as D,c as _e,d as We,e as Je,f as qe}from"./chunk-SQDXESNM.js";import{a as Ue,b as j,c as L,d as N,e as Ve,f as He,g as O,h as A,i as U,j as M,k as V,l as H}from"./chunk-W6T7MOKY.js";import{a as Ie}from"./chunk-7CUTGGH3.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 ze,c as Ge}from"./chunk-5ILSX24H.js";import{a as Me}from"./chunk-FUUTGGJS.js";import{a as dt}from"./chunk-ODIECDN7.js";import{VersionOperator as so}from"@kanonak-protocol/types/document/models/enums";import{existsSync as gr,readFileSync as hr}from"fs";import{homedir as kr}from"os";import{join as br}from"path";import{execFile as Qt}from"child_process";import{promisify as er}from"util";var C=er(Qt),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)}
|
|
@@ -255,6 +255,20 @@ export declare class LookRenderer {
|
|
|
255
255
|
* and its nested embedded children (e.g. operands, after/then).
|
|
256
256
|
*/
|
|
257
257
|
private renderConditionNode;
|
|
258
|
+
/**
|
|
259
|
+
* Render a SectionHeading band — a subtle labeled section break. `heading`
|
|
260
|
+
* is the (literal) section name; `note` is an optional one-line
|
|
261
|
+
* description. One of the few bands that takes literal text, like Footer.
|
|
262
|
+
*/
|
|
263
|
+
private renderSectionHeading;
|
|
264
|
+
/**
|
|
265
|
+
* Render a VersionDelta band — a visual of how `metricPath` changed from
|
|
266
|
+
* the previous version of THIS resource (same canonical key, highest
|
|
267
|
+
* version below the current). A 0..1 track marks the prior and current
|
|
268
|
+
* values with the move colored by direction, plus a delta badge. The
|
|
269
|
+
* "why" is left to a neighbouring prose band. Ontology-neutral.
|
|
270
|
+
*/
|
|
271
|
+
private renderVersionDelta;
|
|
258
272
|
/**
|
|
259
273
|
* Render a PackageContents band — the default package listing. The page
|
|
260
274
|
* instance is a Package self-resource; this enumerates every other
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{b as E,c as F,d as f,f as M}from"../chunk-2JQMUZWN.js";import{a as X,b as ye}from"../chunk-
|
|
1
|
+
import{b as E,c as F,d as f,f as M}from"../chunk-2JQMUZWN.js";import{a as X,b as ye}from"../chunk-LKDDPNIW.js";import{a as Oe}from"../chunk-KE4QZNDZ.js";import"../chunk-RZ57SDAT.js";import"../chunk-NIGFQYVA.js";import{a as Ue}from"../chunk-FJ35VIV6.js";import{a as C,c as Re,f as Ce}from"../chunk-SQDXESNM.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{a as Le}from"../chunk-7CUTGGH3.js";import"../chunk-5ILSX24H.js";import"../chunk-FUUTGGJS.js";var gt="kanonak.org",yt="document-ast",m=t=>({publisher:gt,package_:yt,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 Ne(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=kt(e.metadata,n),a=wt(e.children),u=["---",...r,"---","",a].join(`
|
|
2
2
|
`);return n?.trailingNewline&&(u.endsWith(`
|
|
3
3
|
`)||(u+=`
|
|
4
4
|
`)),u}};function kt(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=Ie(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 Ie(t,e){switch(t.kind){case"StringScalar":return ht(t.stringValue,e);case"IntegerScalar":return String(t.integerValue);case"StructuredList":{let n=[];for(let r of t.items){let a=Ie(r,e);a!==void 0&&n.push(a)}return n.join(", ")}case"StructuredMap":return;default:return}}function ht(t,e){return!e||Ne(e,k.ESC_RAW)?t:Ne(e,k.ESC_YAML_SAFE)?bt(t):t}function bt(t){return t.includes(`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kanonak-protocol/sdk",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.40.0",
|
|
4
4
|
"description": "Kanonak Protocol SDK - Document repository and parsing implementations for TypeScript",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
"yaml-parser"
|
|
114
114
|
],
|
|
115
115
|
"dependencies": {
|
|
116
|
-
"@kanonak-protocol/types": "^3.
|
|
116
|
+
"@kanonak-protocol/types": "^3.40.0",
|
|
117
117
|
"ignore": "^7.0.5",
|
|
118
118
|
"js-yaml": "^4.1.0",
|
|
119
119
|
"yaml": "^2.7.0"
|
package/dist/chunk-ETB6CEAH.js
DELETED
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import{a as oe}from"./chunk-NIGFQYVA.js";import{a as ee,c as Ee}from"./chunk-SQDXESNM.js";import{c as W,d as w,g as z,h as me,i as Ke,j as I,k as re,l as V}from"./chunk-W6T7MOKY.js";function Ce(u){let e=u.replace(/\r\n/g,`
|
|
2
|
-
`).split(`
|
|
3
|
-
`),t=[],n=0;for(;n<e.length;){let s=e[n];if(s.trim()===""){n++;continue}let o=/^(\s*)```(\S*)\s*$/.exec(s);if(o){let i=o[2],c=[];for(n++;n<e.length&&!/^(\s*)```\s*$/.test(e[n]);)c.push(e[n]),n++;n++;let l=Ae(c.join(`
|
|
4
|
-
`)),f=i?` class="language-${Ne(i)}"`:"";t.push(`<pre><code${f}>${l}</code></pre>`);continue}let a=/^(#{1,6})\s+(.*)$/.exec(s);if(a){let i=a[1].length,c=ue(a[2].trim());t.push(`<h${i}>${c}</h${i}>`),n++;continue}if(s.includes("|")&&n+1<e.length&&Te(e[n+1])){let i=Se(s),c=nn(e[n+1]);n+=2;let l=[];for(;n<e.length&&e[n].trim()!==""&&e[n].includes("|");)l.push(Se(e[n])),n++;t.push(tn(i,c,l));continue}if(/^\s*[-*]\s+/.test(s)){let i=[];for(;n<e.length&&/^\s*[-*]\s+/.test(e[n]);){let c=[e[n].replace(/^\s*[-*]\s+/,"")];for(n++;n<e.length&&e[n].trim()!==""&&!/^\s*[-*]\s+/.test(e[n])&&!/^\s*\d+\.\s+/.test(e[n]);)c.push(e[n]),n++;n<e.length&&e[n].trim()===""&&n++,i.push(`<li>${ue(c.join(" ").trim())}</li>`)}t.push(`<ul>
|
|
5
|
-
${i.join(`
|
|
6
|
-
`)}
|
|
7
|
-
</ul>`);continue}if(/^\s*\d+\.\s+/.test(s)){let i=[];for(;n<e.length&&/^\s*\d+\.\s+/.test(e[n]);){let c=[e[n].replace(/^\s*\d+\.\s+/,"")];for(n++;n<e.length&&e[n].trim()!==""&&!/^\s*\d+\.\s+/.test(e[n])&&!/^\s*[-*]\s+/.test(e[n]);)c.push(e[n]),n++;n<e.length&&e[n].trim()===""&&n++,i.push(`<li>${ue(c.join(" ").trim())}</li>`)}t.push(`<ol>
|
|
8
|
-
${i.join(`
|
|
9
|
-
`)}
|
|
10
|
-
</ol>`);continue}let r=[s];for(n++;n<e.length&&e[n].trim()!==""&&!/^(#{1,6})\s+/.test(e[n])&&!/^(\s*)```/.test(e[n])&&!/^\s*[-*]\s+/.test(e[n])&&!/^\s*\d+\.\s+/.test(e[n])&&!(e[n].includes("|")&&n+1<e.length&&Te(e[n+1]));)r.push(e[n]),n++;t.push(`<p>${ue(r.join(" "))}</p>`)}return t.join(`
|
|
11
|
-
`)}function Te(u){return u.includes("-")?/^[\s|:-]+$/.test(u):!1}function Se(u){let e=u.trim();return e.startsWith("|")&&(e=e.slice(1)),e.endsWith("|")&&(e=e.slice(0,-1)),e.split("|").map(t=>t.trim())}function nn(u){return Se(u).map(e=>{let t=e.startsWith(":"),n=e.endsWith(":");return t&&n?"center":n?"right":t?"left":null})}function tn(u,e,t){let n=a=>{let r=e[a];return r?` style="text-align:${r}"`:""},s=u.map((a,r)=>`<th${n(r)}>${ue(a)}</th>`).join(""),o=t.map(a=>`<tr>${a.map((i,c)=>`<td${n(c)}>${ue(i)}</td>`).join("")}</tr>`).join(`
|
|
12
|
-
`);return`<table>
|
|
13
|
-
<thead><tr>${s}</tr></thead>
|
|
14
|
-
<tbody>
|
|
15
|
-
${o}
|
|
16
|
-
</tbody>
|
|
17
|
-
</table>`}function ue(u){let e=Ae(u);return e=e.replace(/`([^`\n]+)`/g,(t,n)=>`<code>${n}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(t,n,s)=>`<a href="${Ne(s)}">${n}</a>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,(t,n)=>`<strong>${n}</strong>`),e=e.replace(/(^|[^*])\*([^*\n]+)\*(?!\*)/g,(t,n,s)=>`${n}<em>${s}</em>`),e=e.replace(/(^|[\s(])_([^_\n]+)_(?=[\s).,;:!?]|$)/g,(t,n,s)=>`${n}<em>${s}</em>`),e}function Ae(u){return u.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Ne(u){return u.replace(/"/g,""").replace(/&/g,"&")}var ye={publisher:"kanonak.org",package_:"derivation",name:"look"},Le={publisher:"kanonak.org",package_:"derivation",name:"tokens"},q={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},P={publisher:"kanonak.org",package_:"core-rdf",name:"label"},be={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},sn={publisher:"kanonak.org",package_:"look",name:"Hero"},an={publisher:"kanonak.org",package_:"look",name:"PropertyList"},rn={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},on={publisher:"kanonak.org",package_:"look",name:"ChipRow"},cn={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},Me={publisher:"kanonak.org",package_:"look",name:"Markdown"},$e={publisher:"kanonak.org",package_:"look",name:"NavGroup"},xe={publisher:"kanonak.org",package_:"look",name:"NavLink"},Ve={publisher:"kanonak.org",package_:"look",name:"target"},ln={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},un={publisher:"kanonak.org",package_:"look",name:"Timeline"},dn={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},fn={publisher:"kanonak.org",package_:"look",name:"Figure"},pn={publisher:"kanonak.org",package_:"look",name:"StatRow"},kn={publisher:"kanonak.org",package_:"look",name:"Horizon"},gn={publisher:"kanonak.org",package_:"look",name:"PackageContents"},Re={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},hn={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},mn={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},bn={publisher:"kanonak.org",package_:"look",name:"PublisherView"},$n={publisher:"kanonak.org",package_:"look",name:"Distribution"},jn={publisher:"kanonak.org",package_:"look",name:"alphaPath"},_n={publisher:"kanonak.org",package_:"look",name:"betaPath"},vn={publisher:"kanonak.org",package_:"look",name:"stats"},Rn={publisher:"kanonak.org",package_:"look",name:"statPath"},Kn={publisher:"kanonak.org",package_:"look",name:"statLabel"},Sn={publisher:"kanonak.org",package_:"look",name:"labelPath"},yn={publisher:"kanonak.org",package_:"look",name:"badgePath"},He={publisher:"kanonak.org",package_:"look",name:"orderBy"},Be={publisher:"kanonak.org",package_:"look",name:"track"},Oe={publisher:"kanonak.org",package_:"look",name:"metricPath"},we={publisher:"kanonak.org",package_:"look",name:"hueBy"},De={publisher:"kanonak.org",package_:"look",name:"lowerPath"},Ge={publisher:"kanonak.org",package_:"look",name:"upperPath"},Ln={publisher:"kanonak.org",package_:"look",name:"axisMin"},xn={publisher:"kanonak.org",package_:"look",name:"axisMax"},On={publisher:"kanonak.org",package_:"look",name:"valueLabel"};var wn={publisher:"kanonak.org",package_:"look",name:"semanticSvg"},Un={publisher:"kanonak.org",package_:"look",name:"tierChip"},Fn={publisher:"kanonak.org",package_:"look",name:"tierIcon"},In={publisher:"kanonak.org",package_:"look",name:"tierCard"},Pn={publisher:"kanonak.org",package_:"look",name:"tierFull"};var Ue={publisher:"kanonak.org",package_:"look",name:"bands"},En={publisher:"kanonak.org",package_:"look",name:"title"},Tn={publisher:"kanonak.org",package_:"look",name:"eyebrow"},Cn={publisher:"kanonak.org",package_:"look",name:"subtitle"},We={publisher:"kanonak.org",package_:"look",name:"badges"},H={publisher:"kanonak.org",package_:"look",name:"source"},An={publisher:"kanonak.org",package_:"look",name:"chips"},Fe={publisher:"kanonak.org",package_:"look",name:"entries"},Nn={publisher:"kanonak.org",package_:"look",name:"urlForm"},Pe=class{constructor(e){this.catalog=e}catalog;findCascadedLook(e){let t=je(e);if(t)return{declaration:t,sourceClass:{publisher:J(e),package_:(e.namespace||"").split("/")[1]?.split("@")[0]??"",name:e.name}};let n=new Set,s=ne(e);for(;s.length>0;){let o=s.shift(),a=Mn(o.subject),r=ce(a);if(n.has(r))continue;n.add(r);let i=ie(this.catalog,a);for(let c of i){let l=je(c);if(l)return{declaration:l,sourceClass:{publisher:a.publisher,package_:a.package_,name:a.name}}}for(let c of i)for(let l of ve(c))s.push(l)}if(!n.has(ce(q)))for(let o of ie(this.catalog,q)){let a=je(o);if(a)return{declaration:a,sourceClass:{...q}}}}findCascadedTokens(e){let t=new Map;for(let[o,a]of Ie(e))t.has(o)||t.set(o,a);let n=new Set,s=ne(e);for(;s.length>0;){let o=s.shift(),a=ce(o.subject);if(n.has(a))continue;n.add(a);let r=ie(this.catalog,o.subject);if(r.length!==0)for(let i of r){for(let[c,l]of Ie(i))t.has(c)||t.set(c,l);for(let c of ve(i))s.push(c)}}if(!n.has(ce(q))){let o=ie(this.catalog,q);for(let a of o)for(let[r,i]of Ie(a))t.has(r)||t.set(r,i)}return t}renderSvg(e){let t=$(e,P)??e.name,n=(t.trim().charAt(0)||"?").toUpperCase(),s=`${e.namespace??""}/${e.name}`,o={label:t,firstLetter:n,uri:s},a=this.collectCascadedSvgTiers(e),r=b=>this.applyPlaceholders(b,e,o),i=r(a.tierChip??""),c=r(a.tierIcon??""),l=r(a.tierCard??""),f=r(a.tierFull??""),k=[...this.findCascadedTokens(e)].map(([b,g])=>`--kan-${b}: ${g};`).join(" ");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" width="400" height="400" style="${fe(k)}">
|
|
18
|
-
<style>
|
|
19
|
-
.tier-chip,.tier-icon,.tier-card{display:none}
|
|
20
|
-
.tier-full{display:block}
|
|
21
|
-
@media (max-width:400px){.tier-full{display:none}.tier-card{display:block}}
|
|
22
|
-
@media (max-width:160px){.tier-card{display:none}.tier-icon{display:block}}
|
|
23
|
-
@media (max-width:60px){.tier-icon{display:none}.tier-chip{display:block}}
|
|
24
|
-
</style>
|
|
25
|
-
<g class="tier-chip">${i}</g>
|
|
26
|
-
<g class="tier-icon">${c}</g>
|
|
27
|
-
<g class="tier-card">${l}</g>
|
|
28
|
-
<g class="tier-full">${f}</g>
|
|
29
|
-
</svg>`}applyPlaceholders(e,t,n){return e.replace(/\{\{([^}]+)\}\}/g,(s,o)=>{let a=o.trim();if(n[a]!==void 0)return fe(n[a]);let r=this.resolvePath(t,a);return r===void 0?`{{${a}}}`:fe(r)})}resolvePath(e,t){let n=t.split("/").map(r=>r.trim()).filter(r=>r.length>0);if(n.length===0)return;let s=e;for(let r=0;r<n.length-1;r++){if(!s)return;let i=Je(n[r]),c=Xe(s,i);if(!c)return;if(c instanceof I&&c.object instanceof w){let l=E(this.catalog,c.object.subject);if(!l)return;s=l}else if(c instanceof re)s=c.object;else return}if(!s)return;let o=Je(n[n.length-1]),a=Xe(s,o);if(a){if(a instanceof z||a instanceof me||a instanceof Ke)return String(a.object);if(a instanceof I&&a.object instanceof w){let r=a.object,i=E(this.catalog,r.subject);return i?$(i,P)??r.subject.name:r.subject.name}}}collectCascadedSvgTiers(e){let t={},n=a=>{let r=Y(a,wn);if(!(r instanceof re))return;let i=r.object,c=$(i,Un),l=$(i,Fn),f=$(i,In),p=$(i,Pn);t.tierChip===void 0&&c!==void 0&&(t.tierChip=c),t.tierIcon===void 0&&l!==void 0&&(t.tierIcon=l),t.tierCard===void 0&&f!==void 0&&(t.tierCard=f),t.tierFull===void 0&&p!==void 0&&(t.tierFull=p)};n(e);let s=new Set,o=ne(e);for(;o.length>0;){let a=o.shift(),r=ce(a.subject);if(s.has(r))continue;s.add(r);let i=ie(this.catalog,a.subject);for(let c of i){n(c);for(let l of ve(c))o.push(l)}}if(!s.has(ce(q)))for(let a of ie(this.catalog,q))n(a);return t}renderStylesheet(e){let t=this.findCascadedTokens(e),n=[];for(let[a,r]of t)n.push(` --kan-${a}: ${r};`);let s=n.length>0?`:root {
|
|
30
|
-
${n.join(`
|
|
31
|
-
`)}
|
|
32
|
-
}`:":root { /* no tokens resolved */ }",o=this.findBaseStylesheet(J(e))??"";return`${s}
|
|
33
|
-
${o}`}findBaseStylesheet(e){let t="kanonak.org/site/content",n,s;for(let a of this.catalog){if(!(a instanceof W)||a.name!=="base-stylesheet")continue;let r=a.namespace||"";r.startsWith(`${e}/look-styles@`)?n=a:r.startsWith("kanonak.org/look-styles@")&&(s=a)}let o=n??s;if(o)for(let a of o.statement){let r=a.predicate?.subject;if(!r)continue;if(`${r.publisher}/${r.package_}/${r.name}`===t&&a instanceof z)return a.object}}renderHtml(e){let t=this.findCascadedLook(e);if(!t)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let n=ze(t.declaration);if(n.length===0)return"<!-- LookRenderer: look declaration has no bands -->";let s=J(e),o=[];for(let a of n)o.push(this.renderBand(a,e,s));return o.join(`
|
|
34
|
-
`)}renderPublisherIndex(e,t,n){let s=n?this.renderNavGroup(n,e):"",o=t.map(r=>{let i=r.comment?`<p class="kan-resource-card-subtitle">${d(r.comment)}</p>`:"";return`<a class="kan-resource-card" href="${d(r.href)}"><h3 class="kan-resource-card-title">${d(r.label)}</h3>${i}</a>`}).join(`
|
|
35
|
-
`),a=`<header class="kan-hero">
|
|
36
|
-
<h1 class="kan-hero-title">${d(e)}</h1>
|
|
37
|
-
</header>
|
|
38
|
-
<section class="kan-resource-grid">
|
|
39
|
-
${o}
|
|
40
|
-
</section>`;return`<!doctype html>
|
|
41
|
-
<html lang="en">
|
|
42
|
-
<head>
|
|
43
|
-
<meta charset="utf-8">
|
|
44
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
45
|
-
<title>${d(e)}</title>
|
|
46
|
-
<link rel="stylesheet" href="index.css">
|
|
47
|
-
</head>
|
|
48
|
-
<body>
|
|
49
|
-
${s}
|
|
50
|
-
<main class="kan-main">
|
|
51
|
-
${a}
|
|
52
|
-
</main>
|
|
53
|
-
</body>
|
|
54
|
-
</html>
|
|
55
|
-
`}renderPublisherIndexStylesheet(e){return e?this.renderStylesheet(e):""}hasDeclaredView(e){let t=this.findCascadedLook(e);return t?!(s=>s.publisher===q.publisher&&s.package_===q.package_&&s.name===q.name||s.publisher===Re.publisher&&s.package_===Re.package_&&s.name===Re.name)(t.sourceClass):!1}renderPackageVersionList(e,t,n){let s=J(n),o=this.renderNavGroup(n,s),a=this.renderBreadcrumb(n,s,{bareOverview:!0}),r=t.map(c=>`<a class="kan-resource-card" href="/${d(e)}/${d(c)}/"><h3 class="kan-resource-card-title">${d(c)}</h3></a>`).join(`
|
|
56
|
-
`),i=`<header class="kan-hero">
|
|
57
|
-
<span class="kan-hero-eyebrow">PACKAGE</span>
|
|
58
|
-
<h1 class="kan-hero-title">${d(e)}</h1>
|
|
59
|
-
</header>
|
|
60
|
-
<section class="kan-resource-grid">
|
|
61
|
-
${r}
|
|
62
|
-
</section>`;return`<!doctype html>
|
|
63
|
-
<html lang="en">
|
|
64
|
-
<head>
|
|
65
|
-
<meta charset="utf-8">
|
|
66
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
67
|
-
<title>${d(e)}</title>
|
|
68
|
-
<link rel="stylesheet" href="${d(n.name)}.css">
|
|
69
|
-
</head>
|
|
70
|
-
<body>
|
|
71
|
-
${o}
|
|
72
|
-
${a}
|
|
73
|
-
<main class="kan-main">
|
|
74
|
-
${i}
|
|
75
|
-
</main>
|
|
76
|
-
</body>
|
|
77
|
-
</html>
|
|
78
|
-
`}renderDocument(e,t){let n=this.renderHtml(e),s=this.readPropertyValueText(e,P)??e.name,o=t?.rootIndex?"index.css":`${e.name}.css`,a=!t?.rootIndex&&this.hasSvgDerivation(e)?`<figure class="kan-figure"><img src="${d(e.name)}.svg" alt=""></figure>
|
|
79
|
-
`:"",r=J(e),i=this.renderNavGroup(e,r),c=t?.rootIndex?"":this.renderBreadcrumb(e,r,t);return`<!doctype html>
|
|
80
|
-
<html lang="en">
|
|
81
|
-
<head>
|
|
82
|
-
<meta charset="utf-8">
|
|
83
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
84
|
-
<title>${d(s)}</title>
|
|
85
|
-
<link rel="stylesheet" href="${d(o)}">
|
|
86
|
-
</head>
|
|
87
|
-
<body>
|
|
88
|
-
${i}
|
|
89
|
-
${c}
|
|
90
|
-
<main class="kan-main">
|
|
91
|
-
${a}${n}
|
|
92
|
-
</main>
|
|
93
|
-
</body>
|
|
94
|
-
</html>
|
|
95
|
-
`}hasSvgDerivation(e){let t=new Set,n=ne(e);for(;n.length>0;){let s=n.shift(),o=ce(s.subject);if(t.has(o))continue;t.add(o);let a=E(this.catalog,s.subject);if(a){for(let r of a.statement)if(r instanceof V&&X(r,"kanonak.org","derivation","derivations")){for(let i of r.object??[])if(i instanceof ee)for(let c of i.statement){if(!(c instanceof I)||!X(c,"kanonak.org","derivation","format")||!(c.object instanceof w))continue;let l=c.object.subject;if(l.publisher==="kanonak.org"&&l.package_==="formats"&&l.name==="svg")return!0}}for(let r of ve(a))n.push(r)}}return!1}renderBand(e,t,n){let s=_e(e);return s?y(s,sn)?this.renderHero(e,t,n):y(s,an)?this.renderPropertyList(e,t,n):y(s,rn)?this.renderBadgeRow(e,t,n):y(s,on)?this.renderChipRow(e,t,n):y(s,cn)?this.renderReferenceList(e,t,n):y(s,Me)?this.renderMarkdown(e,t,n):y(s,$e)?this.renderNavGroup(t,n):y(s,ln)?this.renderResourceGrid(e,n,t):y(s,un)?this.renderTimeline(e,n):y(s,dn)?this.renderVersionDiff(e,n):y(s,fn)?this.renderFigure(e,t,n):y(s,pn)?this.renderStatRow(e,t):y(s,kn)?this.renderHorizon(e,t,n):y(s,gn)?this.renderPackageContents(t,n):y(s,hn)?this.renderFeaturedResource(e,n):y(s,mn)?this.renderPublisherPackages(n):y(s,$n)?this.renderDistribution(e,t):`<!-- LookRenderer: unsupported band ${s.publisher}/${s.package_}/${s.name} -->`:"<!-- LookRenderer: band has no rdf:type -->"}collectTrackedSeries(e,t,n,s){let{hueBy:o,lowerPath:a,upperPath:r}=s??{},i=new Map,c=e.length,l=(f,p)=>{let k=this.resolvePath(f,p);return k===void 0?NaN:parseFloat(k)};return e.forEach((f,p)=>{let k=this.readPropertyValueReferences(f,t);for(let b of k){let g=E(this.catalog,{publisher:b.subject.publisher,package_:b.subject.package_,name:b.subject.name,...b.subject.version?{version:b.subject.version}:{}});if(!g)continue;let m=b.subject.name,j=i.get(m);j||(j={key:m,label:$(g,P)??m,points:new Array(c).fill(null),...a?{lower:new Array(c).fill(null)}:{},...r?{upper:new Array(c).fill(null)}:{}},i.set(m,j));let S=l(g,n);if(Number.isFinite(S)&&(j.points[p]=S),a&&j.lower){let _=l(g,a);Number.isFinite(_)&&(j.lower[p]=_)}if(r&&j.upper){let _=l(g,r);Number.isFinite(_)&&(j.upper[p]=_)}if(o){let _=l(g,o);Number.isFinite(_)&&(j.hue=_)}j.lastSubject=g}}),[...i.values()]}hrefForSubject(e,t,n="="){let s=e.namespace||"",o=s.split("/")[1]?.split("@")[0]??"",a=s.split("@")[1]??"",r=a?this.parseVersion(a):void 0;return oe.formatResourceUrl({publisher:J(e),package_:o,name:e.name,...r?{version:r}:{}},n,{contextPublisher:t})}renderVersionDiff(e,t){let n=L(e,H);if(!n)return"<!-- LookRenderer.VersionDiff: no look.source -->";let s=$(e,Oe),o=L(e,Be);if(!o||!s)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let a=L(e,He),r=$(e,we),i=this.findInstancesOfClass(n);if(i.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let c=k=>a?this.readPropertyValueText(k,a)??"":"",l=i.slice().sort((k,b)=>c(k).localeCompare(c(b))),f=this.collectTrackedSeries(l,o,s,{hueBy:r});return f.length===0?"<!-- LookRenderer.VersionDiff: no tracked series -->":`<section class="kan-vdiff">${f.map((k,b)=>{let g=k.hue!==void 0?k.hue:Math.round(b*360/f.length),m=k.points.filter(N=>N!==null);if(m.length===0)return"";let j=m[0],S=m[m.length-1],_=S-j,U;if(Math.abs(_)>=.005){let N=_>0?"up":"down",x=_>0?"\u25B2":"\u25BC";U=`<span class="kan-vdiff-delta ${N}">${_>0?"+":""}${_.toFixed(2)} ${x}</span>`}else U='<span class="kan-vdiff-delta flat">\u2014</span>';let B=k.lastSubject?`<a href="${d(this.hrefForSubject(k.lastSubject,t))}">${d(k.label)}</a>`:d(k.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${g}"><span class="kan-vdiff-label">${B}</span><span class="kan-vdiff-start">${j.toFixed(2)}</span>`+this.sparkline(k.points,g)+`<span class="kan-vdiff-end">${S.toFixed(2)}</span>`+U+"</div>"}).join("")}</section>`}sparkline(e,t){let a=`hsl(${t},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 i=Math.min(...r),l=Math.max(...r)-i,f=e.length,p=m=>f<=1?132/2:4+m/(f-1)*124,k=m=>l<1e-9?30/2:26-(m-i)/l*22,b=[],g=[];return e.forEach((m,j)=>{if(m===null)return;let S=p(j),_=k(m);b.push(`${S.toFixed(1)},${_.toFixed(1)}`),g.push(`<circle cx="${S.toFixed(1)}" cy="${_.toFixed(1)}" r="2" fill="${a}"/>`)}),`<svg class="kan-vdiff-spark" viewBox="0 0 132 30" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" role="img"><polyline points="${b.join(" ")}" fill="none" stroke="${a}" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round"/>`+g.join("")+"</svg>"}svgUrlForSubject(e,t,n="="){return`${this.hrefForSubject(e,t,n)}.svg`}renderFigure(e,t,n){let s=t,o=L(e,H);if(o){let i=E(this.catalog,o);i&&(s=i)}let a=this.svgUrlForSubject(s,n),r=$(s,P)??s.name;return`<figure class="kan-figure"><img class="kan-figure-img" src="${d(a)}" alt="${d(r)}" loading="lazy"/></figure>`}renderStatRow(e,t){let n=Y(e,vn),s=this.gatherValueItems(n).filter(a=>a instanceof ee);if(s.length===0)return"<!-- LookRenderer.StatRow: no look.stats -->";let o=[];for(let a of s){let r=$(a,Rn);if(!r)continue;let i=this.resolvePath(t,r);if(i===void 0)continue;let c=$(a,Kn)??"";o.push('<div class="kan-stat">'+(c?`<span class="kan-stat-label">${d(c)}</span>`:"")+`<span class="kan-stat-val">${d(i)}</span></div>`)}return o.length===0?"":`<div class="kan-stat-row">${o.join("")}</div>`}renderHorizon(e,t,n){let s=L(e,H);if(!s)return"<!-- LookRenderer.Horizon: no look.source -->";let o=this.gatherValueItems(Y(t,s)).filter(r=>r instanceof ee);return o.length===0?"":`<section class="kan-horizon">${o.map(r=>this.renderConditionNode(r,n,0)).join("")}</section>`}renderConditionNode(e,t,n){let s=_e(e),o=s?this.readLabelForUri({publisher:s.publisher,package_:s.package_,name:s.name})??s.name:"Condition",a=[],r=[];for(let l of e.statement){let f=l.predicate?.subject;if(!f||f.name==="type")continue;let p=this.readLabelForUri({publisher:f.publisher,package_:f.package_,name:f.name})??f.name;if(l instanceof z||l instanceof me||l instanceof Ke)a.push(`<div class="kan-cond-field"><span class="kan-cond-key">${d(p)}</span><span class="kan-cond-v">${d(String(l.object))}</span></div>`);else if(l instanceof I&&l.object instanceof w){let k=l.object.subject,b=this.readLabelForUri({publisher:k.publisher,package_:k.package_,name:k.name})??k.name;a.push(`<div class="kan-cond-field"><span class="kan-cond-key">${d(p)}</span><span class="kan-cond-v">${d(b)}</span></div>`)}else if(l instanceof re)r.push(this.renderConditionNode(l.object,t,n+1));else if(l instanceof V)for(let k of l.object??[])k instanceof ee&&r.push(this.renderConditionNode(k,t,n+1))}let i=a.length?`<div class="kan-cond-fields">${a.join("")}</div>`:"",c=r.length?`<div class="kan-cond-children">${r.join("")}</div>`:"";return`<div class="kan-cond"><div class="kan-cond-type">${d(o)}</div>${i}${c}</div>`}renderPackageContents(e,t){let n=e.namespace||"";if(!n)return"";let s=this.catalog.filter(a=>a instanceof W&&a.namespace===n&&a.name!==e.name);return s.length===0?`<!-- LookRenderer.PackageContents: no members in ${n} -->`:(s.sort((a,r)=>{let i=$(a,P)??a.name,c=$(r,P)??r.name;return i.localeCompare(c)}),`<section class="kan-pkg-grid">${s.map(a=>{let r=$(a,P)??a.name,i=$(a,be),c=i?Ze(i,160):"",l=this.hrefForSubject(a,t),f=this.svgUrlForSubject(a,t);return`<a class="kan-pkg-card" href="${d(l)}"><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(r)}</span>`+(c?`<span class="kan-pkg-card-comment">${d(c)}</span>`:"")+"</span></a>"}).join("")}</section>`)}renderFeaturedResource(e,t){let n=L(e,H);if(!n)return"<!-- LookRenderer.FeaturedResource: no look.source -->";let s=ie(this.catalog,n),o=c=>this.parseVersion((c.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},a=s.length>0?s.slice().sort((c,l)=>{let f=o(c),p=o(l);return p.major-f.major||p.minor-f.minor||p.patch-f.patch})[0]:E(this.catalog,n);if(!a)return`<!-- LookRenderer.FeaturedResource: ${n.publisher}/${n.package_}/${n.name} not found -->`;let r=this.renderHtml(a),i=this.hrefForSubject(a,t);return`<section class="kan-featured"><a class="kan-featured-permalink" href="${d(i)}">View full resource \u2192</a>`+r+"</section>"}renderDistribution(e,t){let n=e,s=v=>{let R=$(n,v);if(!R)return;let Z=this.resolvePath(t,R),h=Z===void 0?NaN:parseFloat(Z);return Number.isFinite(h)?h:void 0},o=s(jn),a=s(_n);if(o===void 0||a===void 0||o<=0||a<=0)return"<!-- LookRenderer.Distribution: needs resolvable alphaPath + betaPath (> 0) -->";let r=s(Oe)??o/(o+a),i=s(De),c=s(Ge),l=s(we),f=l!==void 0?`hsl(${l},65%,60%)`:"var(--kan-accent)",p=v=>Number.isInteger(v)?String(v):v.toFixed(1),k=280,b=168,g={top:14,right:14,bottom:24,left:14},m=k-g.left-g.right,j=b-g.top-g.bottom,S=120,_=1e-4,U=[],B=[],N=0;for(let v=0;v<=S;v++){let R=v/S;R<_?R=_:R>1-_&&(R=1-_);let Z=Math.exp((o-1)*Math.log(R)+(a-1)*Math.log(1-R));U.push(R),B.push(Z),Z>N&&(N=Z)}let x=v=>g.left+Math.min(1,Math.max(0,v))*m,O=v=>g.top+(1-(N>0?v/N:0))*j,M=g.top+j,pe=U.map((v,R)=>`${x(v).toFixed(1)},${O(B[R]).toFixed(1)}`),le=`M${x(0).toFixed(1)},${M.toFixed(1)} L${pe.join(" L")} L${x(1).toFixed(1)},${M.toFixed(1)} Z`,te="";if(i!==void 0&&c!==void 0&&c>i){let v=[`${x(i).toFixed(1)},${M.toFixed(1)}`];for(let R=0;R<=S;R++)U[R]>=i&&U[R]<=c&&v.push(`${x(U[R]).toFixed(1)},${O(B[R]).toFixed(1)}`);v.push(`${x(c).toFixed(1)},${M.toFixed(1)}`),te=`<path d="M${v.join(" L")} Z" fill="${f}" fill-opacity="0.3"/>`}let se=x(r),de=`<line x1="${se.toFixed(1)}" y1="${g.top.toFixed(1)}" x2="${se.toFixed(1)}" y2="${M.toFixed(1)}" stroke="${f}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${se.toFixed(1)}" y="${(g.top-3).toFixed(1)}" text-anchor="middle" class="kan-dist-mean">\u03BC ${r.toFixed(2)}</text>`,ke=`<text x="${x(0).toFixed(1)}" y="${(M+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${x(1).toFixed(1)}" y="${(M+15).toFixed(1)}" text-anchor="end" class="kan-dist-axis">1</text>`,ge=`<svg class="kan-dist-svg" viewBox="0 0 ${k} ${b}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${g.left}" y1="${M.toFixed(1)}" x2="${(k-g.right).toFixed(1)}" y2="${M.toFixed(1)}" class="kan-dist-base"/><path d="${le}" fill="${f}" fill-opacity="0.12"/>`+te+`<polyline points="${pe.join(" ")}" fill="none" stroke="${f}" stroke-width="2"/>`+de+ke+"</svg>",he=i!==void 0&&c!==void 0?` \xB7 95% CI [${i.toFixed(2)}\u2013${c.toFixed(2)}]`:"";return`<figure class="kan-dist">${ge}<figcaption class="kan-dist-caption">Beta(${p(o)}, ${p(a)})${he}</figcaption></figure>`}renderPublisherPackages(e){let t=new Map,n=r=>this.parseVersion((r.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},s=(r,i)=>r.major>i.major||r.major===i.major&&(r.minor>i.minor||r.minor===i.minor&&r.patch>i.patch);for(let r of this.catalog){if(!(r instanceof W)||J(r)!==e)continue;let i=(r.namespace||"").split("/")[1]?.split("@")[0]??"";if(!i||r.name!==i)continue;let c=t.get(i);(!c||s(n(r),n(c)))&&t.set(i,r)}let o=[...t.entries()].sort((r,i)=>r[0].localeCompare(i[0]));return o.length===0?"":`<section class="kan-pkg-grid">${o.map(([r,i])=>{let c=$(i,P)??r,l=$(i,be),f=l?Ze(l,160):"",p=this.svgUrlForSubject(i,e);return`<a class="kan-pkg-card" href="/${d(r)}"><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>`+(f?`<span class="kan-pkg-card-comment">${d(f)}</span>`:"")+"</span></a>"}).join("")}</section>`}findPublisherRootView(e){for(let t of this.catalog){if(!(t instanceof W)||J(t)!==e)continue;let n=je(t);if(!n)continue;let s=_e(n);if(s&&y(s,bn))return t}}renderTimeline(e,t){let n=L(e,H);if(!n)return"<!-- LookRenderer.Timeline: no look.source -->";let s=L(e,He),o=this.findInstancesOfClass(n);if(o.length===0)return"<!-- LookRenderer.Timeline: no instances -->";let a=f=>s?this.readPropertyValueText(f,s)??"":"",r=o.slice().sort((f,p)=>a(f).localeCompare(a(p))),i=L(e,Be),c=$(e,Oe);return i&&c?this.renderTrajectoryChart(r,i,c,e,t,a):`<section class="kan-timeline"><ol>
|
|
96
|
-
${r.map(f=>{let p=f.namespace||"",k=p.split("/")[1]?.split("@")[0]??"",b=p.split("@")[1]??"",g=b?this.parseVersion(b):void 0,m=oe.formatResourceUrl({publisher:J(f),package_:k,name:f.name,...g?{version:g}:{}},"=",{contextPublisher:t}),j=a(f),S=j?`<span class="kan-timeline-date">${d(j)}</span>`:"",_=b||f.name;return`<li class="kan-timeline-node"><a href="${d(m)}"><span class="kan-timeline-key">${d(_)}</span>${S}</a></li>`}).join(`
|
|
97
|
-
`)}
|
|
98
|
-
</ol></section>`}renderTrajectoryChart(e,t,n,s,o,a){let r=s,i=$(r,we),c=$(r,De),l=$(r,Ge),f=$(r,On),p=Ye(r,Ln),k=Ye(r,xn),b=e.length,g=this.collectTrackedSeries(e,t,n,{hueBy:i,lowerPath:c,upperPath:l});if(g.length===0)return"<!-- LookRenderer.Timeline: no tracked series -->";let m=[];for(let h of g){for(let K of h.points)K!==null&&m.push(K);for(let K of h.lower??[])K!==null&&m.push(K);for(let K of h.upper??[])K!==null&&m.push(K)}if(m.length===0)return"<!-- LookRenderer.Timeline: no metric values -->";let j=Math.min(...m),S=Math.max(...m);S-j<1e-9&&(j-=.5,S+=.5);let _=(S-j)*.08,U=p!==void 0?p:j-_,B=k!==void 0?k:S+_;B-U<1e-9&&(B=U+1);let N=1e3,x=440,O={top:28,right:24,bottom:56,left:52},M=N-O.left-O.right,pe=x-O.top-O.bottom,le=h=>b<=1?O.left+M/2:O.left+h/(b-1)*M,te=h=>O.top+(1-(h-U)/(B-U))*pe,se=(h,K)=>h.hue!==void 0?h.hue:Math.round(K*360/g.length),de=[];for(let h=0;h<5;h++){let K=U+h*(B-U)/4,D=te(K);de.push(`<line x1="${O.left}" y1="${D.toFixed(1)}" x2="${(N-O.right).toFixed(1)}" y2="${D.toFixed(1)}" class="kan-fan-grid"/>`),de.push(`<text x="${(O.left-8).toFixed(1)}" y="${(D+4).toFixed(1)}" class="kan-fan-axis" text-anchor="end">${K.toFixed(2)}</text>`)}let ke=[];e.forEach((h,K)=>{let D=this.hrefForSubject(h,o),T=(h.namespace||"").split("@")[1]??"",F=le(K),C=Vn(a(h));ke.push(`<a href="${d(D)}" class="kan-fan-xtick"><line x1="${F.toFixed(1)}" y1="${O.top}" x2="${F.toFixed(1)}" y2="${(x-O.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${F.toFixed(1)}" y="${(x-O.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${fe(T||h.name)}</text>`+(C?`<text x="${F.toFixed(1)}" y="${(x-O.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${fe(C)}</text>`:"")+"</a>")});let ge=[];g.forEach((h,K)=>{if(!h.lower||!h.upper)return;let D=se(h,K),T=[],F=[];for(let A=0;A<b;A++){let ae=h.upper[A],Q=h.lower[A];ae==null||Q===null||Q===void 0||(T.push(`${le(A).toFixed(1)},${te(ae).toFixed(1)}`),F.unshift(`${le(A).toFixed(1)},${te(Q).toFixed(1)}`))}let C=T.concat(F);C.length<3||ge.push(`<polygon class="kan-fan-band" points="${C.join(" ")}" fill="hsl(${D},65%,60%)"/>`)});let he=[];g.forEach((h,K)=>{let T=`hsl(${se(h,K)},65%,60%)`,F=[],C=[];h.points.forEach((A,ae)=>{if(A===null)return;let Q=le(ae),G=te(A);F.push(`${Q.toFixed(1)},${G.toFixed(1)}`),C.push(`<circle cx="${Q.toFixed(1)}" cy="${G.toFixed(1)}" r="3.5" fill="${T}"/>`)}),F.length!==0&&he.push(`<g class="kan-fan-series" data-series="${d(h.key)}"><polyline points="${F.join(" ")}" fill="none" stroke="${T}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`+C.join("")+"</g>")});let v=`<svg class="kan-fan-svg" viewBox="0 0 ${N} ${x}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+de.join("")+ke.join("")+ge.join("")+he.join("")+"</svg>",R=f?`${d(f)}=`:"",Z=g.map((h,K)=>{let D=se(h,K),T=h.points.filter(G=>G!==null),F=T.length?T[0]:void 0,C=T.length?T[T.length-1]:void 0,A="";if(C!==void 0&&F!==void 0){let G=C-F;if(Math.abs(G)>=.005){let Qe=G>0?"up":"down",en=G>0?"\u25B2":"\u25BC";A=` <span class="kan-fan-delta ${Qe}">${G>0?"+":""}${G.toFixed(2)} ${en}</span>`}else A=' <span class="kan-fan-delta flat">\u2014</span>'}let ae=C!==void 0?`${R}${C.toFixed(2)}`:"\u2014",Q=h.lastSubject?`<a href="${d(this.hrefForSubject(h.lastSubject,o))}">${d(h.label)}</a>`:d(h.label);return`<div class="kan-fan-legend-item" style="--kan-fan-hue:${D}"><span class="kan-fan-swatch"></span><span class="kan-fan-legend-label">${Q}</span><span class="kan-fan-legend-cur">${ae}${A}</span></div>`});return`<section class="kan-fan"><div class="kan-fan-chart">${v}</div><div class="kan-fan-legend">${Z.join("")}</div></section>`}renderResourceGrid(e,t,n){let s=L(e,H);if(!s)return"<!-- LookRenderer.ResourceGrid: no look.source -->";let o=E(this.catalog,s),a=o?ne(o).some(c=>{let l=c.subject.name;return l==="ObjectProperty"||l==="DatatypeProperty"||l==="Property"}):!1,r=[];if(a&&n){let c=this.readPropertyValueReferences(n,s);for(let l of c){let f=E(this.catalog,{publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name,...l.subject.version?{version:l.subject.version}:{}});f&&r.push(f)}}else r=this.findInstancesOfClass(s);if(r.length===0)return`<!-- LookRenderer.ResourceGrid: no resources for ${s.publisher}/${s.package_}/${s.name} -->`;let i=[];for(let c of r){let l=$(c,P)??c.name,f=$(c,be),p=c.namespace||"",k=p.split("/")[1]?.split("@")[0]??"",b=p.split("@")[1]??"",g=b?this.parseVersion(b):void 0,m=oe.formatResourceUrl({publisher:J(c),package_:k,name:c.name,...g?{version:g}:{}},"=",{contextPublisher:t}),j=f?`<p class="kan-resource-card-subtitle">${d(f)}</p>`:"";i.push(`<a class="kan-resource-card" href="${d(m)}"><h3 class="kan-resource-card-title">${d(l)}</h3>${j}</a>`)}return`<section class="kan-resource-grid">
|
|
99
|
-
${i.join(`
|
|
100
|
-
`)}
|
|
101
|
-
</section>`}parseVersion(e){let t=e.split(".").map(Number);if(!(t.length!==3||t.some(n=>Number.isNaN(n))))return{major:t[0],minor:t[1],patch:t[2]}}findInstancesOfClass(e){let t=[];for(let n of this.catalog){if(!(n instanceof W))continue;ne(n).map(a=>a.subject).some(a=>a.publisher===e.publisher&&a.package_===e.package_&&a.name===e.name)&&t.push(n)}return t}renderBreadcrumb(e,t,n){let o=(e.namespace||"").split("/");if(o.length<2)return"";let a=o[0],r=o[1]??"",i=r.split("@")[0]??"",c=r.split("@")[1]??"";if(!a||!i)return"";if(n?.bareOverview)return`<nav class="kan-breadcrumb"><ol>
|
|
102
|
-
<li><a href="/">${d(a)}</a></li>
|
|
103
|
-
<li aria-current="page">${d(i)}</li>
|
|
104
|
-
</ol></nav>`;let l=e.name,p=!!E(this.catalog,{publisher:a,package_:i,name:i}),k=c?`${i}@${c}`:i,b=c?`/${i}/${c}/${i}`:`/${i}/${i}`,g=e.name===i,m=[];return m.push(`<li><a href="/">${d(a)}</a></li>`),g?m.push(`<li aria-current="page">${d(k)}</li>`):(m.push(p?`<li><a href="${d(b)}">${d(k)}</a></li>`:`<li>${d(k)}</li>`),m.push(`<li aria-current="page">${d(l)}</li>`)),`<nav class="kan-breadcrumb"><ol>
|
|
105
|
-
${m.join(`
|
|
106
|
-
`)}
|
|
107
|
-
</ol></nav>`}renderNavGroup(e,t){let n=this.findNavGroupForPublisher(t);if(!n)return"";let s=Y(n,Fe);if(!(s instanceof V))return"";let o=s.object??[];if(o.length===0)return"";let a=[];for(let r of o){if(!(r instanceof w))continue;let i=E(this.catalog,{publisher:r.subject.publisher,package_:r.subject.package_,name:r.subject.name}),{href:c,label:l}=this.resolveNavEntry(r,i,t),f=`/${e.namespace?.split("/")[1]?.split("@")[0]}/${(e.namespace||"").split("@")[1]}/${e.name}`,p=c===f?' aria-current="page"':"";a.push(`<li><a class="kan-nav-link" href="${d(c)}"${p}>${d(l)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
|
|
108
|
-
${a.join(`
|
|
109
|
-
`)}
|
|
110
|
-
</ul></nav>`}resolveNavEntry(e,t,n){if(t&&ne(t).map(i=>i.subject).some(i=>i.publisher===xe.publisher&&i.package_===xe.package_&&i.name===xe.name)){let i=$(t,P),c=Y(t,Ve);if(c instanceof I&&c.object instanceof w){let l=c.object,f=this.readLabelForUri({publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name});return{href:this.urlForReference(l,Ve,n),label:i??f??l.subject.name}}}let s=oe.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},"*",{contextPublisher:n}),o=t?$(t,P)??e.subject.name:e.subject.name;return{href:s,label:o}}findNavGroupForPublisher(e){for(let t of this.catalog){if(!(t instanceof W)||!(t.namespace||"").startsWith(`${e}/`))continue;if(ne(t).map(a=>a.subject).some(a=>a.publisher===$e.publisher&&a.package_===$e.package_&&a.name===$e.name))return t}}renderMarkdown(e,t,n){let s=L(e,H);if(!s)return"<!-- LookRenderer.Markdown: no look.source -->";let o=Y(t,s),a;return o instanceof Ee?a=this.resolveMarkdownLinks(o,n):o instanceof z?a=o.object:a=this.readPropertyValueText(t,s),a?`<section class="kan-markdown">
|
|
111
|
-
${Ce(a)}
|
|
112
|
-
</section>`:""}resolveMarkdownLinks(e,t){let n=e.object,s=[...e.links].sort((o,a)=>a.startOffset-o.startOffset);for(let o of s){let a;if(o.target){let r=o.target.subject,i=(o.displayText??this.readLabelForUri({publisher:r.publisher,package_:r.package_,name:r.name})??o.reference).replace(/[[\]]/g,""),c=oe.formatResourceUrl({publisher:r.publisher,package_:r.package_,name:r.name,...r.version?{version:r.version}:{}},"=",{contextPublisher:t});a=`[${i}](${c})`}else a=o.displayText??o.reference;n=n.slice(0,o.startOffset)+a+n.slice(o.endOffset)}return n}renderRawMarkdown(e){let t=this.findCascadedLook(e);if(!t)return;let n=ze(t.declaration),s=[];for(let o of n){let a=_e(o);if(!a||!y(a,Me))continue;let r=L(o,H);if(!r)continue;let i=this.readPropertyValueText(e,r);i&&s.push(i)}return s.length>0?s.join(`
|
|
113
|
-
|
|
114
|
-
`):void 0}renderHero(e,t,n){let s=['<header class="kan-hero">'],o=L(e,Tn);if(o){let l=this.readPropertyValueText(t,o);l&&s.push(`<span class="kan-hero-eyebrow">${d(l)}</span>`)}let a=L(e,En),r="";a&&(r=this.readPropertyValueText(t,a)??""),r||(r=t.name),s.push(`<h1 class="kan-hero-title">${d(r)}</h1>`);let i=L(e,Cn);if(i){let l=this.readPropertyValueText(t,i);l&&s.push(`<p class="kan-hero-subtitle">${d(l)}</p>`)}let c=L(e,We);if(c){let l=this.readPropertyValueReferences(t,c);if(l.length>0){let f=l.map(p=>this.renderBadge(p,We,n)).join("");s.push(`<div class="kan-hero-badges">${f}</div>`)}}return s.push("</header>"),s.join(`
|
|
115
|
-
`)}renderPropertyList(e,t,n){let s=L(e,H);if(!s)return"<!-- LookRenderer: PropertyList missing look.source -->";let o=this.readLabelForUri(s)??s.name,a=Y(t,s),r=this.gatherValueItems(a),i=r.length>0?r.map(c=>`<li>${this.renderInlineValue(c,H,n)}</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">${i}</ul>`,"</section>"].join(`
|
|
116
|
-
`)}renderBadgeRow(e,t,n){let s=L(e,H);if(!s)return"<!-- LookRenderer: BadgeRow missing look.source -->";let o=this.readPropertyValueReferences(t,s);return o.length===0?"":`<div class="kan-badge-row">${o.map(r=>this.renderBadge(r,H,n)).join("")}</div>`}renderChipRow(e,t,n){let s=qe(e,An);if(s.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let o=[];for(let a of s){let r=Y(t,a);if(!r)continue;let i=this.readLabelForUri(a)??a.name,c=this.renderStatementInlineValue(r,a,n);c&&o.push(`<span class="kan-chip"><span class="kan-chip-key">${d(i)}</span> <span class="kan-chip-val">${c}</span></span>`)}return o.length===0?"":`<div class="kan-chip-row">${o.join("")}</div>`}renderReferenceList(e,t,n){let s=qe(e,Fe);if(s.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let o=$(e,Sn),a=$(e,yn),r=[];for(let i of s){let c=this.readPropertyValueReferences(t,i);if(c.length===0)continue;let l=this.readLabelForUri(i)??i.name;if(o){let f=c.map(p=>this.renderDetailRow(p,o,a,n)).filter(p=>p).join("");f&&r.push(`<dt>${d(l)}</dt><dd><ul class="kan-ref-rows">${f}</ul></dd>`)}else{let f=c.map(p=>this.renderReferenceLink(p,Fe,n)).join(", ");r.push(`<dt>${d(l)}</dt><dd>${f}</dd>`)}}return r.length===0?"":`<dl class="kan-reference-list">${r.join("")}</dl>`}renderDetailRow(e,t,n,s){let o=E(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 a=this.resolvePath(o,t)??$(o,P)??o.name,r=this.hrefForSubject(o,s),i=this.svgUrlForSubject(o,s),c="";if(n){let l=this.resolvePath(o,n);l&&(c=`<span class="kan-ref-badge">${d(l)}</span>`)}return`<li class="kan-ref-row"><a class="kan-ref-rowlink" href="${d(r)}"><img class="kan-ref-icon" src="${d(i)}" alt="" loading="lazy"/><span class="kan-ref-text">${d(a)}</span>${c}</a></li>`}readPropertyValueText(e,t){let n=Y(e,t);if(n){if(n instanceof z)return n.object;if(n instanceof I){let s=n.object;return this.readLabelForUri({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name})??s.subject.name}if(n instanceof V)return(n.object??[]).map(o=>o instanceof w?this.readLabelForUri({publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name})??o.subject.name:o instanceof ee?o.name??"":String(o)).filter(o=>o).join(", ")}}readPropertyValueReferences(e,t){let n=Y(e,t);if(!n)return[];if(n instanceof I)return[n.object];if(n instanceof V){let s=[];for(let o of n.object??[])o instanceof w&&s.push(o);return s}return[]}gatherValueItems(e){return e?e instanceof V?e.object??[]:e instanceof I?[e.object]:e instanceof re?[e.object]:e instanceof z?[e.object]:[]:[]}renderInlineValue(e,t,n){return e instanceof w?this.renderReferenceLink(e,t,n):e instanceof ee?d(e.name??"(embedded)"):typeof e=="string"?d(e):typeof e=="number"||typeof e=="boolean"?d(String(e)):""}renderStatementInlineValue(e,t,n){return e instanceof z?d(e.object):e instanceof I?this.renderReferenceLink(e.object,t,n):e instanceof V?(e.object??[]).map(o=>this.renderInlineValue(o,t,n)).filter(o=>o).join(", "):""}renderReferenceLink(e,t,n){let s=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name,o=this.urlForReference(e,t,n);return`<a class="kan-link" href="${d(o)}">${d(s)}</a>`}renderBadge(e,t,n){let s=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}),a=this.urlForReference(e,t,n),r=o?` title="${d(o)}"`:"";return`<a class="kan-badge" href="${d(a)}"${r}>${d(s)}</a>`}urlForReference(e,t,n){let s=t?this.getUrlFormForProperty(t):"=";return oe.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},s,{contextPublisher:n})}getUrlFormForProperty(e){let t=E(this.catalog,e);if(!t)return"=";let n=$(t,Nn);return n==="*"||n==="^"||n==="~"||n==="="?n:"="}readLabelForUri(e){let t=E(this.catalog,e);if(t)return $(t,P)}readCommentForUri(e){let t=E(this.catalog,e);if(t)return $(t,be)}};function Ie(u){let e=new Map;for(let t of u.statement){if(!(t instanceof re)||!X(t,Le.publisher,Le.package_,Le.name))continue;let n=t.object;for(let s of n.statement){if(!(s instanceof z))continue;let o=s.predicate?.subject?.name;if(!o)continue;let a=s.object;e.has(o)||e.set(o,a)}}return e}function je(u){for(let e of u.statement)if(e instanceof re&&X(e,ye.publisher,ye.package_,ye.name))return e.object}function ze(u){for(let e of u.statement){if(!(e instanceof V)||!X(e,Ue.publisher,Ue.package_,Ue.name))continue;let t=[];for(let n of e.object??[])n instanceof ee&&t.push(n);return t}return[]}function _e(u){for(let e of u.statement)if(e instanceof I&&e.predicate?.subject?.name==="type"&&e.object instanceof w){let t=e.object.subject;return{publisher:t.publisher,package_:t.package_,name:t.name}}}function L(u,e){for(let t of u.statement)if(t instanceof I&&X(t,e.publisher,e.package_,e.name)&&t.object instanceof w){let n=t.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function qe(u,e){for(let t of u.statement){if(!(t instanceof V)||!X(t,e.publisher,e.package_,e.name))continue;let n=[];for(let s of t.object??[])s instanceof w&&n.push({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name});return n}return[]}function Y(u,e){for(let t of u.statement)if(X(t,e.publisher,e.package_,e.name))return t}function $(u,e){for(let t of u.statement)if(t instanceof z&&X(t,e.publisher,e.package_,e.name))return t.object}function Ye(u,e){for(let t of u.statement)if(t instanceof me&&X(t,e.publisher,e.package_,e.name))return t.object}function ne(u){let e=[];for(let t of u.statement)if(t instanceof I){if(t.predicate?.subject?.name!=="type")continue;t.object instanceof w&&e.push(t.object)}else if(t instanceof V){if(t.predicate?.subject?.name!=="type")continue;for(let n of t.object??[])n instanceof w&&e.push(n)}return e}function ve(u){let e=[];for(let t of u.statement)if(t instanceof I){if(t.predicate?.subject?.name!=="subClassOf")continue;t.object instanceof w&&e.push(t.object)}else if(t instanceof V){if(t.predicate?.subject?.name!=="subClassOf")continue;for(let n of t.object??[])n instanceof w&&e.push(n)}return e}function ie(u,e){let t=[];for(let n of u){if(!(n instanceof W)||n.name!==e.name)continue;(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`)&&t.push(n)}return t}function E(u,e){let t="version"in e?e.version:void 0;if(t){let n=`${e.publisher}/${e.package_}@${t.major}.${t.minor}.${t.patch}`;for(let s of u)if(s instanceof W&&s.name===e.name&&s.namespace===n)return s}for(let n of u){if(!(n instanceof W)||n.name!==e.name)continue;if((n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return n}}function X(u,e,t,n){let s=u.predicate?.subject;return s?s.publisher===e&&s.package_===t&&s.name===n:!1}function y(u,e){return u.publisher===e.publisher&&u.package_===e.package_&&u.name===e.name}function ce(u){return`${u.publisher}/${u.package_}/${u.name}`}function Mn(u){return u.name==="Package"?{...Re}:u}function J(u){let e=u.namespace||"",t=e.indexOf("/");return t>=0?e.substring(0,t):e}function d(u){return u.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Je(u){let e=u.lastIndexOf(".");return e>=0?u.substring(e+1):u}function Xe(u,e){for(let t of u.statement)if(t.predicate?.subject?.name===e)return t}function fe(u){return u.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function Ze(u,e){return u.length<=e?u:u.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function Vn(u){if(!u)return"";let e=/^(\d{4})-(\d{2})-(\d{2})/.exec(u);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)}`:u}export{Ce as a,Pe as b};
|