@kanonak-protocol/sdk 5.28.0 → 5.29.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.
Files changed (36) hide show
  1. package/dist/browser.js +1 -1
  2. package/dist/chunk-3DWEBQSD.js +68 -0
  3. package/dist/{chunk-GJAYU443.js → chunk-4SMQ7G23.js} +1 -1
  4. package/dist/chunk-ANJAHB4N.js +155 -0
  5. package/dist/{chunk-N3XODYH5.js → chunk-CJMVIOZX.js} +1 -1
  6. package/dist/{chunk-SUXSCSHO.js → chunk-F3SGXIDP.js} +1 -1
  7. package/dist/chunk-G3GKOJ5E.js +1 -0
  8. package/dist/{chunk-S2VGNHHF.js → chunk-GMK4YL3X.js} +1 -1
  9. package/dist/{chunk-RJK6Y4HS.js → chunk-HBG6SC5L.js} +1 -1
  10. package/dist/chunk-ZRCJGTEV.js +2 -0
  11. package/dist/index.d.ts +3 -1
  12. package/dist/index.js +1 -1
  13. package/dist/introspection/OntologyModel.d.ts +11 -0
  14. package/dist/introspection/index.d.ts +1 -1
  15. package/dist/look/LookRenderer.d.ts +37 -0
  16. package/dist/look/index.d.ts +1 -0
  17. package/dist/look/sequenceWalk.d.ts +94 -0
  18. package/dist/parsing/index.js +1 -1
  19. package/dist/reasoning/index.js +1 -1
  20. package/dist/resolution/TypeResolver.d.ts +11 -0
  21. package/dist/resolution/index.js +1 -1
  22. package/dist/search/index.js +1 -1
  23. package/dist/server/index.js +1 -1
  24. package/dist/transformations/index.js +1 -1
  25. package/dist/uri-helpers/UriHelpers.d.ts +12 -0
  26. package/dist/uri-helpers/index.d.ts +1 -1
  27. package/dist/uri-helpers/index.js +1 -1
  28. package/dist/validation/index.d.ts +1 -1
  29. package/dist/validation/index.js +1 -1
  30. package/dist/validation/rules/repository/SequenceNarrativeRule.d.ts +44 -0
  31. package/dist/validation/rules/repository/index.d.ts +1 -0
  32. package/package.json +2 -2
  33. package/dist/chunk-BA4HAURJ.js +0 -1
  34. package/dist/chunk-KDMBMX3J.js +0 -2
  35. package/dist/chunk-SR6I5ZSI.js +0 -68
  36. package/dist/chunk-TW7NJDMW.js +0 -152
