@kanonak-protocol/sdk 4.7.0 → 4.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-OOR5SVNQ.js +152 -0
- package/dist/index.js +1 -1
- package/dist/look/LookRenderer.d.ts +81 -0
- package/dist/look/index.d.ts +1 -1
- package/dist/search/index.js +1 -1
- package/dist/server/assembleModel.d.ts +2 -0
- package/dist/server/index.d.ts +4 -2
- package/dist/server/index.js +65 -2
- package/dist/server/loadResourceModel.d.ts +5 -0
- package/dist/server/renderDiagnostics.d.ts +74 -0
- package/dist/server/renderStack.d.ts +40 -0
- package/dist/server/requestRouter.d.ts +6 -0
- package/dist/server/types.d.ts +16 -0
- package/dist/transformations/index.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-XRXCYM3U.js +0 -148
package/dist/chunk-XRXCYM3U.js
DELETED
|
@@ -1,148 +0,0 @@
|
|
|
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,i as An}from"./chunk-DSHPAWJQ.js";import{a as Vn}from"./chunk-NJ3AZYQD.js";import{a as pn,b as ue,c as xn,d as w,f as Pe,g as ke,j as gn,k as qe,m as Pn,n as Nn}from"./chunk-PBNVHBS3.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-T3JR2SV6.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,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function qn(r){return r.replace(/"/g,""").replace(/&/g,"&")}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,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Ke(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}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};
|