@kanonak-protocol/sdk 3.69.0 → 3.70.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/browser.js +1 -1
- package/dist/chunk-2OXZDBHX.js +1 -0
- package/dist/chunk-4NO7MHS7.js +1 -0
- package/dist/{chunk-7JZUJ2K4.js → chunk-6T2XFOMU.js} +1 -1
- package/dist/chunk-7ZCFYITD.js +2 -0
- package/dist/chunk-C5NKFT7W.js +148 -0
- package/dist/chunk-EOMKFFKU.js +1 -0
- package/dist/chunk-PODBS4IU.js +1 -0
- package/dist/chunk-SHDHMKMJ.js +1 -0
- package/dist/chunk-U75VPNYW.js +2 -0
- package/dist/chunk-W4LPC6VM.js +1 -0
- package/dist/{chunk-OIVACCMQ.js → chunk-XEFBKQY5.js} +17 -12
- package/dist/index.js +1 -1
- package/dist/look/LookRenderer.d.ts +29 -1
- package/dist/parsing/index.js +1 -1
- package/dist/reasoning/index.js +1 -1
- package/dist/repositories/browser.js +1 -1
- package/dist/repositories/index.js +1 -1
- package/dist/search/index.js +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/route.d.ts +1 -1
- package/dist/transformations/index.js +47 -47
- package/dist/transformations/v3/CompiledTransformationV3.d.ts +6 -2
- package/dist/transformations/v3/ExpressionEngineV3.d.ts +13 -1
- package/dist/transformations/v3/TransformationLoaderV3.d.ts +19 -2
- package/dist/transformations/v3/TransformationUriConstantsV3.d.ts +5 -0
- package/dist/validation/index.js +1 -1
- package/dist/validation/rules/repository/LookSemanticSvgPathRule.d.ts +36 -0
- package/dist/validation/rules/repository/index.d.ts +1 -0
- package/package.json +2 -2
- package/dist/chunk-767XYRNU.js +0 -1
- package/dist/chunk-CA2EATJR.js +0 -1
- package/dist/chunk-FXKT6OI4.js +0 -148
- package/dist/chunk-H2LEQLVD.js +0 -1
- package/dist/chunk-KSTGTV35.js +0 -2
- package/dist/chunk-Q6QTQWR2.js +0 -1
- package/dist/chunk-QHJ6EY3Y.js +0 -1
- package/dist/chunk-RSIZQAFL.js +0 -2
- /package/dist/{chunk-3NEUHF7E.js → chunk-QHABFCRC.js} +0 -0
package/dist/browser.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as ge,b as fe,c as me,d as C,e as E,f as d}from"./chunk-
|
|
1
|
+
import{a as ge,b as fe,c as me,d as C,e as E,f as d}from"./chunk-7ZCFYITD.js";import{a as Qe}from"./chunk-W4LPC6VM.js";import"./chunk-QHABFCRC.js";import{b as L,c as W,d as F}from"./chunk-U75VPNYW.js";import{a as H}from"./chunk-4NO7MHS7.js";import{a as Pe,b as we,c as he}from"./chunk-6T2XFOMU.js";import{a as ke,b as be}from"./chunk-PEUTCG3B.js";import"./chunk-PEJALHXK.js";import"./chunk-SC5M74NM.js";import{A as We,B as Fe,C as Ge,E as Xe,a as Ke,b as xe,c as Se,d as Re,f as De,g as Be,h as Ce,i as Ee,j as je,k as ve,l as _e,m as Ie,n as Ae,o as Te,p as Oe,q as Ve,r as $e,s as Ue,t as ze,u as Me,v as Ne,w as Je,x as He,y as qe,z as Le}from"./chunk-XEFBKQY5.js";import"./chunk-SHDHMKMJ.js";import{a as Y,c as le,f as pe}from"./chunk-PODBS4IU.js";import{a as q}from"./chunk-ORFSMEMM.js";import{a as ye}from"./chunk-N224PFBI.js";import"./chunk-Q4DKP5DO.js";import{b as ue,c as de}from"./chunk-64TVBQFR.js";import{a as G,b as X,c as Q,d as ee,e as re,f as te,g as ne,h as oe,i as se,j as ie,k as ae,l as ce}from"./chunk-W6T7MOKY.js";import{a as Z}from"./chunk-FUUTGGJS.js";import{c as O,d as V,e as $,f as U,g as z,h as M,i as N,j as J}from"./chunk-2ACBWC7K.js";var j="kanonak-credentials",u="credentials",Ye=1,f=class{async get(r){let e=d(r),t=await h();return new Promise((o,a)=>{let s=t.transaction(u,"readonly"),i=s.objectStore(u).get(e);i.onsuccess=()=>o(i.result??null),i.onerror=()=>a(new Error(`IndexedDB read failed for '${e}': ${i.error?.message}`)),s.oncomplete=()=>t.close()})}async store(r,e){let t=d(r),o=await h();return new Promise((a,s)=>{let l=o.transaction(u,"readwrite"),c=l.objectStore(u).put(e,t);c.onsuccess=()=>a(),c.onerror=()=>s(new Error(`IndexedDB write failed for '${t}': ${c.error?.message}`)),l.oncomplete=()=>o.close()})}async remove(r){let e=d(r),t=await h();return new Promise((o,a)=>{let s=t.transaction(u,"readwrite"),i=s.objectStore(u).delete(e);i.onsuccess=()=>o(),i.onerror=()=>a(new Error(`IndexedDB delete failed for '${e}': ${i.error?.message}`)),s.oncomplete=()=>t.close()})}async list(){let r=await h();return new Promise((e,t)=>{let o=r.transaction(u,"readonly"),s=o.objectStore(u).getAllKeys();s.onsuccess=()=>e(s.result??[]),s.onerror=()=>t(new Error(`IndexedDB list failed: ${s.error?.message}`)),o.oncomplete=()=>r.close()})}};function h(){return new Promise((n,r)=>{let e=indexedDB.open(j,Ye);e.onupgradeneeded=()=>{let t=e.result;t.objectStoreNames.contains(u)||t.createObjectStore(u)},e.onsuccess=()=>n(e.result),e.onerror=()=>r(new Error(`Failed to open IndexedDB '${j}': ${e.error?.message}
|
|
2
2
|
Credential storage requires IndexedDB support in your browser.`))})}async function _(){let n=await crypto.subtle.generateKey({name:"ECDSA",namedCurve:"P-256"},!1,["sign"]),r=await crypto.subtle.exportKey("jwk",n.publicKey);return{signingKey:n.privateKey,publicKeyJwk:r}}async function k(){let n=await crypto.subtle.generateKey({name:"ECDSA",namedCurve:"P-256"},!0,["sign"]),r=await crypto.subtle.exportKey("jwk",n.publicKey),e=await crypto.subtle.exportKey("jwk",n.privateKey);return{keys:{signingKey:n.privateKey,publicKeyJwk:r},dpopKeyPair:{publicKey:r,privateKey:e}}}async function b(n){return{signingKey:await crypto.subtle.importKey("jwk",n.privateKey,{name:"ECDSA",namedCurve:"P-256"},!1,["sign"]),publicKeyJwk:n.publicKey}}async function K(n,r,e,t,o){let a={alg:"ES256",typ:"dpop+jwt",jwk:{kty:n.publicKeyJwk.kty,crv:n.publicKeyJwk.crv,x:n.publicKeyJwk.x,y:n.publicKeyJwk.y}},s={jti:crypto.randomUUID(),htm:r.toUpperCase(),htu:e,iat:Math.floor(Date.now()/1e3)};return t&&(s.ath=await er(t)),o&&(s.nonce=o),await Ze(a,s,n.signingKey)}function x(n){return!n||n.length===0?!1:n.some(r=>r.toUpperCase()==="ES256")}async function Ze(n,r,e){let t=v(JSON.stringify(n)),o=v(JSON.stringify(r)),a=new TextEncoder().encode(`${t}.${o}`),s=await crypto.subtle.sign({name:"ECDSA",hash:"SHA-256"},e,a),l=D(s);return`${t}.${o}.${l}`}async function er(n){let r=new TextEncoder().encode(n),e=await crypto.subtle.digest("SHA-256",r);return D(e)}function v(n){let r=new TextEncoder().encode(n);return D(r.buffer)}function D(n){let r=new Uint8Array(n),e="";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}var rr=300*1e3,S=class{credentialBackend;callbackUrl;constructor(r){this.credentialBackend=new f,this.callbackUrl=r??`${window.location.origin}/browser/callback.html`}async authorize(r){let e=d(r),t=await this.discover(e);if(!t)return{success:!1,error:`No OAuth discovery endpoint found for '${e}'.`};if(!t.authorizationEndpoint||!t.tokenEndpoint)return{success:!1,error:`OAuth metadata incomplete for '${e}'.`};let o=x(t.dpopSigningAlgValuesSupported),a=null,s=null;if(o){let g=await k();a=g.keys,s=g.dpopKeyPair}let l=await this.credentialBackend.get(e),i=l?.clientId??null,c=l?.clientSecret??null;if(!i&&t.registrationEndpoint){let g=await this.registerClient(t.registrationEndpoint);if(!g)return{success:!1,error:`Dynamic client registration failed for '${e}'.`};i=g.clientId,c=g.clientSecret??null}if(!i)return{success:!1,error:`No OAuth client credentials for '${e}'.`};let m=tr(),p=await nr(m),R=or(),A=sr(t.authorizationEndpoint,i,this.callbackUrl,R,p),y=await this.openAuthPopup(A,R);if(!y)return{success:!1,error:"Authorization timed out or was cancelled."};if(y.error)return{success:!1,error:`Authorization failed: ${y.error}`};if(!y.code)return{success:!1,error:"No authorization code received."};if(y.state!==R)return{success:!1,error:"State mismatch \u2014 possible CSRF attack."};let P=await this.exchangeCode(t.tokenEndpoint,i,c,y.code,this.callbackUrl,m,a);if(!P)return{success:!1,error:"Token exchange failed."};let T={clientId:i,clientSecret:c,accessToken:P.accessToken??null,refreshToken:P.refreshToken??null,expiresAt:P.expiresIn?new Date(Date.now()+P.expiresIn*1e3).toISOString():null,tokenEndpoint:t.tokenEndpoint,dpopKeyPair:s};return await this.credentialBackend.store(e,T),{success:!0,host:e}}async getCredentialWithKeys(r){let e=await this.credentialBackend.get(r);if(!e)return null;let t=null;return e.dpopKeyPair&&(t=await b(e.dpopKeyPair)),{credential:e,dpopKeys:t}}async logout(r){let e=d(r);return await this.credentialBackend.remove(e),{success:!0,host:e}}async listAuthenticated(){return this.credentialBackend.list()}async discover(r){for(let e of[`https://${r}/.well-known/oauth-authorization-server`,`https://${r}/.well-known/openid-configuration`])try{let t=await fetch(e);if(!t.ok)continue;let o=await t.json();return{issuer:w(o.issuer),authorizationEndpoint:w(o.authorization_endpoint),tokenEndpoint:w(o.token_endpoint),registrationEndpoint:w(o.registration_endpoint),revocationEndpoint:w(o.revocation_endpoint),dpopSigningAlgValuesSupported:I(o.dpop_signing_alg_values_supported),codeChallengeMethodsSupported:I(o.code_challenge_methods_supported)}}catch{continue}return null}async registerClient(r){try{let e=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_name:"Kanonak Browser",redirect_uris:[this.callbackUrl],grant_types:["authorization_code","refresh_token"],response_types:["code"],token_endpoint_auth_method:"none"})});if(!e.ok)return null;let t=await e.json(),o=t.client_id;return o?{clientId:o,clientSecret:t.client_secret}:null}catch{return null}}openAuthPopup(r,e){return new Promise(t=>{let o=window.open(r,"kanonak-auth","width=500,height=700,menubar=no,toolbar=no,location=yes,status=no");if(!o){t(null);return}let a=setTimeout(()=>{i(),t(null)},rr),s=c=>{c.origin===window.location.origin&&(!c.data||c.data.type!=="kanonak-auth-callback"||(i(),t({code:c.data.code??void 0,state:c.data.state??void 0,error:c.data.error??void 0})))},l=setInterval(()=>{o.closed&&(i(),t(null))},500),i=()=>{clearTimeout(a),clearInterval(l),window.removeEventListener("message",s);try{o.close()}catch{}};window.addEventListener("message",s)})}async exchangeCode(r,e,t,o,a,s,l){let i=new URLSearchParams({grant_type:"authorization_code",client_id:e,code:o,redirect_uri:a,code_verifier:s});t&&i.set("client_secret",t);let c={"Content-Type":"application/x-www-form-urlencoded"};l&&(c.DPoP=await K(l,"POST",r));try{let m=await fetch(r,{method:"POST",headers:c,body:i.toString()});if(!m.ok)return null;let p=await m.json();return{accessToken:p.access_token,refreshToken:p.refresh_token,expiresIn:typeof p.expires_in=="number"?p.expires_in:void 0}}catch{return null}}};function tr(){let n=new Uint8Array(32);return crypto.getRandomValues(n),B(n.buffer)}async function nr(n){let r=new TextEncoder().encode(n),e=await crypto.subtle.digest("SHA-256",r);return B(e)}function or(){let n=new Uint8Array(16);return crypto.getRandomValues(n),B(n.buffer)}function sr(n,r,e,t,o){let a=new URLSearchParams({client_id:r,response_type:"code",redirect_uri:e,state:t,code_challenge:o,code_challenge_method:"S256"});return`${n}?${a}`}function B(n){let r=new Uint8Array(n),e="";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function w(n){return typeof n=="string"?n:null}function I(n){return Array.isArray(n)?n.filter(r=>typeof r=="string"):null}export{Ne as AmbiguousReferenceRule,se as BooleanStatement,f as BrowserCredentialBackend,S as BrowserOAuthFlow,Fe as ClassDefinitionRule,Ie as ClassHierarchyCycleRule,X as DefinedKanonak,ze as DefinitionPropertyReferenceRule,fe as EdgeType,Y as EmbeddedKanonak,je as EmbeddedKanonakTypeRule,ae as EmbeddedStatement,me as GraphBuilder,F as HttpKanonakDocumentRepository,ve as ImportExistenceRule,H as InMemoryKanonakDocumentRepository,Ue as InstancePropertyReferenceRule,G as Kanonak,we as KanonakDocumentPositions,pe as KanonakObjectParser,Xe as KanonakObjectValidator,q as KanonakParser,Z as KanonakUri,ke as KanonakUriBuilder,ce as ListStatement,Ge as MarkdownLinkRule,le as MarkdownStatement,$e as NamespaceImportCycleRule,De as NamespacePrefixRule,ge as NodeType,oe as NumberStatement,He as ObjectPropertyImportRule,qe as ObjectPropertyValueValidationRule,Se as OntologyValidationError,Ke as OntologyValidationResult,Le as PropertyDomainRule,Ae as PropertyHierarchyCycleRule,Pe as PropertyMetadata,Je as PropertyRangeReferenceRule,Te as PropertyRangeRequiredRule,Ce as PropertyTypeSpecificityRule,We as PropertyValueTypeRule,L as PublisherConfigResolver,W as PublisherIndex,ee as ReferenceKanonak,ie as ReferenceStatement,Be as ResourceNamingRule,ue as ResourceResolver,ye as ResourceTypeClassifier,te as ScalarStatement,re as Statement,ne as StringStatement,Oe as SubClassOfReferenceRule,Ve as SubPropertyOfReferenceRule,Q as SubjectKanonak,Ee as SubjectKanonakTypeRequiredRule,de as TypeResolver,_e as UnresolvedReferenceRule,Re as ValidationContext,xe as ValidationSeverity,Me as XsdImportRule,x as browserServerSupportsDPoP,O as compareVersions,K as createBrowserDPoPProof,U as createVersion,Qe as findDerivation,be as findInstancesByType,$ as formatVersion,k as generateBrowserDPoPKeyPair,_ as generateBrowserDPoPKeys,E as hasValidToken,b as importDPoPKeys,M as isCompatibleVersion,C as isExpired,N as isMajorCompatible,d as normalizeHost,z as parseVersionString,he as parseWithPositions,J as pickHighestDocument,V as versionsEqual};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as j,b as x,f as _}from"./chunk-PODBS4IU.js";import{d as l,e as u,f as b,g as $,h as s,j as h}from"./chunk-64TVBQFR.js";import{c as S,d as O,g as I,h as T,i as g,j as v,k as L,l as q}from"./chunk-W6T7MOKY.js";var d=class{all=new Set;byPIdx=new Map;bySPIdx=new Map;byPOIdx=new Map;tripleList=[];add(e){let t=b(e);return this.all.has(t)?!1:(this.all.add(t),this.tripleList.push(e),P(this.byPIdx,e.p,e),P(this.bySPIdx,`${e.s}|${e.p}`,e),e.o.kind==="uri"&&P(this.byPOIdx,`${e.p}|${e.o.key}`,e),!0)}has(e){return this.all.has(b(e))}size(){return this.tripleList.length}snapshot(){return this.tripleList.slice()}byPredicate(e){let t=this.byPIdx.get(e);return t?t.slice():[]}bySubjectPredicate(e,t){let r=this.bySPIdx.get(`${e}|${t}`);return r?r.slice():[]}byPredicateObject(e,t){let r=this.byPOIdx.get(`${e}|${t}`);return r?r.slice():[]}subjectsWithPredicateObject(e,t){let r=this.byPOIdx.get(`${e}|${t}`);if(!r)return[];let n=new Set;for(let a of r)n.add(a.s);return Array.from(n)}uriObjectsOf(e,t){let r=this.bySPIdx.get(`${e}|${t}`);if(!r)return[];let n=new Set;for(let a of r)a.o.kind==="uri"&&n.add(a.o.key);return Array.from(n)}hasUri(e,t,r){return this.all.has(`${e}|${t}|u:${r}`)}hasTriple(e,t,r){return this.all.has(`${e}|${t}|${$(r)}`)}};function P(o,e,t){let r=o.get(e);r?r.push(t):o.set(e,[t])}var w={name:"rdfs2",apply(o,e){let t=!1;for(let r of o.byPredicate(e.domain)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.byPredicate(n))o.add(s(i.s,e.type,a))&&(t=!0)}return t}},C={name:"rdfs3",apply(o,e){let t=!1;for(let r of o.byPredicate(e.range)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.byPredicate(n))i.o.kind==="uri"&&o.add(s(i.o.key,e.type,a))&&(t=!0)}return t}},A={name:"rdfs5",apply(o,e){let t=!1;for(let r of o.byPredicate(e.subPropertyOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.bySubjectPredicate(a,e.subPropertyOf))i.o.kind==="uri"&&o.add(s(n,e.subPropertyOf,i.o.key))&&(t=!0)}return t}},V={name:"rdfs7",apply(o,e){let t=!1;for(let r of o.byPredicate(e.subPropertyOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicate(n)){let f={s:i.s,p:a,o:i.o};o.add(f)&&(t=!0)}}return t}},W={name:"rdfs9",apply(o,e){let t=!1;for(let r of o.byPredicate(e.subClassOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicateObject(e.type,n))o.add(s(i.s,e.type,a))&&(t=!0)}return t}},F={name:"rdfs11",apply(o,e){let t=!1;for(let r of o.byPredicate(e.subClassOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.bySubjectPredicate(a,e.subClassOf))i.o.kind==="uri"&&o.add(s(n,e.subClassOf,i.o.key))&&(t=!0)}return t}},k=[w,C,A,V,W,F];var N={name:"prp-trp",apply(o,e){let t=!1,r=o.subjectsWithPredicateObject(e.type,e.transitiveProperty);for(let n of r){let a=o.byPredicate(n);for(let i of a){if(i.o.kind!=="uri")continue;let f=i.o.key;for(let c of o.bySubjectPredicate(f,n))c.o.kind==="uri"&&i.s!==c.o.key&&o.add(s(i.s,n,c.o.key))&&(t=!0)}}return t}},D={name:"prp-symp",apply(o,e){let t=!1,r=o.subjectsWithPredicateObject(e.type,e.symmetricProperty);for(let n of r)for(let a of o.byPredicate(n))a.o.kind==="uri"&&o.add(s(a.o.key,n,a.s))&&(t=!0);return t}},z={name:"prp-inv1",apply(o,e){let t=!1;for(let r of o.byPredicate(e.inverseOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.byPredicate(n))i.o.kind==="uri"&&o.add(s(i.o.key,a,i.s))&&(t=!0)}return t}},B={name:"prp-inv2",apply(o,e){let t=!1;for(let r of o.byPredicate(e.inverseOf)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;for(let i of o.byPredicate(a))i.o.kind==="uri"&&o.add(s(i.o.key,n,i.s))&&(t=!0)}return t}},M={name:"prp-eqp1",apply(o,e){let t=!1;for(let r of o.byPredicate(e.equivalentProperty)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicate(n))o.add({s:i.s,p:a,o:i.o})&&(t=!0)}return t}},G={name:"prp-eqp2",apply(o,e){let t=!1;for(let r of o.byPredicate(e.equivalentProperty)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicate(a))o.add({s:i.s,p:n,o:i.o})&&(t=!0)}return t}},H={name:"cax-eqc1",apply(o,e){let t=!1;for(let r of o.byPredicate(e.equivalentClass)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicateObject(e.type,n))o.add(s(i.s,e.type,a))&&(t=!0)}return t}},J={name:"cax-eqc2",apply(o,e){let t=!1;for(let r of o.byPredicate(e.equivalentClass)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.byPredicateObject(e.type,a))o.add(s(i.s,e.type,n))&&(t=!0)}return t}},Q={name:"eq-rep-s",apply(o,e){let t=!1;for(let r of o.byPredicate(e.sameAs)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a){for(let i of o.snapshot())i.s===n&&o.add({s:a,p:i.p,o:i.o})&&(t=!0);for(let i of o.snapshot())i.s===a&&o.add({s:n,p:i.p,o:i.o})&&(t=!0)}}return t}},X={name:"eq-rep-o",apply(o,e){let t=!1;for(let r of o.byPredicate(e.sameAs)){if(r.o.kind!=="uri")continue;let n=r.s,a=r.o.key;if(n!==a)for(let i of o.snapshot())i.o.kind==="uri"&&(i.o.key===n?o.add(s(i.s,i.p,a))&&(t=!0):i.o.key===a&&o.add(s(i.s,i.p,n))&&(t=!0))}return t}},K=[N,D,z,B,M,G,H,J,Q,X];var y=class{constructor(e,t){this.store=e;this.vocabulary=t}store;vocabulary;getInstancesOfClass(e){let t=p(e);return this.store.subjectsWithPredicateObject(this.vocabulary.type,t)}getSubclasses(e){let t=p(e);return this.store.subjectsWithPredicateObject(this.vocabulary.subClassOf,t).filter(n=>n!==t)}getSuperclasses(e){let t=p(e);return this.store.uriObjectsOf(t,this.vocabulary.subClassOf).filter(r=>r!==t)}getTypesOfIndividual(e){return this.store.uriObjectsOf(p(e),this.vocabulary.type)}isInstanceOf(e,t){return this.store.hasUri(p(e),this.vocabulary.type,p(t))}triples(){return this.store.snapshot()}size(){return this.store.size()}};function p(o){return typeof o=="string"?o:u(o.publisher,o.package_,o.name)}var R=class{vocabulary;profile;maxIterations;constructor(e={}){this.vocabulary=e.vocabulary??new h,this.profile=e.profile??"owl-rl-classification",this.maxIterations=e.maxIterations??100}async reason(e){let t=new d,n=await new _().parseKanonaks(e),a=new U;for(let c of n)if(c instanceof S){let m=Y(c);if(!m)continue;for(let E of c.statement)this.emitStatement(m,E,t,a)}let i=[...k];this.profile==="owl-rl-classification"&&i.push(...K);let f=0;for(;f<this.maxIterations;){let c=!1;for(let m of i)m.apply(t,this.vocabulary)&&(c=!0);if(!c)break;f++}return new y(t,this.vocabulary)}emitStatement(e,t,r,n){let a=Z(t);if(a){if(t instanceof I){r.add({s:e,p:a,o:{kind:"literal",lexical:t.object,datatype:"string"}});return}if(t instanceof T){r.add({s:e,p:a,o:{kind:"literal",lexical:String(t.object),datatype:"number"}});return}if(t instanceof g){r.add({s:e,p:a,o:{kind:"literal",lexical:String(t.object),datatype:"boolean"}});return}if(t instanceof v){let i=l(t.object.subject);r.add(s(e,a,i));return}if(t instanceof L){let i=n.next();r.add({s:e,p:a,o:{kind:"blank",id:i}}),this.emitEmbedded(i,t.object,r,n);return}if(t instanceof q){for(let i of t.object??[])this.emitListItem(e,a,i,r,n);return}}}emitListItem(e,t,r,n,a){if(r instanceof O)n.add(s(e,t,l(r.subject)));else if(r instanceof j){let i=a.next();n.add({s:e,p:t,o:{kind:"blank",id:i}}),this.emitEmbedded(i,r,n,a)}else if(r instanceof x){let i=typeof r.value=="number"?"number":typeof r.value=="boolean"?"boolean":"string";n.add({s:e,p:t,o:{kind:"literal",lexical:String(r.value),datatype:i}})}}emitEmbedded(e,t,r,n){let a=`_:${e}`;for(let i of t.statement)this.emitStatement(a,i,r,n)}},U=class{counter=0;next(){return`b${this.counter++}`}};function Y(o){let e=o.namespace??"",t=e.indexOf("@"),r=t===-1?e:e.substring(0,t),n=r.indexOf("/");if(n===-1)return null;let a=r.substring(0,n),i=r.substring(n+1);return!a||!i||!o.name?null:u(a,i,o.name)}function Z(o){let e=o.predicate;return e?.subject?l(e.subject):null}export{d as a,k as b,K as c,y as d,R as e};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as i,d as u,h as d,i as p}from"./chunk-2ACBWC7K.js";import{VersionOperator as r}from"@kanonak-protocol/types/document/models/enums";var l=class{documents=new Map;documentContents=new Map;parser;constructor(e){this.parser=e}async getAllDocumentsAsync(){return Array.from(this.documents.values())}async getDocumentAsync(e){return this.documents.get(e)??null}async getDocumentsByNamespaceAsync(e,n){let t=[];for(let s of this.documents.values())s.metadata?.namespace_?.publisher===e&&s.metadata?.namespace_?.package_===n&&t.push(s);return t}async getHighestCompatibleVersionAsync(e,n){let t=[];for(let a of this.documents.values())a.metadata?.namespace_?.publisher===e&&a.metadata?.namespace_?.package_===n.packageName&&a.metadata?.namespace_?.version!==void 0&&t.push(a);if(t.length===0)return null;let s=t.filter(a=>{let o=a.metadata.namespace_.version;if(!o)return!1;switch(n.versionOperator){case r.Exact:return u(o,n.version);case r.Compatible:return d(o,n.version);case r.Major:return p(o,n.version);case r.Any:return i(o,n.minVersion)>=0;default:return!1}});return s.length===0?null:(s.sort((a,o)=>{let c=a.metadata.namespace_.version,m=o.metadata.namespace_.version;return!c&&!m?0:c?m?i(m,c):-1:1}),s[0])}async saveDocumentAsync(e,n){this.documents.set(n,e);let t=this.parser.save(e);this.documentContents.set(n,t)}async deleteDocumentAsync(e){this.documents.delete(e),this.documentContents.delete(e)}async clearNamespaceAsync(e,n){let t=[];for(let[s,a]of this.documents.entries())a.metadata?.namespace_?.publisher===e&&a.metadata?.namespace_?.package_===n&&t.push(s);for(let s of t)this.documents.delete(s),this.documentContents.delete(s)}async getAllDocumentReferencesAsync(){let e=[];for(let n of this.documents.values())n.metadata?.namespace_&&e.push({identifier:n.metadata.namespace_.toString(),uri:`kanonak://${n.metadata.namespace_}`,hasParseError:!1});return e}async getDocumentContentAsync(e){let n=this.documentContents.get(e);if(n!==void 0)return n;let t=this.documents.get(e);return t!==void 0?this.parser.save(t):null}async getDocumentUriAsync(e){let n=this.documents.get(e);return n?n.metadata?.namespace_?`kanonak://${n.metadata.namespace_}`:`kanonak://${e}`:null}};export{l as a};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{e as V}from"./chunk-PODBS4IU.js";import{a as E}from"./chunk-ORFSMEMM.js";var L=class{propertyUri;propertyType;range;rangeUri;isImported;definedInNamespace};import{parseDocument as O,LineCounter as R,isMap as h,isPair as f,isScalar as g,isSeq as I}from"yaml";var K=class i{entities=new Map;entityBlocks=new Map;properties=new Map;propertyValues=new Map;valueListItems=new Map;importPackages=new Map;nestedKeys=new Map;nestedValues=new Map;static fromContent(e){let t=new i,n=new R,r=O(e,{lineCounter:n});if(r.errors.length>0||!h(r.contents))return t;N(r.contents,[],n,t);for(let o of r.contents.items){if(!f(o)||!g(o.key))continue;let a=String(o.key.value),u=o.key.range;if(!u)continue;t.entities.set(a,d(u,n));let s=o.value,c=s&&typeof s=="object"&&"range"in s?s.range:void 0;if(c?t.entityBlocks.set(a,d([u[0],u[1],c[2]],n)):t.entityBlocks.set(a,d(u,n)),h(o.value)){let k=new Map,m=new Map,l=new Map;for(let P of o.value.items){if(!f(P)||!g(P.key))continue;let b=String(P.key.value),p=P.key.range;p&&k.set(b,d(p,n));let S=P.value;if(S&&typeof S=="object"&&"range"in S&&Array.isArray(S.range)){let v=S.range;m.set(b,d(v,n))}if(I(S)){let v=[];for(let M of S.items)M&&typeof M=="object"&&"range"in M&&Array.isArray(M.range)&&v.push(d(M.range,n));v.length>0&&l.set(b,v)}}k.size>0&&t.properties.set(a,k),m.size>0&&t.propertyValues.set(a,m),l.size>0&&t.valueListItems.set(a,l);let y=j(o.value,n);y.length>0&&t.importPackages.set(a,y)}}return t}getEntityPosition(e){return this.entities.get(e)}getEntityBlockPosition(e){return this.entityBlocks.get(e)}findEntityAtPosition(e,t){for(let[n,r]of this.entityBlocks)if(w(r,e,t))return n}findPropertyAtPosition(e,t){let n=this.findEntityAtPosition(e,t);if(!n)return;let r=this.properties.get(n),o=this.propertyValues.get(n);if(!r&&!o)return{entityName:n};let a,u;if(o)for(let[s,c]of o)w(c,e,t)&&(!u||C(c,u))&&(a=s,u=c);if(r)for(let[s,c]of r)w(c,e,t)&&(!u||C(c,u))&&(a=s,u=c);return a?{entityName:n,propertyName:a}:{entityName:n}}getPropertyPosition(e,t){return this.properties.get(e)?.get(t)}getPropertyValuePosition(e,t){return this.propertyValues.get(e)?.get(t)}getImportPackages(e){return this.importPackages.get(e)??[]}getAllImportPackages(){let e=[];for(let[t,n]of this.importPackages)for(let r of n)e.push({entityName:t,entry:r});return e}findPropertySourceName(e,t){let n=this.properties.get(e);if(n){if(n.has(t))return t;for(let r of n.keys()){let o=r.lastIndexOf(".");if((o===-1?r:r.substring(o+1))===t)return r}}}getListItemPosition(e,t,n){let r=this.valueListItems.get(e)?.get(t);if(!(!r||n<0||n>=r.length))return r[n]}getNodeKeyPosition(e){return this.nestedKeys.get(JSON.stringify(e))}getNodeValuePosition(e){return this.nestedValues.get(JSON.stringify(e))}setNestedKeyPosition(e,t){this.nestedKeys.set(e,t)}setNestedValuePosition(e,t){this.nestedValues.set(e,t)}getMostSpecificPosition(e,t,n){if(e){if(t!==void 0){if(n!==void 0){let a=this.getListItemPosition(e,t,n);if(a)return a}let r=this.getPropertyValuePosition(e,t);if(r)return r;let o=this.getPropertyPosition(e,t);if(o)return o}return this.getEntityPosition(e)}}};function j(i,e){let t=[];if(!h(i))return t;let n=i.items.find(r=>f(r)&&g(r.key)&&String(r.key.value)==="imports");if(!n||!f(n)||!I(n.value))return t;for(let r of n.value.items){if(!h(r))continue;let o=r.items.find(s=>f(s)&&g(s.key)&&String(s.key.value)==="publisher");if(!o||!f(o)||!g(o.value))continue;let a=String(o.value.value),u=r.items.find(s=>f(s)&&g(s.key)&&String(s.key.value)==="packages");if(!(!u||!f(u)||!I(u.value)))for(let s of u.value.items){if(!h(s))continue;let c=s.items.find(p=>f(p)&&g(p.key)&&String(p.key.value)==="package");if(!c||!f(c)||!g(c.value)||!c.value.range)continue;let k=String(c.value.value),m=s.items.find(p=>f(p)&&g(p.key)&&String(p.key.value)==="version"),l=m&&f(m)&&g(m.value)?String(m.value.value):"",y=s.items.find(p=>f(p)&&g(p.key)&&String(p.key.value)==="alias"),P=y&&f(y)&&g(y.value)?String(y.value.value):void 0,b=P!==void 0?{publisher:a,package_:k,version:l,alias:P,position:d(c.value.range,e)}:{publisher:a,package_:k,version:l,position:d(c.value.range,e)};t.push(b)}}return t}function w(i,e,t){return!(e<i.line||e>i.endLine||e===i.line&&t<i.column||e===i.endLine&&t>i.endColumn)}function C(i,e){let t=i.endLine-i.line,n=e.endLine-e.line;if(t!==n)return t<n;let r=i.endLine===i.line?i.endColumn-i.column:Number.MAX_SAFE_INTEGER,o=e.endLine===e.line?e.endColumn-e.column:Number.MAX_SAFE_INTEGER;return r<o}function N(i,e,t,n){if(h(i)){for(let r of i.items){if(!f(r)||!g(r.key))continue;let o=String(r.key.value),a=[...e,o],u=JSON.stringify(a);r.key.range&&n.setNestedKeyPosition(u,d(r.key.range,t));let s=r.value,c=D(s);c&&n.setNestedValuePosition(u,d(c,t)),N(s,a,t,n)}return}if(I(i)){for(let r=0;r<i.items.length;r++){let o=i.items[r],a=[...e,r],u=JSON.stringify(a),s=D(o);s&&n.setNestedValuePosition(u,d(s,t)),N(o,a,t,n)}return}}function D(i){if(!i||typeof i!="object"||!("range"in i))return;let e=i.range;return Array.isArray(e)&&e.length>=3?e:void 0}function d(i,e){let t=e.linePos(i[0]),n=e.linePos(i[2]);return{line:t.line-1,column:t.col-1,endLine:n.line-1,endColumn:n.col-1}}function x(i,e){let n=(e??new E).parse(i),r=K.fromContent(i);return{document:n,positions:r}}function W(i,e,t,n,r){if(e<n.line||e>n.endLine||e===n.line&&t<n.column||e===n.endLine&&t>=n.endColumn)return;let o=A(r,n.line,n.column),a=A(r,n.endLine,n.endColumn);if(o<0||a<0)return;let u=r.substring(o,a),s=V(u);if(s.length!==i.links.length)return;let c=e-n.line,k=e===n.line?t-n.column:t,m=A(u,c,k);if(!(m<0))for(let l=0;l<s.length;l++){let y=s[l];if(m>=y.startOffset&&m<y.endOffset)return i.links[l]}}function A(i,e,t){let n=0,r=0;for(let o=0;o<i.length;o++){if(n===e)return Math.min(r+t,i.length);i[o]===`
|
|
2
2
|
`&&(n++,r=o+1)}return n===e?Math.min(r+t,i.length):-1}export{L as a,K as b,x as c,W as d};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{c as S,f as R}from"./chunk-PODBS4IU.js";import{a as h}from"./chunk-N224PFBI.js";var E=(t=>(t.Class="Class",t.DatatypeProperty="DatatypeProperty",t.ObjectProperty="ObjectProperty",t.AnnotationProperty="AnnotationProperty",t.Instance="Instance",t.Datatype="Datatype",t.Unknown="Unknown",t))(E||{}),A=(o=>(o.InstanceOf="instanceOf",o.SubClassOf="subClassOf",o.Domain="domain",o.Range="range",o.ObjectRelationship="objectRelationship",o.SubPropertyOf="subPropertyOf",o.PropertyValue="propertyValue",o.EmbeddedLink="embeddedLink",o))(A||{}),$=class{static async buildFromRepository(n){let l=await new R().parseKanonaks(n),p=await n.getAllDocumentsAsync(),a=[],s=[],t=new Set,o=new Set,d=new Map;for(let y of l){let c=y;c.name&&(h.isClassType(c)&&t.add(c.name),(h.isObjectPropertyType(c)||h.isGenericPropertyType(c))&&o.add(c.name))}for(let y of p)for(let[c,g]of Object.entries(y.body))o.has(c)&&g?.range&&typeof g.range=="string"&&d.set(c,g.range);let u=new Map;for(let y of l){let c=y;c.name&&u.set(c.name,c)}for(let y of p){let c=y.metadata.namespace_,g=c?`${c.publisher}/${c.package_}`:"",i=c?.version?`${c.version.major}.${c.version.minor}.${c.version.patch}`:"",f=x(y);for(let[m,b]of Object.entries(y.body)){if(!b||typeof b!="object")continue;let P=u.get(m),k="Unknown";if(P){let T=P;h.isClassType(T)?k="Class":h.isObjectPropertyType(T)?k="ObjectProperty":h.isDatatypePropertyType(T)?k="DatatypeProperty":h.isAnnotationPropertyType(T)?k="AnnotationProperty":h.isDatatypeType(T)?k="Datatype":h.isGenericPropertyType(T)?k="ObjectProperty":h.isInstanceOfKnownClass(T,t)&&(k="Instance")}let j=g&&i?`${g}/${m}@${i}`:m,C={};for(let[T,O]of Object.entries(b))T!=="type"&&(typeof O!="object"||O===null)&&(C[T]=O);a.push({id:j,label:b.label??m,type:k,namespace:g,properties:C}),v(j,b,k,t,o,s,g,i,f),N(j,b,o,d,a,s,g,i,f),L(j,P,s)}}return{nodes:a,edges:s}}static buildFromDocument(n){let r=[],l=[],p=n.metadata.namespace_,a=p?.version?`${p.version.major}.${p.version.minor}.${p.version.patch}`:"",s=p?`${p.publisher}/${p.package_}`:"",t=new Set,o=new Set,d=new Map,u=x(n);for(let[g,i]of Object.entries(n.body)){let f=i?.type;f&&(K(f,u)&&t.add(g),M(f,u)&&(o.add(g),i.range&&typeof i.range=="string"&&d.set(g,i.range)))}for(let[g,i]of Object.entries(n.body)){if(!i||typeof i!="object")continue;let f=i.type,m=U(f,g,t,u),b=s&&a?`${s}/${g}@${a}`:g,P={};for(let[k,j]of Object.entries(i))k!=="type"&&(typeof j!="object"||j===null)&&(P[k]=j);r.push({id:b,label:i.label??g,type:m,namespace:s,properties:P}),v(b,i,m,t,o,l,s,a,u),N(b,i,o,d,r,l,s,a,u)}let y=new Set(r.map(g=>g.id)),c=l.filter(g=>y.has(g.source)&&y.has(g.target));return{nodes:r,edges:c}}};function x(e,n){let r=new Map;if(e.metadata?.imports)for(let[l,p]of Object.entries(e.metadata.imports))for(let a of p){let s=a.alias??a.packageName,t=a.version,o=`${t.major}.${t.minor}.${t.patch}`;r.set(s,{publisher:l,package_:a.packageName,version:o})}return r}var _={"kanonak.org/core-rdf/Class":"Class","kanonak.org/core-owl/Class":"Class","kanonak.org/core-rdfs/Class":"Class","kanonak.org/core-owl/ObjectProperty":"ObjectProperty","kanonak.org/core-owl/DatatypeProperty":"DatatypeProperty","kanonak.org/core-owl/AnnotationProperty":"AnnotationProperty","kanonak.org/core-rdf/Property":"ObjectProperty","kanonak.org/core-rdfs/Datatype":"Datatype"},G=new Set(["kanonak.org/core-owl/ObjectProperty","kanonak.org/core-owl/DatatypeProperty","kanonak.org/core-owl/AnnotationProperty","kanonak.org/core-rdf/Property"]);function D(e,n){if(e.includes(".")){let r=e.indexOf("."),l=e.substring(0,r),p=e.substring(r+1),a=n.get(l);if(a)return`${a.publisher}/${a.package_}/${p}`}return null}function K(e,n){let r=D(e,n);return r?_[r]==="Class":!1}function M(e,n){let r=D(e,n);return r?G.has(r):!1}function U(e,n,r,l){if(!e||e==="Package")return"Unknown";let p=D(e,l);if(p){let s=_[p];if(s)return s;let t=p.split("/").pop()?.split("@")[0]??"";return r.has(t)?"Instance":"Unknown"}let a=e.split(".").pop()??e;return r.has(a)?"Instance":"Unknown"}var I=new Set(["type","label","comment","version","publisher","imports","license","match","alias","package"]);function v(e,n,r,l,p,a,s,t,o){let d=n.type,u=n.subClassOf;if(u){let i=Array.isArray(u)?u:[u];for(let f of i)typeof f=="string"&&a.push({source:e,target:w(f,s,t,o),type:"subClassOf",label:"subClassOf"})}let y=n.subPropertyOf;if(y){let i=Array.isArray(y)?y:[y];for(let f of i)typeof f=="string"&&a.push({source:e,target:w(f,s,t,o),type:"subPropertyOf",label:"subPropertyOf"})}if(r==="Instance"&&d){let i=d.split(".").pop()??d;a.push({source:e,target:w(i,s,t,o),type:"instanceOf",label:"type"})}if(r==="Instance")for(let[i,f]of Object.entries(n)){if(I.has(i)||!p.has(i))continue;let m=Array.isArray(f)?f:[f];for(let b of m)typeof b=="string"&&V(b)&&a.push({source:e,target:w(b,s,t,o),type:"propertyValue",label:i,propertyId:w(i,s,t,o)})}let c=r==="ObjectProperty"||r==="DatatypeProperty",g=n.domain&&n.range;if((c||g)&&n.domain&&n.range){let i=typeof n.domain=="string"?n.domain:null,f=typeof n.range=="string"?n.range:null;i&&f&&a.push({source:w(i,s,t,o),target:w(f,s,t,o),type:"objectRelationship",label:n.label??e.split("/").pop()??"",propertyId:e})}}function N(e,n,r,l,p,a,s,t,o){for(let[d,u]of Object.entries(n)){if(I.has(d)||typeof u!="object"||u===null||Array.isArray(u))continue;let y=u,c=`${e}/${d}`,g=l.get(d),i=g?g.split(".").pop()??g:"Unknown",f={};for(let[b,P]of Object.entries(y))(typeof P!="object"||P===null)&&(f[b]=P);p.push({id:c,label:`${i} (embedded)`,type:"Instance",namespace:s,properties:f});let m=s&&t?`${s}/${d}@${t}`:d;a.push({source:e,target:c,type:"propertyValue",label:d,propertyId:r.has(d)?m:void 0}),g&&a.push({source:c,target:w(i,s,t,o),type:"instanceOf",label:"type (inferred)"}),N(c,y,r,l,p,a,s,t,o)}}function L(e,n,r){let l=n?.statement;if(Array.isArray(l))for(let p of l){if(!(p instanceof S))continue;let a=p.predicate?.subject?.name??"";for(let s of p.links){let t=s.target?.subject;if(!t)continue;let o=t.version,d=o&&typeof o.major=="number"?`@${o.major}.${o.minor}.${o.patch}`:"";r.push({source:e,target:`${t.publisher}/${t.package_}/${t.name}${d}`,type:"embeddedLink",label:a})}}}function V(e){return!(!e||e.includes(" ")||e.includes(`
|
|
2
|
+
`)||e.startsWith("http://")||e.startsWith("https://")||/^\d{4}-\d{2}/.test(e)||/^\d+(\.\d+)?$/.test(e))}function w(e,n,r,l){if(e.includes("@")&&e.includes("/"))return e;if(e.includes(".")){let p=e.indexOf("."),a=e.substring(0,p),s=e.substring(p+1);if(l){let t=l.get(a);if(t)return`${t.publisher}/${t.package_}/${s}@${t.version}`}return n&&r?`${n}/${s}@${r}`:s}return n&&r?`${n}/${e}@${r}`:e}function Y(e){if(!e.expiresAt)return!1;let n=new Date(e.expiresAt),r=300*1e3;return n.getTime()<=Date.now()+r}function Q(e){return!!e.accessToken&&!Y(e)}function X(e){let n=e.replace(/^https?:\/\//,"").replace(/^git:\/\//,"").replace(/\/+$/,"").trim();if(!n)throw new Error("Publisher host cannot be empty");return n}export{E as a,A as b,$ as c,Y as d,Q as e,X as f};
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import{a as Cn}from"./chunk-4NO7MHS7.js";import{a as Mn}from"./chunk-PEJALHXK.js";import{d as u}from"./chunk-SHDHMKMJ.js";import{a as D,c as Ae,f as An}from"./chunk-PODBS4IU.js";import{a as Vn}from"./chunk-ORFSMEMM.js";import{a as pn,b as de,c as xn,d as j,f as Me,h as gn,i as We,k as Nn,l as Pn}from"./chunk-Q4DKP5DO.js";import{b as Oe,c as q,d as K,g as W,h as ue,i as ae,j as C,k as z,l as V}from"./chunk-W6T7MOKY.js";import{a as Tn}from"./chunk-FUUTGGJS.js";import{c as qe,g as me}from"./chunk-2ACBWC7K.js";var Ve="kanonak.org",zn="look",Ye="core-rdf",Kt={publisher:Ve,package_:zn,name:"displayLabel"},Rt={publisher:Ve,package_:zn,name:"displaySummary"},Et={publisher:Ve,package_:Ye,name:"type"},Lt={publisher:Ve,package_:Ye,name:"subClassOf"},Ot={publisher:Ve,package_:Ye,name:"label"},Ut={publisher:Ve,package_:Ye,name:"comment"},Dn=new Tn(Ve,Ye,"Resource");function B(r,e){let n=Bn(r,e,Kt)??Ot,t=Bn(r,e,Rt)??Ut,a=gn(e,n)??e.name,s=gn(e,t);return{label:a,summary:s}}function Bn(r,e,n){let t=We(e,n);if(t)return t;let a=new Set,s=Hn(e,Et);for(;s.length>0;){let o=s.shift(),i=pn(o);if(a.has(i))continue;a.add(i);let c=Me(r,o);if(!c)continue;let l=We(c,n);if(l)return l;s.push(...Hn(c,Lt))}if(!a.has(pn(Dn))){let o=Me(r,Dn);if(o){let i=We(o,n);if(i)return i}}}function Hn(r,e){let n=We(r,e);if(n)return[n];let t=[];for(let a of Nn(r,e))a instanceof K&&t.push(a.subject);return t}function Xe(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 p=d.join(`
|
|
4
|
+
`),f=l&&e.highlight?e.highlight(l,p):Ne(p),k=l?` class="language-${qn(l)}"`:"";t.push(`<pre class="kan-code"><code${k}>${f}</code></pre>`);continue}let i=/^(#{1,6})\s+(.*)$/.exec(s);if(i){let l=i[1].length,d=xe(i[2].trim());t.push(`<h${l}>${d}</h${l}>`),a++;continue}if(s.includes("|")&&a+1<n.length&&Gn(n[a+1])){let l=mn(s),d=It(n[a+1]);a+=2;let p=[];for(;a<n.length&&n[a].trim()!==""&&n[a].includes("|");)p.push(mn(n[a])),a++;t.push(Ft(l,d,p));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>${xe(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>${xe(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>${xe(c.join(" "))}</p>`)}return t.join(`
|
|
11
|
+
`)}function Gn(r){return r.includes("-")?/^[\s|:-]+$/.test(r):!1}function mn(r){let e=r.trim();return e.startsWith("|")&&(e=e.slice(1)),e.endsWith("|")&&(e=e.slice(0,-1)),e.split("|").map(n=>n.trim())}function It(r){return mn(r).map(e=>{let n=e.startsWith(":"),t=e.endsWith(":");return n&&t?"center":t?"right":n?"left":null})}function Ft(r,e,n){let t=o=>{let i=e[o];return i?` style="text-align:${i}"`:""},a=r.map((o,i)=>`<th${t(i)}>${xe(o)}</th>`).join(""),s=n.map(o=>`<tr>${o.map((c,l)=>`<td${t(l)}>${xe(c)}</td>`).join("")}</tr>`).join(`
|
|
12
|
+
`);return`<table>
|
|
13
|
+
<thead><tr>${a}</tr></thead>
|
|
14
|
+
<tbody>
|
|
15
|
+
${s}
|
|
16
|
+
</tbody>
|
|
17
|
+
</table>`}function xe(r){let e=Ne(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 Ne(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function qn(r){return r.replace(/"/g,""").replace(/&/g,"&")}var Ct={publisher:"kanonak.org",package_:"core-rdf",name:"label"};function Be(r){return typeof r=="object"&&r!==null&&r.kind==="raw-string"}var Ke=class extends Error{},nn=class{constructor(e,n,t=new Map){this.resolver=e;this.catalog=n;this.fragments=t}resolver;catalog;fragments;async evaluate(e,n){switch(e.kind){case"string-literal":return e.value;case"integer-literal":return e.value;case"decimal-literal":return e.value;case"boolean-literal":return e.value;case"uri-literal":return{...e.refTo};case"var-ref":{if(!n.has(e.varName))throw new Ke(`Unbound variable "${e.varName}"`);return n.get(e.varName)}case"concat":{let t=[];for(let a of e.parts){let s=await this.evaluate(a,n);if(s!=null)if(Array.isArray(s))for(let o of s)t.push(o);else t.push(s)}return t}case"fallback":{let t=await this.evaluate(e.primary,n);return Wn(t)?t:this.evaluate(e.alternate,n)}case"when":return await this.evaluate(e.condition,n)===!0?this.evaluate(e.thenBuild,n):e.elseBuild?this.evaluate(e.elseBuild,n):void 0;case"is-set":{let t=await this.evaluate(e.check,n);return Wn(t)}case"property-read":{let t=await this.evaluate(e.source,n);return en(t,e.readProp)}case"traverse":{let t=await this.evaluate(e.source,n);if(!(t instanceof Oe))return;let a=Tt(t,e.through),s=[];for(let o of a){let i=await this.resolver.resolveSubject(o,this.catalog);if(!i)continue;let c=new Map(n);c.set("input",i);let l=await this.evaluate(e.step,c);l!=null&&s.push(Pe(l))}return s.join("")}case"uri-name":{let t=await this.evaluate(e.source,n);return De(t)?t.name:t instanceof K?t.subject.name:t instanceof q?t.name:t instanceof D?t.name??"":void 0}case"uri-publisher":{let t=await this.evaluate(e.source,n);return kn(t)?.publisher}case"uri-package":{let t=await this.evaluate(e.source,n);return kn(t)?.package_}case"uri-version":{let t=await this.evaluate(e.source,n);return kn(t)?.version}case"subject-uri":{let t=await this.evaluate(e.source,n);if(t instanceof q){let a=t.namespace??"",s=t.name??"";return!a||!s?void 0:`${a}/${s}`}if(t instanceof K){let a=t.subject,s=a.version;return s&&typeof s.major=="number"?`${a.publisher}/${a.package_}@${s.major}.${s.minor}.${s.patch}/${a.name}`:`${a.publisher}/${a.package_}/${a.name}`}return}case"display-label":{let t=await this.resolver.resolveSubject({...e.labelTarget},this.catalog);return t?en(t,e.labelSource):void 0}case"resolve-ref":{let t=await this.evaluate(e.source,n);return t instanceof q?t:t instanceof K?await this.resolver.resolveSubject(t.subject,this.catalog):De(t)?await this.resolver.resolveSubject(t,this.catalog):void 0}case"normalize":{let t=await this.evaluate(e.source,n),a=t==null?"":Pe(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?"":Pe(t)}}case"render-markdown":{let t=await this.evaluate(e.source,n);if(!(t instanceof Oe))return;let a;for(let o of t.statement){let i=bn(o);if(i&&de(i,e.readProp)){a=o;break}}if(!(a instanceof Ae)){let o=en(t,e.readProp);return o==null?void 0:Pe(o)}let s=await this.renderMarkdownLinks(a);return e.format==="html"?Xe(s):s}case"build-ast-node":{let t={kind:e.astClass.name};for(let a of e.set){let s=await this.evaluate(a.value,n);if(s==null||Array.isArray(s)&&s.length===0)continue;let o=a.field.name;Mt.has(o)&&(Array.isArray(s)&&s.every(i=>Yn(i))?s=s.map(i=>Xn(i)).join(""):Yn(s)&&(s=Xn(s))),t[o]=s}return t}case"call-fragment":{let t=this.fragments.get(e.fragmentKey);if(!t)throw new Ke(`ExpressionFragment ${e.fragmentKey} not found in registry`);return this.evaluate(t,n)}case"join":return(await this.evaluateList(e.source,n)).map(a=>a==null?"":Pe(a)).join(e.separator);case"count":return(await this.evaluateList(e.source,n)).length;case"sum":{let t=await this.evaluateList(e.source,n),a=0;for(let s of t)a+=fe(s,"Sum");return a}case"min":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Ke("Min on an empty list is undefined; guard with IsSet");let a=fe(t[0],"Min");for(let s=1;s<t.length;s++){let o=fe(t[s],"Min");o<a&&(a=o)}return a}case"max":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Ke("Max on an empty list is undefined; guard with IsSet");let a=fe(t[0],"Max");for(let s=1;s<t.length;s++){let o=fe(t[s],"Max");o>a&&(a=o)}return a}case"average":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Ke("Average on an empty list is undefined; guard with IsSet");let a=0;for(let s of t)a+=fe(s,"Average");return a/t.length}case"for-each":{let t=await this.evaluateList(e.source,n),a=[];for(let s of t){let o=new Map(n);o.set(e.loopVar,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 K)return a}return}case"statement-value":{let t=await this.evaluate(e.source,n);return hn(t)?Pt(t):void 0}case"date-format":{let t=await this.evaluate(e.source,n),a=t==null?"":Pe(t);return a?Nt(a,e.format):""}case"add":{let t=fe(await this.evaluate(e.left,n),"Add"),a=fe(await this.evaluate(e.right,n),"Add");return t+a}case"subtract":{let t=fe(await this.evaluate(e.left,n),"Subtract"),a=fe(await this.evaluate(e.right,n),"Subtract");return t-a}case"multiply":{let t=fe(await this.evaluate(e.left,n),"Multiply"),a=fe(await this.evaluate(e.right,n),"Multiply");return t*a}case"divide":{let t=fe(await this.evaluate(e.left,n),"Divide"),a=fe(await this.evaluate(e.right,n),"Divide");if(a===0)throw new Ke("Divide by zero; guard with When");return t/a}case"reverse":{if(e.source.kind==="reverse")return this.evaluate(e.source.source,n);let t=await this.evaluateReverseIterator(e.source,n);return t!==void 0?t:[...await this.evaluateList(e.source,n)].reverse()}case"windowed-map":{let t=await this.evaluateList(e.source,n);if(t.length<e.windowSize)return[];let a=[];for(let s=0;s+e.windowSize<=t.length;s++){let o=t.slice(s,s+e.windowSize),i=new Map(n);i.set(e.windowVar,o);let c=await this.evaluate(e.windowBody,i);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}case"pairwise-map":{let t=await this.evaluateList(e.source,n);if(t.length<2)return[];let a=[];for(let s=0;s+1<t.length;s++){let o=new Map(n);o.set(e.firstVar,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=fe(await this.evaluate(e.value,n),"Abs");return Math.abs(t)}case"negate":return-fe(await this.evaluate(e.value,n),"Negate");case"is-reference":{let t=await this.evaluate(e.check,n);return t instanceof K||t instanceof q}case"is-embedded":return await this.evaluate(e.check,n)instanceof D;case"is-list":{let t=await this.evaluate(e.check,n);return Array.isArray(t)}case"is-string":return typeof await this.evaluate(e.check,n)=="string";case"is-number":return typeof await this.evaluate(e.check,n)=="number";case"is-boolean":return typeof await this.evaluate(e.check,n)=="boolean";case"statement-object":{let t=await this.evaluate(e.source,n);if(!hn(t))return;let a=t;return a instanceof W||a instanceof ue||a instanceof ae||a instanceof C||a instanceof z||a instanceof V?a.object:void 0}case"let":{let t=await this.evaluate(e.bindValue,n),a=new Map(n);return a.set(e.bindName,t),this.evaluate(e.body,a)}case"get-statement-by-name":{let t=await this.evaluate(e.inSubject,n),a=await this.evaluate(e.byName,n);if(!(t instanceof Oe)||typeof a!="string")return;for(let s of t.statement)if(s.predicate?.subject?.name===a)return s;return}default:{let t=e;throw new Ke("Unknown expression kind")}}}async renderMarkdownLinks(e){let n=e.object,t="",a=0;for(let s of e.links){if(t+=n.slice(a,s.startOffset),s.target){let o=s.target.subject,i=s.displayText??await this.resolveLabel(o)??o.name;t+=`[${i}](${xn(o)})`}else t+=s.displayText??s.reference;a=s.endOffset}return t+=n.slice(a),t}async resolveLabel(e){let n=await this.resolver.resolveSubject(e,this.catalog);if(!n)return;let t=en(n,Ct);return typeof t=="string"?t:void 0}async evaluateList(e,n){let t=await this.evaluate(e,n);return t==null?[]:Array.isArray(t)?t:[t]}async evaluateReverseIterator(e,n){if(e.kind==="pairwise-map"){let t=await this.evaluateList(e.source,n);if(t.length<2)return[];let a=[];for(let s=t.length-1;s>=1;s--){let o=new Map(n);o.set(e.firstVar,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 en(r,e){if(r instanceof Oe)return Vt(r,e);if(At(r))return de(e,u.key)?r.key:de(e,u.members)?r.members:void 0}function Vt(r,e){for(let n of r.statement){let t=bn(n);if(!(!t||!de(t,e))&&(n instanceof W||n instanceof ue||n instanceof ae||n instanceof C||n instanceof z||n instanceof V))return n.object}}function Tt(r,e){let n=[];for(let t of r.statement){let a=bn(t);if(!(!a||!de(a,e))){if(t instanceof C)n.push(t.object.subject);else if(t instanceof V)for(let s of t.object)s instanceof K&&n.push(s.subject)}}return n}function bn(r){return r.predicate?.subject}function Pe(r){if(r==null)return"";if(typeof r=="string")return r;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Be(r))return r.value;if(r instanceof Oe)return r.name??"";if(r instanceof K)return r.subject.name;if(De(r))return r.name;let e=r.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function ye(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)&&!(r instanceof Oe)&&!(r instanceof K)&&!(r instanceof D)&&"value"in r?r.value:r}function Wn(r){return r==null?!1:typeof r=="string"||Array.isArray(r)?r.length>0:typeof r=="boolean"?r===!0:!0}function De(r){return typeof r=="object"&&r!==null&&typeof r.publisher=="string"&&typeof r.package_=="string"&&typeof r.name=="string"}function At(r){return typeof r=="object"&&r!==null&&r.kind==="Partition"&&Array.isArray(r.members)}function fe(r,e){if(typeof r=="number"&&Number.isFinite(r))return r;throw new Ke(`${e} requires numeric elements; got ${xt(r)}`)}function kn(r){if(r instanceof q){let e=r.namespace??"",n=e.indexOf("/"),t=e.indexOf("@",n+1);return n<0||t<0?void 0:{publisher:e.substring(0,n),package_:e.substring(n+1,t),version:e.substring(t+1),name:r.name??""}}if(r instanceof K){let e=r.subject,n=e.version;return{publisher:e.publisher,package_:e.package_,version:n&&typeof n.major=="number"?`${n.major}.${n.minor}.${n.patch}`:"",name:e.name}}if(De(r))return{publisher:r.publisher,package_:r.package_,version:"",name:r.name}}var Mt=new Set(["stringValue","text","rawContent","key","propertyKey","linkLabel"]);function Yn(r){return typeof r=="string"||typeof r=="number"||typeof r=="boolean"||Be(r)}function Xn(r){return Be(r)?r.value:String(r)}function xt(r){return r===void 0?"undefined":r===null?"null":Array.isArray(r)?`array(${r.length})`:typeof r}function Nt(r,e){let n=new Date(r);if(isNaN(n.getTime()))return"";let t=n.getUTCFullYear(),a=["January","February","March","April","May","June","July","August","September","October","November","December"][n.getUTCMonth()],s=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][n.getUTCMonth()],o=n.getUTCDate(),i=(c,l=2)=>String(c).padStart(l,"0");switch(e){case"iso-date":return`${t}-${i(n.getUTCMonth()+1)}-${i(o)}`;case"iso-datetime":return`${t}-${i(n.getUTCMonth()+1)}-${i(o)}T${i(n.getUTCHours())}:${i(n.getUTCMinutes())}:${i(n.getUTCSeconds())}Z`;case"short-date":return`${s} ${o}`;case"long-date":return`${a} ${o}, ${t}`;case"year":return String(t);case"month-year":return`${a} ${t}`}}function Jn(r,e){if(r==null||e===void 0||e===null)return!1;if(r===e)return!0;let n=typeof r=="object"&&"value"in r?r.value:void 0,t=typeof e=="object"&&"value"in e?e.value:void 0,a=n??r,s=t??e,o=Zn(r),i=Zn(e);return o&&i?o.publisher===i.publisher&&o.package_===i.package_&&o.name===i.name:typeof a=="string"&&typeof s=="string"||typeof a=="number"&&typeof s=="number"||typeof a=="boolean"&&typeof s=="boolean"?a===s:!1}function Zn(r){if(r instanceof K){let e=r.subject;return{publisher:e.publisher,package_:e.package_,name:e.name}}if(r instanceof q){let e=r.namespace??"",n=e.indexOf("/"),t=e.indexOf("@",n+1);if(n<0)return;let a=e.substring(0,n),s=t>=0?e.substring(n+1,t):e.substring(n+1);return{publisher:a,package_:s,name:r.name??""}}if(De(r))return{publisher:r.publisher,package_:r.package_,name:r.name}}function hn(r){return r instanceof W||r instanceof ue||r instanceof ae||r instanceof C||r instanceof z||r instanceof V}function Pt(r){return r instanceof W||r instanceof ue||r instanceof ae?String(r.object??""):r instanceof C?r.object?.subject?.name??"":r instanceof z?"[embedded]":r instanceof V?(r.object??[]).map(n=>{if(n instanceof K)return n.subject.name;let t=n.name;if(t&&t.length>0)return t;let a=n.value;return typeof a=="string"||typeof a=="number"||typeof a=="boolean"?String(a):"[embedded]"}).join(", "):""}function Qn(r){if(r===void 0)return"\0undef";if(r===null)return"\0null";if(typeof r=="string")return`s:${r}`;if(typeof r=="number")return`n:${r}`;if(typeof r=="boolean")return`b:${r}`;if(r instanceof K){let e=r.subject;return`r:${e.publisher}/${e.package_}/${e.name}`}if(r instanceof Oe){let e=r.name??"";return`k:${r.namespace??""}/${e}`}return De(r)?`u:${r.publisher}/${r.package_}/${r.name}`:`o:${JSON.stringify(r)}`}var Y=class extends Error{constructor(n,t){super(`${n} (at ${t})`);this.path=t}path};function ds(r,e){let n=r.name,t=Zt(e),a={catalog:e,depth:0};if(j(r,u.InstanceTransformation))return Dt(r,n,a,t);if(j(r,u.SetTransformation))return Bt(r,n,a,t);throw new Y("Subject is not a recognized v3 transformation type \u2014 expected InstanceTransformation or SetTransformation",n)}function Dt(r,e,n,t){return{kind:"instance",name:r.name,inputPattern:st(r,e),rule:tn(r,u.rule,`${e}.rule`,n),artifactName:tn(r,u.artifactName,`${e}.artifactName`,n),outputs:ot(r,`${e}.outputs`),overrides:it(r,`${e}.formatOverrides`,n),fragments:t}}function Bt(r,e,n,t){let a=Ue(r,u.partitionBy);return{kind:"set",name:r.name,inputPattern:st(r,e),rule:tn(r,u.rule,`${e}.rule`,n),artifactName:tn(r,u.artifactName,`${e}.artifactName`,n),outputs:ot(r,`${e}.outputs`),overrides:it(r,`${e}.formatOverrides`,n),partitionBy:a,fragments:t}}function st(r,e){let n=Je(r,u.inputPattern);if(!n)throw new Y("inputPattern is required",e);return Ht(n,`${e}.inputPattern`)}function Ht(r,e){let n=Ue(r,u.matchesClass);if(!n)throw new Y("matchesClass is required",e);let t=[];for(let o of ve(r,u.requires))if(o instanceof C)t.push(yn(o.object.subject));else if(o instanceof V)for(let i of o.object)i instanceof K&&t.push(yn(i.subject));let a=[],s=0;for(let o of ve(r,u.sortBy))if(o instanceof V)for(let i of o.object)i instanceof D&&a.push(et(i,`${e}.sortBy[${s++}]`));else o instanceof z&&a.push(et(o.object,`${e}.sortBy[${s++}]`));return{matchesClass:n,requires:t,sortBy:a}}function et(r,e){let n=Ue(r,u.byProperty);if(!n)throw new Y("SortKey.byProperty is required",e);let t=Ue(r,u.order);if(!t)throw new Y("SortKey.order is required",e);if(de(t,u.ascending))return{byProperty:n,order:"ascending"};if(de(t,u.descending))return{byProperty:n,order:"descending"};throw new Y(`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 Y("expression is required",n);return Fe(a,n,t)}function Fe(r,e,n){if(j(r,u.StringLiteral))return{kind:"string-literal",value:ke(r,u.stringLiteral,e)};if(j(r,u.IntegerLiteral))return{kind:"integer-literal",value:rt(r,u.integerLiteral,e)};if(j(r,u.DecimalLiteral))return{kind:"decimal-literal",value:rt(r,u.decimalLiteral,e)};if(j(r,u.BooleanLiteral))return{kind:"boolean-literal",value:na(r,u.booleanLiteral,e)};if(j(r,u.VarRef))return{kind:"var-ref",varName:ke(r,u.varName,e)};if(j(r,u.PropertyRead))return{kind:"property-read",source:$(r,u.readSource,`${e}.readSource`,n),readProp:Ie(r,u.readProp,e,"readProp")};if(j(r,u.Traverse))return{kind:"traverse",source:$(r,u.traverseSource,`${e}.traverseSource`,n),through:Ie(r,u.through,e,"through"),step:$(r,u.step,`${e}.step`,n)};if(j(r,u.BuildAstNode))return{kind:"build-ast-node",astClass:Ie(r,u.astClass,e,"astClass"),set:Gt(r,`${e}.set`,n)};if(j(r,u.When))return{kind:"when",condition:$(r,u.condition,`${e}.condition`,n),thenBuild:$(r,u.thenBuild,`${e}.thenBuild`,n),elseBuild:zt(r,u.elseBuild,`${e}.elseBuild`,n)};if(j(r,u.Concat))return{kind:"concat",parts:vn(r,u.parts,`${e}.parts`,n)};if(j(r,u.Fallback))return{kind:"fallback",primary:$(r,u.primary,`${e}.primary`,n),alternate:$(r,u.alternate,`${e}.alternate`,n)};if(j(r,u.UriName))return{kind:"uri-name",source:$(r,u.uriNameOf,`${e}.uriNameOf`,n)};if(j(r,u.UriPublisher))return{kind:"uri-publisher",source:$(r,u.uriPublisherOf,`${e}.uriPublisherOf`,n)};if(j(r,u.UriPackage))return{kind:"uri-package",source:$(r,u.uriPackageOf,`${e}.uriPackageOf`,n)};if(j(r,u.UriVersion))return{kind:"uri-version",source:$(r,u.uriVersionOf,`${e}.uriVersionOf`,n)};if(j(r,u.SubjectUri))return{kind:"subject-uri",source:$(r,u.subjectOf,`${e}.subjectOf`,n)};if(j(r,u.UriLiteral))return{kind:"uri-literal",refTo:Ie(r,u.refTo,e,"refTo")};if(j(r,u.DisplayLabel))return{kind:"display-label",labelTarget:Ie(r,u.labelTarget,e,"labelTarget"),labelSource:Ie(r,u.labelSource,e,"labelSource")};if(j(r,u.ResolveRef))return{kind:"resolve-ref",source:$(r,u.resolveSource,`${e}.resolveSource`,n)};if(j(r,u.Normalize))return{kind:"normalize",source:$(r,u.normSource,`${e}.normSource`,n),normKind:qt(r,e)};if(j(r,u.UnescapedString))return{kind:"unescaped-string",source:$(r,u.unescapedSource,`${e}.unescapedSource`,n)};if(j(r,u.RenderMarkdown))return{kind:"render-markdown",source:$(r,u.renderSource,`${e}.renderSource`,n),readProp:Ie(r,u.renderProp,e,"renderProp"),format:Wt(r,e)};if(j(r,u.IsSet))return{kind:"is-set",check:$(r,u.checkExpr,`${e}.checkExpr`,n)};if(j(r,u.CallFragment))return Xt(r,e,n);if(j(r,u.Join))return{kind:"join",source:$(r,u.source,`${e}.source`,n),separator:ke(r,u.separator,e)};if(j(r,u.Count))return{kind:"count",source:$(r,u.source,`${e}.source`,n)};if(j(r,u.Sum))return{kind:"sum",source:$(r,u.source,`${e}.source`,n)};if(j(r,u.Min))return{kind:"min",source:$(r,u.source,`${e}.source`,n)};if(j(r,u.Max))return{kind:"max",source:$(r,u.source,`${e}.source`,n)};if(j(r,u.Average))return{kind:"average",source:$(r,u.source,`${e}.source`,n)};if(j(r,u.ForEach))return{kind:"for-each",source:$(r,u.source,`${e}.source`,n),loopVar:ke(r,u.loopVar,e),emit:$(r,u.emit,`${e}.emit`,n)};if(j(r,u.ListMap))return{kind:"list-map",source:$(r,u.source,`${e}.source`,n),loopVar:ke(r,u.loopVar,e),mapBody:$(r,u.mapBody,`${e}.mapBody`,n)};if(j(r,u.Filter))return{kind:"filter",source:$(r,u.source,`${e}.source`,n),loopVar:ke(r,u.loopVar,e),predicate:$(r,u.predicate,`${e}.predicate`,n)};if(j(r,u.PartitionBy))return{kind:"partition-by",source:$(r,u.source,`${e}.source`,n),loopVar:ke(r,u.loopVar,e),partitionKey:$(r,u.partitionKey,`${e}.partitionKey`,n)};if(j(r,u.DistinctBy))return{kind:"distinct-by",source:$(r,u.source,`${e}.source`,n),loopVar:ke(r,u.loopVar,e),distinctKey:$(r,u.distinctKey,`${e}.distinctKey`,n)};if(j(r,u.AllStatements))return{kind:"all-statements",source:$(r,u.statementsOf,`${e}.statementsOf`,n)};if(j(r,u.StatementPredicate))return{kind:"statement-predicate",source:$(r,u.predicateOf,`${e}.predicateOf`,n)};if(j(r,u.StatementValue))return{kind:"statement-value",source:$(r,u.valueOf,`${e}.valueOf`,n)};if(j(r,u.DateFormat))return{kind:"date-format",source:$(r,u.dateSource,`${e}.dateSource`,n),format:Yt(r,e)};if(j(r,u.Add))return{kind:"add",left:$(r,u.arithLeft,`${e}.arithLeft`,n),right:$(r,u.arithRight,`${e}.arithRight`,n)};if(j(r,u.Subtract))return{kind:"subtract",left:$(r,u.arithLeft,`${e}.arithLeft`,n),right:$(r,u.arithRight,`${e}.arithRight`,n)};if(j(r,u.Multiply))return{kind:"multiply",left:$(r,u.arithLeft,`${e}.arithLeft`,n),right:$(r,u.arithRight,`${e}.arithRight`,n)};if(j(r,u.Divide))return{kind:"divide",left:$(r,u.arithLeft,`${e}.arithLeft`,n),right:$(r,u.arithRight,`${e}.arithRight`,n)};if(j(r,u.Reverse))return{kind:"reverse",source:$(r,u.source,`${e}.source`,n)};if(j(r,u.WindowedMap)){let t=ct(r,u.windowSize);if(t===void 0||!Number.isInteger(t)||t<1)throw new Y("windowSize must be a positive integer",`${e}.windowSize`);return{kind:"windowed-map",source:$(r,u.source,`${e}.source`,n),windowSize:t,windowVar:ke(r,u.windowVar,e),windowBody:$(r,u.windowBody,`${e}.windowBody`,n)}}if(j(r,u.PairwiseMap))return{kind:"pairwise-map",source:$(r,u.source,`${e}.source`,n),firstVar:ke(r,u.firstVar,e),secondVar:ke(r,u.secondVar,e),pairBody:$(r,u.pairBody,`${e}.pairBody`,n)};if(j(r,u.Scan))return{kind:"scan",source:$(r,u.source,`${e}.source`,n),initialState:$(r,u.initialState,`${e}.initialState`,n),stateVar:ke(r,u.stateVar,e),elementVar:ke(r,u.elementVar,e),accumulate:$(r,u.accumulate,`${e}.accumulate`,n)};if(j(r,u.ListItemAt))return{kind:"list-item-at",source:$(r,u.source,`${e}.source`,n),itemIndex:$(r,u.itemIndex,`${e}.itemIndex`,n)};if(j(r,u.Equals))return{kind:"equals",left:$(r,u.compareLeft,`${e}.compareLeft`,n),right:$(r,u.compareRight,`${e}.compareRight`,n)};if(j(r,u.GreaterThan))return{kind:"greater-than",left:$(r,u.compareLeft,`${e}.compareLeft`,n),right:$(r,u.compareRight,`${e}.compareRight`,n)};if(j(r,u.LessThan))return{kind:"less-than",left:$(r,u.compareLeft,`${e}.compareLeft`,n),right:$(r,u.compareRight,`${e}.compareRight`,n)};if(j(r,u.GreaterThanOrEqual))return{kind:"greater-than-or-equal",left:$(r,u.compareLeft,`${e}.compareLeft`,n),right:$(r,u.compareRight,`${e}.compareRight`,n)};if(j(r,u.LessThanOrEqual))return{kind:"less-than-or-equal",left:$(r,u.compareLeft,`${e}.compareLeft`,n),right:$(r,u.compareRight,`${e}.compareRight`,n)};if(j(r,u.Not))return{kind:"not",operand:$(r,u.operand,`${e}.operand`,n)};if(j(r,u.And))return{kind:"and",operands:vn(r,u.operands,`${e}.operands`,n)};if(j(r,u.Or))return{kind:"or",operands:vn(r,u.operands,`${e}.operands`,n)};if(j(r,u.Contains))return{kind:"contains",haystack:$(r,u.haystack,`${e}.haystack`,n),needle:$(r,u.needle,`${e}.needle`,n)};if(j(r,u.Abs))return{kind:"abs",value:$(r,u.value,`${e}.value`,n)};if(j(r,u.Negate))return{kind:"negate",value:$(r,u.value,`${e}.value`,n)};if(j(r,u.IsReference))return{kind:"is-reference",check:$(r,u.kindCheck,`${e}.kindCheck`,n)};if(j(r,u.IsEmbedded))return{kind:"is-embedded",check:$(r,u.kindCheck,`${e}.kindCheck`,n)};if(j(r,u.IsList))return{kind:"is-list",check:$(r,u.kindCheck,`${e}.kindCheck`,n)};if(j(r,u.IsString))return{kind:"is-string",check:$(r,u.kindCheck,`${e}.kindCheck`,n)};if(j(r,u.IsNumber))return{kind:"is-number",check:$(r,u.kindCheck,`${e}.kindCheck`,n)};if(j(r,u.IsBoolean))return{kind:"is-boolean",check:$(r,u.kindCheck,`${e}.kindCheck`,n)};if(j(r,u.StatementObject))return{kind:"statement-object",source:$(r,u.statementSource,`${e}.statementSource`,n)};if(j(r,u.Let))return{kind:"let",bindName:ke(r,u.letName,e),bindValue:$(r,u.letValue,`${e}.letValue`,n),body:$(r,u.letBody,`${e}.letBody`,n)};if(j(r,u.GetStatementByName))return{kind:"get-statement-by-name",inSubject:$(r,u.inSubject,`${e}.inSubject`,n),byName:$(r,u.byName,`${e}.byName`,n)};throw new Y("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 Y("child expression is required",n);return Fe(a,n,t)}function zt(r,e,n,t){let a=Je(r,e);if(a)return Fe(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 D&&a.push(Fe(i,`${n}[${s++}]`,t));else o instanceof z&&a.push(Fe(o.object,`${n}[${s++}]`,t));return a}function Gt(r,e,n){let t=[],a=0;for(let s of ve(r,u.set))if(s instanceof V)for(let o of s.object)o instanceof D&&t.push(nt(o,`${e}[${a++}]`,n));else s instanceof z&&t.push(nt(s.object,`${e}[${a++}]`,n));return t}function nt(r,e,n){return{field:Ie(r,u.field,e,"field"),value:$(r,u.bindValue,`${e}.bindValue`,n)}}function qt(r,e){let n=Ue(r,u.normKind);if(!n)throw new Y("normKind is required",e);if(de(n,u.NORM_TRIM_END))return"trim-end";if(de(n,u.NORM_TO_UPPER))return"to-upper";if(de(n,u.NORM_TO_LOWER))return"to-lower";if(de(n,u.NORM_FIRST_CHAR))return"first-char";throw new Y(`Unknown NormalizeKind: ${n.publisher}/${n.package_}/${n.name}`,e)}function Wt(r,e){let n=Ue(r,u.renderFormat);if(!n)throw new Y("renderFormat is required",e);if(de(n,u.RENDER_HTML))return"html";if(de(n,u.RENDER_MARKDOWN))return"markdown";throw new Y(`Unknown RenderFormat: ${n.publisher}/${n.package_}/${n.name}`,e)}var tt=new Set(["iso-date","iso-datetime","short-date","long-date","year","month-year"]);function Yt(r,e){let n=He(r,u.dateFormat);if(!n)throw new Y("dateFormat is required",e);if(!tt.has(n))throw new Y(`Unknown dateFormat "${n}"; supported: ${[...tt].join(", ")}`,e);return n}function Xt(r,e,n){let t=Ue(r,u.fragmentRef);if(!t)throw new Y("fragmentRef is required",e);if(!Qt(n.catalog,t))throw new Y(`ExpressionFragment not found: ${t.publisher}/${t.package_}/${t.name}`,e);return{kind:"call-fragment",fragmentKey:Jt(t)}}function Jt(r){return`${r.publisher}/${r.package_}/${r.name}`}function Zt(r){let e=new Map,n=[];for(let t of r){if(!(t instanceof q)||!j(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=Fe(t.bodyEmb,`fragment(${t.pubPkgName})`,{catalog:r,depth:0});e.set(t.key,a)}return e}function Qt(r,e){for(let n of r)if(!(!(n instanceof q)||n.name!==e.name||!(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))&&j(n,u.ExpressionFragment))return n}function ot(r,e){let n=new Set;for(let t of ve(r,u.outputs))if(t instanceof C)n.add(t.object.subject.name);else if(t instanceof V)for(let a of t.object)a instanceof K&&n.add(a.subject.name);if(n.size===0)throw new Y("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 D){let[i,c]=at(o,`${e}[${a++}]`);t.set(i,c)}}else if(s instanceof z){let[o,i]=at(s.object,`${e}[${a++}]`);t.set(o,i)}return t}function at(r,e){let n=Ue(r,u.formatTarget);if(!n)throw new Y("formatTarget is required",e);let t=[];for(let i of ve(r,u.metadataKeys))if(i instanceof W)t.push(i.object);else if(i instanceof 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 D){let l=He(c,u.fromKey),d=He(c,u.toKey);l&&d&&a.set(l,d)}}else if(i instanceof z){let c=i.object,l=He(c,u.fromKey),d=He(c,u.toKey);l&&d&&a.set(l,d)}let s=$n(r,u.trailingNewline),o=$n(r,u.omitWrapper);return[n.name,{metadataKeys:t.length>0?t:void 0,metadataRenames:a,trailingNewline:s,omitWrapper:o}]}function ea(r){return r.predicate?.subject}function ve(r,e){let n=[];for(let t of r.statement){let a=ea(t);a&&de(a,e)&&n.push(t)}return n}function Je(r,e){for(let n of ve(r,e))if(n instanceof z)return n.object}function Ue(r,e){for(let n of ve(r,e))if(n instanceof C)return yn(n.object.subject)}function He(r,e){for(let n of ve(r,e))if(n instanceof W)return n.object}function ct(r,e){for(let n of ve(r,e))if(n instanceof ue)return n.object}function $n(r,e){for(let n of ve(r,e))if(n instanceof ae)return n.object}function ke(r,e,n){let t=He(r,e);if(t===void 0)throw new Y(`${e.name} (string) is required`,n);return t}function rt(r,e,n){let t=ct(r,e);if(t===void 0)throw new Y(`${e.name} (number) is required`,n);return t}function na(r,e,n){let t=$n(r,e);if(t===void 0)throw new Y(`${e.name} (boolean) is required`,n);return t}function Ie(r,e,n,t){let a=Ue(r,e);if(!a)throw new Y(`${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=Me(n,e);if(t)return t;let a=e.version,s=a&&typeof a.major=="number"?`@${a.major}.${a.minor}.${a.patch}`:"",o=`${e.publisher}/${e.package_}${s}`,i=this.cache.get(o);if(!i){let l=await this.repository.getDocumentsByNamespaceAsync(e.publisher,e.package_);if(l.length===0)return;let d=a&&typeof a.major=="number"?l.find(f=>{let k=f.metadata?.namespace_?.version;return k&&k.major===a.major&&k.minor===a.minor&&k.patch===a.patch})??l[0]:l[0],p=new Pn(d,this.repository);i=await this.objectParser.parseKanonaks(p),this.cache.set(o,i)}let c=Me(i,e);if(c)return c;for(let l of i)if(l instanceof q&&l.name===e.name)return l}};var 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?Ne(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}">${Ne(i[0])}</span>`,a+=i[0].length,s=!0;break}}s||(t+=Ne(e[a]),a++)}return t}};var un={publisher:"kanonak.org",package_:"derivation",name:"look"},dn={publisher:"kanonak.org",package_:"derivation",name:"tokens"},Re={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},jn={publisher:"kanonak.org",package_:"core-rdf",name:"label"},lt={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},ta={publisher:"kanonak.org",package_:"core-rdf",name:"range"},aa={publisher:"kanonak.org",package_:"core-rdf",name:"Class"},ra={publisher:"kanonak.org",package_:"core-owl",name:"Class"},sa={publisher:"kanonak.org",package_:"look",name:"Hero"},oa={publisher:"kanonak.org",package_:"look",name:"PropertyList"},ia={publisher:"kanonak.org",package_:"look",name:"PropertyTable"},ca={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},la={publisher:"kanonak.org",package_:"look",name:"ChipRow"},ua={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},da={publisher:"kanonak.org",package_:"look",name:"ReferencedBy"},fa={publisher:"kanonak.org",package_:"look",name:"Instances"},ut={publisher:"kanonak.org",package_:"look",name:"Markdown"},pa={publisher:"kanonak.org",package_:"look",name:"NavGroup"},ga={publisher:"kanonak.org",package_:"look",name:"nav"},Sn={publisher:"kanonak.org",package_:"look",name:"NavLink"},ma={publisher:"kanonak.org",package_:"look",name:"footer"},ka={publisher:"kanonak.org",package_:"look",name:"text"},ha={publisher:"kanonak.org",package_:"look",name:"links"},dt={publisher:"kanonak.org",package_:"look",name:"target"},ba={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},va={publisher:"kanonak.org",package_:"look",name:"Timeline"},$a={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},ya={publisher:"kanonak.org",package_:"look",name:"Figure"},ja={publisher:"kanonak.org",package_:"look",name:"Diagram"},Sa={publisher:"kanonak.org",package_:"look",name:"facets"},wa={publisher:"kanonak.org",package_:"look",name:"relation"},_a={publisher:"kanonak.org",package_:"look",name:"encode"},Ka={publisher:"kanonak.org",package_:"look",name:"cluster"},Ra={publisher:"kanonak.org",package_:"look",name:"connector"},Ea={publisher:"kanonak.org",package_:"look",name:"channels"},La={publisher:"kanonak.org",package_:"look",name:"mapPath"},Oa={publisher:"kanonak.org",package_:"look",name:"to"},Ua={publisher:"kanonak.org",package_:"look",name:"mark"},Ia={publisher:"kanonak.org",package_:"look",name:"expand"},Fa={publisher:"kanonak.org",package_:"look",name:"edges"},Ca={publisher:"kanonak.org",package_:"look",name:"nodeTier"},Va={publisher:"kanonak.org",package_:"look",name:"diagramTier"},Ta={publisher:"kanonak.org",package_:"look",name:"nodeNote"},Aa={publisher:"kanonak.org",package_:"look",name:"edgeLabel"},Ma={publisher:"kanonak.org",package_:"look",name:"labelEdges"},xa={publisher:"kanonak.org",package_:"look",name:"edgeValue"},Na={publisher:"kanonak.org",package_:"look",name:"figureTitle"},Pa={publisher:"kanonak.org",package_:"look",name:"titlePosition"},Da=`(function(){
|
|
20
|
+
if(window.__kanDiagramZoom)return;window.__kanDiagramZoom=1;
|
|
21
|
+
var TIERS=['chip','icon','card','full'];
|
|
22
|
+
var css='.kan-dgm-tier[hidden]{display:none}.kan-dgm-tiers{position:relative}'
|
|
23
|
+
+'.kan-dgm-tiers>.kan-dgm-btn{opacity:0;transition:opacity .12s}.kan-dgm-tiers:hover>.kan-dgm-btn,.kan-dgm-btn:focus{opacity:1}'
|
|
24
|
+
+'#kan-dgm-modal{position:fixed;inset:0;z-index:9999;display:none;background:rgba(0,0,0,.85);cursor:grab}'
|
|
25
|
+
+'#kan-dgm-stage{position:absolute;top:50%;left:50%}'
|
|
26
|
+
+'#kan-dgm-bar{position:fixed;top:14px;left:50%;transform:translateX(-50%);display:flex;gap:9px;align-items:center;font:12px sans-serif;color:#cbd5e1;background:rgba(12,18,32,.92);border:1px solid #1e293b;border-radius:999px;padding:7px 14px;user-select:none}'
|
|
27
|
+
+'#kan-dgm-bar .pip{width:9px;height:9px;border-radius:50%;background:#334155;cursor:pointer}'
|
|
28
|
+
+'#kan-dgm-bar .pip.on{background:#38bdf8}'
|
|
29
|
+
+'#kan-dgm-lbl{min-width:32px;text-transform:capitalize}';
|
|
30
|
+
var sty=document.createElement('style');sty.textContent=css;(document.head||document.documentElement).appendChild(sty);
|
|
31
|
+
var S={cont:null,mode:'snap',tier:1,z:1,x:0,y:0,drag:0,sx:0,sy:0,lock:0};
|
|
32
|
+
function el(id){return document.getElementById(id);}
|
|
33
|
+
function modal(){var m=el('kan-dgm-modal');if(m)return m;
|
|
34
|
+
m=document.createElement('div');m.id='kan-dgm-modal';
|
|
35
|
+
var st=document.createElement('div');st.id='kan-dgm-stage';m.appendChild(st);
|
|
36
|
+
var bar=document.createElement('div');bar.id='kan-dgm-bar';
|
|
37
|
+
var lbl=document.createElement('span');lbl.id='kan-dgm-lbl';bar.appendChild(lbl);
|
|
38
|
+
for(var i=0;i<4;i++){(function(i){var p=document.createElement('span');p.className='pip';p.title=TIERS[i];p.addEventListener('click',function(e){e.stopPropagation();setTier(i);});bar.appendChild(p);})(i);}
|
|
39
|
+
var h=document.createElement('span');h.textContent='scroll: zoom \\u00b7 drag: pan \\u00b7 esc';h.style.cssText='margin-left:6px;color:#64748b';bar.appendChild(h);
|
|
40
|
+
m.appendChild(bar);m.addEventListener('click',function(e){if(e.target===m)close();});document.body.appendChild(m);return m;}
|
|
41
|
+
function apply(){var st=el('kan-dgm-stage');if(st)st.style.transform='translate(calc(-50% + '+S.x+'px),calc(-50% + '+S.y+'px)) scale('+S.z+')';}
|
|
42
|
+
function updBar(){var b=el('kan-dgm-bar');if(!b)return;var geo=S.mode==='geo';var ps=b.querySelectorAll('.pip');for(var i=0;i<ps.length;i++){ps[i].style.display=geo?'none':'';ps[i].className='pip'+(i===S.tier?' on':'');}el('kan-dgm-lbl').textContent=geo?'zoom':TIERS[S.tier];}
|
|
43
|
+
function sizeVisible(){var c=S.cont;if(!c||S.mode==='geo')return;var svg=c.querySelector('.kan-dgm-tier:not([hidden]) svg');if(svg){var vb=(svg.getAttribute('viewBox')||'0 0 800 600').split(' ');var w=parseFloat(vb[2])||800;svg.style.width=Math.min(w,window.innerWidth*0.92)+'px';svg.style.height='auto';svg.style.display='block';}apply();}
|
|
44
|
+
function setTier(i){i=Math.max(0,Math.min(3,i));S.tier=i;var c=S.cont;if(!c)return;var ts=c.querySelectorAll('.kan-dgm-tier');for(var j=0;j<ts.length;j++){if(ts[j].getAttribute('data-tier')===TIERS[i])ts[j].removeAttribute('hidden');else ts[j].setAttribute('hidden','');}sizeVisible();updBar();}
|
|
45
|
+
function uniq(root){var seq=(window.__kanMk=(window.__kanMk||0)+1);var map={};var mk=root.querySelectorAll('marker[id]');for(var i=0;i<mk.length;i++){var o=mk[i].getAttribute('id');var n=o+'_z'+seq;map[o]=n;mk[i].setAttribute('id',n);}var all=root.querySelectorAll('[marker-end],[marker-start],[marker-mid]');for(var j=0;j<all.length;j++){(function(e){['marker-end','marker-start','marker-mid'].forEach(function(a){var v=e.getAttribute(a);if(!v)return;var mm=v.match(/url\\(#(.+?)\\)/);if(mm&&map[mm[1]])e.setAttribute(a,'url(#'+map[mm[1]]+')');});})(all[j]);}}
|
|
46
|
+
function open(tiersEl){modal();var st=el('kan-dgm-stage');var c=tiersEl.cloneNode(true);uniq(c);var bb=c.querySelector('.kan-dgm-btn');if(bb&&bb.parentNode)bb.parentNode.removeChild(bb);st.innerHTML='';st.appendChild(c);S.cont=c;S.x=0;S.y=0;S.z=1;
|
|
47
|
+
S.mode=c.getAttribute('data-geo')?'geo':'snap';
|
|
48
|
+
var vis=c.querySelector('.kan-dgm-tier:not([hidden])');var t=vis?vis.getAttribute('data-tier'):'icon';S.tier=Math.max(0,TIERS.indexOf(t));
|
|
49
|
+
el('kan-dgm-modal').style.display='block';
|
|
50
|
+
if(S.mode==='geo'){var bw=c.getBoundingClientRect().width||600;S.z=Math.min(1.8,(window.innerWidth*0.9)/bw);if(!(S.z>0))S.z=1;}else sizeVisible();
|
|
51
|
+
apply();updBar();}
|
|
52
|
+
function close(){var m=el('kan-dgm-modal');if(m){m.style.display='none';el('kan-dgm-stage').innerHTML='';S.cont=null;}}
|
|
53
|
+
document.addEventListener('wheel',function(e){var m=el('kan-dgm-modal');if(!m||m.style.display==='none')return;e.preventDefault();
|
|
54
|
+
if(S.mode==='geo'){S.z*=e.deltaY<0?1.15:1/1.15;S.z=Math.max(.2,Math.min(S.z,9));apply();return;}
|
|
55
|
+
var n=Date.now();if(n-S.lock<200)return;S.lock=n;setTier(S.tier+(e.deltaY<0?1:-1));},{passive:false});
|
|
56
|
+
document.addEventListener('mousedown',function(e){var m=el('kan-dgm-modal');if(!m||m.style.display==='none')return;S.drag=1;S.sx=e.clientX-S.x;S.sy=e.clientY-S.y;m.style.cursor='grabbing';});
|
|
57
|
+
document.addEventListener('mousemove',function(e){if(!S.drag)return;S.x=e.clientX-S.sx;S.y=e.clientY-S.sy;apply();});
|
|
58
|
+
document.addEventListener('mouseup',function(){S.drag=0;var m=el('kan-dgm-modal');if(m)m.style.cursor='grab';});
|
|
59
|
+
document.addEventListener('keydown',function(e){if(e.key==='Escape')close();});
|
|
60
|
+
function enhance(){var cs=document.querySelectorAll('.kan-dgm-tiers');for(var i=0;i<cs.length;i++){(function(c){if(c.__kz)return;c.__kz=1;
|
|
61
|
+
var b=document.createElement('button');b.type='button';b.className='kan-dgm-btn';b.textContent='\\u2922';b.setAttribute('aria-label','Open and zoom');
|
|
62
|
+
b.style.cssText='position:absolute;top:6px;right:6px;z-index:3;border:1px solid var(--kan-border,#333);background:var(--kan-bg-card,#111);color:var(--kan-text,#ccc);border-radius:6px;width:28px;height:28px;cursor:pointer;font-size:15px;line-height:1;padding:0';
|
|
63
|
+
b.addEventListener('click',function(ev){ev.preventDefault();ev.stopPropagation();open(c);});c.appendChild(b);})(cs[i]);}}
|
|
64
|
+
if(document.readyState!=='loading')enhance();else document.addEventListener('DOMContentLoaded',enhance);
|
|
65
|
+
})();`,Ze={chip:56,icon:120,card:240,full:420},Ba=["chip","icon","card","full"],Ha={56:"chip",120:"icon",240:"card",420:"full"},_e=11,za={publisher:"kanonak.org",package_:"look",name:"placement"},Ga={publisher:"kanonak.org",package_:"look",name:"width"},qa=4,Wa={publisher:"kanonak.org",package_:"look",name:"StatRow"},Ya={publisher:"kanonak.org",package_:"look",name:"Horizon"},Xa={publisher:"kanonak.org",package_:"look",name:"PackageContents"},wn={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},Ja={publisher:"kanonak.org",package_:"core-kanonak",name:"Publisher"},Za={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},Qa={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},er={publisher:"kanonak.org",package_:"look",name:"packages"},nr={publisher:"kanonak.org",package_:"code-grammars",name:"CodeGrammar"},tr={publisher:"kanonak.org",package_:"code-grammars",name:"language"},ar={publisher:"kanonak.org",package_:"code-grammars",name:"rule"},rr={publisher:"kanonak.org",package_:"code-grammars",name:"tokenClass"},sr={publisher:"kanonak.org",package_:"code-grammars",name:"pattern"},or={publisher:"kanonak.org",package_:"look",name:"Links"},ir={publisher:"kanonak.org",package_:"link",name:"url"},cr={publisher:"kanonak.org",package_:"link",name:"links"};var lr={publisher:"kanonak.org",package_:"look",name:"Distribution"},ur={publisher:"kanonak.org",package_:"look",name:"alphaPath"},dr={publisher:"kanonak.org",package_:"look",name:"betaPath"},_n={publisher:"kanonak.org",package_:"look",name:"SectionHeading"},fr={publisher:"kanonak.org",package_:"look",name:"SectionNav"},ft={publisher:"kanonak.org",package_:"look",name:"heading"},pr={publisher:"kanonak.org",package_:"look",name:"note"},gr={publisher:"kanonak.org",package_:"look",name:"VersionDelta"},mr={publisher:"kanonak.org",package_:"look",name:"TimePlot"},kr={publisher:"kanonak.org",package_:"look",name:"Details"},hr={publisher:"kanonak.org",package_:"look",name:"EmbeddedViews"},br={publisher:"kanonak.org",package_:"look",name:"skip"},vr={publisher:"kanonak.org",package_:"derivation",name:"derivations"},$r={publisher:"kanonak.org",package_:"look",name:"laneBy"},yr={publisher:"kanonak.org",package_:"look",name:"stats"},jr={publisher:"kanonak.org",package_:"look",name:"statPath"},Sr={publisher:"kanonak.org",package_:"look",name:"statLabel"},pt={publisher:"kanonak.org",package_:"look",name:"labelPath"},wr={publisher:"kanonak.org",package_:"look",name:"badgePath"},Kn={publisher:"kanonak.org",package_:"look",name:"orderBy"},gt={publisher:"kanonak.org",package_:"look",name:"track"},sn={publisher:"kanonak.org",package_:"look",name:"metricPath"},Rn={publisher:"kanonak.org",package_:"look",name:"hueBy"},mt={publisher:"kanonak.org",package_:"look",name:"lowerPath"},kt={publisher:"kanonak.org",package_:"look",name:"upperPath"},_r={publisher:"kanonak.org",package_:"look",name:"axisMin"},Kr={publisher:"kanonak.org",package_:"look",name:"axisMax"},Rr={publisher:"kanonak.org",package_:"look",name:"valueLabel"};var ht={publisher:"kanonak.org",package_:"look",name:"semanticSvg"},Er={publisher:"kanonak.org",package_:"look",name:"tierChip"},Lr={publisher:"kanonak.org",package_:"look",name:"tierIcon"},Or={publisher:"kanonak.org",package_:"look",name:"tierCard"},Ur={publisher:"kanonak.org",package_:"look",name:"tierFull"},Ir={publisher:"kanonak.org",package_:"core-rdf",name:"type"},bt=6,En={publisher:"kanonak.org",package_:"look",name:"bands"},Fr={publisher:"kanonak.org",package_:"look",name:"title"},Cr={publisher:"kanonak.org",package_:"look",name:"eyebrow"},Vr={publisher:"kanonak.org",package_:"look",name:"subtitle"},vt={publisher:"kanonak.org",package_:"look",name:"badges"},pe={publisher:"kanonak.org",package_:"look",name:"source"},Tr={publisher:"kanonak.org",package_:"look",name:"via"},Ar={publisher:"kanonak.org",package_:"look",name:"size"},Mr={publisher:"kanonak.org",package_:"look",name:"icon"},xr={publisher:"kanonak.org",package_:"look",name:"avatar"},Nr={publisher:"kanonak.org",package_:"look",name:"contents"},Pr={publisher:"kanonak.org",package_:"look",name:"transitive"},Dr={publisher:"kanonak.org",package_:"look",name:"chips"},$t={publisher:"kanonak.org",package_:"look",name:"entries"},Br={publisher:"kanonak.org",package_:"look",name:"urlForm"},Fn=class{constructor(e){this.catalog=e}catalog;linkMode="single-publisher";setLinkMode(e){return this.linkMode=e,this}get publisherFirst(){return this.linkMode==="open-world"}linkBase(e){return this.publisherFirst?`/${e}`:""}resourceHref(e,n,t="="){return Mn.formatResourceUrl(e,t,{contextPublisher:n,...this.publisherFirst?{publisherFirst:!0}:{}})}packageHref(e,n,t){return`${this.linkBase(e)}/${n}${t?`/${t}`:""}`}publisherHref(e){return`${this.linkBase(e)}/`}_codeHighlighter;findCascadedLook(e){let n=zr(e)?void 0:on(e);return n?{declaration:n,sourceClass:{publisher:Q(e),package_:(e.namespace||"").split("/")[1]?.split("@")[0]??"",name:e.name}}:this.lookFromTypeRefs(he(e))}lookFromTypeRefs(e){let n=new Set,t=[...e];for(;t.length>0;){let s=t.shift().subject,o=ne(s);if(n.has(o))continue;n.add(o);let i=je(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(ne(Re)))for(let a of je(this.catalog,Re)){let s=on(a);if(s)return{declaration:s,sourceClass:{...Re}}}}findCascadedTokens(e){let n=new Map;for(let[s,o]of Ln(e))n.has(s)||n.set(s,o);let t=new Set,a=he(e);for(;a.length>0;){let s=a.shift(),o=ne(s.subject);if(t.has(o))continue;t.add(o);let i=je(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(ne(Re))){let s=je(this.catalog,Re);for(let o of s)for(let[i,c]of Ln(o))n.has(i)||n.set(i,c)}return n}async renderSvg(e){let n=B(this.catalog,e).label,t=(n.trim().charAt(0)||"?").toUpperCase(),a=`${e.namespace??""}/${e.name}`,s=this.collectCascadedSvgTiers(e),o=new Map([["input",e],["label",n],["firstLetter",t],["uri",a],["resourceKey",e.name]]),i=await this.evaluateTier(s.tierChip,o),c=await this.evaluateTier(s.tierIcon,o),l=await this.evaluateTier(s.tierCard,o),d=await this.evaluateTier(s.tierFull,o),f=[...this.findCascadedTokens(e)].map(([k,h])=>`--kan-${k}: ${h};`).join(" ");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" style="${$e(f)}">
|
|
66
|
+
<style>
|
|
67
|
+
.tier-chip,.tier-icon,.tier-card{display:none}
|
|
68
|
+
.tier-full{display:block}
|
|
69
|
+
@media (max-width:400px){.tier-full{display:none}.tier-card{display:block}}
|
|
70
|
+
@media (max-width:160px){.tier-card{display:none}.tier-icon{display:block}}
|
|
71
|
+
@media (max-width:60px){.tier-icon{display:none}.tier-chip{display:block}}
|
|
72
|
+
</style>
|
|
73
|
+
<g class="tier-chip">${i}</g>
|
|
74
|
+
<g class="tier-icon">${c}</g>
|
|
75
|
+
<g class="tier-card">${l}</g>
|
|
76
|
+
<g class="tier-full">${d}</g>
|
|
77
|
+
</svg>`}resolverInstance;expressionResolver(){if(!this.resolverInstance){let e=new Vn,n=new Cn(e);this.resolverInstance=new an(n,e,new An(e))}return this.resolverInstance}async evaluateTier(e,n){if(!e)return"";let t;try{t=Fe(e,"semanticSvg-tier",{catalog:this.catalog,depth:0})}catch{return""}let a=new nn(this.expressionResolver(),this.catalog);if(t.kind==="concat"){let o=[];for(let i of t.parts){let c=await a.evaluate(i,n);o.push(jt(i.kind,c))}return o.join("")}let s=await a.evaluate(t,n);return jt(t.kind,s)}applyPlaceholders(e,n,t){return e.replace(/\{\{#([^}]+)\}\}([\s\S]*?)\{\{\/\1\}\}/g,(s,o,i)=>this.placeholderResolves(String(o).trim(),n,t)?i:"").replace(/\{\{([^}]+)\}\}/g,(s,o)=>{let i=o.trim();if(t[i]!==void 0)return $e(t[i]);let c=i.indexOf(":");if(c>0){let d=i.slice(0,c),p=i.slice(c+1).trim();if(d==="delta"||d==="deltaArrow"||d==="deltaColor"||d==="deltaDir"){let f=this.metricDelta(n,p);return d==="deltaColor"?f?f.dir==="up"?"#34d399":f.dir==="down"?"#f87171":"#9aa5b8":"#9aa5b8":d==="deltaDir"?f?f.dir:"new":f?d==="deltaArrow"?f.dir==="up"?"\u25B2":f.dir==="down"?"\u25BC":"\u2014":$e(`${f.delta>0?"+":""}${f.delta.toFixed(2)}`):""}if(d==="svg")return this.resolvePath(n,p)??""}let l=this.resolvePath(n,i);return l===void 0?`{{${i}}}`:$e(l)})}placeholderResolves(e,n,t){if(t[e]!==void 0)return t[e]!=="";let a=e.indexOf(":");if(a>0){let o=e.slice(0,a),i=e.slice(a+1).trim();if(o==="delta"||o==="deltaArrow")return this.metricDelta(n,i)!==void 0;if(o==="deltaColor"||o==="deltaDir")return!0;if(o==="svg"){let c=this.resolvePath(n,i);return c!==void 0&&c!==""}}let s=this.resolvePath(n,e);return s!==void 0&&s!==""}metricDelta(e,n){let t=k=>{let h=this.resolvePath(k,n),m=h===void 0?NaN:parseFloat(h);return Number.isFinite(m)?m:void 0},a=t(e);if(a===void 0)return;let s=k=>me((k.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},o=(k,h)=>k.major-h.major||k.minor-h.minor||k.patch-h.patch,i={publisher:Q(e),package_:(e.namespace||"").split("/")[1]?.split("@")[0]??"",name:e.name},c=s(e),l,d;for(let k of je(this.catalog,i)){let h=s(k);o(h,c)<0&&(!d||o(h,d)>0)&&(l=k,d=h)}if(!l)return;let p=t(l);if(p===void 0)return;let f=a-p;return{delta:f,dir:Math.abs(f)<.005?"flat":f>0?"up":"down"}}resolvePath(e,n){let t=n.split("/").map(a=>a.trim()).filter(a=>a.length>0);if(t.length!==0)return this.resolvePathSteps(e,t)}resolvePathSteps(e,n){let t=Gr(n[0]);if(n.length===1){let o=[];for(let i of Wr(e,t))for(let c of this.finalStatementTexts(i))c!==""&&o.push(c);return o.length>0?o.join(", "):void 0}let s=qr(e,t);if(s){if(s instanceof z)return this.resolvePathSteps(s.object,n.slice(1));if(s instanceof C&&s.object instanceof K){let o=s.object.subject,i=je(this.catalog,o);if(i.length===0){let l=Z(this.catalog,o);l&&i.push(l)}let c=n.slice(1);for(let l of i){let d=this.resolvePathSteps(l,c);if(d!==void 0)return d}return}}}finalStatementTexts(e){if(e instanceof C&&e.object instanceof K)return[this.referenceLabel(e.object)];if(e instanceof W)return[String(e.object)];if(e instanceof ue)return[String(e.object)];if(e instanceof ae)return[String(e.object)];if(e instanceof V){let n=[];for(let t of e.object??[]){if(t instanceof K){n.push(this.referenceLabel(t));continue}let a=t.value;(typeof a=="string"||typeof a=="number"||typeof a=="boolean")&&n.push(String(a))}return n}return[]}referenceLabel(e){let n=e.subject,t=je(this.catalog,n);if(t.length===0){let a=Z(this.catalog,n);a&&t.push(a)}for(let a of t){let s=B(this.catalog,a);if(s.label!==a.name)return s.label}return n.name}collectCascadedSvgTiers(e){let n={},t=c=>{let l=X(c,ht);if(!(l instanceof z))return;let d=l.object,p=cn(d,Er),f=cn(d,Lr),k=cn(d,Or),h=cn(d,Ur);n.tierChip===void 0&&p!==void 0&&(n.tierChip=p),n.tierIcon===void 0&&f!==void 0&&(n.tierIcon=f),n.tierCard===void 0&&k!==void 0&&(n.tierCard=k),n.tierFull===void 0&&h!==void 0&&(n.tierFull=h)};t(e);let a=e.namespace||"",s=a.indexOf("/");if(s>=0){let c=a.indexOf("@"),l={publisher:a.slice(0,s),package_:a.slice(s+1,c>=0?c:a.length),name:e.name};for(let d of je(this.catalog,l))t(d)}let o=new Set,i=he(e);for(;i.length>0;){let c=i.shift(),l=ne(c.subject);if(o.has(l))continue;o.add(l);let d=je(this.catalog,c.subject);for(let p of d){t(p);for(let f of Qe(p))i.push(f)}}if(!o.has(ne(Re)))for(let c of je(this.catalog,Re))t(c);return n}renderStylesheet(e){let n=this.findCascadedTokens(e),t=[];for(let[o,i]of n)t.push(` --kan-${o}: ${i};`);let a=t.length>0?`:root {
|
|
78
|
+
${t.join(`
|
|
79
|
+
`)}
|
|
80
|
+
}`:":root { /* no tokens resolved */ }",s=this.findBaseStylesheet(Q(e))??"";return`${a}
|
|
81
|
+
${s}`}findBaseStylesheet(e){let n="kanonak.org/site/content",t=l=>me((l.namespace||"").split("@")[1]??""),a,s,o,i;for(let l of this.catalog){if(!(l instanceof q)||l.name!=="base-stylesheet")continue;let d=l.namespace||"";if(d.startsWith(`${e}/look-styles@`)){let p=t(l);p&&(!s||qe(p,s)>0)&&(a=l,s=p)}else if(d.startsWith("kanonak.org/look-styles@")){let p=t(l);p&&(!i||qe(p,i)>0)&&(o=l,i=p)}}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 W)return l.object}}renderHtml(e){let n=this.findCascadedLook(e);if(!n)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let t=On(n.declaration);if(t.length===0)return"<!-- LookRenderer: look declaration has no bands -->";let a=Q(e),s=this.collectSectionHeadings(t);this.diagramScriptEmitted=!1,this.diagramArrowSeq=0;let o=[];for(let i of t){let c=ze(i);c&&E(c,_n)&&o.push('<div style="clear:both"></div>'),o.push(this.applyBandPlacement(i,this.renderBand(i,e,a,s)))}return o.push('<div style="clear:both"></div>'),o.join(`
|
|
82
|
+
`)}applyBandPlacement(e,n){let t=F(e,za);if(t!=="floatLeft"&&t!=="floatRight")return n;let a=t==="floatLeft"?"left":"right",s=F(e,Ga),o=s&&/^\d+(\.\d+)?(%|px|rem|em)$/.test(s)?s:"42%";return`<div class="kan-band-float kan-band-${a}" style="float:${a};width:${o};margin:${a==="left"?"0 1.25rem 0.75rem 0":"0 0 0.75rem 1.25rem"}">${n}</div>`}collectSectionHeadings(e){let n=[];for(let t of e){let a=ze(t);if(!a||!E(a,_n))continue;let s=F(t,ft);s&&n.push({slug:St(s),label:s})}return n}publisherSubject(e){for(let t of this.catalog)if(t instanceof q&&Q(t)===e&&he(t).some(a=>E(a.subject,Ja)))return t;let n=new q;return n.namespace=e,n.name=e,n.statement=[C.parse("kanonak.org/core-rdf/type","kanonak.org/core-kanonak/Publisher"),W.parse("kanonak.org/core-rdf/label",e)],n}hasDeclaredView(e){let n=this.findCascadedLook(e);return n?!(a=>a.publisher===Re.publisher&&a.package_===Re.package_&&a.name===Re.name||a.publisher===wn.publisher&&a.package_===wn.package_&&a.name===wn.name)(n.sourceClass):!1}renderPackageVersionList(e,n,t){let a=Q(t),s=this.renderNavGroup(t,a),o=this.renderBreadcrumb(t,a,{bareOverview:!0}),i=n.map(l=>`<a class="kan-resource-card" href="${g(this.packageHref(a,e,l))}/"><h3 class="kan-resource-card-title">${g(l)}</h3></a>`).join(`
|
|
83
|
+
`),c=`<header class="kan-hero">
|
|
84
|
+
<span class="kan-hero-eyebrow">PACKAGE</span>
|
|
85
|
+
<h1 class="kan-hero-title">${g(e)}</h1>
|
|
86
|
+
</header>
|
|
87
|
+
<section class="kan-resource-grid">
|
|
88
|
+
${i}
|
|
89
|
+
</section>`;return`<!doctype html>
|
|
90
|
+
<html lang="en">
|
|
91
|
+
<head>
|
|
92
|
+
<meta charset="utf-8">
|
|
93
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
94
|
+
<title>${g(e)}</title>
|
|
95
|
+
<link rel="stylesheet" href="${g(t.name)}.css">
|
|
96
|
+
</head>
|
|
97
|
+
<body>
|
|
98
|
+
${s}
|
|
99
|
+
${o}
|
|
100
|
+
<main class="kan-main">
|
|
101
|
+
${c}
|
|
102
|
+
</main>
|
|
103
|
+
</body>
|
|
104
|
+
</html>
|
|
105
|
+
`}renderDocument(e,n){let t=this.renderHtml(e),a=B(this.catalog,e).label,s=n?.rootIndex?"index.css":`${e.name}.css`,o=!n?.rootIndex&&this.hasSvgDerivation(e)?`<figure class="kan-figure"><img src="${g(e.name)}.svg" alt=""></figure>
|
|
106
|
+
`:"",i=Q(e),c=this.renderNavGroup(e,i),l=this.renderSiteFooter(i),d=n?.rootIndex?"":this.renderBreadcrumb(e,i,n);return`<!doctype html>
|
|
107
|
+
<html lang="en">
|
|
108
|
+
<head>
|
|
109
|
+
<meta charset="utf-8">
|
|
110
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
111
|
+
<title>${g(a)}</title>
|
|
112
|
+
<link rel="stylesheet" href="${g(s)}">
|
|
113
|
+
</head>
|
|
114
|
+
<body>
|
|
115
|
+
${c}
|
|
116
|
+
${d}
|
|
117
|
+
<main class="kan-main">
|
|
118
|
+
${o}${t}
|
|
119
|
+
</main>
|
|
120
|
+
${l}
|
|
121
|
+
</body>
|
|
122
|
+
</html>
|
|
123
|
+
`}hasSvgDerivation(e){let n=new Set,t=he(e);for(;t.length>0;){let a=t.shift(),s=ne(a.subject);if(n.has(s))continue;n.add(s);let o=Z(this.catalog,a.subject);if(o){for(let i of o.statement)if(i instanceof V&&Se(i,"kanonak.org","derivation","derivations")){for(let c of i.object??[])if(c instanceof D)for(let l of c.statement){if(!(l instanceof C)||!Se(l,"kanonak.org","derivation","format")||!(l.object instanceof K))continue;let d=l.object.subject;if(d.publisher==="kanonak.org"&&d.package_==="formats"&&d.name==="svg")return!0}}for(let i of Qe(o))t.push(i)}}return!1}renderBand(e,n,t,a=[],s=""){let o=ze(e);return o?E(o,fr)?this.renderSectionNav(a):E(o,sa)?this.renderHero(e,n,t):E(o,oa)?this.renderPropertyList(e,n,t):E(o,ia)?this.renderPropertyTable(e,n,t,s):E(o,ca)?this.renderBadgeRow(e,n,t):E(o,la)?this.renderChipRow(e,n,t):E(o,ua)?this.renderReferenceList(e,n,t):E(o,da)?this.renderReferencedBy(e,n,t):E(o,fa)?this.renderInstances(e,n,t):E(o,ut)?this.renderMarkdown(e,n,t):E(o,or)?this.renderLinks(e,n):E(o,pa)?this.renderNavGroup(n,t):E(o,ba)?this.renderResourceGrid(e,t,n):E(o,va)?this.renderTimeline(e,t):E(o,$a)?this.renderVersionDiff(e,t):E(o,ya)?this.renderFigure(e,n,t):E(o,ja)?this.renderDiagram(e,n,t):E(o,Wa)?this.renderStatRow(e,n):E(o,Ya)?this.renderHorizon(e,n,t):E(o,Xa)?this.renderPackageContents(n,t):E(o,Za)?this.renderFeaturedResource(e,t):E(o,Qa)?this.renderPublisherPackages(e,t):E(o,lr)?this.renderDistribution(e,n):E(o,_n)?this.renderSectionHeading(e):E(o,gr)?this.renderVersionDelta(e,n):E(o,mr)?this.renderTimePlot(e,n,t):E(o,kr)?this.renderDetails(e,n,t):E(o,hr)?this.renderEmbeddedViews(e,n,t,s):`<!-- LookRenderer: unsupported band ${o.publisher}/${o.package_}/${o.name} -->`:"<!-- LookRenderer: band has no rdf:type -->"}collectTrackedSeries(e,n,t,a){let{hueBy:s,lowerPath:o,upperPath:i}=a??{},c=new Map,l=e.length,d=(p,f)=>{let k=this.resolvePath(p,f);return k===void 0?NaN:parseFloat(k)};return e.forEach((p,f)=>{let k=this.readPropertyValueReferences(p,n);for(let h of k){let m=Z(this.catalog,{publisher:h.subject.publisher,package_:h.subject.package_,name:h.subject.name,...h.subject.version?{version:h.subject.version}:{}});if(!m)continue;let b=h.subject.name,v=c.get(b);v||(v={key:b,label:B(this.catalog,m).label,points:new Array(l).fill(null),...o?{lower:new Array(l).fill(null)}:{},...i?{upper:new Array(l).fill(null)}:{}},c.set(b,v));let w=d(m,t);if(Number.isFinite(w)&&(v.points[f]=w),o&&v.lower){let S=d(m,o);Number.isFinite(S)&&(v.lower[f]=S)}if(i&&v.upper){let S=d(m,i);Number.isFinite(S)&&(v.upper[f]=S)}if(s){let S=d(m,s);Number.isFinite(S)&&(v.hue=S)}v.lastSubject=m}}),[...c.values()]}hrefForSubject(e,n,t="="){let a=e.namespace||"",s=a.split("/")[1]?.split("@")[0]??"",o=a.split("@")[1]??"",i=o?me(o):void 0;return this.resourceHref({publisher:Q(e),package_:s,name:e.name,...i?{version:i}:{}},n,t)}renderVersionDiff(e,n){let t=H(e,pe);if(!t)return"<!-- LookRenderer.VersionDiff: no look.source -->";let a=F(e,sn),s=H(e,gt);if(!s||!a)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let o=H(e,Kn),i=F(e,Rn),c=this.findInstancesOfClass(t);if(c.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let l=k=>o?this.readPropertyValueText(k,o)??"":"",d=c.slice().sort((k,h)=>l(k).localeCompare(l(h))),p=this.collectTrackedSeries(d,s,a,{hueBy:i});return p.length===0?"<!-- LookRenderer.VersionDiff: no tracked series -->":`<section class="kan-vdiff">${p.map((k,h)=>{let m=k.hue!==void 0?k.hue:Math.round(h*360/p.length),b=k.points.filter(U=>U!==null);if(b.length===0)return"";let v=b[0],w=b[b.length-1],S=w-v,R;if(Math.abs(S)>=.005){let U=S>0?"up":"down",A=S>0?"\u25B2":"\u25BC";R=`<span class="kan-vdiff-delta ${U}">${S>0?"+":""}${S.toFixed(2)} ${A}</span>`}else R='<span class="kan-vdiff-delta flat">\u2014</span>';let I=k.lastSubject&&this.isLinkable(Q(k.lastSubject),n)?`<a href="${g(this.hrefForSubject(k.lastSubject,n))}">${g(k.label)}</a>`:g(k.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${m}"><span class="kan-vdiff-label">${I}</span><span class="kan-vdiff-start">${v.toFixed(2)}</span>`+this.sparkline(k.points,m)+`<span class="kan-vdiff-end">${w.toFixed(2)}</span>`+R+"</div>"}).join("")}</section>`}sparkline(e,n){let o=`hsl(${n},65%,60%)`,i=e.filter(b=>b!==null);if(i.length===0)return'<svg class="kan-vdiff-spark" viewBox="0 0 132 30" xmlns="http://www.w3.org/2000/svg"></svg>';let c=Math.min(...i),d=Math.max(...i)-c,p=e.length,f=b=>p<=1?132/2:4+b/(p-1)*124,k=b=>d<1e-9?30/2:26-(b-c)/d*22,h=[],m=[];return e.forEach((b,v)=>{if(b===null)return;let w=f(v),S=k(b);h.push(`${w.toFixed(1)},${S.toFixed(1)}`),m.push(`<circle cx="${w.toFixed(1)}" cy="${S.toFixed(1)}" r="2" fill="${o}"/>`)}),`<svg class="kan-vdiff-spark" viewBox="0 0 132 30" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" role="img"><polyline points="${h.join(" ")}" fill="none" stroke="${o}" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round"/>`+m.join("")+"</svg>"}svgUrlForSubject(e,n,t="="){return`${this.hrefForSubject(e,n,t)}.svg`}renderFigure(e,n,t){let a=n,s=H(e,pe);if(s){let d=Z(this.catalog,s);d&&(a=d)}let o=this.svgUrlForSubject(a,t),i=B(this.catalog,a).label,c=F(e,Ar);return`<figure class="kan-figure${c==="small"||c==="medium"||c==="large"?` kan-figure-${c}`:""}"><img class="kan-figure-img" src="${g(o)}" alt="${g(i)}" loading="lazy"/></figure>`}diagramArrowSeq=0;diagramScriptEmitted=!1;renderDiagram(e,n,t,a=0,s=new Set){let o=this.gatherValueItems(X(e,Sa)).filter(h=>h instanceof D);if(o.length===0)return"<!-- LookRenderer.Diagram: no look.facets -->";let i=[];for(let h of o){let m=H(h,wa);if(!m){i.push("<!-- LookRenderer.Diagram: facet has no resolvable look.relation -->");continue}let b=H(h,_a),v=this.resolveFacetNodes(n,m);if(v.length===0){i.push(`<!-- LookRenderer.Diagram: relation ${m.publisher}/${m.package_}/${m.name} resolved to 0 instances -->`);continue}let w=this.resolveFacetChannels(h,v),S=X(h,Ua),R=S instanceof z&&S.object instanceof D?S.object:void 0,I=F(h,Ca),U=I&&Ze[I]!==void 0?Ze[I]:void 0,A=U??this.classTierSize(v),x=Ha[A??Ze.icon]??"icon",G=F(h,Ta),te=H(h,Ia),N=te?Z(this.catalog,te):void 0;if(N){i.push(this.renderDiagramExpand(v,N,t,a,s,G,U));continue}if(b&&E(b,Ra)){let T=H(h,Fa),J=this.facetEdgeLabel(h,T??m),ie=F(h,xa);i.push(this.embedTiers(x,be=>T?this.renderDiagramDag(v,T,w,t,be,J,ie):this.renderDiagramConnector(n,v,w,t,be,J,ie)));continue}if(b&&!E(b,Ka)){i.push(`<!-- LookRenderer.Diagram: unknown encode role ${b.publisher}/${b.package_}/${b.name} -->`);continue}i.push(R?`<div class="kan-dgm-tiers" data-geo="1"><div class="kan-dgm-tier" data-tier="card">${this.renderDiagramCluster(v,w,R,t,A)}</div></div>`:this.embedTiers(x,T=>this.renderDiagramCluster(v,w,void 0,t,T)))}let c=F(e,Na),l=F(e,Pa),d=h=>`<div class="kan-diagram-title" style="font-weight:600;font-size:0.95rem;color:var(--kan-text);${h}">${g(c)}</div>`,p=c&&l!=="bottom"?d("margin:0 0 .5rem"):"",f=c&&l==="bottom"?d("margin:.5rem 0 0"):"",k="";return a===0&&!this.diagramScriptEmitted&&(this.diagramScriptEmitted=!0,k=`<script>${Da}</script>`),`<section class="kan-diagram">${p}${i.join("")}${f}${k}</section>`}embedTiers(e,n){return`<div class="kan-dgm-tiers">${Ba.map(a=>`<div class="kan-dgm-tier" data-tier="${a}"${a===e?"":" hidden"}>${n(Ze[a])}</div>`).join("")}</div>`}renderDiagramExpand(e,n,t,a,s,o,i){return`<figure class="kan-diagram-figure"><div class="kan-diagram-tree">${e.map(l=>{let d=`${l.namespace??""}/${l.name}`,p=this.diagramNodeRow(l,t,i??56,o),k=a<qa&&!s.has(d)?this.renderDiagram(n,l,t,a+1,new Set([...s,d])):"",h=k?`<div style="margin-left:30px;border-left:2px solid var(--kan-border);padding-left:14px;margin-top:6px">${k}</div>`:"";return`<div class="kan-diagram-node" style="margin:6px 0">${p}${h}</div>`}).join("")}</div></figure>`}diagramNodeRow(e,n,t=56,a){let s=this.hrefForSubject(e,n),o=this.svgUrlForSubject(e,n),i=B(this.catalog,e).label,c=a?this.resolvePath(e,a):void 0,l=c!==void 0?`<span class="kan-diagram-node-note" style="display:block;font-size:0.8em;color:var(--kan-text-dim)">${g(c)}</span>`:"";return`<a href="${g(s)}" style="display:inline-flex;align-items:center;gap:10px;text-decoration:none"><img src="${g(o)}" width="${t}" height="${t}" alt="" loading="lazy"/><span><span class="kan-diagram-node-label">${g(i)}</span>${l}</span></a>`}classTierSize(e){let n;for(let t of e)for(let a of he(t)){let s=Z(this.catalog,a.subject);if(!s)continue;let o=F(s,Va),i=o?Ze[o]:void 0;i!==void 0&&(n=n===void 0?i:Math.max(n,i))}return n}resolveFacetNodes(e,n){let t=[];for(let a of this.readPropertyValueReferences(e,n)){let s=a.subject,o=Z(this.catalog,{publisher:s.publisher,package_:s.package_,name:s.name,...s.version?{version:s.version}:{}});o&&t.push(o)}return t}resolveFacetChannels(e,n){let t=this.gatherValueItems(X(e,Ea)).filter(s=>s instanceof D),a=[];for(let s of t){let o=F(s,La),i=F(s,Oa);if(!o||!i)continue;let c=n.map(h=>{let m=this.resolvePath(h,o),b=m===void 0?NaN:parseFloat(m);return Number.isFinite(b)?b:NaN}),l=c.filter(h=>Number.isFinite(h)),d=l.length?Math.min(...l):0,f=(l.length?Math.max(...l):0)-d,k=c.map(h=>Number.isFinite(h)&&f>0?(h-d)/f:.5);a.push({to:i,norm:k})}return a}facetEdgeLabel(e,n){let t=F(e,Aa);if(t)return t;if(Hr(e,Ma)&&n){let s=Z(this.catalog,n);if(s)return B(this.catalog,s).label}}edgeText(e,n,t){let a=t&&n?this.resolvePath(n,t):void 0,s=[e,a].filter(o=>!!o);return s.length?s.join(" "):void 0}edgeLabelEl(e,n,t){return`<text x="${e.toFixed(1)}" y="${n.toFixed(1)}" text-anchor="middle" class="kan-diagram-edge-label" style="font-size:11px;paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px;fill:var(--kan-text-dim)">${g(t)}</text>`}renderDiagramCluster(e,n,t,a,s){let o=s??132,i=18,c=18,l=n.find(m=>m.to==="opacity");if(t)return`<figure class="kan-diagram-figure"><div class="kan-diagram-marks" style="display:flex;flex-wrap:wrap;gap:18px;align-items:flex-start">${e.map((b,v)=>{let w=this.renderBand(t,b,a),S=this.hrefForSubject(b,a),R=B(this.catalog,b).label,I=l?`opacity:${(.4+l.norm[v]*.6).toFixed(2)};`:"";return`<a class="kan-diagram-mark" href="${g(S)}" style="display:block;text-decoration:none;${I}">${w}<span class="kan-diagram-mark-label">${g(R)}</span></a>`}).join("")}</div></figure>`;let d=Math.min(e.length,4),p=Math.ceil(e.length/d),f=c*2+d*o+(d-1)*i,k=c*2+p*o+(p-1)*i,h=e.map((m,b)=>{let v=b%d,w=Math.floor(b/d),S=c+v*(o+i),R=c+w*(o+i),I=l?.4+l.norm[b]*.6:1;return this.diagramTile(m,S,R,o,a,I)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${f} ${k}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${h}</svg></figure>`}renderDiagramConnector(e,n,t,a,s,o,i){let c=s??120,l=24,d=130,p=18,f=t.find(te=>te.to==="thickness"),k=t.find(te=>te.to==="opacity"),h=n.length,m=h*c+(h-1)*l,b=p*2+m,v=p*2+c+d+c,w=p,S=p+(m-c)/2,R=p+c+d,I=`kan-arrow-${this.diagramArrowSeq++}`,U=[],A=[],x=[];n.forEach((te,N)=>{let T=p+N*(c+l),J=w+c,ie=S+c/2,be=R-_e,O=T+c/2,ee=(J+R)/2,y=f?1.5+f.norm[N]*5.5:2,L=k?.4+k.norm[N]*.6:1,M=k?` stroke-opacity="${L.toFixed(2)}"`:"";U.push(`<path d="M${J.toFixed(1)},${ie.toFixed(1)} C${ee.toFixed(1)},${ie.toFixed(1)} ${ee.toFixed(1)},${O.toFixed(1)} ${be.toFixed(1)},${O.toFixed(1)}" class="kan-diagram-edge" fill="none" stroke="var(--kan-border)" stroke-width="${y.toFixed(1)}"${M} marker-end="url(#${I})"/>`);let _=this.edgeText(o,te,i);_&&A.push(this.edgeLabelEl((J+R)/2,(ie+O)/2-5,_)),x.push(this.diagramTile(te,R,T,c,a,k?L:1))});let G=this.diagramTile(e,w,S,c,a);return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${v.toFixed(0)} ${b.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(I,"var(--kan-border)")}${U.join("")}${A.join("")}${G}${x.join("")}</svg></figure>`}arrowMarkerDef(e,n){return`<defs><marker id="${e}" viewBox="0 0 ${_e} ${_e}" refX="0" refY="${(_e/2).toFixed(1)}" markerWidth="${_e}" markerHeight="${_e}" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,1 L${_e},${(_e/2).toFixed(1)} L0,${_e-1}" fill="${n}"/></marker></defs>`}renderDiagramDag(e,n,t,a,s,o,i){let c=s??110,l=110,d=22,p=18,f=new Map(e.map((y,L)=>[y.name,L])),k=new Set(e.map(y=>y.name)),h=new Map(e.map(y=>[y.name,[]])),m=new Map(e.map(y=>[y.name,[]]));for(let y of e)for(let L of this.readPropertyValueReferences(y,n)){let M=L.subject.name;M!==y.name&&k.has(M)&&(h.get(y.name).push(M),m.get(M).push(y.name))}let b=new Map,v=new Set,w=y=>{let L=b.get(y);if(L!==void 0)return L;if(v.has(y))return 0;v.add(y);let M=0;for(let _ of m.get(y)??[])M=Math.max(M,w(_)+1);return v.delete(y),b.set(y,M),M};for(let y of e)w(y.name);let S=Math.min(...b.values());if(S>0)for(let y of[...b.keys()])b.set(y,b.get(y)-S);let R=Math.max(0,...b.values()),I=Array.from({length:R+1},()=>[]);for(let y of e)I[b.get(y.name)].push(y);let U=Math.max(1,...I.map(y=>y.length)),A=!1;for(let[y,L]of h)for(let M of L)b.get(M)<=b.get(y)&&(A=!0);let x=A?84:0,G=U*c+(U-1)*d,te=p*2+(R+1)*c+R*l,N=p*2+x+G,T=new Map;I.forEach((y,L)=>{let M=y.length*c+(y.length-1)*d,_=p+x+(G-M)/2;y.forEach((P,re)=>T.set(P.name,{x:p+L*(c+l),y:_+re*(c+d)}))});let J=t.find(y=>y.to==="thickness"),ie=`kan-arrow-${this.diagramArrowSeq++}`,be=[],O=[];for(let[y,L]of h){let M=T.get(y);for(let _ of L){let P=T.get(_),re=P.x>=M.x,ge=J?1.5+J.norm[f.get(y)]*4.5:2,se,ce,le;if(re){let oe=M.x+c,Ce=M.y+c/2,Le=P.x-_e,Ge=P.y+c/2,Te=(oe+Le)/2;se=`M${oe.toFixed(1)},${Ce.toFixed(1)} C${Te.toFixed(1)},${Ce.toFixed(1)} ${Te.toFixed(1)},${Ge.toFixed(1)} ${Le.toFixed(1)},${Ge.toFixed(1)}`,ce=(oe+Le)/2,le=(Ce+Ge)/2-5}else{let oe=M.x+c/2,Ce=M.y,Le=P.x+c/2,Ge=P.y-_e,Te=p+x*.2;se=`M${oe.toFixed(1)},${Ce.toFixed(1)} C${oe.toFixed(1)},${Te.toFixed(1)} ${Le.toFixed(1)},${Te.toFixed(1)} ${Le.toFixed(1)},${Ge.toFixed(1)}`,ce=(oe+Le)/2,le=Te+4}let Ee=re?"":' stroke-dasharray="6 4"';be.push(`<path d="${se}" class="kan-diagram-edge" fill="none" stroke="var(--kan-accent)" stroke-width="${ge.toFixed(1)}" stroke-opacity="0.75"${Ee} marker-end="url(#${ie})"/>`);let we=this.edgeText(o,e[f.get(y)],i);we&&O.push(this.edgeLabelEl(ce,le,we))}}let ee=e.map(y=>{let L=T.get(y.name);return this.diagramTile(y,L.x,L.y,c,a)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${te.toFixed(0)} ${N.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(ie,"var(--kan-accent)")}${be.join("")}${O.join("")}${ee}</svg></figure>`}diagramTile(e,n,t,a,s,o=1){let i=this.hrefForSubject(e,s),c=this.svgUrlForSubject(e,s),l=B(this.catalog,e).label,d=o<1?` opacity="${o.toFixed(2)}"`:"";return`<a href="${g(i)}"><image href="${g(c)}" x="${n}" y="${t}" width="${a}" height="${a}"${d}><title>${g(l)}</title></image></a>`}renderStatRow(e,n){let t=X(e,yr),a=this.gatherValueItems(t).filter(o=>o instanceof D);if(a.length===0)return"<!-- LookRenderer.StatRow: no look.stats -->";let s=[];for(let o of a){let i=F(o,jr);if(!i)continue;let c=this.resolvePath(n,i);if(c===void 0)continue;let l=F(o,Sr)??"";s.push('<div class="kan-stat">'+(l?`<span class="kan-stat-label">${g(l)}</span>`:"")+`<span class="kan-stat-val">${g(c)}</span></div>`)}return s.length===0?"":`<div class="kan-stat-row">${s.join("")}</div>`}renderHorizon(e,n,t){let a=H(e,pe);if(!a)return"<!-- LookRenderer.Horizon: no look.source -->";let s=this.gatherValueItems(X(n,a)).filter(i=>i instanceof D);return s.length===0?"":`<section class="kan-horizon">${s.map(i=>this.renderConditionNode(i,t,0)).join("")}</section>`}renderConditionNode(e,n,t){let a=ze(e),s=a?this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name:"Condition",o=[],i=[];for(let f of e.statement){let k=f.predicate?.subject;if(!k||k.name==="type")continue;let h=this.readLabelForUri({publisher:k.publisher,package_:k.package_,name:k.name})??k.name;if(f instanceof W||f instanceof ue||f instanceof ae)o.push(`<div class="kan-cond-field"><span class="kan-cond-key">${g(h)}</span><span class="kan-cond-v">${g(String(f.object))}</span></div>`);else if(f instanceof C&&f.object instanceof K){let m=f.object.subject,b=this.readLabelForUri({publisher:m.publisher,package_:m.package_,name:m.name})??m.name;o.push(`<div class="kan-cond-field"><span class="kan-cond-key">${g(h)}</span><span class="kan-cond-v">${g(b)}</span></div>`)}else if(f instanceof z)i.push(this.renderConditionNode(f.object,n,t+1));else if(f instanceof V)for(let m of f.object??[])m instanceof D&&i.push(this.renderConditionNode(m,n,t+1))}let c=o.length?`<div class="kan-cond-fields">${o.join("")}</div>`:"",l=i.length?`<div class="kan-cond-children">${i.join("")}</div>`:"",d=i.length>0,p=d?`<span class="kan-cond-op">${g(s)}</span>`:`<div class="kan-cond-type">${g(s)}</div>`;return`<div class="kan-cond ${d?"kan-cond-branch":"kan-cond-leaf"}">${p}${c}${l}</div>`}renderSectionHeading(e){let n=e,t=F(n,ft);if(!t)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let a=F(n,pr);return`<div class="kan-section" id="${St(t)}"><h2 class="kan-section-title">${g(t)}</h2>`+(a?`<p class="kan-section-note">${g(a)}</p>`:"")+"</div>"}renderSectionNav(e){return e.length===0?"<!-- LookRenderer.SectionNav: no section headings in this view -->":`<nav class="kan-section-nav" aria-label="On this page">${e.map(t=>`<a class="kan-section-nav-link" href="#${g(t.slug)}">${g(t.label)}</a>`).join("")}</nav>`}renderVersionDelta(e,n){let a=F(e,sn);if(!a)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let s=N=>{let T=this.resolvePath(N,a),J=T===void 0?NaN:parseFloat(T);return Number.isFinite(J)?J:void 0},o=s(n);if(o===void 0)return"";let i=N=>me((N.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},c=(N,T)=>N.major-T.major||N.minor-T.minor||N.patch-T.patch,l={publisher:Q(n),package_:(n.namespace||"").split("/")[1]?.split("@")[0]??"",name:n.name},d=i(n),p,f;for(let N of je(this.catalog,l)){let T=i(N);c(T,d)<0&&(!f||c(T,f)>0)&&(p=N,f=T)}if(!p||!f)return'<div class="kan-delta kan-delta-first">First tracked in this version</div>';let k=s(p);if(k===void 0)return"";let h=o-k,m=Math.abs(h)<.005?"flat":h>0?"up":"down",b=m==="up"?"\u25B2":m==="down"?"\u25BC":"\u2014",v=m==="up"?"#34d399":m==="down"?"#f87171":"var(--kan-text-faint)",w=`${f.major}.${f.minor}.${f.patch}`,S=320,R=46,I=14,U=30,A=N=>I+Math.min(1,Math.max(0,N))*(S-2*I),x=A(k),G=A(o),te=`<svg class="kan-delta-track" viewBox="0 0 ${S} ${R}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${I}" y1="${U}" x2="${S-I}" y2="${U}" class="kan-delta-base"/><line x1="${x.toFixed(1)}" y1="${U}" x2="${G.toFixed(1)}" y2="${U}" stroke="${v}" stroke-width="3"/><circle cx="${x.toFixed(1)}" cy="${U}" r="4" class="kan-delta-prev"/><circle cx="${G.toFixed(1)}" cy="${U}" r="5.5" fill="${v}"/><text x="${x.toFixed(1)}" y="${U-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${k.toFixed(2)}</text><text x="${G.toFixed(1)}" y="${U+17}" text-anchor="middle" class="kan-delta-tick">${o.toFixed(2)}</text></svg>`;return`<div class="kan-delta"><div class="kan-delta-head"><span class="kan-delta-vs">vs ${g(w)}</span><span class="kan-delta-badge ${m}">${h>0?"+":""}${h.toFixed(2)} ${b}</span></div>`+te+"</div>"}renderTimePlot(e,n,t){let a=H(e,pe),s=H(e,Kn);if(!a||!s)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let o=e,i=F(o,$r),c=F(o,pt),l=[];for(let O of this.readPropertyValueReferences(n,a)){let ee=Z(this.catalog,{publisher:O.subject.publisher,package_:O.subject.package_,name:O.subject.name,...O.subject.version?{version:O.subject.version}:{}});if(!ee)continue;let y=this.readPropertyValueText(ee,s)??"",L=Date.parse(y);if(!Number.isFinite(L))continue;let M=i?this.resolvePath(ee,i)??"":"",_=(c?this.resolvePath(ee,c):void 0)??B(this.catalog,ee).label;l.push({t:L,dateStr:y,lane:M,label:_,href:this.hrefForSubject(ee,t),linkable:this.isLinkable(Q(ee),t)})}if(l.length===0)return"<!-- LookRenderer.TimePlot: no dated points -->";let d=[];for(let O of l)d.includes(O.lane)||d.push(O.lane);let p=Math.min(...l.map(O=>O.t)),f=Math.max(...l.map(O=>O.t));f===p&&(f=p+1);let k=d.some(O=>O),h=720,m=k?96:16,b=18,v=12,w=24,S=36,R=v+d.length*S+w,I=m,U=h-b,A=U-I,x=O=>I+(O-p)/(f-p)*A,G=O=>v+O*S+S/2,te=O=>Math.round(O*360/Math.max(1,d.length)),N=[];d.forEach((O,ee)=>{let y=G(ee);N.push(`<line x1="${I}" y1="${y.toFixed(1)}" x2="${U}" y2="${y.toFixed(1)}" class="kan-plot-guide"/>`),O&&N.push(`<text x="${(m-8).toFixed(1)}" y="${(y+4).toFixed(1)}" text-anchor="end" class="kan-plot-lane">${$e(O)}</text>`)});let T={},J=[];for(let O of l){let ee=d.indexOf(O.lane),L=((T[O.lane]=(T[O.lane]??0)+1)%3-1)*7,M=x(O.t),_=G(ee)+L,P=`${ln(O.dateStr)} \xB7 ${O.label}`,re=`<circle cx="${M.toFixed(1)}" cy="${_.toFixed(1)}" r="5" fill="hsl(${te(ee)},65%,60%)" class="kan-plot-pt"><title>${$e(P)}</title></circle>`;J.push(O.linkable?`<a href="${g(O.href)}" class="kan-plot-link">${re}</a>`:re)}let ie=`<text x="${I}" y="${(R-6).toFixed(1)}" text-anchor="start" class="kan-plot-axis">${$e(ln(new Date(p).toISOString()))}</text><text x="${U}" y="${(R-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${$e(ln(new Date(f).toISOString()))}</text>`;return`<section class="kan-plot">${`<svg class="kan-plot-svg" viewBox="0 0 ${h} ${R}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+N.join("")+J.join("")+ie+"</svg>"}</section>`}renderDetails(e,n,t){let a=Un(e,br),s=this.detailRows(n,t,a);return s?`<dl class="kan-details">${s}</dl>`:"<!-- LookRenderer.Details: no properties -->"}detailRows(e,n,t){let a=[];for(let s of e.statement){let o=s.predicate?.subject;if(!o||this.isMetaPredicate(o)||t.some(l=>E(l,o)))continue;let i=this.readLabelForUri({publisher:o.publisher,package_:o.package_,name:o.name})??o.name,c=this.detailValue(s,n,t);c&&a.push(`<dt class="kan-details-key">${g(i)}</dt><dd class="kan-details-val">${c}</dd>`)}return a.join("")}detailValue(e,n,t){if(e instanceof W)return _t(e.object);if(e instanceof ue||e instanceof ae)return g(String(e.object));if(e instanceof C&&e.object instanceof K)return this.detailReferenceLink(e.object,n);if(e instanceof z)return this.detailEmbedded(e.object,n,t);if(e instanceof V){let a=e.object??[];return a.length>0&&a.every(s=>s instanceof D)?a.map(s=>this.detailEmbedded(s,n,t)).join(""):a.map(s=>s instanceof K?this.detailReferenceLink(s,n):s instanceof D?this.detailEmbedded(s,n,t):g(String(s))).filter(s=>s).join(", ")}return""}detailReferenceLink(e,n){let t=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name;if(!this.isLinkable(e.subject.publisher,n))return`<span class="kan-link-plain">${g(t)}</span>`;let a=this.urlForReference(e,void 0,n);return`<img class="kan-md-chip" src="${g(`${a}.svg`)}" alt="" loading="lazy"><a class="kan-link" href="${g(a)}">${g(t)}</a>`}detailEmbedded(e,n,t){let a=ze(e),s=a?this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name:"",o=this.detailRows(e,n,t);return'<div class="kan-details-embed">'+(s?`<span class="kan-details-type">${g(s)}</span>`:"")+(o?`<dl class="kan-details">${o}</dl>`:"")+"</div>"}rangeTypeRefs(e){let n=Z(this.catalog,e);if(!n)return[];let t=X(n,ta);return t instanceof C&&t.object instanceof K?[t.object]:[]}renderEmbeddedViews(e,n,t,a=""){let s=H(e,pe);if(!s)return"<!-- LookRenderer: EmbeddedViews missing look.source -->";let o=this.gatherValueItems(X(n,s)).filter(k=>k instanceof D);if(o.length===0)return"";let i=a?`${a}.${s.name}`:s.name,c=X(e,Nr),l=c instanceof ae?c.object===!0:c instanceof W&&c.object==="true",d=[],p=o.map(k=>{let h=k,m=k.name?`${i}.${k.name}`:"";if(l&&m){let U=B(this.catalog,h).label||k.name||m;d.push(`<a class="kan-section-nav-link" href="#${g(m)}">${g(U)}</a>`)}let b=he(h),v=b.length>0?b:this.rangeTypeRefs(s),w=on(h)?this.findCascadedLook(h):this.lookFromTypeRefs(v),S="";if(w)S=On(w.declaration).map(U=>this.renderBand(U,h,t,[],m)).join(`
|
|
124
|
+
`);else{let U=this.detailRows(k,t,[]);S=U?`<dl class="kan-details">${U}</dl>`:""}let R=m?` id="${g(m)}"`:"",I=m?this.anchorLink(m):"";return`<section class="kan-embedded-view"${R}>${I}${S}</section>`});return`<div class="kan-embedded-views">${d.length>0?`<nav class="kan-section-nav" aria-label="On this page">${d.join("")}</nav>
|
|
125
|
+
`:""}${p.join(`
|
|
126
|
+
`)}</div>`}anchorLink(e){return`<a class="kan-anchor" href="#${g(e)}" title="${g(e)}" aria-label="Link to this resource">#</a>`}isMetaPredicate(e){return E(e,Ir)||E(e,jn)||E(e,lt)||E(e,un)||E(e,dn)||E(e,vr)||E(e,ht)||E(e,cr)}renderPackageContents(e,n){let t=e.namespace||"";if(!t)return"";let a=this.catalog.filter(o=>o instanceof q&&o.namespace===t&&o.name!==e.name);return a.length===0?`<!-- LookRenderer.PackageContents: no members in ${t} -->`:(a.sort((o,i)=>{let c=B(this.catalog,o).label,l=B(this.catalog,i).label;return c.localeCompare(l)}),`<section class="kan-pkg-grid">${a.map(o=>{let i=B(this.catalog,o),c=i.label,l=i.summary,d=l?In(l,160):"",p=this.hrefForSubject(o,n),f=this.svgUrlForSubject(o,n);return`<a class="kan-pkg-card" href="${g(p)}"><img class="kan-pkg-card-svg" src="${g(f)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${g(c)}</span>`+(d?`<span class="kan-pkg-card-comment">${g(d)}</span>`:"")+"</span></a>"}).join("")}</section>`)}renderReferencedBy(e,n,t){let a=H(e,Tr),s={publisher:Q(n),package_:(n.namespace||"").split("/")[1]?.split("@")[0]??"",name:n.name},o=ne(s),i=f=>me((f.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},c=(f,k)=>f.major-k.major||f.minor-k.minor||f.patch-k.patch,l=new Map;for(let f of this.catalog){if(!(f instanceof q))continue;let k=ne({publisher:Q(f),package_:(f.namespace||"").split("/")[1]?.split("@")[0]??"",name:f.name});if(k!==o)for(let h of f.statement){let m=h.predicate?.subject;if(!m||m.name==="type"||a&&ne(m)!==ne(a))continue;let b=[];if(h instanceof C&&h.object instanceof K)b.push(h.object);else if(h instanceof V)for(let R of h.object??[])R instanceof K&&b.push(R);if(!b.some(R=>ne(R.subject)===o))continue;let v=ne(m),w=l.get(v);w||(w={label:this.readLabelForUri(m)??m.name,best:new Map},l.set(v,w));let S=w.best.get(k);(!S||c(i(f),i(S))>0)&&w.best.set(k,f)}}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((f,k)=>f.label.localeCompare(k.label)).map(f=>{let h=[...f.best.values()].sort((m,b)=>B(this.catalog,m).label.localeCompare(B(this.catalog,b).label)).map(m=>this.resourceCard(m,t,n.namespace??void 0)).join("");return`<div class="kan-rel-group"><h3 class="kan-rel-prop"><span class="kan-rel-dir" title="incoming \u2014 references this resource">\u2190</span> ${g(f.label)}</h3><section class="kan-pkg-grid">${h}</section></div>`}).join("")}`}resourceCard(e,n,t){let a=B(this.catalog,e),s=a.summary?In(a.summary,160):"",o=he(e).map(b=>this.readLabelForUri({publisher:b.subject.publisher,package_:b.subject.package_,name:b.subject.name})??b.subject.name),c='<span class="kan-pkg-card-body">'+(o.length>0?`<span class="kan-card-types">${o.map(b=>`<span class="kan-card-type">${g(b)}</span>`).join("")}</span>`:"")+`<span class="kan-pkg-card-title">${g(a.label)}</span>`+(s?`<span class="kan-pkg-card-comment">${g(s)}</span>`:"")+"</span>",l=this.isLinkable(Q(e),n),d=l?`<a class="kan-pkg-card-link" href="${g(this.hrefForSubject(e,n))}"><img class="kan-pkg-card-svg" src="${g(this.svgUrlForSubject(e,n))}" alt="" loading="lazy"/>`+c+"</a>":`<span class="kan-pkg-card-link">${c}</span>`,p=e.namespace||"",f=p.split("/")[0]??"",[k,h]=(p.split("/")[1]??"").split("@"),m="";if(k&&p!==t){let b=h?`<span class="kan-card-at">@</span><span class="kan-card-ver">${g(h)}</span>`:"";if(l){let v=`<span class="kan-card-pkg">${g(k)}</span>${b}`;m=`<a class="kan-pkg-card-foot" href="${g(this.packageHref(f,k,h||void 0))}" title="${g(h?`${k}@${h}`:k)}">${v}</a>`}else{let v=`<span class="kan-card-pub">${g(f)}/</span><span class="kan-card-pkg">${g(k)}</span>${b}`;m=`<span class="kan-pkg-card-foot" title="${g(h?`${f}/${k}@${h}`:`${f}/${k}`)}">${v}</span>`}}return`<div class="kan-pkg-card kan-pkg-card--foot">${d}${m}</div>`}renderInstances(e,n,t){let a={publisher:Q(n),package_:(n.namespace||"").split("/")[1]?.split("@")[0]??"",name:n.name},s=X(e,Pr),o=s instanceof ae?s.object===!0:s instanceof W&&s.object==="true",i=o?this.subclassClosure(a):new Set([ne(a)]),c=v=>me((v.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},l=(v,w)=>v.major-w.major||v.minor-w.minor||v.patch-w.patch,d=new Map;for(let v of this.catalog){if(!(v instanceof q)||!he(v).some(I=>i.has(ne(I.subject))))continue;let S=ne({publisher:Q(v),package_:(v.namespace||"").split("/")[1]?.split("@")[0]??"",name:v.name}),R=d.get(S);(!R||l(c(v),c(R))>0)&&d.set(S,v)}let p=[...d.values()];if(p.length===0)return"<!-- LookRenderer.Instances: none -->";p.sort((v,w)=>B(this.catalog,v).label.localeCompare(B(this.catalog,w).label));let f=48,k=p.slice(0,f),h=k.map(v=>this.resourceCard(v,t,n.namespace??void 0)),m=p.length>f?` <span class="kan-count">${k.length} of ${p.length}</span>`:` <span class="kan-count">${p.length}</span>`;return`<div class="kan-section"><h2 class="kan-section-title">${o?"Instances (including subtypes)":"Instances"}${m}</h2></div><section class="kan-pkg-grid">${h.join("")}</section>`}subclassClosure(e){let n=new Set([ne(e)]),t=!0;for(;t;){t=!1;for(let a of this.catalog){if(!(a instanceof q))continue;let s=ne({publisher:Q(a),package_:(a.namespace||"").split("/")[1]?.split("@")[0]??"",name:a.name});if(!n.has(s)){for(let o of Qe(a))if(n.has(ne(o.subject))){n.add(s),t=!0;break}}}}return n}referencesTarget(e,n,t){for(let a of e.statement){let s=a.predicate?.subject;if(s?.name==="type"||t&&!(s&&ne(s)===ne(t)))continue;let o=[];if(a instanceof C&&a.object instanceof K)o.push(a.object);else if(a instanceof V)for(let i of a.object??[])i instanceof K&&o.push(i);for(let i of o)if(ne(i.subject)===n)return!0}return!1}renderFeaturedResource(e,n){let t=H(e,pe);if(!t)return"<!-- LookRenderer.FeaturedResource: no look.source -->";let a=je(this.catalog,t),s=l=>me((l.namespace||"").split("@")[1]??"")??{major:0,minor:0,patch:0},o=a.length>0?a.slice().sort((l,d)=>{let p=s(l),f=s(d);return f.major-p.major||f.minor-p.minor||f.patch-p.patch})[0]:Z(this.catalog,t);if(!o)return`<!-- LookRenderer.FeaturedResource: ${t.publisher}/${t.package_}/${t.name} not found -->`;let i=this.renderHtml(o),c=this.hrefForSubject(o,n);return`<section class="kan-featured"><a class="kan-featured-permalink" href="${g(c)}">View full resource \u2192</a>`+i+"</section>"}renderDistribution(e,n){let t=e,a=y=>{let L=F(t,y);if(!L)return;let M=this.resolvePath(n,L),_=M===void 0?NaN:parseFloat(M);return Number.isFinite(_)?_:void 0},s=a(ur),o=a(dr);if(s===void 0||o===void 0||s<=0||o<=0)return"<!-- LookRenderer.Distribution: needs resolvable alphaPath + betaPath (> 0) -->";let i=a(sn)??s/(s+o),c=a(mt),l=a(kt),d=a(Rn),p=d!==void 0?`hsl(${d},65%,60%)`:"var(--kan-accent)",f=y=>Number.isInteger(y)?String(y):y.toFixed(1),k=280,h=168,m={top:14,right:14,bottom:24,left:14},b=k-m.left-m.right,v=h-m.top-m.bottom,w=120,S=1e-4,R=[],I=[],U=0;for(let y=0;y<=w;y++){let L=y/w;L<S?L=S:L>1-S&&(L=1-S);let M=Math.exp((s-1)*Math.log(L)+(o-1)*Math.log(1-L));R.push(L),I.push(M),M>U&&(U=M)}let A=y=>m.left+Math.min(1,Math.max(0,y))*b,x=y=>m.top+(1-(U>0?y/U:0))*v,G=m.top+v,te=R.map((y,L)=>`${A(y).toFixed(1)},${x(I[L]).toFixed(1)}`),N=`M${A(0).toFixed(1)},${G.toFixed(1)} L${te.join(" L")} L${A(1).toFixed(1)},${G.toFixed(1)} Z`,T="";if(c!==void 0&&l!==void 0&&l>c){let y=[`${A(c).toFixed(1)},${G.toFixed(1)}`];for(let L=0;L<=w;L++)R[L]>=c&&R[L]<=l&&y.push(`${A(R[L]).toFixed(1)},${x(I[L]).toFixed(1)}`);y.push(`${A(l).toFixed(1)},${G.toFixed(1)}`),T=`<path d="M${y.join(" L")} Z" fill="${p}" fill-opacity="0.3"/>`}let J=A(i),ie=`<line x1="${J.toFixed(1)}" y1="${m.top.toFixed(1)}" x2="${J.toFixed(1)}" y2="${G.toFixed(1)}" stroke="${p}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${J.toFixed(1)}" y="${(m.top-3).toFixed(1)}" text-anchor="middle" class="kan-dist-mean">\u03BC ${i.toFixed(2)}</text>`,be=`<text x="${A(0).toFixed(1)}" y="${(G+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${A(1).toFixed(1)}" y="${(G+15).toFixed(1)}" text-anchor="end" class="kan-dist-axis">1</text>`,O=`<svg class="kan-dist-svg" viewBox="0 0 ${k} ${h}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${m.left}" y1="${G.toFixed(1)}" x2="${(k-m.right).toFixed(1)}" y2="${G.toFixed(1)}" class="kan-dist-base"/><path d="${N}" fill="${p}" fill-opacity="0.12"/>`+T+`<polyline points="${te.join(" ")}" fill="none" stroke="${p}" stroke-width="2"/>`+ie+be+"</svg>",ee=c!==void 0&&l!==void 0?` \xB7 95% CI [${c.toFixed(2)}\u2013${l.toFixed(2)}]`:"";return`<figure class="kan-dist">${O}<figcaption class="kan-dist-caption">Beta(${f(s)}, ${f(o)})${ee}</figcaption></figure>`}renderPublisherPackages(e,n){let t=new Map;for(let c of this.catalog){if(!(c instanceof q)||Q(c)!==n)continue;let l=(c.namespace||"").split("/")[1]?.split("@")[0]??"";if(!l||c.name!==l)continue;let d=t.get(l),p=me((c.namespace||"").split("@")[1]??""),f=d?me((d.namespace||"").split("@")[1]??""):void 0;(!d||p&&(!f||qe(p,f)>0))&&t.set(l,c)}let a,s=X(e,er),o=s instanceof V?s.object??[]:s instanceof C&&s.object instanceof K?[s.object]:[];if(o.length>0){a=[];for(let c of o){if(!(c instanceof K))continue;let l=c.subject.package_,d=t.get(l);d&&a.push([l,d])}}else a=[...t.entries()].sort((c,l)=>c[0].localeCompare(l[0]));return a.length===0?"":`<section class="kan-pkg-grid">${a.map(([c,l])=>{let d=B(this.catalog,l),p=d.label,f=d.summary,k=f?In(f,160):"",h=this.svgUrlForSubject(l,n);return`<a class="kan-pkg-card" href="${g(this.packageHref(n,c))}"><img class="kan-pkg-card-svg" src="${g(h)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${g(p)}</span>`+(k?`<span class="kan-pkg-card-comment">${g(k)}</span>`:"")+"</span></a>"}).join("")}</section>`}renderTimeline(e,n){let t=H(e,pe);if(!t)return"<!-- LookRenderer.Timeline: no look.source -->";let a=H(e,Kn),s=this.findInstancesOfClass(t);if(s.length===0)return"<!-- LookRenderer.Timeline: no instances -->";let o=p=>a?this.readPropertyValueText(p,a)??"":"",i=s.slice().sort((p,f)=>o(p).localeCompare(o(f))),c=H(e,gt),l=F(e,sn);return c&&l?this.renderTrajectoryChart(i,c,l,e,n,o):`<section class="kan-timeline"><ol>
|
|
127
|
+
${i.map(p=>{let f=p.namespace||"",k=f.split("/")[1]?.split("@")[0]??"",h=f.split("@")[1]??"",m=h?me(h):void 0,b=this.resourceHref({publisher:Q(p),package_:k,name:p.name,...m?{version:m}:{}},n),v=o(p),w=v?`<span class="kan-timeline-date">${g(v)}</span>`:"",S=h||p.name;return`<li class="kan-timeline-node"><a href="${g(b)}"><span class="kan-timeline-key">${g(S)}</span>${w}</a></li>`}).join(`
|
|
128
|
+
`)}
|
|
129
|
+
</ol></section>`}renderTrajectoryChart(e,n,t,a,s,o){let i=a,c=F(i,Rn),l=F(i,mt),d=F(i,kt),p=F(i,Rr),f=yt(i,_r),k=yt(i,Kr),h=e.length,m=this.collectTrackedSeries(e,n,t,{hueBy:c,lowerPath:l,upperPath:d});if(m.length===0)return"<!-- LookRenderer.Timeline: no tracked series -->";let b=[];for(let _ of m){for(let P of _.points)P!==null&&b.push(P);for(let P of _.lower??[])P!==null&&b.push(P);for(let P of _.upper??[])P!==null&&b.push(P)}if(b.length===0)return"<!-- LookRenderer.Timeline: no metric values -->";let v=Math.min(...b),w=Math.max(...b);w-v<1e-9&&(v-=.5,w+=.5);let S=(w-v)*.08,R=f!==void 0?f:v-S,I=k!==void 0?k:w+S;I-R<1e-9&&(I=R+1);let U=1e3,A=440,x={top:28,right:24,bottom:56,left:52},G=U-x.left-x.right,te=A-x.top-x.bottom,N=_=>h<=1?x.left+G/2:x.left+_/(h-1)*G,T=_=>x.top+(1-(_-R)/(I-R))*te,J=(_,P)=>_.hue!==void 0?_.hue:Math.round(P*360/m.length),ie=[];for(let _=0;_<5;_++){let P=R+_*(I-R)/4,re=T(P);ie.push(`<line x1="${x.left}" y1="${re.toFixed(1)}" x2="${(U-x.right).toFixed(1)}" y2="${re.toFixed(1)}" class="kan-fan-grid"/>`),ie.push(`<text x="${(x.left-8).toFixed(1)}" y="${(re+4).toFixed(1)}" class="kan-fan-axis" text-anchor="end">${P.toFixed(2)}</text>`)}let be=[];e.forEach((_,P)=>{let re=this.hrefForSubject(_,s),ge=(_.namespace||"").split("@")[1]??"",se=N(P),ce=ln(o(_));be.push(`<a href="${g(re)}" class="kan-fan-xtick"><line x1="${se.toFixed(1)}" y1="${x.top}" x2="${se.toFixed(1)}" y2="${(A-x.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${se.toFixed(1)}" y="${(A-x.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${$e(ge||_.name)}</text>`+(ce?`<text x="${se.toFixed(1)}" y="${(A-x.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${$e(ce)}</text>`:"")+"</a>")});let O=[];m.forEach((_,P)=>{if(!_.lower||!_.upper)return;let re=J(_,P),ge=[],se=[];for(let le=0;le<h;le++){let Ee=_.upper[le],we=_.lower[le];Ee==null||we===null||we===void 0||(ge.push(`${N(le).toFixed(1)},${T(Ee).toFixed(1)}`),se.unshift(`${N(le).toFixed(1)},${T(we).toFixed(1)}`))}let ce=ge.concat(se);ce.length<3||O.push(`<polygon class="kan-fan-band" points="${ce.join(" ")}" fill="hsl(${re},65%,60%)"/>`)});let ee=[];m.forEach((_,P)=>{let ge=`hsl(${J(_,P)},65%,60%)`,se=[],ce=[];_.points.forEach((le,Ee)=>{if(le===null)return;let we=N(Ee),oe=T(le);se.push(`${we.toFixed(1)},${oe.toFixed(1)}`),ce.push(`<circle cx="${we.toFixed(1)}" cy="${oe.toFixed(1)}" r="3.5" fill="${ge}"/>`)}),se.length!==0&&ee.push(`<g class="kan-fan-series" data-series="${g(_.key)}"><polyline points="${se.join(" ")}" fill="none" stroke="${ge}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`+ce.join("")+"</g>")});let y=`<svg class="kan-fan-svg" viewBox="0 0 ${U} ${A}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+ie.join("")+be.join("")+O.join("")+ee.join("")+"</svg>",L=p?`${g(p)}=`:"",M=m.map((_,P)=>{let re=J(_,P),ge=_.points.filter(oe=>oe!==null),se=ge.length?ge[0]:void 0,ce=ge.length?ge[ge.length-1]:void 0,le="";if(ce!==void 0&&se!==void 0){let oe=ce-se;if(Math.abs(oe)>=.005){let Ce=oe>0?"up":"down",Le=oe>0?"\u25B2":"\u25BC";le=` <span class="kan-fan-delta ${Ce}">${oe>0?"+":""}${oe.toFixed(2)} ${Le}</span>`}else le=' <span class="kan-fan-delta flat">\u2014</span>'}let Ee=ce!==void 0?`${L}${ce.toFixed(2)}`:"\u2014",we=_.lastSubject&&this.isLinkable(Q(_.lastSubject),s)?`<a href="${g(this.hrefForSubject(_.lastSubject,s))}">${g(_.label)}</a>`:g(_.label);return`<div class="kan-fan-legend-item" style="--kan-fan-hue:${re}"><span class="kan-fan-swatch"></span><span class="kan-fan-legend-label">${we}</span><span class="kan-fan-legend-cur">${Ee}${le}</span></div>`});return`<section class="kan-fan"><div class="kan-fan-chart">${y}</div><div class="kan-fan-legend">${M.join("")}</div></section>`}renderResourceGrid(e,n,t){let a=H(e,pe);if(!a)return"<!-- LookRenderer.ResourceGrid: no look.source -->";let s=Z(this.catalog,a),o=s?he(s).some(l=>{let d=l.subject.name;return d==="ObjectProperty"||d==="DatatypeProperty"||d==="Property"}):!1,i=[];if(o&&t){let l=this.readPropertyValueReferences(t,a);for(let d of l){let p=Z(this.catalog,{publisher:d.subject.publisher,package_:d.subject.package_,name:d.subject.name,...d.subject.version?{version:d.subject.version}:{}});p&&i.push(p)}}else i=this.findInstancesOfClass(a);if(i.length===0)return`<!-- LookRenderer.ResourceGrid: no resources for ${a.publisher}/${a.package_}/${a.name} -->`;let c=[];for(let l of i){let d=B(this.catalog,l),p=d.label,f=d.summary,k=l.namespace||"",h=k.split("/")[1]?.split("@")[0]??"",m=k.split("@")[1]??"",b=m?me(m):void 0,v=this.resourceHref({publisher:Q(l),package_:h,name:l.name,...b?{version:b}:{}},n),w=f?`<p class="kan-resource-card-subtitle">${g(f)}</p>`:"",S=`<h3 class="kan-resource-card-title">${g(p)}</h3>${w}`;c.push(this.isLinkable(Q(l),n)?`<a class="kan-resource-card" href="${g(v)}">${S}</a>`:`<span class="kan-resource-card">${S}</span>`)}return`<section class="kan-resource-grid">
|
|
130
|
+
${c.join(`
|
|
131
|
+
`)}
|
|
132
|
+
</section>`}findInstancesOfClass(e){let n=[];for(let t of this.catalog){if(!(t instanceof q))continue;he(t).map(o=>o.subject).some(o=>o.publisher===e.publisher&&o.package_===e.package_&&o.name===e.name)&&n.push(t)}return n}renderBreadcrumb(e,n,t){let s=(e.namespace||"").split("/");if(s.length<2)return"";let o=s[0],i=s[1]??"",c=i.split("@")[0]??"",l=i.split("@")[1]??"";if(!o||!c)return"";if(t?.bareOverview)return`<nav class="kan-breadcrumb"><ol>
|
|
133
|
+
<li><a href="${g(this.publisherHref(o))}">${g(o)}</a></li>
|
|
134
|
+
<li aria-current="page">${g(c)}</li>
|
|
135
|
+
</ol></nav>`;let d=e.name,f=!!Z(this.catalog,{publisher:o,package_:c,name:c}),k=l?`${c}@${l}`:c,h=this.resourceHref({publisher:o,package_:c,name:c,...l?{version:me(l)}:{}},o),m=e.name===c,b=[];return b.push(`<li><a href="${g(this.publisherHref(o))}">${g(o)}</a></li>`),m?b.push(`<li aria-current="page">${g(k)}</li>`):(b.push(f?`<li><a href="${g(h)}">${g(k)}</a></li>`:`<li>${g(k)}</li>`),b.push(`<li aria-current="page">${g(d)}</li>`)),`<nav class="kan-breadcrumb"><ol>
|
|
136
|
+
${b.join(`
|
|
137
|
+
`)}
|
|
138
|
+
</ol></nav>`}renderNavGroup(e,n){let t=X(this.publisherSubject(n),ga),a=t instanceof V?t.object??[]:t instanceof C&&t.object instanceof K?[t.object]:[];if(a.length===0)return"";let s=[];for(let o of a){if(!(o instanceof K))continue;let i=Z(this.catalog,{publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name}),{href:c,label:l}=this.resolveNavEntry(o,i,n),d=this.hrefForSubject(e,n),p=c===d?' aria-current="page"':"";s.push(`<li><a class="kan-nav-link" href="${g(c)}"${p}>${g(l)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
|
|
139
|
+
${s.join(`
|
|
140
|
+
`)}
|
|
141
|
+
</ul></nav>`}renderSiteFooter(e){let n=X(this.publisherSubject(e),ma),t;if(n instanceof z?t=n.object:n instanceof C&&n.object instanceof K&&(t=Z(this.catalog,{publisher:n.object.subject.publisher,package_:n.object.subject.package_,name:n.object.subject.name})),!t)return"";let a=F(t,ka),s=X(t,ha),o=s instanceof V?s.object??[]:s instanceof C&&s.object instanceof K?[s.object]:[],i=[];for(let l of o){if(!(l instanceof K))continue;let d=Z(this.catalog,{publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name}),{href:p,label:f}=this.resolveNavEntry(l,d,e);i.push(`<a class="kan-footer-link" href="${g(p)}">${g(f)}</a>`)}if(!a&&i.length===0)return"";let c=[];return i.length>0&&c.push(`<div class="kan-footer-links">${i.join("")}</div>`),a&&c.push(`<p class="kan-footer-text">${g(a)}</p>`),`<footer class="kan-site-footer">${c.join(`
|
|
142
|
+
`)}</footer>`}resolveNavEntry(e,n,t){if(n&&he(n).map(c=>c.subject).some(c=>c.publisher===Sn.publisher&&c.package_===Sn.package_&&c.name===Sn.name)){let c=F(n,jn),l=X(n,dt);if(l instanceof C&&l.object instanceof K){let d=l.object,p=this.readLabelForUri({publisher:d.subject.publisher,package_:d.subject.package_,name:d.subject.name});return{href:this.urlForReference(d,dt,t),label:c??p??d.subject.name}}}let a=this.resourceHref({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},t,"*"),s=n?B(this.catalog,n).label:e.subject.name;return{href:a,label:s}}codeHighlighter(){return this._codeHighlighter||(this._codeHighlighter=new rn(this.collectGrammars())),this._codeHighlighter}collectGrammars(){let e=[];for(let n of this.catalog){if(!(n instanceof q)||!he(n).some(i=>E(i.subject,nr)))continue;let t=F(n,tr);if(!t)continue;let a=X(n,ar),s=a instanceof V?a.object??[]:[],o=[];for(let i of s){if(!(i instanceof D))continue;let c=H(i,rr),l=F(i,sr);!c||!l||o.push({tokenClass:c.name,pattern:l})}e.push({language:t,rules:o})}return e}renderLinks(e,n){let t=H(e,pe);if(!t)return"";let a=X(n,t),s=[];a instanceof V?s=a.object??[]:a instanceof z?s=[a.object]:a instanceof C&&a.object instanceof K&&(s=[a.object]);let o=[];for(let i of s){let c;if(i instanceof D?c=i:i instanceof K&&(c=Z(this.catalog,{publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name})),!c)continue;let l=F(c,ir);if(!l)continue;let d=F(c,jn)??l,p=F(c,lt),f=p?` title="${g(p)}"`:"";o.push(`<a class="kan-extlink" href="${g(l)}"${f} target="_blank" rel="noopener noreferrer">${g(d)}</a>`)}return o.length===0?"":`<section class="kan-extlink-row">${o.join("")}</section>`}renderMarkdown(e,n,t){let a=H(e,pe);if(!a)return"<!-- LookRenderer.Markdown: no look.source -->";let s=X(n,a),o=new Map,i;if(s instanceof Ae?i=this.resolveMarkdownLinks(s,t,o):s instanceof W?i=s.object:i=this.readPropertyValueText(n,a),!i)return"";let c=this.codeHighlighter(),l=Xe(i,{highlight:(d,p)=>c.highlight(d,p)});for(let[d,p]of o){let f=new RegExp('(<a href="'+wt(d)+'">)([^<]*)(</a>)',"g");l=l.replace(f,`$1<img class="kan-md-chip" src="${g(p)}" alt="" loading="lazy">$2$3`)}return`<section class="kan-markdown">
|
|
143
|
+
${l}
|
|
144
|
+
</section>`}resolveMarkdownLinks(e,n,t){let a=e.object,s=[...e.links].sort((o,i)=>i.startOffset-o.startOffset);for(let o of s){let i;if(o.target&&this.isLinkable(o.target.subject.publisher,n)){let c=o.target.subject,l=(o.displayText??this.readLabelForUri({publisher:c.publisher,package_:c.package_,name:c.name})??o.reference).replace(/[[\]]/g,""),d=this.resourceHref({publisher:c.publisher,package_:c.package_,name:c.name,...c.version?{version:c.version}:{}},n);t&&t.set(d,`${d}.svg`),i=`[${l}](${d})`}else if(o.target){let c=o.target.subject;i=(o.displayText??this.readLabelForUri({publisher:c.publisher,package_:c.package_,name:c.name})??o.reference).replace(/[[\]]/g,"")}else i=o.displayText??o.reference;a=a.slice(0,o.startOffset)+i+a.slice(o.endOffset)}return a}renderRawMarkdown(e){let n=this.findCascadedLook(e);if(!n)return;let t=On(n.declaration),a=[];for(let s of t){let o=ze(s);if(!o||!E(o,ut))continue;let i=H(s,pe);if(!i)continue;let c=this.readPropertyValueText(e,i);c&&a.push(c)}return a.length>0?a.join(`
|
|
145
|
+
|
|
146
|
+
`):void 0}renderHero(e,n,t){let a=m=>{let b=X(e,m);return b instanceof ae?b.object===!0:b instanceof W&&b.object==="true"},s=a(xr),o=!s&&a(Mr),i=s||o,l=[`<header class="${s?"kan-hero kan-hero-has-avatar":o?"kan-hero kan-hero-has-icon":"kan-hero"}">`];if(i){let m=this.svgUrlForSubject(n,t),b=s?"kan-hero-avatar":"kan-hero-icon";l.push(`<img class="${b}" src="${g(m)}" alt="" loading="lazy"/>`),l.push('<div class="kan-hero-text">')}let d=H(e,Cr);if(d){let m=this.readPropertyValueText(n,d);m&&l.push(`<span class="kan-hero-eyebrow">${g(fn(m)??m)}</span>`)}let p=H(e,Fr),f="";p&&(f=this.readPropertyValueText(n,p)??""),f||(f=B(this.catalog,n).label),l.push(`<h1 class="kan-hero-title">${g(fn(f)??f)}</h1>`);let k=H(e,Vr);if(k){let m=this.readPropertyValueText(n,k);m&&l.push(`<p class="kan-hero-subtitle">${g(fn(m)??m)}</p>`)}let h=H(e,vt);if(h){let m=this.readPropertyValueReferences(n,h);if(m.length>0){let b=m.map(v=>this.renderBadge(v,vt,t)).join("");l.push(`<div class="kan-hero-badges">${b}</div>`)}}return i&&l.push("</div>"),l.push("</header>"),l.join(`
|
|
147
|
+
`)}renderPropertyList(e,n,t){let a=H(e,pe);if(!a)return"<!-- LookRenderer: PropertyList missing look.source -->";let s=this.readLabelForUri(a)??a.name,o=X(n,a),i=this.gatherValueItems(o),c=i.length>0?i.map(l=>`<li>${this.renderInlineValue(l,pe,t)}</li>`).join(""):'<li class="kan-empty">(no values)</li>';return['<section class="kan-property-list">',`<h3 class="kan-property-list-title">${g(s)}</h3>`,`<ul class="kan-property-list-items">${c}</ul>`,"</section>"].join(`
|
|
148
|
+
`)}renderPropertyTable(e,n,t,a=""){let s=H(e,pe);if(!s)return"<!-- LookRenderer: PropertyTable missing look.source -->";let o=this.gatherValueItems(X(n,s)).filter(l=>l instanceof D);if(o.length===0)return"";let i=this.readLabelForUri(s)??s.name,c=a?`${a}.${s.name}`:s.name;return this.renderEmbeddedTable(o,t,i,c)}renderEmbeddedTable(e,n,t,a){let s=[],o=new Set;for(let m of e)for(let b of m.statement){let v=b.predicate?.subject;if(!v||this.isMetaPredicate(v))continue;let w=`${v.publisher}/${v.package_}/${v.name}`;o.has(w)||(o.add(w),s.push({uri:{publisher:v.publisher,package_:v.package_,name:v.name},label:this.readLabelForUri(v)??v.name}))}if(s.length===0)return"";let i=e.map(m=>B(this.catalog,m).label),c=e.some((m,b)=>i[b]!==""&&i[b]!==m.name),l=!!a,d=(l?'<th class="kan-anchor-col"></th>':"")+(c?"<th></th>":"")+s.map(m=>`<th>${g(m.label)}</th>`).join(""),p=e.map((m,b)=>{let v=l&&m.name?`${a}.${m.name}`:"",w=v?` id="${g(v)}"`:"",S=l?`<td class="kan-anchor-col">${v?this.anchorLink(v):""}</td>`:"",R=c?`<th scope="row">${g(i[b]??"")}</th>`:"",I=s.map(U=>{let A=X(m,U.uri);return`<td>${A?this.tableCellValue(A,n):""}</td>`}).join("");return`<tr${w}>${S}${R}${I}</tr>`}).join(""),f=l&&a?` id="${g(a)}"`:"",k=l&&a?this.anchorLink(a):"",h=t?`<caption>${g(t)}${k}</caption>`:"";return`<table class="kan-property-table"${f}>${h}<thead><tr>${d}</tr></thead><tbody>${p}</tbody></table>`}tableCellValue(e,n){if(e instanceof Ae)return this.statementToMarkdownHtml(e,n);if(e instanceof W)return _t(e.object);if(e instanceof ue||e instanceof ae)return g(String(e.object));if(e instanceof C&&e.object instanceof K)return this.detailReferenceLink(e.object,n);if(e instanceof z)return this.renderEmbeddedTable([e.object],n);if(e instanceof V){let t=e.object??[],a=t.filter(s=>s instanceof D);return a.length>0&&a.length===t.length?this.renderEmbeddedTable(a,n):t.map(s=>s instanceof K?this.detailReferenceLink(s,n):s instanceof D?this.renderEmbeddedTable([s],n):g(String(s))).filter(s=>s).join(", ")}return""}statementToMarkdownHtml(e,n){let t=new Map,a;if(e instanceof Ae?a=this.resolveMarkdownLinks(e,n,t):e instanceof W&&(a=e.object),!a)return"";let s=this.codeHighlighter(),o=Xe(a,{highlight:(i,c)=>s.highlight(i,c)});for(let[i,c]of t){let l=new RegExp('(<a href="'+wt(i)+'">)([^<]*)(</a>)',"g");o=o.replace(l,`$1<img class="kan-md-chip" src="${g(c)}" alt="" loading="lazy">$2$3`)}return o}renderBadgeRow(e,n,t){let a=H(e,pe);if(!a)return"<!-- LookRenderer: BadgeRow missing look.source -->";let s=this.readPropertyValueReferences(n,a);return s.length===0?"":`<div class="kan-badge-row">${s.map(i=>this.renderBadge(i,pe,t)).join("")}</div>`}renderChipRow(e,n,t){let a=Un(e,Dr);if(a.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let s=[];for(let o of a){let i=X(n,o);if(!i)continue;let c=this.readLabelForUri(o)??o.name,l=this.renderStatementInlineValue(i,o,t);l&&s.push(`<span class="kan-chip"><span class="kan-chip-key">${g(c)}</span> <span class="kan-chip-val">${l}</span></span>`)}return s.length===0?"":`<div class="kan-chip-row">${s.join("")}</div>`}renderReferenceList(e,n,t){let a=Un(e,$t);if(a.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let s=F(e,pt),o=F(e,wr),i=[];for(let c of a){let l=this.readPropertyValueReferences(n,c);if(l.length===0)continue;let d=this.readLabelForUri(c)??c.name;if(s){let p=l.map(f=>this.renderDetailRow(f,s,o,t)).filter(f=>f).join("");p&&i.push(`<dt>${g(d)}</dt><dd><ul class="kan-ref-rows">${p}</ul></dd>`)}else{let p=l.map(f=>this.renderReferenceLink(f,$t,t)).join(", ");i.push(`<dt>${g(d)}</dt><dd>${p}</dd>`)}}return i.length===0?"":`<dl class="kan-reference-list">${i.join("")}</dl>`}renderDetailRow(e,n,t,a){let s=Z(this.catalog,{publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name,...e.subject.version?{version:e.subject.version}:{}});if(!s)return"";let o=this.resolvePath(s,n)??B(this.catalog,s).label,i="";if(t){let p=this.resolvePath(s,t);p&&(i=`<span class="kan-ref-badge">${g(p)}</span>`)}let c=`<span class="kan-ref-text">${g(o)}</span>${i}`;if(!this.isLinkable(Q(s),a))return`<li class="kan-ref-row"><span class="kan-ref-rowlink">${c}</span></li>`;let l=this.hrefForSubject(s,a),d=this.svgUrlForSubject(s,a);return`<li class="kan-ref-row"><a class="kan-ref-rowlink" href="${g(l)}"><img class="kan-ref-icon" src="${g(d)}" alt="" loading="lazy"/>`+c+"</a></li>"}readPropertyValueText(e,n){let t=X(e,n);if(t){if(t instanceof W)return t.object;if(t instanceof C){let a=t.object;return this.readLabelForUri({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name})??a.subject.name}if(t instanceof z)return this.readEmbeddedText(t.object,0)||void 0;if(t instanceof V)return(t.object??[]).map(s=>s instanceof K?this.readLabelForUri({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name})??s.subject.name:s instanceof D?this.readEmbeddedText(s,0):String(s)).filter(s=>s).join(", ")}}readEmbeddedText(e,n){if(n>=bt)return"\u2026";let t=[];for(let a of e.statement)if(a.predicate?.subject?.name!=="type")if(a instanceof W)t.push(a.object);else if(a instanceof ue||a instanceof ae)t.push(String(a.object));else if(a instanceof C){let o=a.object;t.push(this.readLabelForUri({publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name})??o.subject.name)}else a instanceof z&&t.push(this.readEmbeddedText(a.object,n+1));return t.filter(a=>a).join(", ")}readPropertyValueReferences(e,n){let t=X(e,n);if(!t)return[];if(t instanceof C)return[t.object];if(t instanceof V){let a=[];for(let s of t.object??[])s instanceof K&&a.push(s);return a}return[]}gatherValueItems(e){return e?e instanceof V?e.object??[]:e instanceof C?[e.object]:e instanceof z?[e.object]:e instanceof W?[e.object]:e instanceof ue||e instanceof ae?[e.object]:[]:[]}renderInlineValue(e,n,t,a=0){return e instanceof K?this.renderReferenceLink(e,n,t):e instanceof D?this.renderEmbeddedInline(e,t,a):typeof e=="string"?g(e):typeof e=="number"||typeof e=="boolean"?g(String(e)):""}renderStatementInlineValue(e,n,t,a=0){return e instanceof W?g(e.object):e instanceof ue||e instanceof ae?g(String(e.object)):e instanceof C?this.renderReferenceLink(e.object,n,t):e instanceof z?this.renderEmbeddedInline(e.object,t,a):e instanceof V?(e.object??[]).map(o=>this.renderInlineValue(o,n,t,a)).filter(o=>o).join(", "):""}renderEmbeddedInline(e,n,t=0){if(t>=bt)return"\u2026";let a=[];for(let s of e.statement){let o=s.predicate?.subject;if(!o||o.name==="type")continue;let i=this.readLabelForUri({publisher:o.publisher,package_:o.package_,name:o.name})??o.name,c=this.renderStatementInlineValue(s,o,n,t+1);c&&a.push(`<dt>${g(i)}</dt><dd>${c}</dd>`)}return a.length?`<dl class="kan-embedded">${a.join("")}</dl>`:""}renderReferenceLink(e,n,t){let a=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name;if(!this.isLinkable(e.subject.publisher,t))return`<span class="kan-link-plain">${g(a)}</span>`;let s=this.urlForReference(e,n,t);return`<a class="kan-link" href="${g(s)}">${g(a)}</a>`}isLinkable(e,n){return this.publisherFirst||e===n}renderBadge(e,n,t){let a=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name,s=this.readCommentForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name}),o=s?` title="${g(s)}"`:"";if(!this.isLinkable(e.subject.publisher,t))return`<span class="kan-badge"${o}>${g(a)}</span>`;let i=this.urlForReference(e,n,t);return`<a class="kan-badge" href="${g(i)}"${o}>${g(a)}</a>`}urlForReference(e,n,t){let a=n?this.getUrlFormForProperty(n):"=";return this.resourceHref({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},t,a)}getUrlFormForProperty(e){let n=Z(this.catalog,e);if(!n)return"=";let t=F(n,Br);return t==="*"||t==="^"||t==="~"||t==="="?t:"="}readLabelForUri(e){let n=Z(this.catalog,e);if(n)return B(this.catalog,n).label}readCommentForUri(e){let n=Z(this.catalog,e);if(n)return B(this.catalog,n).summary}};function Ln(r){let e=new Map;for(let n of r.statement){if(!(n instanceof z)||!Se(n,dn.publisher,dn.package_,dn.name))continue;let t=n.object;for(let a of t.statement){if(!(a instanceof W))continue;let s=a.predicate?.subject?.name;if(!s)continue;let o=a.object;e.has(s)||e.set(s,o)}}return e}function on(r){for(let e of r.statement)if(e instanceof z&&Se(e,un.publisher,un.package_,un.name))return e.object}function On(r){for(let e of r.statement){if(!(e instanceof V)||!Se(e,En.publisher,En.package_,En.name))continue;let n=[];for(let t of e.object??[])t instanceof D&&n.push(t);return n}return[]}function ze(r){for(let e of r.statement)if(e instanceof C&&e.predicate?.subject?.name==="type"&&e.object instanceof K){let n=e.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function H(r,e){for(let n of r.statement)if(n instanceof C&&Se(n,e.publisher,e.package_,e.name)&&n.object instanceof K){let t=n.object.subject;return{publisher:t.publisher,package_:t.package_,name:t.name}}}function Un(r,e){for(let n of r.statement){if(!(n instanceof V)||!Se(n,e.publisher,e.package_,e.name))continue;let t=[];for(let a of n.object??[])a instanceof K&&t.push({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name});return t}return[]}function X(r,e){for(let n of r.statement)if(Se(n,e.publisher,e.package_,e.name))return n}function F(r,e){for(let n of r.statement)if(n instanceof W&&Se(n,e.publisher,e.package_,e.name))return n.object}function cn(r,e){for(let n of r.statement)if(n instanceof z&&Se(n,e.publisher,e.package_,e.name))return n.object}function yt(r,e){for(let n of r.statement)if(n instanceof ue&&Se(n,e.publisher,e.package_,e.name))return n.object}function Hr(r,e){for(let n of r.statement)if(n instanceof ae&&Se(n,e.publisher,e.package_,e.name))return n.object===!0;return!1}function zr(r){for(let e of he(r))if(E(e.subject,aa)||E(e.subject,ra))return!0;return!1}function he(r){let e=[];for(let n of r.statement)if(n instanceof C){if(n.predicate?.subject?.name!=="type")continue;n.object instanceof K&&e.push(n.object)}else if(n instanceof V){if(n.predicate?.subject?.name!=="type")continue;for(let t of n.object??[])t instanceof K&&e.push(t)}return e}function Qe(r){let e=[];for(let n of r.statement)if(n instanceof C){if(n.predicate?.subject?.name!=="subClassOf")continue;n.object instanceof K&&e.push(n.object)}else if(n instanceof V){if(n.predicate?.subject?.name!=="subClassOf")continue;for(let t of n.object??[])t instanceof K&&e.push(t)}return e}function je(r,e){let n=[];for(let t of r){if(!(t instanceof q)||t.name!==e.name)continue;(t.namespace||"").startsWith(`${e.publisher}/${e.package_}@`)&&n.push(t)}return n.sort((t,a)=>{let s=me((t.namespace||"").split("@")[1]??""),o=me((a.namespace||"").split("@")[1]??"");return s?o?qe(o,s):-1:o?1:0}),n}function Z(r,e){let n="version"in e?e.version:void 0;if(n){let t=`${e.publisher}/${e.package_}@${n.major}.${n.minor}.${n.patch}`;for(let a of r)if(a instanceof q&&a.name===e.name&&a.namespace===t)return a}for(let t of r){if(!(t instanceof q)||t.name!==e.name)continue;if((t.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return t}}function Se(r,e,n,t){let a=r.predicate?.subject;return a?a.publisher===e&&a.package_===n&&a.name===t:!1}function E(r,e){return r.publisher===e.publisher&&r.package_===e.package_&&r.name===e.name}function ne(r){return`${r.publisher}/${r.package_}/${r.name}`}function Q(r){let e=r.namespace||"",n=e.indexOf("/");return n>=0?e.substring(0,n):e}function g(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Gr(r){let e=r.lastIndexOf(".");return e>=0?r.substring(e+1):r}function qr(r,e){for(let n of r.statement)if(n.predicate?.subject?.name===e)return n}function Wr(r,e){let n=[];for(let t of r.statement)t.predicate?.subject?.name===e&&n.push(t);return n}function $e(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function jt(r,e){return e==null?"":Be(e)?e.value:r==="string-literal"?typeof e=="string"?e:String(e):Array.isArray(e)?e.map(n=>Be(n)?n.value:$e(typeof n=="string"?n:String(n))).join(""):$e(typeof e=="string"?e:String(e))}function In(r,e){return r.length<=e?r:r.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function St(r){return r.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function wt(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function _t(r){let e=fn(r);return g(e||r)}function fn(r){let e=/^(\d{4})-(\d{2})-(\d{2})([T ]\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?)?$/.exec(r.trim());if(!e)return;let n=Date.parse(r);if(!Number.isFinite(n))return;let t=new Date(n),s=`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][t.getUTCMonth()]} ${t.getUTCDate()}, ${t.getUTCFullYear()}`;if(!e[4])return s;let o=t.getUTCHours(),i=(o+11)%12+1,c=o>=12?"PM":"AM";return`${s} \xB7 ${i}:${String(t.getUTCMinutes()).padStart(2,"0")} ${c} UTC`}function ln(r){if(!r)return"";let e=/^(\d{4})-(\d{2})-(\d{2})/.exec(r);return e?`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][parseInt(e[2],10)-1]??e[2]} ${parseInt(e[3],10)}`:r}export{B as a,Xe as b,Be as c,Ke as d,nn as e,Y as f,ds as g,Fe as h,an as i,Fn as j};
|