@kanonak-protocol/sdk 5.32.0 → 5.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,22 +1,22 @@
1
- import{a as ot}from"./chunk-6VIUXP4N.js";import{a as D,b as yn,c as De,h as d,m as $n}from"./chunk-PVUBHIU2.js";import{a as it}from"./chunk-HF5FJBS2.js";import{a as gt}from"./chunk-PEJALHXK.js";import{fa as en,ga as je,ha as nn,ia as vn,ma as mt}from"./chunk-7UYXTYXC.js";import{A as ft,B as Fe,C as pt,b as Ie,c as Y,d as x,g as Z,h as ge,i as fe,j as H,k as ee,l as B,m as ne,n as ie,o as ct,p as lt,q as Te,r as w,t as Be,u as le,v as ut,w as dt,x as We,y as Le,z as _e}from"./chunk-CJMVIOZX.js";import{a as bn}from"./chunk-FUUTGGJS.js";import{c as kn,d as rt,e as hn,g as st}from"./chunk-QILEJIFU.js";var Q=class extends Error{constructor(n,t){super(`${n} (at ${t})`);this.path=t}path};function Go(r,e){let n=r.name,t=xa(e),a={catalog:e,depth:0};if(w(r,d.InstanceTransformation))return ya(r,n,a,t);if(w(r,d.SetTransformation))return va(r,n,a,t);throw new Q("Subject is not a recognized v3 transformation type \u2014 expected InstanceTransformation or SetTransformation",n)}function ya(r,e,n,t){return{kind:"instance",name:r.name,inputPattern:St(r,e),rule:Sn(r,d.rule,`${e}.rule`,n),artifactName:Sn(r,d.artifactName,`${e}.artifactName`,n),outputs:wt(r,`${e}.outputs`),overrides:_t(r,`${e}.formatOverrides`,n),fragments:t}}function va(r,e,n,t){let a=Ve(r,d.partitionBy);return{kind:"set",name:r.name,inputPattern:St(r,e),rule:Sn(r,d.rule,`${e}.rule`,n),artifactName:Sn(r,d.artifactName,`${e}.artifactName`,n),outputs:wt(r,`${e}.outputs`),overrides:_t(r,`${e}.formatOverrides`,n),partitionBy:a,fragments:t}}function St(r,e){let n=ln(r,d.inputPattern);if(!n)throw new Q("inputPattern is required",e);return $a(n,`${e}.inputPattern`)}function $a(r,e){let n=Ve(r,d.matchesClass);if(!n)throw new Q("matchesClass is required",e);let t=[];for(let o of we(r,d.requires))if(o instanceof H)t.push(Dn(o.object.subject));else if(o instanceof B)for(let i of o.object)i instanceof x&&t.push(Dn(i.subject));let a=[],s=0;for(let o of we(r,d.sortBy))if(o instanceof B)for(let i of o.object)i instanceof D&&a.push(kt(i,`${e}.sortBy[${s++}]`));else o instanceof ee&&a.push(kt(o.object,`${e}.sortBy[${s++}]`));return{matchesClass:n,requires:t,sortBy:a}}function kt(r,e){let n=Ve(r,d.byProperty);if(!n)throw new Q("SortKey.byProperty is required",e);let t=Ve(r,d.order);if(!t)throw new Q("SortKey.order is required",e);if(ie(t,d.ascending))return{byProperty:n,order:"ascending"};if(ie(t,d.descending))return{byProperty:n,order:"descending"};throw new Q(`SortKey.order must reference tx.ascending or tx.descending; got ${t.publisher}/${t.package_}/${t.name}`,e)}function Sn(r,e,n,t){let a=ln(r,e);if(!a)throw new Q("expression is required",n);return Pe(a,n,t)}function Pe(r,e,n){if(w(r,d.StringLiteral))return{kind:"string-literal",value:$e(r,d.stringLiteral,e)};if(w(r,d.IntegerLiteral))return{kind:"integer-literal",value:$t(r,d.integerLiteral,e)};if(w(r,d.DecimalLiteral))return{kind:"decimal-literal",value:$t(r,d.decimalLiteral,e)};if(w(r,d.BooleanLiteral))return{kind:"boolean-literal",value:Ua(r,d.booleanLiteral,e)};if(w(r,d.VarRef))return{kind:"var-ref",varName:$e(r,d.varName,e)};if(w(r,d.PropertyRead))return{kind:"property-read",source:S(r,d.readSource,`${e}.readSource`,n),readProp:He(r,d.readProp,e,"readProp")};if(w(r,d.Traverse))return{kind:"traverse",source:S(r,d.traverseSource,`${e}.traverseSource`,n),through:He(r,d.through,e,"through"),step:S(r,d.step,`${e}.step`,n)};if(w(r,d.BuildAstNode))return{kind:"build-ast-node",astClass:He(r,d.astClass,e,"astClass"),set:wa(r,`${e}.set`,n)};if(w(r,d.When))return{kind:"when",condition:S(r,d.condition,`${e}.condition`,n),thenBuild:S(r,d.thenBuild,`${e}.thenBuild`,n),elseBuild:Sa(r,d.elseBuild,`${e}.elseBuild`,n)};if(w(r,d.Concat))return{kind:"concat",parts:Mn(r,d.parts,`${e}.parts`,n)};if(w(r,d.Fallback))return{kind:"fallback",primary:S(r,d.primary,`${e}.primary`,n),alternate:S(r,d.alternate,`${e}.alternate`,n)};if(w(r,d.UriName))return{kind:"uri-name",source:S(r,d.uriNameOf,`${e}.uriNameOf`,n)};if(w(r,d.UriPublisher))return{kind:"uri-publisher",source:S(r,d.uriPublisherOf,`${e}.uriPublisherOf`,n)};if(w(r,d.UriPackage))return{kind:"uri-package",source:S(r,d.uriPackageOf,`${e}.uriPackageOf`,n)};if(w(r,d.UriVersion))return{kind:"uri-version",source:S(r,d.uriVersionOf,`${e}.uriVersionOf`,n)};if(w(r,d.SubjectUri))return{kind:"subject-uri",source:S(r,d.subjectOf,`${e}.subjectOf`,n)};if(w(r,d.UriLiteral))return{kind:"uri-literal",refTo:He(r,d.refTo,e,"refTo")};if(w(r,d.DisplayLabel))return{kind:"display-label",labelTarget:He(r,d.labelTarget,e,"labelTarget"),labelSource:He(r,d.labelSource,e,"labelSource")};if(w(r,d.ResolveRef))return{kind:"resolve-ref",source:S(r,d.resolveSource,`${e}.resolveSource`,n)};if(w(r,d.Normalize))return{kind:"normalize",source:S(r,d.normSource,`${e}.normSource`,n),normKind:_a(r,e)};if(w(r,d.UnescapedString))return{kind:"unescaped-string",source:S(r,d.unescapedSource,`${e}.unescapedSource`,n)};if(w(r,d.RenderMarkdown))return{kind:"render-markdown",source:S(r,d.renderSource,`${e}.renderSource`,n),readProp:He(r,d.renderProp,e,"renderProp"),format:ja(r,e)};if(w(r,d.IsSet))return{kind:"is-set",check:S(r,d.checkExpr,`${e}.checkExpr`,n)};if(w(r,d.CallFragment))return Ea(r,e,n);if(w(r,d.Join))return{kind:"join",source:S(r,d.source,`${e}.source`,n),separator:$e(r,d.separator,e)};if(w(r,d.Count))return{kind:"count",source:S(r,d.source,`${e}.source`,n)};if(w(r,d.Sum))return{kind:"sum",source:S(r,d.source,`${e}.source`,n)};if(w(r,d.Min))return{kind:"min",source:S(r,d.source,`${e}.source`,n)};if(w(r,d.Max))return{kind:"max",source:S(r,d.source,`${e}.source`,n)};if(w(r,d.Average))return{kind:"average",source:S(r,d.source,`${e}.source`,n)};if(w(r,d.ForEach))return{kind:"for-each",source:S(r,d.source,`${e}.source`,n),loopVar:$e(r,d.loopVar,e),emit:S(r,d.emit,`${e}.emit`,n)};if(w(r,d.ListMap))return{kind:"list-map",source:S(r,d.source,`${e}.source`,n),loopVar:$e(r,d.loopVar,e),mapBody:S(r,d.mapBody,`${e}.mapBody`,n)};if(w(r,d.Filter))return{kind:"filter",source:S(r,d.source,`${e}.source`,n),loopVar:$e(r,d.loopVar,e),predicate:S(r,d.predicate,`${e}.predicate`,n)};if(w(r,d.PartitionBy))return{kind:"partition-by",source:S(r,d.source,`${e}.source`,n),loopVar:$e(r,d.loopVar,e),partitionKey:S(r,d.partitionKey,`${e}.partitionKey`,n)};if(w(r,d.DistinctBy))return{kind:"distinct-by",source:S(r,d.source,`${e}.source`,n),loopVar:$e(r,d.loopVar,e),distinctKey:S(r,d.distinctKey,`${e}.distinctKey`,n)};if(w(r,d.AllStatements))return{kind:"all-statements",source:S(r,d.statementsOf,`${e}.statementsOf`,n)};if(w(r,d.StatementPredicate))return{kind:"statement-predicate",source:S(r,d.predicateOf,`${e}.predicateOf`,n)};if(w(r,d.StatementValue))return{kind:"statement-value",source:S(r,d.valueOf,`${e}.valueOf`,n)};if(w(r,d.DateFormat))return{kind:"date-format",source:S(r,d.dateSource,`${e}.dateSource`,n),format:Ra(r,e)};if(w(r,d.NumberFormat)){let t=An(r,d.fractionDigits);if(t!==void 0&&(!Number.isInteger(t)||t<0||t>20))throw new Q(`fractionDigits must be an integer between 0 and 20; got ${t}`,e);let a=qe(r,d.currencyCode);return{kind:"number-format",source:S(r,d.numberSource,`${e}.numberSource`,n),style:Ka(r,e),...t!==void 0?{fractionDigits:t}:{},...a!==void 0?{currencyCode:a}:{}}}if(w(r,d.Add))return{kind:"add",left:S(r,d.arithLeft,`${e}.arithLeft`,n),right:S(r,d.arithRight,`${e}.arithRight`,n)};if(w(r,d.Subtract))return{kind:"subtract",left:S(r,d.arithLeft,`${e}.arithLeft`,n),right:S(r,d.arithRight,`${e}.arithRight`,n)};if(w(r,d.Multiply))return{kind:"multiply",left:S(r,d.arithLeft,`${e}.arithLeft`,n),right:S(r,d.arithRight,`${e}.arithRight`,n)};if(w(r,d.Divide))return{kind:"divide",left:S(r,d.arithLeft,`${e}.arithLeft`,n),right:S(r,d.arithRight,`${e}.arithRight`,n)};if(w(r,d.Reverse))return{kind:"reverse",source:S(r,d.source,`${e}.source`,n)};if(w(r,d.WindowedMap)){let t=An(r,d.windowSize);if(t===void 0||!Number.isInteger(t)||t<1)throw new Q("windowSize must be a positive integer",`${e}.windowSize`);return{kind:"windowed-map",source:S(r,d.source,`${e}.source`,n),windowSize:t,windowVar:$e(r,d.windowVar,e),windowBody:S(r,d.windowBody,`${e}.windowBody`,n)}}if(w(r,d.PairwiseMap))return{kind:"pairwise-map",source:S(r,d.source,`${e}.source`,n),firstVar:$e(r,d.firstVar,e),secondVar:$e(r,d.secondVar,e),pairBody:S(r,d.pairBody,`${e}.pairBody`,n)};if(w(r,d.Scan))return{kind:"scan",source:S(r,d.source,`${e}.source`,n),initialState:S(r,d.initialState,`${e}.initialState`,n),stateVar:$e(r,d.stateVar,e),elementVar:$e(r,d.elementVar,e),accumulate:S(r,d.accumulate,`${e}.accumulate`,n)};if(w(r,d.ListItemAt))return{kind:"list-item-at",source:S(r,d.source,`${e}.source`,n),itemIndex:S(r,d.itemIndex,`${e}.itemIndex`,n)};if(w(r,d.Equals))return{kind:"equals",left:S(r,d.compareLeft,`${e}.compareLeft`,n),right:S(r,d.compareRight,`${e}.compareRight`,n)};if(w(r,d.GreaterThan))return{kind:"greater-than",left:S(r,d.compareLeft,`${e}.compareLeft`,n),right:S(r,d.compareRight,`${e}.compareRight`,n)};if(w(r,d.LessThan))return{kind:"less-than",left:S(r,d.compareLeft,`${e}.compareLeft`,n),right:S(r,d.compareRight,`${e}.compareRight`,n)};if(w(r,d.GreaterThanOrEqual))return{kind:"greater-than-or-equal",left:S(r,d.compareLeft,`${e}.compareLeft`,n),right:S(r,d.compareRight,`${e}.compareRight`,n)};if(w(r,d.LessThanOrEqual))return{kind:"less-than-or-equal",left:S(r,d.compareLeft,`${e}.compareLeft`,n),right:S(r,d.compareRight,`${e}.compareRight`,n)};if(w(r,d.Not))return{kind:"not",operand:S(r,d.operand,`${e}.operand`,n)};if(w(r,d.And))return{kind:"and",operands:Mn(r,d.operands,`${e}.operands`,n)};if(w(r,d.Or))return{kind:"or",operands:Mn(r,d.operands,`${e}.operands`,n)};if(w(r,d.Contains))return{kind:"contains",haystack:S(r,d.haystack,`${e}.haystack`,n),needle:S(r,d.needle,`${e}.needle`,n)};if(w(r,d.Abs))return{kind:"abs",value:S(r,d.value,`${e}.value`,n)};if(w(r,d.Negate))return{kind:"negate",value:S(r,d.value,`${e}.value`,n)};if(w(r,d.IsReference))return{kind:"is-reference",check:S(r,d.kindCheck,`${e}.kindCheck`,n)};if(w(r,d.IsEmbedded))return{kind:"is-embedded",check:S(r,d.kindCheck,`${e}.kindCheck`,n)};if(w(r,d.IsList))return{kind:"is-list",check:S(r,d.kindCheck,`${e}.kindCheck`,n)};if(w(r,d.IsString))return{kind:"is-string",check:S(r,d.kindCheck,`${e}.kindCheck`,n)};if(w(r,d.IsNumber))return{kind:"is-number",check:S(r,d.kindCheck,`${e}.kindCheck`,n)};if(w(r,d.IsBoolean))return{kind:"is-boolean",check:S(r,d.kindCheck,`${e}.kindCheck`,n)};if(w(r,d.StatementObject))return{kind:"statement-object",source:S(r,d.statementSource,`${e}.statementSource`,n)};if(w(r,d.Let))return{kind:"let",bindName:$e(r,d.letName,e),bindValue:S(r,d.letValue,`${e}.letValue`,n),body:S(r,d.letBody,`${e}.letBody`,n)};if(w(r,d.GetStatementByName))return{kind:"get-statement-by-name",inSubject:S(r,d.inSubject,`${e}.inSubject`,n),byName:S(r,d.byName,`${e}.byName`,n)};throw new Q("Expression is not of a recognized v3 type \u2014 embedded has no matching subclass of tx.Expression",e)}function S(r,e,n,t){let a=ln(r,e);if(!a)throw new Q("child expression is required",n);return Pe(a,n,t)}function Sa(r,e,n,t){let a=ln(r,e);if(a)return Pe(a,n,t)}function Mn(r,e,n,t){let a=[],s=0;for(let o of we(r,e))if(o instanceof B)for(let i of o.object)i instanceof D&&a.push(Pe(i,`${n}[${s++}]`,t));else o instanceof ee&&a.push(Pe(o.object,`${n}[${s++}]`,t));return a}function wa(r,e,n){let t=[],a=0;for(let s of we(r,d.set))if(s instanceof B)for(let o of s.object)o instanceof D&&t.push(ht(o,`${e}[${a++}]`,n));else s instanceof ee&&t.push(ht(s.object,`${e}[${a++}]`,n));return t}function ht(r,e,n){return{field:He(r,d.field,e,"field"),value:S(r,d.bindValue,`${e}.bindValue`,n)}}function _a(r,e){let n=Ve(r,d.normKind);if(!n)throw new Q("normKind is required",e);if(ie(n,d.NORM_TRIM_END))return"trim-end";if(ie(n,d.NORM_TO_UPPER))return"to-upper";if(ie(n,d.NORM_TO_LOWER))return"to-lower";if(ie(n,d.NORM_FIRST_CHAR))return"first-char";throw new Q(`Unknown NormalizeKind: ${n.publisher}/${n.package_}/${n.name}`,e)}function ja(r,e){let n=Ve(r,d.renderFormat);if(!n)throw new Q("renderFormat is required",e);if(ie(n,d.RENDER_HTML))return"html";if(ie(n,d.RENDER_MARKDOWN))return"markdown";throw new Q(`Unknown RenderFormat: ${n.publisher}/${n.package_}/${n.name}`,e)}var bt=new Set(["decimal","percent","basis-points","currency","compact"]);function Ka(r,e){let n=qe(r,d.numberStyle);if(n===void 0)throw new Q("numberStyle is required",e);if(!bt.has(n))throw new Q(`Unknown numberStyle "${n}"; supported: ${[...bt].join(", ")}`,e);return n}var yt=new Set(["iso-date","iso-datetime","short-date","long-date","year","month-year"]);function Ra(r,e){let n=qe(r,d.dateFormat);if(!n)throw new Q("dateFormat is required",e);if(!yt.has(n))throw new Q(`Unknown dateFormat "${n}"; supported: ${[...yt].join(", ")}`,e);return n}function Ea(r,e,n){let t=Ve(r,d.fragmentRef);if(!t)throw new Q("fragmentRef is required",e);if(!Ca(n.catalog,t))throw new Q(`ExpressionFragment not found: ${t.publisher}/${t.package_}/${t.name}`,e);return{kind:"call-fragment",fragmentKey:La(t)}}function La(r){return`${r.publisher}/${r.package_}/${r.name}`}function xa(r){let e=new Map,n=[];for(let t of r){if(!(t instanceof Y)||!w(t,d.ExpressionFragment))continue;let a=ln(t,d.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=Pe(t.bodyEmb,`fragment(${t.pubPkgName})`,{catalog:r,depth:0});e.set(t.key,a)}return e}function Ca(r,e){for(let n of r)if(!(!(n instanceof Y)||n.name!==e.name||!(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))&&w(n,d.ExpressionFragment))return n}function wt(r,e){let n=new Set;for(let t of we(r,d.outputs))if(t instanceof H)n.add(t.object.subject.name);else if(t instanceof B)for(let a of t.object)a instanceof x&&n.add(a.subject.name);if(n.size===0)throw new Q("outputs is required (at least one OutputFormat)",e);return n}function _t(r,e,n){let t=new Map,a=0;for(let s of we(r,d.formatOverrides))if(s instanceof B){for(let o of s.object)if(o instanceof D){let[i,c]=vt(o,`${e}[${a++}]`);t.set(i,c)}}else if(s instanceof ee){let[o,i]=vt(s.object,`${e}[${a++}]`);t.set(o,i)}return t}function vt(r,e){let n=Ve(r,d.formatTarget);if(!n)throw new Q("formatTarget is required",e);let t=[];for(let i of we(r,d.metadataKeys))if(i instanceof Z)t.push(i.object);else if(i instanceof B)for(let c of i.object){let l=c.value;typeof l=="string"&&t.push(l)}let a=new Map;for(let i of we(r,d.metadataRenames))if(i instanceof B){for(let c of i.object)if(c instanceof D){let l=qe(c,d.fromKey),u=qe(c,d.toKey);l&&u&&a.set(l,u)}}else if(i instanceof ee){let c=i.object,l=qe(c,d.fromKey),u=qe(c,d.toKey);l&&u&&a.set(l,u)}let s=Nn(r,d.trailingNewline),o=Nn(r,d.omitWrapper);return[n.name,{metadataKeys:t.length>0?t:void 0,metadataRenames:a,trailingNewline:s,omitWrapper:o}]}function Oa(r){return r.predicate?.subject}function we(r,e){let n=[];for(let t of r.statement){let a=Oa(t);a&&ie(a,e)&&n.push(t)}return n}function ln(r,e){for(let n of we(r,e))if(n instanceof ee)return n.object}function Ve(r,e){for(let n of we(r,e))if(n instanceof H)return Dn(n.object.subject)}function qe(r,e){for(let n of we(r,e))if(n instanceof Z)return n.object}function An(r,e){for(let n of we(r,e))if(n instanceof ge)return n.object}function Nn(r,e){for(let n of we(r,e))if(n instanceof fe)return n.object}function $e(r,e,n){let t=qe(r,e);if(t===void 0)throw new Q(`${e.name} (string) is required`,n);return t}function $t(r,e,n){let t=An(r,e);if(t===void 0)throw new Q(`${e.name} (number) is required`,n);return t}function Ua(r,e,n){let t=Nn(r,e);if(t===void 0)throw new Q(`${e.name} (boolean) is required`,n);return t}function He(r,e,n,t){let a=Ve(r,e);if(!a)throw new Q(`${t} (URI reference) is required`,n);return a}function Dn(r){return{publisher:r.publisher,package_:r.package_,name:r.name}}var Ye="kanonak.org",Lt="look",un="core-rdf",Ia={publisher:Ye,package_:Lt,name:"displayLabel"},Ta={publisher:Ye,package_:Lt,name:"displaySummary"},Fa={publisher:Ye,package_:un,name:"subClassOf"},Pa={publisher:Ye,package_:un,name:"label"},Va={publisher:Ye,package_:un,name:"comment"},jt=new bn(Ye,un,"Resource"),Ma=8;function G(r,e){return xt(r,e,new Set)}function xt(r,e,n){let t=Et(r,e,Ia)??Pa,a=Et(r,e,Ta)??Va,s=Kt(r,e,t,n)??e.name,o=Kt(r,e,a,n);return{label:s,summary:o}}function Kt(r,e,n,t){for(let a of e.statement){let s=a.predicate;if(!(!s?.subject||!ie(s.subject,n))){if(a instanceof Z)return a.object;if(a instanceof ge||a instanceof fe)return String(a.object);if(a instanceof H)return Rt(r,a.object.subject,t);if(a instanceof B){let o=[];for(let i of a.object??[])if(i instanceof x){let c=Rt(r,i.subject,t);c&&o.push(c)}if(o.length>0)return o.join(", ")}return}}}function Rt(r,e,n){let t=ne(e);if(n.has(t)||n.size>=Ma)return e.name;let[a]=le(r,e);if(!a)return e.name;let s=new Set(n);return s.add(t),xt(r,a,s).label}function Et(r,e,n){let t=_e(e,n);if(t)return t;let a=new Set,s=Te(e,Aa);for(;s.length>0;){let o=s.shift(),i=ne(o);if(a.has(i))continue;a.add(i);let c=le(r,o);for(let l of c){let u=_e(l,n);if(u)return u}for(let l of c)s.push(...Te(l,Fa))}if(!a.has(ne(jt)))for(let o of le(r,jt)){let i=_e(o,n);if(i)return i}}var Aa={publisher:Ye,package_:un,name:"type"};var Na="kanonak.org",Xe=(r,e)=>({publisher:Na,package_:r,name:e}),Da=Xe("look","source"),Ct=Xe("look","connectors"),Ba=Xe("look","relation"),Ha=Xe("look","lineStyle"),qa=Xe("look","participants"),Ga=Xe("core-owl","SymmetricProperty"),za=Xe("core-owl","inverseOf"),Ot=new Set(["solid","dotted","open","thick"]);function Ut(r){return _e(r,Da)}function It(r,e){let n=ft(e,Ct),t=n?[n]:Fe(e,Ct),a=[];for(let s of t){if(!(s instanceof D))continue;let o=_e(s,Ba);if(!o)continue;let i=Le(s,Ha),c=i!==void 0&&Ot.has(i);a.push({relation:o,subject:le(r,o)[0],declaredStyle:c?i:void 0,invalidStyle:i!==void 0&&!c?i:void 0})}return a}function Tt(r,e){let n=[];for(let t of Fe(e,qa)){if(!(t instanceof x))continue;let a=le(r,t.subject)[0];a&&n.push(a)}return n}function dn(r,e,n){for(let t of lt(e))if(ie(t,n)||nn(r,t).some(a=>ie(a,n)))return!0;return!1}function Ft(r,e,n){let t=!!e.subject&&dn(r,e.subject,Ga);return e.declaredStyle?{style:e.declaredStyle,undirected:t}:e.subject&&Te(e.subject,za).some(s=>n.some(o=>ie(s,o.relation)))?{style:"dotted",undirected:t}:{style:"solid",undirected:t}}function Bn(r,e,n){let t=Ut(n);if(!t)return wn("the band declares no look.source");let a=It(r,n);if(a.length===0)return wn("the band declares no look.connectors \u2014 nothing can be a message");let s=ut(e,t);if(!s)return{...wn(),sourceAbsent:!0};if(!(s instanceof De))return wn(`look.source ${ne(t)} is not a Markdown-ranged property \u2014 the order of a sequence comes from prose [[references]]`);let o=[],i=[],c=0;for(let m of s.links){if(!m.target)continue;let b=m.target.subject,k=le(r,b)[0];k&&(vn(r,k)!==void 0?a.some($=>ie(b,$.relation))?o.push({kind:"selector",relation:b}):i.push(b):(o.push({kind:"participant",subject:k}),c++))}let l=[],u=[],f,p;for(let m of o){if(m.kind==="selector"){p=m.relation;continue}let b=m.subject;if(f){let k=p?a.filter(C=>ie(p,C.relation)):a,$=je(b),y=je(f),K=[],E=[];for(let C of k){let{style:F,undirected:_}=Ft(r,C,a);$&&Te(f,C.relation).some(W=>ne(W)===ne($))?K.push({from:f,to:b,relation:C.relation,style:F,undirected:_}):y&&Te(b,C.relation).some(W=>ne(W)===ne(y))&&E.push({from:b,to:f,relation:C.relation,style:F,undirected:_})}let U=K.length>0?K:E;l.push(...U),U.length===0&&Me(f)!==Me(b)&&u.push({prev:f,next:b,selected:p}),p=void 0}f=b}let h=new Map;for(let m of Tt(r,n))h.set(Me(m),m);for(let m of l)h.has(Me(m.from))||h.set(Me(m.from),m.from),h.has(Me(m.to))||h.set(Me(m.to),m.to);return{messages:l,gaps:u,lifelines:[...h.values()],mentions:c,strayPropertyRefs:i,sourceAbsent:!1}}function Me(r){return`${r.namespace}/${r.name}`}function wn(r){return{messages:[],gaps:[],lifelines:[],mentions:0,strayPropertyRefs:[],sourceAbsent:!1,...r?{problem:r}:{}}}var Wa="kanonak.org",Ya="core-shacl",Se=r=>({publisher:Wa,package_:Ya,name:r}),Xa=Se("NodeShape"),Qa=Se("targetClass"),Ja=Se("property"),Za=Se("path"),er=Se("minCount"),nr=Se("maxCount"),tr=Se("in"),ar=Se("pattern"),rr=Se("flags"),sr=Se("minLength"),or=Se("maxLength"),ir=Se("minInclusive"),cr=Se("maxInclusive"),lr=Se("message");function tn(r){return typeof r=="number"?r:void 0}function ur(r){let e={},n=tn(We(r,er)),t=tn(We(r,nr));n!==void 0&&(e.minCount=n),t!==void 0&&(e.maxCount=t);let a=tn(We(r,sr)),s=tn(We(r,or));a!==void 0&&(e.minLength=a),s!==void 0&&(e.maxLength=s);let o=tn(We(r,ir)),i=tn(We(r,cr));o!==void 0&&(e.minInclusive=o),i!==void 0&&(e.maxInclusive=i);let c=Le(r,ar);if(c!==void 0){let f=Le(r,rr);e.pattern=f!==void 0?{regex:c,flags:f}:{regex:c}}let l=Fe(r,tr).filter(f=>f instanceof yn).map(f=>f.value);l.length>0&&(e.enumValues=l);let u=Le(r,lr);return u!==void 0&&(e.message=u),e}function dr(r,e){let n=[];for(let t of Fe(e,Ja))if(t instanceof D)n.push(t);else if(t instanceof x){let a=Be(r,t.subject);a&&n.push(a)}return n}function fn(r){let e=new Map;for(let n of r){if(!(n instanceof Y)||!w(n,Xa))continue;let t=_e(n,Qa);if(!t)continue;let a=ne(t);for(let s of dr(r,n)){let o=_e(s,Za);if(!o)continue;let i={pathKey:ne(o),constraints:ur(s)},c=e.get(a);c?c.push(i):e.set(a,[i])}}return e}function fr(r,e){e.minCount!==void 0&&(r.minCount=e.minCount),e.maxCount!==void 0&&(r.maxCount=e.maxCount),e.minLength!==void 0&&(r.minLength=e.minLength),e.maxLength!==void 0&&(r.maxLength=e.maxLength),e.minInclusive!==void 0&&(r.minInclusive=e.minInclusive),e.maxInclusive!==void 0&&(r.maxInclusive=e.maxInclusive),e.pattern!==void 0&&(r.pattern=e.pattern),e.enumValues!==void 0&&(r.enumValues=e.enumValues),e.message!==void 0&&(r.message=e.message)}function Pt(r,e,n){let t=ne(n),a=!1,s={};for(let o=e.length-1;o>=0;o--){let i=r.get(ne(e[o]));if(i)for(let c of i)c.pathKey===t&&(a=!0,fr(s,c.constraints))}if(a)return s.cardinality=s.maxCount===1?"single":"list",s.required=(s.minCount??0)>=1,s}var Qe="kanonak.org",jn="core-rdf",Mt="core-xsd",Vt={publisher:Qe,package_:jn,name:"subClassOf"},At={publisher:Qe,package_:jn,name:"label"},Nt={publisher:Qe,package_:jn,name:"comment"},Dt={publisher:Qe,package_:"core-owl",name:"oneOf"},Bt=r=>r;function pr(r){let e=_e(r,Vt);if(e)return[e];let n=[];for(let t of Fe(r,Vt))t instanceof x&&n.push(t.subject);return n}function mr(r,e,n){if(e.publisher===Qe&&e.package_===jn&&e.name==="Literal")return{kind:"datatype",uri:e};let a=Be(r,e);if(a){let s=Bt(a);if(en.isDatatypeType(s))return{kind:"datatype",uri:e};if(en.isClassType(s))return{kind:"class",uri:je(a)??e,localName:a.name}}return e.publisher===Qe&&e.package_===Mt?{kind:"datatype",uri:e}:n==="datatype"?{kind:"datatype",uri:e}:{kind:"class",uri:e,localName:e.name}}function gr(r,e,n){if(!e.range)throw new Error(`Property ${e.uri.publisher}/${e.uri.package_}/${e.uri.name} has no rdfs.range; every property must declare a range. Validate the ontology before introspecting it.`);let t=mr(r,e.range,e.kind),a=e.kind==="object"?"object":e.kind==="datatype"?"datatype":t.kind==="class"?"object":"datatype";return{uri:e.uri,localName:e.uri.name,kind:a,range:t,...e.label!==void 0?{label:e.label}:{},...e.comment!==void 0?{comment:e.comment}:{},...n??{}}}var _n=r=>new bn(Qe,Mt,r);function kr(r){return typeof r=="boolean"?_n("boolean"):typeof r=="number"?Number.isInteger(r)?_n("integer"):_n("decimal"):_n("string")}function hr(r,e){let n=[];for(let t of Fe(e,Dt))if(t instanceof x){let a=Be(r,t.subject),s=(a?je(a):void 0)??t.subject,o=a?Le(a,At):void 0,i=a?Le(a,Nt):void 0;n.push({kind:"individual",uri:s,localName:s.name,...o!==void 0?{label:o}:{},...i!==void 0?{comment:i}:{}})}else t instanceof yn&&n.push({kind:"literal",value:t.value,datatype:kr(t.value)});return n}function Kn(r,e,n,t){let a=nn(r,e),s=ne(e);return mt(r,e).filter(i=>n?!0:i.domains.some(c=>ne(c)===s)).map(i=>gr(r,i,Pt(t,a,i.uri)))}async function ji(r,e,n){let t=r.metadata?.namespace_;if(!t)throw new Error("buildOntologyModel: document has no namespace (publisher/package/version).");let a=n?.includeInherited??!1,s=await new $n().parseKanonaks(e),o=fn(s),i=[],c=[],l=new Set;for(let u of s){if(!(u instanceof Y)||!en.isClassType(Bt(u)))continue;let f=je(u);if(!f||f.publisher!==t.publisher||f.package_!==t.package_||f.version&&t.version&&!rt(f.version,t.version))continue;let p=ne(f);if(l.has(p))continue;l.add(p);let h=pr(u).map(k=>({uri:k,localName:k.name})),m=Le(u,At),b=Le(u,Nt);i.push({uri:f,localName:f.name,superClasses:h,properties:Kn(s,f,a,o),...m!==void 0?{label:m}:{},...b!==void 0?{comment:b}:{}}),dt(u,Dt)&&c.push({uri:f,localName:f.name,members:hr(s,u),...m!==void 0?{label:m}:{},...b!==void 0?{comment:b}:{}})}return{classes:i,enums:c}}function pn(r,e={}){let n=r.replace(/\r\n/g,`
1
+ import{a as ot}from"./chunk-6VIUXP4N.js";import{a as D,b as yn,c as De,h as u,m as $n}from"./chunk-PVUBHIU2.js";import{a as it}from"./chunk-HF5FJBS2.js";import{a as gt}from"./chunk-PEJALHXK.js";import{fa as en,ga as je,ha as nn,ia as vn,ma as mt}from"./chunk-7UYXTYXC.js";import{A as ft,B as Te,C as pt,b as Ie,c as Y,d as x,g as Z,h as ge,i as fe,j as H,k as ee,l as B,m as ne,n as ie,o as ct,p as lt,q as Fe,r as w,t as Be,u as le,v as ut,w as dt,x as We,y as Le,z as _e}from"./chunk-CJMVIOZX.js";import{a as bn}from"./chunk-FUUTGGJS.js";import{c as kn,d as rt,e as hn,g as st}from"./chunk-QILEJIFU.js";var Q=class extends Error{constructor(n,t){super(`${n} (at ${t})`);this.path=t}path};function Wo(r,e){let n=r.name,t=Ca(e),a={catalog:e,depth:0};if(w(r,u.InstanceTransformation))return va(r,n,a,t);if(w(r,u.SetTransformation))return $a(r,n,a,t);throw new Q("Subject is not a recognized v3 transformation type \u2014 expected InstanceTransformation or SetTransformation",n)}function va(r,e,n,t){return{kind:"instance",name:r.name,inputPattern:St(r,e),rule:Sn(r,u.rule,`${e}.rule`,n),artifactName:Sn(r,u.artifactName,`${e}.artifactName`,n),outputs:wt(r,`${e}.outputs`),overrides:_t(r,`${e}.formatOverrides`,n),fragments:t}}function $a(r,e,n,t){let a=Ve(r,u.partitionBy);return{kind:"set",name:r.name,inputPattern:St(r,e),rule:Sn(r,u.rule,`${e}.rule`,n),artifactName:Sn(r,u.artifactName,`${e}.artifactName`,n),outputs:wt(r,`${e}.outputs`),overrides:_t(r,`${e}.formatOverrides`,n),partitionBy:a,fragments:t}}function St(r,e){let n=ln(r,u.inputPattern);if(!n)throw new Q("inputPattern is required",e);return Sa(n,`${e}.inputPattern`)}function Sa(r,e){let n=Ve(r,u.matchesClass);if(!n)throw new Q("matchesClass is required",e);let t=[];for(let o of we(r,u.requires))if(o instanceof H)t.push(Dn(o.object.subject));else if(o instanceof B)for(let i of o.object)i instanceof x&&t.push(Dn(i.subject));let a=[],s=0;for(let o of we(r,u.sortBy))if(o instanceof B)for(let i of o.object)i instanceof D&&a.push(kt(i,`${e}.sortBy[${s++}]`));else o instanceof ee&&a.push(kt(o.object,`${e}.sortBy[${s++}]`));return{matchesClass:n,requires:t,sortBy:a}}function kt(r,e){let n=Ve(r,u.byProperty);if(!n)throw new Q("SortKey.byProperty is required",e);let t=Ve(r,u.order);if(!t)throw new Q("SortKey.order is required",e);if(ie(t,u.ascending))return{byProperty:n,order:"ascending"};if(ie(t,u.descending))return{byProperty:n,order:"descending"};throw new Q(`SortKey.order must reference tx.ascending or tx.descending; got ${t.publisher}/${t.package_}/${t.name}`,e)}function Sn(r,e,n,t){let a=ln(r,e);if(!a)throw new Q("expression is required",n);return Pe(a,n,t)}function Pe(r,e,n){if(w(r,u.StringLiteral))return{kind:"string-literal",value:$e(r,u.stringLiteral,e)};if(w(r,u.IntegerLiteral))return{kind:"integer-literal",value:$t(r,u.integerLiteral,e)};if(w(r,u.DecimalLiteral))return{kind:"decimal-literal",value:$t(r,u.decimalLiteral,e)};if(w(r,u.BooleanLiteral))return{kind:"boolean-literal",value:Ia(r,u.booleanLiteral,e)};if(w(r,u.VarRef))return{kind:"var-ref",varName:$e(r,u.varName,e)};if(w(r,u.PropertyRead))return{kind:"property-read",source:S(r,u.readSource,`${e}.readSource`,n),readProp:He(r,u.readProp,e,"readProp")};if(w(r,u.Traverse))return{kind:"traverse",source:S(r,u.traverseSource,`${e}.traverseSource`,n),through:He(r,u.through,e,"through"),step:S(r,u.step,`${e}.step`,n)};if(w(r,u.BuildAstNode))return{kind:"build-ast-node",astClass:He(r,u.astClass,e,"astClass"),set:_a(r,`${e}.set`,n)};if(w(r,u.When))return{kind:"when",condition:S(r,u.condition,`${e}.condition`,n),thenBuild:S(r,u.thenBuild,`${e}.thenBuild`,n),elseBuild:wa(r,u.elseBuild,`${e}.elseBuild`,n)};if(w(r,u.Concat))return{kind:"concat",parts:Mn(r,u.parts,`${e}.parts`,n)};if(w(r,u.Fallback))return{kind:"fallback",primary:S(r,u.primary,`${e}.primary`,n),alternate:S(r,u.alternate,`${e}.alternate`,n)};if(w(r,u.UriName))return{kind:"uri-name",source:S(r,u.uriNameOf,`${e}.uriNameOf`,n)};if(w(r,u.UriPublisher))return{kind:"uri-publisher",source:S(r,u.uriPublisherOf,`${e}.uriPublisherOf`,n)};if(w(r,u.UriPackage))return{kind:"uri-package",source:S(r,u.uriPackageOf,`${e}.uriPackageOf`,n)};if(w(r,u.UriVersion))return{kind:"uri-version",source:S(r,u.uriVersionOf,`${e}.uriVersionOf`,n)};if(w(r,u.SubjectUri))return{kind:"subject-uri",source:S(r,u.subjectOf,`${e}.subjectOf`,n)};if(w(r,u.UriLiteral))return{kind:"uri-literal",refTo:He(r,u.refTo,e,"refTo")};if(w(r,u.DisplayLabel))return{kind:"display-label",labelTarget:He(r,u.labelTarget,e,"labelTarget"),labelSource:He(r,u.labelSource,e,"labelSource")};if(w(r,u.ResolveRef))return{kind:"resolve-ref",source:S(r,u.resolveSource,`${e}.resolveSource`,n)};if(w(r,u.Normalize))return{kind:"normalize",source:S(r,u.normSource,`${e}.normSource`,n),normKind:ja(r,e)};if(w(r,u.UnescapedString))return{kind:"unescaped-string",source:S(r,u.unescapedSource,`${e}.unescapedSource`,n)};if(w(r,u.RenderMarkdown))return{kind:"render-markdown",source:S(r,u.renderSource,`${e}.renderSource`,n),readProp:He(r,u.renderProp,e,"renderProp"),format:Ka(r,e)};if(w(r,u.IsSet))return{kind:"is-set",check:S(r,u.checkExpr,`${e}.checkExpr`,n)};if(w(r,u.CallFragment))return La(r,e,n);if(w(r,u.Join))return{kind:"join",source:S(r,u.source,`${e}.source`,n),separator:$e(r,u.separator,e)};if(w(r,u.Count))return{kind:"count",source:S(r,u.source,`${e}.source`,n)};if(w(r,u.Sum))return{kind:"sum",source:S(r,u.source,`${e}.source`,n)};if(w(r,u.Min))return{kind:"min",source:S(r,u.source,`${e}.source`,n)};if(w(r,u.Max))return{kind:"max",source:S(r,u.source,`${e}.source`,n)};if(w(r,u.Average))return{kind:"average",source:S(r,u.source,`${e}.source`,n)};if(w(r,u.ForEach))return{kind:"for-each",source:S(r,u.source,`${e}.source`,n),loopVar:$e(r,u.loopVar,e),emit:S(r,u.emit,`${e}.emit`,n)};if(w(r,u.ListMap))return{kind:"list-map",source:S(r,u.source,`${e}.source`,n),loopVar:$e(r,u.loopVar,e),mapBody:S(r,u.mapBody,`${e}.mapBody`,n)};if(w(r,u.Filter))return{kind:"filter",source:S(r,u.source,`${e}.source`,n),loopVar:$e(r,u.loopVar,e),predicate:S(r,u.predicate,`${e}.predicate`,n)};if(w(r,u.PartitionBy))return{kind:"partition-by",source:S(r,u.source,`${e}.source`,n),loopVar:$e(r,u.loopVar,e),partitionKey:S(r,u.partitionKey,`${e}.partitionKey`,n)};if(w(r,u.DistinctBy))return{kind:"distinct-by",source:S(r,u.source,`${e}.source`,n),loopVar:$e(r,u.loopVar,e),distinctKey:S(r,u.distinctKey,`${e}.distinctKey`,n)};if(w(r,u.AllStatements))return{kind:"all-statements",source:S(r,u.statementsOf,`${e}.statementsOf`,n)};if(w(r,u.StatementPredicate))return{kind:"statement-predicate",source:S(r,u.predicateOf,`${e}.predicateOf`,n)};if(w(r,u.StatementValue))return{kind:"statement-value",source:S(r,u.valueOf,`${e}.valueOf`,n)};if(w(r,u.DateFormat))return{kind:"date-format",source:S(r,u.dateSource,`${e}.dateSource`,n),format:Ea(r,e)};if(w(r,u.NumberFormat)){let t=An(r,u.fractionDigits);if(t!==void 0&&(!Number.isInteger(t)||t<0||t>20))throw new Q(`fractionDigits must be an integer between 0 and 20; got ${t}`,e);let a=qe(r,u.currencyCode);return{kind:"number-format",source:S(r,u.numberSource,`${e}.numberSource`,n),style:Ra(r,e),...t!==void 0?{fractionDigits:t}:{},...a!==void 0?{currencyCode:a}:{}}}if(w(r,u.Add))return{kind:"add",left:S(r,u.arithLeft,`${e}.arithLeft`,n),right:S(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Subtract))return{kind:"subtract",left:S(r,u.arithLeft,`${e}.arithLeft`,n),right:S(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Multiply))return{kind:"multiply",left:S(r,u.arithLeft,`${e}.arithLeft`,n),right:S(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Divide))return{kind:"divide",left:S(r,u.arithLeft,`${e}.arithLeft`,n),right:S(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Reverse))return{kind:"reverse",source:S(r,u.source,`${e}.source`,n)};if(w(r,u.WindowedMap)){let t=An(r,u.windowSize);if(t===void 0||!Number.isInteger(t)||t<1)throw new Q("windowSize must be a positive integer",`${e}.windowSize`);return{kind:"windowed-map",source:S(r,u.source,`${e}.source`,n),windowSize:t,windowVar:$e(r,u.windowVar,e),windowBody:S(r,u.windowBody,`${e}.windowBody`,n)}}if(w(r,u.PairwiseMap))return{kind:"pairwise-map",source:S(r,u.source,`${e}.source`,n),firstVar:$e(r,u.firstVar,e),secondVar:$e(r,u.secondVar,e),pairBody:S(r,u.pairBody,`${e}.pairBody`,n)};if(w(r,u.Scan))return{kind:"scan",source:S(r,u.source,`${e}.source`,n),initialState:S(r,u.initialState,`${e}.initialState`,n),stateVar:$e(r,u.stateVar,e),elementVar:$e(r,u.elementVar,e),accumulate:S(r,u.accumulate,`${e}.accumulate`,n)};if(w(r,u.ListItemAt))return{kind:"list-item-at",source:S(r,u.source,`${e}.source`,n),itemIndex:S(r,u.itemIndex,`${e}.itemIndex`,n)};if(w(r,u.Equals))return{kind:"equals",left:S(r,u.compareLeft,`${e}.compareLeft`,n),right:S(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.GreaterThan))return{kind:"greater-than",left:S(r,u.compareLeft,`${e}.compareLeft`,n),right:S(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.LessThan))return{kind:"less-than",left:S(r,u.compareLeft,`${e}.compareLeft`,n),right:S(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.GreaterThanOrEqual))return{kind:"greater-than-or-equal",left:S(r,u.compareLeft,`${e}.compareLeft`,n),right:S(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.LessThanOrEqual))return{kind:"less-than-or-equal",left:S(r,u.compareLeft,`${e}.compareLeft`,n),right:S(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.Not))return{kind:"not",operand:S(r,u.operand,`${e}.operand`,n)};if(w(r,u.And))return{kind:"and",operands:Mn(r,u.operands,`${e}.operands`,n)};if(w(r,u.Or))return{kind:"or",operands:Mn(r,u.operands,`${e}.operands`,n)};if(w(r,u.Contains))return{kind:"contains",haystack:S(r,u.haystack,`${e}.haystack`,n),needle:S(r,u.needle,`${e}.needle`,n)};if(w(r,u.Abs))return{kind:"abs",value:S(r,u.value,`${e}.value`,n)};if(w(r,u.Negate))return{kind:"negate",value:S(r,u.value,`${e}.value`,n)};if(w(r,u.IsReference))return{kind:"is-reference",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsEmbedded))return{kind:"is-embedded",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsList))return{kind:"is-list",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsString))return{kind:"is-string",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsNumber))return{kind:"is-number",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsBoolean))return{kind:"is-boolean",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.StatementObject))return{kind:"statement-object",source:S(r,u.statementSource,`${e}.statementSource`,n)};if(w(r,u.Let))return{kind:"let",bindName:$e(r,u.letName,e),bindValue:S(r,u.letValue,`${e}.letValue`,n),body:S(r,u.letBody,`${e}.letBody`,n)};if(w(r,u.GetStatementByName))return{kind:"get-statement-by-name",inSubject:S(r,u.inSubject,`${e}.inSubject`,n),byName:S(r,u.byName,`${e}.byName`,n)};throw new Q("Expression is not of a recognized v3 type \u2014 embedded has no matching subclass of tx.Expression",e)}function S(r,e,n,t){let a=ln(r,e);if(!a)throw new Q("child expression is required",n);return Pe(a,n,t)}function wa(r,e,n,t){let a=ln(r,e);if(a)return Pe(a,n,t)}function Mn(r,e,n,t){let a=[],s=0;for(let o of we(r,e))if(o instanceof B)for(let i of o.object)i instanceof D&&a.push(Pe(i,`${n}[${s++}]`,t));else o instanceof ee&&a.push(Pe(o.object,`${n}[${s++}]`,t));return a}function _a(r,e,n){let t=[],a=0;for(let s of we(r,u.set))if(s instanceof B)for(let o of s.object)o instanceof D&&t.push(ht(o,`${e}[${a++}]`,n));else s instanceof ee&&t.push(ht(s.object,`${e}[${a++}]`,n));return t}function ht(r,e,n){return{field:He(r,u.field,e,"field"),value:S(r,u.bindValue,`${e}.bindValue`,n)}}function ja(r,e){let n=Ve(r,u.normKind);if(!n)throw new Q("normKind is required",e);if(ie(n,u.NORM_TRIM_END))return"trim-end";if(ie(n,u.NORM_TO_UPPER))return"to-upper";if(ie(n,u.NORM_TO_LOWER))return"to-lower";if(ie(n,u.NORM_FIRST_CHAR))return"first-char";throw new Q(`Unknown NormalizeKind: ${n.publisher}/${n.package_}/${n.name}`,e)}function Ka(r,e){let n=Ve(r,u.renderFormat);if(!n)throw new Q("renderFormat is required",e);if(ie(n,u.RENDER_HTML))return"html";if(ie(n,u.RENDER_MARKDOWN))return"markdown";throw new Q(`Unknown RenderFormat: ${n.publisher}/${n.package_}/${n.name}`,e)}var bt=new Set(["decimal","percent","basis-points","currency","compact"]);function Ra(r,e){let n=qe(r,u.numberStyle);if(n===void 0)throw new Q("numberStyle is required",e);if(!bt.has(n))throw new Q(`Unknown numberStyle "${n}"; supported: ${[...bt].join(", ")}`,e);return n}var yt=new Set(["iso-date","iso-datetime","short-date","long-date","year","month-year"]);function Ea(r,e){let n=qe(r,u.dateFormat);if(!n)throw new Q("dateFormat is required",e);if(!yt.has(n))throw new Q(`Unknown dateFormat "${n}"; supported: ${[...yt].join(", ")}`,e);return n}function La(r,e,n){let t=Ve(r,u.fragmentRef);if(!t)throw new Q("fragmentRef is required",e);if(!Oa(n.catalog,t))throw new Q(`ExpressionFragment not found: ${t.publisher}/${t.package_}/${t.name}`,e);return{kind:"call-fragment",fragmentKey:xa(t)}}function xa(r){return`${r.publisher}/${r.package_}/${r.name}`}function Ca(r){let e=new Map,n=[];for(let t of r){if(!(t instanceof Y)||!w(t,u.ExpressionFragment))continue;let a=ln(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=Pe(t.bodyEmb,`fragment(${t.pubPkgName})`,{catalog:r,depth:0});e.set(t.key,a)}return e}function Oa(r,e){for(let n of r)if(!(!(n instanceof Y)||n.name!==e.name||!(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))&&w(n,u.ExpressionFragment))return n}function wt(r,e){let n=new Set;for(let t of we(r,u.outputs))if(t instanceof H)n.add(t.object.subject.name);else if(t instanceof B)for(let a of t.object)a instanceof x&&n.add(a.subject.name);if(n.size===0)throw new Q("outputs is required (at least one OutputFormat)",e);return n}function _t(r,e,n){let t=new Map,a=0;for(let s of we(r,u.formatOverrides))if(s instanceof B){for(let o of s.object)if(o instanceof D){let[i,c]=vt(o,`${e}[${a++}]`);t.set(i,c)}}else if(s instanceof ee){let[o,i]=vt(s.object,`${e}[${a++}]`);t.set(o,i)}return t}function vt(r,e){let n=Ve(r,u.formatTarget);if(!n)throw new Q("formatTarget is required",e);let t=[];for(let i of we(r,u.metadataKeys))if(i instanceof Z)t.push(i.object);else if(i instanceof B)for(let c of i.object){let l=c.value;typeof l=="string"&&t.push(l)}let a=new Map;for(let i of we(r,u.metadataRenames))if(i instanceof B){for(let c of i.object)if(c instanceof D){let l=qe(c,u.fromKey),d=qe(c,u.toKey);l&&d&&a.set(l,d)}}else if(i instanceof ee){let c=i.object,l=qe(c,u.fromKey),d=qe(c,u.toKey);l&&d&&a.set(l,d)}let s=Nn(r,u.trailingNewline),o=Nn(r,u.omitWrapper);return[n.name,{metadataKeys:t.length>0?t:void 0,metadataRenames:a,trailingNewline:s,omitWrapper:o}]}function Ua(r){return r.predicate?.subject}function we(r,e){let n=[];for(let t of r.statement){let a=Ua(t);a&&ie(a,e)&&n.push(t)}return n}function ln(r,e){for(let n of we(r,e))if(n instanceof ee)return n.object}function Ve(r,e){for(let n of we(r,e))if(n instanceof H)return Dn(n.object.subject)}function qe(r,e){for(let n of we(r,e))if(n instanceof Z)return n.object}function An(r,e){for(let n of we(r,e))if(n instanceof ge)return n.object}function Nn(r,e){for(let n of we(r,e))if(n instanceof fe)return n.object}function $e(r,e,n){let t=qe(r,e);if(t===void 0)throw new Q(`${e.name} (string) is required`,n);return t}function $t(r,e,n){let t=An(r,e);if(t===void 0)throw new Q(`${e.name} (number) is required`,n);return t}function Ia(r,e,n){let t=Nn(r,e);if(t===void 0)throw new Q(`${e.name} (boolean) is required`,n);return t}function He(r,e,n,t){let a=Ve(r,e);if(!a)throw new Q(`${t} (URI reference) is required`,n);return a}function Dn(r){return{publisher:r.publisher,package_:r.package_,name:r.name}}var Ye="kanonak.org",Lt="look",un="core-rdf",Fa={publisher:Ye,package_:Lt,name:"displayLabel"},Ta={publisher:Ye,package_:Lt,name:"displaySummary"},Pa={publisher:Ye,package_:un,name:"subClassOf"},Va={publisher:Ye,package_:un,name:"label"},Ma={publisher:Ye,package_:un,name:"comment"},jt=new bn(Ye,un,"Resource"),Aa=8;function G(r,e){return xt(r,e,new Set)}function xt(r,e,n){let t=Et(r,e,Fa)??Va,a=Et(r,e,Ta)??Ma,s=Kt(r,e,t,n)??e.name,o=Kt(r,e,a,n);return{label:s,summary:o}}function Kt(r,e,n,t){for(let a of e.statement){let s=a.predicate;if(!(!s?.subject||!ie(s.subject,n))){if(a instanceof Z)return a.object;if(a instanceof ge||a instanceof fe)return String(a.object);if(a instanceof H)return Rt(r,a.object.subject,t);if(a instanceof B){let o=[];for(let i of a.object??[])if(i instanceof x){let c=Rt(r,i.subject,t);c&&o.push(c)}if(o.length>0)return o.join(", ")}return}}}function Rt(r,e,n){let t=ne(e);if(n.has(t)||n.size>=Aa)return e.name;let[a]=le(r,e);if(!a)return e.name;let s=new Set(n);return s.add(t),xt(r,a,s).label}function Et(r,e,n){let t=_e(e,n);if(t)return t;let a=new Set,s=Fe(e,Na);for(;s.length>0;){let o=s.shift(),i=ne(o);if(a.has(i))continue;a.add(i);let c=le(r,o);for(let l of c){let d=_e(l,n);if(d)return d}for(let l of c)s.push(...Fe(l,Pa))}if(!a.has(ne(jt)))for(let o of le(r,jt)){let i=_e(o,n);if(i)return i}}var Na={publisher:Ye,package_:un,name:"type"};var Da="kanonak.org",Xe=(r,e)=>({publisher:Da,package_:r,name:e}),Ba=Xe("look","source"),Ct=Xe("look","connectors"),Ha=Xe("look","relation"),qa=Xe("look","lineStyle"),Ga=Xe("look","participants"),za=Xe("core-owl","SymmetricProperty"),Wa=Xe("core-owl","inverseOf"),Ot=new Set(["solid","dotted","open","thick"]);function Ut(r){return _e(r,Ba)}function It(r,e){let n=ft(e,Ct),t=n?[n]:Te(e,Ct),a=[];for(let s of t){if(!(s instanceof D))continue;let o=_e(s,Ha);if(!o)continue;let i=Le(s,qa),c=i!==void 0&&Ot.has(i);a.push({relation:o,subject:le(r,o)[0],declaredStyle:c?i:void 0,invalidStyle:i!==void 0&&!c?i:void 0})}return a}function Ft(r,e){let n=[];for(let t of Te(e,Ga)){if(!(t instanceof x))continue;let a=le(r,t.subject)[0];a&&n.push(a)}return n}function dn(r,e,n){for(let t of lt(e))if(ie(t,n)||nn(r,t).some(a=>ie(a,n)))return!0;return!1}function Tt(r,e,n){let t=!!e.subject&&dn(r,e.subject,za);return e.declaredStyle?{style:e.declaredStyle,undirected:t}:e.subject&&Fe(e.subject,Wa).some(s=>n.some(o=>ie(s,o.relation)))?{style:"dotted",undirected:t}:{style:"solid",undirected:t}}function Bn(r,e,n){let t=Ut(n);if(!t)return wn("the band declares no look.source");let a=It(r,n);if(a.length===0)return wn("the band declares no look.connectors \u2014 nothing can be a message");let s=ut(e,t);if(!s)return{...wn(),sourceAbsent:!0};if(!(s instanceof De))return wn(`look.source ${ne(t)} is not a Markdown-ranged property \u2014 the order of a sequence comes from prose [[references]]`);let o=[],i=[],c=0;for(let g of s.links){if(!g.target)continue;let b=g.target.subject,k=le(r,b)[0];k&&(vn(r,k)!==void 0?a.some(v=>ie(b,v.relation))?o.push({kind:"selector",relation:b}):i.push(b):(o.push({kind:"participant",subject:k}),c++))}let l=[],d=[],f,p;for(let g of o){if(g.kind==="selector"){p=g.relation;continue}let b=g.subject;if(f){let k=p?a.filter(C=>ie(p,C.relation)):a,v=je(b),y=je(f),K=[],E=[];for(let C of k){let{style:T,undirected:_}=Tt(r,C,a);v&&Fe(f,C.relation).some(W=>ne(W)===ne(v))?K.push({from:f,to:b,relation:C.relation,style:T,undirected:_}):y&&Fe(b,C.relation).some(W=>ne(W)===ne(y))&&E.push({from:b,to:f,relation:C.relation,style:T,undirected:_})}let U=K.length>0?K:E;l.push(...U),U.length===0&&Me(f)!==Me(b)&&d.push({prev:f,next:b,selected:p}),p=void 0}f=b}let m=new Map;for(let g of Ft(r,n))m.set(Me(g),g);for(let g of l)m.has(Me(g.from))||m.set(Me(g.from),g.from),m.has(Me(g.to))||m.set(Me(g.to),g.to);return{messages:l,gaps:d,lifelines:[...m.values()],mentions:c,strayPropertyRefs:i,sourceAbsent:!1}}function Me(r){return`${r.namespace}/${r.name}`}function wn(r){return{messages:[],gaps:[],lifelines:[],mentions:0,strayPropertyRefs:[],sourceAbsent:!1,...r?{problem:r}:{}}}var Ya="kanonak.org",Xa="core-shacl",Se=r=>({publisher:Ya,package_:Xa,name:r}),Qa=Se("NodeShape"),Ja=Se("targetClass"),Za=Se("property"),er=Se("path"),nr=Se("minCount"),tr=Se("maxCount"),ar=Se("in"),rr=Se("pattern"),sr=Se("flags"),or=Se("minLength"),ir=Se("maxLength"),cr=Se("minInclusive"),lr=Se("maxInclusive"),ur=Se("message");function tn(r){return typeof r=="number"?r:void 0}function dr(r){let e={},n=tn(We(r,nr)),t=tn(We(r,tr));n!==void 0&&(e.minCount=n),t!==void 0&&(e.maxCount=t);let a=tn(We(r,or)),s=tn(We(r,ir));a!==void 0&&(e.minLength=a),s!==void 0&&(e.maxLength=s);let o=tn(We(r,cr)),i=tn(We(r,lr));o!==void 0&&(e.minInclusive=o),i!==void 0&&(e.maxInclusive=i);let c=Le(r,rr);if(c!==void 0){let f=Le(r,sr);e.pattern=f!==void 0?{regex:c,flags:f}:{regex:c}}let l=Te(r,ar).filter(f=>f instanceof yn).map(f=>f.value);l.length>0&&(e.enumValues=l);let d=Le(r,ur);return d!==void 0&&(e.message=d),e}function fr(r,e){let n=[];for(let t of Te(e,Za))if(t instanceof D)n.push(t);else if(t instanceof x){let a=Be(r,t.subject);a&&n.push(a)}return n}function pr(r){let e=new Map;for(let n of r){if(!(n instanceof Y)||!w(n,Qa))continue;let t=_e(n,Ja);if(!t)continue;let a=ne(t);for(let s of fr(r,n)){let o=_e(s,er);if(!o)continue;let i={pathKey:ne(o),constraints:dr(s)},c=e.get(a);c?c.push(i):e.set(a,[i])}}return e}var Pt=new WeakMap;function fn(r){let e=Pt.get(r);return e||(e=pr(r),Pt.set(r,e)),e}function mr(r,e){e.minCount!==void 0&&(r.minCount=e.minCount),e.maxCount!==void 0&&(r.maxCount=e.maxCount),e.minLength!==void 0&&(r.minLength=e.minLength),e.maxLength!==void 0&&(r.maxLength=e.maxLength),e.minInclusive!==void 0&&(r.minInclusive=e.minInclusive),e.maxInclusive!==void 0&&(r.maxInclusive=e.maxInclusive),e.pattern!==void 0&&(r.pattern=e.pattern),e.enumValues!==void 0&&(r.enumValues=e.enumValues),e.message!==void 0&&(r.message=e.message)}function Vt(r,e,n){let t=ne(n),a=!1,s={};for(let o=e.length-1;o>=0;o--){let i=r.get(ne(e[o]));if(i)for(let c of i)c.pathKey===t&&(a=!0,mr(s,c.constraints))}if(a)return s.cardinality=s.maxCount===1?"single":"list",s.required=(s.minCount??0)>=1,s}var Qe="kanonak.org",jn="core-rdf",At="core-xsd",Mt={publisher:Qe,package_:jn,name:"subClassOf"},Nt={publisher:Qe,package_:jn,name:"label"},Dt={publisher:Qe,package_:jn,name:"comment"},Bt={publisher:Qe,package_:"core-owl",name:"oneOf"},Ht=r=>r;function gr(r){let e=_e(r,Mt);if(e)return[e];let n=[];for(let t of Te(r,Mt))t instanceof x&&n.push(t.subject);return n}function kr(r,e,n){if(e.publisher===Qe&&e.package_===jn&&e.name==="Literal")return{kind:"datatype",uri:e};let a=Be(r,e);if(a){let s=Ht(a);if(en.isDatatypeType(s))return{kind:"datatype",uri:e};if(en.isClassType(s))return{kind:"class",uri:je(a)??e,localName:a.name}}return e.publisher===Qe&&e.package_===At?{kind:"datatype",uri:e}:n==="datatype"?{kind:"datatype",uri:e}:{kind:"class",uri:e,localName:e.name}}function hr(r,e,n){if(!e.range)throw new Error(`Property ${e.uri.publisher}/${e.uri.package_}/${e.uri.name} has no rdfs.range; every property must declare a range. Validate the ontology before introspecting it.`);let t=kr(r,e.range,e.kind),a=e.kind==="object"?"object":e.kind==="datatype"?"datatype":t.kind==="class"?"object":"datatype";return{uri:e.uri,localName:e.uri.name,kind:a,range:t,...e.label!==void 0?{label:e.label}:{},...e.comment!==void 0?{comment:e.comment}:{},...n??{}}}var _n=r=>new bn(Qe,At,r);function br(r){return typeof r=="boolean"?_n("boolean"):typeof r=="number"?Number.isInteger(r)?_n("integer"):_n("decimal"):_n("string")}function yr(r,e){let n=[];for(let t of Te(e,Bt))if(t instanceof x){let a=Be(r,t.subject),s=(a?je(a):void 0)??t.subject,o=a?Le(a,Nt):void 0,i=a?Le(a,Dt):void 0;n.push({kind:"individual",uri:s,localName:s.name,...o!==void 0?{label:o}:{},...i!==void 0?{comment:i}:{}})}else t instanceof yn&&n.push({kind:"literal",value:t.value,datatype:br(t.value)});return n}function Kn(r,e,n,t){let a=nn(r,e),s=ne(e);return mt(r,e).filter(i=>n?!0:i.domains.some(c=>ne(c)===s)).map(i=>hr(r,i,Vt(t,a,i.uri)))}async function Ri(r,e,n){let t=r.metadata?.namespace_;if(!t)throw new Error("buildOntologyModel: document has no namespace (publisher/package/version).");let a=n?.includeInherited??!1,s=Array.isArray(e)?e:await new $n().parseKanonaks(e),o=fn(s),i=p=>p.publisher===t.publisher&&p.package_===t.package_&&!(p.version&&t.version&&!rt(p.version,t.version)),c=[],l=[],d=new Set,f=!1;for(let p of s){if(!(p instanceof Y))continue;let m=je(p);if(!m||!i(m)||(f=!0,!en.isClassType(Ht(p))))continue;let g=ne(m);if(d.has(g))continue;d.add(g);let b=gr(p).map(y=>({uri:y,localName:y.name})),k=Le(p,Nt),v=Le(p,Dt);c.push({uri:m,localName:m.name,superClasses:b,properties:Kn(s,m,a,o),...k!==void 0?{label:k}:{},...v!==void 0?{comment:v}:{}}),dt(p,Bt)&&l.push({uri:m,localName:m.name,members:yr(s,p),...k!==void 0?{label:k}:{},...v!==void 0?{comment:v}:{}})}if(!f)throw new Error(`buildOntologyModel: ${t.toString()} is not in the ${Array.isArray(e)?"catalog":"repository"} \u2014 a model can only be built for a document ${Array.isArray(e)?"the catalog was parsed from":"the repository holds"}.`);return{classes:c,enums:l}}function pn(r,e={}){let n=r.replace(/\r\n/g,`
2
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],u=[];for(a++;a<n.length&&!/^(\s*)```\s*$/.test(n[a]);)u.push(n[a]),a++;a++;let f=u.join(`
4
- `),p=l&&e.highlight?e.highlight(l,f):rn(f),h=l?` class="language-${qt(l)}"`:"";t.push(`<pre class="kan-code"><code${h}>${p}</code></pre>`);continue}let i=/^(#{1,6})\s+(.*)$/.exec(s);if(i){let l=i[1].length,u=an(i[2].trim());t.push(`<h${l}>${u}</h${l}>`),a++;continue}if(s.includes("|")&&a+1<n.length&&Ht(n[a+1])){let l=Hn(s),u=br(n[a+1]);a+=2;let f=[];for(;a<n.length&&n[a].trim()!==""&&n[a].includes("|");)f.push(Hn(n[a])),a++;t.push(yr(l,u,f));continue}if(/^\s*[-*]\s+/.test(s)){let l=[];for(;a<n.length&&/^\s*[-*]\s+/.test(n[a]);){let u=[n[a].replace(/^\s*[-*]\s+/,"")];for(a++;a<n.length&&n[a].trim()!==""&&!/^\s*[-*]\s+/.test(n[a])&&!/^\s*\d+\.\s+/.test(n[a]);)u.push(n[a]),a++;a<n.length&&n[a].trim()===""&&a++,l.push(`<li>${an(u.join(" ").trim())}</li>`)}t.push(`<ul>
3
+ `),t=[],a=0;for(;a<n.length;){let s=n[a];if(s.trim()===""){a++;continue}let o=/^(\s*)```(\S*)\s*$/.exec(s);if(o){let l=o[2],d=[];for(a++;a<n.length&&!/^(\s*)```\s*$/.test(n[a]);)d.push(n[a]),a++;a++;let f=d.join(`
4
+ `),p=l&&e.highlight?e.highlight(l,f):rn(f),m=l?` class="language-${Gt(l)}"`:"";t.push(`<pre class="kan-code"><code${m}>${p}</code></pre>`);continue}let i=/^(#{1,6})\s+(.*)$/.exec(s);if(i){let l=i[1].length,d=an(i[2].trim());t.push(`<h${l}>${d}</h${l}>`),a++;continue}if(s.includes("|")&&a+1<n.length&&qt(n[a+1])){let l=Hn(s),d=vr(n[a+1]);a+=2;let f=[];for(;a<n.length&&n[a].trim()!==""&&n[a].includes("|");)f.push(Hn(n[a])),a++;t.push($r(l,d,f));continue}if(/^\s*[-*]\s+/.test(s)){let l=[];for(;a<n.length&&/^\s*[-*]\s+/.test(n[a]);){let d=[n[a].replace(/^\s*[-*]\s+/,"")];for(a++;a<n.length&&n[a].trim()!==""&&!/^\s*[-*]\s+/.test(n[a])&&!/^\s*\d+\.\s+/.test(n[a]);)d.push(n[a]),a++;a<n.length&&n[a].trim()===""&&a++,l.push(`<li>${an(d.join(" ").trim())}</li>`)}t.push(`<ul>
5
5
  ${l.join(`
6
6
  `)}
7
- </ul>`);continue}if(/^\s*\d+\.\s+/.test(s)){let l=[];for(;a<n.length&&/^\s*\d+\.\s+/.test(n[a]);){let u=[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]);)u.push(n[a]),a++;a<n.length&&n[a].trim()===""&&a++,l.push(`<li>${an(u.join(" ").trim())}</li>`)}t.push(`<ol>
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>${an(d.join(" ").trim())}</li>`)}t.push(`<ol>
8
8
  ${l.join(`
9
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&&Ht(n[a+1]));)c.push(n[a]),a++;t.push(`<p>${an(c.join(" "))}</p>`)}return t.join(`
11
- `)}function Ht(r){return r.includes("-")?/^[\s|:-]+$/.test(r):!1}function Hn(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 br(r){return Hn(r).map(e=>{let n=e.startsWith(":"),t=e.endsWith(":");return n&&t?"center":t?"right":n?"left":null})}function yr(r,e,n){let t=o=>{let i=e[o];return i?` style="text-align:${i}"`:""},a=r.map((o,i)=>`<th${t(i)}>${an(o)}</th>`).join(""),s=n.map(o=>`<tr>${o.map((c,l)=>`<td${t(l)}>${an(c)}</td>`).join("")}</tr>`).join(`
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&&qt(n[a+1]));)c.push(n[a]),a++;t.push(`<p>${an(c.join(" "))}</p>`)}return t.join(`
11
+ `)}function qt(r){return r.includes("-")?/^[\s|:-]+$/.test(r):!1}function Hn(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 vr(r){return Hn(r).map(e=>{let n=e.startsWith(":"),t=e.endsWith(":");return n&&t?"center":t?"right":n?"left":null})}function $r(r,e,n){let t=o=>{let i=e[o];return i?` style="text-align:${i}"`:""},a=r.map((o,i)=>`<th${t(i)}>${an(o)}</th>`).join(""),s=n.map(o=>`<tr>${o.map((c,l)=>`<td${t(l)}>${an(c)}</td>`).join("")}</tr>`).join(`
12
12
  `);return`<table>
13
13
  <thead><tr>${a}</tr></thead>
14
14
  <tbody>
15
15
  ${s}
16
16
  </tbody>
17
- </table>`}function an(r){let e=rn(r);return e=e.replace(/`([^`\n]+)`/g,(n,t)=>`<code>${t}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(n,t,a)=>`<a href="${qt(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 rn(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function qt(r){return r.replace(/"/g,"&quot;").replace(/&/g,"&amp;")}var vr={publisher:"kanonak.org",package_:"core-rdf",name:"label"};function Je(r){return typeof r=="object"&&r!==null&&r.kind==="raw-string"}var Ce=class extends Error{},mn=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 Ce(`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 Gt(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 Gt(t)}case"property-read":{let t=await this.evaluate(e.source,n);return Rn(t,e.readProp)}case"traverse":{let t=await this.evaluate(e.source,n);if(!(t instanceof Ie))return;let a=Sr(t,e.through),s=[];for(let o of a){let i=le(this.catalog,o),c=i.length>0?i:[await this.resolver.resolveSubject(o,this.catalog)];for(let l of c){if(!l)continue;let u=new Map(n);u.set("input",l);let f=await this.evaluate(e.step,u);if(f!=null&&Ge(f)!==""){s.push(Ge(f));break}}}return s.join("")}case"uri-name":{let t=await this.evaluate(e.source,n);return sn(t)?t.name:t instanceof x?t.subject.name:t instanceof Y?t.name:t instanceof D?t.name??"":void 0}case"uri-publisher":{let t=await this.evaluate(e.source,n);return qn(t)?.publisher}case"uri-package":{let t=await this.evaluate(e.source,n);return qn(t)?.package_}case"uri-version":{let t=await this.evaluate(e.source,n);return qn(t)?.version}case"subject-uri":{let t=await this.evaluate(e.source,n);if(t instanceof Y){let a=t.namespace??"",s=t.name??"";return!a||!s?void 0:`${a}/${s}`}if(t instanceof x){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?Rn(t,e.labelSource):void 0}case"resolve-ref":{let t=await this.evaluate(e.source,n);return t instanceof Y?t:t instanceof x?await this.resolver.resolveSubject(t.subject,this.catalog):sn(t)?await this.resolver.resolveSubject(t,this.catalog):void 0}case"normalize":{let t=await this.evaluate(e.source,n),a=t==null?"":Ge(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?"":Ge(t)}}case"render-markdown":{let t=await this.evaluate(e.source,n);if(!(t instanceof Ie))return;let a;for(let o of t.statement){let i=zn(o);if(i&&ie(i,e.readProp)){a=o;break}}if(!(a instanceof De)){let o=Rn(t,e.readProp);return o==null?void 0:Ge(o)}let s=await this.renderMarkdownLinks(a);return e.format==="html"?pn(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;_r.has(o)&&(Array.isArray(s)&&s.every(i=>zt(i))?s=s.map(i=>Wt(i)).join(""):zt(s)&&(s=Wt(s))),t[o]=s}return t}case"call-fragment":{let t=this.fragments.get(e.fragmentKey);if(!t)throw new Ce(`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?"":Ge(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+=be(s,"Sum");return a}case"min":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Ce("Min on an empty list is undefined; guard with IsSet");let a=be(t[0],"Min");for(let s=1;s<t.length;s++){let o=be(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 Ce("Max on an empty list is undefined; guard with IsSet");let a=be(t[0],"Max");for(let s=1;s<t.length;s++){let o=be(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 Ce("Average on an empty list is undefined; guard with IsSet");let a=0;for(let s of t)a+=be(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,Ke(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,Ke(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,Ke(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,Ke(o));let c=await this.evaluate(e.partitionKey,i),l=Qt(c),u=a.get(l);u||(u={kind:"Partition",key:c,members:[]},a.set(l,u),s.push(l)),u.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,Ke(o));let c=await this.evaluate(e.distinctKey,i),l=Qt(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 Ie?t.statement:[]}case"statement-predicate":{let t=await this.evaluate(e.source,n);if(Gn(t)){let a=t.predicate;if(a instanceof x)return a}return}case"statement-value":{let t=await this.evaluate(e.source,n);return Gn(t)?Or(t):void 0}case"date-format":{let t=await this.evaluate(e.source,n),a=t==null?"":Ge(t);return a?Kr(a,e.format):""}case"number-format":{let t=await this.evaluate(e.source,n),a=t==null?"":Ge(t);return a.trim()?Cr(a,e.style,e.fractionDigits,e.currencyCode):""}case"add":{let t=be(await this.evaluate(e.left,n),"Add"),a=be(await this.evaluate(e.right,n),"Add");return t+a}case"subtract":{let t=be(await this.evaluate(e.left,n),"Subtract"),a=be(await this.evaluate(e.right,n),"Subtract");return t-a}case"multiply":{let t=be(await this.evaluate(e.left,n),"Multiply"),a=be(await this.evaluate(e.right,n),"Multiply");return t*a}case"divide":{let t=be(await this.evaluate(e.left,n),"Divide"),a=be(await this.evaluate(e.right,n),"Divide");if(a===0)throw new Ce("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,Ke(t[s])),o.set(e.secondVar,Ke(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,Ke(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 Yt(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(Yt(s,a))return!0;return!1}case"abs":{let t=be(await this.evaluate(e.value,n),"Abs");return Math.abs(t)}case"negate":return-be(await this.evaluate(e.value,n),"Negate");case"is-reference":{let t=await this.evaluate(e.check,n);return t instanceof x||t instanceof Y}case"is-embedded":return await this.evaluate(e.check,n)instanceof D;case"is-list":{let t=await this.evaluate(e.check,n);return Array.isArray(t)}case"is-string":return typeof await this.evaluate(e.check,n)=="string";case"is-number":return typeof await this.evaluate(e.check,n)=="number";case"is-boolean":return typeof await this.evaluate(e.check,n)=="boolean";case"statement-object":{let t=await this.evaluate(e.source,n);if(!Gn(t))return;let a=t;return a instanceof Z||a instanceof ge||a instanceof fe||a instanceof H||a instanceof ee||a instanceof B?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 Ie)||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 Ce("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}](${ct(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=Rn(n,vr);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,Ke(t[s-1])),o.set(e.secondVar,Ke(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,Ke(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,Ke(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 Rn(r,e){if(r instanceof Ie)return $r(r,e);if(wr(r))return ie(e,d.key)?r.key:ie(e,d.members)?r.members:void 0}function $r(r,e){for(let n of r.statement){let t=zn(n);if(!(!t||!ie(t,e))&&(n instanceof Z||n instanceof ge||n instanceof fe||n instanceof H||n instanceof ee||n instanceof B))return n.object}}function Sr(r,e){let n=[];for(let t of r.statement){let a=zn(t);if(!(!a||!ie(a,e))){if(t instanceof H)n.push(t.object.subject);else if(t instanceof B)for(let s of t.object)s instanceof x&&n.push(s.subject)}}return n}function zn(r){return r.predicate?.subject}function Ge(r){if(r==null)return"";if(typeof r=="string")return r;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Je(r))return r.value;if(r instanceof Ie)return r.name??"";if(r instanceof x)return r.subject.name;if(sn(r))return r.name;let e=r.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function Ke(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)&&!(r instanceof Ie)&&!(r instanceof x)&&!(r instanceof D)&&"value"in r?r.value:r}function Gt(r){return r==null?!1:typeof r=="string"||Array.isArray(r)?r.length>0:typeof r=="boolean"?r===!0:!0}function sn(r){return typeof r=="object"&&r!==null&&typeof r.publisher=="string"&&typeof r.package_=="string"&&typeof r.name=="string"}function wr(r){return typeof r=="object"&&r!==null&&r.kind==="Partition"&&Array.isArray(r.members)}function be(r,e){if(typeof r=="number"&&Number.isFinite(r))return r;throw new Ce(`${e} requires numeric elements; got ${jr(r)}`)}function qn(r){if(r instanceof Y){let e=r.namespace??"",n=e.indexOf("/"),t=e.indexOf("@",n+1);return n<0||t<0?void 0:{publisher:e.substring(0,n),package_:e.substring(n+1,t),version:e.substring(t+1),name:r.name??""}}if(r instanceof x){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(sn(r))return{publisher:r.publisher,package_:r.package_,version:"",name:r.name}}var _r=new Set(["stringValue","text","rawContent","key","propertyKey","linkLabel"]);function zt(r){return typeof r=="string"||typeof r=="number"||typeof r=="boolean"||Je(r)}function Wt(r){return Je(r)?r.value:String(r)}function jr(r){return r===void 0?"undefined":r===null?"null":Array.isArray(r)?`array(${r.length})`:typeof r}function Kr(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}`}}var Rr={USD:"$",EUR:"\u20AC",GBP:"\xA3",JPY:"\xA5"},Er={decimal:0,currency:0,compact:0,percent:2,"basis-points":4};function Lr(r,e){if(e===0)return r;let n=r.startsWith("-"),t=n?r.slice(1):r,a=t.indexOf("."),s=a===-1?t:t.slice(0,a),o=a===-1?"":t.slice(a+1),i=s+o,c=s.length+e,l;return c<=0?l=`0.${"0".repeat(-c)}${i}`:c>=i.length?l=i+"0".repeat(c-i.length):l=`${i.slice(0,c)}.${i.slice(c)}`,l=l.replace(/^0+(?=\d)/,""),n&&/[1-9]/.test(l)?`-${l}`:l}function xr(r){let e=r.startsWith("-"),n=e?r.slice(1):r,t=n.indexOf("."),a=t===-1?n:n.slice(0,t),s=t===-1?"":n.slice(t);return`${e?"-":""}${a.replace(/\B(?=(\d{3})+(?!\d))/g,",")}${s}`}function Cr(r,e,n,t){let a=Number(r.trim());if(!Number.isFinite(a))return"";let s=/e/i.test(r.trim())?a.toFixed(20).replace(/0+$/,""):r.trim();if(e==="compact"){let i=Math.abs(a),c=[[1e12,"T"],[1e9,"B"],[1e6,"M"],[1e3,"K"]];for(let[l,u]of c)if(i>=l){let f=a/l;return`${n===void 0?String(Number(f.toFixed(1))):f.toFixed(n)}${u}`}return n===void 0?String(a):a.toFixed(n)}let o=Lr(s,Er[e]??0);switch(n!==void 0&&(o=Number(o).toFixed(n)),e){case"percent":return`${o}%`;case"basis-points":return`${o} bp`;case"currency":{let i=(t??"USD").toUpperCase(),c=Rr[i]??`${i} `,l=o.startsWith("-");return`${l?"-":""}${c}${xr(l?o.slice(1):o)}`}default:return o}}function Yt(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=Xt(r),i=Xt(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 Xt(r){if(r instanceof x){let e=r.subject;return{publisher:e.publisher,package_:e.package_,name:e.name}}if(r instanceof Y){let e=r.namespace??"",n=e.indexOf("/"),t=e.indexOf("@",n+1);if(n<0)return;let a=e.substring(0,n),s=t>=0?e.substring(n+1,t):e.substring(n+1);return{publisher:a,package_:s,name:r.name??""}}if(sn(r))return{publisher:r.publisher,package_:r.package_,name:r.name}}function Gn(r){return r instanceof Z||r instanceof ge||r instanceof fe||r instanceof H||r instanceof ee||r instanceof B}function Or(r){return r instanceof Z||r instanceof ge||r instanceof fe?String(r.object??""):r instanceof H?r.object?.subject?.name??"":r instanceof ee?"[embedded]":r instanceof B?(r.object??[]).map(n=>{if(n instanceof x)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 Qt(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 x){let e=r.subject;return`r:${e.publisher}/${e.package_}/${e.name}`}if(r instanceof Ie){let e=r.name??"";return`k:${r.namespace??""}/${e}`}return sn(r)?`u:${r.publisher}/${r.package_}/${r.name}`:`o:${JSON.stringify(r)}`}var En=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=Be(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 u=a&&typeof a.major=="number"?l.find(p=>{let h=p.metadata?.namespace_?.version;return h&&h.major===a.major&&h.minor===a.minor&&h.patch===a.patch})??l[0]:l[0],f=new pt(u,this.repository);i=await this.objectParser.parseKanonaks(f),this.cache.set(o,i)}let c=Be(i,e);if(c)return c;for(let l of i)if(l instanceof Y&&l.name===e.name)return l}};var Ln=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?rn(n):n.split(`
17
+ </table>`}function an(r){let e=rn(r);return e=e.replace(/`([^`\n]+)`/g,(n,t)=>`<code>${t}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(n,t,a)=>`<a href="${Gt(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 rn(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Gt(r){return r.replace(/"/g,"&quot;").replace(/&/g,"&amp;")}var Sr={publisher:"kanonak.org",package_:"core-rdf",name:"label"};function Je(r){return typeof r=="object"&&r!==null&&r.kind==="raw-string"}var Ce=class extends Error{},mn=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 Ce(`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 zt(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 zt(t)}case"property-read":{let t=await this.evaluate(e.source,n);return Rn(t,e.readProp)}case"traverse":{let t=await this.evaluate(e.source,n);if(!(t instanceof Ie))return;let a=_r(t,e.through),s=[];for(let o of a){let i=le(this.catalog,o),c=i.length>0?i:[await this.resolver.resolveSubject(o,this.catalog)];for(let l of c){if(!l)continue;let d=new Map(n);d.set("input",l);let f=await this.evaluate(e.step,d);if(f!=null&&Ge(f)!==""){s.push(Ge(f));break}}}return s.join("")}case"uri-name":{let t=await this.evaluate(e.source,n);return sn(t)?t.name:t instanceof x?t.subject.name:t instanceof Y?t.name:t instanceof D?t.name??"":void 0}case"uri-publisher":{let t=await this.evaluate(e.source,n);return qn(t)?.publisher}case"uri-package":{let t=await this.evaluate(e.source,n);return qn(t)?.package_}case"uri-version":{let t=await this.evaluate(e.source,n);return qn(t)?.version}case"subject-uri":{let t=await this.evaluate(e.source,n);if(t instanceof Y){let a=t.namespace??"",s=t.name??"";return!a||!s?void 0:`${a}/${s}`}if(t instanceof x){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?Rn(t,e.labelSource):void 0}case"resolve-ref":{let t=await this.evaluate(e.source,n);return t instanceof Y?t:t instanceof x?await this.resolver.resolveSubject(t.subject,this.catalog):sn(t)?await this.resolver.resolveSubject(t,this.catalog):void 0}case"normalize":{let t=await this.evaluate(e.source,n),a=t==null?"":Ge(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?"":Ge(t)}}case"render-markdown":{let t=await this.evaluate(e.source,n);if(!(t instanceof Ie))return;let a;for(let o of t.statement){let i=zn(o);if(i&&ie(i,e.readProp)){a=o;break}}if(!(a instanceof De)){let o=Rn(t,e.readProp);return o==null?void 0:Ge(o)}let s=await this.renderMarkdownLinks(a);return e.format==="html"?pn(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;Kr.has(o)&&(Array.isArray(s)&&s.every(i=>Wt(i))?s=s.map(i=>Yt(i)).join(""):Wt(s)&&(s=Yt(s))),t[o]=s}return t}case"call-fragment":{let t=this.fragments.get(e.fragmentKey);if(!t)throw new Ce(`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?"":Ge(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+=be(s,"Sum");return a}case"min":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Ce("Min on an empty list is undefined; guard with IsSet");let a=be(t[0],"Min");for(let s=1;s<t.length;s++){let o=be(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 Ce("Max on an empty list is undefined; guard with IsSet");let a=be(t[0],"Max");for(let s=1;s<t.length;s++){let o=be(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 Ce("Average on an empty list is undefined; guard with IsSet");let a=0;for(let s of t)a+=be(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,Ke(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,Ke(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,Ke(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,Ke(o));let c=await this.evaluate(e.partitionKey,i),l=Jt(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,Ke(o));let c=await this.evaluate(e.distinctKey,i),l=Jt(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 Ie?t.statement:[]}case"statement-predicate":{let t=await this.evaluate(e.source,n);if(Gn(t)){let a=t.predicate;if(a instanceof x)return a}return}case"statement-value":{let t=await this.evaluate(e.source,n);return Gn(t)?Ir(t):void 0}case"date-format":{let t=await this.evaluate(e.source,n),a=t==null?"":Ge(t);return a?Er(a,e.format):""}case"number-format":{let t=await this.evaluate(e.source,n),a=t==null?"":Ge(t);return a.trim()?Ur(a,e.style,e.fractionDigits,e.currencyCode):""}case"add":{let t=be(await this.evaluate(e.left,n),"Add"),a=be(await this.evaluate(e.right,n),"Add");return t+a}case"subtract":{let t=be(await this.evaluate(e.left,n),"Subtract"),a=be(await this.evaluate(e.right,n),"Subtract");return t-a}case"multiply":{let t=be(await this.evaluate(e.left,n),"Multiply"),a=be(await this.evaluate(e.right,n),"Multiply");return t*a}case"divide":{let t=be(await this.evaluate(e.left,n),"Divide"),a=be(await this.evaluate(e.right,n),"Divide");if(a===0)throw new Ce("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,Ke(t[s])),o.set(e.secondVar,Ke(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,Ke(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 Xt(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(Xt(s,a))return!0;return!1}case"abs":{let t=be(await this.evaluate(e.value,n),"Abs");return Math.abs(t)}case"negate":return-be(await this.evaluate(e.value,n),"Negate");case"is-reference":{let t=await this.evaluate(e.check,n);return t instanceof x||t instanceof Y}case"is-embedded":return await this.evaluate(e.check,n)instanceof D;case"is-list":{let t=await this.evaluate(e.check,n);return Array.isArray(t)}case"is-string":return typeof await this.evaluate(e.check,n)=="string";case"is-number":return typeof await this.evaluate(e.check,n)=="number";case"is-boolean":return typeof await this.evaluate(e.check,n)=="boolean";case"statement-object":{let t=await this.evaluate(e.source,n);if(!Gn(t))return;let a=t;return a instanceof Z||a instanceof ge||a instanceof fe||a instanceof H||a instanceof ee||a instanceof B?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 Ie)||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 Ce("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}](${ct(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=Rn(n,Sr);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,Ke(t[s-1])),o.set(e.secondVar,Ke(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,Ke(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,Ke(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 Rn(r,e){if(r instanceof Ie)return wr(r,e);if(jr(r))return ie(e,u.key)?r.key:ie(e,u.members)?r.members:void 0}function wr(r,e){for(let n of r.statement){let t=zn(n);if(!(!t||!ie(t,e))&&(n instanceof Z||n instanceof ge||n instanceof fe||n instanceof H||n instanceof ee||n instanceof B))return n.object}}function _r(r,e){let n=[];for(let t of r.statement){let a=zn(t);if(!(!a||!ie(a,e))){if(t instanceof H)n.push(t.object.subject);else if(t instanceof B)for(let s of t.object)s instanceof x&&n.push(s.subject)}}return n}function zn(r){return r.predicate?.subject}function Ge(r){if(r==null)return"";if(typeof r=="string")return r;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Je(r))return r.value;if(r instanceof Ie)return r.name??"";if(r instanceof x)return r.subject.name;if(sn(r))return r.name;let e=r.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function Ke(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)&&!(r instanceof Ie)&&!(r instanceof x)&&!(r instanceof D)&&"value"in r?r.value:r}function zt(r){return r==null?!1:typeof r=="string"||Array.isArray(r)?r.length>0:typeof r=="boolean"?r===!0:!0}function sn(r){return typeof r=="object"&&r!==null&&typeof r.publisher=="string"&&typeof r.package_=="string"&&typeof r.name=="string"}function jr(r){return typeof r=="object"&&r!==null&&r.kind==="Partition"&&Array.isArray(r.members)}function be(r,e){if(typeof r=="number"&&Number.isFinite(r))return r;throw new Ce(`${e} requires numeric elements; got ${Rr(r)}`)}function qn(r){if(r instanceof Y){let e=r.namespace??"",n=e.indexOf("/"),t=e.indexOf("@",n+1);return n<0||t<0?void 0:{publisher:e.substring(0,n),package_:e.substring(n+1,t),version:e.substring(t+1),name:r.name??""}}if(r instanceof x){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(sn(r))return{publisher:r.publisher,package_:r.package_,version:"",name:r.name}}var Kr=new Set(["stringValue","text","rawContent","key","propertyKey","linkLabel"]);function Wt(r){return typeof r=="string"||typeof r=="number"||typeof r=="boolean"||Je(r)}function Yt(r){return Je(r)?r.value:String(r)}function Rr(r){return r===void 0?"undefined":r===null?"null":Array.isArray(r)?`array(${r.length})`:typeof r}function Er(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}`}}var Lr={USD:"$",EUR:"\u20AC",GBP:"\xA3",JPY:"\xA5"},xr={decimal:0,currency:0,compact:0,percent:2,"basis-points":4};function Cr(r,e){if(e===0)return r;let n=r.startsWith("-"),t=n?r.slice(1):r,a=t.indexOf("."),s=a===-1?t:t.slice(0,a),o=a===-1?"":t.slice(a+1),i=s+o,c=s.length+e,l;return c<=0?l=`0.${"0".repeat(-c)}${i}`:c>=i.length?l=i+"0".repeat(c-i.length):l=`${i.slice(0,c)}.${i.slice(c)}`,l=l.replace(/^0+(?=\d)/,""),n&&/[1-9]/.test(l)?`-${l}`:l}function Or(r){let e=r.startsWith("-"),n=e?r.slice(1):r,t=n.indexOf("."),a=t===-1?n:n.slice(0,t),s=t===-1?"":n.slice(t);return`${e?"-":""}${a.replace(/\B(?=(\d{3})+(?!\d))/g,",")}${s}`}function Ur(r,e,n,t){let a=Number(r.trim());if(!Number.isFinite(a))return"";let s=/e/i.test(r.trim())?a.toFixed(20).replace(/0+$/,""):r.trim();if(e==="compact"){let i=Math.abs(a),c=[[1e12,"T"],[1e9,"B"],[1e6,"M"],[1e3,"K"]];for(let[l,d]of c)if(i>=l){let f=a/l;return`${n===void 0?String(Number(f.toFixed(1))):f.toFixed(n)}${d}`}return n===void 0?String(a):a.toFixed(n)}let o=Cr(s,xr[e]??0);switch(n!==void 0&&(o=Number(o).toFixed(n)),e){case"percent":return`${o}%`;case"basis-points":return`${o} bp`;case"currency":{let i=(t??"USD").toUpperCase(),c=Lr[i]??`${i} `,l=o.startsWith("-");return`${l?"-":""}${c}${Or(l?o.slice(1):o)}`}default:return o}}function Xt(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=Qt(r),i=Qt(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 Qt(r){if(r instanceof x){let e=r.subject;return{publisher:e.publisher,package_:e.package_,name:e.name}}if(r instanceof Y){let e=r.namespace??"",n=e.indexOf("/"),t=e.indexOf("@",n+1);if(n<0)return;let a=e.substring(0,n),s=t>=0?e.substring(n+1,t):e.substring(n+1);return{publisher:a,package_:s,name:r.name??""}}if(sn(r))return{publisher:r.publisher,package_:r.package_,name:r.name}}function Gn(r){return r instanceof Z||r instanceof ge||r instanceof fe||r instanceof H||r instanceof ee||r instanceof B}function Ir(r){return r instanceof Z||r instanceof ge||r instanceof fe?String(r.object??""):r instanceof H?r.object?.subject?.name??"":r instanceof ee?"[embedded]":r instanceof B?(r.object??[]).map(n=>{if(n instanceof x)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 Jt(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 x){let e=r.subject;return`r:${e.publisher}/${e.package_}/${e.name}`}if(r instanceof Ie){let e=r.name??"";return`k:${r.namespace??""}/${e}`}return sn(r)?`u:${r.publisher}/${r.package_}/${r.name}`:`o:${JSON.stringify(r)}`}var En=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=Be(n,e);if(t)return t;let a=e.version,s=a&&typeof a.major=="number"?`@${a.major}.${a.minor}.${a.patch}`:"",o=`${e.publisher}/${e.package_}${s}`,i=this.cache.get(o);if(!i){let l=await this.repository.getDocumentsByNamespaceAsync(e.publisher,e.package_);if(l.length===0)return;let d=a&&typeof a.major=="number"?l.find(p=>{let m=p.metadata?.namespace_?.version;return m&&m.major===a.major&&m.minor===a.minor&&m.patch===a.patch})??l[0]:l[0],f=new pt(d,this.repository);i=await this.objectParser.parseKanonaks(f),this.cache.set(o,i)}let c=Be(i,e);if(c)return c;for(let l of i)if(l instanceof Y&&l.name===e.name)return l}};var Ln=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?rn(n):n.split(`
18
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}">${rn(i[0])}</span>`,a+=i[0].length,s=!0;break}}s||(t+=rn(e[a]),a++)}return t}};var Tn={publisher:"kanonak.org",package_:"derivation",name:"look"},Fn={publisher:"kanonak.org",package_:"derivation",name:"tokens"},xe={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},Wn={publisher:"kanonak.org",package_:"core-rdf",name:"label"},Jt={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},Ur={publisher:"kanonak.org",package_:"core-rdf",name:"range"},Ir={publisher:"kanonak.org",package_:"core-rdf",name:"Class"},Tr={publisher:"kanonak.org",package_:"core-owl",name:"Class"},Fr={publisher:"kanonak.org",package_:"look",name:"Hero"},Pr={publisher:"kanonak.org",package_:"look",name:"PropertyList"},Vr={publisher:"kanonak.org",package_:"look",name:"PropertyTable"},Mr={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},Ar={publisher:"kanonak.org",package_:"look",name:"ChipRow"},Nr={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},Dr={publisher:"kanonak.org",package_:"look",name:"ReferencedBy"},Br={publisher:"kanonak.org",package_:"look",name:"Instances"},Zt={publisher:"kanonak.org",package_:"look",name:"Markdown"},Hr={publisher:"kanonak.org",package_:"look",name:"NavGroup"},qr={publisher:"kanonak.org",package_:"look",name:"nav"},Yn={publisher:"kanonak.org",package_:"look",name:"NavLink"},Gr={publisher:"kanonak.org",package_:"look",name:"footer"},zr={publisher:"kanonak.org",package_:"look",name:"text"},Wr={publisher:"kanonak.org",package_:"look",name:"links"},ea={publisher:"kanonak.org",package_:"look",name:"target"},Yr={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},Xr={publisher:"kanonak.org",package_:"look",name:"Timeline"},Qr={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},Jr={publisher:"kanonak.org",package_:"look",name:"Figure"},Zr={publisher:"kanonak.org",package_:"look",name:"Diagram"},es={publisher:"kanonak.org",package_:"look",name:"facets"},ns={publisher:"kanonak.org",package_:"look",name:"relation"},ts={publisher:"kanonak.org",package_:"look",name:"encode"},as={publisher:"kanonak.org",package_:"look",name:"cluster"},rs={publisher:"kanonak.org",package_:"look",name:"connector"},ss={publisher:"kanonak.org",package_:"look",name:"channels"},os={publisher:"kanonak.org",package_:"look",name:"mapPath"},is={publisher:"kanonak.org",package_:"look",name:"to"},cs={publisher:"kanonak.org",package_:"look",name:"mark"},ls={publisher:"kanonak.org",package_:"look",name:"expand"},us={publisher:"kanonak.org",package_:"look",name:"edges"},na={publisher:"kanonak.org",package_:"look",name:"nodeTier"},ds={publisher:"kanonak.org",package_:"look",name:"diagramTier"},fs={publisher:"kanonak.org",package_:"look",name:"nodeNote"},ps={publisher:"kanonak.org",package_:"look",name:"Sequence"},ms={publisher:"kanonak.org",package_:"look",name:"numbered"},gs={publisher:"kanonak.org",package_:"look",name:"EntityRelationship"},ks={publisher:"kanonak.org",package_:"core-owl",name:"SymmetricProperty"},hs={publisher:"kanonak.org",package_:"core-owl",name:"FunctionalProperty"},bs={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},ys={publisher:"kanonak.org",package_:"look",name:"edgeLabel"},vs={publisher:"kanonak.org",package_:"look",name:"labelEdges"},$s={publisher:"kanonak.org",package_:"look",name:"edgeValue"},Ss={publisher:"kanonak.org",package_:"look",name:"figureTitle"},ws={publisher:"kanonak.org",package_:"look",name:"titlePosition"},_s=`(function(){
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}">${rn(i[0])}</span>`,a+=i[0].length,s=!0;break}}s||(t+=rn(e[a]),a++)}return t}};var Fn={publisher:"kanonak.org",package_:"derivation",name:"look"},Tn={publisher:"kanonak.org",package_:"derivation",name:"tokens"},xe={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},Wn={publisher:"kanonak.org",package_:"core-rdf",name:"label"},Zt={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},Fr={publisher:"kanonak.org",package_:"core-rdf",name:"range"},Tr={publisher:"kanonak.org",package_:"core-rdf",name:"Class"},Pr={publisher:"kanonak.org",package_:"core-owl",name:"Class"},Vr={publisher:"kanonak.org",package_:"look",name:"Hero"},Mr={publisher:"kanonak.org",package_:"look",name:"PropertyList"},Ar={publisher:"kanonak.org",package_:"look",name:"PropertyTable"},Nr={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},Dr={publisher:"kanonak.org",package_:"look",name:"ChipRow"},Br={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},Hr={publisher:"kanonak.org",package_:"look",name:"ReferencedBy"},qr={publisher:"kanonak.org",package_:"look",name:"Instances"},ea={publisher:"kanonak.org",package_:"look",name:"Markdown"},Gr={publisher:"kanonak.org",package_:"look",name:"NavGroup"},zr={publisher:"kanonak.org",package_:"look",name:"nav"},Yn={publisher:"kanonak.org",package_:"look",name:"NavLink"},Wr={publisher:"kanonak.org",package_:"look",name:"footer"},Yr={publisher:"kanonak.org",package_:"look",name:"text"},Xr={publisher:"kanonak.org",package_:"look",name:"links"},na={publisher:"kanonak.org",package_:"look",name:"target"},Qr={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},Jr={publisher:"kanonak.org",package_:"look",name:"Timeline"},Zr={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},es={publisher:"kanonak.org",package_:"look",name:"Figure"},ns={publisher:"kanonak.org",package_:"look",name:"Diagram"},ts={publisher:"kanonak.org",package_:"look",name:"facets"},as={publisher:"kanonak.org",package_:"look",name:"relation"},rs={publisher:"kanonak.org",package_:"look",name:"encode"},ss={publisher:"kanonak.org",package_:"look",name:"cluster"},os={publisher:"kanonak.org",package_:"look",name:"connector"},is={publisher:"kanonak.org",package_:"look",name:"channels"},cs={publisher:"kanonak.org",package_:"look",name:"mapPath"},ls={publisher:"kanonak.org",package_:"look",name:"to"},us={publisher:"kanonak.org",package_:"look",name:"mark"},ds={publisher:"kanonak.org",package_:"look",name:"expand"},fs={publisher:"kanonak.org",package_:"look",name:"edges"},ta={publisher:"kanonak.org",package_:"look",name:"nodeTier"},ps={publisher:"kanonak.org",package_:"look",name:"diagramTier"},ms={publisher:"kanonak.org",package_:"look",name:"nodeNote"},gs={publisher:"kanonak.org",package_:"look",name:"Sequence"},ks={publisher:"kanonak.org",package_:"look",name:"numbered"},hs={publisher:"kanonak.org",package_:"look",name:"EntityRelationship"},bs={publisher:"kanonak.org",package_:"core-owl",name:"SymmetricProperty"},ys={publisher:"kanonak.org",package_:"core-owl",name:"FunctionalProperty"},vs={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},$s={publisher:"kanonak.org",package_:"look",name:"edgeLabel"},Ss={publisher:"kanonak.org",package_:"look",name:"labelEdges"},ws={publisher:"kanonak.org",package_:"look",name:"edgeValue"},_s={publisher:"kanonak.org",package_:"look",name:"figureTitle"},js={publisher:"kanonak.org",package_:"look",name:"titlePosition"},Ks=`(function(){
20
20
  if(window.__kanDiagramZoom)return;window.__kanDiagramZoom=1;
21
21
  var TIERS=['chip','icon','card','full'];
22
22
  var css='.kan-dgm-tier[hidden]{display:none}.kan-dgm-tiers{position:relative}'
@@ -62,7 +62,7 @@ var b=document.createElement('button');b.type='button';b.className='kan-dgm-btn'
62
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
63
  b.addEventListener('click',function(ev){ev.preventDefault();ev.stopPropagation();open(c);});c.appendChild(b);})(cs[i]);}}
64
64
  if(document.readyState!=='loading')enhance();else document.addEventListener('DOMContentLoaded',enhance);
65
- })();`,Ae={chip:56,icon:120,card:240,full:420},js=["chip","icon","card","full"],Ks={56:"chip",120:"icon",240:"card",420:"full"},pe=11,Rs={publisher:"kanonak.org",package_:"look",name:"placement"},Es={publisher:"kanonak.org",package_:"look",name:"width"},Ls=4,xs={publisher:"kanonak.org",package_:"look",name:"StatRow"},Cs={publisher:"kanonak.org",package_:"look",name:"Horizon"},Os={publisher:"kanonak.org",package_:"look",name:"PackageContents"},Xn={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},Us={publisher:"kanonak.org",package_:"core-kanonak",name:"Publisher"},Is={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},Ts={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},Fs={publisher:"kanonak.org",package_:"look",name:"packages"},Ps={publisher:"kanonak.org",package_:"code-grammars",name:"CodeGrammar"},Vs={publisher:"kanonak.org",package_:"code-grammars",name:"language"},Ms={publisher:"kanonak.org",package_:"code-grammars",name:"rule"},As={publisher:"kanonak.org",package_:"code-grammars",name:"tokenClass"},Ns={publisher:"kanonak.org",package_:"code-grammars",name:"pattern"},Ds={publisher:"kanonak.org",package_:"look",name:"Links"},Bs={publisher:"kanonak.org",package_:"link",name:"url"},Hs={publisher:"kanonak.org",package_:"link",name:"links"};var qs={publisher:"kanonak.org",package_:"look",name:"Distribution"},Gs={publisher:"kanonak.org",package_:"look",name:"alphaPath"},zs={publisher:"kanonak.org",package_:"look",name:"betaPath"},Qn={publisher:"kanonak.org",package_:"look",name:"SectionHeading"},Ws={publisher:"kanonak.org",package_:"look",name:"SectionNav"},ta={publisher:"kanonak.org",package_:"look",name:"heading"},Ys={publisher:"kanonak.org",package_:"look",name:"note"},Xs={publisher:"kanonak.org",package_:"look",name:"VersionDelta"},Qs={publisher:"kanonak.org",package_:"look",name:"TimePlot"},Js={publisher:"kanonak.org",package_:"look",name:"Details"},Zs={publisher:"kanonak.org",package_:"look",name:"EmbeddedViews"},eo={publisher:"kanonak.org",package_:"look",name:"ResourceCount"},no={publisher:"kanonak.org",package_:"look",name:"counts"},to={publisher:"kanonak.org",package_:"look",name:"skip"},ao={publisher:"kanonak.org",package_:"derivation",name:"derivations"},ro={publisher:"kanonak.org",package_:"look",name:"laneBy"},so={publisher:"kanonak.org",package_:"look",name:"stats"},oo={publisher:"kanonak.org",package_:"look",name:"statPath"},io={publisher:"kanonak.org",package_:"look",name:"statLabel"},aa={publisher:"kanonak.org",package_:"look",name:"labelPath"},co={publisher:"kanonak.org",package_:"look",name:"badgePath"},ra={publisher:"kanonak.org",package_:"look",name:"BarMeter"},lo={publisher:"kanonak.org",package_:"look",name:"cellAs"},uo={publisher:"kanonak.org",package_:"look",name:"variants"},fo={publisher:"kanonak.org",package_:"look",name:"when"},po={publisher:"kanonak.org",package_:"look",name:"property"},sa={publisher:"kanonak.org",package_:"look",name:"equals"},mo={publisher:"kanonak.org",package_:"look",name:"ResourceQuery"},go={publisher:"kanonak.org",package_:"look",name:"ofClass"},ko={publisher:"kanonak.org",package_:"look",name:"direction"},ho={publisher:"kanonak.org",package_:"look",name:"limit"},xn={publisher:"kanonak.org",package_:"look",name:"orderBy"},oa={publisher:"kanonak.org",package_:"look",name:"track"},gn={publisher:"kanonak.org",package_:"look",name:"metricPath"},Jn={publisher:"kanonak.org",package_:"look",name:"hueBy"},ia={publisher:"kanonak.org",package_:"look",name:"lowerPath"},ca={publisher:"kanonak.org",package_:"look",name:"upperPath"},bo={publisher:"kanonak.org",package_:"look",name:"axisMin"},yo={publisher:"kanonak.org",package_:"look",name:"axisMax"},vo={publisher:"kanonak.org",package_:"look",name:"valueLabel"};var la={publisher:"kanonak.org",package_:"look",name:"semanticSvg"},$o={publisher:"kanonak.org",package_:"look",name:"tierChip"},So={publisher:"kanonak.org",package_:"look",name:"tierIcon"},wo={publisher:"kanonak.org",package_:"look",name:"tierCard"},_o={publisher:"kanonak.org",package_:"look",name:"tierFull"},Ne={publisher:"kanonak.org",package_:"core-rdf",name:"type"},at={publisher:"kanonak.org",package_:"core-rdf",name:"subClassOf"},ua=6,Zn={publisher:"kanonak.org",package_:"look",name:"bands"},jo={publisher:"kanonak.org",package_:"look",name:"title"},Ko={publisher:"kanonak.org",package_:"look",name:"eyebrow"},Ro={publisher:"kanonak.org",package_:"look",name:"subtitle"},da={publisher:"kanonak.org",package_:"look",name:"badges"},ke={publisher:"kanonak.org",package_:"look",name:"source"},Eo={publisher:"kanonak.org",package_:"look",name:"via"},Lo={publisher:"kanonak.org",package_:"look",name:"size"},xo={publisher:"kanonak.org",package_:"look",name:"icon"},Co={publisher:"kanonak.org",package_:"look",name:"avatar"},Oo={publisher:"kanonak.org",package_:"look",name:"contents"},Uo={publisher:"kanonak.org",package_:"look",name:"transitive"},Io={publisher:"kanonak.org",package_:"look",name:"chips"},fa={publisher:"kanonak.org",package_:"look",name:"entries"},To={publisher:"kanonak.org",package_:"look",name:"urlForm"},Vn=class r{constructor(e){this.catalog=e}catalog;linkMode="single-publisher";setLinkMode(e){return this.linkMode=e,this}expressionFailureList=[];expressionFailureSeen=new Set;expressionFailures(){return this.expressionFailureList}noteExpressionFailure(e,n){let t=n instanceof Error?n.message:String(n),a=`${e}\0${t}`;this.expressionFailureSeen.has(a)||(this.expressionFailureSeen.add(a),this.expressionFailureList.push({carrier:e,reason:t}));let s=o=>o.replace(/-{2,}/g,"\u2013").replace(/-$/,"");return`<!-- LookRenderer: expression carrier "${s(e)}" did not compile: ${s(t)} Nothing is rendered for it. See /.well-known/kanonak-render (Expression carriers). -->`}get publisherFirst(){return this.linkMode==="open-world"}linkBase(e){return this.publisherFirst?`/${e}`:""}resourceHref(e,n,t="="){return gt.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=Vo(e)?void 0:Cn(e);return n?{declaration:n,sourceClass:{publisher:ue(e),package_:this.uriOf(e).package_,name:e.name}}:this.lookFromTypeRefs(ye(e))}lookFromTypeRefs(e){let n=new Set,t=[...e];for(;t.length>0;){let s=t.shift().subject,o=te(s);if(n.has(o))continue;n.add(o);let i=le(this.catalog,s);for(let c of i){let l=Cn(c);if(l)return{declaration:l,sourceClass:{publisher:s.publisher,package_:s.package_,name:s.name}}}for(let c of i)for(let l of Un(c))t.push(l)}if(!n.has(te(xe)))for(let a of le(this.catalog,xe)){let s=Cn(a);if(s)return{declaration:s,sourceClass:{...xe}}}}matchingVariants(e){let n=this.findCascadedLook(e);if(!n)return[];let t=this.gatherValueItems(J(n.declaration,uo)).filter(i=>i instanceof D);if(t.length===0)return[];let a=re(this.catalog,n.sourceClass),s={namespace:a?.namespace??"",name:a?.name??n.sourceClass.name},o=[];for(let i of t){let c=this.readEmbeddedCarrier(i,fo);if(!c)continue;let l=q(c,po);if(!l)continue;let u=q(c,sa);if(u){let p=J(e,l);this.gatherValueItems(p).filter(m=>m instanceof x).some(m=>te(m.subject)===te(u))&&o.push({variant:i,declaredBy:s});continue}let f=ae(c,sa);f!==void 0&&this.readPropertyValueText(e,l)===f&&o.push({variant:i,declaredBy:s})}return o}findCascadedTokens(e){let n=this.explainCascadedTokens(e),t=new Map;for(let[a,s]of n)t.set(a,s.value);return t}explainCascadedTokens(e){let n=new Map,t=(i,c,l)=>{for(let[u,f]of Fo(i))n.has(u)||n.set(u,{value:f,sourceNamespace:l?.namespace??i.namespace??"",sourceName:l?.name??i.name,level:c})};t(e,"instance");for(let{variant:i,declaredBy:c}of this.matchingVariants(e))t(i,"variant",c);let a=new Set,s=ye(e);for(;s.length>0;){let i=s.shift(),c=te(i.subject);if(a.has(c))continue;a.add(c);let l=c===te(xe)?"resource-floor":"class",u=le(this.catalog,i.subject);if(u.length!==0)for(let f of u){t(f,l);for(let p of Un(f))s.push(p)}}let o=ue(e);if(o){let i=this.publisherSubject(o);i!==e&&t(i,"publisher")}if(!a.has(te(xe))){let i=le(this.catalog,xe);for(let c of i)t(c,"resource-floor")}return n}async renderSvg(e){let n=G(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),u=await this.evaluateTier(s.tierFull,o),p=[...this.findCascadedTokens(e)].map(([h,m])=>`--kan-${h}: ${m};`).join(" ");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" style="${Oe(p)}">
65
+ })();`,Ae={chip:56,icon:120,card:240,full:420},Rs=["chip","icon","card","full"],Es={56:"chip",120:"icon",240:"card",420:"full"},pe=11,Ls={publisher:"kanonak.org",package_:"look",name:"placement"},xs={publisher:"kanonak.org",package_:"look",name:"width"},Cs=4,Os={publisher:"kanonak.org",package_:"look",name:"StatRow"},Us={publisher:"kanonak.org",package_:"look",name:"Horizon"},Is={publisher:"kanonak.org",package_:"look",name:"PackageContents"},Xn={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},Fs={publisher:"kanonak.org",package_:"core-kanonak",name:"Publisher"},Ts={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},Ps={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},Vs={publisher:"kanonak.org",package_:"look",name:"packages"},Ms={publisher:"kanonak.org",package_:"code-grammars",name:"CodeGrammar"},As={publisher:"kanonak.org",package_:"code-grammars",name:"language"},Ns={publisher:"kanonak.org",package_:"code-grammars",name:"rule"},Ds={publisher:"kanonak.org",package_:"code-grammars",name:"tokenClass"},Bs={publisher:"kanonak.org",package_:"code-grammars",name:"pattern"},Hs={publisher:"kanonak.org",package_:"look",name:"Links"},qs={publisher:"kanonak.org",package_:"link",name:"url"},Gs={publisher:"kanonak.org",package_:"link",name:"links"};var zs={publisher:"kanonak.org",package_:"look",name:"Distribution"},Ws={publisher:"kanonak.org",package_:"look",name:"alphaPath"},Ys={publisher:"kanonak.org",package_:"look",name:"betaPath"},Qn={publisher:"kanonak.org",package_:"look",name:"SectionHeading"},Xs={publisher:"kanonak.org",package_:"look",name:"SectionNav"},aa={publisher:"kanonak.org",package_:"look",name:"heading"},Qs={publisher:"kanonak.org",package_:"look",name:"note"},Js={publisher:"kanonak.org",package_:"look",name:"VersionDelta"},Zs={publisher:"kanonak.org",package_:"look",name:"TimePlot"},eo={publisher:"kanonak.org",package_:"look",name:"Details"},no={publisher:"kanonak.org",package_:"look",name:"EmbeddedViews"},to={publisher:"kanonak.org",package_:"look",name:"ResourceCount"},ao={publisher:"kanonak.org",package_:"look",name:"counts"},ro={publisher:"kanonak.org",package_:"look",name:"skip"},so={publisher:"kanonak.org",package_:"derivation",name:"derivations"},oo={publisher:"kanonak.org",package_:"look",name:"laneBy"},io={publisher:"kanonak.org",package_:"look",name:"stats"},co={publisher:"kanonak.org",package_:"look",name:"statPath"},lo={publisher:"kanonak.org",package_:"look",name:"statLabel"},ra={publisher:"kanonak.org",package_:"look",name:"labelPath"},uo={publisher:"kanonak.org",package_:"look",name:"badgePath"},sa={publisher:"kanonak.org",package_:"look",name:"BarMeter"},fo={publisher:"kanonak.org",package_:"look",name:"cellAs"},po={publisher:"kanonak.org",package_:"look",name:"variants"},mo={publisher:"kanonak.org",package_:"look",name:"when"},go={publisher:"kanonak.org",package_:"look",name:"property"},oa={publisher:"kanonak.org",package_:"look",name:"equals"},ko={publisher:"kanonak.org",package_:"look",name:"ResourceQuery"},ho={publisher:"kanonak.org",package_:"look",name:"ofClass"},bo={publisher:"kanonak.org",package_:"look",name:"direction"},yo={publisher:"kanonak.org",package_:"look",name:"limit"},xn={publisher:"kanonak.org",package_:"look",name:"orderBy"},ia={publisher:"kanonak.org",package_:"look",name:"track"},gn={publisher:"kanonak.org",package_:"look",name:"metricPath"},Jn={publisher:"kanonak.org",package_:"look",name:"hueBy"},ca={publisher:"kanonak.org",package_:"look",name:"lowerPath"},la={publisher:"kanonak.org",package_:"look",name:"upperPath"},vo={publisher:"kanonak.org",package_:"look",name:"axisMin"},$o={publisher:"kanonak.org",package_:"look",name:"axisMax"},So={publisher:"kanonak.org",package_:"look",name:"valueLabel"};var ua={publisher:"kanonak.org",package_:"look",name:"semanticSvg"},wo={publisher:"kanonak.org",package_:"look",name:"tierChip"},_o={publisher:"kanonak.org",package_:"look",name:"tierIcon"},jo={publisher:"kanonak.org",package_:"look",name:"tierCard"},Ko={publisher:"kanonak.org",package_:"look",name:"tierFull"},Ne={publisher:"kanonak.org",package_:"core-rdf",name:"type"},at={publisher:"kanonak.org",package_:"core-rdf",name:"subClassOf"},da=6,Zn={publisher:"kanonak.org",package_:"look",name:"bands"},Ro={publisher:"kanonak.org",package_:"look",name:"title"},Eo={publisher:"kanonak.org",package_:"look",name:"eyebrow"},Lo={publisher:"kanonak.org",package_:"look",name:"subtitle"},fa={publisher:"kanonak.org",package_:"look",name:"badges"},ke={publisher:"kanonak.org",package_:"look",name:"source"},xo={publisher:"kanonak.org",package_:"look",name:"via"},Co={publisher:"kanonak.org",package_:"look",name:"size"},Oo={publisher:"kanonak.org",package_:"look",name:"icon"},Uo={publisher:"kanonak.org",package_:"look",name:"avatar"},Io={publisher:"kanonak.org",package_:"look",name:"contents"},Fo={publisher:"kanonak.org",package_:"look",name:"transitive"},To={publisher:"kanonak.org",package_:"look",name:"chips"},pa={publisher:"kanonak.org",package_:"look",name:"entries"},Po={publisher:"kanonak.org",package_:"look",name:"urlForm"},Vn=class r{constructor(e){this.catalog=e}catalog;linkMode="single-publisher";setLinkMode(e){return this.linkMode=e,this}expressionFailureList=[];expressionFailureSeen=new Set;expressionFailures(){return this.expressionFailureList}noteExpressionFailure(e,n){let t=n instanceof Error?n.message:String(n),a=`${e}\0${t}`;this.expressionFailureSeen.has(a)||(this.expressionFailureSeen.add(a),this.expressionFailureList.push({carrier:e,reason:t}));let s=o=>o.replace(/-{2,}/g,"\u2013").replace(/-$/,"");return`<!-- LookRenderer: expression carrier "${s(e)}" did not compile: ${s(t)} Nothing is rendered for it. See /.well-known/kanonak-render (Expression carriers). -->`}get publisherFirst(){return this.linkMode==="open-world"}linkBase(e){return this.publisherFirst?`/${e}`:""}resourceHref(e,n,t="="){return gt.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=Ao(e)?void 0:Cn(e);return n?{declaration:n,sourceClass:{publisher:ue(e),package_:this.uriOf(e).package_,name:e.name}}:this.lookFromTypeRefs(ye(e))}lookFromTypeRefs(e){let n=new Set,t=[...e];for(;t.length>0;){let s=t.shift().subject,o=te(s);if(n.has(o))continue;n.add(o);let i=le(this.catalog,s);for(let c of i){let l=Cn(c);if(l)return{declaration:l,sourceClass:{publisher:s.publisher,package_:s.package_,name:s.name}}}for(let c of i)for(let l of Un(c))t.push(l)}if(!n.has(te(xe)))for(let a of le(this.catalog,xe)){let s=Cn(a);if(s)return{declaration:s,sourceClass:{...xe}}}}matchingVariants(e){let n=this.findCascadedLook(e);if(!n)return[];let t=this.gatherValueItems(J(n.declaration,po)).filter(i=>i instanceof D);if(t.length===0)return[];let a=re(this.catalog,n.sourceClass),s={namespace:a?.namespace??"",name:a?.name??n.sourceClass.name},o=[];for(let i of t){let c=this.readEmbeddedCarrier(i,mo);if(!c)continue;let l=q(c,go);if(!l)continue;let d=q(c,oa);if(d){let p=J(e,l);this.gatherValueItems(p).filter(g=>g instanceof x).some(g=>te(g.subject)===te(d))&&o.push({variant:i,declaredBy:s});continue}let f=ae(c,oa);f!==void 0&&this.readPropertyValueText(e,l)===f&&o.push({variant:i,declaredBy:s})}return o}findCascadedTokens(e){let n=this.explainCascadedTokens(e),t=new Map;for(let[a,s]of n)t.set(a,s.value);return t}explainCascadedTokens(e){let n=new Map,t=(i,c,l)=>{for(let[d,f]of Vo(i))n.has(d)||n.set(d,{value:f,sourceNamespace:l?.namespace??i.namespace??"",sourceName:l?.name??i.name,level:c})};t(e,"instance");for(let{variant:i,declaredBy:c}of this.matchingVariants(e))t(i,"variant",c);let a=new Set,s=ye(e);for(;s.length>0;){let i=s.shift(),c=te(i.subject);if(a.has(c))continue;a.add(c);let l=c===te(xe)?"resource-floor":"class",d=le(this.catalog,i.subject);if(d.length!==0)for(let f of d){t(f,l);for(let p of Un(f))s.push(p)}}let o=ue(e);if(o){let i=this.publisherSubject(o);i!==e&&t(i,"publisher")}if(!a.has(te(xe))){let i=le(this.catalog,xe);for(let c of i)t(c,"resource-floor")}return n}async renderSvg(e){let n=G(this.catalog,e).label,t=(n.trim().charAt(0)||"?").toUpperCase(),a=`${e.namespace??""}/${e.name}`,s=this.collectCascadedSvgTiers(e),o=new Map([["input",e],["label",n],["firstLetter",t],["uri",a],["resourceKey",e.name]]),i=await this.evaluateTier(s.tierChip,o),c=await this.evaluateTier(s.tierIcon,o),l=await this.evaluateTier(s.tierCard,o),d=await this.evaluateTier(s.tierFull,o),p=[...this.findCascadedTokens(e)].map(([m,g])=>`--kan-${m}: ${g};`).join(" ");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" style="${Oe(p)}">
66
66
  <style>
67
67
  .tier-chip,.tier-icon,.tier-card{display:none}
68
68
  .tier-full{display:block}
@@ -73,17 +73,17 @@ if(document.readyState!=='loading')enhance();else document.addEventListener('DOM
73
73
  <g class="tier-chip">${i}</g>
74
74
  <g class="tier-icon">${c}</g>
75
75
  <g class="tier-card">${l}</g>
76
- <g class="tier-full">${u}</g>
77
- </svg>`}resolverInstance;expressionResolver(){if(!this.resolverInstance){let e=new it,n=new ot(e);this.resolverInstance=new En(n,e,new $n(e))}return this.resolverInstance}async evaluateTier(e,n){if(!e)return"";let t;try{t=Pe(e,"semanticSvg-tier",{catalog:this.catalog,depth:0})}catch(o){return this.noteExpressionFailure("look.semanticSvg tier",o)}let a=new mn(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(ma(i.kind,c))}return o.join("")}let s=await a.evaluate(t,n);return ma(t.kind,s)}async evaluateCarrier(e,n){if(!e)return;let t;try{t=Pe(e,"look-carrier",{catalog:this.catalog,depth:0})}catch(c){this.noteExpressionFailure("look band path carrier",c);return}let a=new mn(this.expressionResolver(),this.catalog),s=new Map([["input",n]]),o=await a.evaluate(t,s),i=ba(o);return i===""?void 0:i}async evaluateCarrierNum(e,n){let t=await this.evaluateCarrier(e,n);return t===void 0?NaN:parseFloat(t)}readEmbeddedCarrier(e,n){let t=J(e,n);return t instanceof ee&&t.object instanceof D?t.object:void 0}referenceLabel(e){let n=e.subject,t=le(this.catalog,n);if(t.length===0){let a=re(this.catalog,n);a&&t.push(a)}for(let a of t){let s=G(this.catalog,a);if(s.label!==a.name)return s.label}return n.name}collectCascadedSvgTiers(e){let n={},t=c=>{let l=J(c,la);if(!(l instanceof ee))return;let u=l.object,f=On(u,$o),p=On(u,So),h=On(u,wo),m=On(u,_o);n.tierChip===void 0&&f!==void 0&&(n.tierChip=f),n.tierIcon===void 0&&p!==void 0&&(n.tierIcon=p),n.tierCard===void 0&&h!==void 0&&(n.tierCard=h),n.tierFull===void 0&&m!==void 0&&(n.tierFull=m)};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 u of le(this.catalog,l))t(u)}let o=new Set,i=ye(e);for(;i.length>0;){let c=i.shift(),l=te(c.subject);if(o.has(l))continue;o.add(l);let u=le(this.catalog,c.subject);for(let f of u){t(f);for(let p of Un(f))i.push(p)}}if(!o.has(te(xe)))for(let c of le(this.catalog,xe))t(c);return n}renderStylesheet(e){let n=this.explainStylesheet(e),t=[];for(let[o,i]of n.tokens)t.push(` --kan-${o}: ${i.value};`);let a=t.length>0?`:root {
76
+ <g class="tier-full">${d}</g>
77
+ </svg>`}resolverInstance;expressionResolver(){if(!this.resolverInstance){let e=new it,n=new ot(e);this.resolverInstance=new En(n,e,new $n(e))}return this.resolverInstance}async evaluateTier(e,n){if(!e)return"";let t;try{t=Pe(e,"semanticSvg-tier",{catalog:this.catalog,depth:0})}catch(o){return this.noteExpressionFailure("look.semanticSvg tier",o)}let a=new mn(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(ga(i.kind,c))}return o.join("")}let s=await a.evaluate(t,n);return ga(t.kind,s)}async evaluateCarrier(e,n){if(!e)return;let t;try{t=Pe(e,"look-carrier",{catalog:this.catalog,depth:0})}catch(c){this.noteExpressionFailure("look band path carrier",c);return}let a=new mn(this.expressionResolver(),this.catalog),s=new Map([["input",n]]),o=await a.evaluate(t,s),i=ya(o);return i===""?void 0:i}async evaluateCarrierNum(e,n){let t=await this.evaluateCarrier(e,n);return t===void 0?NaN:parseFloat(t)}readEmbeddedCarrier(e,n){let t=J(e,n);return t instanceof ee&&t.object instanceof D?t.object:void 0}referenceLabel(e){let n=e.subject,t=le(this.catalog,n);if(t.length===0){let a=re(this.catalog,n);a&&t.push(a)}for(let a of t){let s=G(this.catalog,a);if(s.label!==a.name)return s.label}return n.name}collectCascadedSvgTiers(e){let n={},t=c=>{let l=J(c,ua);if(!(l instanceof ee))return;let d=l.object,f=On(d,wo),p=On(d,_o),m=On(d,jo),g=On(d,Ko);n.tierChip===void 0&&f!==void 0&&(n.tierChip=f),n.tierIcon===void 0&&p!==void 0&&(n.tierIcon=p),n.tierCard===void 0&&m!==void 0&&(n.tierCard=m),n.tierFull===void 0&&g!==void 0&&(n.tierFull=g)};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 le(this.catalog,l))t(d)}let o=new Set,i=ye(e);for(;i.length>0;){let c=i.shift(),l=te(c.subject);if(o.has(l))continue;o.add(l);let d=le(this.catalog,c.subject);for(let f of d){t(f);for(let p of Un(f))i.push(p)}}if(!o.has(te(xe)))for(let c of le(this.catalog,xe))t(c);return n}renderStylesheet(e){let n=this.explainStylesheet(e),t=[];for(let[o,i]of n.tokens)t.push(` --kan-${o}: ${i.value};`);let a=t.length>0?`:root {
78
78
  ${t.join(`
79
79
  `)}
80
- }`:":root { /* no tokens resolved */ }",s=n.baseStylesheet.css??"";return`${Mo(n)}
80
+ }`:":root { /* no tokens resolved */ }",s=n.baseStylesheet.css??"";return`${No(n)}
81
81
  ${a}
82
- ${s}`}explainStylesheet(e){let n=this.explainCascadedTokens(e),t=this.explainBaseStylesheet(ue(e)),a=this.findCascadedLook(e),s=[];return t.css||(t.problem==="content-property-unresolved"?s.push(`Base stylesheet asset ${t.sourceNamespace}/base-stylesheet is in the catalog but its site.content property did not resolve \u2014 the package was likely cached without its imports block. Pages will render UNSTYLED (CSS stops at :root). Fix: re-install it from its published source: kanonak install kanonak.org/look-styles`):s.push("No look-styles package in the render catalog \u2014 pages will render UNSTYLED (CSS stops at :root). The look stack is ambient (not imported): it must be in the workspace, the global cache, or fetchable from kanonak.org by the user running the render. Fix: kanonak install kanonak.org/look-styles")),n.size===0&&s.push("No design tokens resolved \u2014 the :root block is empty. The universal token floor lives on rdfs.Resource in kanonak.org/look-tokens; that package is missing from the render catalog. Fix: kanonak install kanonak.org/look-tokens"),a||s.push(`No look (band declaration) resolved for ${e.namespace}/${e.name} \u2014 the HTML body will be an empty comment. The universal look floor lives on rdfs.Resource in kanonak.org/universal-look. Fix: kanonak install kanonak.org/universal-look`),{resource:{namespace:e.namespace||"",name:e.name},tokens:n,baseStylesheet:t,...a?{look:{sourceClass:a.sourceClass}}:{},warnings:s}}findBaseStylesheet(e){return this.explainBaseStylesheet(e).css}explainBaseStylesheet(e){let n="kanonak.org/site/content",t=f=>this.uriOf(f).version??null,a=[],s,o,i,c;for(let f of this.catalog){if(!(f instanceof Y)||f.name!=="base-stylesheet")continue;let p=f.namespace||"";if(p.startsWith(`${e}/look-styles@`)){a.push(p);let h=t(f);h&&(!o||kn(h,o)>0)&&(s=f,o=h)}else if(p.startsWith("kanonak.org/look-styles@")){a.push(p);let h=t(f);h&&(!c||kn(h,c)>0)&&(i=f,c=h)}}let l=s??i;if(!l)return{problem:"no-look-styles-in-catalog",candidates:a};let u=l===s?"publisher-override":"universal-default";for(let f of l.statement){let p=f.predicate?.subject;if(!p)continue;if(`${p.publisher}/${p.package_}/${p.name}`===n&&f instanceof Z)return{css:f.object,sourceNamespace:l.namespace||"",scope:u,candidates:a}}return{problem:"content-property-unresolved",sourceNamespace:l.namespace||"",scope:u,candidates:a}}async renderHtml(e){let n=this.findCascadedLook(e);if(!n)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let t=et(n.declaration);if(t.length===0){let i=n.declaration.unresolvedPredicates;return i.length>0?`<!-- LookRenderer: look declaration has no bands \u2014 unresolved predicates dropped from the parse: ${i.map(l=>`${l.key} (authored by ${l.sourceDoc})`).join(", ")}. An import in the authoring document did not resolve; see the render-stack warnings (/.well-known/kanonak-render). -->`:"<!-- LookRenderer: look declaration has no bands -->"}let a=ue(e),s=this.collectSectionHeadings(t);this.diagramScriptEmitted=!1,this.diagramArrowSeq=0;let o=[];for(let i of t){let c=on(i);c&&X(c,Qn)&&o.push('<div style="clear:both"></div>'),o.push(this.applyBandPlacement(i,await this.renderBand(i,e,a,s)))}return o.push('<div style="clear:both"></div>'),o.join(`
83
- `)}applyBandPlacement(e,n){let t=ae(e,Rs);if(t!=="floatLeft"&&t!=="floatRight")return n;let a=t==="floatLeft"?"left":"right",s=ae(e,Es),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=on(t);if(!a||!X(a,Qn))continue;let s=ae(t,ta);s&&n.push({slug:ga(s),label:s})}return n}publisherSubject(e){for(let t of this.catalog){if(!(t instanceof Y)||ue(t)!==e||!ye(t).some(s=>X(s.subject,Us)))continue;return le(this.catalog,{publisher:e,package_:this.uriOf(t).package_,name:t.name})[0]??t}let n=new Y;return n.namespace=e,n.name=e,n.statement=[H.parse("kanonak.org/core-rdf/type","kanonak.org/core-kanonak/Publisher"),Z.parse("kanonak.org/core-rdf/label",e)],n}hasDeclaredView(e){let n=this.findCascadedLook(e);return n?!(a=>a.publisher===xe.publisher&&a.package_===xe.package_&&a.name===xe.name||a.publisher===Xn.publisher&&a.package_===Xn.package_&&a.name===Xn.name)(n.sourceClass):!1}renderPackageVersionList(e,n,t){let a=ue(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(`
82
+ ${s}`}explainStylesheet(e){let n=this.explainCascadedTokens(e),t=this.explainBaseStylesheet(ue(e)),a=this.findCascadedLook(e),s=[];return t.css||(t.problem==="content-property-unresolved"?s.push(`Base stylesheet asset ${t.sourceNamespace}/base-stylesheet is in the catalog but its site.content property did not resolve \u2014 the package was likely cached without its imports block. Pages will render UNSTYLED (CSS stops at :root). Fix: re-install it from its published source: kanonak install kanonak.org/look-styles`):s.push("No look-styles package in the render catalog \u2014 pages will render UNSTYLED (CSS stops at :root). The look stack is ambient (not imported): it must be in the workspace, the global cache, or fetchable from kanonak.org by the user running the render. Fix: kanonak install kanonak.org/look-styles")),n.size===0&&s.push("No design tokens resolved \u2014 the :root block is empty. The universal token floor lives on rdfs.Resource in kanonak.org/look-tokens; that package is missing from the render catalog. Fix: kanonak install kanonak.org/look-tokens"),a||s.push(`No look (band declaration) resolved for ${e.namespace}/${e.name} \u2014 the HTML body will be an empty comment. The universal look floor lives on rdfs.Resource in kanonak.org/universal-look. Fix: kanonak install kanonak.org/universal-look`),{resource:{namespace:e.namespace||"",name:e.name},tokens:n,baseStylesheet:t,...a?{look:{sourceClass:a.sourceClass}}:{},warnings:s}}findBaseStylesheet(e){return this.explainBaseStylesheet(e).css}explainBaseStylesheet(e){let n="kanonak.org/site/content",t=f=>this.uriOf(f).version??null,a=[],s,o,i,c;for(let f of this.catalog){if(!(f instanceof Y)||f.name!=="base-stylesheet")continue;let p=f.namespace||"";if(p.startsWith(`${e}/look-styles@`)){a.push(p);let m=t(f);m&&(!o||kn(m,o)>0)&&(s=f,o=m)}else if(p.startsWith("kanonak.org/look-styles@")){a.push(p);let m=t(f);m&&(!c||kn(m,c)>0)&&(i=f,c=m)}}let l=s??i;if(!l)return{problem:"no-look-styles-in-catalog",candidates:a};let d=l===s?"publisher-override":"universal-default";for(let f of l.statement){let p=f.predicate?.subject;if(!p)continue;if(`${p.publisher}/${p.package_}/${p.name}`===n&&f instanceof Z)return{css:f.object,sourceNamespace:l.namespace||"",scope:d,candidates:a}}return{problem:"content-property-unresolved",sourceNamespace:l.namespace||"",scope:d,candidates:a}}async renderHtml(e){let n=this.findCascadedLook(e);if(!n)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let t=et(n.declaration);if(t.length===0){let i=n.declaration.unresolvedPredicates;return i.length>0?`<!-- LookRenderer: look declaration has no bands \u2014 unresolved predicates dropped from the parse: ${i.map(l=>`${l.key} (authored by ${l.sourceDoc})`).join(", ")}. An import in the authoring document did not resolve; see the render-stack warnings (/.well-known/kanonak-render). -->`:"<!-- LookRenderer: look declaration has no bands -->"}let a=ue(e),s=this.collectSectionHeadings(t);this.diagramScriptEmitted=!1,this.diagramArrowSeq=0;let o=[];for(let i of t){let c=on(i);c&&X(c,Qn)&&o.push('<div style="clear:both"></div>'),o.push(this.applyBandPlacement(i,await this.renderBand(i,e,a,s)))}return o.push('<div style="clear:both"></div>'),o.join(`
83
+ `)}applyBandPlacement(e,n){let t=ae(e,Ls);if(t!=="floatLeft"&&t!=="floatRight")return n;let a=t==="floatLeft"?"left":"right",s=ae(e,xs),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=on(t);if(!a||!X(a,Qn))continue;let s=ae(t,aa);s&&n.push({slug:ka(s),label:s})}return n}publisherSubject(e){for(let t of this.catalog){if(!(t instanceof Y)||ue(t)!==e||!ye(t).some(s=>X(s.subject,Fs)))continue;return le(this.catalog,{publisher:e,package_:this.uriOf(t).package_,name:t.name})[0]??t}let n=new Y;return n.namespace=e,n.name=e,n.statement=[H.parse("kanonak.org/core-rdf/type","kanonak.org/core-kanonak/Publisher"),Z.parse("kanonak.org/core-rdf/label",e)],n}hasDeclaredView(e){let n=this.findCascadedLook(e);return n?!(a=>a.publisher===xe.publisher&&a.package_===xe.package_&&a.name===xe.name||a.publisher===Xn.publisher&&a.package_===Xn.package_&&a.name===Xn.name)(n.sourceClass):!1}renderPackageVersionList(e,n,t){let a=ue(t),s=this.renderNavGroup(t,a),o=this.renderBreadcrumb(t,a,{bareOverview:!0}),i=n.map(l=>`<a class="kan-resource-card" href="${h(this.packageHref(a,e,l))}/"><h3 class="kan-resource-card-title">${h(l)}</h3></a>`).join(`
84
84
  `),c=`<header class="kan-hero">
85
85
  <span class="kan-hero-eyebrow">PACKAGE</span>
86
- <h1 class="kan-hero-title">${g(e)}</h1>
86
+ <h1 class="kan-hero-title">${h(e)}</h1>
87
87
  </header>
88
88
  <section class="kan-resource-grid">
89
89
  ${i}
@@ -92,8 +92,8 @@ ${i}
92
92
  <head>
93
93
  <meta charset="utf-8">
94
94
  <meta name="viewport" content="width=device-width, initial-scale=1">
95
- <title>${g(e)}</title>
96
- <link rel="stylesheet" href="${g(t.name)}.css">
95
+ <title>${h(e)}</title>
96
+ <link rel="stylesheet" href="${h(t.name)}.css">
97
97
  </head>
98
98
  <body>
99
99
  ${s}
@@ -103,53 +103,53 @@ ${c}
103
103
  </main>
104
104
  </body>
105
105
  </html>
106
- `}async renderDocument(e,n){let t=await this.renderHtml(e),a=G(this.catalog,e).label,s=n?.rootIndex?"index.css":`${e.name}.css`,o=!n?.rootIndex&&this.hasSvgDerivation(e)?`<figure class="kan-figure"><img src="${g(e.name)}.svg" alt=""></figure>
107
- `:"",i=ue(e),c=this.renderNavGroup(e,i),l=this.renderSiteFooter(i),u=n?.rootIndex?"":this.renderBreadcrumb(e,i,n);return`<!doctype html>
106
+ `}async renderDocument(e,n){let t=await this.renderHtml(e),a=G(this.catalog,e).label,s=n?.rootIndex?"index.css":`${e.name}.css`,o=!n?.rootIndex&&this.hasSvgDerivation(e)?`<figure class="kan-figure"><img src="${h(e.name)}.svg" alt=""></figure>
107
+ `:"",i=ue(e),c=this.renderNavGroup(e,i),l=this.renderSiteFooter(i),d=n?.rootIndex?"":this.renderBreadcrumb(e,i,n);return`<!doctype html>
108
108
  <html lang="en">
109
109
  <head>
110
110
  <meta charset="utf-8">
111
111
  <meta name="viewport" content="width=device-width, initial-scale=1">
112
- <title>${g(a)}</title>
113
- <link rel="stylesheet" href="${g(s)}">
112
+ <title>${h(a)}</title>
113
+ <link rel="stylesheet" href="${h(s)}">
114
114
  </head>
115
115
  <body>
116
116
  ${c}
117
- ${u}
117
+ ${d}
118
118
  <main class="kan-main">
119
119
  ${o}${t}
120
120
  </main>
121
121
  ${l}
122
122
  </body>
123
123
  </html>
124
- `}hasSvgDerivation(e){let n=new Set,t=ye(e);for(;t.length>0;){let a=t.shift(),s=te(a.subject);if(n.has(s))continue;n.add(s);let o=re(this.catalog,a.subject);if(o){for(let i of o.statement)if(i instanceof B&&Re(i,"kanonak.org","derivation","derivations")){for(let c of i.object??[])if(c instanceof D)for(let l of c.statement){if(!(l instanceof H)||!Re(l,"kanonak.org","derivation","format")||!(l.object instanceof x))continue;let u=l.object.subject;if(u.publisher==="kanonak.org"&&u.package_==="formats"&&u.name==="svg")return!0}}for(let i of Un(o))t.push(i)}}return!1}static BAND_DISPATCH=[[Ws,(e,n)=>e.renderSectionNav(n.sections)],[Fr,(e,n)=>e.renderHero(n.band,n.instance,n.contextPublisher)],[Pr,(e,n)=>e.renderPropertyList(n.band,n.instance,n.contextPublisher)],[Vr,(e,n)=>e.renderPropertyTable(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[Mr,(e,n)=>e.renderBadgeRow(n.band,n.instance,n.contextPublisher)],[Ar,(e,n)=>e.renderChipRow(n.band,n.instance,n.contextPublisher)],[Nr,(e,n)=>e.renderReferenceList(n.band,n.instance,n.contextPublisher)],[Dr,(e,n)=>e.renderReferencedBy(n.band,n.instance,n.contextPublisher)],[Br,(e,n)=>e.renderInstances(n.band,n.instance,n.contextPublisher)],[Zt,(e,n)=>e.renderMarkdown(n.band,n.instance,n.contextPublisher)],[Ds,(e,n)=>e.renderLinks(n.band,n.instance)],[Hr,(e,n)=>e.renderNavGroup(n.instance,n.contextPublisher)],[Yr,(e,n)=>e.renderResourceGrid(n.band,n.contextPublisher,n.instance)],[Xr,(e,n)=>e.renderTimeline(n.band,n.contextPublisher)],[Qr,(e,n)=>e.renderVersionDiff(n.band,n.contextPublisher)],[Jr,(e,n)=>e.renderFigure(n.band,n.instance,n.contextPublisher)],[Zr,(e,n)=>e.renderDiagram(n.band,n.instance,n.contextPublisher)],[ps,(e,n)=>e.renderSequence(n.band,n.instance,n.contextPublisher)],[gs,(e,n)=>e.renderEntityRelationship(n.band,n.instance,n.contextPublisher)],[xs,(e,n)=>e.renderStatRow(n.band,n.instance)],[Cs,(e,n)=>e.renderHorizon(n.band,n.instance,n.contextPublisher)],[Os,(e,n)=>e.renderPackageContents(n.instance,n.contextPublisher)],[Is,(e,n)=>e.renderFeaturedResource(n.band,n.contextPublisher)],[Ts,(e,n)=>e.renderPublisherPackages(n.band,n.contextPublisher)],[qs,(e,n)=>e.renderDistribution(n.band,n.instance)],[Qn,(e,n)=>e.renderSectionHeading(n.band)],[Xs,(e,n)=>e.renderVersionDelta(n.band,n.instance)],[Qs,(e,n)=>e.renderTimePlot(n.band,n.instance,n.contextPublisher)],[Js,(e,n)=>e.renderDetails(n.band,n.instance,n.contextPublisher)],[Zs,(e,n)=>e.renderEmbeddedViews(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[eo,(e,n)=>e.renderResourceCount(n.band,n.contextPublisher)],[ra,(e,n)=>e.renderBarMeter(n.band,n.instance)]];static bandDispatchUris(){return r.BAND_DISPATCH.map(([e])=>e)}uriOf(e){let n=je(e);return n?{publisher:n.publisher,package_:n.package_,name:n.name,...n.version?{version:n.version}:{}}:{publisher:ue(e),package_:"",name:e.name}}async renderBand(e,n,t,a=[],s=""){let o=on(e);if(!o)return"<!-- LookRenderer: band has no rdf:type -->";let i={band:e,instance:n,contextPublisher:t,sections:a,pathPrefix:s};for(let[c,l]of r.BAND_DISPATCH)if(X(o,c))return l(this,i);return`<!-- LookRenderer: unsupported band ${o.publisher}/${o.package_}/${o.name} -->`}async collectTrackedSeries(e,n,t,a){let{hueBy:s,lowerPath:o,upperPath:i}=a??{},c=new Map,l=e.length;for(let u=0;u<e.length;u++){let f=e[u],p=this.readPropertyValueReferences(f,n);for(let h of p){let m=re(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,k=c.get(b);k||(k={key:b,label:G(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,k));let $=await this.evaluateCarrierNum(t,m);if(Number.isFinite($)&&(k.points[u]=$),o&&k.lower){let y=await this.evaluateCarrierNum(o,m);Number.isFinite(y)&&(k.lower[u]=y)}if(i&&k.upper){let y=await this.evaluateCarrierNum(i,m);Number.isFinite(y)&&(k.upper[u]=y)}if(s){let y=await this.evaluateCarrierNum(s,m);Number.isFinite(y)&&(k.hue=y)}k.lastSubject=m}}return[...c.values()]}hrefForSubject(e,n,t="="){let a=this.uriOf(e),s=a.package_,o=a.version;return this.resourceHref({publisher:ue(e),package_:s,name:e.name,...o?{version:o}:{}},n,t)}async renderVersionDiff(e,n){let t=q(e,ke);if(!t)return"<!-- LookRenderer.VersionDiff: no look.source -->";let a=this.readEmbeddedCarrier(e,gn),s=q(e,oa);if(!s||!a)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let o=q(e,xn),i=this.readEmbeddedCarrier(e,Jn),c=this.findInstancesOfClass(t,this.readTransitive(e));if(c.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let l=h=>o?this.readPropertyValueText(h,o)??"":"",u=c.slice().sort((h,m)=>l(h).localeCompare(l(m))),f=await this.collectTrackedSeries(u,s,a,{hueBy:i});return f.length===0?"<!-- LookRenderer.VersionDiff: no tracked series -->":`<section class="kan-vdiff">${f.map((h,m)=>{let b=h.hue!==void 0?h.hue:Math.round(m*360/f.length),k=h.points.filter(C=>C!==null);if(k.length===0)return"";let $=k[0],y=k[k.length-1],K=y-$,E;if(Math.abs(K)>=.005){let C=K>0?"up":"down",F=K>0?"\u25B2":"\u25BC";E=`<span class="kan-vdiff-delta ${C}">${K>0?"+":""}${K.toFixed(2)} ${F}</span>`}else E='<span class="kan-vdiff-delta flat">\u2014</span>';let U=h.lastSubject&&this.isLinkable(ue(h.lastSubject),n)?`<a href="${g(this.hrefForSubject(h.lastSubject,n))}">${g(h.label)}</a>`:g(h.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${b}"><span class="kan-vdiff-label">${U}</span><span class="kan-vdiff-start">${$.toFixed(2)}</span>`+this.sparkline(h.points,b)+`<span class="kan-vdiff-end">${y.toFixed(2)}</span>`+E+"</div>"}).join("")}</section>`}sparkline(e,n){let o=`hsl(${n},65%,60%)`,i=e.filter(k=>k!==null);if(i.length===0)return'<svg class="kan-vdiff-spark" viewBox="0 0 132 30" xmlns="http://www.w3.org/2000/svg"></svg>';let c=Math.min(...i),u=Math.max(...i)-c,f=e.length,p=k=>f<=1?132/2:4+k/(f-1)*124,h=k=>u<1e-9?30/2:26-(k-c)/u*22,m=[],b=[];return e.forEach((k,$)=>{if(k===null)return;let y=p($),K=h(k);m.push(`${y.toFixed(1)},${K.toFixed(1)}`),b.push(`<circle cx="${y.toFixed(1)}" cy="${K.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="${m.join(" ")}" fill="none" stroke="${o}" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round"/>`+b.join("")+"</svg>"}svgUrlForSubject(e,n,t="="){return`${this.hrefForSubject(e,n,t)}.svg`}renderFigure(e,n,t){let a=n,s=q(e,ke);if(s){let u=re(this.catalog,s);u&&(a=u)}let o=this.svgUrlForSubject(a,t),i=G(this.catalog,a).label,c=ae(e,Lo);return`<figure class="kan-figure${c==="small"||c==="medium"||c==="large"?` kan-figure-${c}`:""}"><img class="kan-figure-img" src="${g(o)}" alt="${g(i)}" loading="lazy"/></figure>`}diagramArrowSeq=0;diagramScriptEmitted=!1;async renderDiagram(e,n,t,a=0,s=new Set){let o=this.gatherValueItems(J(e,es)).filter(m=>m instanceof D);if(o.length===0)return"<!-- LookRenderer.Diagram: no look.facets -->";let i=[];for(let m of o){let b=q(m,ns);if(!b){i.push("<!-- LookRenderer.Diagram: facet has no resolvable look.relation -->");continue}let k=q(m,ts),$=this.resolveFacetNodes(n,b);if($.length===0){i.push(`<!-- LookRenderer.Diagram: relation ${b.publisher}/${b.package_}/${b.name} resolved to 0 instances -->`);continue}let y=await this.resolveFacetChannels(m,$),K=J(m,cs),E=K instanceof ee&&K.object instanceof D?K.object:void 0,U=ae(m,na),C=U&&Ae[U]!==void 0?Ae[U]:void 0,F=C??this.classTierSize($),_=Ks[F??Ae.icon]??"icon",W=this.readEmbeddedCarrier(m,fs),P=q(m,ls),V=P?re(this.catalog,P):void 0;if(V){i.push(await this.renderDiagramExpand($,V,t,a,s,W,C));continue}if(k&&X(k,rs)){let L=q(m,us),j=this.facetEdgeLabel(m,L??b),N=this.readEmbeddedCarrier(m,$s);i.push(await this.embedTiers(_,R=>L?this.renderDiagramDag($,L,y,t,R,j,N):this.renderDiagramConnector(n,$,y,t,R,j,N)));continue}if(k&&!X(k,as)){i.push(`<!-- LookRenderer.Diagram: unknown encode role ${k.publisher}/${k.package_}/${k.name} -->`);continue}i.push(E?`<div class="kan-dgm-tiers" data-geo="1"><div class="kan-dgm-tier" data-tier="card">${await this.renderDiagramCluster($,y,E,t,F)}</div></div>`:await this.embedTiers(_,L=>this.renderDiagramCluster($,y,void 0,t,L)))}let c=ae(e,Ss),l=ae(e,ws),u=m=>`<div class="kan-diagram-title" style="font-weight:600;font-size:0.95rem;color:var(--kan-text);${m}">${g(c)}</div>`,f=c&&l!=="bottom"?u("margin:0 0 .5rem"):"",p=c&&l==="bottom"?u("margin:.5rem 0 0"):"",h="";return a===0&&!this.diagramScriptEmitted&&(this.diagramScriptEmitted=!0,h=`<script>${_s}</script>`),`<section class="kan-diagram">${f}${i.join("")}${p}${h}</section>`}async embedTiers(e,n){let t=[];for(let a of js){let s=await n(Ae[a]);t.push(`<div class="kan-dgm-tier" data-tier="${a}"${a===e?"":" hidden"}>${s}</div>`)}return`<div class="kan-dgm-tiers">${t.join("")}</div>`}async renderDiagramExpand(e,n,t,a,s,o,i){let c=[];for(let l of e){let u=`${l.namespace??""}/${l.name}`,f=await this.diagramNodeRow(l,t,i??56,o),h=a<Ls&&!s.has(u)?await this.renderDiagram(n,l,t,a+1,new Set([...s,u])):"",m=h?`<div style="margin-left:30px;border-left:2px solid var(--kan-border);padding-left:14px;margin-top:6px">${h}</div>`:"";c.push(`<div class="kan-diagram-node" style="margin:6px 0">${f}${m}</div>`)}return`<figure class="kan-diagram-figure"><div class="kan-diagram-tree">${c.join("")}</div></figure>`}async diagramNodeRow(e,n,t=56,a){let s=this.hrefForSubject(e,n),o=this.svgUrlForSubject(e,n),i=G(this.catalog,e).label,c=a?await this.evaluateCarrier(a,e):void 0,l=c!==void 0?`<span class="kan-diagram-node-note" style="display:block;font-size:0.8em;color:var(--kan-text-dim)">${g(c)}</span>`:"";return`<a href="${g(s)}" style="display:inline-flex;align-items:center;gap:10px;text-decoration:none"><img src="${g(o)}" width="${t}" height="${t}" alt="" loading="lazy"/><span><span class="kan-diagram-node-label">${g(i)}</span>${l}</span></a>`}classTierSize(e){let n;for(let t of e)for(let a of ye(t)){let s=re(this.catalog,a.subject);if(!s)continue;let o=ae(s,ds),i=o?Ae[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=re(this.catalog,{publisher:s.publisher,package_:s.package_,name:s.name,...s.version?{version:s.version}:{}});o&&t.push(o)}return t}async resolveFacetChannels(e,n){let t=this.gatherValueItems(J(e,ss)).filter(s=>s instanceof D),a=[];for(let s of t){let o=this.readEmbeddedCarrier(s,os),i=ae(s,is);if(!o||!i)continue;let c=[];for(let m of n){let b=await this.evaluateCarrierNum(o,m);c.push(Number.isFinite(b)?b:NaN)}let l=c.filter(m=>Number.isFinite(m)),u=l.length?Math.min(...l):0,p=(l.length?Math.max(...l):0)-u,h=c.map(m=>Number.isFinite(m)&&p>0?(m-u)/p:.5);a.push({to:i,norm:h})}return a}facetEdgeLabel(e,n){let t=ae(e,ys);if(t)return t;if(Po(e,vs)&&n){let s=re(this.catalog,n);if(s)return G(this.catalog,s).label}}async edgeText(e,n,t){let a=t&&n?await this.evaluateCarrier(t,n):void 0,s=[e,a].filter(o=>!!o);return s.length?s.join(" "):void 0}edgeLabelEl(e,n,t){return`<text x="${e.toFixed(1)}" y="${n.toFixed(1)}" text-anchor="middle" class="kan-diagram-edge-label" style="font-size:11px;paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px;fill:var(--kan-text-dim)">${g(t)}</text>`}async renderDiagramCluster(e,n,t,a,s){let o=s??132,i=18,c=18,l=n.find(b=>b.to==="opacity");if(t){let b=[];for(let k=0;k<e.length;k++){let $=e[k],y=await this.renderBand(t,$,a),K=this.hrefForSubject($,a),E=G(this.catalog,$).label,U=l?`opacity:${(.4+l.norm[k]*.6).toFixed(2)};`:"";b.push(`<a class="kan-diagram-mark" href="${g(K)}" style="display:block;text-decoration:none;${U}">${y}<span class="kan-diagram-mark-label">${g(E)}</span></a>`)}return`<figure class="kan-diagram-figure"><div class="kan-diagram-marks" style="display:flex;flex-wrap:wrap;gap:18px;align-items:flex-start">${b.join("")}</div></figure>`}let u=Math.min(e.length,4),f=Math.ceil(e.length/u),p=c*2+u*o+(u-1)*i,h=c*2+f*o+(f-1)*i,m=e.map((b,k)=>{let $=k%u,y=Math.floor(k/u),K=c+$*(o+i),E=c+y*(o+i),U=l?.4+l.norm[k]*.6:1;return this.diagramTile(b,K,E,o,a,U)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${p} ${h}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${m}</svg></figure>`}async renderDiagramConnector(e,n,t,a,s,o,i){let c=s??120,l=24,u=130,f=18,p=t.find(P=>P.to==="thickness"),h=t.find(P=>P.to==="opacity"),m=n.length,b=m*c+(m-1)*l,k=f*2+b,$=f*2+c+u+c,y=f,K=f+(b-c)/2,E=f+c+u,U=`kan-arrow-${this.diagramArrowSeq++}`,C=[],F=[],_=[];for(let P=0;P<n.length;P++){let V=n[P],L=f+P*(c+l),j=y+c,N=K+c/2,R=E-pe,I=L+c/2,T=(j+E)/2,v=p?1.5+p.norm[P]*5.5:2,M=h?.4+h.norm[P]*.6:1,z=h?` stroke-opacity="${M.toFixed(2)}"`:"";C.push(`<path d="M${j.toFixed(1)},${N.toFixed(1)} C${T.toFixed(1)},${N.toFixed(1)} ${T.toFixed(1)},${I.toFixed(1)} ${R.toFixed(1)},${I.toFixed(1)}" class="kan-diagram-edge" fill="none" stroke="var(--kan-border)" stroke-width="${v.toFixed(1)}"${z} marker-end="url(#${U})"/>`);let O=await this.edgeText(o,V,i);O&&F.push(this.edgeLabelEl((j+E)/2,(N+I)/2-5,O)),_.push(this.diagramTile(V,E,L,c,a,h?M:1))}let W=this.diagramTile(e,y,K,c,a);return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${$.toFixed(0)} ${k.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(U,"var(--kan-border)")}${C.join("")}${F.join("")}${W}${_.join("")}</svg></figure>`}arrowMarkerDef(e,n){return`<defs><marker id="${e}" viewBox="0 0 ${pe} ${pe}" refX="0" refY="${(pe/2).toFixed(1)}" markerWidth="${pe}" markerHeight="${pe}" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,1 L${pe},${(pe/2).toFixed(1)} L0,${pe-1}" fill="${n}"/></marker></defs>`}async renderDiagramDag(e,n,t,a,s,o,i){let c=s??110,l=110,u=22,f=18,p=new Map(e.map((v,M)=>[v.name,M])),h=new Set(e.map(v=>v.name)),m=new Map(e.map(v=>[v.name,[]])),b=new Map(e.map(v=>[v.name,[]]));for(let v of e)for(let M of this.readPropertyValueReferences(v,n)){let z=M.subject.name;z!==v.name&&h.has(z)&&(m.get(v.name).push(z),b.get(z).push(v.name))}let k=new Map,$=new Set,y=v=>{let M=k.get(v);if(M!==void 0)return M;if($.has(v))return 0;$.add(v);let z=0;for(let O of b.get(v)??[])z=Math.max(z,y(O)+1);return $.delete(v),k.set(v,z),z};for(let v of e)y(v.name);let K=Math.min(...k.values());if(K>0)for(let v of[...k.keys()])k.set(v,k.get(v)-K);let E=Math.max(0,...k.values()),U=Array.from({length:E+1},()=>[]);for(let v of e)U[k.get(v.name)].push(v);let C=Math.max(1,...U.map(v=>v.length)),F=!1;for(let[v,M]of m)for(let z of M)k.get(z)<=k.get(v)&&(F=!0);let _=F?84:0,W=C*c+(C-1)*u,P=f*2+(E+1)*c+E*l,V=f*2+_+W,L=new Map;U.forEach((v,M)=>{let z=v.length*c+(v.length-1)*u,O=f+_+(W-z)/2;v.forEach((A,me)=>L.set(A.name,{x:f+M*(c+l),y:O+me*(c+u)}))});let j=t.find(v=>v.to==="thickness"),N=`kan-arrow-${this.diagramArrowSeq++}`,R=[],I=[];for(let[v,M]of m){let z=L.get(v);for(let O of M){let A=L.get(O),me=A.x>=z.x,ce=j?1.5+j.norm[p.get(v)]*4.5:2,se,de,oe;if(me){let he=z.x+c,ze=z.y+c/2,Ue=A.x-pe,cn=A.y+c/2,Ze=(he+Ue)/2;se=`M${he.toFixed(1)},${ze.toFixed(1)} C${Ze.toFixed(1)},${ze.toFixed(1)} ${Ze.toFixed(1)},${cn.toFixed(1)} ${Ue.toFixed(1)},${cn.toFixed(1)}`,de=(he+Ue)/2,oe=(ze+cn)/2-5}else{let he=z.x+c/2,ze=z.y,Ue=A.x+c/2,cn=A.y-pe,Ze=f+_*.2;se=`M${he.toFixed(1)},${ze.toFixed(1)} C${he.toFixed(1)},${Ze.toFixed(1)} ${Ue.toFixed(1)},${Ze.toFixed(1)} ${Ue.toFixed(1)},${cn.toFixed(1)}`,de=(he+Ue)/2,oe=Ze+4}let Ee=me?"":' stroke-dasharray="6 4"';R.push(`<path d="${se}" class="kan-diagram-edge" fill="none" stroke="var(--kan-accent)" stroke-width="${ce.toFixed(1)}" stroke-opacity="0.75"${Ee} marker-end="url(#${N})"/>`);let ve=await this.edgeText(o,e[p.get(v)],i);ve&&I.push(this.edgeLabelEl(de,oe,ve))}}let T=e.map(v=>{let M=L.get(v.name);return this.diagramTile(v,M.x,M.y,c,a)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${P.toFixed(0)} ${V.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(N,"var(--kan-accent)")}${R.join("")}${I.join("")}${T}</svg></figure>`}static SEQ_COL_GAP=70;static SEQ_ROW=46;static SEQ_PAD=20;subjectFor(e){return le(this.catalog,e)[0]}async renderSequence(e,n,t){let a=Bn(this.catalog,n,e);if(a.problem)return`<!-- LookRenderer.Sequence: ${a.problem} -->`;if(a.sourceAbsent)return`<!-- LookRenderer.Sequence: ${n.name} carries no value for the band's look.source \u2014 nothing to sequence -->`;let s=[];for(let _ of a.strayPropertyRefs)s.push(`<!-- LookRenderer.Sequence: prose references property ${_.publisher}/${_.package_}/${_.name}, which is not a declared connector; ignored -->`);for(let _ of a.gaps)s.push(`<!-- LookRenderer.Sequence: prose orders ${_.prev.name} then ${_.next.name}, but no declared connector holds between them in the graph \u2014 no message drawn. -->`);let{messages:o,lifelines:i}=a,c=Me;if(i.length===0)return`${s.join(`
124
+ `}hasSvgDerivation(e){let n=new Set,t=ye(e);for(;t.length>0;){let a=t.shift(),s=te(a.subject);if(n.has(s))continue;n.add(s);let o=re(this.catalog,a.subject);if(o){for(let i of o.statement)if(i instanceof B&&Re(i,"kanonak.org","derivation","derivations")){for(let c of i.object??[])if(c instanceof D)for(let l of c.statement){if(!(l instanceof H)||!Re(l,"kanonak.org","derivation","format")||!(l.object instanceof x))continue;let d=l.object.subject;if(d.publisher==="kanonak.org"&&d.package_==="formats"&&d.name==="svg")return!0}}for(let i of Un(o))t.push(i)}}return!1}static BAND_DISPATCH=[[Xs,(e,n)=>e.renderSectionNav(n.sections)],[Vr,(e,n)=>e.renderHero(n.band,n.instance,n.contextPublisher)],[Mr,(e,n)=>e.renderPropertyList(n.band,n.instance,n.contextPublisher)],[Ar,(e,n)=>e.renderPropertyTable(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[Nr,(e,n)=>e.renderBadgeRow(n.band,n.instance,n.contextPublisher)],[Dr,(e,n)=>e.renderChipRow(n.band,n.instance,n.contextPublisher)],[Br,(e,n)=>e.renderReferenceList(n.band,n.instance,n.contextPublisher)],[Hr,(e,n)=>e.renderReferencedBy(n.band,n.instance,n.contextPublisher)],[qr,(e,n)=>e.renderInstances(n.band,n.instance,n.contextPublisher)],[ea,(e,n)=>e.renderMarkdown(n.band,n.instance,n.contextPublisher)],[Hs,(e,n)=>e.renderLinks(n.band,n.instance)],[Gr,(e,n)=>e.renderNavGroup(n.instance,n.contextPublisher)],[Qr,(e,n)=>e.renderResourceGrid(n.band,n.contextPublisher,n.instance)],[Jr,(e,n)=>e.renderTimeline(n.band,n.contextPublisher)],[Zr,(e,n)=>e.renderVersionDiff(n.band,n.contextPublisher)],[es,(e,n)=>e.renderFigure(n.band,n.instance,n.contextPublisher)],[ns,(e,n)=>e.renderDiagram(n.band,n.instance,n.contextPublisher)],[gs,(e,n)=>e.renderSequence(n.band,n.instance,n.contextPublisher)],[hs,(e,n)=>e.renderEntityRelationship(n.band,n.instance,n.contextPublisher)],[Os,(e,n)=>e.renderStatRow(n.band,n.instance)],[Us,(e,n)=>e.renderHorizon(n.band,n.instance,n.contextPublisher)],[Is,(e,n)=>e.renderPackageContents(n.instance,n.contextPublisher)],[Ts,(e,n)=>e.renderFeaturedResource(n.band,n.contextPublisher)],[Ps,(e,n)=>e.renderPublisherPackages(n.band,n.contextPublisher)],[zs,(e,n)=>e.renderDistribution(n.band,n.instance)],[Qn,(e,n)=>e.renderSectionHeading(n.band)],[Js,(e,n)=>e.renderVersionDelta(n.band,n.instance)],[Zs,(e,n)=>e.renderTimePlot(n.band,n.instance,n.contextPublisher)],[eo,(e,n)=>e.renderDetails(n.band,n.instance,n.contextPublisher)],[no,(e,n)=>e.renderEmbeddedViews(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[to,(e,n)=>e.renderResourceCount(n.band,n.contextPublisher)],[sa,(e,n)=>e.renderBarMeter(n.band,n.instance)]];static bandDispatchUris(){return r.BAND_DISPATCH.map(([e])=>e)}uriOf(e){let n=je(e);return n?{publisher:n.publisher,package_:n.package_,name:n.name,...n.version?{version:n.version}:{}}:{publisher:ue(e),package_:"",name:e.name}}async renderBand(e,n,t,a=[],s=""){let o=on(e);if(!o)return"<!-- LookRenderer: band has no rdf:type -->";let i={band:e,instance:n,contextPublisher:t,sections:a,pathPrefix:s};for(let[c,l]of r.BAND_DISPATCH)if(X(o,c))return l(this,i);return`<!-- LookRenderer: unsupported band ${o.publisher}/${o.package_}/${o.name} -->`}async collectTrackedSeries(e,n,t,a){let{hueBy:s,lowerPath:o,upperPath:i}=a??{},c=new Map,l=e.length;for(let d=0;d<e.length;d++){let f=e[d],p=this.readPropertyValueReferences(f,n);for(let m of p){let g=re(this.catalog,{publisher:m.subject.publisher,package_:m.subject.package_,name:m.subject.name,...m.subject.version?{version:m.subject.version}:{}});if(!g)continue;let b=m.subject.name,k=c.get(b);k||(k={key:b,label:G(this.catalog,g).label,points:new Array(l).fill(null),...o?{lower:new Array(l).fill(null)}:{},...i?{upper:new Array(l).fill(null)}:{}},c.set(b,k));let v=await this.evaluateCarrierNum(t,g);if(Number.isFinite(v)&&(k.points[d]=v),o&&k.lower){let y=await this.evaluateCarrierNum(o,g);Number.isFinite(y)&&(k.lower[d]=y)}if(i&&k.upper){let y=await this.evaluateCarrierNum(i,g);Number.isFinite(y)&&(k.upper[d]=y)}if(s){let y=await this.evaluateCarrierNum(s,g);Number.isFinite(y)&&(k.hue=y)}k.lastSubject=g}}return[...c.values()]}hrefForSubject(e,n,t="="){let a=this.uriOf(e),s=a.package_,o=a.version;return this.resourceHref({publisher:ue(e),package_:s,name:e.name,...o?{version:o}:{}},n,t)}async renderVersionDiff(e,n){let t=q(e,ke);if(!t)return"<!-- LookRenderer.VersionDiff: no look.source -->";let a=this.readEmbeddedCarrier(e,gn),s=q(e,ia);if(!s||!a)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let o=q(e,xn),i=this.readEmbeddedCarrier(e,Jn),c=this.findInstancesOfClass(t,this.readTransitive(e));if(c.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let l=m=>o?this.readPropertyValueText(m,o)??"":"",d=c.slice().sort((m,g)=>l(m).localeCompare(l(g))),f=await this.collectTrackedSeries(d,s,a,{hueBy:i});return f.length===0?"<!-- LookRenderer.VersionDiff: no tracked series -->":`<section class="kan-vdiff">${f.map((m,g)=>{let b=m.hue!==void 0?m.hue:Math.round(g*360/f.length),k=m.points.filter(C=>C!==null);if(k.length===0)return"";let v=k[0],y=k[k.length-1],K=y-v,E;if(Math.abs(K)>=.005){let C=K>0?"up":"down",T=K>0?"\u25B2":"\u25BC";E=`<span class="kan-vdiff-delta ${C}">${K>0?"+":""}${K.toFixed(2)} ${T}</span>`}else E='<span class="kan-vdiff-delta flat">\u2014</span>';let U=m.lastSubject&&this.isLinkable(ue(m.lastSubject),n)?`<a href="${h(this.hrefForSubject(m.lastSubject,n))}">${h(m.label)}</a>`:h(m.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${b}"><span class="kan-vdiff-label">${U}</span><span class="kan-vdiff-start">${v.toFixed(2)}</span>`+this.sparkline(m.points,b)+`<span class="kan-vdiff-end">${y.toFixed(2)}</span>`+E+"</div>"}).join("")}</section>`}sparkline(e,n){let o=`hsl(${n},65%,60%)`,i=e.filter(k=>k!==null);if(i.length===0)return'<svg class="kan-vdiff-spark" viewBox="0 0 132 30" xmlns="http://www.w3.org/2000/svg"></svg>';let c=Math.min(...i),d=Math.max(...i)-c,f=e.length,p=k=>f<=1?132/2:4+k/(f-1)*124,m=k=>d<1e-9?30/2:26-(k-c)/d*22,g=[],b=[];return e.forEach((k,v)=>{if(k===null)return;let y=p(v),K=m(k);g.push(`${y.toFixed(1)},${K.toFixed(1)}`),b.push(`<circle cx="${y.toFixed(1)}" cy="${K.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="${g.join(" ")}" fill="none" stroke="${o}" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round"/>`+b.join("")+"</svg>"}svgUrlForSubject(e,n,t="="){return`${this.hrefForSubject(e,n,t)}.svg`}renderFigure(e,n,t){let a=n,s=q(e,ke);if(s){let d=re(this.catalog,s);d&&(a=d)}let o=this.svgUrlForSubject(a,t),i=G(this.catalog,a).label,c=ae(e,Co);return`<figure class="kan-figure${c==="small"||c==="medium"||c==="large"?` kan-figure-${c}`:""}"><img class="kan-figure-img" src="${h(o)}" alt="${h(i)}" loading="lazy"/></figure>`}diagramArrowSeq=0;diagramScriptEmitted=!1;async renderDiagram(e,n,t,a=0,s=new Set){let o=this.gatherValueItems(J(e,ts)).filter(g=>g instanceof D);if(o.length===0)return"<!-- LookRenderer.Diagram: no look.facets -->";let i=[];for(let g of o){let b=q(g,as);if(!b){i.push("<!-- LookRenderer.Diagram: facet has no resolvable look.relation -->");continue}let k=q(g,rs),v=this.resolveFacetNodes(n,b);if(v.length===0){i.push(`<!-- LookRenderer.Diagram: relation ${b.publisher}/${b.package_}/${b.name} resolved to 0 instances -->`);continue}let y=await this.resolveFacetChannels(g,v),K=J(g,us),E=K instanceof ee&&K.object instanceof D?K.object:void 0,U=ae(g,ta),C=U&&Ae[U]!==void 0?Ae[U]:void 0,T=C??this.classTierSize(v),_=Es[T??Ae.icon]??"icon",W=this.readEmbeddedCarrier(g,ms),P=q(g,ds),V=P?re(this.catalog,P):void 0;if(V){i.push(await this.renderDiagramExpand(v,V,t,a,s,W,C));continue}if(k&&X(k,os)){let L=q(g,fs),j=this.facetEdgeLabel(g,L??b),N=this.readEmbeddedCarrier(g,ws);i.push(await this.embedTiers(_,R=>L?this.renderDiagramDag(v,L,y,t,R,j,N):this.renderDiagramConnector(n,v,y,t,R,j,N)));continue}if(k&&!X(k,ss)){i.push(`<!-- LookRenderer.Diagram: unknown encode role ${k.publisher}/${k.package_}/${k.name} -->`);continue}i.push(E?`<div class="kan-dgm-tiers" data-geo="1"><div class="kan-dgm-tier" data-tier="card">${await this.renderDiagramCluster(v,y,E,t,T)}</div></div>`:await this.embedTiers(_,L=>this.renderDiagramCluster(v,y,void 0,t,L)))}let c=ae(e,_s),l=ae(e,js),d=g=>`<div class="kan-diagram-title" style="font-weight:600;font-size:0.95rem;color:var(--kan-text);${g}">${h(c)}</div>`,f=c&&l!=="bottom"?d("margin:0 0 .5rem"):"",p=c&&l==="bottom"?d("margin:.5rem 0 0"):"",m="";return a===0&&!this.diagramScriptEmitted&&(this.diagramScriptEmitted=!0,m=`<script>${Ks}</script>`),`<section class="kan-diagram">${f}${i.join("")}${p}${m}</section>`}async embedTiers(e,n){let t=[];for(let a of Rs){let s=await n(Ae[a]);t.push(`<div class="kan-dgm-tier" data-tier="${a}"${a===e?"":" hidden"}>${s}</div>`)}return`<div class="kan-dgm-tiers">${t.join("")}</div>`}async renderDiagramExpand(e,n,t,a,s,o,i){let c=[];for(let l of e){let d=`${l.namespace??""}/${l.name}`,f=await this.diagramNodeRow(l,t,i??56,o),m=a<Cs&&!s.has(d)?await this.renderDiagram(n,l,t,a+1,new Set([...s,d])):"",g=m?`<div style="margin-left:30px;border-left:2px solid var(--kan-border);padding-left:14px;margin-top:6px">${m}</div>`:"";c.push(`<div class="kan-diagram-node" style="margin:6px 0">${f}${g}</div>`)}return`<figure class="kan-diagram-figure"><div class="kan-diagram-tree">${c.join("")}</div></figure>`}async diagramNodeRow(e,n,t=56,a){let s=this.hrefForSubject(e,n),o=this.svgUrlForSubject(e,n),i=G(this.catalog,e).label,c=a?await this.evaluateCarrier(a,e):void 0,l=c!==void 0?`<span class="kan-diagram-node-note" style="display:block;font-size:0.8em;color:var(--kan-text-dim)">${h(c)}</span>`:"";return`<a href="${h(s)}" style="display:inline-flex;align-items:center;gap:10px;text-decoration:none"><img src="${h(o)}" width="${t}" height="${t}" alt="" loading="lazy"/><span><span class="kan-diagram-node-label">${h(i)}</span>${l}</span></a>`}classTierSize(e){let n;for(let t of e)for(let a of ye(t)){let s=re(this.catalog,a.subject);if(!s)continue;let o=ae(s,ps),i=o?Ae[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=re(this.catalog,{publisher:s.publisher,package_:s.package_,name:s.name,...s.version?{version:s.version}:{}});o&&t.push(o)}return t}async resolveFacetChannels(e,n){let t=this.gatherValueItems(J(e,is)).filter(s=>s instanceof D),a=[];for(let s of t){let o=this.readEmbeddedCarrier(s,cs),i=ae(s,ls);if(!o||!i)continue;let c=[];for(let g of n){let b=await this.evaluateCarrierNum(o,g);c.push(Number.isFinite(b)?b:NaN)}let l=c.filter(g=>Number.isFinite(g)),d=l.length?Math.min(...l):0,p=(l.length?Math.max(...l):0)-d,m=c.map(g=>Number.isFinite(g)&&p>0?(g-d)/p:.5);a.push({to:i,norm:m})}return a}facetEdgeLabel(e,n){let t=ae(e,$s);if(t)return t;if(Mo(e,Ss)&&n){let s=re(this.catalog,n);if(s)return G(this.catalog,s).label}}async edgeText(e,n,t){let a=t&&n?await this.evaluateCarrier(t,n):void 0,s=[e,a].filter(o=>!!o);return s.length?s.join(" "):void 0}edgeLabelEl(e,n,t){return`<text x="${e.toFixed(1)}" y="${n.toFixed(1)}" text-anchor="middle" class="kan-diagram-edge-label" style="font-size:11px;paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px;fill:var(--kan-text-dim)">${h(t)}</text>`}async renderDiagramCluster(e,n,t,a,s){let o=s??132,i=18,c=18,l=n.find(b=>b.to==="opacity");if(t){let b=[];for(let k=0;k<e.length;k++){let v=e[k],y=await this.renderBand(t,v,a),K=this.hrefForSubject(v,a),E=G(this.catalog,v).label,U=l?`opacity:${(.4+l.norm[k]*.6).toFixed(2)};`:"";b.push(`<a class="kan-diagram-mark" href="${h(K)}" style="display:block;text-decoration:none;${U}">${y}<span class="kan-diagram-mark-label">${h(E)}</span></a>`)}return`<figure class="kan-diagram-figure"><div class="kan-diagram-marks" style="display:flex;flex-wrap:wrap;gap:18px;align-items:flex-start">${b.join("")}</div></figure>`}let d=Math.min(e.length,4),f=Math.ceil(e.length/d),p=c*2+d*o+(d-1)*i,m=c*2+f*o+(f-1)*i,g=e.map((b,k)=>{let v=k%d,y=Math.floor(k/d),K=c+v*(o+i),E=c+y*(o+i),U=l?.4+l.norm[k]*.6:1;return this.diagramTile(b,K,E,o,a,U)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${p} ${m}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${g}</svg></figure>`}async renderDiagramConnector(e,n,t,a,s,o,i){let c=s??120,l=24,d=130,f=18,p=t.find(P=>P.to==="thickness"),m=t.find(P=>P.to==="opacity"),g=n.length,b=g*c+(g-1)*l,k=f*2+b,v=f*2+c+d+c,y=f,K=f+(b-c)/2,E=f+c+d,U=`kan-arrow-${this.diagramArrowSeq++}`,C=[],T=[],_=[];for(let P=0;P<n.length;P++){let V=n[P],L=f+P*(c+l),j=y+c,N=K+c/2,R=E-pe,I=L+c/2,F=(j+E)/2,$=p?1.5+p.norm[P]*5.5:2,M=m?.4+m.norm[P]*.6:1,z=m?` stroke-opacity="${M.toFixed(2)}"`:"";C.push(`<path d="M${j.toFixed(1)},${N.toFixed(1)} C${F.toFixed(1)},${N.toFixed(1)} ${F.toFixed(1)},${I.toFixed(1)} ${R.toFixed(1)},${I.toFixed(1)}" class="kan-diagram-edge" fill="none" stroke="var(--kan-border)" stroke-width="${$.toFixed(1)}"${z} marker-end="url(#${U})"/>`);let O=await this.edgeText(o,V,i);O&&T.push(this.edgeLabelEl((j+E)/2,(N+I)/2-5,O)),_.push(this.diagramTile(V,E,L,c,a,m?M:1))}let W=this.diagramTile(e,y,K,c,a);return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${v.toFixed(0)} ${k.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(U,"var(--kan-border)")}${C.join("")}${T.join("")}${W}${_.join("")}</svg></figure>`}arrowMarkerDef(e,n){return`<defs><marker id="${e}" viewBox="0 0 ${pe} ${pe}" refX="0" refY="${(pe/2).toFixed(1)}" markerWidth="${pe}" markerHeight="${pe}" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,1 L${pe},${(pe/2).toFixed(1)} L0,${pe-1}" fill="${n}"/></marker></defs>`}async renderDiagramDag(e,n,t,a,s,o,i){let c=s??110,l=110,d=22,f=18,p=new Map(e.map(($,M)=>[$.name,M])),m=new Set(e.map($=>$.name)),g=new Map(e.map($=>[$.name,[]])),b=new Map(e.map($=>[$.name,[]]));for(let $ of e)for(let M of this.readPropertyValueReferences($,n)){let z=M.subject.name;z!==$.name&&m.has(z)&&(g.get($.name).push(z),b.get(z).push($.name))}let k=new Map,v=new Set,y=$=>{let M=k.get($);if(M!==void 0)return M;if(v.has($))return 0;v.add($);let z=0;for(let O of b.get($)??[])z=Math.max(z,y(O)+1);return v.delete($),k.set($,z),z};for(let $ of e)y($.name);let K=Math.min(...k.values());if(K>0)for(let $ of[...k.keys()])k.set($,k.get($)-K);let E=Math.max(0,...k.values()),U=Array.from({length:E+1},()=>[]);for(let $ of e)U[k.get($.name)].push($);let C=Math.max(1,...U.map($=>$.length)),T=!1;for(let[$,M]of g)for(let z of M)k.get(z)<=k.get($)&&(T=!0);let _=T?84:0,W=C*c+(C-1)*d,P=f*2+(E+1)*c+E*l,V=f*2+_+W,L=new Map;U.forEach(($,M)=>{let z=$.length*c+($.length-1)*d,O=f+_+(W-z)/2;$.forEach((A,me)=>L.set(A.name,{x:f+M*(c+l),y:O+me*(c+d)}))});let j=t.find($=>$.to==="thickness"),N=`kan-arrow-${this.diagramArrowSeq++}`,R=[],I=[];for(let[$,M]of g){let z=L.get($);for(let O of M){let A=L.get(O),me=A.x>=z.x,ce=j?1.5+j.norm[p.get($)]*4.5:2,se,de,oe;if(me){let he=z.x+c,ze=z.y+c/2,Ue=A.x-pe,cn=A.y+c/2,Ze=(he+Ue)/2;se=`M${he.toFixed(1)},${ze.toFixed(1)} C${Ze.toFixed(1)},${ze.toFixed(1)} ${Ze.toFixed(1)},${cn.toFixed(1)} ${Ue.toFixed(1)},${cn.toFixed(1)}`,de=(he+Ue)/2,oe=(ze+cn)/2-5}else{let he=z.x+c/2,ze=z.y,Ue=A.x+c/2,cn=A.y-pe,Ze=f+_*.2;se=`M${he.toFixed(1)},${ze.toFixed(1)} C${he.toFixed(1)},${Ze.toFixed(1)} ${Ue.toFixed(1)},${Ze.toFixed(1)} ${Ue.toFixed(1)},${cn.toFixed(1)}`,de=(he+Ue)/2,oe=Ze+4}let Ee=me?"":' stroke-dasharray="6 4"';R.push(`<path d="${se}" class="kan-diagram-edge" fill="none" stroke="var(--kan-accent)" stroke-width="${ce.toFixed(1)}" stroke-opacity="0.75"${Ee} marker-end="url(#${N})"/>`);let ve=await this.edgeText(o,e[p.get($)],i);ve&&I.push(this.edgeLabelEl(de,oe,ve))}}let F=e.map($=>{let M=L.get($.name);return this.diagramTile($,M.x,M.y,c,a)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${P.toFixed(0)} ${V.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(N,"var(--kan-accent)")}${R.join("")}${I.join("")}${F}</svg></figure>`}static SEQ_COL_GAP=70;static SEQ_ROW=46;static SEQ_PAD=20;subjectFor(e){return le(this.catalog,e)[0]}async renderSequence(e,n,t){let a=Bn(this.catalog,n,e);if(a.problem)return`<!-- LookRenderer.Sequence: ${a.problem} -->`;if(a.sourceAbsent)return`<!-- LookRenderer.Sequence: ${n.name} carries no value for the band's look.source \u2014 nothing to sequence -->`;let s=[];for(let _ of a.strayPropertyRefs)s.push(`<!-- LookRenderer.Sequence: prose references property ${_.publisher}/${_.package_}/${_.name}, which is not a declared connector; ignored -->`);for(let _ of a.gaps)s.push(`<!-- LookRenderer.Sequence: prose orders ${_.prev.name} then ${_.next.name}, but no declared connector holds between them in the graph \u2014 no message drawn. -->`);let{messages:o,lifelines:i}=a,c=Me;if(i.length===0)return`${s.join(`
125
125
  `)}
126
- <!-- LookRenderer.Sequence: no messages \u2014 no consecutive prose references are joined by a declared connector -->`;let l=ae(e,na);l!==void 0&&Ae[l]===void 0&&s.push(`<!-- LookRenderer.Sequence: look.nodeTier '${g(l)}' is not a tier (${Object.keys(Ae).join(", ")}); using the class/default size -->`);let u=(l!==void 0?Ae[l]:void 0)??this.classTierSize(i)??Ae.icon,f=u+r.SEQ_COL_GAP,p=r.SEQ_ROW,h=r.SEQ_PAD,m=ae(e,ms)==="true",b=new Map;i.forEach((_,W)=>b.set(c(_),h+W*f+u/2));let k=h+u,$=k+p,y=$+o.length*p+h,K=h*2+(i.length-1)*f+u,E=`kan-arrow-${this.diagramArrowSeq++}`,U=`kan-arrow-open-${this.diagramArrowSeq++}`,F=[this.arrowMarkerDef(E,"var(--kan-text-dim)")+`<defs><marker id="${U}" viewBox="0 0 ${pe} ${pe}" refX="0" refY="${(pe/2).toFixed(1)}" markerWidth="${pe}" markerHeight="${pe}" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,1 L${pe},${(pe/2).toFixed(1)} L0,${pe-1}" fill="none" stroke="var(--kan-text-dim)" stroke-width="1.5"/></marker></defs>`];for(let _ of i){let W=b.get(c(_));F.push(`<line class="kan-seq-lifeline" x1="${W}" y1="${k}" x2="${W}" y2="${y-h}" stroke="var(--kan-border)" stroke-width="1.5" stroke-dasharray="5 5"/>`),F.push(this.diagramTile(_,W-u/2,h,u,t))}return o.forEach((_,W)=>{let P=$+W*p,V=b.get(c(_.from)),L=b.get(c(_.to)),j=this.subjectFor(_.relation),N=(m?`${W+1}. `:"")+(j?G(this.catalog,j).label:_.relation.name),R=_.style==="dotted"?' stroke-dasharray="4 4"':"",I=_.style==="thick"?3:1.5,T=_.undirected?"":` marker-end="url(#${_.style==="open"?U:E})"`,v=`kan-seq-message kan-seq-message-${_.style}${_.undirected?" kan-seq-message-undirected":""}`;if(V===L){let A=p*.55,me=V+(_.undirected?0:pe);F.push(`<path class="${v}" d="M${V},${P-A/2} H${V+34} V${P+A/2} H${me}" fill="none" stroke="var(--kan-text-dim)" stroke-width="${I}"${R}${T}/>`),F.push(`<text class="kan-seq-message-label" x="${V+34+6}" y="${P+4}" font-size="12" fill="var(--kan-text)">${g(N)}</text>`);return}let M=L>V?1:-1,z=_.undirected?L:L-M*pe;F.push(`<line class="${v}" x1="${V}" y1="${P}" x2="${z}" y2="${P}" stroke="var(--kan-text-dim)" stroke-width="${I}"${R}${T}/>`),F.push(`<text class="kan-seq-message-label" x="${((V+L)/2).toFixed(1)}" y="${P-6}" text-anchor="middle" font-size="12" fill="var(--kan-text)" style="paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px">${g(N)}</text>`)}),`${s.join(`
127
- `)}<figure class="kan-diagram-figure kan-seq-figure"><svg class="kan-diagram-svg kan-seq" viewBox="0 0 ${K} ${y}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${F.join("")}</svg></figure>`}static ER_BOX_W=230;static ER_HEAD_H=30;static ER_ROW_H=20;static ER_GAP=70;static ER_PAD=24;erScope(e){let n=t=>en.isClassType(t);if(w(e,bs))return{classes:this.catalog.filter(a=>a instanceof Y&&a.namespace===e.namespace&&n(a))};if(n(e)){let t=je(e);if(!t)return{classes:[],reason:"the page class has no canonical URI"};let a=fn(this.catalog),s=new Map([[ne(t),e]]);for(let o of Kn(this.catalog,t,!1,a)){if(o.kind!=="object"||o.range.kind!=="class")continue;let i=this.subjectFor(o.range.uri);i&&!s.has(ne(o.range.uri))&&s.set(ne(o.range.uri),i)}return{classes:[...s.values()]}}return{classes:[],reason:"the page instance is neither a Package nor a Class"}}erCardinalityGlyph(e,n,t,a,s){let o=[];return s===1?o.push('<line x1="-14" y1="-7" x2="-14" y2="7"/>'):o.push('<path d="M-16,-8 L0,0 L-16,8" fill="none"/>'),a>=1?o.push('<line x1="-22" y1="-7" x2="-22" y2="7"/>'):o.push('<circle cx="-24" cy="0" r="4" fill="var(--kan-bg)"/>'),`<g class="kan-er-cardinality" transform="translate(${e.toFixed(1)},${n.toFixed(1)}) rotate(${t.toFixed(1)})" stroke="var(--kan-text-dim)" stroke-width="1.5">${o.join("")}</g>`}erBorderPoint(e,n,t,a,s,o){let i=s-e,c=o-n;if(i===0&&c===0)return{x:e,y:n};let l=i===0?1/0:Math.abs(t/2/i),u=c===0?1/0:Math.abs(a/2/c),f=Math.min(l,u);return{x:e+i*f,y:n+c*f}}renderEntityRelationship(e,n,t){let{classes:a,reason:s}=this.erScope(n);if(a.length===0)return`<!-- LookRenderer.EntityRelationship: nothing to draw \u2014 ${s??"no classes in scope"} -->`;let o=fn(this.catalog),i=L=>`${L.namespace}/${L.name}`,c=new Map;for(let L of a){let j=je(L);j&&c.set(ne(j),L)}let l=a.map(L=>{let j=je(L),N=j?Kn(this.catalog,j,!1,o):[];return{subject:L,label:G(this.catalog,L).label,attrs:N.filter(R=>R.kind==="datatype"),rels:N.filter(R=>R.kind==="object"&&R.range.kind==="class"&&c.has(ne(R.range.uri))),supers:Te(L,at).filter(R=>c.has(ne(R)))}}),u=r.ER_BOX_W,f=r.ER_HEAD_H,p=r.ER_ROW_H,h=r.ER_GAP,m=r.ER_PAD,b=Math.max(1,Math.ceil(Math.sqrt(l.length))),k=L=>f+Math.max(1,L.attrs.length)*p+8,$=[];l.forEach((L,j)=>{let N=Math.floor(j/b);$[N]=Math.max($[N]??0,k(L))});let y=[],K=m;$.forEach((L,j)=>{y[j]=K,K+=L+h});let E=new Map;l.forEach((L,j)=>{let N=Math.floor(j/b),R=j%b,I=m+R*(u+h),T=y[N],v=k(L);E.set(i(L.subject),{x:I,y:T,w:u,h:v,cx:I+u/2,cy:T+v/2})});let U=m*2+b*u+(b-1)*h,C=K-h+m,F=[],_=[],W=[],P=`kan-er-tri-${this.diagramArrowSeq++}`,V=`<defs><marker id="${P}" viewBox="0 0 12 12" refX="11" refY="6" markerWidth="12" markerHeight="12" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,0 L12,6 L0,12 Z" fill="var(--kan-bg)" stroke="var(--kan-text-dim)" stroke-width="1.5"/></marker></defs>`;for(let L of l){let j=E.get(i(L.subject));for(let N of L.rels){let R=c.get(ne(N.range.uri)),I=E.get(i(R)),T=i(R)===i(L.subject),v=this.subjectFor(N.uri),M=!!v&&dn(this.catalog,v,ks),z=!!v&&dn(this.catalog,v,hs),O=N.minCount??0,A=N.maxCount??(z?1:void 0),me=v?G(this.catalog,v).label:N.localName;if(T){let oe=j.x+j.w,Ee=j.y+12,ve=j.y+j.h-12;F.push(`<path class="kan-er-relationship" d="M${oe},${Ee} h28 V${ve} h-28" fill="none" stroke="var(--kan-text-dim)" stroke-width="1.5"/>`),M||F.push(this.erCardinalityGlyph(oe,ve,180,O,A)),_.push(`<text class="kan-er-relationship-label" x="${oe+32}" y="${j.cy+4}" font-size="11" fill="var(--kan-text)">${g(me)}</text>`);continue}let ce=this.erBorderPoint(j.cx,j.cy,j.w,j.h,I.cx,I.cy),se=this.erBorderPoint(I.cx,I.cy,I.w,I.h,j.cx,j.cy);F.push(`<line class="kan-er-relationship" x1="${ce.x.toFixed(1)}" y1="${ce.y.toFixed(1)}" x2="${se.x.toFixed(1)}" y2="${se.y.toFixed(1)}" stroke="var(--kan-text-dim)" stroke-width="1.5"/>`);let de=Math.atan2(se.y-ce.y,se.x-ce.x)*180/Math.PI;M||F.push(this.erCardinalityGlyph(se.x,se.y,de,O,A)),_.push(`<text class="kan-er-relationship-label" x="${((ce.x+se.x)/2).toFixed(1)}" y="${((ce.y+se.y)/2-6).toFixed(1)}" text-anchor="middle" font-size="11" fill="var(--kan-text)" style="paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px">${g(me)}</text>`)}for(let N of L.supers){let R=c.get(ne(N)),I=E.get(i(R)),T=this.erBorderPoint(j.cx,j.cy,j.w,j.h,I.cx,I.cy),v=this.erBorderPoint(I.cx,I.cy,I.w,I.h,j.cx,j.cy);F.push(`<line class="kan-er-inherits" x1="${T.x.toFixed(1)}" y1="${T.y.toFixed(1)}" x2="${v.x.toFixed(1)}" y2="${v.y.toFixed(1)}" stroke="var(--kan-text-dim)" stroke-width="1.5" marker-end="url(#${P})"/>`)}}for(let L of l){let j=E.get(i(L.subject)),N=this.hrefForSubject(L.subject,t),R=L.attrs.length===0?`<text x="${j.x+10}" y="${j.y+f+14}" font-size="11" fill="var(--kan-text-faint)" font-style="italic">no attributes</text>`:L.attrs.map((I,T)=>{let v=this.subjectFor(I.uri),M=v?G(this.catalog,v).label:I.localName,z=I.required||(I.minCount??0)>=1?" *":"";return`<text class="kan-er-attribute" x="${j.x+10}" y="${j.y+f+14+T*p}" font-size="11" fill="var(--kan-text)">${g(M)}${z}<tspan fill="var(--kan-text-dim)"> : ${g(I.range.uri.name)}</tspan></text>`}).join("");W.push(`<a href="${g(N)}"><g class="kan-er-entity"><rect x="${j.x}" y="${j.y}" width="${j.w}" height="${j.h}" rx="6" fill="var(--kan-bg-card)" stroke="var(--kan-border)" stroke-width="1.5"/><rect x="${j.x}" y="${j.y}" width="${j.w}" height="${f}" rx="6" fill="var(--kan-bg-elev)"/><text class="kan-er-entity-label" x="${j.cx}" y="${j.y+20}" text-anchor="middle" font-size="13" font-weight="600" fill="var(--kan-text)">${g(L.label)}</text><line x1="${j.x}" y1="${j.y+f}" x2="${j.x+j.w}" y2="${j.y+f}" stroke="var(--kan-border)"/>`+R+"</g></a>")}return`<figure class="kan-diagram-figure kan-er-figure"><svg class="kan-diagram-svg kan-er" viewBox="0 0 ${U} ${C}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${V}${F.join("")}${W.join("")}${_.join("")}</svg></figure>`}diagramTile(e,n,t,a,s,o=1){let i=this.hrefForSubject(e,s),c=this.svgUrlForSubject(e,s),l=G(this.catalog,e).label,u=o<1?` opacity="${o.toFixed(2)}"`:"";return`<a href="${g(i)}"><image href="${g(c)}" x="${n}" y="${t}" width="${a}" height="${a}"${u}><title>${g(l)}</title></image></a>`}async renderStatRow(e,n){let t=J(e,so),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=this.readEmbeddedCarrier(o,oo);if(!i)continue;let c=await this.evaluateCarrier(i,n);if(c===void 0)continue;let l=ae(o,io)??"";s.push('<div class="kan-stat">'+(l?`<span class="kan-stat-label">${g(l)}</span>`:"")+`<span class="kan-stat-val">${g(c)}</span></div>`)}return s.length===0?"":`<div class="kan-stat-row">${s.join("")}</div>`}barMarkup(e){let n=Number(e);if(!Number.isFinite(n))return g(e);let t=Math.max(0,Math.min(1,n))*100;return`<span class="kan-bar-meter" role="img" aria-label="${g(e)}"><span class="kan-bar-fill" style="width:${t.toFixed(1)}%"></span></span><span class="kan-bar-value">${g(e)}</span>`}async renderBarMeter(e,n){let t=this.readEmbeddedCarrier(e,gn);if(!t)return"<!-- LookRenderer.BarMeter: no look.metricPath -->";let a=await this.evaluateCarrier(t,n);return a===void 0?"":`<div class="kan-bar-row">${this.barMarkup(a)}</div>`}renderResourceCount(e,n){let t=J(e,no),a=this.gatherValueItems(t).filter(i=>i instanceof D);if(a.length===0)return"<!-- LookRenderer.ResourceCount: no look.counts -->";let s=this.readTransitive(e),o=[];for(let i of a){let c=q(i,ke);if(!c)continue;let l=re(this.catalog,c);if(!l)continue;let u=G(this.catalog,l).label,f=this.findInstancesOfClass(c,s).length,p=this.hrefForSubject(l,n);o.push(`<a class="kan-count" href="${g(p)}"><span class="kan-count-val">${f}</span><span class="kan-count-label">${g(u)}</span></a>`)}return o.length===0?"":`<div class="kan-count-row">${o.join("")}</div>`}renderHorizon(e,n,t){let a=q(e,ke);if(!a)return"<!-- LookRenderer.Horizon: no look.source -->";let s=this.gatherValueItems(J(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=on(e),s=a?this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name:"Condition",o=[],i=[];for(let p of e.statement){let h=p.predicate?.subject;if(!h||X(h,Ne))continue;let m=this.readLabelForUri({publisher:h.publisher,package_:h.package_,name:h.name})??h.name;if(p instanceof Z||p instanceof ge||p instanceof fe)o.push(`<div class="kan-cond-field"><span class="kan-cond-key">${g(m)}</span><span class="kan-cond-v">${g(String(p.object))}</span></div>`);else if(p instanceof H&&p.object instanceof x){let b=p.object.subject,k=this.readLabelForUri({publisher:b.publisher,package_:b.package_,name:b.name})??b.name;o.push(`<div class="kan-cond-field"><span class="kan-cond-key">${g(m)}</span><span class="kan-cond-v">${g(k)}</span></div>`)}else if(p instanceof ee)i.push(this.renderConditionNode(p.object,n,t+1));else if(p instanceof B)for(let b of p.object??[])b instanceof D&&i.push(this.renderConditionNode(b,n,t+1))}let c=o.length?`<div class="kan-cond-fields">${o.join("")}</div>`:"",l=i.length?`<div class="kan-cond-children">${i.join("")}</div>`:"",u=i.length>0,f=u?`<span class="kan-cond-op">${g(s)}</span>`:`<div class="kan-cond-type">${g(s)}</div>`;return`<div class="kan-cond ${u?"kan-cond-branch":"kan-cond-leaf"}">${f}${c}${l}</div>`}renderSectionHeading(e){let n=e,t=ae(n,ta);if(!t)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let a=ae(n,Ys);return`<div class="kan-section" id="${ga(t)}"><h2 class="kan-section-title">${g(t)}</h2>`+(a?`<p class="kan-section-note">${g(a)}</p>`:"")+"</div>"}renderSectionNav(e){return e.length===0?"<!-- LookRenderer.SectionNav: no section headings in this view -->":`<nav class="kan-section-nav" aria-label="On this page">${e.map(t=>`<a class="kan-section-nav-link" href="#${g(t.slug)}">${g(t.label)}</a>`).join("")}</nav>`}async renderVersionDelta(e,n){let t=this.readEmbeddedCarrier(e,gn);if(!t)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let a=async P=>{let V=await this.evaluateCarrierNum(t,P);return Number.isFinite(V)?V:void 0},s=await a(n);if(s===void 0)return"";let o=P=>this.uriOf(P).version??{major:0,minor:0,patch:0},i=(P,V)=>P.major-V.major||P.minor-V.minor||P.patch-V.patch,c={publisher:ue(n),package_:this.uriOf(n).package_,name:n.name},l=o(n),u,f;for(let P of le(this.catalog,c)){let V=o(P);i(V,l)<0&&(!f||i(V,f)>0)&&(u=P,f=V)}if(!u||!f)return'<div class="kan-delta kan-delta-first">First tracked in this version</div>';let p=await a(u);if(p===void 0)return"";let h=s-p,m=Math.abs(h)<.005?"flat":h>0?"up":"down",b=m==="up"?"\u25B2":m==="down"?"\u25BC":"\u2014",k=m==="up"?"#34d399":m==="down"?"#f87171":"var(--kan-text-faint)",$=`${f.major}.${f.minor}.${f.patch}`,y=320,K=46,E=14,U=30,C=P=>E+Math.min(1,Math.max(0,P))*(y-2*E),F=C(p),_=C(s),W=`<svg class="kan-delta-track" viewBox="0 0 ${y} ${K}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${E}" y1="${U}" x2="${y-E}" y2="${U}" class="kan-delta-base"/><line x1="${F.toFixed(1)}" y1="${U}" x2="${_.toFixed(1)}" y2="${U}" stroke="${k}" stroke-width="3"/><circle cx="${F.toFixed(1)}" cy="${U}" r="4" class="kan-delta-prev"/><circle cx="${_.toFixed(1)}" cy="${U}" r="5.5" fill="${k}"/><text x="${F.toFixed(1)}" y="${U-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${p.toFixed(2)}</text><text x="${_.toFixed(1)}" y="${U+17}" text-anchor="middle" class="kan-delta-tick">${s.toFixed(2)}</text></svg>`;return`<div class="kan-delta"><div class="kan-delta-head"><span class="kan-delta-vs">vs ${g($)}</span><span class="kan-delta-badge ${m}">${h>0?"+":""}${h.toFixed(2)} ${b}</span></div>`+W+"</div>"}async renderTimePlot(e,n,t){let a=q(e,ke),s=q(e,xn);if(!a||!s)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let o=this.readEmbeddedCarrier(e,ro),i=this.readEmbeddedCarrier(e,aa),c=[];for(let R of this.readPropertyValueReferences(n,a)){let I=re(this.catalog,{publisher:R.subject.publisher,package_:R.subject.package_,name:R.subject.name,...R.subject.version?{version:R.subject.version}:{}});if(!I)continue;let T=this.readPropertyValueText(I,s)??"",v=Date.parse(T);if(!Number.isFinite(v))continue;let M=o?await this.evaluateCarrier(o,I)??"":"",z=(i?await this.evaluateCarrier(i,I):void 0)??G(this.catalog,I).label;c.push({t:v,dateStr:T,lane:M,label:z,href:this.hrefForSubject(I,t),linkable:this.isLinkable(ue(I),t)})}if(c.length===0)return"<!-- LookRenderer.TimePlot: no dated points -->";let l=[];for(let R of c)l.includes(R.lane)||l.push(R.lane);let u=Math.min(...c.map(R=>R.t)),f=Math.max(...c.map(R=>R.t));f===u&&(f=u+1);let p=l.some(R=>R),h=720,m=p?96:16,b=18,k=12,$=24,y=36,K=k+l.length*y+$,E=m,U=h-b,C=U-E,F=R=>E+(R-u)/(f-u)*C,_=R=>k+R*y+y/2,W=R=>Math.round(R*360/Math.max(1,l.length)),P=[];l.forEach((R,I)=>{let T=_(I);P.push(`<line x1="${E}" y1="${T.toFixed(1)}" x2="${U}" y2="${T.toFixed(1)}" class="kan-plot-guide"/>`),R&&P.push(`<text x="${(m-8).toFixed(1)}" y="${(T+4).toFixed(1)}" text-anchor="end" class="kan-plot-lane">${Oe(R)}</text>`)});let V={},L=[];for(let R of c){let I=l.indexOf(R.lane),v=((V[R.lane]=(V[R.lane]??0)+1)%3-1)*7,M=F(R.t),z=_(I)+v,O=`${In(R.dateStr)} \xB7 ${R.label}`,A=`<circle cx="${M.toFixed(1)}" cy="${z.toFixed(1)}" r="5" fill="hsl(${W(I)},65%,60%)" class="kan-plot-pt"><title>${Oe(O)}</title></circle>`;L.push(R.linkable?`<a href="${g(R.href)}" class="kan-plot-link">${A}</a>`:A)}let j=`<text x="${E}" y="${(K-6).toFixed(1)}" text-anchor="start" class="kan-plot-axis">${Oe(In(new Date(u).toISOString()))}</text><text x="${U}" y="${(K-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${Oe(In(new Date(f).toISOString()))}</text>`;return`<section class="kan-plot">${`<svg class="kan-plot-svg" viewBox="0 0 ${h} ${K}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+P.join("")+L.join("")+j+"</svg>"}</section>`}renderDetails(e,n,t){let a=nt(e,to),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=>X(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 Z)return ha(e.object);if(e instanceof ge||e instanceof fe)return g(String(e.object));if(e instanceof H&&e.object instanceof x)return this.detailReferenceLink(e.object,n);if(e instanceof ee)return this.detailEmbedded(e.object,n,t);if(e instanceof B){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 x?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=on(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=re(this.catalog,e);if(!n)return[];let t=J(n,Ur);return t instanceof H&&t.object instanceof x?[t.object]:[]}async renderEmbeddedViews(e,n,t,a=""){let s=q(e,ke);if(!s)return"<!-- LookRenderer: EmbeddedViews missing look.source -->";let o=this.gatherValueItems(J(n,s)).filter(h=>h instanceof D);if(o.length===0)return"";let i=a?`${a}.${s.name}`:s.name,c=J(e,Oo),l=c instanceof fe?c.object===!0:c instanceof Z&&c.object==="true",u=[],f=[];for(let h of o){let m=h,b=h.name?`${i}.${h.name}`:"";if(l&&b){let C=G(this.catalog,m).label||h.name||b;u.push(`<a class="kan-section-nav-link" href="#${g(b)}">${g(C)}</a>`)}let k=ye(m),$=k.length>0?k:this.rangeTypeRefs(s),y=Cn(m)?this.findCascadedLook(m):this.lookFromTypeRefs($),K="";if(y){let C=[];for(let F of et(y.declaration))C.push(await this.renderBand(F,m,t,[],b));K=C.join(`
128
- `)}else{let C=this.detailRows(h,t,[]);K=C?`<dl class="kan-details">${C}</dl>`:""}let E=b?` id="${g(b)}"`:"",U=b?this.anchorLink(b):"";f.push(`<section class="kan-embedded-view"${E}>${U}${K}</section>`)}return`<div class="kan-embedded-views">${u.length>0?`<nav class="kan-section-nav" aria-label="On this page">${u.join("")}</nav>
126
+ <!-- LookRenderer.Sequence: no messages \u2014 no consecutive prose references are joined by a declared connector -->`;let l=ae(e,ta);l!==void 0&&Ae[l]===void 0&&s.push(`<!-- LookRenderer.Sequence: look.nodeTier '${h(l)}' is not a tier (${Object.keys(Ae).join(", ")}); using the class/default size -->`);let d=(l!==void 0?Ae[l]:void 0)??this.classTierSize(i)??Ae.icon,f=d+r.SEQ_COL_GAP,p=r.SEQ_ROW,m=r.SEQ_PAD,g=ae(e,ks)==="true",b=new Map;i.forEach((_,W)=>b.set(c(_),m+W*f+d/2));let k=m+d,v=k+p,y=v+o.length*p+m,K=m*2+(i.length-1)*f+d,E=`kan-arrow-${this.diagramArrowSeq++}`,U=`kan-arrow-open-${this.diagramArrowSeq++}`,T=[this.arrowMarkerDef(E,"var(--kan-text-dim)")+`<defs><marker id="${U}" viewBox="0 0 ${pe} ${pe}" refX="0" refY="${(pe/2).toFixed(1)}" markerWidth="${pe}" markerHeight="${pe}" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,1 L${pe},${(pe/2).toFixed(1)} L0,${pe-1}" fill="none" stroke="var(--kan-text-dim)" stroke-width="1.5"/></marker></defs>`];for(let _ of i){let W=b.get(c(_));T.push(`<line class="kan-seq-lifeline" x1="${W}" y1="${k}" x2="${W}" y2="${y-m}" stroke="var(--kan-border)" stroke-width="1.5" stroke-dasharray="5 5"/>`),T.push(this.diagramTile(_,W-d/2,m,d,t))}return o.forEach((_,W)=>{let P=v+W*p,V=b.get(c(_.from)),L=b.get(c(_.to)),j=this.subjectFor(_.relation),N=(g?`${W+1}. `:"")+(j?G(this.catalog,j).label:_.relation.name),R=_.style==="dotted"?' stroke-dasharray="4 4"':"",I=_.style==="thick"?3:1.5,F=_.undirected?"":` marker-end="url(#${_.style==="open"?U:E})"`,$=`kan-seq-message kan-seq-message-${_.style}${_.undirected?" kan-seq-message-undirected":""}`;if(V===L){let A=p*.55,me=V+(_.undirected?0:pe);T.push(`<path class="${$}" d="M${V},${P-A/2} H${V+34} V${P+A/2} H${me}" fill="none" stroke="var(--kan-text-dim)" stroke-width="${I}"${R}${F}/>`),T.push(`<text class="kan-seq-message-label" x="${V+34+6}" y="${P+4}" font-size="12" fill="var(--kan-text)">${h(N)}</text>`);return}let M=L>V?1:-1,z=_.undirected?L:L-M*pe;T.push(`<line class="${$}" x1="${V}" y1="${P}" x2="${z}" y2="${P}" stroke="var(--kan-text-dim)" stroke-width="${I}"${R}${F}/>`),T.push(`<text class="kan-seq-message-label" x="${((V+L)/2).toFixed(1)}" y="${P-6}" text-anchor="middle" font-size="12" fill="var(--kan-text)" style="paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px">${h(N)}</text>`)}),`${s.join(`
127
+ `)}<figure class="kan-diagram-figure kan-seq-figure"><svg class="kan-diagram-svg kan-seq" viewBox="0 0 ${K} ${y}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${T.join("")}</svg></figure>`}static ER_BOX_W=230;static ER_HEAD_H=30;static ER_ROW_H=20;static ER_GAP=70;static ER_PAD=24;erScope(e){let n=t=>en.isClassType(t);if(w(e,vs))return{classes:this.catalog.filter(a=>a instanceof Y&&a.namespace===e.namespace&&n(a))};if(n(e)){let t=je(e);if(!t)return{classes:[],reason:"the page class has no canonical URI"};let a=fn(this.catalog),s=new Map([[ne(t),e]]);for(let o of Kn(this.catalog,t,!1,a)){if(o.kind!=="object"||o.range.kind!=="class")continue;let i=this.subjectFor(o.range.uri);i&&!s.has(ne(o.range.uri))&&s.set(ne(o.range.uri),i)}return{classes:[...s.values()]}}return{classes:[],reason:"the page instance is neither a Package nor a Class"}}erCardinalityGlyph(e,n,t,a,s){let o=[];return s===1?o.push('<line x1="-14" y1="-7" x2="-14" y2="7"/>'):o.push('<path d="M-16,-8 L0,0 L-16,8" fill="none"/>'),a>=1?o.push('<line x1="-22" y1="-7" x2="-22" y2="7"/>'):o.push('<circle cx="-24" cy="0" r="4" fill="var(--kan-bg)"/>'),`<g class="kan-er-cardinality" transform="translate(${e.toFixed(1)},${n.toFixed(1)}) rotate(${t.toFixed(1)})" stroke="var(--kan-text-dim)" stroke-width="1.5">${o.join("")}</g>`}erBorderPoint(e,n,t,a,s,o){let i=s-e,c=o-n;if(i===0&&c===0)return{x:e,y:n};let l=i===0?1/0:Math.abs(t/2/i),d=c===0?1/0:Math.abs(a/2/c),f=Math.min(l,d);return{x:e+i*f,y:n+c*f}}renderEntityRelationship(e,n,t){let{classes:a,reason:s}=this.erScope(n);if(a.length===0)return`<!-- LookRenderer.EntityRelationship: nothing to draw \u2014 ${s??"no classes in scope"} -->`;let o=fn(this.catalog),i=L=>`${L.namespace}/${L.name}`,c=new Map;for(let L of a){let j=je(L);j&&c.set(ne(j),L)}let l=a.map(L=>{let j=je(L),N=j?Kn(this.catalog,j,!1,o):[];return{subject:L,label:G(this.catalog,L).label,attrs:N.filter(R=>R.kind==="datatype"),rels:N.filter(R=>R.kind==="object"&&R.range.kind==="class"&&c.has(ne(R.range.uri))),supers:Fe(L,at).filter(R=>c.has(ne(R)))}}),d=r.ER_BOX_W,f=r.ER_HEAD_H,p=r.ER_ROW_H,m=r.ER_GAP,g=r.ER_PAD,b=Math.max(1,Math.ceil(Math.sqrt(l.length))),k=L=>f+Math.max(1,L.attrs.length)*p+8,v=[];l.forEach((L,j)=>{let N=Math.floor(j/b);v[N]=Math.max(v[N]??0,k(L))});let y=[],K=g;v.forEach((L,j)=>{y[j]=K,K+=L+m});let E=new Map;l.forEach((L,j)=>{let N=Math.floor(j/b),R=j%b,I=g+R*(d+m),F=y[N],$=k(L);E.set(i(L.subject),{x:I,y:F,w:d,h:$,cx:I+d/2,cy:F+$/2})});let U=g*2+b*d+(b-1)*m,C=K-m+g,T=[],_=[],W=[],P=`kan-er-tri-${this.diagramArrowSeq++}`,V=`<defs><marker id="${P}" viewBox="0 0 12 12" refX="11" refY="6" markerWidth="12" markerHeight="12" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,0 L12,6 L0,12 Z" fill="var(--kan-bg)" stroke="var(--kan-text-dim)" stroke-width="1.5"/></marker></defs>`;for(let L of l){let j=E.get(i(L.subject));for(let N of L.rels){let R=c.get(ne(N.range.uri)),I=E.get(i(R)),F=i(R)===i(L.subject),$=this.subjectFor(N.uri),M=!!$&&dn(this.catalog,$,bs),z=!!$&&dn(this.catalog,$,ys),O=N.minCount??0,A=N.maxCount??(z?1:void 0),me=$?G(this.catalog,$).label:N.localName;if(F){let oe=j.x+j.w,Ee=j.y+12,ve=j.y+j.h-12;T.push(`<path class="kan-er-relationship" d="M${oe},${Ee} h28 V${ve} h-28" fill="none" stroke="var(--kan-text-dim)" stroke-width="1.5"/>`),M||T.push(this.erCardinalityGlyph(oe,ve,180,O,A)),_.push(`<text class="kan-er-relationship-label" x="${oe+32}" y="${j.cy+4}" font-size="11" fill="var(--kan-text)">${h(me)}</text>`);continue}let ce=this.erBorderPoint(j.cx,j.cy,j.w,j.h,I.cx,I.cy),se=this.erBorderPoint(I.cx,I.cy,I.w,I.h,j.cx,j.cy);T.push(`<line class="kan-er-relationship" x1="${ce.x.toFixed(1)}" y1="${ce.y.toFixed(1)}" x2="${se.x.toFixed(1)}" y2="${se.y.toFixed(1)}" stroke="var(--kan-text-dim)" stroke-width="1.5"/>`);let de=Math.atan2(se.y-ce.y,se.x-ce.x)*180/Math.PI;M||T.push(this.erCardinalityGlyph(se.x,se.y,de,O,A)),_.push(`<text class="kan-er-relationship-label" x="${((ce.x+se.x)/2).toFixed(1)}" y="${((ce.y+se.y)/2-6).toFixed(1)}" text-anchor="middle" font-size="11" fill="var(--kan-text)" style="paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px">${h(me)}</text>`)}for(let N of L.supers){let R=c.get(ne(N)),I=E.get(i(R)),F=this.erBorderPoint(j.cx,j.cy,j.w,j.h,I.cx,I.cy),$=this.erBorderPoint(I.cx,I.cy,I.w,I.h,j.cx,j.cy);T.push(`<line class="kan-er-inherits" x1="${F.x.toFixed(1)}" y1="${F.y.toFixed(1)}" x2="${$.x.toFixed(1)}" y2="${$.y.toFixed(1)}" stroke="var(--kan-text-dim)" stroke-width="1.5" marker-end="url(#${P})"/>`)}}for(let L of l){let j=E.get(i(L.subject)),N=this.hrefForSubject(L.subject,t),R=L.attrs.length===0?`<text x="${j.x+10}" y="${j.y+f+14}" font-size="11" fill="var(--kan-text-faint)" font-style="italic">no attributes</text>`:L.attrs.map((I,F)=>{let $=this.subjectFor(I.uri),M=$?G(this.catalog,$).label:I.localName,z=I.required||(I.minCount??0)>=1?" *":"";return`<text class="kan-er-attribute" x="${j.x+10}" y="${j.y+f+14+F*p}" font-size="11" fill="var(--kan-text)">${h(M)}${z}<tspan fill="var(--kan-text-dim)"> : ${h(I.range.uri.name)}</tspan></text>`}).join("");W.push(`<a href="${h(N)}"><g class="kan-er-entity"><rect x="${j.x}" y="${j.y}" width="${j.w}" height="${j.h}" rx="6" fill="var(--kan-bg-card)" stroke="var(--kan-border)" stroke-width="1.5"/><rect x="${j.x}" y="${j.y}" width="${j.w}" height="${f}" rx="6" fill="var(--kan-bg-elev)"/><text class="kan-er-entity-label" x="${j.cx}" y="${j.y+20}" text-anchor="middle" font-size="13" font-weight="600" fill="var(--kan-text)">${h(L.label)}</text><line x1="${j.x}" y1="${j.y+f}" x2="${j.x+j.w}" y2="${j.y+f}" stroke="var(--kan-border)"/>`+R+"</g></a>")}return`<figure class="kan-diagram-figure kan-er-figure"><svg class="kan-diagram-svg kan-er" viewBox="0 0 ${U} ${C}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${V}${T.join("")}${W.join("")}${_.join("")}</svg></figure>`}diagramTile(e,n,t,a,s,o=1){let i=this.hrefForSubject(e,s),c=this.svgUrlForSubject(e,s),l=G(this.catalog,e).label,d=o<1?` opacity="${o.toFixed(2)}"`:"";return`<a href="${h(i)}"><image href="${h(c)}" x="${n}" y="${t}" width="${a}" height="${a}"${d}><title>${h(l)}</title></image></a>`}async renderStatRow(e,n){let t=J(e,io),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=this.readEmbeddedCarrier(o,co);if(!i)continue;let c=await this.evaluateCarrier(i,n);if(c===void 0)continue;let l=ae(o,lo)??"";s.push('<div class="kan-stat">'+(l?`<span class="kan-stat-label">${h(l)}</span>`:"")+`<span class="kan-stat-val">${h(c)}</span></div>`)}return s.length===0?"":`<div class="kan-stat-row">${s.join("")}</div>`}barMarkup(e){let n=Number(e);if(!Number.isFinite(n))return h(e);let t=Math.max(0,Math.min(1,n))*100;return`<span class="kan-bar-meter" role="img" aria-label="${h(e)}"><span class="kan-bar-fill" style="width:${t.toFixed(1)}%"></span></span><span class="kan-bar-value">${h(e)}</span>`}async renderBarMeter(e,n){let t=this.readEmbeddedCarrier(e,gn);if(!t)return"<!-- LookRenderer.BarMeter: no look.metricPath -->";let a=await this.evaluateCarrier(t,n);return a===void 0?"":`<div class="kan-bar-row">${this.barMarkup(a)}</div>`}renderResourceCount(e,n){let t=J(e,ao),a=this.gatherValueItems(t).filter(i=>i instanceof D);if(a.length===0)return"<!-- LookRenderer.ResourceCount: no look.counts -->";let s=this.readTransitive(e),o=[];for(let i of a){let c=q(i,ke);if(!c)continue;let l=re(this.catalog,c);if(!l)continue;let d=G(this.catalog,l).label,f=this.findInstancesOfClass(c,s).length,p=this.hrefForSubject(l,n);o.push(`<a class="kan-count" href="${h(p)}"><span class="kan-count-val">${f}</span><span class="kan-count-label">${h(d)}</span></a>`)}return o.length===0?"":`<div class="kan-count-row">${o.join("")}</div>`}renderHorizon(e,n,t){let a=q(e,ke);if(!a)return"<!-- LookRenderer.Horizon: no look.source -->";let s=this.gatherValueItems(J(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=on(e),s=a?this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name:"Condition",o=[],i=[];for(let p of e.statement){let m=p.predicate?.subject;if(!m||X(m,Ne))continue;let g=this.readLabelForUri({publisher:m.publisher,package_:m.package_,name:m.name})??m.name;if(p instanceof Z||p instanceof ge||p instanceof fe)o.push(`<div class="kan-cond-field"><span class="kan-cond-key">${h(g)}</span><span class="kan-cond-v">${h(String(p.object))}</span></div>`);else if(p instanceof H&&p.object instanceof x){let b=p.object.subject,k=this.readLabelForUri({publisher:b.publisher,package_:b.package_,name:b.name})??b.name;o.push(`<div class="kan-cond-field"><span class="kan-cond-key">${h(g)}</span><span class="kan-cond-v">${h(k)}</span></div>`)}else if(p instanceof ee)i.push(this.renderConditionNode(p.object,n,t+1));else if(p instanceof B)for(let b of p.object??[])b instanceof D&&i.push(this.renderConditionNode(b,n,t+1))}let c=o.length?`<div class="kan-cond-fields">${o.join("")}</div>`:"",l=i.length?`<div class="kan-cond-children">${i.join("")}</div>`:"",d=i.length>0,f=d?`<span class="kan-cond-op">${h(s)}</span>`:`<div class="kan-cond-type">${h(s)}</div>`;return`<div class="kan-cond ${d?"kan-cond-branch":"kan-cond-leaf"}">${f}${c}${l}</div>`}renderSectionHeading(e){let n=e,t=ae(n,aa);if(!t)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let a=ae(n,Qs);return`<div class="kan-section" id="${ka(t)}"><h2 class="kan-section-title">${h(t)}</h2>`+(a?`<p class="kan-section-note">${h(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="#${h(t.slug)}">${h(t.label)}</a>`).join("")}</nav>`}async renderVersionDelta(e,n){let t=this.readEmbeddedCarrier(e,gn);if(!t)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let a=async P=>{let V=await this.evaluateCarrierNum(t,P);return Number.isFinite(V)?V:void 0},s=await a(n);if(s===void 0)return"";let o=P=>this.uriOf(P).version??{major:0,minor:0,patch:0},i=(P,V)=>P.major-V.major||P.minor-V.minor||P.patch-V.patch,c={publisher:ue(n),package_:this.uriOf(n).package_,name:n.name},l=o(n),d,f;for(let P of le(this.catalog,c)){let V=o(P);i(V,l)<0&&(!f||i(V,f)>0)&&(d=P,f=V)}if(!d||!f)return'<div class="kan-delta kan-delta-first">First tracked in this version</div>';let p=await a(d);if(p===void 0)return"";let m=s-p,g=Math.abs(m)<.005?"flat":m>0?"up":"down",b=g==="up"?"\u25B2":g==="down"?"\u25BC":"\u2014",k=g==="up"?"#34d399":g==="down"?"#f87171":"var(--kan-text-faint)",v=`${f.major}.${f.minor}.${f.patch}`,y=320,K=46,E=14,U=30,C=P=>E+Math.min(1,Math.max(0,P))*(y-2*E),T=C(p),_=C(s),W=`<svg class="kan-delta-track" viewBox="0 0 ${y} ${K}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${E}" y1="${U}" x2="${y-E}" y2="${U}" class="kan-delta-base"/><line x1="${T.toFixed(1)}" y1="${U}" x2="${_.toFixed(1)}" y2="${U}" stroke="${k}" stroke-width="3"/><circle cx="${T.toFixed(1)}" cy="${U}" r="4" class="kan-delta-prev"/><circle cx="${_.toFixed(1)}" cy="${U}" r="5.5" fill="${k}"/><text x="${T.toFixed(1)}" y="${U-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${p.toFixed(2)}</text><text x="${_.toFixed(1)}" y="${U+17}" text-anchor="middle" class="kan-delta-tick">${s.toFixed(2)}</text></svg>`;return`<div class="kan-delta"><div class="kan-delta-head"><span class="kan-delta-vs">vs ${h(v)}</span><span class="kan-delta-badge ${g}">${m>0?"+":""}${m.toFixed(2)} ${b}</span></div>`+W+"</div>"}async renderTimePlot(e,n,t){let a=q(e,ke),s=q(e,xn);if(!a||!s)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let o=this.readEmbeddedCarrier(e,oo),i=this.readEmbeddedCarrier(e,ra),c=[];for(let R of this.readPropertyValueReferences(n,a)){let I=re(this.catalog,{publisher:R.subject.publisher,package_:R.subject.package_,name:R.subject.name,...R.subject.version?{version:R.subject.version}:{}});if(!I)continue;let F=this.readPropertyValueText(I,s)??"",$=Date.parse(F);if(!Number.isFinite($))continue;let M=o?await this.evaluateCarrier(o,I)??"":"",z=(i?await this.evaluateCarrier(i,I):void 0)??G(this.catalog,I).label;c.push({t:$,dateStr:F,lane:M,label:z,href:this.hrefForSubject(I,t),linkable:this.isLinkable(ue(I),t)})}if(c.length===0)return"<!-- LookRenderer.TimePlot: no dated points -->";let l=[];for(let R of c)l.includes(R.lane)||l.push(R.lane);let d=Math.min(...c.map(R=>R.t)),f=Math.max(...c.map(R=>R.t));f===d&&(f=d+1);let p=l.some(R=>R),m=720,g=p?96:16,b=18,k=12,v=24,y=36,K=k+l.length*y+v,E=g,U=m-b,C=U-E,T=R=>E+(R-d)/(f-d)*C,_=R=>k+R*y+y/2,W=R=>Math.round(R*360/Math.max(1,l.length)),P=[];l.forEach((R,I)=>{let F=_(I);P.push(`<line x1="${E}" y1="${F.toFixed(1)}" x2="${U}" y2="${F.toFixed(1)}" class="kan-plot-guide"/>`),R&&P.push(`<text x="${(g-8).toFixed(1)}" y="${(F+4).toFixed(1)}" text-anchor="end" class="kan-plot-lane">${Oe(R)}</text>`)});let V={},L=[];for(let R of c){let I=l.indexOf(R.lane),$=((V[R.lane]=(V[R.lane]??0)+1)%3-1)*7,M=T(R.t),z=_(I)+$,O=`${In(R.dateStr)} \xB7 ${R.label}`,A=`<circle cx="${M.toFixed(1)}" cy="${z.toFixed(1)}" r="5" fill="hsl(${W(I)},65%,60%)" class="kan-plot-pt"><title>${Oe(O)}</title></circle>`;L.push(R.linkable?`<a href="${h(R.href)}" class="kan-plot-link">${A}</a>`:A)}let j=`<text x="${E}" y="${(K-6).toFixed(1)}" text-anchor="start" class="kan-plot-axis">${Oe(In(new Date(d).toISOString()))}</text><text x="${U}" y="${(K-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${Oe(In(new Date(f).toISOString()))}</text>`;return`<section class="kan-plot">${`<svg class="kan-plot-svg" viewBox="0 0 ${m} ${K}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+P.join("")+L.join("")+j+"</svg>"}</section>`}renderDetails(e,n,t){let a=nt(e,ro),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=>X(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">${h(i)}</dt><dd class="kan-details-val">${c}</dd>`)}return a.join("")}detailValue(e,n,t){if(e instanceof Z)return ba(e.object);if(e instanceof ge||e instanceof fe)return h(String(e.object));if(e instanceof H&&e.object instanceof x)return this.detailReferenceLink(e.object,n);if(e instanceof ee)return this.detailEmbedded(e.object,n,t);if(e instanceof B){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 x?this.detailReferenceLink(s,n):s instanceof D?this.detailEmbedded(s,n,t):h(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">${h(t)}</span>`;let a=this.urlForReference(e,void 0,n);return`<img class="kan-md-chip" src="${h(`${a}.svg`)}" alt="" loading="lazy"><a class="kan-link" href="${h(a)}">${h(t)}</a>`}detailEmbedded(e,n,t){let a=on(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">${h(s)}</span>`:"")+(o?`<dl class="kan-details">${o}</dl>`:"")+"</div>"}rangeTypeRefs(e){let n=re(this.catalog,e);if(!n)return[];let t=J(n,Fr);return t instanceof H&&t.object instanceof x?[t.object]:[]}async renderEmbeddedViews(e,n,t,a=""){let s=q(e,ke);if(!s)return"<!-- LookRenderer: EmbeddedViews missing look.source -->";let o=this.gatherValueItems(J(n,s)).filter(m=>m instanceof D);if(o.length===0)return"";let i=a?`${a}.${s.name}`:s.name,c=J(e,Io),l=c instanceof fe?c.object===!0:c instanceof Z&&c.object==="true",d=[],f=[];for(let m of o){let g=m,b=m.name?`${i}.${m.name}`:"";if(l&&b){let C=G(this.catalog,g).label||m.name||b;d.push(`<a class="kan-section-nav-link" href="#${h(b)}">${h(C)}</a>`)}let k=ye(g),v=k.length>0?k:this.rangeTypeRefs(s),y=Cn(g)?this.findCascadedLook(g):this.lookFromTypeRefs(v),K="";if(y){let C=[];for(let T of et(y.declaration))C.push(await this.renderBand(T,g,t,[],b));K=C.join(`
128
+ `)}else{let C=this.detailRows(m,t,[]);K=C?`<dl class="kan-details">${C}</dl>`:""}let E=b?` id="${h(b)}"`:"",U=b?this.anchorLink(b):"";f.push(`<section class="kan-embedded-view"${E}>${U}${K}</section>`)}return`<div class="kan-embedded-views">${d.length>0?`<nav class="kan-section-nav" aria-label="On this page">${d.join("")}</nav>
129
129
  `:""}${f.join(`
130
- `)}</div>`}anchorLink(e){return`<a class="kan-anchor" href="#${g(e)}" title="${g(e)}" aria-label="Link to this resource">#</a>`}isMetaPredicate(e){return X(e,Ne)||X(e,Wn)||X(e,Jt)||X(e,Tn)||X(e,Fn)||X(e,ao)||X(e,la)||X(e,Hs)}renderPackageContents(e,n){let t=e.namespace||"";if(!t)return"";let a=this.catalog.filter(o=>o instanceof Y&&o.namespace===t&&o.name!==e.name);return a.length===0?`<!-- LookRenderer.PackageContents: no members in ${t} -->`:(a.sort((o,i)=>{let c=G(this.catalog,o).label,l=G(this.catalog,i).label;return c.localeCompare(l)}),`<section class="kan-pkg-grid">${a.map(o=>{let i=G(this.catalog,o),c=i.label,l=i.summary,u=l?tt(l,160):"",f=this.hrefForSubject(o,n),p=this.svgUrlForSubject(o,n);return`<a class="kan-pkg-card" href="${g(f)}"><img class="kan-pkg-card-svg" src="${g(p)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${g(c)}</span>`+(u?`<span class="kan-pkg-card-comment">${g(u)}</span>`:"")+"</span></a>"}).join("")}</section>`)}renderReferencedBy(e,n,t){let a=q(e,Eo),s={publisher:ue(n),package_:this.uriOf(n).package_,name:n.name},o=te(s),i=p=>this.uriOf(p).version??{major:0,minor:0,patch:0},c=(p,h)=>p.major-h.major||p.minor-h.minor||p.patch-h.patch,l=new Map;for(let p of this.catalog){if(!(p instanceof Y))continue;let h=te({publisher:ue(p),package_:this.uriOf(p).package_,name:p.name});if(h!==o)for(let m of p.statement){let b=m.predicate?.subject;if(!b||X(b,Ne)||a&&te(b)!==te(a))continue;let k=[];if(m instanceof H&&m.object instanceof x)k.push(m.object);else if(m instanceof B)for(let E of m.object??[])E instanceof x&&k.push(E);if(!k.some(E=>te(E.subject)===o))continue;let $=te(b),y=l.get($);y||(y={label:this.readLabelForUri(b)??b.name,best:new Map},l.set($,y));let K=y.best.get(h);(!K||c(i(p),i(K))>0)&&y.best.set(h,p)}}return l.size===0?"<!-- LookRenderer.ReferencedBy: no incoming references -->":`<div class="kan-section"><h2 class="kan-section-title">Referenced by</h2></div>${[...l.values()].sort((p,h)=>p.label.localeCompare(h.label)).map(p=>{let m=[...p.best.values()].sort((b,k)=>G(this.catalog,b).label.localeCompare(G(this.catalog,k).label)).map(b=>this.resourceCard(b,t,n.namespace??void 0)).join("");return`<div class="kan-rel-group"><h3 class="kan-rel-prop"><span class="kan-rel-dir" title="incoming \u2014 references this resource">\u2190</span> ${g(p.label)}</h3><section class="kan-pkg-grid">${m}</section></div>`}).join("")}`}resourceCard(e,n,t){let a=G(this.catalog,e),s=a.summary?tt(a.summary,160):"",o=ye(e).map($=>this.readLabelForUri({publisher:$.subject.publisher,package_:$.subject.package_,name:$.subject.name})??$.subject.name),c='<span class="kan-pkg-card-body">'+(o.length>0?`<span class="kan-card-types">${o.map($=>`<span class="kan-card-type">${g($)}</span>`).join("")}</span>`:"")+`<span class="kan-pkg-card-title">${g(a.label)}</span>`+(s?`<span class="kan-pkg-card-comment">${g(s)}</span>`:"")+"</span>",l=this.isLinkable(ue(e),n),u=l?`<a class="kan-pkg-card-link" href="${g(this.hrefForSubject(e,n))}"><img class="kan-pkg-card-svg" src="${g(this.svgUrlForSubject(e,n))}" alt="" loading="lazy"/>`+c+"</a>":`<span class="kan-pkg-card-link">${c}</span>`,f=e.namespace||"",p=this.uriOf(e),h=p.publisher,m=p.package_,b=p.version?hn(p.version):"",k="";if(m&&f!==t){let $=b?`<span class="kan-card-at">@</span><span class="kan-card-ver">${g(b)}</span>`:"";if(l){let y=`<span class="kan-card-pkg">${g(m)}</span>${$}`;k=`<a class="kan-pkg-card-foot" href="${g(this.packageHref(h,m,b||void 0))}" title="${g(b?`${m}@${b}`:m)}">${y}</a>`}else{let y=`<span class="kan-card-pub">${g(h)}/</span><span class="kan-card-pkg">${g(m)}</span>${$}`;k=`<span class="kan-pkg-card-foot" title="${g(b?`${h}/${m}@${b}`:`${h}/${m}`)}">${y}</span>`}}return`<div class="kan-pkg-card kan-pkg-card--foot">${u}${k}</div>`}renderInstances(e,n,t){let a={publisher:ue(n),package_:this.uriOf(n).package_,name:n.name},s=this.readTransitive(e),o=s?this.descendantTypeKeys(a):new Set([te(a)]),i=k=>this.uriOf(k).version??{major:0,minor:0,patch:0},c=(k,$)=>k.major-$.major||k.minor-$.minor||k.patch-$.patch,l=new Map;for(let k of this.catalog){if(!(k instanceof Y)||!ye(k).some(E=>o.has(te(E.subject))))continue;let y=te({publisher:ue(k),package_:this.uriOf(k).package_,name:k.name}),K=l.get(y);(!K||c(i(k),i(K))>0)&&l.set(y,k)}let u=[...l.values()];if(u.length===0)return"<!-- LookRenderer.Instances: none -->";u.sort((k,$)=>G(this.catalog,k).label.localeCompare(G(this.catalog,$).label));let f=48,p=u.slice(0,f),h=p.map(k=>this.resourceCard(k,t,n.namespace??void 0)),m=u.length>f?` <span class="kan-count">${p.length} of ${u.length}</span>`:` <span class="kan-count">${u.length}</span>`;return`<div class="kan-section"><h2 class="kan-section-title">${s?"Instances (including subtypes)":"Instances"}${m}</h2></div><section class="kan-pkg-grid">${h.join("")}</section>`}descendantTypeKeys(e){let n=te(e),t=new Set([n]),a=new Set;for(let s of this.catalog)if(s instanceof Y)for(let o of ye(s)){let i=o.subject,c=te(i);a.has(c)||(a.add(c),nn(this.catalog,i).some(l=>te(l)===n)&&t.add(c))}return t}referencesTarget(e,n,t){for(let a of e.statement){let s=a.predicate?.subject;if(s&&X(s,Ne)||t&&!(s&&te(s)===te(t)))continue;let o=[];if(a instanceof H&&a.object instanceof x)o.push(a.object);else if(a instanceof B)for(let i of a.object??[])i instanceof x&&o.push(i);for(let i of o)if(te(i.subject)===n)return!0}return!1}async renderFeaturedResource(e,n){let t=q(e,ke);if(!t)return"<!-- LookRenderer.FeaturedResource: no look.source -->";let a=le(this.catalog,t),s=l=>this.uriOf(l).version??{major:0,minor:0,patch:0},o=a.length>0?a.slice().sort((l,u)=>{let f=s(l),p=s(u);return p.major-f.major||p.minor-f.minor||p.patch-f.patch})[0]:re(this.catalog,t);if(!o)return`<!-- LookRenderer.FeaturedResource: ${t.publisher}/${t.package_}/${t.name} not found -->`;let i=await this.renderHtml(o),c=this.hrefForSubject(o,n);return`<section class="kan-featured"><a class="kan-featured-permalink" href="${g(c)}">View full resource \u2192</a>`+i+"</section>"}async renderDistribution(e,n){let t=async T=>{let v=this.readEmbeddedCarrier(e,T);if(!v)return;let M=await this.evaluateCarrierNum(v,n);return Number.isFinite(M)?M:void 0},a=await t(Gs),s=await t(zs);if(a===void 0||s===void 0||a<=0||s<=0)return"<!-- LookRenderer.Distribution: needs resolvable alphaPath + betaPath (> 0) -->";let o=await t(gn)??a/(a+s),i=await t(ia),c=await t(ca),l=await t(Jn),u=l!==void 0?`hsl(${l},65%,60%)`:"var(--kan-accent)",f=T=>Number.isInteger(T)?String(T):T.toFixed(1),p=280,h=168,m={top:14,right:14,bottom:24,left:14},b=p-m.left-m.right,k=h-m.top-m.bottom,$=120,y=1e-4,K=[],E=[],U=0;for(let T=0;T<=$;T++){let v=T/$;v<y?v=y:v>1-y&&(v=1-y);let M=Math.exp((a-1)*Math.log(v)+(s-1)*Math.log(1-v));K.push(v),E.push(M),M>U&&(U=M)}let C=T=>m.left+Math.min(1,Math.max(0,T))*b,F=T=>m.top+(1-(U>0?T/U:0))*k,_=m.top+k,W=K.map((T,v)=>`${C(T).toFixed(1)},${F(E[v]).toFixed(1)}`),P=`M${C(0).toFixed(1)},${_.toFixed(1)} L${W.join(" L")} L${C(1).toFixed(1)},${_.toFixed(1)} Z`,V="";if(i!==void 0&&c!==void 0&&c>i){let T=[`${C(i).toFixed(1)},${_.toFixed(1)}`];for(let v=0;v<=$;v++)K[v]>=i&&K[v]<=c&&T.push(`${C(K[v]).toFixed(1)},${F(E[v]).toFixed(1)}`);T.push(`${C(c).toFixed(1)},${_.toFixed(1)}`),V=`<path d="M${T.join(" L")} Z" fill="${u}" fill-opacity="0.3"/>`}let L=C(o),j=`<line x1="${L.toFixed(1)}" y1="${m.top.toFixed(1)}" x2="${L.toFixed(1)}" y2="${_.toFixed(1)}" stroke="${u}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${L.toFixed(1)}" y="${(m.top-3).toFixed(1)}" text-anchor="middle" class="kan-dist-mean">\u03BC ${o.toFixed(2)}</text>`,N=`<text x="${C(0).toFixed(1)}" y="${(_+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${C(1).toFixed(1)}" y="${(_+15).toFixed(1)}" text-anchor="end" class="kan-dist-axis">1</text>`,R=`<svg class="kan-dist-svg" viewBox="0 0 ${p} ${h}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${m.left}" y1="${_.toFixed(1)}" x2="${(p-m.right).toFixed(1)}" y2="${_.toFixed(1)}" class="kan-dist-base"/><path d="${P}" fill="${u}" fill-opacity="0.12"/>`+V+`<polyline points="${W.join(" ")}" fill="none" stroke="${u}" stroke-width="2"/>`+j+N+"</svg>",I=i!==void 0&&c!==void 0?` \xB7 95% CI [${i.toFixed(2)}\u2013${c.toFixed(2)}]`:"";return`<figure class="kan-dist">${R}<figcaption class="kan-dist-caption">Beta(${f(a)}, ${f(s)})${I}</figcaption></figure>`}renderPublisherPackages(e,n){let t=new Map;for(let c of this.catalog){if(!(c instanceof Y)||ue(c)!==n)continue;let l=this.uriOf(c).package_;if(!l||c.name!==l)continue;let u=t.get(l),f=this.uriOf(c).version,p=u?this.uriOf(u).version:void 0;(!u||f&&(!p||kn(f,p)>0))&&t.set(l,c)}let a,s=J(e,Fs),o=s instanceof B?s.object??[]:s instanceof H&&s.object instanceof x?[s.object]:[];if(o.length>0){a=[];for(let c of o){if(!(c instanceof x))continue;let l=c.subject.package_,u=t.get(l);u&&a.push([l,u])}}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 u=G(this.catalog,l),f=u.label,p=u.summary,h=p?tt(p,160):"",m=this.svgUrlForSubject(l,n);return`<a class="kan-pkg-card" href="${g(this.packageHref(n,c))}"><img class="kan-pkg-card-svg" src="${g(m)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${g(f)}</span>`+(h?`<span class="kan-pkg-card-comment">${g(h)}</span>`:"")+"</span></a>"}).join("")}</section>`}async renderTimeline(e,n){let t=q(e,ke);if(!t)return"<!-- LookRenderer.Timeline: no look.source -->";let a=q(e,xn),s=this.findInstancesOfClass(t,this.readTransitive(e));if(s.length===0)return"<!-- LookRenderer.Timeline: no instances -->";let o=f=>a?this.readPropertyValueText(f,a)??"":"",i=s.slice().sort((f,p)=>o(f).localeCompare(o(p))),c=q(e,oa),l=this.readEmbeddedCarrier(e,gn);return c&&l?this.renderTrajectoryChart(i,c,l,e,n,o):`<section class="kan-timeline"><ol>
131
- ${i.map(f=>{let p=this.uriOf(f),h=p.package_,m=p.version,b=this.resourceHref({publisher:ue(f),package_:h,name:f.name,...m?{version:m}:{}},n),k=o(f),$=k?`<span class="kan-timeline-date">${g(k)}</span>`:"",y=m?hn(m):f.name;return`<li class="kan-timeline-node"><a href="${g(b)}"><span class="kan-timeline-key">${g(y)}</span>${$}</a></li>`}).join(`
130
+ `)}</div>`}anchorLink(e){return`<a class="kan-anchor" href="#${h(e)}" title="${h(e)}" aria-label="Link to this resource">#</a>`}isMetaPredicate(e){return X(e,Ne)||X(e,Wn)||X(e,Zt)||X(e,Fn)||X(e,Tn)||X(e,so)||X(e,ua)||X(e,Gs)}renderPackageContents(e,n){let t=e.namespace||"";if(!t)return"";let a=this.catalog.filter(o=>o instanceof Y&&o.namespace===t&&o.name!==e.name);return a.length===0?`<!-- LookRenderer.PackageContents: no members in ${t} -->`:(a.sort((o,i)=>{let c=G(this.catalog,o).label,l=G(this.catalog,i).label;return c.localeCompare(l)}),`<section class="kan-pkg-grid">${a.map(o=>{let i=G(this.catalog,o),c=i.label,l=i.summary,d=l?tt(l,160):"",f=this.hrefForSubject(o,n),p=this.svgUrlForSubject(o,n);return`<a class="kan-pkg-card" href="${h(f)}"><img class="kan-pkg-card-svg" src="${h(p)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${h(c)}</span>`+(d?`<span class="kan-pkg-card-comment">${h(d)}</span>`:"")+"</span></a>"}).join("")}</section>`)}renderReferencedBy(e,n,t){let a=q(e,xo),s={publisher:ue(n),package_:this.uriOf(n).package_,name:n.name},o=te(s),i=p=>this.uriOf(p).version??{major:0,minor:0,patch:0},c=(p,m)=>p.major-m.major||p.minor-m.minor||p.patch-m.patch,l=new Map;for(let p of this.catalog){if(!(p instanceof Y))continue;let m=te({publisher:ue(p),package_:this.uriOf(p).package_,name:p.name});if(m!==o)for(let g of p.statement){let b=g.predicate?.subject;if(!b||X(b,Ne)||a&&te(b)!==te(a))continue;let k=[];if(g instanceof H&&g.object instanceof x)k.push(g.object);else if(g instanceof B)for(let E of g.object??[])E instanceof x&&k.push(E);if(!k.some(E=>te(E.subject)===o))continue;let v=te(b),y=l.get(v);y||(y={label:this.readLabelForUri(b)??b.name,best:new Map},l.set(v,y));let K=y.best.get(m);(!K||c(i(p),i(K))>0)&&y.best.set(m,p)}}return l.size===0?"<!-- LookRenderer.ReferencedBy: no incoming references -->":`<div class="kan-section"><h2 class="kan-section-title">Referenced by</h2></div>${[...l.values()].sort((p,m)=>p.label.localeCompare(m.label)).map(p=>{let g=[...p.best.values()].sort((b,k)=>G(this.catalog,b).label.localeCompare(G(this.catalog,k).label)).map(b=>this.resourceCard(b,t,n.namespace??void 0)).join("");return`<div class="kan-rel-group"><h3 class="kan-rel-prop"><span class="kan-rel-dir" title="incoming \u2014 references this resource">\u2190</span> ${h(p.label)}</h3><section class="kan-pkg-grid">${g}</section></div>`}).join("")}`}resourceCard(e,n,t){let a=G(this.catalog,e),s=a.summary?tt(a.summary,160):"",o=ye(e).map(v=>this.readLabelForUri({publisher:v.subject.publisher,package_:v.subject.package_,name:v.subject.name})??v.subject.name),c='<span class="kan-pkg-card-body">'+(o.length>0?`<span class="kan-card-types">${o.map(v=>`<span class="kan-card-type">${h(v)}</span>`).join("")}</span>`:"")+`<span class="kan-pkg-card-title">${h(a.label)}</span>`+(s?`<span class="kan-pkg-card-comment">${h(s)}</span>`:"")+"</span>",l=this.isLinkable(ue(e),n),d=l?`<a class="kan-pkg-card-link" href="${h(this.hrefForSubject(e,n))}"><img class="kan-pkg-card-svg" src="${h(this.svgUrlForSubject(e,n))}" alt="" loading="lazy"/>`+c+"</a>":`<span class="kan-pkg-card-link">${c}</span>`,f=e.namespace||"",p=this.uriOf(e),m=p.publisher,g=p.package_,b=p.version?hn(p.version):"",k="";if(g&&f!==t){let v=b?`<span class="kan-card-at">@</span><span class="kan-card-ver">${h(b)}</span>`:"";if(l){let y=`<span class="kan-card-pkg">${h(g)}</span>${v}`;k=`<a class="kan-pkg-card-foot" href="${h(this.packageHref(m,g,b||void 0))}" title="${h(b?`${g}@${b}`:g)}">${y}</a>`}else{let y=`<span class="kan-card-pub">${h(m)}/</span><span class="kan-card-pkg">${h(g)}</span>${v}`;k=`<span class="kan-pkg-card-foot" title="${h(b?`${m}/${g}@${b}`:`${m}/${g}`)}">${y}</span>`}}return`<div class="kan-pkg-card kan-pkg-card--foot">${d}${k}</div>`}renderInstances(e,n,t){let a={publisher:ue(n),package_:this.uriOf(n).package_,name:n.name},s=this.readTransitive(e),o=s?this.descendantTypeKeys(a):new Set([te(a)]),i=k=>this.uriOf(k).version??{major:0,minor:0,patch:0},c=(k,v)=>k.major-v.major||k.minor-v.minor||k.patch-v.patch,l=new Map;for(let k of this.catalog){if(!(k instanceof Y)||!ye(k).some(E=>o.has(te(E.subject))))continue;let y=te({publisher:ue(k),package_:this.uriOf(k).package_,name:k.name}),K=l.get(y);(!K||c(i(k),i(K))>0)&&l.set(y,k)}let d=[...l.values()];if(d.length===0)return"<!-- LookRenderer.Instances: none -->";d.sort((k,v)=>G(this.catalog,k).label.localeCompare(G(this.catalog,v).label));let f=48,p=d.slice(0,f),m=p.map(k=>this.resourceCard(k,t,n.namespace??void 0)),g=d.length>f?` <span class="kan-count">${p.length} of ${d.length}</span>`:` <span class="kan-count">${d.length}</span>`;return`<div class="kan-section"><h2 class="kan-section-title">${s?"Instances (including subtypes)":"Instances"}${g}</h2></div><section class="kan-pkg-grid">${m.join("")}</section>`}descendantTypeKeys(e){let n=te(e),t=new Set([n]),a=new Set;for(let s of this.catalog)if(s instanceof Y)for(let o of ye(s)){let i=o.subject,c=te(i);a.has(c)||(a.add(c),nn(this.catalog,i).some(l=>te(l)===n)&&t.add(c))}return t}referencesTarget(e,n,t){for(let a of e.statement){let s=a.predicate?.subject;if(s&&X(s,Ne)||t&&!(s&&te(s)===te(t)))continue;let o=[];if(a instanceof H&&a.object instanceof x)o.push(a.object);else if(a instanceof B)for(let i of a.object??[])i instanceof x&&o.push(i);for(let i of o)if(te(i.subject)===n)return!0}return!1}async renderFeaturedResource(e,n){let t=q(e,ke);if(!t)return"<!-- LookRenderer.FeaturedResource: no look.source -->";let a=le(this.catalog,t),s=l=>this.uriOf(l).version??{major:0,minor:0,patch:0},o=a.length>0?a.slice().sort((l,d)=>{let f=s(l),p=s(d);return p.major-f.major||p.minor-f.minor||p.patch-f.patch})[0]:re(this.catalog,t);if(!o)return`<!-- LookRenderer.FeaturedResource: ${t.publisher}/${t.package_}/${t.name} not found -->`;let i=await this.renderHtml(o),c=this.hrefForSubject(o,n);return`<section class="kan-featured"><a class="kan-featured-permalink" href="${h(c)}">View full resource \u2192</a>`+i+"</section>"}async renderDistribution(e,n){let t=async F=>{let $=this.readEmbeddedCarrier(e,F);if(!$)return;let M=await this.evaluateCarrierNum($,n);return Number.isFinite(M)?M:void 0},a=await t(Ws),s=await t(Ys);if(a===void 0||s===void 0||a<=0||s<=0)return"<!-- LookRenderer.Distribution: needs resolvable alphaPath + betaPath (> 0) -->";let o=await t(gn)??a/(a+s),i=await t(ca),c=await t(la),l=await t(Jn),d=l!==void 0?`hsl(${l},65%,60%)`:"var(--kan-accent)",f=F=>Number.isInteger(F)?String(F):F.toFixed(1),p=280,m=168,g={top:14,right:14,bottom:24,left:14},b=p-g.left-g.right,k=m-g.top-g.bottom,v=120,y=1e-4,K=[],E=[],U=0;for(let F=0;F<=v;F++){let $=F/v;$<y?$=y:$>1-y&&($=1-y);let M=Math.exp((a-1)*Math.log($)+(s-1)*Math.log(1-$));K.push($),E.push(M),M>U&&(U=M)}let C=F=>g.left+Math.min(1,Math.max(0,F))*b,T=F=>g.top+(1-(U>0?F/U:0))*k,_=g.top+k,W=K.map((F,$)=>`${C(F).toFixed(1)},${T(E[$]).toFixed(1)}`),P=`M${C(0).toFixed(1)},${_.toFixed(1)} L${W.join(" L")} L${C(1).toFixed(1)},${_.toFixed(1)} Z`,V="";if(i!==void 0&&c!==void 0&&c>i){let F=[`${C(i).toFixed(1)},${_.toFixed(1)}`];for(let $=0;$<=v;$++)K[$]>=i&&K[$]<=c&&F.push(`${C(K[$]).toFixed(1)},${T(E[$]).toFixed(1)}`);F.push(`${C(c).toFixed(1)},${_.toFixed(1)}`),V=`<path d="M${F.join(" L")} Z" fill="${d}" fill-opacity="0.3"/>`}let L=C(o),j=`<line x1="${L.toFixed(1)}" y1="${g.top.toFixed(1)}" x2="${L.toFixed(1)}" y2="${_.toFixed(1)}" stroke="${d}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${L.toFixed(1)}" y="${(g.top-3).toFixed(1)}" text-anchor="middle" class="kan-dist-mean">\u03BC ${o.toFixed(2)}</text>`,N=`<text x="${C(0).toFixed(1)}" y="${(_+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${C(1).toFixed(1)}" y="${(_+15).toFixed(1)}" text-anchor="end" class="kan-dist-axis">1</text>`,R=`<svg class="kan-dist-svg" viewBox="0 0 ${p} ${m}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${g.left}" y1="${_.toFixed(1)}" x2="${(p-g.right).toFixed(1)}" y2="${_.toFixed(1)}" class="kan-dist-base"/><path d="${P}" fill="${d}" fill-opacity="0.12"/>`+V+`<polyline points="${W.join(" ")}" fill="none" stroke="${d}" stroke-width="2"/>`+j+N+"</svg>",I=i!==void 0&&c!==void 0?` \xB7 95% CI [${i.toFixed(2)}\u2013${c.toFixed(2)}]`:"";return`<figure class="kan-dist">${R}<figcaption class="kan-dist-caption">Beta(${f(a)}, ${f(s)})${I}</figcaption></figure>`}renderPublisherPackages(e,n){let t=new Map;for(let c of this.catalog){if(!(c instanceof Y)||ue(c)!==n)continue;let l=this.uriOf(c).package_;if(!l||c.name!==l)continue;let d=t.get(l),f=this.uriOf(c).version,p=d?this.uriOf(d).version:void 0;(!d||f&&(!p||kn(f,p)>0))&&t.set(l,c)}let a,s=J(e,Vs),o=s instanceof B?s.object??[]:s instanceof H&&s.object instanceof x?[s.object]:[];if(o.length>0){a=[];for(let c of o){if(!(c instanceof x))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=G(this.catalog,l),f=d.label,p=d.summary,m=p?tt(p,160):"",g=this.svgUrlForSubject(l,n);return`<a class="kan-pkg-card" href="${h(this.packageHref(n,c))}"><img class="kan-pkg-card-svg" src="${h(g)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${h(f)}</span>`+(m?`<span class="kan-pkg-card-comment">${h(m)}</span>`:"")+"</span></a>"}).join("")}</section>`}async renderTimeline(e,n){let t=q(e,ke);if(!t)return"<!-- LookRenderer.Timeline: no look.source -->";let a=q(e,xn),s=this.findInstancesOfClass(t,this.readTransitive(e));if(s.length===0)return"<!-- LookRenderer.Timeline: no instances -->";let o=f=>a?this.readPropertyValueText(f,a)??"":"",i=s.slice().sort((f,p)=>o(f).localeCompare(o(p))),c=q(e,ia),l=this.readEmbeddedCarrier(e,gn);return c&&l?this.renderTrajectoryChart(i,c,l,e,n,o):`<section class="kan-timeline"><ol>
131
+ ${i.map(f=>{let p=this.uriOf(f),m=p.package_,g=p.version,b=this.resourceHref({publisher:ue(f),package_:m,name:f.name,...g?{version:g}:{}},n),k=o(f),v=k?`<span class="kan-timeline-date">${h(k)}</span>`:"",y=g?hn(g):f.name;return`<li class="kan-timeline-node"><a href="${h(b)}"><span class="kan-timeline-key">${h(y)}</span>${v}</a></li>`}).join(`
132
132
  `)}
133
- </ol></section>`}async renderTrajectoryChart(e,n,t,a,s,o){let i=a,c=this.readEmbeddedCarrier(a,Jn),l=this.readEmbeddedCarrier(a,ia),u=this.readEmbeddedCarrier(a,ca),f=ae(i,vo),p=pa(i,bo),h=pa(i,yo),m=e.length,b=await this.collectTrackedSeries(e,n,t,{hueBy:c,lowerPath:l,upperPath:u});if(b.length===0)return"<!-- LookRenderer.Timeline: no tracked series -->";let k=[];for(let O of b){for(let A of O.points)A!==null&&k.push(A);for(let A of O.lower??[])A!==null&&k.push(A);for(let A of O.upper??[])A!==null&&k.push(A)}if(k.length===0)return"<!-- LookRenderer.Timeline: no metric values -->";let $=Math.min(...k),y=Math.max(...k);y-$<1e-9&&($-=.5,y+=.5);let K=(y-$)*.08,E=p!==void 0?p:$-K,U=h!==void 0?h:y+K;U-E<1e-9&&(U=E+1);let C=1e3,F=440,_={top:28,right:24,bottom:56,left:52},W=C-_.left-_.right,P=F-_.top-_.bottom,V=O=>m<=1?_.left+W/2:_.left+O/(m-1)*W,L=O=>_.top+(1-(O-E)/(U-E))*P,j=(O,A)=>O.hue!==void 0?O.hue:Math.round(A*360/b.length),N=[];for(let O=0;O<5;O++){let A=E+O*(U-E)/4,me=L(A);N.push(`<line x1="${_.left}" y1="${me.toFixed(1)}" x2="${(C-_.right).toFixed(1)}" y2="${me.toFixed(1)}" class="kan-fan-grid"/>`),N.push(`<text x="${(_.left-8).toFixed(1)}" y="${(me+4).toFixed(1)}" class="kan-fan-axis" text-anchor="end">${A.toFixed(2)}</text>`)}let R=[];e.forEach((O,A)=>{let me=this.hrefForSubject(O,s),ce=this.uriOf(O).version,se=ce?hn(ce):"",de=V(A),oe=In(o(O));R.push(`<a href="${g(me)}" class="kan-fan-xtick"><line x1="${de.toFixed(1)}" y1="${_.top}" x2="${de.toFixed(1)}" y2="${(F-_.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${de.toFixed(1)}" y="${(F-_.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${Oe(se||O.name)}</text>`+(oe?`<text x="${de.toFixed(1)}" y="${(F-_.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${Oe(oe)}</text>`:"")+"</a>")});let I=[];b.forEach((O,A)=>{if(!O.lower||!O.upper)return;let me=j(O,A),ce=[],se=[];for(let oe=0;oe<m;oe++){let Ee=O.upper[oe],ve=O.lower[oe];Ee==null||ve===null||ve===void 0||(ce.push(`${V(oe).toFixed(1)},${L(Ee).toFixed(1)}`),se.unshift(`${V(oe).toFixed(1)},${L(ve).toFixed(1)}`))}let de=ce.concat(se);de.length<3||I.push(`<polygon class="kan-fan-band" points="${de.join(" ")}" fill="hsl(${me},65%,60%)"/>`)});let T=[];b.forEach((O,A)=>{let ce=`hsl(${j(O,A)},65%,60%)`,se=[],de=[];O.points.forEach((oe,Ee)=>{if(oe===null)return;let ve=V(Ee),he=L(oe);se.push(`${ve.toFixed(1)},${he.toFixed(1)}`),de.push(`<circle cx="${ve.toFixed(1)}" cy="${he.toFixed(1)}" r="3.5" fill="${ce}"/>`)}),se.length!==0&&T.push(`<g class="kan-fan-series" data-series="${g(O.key)}"><polyline points="${se.join(" ")}" fill="none" stroke="${ce}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`+de.join("")+"</g>")});let v=`<svg class="kan-fan-svg" viewBox="0 0 ${C} ${F}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+N.join("")+R.join("")+I.join("")+T.join("")+"</svg>",M=f?`${g(f)}=`:"",z=b.map((O,A)=>{let me=j(O,A),ce=O.points.filter(he=>he!==null),se=ce.length?ce[0]:void 0,de=ce.length?ce[ce.length-1]:void 0,oe="";if(de!==void 0&&se!==void 0){let he=de-se;if(Math.abs(he)>=.005){let ze=he>0?"up":"down",Ue=he>0?"\u25B2":"\u25BC";oe=` <span class="kan-fan-delta ${ze}">${he>0?"+":""}${he.toFixed(2)} ${Ue}</span>`}else oe=' <span class="kan-fan-delta flat">\u2014</span>'}let Ee=de!==void 0?`${M}${de.toFixed(2)}`:"\u2014",ve=O.lastSubject&&this.isLinkable(ue(O.lastSubject),s)?`<a href="${g(this.hrefForSubject(O.lastSubject,s))}">${g(O.label)}</a>`:g(O.label);return`<div class="kan-fan-legend-item" style="--kan-fan-hue:${me}"><span class="kan-fan-swatch"></span><span class="kan-fan-legend-label">${ve}</span><span class="kan-fan-legend-cur">${Ee}${oe}</span></div>`});return`<section class="kan-fan"><div class="kan-fan-chart">${v}</div><div class="kan-fan-legend">${z.join("")}</div></section>`}resolveResourceQuery(e){let n=i=>{let c=q(i,go);if(!c)return;let l=q(i,xn),u=ae(i,ko),f=this.readPropertyValueText(i,ho),p=f!==void 0?Number(f):NaN;return{ofClass:c,...l?{orderBy:l}:{},descending:u==="descending",...Number.isInteger(p)&&p>0?{limit:p}:{}}},t=this.readEmbeddedCarrier(e,ke);if(t)return n(t);let a=q(e,ke);if(!a)return;let s=re(this.catalog,a);return(s?ye(s).some(i=>X(i.subject,mo)):!1)&&s?n(s):{ofClass:a,descending:!1}}applyQueryShape(e,n){let t=e;if(n.orderBy){let a=s=>this.readPropertyValueText(s,n.orderBy)??"";t=t.slice().sort((s,o)=>a(s).localeCompare(a(o))),n.descending&&t.reverse()}return n.limit!==void 0&&(t=t.slice(0,n.limit)),t}renderResourceGrid(e,n,t){let a=this.resolveResourceQuery(e),s=q(e,ke)??a?.ofClass;if(!s)return"<!-- LookRenderer.ResourceGrid: no look.source -->";let o=re(this.catalog,s),i=o?vn(this.catalog,o)!==void 0:!1,c=[];if(i&&t){let u=this.readPropertyValueReferences(t,s);for(let f of u){let p=re(this.catalog,{publisher:f.subject.publisher,package_:f.subject.package_,name:f.subject.name,...f.subject.version?{version:f.subject.version}:{}});p&&c.push(p)}}else a?c=this.applyQueryShape(this.findInstancesOfClass(a.ofClass,this.readTransitive(e)),a):c=this.findInstancesOfClass(s,this.readTransitive(e));if(c.length===0)return`<!-- LookRenderer.ResourceGrid: no resources for ${s.publisher}/${s.package_}/${s.name} -->`;let l=[];for(let u of c){let f=G(this.catalog,u),p=f.label,h=f.summary,m=this.uriOf(u),b=m.package_,k=m.version,$=this.resourceHref({publisher:ue(u),package_:b,name:u.name,...k?{version:k}:{}},n),y=h?`<p class="kan-resource-card-subtitle">${g(h)}</p>`:"",K=`<h3 class="kan-resource-card-title">${g(p)}</h3>${y}`;l.push(this.isLinkable(ue(u),n)?`<a class="kan-resource-card" href="${g($)}">${K}</a>`:`<span class="kan-resource-card">${K}</span>`)}return`<section class="kan-resource-grid">
133
+ </ol></section>`}async renderTrajectoryChart(e,n,t,a,s,o){let i=a,c=this.readEmbeddedCarrier(a,Jn),l=this.readEmbeddedCarrier(a,ca),d=this.readEmbeddedCarrier(a,la),f=ae(i,So),p=ma(i,vo),m=ma(i,$o),g=e.length,b=await this.collectTrackedSeries(e,n,t,{hueBy:c,lowerPath:l,upperPath:d});if(b.length===0)return"<!-- LookRenderer.Timeline: no tracked series -->";let k=[];for(let O of b){for(let A of O.points)A!==null&&k.push(A);for(let A of O.lower??[])A!==null&&k.push(A);for(let A of O.upper??[])A!==null&&k.push(A)}if(k.length===0)return"<!-- LookRenderer.Timeline: no metric values -->";let v=Math.min(...k),y=Math.max(...k);y-v<1e-9&&(v-=.5,y+=.5);let K=(y-v)*.08,E=p!==void 0?p:v-K,U=m!==void 0?m:y+K;U-E<1e-9&&(U=E+1);let C=1e3,T=440,_={top:28,right:24,bottom:56,left:52},W=C-_.left-_.right,P=T-_.top-_.bottom,V=O=>g<=1?_.left+W/2:_.left+O/(g-1)*W,L=O=>_.top+(1-(O-E)/(U-E))*P,j=(O,A)=>O.hue!==void 0?O.hue:Math.round(A*360/b.length),N=[];for(let O=0;O<5;O++){let A=E+O*(U-E)/4,me=L(A);N.push(`<line x1="${_.left}" y1="${me.toFixed(1)}" x2="${(C-_.right).toFixed(1)}" y2="${me.toFixed(1)}" class="kan-fan-grid"/>`),N.push(`<text x="${(_.left-8).toFixed(1)}" y="${(me+4).toFixed(1)}" class="kan-fan-axis" text-anchor="end">${A.toFixed(2)}</text>`)}let R=[];e.forEach((O,A)=>{let me=this.hrefForSubject(O,s),ce=this.uriOf(O).version,se=ce?hn(ce):"",de=V(A),oe=In(o(O));R.push(`<a href="${h(me)}" class="kan-fan-xtick"><line x1="${de.toFixed(1)}" y1="${_.top}" x2="${de.toFixed(1)}" y2="${(T-_.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${de.toFixed(1)}" y="${(T-_.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${Oe(se||O.name)}</text>`+(oe?`<text x="${de.toFixed(1)}" y="${(T-_.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${Oe(oe)}</text>`:"")+"</a>")});let I=[];b.forEach((O,A)=>{if(!O.lower||!O.upper)return;let me=j(O,A),ce=[],se=[];for(let oe=0;oe<g;oe++){let Ee=O.upper[oe],ve=O.lower[oe];Ee==null||ve===null||ve===void 0||(ce.push(`${V(oe).toFixed(1)},${L(Ee).toFixed(1)}`),se.unshift(`${V(oe).toFixed(1)},${L(ve).toFixed(1)}`))}let de=ce.concat(se);de.length<3||I.push(`<polygon class="kan-fan-band" points="${de.join(" ")}" fill="hsl(${me},65%,60%)"/>`)});let F=[];b.forEach((O,A)=>{let ce=`hsl(${j(O,A)},65%,60%)`,se=[],de=[];O.points.forEach((oe,Ee)=>{if(oe===null)return;let ve=V(Ee),he=L(oe);se.push(`${ve.toFixed(1)},${he.toFixed(1)}`),de.push(`<circle cx="${ve.toFixed(1)}" cy="${he.toFixed(1)}" r="3.5" fill="${ce}"/>`)}),se.length!==0&&F.push(`<g class="kan-fan-series" data-series="${h(O.key)}"><polyline points="${se.join(" ")}" fill="none" stroke="${ce}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`+de.join("")+"</g>")});let $=`<svg class="kan-fan-svg" viewBox="0 0 ${C} ${T}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+N.join("")+R.join("")+I.join("")+F.join("")+"</svg>",M=f?`${h(f)}=`:"",z=b.map((O,A)=>{let me=j(O,A),ce=O.points.filter(he=>he!==null),se=ce.length?ce[0]:void 0,de=ce.length?ce[ce.length-1]:void 0,oe="";if(de!==void 0&&se!==void 0){let he=de-se;if(Math.abs(he)>=.005){let ze=he>0?"up":"down",Ue=he>0?"\u25B2":"\u25BC";oe=` <span class="kan-fan-delta ${ze}">${he>0?"+":""}${he.toFixed(2)} ${Ue}</span>`}else oe=' <span class="kan-fan-delta flat">\u2014</span>'}let Ee=de!==void 0?`${M}${de.toFixed(2)}`:"\u2014",ve=O.lastSubject&&this.isLinkable(ue(O.lastSubject),s)?`<a href="${h(this.hrefForSubject(O.lastSubject,s))}">${h(O.label)}</a>`:h(O.label);return`<div class="kan-fan-legend-item" style="--kan-fan-hue:${me}"><span class="kan-fan-swatch"></span><span class="kan-fan-legend-label">${ve}</span><span class="kan-fan-legend-cur">${Ee}${oe}</span></div>`});return`<section class="kan-fan"><div class="kan-fan-chart">${$}</div><div class="kan-fan-legend">${z.join("")}</div></section>`}resolveResourceQuery(e){let n=i=>{let c=q(i,ho);if(!c)return;let l=q(i,xn),d=ae(i,bo),f=this.readPropertyValueText(i,yo),p=f!==void 0?Number(f):NaN;return{ofClass:c,...l?{orderBy:l}:{},descending:d==="descending",...Number.isInteger(p)&&p>0?{limit:p}:{}}},t=this.readEmbeddedCarrier(e,ke);if(t)return n(t);let a=q(e,ke);if(!a)return;let s=re(this.catalog,a);return(s?ye(s).some(i=>X(i.subject,ko)):!1)&&s?n(s):{ofClass:a,descending:!1}}applyQueryShape(e,n){let t=e;if(n.orderBy){let a=s=>this.readPropertyValueText(s,n.orderBy)??"";t=t.slice().sort((s,o)=>a(s).localeCompare(a(o))),n.descending&&t.reverse()}return n.limit!==void 0&&(t=t.slice(0,n.limit)),t}renderResourceGrid(e,n,t){let a=this.resolveResourceQuery(e),s=q(e,ke)??a?.ofClass;if(!s)return"<!-- LookRenderer.ResourceGrid: no look.source -->";let o=re(this.catalog,s),i=o?vn(this.catalog,o)!==void 0:!1,c=[];if(i&&t){let d=this.readPropertyValueReferences(t,s);for(let f of d){let p=re(this.catalog,{publisher:f.subject.publisher,package_:f.subject.package_,name:f.subject.name,...f.subject.version?{version:f.subject.version}:{}});p&&c.push(p)}}else a?c=this.applyQueryShape(this.findInstancesOfClass(a.ofClass,this.readTransitive(e)),a):c=this.findInstancesOfClass(s,this.readTransitive(e));if(c.length===0)return`<!-- LookRenderer.ResourceGrid: no resources for ${s.publisher}/${s.package_}/${s.name} -->`;let l=[];for(let d of c){let f=G(this.catalog,d),p=f.label,m=f.summary,g=this.uriOf(d),b=g.package_,k=g.version,v=this.resourceHref({publisher:ue(d),package_:b,name:d.name,...k?{version:k}:{}},n),y=m?`<p class="kan-resource-card-subtitle">${h(m)}</p>`:"",K=`<h3 class="kan-resource-card-title">${h(p)}</h3>${y}`;l.push(this.isLinkable(ue(d),n)?`<a class="kan-resource-card" href="${h(v)}">${K}</a>`:`<span class="kan-resource-card">${K}</span>`)}return`<section class="kan-resource-grid">
134
134
  ${l.join(`
135
135
  `)}
136
- </section>`}readTransitive(e){let n=J(e,Uo);return n instanceof fe?n.object===!0:n instanceof Z&&n.object==="true"}findInstancesOfClass(e,n=!1){let t=n?this.descendantTypeKeys(e):new Set([te(e)]),a=[];for(let s of this.catalog)s instanceof Y&&ye(s).some(o=>t.has(te(o.subject)))&&a.push(s);return a}renderBreadcrumb(e,n,t){let s=(e.namespace||"").split("/");if(s.length<2)return"";let o=s[0],i=s[1]??"",c=i.split("@")[0]??"",l=i.split("@")[1]??"";if(!o||!c)return"";if(t?.bareOverview)return`<nav class="kan-breadcrumb"><ol>
137
- <li><a href="${g(this.publisherHref(o))}">${g(o)}</a></li>
138
- <li aria-current="page">${g(c)}</li>
139
- </ol></nav>`;let u=e.name,p=!!re(this.catalog,{publisher:o,package_:c,name:c}),h=l?`${c}@${l}`:c,m=this.resourceHref({publisher:o,package_:c,name:c,...l?{version:st(l)}:{}},o),b=e.name===c,k=[];return k.push(`<li><a href="${g(this.publisherHref(o))}">${g(o)}</a></li>`),b?k.push(`<li aria-current="page">${g(h)}</li>`):(k.push(p?`<li><a href="${g(m)}">${g(h)}</a></li>`:`<li>${g(h)}</li>`),k.push(`<li aria-current="page">${g(u)}</li>`)),`<nav class="kan-breadcrumb"><ol>
136
+ </section>`}readTransitive(e){let n=J(e,Fo);return n instanceof fe?n.object===!0:n instanceof Z&&n.object==="true"}findInstancesOfClass(e,n=!1){let t=n?this.descendantTypeKeys(e):new Set([te(e)]),a=[];for(let s of this.catalog)s instanceof Y&&ye(s).some(o=>t.has(te(o.subject)))&&a.push(s);return a}renderBreadcrumb(e,n,t){let s=(e.namespace||"").split("/");if(s.length<2)return"";let o=s[0],i=s[1]??"",c=i.split("@")[0]??"",l=i.split("@")[1]??"";if(!o||!c)return"";if(t?.bareOverview)return`<nav class="kan-breadcrumb"><ol>
137
+ <li><a href="${h(this.publisherHref(o))}">${h(o)}</a></li>
138
+ <li aria-current="page">${h(c)}</li>
139
+ </ol></nav>`;let d=e.name,p=!!re(this.catalog,{publisher:o,package_:c,name:c}),m=l?`${c}@${l}`:c,g=this.resourceHref({publisher:o,package_:c,name:c,...l?{version:st(l)}:{}},o),b=e.name===c,k=[];return k.push(`<li><a href="${h(this.publisherHref(o))}">${h(o)}</a></li>`),b?k.push(`<li aria-current="page">${h(m)}</li>`):(k.push(p?`<li><a href="${h(g)}">${h(m)}</a></li>`:`<li>${h(m)}</li>`),k.push(`<li aria-current="page">${h(d)}</li>`)),`<nav class="kan-breadcrumb"><ol>
140
140
  ${k.join(`
141
141
  `)}
142
- </ol></nav>`}renderNavGroup(e,n){let t=J(this.publisherSubject(n),qr),a=t instanceof B?t.object??[]:t instanceof H&&t.object instanceof x?[t.object]:[];if(a.length===0)return"";let s=[];for(let o of a){if(!(o instanceof x))continue;let i=re(this.catalog,{publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name}),{href:c,label:l}=this.resolveNavEntry(o,i,n),u=this.hrefForSubject(e,n),f=c===u?' aria-current="page"':"";s.push(`<li><a class="kan-nav-link" href="${g(c)}"${f}>${g(l)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
142
+ </ol></nav>`}renderNavGroup(e,n){let t=J(this.publisherSubject(n),zr),a=t instanceof B?t.object??[]:t instanceof H&&t.object instanceof x?[t.object]:[];if(a.length===0)return"";let s=[];for(let o of a){if(!(o instanceof x))continue;let i=re(this.catalog,{publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name}),{href:c,label:l}=this.resolveNavEntry(o,i,n),d=this.hrefForSubject(e,n),f=c===d?' aria-current="page"':"";s.push(`<li><a class="kan-nav-link" href="${h(c)}"${f}>${h(l)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
143
143
  ${s.join(`
144
144
  `)}
145
- </ul></nav>`}renderSiteFooter(e){let n=J(this.publisherSubject(e),Gr),t;if(n instanceof ee?t=n.object:n instanceof H&&n.object instanceof x&&(t=re(this.catalog,{publisher:n.object.subject.publisher,package_:n.object.subject.package_,name:n.object.subject.name})),!t)return"";let a=ae(t,zr),s=J(t,Wr),o=s instanceof B?s.object??[]:s instanceof H&&s.object instanceof x?[s.object]:[],i=[];for(let l of o){if(!(l instanceof x))continue;let u=re(this.catalog,{publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name}),{href:f,label:p}=this.resolveNavEntry(l,u,e);i.push(`<a class="kan-footer-link" href="${g(f)}">${g(p)}</a>`)}if(!a&&i.length===0)return"";let c=[];return i.length>0&&c.push(`<div class="kan-footer-links">${i.join("")}</div>`),a&&c.push(`<p class="kan-footer-text">${g(a)}</p>`),`<footer class="kan-site-footer">${c.join(`
146
- `)}</footer>`}resolveNavEntry(e,n,t){if(n&&ye(n).map(c=>c.subject).some(c=>c.publisher===Yn.publisher&&c.package_===Yn.package_&&c.name===Yn.name)){let c=ae(n,Wn),l=J(n,ea);if(l instanceof H&&l.object instanceof x){let u=l.object,f=this.readLabelForUri({publisher:u.subject.publisher,package_:u.subject.package_,name:u.subject.name});return{href:this.urlForReference(u,ea,t),label:c??f??u.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?G(this.catalog,n).label:e.subject.name;return{href:a,label:s}}codeHighlighter(){return this._codeHighlighter||(this._codeHighlighter=new Ln(this.collectGrammars())),this._codeHighlighter}collectGrammars(){let e=[];for(let n of this.catalog){if(!(n instanceof Y)||!ye(n).some(i=>X(i.subject,Ps)))continue;let t=ae(n,Vs);if(!t)continue;let a=J(n,Ms),s=a instanceof B?a.object??[]:[],o=[];for(let i of s){if(!(i instanceof D))continue;let c=q(i,As),l=ae(i,Ns);!c||!l||o.push({tokenClass:c.name,pattern:l})}e.push({language:t,rules:o})}return e}renderLinks(e,n){let t=q(e,ke);if(!t)return"";let a=J(n,t),s=[];a instanceof B?s=a.object??[]:a instanceof ee?s=[a.object]:a instanceof H&&a.object instanceof x&&(s=[a.object]);let o=[];for(let i of s){let c;if(i instanceof D?c=i:i instanceof x&&(c=re(this.catalog,{publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name})),!c)continue;let l=ae(c,Bs);if(!l)continue;let u=ae(c,Wn)??l,f=ae(c,Jt),p=f?` title="${g(f)}"`:"";o.push(`<a class="kan-extlink" href="${g(l)}"${p} target="_blank" rel="noopener noreferrer">${g(u)}</a>`)}return o.length===0?"":`<section class="kan-extlink-row">${o.join("")}</section>`}renderMarkdown(e,n,t){let a=q(e,ke);if(!a)return"<!-- LookRenderer.Markdown: no look.source -->";let s=J(n,a),o=new Map,i;if(s instanceof De?i=this.resolveMarkdownLinks(s,t,o):s instanceof Z?i=s.object:i=this.readPropertyValueText(n,a),!i)return"";let c=this.codeHighlighter(),l=pn(i,{highlight:(u,f)=>c.highlight(u,f)});for(let[u,f]of o){let p=new RegExp('(<a href="'+ka(u)+'">)([^<]*)(</a>)',"g");l=l.replace(p,`$1<img class="kan-md-chip" src="${g(f)}" alt="" loading="lazy">$2$3`)}return`<section class="kan-markdown">
145
+ </ul></nav>`}renderSiteFooter(e){let n=J(this.publisherSubject(e),Wr),t;if(n instanceof ee?t=n.object:n instanceof H&&n.object instanceof x&&(t=re(this.catalog,{publisher:n.object.subject.publisher,package_:n.object.subject.package_,name:n.object.subject.name})),!t)return"";let a=ae(t,Yr),s=J(t,Xr),o=s instanceof B?s.object??[]:s instanceof H&&s.object instanceof x?[s.object]:[],i=[];for(let l of o){if(!(l instanceof x))continue;let d=re(this.catalog,{publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name}),{href:f,label:p}=this.resolveNavEntry(l,d,e);i.push(`<a class="kan-footer-link" href="${h(f)}">${h(p)}</a>`)}if(!a&&i.length===0)return"";let c=[];return i.length>0&&c.push(`<div class="kan-footer-links">${i.join("")}</div>`),a&&c.push(`<p class="kan-footer-text">${h(a)}</p>`),`<footer class="kan-site-footer">${c.join(`
146
+ `)}</footer>`}resolveNavEntry(e,n,t){if(n&&ye(n).map(c=>c.subject).some(c=>c.publisher===Yn.publisher&&c.package_===Yn.package_&&c.name===Yn.name)){let c=ae(n,Wn),l=J(n,na);if(l instanceof H&&l.object instanceof x){let d=l.object,f=this.readLabelForUri({publisher:d.subject.publisher,package_:d.subject.package_,name:d.subject.name});return{href:this.urlForReference(d,na,t),label:c??f??d.subject.name}}}let a=this.resourceHref({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},t,"*"),s=n?G(this.catalog,n).label:e.subject.name;return{href:a,label:s}}codeHighlighter(){return this._codeHighlighter||(this._codeHighlighter=new Ln(this.collectGrammars())),this._codeHighlighter}collectGrammars(){let e=[];for(let n of this.catalog){if(!(n instanceof Y)||!ye(n).some(i=>X(i.subject,Ms)))continue;let t=ae(n,As);if(!t)continue;let a=J(n,Ns),s=a instanceof B?a.object??[]:[],o=[];for(let i of s){if(!(i instanceof D))continue;let c=q(i,Ds),l=ae(i,Bs);!c||!l||o.push({tokenClass:c.name,pattern:l})}e.push({language:t,rules:o})}return e}renderLinks(e,n){let t=q(e,ke);if(!t)return"";let a=J(n,t),s=[];a instanceof B?s=a.object??[]:a instanceof ee?s=[a.object]:a instanceof H&&a.object instanceof x&&(s=[a.object]);let o=[];for(let i of s){let c;if(i instanceof D?c=i:i instanceof x&&(c=re(this.catalog,{publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name})),!c)continue;let l=ae(c,qs);if(!l)continue;let d=ae(c,Wn)??l,f=ae(c,Zt),p=f?` title="${h(f)}"`:"";o.push(`<a class="kan-extlink" href="${h(l)}"${p} target="_blank" rel="noopener noreferrer">${h(d)}</a>`)}return o.length===0?"":`<section class="kan-extlink-row">${o.join("")}</section>`}renderMarkdown(e,n,t){let a=q(e,ke);if(!a)return"<!-- LookRenderer.Markdown: no look.source -->";let s=J(n,a),o=new Map,i;if(s instanceof De?i=this.resolveMarkdownLinks(s,t,o):s instanceof Z?i=s.object:i=this.readPropertyValueText(n,a),!i)return"";let c=this.codeHighlighter(),l=pn(i,{highlight:(d,f)=>c.highlight(d,f)});for(let[d,f]of o){let p=new RegExp('(<a href="'+ha(d)+'">)([^<]*)(</a>)',"g");l=l.replace(p,`$1<img class="kan-md-chip" src="${h(f)}" alt="" loading="lazy">$2$3`)}return`<section class="kan-markdown">
147
147
  ${l}
148
- </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,""),u=this.resourceHref({publisher:c.publisher,package_:c.package_,name:c.name,...c.version?{version:c.version}:{}},n);t&&t.set(u,`${u}.svg`),i=`[${l}](${u})`}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=et(n.declaration),a=[];for(let s of t){let o=on(s);if(!o||!X(o,Zt))continue;let i=q(s,ke);if(!i)continue;let c=this.readPropertyValueText(e,i);c&&a.push(c)}return a.length>0?a.join(`
148
+ </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=et(n.declaration),a=[];for(let s of t){let o=on(s);if(!o||!X(o,ea))continue;let i=q(s,ke);if(!i)continue;let c=this.readPropertyValueText(e,i);c&&a.push(c)}return a.length>0?a.join(`
149
149
 
150
- `):void 0}renderHero(e,n,t){let a=b=>{let k=J(e,b);return k instanceof fe?k.object===!0:k instanceof Z&&k.object==="true"},s=a(Co),o=!s&&a(xo),i=s||o,l=[`<header class="${s?"kan-hero kan-hero-has-avatar":o?"kan-hero kan-hero-has-icon":"kan-hero"}">`];if(i){let b=this.svgUrlForSubject(n,t),k=s?"kan-hero-avatar":"kan-hero-icon";l.push(`<img class="${k}" src="${g(b)}" alt="" loading="lazy"/>`),l.push('<div class="kan-hero-text">')}let u=q(e,Ko);if(u){let b=this.readPropertyValueText(n,u);b&&l.push(`<span class="kan-hero-eyebrow">${g(Pn(b)??b)}</span>`)}let f=q(e,jo),p="";f&&(p=this.readPropertyValueText(n,f)??""),p||(p=G(this.catalog,n).label),l.push(`<h1 class="kan-hero-title">${g(Pn(p)??p)}</h1>`);let h=q(e,Ro);if(h){let b=this.readPropertyValueText(n,h);b&&l.push(`<p class="kan-hero-subtitle">${g(Pn(b)??b)}</p>`)}let m=q(e,da);if(m){let b=this.readPropertyValueReferences(n,m);if(b.length>0){let k=b.map($=>this.renderBadge($,da,t)).join("");l.push(`<div class="kan-hero-badges">${k}</div>`)}}return i&&l.push("</div>"),l.push("</header>"),l.join(`
151
- `)}renderPropertyList(e,n,t){let a=q(e,ke);if(!a)return"<!-- LookRenderer: PropertyList missing look.source -->";let s=this.readLabelForUri(a)??a.name,o=J(n,a),i=this.gatherValueItems(o),c=i.length>0?i.map(l=>`<li>${this.renderInlineValue(l,ke,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(`
152
- `)}renderPropertyTable(e,n,t,a=""){let s=q(e,ke);if(!s)return"<!-- LookRenderer: PropertyTable missing look.source -->";let o=this.gatherValueItems(J(n,s)).filter(u=>u instanceof D);if(o.length===0)return"";let i=this.readLabelForUri(s)??s.name,c=a?`${a}.${s.name}`:s.name,l=q(e,lo);return this.renderEmbeddedTable(o,t,i,c,l)}renderEmbeddedTable(e,n,t,a,s){let o=[],i=new Set;for(let k of e)for(let $ of k.statement){let y=$.predicate?.subject;if(!y||this.isMetaPredicate(y))continue;let K=`${y.publisher}/${y.package_}/${y.name}`;i.has(K)||(i.add(K),o.push({uri:{publisher:y.publisher,package_:y.package_,name:y.name},label:this.readLabelForUri(y)??y.name}))}if(o.length===0)return"";let c=e.map(k=>G(this.catalog,k).label),l=e.some((k,$)=>c[$]!==""&&c[$]!==k.name),u=!!a,f=(u?'<th class="kan-anchor-col"></th>':"")+(l?"<th></th>":"")+o.map(k=>`<th>${g(k.label)}</th>`).join(""),p=e.map((k,$)=>{let y=u&&k.name?`${a}.${k.name}`:"",K=y?` id="${g(y)}"`:"",E=u?`<td class="kan-anchor-col">${y?this.anchorLink(y):""}</td>`:"",U=l?`<th scope="row">${g(c[$]??"")}</th>`:"",C=o.map(F=>{let _=J(k,F.uri);return _?`<td>${this.tableCellValue(_,n,s)}</td>`:"<td></td>"}).join("");return`<tr${K}>${E}${U}${C}</tr>`}).join(""),h=u&&a?` id="${g(a)}"`:"",m=u&&a?this.anchorLink(a):"",b=t?`<caption>${g(t)}${m}</caption>`:"";return`<table class="kan-property-table"${h}>${b}<thead><tr>${f}</tr></thead><tbody>${p}</tbody></table>`}tableCellValue(e,n,t){if(t&&X(t,ra)){if(e instanceof ge)return this.barMarkup(String(e.object));if(e instanceof Z&&Number.isFinite(Number(e.object)))return this.barMarkup(e.object)}if(e instanceof De)return this.statementToMarkdownHtml(e,n);if(e instanceof Z)return ha(e.object);if(e instanceof ge||e instanceof fe)return g(String(e.object));if(e instanceof H&&e.object instanceof x)return this.detailReferenceLink(e.object,n);if(e instanceof ee)return this.renderEmbeddedTable([e.object],n);if(e instanceof B){let a=e.object??[],s=a.filter(o=>o instanceof D);return s.length>0&&s.length===a.length?this.renderEmbeddedTable(s,n):a.map(o=>o instanceof x?this.detailReferenceLink(o,n):o instanceof D?this.renderEmbeddedTable([o],n):g(String(o))).filter(o=>o).join(", ")}return""}statementToMarkdownHtml(e,n){let t=new Map,a;if(e instanceof De?a=this.resolveMarkdownLinks(e,n,t):e instanceof Z&&(a=e.object),!a)return"";let s=this.codeHighlighter(),o=pn(a,{highlight:(i,c)=>s.highlight(i,c)});for(let[i,c]of t){let l=new RegExp('(<a href="'+ka(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=q(e,ke);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,ke,t)).join("")}</div>`}renderChipRow(e,n,t){let a=nt(e,Io);if(a.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let s=[];for(let o of a){let i=J(n,o);if(!i)continue;let c=this.readLabelForUri(o)??o.name,l=this.renderStatementInlineValue(i,o,t);l&&s.push(`<span class="kan-chip"><span class="kan-chip-key">${g(c)}</span> <span class="kan-chip-val">${l}</span></span>`)}return s.length===0?"":`<div class="kan-chip-row">${s.join("")}</div>`}async renderReferenceList(e,n,t){let a=nt(e,fa);if(a.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let s=this.readEmbeddedCarrier(e,aa),o=this.readEmbeddedCarrier(e,co),i=[];for(let c of a){let l=this.readPropertyValueReferences(n,c);if(l.length===0)continue;let u=this.readLabelForUri(c)??c.name;if(s){let f=[];for(let h of l)f.push(await this.renderDetailRow(h,s,o,t));let p=f.filter(h=>h).join("");p&&i.push(`<dt>${g(u)}</dt><dd><ul class="kan-ref-rows">${p}</ul></dd>`)}else{let f=l.map(p=>this.renderReferenceLink(p,fa,t)).join(", ");i.push(`<dt>${g(u)}</dt><dd>${f}</dd>`)}}return i.length===0?"":`<dl class="kan-reference-list">${i.join("")}</dl>`}async renderDetailRow(e,n,t,a){let s=re(this.catalog,{publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name,...e.subject.version?{version:e.subject.version}:{}});if(!s)return"";let o=await this.evaluateCarrier(n,s)??G(this.catalog,s).label,i="";if(t){let f=await this.evaluateCarrier(t,s);f&&(i=`<span class="kan-ref-badge">${g(f)}</span>`)}let c=`<span class="kan-ref-text">${g(o)}</span>${i}`;if(!this.isLinkable(ue(s),a))return`<li class="kan-ref-row"><span class="kan-ref-rowlink">${c}</span></li>`;let l=this.hrefForSubject(s,a),u=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(u)}" alt="" loading="lazy"/>`+c+"</a></li>"}readPropertyValueText(e,n){let t=J(e,n);if(t){if(t instanceof Z)return t.object;if(t instanceof ge||t instanceof fe)return String(t.object);if(t instanceof H){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 ee)return this.readEmbeddedText(t.object,0)||void 0;if(t instanceof B)return(t.object??[]).map(s=>s instanceof x?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>=ua)return"\u2026";let t=[];for(let a of e.statement){let s=a.predicate?.subject;if(!(s&&X(s,Ne)))if(a instanceof Z)t.push(a.object);else if(a instanceof ge||a instanceof fe)t.push(String(a.object));else if(a instanceof H){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 ee&&t.push(this.readEmbeddedText(a.object,n+1))}return t.filter(a=>a).join(", ")}readPropertyValueReferences(e,n){let t=J(e,n);if(!t)return[];if(t instanceof H)return[t.object];if(t instanceof B){let a=[];for(let s of t.object??[])s instanceof x&&a.push(s);return a}return[]}gatherValueItems(e){return e?e instanceof B?e.object??[]:e instanceof H?[e.object]:e instanceof ee?[e.object]:e instanceof Z?[e.object]:e instanceof ge||e instanceof fe?[e.object]:[]:[]}renderInlineValue(e,n,t,a=0){return e instanceof x?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 Z?g(e.object):e instanceof ge||e instanceof fe?g(String(e.object)):e instanceof H?this.renderReferenceLink(e.object,n,t):e instanceof ee?this.renderEmbeddedInline(e.object,t,a):e instanceof B?(e.object??[]).map(o=>this.renderInlineValue(o,n,t,a)).filter(o=>o).join(", "):""}renderEmbeddedInline(e,n,t=0){if(t>=ua)return"\u2026";let a=[];for(let s of e.statement){let o=s.predicate?.subject;if(!o||X(o,Ne))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=re(this.catalog,e);if(!n)return"=";let t=ae(n,To);return t==="*"||t==="^"||t==="~"||t==="="?t:"="}readLabelForUri(e){let n=re(this.catalog,e);if(n)return G(this.catalog,n).label}readCommentForUri(e){let n=re(this.catalog,e);if(n)return G(this.catalog,n).summary}};function Fo(r){let e=new Map;for(let n of r.statement){if(!(n instanceof ee)||!Re(n,Fn.publisher,Fn.package_,Fn.name))continue;let t=n.object;for(let a of t.statement){if(!(a instanceof Z))continue;let s=a.predicate?.subject?.name;if(!s)continue;let o=a.object;e.has(s)||e.set(s,o)}}return e}function Cn(r){for(let e of r.statement)if(e instanceof ee&&Re(e,Tn.publisher,Tn.package_,Tn.name))return e.object}function et(r){for(let e of r.statement){if(!(e instanceof B)||!Re(e,Zn.publisher,Zn.package_,Zn.name))continue;let n=[];for(let t of e.object??[])t instanceof D&&n.push(t);return n}return[]}function on(r){for(let e of r.statement)if(e instanceof H&&!(!e.predicate?.subject||!X(e.predicate.subject,Ne))&&e.object instanceof x){let n=e.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function q(r,e){for(let n of r.statement)if(n instanceof H&&Re(n,e.publisher,e.package_,e.name)&&n.object instanceof x){let t=n.object.subject;return{publisher:t.publisher,package_:t.package_,name:t.name}}}function nt(r,e){for(let n of r.statement){if(!(n instanceof B)||!Re(n,e.publisher,e.package_,e.name))continue;let t=[];for(let a of n.object??[])a instanceof x&&t.push({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name});return t}return[]}function J(r,e){for(let n of r.statement)if(Re(n,e.publisher,e.package_,e.name))return n}function ae(r,e){for(let n of r.statement)if(n instanceof Z&&Re(n,e.publisher,e.package_,e.name))return n.object}function On(r,e){for(let n of r.statement)if(n instanceof ee&&Re(n,e.publisher,e.package_,e.name))return n.object}function pa(r,e){for(let n of r.statement)if(n instanceof ge&&Re(n,e.publisher,e.package_,e.name))return n.object}function Po(r,e){for(let n of r.statement)if(n instanceof fe&&Re(n,e.publisher,e.package_,e.name))return n.object===!0;return!1}function Vo(r){for(let e of ye(r))if(X(e.subject,Ir)||X(e.subject,Tr))return!0;return!1}function ye(r){let e=[];for(let n of r.statement)if(n instanceof H){if(!n.predicate?.subject||!X(n.predicate.subject,Ne))continue;n.object instanceof x&&e.push(n.object)}else if(n instanceof B){if(!n.predicate?.subject||!X(n.predicate.subject,Ne))continue;for(let t of n.object??[])t instanceof x&&e.push(t)}return e}function Un(r){let e=[];for(let n of r.statement)if(n instanceof H){if(!n.predicate?.subject||!X(n.predicate.subject,at))continue;n.object instanceof x&&e.push(n.object)}else if(n instanceof B){if(!n.predicate?.subject||!X(n.predicate.subject,at))continue;for(let t of n.object??[])t instanceof x&&e.push(t)}return e}function re(r,e){let n="version"in e?e.version:void 0;if(n){let t=`${e.publisher}/${e.package_}@${n.major}.${n.minor}.${n.patch}`;for(let a of r)if(a instanceof Y&&a.name===e.name&&a.namespace===t)return a}for(let t of r){if(!(t instanceof Y)||t.name!==e.name)continue;if((t.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return t}}function Re(r,e,n,t){let a=r.predicate?.subject;return a?a.publisher===e&&a.package_===n&&a.name===t:!1}function X(r,e){return r.publisher===e.publisher&&r.package_===e.package_&&r.name===e.name}function te(r){return`${r.publisher}/${r.package_}/${r.name}`}function Mo(r){let e=s=>s.replace(/\*\//g,"* /"),n=[];n.push(` * kanonak stylesheet \u2014 ${e(r.resource.namespace)}/${e(r.resource.name)}`),n.push(" *");let t=new Map;for(let s of r.tokens.values()){let o=`${s.sourceNamespace} ${s.sourceName}`,i=t.get(o)??{count:0,level:s.level};i.count+=1,t.set(o,i)}if(t.size===0)n.push(" * :root tokens: NONE resolved");else{n.push(` * :root tokens (${r.tokens.size}):`);for(let[s,{count:o,level:i}]of t)n.push(` * ${o} from ${e(s)} (${i})`)}let a=r.baseStylesheet;if(a.css!==void 0)n.push(` * base CSS: ${e(a.sourceNamespace??"")}/base-stylesheet (${a.css.length} bytes, ${a.scope})`);else{n.push(" *"),n.push(" * !! WARNING: NO BASE STYLESHEET \u2014 this file contains only :root tokens."),n.push(" * !! Pages will appear UNSTYLED.");for(let s of r.warnings)n.push(` * !! ${e(s)}`);n.push(" * !! Full diagnostics: /.well-known/kanonak-render")}if(r.look){let s=r.look.sourceClass;n.push(` * look: ${e(s.publisher)}/${e(s.package_)}/${e(s.name)}`)}return`/*
150
+ `):void 0}renderHero(e,n,t){let a=b=>{let k=J(e,b);return k instanceof fe?k.object===!0:k instanceof Z&&k.object==="true"},s=a(Uo),o=!s&&a(Oo),i=s||o,l=[`<header class="${s?"kan-hero kan-hero-has-avatar":o?"kan-hero kan-hero-has-icon":"kan-hero"}">`];if(i){let b=this.svgUrlForSubject(n,t),k=s?"kan-hero-avatar":"kan-hero-icon";l.push(`<img class="${k}" src="${h(b)}" alt="" loading="lazy"/>`),l.push('<div class="kan-hero-text">')}let d=q(e,Eo);if(d){let b=this.readPropertyValueText(n,d);b&&l.push(`<span class="kan-hero-eyebrow">${h(Pn(b)??b)}</span>`)}let f=q(e,Ro),p="";f&&(p=this.readPropertyValueText(n,f)??""),p||(p=G(this.catalog,n).label),l.push(`<h1 class="kan-hero-title">${h(Pn(p)??p)}</h1>`);let m=q(e,Lo);if(m){let b=this.readPropertyValueText(n,m);b&&l.push(`<p class="kan-hero-subtitle">${h(Pn(b)??b)}</p>`)}let g=q(e,fa);if(g){let b=this.readPropertyValueReferences(n,g);if(b.length>0){let k=b.map(v=>this.renderBadge(v,fa,t)).join("");l.push(`<div class="kan-hero-badges">${k}</div>`)}}return i&&l.push("</div>"),l.push("</header>"),l.join(`
151
+ `)}renderPropertyList(e,n,t){let a=q(e,ke);if(!a)return"<!-- LookRenderer: PropertyList missing look.source -->";let s=this.readLabelForUri(a)??a.name,o=J(n,a),i=this.gatherValueItems(o),c=i.length>0?i.map(l=>`<li>${this.renderInlineValue(l,ke,t)}</li>`).join(""):'<li class="kan-empty">(no values)</li>';return['<section class="kan-property-list">',`<h3 class="kan-property-list-title">${h(s)}</h3>`,`<ul class="kan-property-list-items">${c}</ul>`,"</section>"].join(`
152
+ `)}renderPropertyTable(e,n,t,a=""){let s=q(e,ke);if(!s)return"<!-- LookRenderer: PropertyTable missing look.source -->";let o=this.gatherValueItems(J(n,s)).filter(d=>d instanceof D);if(o.length===0)return"";let i=this.readLabelForUri(s)??s.name,c=a?`${a}.${s.name}`:s.name,l=q(e,fo);return this.renderEmbeddedTable(o,t,i,c,l)}renderEmbeddedTable(e,n,t,a,s){let o=[],i=new Set;for(let k of e)for(let v of k.statement){let y=v.predicate?.subject;if(!y||this.isMetaPredicate(y))continue;let K=`${y.publisher}/${y.package_}/${y.name}`;i.has(K)||(i.add(K),o.push({uri:{publisher:y.publisher,package_:y.package_,name:y.name},label:this.readLabelForUri(y)??y.name}))}if(o.length===0)return"";let c=e.map(k=>G(this.catalog,k).label),l=e.some((k,v)=>c[v]!==""&&c[v]!==k.name),d=!!a,f=(d?'<th class="kan-anchor-col"></th>':"")+(l?"<th></th>":"")+o.map(k=>`<th>${h(k.label)}</th>`).join(""),p=e.map((k,v)=>{let y=d&&k.name?`${a}.${k.name}`:"",K=y?` id="${h(y)}"`:"",E=d?`<td class="kan-anchor-col">${y?this.anchorLink(y):""}</td>`:"",U=l?`<th scope="row">${h(c[v]??"")}</th>`:"",C=o.map(T=>{let _=J(k,T.uri);return _?`<td>${this.tableCellValue(_,n,s)}</td>`:"<td></td>"}).join("");return`<tr${K}>${E}${U}${C}</tr>`}).join(""),m=d&&a?` id="${h(a)}"`:"",g=d&&a?this.anchorLink(a):"",b=t?`<caption>${h(t)}${g}</caption>`:"";return`<table class="kan-property-table"${m}>${b}<thead><tr>${f}</tr></thead><tbody>${p}</tbody></table>`}tableCellValue(e,n,t){if(t&&X(t,sa)){if(e instanceof ge)return this.barMarkup(String(e.object));if(e instanceof Z&&Number.isFinite(Number(e.object)))return this.barMarkup(e.object)}if(e instanceof De)return this.statementToMarkdownHtml(e,n);if(e instanceof Z)return ba(e.object);if(e instanceof ge||e instanceof fe)return h(String(e.object));if(e instanceof H&&e.object instanceof x)return this.detailReferenceLink(e.object,n);if(e instanceof ee)return this.renderEmbeddedTable([e.object],n);if(e instanceof B){let a=e.object??[],s=a.filter(o=>o instanceof D);return s.length>0&&s.length===a.length?this.renderEmbeddedTable(s,n):a.map(o=>o instanceof x?this.detailReferenceLink(o,n):o instanceof D?this.renderEmbeddedTable([o],n):h(String(o))).filter(o=>o).join(", ")}return""}statementToMarkdownHtml(e,n){let t=new Map,a;if(e instanceof De?a=this.resolveMarkdownLinks(e,n,t):e instanceof Z&&(a=e.object),!a)return"";let s=this.codeHighlighter(),o=pn(a,{highlight:(i,c)=>s.highlight(i,c)});for(let[i,c]of t){let l=new RegExp('(<a href="'+ha(i)+'">)([^<]*)(</a>)',"g");o=o.replace(l,`$1<img class="kan-md-chip" src="${h(c)}" alt="" loading="lazy">$2$3`)}return o}renderBadgeRow(e,n,t){let a=q(e,ke);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,ke,t)).join("")}</div>`}renderChipRow(e,n,t){let a=nt(e,To);if(a.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let s=[];for(let o of a){let i=J(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">${h(c)}</span> <span class="kan-chip-val">${l}</span></span>`)}return s.length===0?"":`<div class="kan-chip-row">${s.join("")}</div>`}async renderReferenceList(e,n,t){let a=nt(e,pa);if(a.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let s=this.readEmbeddedCarrier(e,ra),o=this.readEmbeddedCarrier(e,uo),i=[];for(let c of a){let l=this.readPropertyValueReferences(n,c);if(l.length===0)continue;let d=this.readLabelForUri(c)??c.name;if(s){let f=[];for(let m of l)f.push(await this.renderDetailRow(m,s,o,t));let p=f.filter(m=>m).join("");p&&i.push(`<dt>${h(d)}</dt><dd><ul class="kan-ref-rows">${p}</ul></dd>`)}else{let f=l.map(p=>this.renderReferenceLink(p,pa,t)).join(", ");i.push(`<dt>${h(d)}</dt><dd>${f}</dd>`)}}return i.length===0?"":`<dl class="kan-reference-list">${i.join("")}</dl>`}async renderDetailRow(e,n,t,a){let s=re(this.catalog,{publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name,...e.subject.version?{version:e.subject.version}:{}});if(!s)return"";let o=await this.evaluateCarrier(n,s)??G(this.catalog,s).label,i="";if(t){let f=await this.evaluateCarrier(t,s);f&&(i=`<span class="kan-ref-badge">${h(f)}</span>`)}let c=`<span class="kan-ref-text">${h(o)}</span>${i}`;if(!this.isLinkable(ue(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="${h(l)}"><img class="kan-ref-icon" src="${h(d)}" alt="" loading="lazy"/>`+c+"</a></li>"}readPropertyValueText(e,n){let t=J(e,n);if(t){if(t instanceof Z)return t.object;if(t instanceof ge||t instanceof fe)return String(t.object);if(t instanceof H){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 ee)return this.readEmbeddedText(t.object,0)||void 0;if(t instanceof B)return(t.object??[]).map(s=>s instanceof x?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>=da)return"\u2026";let t=[];for(let a of e.statement){let s=a.predicate?.subject;if(!(s&&X(s,Ne)))if(a instanceof Z)t.push(a.object);else if(a instanceof ge||a instanceof fe)t.push(String(a.object));else if(a instanceof H){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 ee&&t.push(this.readEmbeddedText(a.object,n+1))}return t.filter(a=>a).join(", ")}readPropertyValueReferences(e,n){let t=J(e,n);if(!t)return[];if(t instanceof H)return[t.object];if(t instanceof B){let a=[];for(let s of t.object??[])s instanceof x&&a.push(s);return a}return[]}gatherValueItems(e){return e?e instanceof B?e.object??[]:e instanceof H?[e.object]:e instanceof ee?[e.object]:e instanceof Z?[e.object]:e instanceof ge||e instanceof fe?[e.object]:[]:[]}renderInlineValue(e,n,t,a=0){return e instanceof x?this.renderReferenceLink(e,n,t):e instanceof D?this.renderEmbeddedInline(e,t,a):typeof e=="string"?h(e):typeof e=="number"||typeof e=="boolean"?h(String(e)):""}renderStatementInlineValue(e,n,t,a=0){return e instanceof Z?h(e.object):e instanceof ge||e instanceof fe?h(String(e.object)):e instanceof H?this.renderReferenceLink(e.object,n,t):e instanceof ee?this.renderEmbeddedInline(e.object,t,a):e instanceof B?(e.object??[]).map(o=>this.renderInlineValue(o,n,t,a)).filter(o=>o).join(", "):""}renderEmbeddedInline(e,n,t=0){if(t>=da)return"\u2026";let a=[];for(let s of e.statement){let o=s.predicate?.subject;if(!o||X(o,Ne))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>${h(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">${h(a)}</span>`;let s=this.urlForReference(e,n,t);return`<a class="kan-link" href="${h(s)}">${h(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="${h(s)}"`:"";if(!this.isLinkable(e.subject.publisher,t))return`<span class="kan-badge"${o}>${h(a)}</span>`;let i=this.urlForReference(e,n,t);return`<a class="kan-badge" href="${h(i)}"${o}>${h(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=re(this.catalog,e);if(!n)return"=";let t=ae(n,Po);return t==="*"||t==="^"||t==="~"||t==="="?t:"="}readLabelForUri(e){let n=re(this.catalog,e);if(n)return G(this.catalog,n).label}readCommentForUri(e){let n=re(this.catalog,e);if(n)return G(this.catalog,n).summary}};function Vo(r){let e=new Map;for(let n of r.statement){if(!(n instanceof ee)||!Re(n,Tn.publisher,Tn.package_,Tn.name))continue;let t=n.object;for(let a of t.statement){if(!(a instanceof Z))continue;let s=a.predicate?.subject?.name;if(!s)continue;let o=a.object;e.has(s)||e.set(s,o)}}return e}function Cn(r){for(let e of r.statement)if(e instanceof ee&&Re(e,Fn.publisher,Fn.package_,Fn.name))return e.object}function et(r){for(let e of r.statement){if(!(e instanceof B)||!Re(e,Zn.publisher,Zn.package_,Zn.name))continue;let n=[];for(let t of e.object??[])t instanceof D&&n.push(t);return n}return[]}function on(r){for(let e of r.statement)if(e instanceof H&&!(!e.predicate?.subject||!X(e.predicate.subject,Ne))&&e.object instanceof x){let n=e.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function q(r,e){for(let n of r.statement)if(n instanceof H&&Re(n,e.publisher,e.package_,e.name)&&n.object instanceof x){let t=n.object.subject;return{publisher:t.publisher,package_:t.package_,name:t.name}}}function nt(r,e){for(let n of r.statement){if(!(n instanceof B)||!Re(n,e.publisher,e.package_,e.name))continue;let t=[];for(let a of n.object??[])a instanceof x&&t.push({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name});return t}return[]}function J(r,e){for(let n of r.statement)if(Re(n,e.publisher,e.package_,e.name))return n}function ae(r,e){for(let n of r.statement)if(n instanceof Z&&Re(n,e.publisher,e.package_,e.name))return n.object}function On(r,e){for(let n of r.statement)if(n instanceof ee&&Re(n,e.publisher,e.package_,e.name))return n.object}function ma(r,e){for(let n of r.statement)if(n instanceof ge&&Re(n,e.publisher,e.package_,e.name))return n.object}function Mo(r,e){for(let n of r.statement)if(n instanceof fe&&Re(n,e.publisher,e.package_,e.name))return n.object===!0;return!1}function Ao(r){for(let e of ye(r))if(X(e.subject,Tr)||X(e.subject,Pr))return!0;return!1}function ye(r){let e=[];for(let n of r.statement)if(n instanceof H){if(!n.predicate?.subject||!X(n.predicate.subject,Ne))continue;n.object instanceof x&&e.push(n.object)}else if(n instanceof B){if(!n.predicate?.subject||!X(n.predicate.subject,Ne))continue;for(let t of n.object??[])t instanceof x&&e.push(t)}return e}function Un(r){let e=[];for(let n of r.statement)if(n instanceof H){if(!n.predicate?.subject||!X(n.predicate.subject,at))continue;n.object instanceof x&&e.push(n.object)}else if(n instanceof B){if(!n.predicate?.subject||!X(n.predicate.subject,at))continue;for(let t of n.object??[])t instanceof x&&e.push(t)}return e}function re(r,e){let n="version"in e?e.version:void 0;if(n){let t=`${e.publisher}/${e.package_}@${n.major}.${n.minor}.${n.patch}`;for(let a of r)if(a instanceof Y&&a.name===e.name&&a.namespace===t)return a}for(let t of r){if(!(t instanceof Y)||t.name!==e.name)continue;if((t.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return t}}function Re(r,e,n,t){let a=r.predicate?.subject;return a?a.publisher===e&&a.package_===n&&a.name===t:!1}function X(r,e){return r.publisher===e.publisher&&r.package_===e.package_&&r.name===e.name}function te(r){return`${r.publisher}/${r.package_}/${r.name}`}function No(r){let e=s=>s.replace(/\*\//g,"* /"),n=[];n.push(` * kanonak stylesheet \u2014 ${e(r.resource.namespace)}/${e(r.resource.name)}`),n.push(" *");let t=new Map;for(let s of r.tokens.values()){let o=`${s.sourceNamespace} ${s.sourceName}`,i=t.get(o)??{count:0,level:s.level};i.count+=1,t.set(o,i)}if(t.size===0)n.push(" * :root tokens: NONE resolved");else{n.push(` * :root tokens (${r.tokens.size}):`);for(let[s,{count:o,level:i}]of t)n.push(` * ${o} from ${e(s)} (${i})`)}let a=r.baseStylesheet;if(a.css!==void 0)n.push(` * base CSS: ${e(a.sourceNamespace??"")}/base-stylesheet (${a.css.length} bytes, ${a.scope})`);else{n.push(" *"),n.push(" * !! WARNING: NO BASE STYLESHEET \u2014 this file contains only :root tokens."),n.push(" * !! Pages will appear UNSTYLED.");for(let s of r.warnings)n.push(` * !! ${e(s)}`);n.push(" * !! Full diagnostics: /.well-known/kanonak-render")}if(r.look){let s=r.look.sourceClass;n.push(` * look: ${e(s.publisher)}/${e(s.package_)}/${e(s.name)}`)}return`/*
153
153
  ${n.join(`
154
154
  `)}
155
- */`}function ue(r){let e=r.namespace||"",n=e.indexOf("/");return n>=0?e.substring(0,n):e}function g(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Oe(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function ma(r,e){return e==null?"":Je(e)?e.value:r==="string-literal"?typeof e=="string"?e:String(e):Array.isArray(e)?e.map(n=>Je(n)?n.value:Oe(typeof n=="string"?n:String(n))).join(""):Oe(typeof e=="string"?e:String(e))}function ba(r){if(r==null)return"";if(typeof r=="string")return r;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Je(r))return r.value;if(Array.isArray(r))return r.map(ba).filter(n=>n!=="").join(", ");if(r instanceof x)return r.subject.name;if(r instanceof Y||r instanceof D)return r.name??"";let e=r.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function tt(r,e){return r.length<=e?r:r.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function ga(r){return r.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function ka(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ha(r){let e=Pn(r);return g(e||r)}function Pn(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 In(r){if(!r)return"";let e=/^(\d{4})-(\d{2})-(\d{2})/.exec(r);return e?`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][parseInt(e[2],10)-1]??e[2]} ${parseInt(e[3],10)}`:r}function Ao(){return new Set(Vn.bandDispatchUris().map(r=>`${r.publisher}/${r.package_}/${r.name}`))}export{Q as a,Go as b,Pe as c,G as d,Ot as e,Ut as f,It as g,Bn as h,fn as i,Pt as j,ji as k,pn as l,Je as m,Ce as n,mn as o,En as p,Ae as q,Vn as r,Ao as s};
155
+ */`}function ue(r){let e=r.namespace||"",n=e.indexOf("/");return n>=0?e.substring(0,n):e}function h(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Oe(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function ga(r,e){return e==null?"":Je(e)?e.value:r==="string-literal"?typeof e=="string"?e:String(e):Array.isArray(e)?e.map(n=>Je(n)?n.value:Oe(typeof n=="string"?n:String(n))).join(""):Oe(typeof e=="string"?e:String(e))}function ya(r){if(r==null)return"";if(typeof r=="string")return r;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Je(r))return r.value;if(Array.isArray(r))return r.map(ya).filter(n=>n!=="").join(", ");if(r instanceof x)return r.subject.name;if(r instanceof Y||r instanceof D)return r.name??"";let e=r.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function tt(r,e){return r.length<=e?r:r.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function ka(r){return r.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function ha(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ba(r){let e=Pn(r);return h(e||r)}function Pn(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 In(r){if(!r)return"";let e=/^(\d{4})-(\d{2})-(\d{2})/.exec(r);return e?`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][parseInt(e[2],10)-1]??e[2]} ${parseInt(e[3],10)}`:r}function Do(){return new Set(Vn.bandDispatchUris().map(r=>`${r.publisher}/${r.package_}/${r.name}`))}export{Q as a,Wo as b,Pe as c,G as d,Ot as e,Ut as f,It as g,Bn as h,fn as i,Vt as j,Ri as k,pn as l,Je as m,Ce as n,mn as o,En as p,Ae as q,Vn as r,Do as s};