@kanonak-protocol/sdk 5.19.0 → 5.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,152 @@
1
+ import{a as Fn}from"./chunk-4NO7MHS7.js";import{a as V,c as Fe,h as u,m as Hn}from"./chunk-V6KIDED2.js";import{a as xn}from"./chunk-NJ3AZYQD.js";import{a as zn}from"./chunk-PEJALHXK.js";import{p as Nn,q as Dn,r as Bn}from"./chunk-SVUMCLK5.js";import{b as je,c as q,d as j,g as W,h as ie,i as ae,j as x,k as H,l as I,m as mn,n as fe,o as Pn,p as w,r as Me,s as he,v as hn,w as qe,y as An,z as Mn}from"./chunk-YW6P24RF.js";import{a as Vn}from"./chunk-FUUTGGJS.js";import{c as en,e as nn,g as Tn}from"./chunk-2ACBWC7K.js";var xe="kanonak.org",Yn="look",We="core-rdf",Tt={publisher:xe,package_:Yn,name:"displayLabel"},Ft={publisher:xe,package_:Yn,name:"displaySummary"},xt={publisher:xe,package_:We,name:"type"},Vt={publisher:xe,package_:We,name:"subClassOf"},Pt={publisher:xe,package_:We,name:"label"},At={publisher:xe,package_:We,name:"comment"},Gn=new Vn(xe,We,"Resource");function N(r,e){let n=qn(r,e,Tt)??Pt,t=qn(r,e,Ft)??At,a=hn(e,n)??e.name,s=hn(e,t);return{label:a,summary:s}}function qn(r,e,n){let t=qe(e,n);if(t)return t;let a=new Set,s=Wn(e,xt);for(;s.length>0;){let o=s.shift(),i=mn(o);if(a.has(i))continue;a.add(i);let c=Me(r,o);if(!c)continue;let l=qe(c,n);if(l)return l;s.push(...Wn(c,Vt))}if(!a.has(mn(Gn))){let o=Me(r,Gn);if(o){let i=qe(o,n);if(i)return i}}}function Wn(r,e){let n=qe(r,e);if(n)return[n];let t=[];for(let a of An(r,e))a instanceof j&&t.push(a.subject);return t}function Ye(r,e={}){let n=r.replace(/\r\n/g,`
2
+ `).split(`
3
+ `),t=[],a=0;for(;a<n.length;){let s=n[a];if(s.trim()===""){a++;continue}let o=/^(\s*)```(\S*)\s*$/.exec(s);if(o){let l=o[2],d=[];for(a++;a<n.length&&!/^(\s*)```\s*$/.test(n[a]);)d.push(n[a]),a++;a++;let f=d.join(`
4
+ `),p=l&&e.highlight?e.highlight(l,f):De(f),m=l?` class="language-${Jn(l)}"`:"";t.push(`<pre class="kan-code"><code${m}>${p}</code></pre>`);continue}let i=/^(#{1,6})\s+(.*)$/.exec(s);if(i){let l=i[1].length,d=Ne(i[2].trim());t.push(`<h${l}>${d}</h${l}>`),a++;continue}if(s.includes("|")&&a+1<n.length&&Xn(n[a+1])){let l=bn(s),d=Mt(n[a+1]);a+=2;let f=[];for(;a<n.length&&n[a].trim()!==""&&n[a].includes("|");)f.push(bn(n[a])),a++;t.push(Nt(l,d,f));continue}if(/^\s*[-*]\s+/.test(s)){let l=[];for(;a<n.length&&/^\s*[-*]\s+/.test(n[a]);){let d=[n[a].replace(/^\s*[-*]\s+/,"")];for(a++;a<n.length&&n[a].trim()!==""&&!/^\s*[-*]\s+/.test(n[a])&&!/^\s*\d+\.\s+/.test(n[a]);)d.push(n[a]),a++;a<n.length&&n[a].trim()===""&&a++,l.push(`<li>${Ne(d.join(" ").trim())}</li>`)}t.push(`<ul>
5
+ ${l.join(`
6
+ `)}
7
+ </ul>`);continue}if(/^\s*\d+\.\s+/.test(s)){let l=[];for(;a<n.length&&/^\s*\d+\.\s+/.test(n[a]);){let d=[n[a].replace(/^\s*\d+\.\s+/,"")];for(a++;a<n.length&&n[a].trim()!==""&&!/^\s*\d+\.\s+/.test(n[a])&&!/^\s*[-*]\s+/.test(n[a]);)d.push(n[a]),a++;a<n.length&&n[a].trim()===""&&a++,l.push(`<li>${Ne(d.join(" ").trim())}</li>`)}t.push(`<ol>
8
+ ${l.join(`
9
+ `)}
10
+ </ol>`);continue}let c=[s];for(a++;a<n.length&&n[a].trim()!==""&&!/^(#{1,6})\s+/.test(n[a])&&!/^(\s*)```/.test(n[a])&&!/^\s*[-*]\s+/.test(n[a])&&!/^\s*\d+\.\s+/.test(n[a])&&!(n[a].includes("|")&&a+1<n.length&&Xn(n[a+1]));)c.push(n[a]),a++;t.push(`<p>${Ne(c.join(" "))}</p>`)}return t.join(`
11
+ `)}function Xn(r){return r.includes("-")?/^[\s|:-]+$/.test(r):!1}function bn(r){let e=r.trim();return e.startsWith("|")&&(e=e.slice(1)),e.endsWith("|")&&(e=e.slice(0,-1)),e.split("|").map(n=>n.trim())}function Mt(r){return bn(r).map(e=>{let n=e.startsWith(":"),t=e.endsWith(":");return n&&t?"center":t?"right":n?"left":null})}function Nt(r,e,n){let t=o=>{let i=e[o];return i?` style="text-align:${i}"`:""},a=r.map((o,i)=>`<th${t(i)}>${Ne(o)}</th>`).join(""),s=n.map(o=>`<tr>${o.map((c,l)=>`<td${t(l)}>${Ne(c)}</td>`).join("")}</tr>`).join(`
12
+ `);return`<table>
13
+ <thead><tr>${a}</tr></thead>
14
+ <tbody>
15
+ ${s}
16
+ </tbody>
17
+ </table>`}function Ne(r){let e=De(r);return e=e.replace(/`([^`\n]+)`/g,(n,t)=>`<code>${t}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(n,t,a)=>`<a href="${Jn(a)}">${t}</a>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,(n,t)=>`<strong>${t}</strong>`),e=e.replace(/(^|[^*])\*([^*\n]+)\*(?!\*)/g,(n,t,a)=>`${t}<em>${a}</em>`),e=e.replace(/(^|[\s(])_([^_\n]+)_(?=[\s).,;:!?]|$)/g,(n,t,a)=>`${t}<em>${a}</em>`),e}function De(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Jn(r){return r.replace(/"/g,"&quot;").replace(/&/g,"&amp;")}var Dt={publisher:"kanonak.org",package_:"core-rdf",name:"label"};function Pe(r){return typeof r=="object"&&r!==null&&r.kind==="raw-string"}var Ke=class extends Error{},Xe=class{constructor(e,n,t=new Map){this.resolver=e;this.catalog=n;this.fragments=t}resolver;catalog;fragments;async evaluate(e,n){switch(e.kind){case"string-literal":return e.value;case"integer-literal":return e.value;case"decimal-literal":return e.value;case"boolean-literal":return e.value;case"uri-literal":return{...e.refTo};case"var-ref":{if(!n.has(e.varName))throw new Ke(`Unbound variable "${e.varName}"`);return n.get(e.varName)}case"concat":{let t=[];for(let a of e.parts){let s=await this.evaluate(a,n);if(s!=null)if(Array.isArray(s))for(let o of s)t.push(o);else t.push(s)}return t}case"fallback":{let t=await this.evaluate(e.primary,n);return Zn(t)?t:this.evaluate(e.alternate,n)}case"when":return await this.evaluate(e.condition,n)===!0?this.evaluate(e.thenBuild,n):e.elseBuild?this.evaluate(e.elseBuild,n):void 0;case"is-set":{let t=await this.evaluate(e.check,n);return Zn(t)}case"property-read":{let t=await this.evaluate(e.source,n);return tn(t,e.readProp)}case"traverse":{let t=await this.evaluate(e.source,n);if(!(t instanceof je))return;let a=Ht(t,e.through),s=[];for(let o of a){let i=he(this.catalog,o),c=i.length>0?i:[await this.resolver.resolveSubject(o,this.catalog)];for(let l of c){if(!l)continue;let d=new Map(n);d.set("input",l);let f=await this.evaluate(e.step,d);if(f!=null&&Ve(f)!==""){s.push(Ve(f));break}}}return s.join("")}case"uri-name":{let t=await this.evaluate(e.source,n);return Be(t)?t.name:t instanceof j?t.subject.name:t instanceof q?t.name:t instanceof V?t.name??"":void 0}case"uri-publisher":{let t=await this.evaluate(e.source,n);return vn(t)?.publisher}case"uri-package":{let t=await this.evaluate(e.source,n);return vn(t)?.package_}case"uri-version":{let t=await this.evaluate(e.source,n);return vn(t)?.version}case"subject-uri":{let t=await this.evaluate(e.source,n);if(t instanceof q){let a=t.namespace??"",s=t.name??"";return!a||!s?void 0:`${a}/${s}`}if(t instanceof j){let a=t.subject,s=a.version;return s&&typeof s.major=="number"?`${a.publisher}/${a.package_}@${s.major}.${s.minor}.${s.patch}/${a.name}`:`${a.publisher}/${a.package_}/${a.name}`}return}case"display-label":{let t=await this.resolver.resolveSubject({...e.labelTarget},this.catalog);return t?tn(t,e.labelSource):void 0}case"resolve-ref":{let t=await this.evaluate(e.source,n);return t instanceof q?t:t instanceof j?await this.resolver.resolveSubject(t.subject,this.catalog):Be(t)?await this.resolver.resolveSubject(t,this.catalog):void 0}case"normalize":{let t=await this.evaluate(e.source,n),a=t==null?"":Ve(t);return e.normKind==="trim-end"?a.replace(/[\s\r\n]+$/u,""):e.normKind==="to-upper"?a.toUpperCase():e.normKind==="to-lower"?a.toLowerCase():e.normKind==="first-char"?a.length===0?"":a.charAt(0):a}case"unescaped-string":{let t=await this.evaluate(e.source,n);return{kind:"raw-string",value:t==null?"":Ve(t)}}case"render-markdown":{let t=await this.evaluate(e.source,n);if(!(t instanceof je))return;let a;for(let o of t.statement){let i=$n(o);if(i&&fe(i,e.readProp)){a=o;break}}if(!(a instanceof Fe)){let o=tn(t,e.readProp);return o==null?void 0:Ve(o)}let s=await this.renderMarkdownLinks(a);return e.format==="html"?Ye(s):s}case"build-ast-node":{let t={kind:e.astClass.name};for(let a of e.set){let s=await this.evaluate(a.value,n);if(s==null||Array.isArray(s)&&s.length===0)continue;let o=a.field.name;Gt.has(o)&&(Array.isArray(s)&&s.every(i=>Qn(i))?s=s.map(i=>et(i)).join(""):Qn(s)&&(s=et(s))),t[o]=s}return t}case"call-fragment":{let t=this.fragments.get(e.fragmentKey);if(!t)throw new Ke(`ExpressionFragment ${e.fragmentKey} not found in registry`);return this.evaluate(t,n)}case"join":return(await this.evaluateList(e.source,n)).map(a=>a==null?"":Ve(a)).join(e.separator);case"count":return(await this.evaluateList(e.source,n)).length;case"sum":{let t=await this.evaluateList(e.source,n),a=0;for(let s of t)a+=pe(s,"Sum");return a}case"min":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Ke("Min on an empty list is undefined; guard with IsSet");let a=pe(t[0],"Min");for(let s=1;s<t.length;s++){let o=pe(t[s],"Min");o<a&&(a=o)}return a}case"max":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Ke("Max on an empty list is undefined; guard with IsSet");let a=pe(t[0],"Max");for(let s=1;s<t.length;s++){let o=pe(t[s],"Max");o>a&&(a=o)}return a}case"average":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Ke("Average on an empty list is undefined; guard with IsSet");let a=0;for(let s of t)a+=pe(s,"Average");return a/t.length}case"for-each":{let t=await this.evaluateList(e.source,n),a=[];for(let s of t){let o=new Map(n);o.set(e.loopVar,ye(s));let i=await this.evaluate(e.emit,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}case"list-map":{let t=await this.evaluateList(e.source,n),a=[];for(let s of t){let o=new Map(n);o.set(e.loopVar,ye(s)),a.push(await this.evaluate(e.mapBody,o))}return a}case"filter":{let t=await this.evaluateList(e.source,n),a=[];for(let s of t){let o=new Map(n);o.set(e.loopVar,ye(s)),await this.evaluate(e.predicate,o)===!0&&a.push(s)}return a}case"partition-by":{let t=await this.evaluateList(e.source,n),a=new Map,s=[];for(let o of t){let i=new Map(n);i.set(e.loopVar,ye(o));let c=await this.evaluate(e.partitionKey,i),l=at(c),d=a.get(l);d||(d={kind:"Partition",key:c,members:[]},a.set(l,d),s.push(l)),d.members.push(o)}return s.map(o=>a.get(o))}case"distinct-by":{let t=await this.evaluateList(e.source,n),a=new Set,s=[];for(let o of t){let i=new Map(n);i.set(e.loopVar,ye(o));let c=await this.evaluate(e.distinctKey,i),l=at(c);a.has(l)||(a.add(l),s.push(o))}return s}case"all-statements":{let t=await this.evaluate(e.source,n);return t instanceof je?t.statement:[]}case"statement-predicate":{let t=await this.evaluate(e.source,n);if(yn(t)){let a=t.predicate;if(a instanceof j)return a}return}case"statement-value":{let t=await this.evaluate(e.source,n);return yn(t)?Yt(t):void 0}case"date-format":{let t=await this.evaluate(e.source,n),a=t==null?"":Ve(t);return a?Wt(a,e.format):""}case"add":{let t=pe(await this.evaluate(e.left,n),"Add"),a=pe(await this.evaluate(e.right,n),"Add");return t+a}case"subtract":{let t=pe(await this.evaluate(e.left,n),"Subtract"),a=pe(await this.evaluate(e.right,n),"Subtract");return t-a}case"multiply":{let t=pe(await this.evaluate(e.left,n),"Multiply"),a=pe(await this.evaluate(e.right,n),"Multiply");return t*a}case"divide":{let t=pe(await this.evaluate(e.left,n),"Divide"),a=pe(await this.evaluate(e.right,n),"Divide");if(a===0)throw new Ke("Divide by zero; guard with When");return t/a}case"reverse":{if(e.source.kind==="reverse")return this.evaluate(e.source.source,n);let t=await this.evaluateReverseIterator(e.source,n);return t!==void 0?t:[...await this.evaluateList(e.source,n)].reverse()}case"windowed-map":{let t=await this.evaluateList(e.source,n);if(t.length<e.windowSize)return[];let a=[];for(let s=0;s+e.windowSize<=t.length;s++){let o=t.slice(s,s+e.windowSize),i=new Map(n);i.set(e.windowVar,o);let c=await this.evaluate(e.windowBody,i);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}case"pairwise-map":{let t=await this.evaluateList(e.source,n);if(t.length<2)return[];let a=[];for(let s=0;s+1<t.length;s++){let o=new Map(n);o.set(e.firstVar,ye(t[s])),o.set(e.secondVar,ye(t[s+1]));let i=await this.evaluate(e.pairBody,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}case"scan":{let t=await this.evaluateList(e.source,n);if(t.length===0)return[];let a=await this.evaluate(e.initialState,n),s=[];for(let o of t){let i=new Map(n);i.set(e.stateVar,a),i.set(e.elementVar,ye(o));let c=await this.evaluate(e.accumulate,i);s.push(c),a=c}return s}case"list-item-at":{let t=await this.evaluateList(e.source,n),a=await this.evaluate(e.itemIndex,n);return typeof a!="number"||!Number.isInteger(a)||a<0||a>=t.length?void 0:t[a]}case"equals":{let t=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return nt(t,a)}case"greater-than":{let t=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return typeof t!="number"||typeof a!="number"?!1:t>a}case"less-than":{let t=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return typeof t!="number"||typeof a!="number"?!1:t<a}case"greater-than-or-equal":{let t=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return typeof t!="number"||typeof a!="number"?!1:t>=a}case"less-than-or-equal":{let t=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return typeof t!="number"||typeof a!="number"?!1:t<=a}case"not":{let t=await this.evaluate(e.operand,n);return t===!0?!1:t===!1?!0:void 0}case"and":{for(let t of e.operands)if(await this.evaluate(t,n)!==!0)return!1;return!0}case"or":{for(let t of e.operands)if(await this.evaluate(t,n)===!0)return!0;return!1}case"contains":{let t=await this.evaluateList(e.haystack,n),a=await this.evaluate(e.needle,n);for(let s of t)if(nt(s,a))return!0;return!1}case"abs":{let t=pe(await this.evaluate(e.value,n),"Abs");return Math.abs(t)}case"negate":return-pe(await this.evaluate(e.value,n),"Negate");case"is-reference":{let t=await this.evaluate(e.check,n);return t instanceof j||t instanceof q}case"is-embedded":return await this.evaluate(e.check,n)instanceof V;case"is-list":{let t=await this.evaluate(e.check,n);return Array.isArray(t)}case"is-string":return typeof await this.evaluate(e.check,n)=="string";case"is-number":return typeof await this.evaluate(e.check,n)=="number";case"is-boolean":return typeof await this.evaluate(e.check,n)=="boolean";case"statement-object":{let t=await this.evaluate(e.source,n);if(!yn(t))return;let a=t;return a instanceof W||a instanceof ie||a instanceof ae||a instanceof x||a instanceof H||a instanceof I?a.object:void 0}case"let":{let t=await this.evaluate(e.bindValue,n),a=new Map(n);return a.set(e.bindName,t),this.evaluate(e.body,a)}case"get-statement-by-name":{let t=await this.evaluate(e.inSubject,n),a=await this.evaluate(e.byName,n);if(!(t instanceof je)||typeof a!="string")return;for(let s of t.statement)if(s.predicate?.subject?.name===a)return s;return}default:{let t=e;throw new Ke("Unknown expression kind")}}}async renderMarkdownLinks(e){let n=e.object,t="",a=0;for(let s of e.links){if(t+=n.slice(a,s.startOffset),s.target){let o=s.target.subject,i=s.displayText??await this.resolveLabel(o)??o.name;t+=`[${i}](${Pn(o)})`}else t+=s.displayText??s.reference;a=s.endOffset}return t+=n.slice(a),t}async resolveLabel(e){let n=await this.resolver.resolveSubject(e,this.catalog);if(!n)return;let t=tn(n,Dt);return typeof t=="string"?t:void 0}async evaluateList(e,n){let t=await this.evaluate(e,n);return t==null?[]:Array.isArray(t)?t:[t]}async evaluateReverseIterator(e,n){if(e.kind==="pairwise-map"){let t=await this.evaluateList(e.source,n);if(t.length<2)return[];let a=[];for(let s=t.length-1;s>=1;s--){let o=new Map(n);o.set(e.firstVar,ye(t[s-1])),o.set(e.secondVar,ye(t[s]));let i=await this.evaluate(e.pairBody,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}if(e.kind==="for-each"){let t=await this.evaluateList(e.source,n),a=[];for(let s=t.length-1;s>=0;s--){let o=new Map(n);o.set(e.loopVar,ye(t[s]));let i=await this.evaluate(e.emit,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}if(e.kind==="list-map"){let t=await this.evaluateList(e.source,n),a=[];for(let s=t.length-1;s>=0;s--){let o=new Map(n);o.set(e.loopVar,ye(t[s])),a.push(await this.evaluate(e.mapBody,o))}return a}if(e.kind==="windowed-map"){let t=await this.evaluateList(e.source,n);if(t.length<e.windowSize)return[];let a=[];for(let s=t.length-e.windowSize;s>=0;s--){let o=t.slice(s,s+e.windowSize),i=new Map(n);i.set(e.windowVar,o);let c=await this.evaluate(e.windowBody,i);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}}};function tn(r,e){if(r instanceof je)return Bt(r,e);if(zt(r))return fe(e,u.key)?r.key:fe(e,u.members)?r.members:void 0}function Bt(r,e){for(let n of r.statement){let t=$n(n);if(!(!t||!fe(t,e))&&(n instanceof W||n instanceof ie||n instanceof ae||n instanceof x||n instanceof H||n instanceof I))return n.object}}function Ht(r,e){let n=[];for(let t of r.statement){let a=$n(t);if(!(!a||!fe(a,e))){if(t instanceof x)n.push(t.object.subject);else if(t instanceof I)for(let s of t.object)s instanceof j&&n.push(s.subject)}}return n}function $n(r){return r.predicate?.subject}function Ve(r){if(r==null)return"";if(typeof r=="string")return r;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Pe(r))return r.value;if(r instanceof je)return r.name??"";if(r instanceof j)return r.subject.name;if(Be(r))return r.name;let e=r.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function ye(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)&&!(r instanceof je)&&!(r instanceof j)&&!(r instanceof V)&&"value"in r?r.value:r}function Zn(r){return r==null?!1:typeof r=="string"||Array.isArray(r)?r.length>0:typeof r=="boolean"?r===!0:!0}function Be(r){return typeof r=="object"&&r!==null&&typeof r.publisher=="string"&&typeof r.package_=="string"&&typeof r.name=="string"}function zt(r){return typeof r=="object"&&r!==null&&r.kind==="Partition"&&Array.isArray(r.members)}function pe(r,e){if(typeof r=="number"&&Number.isFinite(r))return r;throw new Ke(`${e} requires numeric elements; got ${qt(r)}`)}function vn(r){if(r instanceof q){let e=r.namespace??"",n=e.indexOf("/"),t=e.indexOf("@",n+1);return n<0||t<0?void 0:{publisher:e.substring(0,n),package_:e.substring(n+1,t),version:e.substring(t+1),name:r.name??""}}if(r instanceof j){let e=r.subject,n=e.version;return{publisher:e.publisher,package_:e.package_,version:n&&typeof n.major=="number"?`${n.major}.${n.minor}.${n.patch}`:"",name:e.name}}if(Be(r))return{publisher:r.publisher,package_:r.package_,version:"",name:r.name}}var Gt=new Set(["stringValue","text","rawContent","key","propertyKey","linkLabel"]);function Qn(r){return typeof r=="string"||typeof r=="number"||typeof r=="boolean"||Pe(r)}function et(r){return Pe(r)?r.value:String(r)}function qt(r){return r===void 0?"undefined":r===null?"null":Array.isArray(r)?`array(${r.length})`:typeof r}function Wt(r,e){let n=new Date(r);if(isNaN(n.getTime()))return"";let t=n.getUTCFullYear(),a=["January","February","March","April","May","June","July","August","September","October","November","December"][n.getUTCMonth()],s=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][n.getUTCMonth()],o=n.getUTCDate(),i=(c,l=2)=>String(c).padStart(l,"0");switch(e){case"iso-date":return`${t}-${i(n.getUTCMonth()+1)}-${i(o)}`;case"iso-datetime":return`${t}-${i(n.getUTCMonth()+1)}-${i(o)}T${i(n.getUTCHours())}:${i(n.getUTCMinutes())}:${i(n.getUTCSeconds())}Z`;case"short-date":return`${s} ${o}`;case"long-date":return`${a} ${o}, ${t}`;case"year":return String(t);case"month-year":return`${a} ${t}`}}function nt(r,e){if(r==null||e===void 0||e===null)return!1;if(r===e)return!0;let n=typeof r=="object"&&"value"in r?r.value:void 0,t=typeof e=="object"&&"value"in e?e.value:void 0,a=n??r,s=t??e,o=tt(r),i=tt(e);return o&&i?o.publisher===i.publisher&&o.package_===i.package_&&o.name===i.name:typeof a=="string"&&typeof s=="string"||typeof a=="number"&&typeof s=="number"||typeof a=="boolean"&&typeof s=="boolean"?a===s:!1}function tt(r){if(r instanceof j){let e=r.subject;return{publisher:e.publisher,package_:e.package_,name:e.name}}if(r instanceof q){let e=r.namespace??"",n=e.indexOf("/"),t=e.indexOf("@",n+1);if(n<0)return;let a=e.substring(0,n),s=t>=0?e.substring(n+1,t):e.substring(n+1);return{publisher:a,package_:s,name:r.name??""}}if(Be(r))return{publisher:r.publisher,package_:r.package_,name:r.name}}function yn(r){return r instanceof W||r instanceof ie||r instanceof ae||r instanceof x||r instanceof H||r instanceof I}function Yt(r){return r instanceof W||r instanceof ie||r instanceof ae?String(r.object??""):r instanceof x?r.object?.subject?.name??"":r instanceof H?"[embedded]":r instanceof I?(r.object??[]).map(n=>{if(n instanceof j)return n.subject.name;let t=n.name;if(t&&t.length>0)return t;let a=n.value;return typeof a=="string"||typeof a=="number"||typeof a=="boolean"?String(a):"[embedded]"}).join(", "):""}function at(r){if(r===void 0)return"\0undef";if(r===null)return"\0null";if(typeof r=="string")return`s:${r}`;if(typeof r=="number")return`n:${r}`;if(typeof r=="boolean")return`b:${r}`;if(r instanceof j){let e=r.subject;return`r:${e.publisher}/${e.package_}/${e.name}`}if(r instanceof je){let e=r.name??"";return`k:${r.namespace??""}/${e}`}return Be(r)?`u:${r.publisher}/${r.package_}/${r.name}`:`o:${JSON.stringify(r)}`}var X=class extends Error{constructor(n,t){super(`${n} (at ${t})`);this.path=t}path};function Ys(r,e){let n=r.name,t=oa(e),a={catalog:e,depth:0};if(w(r,u.InstanceTransformation))return Xt(r,n,a,t);if(w(r,u.SetTransformation))return Jt(r,n,a,t);throw new X("Subject is not a recognized v3 transformation type \u2014 expected InstanceTransformation or SetTransformation",n)}function Xt(r,e,n,t){return{kind:"instance",name:r.name,inputPattern:lt(r,e),rule:an(r,u.rule,`${e}.rule`,n),artifactName:an(r,u.artifactName,`${e}.artifactName`,n),outputs:ut(r,`${e}.outputs`),overrides:dt(r,`${e}.formatOverrides`,n),fragments:t}}function Jt(r,e,n,t){let a=Ue(r,u.partitionBy);return{kind:"set",name:r.name,inputPattern:lt(r,e),rule:an(r,u.rule,`${e}.rule`,n),artifactName:an(r,u.artifactName,`${e}.artifactName`,n),outputs:ut(r,`${e}.outputs`),overrides:dt(r,`${e}.formatOverrides`,n),partitionBy:a,fragments:t}}function lt(r,e){let n=Je(r,u.inputPattern);if(!n)throw new X("inputPattern is required",e);return Zt(n,`${e}.inputPattern`)}function Zt(r,e){let n=Ue(r,u.matchesClass);if(!n)throw new X("matchesClass is required",e);let t=[];for(let o of ve(r,u.requires))if(o instanceof x)t.push(_n(o.object.subject));else if(o instanceof I)for(let i of o.object)i instanceof j&&t.push(_n(i.subject));let a=[],s=0;for(let o of ve(r,u.sortBy))if(o instanceof I)for(let i of o.object)i instanceof V&&a.push(rt(i,`${e}.sortBy[${s++}]`));else o instanceof H&&a.push(rt(o.object,`${e}.sortBy[${s++}]`));return{matchesClass:n,requires:t,sortBy:a}}function rt(r,e){let n=Ue(r,u.byProperty);if(!n)throw new X("SortKey.byProperty is required",e);let t=Ue(r,u.order);if(!t)throw new X("SortKey.order is required",e);if(fe(t,u.ascending))return{byProperty:n,order:"ascending"};if(fe(t,u.descending))return{byProperty:n,order:"descending"};throw new X(`SortKey.order must reference tx.ascending or tx.descending; got ${t.publisher}/${t.package_}/${t.name}`,e)}function an(r,e,n,t){let a=Je(r,e);if(!a)throw new X("expression is required",n);return Oe(a,n,t)}function Oe(r,e,n){if(w(r,u.StringLiteral))return{kind:"string-literal",value:be(r,u.stringLiteral,e)};if(w(r,u.IntegerLiteral))return{kind:"integer-literal",value:ct(r,u.integerLiteral,e)};if(w(r,u.DecimalLiteral))return{kind:"decimal-literal",value:ct(r,u.decimalLiteral,e)};if(w(r,u.BooleanLiteral))return{kind:"boolean-literal",value:la(r,u.booleanLiteral,e)};if(w(r,u.VarRef))return{kind:"var-ref",varName:be(r,u.varName,e)};if(w(r,u.PropertyRead))return{kind:"property-read",source:y(r,u.readSource,`${e}.readSource`,n),readProp:Ie(r,u.readProp,e,"readProp")};if(w(r,u.Traverse))return{kind:"traverse",source:y(r,u.traverseSource,`${e}.traverseSource`,n),through:Ie(r,u.through,e,"through"),step:y(r,u.step,`${e}.step`,n)};if(w(r,u.BuildAstNode))return{kind:"build-ast-node",astClass:Ie(r,u.astClass,e,"astClass"),set:ea(r,`${e}.set`,n)};if(w(r,u.When))return{kind:"when",condition:y(r,u.condition,`${e}.condition`,n),thenBuild:y(r,u.thenBuild,`${e}.thenBuild`,n),elseBuild:Qt(r,u.elseBuild,`${e}.elseBuild`,n)};if(w(r,u.Concat))return{kind:"concat",parts:Sn(r,u.parts,`${e}.parts`,n)};if(w(r,u.Fallback))return{kind:"fallback",primary:y(r,u.primary,`${e}.primary`,n),alternate:y(r,u.alternate,`${e}.alternate`,n)};if(w(r,u.UriName))return{kind:"uri-name",source:y(r,u.uriNameOf,`${e}.uriNameOf`,n)};if(w(r,u.UriPublisher))return{kind:"uri-publisher",source:y(r,u.uriPublisherOf,`${e}.uriPublisherOf`,n)};if(w(r,u.UriPackage))return{kind:"uri-package",source:y(r,u.uriPackageOf,`${e}.uriPackageOf`,n)};if(w(r,u.UriVersion))return{kind:"uri-version",source:y(r,u.uriVersionOf,`${e}.uriVersionOf`,n)};if(w(r,u.SubjectUri))return{kind:"subject-uri",source:y(r,u.subjectOf,`${e}.subjectOf`,n)};if(w(r,u.UriLiteral))return{kind:"uri-literal",refTo:Ie(r,u.refTo,e,"refTo")};if(w(r,u.DisplayLabel))return{kind:"display-label",labelTarget:Ie(r,u.labelTarget,e,"labelTarget"),labelSource:Ie(r,u.labelSource,e,"labelSource")};if(w(r,u.ResolveRef))return{kind:"resolve-ref",source:y(r,u.resolveSource,`${e}.resolveSource`,n)};if(w(r,u.Normalize))return{kind:"normalize",source:y(r,u.normSource,`${e}.normSource`,n),normKind:na(r,e)};if(w(r,u.UnescapedString))return{kind:"unescaped-string",source:y(r,u.unescapedSource,`${e}.unescapedSource`,n)};if(w(r,u.RenderMarkdown))return{kind:"render-markdown",source:y(r,u.renderSource,`${e}.renderSource`,n),readProp:Ie(r,u.renderProp,e,"renderProp"),format:ta(r,e)};if(w(r,u.IsSet))return{kind:"is-set",check:y(r,u.checkExpr,`${e}.checkExpr`,n)};if(w(r,u.CallFragment))return ra(r,e,n);if(w(r,u.Join))return{kind:"join",source:y(r,u.source,`${e}.source`,n),separator:be(r,u.separator,e)};if(w(r,u.Count))return{kind:"count",source:y(r,u.source,`${e}.source`,n)};if(w(r,u.Sum))return{kind:"sum",source:y(r,u.source,`${e}.source`,n)};if(w(r,u.Min))return{kind:"min",source:y(r,u.source,`${e}.source`,n)};if(w(r,u.Max))return{kind:"max",source:y(r,u.source,`${e}.source`,n)};if(w(r,u.Average))return{kind:"average",source:y(r,u.source,`${e}.source`,n)};if(w(r,u.ForEach))return{kind:"for-each",source:y(r,u.source,`${e}.source`,n),loopVar:be(r,u.loopVar,e),emit:y(r,u.emit,`${e}.emit`,n)};if(w(r,u.ListMap))return{kind:"list-map",source:y(r,u.source,`${e}.source`,n),loopVar:be(r,u.loopVar,e),mapBody:y(r,u.mapBody,`${e}.mapBody`,n)};if(w(r,u.Filter))return{kind:"filter",source:y(r,u.source,`${e}.source`,n),loopVar:be(r,u.loopVar,e),predicate:y(r,u.predicate,`${e}.predicate`,n)};if(w(r,u.PartitionBy))return{kind:"partition-by",source:y(r,u.source,`${e}.source`,n),loopVar:be(r,u.loopVar,e),partitionKey:y(r,u.partitionKey,`${e}.partitionKey`,n)};if(w(r,u.DistinctBy))return{kind:"distinct-by",source:y(r,u.source,`${e}.source`,n),loopVar:be(r,u.loopVar,e),distinctKey:y(r,u.distinctKey,`${e}.distinctKey`,n)};if(w(r,u.AllStatements))return{kind:"all-statements",source:y(r,u.statementsOf,`${e}.statementsOf`,n)};if(w(r,u.StatementPredicate))return{kind:"statement-predicate",source:y(r,u.predicateOf,`${e}.predicateOf`,n)};if(w(r,u.StatementValue))return{kind:"statement-value",source:y(r,u.valueOf,`${e}.valueOf`,n)};if(w(r,u.DateFormat))return{kind:"date-format",source:y(r,u.dateSource,`${e}.dateSource`,n),format:aa(r,e)};if(w(r,u.Add))return{kind:"add",left:y(r,u.arithLeft,`${e}.arithLeft`,n),right:y(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Subtract))return{kind:"subtract",left:y(r,u.arithLeft,`${e}.arithLeft`,n),right:y(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Multiply))return{kind:"multiply",left:y(r,u.arithLeft,`${e}.arithLeft`,n),right:y(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Divide))return{kind:"divide",left:y(r,u.arithLeft,`${e}.arithLeft`,n),right:y(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Reverse))return{kind:"reverse",source:y(r,u.source,`${e}.source`,n)};if(w(r,u.WindowedMap)){let t=ft(r,u.windowSize);if(t===void 0||!Number.isInteger(t)||t<1)throw new X("windowSize must be a positive integer",`${e}.windowSize`);return{kind:"windowed-map",source:y(r,u.source,`${e}.source`,n),windowSize:t,windowVar:be(r,u.windowVar,e),windowBody:y(r,u.windowBody,`${e}.windowBody`,n)}}if(w(r,u.PairwiseMap))return{kind:"pairwise-map",source:y(r,u.source,`${e}.source`,n),firstVar:be(r,u.firstVar,e),secondVar:be(r,u.secondVar,e),pairBody:y(r,u.pairBody,`${e}.pairBody`,n)};if(w(r,u.Scan))return{kind:"scan",source:y(r,u.source,`${e}.source`,n),initialState:y(r,u.initialState,`${e}.initialState`,n),stateVar:be(r,u.stateVar,e),elementVar:be(r,u.elementVar,e),accumulate:y(r,u.accumulate,`${e}.accumulate`,n)};if(w(r,u.ListItemAt))return{kind:"list-item-at",source:y(r,u.source,`${e}.source`,n),itemIndex:y(r,u.itemIndex,`${e}.itemIndex`,n)};if(w(r,u.Equals))return{kind:"equals",left:y(r,u.compareLeft,`${e}.compareLeft`,n),right:y(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.GreaterThan))return{kind:"greater-than",left:y(r,u.compareLeft,`${e}.compareLeft`,n),right:y(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.LessThan))return{kind:"less-than",left:y(r,u.compareLeft,`${e}.compareLeft`,n),right:y(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.GreaterThanOrEqual))return{kind:"greater-than-or-equal",left:y(r,u.compareLeft,`${e}.compareLeft`,n),right:y(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.LessThanOrEqual))return{kind:"less-than-or-equal",left:y(r,u.compareLeft,`${e}.compareLeft`,n),right:y(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.Not))return{kind:"not",operand:y(r,u.operand,`${e}.operand`,n)};if(w(r,u.And))return{kind:"and",operands:Sn(r,u.operands,`${e}.operands`,n)};if(w(r,u.Or))return{kind:"or",operands:Sn(r,u.operands,`${e}.operands`,n)};if(w(r,u.Contains))return{kind:"contains",haystack:y(r,u.haystack,`${e}.haystack`,n),needle:y(r,u.needle,`${e}.needle`,n)};if(w(r,u.Abs))return{kind:"abs",value:y(r,u.value,`${e}.value`,n)};if(w(r,u.Negate))return{kind:"negate",value:y(r,u.value,`${e}.value`,n)};if(w(r,u.IsReference))return{kind:"is-reference",check:y(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsEmbedded))return{kind:"is-embedded",check:y(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsList))return{kind:"is-list",check:y(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsString))return{kind:"is-string",check:y(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsNumber))return{kind:"is-number",check:y(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsBoolean))return{kind:"is-boolean",check:y(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.StatementObject))return{kind:"statement-object",source:y(r,u.statementSource,`${e}.statementSource`,n)};if(w(r,u.Let))return{kind:"let",bindName:be(r,u.letName,e),bindValue:y(r,u.letValue,`${e}.letValue`,n),body:y(r,u.letBody,`${e}.letBody`,n)};if(w(r,u.GetStatementByName))return{kind:"get-statement-by-name",inSubject:y(r,u.inSubject,`${e}.inSubject`,n),byName:y(r,u.byName,`${e}.byName`,n)};throw new X("Expression is not of a recognized v3 type \u2014 embedded has no matching subclass of tx.Expression",e)}function y(r,e,n,t){let a=Je(r,e);if(!a)throw new X("child expression is required",n);return Oe(a,n,t)}function Qt(r,e,n,t){let a=Je(r,e);if(a)return Oe(a,n,t)}function Sn(r,e,n,t){let a=[],s=0;for(let o of ve(r,e))if(o instanceof I)for(let i of o.object)i instanceof V&&a.push(Oe(i,`${n}[${s++}]`,t));else o instanceof H&&a.push(Oe(o.object,`${n}[${s++}]`,t));return a}function ea(r,e,n){let t=[],a=0;for(let s of ve(r,u.set))if(s instanceof I)for(let o of s.object)o instanceof V&&t.push(st(o,`${e}[${a++}]`,n));else s instanceof H&&t.push(st(s.object,`${e}[${a++}]`,n));return t}function st(r,e,n){return{field:Ie(r,u.field,e,"field"),value:y(r,u.bindValue,`${e}.bindValue`,n)}}function na(r,e){let n=Ue(r,u.normKind);if(!n)throw new X("normKind is required",e);if(fe(n,u.NORM_TRIM_END))return"trim-end";if(fe(n,u.NORM_TO_UPPER))return"to-upper";if(fe(n,u.NORM_TO_LOWER))return"to-lower";if(fe(n,u.NORM_FIRST_CHAR))return"first-char";throw new X(`Unknown NormalizeKind: ${n.publisher}/${n.package_}/${n.name}`,e)}function ta(r,e){let n=Ue(r,u.renderFormat);if(!n)throw new X("renderFormat is required",e);if(fe(n,u.RENDER_HTML))return"html";if(fe(n,u.RENDER_MARKDOWN))return"markdown";throw new X(`Unknown RenderFormat: ${n.publisher}/${n.package_}/${n.name}`,e)}var ot=new Set(["iso-date","iso-datetime","short-date","long-date","year","month-year"]);function aa(r,e){let n=He(r,u.dateFormat);if(!n)throw new X("dateFormat is required",e);if(!ot.has(n))throw new X(`Unknown dateFormat "${n}"; supported: ${[...ot].join(", ")}`,e);return n}function ra(r,e,n){let t=Ue(r,u.fragmentRef);if(!t)throw new X("fragmentRef is required",e);if(!ia(n.catalog,t))throw new X(`ExpressionFragment not found: ${t.publisher}/${t.package_}/${t.name}`,e);return{kind:"call-fragment",fragmentKey:sa(t)}}function sa(r){return`${r.publisher}/${r.package_}/${r.name}`}function oa(r){let e=new Map,n=[];for(let t of r){if(!(t instanceof q)||!w(t,u.ExpressionFragment))continue;let a=Je(t,u.body);if(!a)continue;let s=(t.namespace||"").split("@")[0]||"",o=s.indexOf("/");if(o<0)continue;let i=s.substring(0,o),c=s.substring(o+1),l=`${i}/${c}/${t.name}`;n.push({key:l,subject:t,bodyEmb:a,pubPkgName:`${s}/${t.name}`})}for(let t of n){let a=Oe(t.bodyEmb,`fragment(${t.pubPkgName})`,{catalog:r,depth:0});e.set(t.key,a)}return e}function ia(r,e){for(let n of r)if(!(!(n instanceof q)||n.name!==e.name||!(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))&&w(n,u.ExpressionFragment))return n}function ut(r,e){let n=new Set;for(let t of ve(r,u.outputs))if(t instanceof x)n.add(t.object.subject.name);else if(t instanceof I)for(let a of t.object)a instanceof j&&n.add(a.subject.name);if(n.size===0)throw new X("outputs is required (at least one OutputFormat)",e);return n}function dt(r,e,n){let t=new Map,a=0;for(let s of ve(r,u.formatOverrides))if(s instanceof I){for(let o of s.object)if(o instanceof V){let[i,c]=it(o,`${e}[${a++}]`);t.set(i,c)}}else if(s instanceof H){let[o,i]=it(s.object,`${e}[${a++}]`);t.set(o,i)}return t}function it(r,e){let n=Ue(r,u.formatTarget);if(!n)throw new X("formatTarget is required",e);let t=[];for(let i of ve(r,u.metadataKeys))if(i instanceof W)t.push(i.object);else if(i instanceof I)for(let c of i.object){let l=c.value;typeof l=="string"&&t.push(l)}let a=new Map;for(let i of ve(r,u.metadataRenames))if(i instanceof I){for(let c of i.object)if(c instanceof V){let l=He(c,u.fromKey),d=He(c,u.toKey);l&&d&&a.set(l,d)}}else if(i instanceof H){let c=i.object,l=He(c,u.fromKey),d=He(c,u.toKey);l&&d&&a.set(l,d)}let s=wn(r,u.trailingNewline),o=wn(r,u.omitWrapper);return[n.name,{metadataKeys:t.length>0?t:void 0,metadataRenames:a,trailingNewline:s,omitWrapper:o}]}function ca(r){return r.predicate?.subject}function ve(r,e){let n=[];for(let t of r.statement){let a=ca(t);a&&fe(a,e)&&n.push(t)}return n}function Je(r,e){for(let n of ve(r,e))if(n instanceof H)return n.object}function Ue(r,e){for(let n of ve(r,e))if(n instanceof x)return _n(n.object.subject)}function He(r,e){for(let n of ve(r,e))if(n instanceof W)return n.object}function ft(r,e){for(let n of ve(r,e))if(n instanceof ie)return n.object}function wn(r,e){for(let n of ve(r,e))if(n instanceof ae)return n.object}function be(r,e,n){let t=He(r,e);if(t===void 0)throw new X(`${e.name} (string) is required`,n);return t}function ct(r,e,n){let t=ft(r,e);if(t===void 0)throw new X(`${e.name} (number) is required`,n);return t}function la(r,e,n){let t=wn(r,e);if(t===void 0)throw new X(`${e.name} (boolean) is required`,n);return t}function Ie(r,e,n,t){let a=Ue(r,e);if(!a)throw new X(`${t} (URI reference) is required`,n);return a}function _n(r){return{publisher:r.publisher,package_:r.package_,name:r.name}}var rn=class{constructor(e,n,t){this.repository=e;this.parser=n;this.objectParser=t}repository;parser;objectParser;cache=new Map;async resolveSubject(e,n){let t=Me(n,e);if(t)return t;let a=e.version,s=a&&typeof a.major=="number"?`@${a.major}.${a.minor}.${a.patch}`:"",o=`${e.publisher}/${e.package_}${s}`,i=this.cache.get(o);if(!i){let l=await this.repository.getDocumentsByNamespaceAsync(e.publisher,e.package_);if(l.length===0)return;let d=a&&typeof a.major=="number"?l.find(p=>{let m=p.metadata?.namespace_?.version;return m&&m.major===a.major&&m.minor===a.minor&&m.patch===a.patch})??l[0]:l[0],f=new Mn(d,this.repository);i=await this.objectParser.parseKanonaks(f),this.cache.set(o,i)}let c=Me(i,e);if(c)return c;for(let l of i)if(l instanceof q&&l.name===e.name)return l}};var sn=class{byLang=new Map;constructor(e){for(let n of e){if(!n.language)continue;let t=[];for(let a of n.rules){if(!a.tokenClass||!a.pattern)continue;let s;try{s=new RegExp(a.pattern,"y")}catch{continue}t.push({tokenClass:a.tokenClass,re:s})}this.byLang.set(n.language,t)}}has(e){return this.byLang.has(e)}highlight(e,n){let t=this.byLang.get(e);return!t||t.length===0?De(n):n.split(`
18
+ `).map(a=>this.highlightLine(a,t)).join(`
19
+ `)}highlightLine(e,n){let t="",a=0;for(;a<e.length;){let s=!1;for(let o of n){o.re.lastIndex=a;let i=o.re.exec(e);if(i&&i[0].length>0){t+=`<span class="kan-tok-${o.tokenClass}">${De(i[0])}</span>`,a+=i[0].length,s=!0;break}}s||(t+=De(e[a]),a++)}return t}};var fn={publisher:"kanonak.org",package_:"derivation",name:"look"},pn={publisher:"kanonak.org",package_:"derivation",name:"tokens"},we={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},jn={publisher:"kanonak.org",package_:"core-rdf",name:"label"},pt={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},ua={publisher:"kanonak.org",package_:"core-rdf",name:"range"},da={publisher:"kanonak.org",package_:"core-rdf",name:"Class"},fa={publisher:"kanonak.org",package_:"core-owl",name:"Class"},pa={publisher:"kanonak.org",package_:"look",name:"Hero"},ga={publisher:"kanonak.org",package_:"look",name:"PropertyList"},ka={publisher:"kanonak.org",package_:"look",name:"PropertyTable"},ma={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},ha={publisher:"kanonak.org",package_:"look",name:"ChipRow"},ba={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},va={publisher:"kanonak.org",package_:"look",name:"ReferencedBy"},ya={publisher:"kanonak.org",package_:"look",name:"Instances"},gt={publisher:"kanonak.org",package_:"look",name:"Markdown"},$a={publisher:"kanonak.org",package_:"look",name:"NavGroup"},Sa={publisher:"kanonak.org",package_:"look",name:"nav"},Kn={publisher:"kanonak.org",package_:"look",name:"NavLink"},wa={publisher:"kanonak.org",package_:"look",name:"footer"},_a={publisher:"kanonak.org",package_:"look",name:"text"},ja={publisher:"kanonak.org",package_:"look",name:"links"},kt={publisher:"kanonak.org",package_:"look",name:"target"},Ka={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},Ra={publisher:"kanonak.org",package_:"look",name:"Timeline"},Ea={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},La={publisher:"kanonak.org",package_:"look",name:"Figure"},Oa={publisher:"kanonak.org",package_:"look",name:"Diagram"},Ua={publisher:"kanonak.org",package_:"look",name:"facets"},Ca={publisher:"kanonak.org",package_:"look",name:"relation"},Ia={publisher:"kanonak.org",package_:"look",name:"encode"},Ta={publisher:"kanonak.org",package_:"look",name:"cluster"},Fa={publisher:"kanonak.org",package_:"look",name:"connector"},xa={publisher:"kanonak.org",package_:"look",name:"channels"},Va={publisher:"kanonak.org",package_:"look",name:"mapPath"},Pa={publisher:"kanonak.org",package_:"look",name:"to"},Aa={publisher:"kanonak.org",package_:"look",name:"mark"},Ma={publisher:"kanonak.org",package_:"look",name:"expand"},Na={publisher:"kanonak.org",package_:"look",name:"edges"},Da={publisher:"kanonak.org",package_:"look",name:"nodeTier"},Ba={publisher:"kanonak.org",package_:"look",name:"diagramTier"},Ha={publisher:"kanonak.org",package_:"look",name:"nodeNote"},za={publisher:"kanonak.org",package_:"look",name:"edgeLabel"},Ga={publisher:"kanonak.org",package_:"look",name:"labelEdges"},qa={publisher:"kanonak.org",package_:"look",name:"edgeValue"},Wa={publisher:"kanonak.org",package_:"look",name:"figureTitle"},Ya={publisher:"kanonak.org",package_:"look",name:"titlePosition"},Xa=`(function(){
20
+ if(window.__kanDiagramZoom)return;window.__kanDiagramZoom=1;
21
+ var TIERS=['chip','icon','card','full'];
22
+ var css='.kan-dgm-tier[hidden]{display:none}.kan-dgm-tiers{position:relative}'
23
+ +'.kan-dgm-tiers>.kan-dgm-btn{opacity:0;transition:opacity .12s}.kan-dgm-tiers:hover>.kan-dgm-btn,.kan-dgm-btn:focus{opacity:1}'
24
+ +'#kan-dgm-modal{position:fixed;inset:0;z-index:9999;display:none;background:rgba(0,0,0,.85);cursor:grab}'
25
+ +'#kan-dgm-stage{position:absolute;top:50%;left:50%}'
26
+ +'#kan-dgm-bar{position:fixed;top:14px;left:50%;transform:translateX(-50%);display:flex;gap:9px;align-items:center;font:12px sans-serif;color:#cbd5e1;background:rgba(12,18,32,.92);border:1px solid #1e293b;border-radius:999px;padding:7px 14px;user-select:none}'
27
+ +'#kan-dgm-bar .pip{width:9px;height:9px;border-radius:50%;background:#334155;cursor:pointer}'
28
+ +'#kan-dgm-bar .pip.on{background:#38bdf8}'
29
+ +'#kan-dgm-lbl{min-width:32px;text-transform:capitalize}';
30
+ var sty=document.createElement('style');sty.textContent=css;(document.head||document.documentElement).appendChild(sty);
31
+ var S={cont:null,mode:'snap',tier:1,z:1,x:0,y:0,drag:0,sx:0,sy:0,lock:0};
32
+ function el(id){return document.getElementById(id);}
33
+ function modal(){var m=el('kan-dgm-modal');if(m)return m;
34
+ m=document.createElement('div');m.id='kan-dgm-modal';
35
+ var st=document.createElement('div');st.id='kan-dgm-stage';m.appendChild(st);
36
+ var bar=document.createElement('div');bar.id='kan-dgm-bar';
37
+ var lbl=document.createElement('span');lbl.id='kan-dgm-lbl';bar.appendChild(lbl);
38
+ for(var i=0;i<4;i++){(function(i){var p=document.createElement('span');p.className='pip';p.title=TIERS[i];p.addEventListener('click',function(e){e.stopPropagation();setTier(i);});bar.appendChild(p);})(i);}
39
+ var h=document.createElement('span');h.textContent='scroll: zoom \\u00b7 drag: pan \\u00b7 esc';h.style.cssText='margin-left:6px;color:#64748b';bar.appendChild(h);
40
+ m.appendChild(bar);m.addEventListener('click',function(e){if(e.target===m)close();});document.body.appendChild(m);return m;}
41
+ function apply(){var st=el('kan-dgm-stage');if(st)st.style.transform='translate(calc(-50% + '+S.x+'px),calc(-50% + '+S.y+'px)) scale('+S.z+')';}
42
+ function updBar(){var b=el('kan-dgm-bar');if(!b)return;var geo=S.mode==='geo';var ps=b.querySelectorAll('.pip');for(var i=0;i<ps.length;i++){ps[i].style.display=geo?'none':'';ps[i].className='pip'+(i===S.tier?' on':'');}el('kan-dgm-lbl').textContent=geo?'zoom':TIERS[S.tier];}
43
+ function sizeVisible(){var c=S.cont;if(!c||S.mode==='geo')return;var svg=c.querySelector('.kan-dgm-tier:not([hidden]) svg');if(svg){var vb=(svg.getAttribute('viewBox')||'0 0 800 600').split(' ');var w=parseFloat(vb[2])||800;svg.style.width=Math.min(w,window.innerWidth*0.92)+'px';svg.style.height='auto';svg.style.display='block';}apply();}
44
+ function setTier(i){i=Math.max(0,Math.min(3,i));S.tier=i;var c=S.cont;if(!c)return;var ts=c.querySelectorAll('.kan-dgm-tier');for(var j=0;j<ts.length;j++){if(ts[j].getAttribute('data-tier')===TIERS[i])ts[j].removeAttribute('hidden');else ts[j].setAttribute('hidden','');}sizeVisible();updBar();}
45
+ function uniq(root){var seq=(window.__kanMk=(window.__kanMk||0)+1);var map={};var mk=root.querySelectorAll('marker[id]');for(var i=0;i<mk.length;i++){var o=mk[i].getAttribute('id');var n=o+'_z'+seq;map[o]=n;mk[i].setAttribute('id',n);}var all=root.querySelectorAll('[marker-end],[marker-start],[marker-mid]');for(var j=0;j<all.length;j++){(function(e){['marker-end','marker-start','marker-mid'].forEach(function(a){var v=e.getAttribute(a);if(!v)return;var mm=v.match(/url\\(#(.+?)\\)/);if(mm&&map[mm[1]])e.setAttribute(a,'url(#'+map[mm[1]]+')');});})(all[j]);}}
46
+ function open(tiersEl){modal();var st=el('kan-dgm-stage');var c=tiersEl.cloneNode(true);uniq(c);var bb=c.querySelector('.kan-dgm-btn');if(bb&&bb.parentNode)bb.parentNode.removeChild(bb);st.innerHTML='';st.appendChild(c);S.cont=c;S.x=0;S.y=0;S.z=1;
47
+ S.mode=c.getAttribute('data-geo')?'geo':'snap';
48
+ var vis=c.querySelector('.kan-dgm-tier:not([hidden])');var t=vis?vis.getAttribute('data-tier'):'icon';S.tier=Math.max(0,TIERS.indexOf(t));
49
+ el('kan-dgm-modal').style.display='block';
50
+ if(S.mode==='geo'){var bw=c.getBoundingClientRect().width||600;S.z=Math.min(1.8,(window.innerWidth*0.9)/bw);if(!(S.z>0))S.z=1;}else sizeVisible();
51
+ apply();updBar();}
52
+ function close(){var m=el('kan-dgm-modal');if(m){m.style.display='none';el('kan-dgm-stage').innerHTML='';S.cont=null;}}
53
+ document.addEventListener('wheel',function(e){var m=el('kan-dgm-modal');if(!m||m.style.display==='none')return;e.preventDefault();
54
+ if(S.mode==='geo'){S.z*=e.deltaY<0?1.15:1/1.15;S.z=Math.max(.2,Math.min(S.z,9));apply();return;}
55
+ var n=Date.now();if(n-S.lock<200)return;S.lock=n;setTier(S.tier+(e.deltaY<0?1:-1));},{passive:false});
56
+ document.addEventListener('mousedown',function(e){var m=el('kan-dgm-modal');if(!m||m.style.display==='none')return;S.drag=1;S.sx=e.clientX-S.x;S.sy=e.clientY-S.y;m.style.cursor='grabbing';});
57
+ document.addEventListener('mousemove',function(e){if(!S.drag)return;S.x=e.clientX-S.sx;S.y=e.clientY-S.sy;apply();});
58
+ document.addEventListener('mouseup',function(){S.drag=0;var m=el('kan-dgm-modal');if(m)m.style.cursor='grab';});
59
+ document.addEventListener('keydown',function(e){if(e.key==='Escape')close();});
60
+ function enhance(){var cs=document.querySelectorAll('.kan-dgm-tiers');for(var i=0;i<cs.length;i++){(function(c){if(c.__kz)return;c.__kz=1;
61
+ var b=document.createElement('button');b.type='button';b.className='kan-dgm-btn';b.textContent='\\u2922';b.setAttribute('aria-label','Open and zoom');
62
+ b.style.cssText='position:absolute;top:6px;right:6px;z-index:3;border:1px solid var(--kan-border,#333);background:var(--kan-bg-card,#111);color:var(--kan-text,#ccc);border-radius:6px;width:28px;height:28px;cursor:pointer;font-size:15px;line-height:1;padding:0';
63
+ b.addEventListener('click',function(ev){ev.preventDefault();ev.stopPropagation();open(c);});c.appendChild(b);})(cs[i]);}}
64
+ if(document.readyState!=='loading')enhance();else document.addEventListener('DOMContentLoaded',enhance);
65
+ })();`,Ze={chip:56,icon:120,card:240,full:420},Ja=["chip","icon","card","full"],Za={56:"chip",120:"icon",240:"card",420:"full"},_e=11,Qa={publisher:"kanonak.org",package_:"look",name:"placement"},er={publisher:"kanonak.org",package_:"look",name:"width"},nr=4,tr={publisher:"kanonak.org",package_:"look",name:"StatRow"},ar={publisher:"kanonak.org",package_:"look",name:"Horizon"},rr={publisher:"kanonak.org",package_:"look",name:"PackageContents"},Rn={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},sr={publisher:"kanonak.org",package_:"core-kanonak",name:"Publisher"},or={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},ir={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},cr={publisher:"kanonak.org",package_:"look",name:"packages"},lr={publisher:"kanonak.org",package_:"code-grammars",name:"CodeGrammar"},ur={publisher:"kanonak.org",package_:"code-grammars",name:"language"},dr={publisher:"kanonak.org",package_:"code-grammars",name:"rule"},fr={publisher:"kanonak.org",package_:"code-grammars",name:"tokenClass"},pr={publisher:"kanonak.org",package_:"code-grammars",name:"pattern"},gr={publisher:"kanonak.org",package_:"look",name:"Links"},kr={publisher:"kanonak.org",package_:"link",name:"url"},mr={publisher:"kanonak.org",package_:"link",name:"links"};var hr={publisher:"kanonak.org",package_:"look",name:"Distribution"},br={publisher:"kanonak.org",package_:"look",name:"alphaPath"},vr={publisher:"kanonak.org",package_:"look",name:"betaPath"},En={publisher:"kanonak.org",package_:"look",name:"SectionHeading"},yr={publisher:"kanonak.org",package_:"look",name:"SectionNav"},mt={publisher:"kanonak.org",package_:"look",name:"heading"},$r={publisher:"kanonak.org",package_:"look",name:"note"},Sr={publisher:"kanonak.org",package_:"look",name:"VersionDelta"},wr={publisher:"kanonak.org",package_:"look",name:"TimePlot"},_r={publisher:"kanonak.org",package_:"look",name:"Details"},jr={publisher:"kanonak.org",package_:"look",name:"EmbeddedViews"},Kr={publisher:"kanonak.org",package_:"look",name:"ResourceCount"},Rr={publisher:"kanonak.org",package_:"look",name:"counts"},Er={publisher:"kanonak.org",package_:"look",name:"skip"},Lr={publisher:"kanonak.org",package_:"derivation",name:"derivations"},Or={publisher:"kanonak.org",package_:"look",name:"laneBy"},Ur={publisher:"kanonak.org",package_:"look",name:"stats"},Cr={publisher:"kanonak.org",package_:"look",name:"statPath"},Ir={publisher:"kanonak.org",package_:"look",name:"statLabel"},ht={publisher:"kanonak.org",package_:"look",name:"labelPath"},Tr={publisher:"kanonak.org",package_:"look",name:"badgePath"},bt={publisher:"kanonak.org",package_:"look",name:"BarMeter"},Fr={publisher:"kanonak.org",package_:"look",name:"cellAs"},xr={publisher:"kanonak.org",package_:"look",name:"variants"},Vr={publisher:"kanonak.org",package_:"look",name:"when"},Pr={publisher:"kanonak.org",package_:"look",name:"property"},vt={publisher:"kanonak.org",package_:"look",name:"equals"},Ar={publisher:"kanonak.org",package_:"look",name:"ResourceQuery"},Mr={publisher:"kanonak.org",package_:"look",name:"ofClass"},Nr={publisher:"kanonak.org",package_:"look",name:"direction"},Dr={publisher:"kanonak.org",package_:"look",name:"limit"},on={publisher:"kanonak.org",package_:"look",name:"orderBy"},yt={publisher:"kanonak.org",package_:"look",name:"track"},Qe={publisher:"kanonak.org",package_:"look",name:"metricPath"},Ln={publisher:"kanonak.org",package_:"look",name:"hueBy"},$t={publisher:"kanonak.org",package_:"look",name:"lowerPath"},St={publisher:"kanonak.org",package_:"look",name:"upperPath"},Br={publisher:"kanonak.org",package_:"look",name:"axisMin"},Hr={publisher:"kanonak.org",package_:"look",name:"axisMax"},zr={publisher:"kanonak.org",package_:"look",name:"valueLabel"};var wt={publisher:"kanonak.org",package_:"look",name:"semanticSvg"},Gr={publisher:"kanonak.org",package_:"look",name:"tierChip"},qr={publisher:"kanonak.org",package_:"look",name:"tierIcon"},Wr={publisher:"kanonak.org",package_:"look",name:"tierCard"},Yr={publisher:"kanonak.org",package_:"look",name:"tierFull"},Ce={publisher:"kanonak.org",package_:"core-rdf",name:"type"},_t={publisher:"kanonak.org",package_:"core-rdf",name:"subClassOf"},jt=6,On={publisher:"kanonak.org",package_:"look",name:"bands"},Xr={publisher:"kanonak.org",package_:"look",name:"title"},Jr={publisher:"kanonak.org",package_:"look",name:"eyebrow"},Zr={publisher:"kanonak.org",package_:"look",name:"subtitle"},Kt={publisher:"kanonak.org",package_:"look",name:"badges"},se={publisher:"kanonak.org",package_:"look",name:"source"},Qr={publisher:"kanonak.org",package_:"look",name:"via"},es={publisher:"kanonak.org",package_:"look",name:"size"},ns={publisher:"kanonak.org",package_:"look",name:"icon"},ts={publisher:"kanonak.org",package_:"look",name:"avatar"},as={publisher:"kanonak.org",package_:"look",name:"contents"},rs={publisher:"kanonak.org",package_:"look",name:"transitive"},ss={publisher:"kanonak.org",package_:"look",name:"chips"},Rt={publisher:"kanonak.org",package_:"look",name:"entries"},os={publisher:"kanonak.org",package_:"look",name:"urlForm"},kn=class r{constructor(e){this.catalog=e}catalog;linkMode="single-publisher";setLinkMode(e){return this.linkMode=e,this}get publisherFirst(){return this.linkMode==="open-world"}linkBase(e){return this.publisherFirst?`/${e}`:""}resourceHref(e,n,t="="){return zn.formatResourceUrl(e,t,{contextPublisher:n,...this.publisherFirst?{publisherFirst:!0}:{}})}packageHref(e,n,t){return`${this.linkBase(e)}/${n}${t?`/${t}`:""}`}publisherHref(e){return`${this.linkBase(e)}/`}_codeHighlighter;findCascadedLook(e){let n=ls(e)?void 0:cn(e);return n?{declaration:n,sourceClass:{publisher:ne(e),package_:this.uriOf(e).package_,name:e.name}}:this.lookFromTypeRefs(me(e))}lookFromTypeRefs(e){let n=new Set,t=[...e];for(;t.length>0;){let s=t.shift().subject,o=Y(s);if(n.has(o))continue;n.add(o);let i=he(this.catalog,s);for(let c of i){let l=cn(c);if(l)return{declaration:l,sourceClass:{publisher:s.publisher,package_:s.package_,name:s.name}}}for(let c of i)for(let l of un(c))t.push(l)}if(!n.has(Y(we)))for(let a of he(this.catalog,we)){let s=cn(a);if(s)return{declaration:s,sourceClass:{...we}}}}matchingVariants(e){let n=this.findCascadedLook(e);if(!n)return[];let t=this.gatherValueItems(z(n.declaration,xr)).filter(i=>i instanceof V);if(t.length===0)return[];let a=Z(this.catalog,n.sourceClass),s={namespace:a?.namespace??"",name:a?.name??n.sourceClass.name},o=[];for(let i of t){let c=this.readEmbeddedCarrier(i,Vr);if(!c)continue;let l=T(c,Pr);if(!l)continue;let d=T(c,vt);if(d){let p=z(e,l);this.gatherValueItems(p).filter(h=>h instanceof j).some(h=>Y(h.subject)===Y(d))&&o.push({variant:i,declaredBy:s});continue}let f=ee(c,vt);f!==void 0&&this.readPropertyValueText(e,l)===f&&o.push({variant:i,declaredBy:s})}return o}findCascadedTokens(e){let n=this.explainCascadedTokens(e),t=new Map;for(let[a,s]of n)t.set(a,s.value);return t}explainCascadedTokens(e){let n=new Map,t=(i,c,l)=>{for(let[d,f]of is(i))n.has(d)||n.set(d,{value:f,sourceNamespace:l?.namespace??i.namespace??"",sourceName:l?.name??i.name,level:c})};t(e,"instance");for(let{variant:i,declaredBy:c}of this.matchingVariants(e))t(i,"variant",c);let a=new Set,s=me(e);for(;s.length>0;){let i=s.shift(),c=Y(i.subject);if(a.has(c))continue;a.add(c);let l=c===Y(we)?"resource-floor":"class",d=he(this.catalog,i.subject);if(d.length!==0)for(let f of d){t(f,l);for(let p of un(f))s.push(p)}}let o=ne(e);if(o){let i=this.publisherSubject(o);i!==e&&t(i,"publisher")}if(!a.has(Y(we))){let i=he(this.catalog,we);for(let c of i)t(c,"resource-floor")}return n}async renderSvg(e){let n=N(this.catalog,e).label,t=(n.trim().charAt(0)||"?").toUpperCase(),a=`${e.namespace??""}/${e.name}`,s=this.collectCascadedSvgTiers(e),o=new Map([["input",e],["label",n],["firstLetter",t],["uri",a],["resourceKey",e.name]]),i=await this.evaluateTier(s.tierChip,o),c=await this.evaluateTier(s.tierIcon,o),l=await this.evaluateTier(s.tierCard,o),d=await this.evaluateTier(s.tierFull,o),p=[...this.findCascadedTokens(e)].map(([m,h])=>`--kan-${m}: ${h};`).join(" ");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" style="${Re(p)}">
66
+ <style>
67
+ .tier-chip,.tier-icon,.tier-card{display:none}
68
+ .tier-full{display:block}
69
+ @media (max-width:400px){.tier-full{display:none}.tier-card{display:block}}
70
+ @media (max-width:160px){.tier-card{display:none}.tier-icon{display:block}}
71
+ @media (max-width:60px){.tier-icon{display:none}.tier-chip{display:block}}
72
+ </style>
73
+ <g class="tier-chip">${i}</g>
74
+ <g class="tier-icon">${c}</g>
75
+ <g class="tier-card">${l}</g>
76
+ <g class="tier-full">${d}</g>
77
+ </svg>`}resolverInstance;expressionResolver(){if(!this.resolverInstance){let e=new xn,n=new Fn(e);this.resolverInstance=new rn(n,e,new Hn(e))}return this.resolverInstance}async evaluateTier(e,n){if(!e)return"";let t;try{t=Oe(e,"semanticSvg-tier",{catalog:this.catalog,depth:0})}catch{return""}let a=new Xe(this.expressionResolver(),this.catalog);if(t.kind==="concat"){let o=[];for(let i of t.parts){let c=await a.evaluate(i,n);o.push(Lt(i.kind,c))}return o.join("")}let s=await a.evaluate(t,n);return Lt(t.kind,s)}async evaluateCarrier(e,n){if(!e)return;let t;try{t=Oe(e,"look-carrier",{catalog:this.catalog,depth:0})}catch{return}let a=new Xe(this.expressionResolver(),this.catalog),s=new Map([["input",n]]),o=await a.evaluate(t,s),i=It(o);return i===""?void 0:i}async evaluateCarrierNum(e,n){let t=await this.evaluateCarrier(e,n);return t===void 0?NaN:parseFloat(t)}readEmbeddedCarrier(e,n){let t=z(e,n);return t instanceof H&&t.object instanceof V?t.object:void 0}referenceLabel(e){let n=e.subject,t=he(this.catalog,n);if(t.length===0){let a=Z(this.catalog,n);a&&t.push(a)}for(let a of t){let s=N(this.catalog,a);if(s.label!==a.name)return s.label}return n.name}collectCascadedSvgTiers(e){let n={},t=c=>{let l=z(c,wt);if(!(l instanceof H))return;let d=l.object,f=ln(d,Gr),p=ln(d,qr),m=ln(d,Wr),h=ln(d,Yr);n.tierChip===void 0&&f!==void 0&&(n.tierChip=f),n.tierIcon===void 0&&p!==void 0&&(n.tierIcon=p),n.tierCard===void 0&&m!==void 0&&(n.tierCard=m),n.tierFull===void 0&&h!==void 0&&(n.tierFull=h)};t(e);let a=e.namespace||"",s=a.indexOf("/");if(s>=0){let c=a.indexOf("@"),l={publisher:a.slice(0,s),package_:a.slice(s+1,c>=0?c:a.length),name:e.name};for(let d of he(this.catalog,l))t(d)}let o=new Set,i=me(e);for(;i.length>0;){let c=i.shift(),l=Y(c.subject);if(o.has(l))continue;o.add(l);let d=he(this.catalog,c.subject);for(let f of d){t(f);for(let p of un(f))i.push(p)}}if(!o.has(Y(we)))for(let c of he(this.catalog,we))t(c);return n}renderStylesheet(e){let n=this.explainStylesheet(e),t=[];for(let[o,i]of n.tokens)t.push(` --kan-${o}: ${i.value};`);let a=t.length>0?`:root {
78
+ ${t.join(`
79
+ `)}
80
+ }`:":root { /* no tokens resolved */ }",s=n.baseStylesheet.css??"";return`${us(n)}
81
+ ${a}
82
+ ${s}`}explainStylesheet(e){let n=this.explainCascadedTokens(e),t=this.explainBaseStylesheet(ne(e)),a=this.findCascadedLook(e),s=[];return t.css||(t.problem==="content-property-unresolved"?s.push(`Base stylesheet asset ${t.sourceNamespace}/base-stylesheet is in the catalog but its site.content property did not resolve \u2014 the package was likely cached without its imports block. Pages will render UNSTYLED (CSS stops at :root). Fix: re-install it from its published source: kanonak install kanonak.org/look-styles`):s.push("No look-styles package in the render catalog \u2014 pages will render UNSTYLED (CSS stops at :root). The look stack is ambient (not imported): it must be in the workspace, the global cache, or fetchable from kanonak.org by the user running the render. Fix: kanonak install kanonak.org/look-styles")),n.size===0&&s.push("No design tokens resolved \u2014 the :root block is empty. The universal token floor lives on rdfs.Resource in kanonak.org/look-tokens; that package is missing from the render catalog. Fix: kanonak install kanonak.org/look-tokens"),a||s.push(`No look (band declaration) resolved for ${e.namespace}/${e.name} \u2014 the HTML body will be an empty comment. The universal look floor lives on rdfs.Resource in kanonak.org/universal-look. Fix: kanonak install kanonak.org/universal-look`),{resource:{namespace:e.namespace||"",name:e.name},tokens:n,baseStylesheet:t,...a?{look:{sourceClass:a.sourceClass}}:{},warnings:s}}findBaseStylesheet(e){return this.explainBaseStylesheet(e).css}explainBaseStylesheet(e){let n="kanonak.org/site/content",t=f=>this.uriOf(f).version??null,a=[],s,o,i,c;for(let f of this.catalog){if(!(f instanceof q)||f.name!=="base-stylesheet")continue;let p=f.namespace||"";if(p.startsWith(`${e}/look-styles@`)){a.push(p);let m=t(f);m&&(!o||en(m,o)>0)&&(s=f,o=m)}else if(p.startsWith("kanonak.org/look-styles@")){a.push(p);let m=t(f);m&&(!c||en(m,c)>0)&&(i=f,c=m)}}let l=s??i;if(!l)return{problem:"no-look-styles-in-catalog",candidates:a};let d=l===s?"publisher-override":"universal-default";for(let f of l.statement){let p=f.predicate?.subject;if(!p)continue;if(`${p.publisher}/${p.package_}/${p.name}`===n&&f instanceof W)return{css:f.object,sourceNamespace:l.namespace||"",scope:d,candidates:a}}return{problem:"content-property-unresolved",sourceNamespace:l.namespace||"",scope:d,candidates:a}}async renderHtml(e){let n=this.findCascadedLook(e);if(!n)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let t=Un(n.declaration);if(t.length===0){let i=n.declaration.unresolvedPredicates;return i.length>0?`<!-- LookRenderer: look declaration has no bands \u2014 unresolved predicates dropped from the parse: ${i.map(l=>`${l.key} (authored by ${l.sourceDoc})`).join(", ")}. An import in the authoring document did not resolve; see the render-stack warnings (/.well-known/kanonak-render). -->`:"<!-- LookRenderer: look declaration has no bands -->"}let a=ne(e),s=this.collectSectionHeadings(t);this.diagramScriptEmitted=!1,this.diagramArrowSeq=0;let o=[];for(let i of t){let c=ze(i);c&&M(c,En)&&o.push('<div style="clear:both"></div>'),o.push(this.applyBandPlacement(i,await this.renderBand(i,e,a,s)))}return o.push('<div style="clear:both"></div>'),o.join(`
83
+ `)}applyBandPlacement(e,n){let t=ee(e,Qa);if(t!=="floatLeft"&&t!=="floatRight")return n;let a=t==="floatLeft"?"left":"right",s=ee(e,er),o=s&&/^\d+(\.\d+)?(%|px|rem|em)$/.test(s)?s:"42%";return`<div class="kan-band-float kan-band-${a}" style="float:${a};width:${o};margin:${a==="left"?"0 1.25rem 0.75rem 0":"0 0 0.75rem 1.25rem"}">${n}</div>`}collectSectionHeadings(e){let n=[];for(let t of e){let a=ze(t);if(!a||!M(a,En))continue;let s=ee(t,mt);s&&n.push({slug:Ot(s),label:s})}return n}publisherSubject(e){for(let t of this.catalog){if(!(t instanceof q)||ne(t)!==e||!me(t).some(s=>M(s.subject,sr)))continue;return he(this.catalog,{publisher:e,package_:this.uriOf(t).package_,name:t.name})[0]??t}let n=new q;return n.namespace=e,n.name=e,n.statement=[x.parse("kanonak.org/core-rdf/type","kanonak.org/core-kanonak/Publisher"),W.parse("kanonak.org/core-rdf/label",e)],n}hasDeclaredView(e){let n=this.findCascadedLook(e);return n?!(a=>a.publisher===we.publisher&&a.package_===we.package_&&a.name===we.name||a.publisher===Rn.publisher&&a.package_===Rn.package_&&a.name===Rn.name)(n.sourceClass):!1}renderPackageVersionList(e,n,t){let a=ne(t),s=this.renderNavGroup(t,a),o=this.renderBreadcrumb(t,a,{bareOverview:!0}),i=n.map(l=>`<a class="kan-resource-card" href="${g(this.packageHref(a,e,l))}/"><h3 class="kan-resource-card-title">${g(l)}</h3></a>`).join(`
84
+ `),c=`<header class="kan-hero">
85
+ <span class="kan-hero-eyebrow">PACKAGE</span>
86
+ <h1 class="kan-hero-title">${g(e)}</h1>
87
+ </header>
88
+ <section class="kan-resource-grid">
89
+ ${i}
90
+ </section>`;return`<!doctype html>
91
+ <html lang="en">
92
+ <head>
93
+ <meta charset="utf-8">
94
+ <meta name="viewport" content="width=device-width, initial-scale=1">
95
+ <title>${g(e)}</title>
96
+ <link rel="stylesheet" href="${g(t.name)}.css">
97
+ </head>
98
+ <body>
99
+ ${s}
100
+ ${o}
101
+ <main class="kan-main">
102
+ ${c}
103
+ </main>
104
+ </body>
105
+ </html>
106
+ `}async renderDocument(e,n){let t=await this.renderHtml(e),a=N(this.catalog,e).label,s=n?.rootIndex?"index.css":`${e.name}.css`,o=!n?.rootIndex&&this.hasSvgDerivation(e)?`<figure class="kan-figure"><img src="${g(e.name)}.svg" alt=""></figure>
107
+ `:"",i=ne(e),c=this.renderNavGroup(e,i),l=this.renderSiteFooter(i),d=n?.rootIndex?"":this.renderBreadcrumb(e,i,n);return`<!doctype html>
108
+ <html lang="en">
109
+ <head>
110
+ <meta charset="utf-8">
111
+ <meta name="viewport" content="width=device-width, initial-scale=1">
112
+ <title>${g(a)}</title>
113
+ <link rel="stylesheet" href="${g(s)}">
114
+ </head>
115
+ <body>
116
+ ${c}
117
+ ${d}
118
+ <main class="kan-main">
119
+ ${o}${t}
120
+ </main>
121
+ ${l}
122
+ </body>
123
+ </html>
124
+ `}hasSvgDerivation(e){let n=new Set,t=me(e);for(;t.length>0;){let a=t.shift(),s=Y(a.subject);if(n.has(s))continue;n.add(s);let o=Z(this.catalog,a.subject);if(o){for(let i of o.statement)if(i instanceof I&&$e(i,"kanonak.org","derivation","derivations")){for(let c of i.object??[])if(c instanceof V)for(let l of c.statement){if(!(l instanceof x)||!$e(l,"kanonak.org","derivation","format")||!(l.object instanceof j))continue;let d=l.object.subject;if(d.publisher==="kanonak.org"&&d.package_==="formats"&&d.name==="svg")return!0}}for(let i of un(o))t.push(i)}}return!1}static BAND_DISPATCH=[[yr,(e,n)=>e.renderSectionNav(n.sections)],[pa,(e,n)=>e.renderHero(n.band,n.instance,n.contextPublisher)],[ga,(e,n)=>e.renderPropertyList(n.band,n.instance,n.contextPublisher)],[ka,(e,n)=>e.renderPropertyTable(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[ma,(e,n)=>e.renderBadgeRow(n.band,n.instance,n.contextPublisher)],[ha,(e,n)=>e.renderChipRow(n.band,n.instance,n.contextPublisher)],[ba,(e,n)=>e.renderReferenceList(n.band,n.instance,n.contextPublisher)],[va,(e,n)=>e.renderReferencedBy(n.band,n.instance,n.contextPublisher)],[ya,(e,n)=>e.renderInstances(n.band,n.instance,n.contextPublisher)],[gt,(e,n)=>e.renderMarkdown(n.band,n.instance,n.contextPublisher)],[gr,(e,n)=>e.renderLinks(n.band,n.instance)],[$a,(e,n)=>e.renderNavGroup(n.instance,n.contextPublisher)],[Ka,(e,n)=>e.renderResourceGrid(n.band,n.contextPublisher,n.instance)],[Ra,(e,n)=>e.renderTimeline(n.band,n.contextPublisher)],[Ea,(e,n)=>e.renderVersionDiff(n.band,n.contextPublisher)],[La,(e,n)=>e.renderFigure(n.band,n.instance,n.contextPublisher)],[Oa,(e,n)=>e.renderDiagram(n.band,n.instance,n.contextPublisher)],[tr,(e,n)=>e.renderStatRow(n.band,n.instance)],[ar,(e,n)=>e.renderHorizon(n.band,n.instance,n.contextPublisher)],[rr,(e,n)=>e.renderPackageContents(n.instance,n.contextPublisher)],[or,(e,n)=>e.renderFeaturedResource(n.band,n.contextPublisher)],[ir,(e,n)=>e.renderPublisherPackages(n.band,n.contextPublisher)],[hr,(e,n)=>e.renderDistribution(n.band,n.instance)],[En,(e,n)=>e.renderSectionHeading(n.band)],[Sr,(e,n)=>e.renderVersionDelta(n.band,n.instance)],[wr,(e,n)=>e.renderTimePlot(n.band,n.instance,n.contextPublisher)],[_r,(e,n)=>e.renderDetails(n.band,n.instance,n.contextPublisher)],[jr,(e,n)=>e.renderEmbeddedViews(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[Kr,(e,n)=>e.renderResourceCount(n.band,n.contextPublisher)],[bt,(e,n)=>e.renderBarMeter(n.band,n.instance)]];static bandDispatchUris(){return r.BAND_DISPATCH.map(([e])=>e)}uriOf(e){let n=Nn(e);return n?{publisher:n.publisher,package_:n.package_,name:n.name,...n.version?{version:n.version}:{}}:{publisher:ne(e),package_:"",name:e.name}}async renderBand(e,n,t,a=[],s=""){let o=ze(e);if(!o)return"<!-- LookRenderer: band has no rdf:type -->";let i={band:e,instance:n,contextPublisher:t,sections:a,pathPrefix:s};for(let[c,l]of r.BAND_DISPATCH)if(M(o,c))return l(this,i);return`<!-- LookRenderer: unsupported band ${o.publisher}/${o.package_}/${o.name} -->`}async collectTrackedSeries(e,n,t,a){let{hueBy:s,lowerPath:o,upperPath:i}=a??{},c=new Map,l=e.length;for(let d=0;d<e.length;d++){let f=e[d],p=this.readPropertyValueReferences(f,n);for(let m of p){let h=Z(this.catalog,{publisher:m.subject.publisher,package_:m.subject.package_,name:m.subject.name,...m.subject.version?{version:m.subject.version}:{}});if(!h)continue;let b=m.subject.name,k=c.get(b);k||(k={key:b,label:N(this.catalog,h).label,points:new Array(l).fill(null),...o?{lower:new Array(l).fill(null)}:{},...i?{upper:new Array(l).fill(null)}:{}},c.set(b,k));let $=await this.evaluateCarrierNum(t,h);if(Number.isFinite($)&&(k.points[d]=$),o&&k.lower){let v=await this.evaluateCarrierNum(o,h);Number.isFinite(v)&&(k.lower[d]=v)}if(i&&k.upper){let v=await this.evaluateCarrierNum(i,h);Number.isFinite(v)&&(k.upper[d]=v)}if(s){let v=await this.evaluateCarrierNum(s,h);Number.isFinite(v)&&(k.hue=v)}k.lastSubject=h}}return[...c.values()]}hrefForSubject(e,n,t="="){let a=this.uriOf(e),s=a.package_,o=a.version;return this.resourceHref({publisher:ne(e),package_:s,name:e.name,...o?{version:o}:{}},n,t)}async renderVersionDiff(e,n){let t=T(e,se);if(!t)return"<!-- LookRenderer.VersionDiff: no look.source -->";let a=this.readEmbeddedCarrier(e,Qe),s=T(e,yt);if(!s||!a)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let o=T(e,on),i=this.readEmbeddedCarrier(e,Ln),c=this.findInstancesOfClass(t,this.readTransitive(e));if(c.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let l=m=>o?this.readPropertyValueText(m,o)??"":"",d=c.slice().sort((m,h)=>l(m).localeCompare(l(h))),f=await this.collectTrackedSeries(d,s,a,{hueBy:i});return f.length===0?"<!-- LookRenderer.VersionDiff: no tracked series -->":`<section class="kan-vdiff">${f.map((m,h)=>{let b=m.hue!==void 0?m.hue:Math.round(h*360/f.length),k=m.points.filter(U=>U!==null);if(k.length===0)return"";let $=k[0],v=k[k.length-1],_=v-$,K;if(Math.abs(_)>=.005){let U=_>0?"up":"down",D=_>0?"\u25B2":"\u25BC";K=`<span class="kan-vdiff-delta ${U}">${_>0?"+":""}${_.toFixed(2)} ${D}</span>`}else K='<span class="kan-vdiff-delta flat">\u2014</span>';let O=m.lastSubject&&this.isLinkable(ne(m.lastSubject),n)?`<a href="${g(this.hrefForSubject(m.lastSubject,n))}">${g(m.label)}</a>`:g(m.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${b}"><span class="kan-vdiff-label">${O}</span><span class="kan-vdiff-start">${$.toFixed(2)}</span>`+this.sparkline(m.points,b)+`<span class="kan-vdiff-end">${v.toFixed(2)}</span>`+K+"</div>"}).join("")}</section>`}sparkline(e,n){let o=`hsl(${n},65%,60%)`,i=e.filter(k=>k!==null);if(i.length===0)return'<svg class="kan-vdiff-spark" viewBox="0 0 132 30" xmlns="http://www.w3.org/2000/svg"></svg>';let c=Math.min(...i),d=Math.max(...i)-c,f=e.length,p=k=>f<=1?132/2:4+k/(f-1)*124,m=k=>d<1e-9?30/2:26-(k-c)/d*22,h=[],b=[];return e.forEach((k,$)=>{if(k===null)return;let v=p($),_=m(k);h.push(`${v.toFixed(1)},${_.toFixed(1)}`),b.push(`<circle cx="${v.toFixed(1)}" cy="${_.toFixed(1)}" r="2" fill="${o}"/>`)}),`<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="${o}" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round"/>`+b.join("")+"</svg>"}svgUrlForSubject(e,n,t="="){return`${this.hrefForSubject(e,n,t)}.svg`}renderFigure(e,n,t){let a=n,s=T(e,se);if(s){let d=Z(this.catalog,s);d&&(a=d)}let o=this.svgUrlForSubject(a,t),i=N(this.catalog,a).label,c=ee(e,es);return`<figure class="kan-figure${c==="small"||c==="medium"||c==="large"?` kan-figure-${c}`:""}"><img class="kan-figure-img" src="${g(o)}" alt="${g(i)}" loading="lazy"/></figure>`}diagramArrowSeq=0;diagramScriptEmitted=!1;async renderDiagram(e,n,t,a=0,s=new Set){let o=this.gatherValueItems(z(e,Ua)).filter(h=>h instanceof V);if(o.length===0)return"<!-- LookRenderer.Diagram: no look.facets -->";let i=[];for(let h of o){let b=T(h,Ca);if(!b){i.push("<!-- LookRenderer.Diagram: facet has no resolvable look.relation -->");continue}let k=T(h,Ia),$=this.resolveFacetNodes(n,b);if($.length===0){i.push(`<!-- LookRenderer.Diagram: relation ${b.publisher}/${b.package_}/${b.name} resolved to 0 instances -->`);continue}let v=await this.resolveFacetChannels(h,$),_=z(h,Aa),K=_ instanceof H&&_.object instanceof V?_.object:void 0,O=ee(h,Da),U=O&&Ze[O]!==void 0?Ze[O]:void 0,D=U??this.classTierSize($),L=Za[D??Ze.icon]??"icon",le=this.readEmbeddedCarrier(h,Ha),C=T(h,Ma),B=C?Z(this.catalog,C):void 0;if(B){i.push(await this.renderDiagramExpand($,B,t,a,s,le,U));continue}if(k&&M(k,Fa)){let J=T(h,Na),ce=this.facetEdgeLabel(h,J??b),ue=this.readEmbeddedCarrier(h,qa);i.push(await this.embedTiers(L,E=>J?this.renderDiagramDag($,J,v,t,E,ce,ue):this.renderDiagramConnector(n,$,v,t,E,ce,ue)));continue}if(k&&!M(k,Ta)){i.push(`<!-- LookRenderer.Diagram: unknown encode role ${k.publisher}/${k.package_}/${k.name} -->`);continue}i.push(K?`<div class="kan-dgm-tiers" data-geo="1"><div class="kan-dgm-tier" data-tier="card">${await this.renderDiagramCluster($,v,K,t,D)}</div></div>`:await this.embedTiers(L,J=>this.renderDiagramCluster($,v,void 0,t,J)))}let c=ee(e,Wa),l=ee(e,Ya),d=h=>`<div class="kan-diagram-title" style="font-weight:600;font-size:0.95rem;color:var(--kan-text);${h}">${g(c)}</div>`,f=c&&l!=="bottom"?d("margin:0 0 .5rem"):"",p=c&&l==="bottom"?d("margin:.5rem 0 0"):"",m="";return a===0&&!this.diagramScriptEmitted&&(this.diagramScriptEmitted=!0,m=`<script>${Xa}</script>`),`<section class="kan-diagram">${f}${i.join("")}${p}${m}</section>`}async embedTiers(e,n){let t=[];for(let a of Ja){let s=await n(Ze[a]);t.push(`<div class="kan-dgm-tier" data-tier="${a}"${a===e?"":" hidden"}>${s}</div>`)}return`<div class="kan-dgm-tiers">${t.join("")}</div>`}async renderDiagramExpand(e,n,t,a,s,o,i){let c=[];for(let l of e){let d=`${l.namespace??""}/${l.name}`,f=await this.diagramNodeRow(l,t,i??56,o),m=a<nr&&!s.has(d)?await this.renderDiagram(n,l,t,a+1,new Set([...s,d])):"",h=m?`<div style="margin-left:30px;border-left:2px solid var(--kan-border);padding-left:14px;margin-top:6px">${m}</div>`:"";c.push(`<div class="kan-diagram-node" style="margin:6px 0">${f}${h}</div>`)}return`<figure class="kan-diagram-figure"><div class="kan-diagram-tree">${c.join("")}</div></figure>`}async diagramNodeRow(e,n,t=56,a){let s=this.hrefForSubject(e,n),o=this.svgUrlForSubject(e,n),i=N(this.catalog,e).label,c=a?await this.evaluateCarrier(a,e):void 0,l=c!==void 0?`<span class="kan-diagram-node-note" style="display:block;font-size:0.8em;color:var(--kan-text-dim)">${g(c)}</span>`:"";return`<a href="${g(s)}" style="display:inline-flex;align-items:center;gap:10px;text-decoration:none"><img src="${g(o)}" width="${t}" height="${t}" alt="" loading="lazy"/><span><span class="kan-diagram-node-label">${g(i)}</span>${l}</span></a>`}classTierSize(e){let n;for(let t of e)for(let a of me(t)){let s=Z(this.catalog,a.subject);if(!s)continue;let o=ee(s,Ba),i=o?Ze[o]:void 0;i!==void 0&&(n=n===void 0?i:Math.max(n,i))}return n}resolveFacetNodes(e,n){let t=[];for(let a of this.readPropertyValueReferences(e,n)){let s=a.subject,o=Z(this.catalog,{publisher:s.publisher,package_:s.package_,name:s.name,...s.version?{version:s.version}:{}});o&&t.push(o)}return t}async resolveFacetChannels(e,n){let t=this.gatherValueItems(z(e,xa)).filter(s=>s instanceof V),a=[];for(let s of t){let o=this.readEmbeddedCarrier(s,Va),i=ee(s,Pa);if(!o||!i)continue;let c=[];for(let h of n){let b=await this.evaluateCarrierNum(o,h);c.push(Number.isFinite(b)?b:NaN)}let l=c.filter(h=>Number.isFinite(h)),d=l.length?Math.min(...l):0,p=(l.length?Math.max(...l):0)-d,m=c.map(h=>Number.isFinite(h)&&p>0?(h-d)/p:.5);a.push({to:i,norm:m})}return a}facetEdgeLabel(e,n){let t=ee(e,za);if(t)return t;if(cs(e,Ga)&&n){let s=Z(this.catalog,n);if(s)return N(this.catalog,s).label}}async edgeText(e,n,t){let a=t&&n?await this.evaluateCarrier(t,n):void 0,s=[e,a].filter(o=>!!o);return s.length?s.join(" "):void 0}edgeLabelEl(e,n,t){return`<text x="${e.toFixed(1)}" y="${n.toFixed(1)}" text-anchor="middle" class="kan-diagram-edge-label" style="font-size:11px;paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px;fill:var(--kan-text-dim)">${g(t)}</text>`}async renderDiagramCluster(e,n,t,a,s){let o=s??132,i=18,c=18,l=n.find(b=>b.to==="opacity");if(t){let b=[];for(let k=0;k<e.length;k++){let $=e[k],v=await this.renderBand(t,$,a),_=this.hrefForSubject($,a),K=N(this.catalog,$).label,O=l?`opacity:${(.4+l.norm[k]*.6).toFixed(2)};`:"";b.push(`<a class="kan-diagram-mark" href="${g(_)}" style="display:block;text-decoration:none;${O}">${v}<span class="kan-diagram-mark-label">${g(K)}</span></a>`)}return`<figure class="kan-diagram-figure"><div class="kan-diagram-marks" style="display:flex;flex-wrap:wrap;gap:18px;align-items:flex-start">${b.join("")}</div></figure>`}let d=Math.min(e.length,4),f=Math.ceil(e.length/d),p=c*2+d*o+(d-1)*i,m=c*2+f*o+(f-1)*i,h=e.map((b,k)=>{let $=k%d,v=Math.floor(k/d),_=c+$*(o+i),K=c+v*(o+i),O=l?.4+l.norm[k]*.6:1;return this.diagramTile(b,_,K,o,a,O)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${p} ${m}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${h}</svg></figure>`}async renderDiagramConnector(e,n,t,a,s,o,i){let c=s??120,l=24,d=130,f=18,p=t.find(C=>C.to==="thickness"),m=t.find(C=>C.to==="opacity"),h=n.length,b=h*c+(h-1)*l,k=f*2+b,$=f*2+c+d+c,v=f,_=f+(b-c)/2,K=f+c+d,O=`kan-arrow-${this.diagramArrowSeq++}`,U=[],D=[],L=[];for(let C=0;C<n.length;C++){let B=n[C],J=f+C*(c+l),ce=v+c,ue=_+c/2,E=K-_e,Q=J+c/2,F=(ce+K)/2,S=p?1.5+p.norm[C]*5.5:2,A=m?.4+m.norm[C]*.6:1,G=m?` stroke-opacity="${A.toFixed(2)}"`:"";U.push(`<path d="M${ce.toFixed(1)},${ue.toFixed(1)} C${F.toFixed(1)},${ue.toFixed(1)} ${F.toFixed(1)},${Q.toFixed(1)} ${E.toFixed(1)},${Q.toFixed(1)}" class="kan-diagram-edge" fill="none" stroke="var(--kan-border)" stroke-width="${S.toFixed(1)}"${G} marker-end="url(#${O})"/>`);let R=await this.edgeText(o,B,i);R&&D.push(this.edgeLabelEl((ce+K)/2,(ue+Q)/2-5,R)),L.push(this.diagramTile(B,K,J,c,a,m?A:1))}let le=this.diagramTile(e,v,_,c,a);return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${$.toFixed(0)} ${k.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(O,"var(--kan-border)")}${U.join("")}${D.join("")}${le}${L.join("")}</svg></figure>`}arrowMarkerDef(e,n){return`<defs><marker id="${e}" viewBox="0 0 ${_e} ${_e}" refX="0" refY="${(_e/2).toFixed(1)}" markerWidth="${_e}" markerHeight="${_e}" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,1 L${_e},${(_e/2).toFixed(1)} L0,${_e-1}" fill="${n}"/></marker></defs>`}async renderDiagramDag(e,n,t,a,s,o,i){let c=s??110,l=110,d=22,f=18,p=new Map(e.map((S,A)=>[S.name,A])),m=new Set(e.map(S=>S.name)),h=new Map(e.map(S=>[S.name,[]])),b=new Map(e.map(S=>[S.name,[]]));for(let S of e)for(let A of this.readPropertyValueReferences(S,n)){let G=A.subject.name;G!==S.name&&m.has(G)&&(h.get(S.name).push(G),b.get(G).push(S.name))}let k=new Map,$=new Set,v=S=>{let A=k.get(S);if(A!==void 0)return A;if($.has(S))return 0;$.add(S);let G=0;for(let R of b.get(S)??[])G=Math.max(G,v(R)+1);return $.delete(S),k.set(S,G),G};for(let S of e)v(S.name);let _=Math.min(...k.values());if(_>0)for(let S of[...k.keys()])k.set(S,k.get(S)-_);let K=Math.max(0,...k.values()),O=Array.from({length:K+1},()=>[]);for(let S of e)O[k.get(S.name)].push(S);let U=Math.max(1,...O.map(S=>S.length)),D=!1;for(let[S,A]of h)for(let G of A)k.get(G)<=k.get(S)&&(D=!0);let L=D?84:0,le=U*c+(U-1)*d,C=f*2+(K+1)*c+K*l,B=f*2+L+le,J=new Map;O.forEach((S,A)=>{let G=S.length*c+(S.length-1)*d,R=f+L+(le-G)/2;S.forEach((P,ge)=>J.set(P.name,{x:f+A*(c+l),y:R+ge*(c+d)}))});let ce=t.find(S=>S.to==="thickness"),ue=`kan-arrow-${this.diagramArrowSeq++}`,E=[],Q=[];for(let[S,A]of h){let G=J.get(S);for(let R of A){let P=J.get(R),ge=P.x>=G.x,de=ce?1.5+ce.norm[p.get(S)]*4.5:2,ke,re,te;if(ge){let oe=G.x+c,Te=G.y+c/2,Le=P.x-_e,Ge=P.y+c/2,Ae=(oe+Le)/2;ke=`M${oe.toFixed(1)},${Te.toFixed(1)} C${Ae.toFixed(1)},${Te.toFixed(1)} ${Ae.toFixed(1)},${Ge.toFixed(1)} ${Le.toFixed(1)},${Ge.toFixed(1)}`,re=(oe+Le)/2,te=(Te+Ge)/2-5}else{let oe=G.x+c/2,Te=G.y,Le=P.x+c/2,Ge=P.y-_e,Ae=f+L*.2;ke=`M${oe.toFixed(1)},${Te.toFixed(1)} C${oe.toFixed(1)},${Ae.toFixed(1)} ${Le.toFixed(1)},${Ae.toFixed(1)} ${Le.toFixed(1)},${Ge.toFixed(1)}`,re=(oe+Le)/2,te=Ae+4}let Ee=ge?"":' stroke-dasharray="6 4"';E.push(`<path d="${ke}" class="kan-diagram-edge" fill="none" stroke="var(--kan-accent)" stroke-width="${de.toFixed(1)}" stroke-opacity="0.75"${Ee} marker-end="url(#${ue})"/>`);let Se=await this.edgeText(o,e[p.get(S)],i);Se&&Q.push(this.edgeLabelEl(re,te,Se))}}let F=e.map(S=>{let A=J.get(S.name);return this.diagramTile(S,A.x,A.y,c,a)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${C.toFixed(0)} ${B.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(ue,"var(--kan-accent)")}${E.join("")}${Q.join("")}${F}</svg></figure>`}diagramTile(e,n,t,a,s,o=1){let i=this.hrefForSubject(e,s),c=this.svgUrlForSubject(e,s),l=N(this.catalog,e).label,d=o<1?` opacity="${o.toFixed(2)}"`:"";return`<a href="${g(i)}"><image href="${g(c)}" x="${n}" y="${t}" width="${a}" height="${a}"${d}><title>${g(l)}</title></image></a>`}async renderStatRow(e,n){let t=z(e,Ur),a=this.gatherValueItems(t).filter(o=>o instanceof V);if(a.length===0)return"<!-- LookRenderer.StatRow: no look.stats -->";let s=[];for(let o of a){let i=this.readEmbeddedCarrier(o,Cr);if(!i)continue;let c=await this.evaluateCarrier(i,n);if(c===void 0)continue;let l=ee(o,Ir)??"";s.push('<div class="kan-stat">'+(l?`<span class="kan-stat-label">${g(l)}</span>`:"")+`<span class="kan-stat-val">${g(c)}</span></div>`)}return s.length===0?"":`<div class="kan-stat-row">${s.join("")}</div>`}barMarkup(e){let n=Number(e);if(!Number.isFinite(n))return g(e);let t=Math.max(0,Math.min(1,n))*100;return`<span class="kan-bar-meter" role="img" aria-label="${g(e)}"><span class="kan-bar-fill" style="width:${t.toFixed(1)}%"></span></span><span class="kan-bar-value">${g(e)}</span>`}async renderBarMeter(e,n){let t=this.readEmbeddedCarrier(e,Qe);if(!t)return"<!-- LookRenderer.BarMeter: no look.metricPath -->";let a=await this.evaluateCarrier(t,n);return a===void 0?"":`<div class="kan-bar-row">${this.barMarkup(a)}</div>`}renderResourceCount(e,n){let t=z(e,Rr),a=this.gatherValueItems(t).filter(i=>i instanceof V);if(a.length===0)return"<!-- LookRenderer.ResourceCount: no look.counts -->";let s=this.readTransitive(e),o=[];for(let i of a){let c=T(i,se);if(!c)continue;let l=Z(this.catalog,c);if(!l)continue;let d=N(this.catalog,l).label,f=this.findInstancesOfClass(c,s).length,p=this.hrefForSubject(l,n);o.push(`<a class="kan-count" href="${g(p)}"><span class="kan-count-val">${f}</span><span class="kan-count-label">${g(d)}</span></a>`)}return o.length===0?"":`<div class="kan-count-row">${o.join("")}</div>`}renderHorizon(e,n,t){let a=T(e,se);if(!a)return"<!-- LookRenderer.Horizon: no look.source -->";let s=this.gatherValueItems(z(n,a)).filter(i=>i instanceof V);return s.length===0?"":`<section class="kan-horizon">${s.map(i=>this.renderConditionNode(i,t,0)).join("")}</section>`}renderConditionNode(e,n,t){let a=ze(e),s=a?this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name:"Condition",o=[],i=[];for(let p of e.statement){let m=p.predicate?.subject;if(!m||M(m,Ce))continue;let h=this.readLabelForUri({publisher:m.publisher,package_:m.package_,name:m.name})??m.name;if(p instanceof W||p instanceof ie||p instanceof ae)o.push(`<div class="kan-cond-field"><span class="kan-cond-key">${g(h)}</span><span class="kan-cond-v">${g(String(p.object))}</span></div>`);else if(p instanceof x&&p.object instanceof j){let b=p.object.subject,k=this.readLabelForUri({publisher:b.publisher,package_:b.package_,name:b.name})??b.name;o.push(`<div class="kan-cond-field"><span class="kan-cond-key">${g(h)}</span><span class="kan-cond-v">${g(k)}</span></div>`)}else if(p instanceof H)i.push(this.renderConditionNode(p.object,n,t+1));else if(p instanceof I)for(let b of p.object??[])b instanceof V&&i.push(this.renderConditionNode(b,n,t+1))}let c=o.length?`<div class="kan-cond-fields">${o.join("")}</div>`:"",l=i.length?`<div class="kan-cond-children">${i.join("")}</div>`:"",d=i.length>0,f=d?`<span class="kan-cond-op">${g(s)}</span>`:`<div class="kan-cond-type">${g(s)}</div>`;return`<div class="kan-cond ${d?"kan-cond-branch":"kan-cond-leaf"}">${f}${c}${l}</div>`}renderSectionHeading(e){let n=e,t=ee(n,mt);if(!t)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let a=ee(n,$r);return`<div class="kan-section" id="${Ot(t)}"><h2 class="kan-section-title">${g(t)}</h2>`+(a?`<p class="kan-section-note">${g(a)}</p>`:"")+"</div>"}renderSectionNav(e){return e.length===0?"<!-- LookRenderer.SectionNav: no section headings in this view -->":`<nav class="kan-section-nav" aria-label="On this page">${e.map(t=>`<a class="kan-section-nav-link" href="#${g(t.slug)}">${g(t.label)}</a>`).join("")}</nav>`}async renderVersionDelta(e,n){let t=this.readEmbeddedCarrier(e,Qe);if(!t)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let a=async C=>{let B=await this.evaluateCarrierNum(t,C);return Number.isFinite(B)?B:void 0},s=await a(n);if(s===void 0)return"";let o=C=>this.uriOf(C).version??{major:0,minor:0,patch:0},i=(C,B)=>C.major-B.major||C.minor-B.minor||C.patch-B.patch,c={publisher:ne(n),package_:this.uriOf(n).package_,name:n.name},l=o(n),d,f;for(let C of he(this.catalog,c)){let B=o(C);i(B,l)<0&&(!f||i(B,f)>0)&&(d=C,f=B)}if(!d||!f)return'<div class="kan-delta kan-delta-first">First tracked in this version</div>';let p=await a(d);if(p===void 0)return"";let m=s-p,h=Math.abs(m)<.005?"flat":m>0?"up":"down",b=h==="up"?"\u25B2":h==="down"?"\u25BC":"\u2014",k=h==="up"?"#34d399":h==="down"?"#f87171":"var(--kan-text-faint)",$=`${f.major}.${f.minor}.${f.patch}`,v=320,_=46,K=14,O=30,U=C=>K+Math.min(1,Math.max(0,C))*(v-2*K),D=U(p),L=U(s),le=`<svg class="kan-delta-track" viewBox="0 0 ${v} ${_}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${K}" y1="${O}" x2="${v-K}" y2="${O}" class="kan-delta-base"/><line x1="${D.toFixed(1)}" y1="${O}" x2="${L.toFixed(1)}" y2="${O}" stroke="${k}" stroke-width="3"/><circle cx="${D.toFixed(1)}" cy="${O}" r="4" class="kan-delta-prev"/><circle cx="${L.toFixed(1)}" cy="${O}" r="5.5" fill="${k}"/><text x="${D.toFixed(1)}" y="${O-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${p.toFixed(2)}</text><text x="${L.toFixed(1)}" y="${O+17}" text-anchor="middle" class="kan-delta-tick">${s.toFixed(2)}</text></svg>`;return`<div class="kan-delta"><div class="kan-delta-head"><span class="kan-delta-vs">vs ${g($)}</span><span class="kan-delta-badge ${h}">${m>0?"+":""}${m.toFixed(2)} ${b}</span></div>`+le+"</div>"}async renderTimePlot(e,n,t){let a=T(e,se),s=T(e,on);if(!a||!s)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let o=this.readEmbeddedCarrier(e,Or),i=this.readEmbeddedCarrier(e,ht),c=[];for(let E of this.readPropertyValueReferences(n,a)){let Q=Z(this.catalog,{publisher:E.subject.publisher,package_:E.subject.package_,name:E.subject.name,...E.subject.version?{version:E.subject.version}:{}});if(!Q)continue;let F=this.readPropertyValueText(Q,s)??"",S=Date.parse(F);if(!Number.isFinite(S))continue;let A=o?await this.evaluateCarrier(o,Q)??"":"",G=(i?await this.evaluateCarrier(i,Q):void 0)??N(this.catalog,Q).label;c.push({t:S,dateStr:F,lane:A,label:G,href:this.hrefForSubject(Q,t),linkable:this.isLinkable(ne(Q),t)})}if(c.length===0)return"<!-- LookRenderer.TimePlot: no dated points -->";let l=[];for(let E of c)l.includes(E.lane)||l.push(E.lane);let d=Math.min(...c.map(E=>E.t)),f=Math.max(...c.map(E=>E.t));f===d&&(f=d+1);let p=l.some(E=>E),m=720,h=p?96:16,b=18,k=12,$=24,v=36,_=k+l.length*v+$,K=h,O=m-b,U=O-K,D=E=>K+(E-d)/(f-d)*U,L=E=>k+E*v+v/2,le=E=>Math.round(E*360/Math.max(1,l.length)),C=[];l.forEach((E,Q)=>{let F=L(Q);C.push(`<line x1="${K}" y1="${F.toFixed(1)}" x2="${O}" y2="${F.toFixed(1)}" class="kan-plot-guide"/>`),E&&C.push(`<text x="${(h-8).toFixed(1)}" y="${(F+4).toFixed(1)}" text-anchor="end" class="kan-plot-lane">${Re(E)}</text>`)});let B={},J=[];for(let E of c){let Q=l.indexOf(E.lane),S=((B[E.lane]=(B[E.lane]??0)+1)%3-1)*7,A=D(E.t),G=L(Q)+S,R=`${dn(E.dateStr)} \xB7 ${E.label}`,P=`<circle cx="${A.toFixed(1)}" cy="${G.toFixed(1)}" r="5" fill="hsl(${le(Q)},65%,60%)" class="kan-plot-pt"><title>${Re(R)}</title></circle>`;J.push(E.linkable?`<a href="${g(E.href)}" class="kan-plot-link">${P}</a>`:P)}let ce=`<text x="${K}" y="${(_-6).toFixed(1)}" text-anchor="start" class="kan-plot-axis">${Re(dn(new Date(d).toISOString()))}</text><text x="${O}" y="${(_-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${Re(dn(new Date(f).toISOString()))}</text>`;return`<section class="kan-plot">${`<svg class="kan-plot-svg" viewBox="0 0 ${m} ${_}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+C.join("")+J.join("")+ce+"</svg>"}</section>`}renderDetails(e,n,t){let a=Cn(e,Er),s=this.detailRows(n,t,a);return s?`<dl class="kan-details">${s}</dl>`:"<!-- LookRenderer.Details: no properties -->"}detailRows(e,n,t){let a=[];for(let s of e.statement){let o=s.predicate?.subject;if(!o||this.isMetaPredicate(o)||t.some(l=>M(l,o)))continue;let i=this.readLabelForUri({publisher:o.publisher,package_:o.package_,name:o.name})??o.name,c=this.detailValue(s,n,t);c&&a.push(`<dt class="kan-details-key">${g(i)}</dt><dd class="kan-details-val">${c}</dd>`)}return a.join("")}detailValue(e,n,t){if(e instanceof W)return Ct(e.object);if(e instanceof ie||e instanceof ae)return g(String(e.object));if(e instanceof x&&e.object instanceof j)return this.detailReferenceLink(e.object,n);if(e instanceof H)return this.detailEmbedded(e.object,n,t);if(e instanceof I){let a=e.object??[];return a.length>0&&a.every(s=>s instanceof V)?a.map(s=>this.detailEmbedded(s,n,t)).join(""):a.map(s=>s instanceof j?this.detailReferenceLink(s,n):s instanceof V?this.detailEmbedded(s,n,t):g(String(s))).filter(s=>s).join(", ")}return""}detailReferenceLink(e,n){let t=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name;if(!this.isLinkable(e.subject.publisher,n))return`<span class="kan-link-plain">${g(t)}</span>`;let a=this.urlForReference(e,void 0,n);return`<img class="kan-md-chip" src="${g(`${a}.svg`)}" alt="" loading="lazy"><a class="kan-link" href="${g(a)}">${g(t)}</a>`}detailEmbedded(e,n,t){let a=ze(e),s=a?this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name:"",o=this.detailRows(e,n,t);return'<div class="kan-details-embed">'+(s?`<span class="kan-details-type">${g(s)}</span>`:"")+(o?`<dl class="kan-details">${o}</dl>`:"")+"</div>"}rangeTypeRefs(e){let n=Z(this.catalog,e);if(!n)return[];let t=z(n,ua);return t instanceof x&&t.object instanceof j?[t.object]:[]}async renderEmbeddedViews(e,n,t,a=""){let s=T(e,se);if(!s)return"<!-- LookRenderer: EmbeddedViews missing look.source -->";let o=this.gatherValueItems(z(n,s)).filter(m=>m instanceof V);if(o.length===0)return"";let i=a?`${a}.${s.name}`:s.name,c=z(e,as),l=c instanceof ae?c.object===!0:c instanceof W&&c.object==="true",d=[],f=[];for(let m of o){let h=m,b=m.name?`${i}.${m.name}`:"";if(l&&b){let U=N(this.catalog,h).label||m.name||b;d.push(`<a class="kan-section-nav-link" href="#${g(b)}">${g(U)}</a>`)}let k=me(h),$=k.length>0?k:this.rangeTypeRefs(s),v=cn(h)?this.findCascadedLook(h):this.lookFromTypeRefs($),_="";if(v){let U=[];for(let D of Un(v.declaration))U.push(await this.renderBand(D,h,t,[],b));_=U.join(`
125
+ `)}else{let U=this.detailRows(m,t,[]);_=U?`<dl class="kan-details">${U}</dl>`:""}let K=b?` id="${g(b)}"`:"",O=b?this.anchorLink(b):"";f.push(`<section class="kan-embedded-view"${K}>${O}${_}</section>`)}return`<div class="kan-embedded-views">${d.length>0?`<nav class="kan-section-nav" aria-label="On this page">${d.join("")}</nav>
126
+ `:""}${f.join(`
127
+ `)}</div>`}anchorLink(e){return`<a class="kan-anchor" href="#${g(e)}" title="${g(e)}" aria-label="Link to this resource">#</a>`}isMetaPredicate(e){return M(e,Ce)||M(e,jn)||M(e,pt)||M(e,fn)||M(e,pn)||M(e,Lr)||M(e,wt)||M(e,mr)}renderPackageContents(e,n){let t=e.namespace||"";if(!t)return"";let a=this.catalog.filter(o=>o instanceof q&&o.namespace===t&&o.name!==e.name);return a.length===0?`<!-- LookRenderer.PackageContents: no members in ${t} -->`:(a.sort((o,i)=>{let c=N(this.catalog,o).label,l=N(this.catalog,i).label;return c.localeCompare(l)}),`<section class="kan-pkg-grid">${a.map(o=>{let i=N(this.catalog,o),c=i.label,l=i.summary,d=l?In(l,160):"",f=this.hrefForSubject(o,n),p=this.svgUrlForSubject(o,n);return`<a class="kan-pkg-card" href="${g(f)}"><img class="kan-pkg-card-svg" src="${g(p)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${g(c)}</span>`+(d?`<span class="kan-pkg-card-comment">${g(d)}</span>`:"")+"</span></a>"}).join("")}</section>`)}renderReferencedBy(e,n,t){let a=T(e,Qr),s={publisher:ne(n),package_:this.uriOf(n).package_,name:n.name},o=Y(s),i=p=>this.uriOf(p).version??{major:0,minor:0,patch:0},c=(p,m)=>p.major-m.major||p.minor-m.minor||p.patch-m.patch,l=new Map;for(let p of this.catalog){if(!(p instanceof q))continue;let m=Y({publisher:ne(p),package_:this.uriOf(p).package_,name:p.name});if(m!==o)for(let h of p.statement){let b=h.predicate?.subject;if(!b||M(b,Ce)||a&&Y(b)!==Y(a))continue;let k=[];if(h instanceof x&&h.object instanceof j)k.push(h.object);else if(h instanceof I)for(let K of h.object??[])K instanceof j&&k.push(K);if(!k.some(K=>Y(K.subject)===o))continue;let $=Y(b),v=l.get($);v||(v={label:this.readLabelForUri(b)??b.name,best:new Map},l.set($,v));let _=v.best.get(m);(!_||c(i(p),i(_))>0)&&v.best.set(m,p)}}return l.size===0?"<!-- LookRenderer.ReferencedBy: no incoming references -->":`<div class="kan-section"><h2 class="kan-section-title">Referenced by</h2></div>${[...l.values()].sort((p,m)=>p.label.localeCompare(m.label)).map(p=>{let h=[...p.best.values()].sort((b,k)=>N(this.catalog,b).label.localeCompare(N(this.catalog,k).label)).map(b=>this.resourceCard(b,t,n.namespace??void 0)).join("");return`<div class="kan-rel-group"><h3 class="kan-rel-prop"><span class="kan-rel-dir" title="incoming \u2014 references this resource">\u2190</span> ${g(p.label)}</h3><section class="kan-pkg-grid">${h}</section></div>`}).join("")}`}resourceCard(e,n,t){let a=N(this.catalog,e),s=a.summary?In(a.summary,160):"",o=me(e).map($=>this.readLabelForUri({publisher:$.subject.publisher,package_:$.subject.package_,name:$.subject.name})??$.subject.name),c='<span class="kan-pkg-card-body">'+(o.length>0?`<span class="kan-card-types">${o.map($=>`<span class="kan-card-type">${g($)}</span>`).join("")}</span>`:"")+`<span class="kan-pkg-card-title">${g(a.label)}</span>`+(s?`<span class="kan-pkg-card-comment">${g(s)}</span>`:"")+"</span>",l=this.isLinkable(ne(e),n),d=l?`<a class="kan-pkg-card-link" href="${g(this.hrefForSubject(e,n))}"><img class="kan-pkg-card-svg" src="${g(this.svgUrlForSubject(e,n))}" alt="" loading="lazy"/>`+c+"</a>":`<span class="kan-pkg-card-link">${c}</span>`,f=e.namespace||"",p=this.uriOf(e),m=p.publisher,h=p.package_,b=p.version?nn(p.version):"",k="";if(h&&f!==t){let $=b?`<span class="kan-card-at">@</span><span class="kan-card-ver">${g(b)}</span>`:"";if(l){let v=`<span class="kan-card-pkg">${g(h)}</span>${$}`;k=`<a class="kan-pkg-card-foot" href="${g(this.packageHref(m,h,b||void 0))}" title="${g(b?`${h}@${b}`:h)}">${v}</a>`}else{let v=`<span class="kan-card-pub">${g(m)}/</span><span class="kan-card-pkg">${g(h)}</span>${$}`;k=`<span class="kan-pkg-card-foot" title="${g(b?`${m}/${h}@${b}`:`${m}/${h}`)}">${v}</span>`}}return`<div class="kan-pkg-card kan-pkg-card--foot">${d}${k}</div>`}renderInstances(e,n,t){let a={publisher:ne(n),package_:this.uriOf(n).package_,name:n.name},s=this.readTransitive(e),o=s?this.descendantTypeKeys(a):new Set([Y(a)]),i=k=>this.uriOf(k).version??{major:0,minor:0,patch:0},c=(k,$)=>k.major-$.major||k.minor-$.minor||k.patch-$.patch,l=new Map;for(let k of this.catalog){if(!(k instanceof q)||!me(k).some(K=>o.has(Y(K.subject))))continue;let v=Y({publisher:ne(k),package_:this.uriOf(k).package_,name:k.name}),_=l.get(v);(!_||c(i(k),i(_))>0)&&l.set(v,k)}let d=[...l.values()];if(d.length===0)return"<!-- LookRenderer.Instances: none -->";d.sort((k,$)=>N(this.catalog,k).label.localeCompare(N(this.catalog,$).label));let f=48,p=d.slice(0,f),m=p.map(k=>this.resourceCard(k,t,n.namespace??void 0)),h=d.length>f?` <span class="kan-count">${p.length} of ${d.length}</span>`:` <span class="kan-count">${d.length}</span>`;return`<div class="kan-section"><h2 class="kan-section-title">${s?"Instances (including subtypes)":"Instances"}${h}</h2></div><section class="kan-pkg-grid">${m.join("")}</section>`}descendantTypeKeys(e){let n=Y(e),t=new Set([n]),a=new Set;for(let s of this.catalog)if(s instanceof q)for(let o of me(s)){let i=o.subject,c=Y(i);a.has(c)||(a.add(c),Dn(this.catalog,i).some(l=>Y(l)===n)&&t.add(c))}return t}referencesTarget(e,n,t){for(let a of e.statement){let s=a.predicate?.subject;if(s&&M(s,Ce)||t&&!(s&&Y(s)===Y(t)))continue;let o=[];if(a instanceof x&&a.object instanceof j)o.push(a.object);else if(a instanceof I)for(let i of a.object??[])i instanceof j&&o.push(i);for(let i of o)if(Y(i.subject)===n)return!0}return!1}async renderFeaturedResource(e,n){let t=T(e,se);if(!t)return"<!-- LookRenderer.FeaturedResource: no look.source -->";let a=he(this.catalog,t),s=l=>this.uriOf(l).version??{major:0,minor:0,patch:0},o=a.length>0?a.slice().sort((l,d)=>{let f=s(l),p=s(d);return p.major-f.major||p.minor-f.minor||p.patch-f.patch})[0]:Z(this.catalog,t);if(!o)return`<!-- LookRenderer.FeaturedResource: ${t.publisher}/${t.package_}/${t.name} not found -->`;let i=await this.renderHtml(o),c=this.hrefForSubject(o,n);return`<section class="kan-featured"><a class="kan-featured-permalink" href="${g(c)}">View full resource \u2192</a>`+i+"</section>"}async renderDistribution(e,n){let t=async F=>{let S=this.readEmbeddedCarrier(e,F);if(!S)return;let A=await this.evaluateCarrierNum(S,n);return Number.isFinite(A)?A:void 0},a=await t(br),s=await t(vr);if(a===void 0||s===void 0||a<=0||s<=0)return"<!-- LookRenderer.Distribution: needs resolvable alphaPath + betaPath (> 0) -->";let o=await t(Qe)??a/(a+s),i=await t($t),c=await t(St),l=await t(Ln),d=l!==void 0?`hsl(${l},65%,60%)`:"var(--kan-accent)",f=F=>Number.isInteger(F)?String(F):F.toFixed(1),p=280,m=168,h={top:14,right:14,bottom:24,left:14},b=p-h.left-h.right,k=m-h.top-h.bottom,$=120,v=1e-4,_=[],K=[],O=0;for(let F=0;F<=$;F++){let S=F/$;S<v?S=v:S>1-v&&(S=1-v);let A=Math.exp((a-1)*Math.log(S)+(s-1)*Math.log(1-S));_.push(S),K.push(A),A>O&&(O=A)}let U=F=>h.left+Math.min(1,Math.max(0,F))*b,D=F=>h.top+(1-(O>0?F/O:0))*k,L=h.top+k,le=_.map((F,S)=>`${U(F).toFixed(1)},${D(K[S]).toFixed(1)}`),C=`M${U(0).toFixed(1)},${L.toFixed(1)} L${le.join(" L")} L${U(1).toFixed(1)},${L.toFixed(1)} Z`,B="";if(i!==void 0&&c!==void 0&&c>i){let F=[`${U(i).toFixed(1)},${L.toFixed(1)}`];for(let S=0;S<=$;S++)_[S]>=i&&_[S]<=c&&F.push(`${U(_[S]).toFixed(1)},${D(K[S]).toFixed(1)}`);F.push(`${U(c).toFixed(1)},${L.toFixed(1)}`),B=`<path d="M${F.join(" L")} Z" fill="${d}" fill-opacity="0.3"/>`}let J=U(o),ce=`<line x1="${J.toFixed(1)}" y1="${h.top.toFixed(1)}" x2="${J.toFixed(1)}" y2="${L.toFixed(1)}" stroke="${d}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${J.toFixed(1)}" y="${(h.top-3).toFixed(1)}" text-anchor="middle" class="kan-dist-mean">\u03BC ${o.toFixed(2)}</text>`,ue=`<text x="${U(0).toFixed(1)}" y="${(L+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${U(1).toFixed(1)}" y="${(L+15).toFixed(1)}" text-anchor="end" class="kan-dist-axis">1</text>`,E=`<svg class="kan-dist-svg" viewBox="0 0 ${p} ${m}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${h.left}" y1="${L.toFixed(1)}" x2="${(p-h.right).toFixed(1)}" y2="${L.toFixed(1)}" class="kan-dist-base"/><path d="${C}" fill="${d}" fill-opacity="0.12"/>`+B+`<polyline points="${le.join(" ")}" fill="none" stroke="${d}" stroke-width="2"/>`+ce+ue+"</svg>",Q=i!==void 0&&c!==void 0?` \xB7 95% CI [${i.toFixed(2)}\u2013${c.toFixed(2)}]`:"";return`<figure class="kan-dist">${E}<figcaption class="kan-dist-caption">Beta(${f(a)}, ${f(s)})${Q}</figcaption></figure>`}renderPublisherPackages(e,n){let t=new Map;for(let c of this.catalog){if(!(c instanceof q)||ne(c)!==n)continue;let l=this.uriOf(c).package_;if(!l||c.name!==l)continue;let d=t.get(l),f=this.uriOf(c).version,p=d?this.uriOf(d).version:void 0;(!d||f&&(!p||en(f,p)>0))&&t.set(l,c)}let a,s=z(e,cr),o=s instanceof I?s.object??[]:s instanceof x&&s.object instanceof j?[s.object]:[];if(o.length>0){a=[];for(let c of o){if(!(c instanceof j))continue;let l=c.subject.package_,d=t.get(l);d&&a.push([l,d])}}else a=[...t.entries()].sort((c,l)=>c[0].localeCompare(l[0]));return a.length===0?"":`<section class="kan-pkg-grid">${a.map(([c,l])=>{let d=N(this.catalog,l),f=d.label,p=d.summary,m=p?In(p,160):"",h=this.svgUrlForSubject(l,n);return`<a class="kan-pkg-card" href="${g(this.packageHref(n,c))}"><img class="kan-pkg-card-svg" src="${g(h)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${g(f)}</span>`+(m?`<span class="kan-pkg-card-comment">${g(m)}</span>`:"")+"</span></a>"}).join("")}</section>`}async renderTimeline(e,n){let t=T(e,se);if(!t)return"<!-- LookRenderer.Timeline: no look.source -->";let a=T(e,on),s=this.findInstancesOfClass(t,this.readTransitive(e));if(s.length===0)return"<!-- LookRenderer.Timeline: no instances -->";let o=f=>a?this.readPropertyValueText(f,a)??"":"",i=s.slice().sort((f,p)=>o(f).localeCompare(o(p))),c=T(e,yt),l=this.readEmbeddedCarrier(e,Qe);return c&&l?this.renderTrajectoryChart(i,c,l,e,n,o):`<section class="kan-timeline"><ol>
128
+ ${i.map(f=>{let p=this.uriOf(f),m=p.package_,h=p.version,b=this.resourceHref({publisher:ne(f),package_:m,name:f.name,...h?{version:h}:{}},n),k=o(f),$=k?`<span class="kan-timeline-date">${g(k)}</span>`:"",v=h?nn(h):f.name;return`<li class="kan-timeline-node"><a href="${g(b)}"><span class="kan-timeline-key">${g(v)}</span>${$}</a></li>`}).join(`
129
+ `)}
130
+ </ol></section>`}async renderTrajectoryChart(e,n,t,a,s,o){let i=a,c=this.readEmbeddedCarrier(a,Ln),l=this.readEmbeddedCarrier(a,$t),d=this.readEmbeddedCarrier(a,St),f=ee(i,zr),p=Et(i,Br),m=Et(i,Hr),h=e.length,b=await this.collectTrackedSeries(e,n,t,{hueBy:c,lowerPath:l,upperPath:d});if(b.length===0)return"<!-- LookRenderer.Timeline: no tracked series -->";let k=[];for(let R of b){for(let P of R.points)P!==null&&k.push(P);for(let P of R.lower??[])P!==null&&k.push(P);for(let P of R.upper??[])P!==null&&k.push(P)}if(k.length===0)return"<!-- LookRenderer.Timeline: no metric values -->";let $=Math.min(...k),v=Math.max(...k);v-$<1e-9&&($-=.5,v+=.5);let _=(v-$)*.08,K=p!==void 0?p:$-_,O=m!==void 0?m:v+_;O-K<1e-9&&(O=K+1);let U=1e3,D=440,L={top:28,right:24,bottom:56,left:52},le=U-L.left-L.right,C=D-L.top-L.bottom,B=R=>h<=1?L.left+le/2:L.left+R/(h-1)*le,J=R=>L.top+(1-(R-K)/(O-K))*C,ce=(R,P)=>R.hue!==void 0?R.hue:Math.round(P*360/b.length),ue=[];for(let R=0;R<5;R++){let P=K+R*(O-K)/4,ge=J(P);ue.push(`<line x1="${L.left}" y1="${ge.toFixed(1)}" x2="${(U-L.right).toFixed(1)}" y2="${ge.toFixed(1)}" class="kan-fan-grid"/>`),ue.push(`<text x="${(L.left-8).toFixed(1)}" y="${(ge+4).toFixed(1)}" class="kan-fan-axis" text-anchor="end">${P.toFixed(2)}</text>`)}let E=[];e.forEach((R,P)=>{let ge=this.hrefForSubject(R,s),de=this.uriOf(R).version,ke=de?nn(de):"",re=B(P),te=dn(o(R));E.push(`<a href="${g(ge)}" class="kan-fan-xtick"><line x1="${re.toFixed(1)}" y1="${L.top}" x2="${re.toFixed(1)}" y2="${(D-L.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${re.toFixed(1)}" y="${(D-L.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${Re(ke||R.name)}</text>`+(te?`<text x="${re.toFixed(1)}" y="${(D-L.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${Re(te)}</text>`:"")+"</a>")});let Q=[];b.forEach((R,P)=>{if(!R.lower||!R.upper)return;let ge=ce(R,P),de=[],ke=[];for(let te=0;te<h;te++){let Ee=R.upper[te],Se=R.lower[te];Ee==null||Se===null||Se===void 0||(de.push(`${B(te).toFixed(1)},${J(Ee).toFixed(1)}`),ke.unshift(`${B(te).toFixed(1)},${J(Se).toFixed(1)}`))}let re=de.concat(ke);re.length<3||Q.push(`<polygon class="kan-fan-band" points="${re.join(" ")}" fill="hsl(${ge},65%,60%)"/>`)});let F=[];b.forEach((R,P)=>{let de=`hsl(${ce(R,P)},65%,60%)`,ke=[],re=[];R.points.forEach((te,Ee)=>{if(te===null)return;let Se=B(Ee),oe=J(te);ke.push(`${Se.toFixed(1)},${oe.toFixed(1)}`),re.push(`<circle cx="${Se.toFixed(1)}" cy="${oe.toFixed(1)}" r="3.5" fill="${de}"/>`)}),ke.length!==0&&F.push(`<g class="kan-fan-series" data-series="${g(R.key)}"><polyline points="${ke.join(" ")}" fill="none" stroke="${de}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`+re.join("")+"</g>")});let S=`<svg class="kan-fan-svg" viewBox="0 0 ${U} ${D}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+ue.join("")+E.join("")+Q.join("")+F.join("")+"</svg>",A=f?`${g(f)}=`:"",G=b.map((R,P)=>{let ge=ce(R,P),de=R.points.filter(oe=>oe!==null),ke=de.length?de[0]:void 0,re=de.length?de[de.length-1]:void 0,te="";if(re!==void 0&&ke!==void 0){let oe=re-ke;if(Math.abs(oe)>=.005){let Te=oe>0?"up":"down",Le=oe>0?"\u25B2":"\u25BC";te=` <span class="kan-fan-delta ${Te}">${oe>0?"+":""}${oe.toFixed(2)} ${Le}</span>`}else te=' <span class="kan-fan-delta flat">\u2014</span>'}let Ee=re!==void 0?`${A}${re.toFixed(2)}`:"\u2014",Se=R.lastSubject&&this.isLinkable(ne(R.lastSubject),s)?`<a href="${g(this.hrefForSubject(R.lastSubject,s))}">${g(R.label)}</a>`:g(R.label);return`<div class="kan-fan-legend-item" style="--kan-fan-hue:${ge}"><span class="kan-fan-swatch"></span><span class="kan-fan-legend-label">${Se}</span><span class="kan-fan-legend-cur">${Ee}${te}</span></div>`});return`<section class="kan-fan"><div class="kan-fan-chart">${S}</div><div class="kan-fan-legend">${G.join("")}</div></section>`}resolveResourceQuery(e){let n=i=>{let c=T(i,Mr);if(!c)return;let l=T(i,on),d=ee(i,Nr),f=this.readPropertyValueText(i,Dr),p=f!==void 0?Number(f):NaN;return{ofClass:c,...l?{orderBy:l}:{},descending:d==="descending",...Number.isInteger(p)&&p>0?{limit:p}:{}}},t=this.readEmbeddedCarrier(e,se);if(t)return n(t);let a=T(e,se);if(!a)return;let s=Z(this.catalog,a);return(s?me(s).some(i=>M(i.subject,Ar)):!1)&&s?n(s):{ofClass:a,descending:!1}}applyQueryShape(e,n){let t=e;if(n.orderBy){let a=s=>this.readPropertyValueText(s,n.orderBy)??"";t=t.slice().sort((s,o)=>a(s).localeCompare(a(o))),n.descending&&t.reverse()}return n.limit!==void 0&&(t=t.slice(0,n.limit)),t}renderResourceGrid(e,n,t){let a=this.resolveResourceQuery(e),s=T(e,se)??a?.ofClass;if(!s)return"<!-- LookRenderer.ResourceGrid: no look.source -->";let o=Z(this.catalog,s),i=o?Bn(this.catalog,o)!==void 0:!1,c=[];if(i&&t){let d=this.readPropertyValueReferences(t,s);for(let f of d){let p=Z(this.catalog,{publisher:f.subject.publisher,package_:f.subject.package_,name:f.subject.name,...f.subject.version?{version:f.subject.version}:{}});p&&c.push(p)}}else a?c=this.applyQueryShape(this.findInstancesOfClass(a.ofClass,this.readTransitive(e)),a):c=this.findInstancesOfClass(s,this.readTransitive(e));if(c.length===0)return`<!-- LookRenderer.ResourceGrid: no resources for ${s.publisher}/${s.package_}/${s.name} -->`;let l=[];for(let d of c){let f=N(this.catalog,d),p=f.label,m=f.summary,h=this.uriOf(d),b=h.package_,k=h.version,$=this.resourceHref({publisher:ne(d),package_:b,name:d.name,...k?{version:k}:{}},n),v=m?`<p class="kan-resource-card-subtitle">${g(m)}</p>`:"",_=`<h3 class="kan-resource-card-title">${g(p)}</h3>${v}`;l.push(this.isLinkable(ne(d),n)?`<a class="kan-resource-card" href="${g($)}">${_}</a>`:`<span class="kan-resource-card">${_}</span>`)}return`<section class="kan-resource-grid">
131
+ ${l.join(`
132
+ `)}
133
+ </section>`}readTransitive(e){let n=z(e,rs);return n instanceof ae?n.object===!0:n instanceof W&&n.object==="true"}findInstancesOfClass(e,n=!1){let t=n?this.descendantTypeKeys(e):new Set([Y(e)]),a=[];for(let s of this.catalog)s instanceof q&&me(s).some(o=>t.has(Y(o.subject)))&&a.push(s);return a}renderBreadcrumb(e,n,t){let s=(e.namespace||"").split("/");if(s.length<2)return"";let o=s[0],i=s[1]??"",c=i.split("@")[0]??"",l=i.split("@")[1]??"";if(!o||!c)return"";if(t?.bareOverview)return`<nav class="kan-breadcrumb"><ol>
134
+ <li><a href="${g(this.publisherHref(o))}">${g(o)}</a></li>
135
+ <li aria-current="page">${g(c)}</li>
136
+ </ol></nav>`;let d=e.name,p=!!Z(this.catalog,{publisher:o,package_:c,name:c}),m=l?`${c}@${l}`:c,h=this.resourceHref({publisher:o,package_:c,name:c,...l?{version:Tn(l)}:{}},o),b=e.name===c,k=[];return k.push(`<li><a href="${g(this.publisherHref(o))}">${g(o)}</a></li>`),b?k.push(`<li aria-current="page">${g(m)}</li>`):(k.push(p?`<li><a href="${g(h)}">${g(m)}</a></li>`:`<li>${g(m)}</li>`),k.push(`<li aria-current="page">${g(d)}</li>`)),`<nav class="kan-breadcrumb"><ol>
137
+ ${k.join(`
138
+ `)}
139
+ </ol></nav>`}renderNavGroup(e,n){let t=z(this.publisherSubject(n),Sa),a=t instanceof I?t.object??[]:t instanceof x&&t.object instanceof j?[t.object]:[];if(a.length===0)return"";let s=[];for(let o of a){if(!(o instanceof j))continue;let i=Z(this.catalog,{publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name}),{href:c,label:l}=this.resolveNavEntry(o,i,n),d=this.hrefForSubject(e,n),f=c===d?' aria-current="page"':"";s.push(`<li><a class="kan-nav-link" href="${g(c)}"${f}>${g(l)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
140
+ ${s.join(`
141
+ `)}
142
+ </ul></nav>`}renderSiteFooter(e){let n=z(this.publisherSubject(e),wa),t;if(n instanceof H?t=n.object:n instanceof x&&n.object instanceof j&&(t=Z(this.catalog,{publisher:n.object.subject.publisher,package_:n.object.subject.package_,name:n.object.subject.name})),!t)return"";let a=ee(t,_a),s=z(t,ja),o=s instanceof I?s.object??[]:s instanceof x&&s.object instanceof j?[s.object]:[],i=[];for(let l of o){if(!(l instanceof j))continue;let d=Z(this.catalog,{publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name}),{href:f,label:p}=this.resolveNavEntry(l,d,e);i.push(`<a class="kan-footer-link" href="${g(f)}">${g(p)}</a>`)}if(!a&&i.length===0)return"";let c=[];return i.length>0&&c.push(`<div class="kan-footer-links">${i.join("")}</div>`),a&&c.push(`<p class="kan-footer-text">${g(a)}</p>`),`<footer class="kan-site-footer">${c.join(`
143
+ `)}</footer>`}resolveNavEntry(e,n,t){if(n&&me(n).map(c=>c.subject).some(c=>c.publisher===Kn.publisher&&c.package_===Kn.package_&&c.name===Kn.name)){let c=ee(n,jn),l=z(n,kt);if(l instanceof x&&l.object instanceof j){let d=l.object,f=this.readLabelForUri({publisher:d.subject.publisher,package_:d.subject.package_,name:d.subject.name});return{href:this.urlForReference(d,kt,t),label:c??f??d.subject.name}}}let a=this.resourceHref({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},t,"*"),s=n?N(this.catalog,n).label:e.subject.name;return{href:a,label:s}}codeHighlighter(){return this._codeHighlighter||(this._codeHighlighter=new sn(this.collectGrammars())),this._codeHighlighter}collectGrammars(){let e=[];for(let n of this.catalog){if(!(n instanceof q)||!me(n).some(i=>M(i.subject,lr)))continue;let t=ee(n,ur);if(!t)continue;let a=z(n,dr),s=a instanceof I?a.object??[]:[],o=[];for(let i of s){if(!(i instanceof V))continue;let c=T(i,fr),l=ee(i,pr);!c||!l||o.push({tokenClass:c.name,pattern:l})}e.push({language:t,rules:o})}return e}renderLinks(e,n){let t=T(e,se);if(!t)return"";let a=z(n,t),s=[];a instanceof I?s=a.object??[]:a instanceof H?s=[a.object]:a instanceof x&&a.object instanceof j&&(s=[a.object]);let o=[];for(let i of s){let c;if(i instanceof V?c=i:i instanceof j&&(c=Z(this.catalog,{publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name})),!c)continue;let l=ee(c,kr);if(!l)continue;let d=ee(c,jn)??l,f=ee(c,pt),p=f?` title="${g(f)}"`:"";o.push(`<a class="kan-extlink" href="${g(l)}"${p} target="_blank" rel="noopener noreferrer">${g(d)}</a>`)}return o.length===0?"":`<section class="kan-extlink-row">${o.join("")}</section>`}renderMarkdown(e,n,t){let a=T(e,se);if(!a)return"<!-- LookRenderer.Markdown: no look.source -->";let s=z(n,a),o=new Map,i;if(s instanceof Fe?i=this.resolveMarkdownLinks(s,t,o):s instanceof W?i=s.object:i=this.readPropertyValueText(n,a),!i)return"";let c=this.codeHighlighter(),l=Ye(i,{highlight:(d,f)=>c.highlight(d,f)});for(let[d,f]of o){let p=new RegExp('(<a href="'+Ut(d)+'">)([^<]*)(</a>)',"g");l=l.replace(p,`$1<img class="kan-md-chip" src="${g(f)}" alt="" loading="lazy">$2$3`)}return`<section class="kan-markdown">
144
+ ${l}
145
+ </section>`}resolveMarkdownLinks(e,n,t){let a=e.object,s=[...e.links].sort((o,i)=>i.startOffset-o.startOffset);for(let o of s){let i;if(o.target&&this.isLinkable(o.target.subject.publisher,n)){let c=o.target.subject,l=(o.displayText??this.readLabelForUri({publisher:c.publisher,package_:c.package_,name:c.name})??o.reference).replace(/[[\]]/g,""),d=this.resourceHref({publisher:c.publisher,package_:c.package_,name:c.name,...c.version?{version:c.version}:{}},n);t&&t.set(d,`${d}.svg`),i=`[${l}](${d})`}else if(o.target){let c=o.target.subject;i=(o.displayText??this.readLabelForUri({publisher:c.publisher,package_:c.package_,name:c.name})??o.reference).replace(/[[\]]/g,"")}else i=o.displayText??o.reference;a=a.slice(0,o.startOffset)+i+a.slice(o.endOffset)}return a}renderRawMarkdown(e){let n=this.findCascadedLook(e);if(!n)return;let t=Un(n.declaration),a=[];for(let s of t){let o=ze(s);if(!o||!M(o,gt))continue;let i=T(s,se);if(!i)continue;let c=this.readPropertyValueText(e,i);c&&a.push(c)}return a.length>0?a.join(`
146
+
147
+ `):void 0}renderHero(e,n,t){let a=b=>{let k=z(e,b);return k instanceof ae?k.object===!0:k instanceof W&&k.object==="true"},s=a(ts),o=!s&&a(ns),i=s||o,l=[`<header class="${s?"kan-hero kan-hero-has-avatar":o?"kan-hero kan-hero-has-icon":"kan-hero"}">`];if(i){let b=this.svgUrlForSubject(n,t),k=s?"kan-hero-avatar":"kan-hero-icon";l.push(`<img class="${k}" src="${g(b)}" alt="" loading="lazy"/>`),l.push('<div class="kan-hero-text">')}let d=T(e,Jr);if(d){let b=this.readPropertyValueText(n,d);b&&l.push(`<span class="kan-hero-eyebrow">${g(gn(b)??b)}</span>`)}let f=T(e,Xr),p="";f&&(p=this.readPropertyValueText(n,f)??""),p||(p=N(this.catalog,n).label),l.push(`<h1 class="kan-hero-title">${g(gn(p)??p)}</h1>`);let m=T(e,Zr);if(m){let b=this.readPropertyValueText(n,m);b&&l.push(`<p class="kan-hero-subtitle">${g(gn(b)??b)}</p>`)}let h=T(e,Kt);if(h){let b=this.readPropertyValueReferences(n,h);if(b.length>0){let k=b.map($=>this.renderBadge($,Kt,t)).join("");l.push(`<div class="kan-hero-badges">${k}</div>`)}}return i&&l.push("</div>"),l.push("</header>"),l.join(`
148
+ `)}renderPropertyList(e,n,t){let a=T(e,se);if(!a)return"<!-- LookRenderer: PropertyList missing look.source -->";let s=this.readLabelForUri(a)??a.name,o=z(n,a),i=this.gatherValueItems(o),c=i.length>0?i.map(l=>`<li>${this.renderInlineValue(l,se,t)}</li>`).join(""):'<li class="kan-empty">(no values)</li>';return['<section class="kan-property-list">',`<h3 class="kan-property-list-title">${g(s)}</h3>`,`<ul class="kan-property-list-items">${c}</ul>`,"</section>"].join(`
149
+ `)}renderPropertyTable(e,n,t,a=""){let s=T(e,se);if(!s)return"<!-- LookRenderer: PropertyTable missing look.source -->";let o=this.gatherValueItems(z(n,s)).filter(d=>d instanceof V);if(o.length===0)return"";let i=this.readLabelForUri(s)??s.name,c=a?`${a}.${s.name}`:s.name,l=T(e,Fr);return this.renderEmbeddedTable(o,t,i,c,l)}renderEmbeddedTable(e,n,t,a,s){let o=[],i=new Set;for(let k of e)for(let $ of k.statement){let v=$.predicate?.subject;if(!v||this.isMetaPredicate(v))continue;let _=`${v.publisher}/${v.package_}/${v.name}`;i.has(_)||(i.add(_),o.push({uri:{publisher:v.publisher,package_:v.package_,name:v.name},label:this.readLabelForUri(v)??v.name}))}if(o.length===0)return"";let c=e.map(k=>N(this.catalog,k).label),l=e.some((k,$)=>c[$]!==""&&c[$]!==k.name),d=!!a,f=(d?'<th class="kan-anchor-col"></th>':"")+(l?"<th></th>":"")+o.map(k=>`<th>${g(k.label)}</th>`).join(""),p=e.map((k,$)=>{let v=d&&k.name?`${a}.${k.name}`:"",_=v?` id="${g(v)}"`:"",K=d?`<td class="kan-anchor-col">${v?this.anchorLink(v):""}</td>`:"",O=l?`<th scope="row">${g(c[$]??"")}</th>`:"",U=o.map(D=>{let L=z(k,D.uri);return L?`<td>${this.tableCellValue(L,n,s)}</td>`:"<td></td>"}).join("");return`<tr${_}>${K}${O}${U}</tr>`}).join(""),m=d&&a?` id="${g(a)}"`:"",h=d&&a?this.anchorLink(a):"",b=t?`<caption>${g(t)}${h}</caption>`:"";return`<table class="kan-property-table"${m}>${b}<thead><tr>${f}</tr></thead><tbody>${p}</tbody></table>`}tableCellValue(e,n,t){if(t&&M(t,bt)){if(e instanceof ie)return this.barMarkup(String(e.object));if(e instanceof W&&Number.isFinite(Number(e.object)))return this.barMarkup(e.object)}if(e instanceof Fe)return this.statementToMarkdownHtml(e,n);if(e instanceof W)return Ct(e.object);if(e instanceof ie||e instanceof ae)return g(String(e.object));if(e instanceof x&&e.object instanceof j)return this.detailReferenceLink(e.object,n);if(e instanceof H)return this.renderEmbeddedTable([e.object],n);if(e instanceof I){let a=e.object??[],s=a.filter(o=>o instanceof V);return s.length>0&&s.length===a.length?this.renderEmbeddedTable(s,n):a.map(o=>o instanceof j?this.detailReferenceLink(o,n):o instanceof V?this.renderEmbeddedTable([o],n):g(String(o))).filter(o=>o).join(", ")}return""}statementToMarkdownHtml(e,n){let t=new Map,a;if(e instanceof Fe?a=this.resolveMarkdownLinks(e,n,t):e instanceof W&&(a=e.object),!a)return"";let s=this.codeHighlighter(),o=Ye(a,{highlight:(i,c)=>s.highlight(i,c)});for(let[i,c]of t){let l=new RegExp('(<a href="'+Ut(i)+'">)([^<]*)(</a>)',"g");o=o.replace(l,`$1<img class="kan-md-chip" src="${g(c)}" alt="" loading="lazy">$2$3`)}return o}renderBadgeRow(e,n,t){let a=T(e,se);if(!a)return"<!-- LookRenderer: BadgeRow missing look.source -->";let s=this.readPropertyValueReferences(n,a);return s.length===0?"":`<div class="kan-badge-row">${s.map(i=>this.renderBadge(i,se,t)).join("")}</div>`}renderChipRow(e,n,t){let a=Cn(e,ss);if(a.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let s=[];for(let o of a){let i=z(n,o);if(!i)continue;let c=this.readLabelForUri(o)??o.name,l=this.renderStatementInlineValue(i,o,t);l&&s.push(`<span class="kan-chip"><span class="kan-chip-key">${g(c)}</span> <span class="kan-chip-val">${l}</span></span>`)}return s.length===0?"":`<div class="kan-chip-row">${s.join("")}</div>`}async renderReferenceList(e,n,t){let a=Cn(e,Rt);if(a.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let s=this.readEmbeddedCarrier(e,ht),o=this.readEmbeddedCarrier(e,Tr),i=[];for(let c of a){let l=this.readPropertyValueReferences(n,c);if(l.length===0)continue;let d=this.readLabelForUri(c)??c.name;if(s){let f=[];for(let m of l)f.push(await this.renderDetailRow(m,s,o,t));let p=f.filter(m=>m).join("");p&&i.push(`<dt>${g(d)}</dt><dd><ul class="kan-ref-rows">${p}</ul></dd>`)}else{let f=l.map(p=>this.renderReferenceLink(p,Rt,t)).join(", ");i.push(`<dt>${g(d)}</dt><dd>${f}</dd>`)}}return i.length===0?"":`<dl class="kan-reference-list">${i.join("")}</dl>`}async renderDetailRow(e,n,t,a){let s=Z(this.catalog,{publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name,...e.subject.version?{version:e.subject.version}:{}});if(!s)return"";let o=await this.evaluateCarrier(n,s)??N(this.catalog,s).label,i="";if(t){let f=await this.evaluateCarrier(t,s);f&&(i=`<span class="kan-ref-badge">${g(f)}</span>`)}let c=`<span class="kan-ref-text">${g(o)}</span>${i}`;if(!this.isLinkable(ne(s),a))return`<li class="kan-ref-row"><span class="kan-ref-rowlink">${c}</span></li>`;let l=this.hrefForSubject(s,a),d=this.svgUrlForSubject(s,a);return`<li class="kan-ref-row"><a class="kan-ref-rowlink" href="${g(l)}"><img class="kan-ref-icon" src="${g(d)}" alt="" loading="lazy"/>`+c+"</a></li>"}readPropertyValueText(e,n){let t=z(e,n);if(t){if(t instanceof W)return t.object;if(t instanceof ie||t instanceof ae)return String(t.object);if(t instanceof x){let a=t.object;return this.readLabelForUri({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name})??a.subject.name}if(t instanceof H)return this.readEmbeddedText(t.object,0)||void 0;if(t instanceof I)return(t.object??[]).map(s=>s instanceof j?this.readLabelForUri({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name})??s.subject.name:s instanceof V?this.readEmbeddedText(s,0):String(s)).filter(s=>s).join(", ")}}readEmbeddedText(e,n){if(n>=jt)return"\u2026";let t=[];for(let a of e.statement){let s=a.predicate?.subject;if(!(s&&M(s,Ce)))if(a instanceof W)t.push(a.object);else if(a instanceof ie||a instanceof ae)t.push(String(a.object));else if(a instanceof x){let o=a.object;t.push(this.readLabelForUri({publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name})??o.subject.name)}else a instanceof H&&t.push(this.readEmbeddedText(a.object,n+1))}return t.filter(a=>a).join(", ")}readPropertyValueReferences(e,n){let t=z(e,n);if(!t)return[];if(t instanceof x)return[t.object];if(t instanceof I){let a=[];for(let s of t.object??[])s instanceof j&&a.push(s);return a}return[]}gatherValueItems(e){return e?e instanceof I?e.object??[]:e instanceof x?[e.object]:e instanceof H?[e.object]:e instanceof W?[e.object]:e instanceof ie||e instanceof ae?[e.object]:[]:[]}renderInlineValue(e,n,t,a=0){return e instanceof j?this.renderReferenceLink(e,n,t):e instanceof V?this.renderEmbeddedInline(e,t,a):typeof e=="string"?g(e):typeof e=="number"||typeof e=="boolean"?g(String(e)):""}renderStatementInlineValue(e,n,t,a=0){return e instanceof W?g(e.object):e instanceof ie||e instanceof ae?g(String(e.object)):e instanceof x?this.renderReferenceLink(e.object,n,t):e instanceof H?this.renderEmbeddedInline(e.object,t,a):e instanceof I?(e.object??[]).map(o=>this.renderInlineValue(o,n,t,a)).filter(o=>o).join(", "):""}renderEmbeddedInline(e,n,t=0){if(t>=jt)return"\u2026";let a=[];for(let s of e.statement){let o=s.predicate?.subject;if(!o||M(o,Ce))continue;let i=this.readLabelForUri({publisher:o.publisher,package_:o.package_,name:o.name})??o.name,c=this.renderStatementInlineValue(s,o,n,t+1);c&&a.push(`<dt>${g(i)}</dt><dd>${c}</dd>`)}return a.length?`<dl class="kan-embedded">${a.join("")}</dl>`:""}renderReferenceLink(e,n,t){let a=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name;if(!this.isLinkable(e.subject.publisher,t))return`<span class="kan-link-plain">${g(a)}</span>`;let s=this.urlForReference(e,n,t);return`<a class="kan-link" href="${g(s)}">${g(a)}</a>`}isLinkable(e,n){return this.publisherFirst||e===n}renderBadge(e,n,t){let a=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name,s=this.readCommentForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name}),o=s?` title="${g(s)}"`:"";if(!this.isLinkable(e.subject.publisher,t))return`<span class="kan-badge"${o}>${g(a)}</span>`;let i=this.urlForReference(e,n,t);return`<a class="kan-badge" href="${g(i)}"${o}>${g(a)}</a>`}urlForReference(e,n,t){let a=n?this.getUrlFormForProperty(n):"=";return this.resourceHref({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},t,a)}getUrlFormForProperty(e){let n=Z(this.catalog,e);if(!n)return"=";let t=ee(n,os);return t==="*"||t==="^"||t==="~"||t==="="?t:"="}readLabelForUri(e){let n=Z(this.catalog,e);if(n)return N(this.catalog,n).label}readCommentForUri(e){let n=Z(this.catalog,e);if(n)return N(this.catalog,n).summary}};function is(r){let e=new Map;for(let n of r.statement){if(!(n instanceof H)||!$e(n,pn.publisher,pn.package_,pn.name))continue;let t=n.object;for(let a of t.statement){if(!(a instanceof W))continue;let s=a.predicate?.subject?.name;if(!s)continue;let o=a.object;e.has(s)||e.set(s,o)}}return e}function cn(r){for(let e of r.statement)if(e instanceof H&&$e(e,fn.publisher,fn.package_,fn.name))return e.object}function Un(r){for(let e of r.statement){if(!(e instanceof I)||!$e(e,On.publisher,On.package_,On.name))continue;let n=[];for(let t of e.object??[])t instanceof V&&n.push(t);return n}return[]}function ze(r){for(let e of r.statement)if(e instanceof x&&!(!e.predicate?.subject||!M(e.predicate.subject,Ce))&&e.object instanceof j){let n=e.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function T(r,e){for(let n of r.statement)if(n instanceof x&&$e(n,e.publisher,e.package_,e.name)&&n.object instanceof j){let t=n.object.subject;return{publisher:t.publisher,package_:t.package_,name:t.name}}}function Cn(r,e){for(let n of r.statement){if(!(n instanceof I)||!$e(n,e.publisher,e.package_,e.name))continue;let t=[];for(let a of n.object??[])a instanceof j&&t.push({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name});return t}return[]}function z(r,e){for(let n of r.statement)if($e(n,e.publisher,e.package_,e.name))return n}function ee(r,e){for(let n of r.statement)if(n instanceof W&&$e(n,e.publisher,e.package_,e.name))return n.object}function ln(r,e){for(let n of r.statement)if(n instanceof H&&$e(n,e.publisher,e.package_,e.name))return n.object}function Et(r,e){for(let n of r.statement)if(n instanceof ie&&$e(n,e.publisher,e.package_,e.name))return n.object}function cs(r,e){for(let n of r.statement)if(n instanceof ae&&$e(n,e.publisher,e.package_,e.name))return n.object===!0;return!1}function ls(r){for(let e of me(r))if(M(e.subject,da)||M(e.subject,fa))return!0;return!1}function me(r){let e=[];for(let n of r.statement)if(n instanceof x){if(!n.predicate?.subject||!M(n.predicate.subject,Ce))continue;n.object instanceof j&&e.push(n.object)}else if(n instanceof I){if(!n.predicate?.subject||!M(n.predicate.subject,Ce))continue;for(let t of n.object??[])t instanceof j&&e.push(t)}return e}function un(r){let e=[];for(let n of r.statement)if(n instanceof x){if(!n.predicate?.subject||!M(n.predicate.subject,_t))continue;n.object instanceof j&&e.push(n.object)}else if(n instanceof I){if(!n.predicate?.subject||!M(n.predicate.subject,_t))continue;for(let t of n.object??[])t instanceof j&&e.push(t)}return e}function Z(r,e){let n="version"in e?e.version:void 0;if(n){let t=`${e.publisher}/${e.package_}@${n.major}.${n.minor}.${n.patch}`;for(let a of r)if(a instanceof q&&a.name===e.name&&a.namespace===t)return a}for(let t of r){if(!(t instanceof q)||t.name!==e.name)continue;if((t.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return t}}function $e(r,e,n,t){let a=r.predicate?.subject;return a?a.publisher===e&&a.package_===n&&a.name===t:!1}function M(r,e){return r.publisher===e.publisher&&r.package_===e.package_&&r.name===e.name}function Y(r){return`${r.publisher}/${r.package_}/${r.name}`}function us(r){let e=s=>s.replace(/\*\//g,"* /"),n=[];n.push(` * kanonak stylesheet \u2014 ${e(r.resource.namespace)}/${e(r.resource.name)}`),n.push(" *");let t=new Map;for(let s of r.tokens.values()){let o=`${s.sourceNamespace} ${s.sourceName}`,i=t.get(o)??{count:0,level:s.level};i.count+=1,t.set(o,i)}if(t.size===0)n.push(" * :root tokens: NONE resolved");else{n.push(` * :root tokens (${r.tokens.size}):`);for(let[s,{count:o,level:i}]of t)n.push(` * ${o} from ${e(s)} (${i})`)}let a=r.baseStylesheet;if(a.css!==void 0)n.push(` * base CSS: ${e(a.sourceNamespace??"")}/base-stylesheet (${a.css.length} bytes, ${a.scope})`);else{n.push(" *"),n.push(" * !! WARNING: NO BASE STYLESHEET \u2014 this file contains only :root tokens."),n.push(" * !! Pages will appear UNSTYLED.");for(let s of r.warnings)n.push(` * !! ${e(s)}`);n.push(" * !! Full diagnostics: /.well-known/kanonak-render")}if(r.look){let s=r.look.sourceClass;n.push(` * look: ${e(s.publisher)}/${e(s.package_)}/${e(s.name)}`)}return`/*
150
+ ${n.join(`
151
+ `)}
152
+ */`}function ne(r){let e=r.namespace||"",n=e.indexOf("/");return n>=0?e.substring(0,n):e}function g(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Re(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Lt(r,e){return e==null?"":Pe(e)?e.value:r==="string-literal"?typeof e=="string"?e:String(e):Array.isArray(e)?e.map(n=>Pe(n)?n.value:Re(typeof n=="string"?n:String(n))).join(""):Re(typeof e=="string"?e:String(e))}function It(r){if(r==null)return"";if(typeof r=="string")return r;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Pe(r))return r.value;if(Array.isArray(r))return r.map(It).filter(n=>n!=="").join(", ");if(r instanceof j)return r.subject.name;if(r instanceof q||r instanceof V)return r.name??"";let e=r.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function In(r,e){return r.length<=e?r:r.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function Ot(r){return r.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function Ut(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ct(r){let e=gn(r);return g(e||r)}function gn(r){let e=/^(\d{4})-(\d{2})-(\d{2})([T ]\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?)?$/.exec(r.trim());if(!e)return;let n=Date.parse(r);if(!Number.isFinite(n))return;let t=new Date(n),s=`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][t.getUTCMonth()]} ${t.getUTCDate()}, ${t.getUTCFullYear()}`;if(!e[4])return s;let o=t.getUTCHours(),i=(o+11)%12+1,c=o>=12?"PM":"AM";return`${s} \xB7 ${i}:${String(t.getUTCMinutes()).padStart(2,"0")} ${c} UTC`}function dn(r){if(!r)return"";let e=/^(\d{4})-(\d{2})-(\d{2})/.exec(r);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)}`:r}function ds(){return new Set(kn.bandDispatchUris().map(r=>`${r.publisher}/${r.package_}/${r.name}`))}export{N as a,Ye as b,Pe as c,Ke as d,Xe as e,X as f,Ys as g,Oe as h,rn as i,kn as j,ds as k};
package/dist/index.d.ts CHANGED
@@ -8,8 +8,8 @@ export { GitIgnoreFilter } from './filtering/index.js';
8
8
  export type { IGitIgnoreFilter } from './filtering/index.js';
9
9
  export { KanonakParser, KanonakObjectParser, PropertyMetadata, KanonakDocumentPositions, parseWithPositions, findMarkdownLinkAt, } from './parsing/index.js';
10
10
  export type { IKanonakObjectParser, SourcePosition, ImportPackageEntry, ParsedDocumentWithPositions, } from './parsing/index.js';
11
- export { ResourceResolver, KanonakUri, KanonakUriBuilder, parseKanonakAddress, formatKanonakAddress, KanonakUrlResolver, TypeResolver, ResourceTypeClassifier, findInstancesByType, compareVersions, versionsEqual, formatVersion, parseVersionString, createVersion, isCompatibleVersion, isMajorCompatible, pickHighestDocument, versionOperatorFromChar, versionOperatorToChar, propertiesInScope, resolvePropertyStep, contextTypesOf, subjectUri, superClassChain, assertPackageIdentity, } from './resolution/index.js';
12
- export type { ResourceResolutionResult, ILogger, InstanceSearchResult, DocumentVersionPick, PropertyDescriptor, PropertyKind, StepResolution, KanonakAddress, UrlAddress, PublisherUrlAddress, PackageUrlAddress, ResourceUrlAddress, VersionSpec, UrlForm, } from './resolution/index.js';
11
+ export { ResourceResolver, KanonakUri, KanonakUriBuilder, parseKanonakAddress, formatKanonakAddress, KanonakUrlResolver, TypeResolver, ResourceTypeClassifier, compareVersions, versionsEqual, formatVersion, parseVersionString, createVersion, isCompatibleVersion, isMajorCompatible, pickHighestDocument, versionOperatorFromChar, versionOperatorToChar, propertiesInScope, resolvePropertyStep, contextTypesOf, subjectUri, superClassChain, assertPackageIdentity, } from './resolution/index.js';
12
+ export type { ResourceResolutionResult, ILogger, DocumentVersionPick, PropertyDescriptor, PropertyKind, StepResolution, KanonakAddress, UrlAddress, PublisherUrlAddress, PackageUrlAddress, ResourceUrlAddress, VersionSpec, UrlForm, } from './resolution/index.js';
13
13
  export { Kanonak, DefinedKanonak, SubjectKanonak, EmbeddedKanonak, ReferenceKanonak, LiteralKanonak } from './kanonaks/index.js';
14
14
  export type { IStatement } from './statements/index.js';
15
15
  export type { MarkdownLink } from './statements/index.js';
@@ -30,7 +30,7 @@ export { loadLockFile, saveLockFile, computeIntegrity, parseLockFile, serializeL
30
30
  export type { LockFile, LockEntry } from './lock/index.js';
31
31
  export { findDerivation } from './derivation/index.js';
32
32
  export type { DerivationEntityUri, TransformationReferenceTuple, DerivationLookupResult, } from './derivation/index.js';
33
- export { LookRenderer, resolveDisplayValue } from './look/index.js';
33
+ export { LookRenderer, resolveDisplayValue, supportedBandKeys } from './look/index.js';
34
34
  export type { ResolvedLook, DisplayValue } from './look/index.js';
35
35
  export { ViewMaterializer } from './view/index.js';
36
36
  export type { MaterializeOptions, MaterializeResult } from './view/index.js';