@kanonak-protocol/sdk 3.71.0 → 3.73.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.
@@ -1,148 +0,0 @@
1
- import{a as Cn}from"./chunk-4NO7MHS7.js";import{a as Mn}from"./chunk-PEJALHXK.js";import{d as u}from"./chunk-SHDHMKMJ.js";import{a as D,c as Me,f as An}from"./chunk-G2DKKSZ4.js";import{a as Vn}from"./chunk-TJPQETHV.js";import{a as pn,b as de,c as xn,d as j,f as xe,g as me,i as gn,j as qe,l as Nn,m as Pn}from"./chunk-CRKSKIAL.js";import{b as Oe,c as Y,d as K,g as q,h as ue,i as ae,j as C,k as z,l as V}from"./chunk-W6T7MOKY.js";import{a as Tn}from"./chunk-FUUTGGJS.js";import{c as Qe,g as ve}from"./chunk-2ACBWC7K.js";var Ve="kanonak.org",zn="look",We="core-rdf",Kt={publisher:Ve,package_:zn,name:"displayLabel"},Rt={publisher:Ve,package_:zn,name:"displaySummary"},Et={publisher:Ve,package_:We,name:"type"},Lt={publisher:Ve,package_:We,name:"subClassOf"},Ot={publisher:Ve,package_:We,name:"label"},Ut={publisher:Ve,package_:We,name:"comment"},Dn=new Tn(Ve,We,"Resource");function B(r,e){let n=Bn(r,e,Kt)??Ot,t=Bn(r,e,Rt)??Ut,a=gn(e,n)??e.name,s=gn(e,t);return{label:a,summary:s}}function Bn(r,e,n){let t=qe(e,n);if(t)return t;let a=new Set,s=Hn(e,Et);for(;s.length>0;){let o=s.shift(),i=pn(o);if(a.has(i))continue;a.add(i);let c=xe(r,o);if(!c)continue;let l=qe(c,n);if(l)return l;s.push(...Hn(c,Lt))}if(!a.has(pn(Dn))){let o=xe(r,Dn);if(o){let i=qe(o,n);if(i)return i}}}function Hn(r,e){let n=qe(r,e);if(n)return[n];let t=[];for(let a of Nn(r,e))a instanceof K&&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):Pe(f),k=l?` class="language-${qn(l)}"`:"";t.push(`<pre class="kan-code"><code${k}>${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&&Gn(n[a+1])){let l=mn(s),d=It(n[a+1]);a+=2;let f=[];for(;a<n.length&&n[a].trim()!==""&&n[a].includes("|");)f.push(mn(n[a])),a++;t.push(Ft(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&&Gn(n[a+1]));)c.push(n[a]),a++;t.push(`<p>${Ne(c.join(" "))}</p>`)}return t.join(`
11
- `)}function Gn(r){return r.includes("-")?/^[\s|:-]+$/.test(r):!1}function mn(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 It(r){return mn(r).map(e=>{let n=e.startsWith(":"),t=e.endsWith(":");return n&&t?"center":t?"right":n?"left":null})}function Ft(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=Pe(r);return e=e.replace(/`([^`\n]+)`/g,(n,t)=>`<code>${t}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(n,t,a)=>`<a href="${qn(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 Pe(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function qn(r){return r.replace(/"/g,"&quot;").replace(/&/g,"&amp;")}var Ct={publisher:"kanonak.org",package_:"core-rdf",name:"label"};function Be(r){return typeof r=="object"&&r!==null&&r.kind==="raw-string"}var Ke=class extends Error{},nn=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 Wn(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 Wn(t)}case"property-read":{let t=await this.evaluate(e.source,n);return en(t,e.readProp)}case"traverse":{let t=await this.evaluate(e.source,n);if(!(t instanceof Oe))return;let a=Tt(t,e.through),s=[];for(let o of a){let i=me(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&&Te(f)!==""){s.push(Te(f));break}}}return s.join("")}case"uri-name":{let t=await this.evaluate(e.source,n);return De(t)?t.name:t instanceof K?t.subject.name:t instanceof Y?t.name:t instanceof D?t.name??"":void 0}case"uri-publisher":{let t=await this.evaluate(e.source,n);return kn(t)?.publisher}case"uri-package":{let t=await this.evaluate(e.source,n);return kn(t)?.package_}case"uri-version":{let t=await this.evaluate(e.source,n);return kn(t)?.version}case"subject-uri":{let t=await this.evaluate(e.source,n);if(t instanceof Y){let a=t.namespace??"",s=t.name??"";return!a||!s?void 0:`${a}/${s}`}if(t instanceof K){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?en(t,e.labelSource):void 0}case"resolve-ref":{let t=await this.evaluate(e.source,n);return t instanceof Y?t:t instanceof K?await this.resolver.resolveSubject(t.subject,this.catalog):De(t)?await this.resolver.resolveSubject(t,this.catalog):void 0}case"normalize":{let t=await this.evaluate(e.source,n),a=t==null?"":Te(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?"":Te(t)}}case"render-markdown":{let t=await this.evaluate(e.source,n);if(!(t instanceof Oe))return;let a;for(let o of t.statement){let i=bn(o);if(i&&de(i,e.readProp)){a=o;break}}if(!(a instanceof Me)){let o=en(t,e.readProp);return o==null?void 0:Te(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;Mt.has(o)&&(Array.isArray(s)&&s.every(i=>Yn(i))?s=s.map(i=>Xn(i)).join(""):Yn(s)&&(s=Xn(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?"":Te(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+=fe(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=fe(t[0],"Min");for(let s=1;s<t.length;s++){let o=fe(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=fe(t[0],"Max");for(let s=1;s<t.length;s++){let o=fe(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+=fe(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,je(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,je(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,je(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,je(o));let c=await this.evaluate(e.partitionKey,i),l=Qn(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,je(o));let c=await this.evaluate(e.distinctKey,i),l=Qn(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 Oe?t.statement:[]}case"statement-predicate":{let t=await this.evaluate(e.source,n);if(hn(t)){let a=t.predicate;if(a instanceof K)return a}return}case"statement-value":{let t=await this.evaluate(e.source,n);return hn(t)?Pt(t):void 0}case"date-format":{let t=await this.evaluate(e.source,n),a=t==null?"":Te(t);return a?Nt(a,e.format):""}case"add":{let t=fe(await this.evaluate(e.left,n),"Add"),a=fe(await this.evaluate(e.right,n),"Add");return t+a}case"subtract":{let t=fe(await this.evaluate(e.left,n),"Subtract"),a=fe(await this.evaluate(e.right,n),"Subtract");return t-a}case"multiply":{let t=fe(await this.evaluate(e.left,n),"Multiply"),a=fe(await this.evaluate(e.right,n),"Multiply");return t*a}case"divide":{let t=fe(await this.evaluate(e.left,n),"Divide"),a=fe(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,je(t[s])),o.set(e.secondVar,je(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,je(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 Jn(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(Jn(s,a))return!0;return!1}case"abs":{let t=fe(await this.evaluate(e.value,n),"Abs");return Math.abs(t)}case"negate":return-fe(await this.evaluate(e.value,n),"Negate");case"is-reference":{let t=await this.evaluate(e.check,n);return t instanceof K||t instanceof Y}case"is-embedded":return await this.evaluate(e.check,n)instanceof D;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(!hn(t))return;let a=t;return a instanceof q||a instanceof ue||a instanceof ae||a instanceof C||a instanceof z||a instanceof V?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 Oe)||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}](${xn(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=en(n,Ct);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,je(t[s-1])),o.set(e.secondVar,je(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,je(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,je(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 en(r,e){if(r instanceof Oe)return Vt(r,e);if(At(r))return de(e,u.key)?r.key:de(e,u.members)?r.members:void 0}function Vt(r,e){for(let n of r.statement){let t=bn(n);if(!(!t||!de(t,e))&&(n instanceof q||n instanceof ue||n instanceof ae||n instanceof C||n instanceof z||n instanceof V))return n.object}}function Tt(r,e){let n=[];for(let t of r.statement){let a=bn(t);if(!(!a||!de(a,e))){if(t instanceof C)n.push(t.object.subject);else if(t instanceof V)for(let s of t.object)s instanceof K&&n.push(s.subject)}}return n}function bn(r){return r.predicate?.subject}function Te(r){if(r==null)return"";if(typeof r=="string")return r;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Be(r))return r.value;if(r instanceof Oe)return r.name??"";if(r instanceof K)return r.subject.name;if(De(r))return r.name;let e=r.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function je(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)&&!(r instanceof Oe)&&!(r instanceof K)&&!(r instanceof D)&&"value"in r?r.value:r}function Wn(r){return r==null?!1:typeof r=="string"||Array.isArray(r)?r.length>0:typeof r=="boolean"?r===!0:!0}function De(r){return typeof r=="object"&&r!==null&&typeof r.publisher=="string"&&typeof r.package_=="string"&&typeof r.name=="string"}function At(r){return typeof r=="object"&&r!==null&&r.kind==="Partition"&&Array.isArray(r.members)}function fe(r,e){if(typeof r=="number"&&Number.isFinite(r))return r;throw new Ke(`${e} requires numeric elements; got ${xt(r)}`)}function kn(r){if(r instanceof Y){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 K){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(De(r))return{publisher:r.publisher,package_:r.package_,version:"",name:r.name}}var Mt=new Set(["stringValue","text","rawContent","key","propertyKey","linkLabel"]);function Yn(r){return typeof r=="string"||typeof r=="number"||typeof r=="boolean"||Be(r)}function Xn(r){return Be(r)?r.value:String(r)}function xt(r){return r===void 0?"undefined":r===null?"null":Array.isArray(r)?`array(${r.length})`:typeof r}function Nt(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 Jn(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=Zn(r),i=Zn(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 Zn(r){if(r instanceof K){let e=r.subject;return{publisher:e.publisher,package_:e.package_,name:e.name}}if(r instanceof Y){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(De(r))return{publisher:r.publisher,package_:r.package_,name:r.name}}function hn(r){return r instanceof q||r instanceof ue||r instanceof ae||r instanceof C||r instanceof z||r instanceof V}function Pt(r){return r instanceof q||r instanceof ue||r instanceof ae?String(r.object??""):r instanceof C?r.object?.subject?.name??"":r instanceof z?"[embedded]":r instanceof V?(r.object??[]).map(n=>{if(n instanceof K)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 Qn(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 K){let e=r.subject;return`r:${e.publisher}/${e.package_}/${e.name}`}if(r instanceof Oe){let e=r.name??"";return`k:${r.namespace??""}/${e}`}return De(r)?`u:${r.publisher}/${r.package_}/${r.name}`:`o:${JSON.stringify(r)}`}var W=class extends Error{constructor(n,t){super(`${n} (at ${t})`);this.path=t}path};function ds(r,e){let n=r.name,t=Zt(e),a={catalog:e,depth:0};if(j(r,u.InstanceTransformation))return Dt(r,n,a,t);if(j(r,u.SetTransformation))return Bt(r,n,a,t);throw new W("Subject is not a recognized v3 transformation type \u2014 expected InstanceTransformation or SetTransformation",n)}function Dt(r,e,n,t){return{kind:"instance",name:r.name,inputPattern:st(r,e),rule:tn(r,u.rule,`${e}.rule`,n),artifactName:tn(r,u.artifactName,`${e}.artifactName`,n),outputs:ot(r,`${e}.outputs`),overrides:it(r,`${e}.formatOverrides`,n),fragments:t}}function Bt(r,e,n,t){let a=Ue(r,u.partitionBy);return{kind:"set",name:r.name,inputPattern:st(r,e),rule:tn(r,u.rule,`${e}.rule`,n),artifactName:tn(r,u.artifactName,`${e}.artifactName`,n),outputs:ot(r,`${e}.outputs`),overrides:it(r,`${e}.formatOverrides`,n),partitionBy:a,fragments:t}}function st(r,e){let n=Xe(r,u.inputPattern);if(!n)throw new W("inputPattern is required",e);return Ht(n,`${e}.inputPattern`)}function Ht(r,e){let n=Ue(r,u.matchesClass);if(!n)throw new W("matchesClass is required",e);let t=[];for(let o of $e(r,u.requires))if(o instanceof C)t.push(yn(o.object.subject));else if(o instanceof V)for(let i of o.object)i instanceof K&&t.push(yn(i.subject));let a=[],s=0;for(let o of $e(r,u.sortBy))if(o instanceof V)for(let i of o.object)i instanceof D&&a.push(et(i,`${e}.sortBy[${s++}]`));else o instanceof z&&a.push(et(o.object,`${e}.sortBy[${s++}]`));return{matchesClass:n,requires:t,sortBy:a}}function et(r,e){let n=Ue(r,u.byProperty);if(!n)throw new W("SortKey.byProperty is required",e);let t=Ue(r,u.order);if(!t)throw new W("SortKey.order is required",e);if(de(t,u.ascending))return{byProperty:n,order:"ascending"};if(de(t,u.descending))return{byProperty:n,order:"descending"};throw new W(`SortKey.order must reference tx.ascending or tx.descending; got ${t.publisher}/${t.package_}/${t.name}`,e)}function tn(r,e,n,t){let a=Xe(r,e);if(!a)throw new W("expression is required",n);return Fe(a,n,t)}function Fe(r,e,n){if(j(r,u.StringLiteral))return{kind:"string-literal",value:ke(r,u.stringLiteral,e)};if(j(r,u.IntegerLiteral))return{kind:"integer-literal",value:rt(r,u.integerLiteral,e)};if(j(r,u.DecimalLiteral))return{kind:"decimal-literal",value:rt(r,u.decimalLiteral,e)};if(j(r,u.BooleanLiteral))return{kind:"boolean-literal",value:na(r,u.booleanLiteral,e)};if(j(r,u.VarRef))return{kind:"var-ref",varName:ke(r,u.varName,e)};if(j(r,u.PropertyRead))return{kind:"property-read",source:$(r,u.readSource,`${e}.readSource`,n),readProp:Ie(r,u.readProp,e,"readProp")};if(j(r,u.Traverse))return{kind:"traverse",source:$(r,u.traverseSource,`${e}.traverseSource`,n),through:Ie(r,u.through,e,"through"),step:$(r,u.step,`${e}.step`,n)};if(j(r,u.BuildAstNode))return{kind:"build-ast-node",astClass:Ie(r,u.astClass,e,"astClass"),set:Gt(r,`${e}.set`,n)};if(j(r,u.When))return{kind:"when",condition:$(r,u.condition,`${e}.condition`,n),thenBuild:$(r,u.thenBuild,`${e}.thenBuild`,n),elseBuild:zt(r,u.elseBuild,`${e}.elseBuild`,n)};if(j(r,u.Concat))return{kind:"concat",parts:vn(r,u.parts,`${e}.parts`,n)};if(j(r,u.Fallback))return{kind:"fallback",primary:$(r,u.primary,`${e}.primary`,n),alternate:$(r,u.alternate,`${e}.alternate`,n)};if(j(r,u.UriName))return{kind:"uri-name",source:$(r,u.uriNameOf,`${e}.uriNameOf`,n)};if(j(r,u.UriPublisher))return{kind:"uri-publisher",source:$(r,u.uriPublisherOf,`${e}.uriPublisherOf`,n)};if(j(r,u.UriPackage))return{kind:"uri-package",source:$(r,u.uriPackageOf,`${e}.uriPackageOf`,n)};if(j(r,u.UriVersion))return{kind:"uri-version",source:$(r,u.uriVersionOf,`${e}.uriVersionOf`,n)};if(j(r,u.SubjectUri))return{kind:"subject-uri",source:$(r,u.subjectOf,`${e}.subjectOf`,n)};if(j(r,u.UriLiteral))return{kind:"uri-literal",refTo:Ie(r,u.refTo,e,"refTo")};if(j(r,u.DisplayLabel))return{kind:"display-label",labelTarget:Ie(r,u.labelTarget,e,"labelTarget"),labelSource:Ie(r,u.labelSource,e,"labelSource")};if(j(r,u.ResolveRef))return{kind:"resolve-ref",source:$(r,u.resolveSource,`${e}.resolveSource`,n)};if(j(r,u.Normalize))return{kind:"normalize",source:$(r,u.normSource,`${e}.normSource`,n),normKind:qt(r,e)};if(j(r,u.UnescapedString))return{kind:"unescaped-string",source:$(r,u.unescapedSource,`${e}.unescapedSource`,n)};if(j(r,u.RenderMarkdown))return{kind:"render-markdown",source:$(r,u.renderSource,`${e}.renderSource`,n),readProp:Ie(r,u.renderProp,e,"renderProp"),format:Wt(r,e)};if(j(r,u.IsSet))return{kind:"is-set",check:$(r,u.checkExpr,`${e}.checkExpr`,n)};if(j(r,u.CallFragment))return Xt(r,e,n);if(j(r,u.Join))return{kind:"join",source:$(r,u.source,`${e}.source`,n),separator:ke(r,u.separator,e)};if(j(r,u.Count))return{kind:"count",source:$(r,u.source,`${e}.source`,n)};if(j(r,u.Sum))return{kind:"sum",source:$(r,u.source,`${e}.source`,n)};if(j(r,u.Min))return{kind:"min",source:$(r,u.source,`${e}.source`,n)};if(j(r,u.Max))return{kind:"max",source:$(r,u.source,`${e}.source`,n)};if(j(r,u.Average))return{kind:"average",source:$(r,u.source,`${e}.source`,n)};if(j(r,u.ForEach))return{kind:"for-each",source:$(r,u.source,`${e}.source`,n),loopVar:ke(r,u.loopVar,e),emit:$(r,u.emit,`${e}.emit`,n)};if(j(r,u.ListMap))return{kind:"list-map",source:$(r,u.source,`${e}.source`,n),loopVar:ke(r,u.loopVar,e),mapBody:$(r,u.mapBody,`${e}.mapBody`,n)};if(j(r,u.Filter))return{kind:"filter",source:$(r,u.source,`${e}.source`,n),loopVar:ke(r,u.loopVar,e),predicate:$(r,u.predicate,`${e}.predicate`,n)};if(j(r,u.PartitionBy))return{kind:"partition-by",source:$(r,u.source,`${e}.source`,n),loopVar:ke(r,u.loopVar,e),partitionKey:$(r,u.partitionKey,`${e}.partitionKey`,n)};if(j(r,u.DistinctBy))return{kind:"distinct-by",source:$(r,u.source,`${e}.source`,n),loopVar:ke(r,u.loopVar,e),distinctKey:$(r,u.distinctKey,`${e}.distinctKey`,n)};if(j(r,u.AllStatements))return{kind:"all-statements",source:$(r,u.statementsOf,`${e}.statementsOf`,n)};if(j(r,u.StatementPredicate))return{kind:"statement-predicate",source:$(r,u.predicateOf,`${e}.predicateOf`,n)};if(j(r,u.StatementValue))return{kind:"statement-value",source:$(r,u.valueOf,`${e}.valueOf`,n)};if(j(r,u.DateFormat))return{kind:"date-format",source:$(r,u.dateSource,`${e}.dateSource`,n),format:Yt(r,e)};if(j(r,u.Add))return{kind:"add",left:$(r,u.arithLeft,`${e}.arithLeft`,n),right:$(r,u.arithRight,`${e}.arithRight`,n)};if(j(r,u.Subtract))return{kind:"subtract",left:$(r,u.arithLeft,`${e}.arithLeft`,n),right:$(r,u.arithRight,`${e}.arithRight`,n)};if(j(r,u.Multiply))return{kind:"multiply",left:$(r,u.arithLeft,`${e}.arithLeft`,n),right:$(r,u.arithRight,`${e}.arithRight`,n)};if(j(r,u.Divide))return{kind:"divide",left:$(r,u.arithLeft,`${e}.arithLeft`,n),right:$(r,u.arithRight,`${e}.arithRight`,n)};if(j(r,u.Reverse))return{kind:"reverse",source:$(r,u.source,`${e}.source`,n)};if(j(r,u.WindowedMap)){let t=ct(r,u.windowSize);if(t===void 0||!Number.isInteger(t)||t<1)throw new W("windowSize must be a positive integer",`${e}.windowSize`);return{kind:"windowed-map",source:$(r,u.source,`${e}.source`,n),windowSize:t,windowVar:ke(r,u.windowVar,e),windowBody:$(r,u.windowBody,`${e}.windowBody`,n)}}if(j(r,u.PairwiseMap))return{kind:"pairwise-map",source:$(r,u.source,`${e}.source`,n),firstVar:ke(r,u.firstVar,e),secondVar:ke(r,u.secondVar,e),pairBody:$(r,u.pairBody,`${e}.pairBody`,n)};if(j(r,u.Scan))return{kind:"scan",source:$(r,u.source,`${e}.source`,n),initialState:$(r,u.initialState,`${e}.initialState`,n),stateVar:ke(r,u.stateVar,e),elementVar:ke(r,u.elementVar,e),accumulate:$(r,u.accumulate,`${e}.accumulate`,n)};if(j(r,u.ListItemAt))return{kind:"list-item-at",source:$(r,u.source,`${e}.source`,n),itemIndex:$(r,u.itemIndex,`${e}.itemIndex`,n)};if(j(r,u.Equals))return{kind:"equals",left:$(r,u.compareLeft,`${e}.compareLeft`,n),right:$(r,u.compareRight,`${e}.compareRight`,n)};if(j(r,u.GreaterThan))return{kind:"greater-than",left:$(r,u.compareLeft,`${e}.compareLeft`,n),right:$(r,u.compareRight,`${e}.compareRight`,n)};if(j(r,u.LessThan))return{kind:"less-than",left:$(r,u.compareLeft,`${e}.compareLeft`,n),right:$(r,u.compareRight,`${e}.compareRight`,n)};if(j(r,u.GreaterThanOrEqual))return{kind:"greater-than-or-equal",left:$(r,u.compareLeft,`${e}.compareLeft`,n),right:$(r,u.compareRight,`${e}.compareRight`,n)};if(j(r,u.LessThanOrEqual))return{kind:"less-than-or-equal",left:$(r,u.compareLeft,`${e}.compareLeft`,n),right:$(r,u.compareRight,`${e}.compareRight`,n)};if(j(r,u.Not))return{kind:"not",operand:$(r,u.operand,`${e}.operand`,n)};if(j(r,u.And))return{kind:"and",operands:vn(r,u.operands,`${e}.operands`,n)};if(j(r,u.Or))return{kind:"or",operands:vn(r,u.operands,`${e}.operands`,n)};if(j(r,u.Contains))return{kind:"contains",haystack:$(r,u.haystack,`${e}.haystack`,n),needle:$(r,u.needle,`${e}.needle`,n)};if(j(r,u.Abs))return{kind:"abs",value:$(r,u.value,`${e}.value`,n)};if(j(r,u.Negate))return{kind:"negate",value:$(r,u.value,`${e}.value`,n)};if(j(r,u.IsReference))return{kind:"is-reference",check:$(r,u.kindCheck,`${e}.kindCheck`,n)};if(j(r,u.IsEmbedded))return{kind:"is-embedded",check:$(r,u.kindCheck,`${e}.kindCheck`,n)};if(j(r,u.IsList))return{kind:"is-list",check:$(r,u.kindCheck,`${e}.kindCheck`,n)};if(j(r,u.IsString))return{kind:"is-string",check:$(r,u.kindCheck,`${e}.kindCheck`,n)};if(j(r,u.IsNumber))return{kind:"is-number",check:$(r,u.kindCheck,`${e}.kindCheck`,n)};if(j(r,u.IsBoolean))return{kind:"is-boolean",check:$(r,u.kindCheck,`${e}.kindCheck`,n)};if(j(r,u.StatementObject))return{kind:"statement-object",source:$(r,u.statementSource,`${e}.statementSource`,n)};if(j(r,u.Let))return{kind:"let",bindName:ke(r,u.letName,e),bindValue:$(r,u.letValue,`${e}.letValue`,n),body:$(r,u.letBody,`${e}.letBody`,n)};if(j(r,u.GetStatementByName))return{kind:"get-statement-by-name",inSubject:$(r,u.inSubject,`${e}.inSubject`,n),byName:$(r,u.byName,`${e}.byName`,n)};throw new W("Expression is not of a recognized v3 type \u2014 embedded has no matching subclass of tx.Expression",e)}function $(r,e,n,t){let a=Xe(r,e);if(!a)throw new W("child expression is required",n);return Fe(a,n,t)}function zt(r,e,n,t){let a=Xe(r,e);if(a)return Fe(a,n,t)}function vn(r,e,n,t){let a=[],s=0;for(let o of $e(r,e))if(o instanceof V)for(let i of o.object)i instanceof D&&a.push(Fe(i,`${n}[${s++}]`,t));else o instanceof z&&a.push(Fe(o.object,`${n}[${s++}]`,t));return a}function Gt(r,e,n){let t=[],a=0;for(let s of $e(r,u.set))if(s instanceof V)for(let o of s.object)o instanceof D&&t.push(nt(o,`${e}[${a++}]`,n));else s instanceof z&&t.push(nt(s.object,`${e}[${a++}]`,n));return t}function nt(r,e,n){return{field:Ie(r,u.field,e,"field"),value:$(r,u.bindValue,`${e}.bindValue`,n)}}function qt(r,e){let n=Ue(r,u.normKind);if(!n)throw new W("normKind is required",e);if(de(n,u.NORM_TRIM_END))return"trim-end";if(de(n,u.NORM_TO_UPPER))return"to-upper";if(de(n,u.NORM_TO_LOWER))return"to-lower";if(de(n,u.NORM_FIRST_CHAR))return"first-char";throw new W(`Unknown NormalizeKind: ${n.publisher}/${n.package_}/${n.name}`,e)}function Wt(r,e){let n=Ue(r,u.renderFormat);if(!n)throw new W("renderFormat is required",e);if(de(n,u.RENDER_HTML))return"html";if(de(n,u.RENDER_MARKDOWN))return"markdown";throw new W(`Unknown RenderFormat: ${n.publisher}/${n.package_}/${n.name}`,e)}var tt=new Set(["iso-date","iso-datetime","short-date","long-date","year","month-year"]);function Yt(r,e){let n=He(r,u.dateFormat);if(!n)throw new W("dateFormat is required",e);if(!tt.has(n))throw new W(`Unknown dateFormat "${n}"; supported: ${[...tt].join(", ")}`,e);return n}function Xt(r,e,n){let t=Ue(r,u.fragmentRef);if(!t)throw new W("fragmentRef is required",e);if(!Qt(n.catalog,t))throw new W(`ExpressionFragment not found: ${t.publisher}/${t.package_}/${t.name}`,e);return{kind:"call-fragment",fragmentKey:Jt(t)}}function Jt(r){return`${r.publisher}/${r.package_}/${r.name}`}function Zt(r){let e=new Map,n=[];for(let t of r){if(!(t instanceof Y)||!j(t,u.ExpressionFragment))continue;let a=Xe(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=Fe(t.bodyEmb,`fragment(${t.pubPkgName})`,{catalog:r,depth:0});e.set(t.key,a)}return e}function Qt(r,e){for(let n of r)if(!(!(n instanceof Y)||n.name!==e.name||!(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))&&j(n,u.ExpressionFragment))return n}function ot(r,e){let n=new Set;for(let t of $e(r,u.outputs))if(t instanceof C)n.add(t.object.subject.name);else if(t instanceof V)for(let a of t.object)a instanceof K&&n.add(a.subject.name);if(n.size===0)throw new W("outputs is required (at least one OutputFormat)",e);return n}function it(r,e,n){let t=new Map,a=0;for(let s of $e(r,u.formatOverrides))if(s instanceof V){for(let o of s.object)if(o instanceof D){let[i,c]=at(o,`${e}[${a++}]`);t.set(i,c)}}else if(s instanceof z){let[o,i]=at(s.object,`${e}[${a++}]`);t.set(o,i)}return t}function at(r,e){let n=Ue(r,u.formatTarget);if(!n)throw new W("formatTarget is required",e);let t=[];for(let i of $e(r,u.metadataKeys))if(i instanceof q)t.push(i.object);else if(i instanceof V)for(let c of i.object){let l=c.value;typeof l=="string"&&t.push(l)}let a=new Map;for(let i of $e(r,u.metadataRenames))if(i instanceof V){for(let c of i.object)if(c instanceof D){let l=He(c,u.fromKey),d=He(c,u.toKey);l&&d&&a.set(l,d)}}else if(i instanceof z){let c=i.object,l=He(c,u.fromKey),d=He(c,u.toKey);l&&d&&a.set(l,d)}let s=$n(r,u.trailingNewline),o=$n(r,u.omitWrapper);return[n.name,{metadataKeys:t.length>0?t:void 0,metadataRenames:a,trailingNewline:s,omitWrapper:o}]}function ea(r){return r.predicate?.subject}function $e(r,e){let n=[];for(let t of r.statement){let a=ea(t);a&&de(a,e)&&n.push(t)}return n}function Xe(r,e){for(let n of $e(r,e))if(n instanceof z)return n.object}function Ue(r,e){for(let n of $e(r,e))if(n instanceof C)return yn(n.object.subject)}function He(r,e){for(let n of $e(r,e))if(n instanceof q)return n.object}function ct(r,e){for(let n of $e(r,e))if(n instanceof ue)return n.object}function $n(r,e){for(let n of $e(r,e))if(n instanceof ae)return n.object}function ke(r,e,n){let t=He(r,e);if(t===void 0)throw new W(`${e.name} (string) is required`,n);return t}function rt(r,e,n){let t=ct(r,e);if(t===void 0)throw new W(`${e.name} (number) is required`,n);return t}function na(r,e,n){let t=$n(r,e);if(t===void 0)throw new W(`${e.name} (boolean) is required`,n);return t}function Ie(r,e,n,t){let a=Ue(r,e);if(!a)throw new W(`${t} (URI reference) is required`,n);return a}function yn(r){return{publisher:r.publisher,package_:r.package_,name:r.name}}var an=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=xe(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 k=p.metadata?.namespace_?.version;return k&&k.major===a.major&&k.minor===a.minor&&k.patch===a.patch})??l[0]:l[0],f=new Pn(d,this.repository);i=await this.objectParser.parseKanonaks(f),this.cache.set(o,i)}let c=xe(i,e);if(c)return c;for(let l of i)if(l instanceof Y&&l.name===e.name)return l}};var rn=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?Pe(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}">${Pe(i[0])}</span>`,a+=i[0].length,s=!0;break}}s||(t+=Pe(e[a]),a++)}return t}};var un={publisher:"kanonak.org",package_:"derivation",name:"look"},dn={publisher:"kanonak.org",package_:"derivation",name:"tokens"},Re={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},jn={publisher:"kanonak.org",package_:"core-rdf",name:"label"},lt={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},ta={publisher:"kanonak.org",package_:"core-rdf",name:"range"},aa={publisher:"kanonak.org",package_:"core-rdf",name:"Class"},ra={publisher:"kanonak.org",package_:"core-owl",name:"Class"},sa={publisher:"kanonak.org",package_:"look",name:"Hero"},oa={publisher:"kanonak.org",package_:"look",name:"PropertyList"},ia={publisher:"kanonak.org",package_:"look",name:"PropertyTable"},ca={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},la={publisher:"kanonak.org",package_:"look",name:"ChipRow"},ua={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},da={publisher:"kanonak.org",package_:"look",name:"ReferencedBy"},fa={publisher:"kanonak.org",package_:"look",name:"Instances"},ut={publisher:"kanonak.org",package_:"look",name:"Markdown"},pa={publisher:"kanonak.org",package_:"look",name:"NavGroup"},ga={publisher:"kanonak.org",package_:"look",name:"nav"},Sn={publisher:"kanonak.org",package_:"look",name:"NavLink"},ma={publisher:"kanonak.org",package_:"look",name:"footer"},ka={publisher:"kanonak.org",package_:"look",name:"text"},ha={publisher:"kanonak.org",package_:"look",name:"links"},dt={publisher:"kanonak.org",package_:"look",name:"target"},ba={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},va={publisher:"kanonak.org",package_:"look",name:"Timeline"},$a={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},ya={publisher:"kanonak.org",package_:"look",name:"Figure"},ja={publisher:"kanonak.org",package_:"look",name:"Diagram"},Sa={publisher:"kanonak.org",package_:"look",name:"facets"},wa={publisher:"kanonak.org",package_:"look",name:"relation"},_a={publisher:"kanonak.org",package_:"look",name:"encode"},Ka={publisher:"kanonak.org",package_:"look",name:"cluster"},Ra={publisher:"kanonak.org",package_:"look",name:"connector"},Ea={publisher:"kanonak.org",package_:"look",name:"channels"},La={publisher:"kanonak.org",package_:"look",name:"mapPath"},Oa={publisher:"kanonak.org",package_:"look",name:"to"},Ua={publisher:"kanonak.org",package_:"look",name:"mark"},Ia={publisher:"kanonak.org",package_:"look",name:"expand"},Fa={publisher:"kanonak.org",package_:"look",name:"edges"},Ca={publisher:"kanonak.org",package_:"look",name:"nodeTier"},Va={publisher:"kanonak.org",package_:"look",name:"diagramTier"},Ta={publisher:"kanonak.org",package_:"look",name:"nodeNote"},Aa={publisher:"kanonak.org",package_:"look",name:"edgeLabel"},Ma={publisher:"kanonak.org",package_:"look",name:"labelEdges"},xa={publisher:"kanonak.org",package_:"look",name:"edgeValue"},Na={publisher:"kanonak.org",package_:"look",name:"figureTitle"},Pa={publisher:"kanonak.org",package_:"look",name:"titlePosition"},Da=`(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
- })();`,Je={chip:56,icon:120,card:240,full:420},Ba=["chip","icon","card","full"],Ha={56:"chip",120:"icon",240:"card",420:"full"},_e=11,za={publisher:"kanonak.org",package_:"look",name:"placement"},Ga={publisher:"kanonak.org",package_:"look",name:"width"},qa=4,Wa={publisher:"kanonak.org",package_:"look",name:"StatRow"},Ya={publisher:"kanonak.org",package_:"look",name:"Horizon"},Xa={publisher:"kanonak.org",package_:"look",name:"PackageContents"},wn={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},Ja={publisher:"kanonak.org",package_:"core-kanonak",name:"Publisher"},Za={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},Qa={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},er={publisher:"kanonak.org",package_:"look",name:"packages"},nr={publisher:"kanonak.org",package_:"code-grammars",name:"CodeGrammar"},tr={publisher:"kanonak.org",package_:"code-grammars",name:"language"},ar={publisher:"kanonak.org",package_:"code-grammars",name:"rule"},rr={publisher:"kanonak.org",package_:"code-grammars",name:"tokenClass"},sr={publisher:"kanonak.org",package_:"code-grammars",name:"pattern"},or={publisher:"kanonak.org",package_:"look",name:"Links"},ir={publisher:"kanonak.org",package_:"link",name:"url"},cr={publisher:"kanonak.org",package_:"link",name:"links"};var lr={publisher:"kanonak.org",package_:"look",name:"Distribution"},ur={publisher:"kanonak.org",package_:"look",name:"alphaPath"},dr={publisher:"kanonak.org",package_:"look",name:"betaPath"},_n={publisher:"kanonak.org",package_:"look",name:"SectionHeading"},fr={publisher:"kanonak.org",package_:"look",name:"SectionNav"},ft={publisher:"kanonak.org",package_:"look",name:"heading"},pr={publisher:"kanonak.org",package_:"look",name:"note"},gr={publisher:"kanonak.org",package_:"look",name:"VersionDelta"},mr={publisher:"kanonak.org",package_:"look",name:"TimePlot"},kr={publisher:"kanonak.org",package_:"look",name:"Details"},hr={publisher:"kanonak.org",package_:"look",name:"EmbeddedViews"},br={publisher:"kanonak.org",package_:"look",name:"skip"},vr={publisher:"kanonak.org",package_:"derivation",name:"derivations"},$r={publisher:"kanonak.org",package_:"look",name:"laneBy"},yr={publisher:"kanonak.org",package_:"look",name:"stats"},jr={publisher:"kanonak.org",package_:"look",name:"statPath"},Sr={publisher:"kanonak.org",package_:"look",name:"statLabel"},pt={publisher:"kanonak.org",package_:"look",name:"labelPath"},wr={publisher:"kanonak.org",package_:"look",name:"badgePath"},Kn={publisher:"kanonak.org",package_:"look",name:"orderBy"},gt={publisher:"kanonak.org",package_:"look",name:"track"},sn={publisher:"kanonak.org",package_:"look",name:"metricPath"},Rn={publisher:"kanonak.org",package_:"look",name:"hueBy"},mt={publisher:"kanonak.org",package_:"look",name:"lowerPath"},kt={publisher:"kanonak.org",package_:"look",name:"upperPath"},_r={publisher:"kanonak.org",package_:"look",name:"axisMin"},Kr={publisher:"kanonak.org",package_:"look",name:"axisMax"},Rr={publisher:"kanonak.org",package_:"look",name:"valueLabel"};var ht={publisher:"kanonak.org",package_:"look",name:"semanticSvg"},Er={publisher:"kanonak.org",package_:"look",name:"tierChip"},Lr={publisher:"kanonak.org",package_:"look",name:"tierIcon"},Or={publisher:"kanonak.org",package_:"look",name:"tierCard"},Ur={publisher:"kanonak.org",package_:"look",name:"tierFull"},Ir={publisher:"kanonak.org",package_:"core-rdf",name:"type"},bt=6,En={publisher:"kanonak.org",package_:"look",name:"bands"},Fr={publisher:"kanonak.org",package_:"look",name:"title"},Cr={publisher:"kanonak.org",package_:"look",name:"eyebrow"},Vr={publisher:"kanonak.org",package_:"look",name:"subtitle"},vt={publisher:"kanonak.org",package_:"look",name:"badges"},pe={publisher:"kanonak.org",package_:"look",name:"source"},Tr={publisher:"kanonak.org",package_:"look",name:"via"},Ar={publisher:"kanonak.org",package_:"look",name:"size"},Mr={publisher:"kanonak.org",package_:"look",name:"icon"},xr={publisher:"kanonak.org",package_:"look",name:"avatar"},Nr={publisher:"kanonak.org",package_:"look",name:"contents"},Pr={publisher:"kanonak.org",package_:"look",name:"transitive"},Dr={publisher:"kanonak.org",package_:"look",name:"chips"},$t={publisher:"kanonak.org",package_:"look",name:"entries"},Br={publisher:"kanonak.org",package_:"look",name:"urlForm"},Fn=class{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 Mn.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=zr(e)?void 0:on(e);return n?{declaration:n,sourceClass:{publisher:Q(e),package_:(e.namespace||"").split("/")[1]?.split("@")[0]??"",name:e.name}}:this.lookFromTypeRefs(he(e))}lookFromTypeRefs(e){let n=new Set,t=[...e];for(;t.length>0;){let s=t.shift().subject,o=ne(s);if(n.has(o))continue;n.add(o);let i=me(this.catalog,s);for(let c of i){let l=on(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 Ze(c))t.push(l)}if(!n.has(ne(Re)))for(let a of me(this.catalog,Re)){let s=on(a);if(s)return{declaration:s,sourceClass:{...Re}}}}findCascadedTokens(e){let n=new Map;for(let[s,o]of Ln(e))n.has(s)||n.set(s,o);let t=new Set,a=he(e);for(;a.length>0;){let s=a.shift(),o=ne(s.subject);if(t.has(o))continue;t.add(o);let i=me(this.catalog,s.subject);if(i.length!==0)for(let c of i){for(let[l,d]of Ln(c))n.has(l)||n.set(l,d);for(let l of Ze(c))a.push(l)}}if(!t.has(ne(Re))){let s=me(this.catalog,Re);for(let o of s)for(let[i,c]of Ln(o))n.has(i)||n.set(i,c)}return n}async renderSvg(e){let n=B(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(([k,h])=>`--kan-${k}: ${h};`).join(" ");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" style="${ye(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 Vn,n=new Cn(e);this.resolverInstance=new an(n,e,new An(e))}return this.resolverInstance}async evaluateTier(e,n){if(!e)return"";let t;try{t=Fe(e,"semanticSvg-tier",{catalog:this.catalog,depth:0})}catch{return""}let a=new nn(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(jt(i.kind,c))}return o.join("")}let s=await a.evaluate(t,n);return jt(t.kind,s)}applyPlaceholders(e,n,t){return e.replace(/\{\{#([^}]+)\}\}([\s\S]*?)\{\{\/\1\}\}/g,(s,o,i)=>this.placeholderResolves(String(o).trim(),n,t)?i:"").replace(/\{\{([^}]+)\}\}/g,(s,o)=>{let i=o.trim();if(t[i]!==void 0)return ye(t[i]);let c=i.indexOf(":");if(c>0){let d=i.slice(0,c),f=i.slice(c+1).trim();if(d==="delta"||d==="deltaArrow"||d==="deltaColor"||d==="deltaDir"){let p=this.metricDelta(n,f);return d==="deltaColor"?p?p.dir==="up"?"#34d399":p.dir==="down"?"#f87171":"#9aa5b8":"#9aa5b8":d==="deltaDir"?p?p.dir:"new":p?d==="deltaArrow"?p.dir==="up"?"\u25B2":p.dir==="down"?"\u25BC":"\u2014":ye(`${p.delta>0?"+":""}${p.delta.toFixed(2)}`):""}if(d==="svg")return this.resolvePath(n,f)??""}let l=this.resolvePath(n,i);return l===void 0?`{{${i}}}`:ye(l)})}placeholderResolves(e,n,t){if(t[e]!==void 0)return t[e]!=="";let a=e.indexOf(":");if(a>0){let o=e.slice(0,a),i=e.slice(a+1).trim();if(o==="delta"||o==="deltaArrow")return this.metricDelta(n,i)!==void 0;if(o==="deltaColor"||o==="deltaDir")return!0;if(o==="svg"){let c=this.resolvePath(n,i);return c!==void 0&&c!==""}}let s=this.resolvePath(n,e);return s!==void 0&&s!==""}metricDelta(e,n){let t=k=>{let h=this.resolvePath(k,n),m=h===void 0?NaN:parseFloat(h);return Number.isFinite(m)?m:void 0},a=t(e);if(a===void 0)return;let s=k=>ve((k.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},o=(k,h)=>k.major-h.major||k.minor-h.minor||k.patch-h.patch,i={publisher:Q(e),package_:(e.namespace||"").split("/")[1]?.split("@")[0]??"",name:e.name},c=s(e),l,d;for(let k of me(this.catalog,i)){let h=s(k);o(h,c)<0&&(!d||o(h,d)>0)&&(l=k,d=h)}if(!l)return;let f=t(l);if(f===void 0)return;let p=a-f;return{delta:p,dir:Math.abs(p)<.005?"flat":p>0?"up":"down"}}resolvePath(e,n){let t=n.split("/").map(a=>a.trim()).filter(a=>a.length>0);if(t.length!==0)return this.resolvePathSteps(e,t)}resolvePathSteps(e,n){let t=Gr(n[0]);if(n.length===1){let o=[];for(let i of Wr(e,t))for(let c of this.finalStatementTexts(i))c!==""&&o.push(c);return o.length>0?o.join(", "):void 0}let s=qr(e,t);if(s){if(s instanceof z)return this.resolvePathSteps(s.object,n.slice(1));if(s instanceof C&&s.object instanceof K){let o=s.object.subject,i=me(this.catalog,o);if(i.length===0){let l=Z(this.catalog,o);l&&i.push(l)}let c=n.slice(1);for(let l of i){let d=this.resolvePathSteps(l,c);if(d!==void 0)return d}return}}}finalStatementTexts(e){if(e instanceof C&&e.object instanceof K)return[this.referenceLabel(e.object)];if(e instanceof q)return[String(e.object)];if(e instanceof ue)return[String(e.object)];if(e instanceof ae)return[String(e.object)];if(e instanceof V){let n=[];for(let t of e.object??[]){if(t instanceof K){n.push(this.referenceLabel(t));continue}let a=t.value;(typeof a=="string"||typeof a=="number"||typeof a=="boolean")&&n.push(String(a))}return n}return[]}referenceLabel(e){let n=e.subject,t=me(this.catalog,n);if(t.length===0){let a=Z(this.catalog,n);a&&t.push(a)}for(let a of t){let s=B(this.catalog,a);if(s.label!==a.name)return s.label}return n.name}collectCascadedSvgTiers(e){let n={},t=c=>{let l=X(c,ht);if(!(l instanceof z))return;let d=l.object,f=cn(d,Er),p=cn(d,Lr),k=cn(d,Or),h=cn(d,Ur);n.tierChip===void 0&&f!==void 0&&(n.tierChip=f),n.tierIcon===void 0&&p!==void 0&&(n.tierIcon=p),n.tierCard===void 0&&k!==void 0&&(n.tierCard=k),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 me(this.catalog,l))t(d)}let o=new Set,i=he(e);for(;i.length>0;){let c=i.shift(),l=ne(c.subject);if(o.has(l))continue;o.add(l);let d=me(this.catalog,c.subject);for(let f of d){t(f);for(let p of Ze(f))i.push(p)}}if(!o.has(ne(Re)))for(let c of me(this.catalog,Re))t(c);return n}renderStylesheet(e){let n=this.findCascadedTokens(e),t=[];for(let[o,i]of n)t.push(` --kan-${o}: ${i};`);let a=t.length>0?`:root {
78
- ${t.join(`
79
- `)}
80
- }`:":root { /* no tokens resolved */ }",s=this.findBaseStylesheet(Q(e))??"";return`${a}
81
- ${s}`}findBaseStylesheet(e){let n="kanonak.org/site/content",t=l=>ve((l.namespace||"").split("@")[1]??""),a,s,o,i;for(let l of this.catalog){if(!(l instanceof Y)||l.name!=="base-stylesheet")continue;let d=l.namespace||"";if(d.startsWith(`${e}/look-styles@`)){let f=t(l);f&&(!s||Qe(f,s)>0)&&(a=l,s=f)}else if(d.startsWith("kanonak.org/look-styles@")){let f=t(l);f&&(!i||Qe(f,i)>0)&&(o=l,i=f)}}let c=a??o;if(c)for(let l of c.statement){let d=l.predicate?.subject;if(!d)continue;if(`${d.publisher}/${d.package_}/${d.name}`===n&&l instanceof q)return l.object}}renderHtml(e){let n=this.findCascadedLook(e);if(!n)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let t=On(n.declaration);if(t.length===0)return"<!-- LookRenderer: look declaration has no bands -->";let a=Q(e),s=this.collectSectionHeadings(t);this.diagramScriptEmitted=!1,this.diagramArrowSeq=0;let o=[];for(let i of t){let c=ze(i);c&&E(c,_n)&&o.push('<div style="clear:both"></div>'),o.push(this.applyBandPlacement(i,this.renderBand(i,e,a,s)))}return o.push('<div style="clear:both"></div>'),o.join(`
82
- `)}applyBandPlacement(e,n){let t=F(e,za);if(t!=="floatLeft"&&t!=="floatRight")return n;let a=t==="floatLeft"?"left":"right",s=F(e,Ga),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||!E(a,_n))continue;let s=F(t,ft);s&&n.push({slug:St(s),label:s})}return n}publisherSubject(e){for(let t of this.catalog)if(t instanceof Y&&Q(t)===e&&he(t).some(a=>E(a.subject,Ja)))return t;let n=new Y;return n.namespace=e,n.name=e,n.statement=[C.parse("kanonak.org/core-rdf/type","kanonak.org/core-kanonak/Publisher"),q.parse("kanonak.org/core-rdf/label",e)],n}hasDeclaredView(e){let n=this.findCascadedLook(e);return n?!(a=>a.publisher===Re.publisher&&a.package_===Re.package_&&a.name===Re.name||a.publisher===wn.publisher&&a.package_===wn.package_&&a.name===wn.name)(n.sourceClass):!1}renderPackageVersionList(e,n,t){let a=Q(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(`
83
- `),c=`<header class="kan-hero">
84
- <span class="kan-hero-eyebrow">PACKAGE</span>
85
- <h1 class="kan-hero-title">${g(e)}</h1>
86
- </header>
87
- <section class="kan-resource-grid">
88
- ${i}
89
- </section>`;return`<!doctype html>
90
- <html lang="en">
91
- <head>
92
- <meta charset="utf-8">
93
- <meta name="viewport" content="width=device-width, initial-scale=1">
94
- <title>${g(e)}</title>
95
- <link rel="stylesheet" href="${g(t.name)}.css">
96
- </head>
97
- <body>
98
- ${s}
99
- ${o}
100
- <main class="kan-main">
101
- ${c}
102
- </main>
103
- </body>
104
- </html>
105
- `}renderDocument(e,n){let t=this.renderHtml(e),a=B(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>
106
- `:"",i=Q(e),c=this.renderNavGroup(e,i),l=this.renderSiteFooter(i),d=n?.rootIndex?"":this.renderBreadcrumb(e,i,n);return`<!doctype html>
107
- <html lang="en">
108
- <head>
109
- <meta charset="utf-8">
110
- <meta name="viewport" content="width=device-width, initial-scale=1">
111
- <title>${g(a)}</title>
112
- <link rel="stylesheet" href="${g(s)}">
113
- </head>
114
- <body>
115
- ${c}
116
- ${d}
117
- <main class="kan-main">
118
- ${o}${t}
119
- </main>
120
- ${l}
121
- </body>
122
- </html>
123
- `}hasSvgDerivation(e){let n=new Set,t=he(e);for(;t.length>0;){let a=t.shift(),s=ne(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 V&&Se(i,"kanonak.org","derivation","derivations")){for(let c of i.object??[])if(c instanceof D)for(let l of c.statement){if(!(l instanceof C)||!Se(l,"kanonak.org","derivation","format")||!(l.object instanceof K))continue;let d=l.object.subject;if(d.publisher==="kanonak.org"&&d.package_==="formats"&&d.name==="svg")return!0}}for(let i of Ze(o))t.push(i)}}return!1}renderBand(e,n,t,a=[],s=""){let o=ze(e);return o?E(o,fr)?this.renderSectionNav(a):E(o,sa)?this.renderHero(e,n,t):E(o,oa)?this.renderPropertyList(e,n,t):E(o,ia)?this.renderPropertyTable(e,n,t,s):E(o,ca)?this.renderBadgeRow(e,n,t):E(o,la)?this.renderChipRow(e,n,t):E(o,ua)?this.renderReferenceList(e,n,t):E(o,da)?this.renderReferencedBy(e,n,t):E(o,fa)?this.renderInstances(e,n,t):E(o,ut)?this.renderMarkdown(e,n,t):E(o,or)?this.renderLinks(e,n):E(o,pa)?this.renderNavGroup(n,t):E(o,ba)?this.renderResourceGrid(e,t,n):E(o,va)?this.renderTimeline(e,t):E(o,$a)?this.renderVersionDiff(e,t):E(o,ya)?this.renderFigure(e,n,t):E(o,ja)?this.renderDiagram(e,n,t):E(o,Wa)?this.renderStatRow(e,n):E(o,Ya)?this.renderHorizon(e,n,t):E(o,Xa)?this.renderPackageContents(n,t):E(o,Za)?this.renderFeaturedResource(e,t):E(o,Qa)?this.renderPublisherPackages(e,t):E(o,lr)?this.renderDistribution(e,n):E(o,_n)?this.renderSectionHeading(e):E(o,gr)?this.renderVersionDelta(e,n):E(o,mr)?this.renderTimePlot(e,n,t):E(o,kr)?this.renderDetails(e,n,t):E(o,hr)?this.renderEmbeddedViews(e,n,t,s):`<!-- LookRenderer: unsupported band ${o.publisher}/${o.package_}/${o.name} -->`:"<!-- LookRenderer: band has no rdf:type -->"}collectTrackedSeries(e,n,t,a){let{hueBy:s,lowerPath:o,upperPath:i}=a??{},c=new Map,l=e.length,d=(f,p)=>{let k=this.resolvePath(f,p);return k===void 0?NaN:parseFloat(k)};return e.forEach((f,p)=>{let k=this.readPropertyValueReferences(f,n);for(let h of k){let m=Z(this.catalog,{publisher:h.subject.publisher,package_:h.subject.package_,name:h.subject.name,...h.subject.version?{version:h.subject.version}:{}});if(!m)continue;let b=h.subject.name,v=c.get(b);v||(v={key:b,label:B(this.catalog,m).label,points:new Array(l).fill(null),...o?{lower:new Array(l).fill(null)}:{},...i?{upper:new Array(l).fill(null)}:{}},c.set(b,v));let w=d(m,t);if(Number.isFinite(w)&&(v.points[p]=w),o&&v.lower){let S=d(m,o);Number.isFinite(S)&&(v.lower[p]=S)}if(i&&v.upper){let S=d(m,i);Number.isFinite(S)&&(v.upper[p]=S)}if(s){let S=d(m,s);Number.isFinite(S)&&(v.hue=S)}v.lastSubject=m}}),[...c.values()]}hrefForSubject(e,n,t="="){let a=e.namespace||"",s=a.split("/")[1]?.split("@")[0]??"",o=a.split("@")[1]??"",i=o?ve(o):void 0;return this.resourceHref({publisher:Q(e),package_:s,name:e.name,...i?{version:i}:{}},n,t)}renderVersionDiff(e,n){let t=H(e,pe);if(!t)return"<!-- LookRenderer.VersionDiff: no look.source -->";let a=F(e,sn),s=H(e,gt);if(!s||!a)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let o=H(e,Kn),i=F(e,Rn),c=this.findInstancesOfClass(t);if(c.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let l=k=>o?this.readPropertyValueText(k,o)??"":"",d=c.slice().sort((k,h)=>l(k).localeCompare(l(h))),f=this.collectTrackedSeries(d,s,a,{hueBy:i});return f.length===0?"<!-- LookRenderer.VersionDiff: no tracked series -->":`<section class="kan-vdiff">${f.map((k,h)=>{let m=k.hue!==void 0?k.hue:Math.round(h*360/f.length),b=k.points.filter(U=>U!==null);if(b.length===0)return"";let v=b[0],w=b[b.length-1],S=w-v,R;if(Math.abs(S)>=.005){let U=S>0?"up":"down",A=S>0?"\u25B2":"\u25BC";R=`<span class="kan-vdiff-delta ${U}">${S>0?"+":""}${S.toFixed(2)} ${A}</span>`}else R='<span class="kan-vdiff-delta flat">\u2014</span>';let I=k.lastSubject&&this.isLinkable(Q(k.lastSubject),n)?`<a href="${g(this.hrefForSubject(k.lastSubject,n))}">${g(k.label)}</a>`:g(k.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${m}"><span class="kan-vdiff-label">${I}</span><span class="kan-vdiff-start">${v.toFixed(2)}</span>`+this.sparkline(k.points,m)+`<span class="kan-vdiff-end">${w.toFixed(2)}</span>`+R+"</div>"}).join("")}</section>`}sparkline(e,n){let o=`hsl(${n},65%,60%)`,i=e.filter(b=>b!==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=b=>f<=1?132/2:4+b/(f-1)*124,k=b=>d<1e-9?30/2:26-(b-c)/d*22,h=[],m=[];return e.forEach((b,v)=>{if(b===null)return;let w=p(v),S=k(b);h.push(`${w.toFixed(1)},${S.toFixed(1)}`),m.push(`<circle cx="${w.toFixed(1)}" cy="${S.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"/>`+m.join("")+"</svg>"}svgUrlForSubject(e,n,t="="){return`${this.hrefForSubject(e,n,t)}.svg`}renderFigure(e,n,t){let a=n,s=H(e,pe);if(s){let d=Z(this.catalog,s);d&&(a=d)}let o=this.svgUrlForSubject(a,t),i=B(this.catalog,a).label,c=F(e,Ar);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;renderDiagram(e,n,t,a=0,s=new Set){let o=this.gatherValueItems(X(e,Sa)).filter(h=>h instanceof D);if(o.length===0)return"<!-- LookRenderer.Diagram: no look.facets -->";let i=[];for(let h of o){let m=H(h,wa);if(!m){i.push("<!-- LookRenderer.Diagram: facet has no resolvable look.relation -->");continue}let b=H(h,_a),v=this.resolveFacetNodes(n,m);if(v.length===0){i.push(`<!-- LookRenderer.Diagram: relation ${m.publisher}/${m.package_}/${m.name} resolved to 0 instances -->`);continue}let w=this.resolveFacetChannels(h,v),S=X(h,Ua),R=S instanceof z&&S.object instanceof D?S.object:void 0,I=F(h,Ca),U=I&&Je[I]!==void 0?Je[I]:void 0,A=U??this.classTierSize(v),x=Ha[A??Je.icon]??"icon",G=F(h,Ta),te=H(h,Ia),N=te?Z(this.catalog,te):void 0;if(N){i.push(this.renderDiagramExpand(v,N,t,a,s,G,U));continue}if(b&&E(b,Ra)){let T=H(h,Fa),J=this.facetEdgeLabel(h,T??m),ie=F(h,xa);i.push(this.embedTiers(x,be=>T?this.renderDiagramDag(v,T,w,t,be,J,ie):this.renderDiagramConnector(n,v,w,t,be,J,ie)));continue}if(b&&!E(b,Ka)){i.push(`<!-- LookRenderer.Diagram: unknown encode role ${b.publisher}/${b.package_}/${b.name} -->`);continue}i.push(R?`<div class="kan-dgm-tiers" data-geo="1"><div class="kan-dgm-tier" data-tier="card">${this.renderDiagramCluster(v,w,R,t,A)}</div></div>`:this.embedTiers(x,T=>this.renderDiagramCluster(v,w,void 0,t,T)))}let c=F(e,Na),l=F(e,Pa),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"):"",k="";return a===0&&!this.diagramScriptEmitted&&(this.diagramScriptEmitted=!0,k=`<script>${Da}</script>`),`<section class="kan-diagram">${f}${i.join("")}${p}${k}</section>`}embedTiers(e,n){return`<div class="kan-dgm-tiers">${Ba.map(a=>`<div class="kan-dgm-tier" data-tier="${a}"${a===e?"":" hidden"}>${n(Je[a])}</div>`).join("")}</div>`}renderDiagramExpand(e,n,t,a,s,o,i){return`<figure class="kan-diagram-figure"><div class="kan-diagram-tree">${e.map(l=>{let d=`${l.namespace??""}/${l.name}`,f=this.diagramNodeRow(l,t,i??56,o),k=a<qa&&!s.has(d)?this.renderDiagram(n,l,t,a+1,new Set([...s,d])):"",h=k?`<div style="margin-left:30px;border-left:2px solid var(--kan-border);padding-left:14px;margin-top:6px">${k}</div>`:"";return`<div class="kan-diagram-node" style="margin:6px 0">${f}${h}</div>`}).join("")}</div></figure>`}diagramNodeRow(e,n,t=56,a){let s=this.hrefForSubject(e,n),o=this.svgUrlForSubject(e,n),i=B(this.catalog,e).label,c=a?this.resolvePath(e,a):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 he(t)){let s=Z(this.catalog,a.subject);if(!s)continue;let o=F(s,Va),i=o?Je[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}resolveFacetChannels(e,n){let t=this.gatherValueItems(X(e,Ea)).filter(s=>s instanceof D),a=[];for(let s of t){let o=F(s,La),i=F(s,Oa);if(!o||!i)continue;let c=n.map(h=>{let m=this.resolvePath(h,o),b=m===void 0?NaN:parseFloat(m);return Number.isFinite(b)?b:NaN}),l=c.filter(h=>Number.isFinite(h)),d=l.length?Math.min(...l):0,p=(l.length?Math.max(...l):0)-d,k=c.map(h=>Number.isFinite(h)&&p>0?(h-d)/p:.5);a.push({to:i,norm:k})}return a}facetEdgeLabel(e,n){let t=F(e,Aa);if(t)return t;if(Hr(e,Ma)&&n){let s=Z(this.catalog,n);if(s)return B(this.catalog,s).label}}edgeText(e,n,t){let a=t&&n?this.resolvePath(n,t):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>`}renderDiagramCluster(e,n,t,a,s){let o=s??132,i=18,c=18,l=n.find(m=>m.to==="opacity");if(t)return`<figure class="kan-diagram-figure"><div class="kan-diagram-marks" style="display:flex;flex-wrap:wrap;gap:18px;align-items:flex-start">${e.map((b,v)=>{let w=this.renderBand(t,b,a),S=this.hrefForSubject(b,a),R=B(this.catalog,b).label,I=l?`opacity:${(.4+l.norm[v]*.6).toFixed(2)};`:"";return`<a class="kan-diagram-mark" href="${g(S)}" style="display:block;text-decoration:none;${I}">${w}<span class="kan-diagram-mark-label">${g(R)}</span></a>`}).join("")}</div></figure>`;let d=Math.min(e.length,4),f=Math.ceil(e.length/d),p=c*2+d*o+(d-1)*i,k=c*2+f*o+(f-1)*i,h=e.map((m,b)=>{let v=b%d,w=Math.floor(b/d),S=c+v*(o+i),R=c+w*(o+i),I=l?.4+l.norm[b]*.6:1;return this.diagramTile(m,S,R,o,a,I)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${p} ${k}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${h}</svg></figure>`}renderDiagramConnector(e,n,t,a,s,o,i){let c=s??120,l=24,d=130,f=18,p=t.find(te=>te.to==="thickness"),k=t.find(te=>te.to==="opacity"),h=n.length,m=h*c+(h-1)*l,b=f*2+m,v=f*2+c+d+c,w=f,S=f+(m-c)/2,R=f+c+d,I=`kan-arrow-${this.diagramArrowSeq++}`,U=[],A=[],x=[];n.forEach((te,N)=>{let T=f+N*(c+l),J=w+c,ie=S+c/2,be=R-_e,O=T+c/2,ee=(J+R)/2,y=p?1.5+p.norm[N]*5.5:2,L=k?.4+k.norm[N]*.6:1,M=k?` stroke-opacity="${L.toFixed(2)}"`:"";U.push(`<path d="M${J.toFixed(1)},${ie.toFixed(1)} C${ee.toFixed(1)},${ie.toFixed(1)} ${ee.toFixed(1)},${O.toFixed(1)} ${be.toFixed(1)},${O.toFixed(1)}" class="kan-diagram-edge" fill="none" stroke="var(--kan-border)" stroke-width="${y.toFixed(1)}"${M} marker-end="url(#${I})"/>`);let _=this.edgeText(o,te,i);_&&A.push(this.edgeLabelEl((J+R)/2,(ie+O)/2-5,_)),x.push(this.diagramTile(te,R,T,c,a,k?L:1))});let G=this.diagramTile(e,w,S,c,a);return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${v.toFixed(0)} ${b.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(I,"var(--kan-border)")}${U.join("")}${A.join("")}${G}${x.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>`}renderDiagramDag(e,n,t,a,s,o,i){let c=s??110,l=110,d=22,f=18,p=new Map(e.map((y,L)=>[y.name,L])),k=new Set(e.map(y=>y.name)),h=new Map(e.map(y=>[y.name,[]])),m=new Map(e.map(y=>[y.name,[]]));for(let y of e)for(let L of this.readPropertyValueReferences(y,n)){let M=L.subject.name;M!==y.name&&k.has(M)&&(h.get(y.name).push(M),m.get(M).push(y.name))}let b=new Map,v=new Set,w=y=>{let L=b.get(y);if(L!==void 0)return L;if(v.has(y))return 0;v.add(y);let M=0;for(let _ of m.get(y)??[])M=Math.max(M,w(_)+1);return v.delete(y),b.set(y,M),M};for(let y of e)w(y.name);let S=Math.min(...b.values());if(S>0)for(let y of[...b.keys()])b.set(y,b.get(y)-S);let R=Math.max(0,...b.values()),I=Array.from({length:R+1},()=>[]);for(let y of e)I[b.get(y.name)].push(y);let U=Math.max(1,...I.map(y=>y.length)),A=!1;for(let[y,L]of h)for(let M of L)b.get(M)<=b.get(y)&&(A=!0);let x=A?84:0,G=U*c+(U-1)*d,te=f*2+(R+1)*c+R*l,N=f*2+x+G,T=new Map;I.forEach((y,L)=>{let M=y.length*c+(y.length-1)*d,_=f+x+(G-M)/2;y.forEach((P,re)=>T.set(P.name,{x:f+L*(c+l),y:_+re*(c+d)}))});let J=t.find(y=>y.to==="thickness"),ie=`kan-arrow-${this.diagramArrowSeq++}`,be=[],O=[];for(let[y,L]of h){let M=T.get(y);for(let _ of L){let P=T.get(_),re=P.x>=M.x,ge=J?1.5+J.norm[p.get(y)]*4.5:2,se,ce,le;if(re){let oe=M.x+c,Ce=M.y+c/2,Le=P.x-_e,Ge=P.y+c/2,Ae=(oe+Le)/2;se=`M${oe.toFixed(1)},${Ce.toFixed(1)} C${Ae.toFixed(1)},${Ce.toFixed(1)} ${Ae.toFixed(1)},${Ge.toFixed(1)} ${Le.toFixed(1)},${Ge.toFixed(1)}`,ce=(oe+Le)/2,le=(Ce+Ge)/2-5}else{let oe=M.x+c/2,Ce=M.y,Le=P.x+c/2,Ge=P.y-_e,Ae=f+x*.2;se=`M${oe.toFixed(1)},${Ce.toFixed(1)} C${oe.toFixed(1)},${Ae.toFixed(1)} ${Le.toFixed(1)},${Ae.toFixed(1)} ${Le.toFixed(1)},${Ge.toFixed(1)}`,ce=(oe+Le)/2,le=Ae+4}let Ee=re?"":' stroke-dasharray="6 4"';be.push(`<path d="${se}" class="kan-diagram-edge" fill="none" stroke="var(--kan-accent)" stroke-width="${ge.toFixed(1)}" stroke-opacity="0.75"${Ee} marker-end="url(#${ie})"/>`);let we=this.edgeText(o,e[p.get(y)],i);we&&O.push(this.edgeLabelEl(ce,le,we))}}let ee=e.map(y=>{let L=T.get(y.name);return this.diagramTile(y,L.x,L.y,c,a)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${te.toFixed(0)} ${N.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(ie,"var(--kan-accent)")}${be.join("")}${O.join("")}${ee}</svg></figure>`}diagramTile(e,n,t,a,s,o=1){let i=this.hrefForSubject(e,s),c=this.svgUrlForSubject(e,s),l=B(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>`}renderStatRow(e,n){let t=X(e,yr),a=this.gatherValueItems(t).filter(o=>o instanceof D);if(a.length===0)return"<!-- LookRenderer.StatRow: no look.stats -->";let s=[];for(let o of a){let i=F(o,jr);if(!i)continue;let c=this.resolvePath(n,i);if(c===void 0)continue;let l=F(o,Sr)??"";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>`}renderHorizon(e,n,t){let a=H(e,pe);if(!a)return"<!-- LookRenderer.Horizon: no look.source -->";let s=this.gatherValueItems(X(n,a)).filter(i=>i instanceof D);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 k=p.predicate?.subject;if(!k||k.name==="type")continue;let h=this.readLabelForUri({publisher:k.publisher,package_:k.package_,name:k.name})??k.name;if(p instanceof q||p instanceof ue||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 C&&p.object instanceof K){let m=p.object.subject,b=this.readLabelForUri({publisher:m.publisher,package_:m.package_,name:m.name})??m.name;o.push(`<div class="kan-cond-field"><span class="kan-cond-key">${g(h)}</span><span class="kan-cond-v">${g(b)}</span></div>`)}else if(p instanceof z)i.push(this.renderConditionNode(p.object,n,t+1));else if(p instanceof V)for(let m of p.object??[])m instanceof D&&i.push(this.renderConditionNode(m,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=F(n,ft);if(!t)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let a=F(n,pr);return`<div class="kan-section" id="${St(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>`}renderVersionDelta(e,n){let a=F(e,sn);if(!a)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let s=N=>{let T=this.resolvePath(N,a),J=T===void 0?NaN:parseFloat(T);return Number.isFinite(J)?J:void 0},o=s(n);if(o===void 0)return"";let i=N=>ve((N.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},c=(N,T)=>N.major-T.major||N.minor-T.minor||N.patch-T.patch,l={publisher:Q(n),package_:(n.namespace||"").split("/")[1]?.split("@")[0]??"",name:n.name},d=i(n),f,p;for(let N of me(this.catalog,l)){let T=i(N);c(T,d)<0&&(!p||c(T,p)>0)&&(f=N,p=T)}if(!f||!p)return'<div class="kan-delta kan-delta-first">First tracked in this version</div>';let k=s(f);if(k===void 0)return"";let h=o-k,m=Math.abs(h)<.005?"flat":h>0?"up":"down",b=m==="up"?"\u25B2":m==="down"?"\u25BC":"\u2014",v=m==="up"?"#34d399":m==="down"?"#f87171":"var(--kan-text-faint)",w=`${p.major}.${p.minor}.${p.patch}`,S=320,R=46,I=14,U=30,A=N=>I+Math.min(1,Math.max(0,N))*(S-2*I),x=A(k),G=A(o),te=`<svg class="kan-delta-track" viewBox="0 0 ${S} ${R}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${I}" y1="${U}" x2="${S-I}" y2="${U}" class="kan-delta-base"/><line x1="${x.toFixed(1)}" y1="${U}" x2="${G.toFixed(1)}" y2="${U}" stroke="${v}" stroke-width="3"/><circle cx="${x.toFixed(1)}" cy="${U}" r="4" class="kan-delta-prev"/><circle cx="${G.toFixed(1)}" cy="${U}" r="5.5" fill="${v}"/><text x="${x.toFixed(1)}" y="${U-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${k.toFixed(2)}</text><text x="${G.toFixed(1)}" y="${U+17}" text-anchor="middle" class="kan-delta-tick">${o.toFixed(2)}</text></svg>`;return`<div class="kan-delta"><div class="kan-delta-head"><span class="kan-delta-vs">vs ${g(w)}</span><span class="kan-delta-badge ${m}">${h>0?"+":""}${h.toFixed(2)} ${b}</span></div>`+te+"</div>"}renderTimePlot(e,n,t){let a=H(e,pe),s=H(e,Kn);if(!a||!s)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let o=e,i=F(o,$r),c=F(o,pt),l=[];for(let O of this.readPropertyValueReferences(n,a)){let ee=Z(this.catalog,{publisher:O.subject.publisher,package_:O.subject.package_,name:O.subject.name,...O.subject.version?{version:O.subject.version}:{}});if(!ee)continue;let y=this.readPropertyValueText(ee,s)??"",L=Date.parse(y);if(!Number.isFinite(L))continue;let M=i?this.resolvePath(ee,i)??"":"",_=(c?this.resolvePath(ee,c):void 0)??B(this.catalog,ee).label;l.push({t:L,dateStr:y,lane:M,label:_,href:this.hrefForSubject(ee,t),linkable:this.isLinkable(Q(ee),t)})}if(l.length===0)return"<!-- LookRenderer.TimePlot: no dated points -->";let d=[];for(let O of l)d.includes(O.lane)||d.push(O.lane);let f=Math.min(...l.map(O=>O.t)),p=Math.max(...l.map(O=>O.t));p===f&&(p=f+1);let k=d.some(O=>O),h=720,m=k?96:16,b=18,v=12,w=24,S=36,R=v+d.length*S+w,I=m,U=h-b,A=U-I,x=O=>I+(O-f)/(p-f)*A,G=O=>v+O*S+S/2,te=O=>Math.round(O*360/Math.max(1,d.length)),N=[];d.forEach((O,ee)=>{let y=G(ee);N.push(`<line x1="${I}" y1="${y.toFixed(1)}" x2="${U}" y2="${y.toFixed(1)}" class="kan-plot-guide"/>`),O&&N.push(`<text x="${(m-8).toFixed(1)}" y="${(y+4).toFixed(1)}" text-anchor="end" class="kan-plot-lane">${ye(O)}</text>`)});let T={},J=[];for(let O of l){let ee=d.indexOf(O.lane),L=((T[O.lane]=(T[O.lane]??0)+1)%3-1)*7,M=x(O.t),_=G(ee)+L,P=`${ln(O.dateStr)} \xB7 ${O.label}`,re=`<circle cx="${M.toFixed(1)}" cy="${_.toFixed(1)}" r="5" fill="hsl(${te(ee)},65%,60%)" class="kan-plot-pt"><title>${ye(P)}</title></circle>`;J.push(O.linkable?`<a href="${g(O.href)}" class="kan-plot-link">${re}</a>`:re)}let ie=`<text x="${I}" y="${(R-6).toFixed(1)}" text-anchor="start" class="kan-plot-axis">${ye(ln(new Date(f).toISOString()))}</text><text x="${U}" y="${(R-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${ye(ln(new Date(p).toISOString()))}</text>`;return`<section class="kan-plot">${`<svg class="kan-plot-svg" viewBox="0 0 ${h} ${R}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+N.join("")+J.join("")+ie+"</svg>"}</section>`}renderDetails(e,n,t){let a=Un(e,br),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=>E(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 q)return _t(e.object);if(e instanceof ue||e instanceof ae)return g(String(e.object));if(e instanceof C&&e.object instanceof K)return this.detailReferenceLink(e.object,n);if(e instanceof z)return this.detailEmbedded(e.object,n,t);if(e instanceof V){let a=e.object??[];return a.length>0&&a.every(s=>s instanceof D)?a.map(s=>this.detailEmbedded(s,n,t)).join(""):a.map(s=>s instanceof K?this.detailReferenceLink(s,n):s instanceof D?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=X(n,ta);return t instanceof C&&t.object instanceof K?[t.object]:[]}renderEmbeddedViews(e,n,t,a=""){let s=H(e,pe);if(!s)return"<!-- LookRenderer: EmbeddedViews missing look.source -->";let o=this.gatherValueItems(X(n,s)).filter(k=>k instanceof D);if(o.length===0)return"";let i=a?`${a}.${s.name}`:s.name,c=X(e,Nr),l=c instanceof ae?c.object===!0:c instanceof q&&c.object==="true",d=[],f=o.map(k=>{let h=k,m=k.name?`${i}.${k.name}`:"";if(l&&m){let U=B(this.catalog,h).label||k.name||m;d.push(`<a class="kan-section-nav-link" href="#${g(m)}">${g(U)}</a>`)}let b=he(h),v=b.length>0?b:this.rangeTypeRefs(s),w=on(h)?this.findCascadedLook(h):this.lookFromTypeRefs(v),S="";if(w)S=On(w.declaration).map(U=>this.renderBand(U,h,t,[],m)).join(`
124
- `);else{let U=this.detailRows(k,t,[]);S=U?`<dl class="kan-details">${U}</dl>`:""}let R=m?` id="${g(m)}"`:"",I=m?this.anchorLink(m):"";return`<section class="kan-embedded-view"${R}>${I}${S}</section>`});return`<div class="kan-embedded-views">${d.length>0?`<nav class="kan-section-nav" aria-label="On this page">${d.join("")}</nav>
125
- `:""}${f.join(`
126
- `)}</div>`}anchorLink(e){return`<a class="kan-anchor" href="#${g(e)}" title="${g(e)}" aria-label="Link to this resource">#</a>`}isMetaPredicate(e){return E(e,Ir)||E(e,jn)||E(e,lt)||E(e,un)||E(e,dn)||E(e,vr)||E(e,ht)||E(e,cr)}renderPackageContents(e,n){let t=e.namespace||"";if(!t)return"";let a=this.catalog.filter(o=>o instanceof Y&&o.namespace===t&&o.name!==e.name);return a.length===0?`<!-- LookRenderer.PackageContents: no members in ${t} -->`:(a.sort((o,i)=>{let c=B(this.catalog,o).label,l=B(this.catalog,i).label;return c.localeCompare(l)}),`<section class="kan-pkg-grid">${a.map(o=>{let i=B(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=H(e,Tr),s={publisher:Q(n),package_:(n.namespace||"").split("/")[1]?.split("@")[0]??"",name:n.name},o=ne(s),i=p=>ve((p.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},c=(p,k)=>p.major-k.major||p.minor-k.minor||p.patch-k.patch,l=new Map;for(let p of this.catalog){if(!(p instanceof Y))continue;let k=ne({publisher:Q(p),package_:(p.namespace||"").split("/")[1]?.split("@")[0]??"",name:p.name});if(k!==o)for(let h of p.statement){let m=h.predicate?.subject;if(!m||m.name==="type"||a&&ne(m)!==ne(a))continue;let b=[];if(h instanceof C&&h.object instanceof K)b.push(h.object);else if(h instanceof V)for(let R of h.object??[])R instanceof K&&b.push(R);if(!b.some(R=>ne(R.subject)===o))continue;let v=ne(m),w=l.get(v);w||(w={label:this.readLabelForUri(m)??m.name,best:new Map},l.set(v,w));let S=w.best.get(k);(!S||c(i(p),i(S))>0)&&w.best.set(k,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,k)=>p.label.localeCompare(k.label)).map(p=>{let h=[...p.best.values()].sort((m,b)=>B(this.catalog,m).label.localeCompare(B(this.catalog,b).label)).map(m=>this.resourceCard(m,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=B(this.catalog,e),s=a.summary?In(a.summary,160):"",o=he(e).map(b=>this.readLabelForUri({publisher:b.subject.publisher,package_:b.subject.package_,name:b.subject.name})??b.subject.name),c='<span class="kan-pkg-card-body">'+(o.length>0?`<span class="kan-card-types">${o.map(b=>`<span class="kan-card-type">${g(b)}</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(Q(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=f.split("/")[0]??"",[k,h]=(f.split("/")[1]??"").split("@"),m="";if(k&&f!==t){let b=h?`<span class="kan-card-at">@</span><span class="kan-card-ver">${g(h)}</span>`:"";if(l){let v=`<span class="kan-card-pkg">${g(k)}</span>${b}`;m=`<a class="kan-pkg-card-foot" href="${g(this.packageHref(p,k,h||void 0))}" title="${g(h?`${k}@${h}`:k)}">${v}</a>`}else{let v=`<span class="kan-card-pub">${g(p)}/</span><span class="kan-card-pkg">${g(k)}</span>${b}`;m=`<span class="kan-pkg-card-foot" title="${g(h?`${p}/${k}@${h}`:`${p}/${k}`)}">${v}</span>`}}return`<div class="kan-pkg-card kan-pkg-card--foot">${d}${m}</div>`}renderInstances(e,n,t){let a={publisher:Q(n),package_:(n.namespace||"").split("/")[1]?.split("@")[0]??"",name:n.name},s=X(e,Pr),o=s instanceof ae?s.object===!0:s instanceof q&&s.object==="true",i=o?this.subclassClosure(a):new Set([ne(a)]),c=v=>ve((v.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},l=(v,w)=>v.major-w.major||v.minor-w.minor||v.patch-w.patch,d=new Map;for(let v of this.catalog){if(!(v instanceof Y)||!he(v).some(I=>i.has(ne(I.subject))))continue;let S=ne({publisher:Q(v),package_:(v.namespace||"").split("/")[1]?.split("@")[0]??"",name:v.name}),R=d.get(S);(!R||l(c(v),c(R))>0)&&d.set(S,v)}let f=[...d.values()];if(f.length===0)return"<!-- LookRenderer.Instances: none -->";f.sort((v,w)=>B(this.catalog,v).label.localeCompare(B(this.catalog,w).label));let p=48,k=f.slice(0,p),h=k.map(v=>this.resourceCard(v,t,n.namespace??void 0)),m=f.length>p?` <span class="kan-count">${k.length} of ${f.length}</span>`:` <span class="kan-count">${f.length}</span>`;return`<div class="kan-section"><h2 class="kan-section-title">${o?"Instances (including subtypes)":"Instances"}${m}</h2></div><section class="kan-pkg-grid">${h.join("")}</section>`}subclassClosure(e){let n=new Set([ne(e)]),t=!0;for(;t;){t=!1;for(let a of this.catalog){if(!(a instanceof Y))continue;let s=ne({publisher:Q(a),package_:(a.namespace||"").split("/")[1]?.split("@")[0]??"",name:a.name});if(!n.has(s)){for(let o of Ze(a))if(n.has(ne(o.subject))){n.add(s),t=!0;break}}}}return n}referencesTarget(e,n,t){for(let a of e.statement){let s=a.predicate?.subject;if(s?.name==="type"||t&&!(s&&ne(s)===ne(t)))continue;let o=[];if(a instanceof C&&a.object instanceof K)o.push(a.object);else if(a instanceof V)for(let i of a.object??[])i instanceof K&&o.push(i);for(let i of o)if(ne(i.subject)===n)return!0}return!1}renderFeaturedResource(e,n){let t=H(e,pe);if(!t)return"<!-- LookRenderer.FeaturedResource: no look.source -->";let a=me(this.catalog,t),s=l=>ve((l.namespace||"").split("@")[1]??"")??{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=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>"}renderDistribution(e,n){let t=e,a=y=>{let L=F(t,y);if(!L)return;let M=this.resolvePath(n,L),_=M===void 0?NaN:parseFloat(M);return Number.isFinite(_)?_:void 0},s=a(ur),o=a(dr);if(s===void 0||o===void 0||s<=0||o<=0)return"<!-- LookRenderer.Distribution: needs resolvable alphaPath + betaPath (> 0) -->";let i=a(sn)??s/(s+o),c=a(mt),l=a(kt),d=a(Rn),f=d!==void 0?`hsl(${d},65%,60%)`:"var(--kan-accent)",p=y=>Number.isInteger(y)?String(y):y.toFixed(1),k=280,h=168,m={top:14,right:14,bottom:24,left:14},b=k-m.left-m.right,v=h-m.top-m.bottom,w=120,S=1e-4,R=[],I=[],U=0;for(let y=0;y<=w;y++){let L=y/w;L<S?L=S:L>1-S&&(L=1-S);let M=Math.exp((s-1)*Math.log(L)+(o-1)*Math.log(1-L));R.push(L),I.push(M),M>U&&(U=M)}let A=y=>m.left+Math.min(1,Math.max(0,y))*b,x=y=>m.top+(1-(U>0?y/U:0))*v,G=m.top+v,te=R.map((y,L)=>`${A(y).toFixed(1)},${x(I[L]).toFixed(1)}`),N=`M${A(0).toFixed(1)},${G.toFixed(1)} L${te.join(" L")} L${A(1).toFixed(1)},${G.toFixed(1)} Z`,T="";if(c!==void 0&&l!==void 0&&l>c){let y=[`${A(c).toFixed(1)},${G.toFixed(1)}`];for(let L=0;L<=w;L++)R[L]>=c&&R[L]<=l&&y.push(`${A(R[L]).toFixed(1)},${x(I[L]).toFixed(1)}`);y.push(`${A(l).toFixed(1)},${G.toFixed(1)}`),T=`<path d="M${y.join(" L")} Z" fill="${f}" fill-opacity="0.3"/>`}let J=A(i),ie=`<line x1="${J.toFixed(1)}" y1="${m.top.toFixed(1)}" x2="${J.toFixed(1)}" y2="${G.toFixed(1)}" stroke="${f}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${J.toFixed(1)}" y="${(m.top-3).toFixed(1)}" text-anchor="middle" class="kan-dist-mean">\u03BC ${i.toFixed(2)}</text>`,be=`<text x="${A(0).toFixed(1)}" y="${(G+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${A(1).toFixed(1)}" y="${(G+15).toFixed(1)}" text-anchor="end" class="kan-dist-axis">1</text>`,O=`<svg class="kan-dist-svg" viewBox="0 0 ${k} ${h}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${m.left}" y1="${G.toFixed(1)}" x2="${(k-m.right).toFixed(1)}" y2="${G.toFixed(1)}" class="kan-dist-base"/><path d="${N}" fill="${f}" fill-opacity="0.12"/>`+T+`<polyline points="${te.join(" ")}" fill="none" stroke="${f}" stroke-width="2"/>`+ie+be+"</svg>",ee=c!==void 0&&l!==void 0?` \xB7 95% CI [${c.toFixed(2)}\u2013${l.toFixed(2)}]`:"";return`<figure class="kan-dist">${O}<figcaption class="kan-dist-caption">Beta(${p(s)}, ${p(o)})${ee}</figcaption></figure>`}renderPublisherPackages(e,n){let t=new Map;for(let c of this.catalog){if(!(c instanceof Y)||Q(c)!==n)continue;let l=(c.namespace||"").split("/")[1]?.split("@")[0]??"";if(!l||c.name!==l)continue;let d=t.get(l),f=ve((c.namespace||"").split("@")[1]??""),p=d?ve((d.namespace||"").split("@")[1]??""):void 0;(!d||f&&(!p||Qe(f,p)>0))&&t.set(l,c)}let a,s=X(e,er),o=s instanceof V?s.object??[]:s instanceof C&&s.object instanceof K?[s.object]:[];if(o.length>0){a=[];for(let c of o){if(!(c instanceof K))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=B(this.catalog,l),f=d.label,p=d.summary,k=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>`+(k?`<span class="kan-pkg-card-comment">${g(k)}</span>`:"")+"</span></a>"}).join("")}</section>`}renderTimeline(e,n){let t=H(e,pe);if(!t)return"<!-- LookRenderer.Timeline: no look.source -->";let a=H(e,Kn),s=this.findInstancesOfClass(t);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=H(e,gt),l=F(e,sn);return c&&l?this.renderTrajectoryChart(i,c,l,e,n,o):`<section class="kan-timeline"><ol>
127
- ${i.map(f=>{let p=f.namespace||"",k=p.split("/")[1]?.split("@")[0]??"",h=p.split("@")[1]??"",m=h?ve(h):void 0,b=this.resourceHref({publisher:Q(f),package_:k,name:f.name,...m?{version:m}:{}},n),v=o(f),w=v?`<span class="kan-timeline-date">${g(v)}</span>`:"",S=h||f.name;return`<li class="kan-timeline-node"><a href="${g(b)}"><span class="kan-timeline-key">${g(S)}</span>${w}</a></li>`}).join(`
128
- `)}
129
- </ol></section>`}renderTrajectoryChart(e,n,t,a,s,o){let i=a,c=F(i,Rn),l=F(i,mt),d=F(i,kt),f=F(i,Rr),p=yt(i,_r),k=yt(i,Kr),h=e.length,m=this.collectTrackedSeries(e,n,t,{hueBy:c,lowerPath:l,upperPath:d});if(m.length===0)return"<!-- LookRenderer.Timeline: no tracked series -->";let b=[];for(let _ of m){for(let P of _.points)P!==null&&b.push(P);for(let P of _.lower??[])P!==null&&b.push(P);for(let P of _.upper??[])P!==null&&b.push(P)}if(b.length===0)return"<!-- LookRenderer.Timeline: no metric values -->";let v=Math.min(...b),w=Math.max(...b);w-v<1e-9&&(v-=.5,w+=.5);let S=(w-v)*.08,R=p!==void 0?p:v-S,I=k!==void 0?k:w+S;I-R<1e-9&&(I=R+1);let U=1e3,A=440,x={top:28,right:24,bottom:56,left:52},G=U-x.left-x.right,te=A-x.top-x.bottom,N=_=>h<=1?x.left+G/2:x.left+_/(h-1)*G,T=_=>x.top+(1-(_-R)/(I-R))*te,J=(_,P)=>_.hue!==void 0?_.hue:Math.round(P*360/m.length),ie=[];for(let _=0;_<5;_++){let P=R+_*(I-R)/4,re=T(P);ie.push(`<line x1="${x.left}" y1="${re.toFixed(1)}" x2="${(U-x.right).toFixed(1)}" y2="${re.toFixed(1)}" class="kan-fan-grid"/>`),ie.push(`<text x="${(x.left-8).toFixed(1)}" y="${(re+4).toFixed(1)}" class="kan-fan-axis" text-anchor="end">${P.toFixed(2)}</text>`)}let be=[];e.forEach((_,P)=>{let re=this.hrefForSubject(_,s),ge=(_.namespace||"").split("@")[1]??"",se=N(P),ce=ln(o(_));be.push(`<a href="${g(re)}" class="kan-fan-xtick"><line x1="${se.toFixed(1)}" y1="${x.top}" x2="${se.toFixed(1)}" y2="${(A-x.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${se.toFixed(1)}" y="${(A-x.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${ye(ge||_.name)}</text>`+(ce?`<text x="${se.toFixed(1)}" y="${(A-x.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${ye(ce)}</text>`:"")+"</a>")});let O=[];m.forEach((_,P)=>{if(!_.lower||!_.upper)return;let re=J(_,P),ge=[],se=[];for(let le=0;le<h;le++){let Ee=_.upper[le],we=_.lower[le];Ee==null||we===null||we===void 0||(ge.push(`${N(le).toFixed(1)},${T(Ee).toFixed(1)}`),se.unshift(`${N(le).toFixed(1)},${T(we).toFixed(1)}`))}let ce=ge.concat(se);ce.length<3||O.push(`<polygon class="kan-fan-band" points="${ce.join(" ")}" fill="hsl(${re},65%,60%)"/>`)});let ee=[];m.forEach((_,P)=>{let ge=`hsl(${J(_,P)},65%,60%)`,se=[],ce=[];_.points.forEach((le,Ee)=>{if(le===null)return;let we=N(Ee),oe=T(le);se.push(`${we.toFixed(1)},${oe.toFixed(1)}`),ce.push(`<circle cx="${we.toFixed(1)}" cy="${oe.toFixed(1)}" r="3.5" fill="${ge}"/>`)}),se.length!==0&&ee.push(`<g class="kan-fan-series" data-series="${g(_.key)}"><polyline points="${se.join(" ")}" fill="none" stroke="${ge}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`+ce.join("")+"</g>")});let y=`<svg class="kan-fan-svg" viewBox="0 0 ${U} ${A}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+ie.join("")+be.join("")+O.join("")+ee.join("")+"</svg>",L=f?`${g(f)}=`:"",M=m.map((_,P)=>{let re=J(_,P),ge=_.points.filter(oe=>oe!==null),se=ge.length?ge[0]:void 0,ce=ge.length?ge[ge.length-1]:void 0,le="";if(ce!==void 0&&se!==void 0){let oe=ce-se;if(Math.abs(oe)>=.005){let Ce=oe>0?"up":"down",Le=oe>0?"\u25B2":"\u25BC";le=` <span class="kan-fan-delta ${Ce}">${oe>0?"+":""}${oe.toFixed(2)} ${Le}</span>`}else le=' <span class="kan-fan-delta flat">\u2014</span>'}let Ee=ce!==void 0?`${L}${ce.toFixed(2)}`:"\u2014",we=_.lastSubject&&this.isLinkable(Q(_.lastSubject),s)?`<a href="${g(this.hrefForSubject(_.lastSubject,s))}">${g(_.label)}</a>`:g(_.label);return`<div class="kan-fan-legend-item" style="--kan-fan-hue:${re}"><span class="kan-fan-swatch"></span><span class="kan-fan-legend-label">${we}</span><span class="kan-fan-legend-cur">${Ee}${le}</span></div>`});return`<section class="kan-fan"><div class="kan-fan-chart">${y}</div><div class="kan-fan-legend">${M.join("")}</div></section>`}renderResourceGrid(e,n,t){let a=H(e,pe);if(!a)return"<!-- LookRenderer.ResourceGrid: no look.source -->";let s=Z(this.catalog,a),o=s?he(s).some(l=>{let d=l.subject.name;return d==="ObjectProperty"||d==="DatatypeProperty"||d==="Property"}):!1,i=[];if(o&&t){let l=this.readPropertyValueReferences(t,a);for(let d of l){let f=Z(this.catalog,{publisher:d.subject.publisher,package_:d.subject.package_,name:d.subject.name,...d.subject.version?{version:d.subject.version}:{}});f&&i.push(f)}}else i=this.findInstancesOfClass(a);if(i.length===0)return`<!-- LookRenderer.ResourceGrid: no resources for ${a.publisher}/${a.package_}/${a.name} -->`;let c=[];for(let l of i){let d=B(this.catalog,l),f=d.label,p=d.summary,k=l.namespace||"",h=k.split("/")[1]?.split("@")[0]??"",m=k.split("@")[1]??"",b=m?ve(m):void 0,v=this.resourceHref({publisher:Q(l),package_:h,name:l.name,...b?{version:b}:{}},n),w=p?`<p class="kan-resource-card-subtitle">${g(p)}</p>`:"",S=`<h3 class="kan-resource-card-title">${g(f)}</h3>${w}`;c.push(this.isLinkable(Q(l),n)?`<a class="kan-resource-card" href="${g(v)}">${S}</a>`:`<span class="kan-resource-card">${S}</span>`)}return`<section class="kan-resource-grid">
130
- ${c.join(`
131
- `)}
132
- </section>`}findInstancesOfClass(e){let n=[];for(let t of this.catalog){if(!(t instanceof Y))continue;he(t).map(o=>o.subject).some(o=>o.publisher===e.publisher&&o.package_===e.package_&&o.name===e.name)&&n.push(t)}return n}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>
133
- <li><a href="${g(this.publisherHref(o))}">${g(o)}</a></li>
134
- <li aria-current="page">${g(c)}</li>
135
- </ol></nav>`;let d=e.name,p=!!Z(this.catalog,{publisher:o,package_:c,name:c}),k=l?`${c}@${l}`:c,h=this.resourceHref({publisher:o,package_:c,name:c,...l?{version:ve(l)}:{}},o),m=e.name===c,b=[];return b.push(`<li><a href="${g(this.publisherHref(o))}">${g(o)}</a></li>`),m?b.push(`<li aria-current="page">${g(k)}</li>`):(b.push(p?`<li><a href="${g(h)}">${g(k)}</a></li>`:`<li>${g(k)}</li>`),b.push(`<li aria-current="page">${g(d)}</li>`)),`<nav class="kan-breadcrumb"><ol>
136
- ${b.join(`
137
- `)}
138
- </ol></nav>`}renderNavGroup(e,n){let t=X(this.publisherSubject(n),ga),a=t instanceof V?t.object??[]:t instanceof C&&t.object instanceof K?[t.object]:[];if(a.length===0)return"";let s=[];for(let o of a){if(!(o instanceof K))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>
139
- ${s.join(`
140
- `)}
141
- </ul></nav>`}renderSiteFooter(e){let n=X(this.publisherSubject(e),ma),t;if(n instanceof z?t=n.object:n instanceof C&&n.object instanceof K&&(t=Z(this.catalog,{publisher:n.object.subject.publisher,package_:n.object.subject.package_,name:n.object.subject.name})),!t)return"";let a=F(t,ka),s=X(t,ha),o=s instanceof V?s.object??[]:s instanceof C&&s.object instanceof K?[s.object]:[],i=[];for(let l of o){if(!(l instanceof K))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(`
142
- `)}</footer>`}resolveNavEntry(e,n,t){if(n&&he(n).map(c=>c.subject).some(c=>c.publisher===Sn.publisher&&c.package_===Sn.package_&&c.name===Sn.name)){let c=F(n,jn),l=X(n,dt);if(l instanceof C&&l.object instanceof K){let d=l.object,f=this.readLabelForUri({publisher:d.subject.publisher,package_:d.subject.package_,name:d.subject.name});return{href:this.urlForReference(d,dt,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?B(this.catalog,n).label:e.subject.name;return{href:a,label:s}}codeHighlighter(){return this._codeHighlighter||(this._codeHighlighter=new rn(this.collectGrammars())),this._codeHighlighter}collectGrammars(){let e=[];for(let n of this.catalog){if(!(n instanceof Y)||!he(n).some(i=>E(i.subject,nr)))continue;let t=F(n,tr);if(!t)continue;let a=X(n,ar),s=a instanceof V?a.object??[]:[],o=[];for(let i of s){if(!(i instanceof D))continue;let c=H(i,rr),l=F(i,sr);!c||!l||o.push({tokenClass:c.name,pattern:l})}e.push({language:t,rules:o})}return e}renderLinks(e,n){let t=H(e,pe);if(!t)return"";let a=X(n,t),s=[];a instanceof V?s=a.object??[]:a instanceof z?s=[a.object]:a instanceof C&&a.object instanceof K&&(s=[a.object]);let o=[];for(let i of s){let c;if(i instanceof D?c=i:i instanceof K&&(c=Z(this.catalog,{publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name})),!c)continue;let l=F(c,ir);if(!l)continue;let d=F(c,jn)??l,f=F(c,lt),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=H(e,pe);if(!a)return"<!-- LookRenderer.Markdown: no look.source -->";let s=X(n,a),o=new Map,i;if(s instanceof Me?i=this.resolveMarkdownLinks(s,t,o):s instanceof q?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="'+wt(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">
143
- ${l}
144
- </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=On(n.declaration),a=[];for(let s of t){let o=ze(s);if(!o||!E(o,ut))continue;let i=H(s,pe);if(!i)continue;let c=this.readPropertyValueText(e,i);c&&a.push(c)}return a.length>0?a.join(`
145
-
146
- `):void 0}renderHero(e,n,t){let a=m=>{let b=X(e,m);return b instanceof ae?b.object===!0:b instanceof q&&b.object==="true"},s=a(xr),o=!s&&a(Mr),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 m=this.svgUrlForSubject(n,t),b=s?"kan-hero-avatar":"kan-hero-icon";l.push(`<img class="${b}" src="${g(m)}" alt="" loading="lazy"/>`),l.push('<div class="kan-hero-text">')}let d=H(e,Cr);if(d){let m=this.readPropertyValueText(n,d);m&&l.push(`<span class="kan-hero-eyebrow">${g(fn(m)??m)}</span>`)}let f=H(e,Fr),p="";f&&(p=this.readPropertyValueText(n,f)??""),p||(p=B(this.catalog,n).label),l.push(`<h1 class="kan-hero-title">${g(fn(p)??p)}</h1>`);let k=H(e,Vr);if(k){let m=this.readPropertyValueText(n,k);m&&l.push(`<p class="kan-hero-subtitle">${g(fn(m)??m)}</p>`)}let h=H(e,vt);if(h){let m=this.readPropertyValueReferences(n,h);if(m.length>0){let b=m.map(v=>this.renderBadge(v,vt,t)).join("");l.push(`<div class="kan-hero-badges">${b}</div>`)}}return i&&l.push("</div>"),l.push("</header>"),l.join(`
147
- `)}renderPropertyList(e,n,t){let a=H(e,pe);if(!a)return"<!-- LookRenderer: PropertyList missing look.source -->";let s=this.readLabelForUri(a)??a.name,o=X(n,a),i=this.gatherValueItems(o),c=i.length>0?i.map(l=>`<li>${this.renderInlineValue(l,pe,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(`
148
- `)}renderPropertyTable(e,n,t,a=""){let s=H(e,pe);if(!s)return"<!-- LookRenderer: PropertyTable missing look.source -->";let o=this.gatherValueItems(X(n,s)).filter(l=>l instanceof D);if(o.length===0)return"";let i=this.readLabelForUri(s)??s.name,c=a?`${a}.${s.name}`:s.name;return this.renderEmbeddedTable(o,t,i,c)}renderEmbeddedTable(e,n,t,a){let s=[],o=new Set;for(let m of e)for(let b of m.statement){let v=b.predicate?.subject;if(!v||this.isMetaPredicate(v))continue;let w=`${v.publisher}/${v.package_}/${v.name}`;o.has(w)||(o.add(w),s.push({uri:{publisher:v.publisher,package_:v.package_,name:v.name},label:this.readLabelForUri(v)??v.name}))}if(s.length===0)return"";let i=e.map(m=>B(this.catalog,m).label),c=e.some((m,b)=>i[b]!==""&&i[b]!==m.name),l=!!a,d=(l?'<th class="kan-anchor-col"></th>':"")+(c?"<th></th>":"")+s.map(m=>`<th>${g(m.label)}</th>`).join(""),f=e.map((m,b)=>{let v=l&&m.name?`${a}.${m.name}`:"",w=v?` id="${g(v)}"`:"",S=l?`<td class="kan-anchor-col">${v?this.anchorLink(v):""}</td>`:"",R=c?`<th scope="row">${g(i[b]??"")}</th>`:"",I=s.map(U=>{let A=X(m,U.uri);return`<td>${A?this.tableCellValue(A,n):""}</td>`}).join("");return`<tr${w}>${S}${R}${I}</tr>`}).join(""),p=l&&a?` id="${g(a)}"`:"",k=l&&a?this.anchorLink(a):"",h=t?`<caption>${g(t)}${k}</caption>`:"";return`<table class="kan-property-table"${p}>${h}<thead><tr>${d}</tr></thead><tbody>${f}</tbody></table>`}tableCellValue(e,n){if(e instanceof Me)return this.statementToMarkdownHtml(e,n);if(e instanceof q)return _t(e.object);if(e instanceof ue||e instanceof ae)return g(String(e.object));if(e instanceof C&&e.object instanceof K)return this.detailReferenceLink(e.object,n);if(e instanceof z)return this.renderEmbeddedTable([e.object],n);if(e instanceof V){let t=e.object??[],a=t.filter(s=>s instanceof D);return a.length>0&&a.length===t.length?this.renderEmbeddedTable(a,n):t.map(s=>s instanceof K?this.detailReferenceLink(s,n):s instanceof D?this.renderEmbeddedTable([s],n):g(String(s))).filter(s=>s).join(", ")}return""}statementToMarkdownHtml(e,n){let t=new Map,a;if(e instanceof Me?a=this.resolveMarkdownLinks(e,n,t):e instanceof q&&(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="'+wt(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=H(e,pe);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,pe,t)).join("")}</div>`}renderChipRow(e,n,t){let a=Un(e,Dr);if(a.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let s=[];for(let o of a){let i=X(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>`}renderReferenceList(e,n,t){let a=Un(e,$t);if(a.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let s=F(e,pt),o=F(e,wr),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=l.map(p=>this.renderDetailRow(p,s,o,t)).filter(p=>p).join("");f&&i.push(`<dt>${g(d)}</dt><dd><ul class="kan-ref-rows">${f}</ul></dd>`)}else{let f=l.map(p=>this.renderReferenceLink(p,$t,t)).join(", ");i.push(`<dt>${g(d)}</dt><dd>${f}</dd>`)}}return i.length===0?"":`<dl class="kan-reference-list">${i.join("")}</dl>`}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=this.resolvePath(s,n)??B(this.catalog,s).label,i="";if(t){let f=this.resolvePath(s,t);f&&(i=`<span class="kan-ref-badge">${g(f)}</span>`)}let c=`<span class="kan-ref-text">${g(o)}</span>${i}`;if(!this.isLinkable(Q(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=X(e,n);if(t){if(t instanceof q)return t.object;if(t instanceof C){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 z)return this.readEmbeddedText(t.object,0)||void 0;if(t instanceof V)return(t.object??[]).map(s=>s instanceof K?this.readLabelForUri({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name})??s.subject.name:s instanceof D?this.readEmbeddedText(s,0):String(s)).filter(s=>s).join(", ")}}readEmbeddedText(e,n){if(n>=bt)return"\u2026";let t=[];for(let a of e.statement)if(a.predicate?.subject?.name!=="type")if(a instanceof q)t.push(a.object);else if(a instanceof ue||a instanceof ae)t.push(String(a.object));else if(a instanceof C){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 z&&t.push(this.readEmbeddedText(a.object,n+1));return t.filter(a=>a).join(", ")}readPropertyValueReferences(e,n){let t=X(e,n);if(!t)return[];if(t instanceof C)return[t.object];if(t instanceof V){let a=[];for(let s of t.object??[])s instanceof K&&a.push(s);return a}return[]}gatherValueItems(e){return e?e instanceof V?e.object??[]:e instanceof C?[e.object]:e instanceof z?[e.object]:e instanceof q?[e.object]:e instanceof ue||e instanceof ae?[e.object]:[]:[]}renderInlineValue(e,n,t,a=0){return e instanceof K?this.renderReferenceLink(e,n,t):e instanceof D?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 q?g(e.object):e instanceof ue||e instanceof ae?g(String(e.object)):e instanceof C?this.renderReferenceLink(e.object,n,t):e instanceof z?this.renderEmbeddedInline(e.object,t,a):e instanceof V?(e.object??[]).map(o=>this.renderInlineValue(o,n,t,a)).filter(o=>o).join(", "):""}renderEmbeddedInline(e,n,t=0){if(t>=bt)return"\u2026";let a=[];for(let s of e.statement){let o=s.predicate?.subject;if(!o||o.name==="type")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=F(n,Br);return t==="*"||t==="^"||t==="~"||t==="="?t:"="}readLabelForUri(e){let n=Z(this.catalog,e);if(n)return B(this.catalog,n).label}readCommentForUri(e){let n=Z(this.catalog,e);if(n)return B(this.catalog,n).summary}};function Ln(r){let e=new Map;for(let n of r.statement){if(!(n instanceof z)||!Se(n,dn.publisher,dn.package_,dn.name))continue;let t=n.object;for(let a of t.statement){if(!(a instanceof q))continue;let s=a.predicate?.subject?.name;if(!s)continue;let o=a.object;e.has(s)||e.set(s,o)}}return e}function on(r){for(let e of r.statement)if(e instanceof z&&Se(e,un.publisher,un.package_,un.name))return e.object}function On(r){for(let e of r.statement){if(!(e instanceof V)||!Se(e,En.publisher,En.package_,En.name))continue;let n=[];for(let t of e.object??[])t instanceof D&&n.push(t);return n}return[]}function ze(r){for(let e of r.statement)if(e instanceof C&&e.predicate?.subject?.name==="type"&&e.object instanceof K){let n=e.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function H(r,e){for(let n of r.statement)if(n instanceof C&&Se(n,e.publisher,e.package_,e.name)&&n.object instanceof K){let t=n.object.subject;return{publisher:t.publisher,package_:t.package_,name:t.name}}}function Un(r,e){for(let n of r.statement){if(!(n instanceof V)||!Se(n,e.publisher,e.package_,e.name))continue;let t=[];for(let a of n.object??[])a instanceof K&&t.push({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name});return t}return[]}function X(r,e){for(let n of r.statement)if(Se(n,e.publisher,e.package_,e.name))return n}function F(r,e){for(let n of r.statement)if(n instanceof q&&Se(n,e.publisher,e.package_,e.name))return n.object}function cn(r,e){for(let n of r.statement)if(n instanceof z&&Se(n,e.publisher,e.package_,e.name))return n.object}function yt(r,e){for(let n of r.statement)if(n instanceof ue&&Se(n,e.publisher,e.package_,e.name))return n.object}function Hr(r,e){for(let n of r.statement)if(n instanceof ae&&Se(n,e.publisher,e.package_,e.name))return n.object===!0;return!1}function zr(r){for(let e of he(r))if(E(e.subject,aa)||E(e.subject,ra))return!0;return!1}function he(r){let e=[];for(let n of r.statement)if(n instanceof C){if(n.predicate?.subject?.name!=="type")continue;n.object instanceof K&&e.push(n.object)}else if(n instanceof V){if(n.predicate?.subject?.name!=="type")continue;for(let t of n.object??[])t instanceof K&&e.push(t)}return e}function Ze(r){let e=[];for(let n of r.statement)if(n instanceof C){if(n.predicate?.subject?.name!=="subClassOf")continue;n.object instanceof K&&e.push(n.object)}else if(n instanceof V){if(n.predicate?.subject?.name!=="subClassOf")continue;for(let t of n.object??[])t instanceof K&&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 Y&&a.name===e.name&&a.namespace===t)return a}for(let t of r){if(!(t instanceof Y)||t.name!==e.name)continue;if((t.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return t}}function Se(r,e,n,t){let a=r.predicate?.subject;return a?a.publisher===e&&a.package_===n&&a.name===t:!1}function E(r,e){return r.publisher===e.publisher&&r.package_===e.package_&&r.name===e.name}function ne(r){return`${r.publisher}/${r.package_}/${r.name}`}function Q(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 Gr(r){let e=r.lastIndexOf(".");return e>=0?r.substring(e+1):r}function qr(r,e){for(let n of r.statement)if(n.predicate?.subject?.name===e)return n}function Wr(r,e){let n=[];for(let t of r.statement)t.predicate?.subject?.name===e&&n.push(t);return n}function ye(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function jt(r,e){return e==null?"":Be(e)?e.value:r==="string-literal"?typeof e=="string"?e:String(e):Array.isArray(e)?e.map(n=>Be(n)?n.value:ye(typeof n=="string"?n:String(n))).join(""):ye(typeof e=="string"?e:String(e))}function In(r,e){return r.length<=e?r:r.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function St(r){return r.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function wt(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function _t(r){let e=fn(r);return g(e||r)}function fn(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 ln(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}export{B as a,Ye as b,Be as c,Ke as d,nn as e,W as f,ds as g,Fe as h,an as i,Fn as j};