@kanonak-protocol/sdk 3.72.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.
@@ -0,0 +1,148 @@
1
+ import{a as Fn}from"./chunk-4NO7MHS7.js";import{a as Mn}from"./chunk-PEJALHXK.js";import{d as u}from"./chunk-SHDHMKMJ.js";import{a as x,c as xe,f as An}from"./chunk-G2DKKSZ4.js";import{a as Vn}from"./chunk-TJPQETHV.js";import{a as pn,b as ue,c as xn,d as w,f as Pe,g as ke,i as gn,j as qe,l as Pn,m as Nn}from"./chunk-CRKSKIAL.js";import{b as Oe,c as G,d as E,g as X,h as me,i as re,j as T,k as H,l as V}from"./chunk-W6T7MOKY.js";import{a as Tn}from"./chunk-FUUTGGJS.js";import{c as en,g as $e}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"},Lt={publisher:Ve,package_:We,name:"type"},Ot={publisher:Ve,package_:We,name:"subClassOf"},Ut={publisher:Ve,package_:We,name:"label"},It={publisher:Ve,package_:We,name:"comment"},Dn=new Tn(Ve,We,"Resource");function D(r,e){let n=Bn(r,e,Kt)??Ut,t=Bn(r,e,Rt)??It,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,Lt);for(;s.length>0;){let o=s.shift(),i=pn(o);if(a.has(i))continue;a.add(i);let c=Pe(r,o);if(!c)continue;let l=qe(c,n);if(l)return l;s.push(...Hn(c,Ot))}if(!a.has(pn(Dn))){let o=Pe(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 Pn(r,e))a instanceof E&&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
+ `),g=l&&e.highlight?e.highlight(l,f):De(f),m=l?` class="language-${qn(l)}"`:"";t.push(`<pre class="kan-code"><code${m}>${g}</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=Ct(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 Ct(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=De(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 De(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 Vt={publisher:"kanonak.org",package_:"core-rdf",name:"label"};function Ae(r){return typeof r=="object"&&r!==null&&r.kind==="raw-string"}var Se=class extends Error{},Xe=class{constructor(e,n,t=new Map){this.resolver=e;this.catalog=n;this.fragments=t}resolver;catalog;fragments;async evaluate(e,n){switch(e.kind){case"string-literal":return e.value;case"integer-literal":return e.value;case"decimal-literal":return e.value;case"boolean-literal":return e.value;case"uri-literal":return{...e.refTo};case"var-ref":{if(!n.has(e.varName))throw new Se(`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 nn(t,e.readProp)}case"traverse":{let t=await this.evaluate(e.source,n);if(!(t instanceof Oe))return;let a=At(t,e.through),s=[];for(let o of a){let i=ke(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 Be(t)?t.name:t instanceof E?t.subject.name:t instanceof G?t.name:t instanceof x?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 G){let a=t.namespace??"",s=t.name??"";return!a||!s?void 0:`${a}/${s}`}if(t instanceof E){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?nn(t,e.labelSource):void 0}case"resolve-ref":{let t=await this.evaluate(e.source,n);return t instanceof G?t:t instanceof E?await this.resolver.resolveSubject(t.subject,this.catalog):Be(t)?await this.resolver.resolveSubject(t,this.catalog):void 0}case"normalize":{let t=await this.evaluate(e.source,n),a=t==null?"":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&&ue(i,e.readProp)){a=o;break}}if(!(a instanceof xe)){let o=nn(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;xt.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 Se(`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+=de(s,"Sum");return a}case"min":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Se("Min on an empty list is undefined; guard with IsSet");let a=de(t[0],"Min");for(let s=1;s<t.length;s++){let o=de(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 Se("Max on an empty list is undefined; guard with IsSet");let a=de(t[0],"Max");for(let s=1;s<t.length;s++){let o=de(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 Se("Average on an empty list is undefined; guard with IsSet");let a=0;for(let s of t)a+=de(s,"Average");return a/t.length}case"for-each":{let t=await this.evaluateList(e.source,n),a=[];for(let s of t){let o=new Map(n);o.set(e.loopVar,ye(s));let i=await this.evaluate(e.emit,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}case"list-map":{let t=await this.evaluateList(e.source,n),a=[];for(let s of t){let o=new Map(n);o.set(e.loopVar,ye(s)),a.push(await this.evaluate(e.mapBody,o))}return a}case"filter":{let t=await this.evaluateList(e.source,n),a=[];for(let s of t){let o=new Map(n);o.set(e.loopVar,ye(s)),await this.evaluate(e.predicate,o)===!0&&a.push(s)}return a}case"partition-by":{let t=await this.evaluateList(e.source,n),a=new Map,s=[];for(let o of t){let i=new Map(n);i.set(e.loopVar,ye(o));let c=await this.evaluate(e.partitionKey,i),l=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,ye(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 E)return a}return}case"statement-value":{let t=await this.evaluate(e.source,n);return hn(t)?Dt(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=de(await this.evaluate(e.left,n),"Add"),a=de(await this.evaluate(e.right,n),"Add");return t+a}case"subtract":{let t=de(await this.evaluate(e.left,n),"Subtract"),a=de(await this.evaluate(e.right,n),"Subtract");return t-a}case"multiply":{let t=de(await this.evaluate(e.left,n),"Multiply"),a=de(await this.evaluate(e.right,n),"Multiply");return t*a}case"divide":{let t=de(await this.evaluate(e.left,n),"Divide"),a=de(await this.evaluate(e.right,n),"Divide");if(a===0)throw new Se("Divide by zero; guard with When");return t/a}case"reverse":{if(e.source.kind==="reverse")return this.evaluate(e.source.source,n);let t=await this.evaluateReverseIterator(e.source,n);return t!==void 0?t:[...await this.evaluateList(e.source,n)].reverse()}case"windowed-map":{let t=await this.evaluateList(e.source,n);if(t.length<e.windowSize)return[];let a=[];for(let s=0;s+e.windowSize<=t.length;s++){let o=t.slice(s,s+e.windowSize),i=new Map(n);i.set(e.windowVar,o);let c=await this.evaluate(e.windowBody,i);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}case"pairwise-map":{let t=await this.evaluateList(e.source,n);if(t.length<2)return[];let a=[];for(let s=0;s+1<t.length;s++){let o=new Map(n);o.set(e.firstVar,ye(t[s])),o.set(e.secondVar,ye(t[s+1]));let i=await this.evaluate(e.pairBody,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}case"scan":{let t=await this.evaluateList(e.source,n);if(t.length===0)return[];let a=await this.evaluate(e.initialState,n),s=[];for(let o of t){let i=new Map(n);i.set(e.stateVar,a),i.set(e.elementVar,ye(o));let c=await this.evaluate(e.accumulate,i);s.push(c),a=c}return s}case"list-item-at":{let t=await this.evaluateList(e.source,n),a=await this.evaluate(e.itemIndex,n);return typeof a!="number"||!Number.isInteger(a)||a<0||a>=t.length?void 0:t[a]}case"equals":{let t=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return 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=de(await this.evaluate(e.value,n),"Abs");return Math.abs(t)}case"negate":return-de(await this.evaluate(e.value,n),"Negate");case"is-reference":{let t=await this.evaluate(e.check,n);return t instanceof E||t instanceof G}case"is-embedded":return await this.evaluate(e.check,n)instanceof x;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 X||a instanceof me||a instanceof re||a instanceof T||a instanceof H||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 Se("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=nn(n,Vt);return typeof t=="string"?t:void 0}async evaluateList(e,n){let t=await this.evaluate(e,n);return t==null?[]:Array.isArray(t)?t:[t]}async evaluateReverseIterator(e,n){if(e.kind==="pairwise-map"){let t=await this.evaluateList(e.source,n);if(t.length<2)return[];let a=[];for(let s=t.length-1;s>=1;s--){let o=new Map(n);o.set(e.firstVar,ye(t[s-1])),o.set(e.secondVar,ye(t[s]));let i=await this.evaluate(e.pairBody,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}if(e.kind==="for-each"){let t=await this.evaluateList(e.source,n),a=[];for(let s=t.length-1;s>=0;s--){let o=new Map(n);o.set(e.loopVar,ye(t[s]));let i=await this.evaluate(e.emit,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}if(e.kind==="list-map"){let t=await this.evaluateList(e.source,n),a=[];for(let s=t.length-1;s>=0;s--){let o=new Map(n);o.set(e.loopVar,ye(t[s])),a.push(await this.evaluate(e.mapBody,o))}return a}if(e.kind==="windowed-map"){let t=await this.evaluateList(e.source,n);if(t.length<e.windowSize)return[];let a=[];for(let s=t.length-e.windowSize;s>=0;s--){let o=t.slice(s,s+e.windowSize),i=new Map(n);i.set(e.windowVar,o);let c=await this.evaluate(e.windowBody,i);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}}};function nn(r,e){if(r instanceof Oe)return Tt(r,e);if(Mt(r))return ue(e,u.key)?r.key:ue(e,u.members)?r.members:void 0}function Tt(r,e){for(let n of r.statement){let t=bn(n);if(!(!t||!ue(t,e))&&(n instanceof X||n instanceof me||n instanceof re||n instanceof T||n instanceof H||n instanceof V))return n.object}}function At(r,e){let n=[];for(let t of r.statement){let a=bn(t);if(!(!a||!ue(a,e))){if(t instanceof T)n.push(t.object.subject);else if(t instanceof V)for(let s of t.object)s instanceof E&&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(Ae(r))return r.value;if(r instanceof Oe)return r.name??"";if(r instanceof E)return r.subject.name;if(Be(r))return r.name;let e=r.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function ye(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)&&!(r instanceof Oe)&&!(r instanceof E)&&!(r instanceof x)&&"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 Be(r){return typeof r=="object"&&r!==null&&typeof r.publisher=="string"&&typeof r.package_=="string"&&typeof r.name=="string"}function Mt(r){return typeof r=="object"&&r!==null&&r.kind==="Partition"&&Array.isArray(r.members)}function de(r,e){if(typeof r=="number"&&Number.isFinite(r))return r;throw new Se(`${e} requires numeric elements; got ${Pt(r)}`)}function kn(r){if(r instanceof G){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 E){let e=r.subject,n=e.version;return{publisher:e.publisher,package_:e.package_,version:n&&typeof n.major=="number"?`${n.major}.${n.minor}.${n.patch}`:"",name:e.name}}if(Be(r))return{publisher:r.publisher,package_:r.package_,version:"",name:r.name}}var xt=new Set(["stringValue","text","rawContent","key","propertyKey","linkLabel"]);function Yn(r){return typeof r=="string"||typeof r=="number"||typeof r=="boolean"||Ae(r)}function Xn(r){return Ae(r)?r.value:String(r)}function Pt(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 E){let e=r.subject;return{publisher:e.publisher,package_:e.package_,name:e.name}}if(r instanceof G){let e=r.namespace??"",n=e.indexOf("/"),t=e.indexOf("@",n+1);if(n<0)return;let a=e.substring(0,n),s=t>=0?e.substring(n+1,t):e.substring(n+1);return{publisher:a,package_:s,name:r.name??""}}if(Be(r))return{publisher:r.publisher,package_:r.package_,name:r.name}}function hn(r){return r instanceof X||r instanceof me||r instanceof re||r instanceof T||r instanceof H||r instanceof V}function Dt(r){return r instanceof X||r instanceof me||r instanceof re?String(r.object??""):r instanceof T?r.object?.subject?.name??"":r instanceof H?"[embedded]":r instanceof V?(r.object??[]).map(n=>{if(n instanceof E)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 E){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 Be(r)?`u:${r.publisher}/${r.package_}/${r.name}`:`o:${JSON.stringify(r)}`}var q=class extends Error{constructor(n,t){super(`${n} (at ${t})`);this.path=t}path};function ls(r,e){let n=r.name,t=Qt(e),a={catalog:e,depth:0};if(w(r,u.InstanceTransformation))return Bt(r,n,a,t);if(w(r,u.SetTransformation))return Ht(r,n,a,t);throw new q("Subject is not a recognized v3 transformation type \u2014 expected InstanceTransformation or SetTransformation",n)}function Bt(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 Ht(r,e,n,t){let a=Ie(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=Je(r,u.inputPattern);if(!n)throw new q("inputPattern is required",e);return zt(n,`${e}.inputPattern`)}function zt(r,e){let n=Ie(r,u.matchesClass);if(!n)throw new q("matchesClass is required",e);let t=[];for(let o of ve(r,u.requires))if(o instanceof T)t.push(yn(o.object.subject));else if(o instanceof V)for(let i of o.object)i instanceof E&&t.push(yn(i.subject));let a=[],s=0;for(let o of ve(r,u.sortBy))if(o instanceof V)for(let i of o.object)i instanceof x&&a.push(et(i,`${e}.sortBy[${s++}]`));else o instanceof H&&a.push(et(o.object,`${e}.sortBy[${s++}]`));return{matchesClass:n,requires:t,sortBy:a}}function et(r,e){let n=Ie(r,u.byProperty);if(!n)throw new q("SortKey.byProperty is required",e);let t=Ie(r,u.order);if(!t)throw new q("SortKey.order is required",e);if(ue(t,u.ascending))return{byProperty:n,order:"ascending"};if(ue(t,u.descending))return{byProperty:n,order:"descending"};throw new q(`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=Je(r,e);if(!a)throw new q("expression is required",n);return Ue(a,n,t)}function Ue(r,e,n){if(w(r,u.StringLiteral))return{kind:"string-literal",value:he(r,u.stringLiteral,e)};if(w(r,u.IntegerLiteral))return{kind:"integer-literal",value:rt(r,u.integerLiteral,e)};if(w(r,u.DecimalLiteral))return{kind:"decimal-literal",value:rt(r,u.decimalLiteral,e)};if(w(r,u.BooleanLiteral))return{kind:"boolean-literal",value:ta(r,u.booleanLiteral,e)};if(w(r,u.VarRef))return{kind:"var-ref",varName:he(r,u.varName,e)};if(w(r,u.PropertyRead))return{kind:"property-read",source:$(r,u.readSource,`${e}.readSource`,n),readProp:Ce(r,u.readProp,e,"readProp")};if(w(r,u.Traverse))return{kind:"traverse",source:$(r,u.traverseSource,`${e}.traverseSource`,n),through:Ce(r,u.through,e,"through"),step:$(r,u.step,`${e}.step`,n)};if(w(r,u.BuildAstNode))return{kind:"build-ast-node",astClass:Ce(r,u.astClass,e,"astClass"),set:qt(r,`${e}.set`,n)};if(w(r,u.When))return{kind:"when",condition:$(r,u.condition,`${e}.condition`,n),thenBuild:$(r,u.thenBuild,`${e}.thenBuild`,n),elseBuild:Gt(r,u.elseBuild,`${e}.elseBuild`,n)};if(w(r,u.Concat))return{kind:"concat",parts:vn(r,u.parts,`${e}.parts`,n)};if(w(r,u.Fallback))return{kind:"fallback",primary:$(r,u.primary,`${e}.primary`,n),alternate:$(r,u.alternate,`${e}.alternate`,n)};if(w(r,u.UriName))return{kind:"uri-name",source:$(r,u.uriNameOf,`${e}.uriNameOf`,n)};if(w(r,u.UriPublisher))return{kind:"uri-publisher",source:$(r,u.uriPublisherOf,`${e}.uriPublisherOf`,n)};if(w(r,u.UriPackage))return{kind:"uri-package",source:$(r,u.uriPackageOf,`${e}.uriPackageOf`,n)};if(w(r,u.UriVersion))return{kind:"uri-version",source:$(r,u.uriVersionOf,`${e}.uriVersionOf`,n)};if(w(r,u.SubjectUri))return{kind:"subject-uri",source:$(r,u.subjectOf,`${e}.subjectOf`,n)};if(w(r,u.UriLiteral))return{kind:"uri-literal",refTo:Ce(r,u.refTo,e,"refTo")};if(w(r,u.DisplayLabel))return{kind:"display-label",labelTarget:Ce(r,u.labelTarget,e,"labelTarget"),labelSource:Ce(r,u.labelSource,e,"labelSource")};if(w(r,u.ResolveRef))return{kind:"resolve-ref",source:$(r,u.resolveSource,`${e}.resolveSource`,n)};if(w(r,u.Normalize))return{kind:"normalize",source:$(r,u.normSource,`${e}.normSource`,n),normKind:Wt(r,e)};if(w(r,u.UnescapedString))return{kind:"unescaped-string",source:$(r,u.unescapedSource,`${e}.unescapedSource`,n)};if(w(r,u.RenderMarkdown))return{kind:"render-markdown",source:$(r,u.renderSource,`${e}.renderSource`,n),readProp:Ce(r,u.renderProp,e,"renderProp"),format:Yt(r,e)};if(w(r,u.IsSet))return{kind:"is-set",check:$(r,u.checkExpr,`${e}.checkExpr`,n)};if(w(r,u.CallFragment))return Jt(r,e,n);if(w(r,u.Join))return{kind:"join",source:$(r,u.source,`${e}.source`,n),separator:he(r,u.separator,e)};if(w(r,u.Count))return{kind:"count",source:$(r,u.source,`${e}.source`,n)};if(w(r,u.Sum))return{kind:"sum",source:$(r,u.source,`${e}.source`,n)};if(w(r,u.Min))return{kind:"min",source:$(r,u.source,`${e}.source`,n)};if(w(r,u.Max))return{kind:"max",source:$(r,u.source,`${e}.source`,n)};if(w(r,u.Average))return{kind:"average",source:$(r,u.source,`${e}.source`,n)};if(w(r,u.ForEach))return{kind:"for-each",source:$(r,u.source,`${e}.source`,n),loopVar:he(r,u.loopVar,e),emit:$(r,u.emit,`${e}.emit`,n)};if(w(r,u.ListMap))return{kind:"list-map",source:$(r,u.source,`${e}.source`,n),loopVar:he(r,u.loopVar,e),mapBody:$(r,u.mapBody,`${e}.mapBody`,n)};if(w(r,u.Filter))return{kind:"filter",source:$(r,u.source,`${e}.source`,n),loopVar:he(r,u.loopVar,e),predicate:$(r,u.predicate,`${e}.predicate`,n)};if(w(r,u.PartitionBy))return{kind:"partition-by",source:$(r,u.source,`${e}.source`,n),loopVar:he(r,u.loopVar,e),partitionKey:$(r,u.partitionKey,`${e}.partitionKey`,n)};if(w(r,u.DistinctBy))return{kind:"distinct-by",source:$(r,u.source,`${e}.source`,n),loopVar:he(r,u.loopVar,e),distinctKey:$(r,u.distinctKey,`${e}.distinctKey`,n)};if(w(r,u.AllStatements))return{kind:"all-statements",source:$(r,u.statementsOf,`${e}.statementsOf`,n)};if(w(r,u.StatementPredicate))return{kind:"statement-predicate",source:$(r,u.predicateOf,`${e}.predicateOf`,n)};if(w(r,u.StatementValue))return{kind:"statement-value",source:$(r,u.valueOf,`${e}.valueOf`,n)};if(w(r,u.DateFormat))return{kind:"date-format",source:$(r,u.dateSource,`${e}.dateSource`,n),format:Xt(r,e)};if(w(r,u.Add))return{kind:"add",left:$(r,u.arithLeft,`${e}.arithLeft`,n),right:$(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Subtract))return{kind:"subtract",left:$(r,u.arithLeft,`${e}.arithLeft`,n),right:$(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Multiply))return{kind:"multiply",left:$(r,u.arithLeft,`${e}.arithLeft`,n),right:$(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Divide))return{kind:"divide",left:$(r,u.arithLeft,`${e}.arithLeft`,n),right:$(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Reverse))return{kind:"reverse",source:$(r,u.source,`${e}.source`,n)};if(w(r,u.WindowedMap)){let t=ct(r,u.windowSize);if(t===void 0||!Number.isInteger(t)||t<1)throw new q("windowSize must be a positive integer",`${e}.windowSize`);return{kind:"windowed-map",source:$(r,u.source,`${e}.source`,n),windowSize:t,windowVar:he(r,u.windowVar,e),windowBody:$(r,u.windowBody,`${e}.windowBody`,n)}}if(w(r,u.PairwiseMap))return{kind:"pairwise-map",source:$(r,u.source,`${e}.source`,n),firstVar:he(r,u.firstVar,e),secondVar:he(r,u.secondVar,e),pairBody:$(r,u.pairBody,`${e}.pairBody`,n)};if(w(r,u.Scan))return{kind:"scan",source:$(r,u.source,`${e}.source`,n),initialState:$(r,u.initialState,`${e}.initialState`,n),stateVar:he(r,u.stateVar,e),elementVar:he(r,u.elementVar,e),accumulate:$(r,u.accumulate,`${e}.accumulate`,n)};if(w(r,u.ListItemAt))return{kind:"list-item-at",source:$(r,u.source,`${e}.source`,n),itemIndex:$(r,u.itemIndex,`${e}.itemIndex`,n)};if(w(r,u.Equals))return{kind:"equals",left:$(r,u.compareLeft,`${e}.compareLeft`,n),right:$(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.GreaterThan))return{kind:"greater-than",left:$(r,u.compareLeft,`${e}.compareLeft`,n),right:$(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.LessThan))return{kind:"less-than",left:$(r,u.compareLeft,`${e}.compareLeft`,n),right:$(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.GreaterThanOrEqual))return{kind:"greater-than-or-equal",left:$(r,u.compareLeft,`${e}.compareLeft`,n),right:$(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.LessThanOrEqual))return{kind:"less-than-or-equal",left:$(r,u.compareLeft,`${e}.compareLeft`,n),right:$(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.Not))return{kind:"not",operand:$(r,u.operand,`${e}.operand`,n)};if(w(r,u.And))return{kind:"and",operands:vn(r,u.operands,`${e}.operands`,n)};if(w(r,u.Or))return{kind:"or",operands:vn(r,u.operands,`${e}.operands`,n)};if(w(r,u.Contains))return{kind:"contains",haystack:$(r,u.haystack,`${e}.haystack`,n),needle:$(r,u.needle,`${e}.needle`,n)};if(w(r,u.Abs))return{kind:"abs",value:$(r,u.value,`${e}.value`,n)};if(w(r,u.Negate))return{kind:"negate",value:$(r,u.value,`${e}.value`,n)};if(w(r,u.IsReference))return{kind:"is-reference",check:$(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsEmbedded))return{kind:"is-embedded",check:$(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsList))return{kind:"is-list",check:$(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsString))return{kind:"is-string",check:$(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsNumber))return{kind:"is-number",check:$(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsBoolean))return{kind:"is-boolean",check:$(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.StatementObject))return{kind:"statement-object",source:$(r,u.statementSource,`${e}.statementSource`,n)};if(w(r,u.Let))return{kind:"let",bindName:he(r,u.letName,e),bindValue:$(r,u.letValue,`${e}.letValue`,n),body:$(r,u.letBody,`${e}.letBody`,n)};if(w(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 q("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=Je(r,e);if(!a)throw new q("child expression is required",n);return Ue(a,n,t)}function Gt(r,e,n,t){let a=Je(r,e);if(a)return Ue(a,n,t)}function vn(r,e,n,t){let a=[],s=0;for(let o of ve(r,e))if(o instanceof V)for(let i of o.object)i instanceof x&&a.push(Ue(i,`${n}[${s++}]`,t));else o instanceof H&&a.push(Ue(o.object,`${n}[${s++}]`,t));return a}function qt(r,e,n){let t=[],a=0;for(let s of ve(r,u.set))if(s instanceof V)for(let o of s.object)o instanceof x&&t.push(nt(o,`${e}[${a++}]`,n));else s instanceof H&&t.push(nt(s.object,`${e}[${a++}]`,n));return t}function nt(r,e,n){return{field:Ce(r,u.field,e,"field"),value:$(r,u.bindValue,`${e}.bindValue`,n)}}function Wt(r,e){let n=Ie(r,u.normKind);if(!n)throw new q("normKind is required",e);if(ue(n,u.NORM_TRIM_END))return"trim-end";if(ue(n,u.NORM_TO_UPPER))return"to-upper";if(ue(n,u.NORM_TO_LOWER))return"to-lower";if(ue(n,u.NORM_FIRST_CHAR))return"first-char";throw new q(`Unknown NormalizeKind: ${n.publisher}/${n.package_}/${n.name}`,e)}function Yt(r,e){let n=Ie(r,u.renderFormat);if(!n)throw new q("renderFormat is required",e);if(ue(n,u.RENDER_HTML))return"html";if(ue(n,u.RENDER_MARKDOWN))return"markdown";throw new q(`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 Xt(r,e){let n=He(r,u.dateFormat);if(!n)throw new q("dateFormat is required",e);if(!tt.has(n))throw new q(`Unknown dateFormat "${n}"; supported: ${[...tt].join(", ")}`,e);return n}function Jt(r,e,n){let t=Ie(r,u.fragmentRef);if(!t)throw new q("fragmentRef is required",e);if(!ea(n.catalog,t))throw new q(`ExpressionFragment not found: ${t.publisher}/${t.package_}/${t.name}`,e);return{kind:"call-fragment",fragmentKey:Zt(t)}}function Zt(r){return`${r.publisher}/${r.package_}/${r.name}`}function Qt(r){let e=new Map,n=[];for(let t of r){if(!(t instanceof G)||!w(t,u.ExpressionFragment))continue;let a=Je(t,u.body);if(!a)continue;let s=(t.namespace||"").split("@")[0]||"",o=s.indexOf("/");if(o<0)continue;let i=s.substring(0,o),c=s.substring(o+1),l=`${i}/${c}/${t.name}`;n.push({key:l,subject:t,bodyEmb:a,pubPkgName:`${s}/${t.name}`})}for(let t of n){let a=Ue(t.bodyEmb,`fragment(${t.pubPkgName})`,{catalog:r,depth:0});e.set(t.key,a)}return e}function ea(r,e){for(let n of r)if(!(!(n instanceof G)||n.name!==e.name||!(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))&&w(n,u.ExpressionFragment))return n}function ot(r,e){let n=new Set;for(let t of ve(r,u.outputs))if(t instanceof T)n.add(t.object.subject.name);else if(t instanceof V)for(let a of t.object)a instanceof E&&n.add(a.subject.name);if(n.size===0)throw new q("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 ve(r,u.formatOverrides))if(s instanceof V){for(let o of s.object)if(o instanceof x){let[i,c]=at(o,`${e}[${a++}]`);t.set(i,c)}}else if(s instanceof H){let[o,i]=at(s.object,`${e}[${a++}]`);t.set(o,i)}return t}function at(r,e){let n=Ie(r,u.formatTarget);if(!n)throw new q("formatTarget is required",e);let t=[];for(let i of ve(r,u.metadataKeys))if(i instanceof X)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 ve(r,u.metadataRenames))if(i instanceof V){for(let c of i.object)if(c instanceof x){let l=He(c,u.fromKey),d=He(c,u.toKey);l&&d&&a.set(l,d)}}else if(i instanceof H){let c=i.object,l=He(c,u.fromKey),d=He(c,u.toKey);l&&d&&a.set(l,d)}let s=$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 na(r){return r.predicate?.subject}function ve(r,e){let n=[];for(let t of r.statement){let a=na(t);a&&ue(a,e)&&n.push(t)}return n}function Je(r,e){for(let n of ve(r,e))if(n instanceof H)return n.object}function Ie(r,e){for(let n of ve(r,e))if(n instanceof T)return yn(n.object.subject)}function He(r,e){for(let n of ve(r,e))if(n instanceof X)return n.object}function ct(r,e){for(let n of ve(r,e))if(n instanceof me)return n.object}function $n(r,e){for(let n of ve(r,e))if(n instanceof re)return n.object}function he(r,e,n){let t=He(r,e);if(t===void 0)throw new q(`${e.name} (string) is required`,n);return t}function rt(r,e,n){let t=ct(r,e);if(t===void 0)throw new q(`${e.name} (number) is required`,n);return t}function ta(r,e,n){let t=$n(r,e);if(t===void 0)throw new q(`${e.name} (boolean) is required`,n);return t}function Ce(r,e,n,t){let a=Ie(r,e);if(!a)throw new q(`${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=Pe(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(g=>{let m=g.metadata?.namespace_?.version;return m&&m.major===a.major&&m.minor===a.minor&&m.patch===a.patch})??l[0]:l[0],f=new Nn(d,this.repository);i=await this.objectParser.parseKanonaks(f),this.cache.set(o,i)}let c=Pe(i,e);if(c)return c;for(let l of i)if(l instanceof G&&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?De(n):n.split(`
18
+ `).map(a=>this.highlightLine(a,t)).join(`
19
+ `)}highlightLine(e,n){let t="",a=0;for(;a<e.length;){let s=!1;for(let o of n){o.re.lastIndex=a;let i=o.re.exec(e);if(i&&i[0].length>0){t+=`<span class="kan-tok-${o.tokenClass}">${De(i[0])}</span>`,a+=i[0].length,s=!0;break}}s||(t+=De(e[a]),a++)}return t}};var un={publisher:"kanonak.org",package_:"derivation",name:"look"},dn={publisher:"kanonak.org",package_:"derivation",name:"tokens"},Ee={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},wn={publisher:"kanonak.org",package_:"core-rdf",name:"label"},lt={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},aa={publisher:"kanonak.org",package_:"core-rdf",name:"range"},ra={publisher:"kanonak.org",package_:"core-rdf",name:"Class"},sa={publisher:"kanonak.org",package_:"core-owl",name:"Class"},oa={publisher:"kanonak.org",package_:"look",name:"Hero"},ia={publisher:"kanonak.org",package_:"look",name:"PropertyList"},ca={publisher:"kanonak.org",package_:"look",name:"PropertyTable"},la={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},ua={publisher:"kanonak.org",package_:"look",name:"ChipRow"},da={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},fa={publisher:"kanonak.org",package_:"look",name:"ReferencedBy"},pa={publisher:"kanonak.org",package_:"look",name:"Instances"},ut={publisher:"kanonak.org",package_:"look",name:"Markdown"},ga={publisher:"kanonak.org",package_:"look",name:"NavGroup"},ma={publisher:"kanonak.org",package_:"look",name:"nav"},jn={publisher:"kanonak.org",package_:"look",name:"NavLink"},ka={publisher:"kanonak.org",package_:"look",name:"footer"},ha={publisher:"kanonak.org",package_:"look",name:"text"},ba={publisher:"kanonak.org",package_:"look",name:"links"},dt={publisher:"kanonak.org",package_:"look",name:"target"},va={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},$a={publisher:"kanonak.org",package_:"look",name:"Timeline"},ya={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},wa={publisher:"kanonak.org",package_:"look",name:"Figure"},ja={publisher:"kanonak.org",package_:"look",name:"Diagram"},_a={publisher:"kanonak.org",package_:"look",name:"facets"},Sa={publisher:"kanonak.org",package_:"look",name:"relation"},Ea={publisher:"kanonak.org",package_:"look",name:"encode"},Ka={publisher:"kanonak.org",package_:"look",name:"cluster"},Ra={publisher:"kanonak.org",package_:"look",name:"connector"},La={publisher:"kanonak.org",package_:"look",name:"channels"},Oa={publisher:"kanonak.org",package_:"look",name:"mapPath"},Ua={publisher:"kanonak.org",package_:"look",name:"to"},Ia={publisher:"kanonak.org",package_:"look",name:"mark"},Ca={publisher:"kanonak.org",package_:"look",name:"expand"},Fa={publisher:"kanonak.org",package_:"look",name:"edges"},Va={publisher:"kanonak.org",package_:"look",name:"nodeTier"},Ta={publisher:"kanonak.org",package_:"look",name:"diagramTier"},Aa={publisher:"kanonak.org",package_:"look",name:"nodeNote"},Ma={publisher:"kanonak.org",package_:"look",name:"edgeLabel"},xa={publisher:"kanonak.org",package_:"look",name:"labelEdges"},Pa={publisher:"kanonak.org",package_:"look",name:"edgeValue"},Na={publisher:"kanonak.org",package_:"look",name:"figureTitle"},Da={publisher:"kanonak.org",package_:"look",name:"titlePosition"},Ba=`(function(){
20
+ if(window.__kanDiagramZoom)return;window.__kanDiagramZoom=1;
21
+ var TIERS=['chip','icon','card','full'];
22
+ var css='.kan-dgm-tier[hidden]{display:none}.kan-dgm-tiers{position:relative}'
23
+ +'.kan-dgm-tiers>.kan-dgm-btn{opacity:0;transition:opacity .12s}.kan-dgm-tiers:hover>.kan-dgm-btn,.kan-dgm-btn:focus{opacity:1}'
24
+ +'#kan-dgm-modal{position:fixed;inset:0;z-index:9999;display:none;background:rgba(0,0,0,.85);cursor:grab}'
25
+ +'#kan-dgm-stage{position:absolute;top:50%;left:50%}'
26
+ +'#kan-dgm-bar{position:fixed;top:14px;left:50%;transform:translateX(-50%);display:flex;gap:9px;align-items:center;font:12px sans-serif;color:#cbd5e1;background:rgba(12,18,32,.92);border:1px solid #1e293b;border-radius:999px;padding:7px 14px;user-select:none}'
27
+ +'#kan-dgm-bar .pip{width:9px;height:9px;border-radius:50%;background:#334155;cursor:pointer}'
28
+ +'#kan-dgm-bar .pip.on{background:#38bdf8}'
29
+ +'#kan-dgm-lbl{min-width:32px;text-transform:capitalize}';
30
+ var sty=document.createElement('style');sty.textContent=css;(document.head||document.documentElement).appendChild(sty);
31
+ var S={cont:null,mode:'snap',tier:1,z:1,x:0,y:0,drag:0,sx:0,sy:0,lock:0};
32
+ function el(id){return document.getElementById(id);}
33
+ function modal(){var m=el('kan-dgm-modal');if(m)return m;
34
+ m=document.createElement('div');m.id='kan-dgm-modal';
35
+ var st=document.createElement('div');st.id='kan-dgm-stage';m.appendChild(st);
36
+ var bar=document.createElement('div');bar.id='kan-dgm-bar';
37
+ var lbl=document.createElement('span');lbl.id='kan-dgm-lbl';bar.appendChild(lbl);
38
+ for(var i=0;i<4;i++){(function(i){var p=document.createElement('span');p.className='pip';p.title=TIERS[i];p.addEventListener('click',function(e){e.stopPropagation();setTier(i);});bar.appendChild(p);})(i);}
39
+ var h=document.createElement('span');h.textContent='scroll: zoom \\u00b7 drag: pan \\u00b7 esc';h.style.cssText='margin-left:6px;color:#64748b';bar.appendChild(h);
40
+ m.appendChild(bar);m.addEventListener('click',function(e){if(e.target===m)close();});document.body.appendChild(m);return m;}
41
+ function apply(){var st=el('kan-dgm-stage');if(st)st.style.transform='translate(calc(-50% + '+S.x+'px),calc(-50% + '+S.y+'px)) scale('+S.z+')';}
42
+ function updBar(){var b=el('kan-dgm-bar');if(!b)return;var geo=S.mode==='geo';var ps=b.querySelectorAll('.pip');for(var i=0;i<ps.length;i++){ps[i].style.display=geo?'none':'';ps[i].className='pip'+(i===S.tier?' on':'');}el('kan-dgm-lbl').textContent=geo?'zoom':TIERS[S.tier];}
43
+ function sizeVisible(){var c=S.cont;if(!c||S.mode==='geo')return;var svg=c.querySelector('.kan-dgm-tier:not([hidden]) svg');if(svg){var vb=(svg.getAttribute('viewBox')||'0 0 800 600').split(' ');var w=parseFloat(vb[2])||800;svg.style.width=Math.min(w,window.innerWidth*0.92)+'px';svg.style.height='auto';svg.style.display='block';}apply();}
44
+ function setTier(i){i=Math.max(0,Math.min(3,i));S.tier=i;var c=S.cont;if(!c)return;var ts=c.querySelectorAll('.kan-dgm-tier');for(var j=0;j<ts.length;j++){if(ts[j].getAttribute('data-tier')===TIERS[i])ts[j].removeAttribute('hidden');else ts[j].setAttribute('hidden','');}sizeVisible();updBar();}
45
+ function uniq(root){var seq=(window.__kanMk=(window.__kanMk||0)+1);var map={};var mk=root.querySelectorAll('marker[id]');for(var i=0;i<mk.length;i++){var o=mk[i].getAttribute('id');var n=o+'_z'+seq;map[o]=n;mk[i].setAttribute('id',n);}var all=root.querySelectorAll('[marker-end],[marker-start],[marker-mid]');for(var j=0;j<all.length;j++){(function(e){['marker-end','marker-start','marker-mid'].forEach(function(a){var v=e.getAttribute(a);if(!v)return;var mm=v.match(/url\\(#(.+?)\\)/);if(mm&&map[mm[1]])e.setAttribute(a,'url(#'+map[mm[1]]+')');});})(all[j]);}}
46
+ function open(tiersEl){modal();var st=el('kan-dgm-stage');var c=tiersEl.cloneNode(true);uniq(c);var bb=c.querySelector('.kan-dgm-btn');if(bb&&bb.parentNode)bb.parentNode.removeChild(bb);st.innerHTML='';st.appendChild(c);S.cont=c;S.x=0;S.y=0;S.z=1;
47
+ S.mode=c.getAttribute('data-geo')?'geo':'snap';
48
+ var vis=c.querySelector('.kan-dgm-tier:not([hidden])');var t=vis?vis.getAttribute('data-tier'):'icon';S.tier=Math.max(0,TIERS.indexOf(t));
49
+ el('kan-dgm-modal').style.display='block';
50
+ if(S.mode==='geo'){var bw=c.getBoundingClientRect().width||600;S.z=Math.min(1.8,(window.innerWidth*0.9)/bw);if(!(S.z>0))S.z=1;}else sizeVisible();
51
+ apply();updBar();}
52
+ function close(){var m=el('kan-dgm-modal');if(m){m.style.display='none';el('kan-dgm-stage').innerHTML='';S.cont=null;}}
53
+ document.addEventListener('wheel',function(e){var m=el('kan-dgm-modal');if(!m||m.style.display==='none')return;e.preventDefault();
54
+ if(S.mode==='geo'){S.z*=e.deltaY<0?1.15:1/1.15;S.z=Math.max(.2,Math.min(S.z,9));apply();return;}
55
+ var n=Date.now();if(n-S.lock<200)return;S.lock=n;setTier(S.tier+(e.deltaY<0?1:-1));},{passive:false});
56
+ document.addEventListener('mousedown',function(e){var m=el('kan-dgm-modal');if(!m||m.style.display==='none')return;S.drag=1;S.sx=e.clientX-S.x;S.sy=e.clientY-S.y;m.style.cursor='grabbing';});
57
+ document.addEventListener('mousemove',function(e){if(!S.drag)return;S.x=e.clientX-S.sx;S.y=e.clientY-S.sy;apply();});
58
+ document.addEventListener('mouseup',function(){S.drag=0;var m=el('kan-dgm-modal');if(m)m.style.cursor='grab';});
59
+ document.addEventListener('keydown',function(e){if(e.key==='Escape')close();});
60
+ function enhance(){var cs=document.querySelectorAll('.kan-dgm-tiers');for(var i=0;i<cs.length;i++){(function(c){if(c.__kz)return;c.__kz=1;
61
+ var b=document.createElement('button');b.type='button';b.className='kan-dgm-btn';b.textContent='\\u2922';b.setAttribute('aria-label','Open and zoom');
62
+ b.style.cssText='position:absolute;top:6px;right:6px;z-index:3;border:1px solid var(--kan-border,#333);background:var(--kan-bg-card,#111);color:var(--kan-text,#ccc);border-radius:6px;width:28px;height:28px;cursor:pointer;font-size:15px;line-height:1;padding:0';
63
+ b.addEventListener('click',function(ev){ev.preventDefault();ev.stopPropagation();open(c);});c.appendChild(b);})(cs[i]);}}
64
+ if(document.readyState!=='loading')enhance();else document.addEventListener('DOMContentLoaded',enhance);
65
+ })();`,Ze={chip:56,icon:120,card:240,full:420},Ha=["chip","icon","card","full"],za={56:"chip",120:"icon",240:"card",420:"full"},_e=11,Ga={publisher:"kanonak.org",package_:"look",name:"placement"},qa={publisher:"kanonak.org",package_:"look",name:"width"},Wa=4,Ya={publisher:"kanonak.org",package_:"look",name:"StatRow"},Xa={publisher:"kanonak.org",package_:"look",name:"Horizon"},Ja={publisher:"kanonak.org",package_:"look",name:"PackageContents"},_n={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},Za={publisher:"kanonak.org",package_:"core-kanonak",name:"Publisher"},Qa={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},er={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},nr={publisher:"kanonak.org",package_:"look",name:"packages"},tr={publisher:"kanonak.org",package_:"code-grammars",name:"CodeGrammar"},ar={publisher:"kanonak.org",package_:"code-grammars",name:"language"},rr={publisher:"kanonak.org",package_:"code-grammars",name:"rule"},sr={publisher:"kanonak.org",package_:"code-grammars",name:"tokenClass"},or={publisher:"kanonak.org",package_:"code-grammars",name:"pattern"},ir={publisher:"kanonak.org",package_:"look",name:"Links"},cr={publisher:"kanonak.org",package_:"link",name:"url"},lr={publisher:"kanonak.org",package_:"link",name:"links"};var ur={publisher:"kanonak.org",package_:"look",name:"Distribution"},dr={publisher:"kanonak.org",package_:"look",name:"alphaPath"},fr={publisher:"kanonak.org",package_:"look",name:"betaPath"},Sn={publisher:"kanonak.org",package_:"look",name:"SectionHeading"},pr={publisher:"kanonak.org",package_:"look",name:"SectionNav"},ft={publisher:"kanonak.org",package_:"look",name:"heading"},gr={publisher:"kanonak.org",package_:"look",name:"note"},mr={publisher:"kanonak.org",package_:"look",name:"VersionDelta"},kr={publisher:"kanonak.org",package_:"look",name:"TimePlot"},hr={publisher:"kanonak.org",package_:"look",name:"Details"},br={publisher:"kanonak.org",package_:"look",name:"EmbeddedViews"},vr={publisher:"kanonak.org",package_:"look",name:"skip"},$r={publisher:"kanonak.org",package_:"derivation",name:"derivations"},yr={publisher:"kanonak.org",package_:"look",name:"laneBy"},wr={publisher:"kanonak.org",package_:"look",name:"stats"},jr={publisher:"kanonak.org",package_:"look",name:"statPath"},_r={publisher:"kanonak.org",package_:"look",name:"statLabel"},pt={publisher:"kanonak.org",package_:"look",name:"labelPath"},Sr={publisher:"kanonak.org",package_:"look",name:"badgePath"},En={publisher:"kanonak.org",package_:"look",name:"orderBy"},gt={publisher:"kanonak.org",package_:"look",name:"track"},sn={publisher:"kanonak.org",package_:"look",name:"metricPath"},Kn={publisher:"kanonak.org",package_:"look",name:"hueBy"},mt={publisher:"kanonak.org",package_:"look",name:"lowerPath"},kt={publisher:"kanonak.org",package_:"look",name:"upperPath"},Er={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"},Lr={publisher:"kanonak.org",package_:"look",name:"tierChip"},Or={publisher:"kanonak.org",package_:"look",name:"tierIcon"},Ur={publisher:"kanonak.org",package_:"look",name:"tierCard"},Ir={publisher:"kanonak.org",package_:"look",name:"tierFull"},Cr={publisher:"kanonak.org",package_:"core-rdf",name:"type"},bt=6,Rn={publisher:"kanonak.org",package_:"look",name:"bands"},Fr={publisher:"kanonak.org",package_:"look",name:"title"},Vr={publisher:"kanonak.org",package_:"look",name:"eyebrow"},Tr={publisher:"kanonak.org",package_:"look",name:"subtitle"},vt={publisher:"kanonak.org",package_:"look",name:"badges"},fe={publisher:"kanonak.org",package_:"look",name:"source"},Ar={publisher:"kanonak.org",package_:"look",name:"via"},Mr={publisher:"kanonak.org",package_:"look",name:"size"},xr={publisher:"kanonak.org",package_:"look",name:"icon"},Pr={publisher:"kanonak.org",package_:"look",name:"avatar"},Nr={publisher:"kanonak.org",package_:"look",name:"contents"},Dr={publisher:"kanonak.org",package_:"look",name:"transitive"},Br={publisher:"kanonak.org",package_:"look",name:"chips"},$t={publisher:"kanonak.org",package_:"look",name:"entries"},Hr={publisher:"kanonak.org",package_:"look",name:"urlForm"},Cn=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=Gr(e)?void 0:on(e);return n?{declaration:n,sourceClass:{publisher:ne(e),package_:(e.namespace||"").split("/")[1]?.split("@")[0]??"",name:e.name}}:this.lookFromTypeRefs(be(e))}lookFromTypeRefs(e){let n=new Set,t=[...e];for(;t.length>0;){let s=t.shift().subject,o=ee(s);if(n.has(o))continue;n.add(o);let i=ke(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 Qe(c))t.push(l)}if(!n.has(ee(Ee)))for(let a of ke(this.catalog,Ee)){let s=on(a);if(s)return{declaration:s,sourceClass:{...Ee}}}}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=be(e);for(;a.length>0;){let s=a.shift(),o=ee(s.subject);if(t.has(o))continue;t.add(o);let i=ke(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 Qe(c))a.push(l)}}if(!t.has(ee(Ee))){let s=ke(this.catalog,Ee);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=D(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),g=[...this.findCascadedTokens(e)].map(([m,k])=>`--kan-${m}: ${k};`).join(" ");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" style="${Ke(g)}">
66
+ <style>
67
+ .tier-chip,.tier-icon,.tier-card{display:none}
68
+ .tier-full{display:block}
69
+ @media (max-width:400px){.tier-full{display:none}.tier-card{display:block}}
70
+ @media (max-width:160px){.tier-card{display:none}.tier-icon{display:block}}
71
+ @media (max-width:60px){.tier-icon{display:none}.tier-chip{display:block}}
72
+ </style>
73
+ <g class="tier-chip">${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 Fn(e);this.resolverInstance=new an(n,e,new An(e))}return this.resolverInstance}async evaluateTier(e,n){if(!e)return"";let t;try{t=Ue(e,"semanticSvg-tier",{catalog:this.catalog,depth:0})}catch{return""}let a=new Xe(this.expressionResolver(),this.catalog);if(t.kind==="concat"){let o=[];for(let i of t.parts){let c=await a.evaluate(i,n);o.push(wt(i.kind,c))}return o.join("")}let s=await a.evaluate(t,n);return wt(t.kind,s)}async evaluateCarrier(e,n){if(!e)return;let t;try{t=Ue(e,"look-carrier",{catalog:this.catalog,depth:0})}catch{return}let a=new Xe(this.expressionResolver(),this.catalog),s=new Map([["input",n]]),o=await a.evaluate(t,s),i=Et(o);return i===""?void 0:i}async evaluateCarrierNum(e,n){let t=await this.evaluateCarrier(e,n);return t===void 0?NaN:parseFloat(t)}readEmbeddedCarrier(e,n){let t=W(e,n);return t instanceof H&&t.object instanceof x?t.object:void 0}referenceLabel(e){let n=e.subject,t=ke(this.catalog,n);if(t.length===0){let a=Q(this.catalog,n);a&&t.push(a)}for(let a of t){let s=D(this.catalog,a);if(s.label!==a.name)return s.label}return n.name}collectCascadedSvgTiers(e){let n={},t=c=>{let l=W(c,ht);if(!(l instanceof H))return;let d=l.object,f=cn(d,Lr),g=cn(d,Or),m=cn(d,Ur),k=cn(d,Ir);n.tierChip===void 0&&f!==void 0&&(n.tierChip=f),n.tierIcon===void 0&&g!==void 0&&(n.tierIcon=g),n.tierCard===void 0&&m!==void 0&&(n.tierCard=m),n.tierFull===void 0&&k!==void 0&&(n.tierFull=k)};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 ke(this.catalog,l))t(d)}let o=new Set,i=be(e);for(;i.length>0;){let c=i.shift(),l=ee(c.subject);if(o.has(l))continue;o.add(l);let d=ke(this.catalog,c.subject);for(let f of d){t(f);for(let g of Qe(f))i.push(g)}}if(!o.has(ee(Ee)))for(let c of ke(this.catalog,Ee))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(ne(e))??"";return`${a}
81
+ ${s}`}findBaseStylesheet(e){let n="kanonak.org/site/content",t=l=>$e((l.namespace||"").split("@")[1]??""),a,s,o,i;for(let l of this.catalog){if(!(l instanceof G)||l.name!=="base-stylesheet")continue;let d=l.namespace||"";if(d.startsWith(`${e}/look-styles@`)){let f=t(l);f&&(!s||en(f,s)>0)&&(a=l,s=f)}else if(d.startsWith("kanonak.org/look-styles@")){let f=t(l);f&&(!i||en(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 X)return l.object}}async 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=ne(e),s=this.collectSectionHeadings(t);this.diagramScriptEmitted=!1,this.diagramArrowSeq=0;let o=[];for(let i of t){let c=ze(i);c&&R(c,Sn)&&o.push('<div style="clear:both"></div>'),o.push(this.applyBandPlacement(i,await this.renderBand(i,e,a,s)))}return o.push('<div style="clear:both"></div>'),o.join(`
82
+ `)}applyBandPlacement(e,n){let t=Z(e,Ga);if(t!=="floatLeft"&&t!=="floatRight")return n;let a=t==="floatLeft"?"left":"right",s=Z(e,qa),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||!R(a,Sn))continue;let s=Z(t,ft);s&&n.push({slug:jt(s),label:s})}return n}publisherSubject(e){for(let t of this.catalog){if(!(t instanceof G)||ne(t)!==e||!be(t).some(s=>R(s.subject,Za)))continue;return ke(this.catalog,{publisher:e,package_:(t.namespace||"").split("/")[1]?.split("@")[0]??"",name:t.name})[0]??t}let n=new G;return n.namespace=e,n.name=e,n.statement=[T.parse("kanonak.org/core-rdf/type","kanonak.org/core-kanonak/Publisher"),X.parse("kanonak.org/core-rdf/label",e)],n}hasDeclaredView(e){let n=this.findCascadedLook(e);return n?!(a=>a.publisher===Ee.publisher&&a.package_===Ee.package_&&a.name===Ee.name||a.publisher===_n.publisher&&a.package_===_n.package_&&a.name===_n.name)(n.sourceClass):!1}renderPackageVersionList(e,n,t){let a=ne(t),s=this.renderNavGroup(t,a),o=this.renderBreadcrumb(t,a,{bareOverview:!0}),i=n.map(l=>`<a class="kan-resource-card" href="${p(this.packageHref(a,e,l))}/"><h3 class="kan-resource-card-title">${p(l)}</h3></a>`).join(`
83
+ `),c=`<header class="kan-hero">
84
+ <span class="kan-hero-eyebrow">PACKAGE</span>
85
+ <h1 class="kan-hero-title">${p(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>${p(e)}</title>
95
+ <link rel="stylesheet" href="${p(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
+ `}async renderDocument(e,n){let t=await this.renderHtml(e),a=D(this.catalog,e).label,s=n?.rootIndex?"index.css":`${e.name}.css`,o=!n?.rootIndex&&this.hasSvgDerivation(e)?`<figure class="kan-figure"><img src="${p(e.name)}.svg" alt=""></figure>
106
+ `:"",i=ne(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>${p(a)}</title>
112
+ <link rel="stylesheet" href="${p(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=be(e);for(;t.length>0;){let a=t.shift(),s=ee(a.subject);if(n.has(s))continue;n.add(s);let o=Q(this.catalog,a.subject);if(o){for(let i of o.statement)if(i instanceof V&&we(i,"kanonak.org","derivation","derivations")){for(let c of i.object??[])if(c instanceof x)for(let l of c.statement){if(!(l instanceof T)||!we(l,"kanonak.org","derivation","format")||!(l.object instanceof E))continue;let d=l.object.subject;if(d.publisher==="kanonak.org"&&d.package_==="formats"&&d.name==="svg")return!0}}for(let i of Qe(o))t.push(i)}}return!1}async renderBand(e,n,t,a=[],s=""){let o=ze(e);return o?R(o,pr)?this.renderSectionNav(a):R(o,oa)?this.renderHero(e,n,t):R(o,ia)?this.renderPropertyList(e,n,t):R(o,ca)?this.renderPropertyTable(e,n,t,s):R(o,la)?this.renderBadgeRow(e,n,t):R(o,ua)?this.renderChipRow(e,n,t):R(o,da)?this.renderReferenceList(e,n,t):R(o,fa)?this.renderReferencedBy(e,n,t):R(o,pa)?this.renderInstances(e,n,t):R(o,ut)?this.renderMarkdown(e,n,t):R(o,ir)?this.renderLinks(e,n):R(o,ga)?this.renderNavGroup(n,t):R(o,va)?this.renderResourceGrid(e,t,n):R(o,$a)?this.renderTimeline(e,t):R(o,ya)?this.renderVersionDiff(e,t):R(o,wa)?this.renderFigure(e,n,t):R(o,ja)?this.renderDiagram(e,n,t):R(o,Ya)?this.renderStatRow(e,n):R(o,Xa)?this.renderHorizon(e,n,t):R(o,Ja)?this.renderPackageContents(n,t):R(o,Qa)?this.renderFeaturedResource(e,t):R(o,er)?this.renderPublisherPackages(e,t):R(o,ur)?this.renderDistribution(e,n):R(o,Sn)?this.renderSectionHeading(e):R(o,mr)?this.renderVersionDelta(e,n):R(o,kr)?this.renderTimePlot(e,n,t):R(o,hr)?this.renderDetails(e,n,t):R(o,br)?this.renderEmbeddedViews(e,n,t,s):`<!-- LookRenderer: unsupported band ${o.publisher}/${o.package_}/${o.name} -->`:"<!-- LookRenderer: band has no rdf:type -->"}async collectTrackedSeries(e,n,t,a){let{hueBy:s,lowerPath:o,upperPath:i}=a??{},c=new Map,l=e.length;for(let d=0;d<e.length;d++){let f=e[d],g=this.readPropertyValueReferences(f,n);for(let m of g){let k=Q(this.catalog,{publisher:m.subject.publisher,package_:m.subject.package_,name:m.subject.name,...m.subject.version?{version:m.subject.version}:{}});if(!k)continue;let b=m.subject.name,h=c.get(b);h||(h={key:b,label:D(this.catalog,k).label,points:new Array(l).fill(null),...o?{lower:new Array(l).fill(null)}:{},...i?{upper:new Array(l).fill(null)}:{}},c.set(b,h));let v=await this.evaluateCarrierNum(t,k);if(Number.isFinite(v)&&(h.points[d]=v),o&&h.lower){let j=await this.evaluateCarrierNum(o,k);Number.isFinite(j)&&(h.lower[d]=j)}if(i&&h.upper){let j=await this.evaluateCarrierNum(i,k);Number.isFinite(j)&&(h.upper[d]=j)}if(s){let j=await this.evaluateCarrierNum(s,k);Number.isFinite(j)&&(h.hue=j)}h.lastSubject=k}}return[...c.values()]}hrefForSubject(e,n,t="="){let a=e.namespace||"",s=a.split("/")[1]?.split("@")[0]??"",o=a.split("@")[1]??"",i=o?$e(o):void 0;return this.resourceHref({publisher:ne(e),package_:s,name:e.name,...i?{version:i}:{}},n,t)}async renderVersionDiff(e,n){let t=B(e,fe);if(!t)return"<!-- LookRenderer.VersionDiff: no look.source -->";let a=this.readEmbeddedCarrier(e,sn),s=B(e,gt);if(!s||!a)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let o=B(e,En),i=this.readEmbeddedCarrier(e,Kn),c=this.findInstancesOfClass(t);if(c.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let l=m=>o?this.readPropertyValueText(m,o)??"":"",d=c.slice().sort((m,k)=>l(m).localeCompare(l(k))),f=await this.collectTrackedSeries(d,s,a,{hueBy:i});return f.length===0?"<!-- LookRenderer.VersionDiff: no tracked series -->":`<section class="kan-vdiff">${f.map((m,k)=>{let b=m.hue!==void 0?m.hue:Math.round(k*360/f.length),h=m.points.filter(U=>U!==null);if(h.length===0)return"";let v=h[0],j=h[h.length-1],_=j-v,S;if(Math.abs(_)>=.005){let U=_>0?"up":"down",P=_>0?"\u25B2":"\u25BC";S=`<span class="kan-vdiff-delta ${U}">${_>0?"+":""}${_.toFixed(2)} ${P}</span>`}else S='<span class="kan-vdiff-delta flat">\u2014</span>';let L=m.lastSubject&&this.isLinkable(ne(m.lastSubject),n)?`<a href="${p(this.hrefForSubject(m.lastSubject,n))}">${p(m.label)}</a>`:p(m.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${b}"><span class="kan-vdiff-label">${L}</span><span class="kan-vdiff-start">${v.toFixed(2)}</span>`+this.sparkline(m.points,b)+`<span class="kan-vdiff-end">${j.toFixed(2)}</span>`+S+"</div>"}).join("")}</section>`}sparkline(e,n){let o=`hsl(${n},65%,60%)`,i=e.filter(h=>h!==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,g=h=>f<=1?132/2:4+h/(f-1)*124,m=h=>d<1e-9?30/2:26-(h-c)/d*22,k=[],b=[];return e.forEach((h,v)=>{if(h===null)return;let j=g(v),_=m(h);k.push(`${j.toFixed(1)},${_.toFixed(1)}`),b.push(`<circle cx="${j.toFixed(1)}" cy="${_.toFixed(1)}" r="2" fill="${o}"/>`)}),`<svg class="kan-vdiff-spark" viewBox="0 0 132 30" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" role="img"><polyline points="${k.join(" ")}" fill="none" stroke="${o}" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round"/>`+b.join("")+"</svg>"}svgUrlForSubject(e,n,t="="){return`${this.hrefForSubject(e,n,t)}.svg`}renderFigure(e,n,t){let a=n,s=B(e,fe);if(s){let d=Q(this.catalog,s);d&&(a=d)}let o=this.svgUrlForSubject(a,t),i=D(this.catalog,a).label,c=Z(e,Mr);return`<figure class="kan-figure${c==="small"||c==="medium"||c==="large"?` kan-figure-${c}`:""}"><img class="kan-figure-img" src="${p(o)}" alt="${p(i)}" loading="lazy"/></figure>`}diagramArrowSeq=0;diagramScriptEmitted=!1;async renderDiagram(e,n,t,a=0,s=new Set){let o=this.gatherValueItems(W(e,_a)).filter(k=>k instanceof x);if(o.length===0)return"<!-- LookRenderer.Diagram: no look.facets -->";let i=[];for(let k of o){let b=B(k,Sa);if(!b){i.push("<!-- LookRenderer.Diagram: facet has no resolvable look.relation -->");continue}let h=B(k,Ea),v=this.resolveFacetNodes(n,b);if(v.length===0){i.push(`<!-- LookRenderer.Diagram: relation ${b.publisher}/${b.package_}/${b.name} resolved to 0 instances -->`);continue}let j=await this.resolveFacetChannels(k,v),_=W(k,Ia),S=_ instanceof H&&_.object instanceof x?_.object:void 0,L=Z(k,Va),U=L&&Ze[L]!==void 0?Ze[L]:void 0,P=U??this.classTierSize(v),I=za[P??Ze.icon]??"icon",ce=this.readEmbeddedCarrier(k,Aa),C=B(k,Ca),N=C?Q(this.catalog,C):void 0;if(N){i.push(await this.renderDiagramExpand(v,N,t,a,s,ce,U));continue}if(h&&R(h,Ra)){let Y=B(k,Fa),se=this.facetEdgeLabel(k,Y??b),le=this.readEmbeddedCarrier(k,Pa);i.push(await this.embedTiers(I,O=>Y?this.renderDiagramDag(v,Y,j,t,O,se,le):this.renderDiagramConnector(n,v,j,t,O,se,le)));continue}if(h&&!R(h,Ka)){i.push(`<!-- LookRenderer.Diagram: unknown encode role ${h.publisher}/${h.package_}/${h.name} -->`);continue}i.push(S?`<div class="kan-dgm-tiers" data-geo="1"><div class="kan-dgm-tier" data-tier="card">${await this.renderDiagramCluster(v,j,S,t,P)}</div></div>`:await this.embedTiers(I,Y=>this.renderDiagramCluster(v,j,void 0,t,Y)))}let c=Z(e,Na),l=Z(e,Da),d=k=>`<div class="kan-diagram-title" style="font-weight:600;font-size:0.95rem;color:var(--kan-text);${k}">${p(c)}</div>`,f=c&&l!=="bottom"?d("margin:0 0 .5rem"):"",g=c&&l==="bottom"?d("margin:.5rem 0 0"):"",m="";return a===0&&!this.diagramScriptEmitted&&(this.diagramScriptEmitted=!0,m=`<script>${Ba}</script>`),`<section class="kan-diagram">${f}${i.join("")}${g}${m}</section>`}async embedTiers(e,n){let t=[];for(let a of Ha){let s=await n(Ze[a]);t.push(`<div class="kan-dgm-tier" data-tier="${a}"${a===e?"":" hidden"}>${s}</div>`)}return`<div class="kan-dgm-tiers">${t.join("")}</div>`}async renderDiagramExpand(e,n,t,a,s,o,i){let c=[];for(let l of e){let d=`${l.namespace??""}/${l.name}`,f=await this.diagramNodeRow(l,t,i??56,o),m=a<Wa&&!s.has(d)?await this.renderDiagram(n,l,t,a+1,new Set([...s,d])):"",k=m?`<div style="margin-left:30px;border-left:2px solid var(--kan-border);padding-left:14px;margin-top:6px">${m}</div>`:"";c.push(`<div class="kan-diagram-node" style="margin:6px 0">${f}${k}</div>`)}return`<figure class="kan-diagram-figure"><div class="kan-diagram-tree">${c.join("")}</div></figure>`}async diagramNodeRow(e,n,t=56,a){let s=this.hrefForSubject(e,n),o=this.svgUrlForSubject(e,n),i=D(this.catalog,e).label,c=a?await this.evaluateCarrier(a,e):void 0,l=c!==void 0?`<span class="kan-diagram-node-note" style="display:block;font-size:0.8em;color:var(--kan-text-dim)">${p(c)}</span>`:"";return`<a href="${p(s)}" style="display:inline-flex;align-items:center;gap:10px;text-decoration:none"><img src="${p(o)}" width="${t}" height="${t}" alt="" loading="lazy"/><span><span class="kan-diagram-node-label">${p(i)}</span>${l}</span></a>`}classTierSize(e){let n;for(let t of e)for(let a of be(t)){let s=Q(this.catalog,a.subject);if(!s)continue;let o=Z(s,Ta),i=o?Ze[o]:void 0;i!==void 0&&(n=n===void 0?i:Math.max(n,i))}return n}resolveFacetNodes(e,n){let t=[];for(let a of this.readPropertyValueReferences(e,n)){let s=a.subject,o=Q(this.catalog,{publisher:s.publisher,package_:s.package_,name:s.name,...s.version?{version:s.version}:{}});o&&t.push(o)}return t}async resolveFacetChannels(e,n){let t=this.gatherValueItems(W(e,La)).filter(s=>s instanceof x),a=[];for(let s of t){let o=this.readEmbeddedCarrier(s,Oa),i=Z(s,Ua);if(!o||!i)continue;let c=[];for(let k of n){let b=await this.evaluateCarrierNum(o,k);c.push(Number.isFinite(b)?b:NaN)}let l=c.filter(k=>Number.isFinite(k)),d=l.length?Math.min(...l):0,g=(l.length?Math.max(...l):0)-d,m=c.map(k=>Number.isFinite(k)&&g>0?(k-d)/g:.5);a.push({to:i,norm:m})}return a}facetEdgeLabel(e,n){let t=Z(e,Ma);if(t)return t;if(zr(e,xa)&&n){let s=Q(this.catalog,n);if(s)return D(this.catalog,s).label}}async edgeText(e,n,t){let a=t&&n?await this.evaluateCarrier(t,n):void 0,s=[e,a].filter(o=>!!o);return s.length?s.join(" "):void 0}edgeLabelEl(e,n,t){return`<text x="${e.toFixed(1)}" y="${n.toFixed(1)}" text-anchor="middle" class="kan-diagram-edge-label" style="font-size:11px;paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px;fill:var(--kan-text-dim)">${p(t)}</text>`}async renderDiagramCluster(e,n,t,a,s){let o=s??132,i=18,c=18,l=n.find(b=>b.to==="opacity");if(t){let b=[];for(let h=0;h<e.length;h++){let v=e[h],j=await this.renderBand(t,v,a),_=this.hrefForSubject(v,a),S=D(this.catalog,v).label,L=l?`opacity:${(.4+l.norm[h]*.6).toFixed(2)};`:"";b.push(`<a class="kan-diagram-mark" href="${p(_)}" style="display:block;text-decoration:none;${L}">${j}<span class="kan-diagram-mark-label">${p(S)}</span></a>`)}return`<figure class="kan-diagram-figure"><div class="kan-diagram-marks" style="display:flex;flex-wrap:wrap;gap:18px;align-items:flex-start">${b.join("")}</div></figure>`}let d=Math.min(e.length,4),f=Math.ceil(e.length/d),g=c*2+d*o+(d-1)*i,m=c*2+f*o+(f-1)*i,k=e.map((b,h)=>{let v=h%d,j=Math.floor(h/d),_=c+v*(o+i),S=c+j*(o+i),L=l?.4+l.norm[h]*.6:1;return this.diagramTile(b,_,S,o,a,L)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${g} ${m}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${k}</svg></figure>`}async renderDiagramConnector(e,n,t,a,s,o,i){let c=s??120,l=24,d=130,f=18,g=t.find(C=>C.to==="thickness"),m=t.find(C=>C.to==="opacity"),k=n.length,b=k*c+(k-1)*l,h=f*2+b,v=f*2+c+d+c,j=f,_=f+(b-c)/2,S=f+c+d,L=`kan-arrow-${this.diagramArrowSeq++}`,U=[],P=[],I=[];for(let C=0;C<n.length;C++){let N=n[C],Y=f+C*(c+l),se=j+c,le=_+c/2,O=S-_e,J=Y+c/2,F=(se+S)/2,y=g?1.5+g.norm[C]*5.5:2,M=m?.4+m.norm[C]*.6:1,z=m?` stroke-opacity="${M.toFixed(2)}"`:"";U.push(`<path d="M${se.toFixed(1)},${le.toFixed(1)} C${F.toFixed(1)},${le.toFixed(1)} ${F.toFixed(1)},${J.toFixed(1)} ${O.toFixed(1)},${J.toFixed(1)}" class="kan-diagram-edge" fill="none" stroke="var(--kan-border)" stroke-width="${y.toFixed(1)}"${z} marker-end="url(#${L})"/>`);let K=await this.edgeText(o,N,i);K&&P.push(this.edgeLabelEl((se+S)/2,(le+J)/2-5,K)),I.push(this.diagramTile(N,S,Y,c,a,m?M:1))}let ce=this.diagramTile(e,j,_,c,a);return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${v.toFixed(0)} ${h.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(L,"var(--kan-border)")}${U.join("")}${P.join("")}${ce}${I.join("")}</svg></figure>`}arrowMarkerDef(e,n){return`<defs><marker id="${e}" viewBox="0 0 ${_e} ${_e}" refX="0" refY="${(_e/2).toFixed(1)}" markerWidth="${_e}" markerHeight="${_e}" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,1 L${_e},${(_e/2).toFixed(1)} L0,${_e-1}" fill="${n}"/></marker></defs>`}async renderDiagramDag(e,n,t,a,s,o,i){let c=s??110,l=110,d=22,f=18,g=new Map(e.map((y,M)=>[y.name,M])),m=new Set(e.map(y=>y.name)),k=new Map(e.map(y=>[y.name,[]])),b=new Map(e.map(y=>[y.name,[]]));for(let y of e)for(let M of this.readPropertyValueReferences(y,n)){let z=M.subject.name;z!==y.name&&m.has(z)&&(k.get(y.name).push(z),b.get(z).push(y.name))}let h=new Map,v=new Set,j=y=>{let M=h.get(y);if(M!==void 0)return M;if(v.has(y))return 0;v.add(y);let z=0;for(let K of b.get(y)??[])z=Math.max(z,j(K)+1);return v.delete(y),h.set(y,z),z};for(let y of e)j(y.name);let _=Math.min(...h.values());if(_>0)for(let y of[...h.keys()])h.set(y,h.get(y)-_);let S=Math.max(0,...h.values()),L=Array.from({length:S+1},()=>[]);for(let y of e)L[h.get(y.name)].push(y);let U=Math.max(1,...L.map(y=>y.length)),P=!1;for(let[y,M]of k)for(let z of M)h.get(z)<=h.get(y)&&(P=!0);let I=P?84:0,ce=U*c+(U-1)*d,C=f*2+(S+1)*c+S*l,N=f*2+I+ce,Y=new Map;L.forEach((y,M)=>{let z=y.length*c+(y.length-1)*d,K=f+I+(ce-z)/2;y.forEach((A,pe)=>Y.set(A.name,{x:f+M*(c+l),y:K+pe*(c+d)}))});let se=t.find(y=>y.to==="thickness"),le=`kan-arrow-${this.diagramArrowSeq++}`,O=[],J=[];for(let[y,M]of k){let z=Y.get(y);for(let K of M){let A=Y.get(K),pe=A.x>=z.x,ge=se?1.5+se.norm[g.get(y)]*4.5:2,te,oe,ie;if(pe){let ae=z.x+c,Fe=z.y+c/2,Le=A.x-_e,Ge=A.y+c/2,Me=(ae+Le)/2;te=`M${ae.toFixed(1)},${Fe.toFixed(1)} C${Me.toFixed(1)},${Fe.toFixed(1)} ${Me.toFixed(1)},${Ge.toFixed(1)} ${Le.toFixed(1)},${Ge.toFixed(1)}`,oe=(ae+Le)/2,ie=(Fe+Ge)/2-5}else{let ae=z.x+c/2,Fe=z.y,Le=A.x+c/2,Ge=A.y-_e,Me=f+I*.2;te=`M${ae.toFixed(1)},${Fe.toFixed(1)} C${ae.toFixed(1)},${Me.toFixed(1)} ${Le.toFixed(1)},${Me.toFixed(1)} ${Le.toFixed(1)},${Ge.toFixed(1)}`,oe=(ae+Le)/2,ie=Me+4}let Re=pe?"":' stroke-dasharray="6 4"';O.push(`<path d="${te}" class="kan-diagram-edge" fill="none" stroke="var(--kan-accent)" stroke-width="${ge.toFixed(1)}" stroke-opacity="0.75"${Re} marker-end="url(#${le})"/>`);let je=await this.edgeText(o,e[g.get(y)],i);je&&J.push(this.edgeLabelEl(oe,ie,je))}}let F=e.map(y=>{let M=Y.get(y.name);return this.diagramTile(y,M.x,M.y,c,a)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${C.toFixed(0)} ${N.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(le,"var(--kan-accent)")}${O.join("")}${J.join("")}${F}</svg></figure>`}diagramTile(e,n,t,a,s,o=1){let i=this.hrefForSubject(e,s),c=this.svgUrlForSubject(e,s),l=D(this.catalog,e).label,d=o<1?` opacity="${o.toFixed(2)}"`:"";return`<a href="${p(i)}"><image href="${p(c)}" x="${n}" y="${t}" width="${a}" height="${a}"${d}><title>${p(l)}</title></image></a>`}async renderStatRow(e,n){let t=W(e,wr),a=this.gatherValueItems(t).filter(o=>o instanceof x);if(a.length===0)return"<!-- LookRenderer.StatRow: no look.stats -->";let s=[];for(let o of a){let i=this.readEmbeddedCarrier(o,jr);if(!i)continue;let c=await this.evaluateCarrier(i,n);if(c===void 0)continue;let l=Z(o,_r)??"";s.push('<div class="kan-stat">'+(l?`<span class="kan-stat-label">${p(l)}</span>`:"")+`<span class="kan-stat-val">${p(c)}</span></div>`)}return s.length===0?"":`<div class="kan-stat-row">${s.join("")}</div>`}renderHorizon(e,n,t){let a=B(e,fe);if(!a)return"<!-- LookRenderer.Horizon: no look.source -->";let s=this.gatherValueItems(W(n,a)).filter(i=>i instanceof x);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 g of e.statement){let m=g.predicate?.subject;if(!m||m.name==="type")continue;let k=this.readLabelForUri({publisher:m.publisher,package_:m.package_,name:m.name})??m.name;if(g instanceof X||g instanceof me||g instanceof re)o.push(`<div class="kan-cond-field"><span class="kan-cond-key">${p(k)}</span><span class="kan-cond-v">${p(String(g.object))}</span></div>`);else if(g instanceof T&&g.object instanceof E){let b=g.object.subject,h=this.readLabelForUri({publisher:b.publisher,package_:b.package_,name:b.name})??b.name;o.push(`<div class="kan-cond-field"><span class="kan-cond-key">${p(k)}</span><span class="kan-cond-v">${p(h)}</span></div>`)}else if(g instanceof H)i.push(this.renderConditionNode(g.object,n,t+1));else if(g instanceof V)for(let b of g.object??[])b instanceof x&&i.push(this.renderConditionNode(b,n,t+1))}let c=o.length?`<div class="kan-cond-fields">${o.join("")}</div>`:"",l=i.length?`<div class="kan-cond-children">${i.join("")}</div>`:"",d=i.length>0,f=d?`<span class="kan-cond-op">${p(s)}</span>`:`<div class="kan-cond-type">${p(s)}</div>`;return`<div class="kan-cond ${d?"kan-cond-branch":"kan-cond-leaf"}">${f}${c}${l}</div>`}renderSectionHeading(e){let n=e,t=Z(n,ft);if(!t)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let a=Z(n,gr);return`<div class="kan-section" id="${jt(t)}"><h2 class="kan-section-title">${p(t)}</h2>`+(a?`<p class="kan-section-note">${p(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="#${p(t.slug)}">${p(t.label)}</a>`).join("")}</nav>`}async renderVersionDelta(e,n){let t=this.readEmbeddedCarrier(e,sn);if(!t)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let a=async C=>{let N=await this.evaluateCarrierNum(t,C);return Number.isFinite(N)?N:void 0},s=await a(n);if(s===void 0)return"";let o=C=>$e((C.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},i=(C,N)=>C.major-N.major||C.minor-N.minor||C.patch-N.patch,c={publisher:ne(n),package_:(n.namespace||"").split("/")[1]?.split("@")[0]??"",name:n.name},l=o(n),d,f;for(let C of ke(this.catalog,c)){let N=o(C);i(N,l)<0&&(!f||i(N,f)>0)&&(d=C,f=N)}if(!d||!f)return'<div class="kan-delta kan-delta-first">First tracked in this version</div>';let g=await a(d);if(g===void 0)return"";let m=s-g,k=Math.abs(m)<.005?"flat":m>0?"up":"down",b=k==="up"?"\u25B2":k==="down"?"\u25BC":"\u2014",h=k==="up"?"#34d399":k==="down"?"#f87171":"var(--kan-text-faint)",v=`${f.major}.${f.minor}.${f.patch}`,j=320,_=46,S=14,L=30,U=C=>S+Math.min(1,Math.max(0,C))*(j-2*S),P=U(g),I=U(s),ce=`<svg class="kan-delta-track" viewBox="0 0 ${j} ${_}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${S}" y1="${L}" x2="${j-S}" y2="${L}" class="kan-delta-base"/><line x1="${P.toFixed(1)}" y1="${L}" x2="${I.toFixed(1)}" y2="${L}" stroke="${h}" stroke-width="3"/><circle cx="${P.toFixed(1)}" cy="${L}" r="4" class="kan-delta-prev"/><circle cx="${I.toFixed(1)}" cy="${L}" r="5.5" fill="${h}"/><text x="${P.toFixed(1)}" y="${L-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${g.toFixed(2)}</text><text x="${I.toFixed(1)}" y="${L+17}" text-anchor="middle" class="kan-delta-tick">${s.toFixed(2)}</text></svg>`;return`<div class="kan-delta"><div class="kan-delta-head"><span class="kan-delta-vs">vs ${p(v)}</span><span class="kan-delta-badge ${k}">${m>0?"+":""}${m.toFixed(2)} ${b}</span></div>`+ce+"</div>"}async renderTimePlot(e,n,t){let a=B(e,fe),s=B(e,En);if(!a||!s)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let o=this.readEmbeddedCarrier(e,yr),i=this.readEmbeddedCarrier(e,pt),c=[];for(let O of this.readPropertyValueReferences(n,a)){let J=Q(this.catalog,{publisher:O.subject.publisher,package_:O.subject.package_,name:O.subject.name,...O.subject.version?{version:O.subject.version}:{}});if(!J)continue;let F=this.readPropertyValueText(J,s)??"",y=Date.parse(F);if(!Number.isFinite(y))continue;let M=o?await this.evaluateCarrier(o,J)??"":"",z=(i?await this.evaluateCarrier(i,J):void 0)??D(this.catalog,J).label;c.push({t:y,dateStr:F,lane:M,label:z,href:this.hrefForSubject(J,t),linkable:this.isLinkable(ne(J),t)})}if(c.length===0)return"<!-- LookRenderer.TimePlot: no dated points -->";let l=[];for(let O of c)l.includes(O.lane)||l.push(O.lane);let d=Math.min(...c.map(O=>O.t)),f=Math.max(...c.map(O=>O.t));f===d&&(f=d+1);let g=l.some(O=>O),m=720,k=g?96:16,b=18,h=12,v=24,j=36,_=h+l.length*j+v,S=k,L=m-b,U=L-S,P=O=>S+(O-d)/(f-d)*U,I=O=>h+O*j+j/2,ce=O=>Math.round(O*360/Math.max(1,l.length)),C=[];l.forEach((O,J)=>{let F=I(J);C.push(`<line x1="${S}" y1="${F.toFixed(1)}" x2="${L}" y2="${F.toFixed(1)}" class="kan-plot-guide"/>`),O&&C.push(`<text x="${(k-8).toFixed(1)}" y="${(F+4).toFixed(1)}" text-anchor="end" class="kan-plot-lane">${Ke(O)}</text>`)});let N={},Y=[];for(let O of c){let J=l.indexOf(O.lane),y=((N[O.lane]=(N[O.lane]??0)+1)%3-1)*7,M=P(O.t),z=I(J)+y,K=`${ln(O.dateStr)} \xB7 ${O.label}`,A=`<circle cx="${M.toFixed(1)}" cy="${z.toFixed(1)}" r="5" fill="hsl(${ce(J)},65%,60%)" class="kan-plot-pt"><title>${Ke(K)}</title></circle>`;Y.push(O.linkable?`<a href="${p(O.href)}" class="kan-plot-link">${A}</a>`:A)}let se=`<text x="${S}" y="${(_-6).toFixed(1)}" text-anchor="start" class="kan-plot-axis">${Ke(ln(new Date(d).toISOString()))}</text><text x="${L}" y="${(_-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${Ke(ln(new Date(f).toISOString()))}</text>`;return`<section class="kan-plot">${`<svg class="kan-plot-svg" viewBox="0 0 ${m} ${_}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+C.join("")+Y.join("")+se+"</svg>"}</section>`}renderDetails(e,n,t){let a=Un(e,vr),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=>R(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">${p(i)}</dt><dd class="kan-details-val">${c}</dd>`)}return a.join("")}detailValue(e,n,t){if(e instanceof X)return St(e.object);if(e instanceof me||e instanceof re)return p(String(e.object));if(e instanceof T&&e.object instanceof E)return this.detailReferenceLink(e.object,n);if(e instanceof H)return this.detailEmbedded(e.object,n,t);if(e instanceof V){let a=e.object??[];return a.length>0&&a.every(s=>s instanceof x)?a.map(s=>this.detailEmbedded(s,n,t)).join(""):a.map(s=>s instanceof E?this.detailReferenceLink(s,n):s instanceof x?this.detailEmbedded(s,n,t):p(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">${p(t)}</span>`;let a=this.urlForReference(e,void 0,n);return`<img class="kan-md-chip" src="${p(`${a}.svg`)}" alt="" loading="lazy"><a class="kan-link" href="${p(a)}">${p(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">${p(s)}</span>`:"")+(o?`<dl class="kan-details">${o}</dl>`:"")+"</div>"}rangeTypeRefs(e){let n=Q(this.catalog,e);if(!n)return[];let t=W(n,aa);return t instanceof T&&t.object instanceof E?[t.object]:[]}async renderEmbeddedViews(e,n,t,a=""){let s=B(e,fe);if(!s)return"<!-- LookRenderer: EmbeddedViews missing look.source -->";let o=this.gatherValueItems(W(n,s)).filter(m=>m instanceof x);if(o.length===0)return"";let i=a?`${a}.${s.name}`:s.name,c=W(e,Nr),l=c instanceof re?c.object===!0:c instanceof X&&c.object==="true",d=[],f=[];for(let m of o){let k=m,b=m.name?`${i}.${m.name}`:"";if(l&&b){let U=D(this.catalog,k).label||m.name||b;d.push(`<a class="kan-section-nav-link" href="#${p(b)}">${p(U)}</a>`)}let h=be(k),v=h.length>0?h:this.rangeTypeRefs(s),j=on(k)?this.findCascadedLook(k):this.lookFromTypeRefs(v),_="";if(j){let U=[];for(let P of On(j.declaration))U.push(await this.renderBand(P,k,t,[],b));_=U.join(`
124
+ `)}else{let U=this.detailRows(m,t,[]);_=U?`<dl class="kan-details">${U}</dl>`:""}let S=b?` id="${p(b)}"`:"",L=b?this.anchorLink(b):"";f.push(`<section class="kan-embedded-view"${S}>${L}${_}</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="#${p(e)}" title="${p(e)}" aria-label="Link to this resource">#</a>`}isMetaPredicate(e){return R(e,Cr)||R(e,wn)||R(e,lt)||R(e,un)||R(e,dn)||R(e,$r)||R(e,ht)||R(e,lr)}renderPackageContents(e,n){let t=e.namespace||"";if(!t)return"";let a=this.catalog.filter(o=>o instanceof G&&o.namespace===t&&o.name!==e.name);return a.length===0?`<!-- LookRenderer.PackageContents: no members in ${t} -->`:(a.sort((o,i)=>{let c=D(this.catalog,o).label,l=D(this.catalog,i).label;return c.localeCompare(l)}),`<section class="kan-pkg-grid">${a.map(o=>{let i=D(this.catalog,o),c=i.label,l=i.summary,d=l?In(l,160):"",f=this.hrefForSubject(o,n),g=this.svgUrlForSubject(o,n);return`<a class="kan-pkg-card" href="${p(f)}"><img class="kan-pkg-card-svg" src="${p(g)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${p(c)}</span>`+(d?`<span class="kan-pkg-card-comment">${p(d)}</span>`:"")+"</span></a>"}).join("")}</section>`)}renderReferencedBy(e,n,t){let a=B(e,Ar),s={publisher:ne(n),package_:(n.namespace||"").split("/")[1]?.split("@")[0]??"",name:n.name},o=ee(s),i=g=>$e((g.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},c=(g,m)=>g.major-m.major||g.minor-m.minor||g.patch-m.patch,l=new Map;for(let g of this.catalog){if(!(g instanceof G))continue;let m=ee({publisher:ne(g),package_:(g.namespace||"").split("/")[1]?.split("@")[0]??"",name:g.name});if(m!==o)for(let k of g.statement){let b=k.predicate?.subject;if(!b||b.name==="type"||a&&ee(b)!==ee(a))continue;let h=[];if(k instanceof T&&k.object instanceof E)h.push(k.object);else if(k instanceof V)for(let S of k.object??[])S instanceof E&&h.push(S);if(!h.some(S=>ee(S.subject)===o))continue;let v=ee(b),j=l.get(v);j||(j={label:this.readLabelForUri(b)??b.name,best:new Map},l.set(v,j));let _=j.best.get(m);(!_||c(i(g),i(_))>0)&&j.best.set(m,g)}}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((g,m)=>g.label.localeCompare(m.label)).map(g=>{let k=[...g.best.values()].sort((b,h)=>D(this.catalog,b).label.localeCompare(D(this.catalog,h).label)).map(b=>this.resourceCard(b,t,n.namespace??void 0)).join("");return`<div class="kan-rel-group"><h3 class="kan-rel-prop"><span class="kan-rel-dir" title="incoming \u2014 references this resource">\u2190</span> ${p(g.label)}</h3><section class="kan-pkg-grid">${k}</section></div>`}).join("")}`}resourceCard(e,n,t){let a=D(this.catalog,e),s=a.summary?In(a.summary,160):"",o=be(e).map(h=>this.readLabelForUri({publisher:h.subject.publisher,package_:h.subject.package_,name:h.subject.name})??h.subject.name),c='<span class="kan-pkg-card-body">'+(o.length>0?`<span class="kan-card-types">${o.map(h=>`<span class="kan-card-type">${p(h)}</span>`).join("")}</span>`:"")+`<span class="kan-pkg-card-title">${p(a.label)}</span>`+(s?`<span class="kan-pkg-card-comment">${p(s)}</span>`:"")+"</span>",l=this.isLinkable(ne(e),n),d=l?`<a class="kan-pkg-card-link" href="${p(this.hrefForSubject(e,n))}"><img class="kan-pkg-card-svg" src="${p(this.svgUrlForSubject(e,n))}" alt="" loading="lazy"/>`+c+"</a>":`<span class="kan-pkg-card-link">${c}</span>`,f=e.namespace||"",g=f.split("/")[0]??"",[m,k]=(f.split("/")[1]??"").split("@"),b="";if(m&&f!==t){let h=k?`<span class="kan-card-at">@</span><span class="kan-card-ver">${p(k)}</span>`:"";if(l){let v=`<span class="kan-card-pkg">${p(m)}</span>${h}`;b=`<a class="kan-pkg-card-foot" href="${p(this.packageHref(g,m,k||void 0))}" title="${p(k?`${m}@${k}`:m)}">${v}</a>`}else{let v=`<span class="kan-card-pub">${p(g)}/</span><span class="kan-card-pkg">${p(m)}</span>${h}`;b=`<span class="kan-pkg-card-foot" title="${p(k?`${g}/${m}@${k}`:`${g}/${m}`)}">${v}</span>`}}return`<div class="kan-pkg-card kan-pkg-card--foot">${d}${b}</div>`}renderInstances(e,n,t){let a={publisher:ne(n),package_:(n.namespace||"").split("/")[1]?.split("@")[0]??"",name:n.name},s=W(e,Dr),o=s instanceof re?s.object===!0:s instanceof X&&s.object==="true",i=o?this.subclassClosure(a):new Set([ee(a)]),c=v=>$e((v.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},l=(v,j)=>v.major-j.major||v.minor-j.minor||v.patch-j.patch,d=new Map;for(let v of this.catalog){if(!(v instanceof G)||!be(v).some(L=>i.has(ee(L.subject))))continue;let _=ee({publisher:ne(v),package_:(v.namespace||"").split("/")[1]?.split("@")[0]??"",name:v.name}),S=d.get(_);(!S||l(c(v),c(S))>0)&&d.set(_,v)}let f=[...d.values()];if(f.length===0)return"<!-- LookRenderer.Instances: none -->";f.sort((v,j)=>D(this.catalog,v).label.localeCompare(D(this.catalog,j).label));let g=48,m=f.slice(0,g),k=m.map(v=>this.resourceCard(v,t,n.namespace??void 0)),b=f.length>g?` <span class="kan-count">${m.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"}${b}</h2></div><section class="kan-pkg-grid">${k.join("")}</section>`}subclassClosure(e){let n=new Set([ee(e)]),t=!0;for(;t;){t=!1;for(let a of this.catalog){if(!(a instanceof G))continue;let s=ee({publisher:ne(a),package_:(a.namespace||"").split("/")[1]?.split("@")[0]??"",name:a.name});if(!n.has(s)){for(let o of Qe(a))if(n.has(ee(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&&ee(s)===ee(t)))continue;let o=[];if(a instanceof T&&a.object instanceof E)o.push(a.object);else if(a instanceof V)for(let i of a.object??[])i instanceof E&&o.push(i);for(let i of o)if(ee(i.subject)===n)return!0}return!1}async renderFeaturedResource(e,n){let t=B(e,fe);if(!t)return"<!-- LookRenderer.FeaturedResource: no look.source -->";let a=ke(this.catalog,t),s=l=>$e((l.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},o=a.length>0?a.slice().sort((l,d)=>{let f=s(l),g=s(d);return g.major-f.major||g.minor-f.minor||g.patch-f.patch})[0]:Q(this.catalog,t);if(!o)return`<!-- LookRenderer.FeaturedResource: ${t.publisher}/${t.package_}/${t.name} not found -->`;let i=await this.renderHtml(o),c=this.hrefForSubject(o,n);return`<section class="kan-featured"><a class="kan-featured-permalink" href="${p(c)}">View full resource \u2192</a>`+i+"</section>"}async renderDistribution(e,n){let t=async F=>{let y=this.readEmbeddedCarrier(e,F);if(!y)return;let M=await this.evaluateCarrierNum(y,n);return Number.isFinite(M)?M:void 0},a=await t(dr),s=await t(fr);if(a===void 0||s===void 0||a<=0||s<=0)return"<!-- LookRenderer.Distribution: needs resolvable alphaPath + betaPath (> 0) -->";let o=await t(sn)??a/(a+s),i=await t(mt),c=await t(kt),l=await t(Kn),d=l!==void 0?`hsl(${l},65%,60%)`:"var(--kan-accent)",f=F=>Number.isInteger(F)?String(F):F.toFixed(1),g=280,m=168,k={top:14,right:14,bottom:24,left:14},b=g-k.left-k.right,h=m-k.top-k.bottom,v=120,j=1e-4,_=[],S=[],L=0;for(let F=0;F<=v;F++){let y=F/v;y<j?y=j:y>1-j&&(y=1-j);let M=Math.exp((a-1)*Math.log(y)+(s-1)*Math.log(1-y));_.push(y),S.push(M),M>L&&(L=M)}let U=F=>k.left+Math.min(1,Math.max(0,F))*b,P=F=>k.top+(1-(L>0?F/L:0))*h,I=k.top+h,ce=_.map((F,y)=>`${U(F).toFixed(1)},${P(S[y]).toFixed(1)}`),C=`M${U(0).toFixed(1)},${I.toFixed(1)} L${ce.join(" L")} L${U(1).toFixed(1)},${I.toFixed(1)} Z`,N="";if(i!==void 0&&c!==void 0&&c>i){let F=[`${U(i).toFixed(1)},${I.toFixed(1)}`];for(let y=0;y<=v;y++)_[y]>=i&&_[y]<=c&&F.push(`${U(_[y]).toFixed(1)},${P(S[y]).toFixed(1)}`);F.push(`${U(c).toFixed(1)},${I.toFixed(1)}`),N=`<path d="M${F.join(" L")} Z" fill="${d}" fill-opacity="0.3"/>`}let Y=U(o),se=`<line x1="${Y.toFixed(1)}" y1="${k.top.toFixed(1)}" x2="${Y.toFixed(1)}" y2="${I.toFixed(1)}" stroke="${d}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${Y.toFixed(1)}" y="${(k.top-3).toFixed(1)}" text-anchor="middle" class="kan-dist-mean">\u03BC ${o.toFixed(2)}</text>`,le=`<text x="${U(0).toFixed(1)}" y="${(I+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${U(1).toFixed(1)}" y="${(I+15).toFixed(1)}" text-anchor="end" class="kan-dist-axis">1</text>`,O=`<svg class="kan-dist-svg" viewBox="0 0 ${g} ${m}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${k.left}" y1="${I.toFixed(1)}" x2="${(g-k.right).toFixed(1)}" y2="${I.toFixed(1)}" class="kan-dist-base"/><path d="${C}" fill="${d}" fill-opacity="0.12"/>`+N+`<polyline points="${ce.join(" ")}" fill="none" stroke="${d}" stroke-width="2"/>`+se+le+"</svg>",J=i!==void 0&&c!==void 0?` \xB7 95% CI [${i.toFixed(2)}\u2013${c.toFixed(2)}]`:"";return`<figure class="kan-dist">${O}<figcaption class="kan-dist-caption">Beta(${f(a)}, ${f(s)})${J}</figcaption></figure>`}renderPublisherPackages(e,n){let t=new Map;for(let c of this.catalog){if(!(c instanceof G)||ne(c)!==n)continue;let l=(c.namespace||"").split("/")[1]?.split("@")[0]??"";if(!l||c.name!==l)continue;let d=t.get(l),f=$e((c.namespace||"").split("@")[1]??""),g=d?$e((d.namespace||"").split("@")[1]??""):void 0;(!d||f&&(!g||en(f,g)>0))&&t.set(l,c)}let a,s=W(e,nr),o=s instanceof V?s.object??[]:s instanceof T&&s.object instanceof E?[s.object]:[];if(o.length>0){a=[];for(let c of o){if(!(c instanceof E))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=D(this.catalog,l),f=d.label,g=d.summary,m=g?In(g,160):"",k=this.svgUrlForSubject(l,n);return`<a class="kan-pkg-card" href="${p(this.packageHref(n,c))}"><img class="kan-pkg-card-svg" src="${p(k)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${p(f)}</span>`+(m?`<span class="kan-pkg-card-comment">${p(m)}</span>`:"")+"</span></a>"}).join("")}</section>`}async renderTimeline(e,n){let t=B(e,fe);if(!t)return"<!-- LookRenderer.Timeline: no look.source -->";let a=B(e,En),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,g)=>o(f).localeCompare(o(g))),c=B(e,gt),l=this.readEmbeddedCarrier(e,sn);return c&&l?this.renderTrajectoryChart(i,c,l,e,n,o):`<section class="kan-timeline"><ol>
127
+ ${i.map(f=>{let g=f.namespace||"",m=g.split("/")[1]?.split("@")[0]??"",k=g.split("@")[1]??"",b=k?$e(k):void 0,h=this.resourceHref({publisher:ne(f),package_:m,name:f.name,...b?{version:b}:{}},n),v=o(f),j=v?`<span class="kan-timeline-date">${p(v)}</span>`:"",_=k||f.name;return`<li class="kan-timeline-node"><a href="${p(h)}"><span class="kan-timeline-key">${p(_)}</span>${j}</a></li>`}).join(`
128
+ `)}
129
+ </ol></section>`}async renderTrajectoryChart(e,n,t,a,s,o){let i=a,c=this.readEmbeddedCarrier(a,Kn),l=this.readEmbeddedCarrier(a,mt),d=this.readEmbeddedCarrier(a,kt),f=Z(i,Rr),g=yt(i,Er),m=yt(i,Kr),k=e.length,b=await this.collectTrackedSeries(e,n,t,{hueBy:c,lowerPath:l,upperPath:d});if(b.length===0)return"<!-- LookRenderer.Timeline: no tracked series -->";let h=[];for(let K of b){for(let A of K.points)A!==null&&h.push(A);for(let A of K.lower??[])A!==null&&h.push(A);for(let A of K.upper??[])A!==null&&h.push(A)}if(h.length===0)return"<!-- LookRenderer.Timeline: no metric values -->";let v=Math.min(...h),j=Math.max(...h);j-v<1e-9&&(v-=.5,j+=.5);let _=(j-v)*.08,S=g!==void 0?g:v-_,L=m!==void 0?m:j+_;L-S<1e-9&&(L=S+1);let U=1e3,P=440,I={top:28,right:24,bottom:56,left:52},ce=U-I.left-I.right,C=P-I.top-I.bottom,N=K=>k<=1?I.left+ce/2:I.left+K/(k-1)*ce,Y=K=>I.top+(1-(K-S)/(L-S))*C,se=(K,A)=>K.hue!==void 0?K.hue:Math.round(A*360/b.length),le=[];for(let K=0;K<5;K++){let A=S+K*(L-S)/4,pe=Y(A);le.push(`<line x1="${I.left}" y1="${pe.toFixed(1)}" x2="${(U-I.right).toFixed(1)}" y2="${pe.toFixed(1)}" class="kan-fan-grid"/>`),le.push(`<text x="${(I.left-8).toFixed(1)}" y="${(pe+4).toFixed(1)}" class="kan-fan-axis" text-anchor="end">${A.toFixed(2)}</text>`)}let O=[];e.forEach((K,A)=>{let pe=this.hrefForSubject(K,s),ge=(K.namespace||"").split("@")[1]??"",te=N(A),oe=ln(o(K));O.push(`<a href="${p(pe)}" class="kan-fan-xtick"><line x1="${te.toFixed(1)}" y1="${I.top}" x2="${te.toFixed(1)}" y2="${(P-I.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${te.toFixed(1)}" y="${(P-I.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${Ke(ge||K.name)}</text>`+(oe?`<text x="${te.toFixed(1)}" y="${(P-I.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${Ke(oe)}</text>`:"")+"</a>")});let J=[];b.forEach((K,A)=>{if(!K.lower||!K.upper)return;let pe=se(K,A),ge=[],te=[];for(let ie=0;ie<k;ie++){let Re=K.upper[ie],je=K.lower[ie];Re==null||je===null||je===void 0||(ge.push(`${N(ie).toFixed(1)},${Y(Re).toFixed(1)}`),te.unshift(`${N(ie).toFixed(1)},${Y(je).toFixed(1)}`))}let oe=ge.concat(te);oe.length<3||J.push(`<polygon class="kan-fan-band" points="${oe.join(" ")}" fill="hsl(${pe},65%,60%)"/>`)});let F=[];b.forEach((K,A)=>{let ge=`hsl(${se(K,A)},65%,60%)`,te=[],oe=[];K.points.forEach((ie,Re)=>{if(ie===null)return;let je=N(Re),ae=Y(ie);te.push(`${je.toFixed(1)},${ae.toFixed(1)}`),oe.push(`<circle cx="${je.toFixed(1)}" cy="${ae.toFixed(1)}" r="3.5" fill="${ge}"/>`)}),te.length!==0&&F.push(`<g class="kan-fan-series" data-series="${p(K.key)}"><polyline points="${te.join(" ")}" fill="none" stroke="${ge}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`+oe.join("")+"</g>")});let y=`<svg class="kan-fan-svg" viewBox="0 0 ${U} ${P}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+le.join("")+O.join("")+J.join("")+F.join("")+"</svg>",M=f?`${p(f)}=`:"",z=b.map((K,A)=>{let pe=se(K,A),ge=K.points.filter(ae=>ae!==null),te=ge.length?ge[0]:void 0,oe=ge.length?ge[ge.length-1]:void 0,ie="";if(oe!==void 0&&te!==void 0){let ae=oe-te;if(Math.abs(ae)>=.005){let Fe=ae>0?"up":"down",Le=ae>0?"\u25B2":"\u25BC";ie=` <span class="kan-fan-delta ${Fe}">${ae>0?"+":""}${ae.toFixed(2)} ${Le}</span>`}else ie=' <span class="kan-fan-delta flat">\u2014</span>'}let Re=oe!==void 0?`${M}${oe.toFixed(2)}`:"\u2014",je=K.lastSubject&&this.isLinkable(ne(K.lastSubject),s)?`<a href="${p(this.hrefForSubject(K.lastSubject,s))}">${p(K.label)}</a>`:p(K.label);return`<div class="kan-fan-legend-item" style="--kan-fan-hue:${pe}"><span class="kan-fan-swatch"></span><span class="kan-fan-legend-label">${je}</span><span class="kan-fan-legend-cur">${Re}${ie}</span></div>`});return`<section class="kan-fan"><div class="kan-fan-chart">${y}</div><div class="kan-fan-legend">${z.join("")}</div></section>`}renderResourceGrid(e,n,t){let a=B(e,fe);if(!a)return"<!-- LookRenderer.ResourceGrid: no look.source -->";let s=Q(this.catalog,a),o=s?be(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=Q(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=D(this.catalog,l),f=d.label,g=d.summary,m=l.namespace||"",k=m.split("/")[1]?.split("@")[0]??"",b=m.split("@")[1]??"",h=b?$e(b):void 0,v=this.resourceHref({publisher:ne(l),package_:k,name:l.name,...h?{version:h}:{}},n),j=g?`<p class="kan-resource-card-subtitle">${p(g)}</p>`:"",_=`<h3 class="kan-resource-card-title">${p(f)}</h3>${j}`;c.push(this.isLinkable(ne(l),n)?`<a class="kan-resource-card" href="${p(v)}">${_}</a>`:`<span class="kan-resource-card">${_}</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 G))continue;be(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="${p(this.publisherHref(o))}">${p(o)}</a></li>
134
+ <li aria-current="page">${p(c)}</li>
135
+ </ol></nav>`;let d=e.name,g=!!Q(this.catalog,{publisher:o,package_:c,name:c}),m=l?`${c}@${l}`:c,k=this.resourceHref({publisher:o,package_:c,name:c,...l?{version:$e(l)}:{}},o),b=e.name===c,h=[];return h.push(`<li><a href="${p(this.publisherHref(o))}">${p(o)}</a></li>`),b?h.push(`<li aria-current="page">${p(m)}</li>`):(h.push(g?`<li><a href="${p(k)}">${p(m)}</a></li>`:`<li>${p(m)}</li>`),h.push(`<li aria-current="page">${p(d)}</li>`)),`<nav class="kan-breadcrumb"><ol>
136
+ ${h.join(`
137
+ `)}
138
+ </ol></nav>`}renderNavGroup(e,n){let t=W(this.publisherSubject(n),ma),a=t instanceof V?t.object??[]:t instanceof T&&t.object instanceof E?[t.object]:[];if(a.length===0)return"";let s=[];for(let o of a){if(!(o instanceof E))continue;let i=Q(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="${p(c)}"${f}>${p(l)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
139
+ ${s.join(`
140
+ `)}
141
+ </ul></nav>`}renderSiteFooter(e){let n=W(this.publisherSubject(e),ka),t;if(n instanceof H?t=n.object:n instanceof T&&n.object instanceof E&&(t=Q(this.catalog,{publisher:n.object.subject.publisher,package_:n.object.subject.package_,name:n.object.subject.name})),!t)return"";let a=Z(t,ha),s=W(t,ba),o=s instanceof V?s.object??[]:s instanceof T&&s.object instanceof E?[s.object]:[],i=[];for(let l of o){if(!(l instanceof E))continue;let d=Q(this.catalog,{publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name}),{href:f,label:g}=this.resolveNavEntry(l,d,e);i.push(`<a class="kan-footer-link" href="${p(f)}">${p(g)}</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">${p(a)}</p>`),`<footer class="kan-site-footer">${c.join(`
142
+ `)}</footer>`}resolveNavEntry(e,n,t){if(n&&be(n).map(c=>c.subject).some(c=>c.publisher===jn.publisher&&c.package_===jn.package_&&c.name===jn.name)){let c=Z(n,wn),l=W(n,dt);if(l instanceof T&&l.object instanceof E){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?D(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 G)||!be(n).some(i=>R(i.subject,tr)))continue;let t=Z(n,ar);if(!t)continue;let a=W(n,rr),s=a instanceof V?a.object??[]:[],o=[];for(let i of s){if(!(i instanceof x))continue;let c=B(i,sr),l=Z(i,or);!c||!l||o.push({tokenClass:c.name,pattern:l})}e.push({language:t,rules:o})}return e}renderLinks(e,n){let t=B(e,fe);if(!t)return"";let a=W(n,t),s=[];a instanceof V?s=a.object??[]:a instanceof H?s=[a.object]:a instanceof T&&a.object instanceof E&&(s=[a.object]);let o=[];for(let i of s){let c;if(i instanceof x?c=i:i instanceof E&&(c=Q(this.catalog,{publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name})),!c)continue;let l=Z(c,cr);if(!l)continue;let d=Z(c,wn)??l,f=Z(c,lt),g=f?` title="${p(f)}"`:"";o.push(`<a class="kan-extlink" href="${p(l)}"${g} target="_blank" rel="noopener noreferrer">${p(d)}</a>`)}return o.length===0?"":`<section class="kan-extlink-row">${o.join("")}</section>`}renderMarkdown(e,n,t){let a=B(e,fe);if(!a)return"<!-- LookRenderer.Markdown: no look.source -->";let s=W(n,a),o=new Map,i;if(s instanceof xe?i=this.resolveMarkdownLinks(s,t,o):s instanceof X?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 g=new RegExp('(<a href="'+_t(d)+'">)([^<]*)(</a>)',"g");l=l.replace(g,`$1<img class="kan-md-chip" src="${p(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||!R(o,ut))continue;let i=B(s,fe);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=b=>{let h=W(e,b);return h instanceof re?h.object===!0:h instanceof X&&h.object==="true"},s=a(Pr),o=!s&&a(xr),i=s||o,l=[`<header class="${s?"kan-hero kan-hero-has-avatar":o?"kan-hero kan-hero-has-icon":"kan-hero"}">`];if(i){let b=this.svgUrlForSubject(n,t),h=s?"kan-hero-avatar":"kan-hero-icon";l.push(`<img class="${h}" src="${p(b)}" alt="" loading="lazy"/>`),l.push('<div class="kan-hero-text">')}let d=B(e,Vr);if(d){let b=this.readPropertyValueText(n,d);b&&l.push(`<span class="kan-hero-eyebrow">${p(fn(b)??b)}</span>`)}let f=B(e,Fr),g="";f&&(g=this.readPropertyValueText(n,f)??""),g||(g=D(this.catalog,n).label),l.push(`<h1 class="kan-hero-title">${p(fn(g)??g)}</h1>`);let m=B(e,Tr);if(m){let b=this.readPropertyValueText(n,m);b&&l.push(`<p class="kan-hero-subtitle">${p(fn(b)??b)}</p>`)}let k=B(e,vt);if(k){let b=this.readPropertyValueReferences(n,k);if(b.length>0){let h=b.map(v=>this.renderBadge(v,vt,t)).join("");l.push(`<div class="kan-hero-badges">${h}</div>`)}}return i&&l.push("</div>"),l.push("</header>"),l.join(`
147
+ `)}renderPropertyList(e,n,t){let a=B(e,fe);if(!a)return"<!-- LookRenderer: PropertyList missing look.source -->";let s=this.readLabelForUri(a)??a.name,o=W(n,a),i=this.gatherValueItems(o),c=i.length>0?i.map(l=>`<li>${this.renderInlineValue(l,fe,t)}</li>`).join(""):'<li class="kan-empty">(no values)</li>';return['<section class="kan-property-list">',`<h3 class="kan-property-list-title">${p(s)}</h3>`,`<ul class="kan-property-list-items">${c}</ul>`,"</section>"].join(`
148
+ `)}renderPropertyTable(e,n,t,a=""){let s=B(e,fe);if(!s)return"<!-- LookRenderer: PropertyTable missing look.source -->";let o=this.gatherValueItems(W(n,s)).filter(l=>l instanceof x);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 b of e)for(let h of b.statement){let v=h.predicate?.subject;if(!v||this.isMetaPredicate(v))continue;let j=`${v.publisher}/${v.package_}/${v.name}`;o.has(j)||(o.add(j),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(b=>D(this.catalog,b).label),c=e.some((b,h)=>i[h]!==""&&i[h]!==b.name),l=!!a,d=(l?'<th class="kan-anchor-col"></th>':"")+(c?"<th></th>":"")+s.map(b=>`<th>${p(b.label)}</th>`).join(""),f=e.map((b,h)=>{let v=l&&b.name?`${a}.${b.name}`:"",j=v?` id="${p(v)}"`:"",_=l?`<td class="kan-anchor-col">${v?this.anchorLink(v):""}</td>`:"",S=c?`<th scope="row">${p(i[h]??"")}</th>`:"",L=s.map(U=>{let P=W(b,U.uri);return`<td>${P?this.tableCellValue(P,n):""}</td>`}).join("");return`<tr${j}>${_}${S}${L}</tr>`}).join(""),g=l&&a?` id="${p(a)}"`:"",m=l&&a?this.anchorLink(a):"",k=t?`<caption>${p(t)}${m}</caption>`:"";return`<table class="kan-property-table"${g}>${k}<thead><tr>${d}</tr></thead><tbody>${f}</tbody></table>`}tableCellValue(e,n){if(e instanceof xe)return this.statementToMarkdownHtml(e,n);if(e instanceof X)return St(e.object);if(e instanceof me||e instanceof re)return p(String(e.object));if(e instanceof T&&e.object instanceof E)return this.detailReferenceLink(e.object,n);if(e instanceof H)return this.renderEmbeddedTable([e.object],n);if(e instanceof V){let t=e.object??[],a=t.filter(s=>s instanceof x);return a.length>0&&a.length===t.length?this.renderEmbeddedTable(a,n):t.map(s=>s instanceof E?this.detailReferenceLink(s,n):s instanceof x?this.renderEmbeddedTable([s],n):p(String(s))).filter(s=>s).join(", ")}return""}statementToMarkdownHtml(e,n){let t=new Map,a;if(e instanceof xe?a=this.resolveMarkdownLinks(e,n,t):e instanceof X&&(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="'+_t(i)+'">)([^<]*)(</a>)',"g");o=o.replace(l,`$1<img class="kan-md-chip" src="${p(c)}" alt="" loading="lazy">$2$3`)}return o}renderBadgeRow(e,n,t){let a=B(e,fe);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,fe,t)).join("")}</div>`}renderChipRow(e,n,t){let a=Un(e,Br);if(a.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let s=[];for(let o of a){let i=W(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">${p(c)}</span> <span class="kan-chip-val">${l}</span></span>`)}return s.length===0?"":`<div class="kan-chip-row">${s.join("")}</div>`}async renderReferenceList(e,n,t){let a=Un(e,$t);if(a.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let s=this.readEmbeddedCarrier(e,pt),o=this.readEmbeddedCarrier(e,Sr),i=[];for(let c of a){let l=this.readPropertyValueReferences(n,c);if(l.length===0)continue;let d=this.readLabelForUri(c)??c.name;if(s){let f=[];for(let m of l)f.push(await this.renderDetailRow(m,s,o,t));let g=f.filter(m=>m).join("");g&&i.push(`<dt>${p(d)}</dt><dd><ul class="kan-ref-rows">${g}</ul></dd>`)}else{let f=l.map(g=>this.renderReferenceLink(g,$t,t)).join(", ");i.push(`<dt>${p(d)}</dt><dd>${f}</dd>`)}}return i.length===0?"":`<dl class="kan-reference-list">${i.join("")}</dl>`}async renderDetailRow(e,n,t,a){let s=Q(this.catalog,{publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name,...e.subject.version?{version:e.subject.version}:{}});if(!s)return"";let o=await this.evaluateCarrier(n,s)??D(this.catalog,s).label,i="";if(t){let f=await this.evaluateCarrier(t,s);f&&(i=`<span class="kan-ref-badge">${p(f)}</span>`)}let c=`<span class="kan-ref-text">${p(o)}</span>${i}`;if(!this.isLinkable(ne(s),a))return`<li class="kan-ref-row"><span class="kan-ref-rowlink">${c}</span></li>`;let l=this.hrefForSubject(s,a),d=this.svgUrlForSubject(s,a);return`<li class="kan-ref-row"><a class="kan-ref-rowlink" href="${p(l)}"><img class="kan-ref-icon" src="${p(d)}" alt="" loading="lazy"/>`+c+"</a></li>"}readPropertyValueText(e,n){let t=W(e,n);if(t){if(t instanceof X)return t.object;if(t instanceof T){let a=t.object;return this.readLabelForUri({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name})??a.subject.name}if(t instanceof H)return this.readEmbeddedText(t.object,0)||void 0;if(t instanceof V)return(t.object??[]).map(s=>s instanceof E?this.readLabelForUri({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name})??s.subject.name:s instanceof x?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 X)t.push(a.object);else if(a instanceof me||a instanceof re)t.push(String(a.object));else if(a instanceof T){let o=a.object;t.push(this.readLabelForUri({publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name})??o.subject.name)}else a instanceof H&&t.push(this.readEmbeddedText(a.object,n+1));return t.filter(a=>a).join(", ")}readPropertyValueReferences(e,n){let t=W(e,n);if(!t)return[];if(t instanceof T)return[t.object];if(t instanceof V){let a=[];for(let s of t.object??[])s instanceof E&&a.push(s);return a}return[]}gatherValueItems(e){return e?e instanceof V?e.object??[]:e instanceof T?[e.object]:e instanceof H?[e.object]:e instanceof X?[e.object]:e instanceof me||e instanceof re?[e.object]:[]:[]}renderInlineValue(e,n,t,a=0){return e instanceof E?this.renderReferenceLink(e,n,t):e instanceof x?this.renderEmbeddedInline(e,t,a):typeof e=="string"?p(e):typeof e=="number"||typeof e=="boolean"?p(String(e)):""}renderStatementInlineValue(e,n,t,a=0){return e instanceof X?p(e.object):e instanceof me||e instanceof re?p(String(e.object)):e instanceof T?this.renderReferenceLink(e.object,n,t):e instanceof H?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>${p(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">${p(a)}</span>`;let s=this.urlForReference(e,n,t);return`<a class="kan-link" href="${p(s)}">${p(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="${p(s)}"`:"";if(!this.isLinkable(e.subject.publisher,t))return`<span class="kan-badge"${o}>${p(a)}</span>`;let i=this.urlForReference(e,n,t);return`<a class="kan-badge" href="${p(i)}"${o}>${p(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=Q(this.catalog,e);if(!n)return"=";let t=Z(n,Hr);return t==="*"||t==="^"||t==="~"||t==="="?t:"="}readLabelForUri(e){let n=Q(this.catalog,e);if(n)return D(this.catalog,n).label}readCommentForUri(e){let n=Q(this.catalog,e);if(n)return D(this.catalog,n).summary}};function Ln(r){let e=new Map;for(let n of r.statement){if(!(n instanceof H)||!we(n,dn.publisher,dn.package_,dn.name))continue;let t=n.object;for(let a of t.statement){if(!(a instanceof X))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 H&&we(e,un.publisher,un.package_,un.name))return e.object}function On(r){for(let e of r.statement){if(!(e instanceof V)||!we(e,Rn.publisher,Rn.package_,Rn.name))continue;let n=[];for(let t of e.object??[])t instanceof x&&n.push(t);return n}return[]}function ze(r){for(let e of r.statement)if(e instanceof T&&e.predicate?.subject?.name==="type"&&e.object instanceof E){let n=e.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function B(r,e){for(let n of r.statement)if(n instanceof T&&we(n,e.publisher,e.package_,e.name)&&n.object instanceof E){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)||!we(n,e.publisher,e.package_,e.name))continue;let t=[];for(let a of n.object??[])a instanceof E&&t.push({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name});return t}return[]}function W(r,e){for(let n of r.statement)if(we(n,e.publisher,e.package_,e.name))return n}function Z(r,e){for(let n of r.statement)if(n instanceof X&&we(n,e.publisher,e.package_,e.name))return n.object}function cn(r,e){for(let n of r.statement)if(n instanceof H&&we(n,e.publisher,e.package_,e.name))return n.object}function yt(r,e){for(let n of r.statement)if(n instanceof me&&we(n,e.publisher,e.package_,e.name))return n.object}function zr(r,e){for(let n of r.statement)if(n instanceof re&&we(n,e.publisher,e.package_,e.name))return n.object===!0;return!1}function Gr(r){for(let e of be(r))if(R(e.subject,ra)||R(e.subject,sa))return!0;return!1}function be(r){let e=[];for(let n of r.statement)if(n instanceof T){if(n.predicate?.subject?.name!=="type")continue;n.object instanceof E&&e.push(n.object)}else if(n instanceof V){if(n.predicate?.subject?.name!=="type")continue;for(let t of n.object??[])t instanceof E&&e.push(t)}return e}function Qe(r){let e=[];for(let n of r.statement)if(n instanceof T){if(n.predicate?.subject?.name!=="subClassOf")continue;n.object instanceof E&&e.push(n.object)}else if(n instanceof V){if(n.predicate?.subject?.name!=="subClassOf")continue;for(let t of n.object??[])t instanceof E&&e.push(t)}return e}function Q(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 G&&a.name===e.name&&a.namespace===t)return a}for(let t of r){if(!(t instanceof G)||t.name!==e.name)continue;if((t.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return t}}function we(r,e,n,t){let a=r.predicate?.subject;return a?a.publisher===e&&a.package_===n&&a.name===t:!1}function R(r,e){return r.publisher===e.publisher&&r.package_===e.package_&&r.name===e.name}function ee(r){return`${r.publisher}/${r.package_}/${r.name}`}function ne(r){let e=r.namespace||"",n=e.indexOf("/");return n>=0?e.substring(0,n):e}function p(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Ke(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function wt(r,e){return e==null?"":Ae(e)?e.value:r==="string-literal"?typeof e=="string"?e:String(e):Array.isArray(e)?e.map(n=>Ae(n)?n.value:Ke(typeof n=="string"?n:String(n))).join(""):Ke(typeof e=="string"?e:String(e))}function Et(r){if(r==null)return"";if(typeof r=="string")return r;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Ae(r))return r.value;if(Array.isArray(r))return r.map(Et).filter(n=>n!=="").join(", ");if(r instanceof E)return r.subject.name;if(r instanceof G||r instanceof x)return r.name??"";let e=r.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function In(r,e){return r.length<=e?r:r.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function jt(r){return r.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function _t(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function St(r){let e=fn(r);return p(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{D as a,Ye as b,Ae as c,Se as d,Xe as e,q as f,ls as g,Ue as h,an as i,Cn as j};
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{a as ir,b as sr,c as cr,d as lr,e as fe}from"./chunk-FX7JDGL6.js";import{a as Qr,c as ke,e as Te,h as Ne,i as Oe,j as en}from"./chunk-MCU5IAMS.js";import{a as nr,b as or,c as ar,d as U,e as _,f as c}from"./chunk-Y7TGQ7UF.js";import{a as Xr}from"./chunk-F5ANO7MJ.js";import"./chunk-QHABFCRC.js";import{a as jt,b as Bt,c as At,d as Vt,e as Dt,f as _t,g as Lt,h as Ft}from"./chunk-ATH6636H.js";import{b as Tt,c as Nt,d as Ut}from"./chunk-LKBG2MK6.js";import{a as It}from"./chunk-4NO7MHS7.js";import{a as dr,b as pr,c as mr,d as fr}from"./chunk-GN2XODVC.js";import{a as yr,b as wr}from"./chunk-PEUTCG3B.js";import{a as hr}from"./chunk-PEJALHXK.js";import{a as Ot}from"./chunk-SC5M74NM.js";import{A as Jr,B as qr,C as Yr,G as Zr,a as Sr,b as Rr,c as vr,d as Er,e as Cr,f as xr,g as Kr,h as $r,i as Ir,j as jr,k as Br,l as Ar,m as Vr,n as Dr,o as Tr,p as Nr,q as Or,r as Ur,s as _r,t as Lr,u as Fr,v as Mr,w as Hr,x as zr,y as Wr,z as Gr}from"./chunk-RRODBYIK.js";import"./chunk-SHDHMKMJ.js";import{a as y,b as se,c as Gt,d as er,e as tr,f as v}from"./chunk-G2DKKSZ4.js";import{a as S}from"./chunk-TJPQETHV.js";import{a as rr,b as ye,c as gr,d as g,e as kr,f as br,g as Pr}from"./chunk-BGQKZBNE.js";import{f as O,j as E,k as ge,l as he,m as De}from"./chunk-CRKSKIAL.js";import{b as Jt,c as qt,d as R,e as Yt,f as Zt,h as Xt,j as Qt}from"./chunk-IOMNZBK4.js";import{a as Mt,b as ie,c as f,d as k,e as zt,f as Wt,g as ce,h as le,i as ue,j as de,k as pe,l as me}from"./chunk-W6T7MOKY.js";import{a as Ht}from"./chunk-FUUTGGJS.js";import{a as St,b as Rt,c as N,d as vt,e as h,f as Et,g as Ct,h as xt,i as Kt,j as $t}from"./chunk-2ACBWC7K.js";import{a as ur}from"./chunk-ODIECDN7.js";import{VersionOperator as ni}from"@kanonak-protocol/types/document/models/enums";import{existsSync as bn,readFileSync as Pn}from"fs";import{homedir as wn}from"os";import{join as Sn}from"path";import{execFile as tn}from"child_process";import{promisify as rn}from"util";var L=rn(tn),F="kanonak",M="/usr/bin/security",C=class{async get(e){let t=c(e);try{let{stdout:n}=await L(M,["find-generic-password","-s",F,"-a",t,"-w"],{timeout:1e4});try{return JSON.parse(n.trim())}catch{throw new Error(`Stored credential for '${t}' is corrupted (not valid JSON).
1
+ import{a as ir,b as sr,c as cr,d as lr,e as fe}from"./chunk-FX7JDGL6.js";import{a as Qr,c as ke,e as Te,h as Ne,i as Oe,j as en}from"./chunk-X5TYWQRA.js";import{a as nr,b as or,c as ar,d as U,e as _,f as c}from"./chunk-Y7TGQ7UF.js";import{a as Xr}from"./chunk-F5ANO7MJ.js";import"./chunk-QHABFCRC.js";import{a as jt,b as Bt,c as At,d as Vt,e as Dt,f as _t,g as Lt,h as Ft}from"./chunk-ATH6636H.js";import{b as Tt,c as Nt,d as Ut}from"./chunk-LKBG2MK6.js";import{a as It}from"./chunk-4NO7MHS7.js";import{a as dr,b as pr,c as mr,d as fr}from"./chunk-GN2XODVC.js";import{a as yr,b as wr}from"./chunk-PEUTCG3B.js";import{a as hr}from"./chunk-PEJALHXK.js";import{a as Ot}from"./chunk-SC5M74NM.js";import{A as Jr,B as qr,C as Yr,G as Zr,a as Sr,b as Rr,c as vr,d as Er,e as Cr,f as xr,g as Kr,h as $r,i as Ir,j as jr,k as Br,l as Ar,m as Vr,n as Dr,o as Tr,p as Nr,q as Or,r as Ur,s as _r,t as Lr,u as Fr,v as Mr,w as Hr,x as zr,y as Wr,z as Gr}from"./chunk-C7RZIMEH.js";import"./chunk-SHDHMKMJ.js";import{a as y,b as se,c as Gt,d as er,e as tr,f as v}from"./chunk-G2DKKSZ4.js";import{a as S}from"./chunk-TJPQETHV.js";import{a as rr,b as ye,c as gr,d as g,e as kr,f as br,g as Pr}from"./chunk-BGQKZBNE.js";import{f as O,j as E,k as ge,l as he,m as De}from"./chunk-CRKSKIAL.js";import{b as Jt,c as qt,d as R,e as Yt,f as Zt,h as Xt,j as Qt}from"./chunk-IOMNZBK4.js";import{a as Mt,b as ie,c as f,d as k,e as zt,f as Wt,g as ce,h as le,i as ue,j as de,k as pe,l as me}from"./chunk-W6T7MOKY.js";import{a as Ht}from"./chunk-FUUTGGJS.js";import{a as St,b as Rt,c as N,d as vt,e as h,f as Et,g as Ct,h as xt,i as Kt,j as $t}from"./chunk-2ACBWC7K.js";import{a as ur}from"./chunk-ODIECDN7.js";import{VersionOperator as ni}from"@kanonak-protocol/types/document/models/enums";import{existsSync as bn,readFileSync as Pn}from"fs";import{homedir as wn}from"os";import{join as Sn}from"path";import{execFile as tn}from"child_process";import{promisify as rn}from"util";var L=rn(tn),F="kanonak",M="/usr/bin/security",C=class{async get(e){let t=c(e);try{let{stdout:n}=await L(M,["find-generic-password","-s",F,"-a",t,"-w"],{timeout:1e4});try{return JSON.parse(n.trim())}catch{throw new Error(`Stored credential for '${t}' is corrupted (not valid JSON).
2
2
  Run 'kanonak logout ${t}' then 'kanonak login ${t}' to fix.`)}}catch(n){if(Ue(n,44))return null;throw new Error(`macOS Keychain read failed for '${t}': ${H(n)}
3
3
  The Keychain may be locked or inaccessible.
4
4
  Try unlocking it via Keychain Access.app or running 'security unlock-keychain'.`)}}async store(e,t){let n=c(e),o=JSON.stringify(t);try{await L(M,["add-generic-password","-s",F,"-a",n,"-U","-w",o],{timeout:1e4})}catch(a){throw new Error(`macOS Keychain write failed for '${n}': ${H(a)}
@@ -165,55 +165,26 @@ export declare class LookRenderer {
165
165
  */
166
166
  private evaluateTier;
167
167
  /**
168
- * Apply {{...}} placeholders to a slot SVG template.
168
+ * Evaluate a band path carrier — a `tx.Expression` (e.g. `metricPath`,
169
+ * `statPath`, `labelPath`) — against `node`, which is bound to the
170
+ * `input` variable. Returns the scalar text result, or undefined when
171
+ * the carrier is absent or evaluates to nothing. This is the structured,
172
+ * object-model-resolved replacement for the old `/`-separated path DSL:
173
+ * every property reference inside the expression resolves through the
174
+ * import closure and validates at `kanonak validate` time.
169
175
  *
170
- * Specials (label, firstLetter, uri) substitute from the pre-computed
171
- * `specials` map. Anything else is a property path expression: one or
172
- * more `/`-separated steps; each step reads a property by local name
173
- * (alias prefix is ignored `wv.confidence` and `confidence` are
174
- * equivalent). Mid-path values that are references or embeddeds are
175
- * followed; the final value is rendered as text (strings/numbers
176
- * verbatim, references as the target's rdfs.label).
177
- *
178
- * Examples `{{wv.confidence/est.estimateMean}}` reads the embedded
179
- * value then its number; `{{wv.status/rdfs.label}}` resolves the
180
- * reference and reads its label.
181
- */
182
- private applyPlaceholders;
183
- /**
184
- * Whether a placeholder expression resolves to a non-empty value — the
185
- * condition for an optional `{{#expr}}…{{/expr}}` section. Uses the same
186
- * resolution as inline substitution (specials, delta/svg functions, property
187
- * paths), so a section guards exactly what its inner `{{expr}}` would print.
188
- */
189
- private placeholderResolves;
190
- /**
191
- * The change in a `/`-path metric vs the previous version of THIS
192
- * resource (highest version below the current). Undefined when there is
193
- * no prior version or the metric doesn't resolve on both.
194
- */
195
- private metricDelta;
196
- /**
197
- * Resolve a `/`-separated property path starting from `instance`. Each
198
- * step matches a statement by predicate local name (alias prefix in
199
- * the step is ignored for readability — `wv.confidence` and
200
- * `confidence` both match). Returns the final value as a string, or
201
- * undefined when the path doesn't resolve.
202
- */
203
- private resolvePath;
204
- /**
205
- * Walk a `/`-separated property path from `current`. At a reference step
206
- * the target may carry the remaining property via an open-world
207
- * augmentation merged onto a *specific* parsed version, so we try every
208
- * version of the referenced resource and return the first that yields a
209
- * value — same multi-version tolerance the look/SVG cascades use. Picking
210
- * a single version (findResourceByUri) can land on an un-augmented copy.
211
- */
212
- private resolvePathSteps;
213
- /** All text values of a final-step statement: a reference → its display
214
- * label; a literal → its value; a list → each member's text; an embedded →
215
- * none (not text). Version-tolerant on reference labels. */
216
- private finalStatementTexts;
176
+ * `fragment` is read off the band/spec/channel subject with
177
+ * `readEmbeddedCarrier`. A single field is a `tx.PropertyRead`; a
178
+ * reference step composes `tx.Traverse` with a nested `tx.PropertyRead`.
179
+ * Multi-valued properties join with ", " (matching the old DSL).
180
+ */
181
+ private evaluateCarrier;
182
+ /** Numeric form of `evaluateCarrier` NaN when absent or non-numeric. */
183
+ private evaluateCarrierNum;
184
+ /** Read a band path carrier (an embedded `tx.Expression`) off a subject
185
+ * by its property URI, or undefined when the property is absent or not
186
+ * an embedded value. */
187
+ private readEmbeddedCarrier;
217
188
  /** A reference's display label, tolerant of open-world augmentations landing
218
189
  * on a specific parsed version (tries every version, falls back to the URI
219
190
  * name). */
@@ -238,7 +209,7 @@ export declare class LookRenderer {
238
209
  /**
239
210
  * Render the instance as body-only HTML using its cascaded look.
240
211
  */
241
- renderHtml(instance: SubjectKanonak): string;
212
+ renderHtml(instance: SubjectKanonak): Promise<string>;
242
213
  /**
243
214
  * Wrap a band's HTML in a float container when it declares `look.placement`
244
215
  * (floatLeft / floatRight) so the FOLLOWING band's prose flows around it —
@@ -294,7 +265,7 @@ export declare class LookRenderer {
294
265
  renderDocument(instance: SubjectKanonak, opts?: {
295
266
  bareOverview?: boolean;
296
267
  rootIndex?: boolean;
297
- }): string;
268
+ }): Promise<string>;
298
269
  /**
299
270
  * True if the instance's class chain declares a `derivation.derivations`
300
271
  * binding whose `derivation.format` is `kanonak.org/formats/svg`. Used by
@@ -1,4 +1,4 @@
1
- import{a as g}from"../chunk-MCU5IAMS.js";import"../chunk-QHABFCRC.js";import"../chunk-4NO7MHS7.js";import"../chunk-PEUTCG3B.js";import"../chunk-PEJALHXK.js";import"../chunk-SC5M74NM.js";import"../chunk-SHDHMKMJ.js";import"../chunk-G2DKKSZ4.js";import"../chunk-TJPQETHV.js";import{d as m,g as S}from"../chunk-BGQKZBNE.js";import{a as p,f as E}from"../chunk-CRKSKIAL.js";import"../chunk-IOMNZBK4.js";import{c as v}from"../chunk-W6T7MOKY.js";import"../chunk-FUUTGGJS.js";import{c as x}from"../chunk-2ACBWC7K.js";import{homedir as P}from"os";import{join as d}from"path";import{existsSync as M,mkdirSync as D,readFileSync as j,writeFileSync as O}from"fs";import{createHash as C}from"crypto";import{pathToFileURL as B}from"url";var h="Xenova/all-MiniLM-L6-v2",w="q8",b=32;async function F(r){let{pipeline:e,env:t}=r.transformers;t.cacheDir=r.modelCacheDir??d(P(),".kanonak","models");let n=await e("feature-extraction",h,{dtype:w});return async s=>(await n(s,{pooling:"mean",normalize:!0})).tolist()}async function z(r){let e=d(r,"node_modules","@huggingface","transformers"),t=JSON.parse(j(d(e,"package.json"),"utf-8")),n=I(t);if(!n)throw new Error(`@huggingface/transformers at ${e} exposes no resolvable ESM entry.`);let s=await import(B(d(e,n)).href);return typeof s.pipeline=="function"?s:s.default}function I(r){let e=r.exports,t=n=>typeof n=="string"?n:n?.default;return typeof e=="string"?e:t(e?.node?.import)??t(e?.import)??t(e?.default)??r.module??r.main}var y=null;async function U(){return y||(y=(async()=>{let r;try{r=await import("@huggingface/transformers")}catch(e){throw new Error(`Semantic search requires the embedding runtime, which is an optional dependency.
1
+ import{a as g}from"../chunk-X5TYWQRA.js";import"../chunk-QHABFCRC.js";import"../chunk-4NO7MHS7.js";import"../chunk-PEUTCG3B.js";import"../chunk-PEJALHXK.js";import"../chunk-SC5M74NM.js";import"../chunk-SHDHMKMJ.js";import"../chunk-G2DKKSZ4.js";import"../chunk-TJPQETHV.js";import{d as m,g as S}from"../chunk-BGQKZBNE.js";import{a as p,f as E}from"../chunk-CRKSKIAL.js";import"../chunk-IOMNZBK4.js";import{c as v}from"../chunk-W6T7MOKY.js";import"../chunk-FUUTGGJS.js";import{c as x}from"../chunk-2ACBWC7K.js";import{homedir as P}from"os";import{join as d}from"path";import{existsSync as M,mkdirSync as D,readFileSync as j,writeFileSync as O}from"fs";import{createHash as C}from"crypto";import{pathToFileURL as B}from"url";var h="Xenova/all-MiniLM-L6-v2",w="q8",b=32;async function F(r){let{pipeline:e,env:t}=r.transformers;t.cacheDir=r.modelCacheDir??d(P(),".kanonak","models");let n=await e("feature-extraction",h,{dtype:w});return async s=>(await n(s,{pooling:"mean",normalize:!0})).tolist()}async function z(r){let e=d(r,"node_modules","@huggingface","transformers"),t=JSON.parse(j(d(e,"package.json"),"utf-8")),n=I(t);if(!n)throw new Error(`@huggingface/transformers at ${e} exposes no resolvable ESM entry.`);let s=await import(B(d(e,n)).href);return typeof s.pipeline=="function"?s:s.default}function I(r){let e=r.exports,t=n=>typeof n=="string"?n:n?.default;return typeof e=="string"?e:t(e?.node?.import)??t(e?.import)??t(e?.default)??r.module??r.main}var y=null;async function U(){return y||(y=(async()=>{let r;try{r=await import("@huggingface/transformers")}catch(e){throw new Error(`Semantic search requires the embedding runtime, which is an optional dependency.
2
2
  Install it with:
3
3
  npm install @huggingface/transformers
4
4
  (underlying import error: ${e.message})`)}return F({transformers:r})})()),y}function H(r,e){let t=0;for(let n=0;n<r.length;n++)t+=r[n]*e[n];return t}function R(r,e){return e?r.version?e.version?x(r.version,e.version)>0:!0:!1:!0}function K(r,e){let t=g(r,e),n=[t.label],s=S(e);if(s.length>0){let i=E(r,s[0]),a=i?g(r,i).label:s[0].name;a&&n.push(`\u2014 a ${a}.`)}return t.summary&&n.push(t.summary),n.join(" ")}function q(r){let e=new Map;for(let t of r){if(!(t instanceof v))continue;let n=m(t);if(!n)continue;let s=p(n),i=e.get(s);(!i||R(n,m(i)))&&e.set(s,t)}return[...e.values()].sort((t,n)=>{let s=m(t)?p(m(t)):t.name,i=m(n)?p(m(n)):n.name;return s.localeCompare(i)})}var k=class{entries=[];embedder;constructor(e={}){this.embedder=e.embedder}resolveEmbedder(){return this.embedder?Promise.resolve(this.embedder):U()}get size(){return this.entries.length}async build(e,t={}){let n=q(e);if(t.include&&(n=n.filter(t.include)),n.length===0)return this.entries=[],{size:0,cached:!1};let s=n.map(o=>K(e,o)),i=t.cacheDir,a;if(i){let o=C("sha256").update(h+"|"+w+`