@@ -0,0 +1,155 @@
1
+ import{a as ot}from"./chunk-6VIUXP4N.js";import{a as N,b as ln,c as Te,h as d,m as $n}from"./chunk-F3SGXIDP.js";import{a as it}from"./chunk-KOWDHKBN.js";import{a as gt}from"./chunk-PEJALHXK.js";import{fa as en,ga as _e,ha as nn,ia as vn,ma as mt}from"./chunk-G3GKOJ5E.js";import{A as ft,B as Pe,C as pt,b as Ce,c as Y,d as L,g as Q,h as ge,i as de,j as H,k as J,l as D,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 xe,z as je}from"./chunk-CJMVIOZX.js";import{a as yn}from"./chunk-FUUTGGJS.js";import{c as hn,d as rt,e as bn,g as st}from"./chunk-QILEJIFU.js";var Z=class extends Error{constructor(n,t){super(`${n} (at ${t})`);this.path=t}path};function fi(r,e){let n=r.name,t=La(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 Z("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:jt(r,`${e}.formatOverrides`,n),fragments:t}}function va(r,e,n,t){let a=Me(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:jt(r,`${e}.formatOverrides`,n),partitionBy:a,fragments:t}}function St(r,e){let n=un(r,d.inputPattern);if(!n)throw new Z("inputPattern is required",e);return $a(n,`${e}.inputPattern`)}function $a(r,e){let n=Me(r,d.matchesClass);if(!n)throw new Z("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 D)for(let i of o.object)i instanceof L&&t.push(Dn(i.subject));let a=[],s=0;for(let o of we(r,d.sortBy))if(o instanceof D)for(let i of o.object)i instanceof N&&a.push(kt(i,`${e}.sortBy[${s++}]`));else o instanceof J&&a.push(kt(o.object,`${e}.sortBy[${s++}]`));return{matchesClass:n,requires:t,sortBy:a}}function kt(r,e){let n=Me(r,d.byProperty);if(!n)throw new Z("SortKey.byProperty is required",e);let t=Me(r,d.order);if(!t)throw new Z("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 Z(`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=un(r,e);if(!a)throw new Z("expression is required",n);return Ve(a,n,t)}function Ve(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:ja(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:_a(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 Z(`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 Z("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 Z("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=un(r,e);if(!a)throw new Z("child expression is required",n);return Ve(a,n,t)}function Sa(r,e,n,t){let a=un(r,e);if(a)return Ve(a,n,t)}function Mn(r,e,n,t){let a=[],s=0;for(let o of we(r,e))if(o instanceof D)for(let i of o.object)i instanceof N&&a.push(Ve(i,`${n}[${s++}]`,t));else o instanceof J&&a.push(Ve(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 D)for(let o of s.object)o instanceof N&&t.push(ht(o,`${e}[${a++}]`,n));else s instanceof J&&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 ja(r,e){let n=Me(r,d.normKind);if(!n)throw new Z("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 Z(`Unknown NormalizeKind: ${n.publisher}/${n.package_}/${n.name}`,e)}function _a(r,e){let n=Me(r,d.renderFormat);if(!n)throw new Z("renderFormat is required",e);if(ie(n,d.RENDER_HTML))return"html";if(ie(n,d.RENDER_MARKDOWN))return"markdown";throw new Z(`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 Z("numberStyle is required",e);if(!bt.has(n))throw new Z(`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 Z("dateFormat is required",e);if(!yt.has(n))throw new Z(`Unknown dateFormat "${n}"; supported: ${[...yt].join(", ")}`,e);return n}function Ea(r,e,n){let t=Me(r,d.fragmentRef);if(!t)throw new Z("fragmentRef is required",e);if(!Ca(n.catalog,t))throw new Z(`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 La(r){let e=new Map,n=[];for(let t of r){if(!(t instanceof Y)||!w(t,d.ExpressionFragment))continue;let a=un(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=Ve(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 D)for(let a of t.object)a instanceof L&&n.add(a.subject.name);if(n.size===0)throw new Z("outputs is required (at least one OutputFormat)",e);return n}function jt(r,e,n){let t=new Map,a=0;for(let s of we(r,d.formatOverrides))if(s instanceof D){for(let o of s.object)if(o instanceof N){let[i,c]=vt(o,`${e}[${a++}]`);t.set(i,c)}}else if(s instanceof J){let[o,i]=vt(s.object,`${e}[${a++}]`);t.set(o,i)}return t}function vt(r,e){let n=Me(r,d.formatTarget);if(!n)throw new Z("formatTarget is required",e);let t=[];for(let i of we(r,d.metadataKeys))if(i instanceof Q)t.push(i.object);else if(i instanceof D)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 D){for(let c of i.object)if(c instanceof N){let l=qe(c,d.fromKey),u=qe(c,d.toKey);l&&u&&a.set(l,u)}}else if(i instanceof J){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 un(r,e){for(let n of we(r,e))if(n instanceof J)return n.object}function Me(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 Q)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 de)return n.object}function $e(r,e,n){let t=qe(r,e);if(t===void 0)throw new Z(`${e.name} (string) is required`,n);return t}function $t(r,e,n){let t=An(r,e);if(t===void 0)throw new Z(`${e.name} (number) is required`,n);return t}function Ua(r,e,n){let t=Nn(r,e);if(t===void 0)throw new Z(`${e.name} (boolean) is required`,n);return t}function He(r,e,n,t){let a=Me(r,e);if(!a)throw new Z(`${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",xt="look",dn="core-rdf",Ia={publisher:Ye,package_:xt,name:"displayLabel"},Ta={publisher:Ye,package_:xt,name:"displaySummary"},Fa={publisher:Ye,package_:dn,name:"subClassOf"},Pa={publisher:Ye,package_:dn,name:"label"},Va={publisher:Ye,package_:dn,name:"comment"},_t=new yn(Ye,dn,"Resource"),Ma=8;function G(r,e){return Lt(r,e,new Set)}function Lt(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 Q)return a.object;if(a instanceof ge||a instanceof de)return String(a.object);if(a instanceof H)return Rt(r,a.object.subject,t);if(a instanceof D){let o=[];for(let i of a.object??[])if(i instanceof L){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),Lt(r,a,s).label}function Et(r,e,n){let t=je(e,n);if(t)return t;let a=new Set,s=Fe(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=je(l,n);if(u)return u}for(let l of c)s.push(...Fe(l,Fa))}if(!a.has(ne(_t)))for(let o of le(r,_t)){let i=je(o,n);if(i)return i}}var Aa={publisher:Ye,package_:dn,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 je(r,Da)}function It(r,e){let n=ft(e,Ct),t=n?[n]:Pe(e,Ct),a=[];for(let s of t){if(!(s instanceof N))continue;let o=je(s,Ba);if(!o)continue;let i=xe(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 Pe(e,qa)){if(!(t instanceof L))continue;let a=le(r,t.subject)[0];a&&n.push(a)}return n}function fn(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&&fn(r,e.subject,Ga);return e.declaredStyle?{style:e.declaredStyle,undirected:t}:e.subject&&Fe(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 Te))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,$=_e(b),y=_e(f),K=[],E=[];for(let C of k){let{style:F,undirected:j}=Ft(r,C,a);$&&Fe(f,C.relation).some(W=>ne(W)===ne($))?K.push({from:f,to:b,relation:C.relation,style:F,undirected:j}):y&&Fe(b,C.relation).some(W=>ne(W)===ne(y))&&E.push({from:b,to:f,relation:C.relation,style:F,undirected:j})}let U=K.length>0?K:E;l.push(...U),U.length===0&&Ae(f)!==Ae(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(Ae(m),m);for(let m of l)h.has(Ae(m.from))||h.set(Ae(m.from),m.from),h.has(Ae(m.to))||h.set(Ae(m.to),m.to);return{messages:l,gaps:u,lifelines:[...h.values()],mentions:c,strayPropertyRefs:i,sourceAbsent:!1}}function Ae(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=xe(r,ar);if(c!==void 0){let f=xe(r,rr);e.pattern=f!==void 0?{regex:c,flags:f}:{regex:c}}let l=Pe(r,tr).filter(f=>f instanceof ln).map(f=>f.value);l.length>0&&(e.enumValues=l);let u=xe(r,lr);return u!==void 0&&(e.message=u),e}function dr(r,e){let n=[];for(let t of Pe(e,Ja))if(t instanceof N)n.push(t);else if(t instanceof L){let a=Be(r,t.subject);a&&n.push(a)}return n}function pn(r){let e=new Map;for(let n of r){if(!(n instanceof Y)||!w(n,Xa))continue;let t=je(n,Qa);if(!t)continue;let a=ne(t);for(let s of dr(r,n)){let o=je(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",_n="core-rdf",Mt="core-xsd",Vt={publisher:Qe,package_:_n,name:"subClassOf"},At={publisher:Qe,package_:_n,name:"label"},Nt={publisher:Qe,package_:_n,name:"comment"},Dt={publisher:Qe,package_:"core-owl",name:"oneOf"},Bt=r=>r;function pr(r){let e=je(r,Vt);if(e)return[e];let n=[];for(let t of Pe(r,Vt))t instanceof L&&n.push(t.subject);return n}function mr(r,e,n){if(e.publisher===Qe&&e.package_===_n&&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:_e(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 jn=r=>new yn(Qe,Mt,r);function kr(r){return typeof r=="boolean"?jn("boolean"):typeof r=="number"?Number.isInteger(r)?jn("integer"):jn("decimal"):jn("string")}function hr(r,e){let n=[];for(let t of Pe(e,Dt))if(t instanceof L){let a=Be(r,t.subject),s=(a?_e(a):void 0)??t.subject,o=a?xe(a,At):void 0,i=a?xe(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 ln&&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 qi(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=pn(s),i=[],c=[],l=new Set;for(let u of s){if(!(u instanceof Y)||!en.isClassType(Bt(u)))continue;let f=_e(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=xe(u,At),b=xe(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 mn(r,e={}){let n=r.replace(/\r\n/g,`
2
+ `).split(`
3
+ `),t=[],a=0;for(;a<n.length;){let s=n[a];if(s.trim()===""){a++;continue}let o=/^(\s*)```(\S*)\s*$/.exec(s);if(o){let l=o[2],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>
5
+ ${l.join(`
6
+ `)}
7
+ </ul>`);continue}if(/^\s*\d+\.\s+/.test(s)){let l=[];for(;a<n.length&&/^\s*\d+\.\s+/.test(n[a]);){let 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>
8
+ ${l.join(`
9
+ `)}
10
+ </ol>`);continue}let c=[s];for(a++;a<n.length&&n[a].trim()!==""&&!/^(#{1,6})\s+/.test(n[a])&&!/^(\s*)```/.test(n[a])&&!/^\s*[-*]\s+/.test(n[a])&&!/^\s*\d+\.\s+/.test(n[a])&&!(n[a].includes("|")&&a+1<n.length&&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(`
12
+ `);return`<table>
13
+ <thead><tr>${a}</tr></thead>
14
+ <tbody>
15
+ ${s}
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 Oe=class extends Error{},gn=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 Oe(`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 Ce))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 L?t.subject.name:t instanceof Y?t.name:t instanceof N?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 L){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 L?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 Ce))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 Te)){let o=Rn(t,e.readProp);return o==null?void 0:Ge(o)}let s=await this.renderMarkdownLinks(a);return e.format==="html"?mn(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;jr.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 Oe(`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 Oe("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 Oe("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 Oe("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 Ce?t.statement:[]}case"statement-predicate":{let t=await this.evaluate(e.source,n);if(Gn(t)){let a=t.predicate;if(a instanceof L)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 Oe("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 L||t instanceof Y}case"is-embedded":return await this.evaluate(e.check,n)instanceof N;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 Q||a instanceof ge||a instanceof de||a instanceof H||a instanceof J||a instanceof D?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 Ce)||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 Oe("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 Ce)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 Q||n instanceof ge||n instanceof de||n instanceof H||n instanceof J||n instanceof D))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 D)for(let s of t.object)s instanceof L&&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 Ce)return r.name??"";if(r instanceof L)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 Ce)&&!(r instanceof L)&&!(r instanceof N)&&"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 Oe(`${e} requires numeric elements; got ${_r(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 L){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 jr=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 _r(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 xr(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 Lr(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=xr(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}${Lr(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 L){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 Q||r instanceof ge||r instanceof de||r instanceof H||r instanceof J||r instanceof D}function Or(r){return r instanceof Q||r instanceof ge||r instanceof de?String(r.object??""):r instanceof H?r.object?.subject?.name??"":r instanceof J?"[embedded]":r instanceof D?(r.object??[]).map(n=>{if(n instanceof L)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 L){let e=r.subject;return`r:${e.publisher}/${e.package_}/${e.name}`}if(r instanceof Ce){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 xn=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
+ `).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"},Le={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"},js=`(function(){
20
+ if(window.__kanDiagramZoom)return;window.__kanDiagramZoom=1;
21
+ var TIERS=['chip','icon','card','full'];
22
+ var css='.kan-dgm-tier[hidden]{display:none}.kan-dgm-tiers{position:relative}'
23
+ +'.kan-dgm-tiers>.kan-dgm-btn{opacity:0;transition:opacity .12s}.kan-dgm-tiers:hover>.kan-dgm-btn,.kan-dgm-btn:focus{opacity:1}'
24
+ +'#kan-dgm-modal{position:fixed;inset:0;z-index:9999;display:none;background:rgba(0,0,0,.85);cursor:grab}'
25
+ +'#kan-dgm-stage{position:absolute;top:50%;left:50%}'
26
+ +'#kan-dgm-bar{position:fixed;top:14px;left:50%;transform:translateX(-50%);display:flex;gap:9px;align-items:center;font:12px sans-serif;color:#cbd5e1;background:rgba(12,18,32,.92);border:1px solid #1e293b;border-radius:999px;padding:7px 14px;user-select:none}'
27
+ +'#kan-dgm-bar .pip{width:9px;height:9px;border-radius:50%;background:#334155;cursor:pointer}'
28
+ +'#kan-dgm-bar .pip.on{background:#38bdf8}'
29
+ +'#kan-dgm-lbl{min-width:32px;text-transform:capitalize}';
30
+ var sty=document.createElement('style');sty.textContent=css;(document.head||document.documentElement).appendChild(sty);
31
+ var S={cont:null,mode:'snap',tier:1,z:1,x:0,y:0,drag:0,sx:0,sy:0,lock:0};
32
+ function el(id){return document.getElementById(id);}
33
+ function modal(){var m=el('kan-dgm-modal');if(m)return m;
34
+ m=document.createElement('div');m.id='kan-dgm-modal';
35
+ var st=document.createElement('div');st.id='kan-dgm-stage';m.appendChild(st);
36
+ var bar=document.createElement('div');bar.id='kan-dgm-bar';
37
+ var lbl=document.createElement('span');lbl.id='kan-dgm-lbl';bar.appendChild(lbl);
38
+ for(var i=0;i<4;i++){(function(i){var p=document.createElement('span');p.className='pip';p.title=TIERS[i];p.addEventListener('click',function(e){e.stopPropagation();setTier(i);});bar.appendChild(p);})(i);}
39
+ var h=document.createElement('span');h.textContent='scroll: zoom \\u00b7 drag: pan \\u00b7 esc';h.style.cssText='margin-left:6px;color:#64748b';bar.appendChild(h);
40
+ m.appendChild(bar);m.addEventListener('click',function(e){if(e.target===m)close();});document.body.appendChild(m);return m;}
41
+ function apply(){var st=el('kan-dgm-stage');if(st)st.style.transform='translate(calc(-50% + '+S.x+'px),calc(-50% + '+S.y+'px)) scale('+S.z+')';}
42
+ function updBar(){var b=el('kan-dgm-bar');if(!b)return;var geo=S.mode==='geo';var ps=b.querySelectorAll('.pip');for(var i=0;i<ps.length;i++){ps[i].style.display=geo?'none':'';ps[i].className='pip'+(i===S.tier?' on':'');}el('kan-dgm-lbl').textContent=geo?'zoom':TIERS[S.tier];}
43
+ function sizeVisible(){var c=S.cont;if(!c||S.mode==='geo')return;var svg=c.querySelector('.kan-dgm-tier:not([hidden]) svg');if(svg){var vb=(svg.getAttribute('viewBox')||'0 0 800 600').split(' ');var w=parseFloat(vb[2])||800;svg.style.width=Math.min(w,window.innerWidth*0.92)+'px';svg.style.height='auto';svg.style.display='block';}apply();}
44
+ function setTier(i){i=Math.max(0,Math.min(3,i));S.tier=i;var c=S.cont;if(!c)return;var ts=c.querySelectorAll('.kan-dgm-tier');for(var j=0;j<ts.length;j++){if(ts[j].getAttribute('data-tier')===TIERS[i])ts[j].removeAttribute('hidden');else ts[j].setAttribute('hidden','');}sizeVisible();updBar();}
45
+ function uniq(root){var seq=(window.__kanMk=(window.__kanMk||0)+1);var map={};var mk=root.querySelectorAll('marker[id]');for(var i=0;i<mk.length;i++){var o=mk[i].getAttribute('id');var n=o+'_z'+seq;map[o]=n;mk[i].setAttribute('id',n);}var all=root.querySelectorAll('[marker-end],[marker-start],[marker-mid]');for(var j=0;j<all.length;j++){(function(e){['marker-end','marker-start','marker-mid'].forEach(function(a){var v=e.getAttribute(a);if(!v)return;var mm=v.match(/url\\(#(.+?)\\)/);if(mm&&map[mm[1]])e.setAttribute(a,'url(#'+map[mm[1]]+')');});})(all[j]);}}
46
+ function open(tiersEl){modal();var st=el('kan-dgm-stage');var c=tiersEl.cloneNode(true);uniq(c);var bb=c.querySelector('.kan-dgm-btn');if(bb&&bb.parentNode)bb.parentNode.removeChild(bb);st.innerHTML='';st.appendChild(c);S.cont=c;S.x=0;S.y=0;S.z=1;
47
+ S.mode=c.getAttribute('data-geo')?'geo':'snap';
48
+ var vis=c.querySelector('.kan-dgm-tier:not([hidden])');var t=vis?vis.getAttribute('data-tier'):'icon';S.tier=Math.max(0,TIERS.indexOf(t));
49
+ el('kan-dgm-modal').style.display='block';
50
+ if(S.mode==='geo'){var bw=c.getBoundingClientRect().width||600;S.z=Math.min(1.8,(window.innerWidth*0.9)/bw);if(!(S.z>0))S.z=1;}else sizeVisible();
51
+ apply();updBar();}
52
+ function close(){var m=el('kan-dgm-modal');if(m){m.style.display='none';el('kan-dgm-stage').innerHTML='';S.cont=null;}}
53
+ document.addEventListener('wheel',function(e){var m=el('kan-dgm-modal');if(!m||m.style.display==='none')return;e.preventDefault();
54
+ if(S.mode==='geo'){S.z*=e.deltaY<0?1.15:1/1.15;S.z=Math.max(.2,Math.min(S.z,9));apply();return;}
55
+ var n=Date.now();if(n-S.lock<200)return;S.lock=n;setTier(S.tier+(e.deltaY<0?1:-1));},{passive:false});
56
+ document.addEventListener('mousedown',function(e){var m=el('kan-dgm-modal');if(!m||m.style.display==='none')return;S.drag=1;S.sx=e.clientX-S.x;S.sy=e.clientY-S.y;m.style.cursor='grabbing';});
57
+ document.addEventListener('mousemove',function(e){if(!S.drag)return;S.x=e.clientX-S.sx;S.y=e.clientY-S.sy;apply();});
58
+ document.addEventListener('mouseup',function(){S.drag=0;var m=el('kan-dgm-modal');if(m)m.style.cursor='grab';});
59
+ document.addEventListener('keydown',function(e){if(e.key==='Escape')close();});
60
+ function enhance(){var cs=document.querySelectorAll('.kan-dgm-tiers');for(var i=0;i<cs.length;i++){(function(c){if(c.__kz)return;c.__kz=1;
61
+ var b=document.createElement('button');b.type='button';b.className='kan-dgm-btn';b.textContent='\\u2922';b.setAttribute('aria-label','Open and zoom');
62
+ b.style.cssText='position:absolute;top:6px;right:6px;z-index:3;border:1px solid var(--kan-border,#333);background:var(--kan-bg-card,#111);color:var(--kan-text,#ccc);border-radius:6px;width:28px;height:28px;cursor:pointer;font-size:15px;line-height:1;padding:0';
63
+ b.addEventListener('click',function(ev){ev.preventDefault();ev.stopPropagation();open(c);});c.appendChild(b);})(cs[i]);}}
64
+ if(document.readyState!=='loading')enhance();else document.addEventListener('DOMContentLoaded',enhance);
65
+ })();`,Ne={chip:56,icon:120,card:240,full:420},_s=["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"},xs=4,Ls={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"},Ln={publisher:"kanonak.org",package_:"look",name:"orderBy"},oa={publisher:"kanonak.org",package_:"look",name:"track"},kn={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"},jo={publisher:"kanonak.org",package_:"look",name:"tierFull"},De={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"},_o={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"},xo={publisher:"kanonak.org",package_:"look",name:"size"},Lo={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(Le)))for(let a of le(this.catalog,Le)){let s=Cn(a);if(s)return{declaration:s,sourceClass:{...Le}}}}matchingVariants(e){let n=this.findCascadedLook(e);if(!n)return[];let t=this.gatherValueItems(ee(n.declaration,uo)).filter(i=>i instanceof N);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=ee(e,l);this.gatherValueItems(p).filter(m=>m instanceof L).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(Le)?"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(Le))){let i=le(this.catalog,Le);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="${Ue(p)}">
66
+ <style>
67
+ .tier-chip,.tier-icon,.tier-card{display:none}
68
+ .tier-full{display:block}
69
+ @media (max-width:400px){.tier-full{display:none}.tier-card{display:block}}
70
+ @media (max-width:160px){.tier-card{display:none}.tier-icon{display:block}}
71
+ @media (max-width:60px){.tier-icon{display:none}.tier-chip{display:block}}
72
+ </style>
73
+ <g class="tier-chip">${i}</g>
74
+ <g class="tier-icon">${c}</g>
75
+ <g class="tier-card">${l}</g>
76
+ <g class="tier-full">${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=Ve(e,"semanticSvg-tier",{catalog:this.catalog,depth:0})}catch(o){return this.noteExpressionFailure("look.semanticSvg tier",o)}let a=new gn(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=Ve(e,"look-carrier",{catalog:this.catalog,depth:0})}catch(c){this.noteExpressionFailure("look band path carrier",c);return}let a=new gn(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=ee(e,n);return t instanceof J&&t.object instanceof N?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=ee(c,la);if(!(l instanceof J))return;let u=l.object,f=On(u,$o),p=On(u,So),h=On(u,wo),m=On(u,jo);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(Le)))for(let c of le(this.catalog,Le))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
+ ${t.join(`
79
+ `)}
80
+ }`:":root { /* no tokens resolved */ }",s=n.baseStylesheet.css??"";return`${Mo(n)}
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||hn(h,o)>0)&&(s=f,o=h)}else if(p.startsWith("kanonak.org/look-styles@")){a.push(p);let h=t(f);h&&(!c||hn(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 Q)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"),Q.parse("kanonak.org/core-rdf/label",e)],n}hasDeclaredView(e){let n=this.findCascadedLook(e);return n?!(a=>a.publisher===Le.publisher&&a.package_===Le.package_&&a.name===Le.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(`
84
+ `),c=`<header class="kan-hero">
85
+ <span class="kan-hero-eyebrow">PACKAGE</span>
86
+ <h1 class="kan-hero-title">${g(e)}</h1>
87
+ </header>
88
+ <section class="kan-resource-grid">
89
+ ${i}
90
+ </section>`;return`<!doctype html>
91
+ <html lang="en">
92
+ <head>
93
+ <meta charset="utf-8">
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">
97
+ </head>
98
+ <body>
99
+ ${s}
100
+ ${o}
101
+ <main class="kan-main">
102
+ ${c}
103
+ </main>
104
+ </body>
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>
108
+ <html lang="en">
109
+ <head>
110
+ <meta charset="utf-8">
111
+ <meta name="viewport" content="width=device-width, initial-scale=1">
112
+ <title>${g(a)}</title>
113
+ <link rel="stylesheet" href="${g(s)}">
114
+ </head>
115
+ <body>
116
+ ${c}
117
+ ${u}
118
+ <main class="kan-main">
119
+ ${o}${t}
120
+ </main>
121
+ ${l}
122
+ </body>
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 D&&Re(i,"kanonak.org","derivation","derivations")){for(let c of i.object??[])if(c instanceof N)for(let l of c.statement){if(!(l instanceof H)||!Re(l,"kanonak.org","derivation","format")||!(l.object instanceof L))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)],[Ls,(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=_e(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,kn),s=q(e,oa);if(!s||!a)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let o=q(e,Ln),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,xo);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(ee(e,es)).filter(m=>m instanceof N);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=ee(m,cs),E=K instanceof J&&K.object instanceof N?K.object:void 0,U=ae(m,na),C=U&&Ne[U]!==void 0?Ne[U]:void 0,F=C??this.classTierSize($),j=Ks[F??Ne.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 x=q(m,us),_=this.facetEdgeLabel(m,x??b),B=this.readEmbeddedCarrier(m,$s);i.push(await this.embedTiers(j,R=>x?this.renderDiagramDag($,x,y,t,R,_,B):this.renderDiagramConnector(n,$,y,t,R,_,B)));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(j,x=>this.renderDiagramCluster($,y,void 0,t,x)))}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>${js}</script>`),`<section class="kan-diagram">${f}${i.join("")}${p}${h}</section>`}async embedTiers(e,n){let t=[];for(let a of _s){let s=await n(Ne[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<xs&&!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?Ne[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(ee(e,ss)).filter(s=>s instanceof N),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=[],j=[];for(let P=0;P<n.length;P++){let V=n[P],x=f+P*(c+l),_=y+c,B=K+c/2,R=E-pe,I=x+c/2,T=(_+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${_.toFixed(1)},${B.toFixed(1)} C${T.toFixed(1)},${B.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((_+E)/2,(B+I)/2-5,O)),j.push(this.diagramTile(V,E,x,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}${j.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 j=F?84:0,W=C*c+(C-1)*u,P=f*2+(E+1)*c+E*l,V=f*2+j+W,x=new Map;U.forEach((v,M)=>{let z=v.length*c+(v.length-1)*u,O=f+j+(W-z)/2;v.forEach((A,me)=>x.set(A.name,{x:f+M*(c+l),y:O+me*(c+u)}))});let _=t.find(v=>v.to==="thickness"),B=`kan-arrow-${this.diagramArrowSeq++}`,R=[],I=[];for(let[v,M]of m){let z=x.get(v);for(let O of M){let A=x.get(O),me=A.x>=z.x,ce=_?1.5+_.norm[p.get(v)]*4.5:2,se,fe,oe;if(me){let he=z.x+c,ze=z.y+c/2,Ie=A.x-pe,cn=A.y+c/2,Ze=(he+Ie)/2;se=`M${he.toFixed(1)},${ze.toFixed(1)} C${Ze.toFixed(1)},${ze.toFixed(1)} ${Ze.toFixed(1)},${cn.toFixed(1)} ${Ie.toFixed(1)},${cn.toFixed(1)}`,fe=(he+Ie)/2,oe=(ze+cn)/2-5}else{let he=z.x+c/2,ze=z.y,Ie=A.x+c/2,cn=A.y-pe,Ze=f+j*.2;se=`M${he.toFixed(1)},${ze.toFixed(1)} C${he.toFixed(1)},${Ze.toFixed(1)} ${Ie.toFixed(1)},${Ze.toFixed(1)} ${Ie.toFixed(1)},${cn.toFixed(1)}`,fe=(he+Ie)/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(#${B})"/>`);let ve=await this.edgeText(o,e[p.get(v)],i);ve&&I.push(this.edgeLabelEl(fe,oe,ve))}}let T=e.map(v=>{let M=x.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(B,"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 j of a.strayPropertyRefs)s.push(`<!-- LookRenderer.Sequence: prose references property ${j.publisher}/${j.package_}/${j.name}, which is not a declared connector; ignored -->`);for(let j of a.gaps)s.push(`<!-- LookRenderer.Sequence: prose orders ${j.prev.name} then ${j.next.name}, but no declared connector holds between them in the graph \u2014 no message drawn. -->`);let{messages:o,lifelines:i}=a,c=Ae;if(i.length===0)return`${s.join(`
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&&Ne[l]===void 0&&s.push(`<!-- LookRenderer.Sequence: look.nodeTier '${g(l)}' is not a tier (${Object.keys(Ne).join(", ")}); using the class/default size -->`);let u=(l!==void 0?Ne[l]:void 0)??this.classTierSize(i)??Ne.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((j,W)=>b.set(c(j),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 j of i){let W=b.get(c(j));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(j,W-u/2,h,u,t))}return o.forEach((j,W)=>{let P=$+W*p,V=b.get(c(j.from)),x=b.get(c(j.to)),_=this.subjectFor(j.relation),B=(m?`${W+1}. `:"")+(_?G(this.catalog,_).label:j.relation.name),R=j.style==="dotted"?' stroke-dasharray="4 4"':"",I=j.style==="thick"?3:1.5,T=j.undirected?"":` marker-end="url(#${j.style==="open"?U:E})"`,v=`kan-seq-message kan-seq-message-${j.style}${j.undirected?" kan-seq-message-undirected":""}`;if(V===x){let A=p*.55,me=V+(j.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(B)}</text>`);return}let M=x>V?1:-1,z=j.undirected?x:x-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+x)/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(B)}</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=_e(e);if(!t)return{classes:[],reason:"the page class has no canonical URI"};let a=pn(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=pn(this.catalog),i=x=>`${x.namespace}/${x.name}`,c=new Map;for(let x of a){let _=_e(x);_&&c.set(ne(_),x)}let l=a.map(x=>{let _=_e(x),B=_?Kn(this.catalog,_,!1,o):[];return{subject:x,label:G(this.catalog,x).label,attrs:B.filter(R=>R.kind==="datatype"),rels:B.filter(R=>R.kind==="object"&&R.range.kind==="class"&&c.has(ne(R.range.uri))),supers:Fe(x,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=x=>f+Math.max(1,x.attrs.length)*p+8,$=[];l.forEach((x,_)=>{let B=Math.floor(_/b);$[B]=Math.max($[B]??0,k(x))});let y=[],K=m;$.forEach((x,_)=>{y[_]=K,K+=x+h});let E=new Map;l.forEach((x,_)=>{let B=Math.floor(_/b),R=_%b,I=m+R*(u+h),T=y[B],v=k(x);E.set(i(x.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=[],j=[],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 x of l){let _=E.get(i(x.subject));for(let B of x.rels){let R=c.get(ne(B.range.uri)),I=E.get(i(R)),T=i(R)===i(x.subject),v=this.subjectFor(B.uri),M=!!v&&fn(this.catalog,v,ks),z=!!v&&fn(this.catalog,v,hs),O=B.minCount??0,A=B.maxCount??(z?1:void 0),me=v?G(this.catalog,v).label:B.localName;if(T){let oe=_.x+_.w,Ee=_.y+12,ve=_.y+_.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)),j.push(`<text class="kan-er-relationship-label" x="${oe+32}" y="${_.cy+4}" font-size="11" fill="var(--kan-text)">${g(me)}</text>`);continue}let ce=this.erBorderPoint(_.cx,_.cy,_.w,_.h,I.cx,I.cy),se=this.erBorderPoint(I.cx,I.cy,I.w,I.h,_.cx,_.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 fe=Math.atan2(se.y-ce.y,se.x-ce.x)*180/Math.PI;M||F.push(this.erCardinalityGlyph(se.x,se.y,fe,O,A)),j.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 B of x.supers){let R=c.get(ne(B)),I=E.get(i(R)),T=this.erBorderPoint(_.cx,_.cy,_.w,_.h,I.cx,I.cy),v=this.erBorderPoint(I.cx,I.cy,I.w,I.h,_.cx,_.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 x of l){let _=E.get(i(x.subject)),B=this.hrefForSubject(x.subject,t),R=x.attrs.length===0?`<text x="${_.x+10}" y="${_.y+f+14}" font-size="11" fill="var(--kan-text-faint)" font-style="italic">no attributes</text>`:x.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="${_.x+10}" y="${_.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(B)}"><g class="kan-er-entity"><rect x="${_.x}" y="${_.y}" width="${_.w}" height="${_.h}" rx="6" fill="var(--kan-bg-card)" stroke="var(--kan-border)" stroke-width="1.5"/><rect x="${_.x}" y="${_.y}" width="${_.w}" height="${f}" rx="6" fill="var(--kan-bg-elev)"/><text class="kan-er-entity-label" x="${_.cx}" y="${_.y+20}" text-anchor="middle" font-size="13" font-weight="600" fill="var(--kan-text)">${g(x.label)}</text><line x1="${_.x}" y1="${_.y+f}" x2="${_.x+_.w}" y2="${_.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("")}${j.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=ee(e,so),a=this.gatherValueItems(t).filter(o=>o instanceof N);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,kn);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=ee(e,no),a=this.gatherValueItems(t).filter(i=>i instanceof N);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(ee(n,a)).filter(i=>i instanceof N);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,De))continue;let m=this.readLabelForUri({publisher:h.publisher,package_:h.package_,name:h.name})??h.name;if(p instanceof Q||p instanceof ge||p instanceof de)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 L){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 J)i.push(this.renderConditionNode(p.object,n,t+1));else if(p instanceof D)for(let b of p.object??[])b instanceof N&&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,kn);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),j=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="${j.toFixed(1)}" y2="${U}" stroke="${k}" stroke-width="3"/><circle cx="${F.toFixed(1)}" cy="${U}" r="4" class="kan-delta-prev"/><circle cx="${j.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="${j.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,Ln);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,j=R=>k+R*y+y/2,W=R=>Math.round(R*360/Math.max(1,l.length)),P=[];l.forEach((R,I)=>{let T=j(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">${Ue(R)}</text>`)});let V={},x=[];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=j(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>${Ue(O)}</title></circle>`;x.push(R.linkable?`<a href="${g(R.href)}" class="kan-plot-link">${A}</a>`:A)}let _=`<text x="${E}" y="${(K-6).toFixed(1)}" text-anchor="start" class="kan-plot-axis">${Ue(In(new Date(u).toISOString()))}</text><text x="${U}" y="${(K-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${Ue(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("")+x.join("")+_+"</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 Q)return ha(e.object);if(e instanceof ge||e instanceof de)return g(String(e.object));if(e instanceof H&&e.object instanceof L)return this.detailReferenceLink(e.object,n);if(e instanceof J)return this.detailEmbedded(e.object,n,t);if(e instanceof D){let a=e.object??[];return a.length>0&&a.every(s=>s instanceof N)?a.map(s=>this.detailEmbedded(s,n,t)).join(""):a.map(s=>s instanceof L?this.detailReferenceLink(s,n):s instanceof N?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=ee(n,Ur);return t instanceof H&&t.object instanceof L?[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(ee(n,s)).filter(h=>h instanceof N);if(o.length===0)return"";let i=a?`${a}.${s.name}`:s.name,c=ee(e,Oo),l=c instanceof de?c.object===!0:c instanceof Q&&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>
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,De)||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,De)||a&&te(b)!==te(a))continue;let k=[];if(m instanceof H&&m.object instanceof L)k.push(m.object);else if(m instanceof D)for(let E of m.object??[])E instanceof L&&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?bn(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,De)||t&&!(s&&te(s)===te(t)))continue;let o=[];if(a instanceof H&&a.object instanceof L)o.push(a.object);else if(a instanceof D)for(let i of a.object??[])i instanceof L&&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(kn)??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,j=m.top+k,W=K.map((T,v)=>`${C(T).toFixed(1)},${F(E[v]).toFixed(1)}`),P=`M${C(0).toFixed(1)},${j.toFixed(1)} L${W.join(" L")} L${C(1).toFixed(1)},${j.toFixed(1)} Z`,V="";if(i!==void 0&&c!==void 0&&c>i){let T=[`${C(i).toFixed(1)},${j.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)},${j.toFixed(1)}`),V=`<path d="M${T.join(" L")} Z" fill="${u}" fill-opacity="0.3"/>`}let x=C(o),_=`<line x1="${x.toFixed(1)}" y1="${m.top.toFixed(1)}" x2="${x.toFixed(1)}" y2="${j.toFixed(1)}" stroke="${u}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${x.toFixed(1)}" y="${(m.top-3).toFixed(1)}" text-anchor="middle" class="kan-dist-mean">\u03BC ${o.toFixed(2)}</text>`,B=`<text x="${C(0).toFixed(1)}" y="${(j+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${C(1).toFixed(1)}" y="${(j+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="${j.toFixed(1)}" x2="${(p-m.right).toFixed(1)}" y2="${j.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"/>`+_+B+"</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||hn(f,p)>0))&&t.set(l,c)}let a,s=ee(e,Fs),o=s instanceof D?s.object??[]:s instanceof H&&s.object instanceof L?[s.object]:[];if(o.length>0){a=[];for(let c of o){if(!(c instanceof L))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,Ln),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,kn);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?bn(m):f.name;return`<li class="kan-timeline-node"><a href="${g(b)}"><span class="kan-timeline-key">${g(y)}</span>${$}</a></li>`}).join(`
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,j={top:28,right:24,bottom:56,left:52},W=C-j.left-j.right,P=F-j.top-j.bottom,V=O=>m<=1?j.left+W/2:j.left+O/(m-1)*W,x=O=>j.top+(1-(O-E)/(U-E))*P,_=(O,A)=>O.hue!==void 0?O.hue:Math.round(A*360/b.length),B=[];for(let O=0;O<5;O++){let A=E+O*(U-E)/4,me=x(A);B.push(`<line x1="${j.left}" y1="${me.toFixed(1)}" x2="${(C-j.right).toFixed(1)}" y2="${me.toFixed(1)}" class="kan-fan-grid"/>`),B.push(`<text x="${(j.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?bn(ce):"",fe=V(A),oe=In(o(O));R.push(`<a href="${g(me)}" class="kan-fan-xtick"><line x1="${fe.toFixed(1)}" y1="${j.top}" x2="${fe.toFixed(1)}" y2="${(F-j.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${fe.toFixed(1)}" y="${(F-j.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${Ue(se||O.name)}</text>`+(oe?`<text x="${fe.toFixed(1)}" y="${(F-j.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${Ue(oe)}</text>`:"")+"</a>")});let I=[];b.forEach((O,A)=>{if(!O.lower||!O.upper)return;let me=_(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)},${x(Ee).toFixed(1)}`),se.unshift(`${V(oe).toFixed(1)},${x(ve).toFixed(1)}`))}let fe=ce.concat(se);fe.length<3||I.push(`<polygon class="kan-fan-band" points="${fe.join(" ")}" fill="hsl(${me},65%,60%)"/>`)});let T=[];b.forEach((O,A)=>{let ce=`hsl(${_(O,A)},65%,60%)`,se=[],fe=[];O.points.forEach((oe,Ee)=>{if(oe===null)return;let ve=V(Ee),he=x(oe);se.push(`${ve.toFixed(1)},${he.toFixed(1)}`),fe.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"/>`+fe.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">`+B.join("")+R.join("")+I.join("")+T.join("")+"</svg>",M=f?`${g(f)}=`:"",z=b.map((O,A)=>{let me=_(O,A),ce=O.points.filter(he=>he!==null),se=ce.length?ce[0]:void 0,fe=ce.length?ce[ce.length-1]:void 0,oe="";if(fe!==void 0&&se!==void 0){let he=fe-se;if(Math.abs(he)>=.005){let ze=he>0?"up":"down",Ie=he>0?"\u25B2":"\u25BC";oe=` <span class="kan-fan-delta ${ze}">${he>0?"+":""}${he.toFixed(2)} ${Ie}</span>`}else oe=' <span class="kan-fan-delta flat">\u2014</span>'}let Ee=fe!==void 0?`${M}${fe.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,Ln),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">
134
+ ${l.join(`
135
+ `)}
136
+ </section>`}readTransitive(e){let n=ee(e,Uo);return n instanceof de?n.object===!0:n instanceof Q&&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>
140
+ ${k.join(`
141
+ `)}
142
+ </ol></nav>`}renderNavGroup(e,n){let t=ee(this.publisherSubject(n),qr),a=t instanceof D?t.object??[]:t instanceof H&&t.object instanceof L?[t.object]:[];if(a.length===0)return"";let s=[];for(let o of a){if(!(o instanceof L))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>
143
+ ${s.join(`
144
+ `)}
145
+ </ul></nav>`}renderSiteFooter(e){let n=ee(this.publisherSubject(e),Gr),t;if(n instanceof J?t=n.object:n instanceof H&&n.object instanceof L&&(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=ee(t,Wr),o=s instanceof D?s.object??[]:s instanceof H&&s.object instanceof L?[s.object]:[],i=[];for(let l of o){if(!(l instanceof L))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=ee(n,ea);if(l instanceof H&&l.object instanceof L){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 xn(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=ee(n,Ms),s=a instanceof D?a.object??[]:[],o=[];for(let i of s){if(!(i instanceof N))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=ee(n,t),s=[];a instanceof D?s=a.object??[]:a instanceof J?s=[a.object]:a instanceof H&&a.object instanceof L&&(s=[a.object]);let o=[];for(let i of s){let c;if(i instanceof N?c=i:i instanceof L&&(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=ee(n,a),o=new Map,i;if(s instanceof Te?i=this.resolveMarkdownLinks(s,t,o):s instanceof Q?i=s.object:i=this.readPropertyValueText(n,a),!i)return"";let c=this.codeHighlighter(),l=mn(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">
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(`
149
+
150
+ `):void 0}renderHero(e,n,t){let a=b=>{let k=ee(e,b);return k instanceof de?k.object===!0:k instanceof Q&&k.object==="true"},s=a(Co),o=!s&&a(Lo),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,_o),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=ee(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(ee(n,s)).filter(u=>u instanceof N);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=ee(k,F.uri);return j?`<td>${this.tableCellValue(j,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 Q&&Number.isFinite(Number(e.object)))return this.barMarkup(e.object)}if(e instanceof Te)return this.statementToMarkdownHtml(e,n);if(e instanceof Q)return ha(e.object);if(e instanceof ge||e instanceof de)return g(String(e.object));if(e instanceof H&&e.object instanceof L)return this.detailReferenceLink(e.object,n);if(e instanceof J)return this.renderEmbeddedTable([e.object],n);if(e instanceof D){let a=e.object??[],s=a.filter(o=>o instanceof N);return s.length>0&&s.length===a.length?this.renderEmbeddedTable(s,n):a.map(o=>o instanceof L?this.detailReferenceLink(o,n):o instanceof N?this.renderEmbeddedTable([o],n):g(String(o))).filter(o=>o).join(", ")}return""}statementToMarkdownHtml(e,n){let t=new Map,a;if(e instanceof Te?a=this.resolveMarkdownLinks(e,n,t):e instanceof Q&&(a=e.object),!a)return"";let s=this.codeHighlighter(),o=mn(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=ee(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=ee(e,n);if(t){if(t instanceof Q)return t.object;if(t instanceof ge||t instanceof de)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 J)return this.readEmbeddedText(t.object,0)||void 0;if(t instanceof D)return(t.object??[]).map(s=>s instanceof L?this.readLabelForUri({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name})??s.subject.name:s instanceof N?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,De)))if(a instanceof Q)t.push(a.object);else if(a instanceof ge||a instanceof de)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 J&&t.push(this.readEmbeddedText(a.object,n+1))}return t.filter(a=>a).join(", ")}readPropertyValueReferences(e,n){let t=ee(e,n);if(!t)return[];if(t instanceof H)return[t.object];if(t instanceof D){let a=[];for(let s of t.object??[])s instanceof L&&a.push(s);return a}return[]}gatherValueItems(e){return e?e instanceof D?e.object??[]:e instanceof H?[e.object]:e instanceof J?[e.object]:e instanceof Q?[e.object]:e instanceof ge||e instanceof de?[e.object]:[]:[]}renderInlineValue(e,n,t,a=0){return e instanceof L?this.renderReferenceLink(e,n,t):e instanceof N?this.renderEmbeddedInline(e,t,a):typeof e=="string"?g(e):typeof e=="number"||typeof e=="boolean"?g(String(e)):""}renderStatementInlineValue(e,n,t,a=0){return e instanceof Q?g(e.object):e instanceof ge||e instanceof de?g(String(e.object)):e instanceof H?this.renderReferenceLink(e.object,n,t):e instanceof J?this.renderEmbeddedInline(e.object,t,a):e instanceof D?(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,De))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 J)||!Re(n,Fn.publisher,Fn.package_,Fn.name))continue;let t=n.object;for(let a of t.statement){if(!(a instanceof Q))continue;let s=a.predicate?.subject?.name;if(!s)continue;let o=a.object;e.has(s)||e.set(s,o)}}return e}function Cn(r){for(let e of r.statement)if(e instanceof J&&Re(e,Tn.publisher,Tn.package_,Tn.name))return e.object}function et(r){for(let e of r.statement){if(!(e instanceof D)||!Re(e,Zn.publisher,Zn.package_,Zn.name))continue;let n=[];for(let t of e.object??[])t instanceof N&&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,De))&&e.object instanceof L){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 L){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 D)||!Re(n,e.publisher,e.package_,e.name))continue;let t=[];for(let a of n.object??[])a instanceof L&&t.push({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name});return t}return[]}function ee(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 Q&&Re(n,e.publisher,e.package_,e.name))return n.object}function On(r,e){for(let n of r.statement)if(n instanceof J&&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 de&&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,De))continue;n.object instanceof L&&e.push(n.object)}else if(n instanceof D){if(!n.predicate?.subject||!X(n.predicate.subject,De))continue;for(let t of n.object??[])t instanceof L&&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 L&&e.push(n.object)}else if(n instanceof D){if(!n.predicate?.subject||!X(n.predicate.subject,at))continue;for(let t of n.object??[])t instanceof L&&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`/*
153
+ ${n.join(`
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 Ue(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:Ue(typeof n=="string"?n:String(n))).join(""):Ue(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 L)return r.subject.name;if(r instanceof Y||r instanceof N)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{Z as a,fi as b,Ve as c,G as d,Ot as e,Ut as f,It as g,Bn as h,pn as i,Pt as j,qi as k,mn as l,Je as m,Oe as n,gn as o,En as p,Ne as q,Vn as r,Ao as s};
@@ -1 +1 @@
1
- import{a as h}from"./chunk-FUUTGGJS.js";import{c as U,g as S}from"./chunk-QILEJIFU.js";var p=class{};var m=class extends p{statement=[];unresolvedPredicates=[];sourceDoc=""};var f=class extends m{namespace;name;icon};var a=class e extends p{subject;static parse(n){let t=new e;return t.subject=h.parse(n),t}};var s=class{predicate;object};var c=class extends s{carrier;lexical};var y=class e extends c{static parse(n,t){let r=new e;return r.predicate=a.parse(n),r.object=t,r}};var k=class e extends c{static parse(n,t){let r=new e;return r.predicate=a.parse(n),r.object=t,r}};var b=class extends c{};var u=class e extends s{static parse(n,t){let r=new e;return r.predicate=a.parse(n),r.object=a.parse(t),r}};var g=class extends s{};var d=class extends s{};function $(e){return`${e.publisher}/${e.package_}/${e.name}`}function K(e,n){return e.publisher===n.publisher&&e.package_===n.package_&&e.name===n.name}function A(e){let n=e.version;return n&&typeof n.major=="number"?`https://${e.publisher}/${e.package_}/${n.major}.${n.minor}.${n.patch}/${e.name}`:`https://${e.publisher}/${e.package_}/${e.name}`}function P(e){return D(e,v)}var v={publisher:"kanonak.org",package_:"core-rdf",name:"type"};function D(e,n){if(!(e instanceof m))return[];let t=[];for(let r of e.statement){let o=r.predicate;if(!(!o?.subject||!K(o.subject,n))){if(r instanceof u)t.push(r.object.subject);else if(r instanceof d)for(let i of r.object)i instanceof a&&t.push(i.subject)}}return t}function R(e,n){if(!(e instanceof m))return!1;for(let t of e.statement)if(t.predicate?.subject?.name==="type"&&t instanceof u){let o=t.object;if(K(o.subject,n))return!0}return!1}function I(e,n){let t=[];for(let r of e)r instanceof f&&R(r,n)&&t.push(r);return t}function V(e,n){let t=n.version,r=t&&typeof t.major=="number"?`${n.publisher}/${n.package_}@${t.major}.${t.minor}.${t.patch}`:void 0;for(let o of e){if(!(o instanceof f)||o.name!==n.name)continue;let i=o.namespace||"";if(r!==void 0){if(i===r)return o}else if(i.startsWith(`${n.publisher}/${n.package_}@`))return o}}function w(e,n){let t=[];for(let r of e){if(!(r instanceof f)||r.name!==n.name)continue;(r.namespace||"").startsWith(`${n.publisher}/${n.package_}@`)&&t.push(r)}return t.sort((r,o)=>{let i=S((r.namespace||"").split("@")[1]??""),j=S((o.namespace||"").split("@")[1]??"");return i?j?U(j,i):-1:j?1:0}),t}function l(e,n){for(let t of e.statement){let r=t.predicate;if(r?.subject&&K(r.subject,n))return t}}function C(e,n){return l(e,n)!==void 0}function E(e,n){let t=l(e,n);if(t&&(t instanceof y||t instanceof k||t instanceof b))return t.object}function _(e,n){let t=E(e,n);return typeof t=="string"?t:void 0}function T(e,n){let t=l(e,n);if(t instanceof u)return t.object.subject}function B(e,n){let t=l(e,n);if(t instanceof g)return t.object}function N(e,n){let t=l(e,n);return t instanceof d?t.object??[]:[]}var x=class{constructor(n,t){this.doc=n;this.broader=t}doc;broader;async getAllDocumentsAsync(){return[this.doc]}async getDocumentAsync(n){return this.broader.getDocumentAsync(n)}async getDocumentsByNamespaceAsync(n,t){return this.broader.getDocumentsByNamespaceAsync(n,t)}async getHighestCompatibleVersionAsync(n,t){return this.broader.getHighestCompatibleVersionAsync(n,t)}async saveDocumentAsync(){throw new Error("SingleDocumentRepository is read-only")}async deleteDocumentAsync(){throw new Error("SingleDocumentRepository is read-only")}async clearNamespaceAsync(){throw new Error("SingleDocumentRepository is read-only")}async getAllDocumentReferencesAsync(){return[]}async getDocumentContentAsync(n){return this.broader.getDocumentContentAsync(n)}async getDocumentUriAsync(n){return this.broader.getDocumentUriAsync(n)}};export{p as a,m as b,f as c,a as d,s as e,c as f,y as g,k as h,b as i,u as j,g as k,d as l,$ as m,K as n,A as o,P as p,D as q,R as r,I as s,V as t,w as u,C as v,E as w,_ as x,T as y,B as z,N as A,x as B};
1
+ import{a as h}from"./chunk-FUUTGGJS.js";import{c as U,g as S}from"./chunk-QILEJIFU.js";var p=class{};var m=class extends p{statement=[];unresolvedPredicates=[];sourceDoc=""};var f=class extends m{namespace;name;icon};var a=class e extends p{subject;static parse(n){let t=new e;return t.subject=h.parse(n),t}};var s=class{predicate;object};var c=class extends s{carrier;lexical};var y=class e extends c{static parse(n,t){let r=new e;return r.predicate=a.parse(n),r.object=t,r}};var k=class e extends c{static parse(n,t){let r=new e;return r.predicate=a.parse(n),r.object=t,r}};var b=class extends c{};var u=class e extends s{static parse(n,t){let r=new e;return r.predicate=a.parse(n),r.object=a.parse(t),r}};var g=class extends s{};var l=class extends s{};function $(e){return`${e.publisher}/${e.package_}/${e.name}`}function K(e,n){return e.publisher===n.publisher&&e.package_===n.package_&&e.name===n.name}function A(e){let n=e.version;return n&&typeof n.major=="number"?`https://${e.publisher}/${e.package_}/${n.major}.${n.minor}.${n.patch}/${e.name}`:`https://${e.publisher}/${e.package_}/${e.name}`}function P(e){return D(e,v)}var v={publisher:"kanonak.org",package_:"core-rdf",name:"type"};function D(e,n){if(!(e instanceof m))return[];let t=[];for(let r of e.statement){let o=r.predicate;if(!(!o?.subject||!K(o.subject,n))){if(r instanceof u)t.push(r.object.subject);else if(r instanceof l)for(let i of r.object)i instanceof a&&t.push(i.subject)}}return t}function R(e,n){if(!(e instanceof m))return!1;for(let t of e.statement)if(t.predicate?.subject?.name==="type"&&t instanceof u){let o=t.object;if(K(o.subject,n))return!0}return!1}function I(e,n){let t=[];for(let r of e)r instanceof f&&R(r,n)&&t.push(r);return t}function V(e,n){let t=n.version,r=t&&typeof t.major=="number"?`${n.publisher}/${n.package_}@${t.major}.${t.minor}.${t.patch}`:void 0;for(let o of e){if(!(o instanceof f)||o.name!==n.name)continue;let i=o.namespace||"";if(r!==void 0){if(i===r)return o}else if(i.startsWith(`${n.publisher}/${n.package_}@`))return o}}function w(e,n){let t=[];for(let r of e){if(!(r instanceof f)||r.name!==n.name)continue;(r.namespace||"").startsWith(`${n.publisher}/${n.package_}@`)&&t.push(r)}return t.sort((r,o)=>{let i=S((r.namespace||"").split("@")[1]??""),j=S((o.namespace||"").split("@")[1]??"");return i?j?U(j,i):-1:j?1:0}),t}function d(e,n){for(let t of e.statement){let r=t.predicate;if(r?.subject&&K(r.subject,n))return t}}function C(e,n){return d(e,n)!==void 0}function E(e,n){let t=d(e,n);if(t&&(t instanceof y||t instanceof k||t instanceof b))return t.object}function _(e,n){let t=E(e,n);return typeof t=="string"?t:void 0}function T(e,n){let t=d(e,n);if(t instanceof u)return t.object.subject}function B(e,n){let t=d(e,n);if(t instanceof g)return t.object}function N(e,n){let t=d(e,n);return t instanceof l?t.object??[]:[]}var x=class{constructor(n,t){this.doc=n;this.broader=t}doc;broader;async getAllDocumentsAsync(){return[this.doc]}async getDocumentAsync(n){return this.broader.getDocumentAsync(n)}async getDocumentsByNamespaceAsync(n,t){return this.broader.getDocumentsByNamespaceAsync(n,t)}async getHighestCompatibleVersionAsync(n,t){return this.broader.getHighestCompatibleVersionAsync(n,t)}async saveDocumentAsync(){throw new Error("SingleDocumentRepository is read-only")}async deleteDocumentAsync(){throw new Error("SingleDocumentRepository is read-only")}async clearNamespaceAsync(){throw new Error("SingleDocumentRepository is read-only")}async getAllDocumentReferencesAsync(){return[]}async getDocumentContentAsync(n){return this.broader.getDocumentContentAsync(n)}async getDocumentUriAsync(n){return this.broader.getDocumentUriAsync(n)}};export{p as a,m as b,f as c,a as d,s as e,c as f,y as g,k as h,b as i,u as j,g as k,l,$ as m,K as n,A as o,P as p,D as q,R as r,I as s,V as t,w as u,d as v,C as w,E as x,_ as y,T as z,B as A,N as B,x as C};