@kanonak-protocol/sdk 5.33.0 → 5.35.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 (42) hide show
  1. package/dist/browser.d.ts +2 -0
  2. package/dist/browser.js +1 -1
  3. package/dist/{chunk-EVMSO7HJ.js → chunk-26SO3A4B.js} +1 -1
  4. package/dist/{chunk-PRXC2HZ3.js → chunk-2Y6R3K5A.js} +1 -1
  5. package/dist/chunk-54D47DLS.js +1 -0
  6. package/dist/chunk-AVVLDZAZ.js +68 -0
  7. package/dist/chunk-D7QLWVPK.js +155 -0
  8. package/dist/chunk-JHQPXEMA.js +1 -0
  9. package/dist/chunk-MQBWSCNY.js +1 -0
  10. package/dist/{chunk-PXS6XZ3V.js → chunk-O35Y6QUW.js} +1 -1
  11. package/dist/{chunk-BS7RRG7D.js → chunk-VEGFYZXG.js} +1 -1
  12. package/dist/chunk-ZYDJUGIA.js +1 -0
  13. package/dist/index.d.ts +2 -0
  14. package/dist/index.js +1 -1
  15. package/dist/kanonaks/EmbeddedKanonak.d.ts +13 -0
  16. package/dist/look/LookRenderer.d.ts +10 -5
  17. package/dist/parsing/index.js +1 -1
  18. package/dist/producer/index.js +1 -1
  19. package/dist/reasoning/index.js +1 -1
  20. package/dist/resolution/TypeDirectedResolver.d.ts +12 -2
  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/shacl/ConformanceEvaluator.d.ts +13 -3
  25. package/dist/shacl/ShapesModel.d.ts +28 -0
  26. package/dist/shacl/lowering.d.ts +3 -2
  27. package/dist/shacl/uris.d.ts +7 -0
  28. package/dist/transformations/index.js +1 -1
  29. package/dist/uri-helpers/PropertyValues.d.ts +74 -0
  30. package/dist/uri-helpers/UriHelpers.d.ts +37 -5
  31. package/dist/uri-helpers/index.d.ts +4 -2
  32. package/dist/uri-helpers/index.js +1 -1
  33. package/dist/validation/index.js +1 -1
  34. package/dist/validation/rules/repository/PropertyDomainRule.d.ts +6 -0
  35. package/dist/validation/rules/repository/ShaclShapeRule.d.ts +13 -0
  36. package/package.json +2 -2
  37. package/dist/chunk-7UYXTYXC.js +0 -1
  38. package/dist/chunk-C63WFML4.js +0 -68
  39. package/dist/chunk-CJMVIOZX.js +0 -1
  40. package/dist/chunk-HENE47QG.js +0 -155
  41. package/dist/chunk-L2J7WD7E.js +0 -1
  42. package/dist/chunk-PVUBHIU2.js +0 -1
@@ -0,0 +1,155 @@
1
+ import{a as it}from"./chunk-6VIUXP4N.js";import{a as Ne,f as u,k as Sn}from"./chunk-JHQPXEMA.js";import{a as ct}from"./chunk-HF5FJBS2.js";import{a as ht}from"./chunk-PEJALHXK.js";import{aa as pt,ba as mt,ma as en,na as _e,oa as nn,pa as $n,ta as gt}from"./chunk-MQBWSCNY.js";import{A as We,B as Ee,C as xe,D as ft,E as Mn,F as vn,G as kt,b as Ie,c as z,d as D,e as I,i as ae,j as he,k as ke,l as J,m as oe,n as ie,o as W,p as re,q as lt,r as ut,s as we,t as Fe,u as _,w as ze,x as ce,y as dt,z as ln}from"./chunk-54D47DLS.js";import{a as yn}from"./chunk-FUUTGGJS.js";import{c as hn,d as st,e as bn,g as ot}from"./chunk-QILEJIFU.js";var Y=class extends Error{constructor(n,t){super(`${n} (at ${t})`);this.path=t}path};function Jo(r,e){let n=r.name,t=Ia(e),a={catalog:e,depth:0};if(_(r,u.InstanceTransformation))return wa(r,n,a,t);if(_(r,u.SetTransformation))return _a(r,n,a,t);throw new Y("Subject is not a recognized v3 transformation type \u2014 expected InstanceTransformation or SetTransformation",n)}function wa(r,e,n,t){return{kind:"instance",name:r.name,inputPattern:_t(r,e),rule:wn(r,u.rule,`${e}.rule`,n),artifactName:wn(r,u.artifactName,`${e}.artifactName`,n),outputs:jt(r,`${e}.outputs`),overrides:Kt(r,`${e}.formatOverrides`,n),fragments:t}}function _a(r,e,n,t){let a=Pe(r,u.partitionBy);return{kind:"set",name:r.name,inputPattern:_t(r,e),rule:wn(r,u.rule,`${e}.rule`,n),artifactName:wn(r,u.artifactName,`${e}.artifactName`,n),outputs:jt(r,`${e}.outputs`),overrides:Kt(r,`${e}.formatOverrides`,n),partitionBy:a,fragments:t}}function _t(r,e){let n=un(r,u.inputPattern);if(!n)throw new Y("inputPattern is required",e);return ja(n,`${e}.inputPattern`)}function ja(r,e){let n=Pe(r,u.matchesClass);if(!n)throw new Y("matchesClass is required",e);let t=[];for(let o of Se(r,u.requires))if(o instanceof J)t.push(Hn(o.object.subject));else if(o instanceof ie)for(let i of o.object)i instanceof I&&t.push(Hn(i.subject));let a=[],s=0;for(let o of Se(r,u.sortBy))if(o instanceof ie)for(let i of o.object)i instanceof D&&a.push(bt(i,`${e}.sortBy[${s++}]`));else o instanceof oe&&a.push(bt(o.object,`${e}.sortBy[${s++}]`));return{matchesClass:n,requires:t,sortBy:a}}function bt(r,e){let n=Pe(r,u.byProperty);if(!n)throw new Y("SortKey.byProperty is required",e);let t=Pe(r,u.order);if(!t)throw new Y("SortKey.order is required",e);if(re(t,u.ascending))return{byProperty:n,order:"ascending"};if(re(t,u.descending))return{byProperty:n,order:"descending"};throw new Y(`SortKey.order must reference tx.ascending or tx.descending; got ${t.publisher}/${t.package_}/${t.name}`,e)}function wn(r,e,n,t){let a=un(r,e);if(!a)throw new Y("expression is required",n);return Te(a,n,t)}function Te(r,e,n){if(_(r,u.StringLiteral))return{kind:"string-literal",value:ve(r,u.stringLiteral,e)};if(_(r,u.IntegerLiteral))return{kind:"integer-literal",value:wt(r,u.integerLiteral,e)};if(_(r,u.DecimalLiteral))return{kind:"decimal-literal",value:wt(r,u.decimalLiteral,e)};if(_(r,u.BooleanLiteral))return{kind:"boolean-literal",value:Pa(r,u.booleanLiteral,e)};if(_(r,u.VarRef))return{kind:"var-ref",varName:ve(r,u.varName,e)};if(_(r,u.PropertyRead))return{kind:"property-read",source:S(r,u.readSource,`${e}.readSource`,n),readProp:De(r,u.readProp,e,"readProp")};if(_(r,u.Traverse))return{kind:"traverse",source:S(r,u.traverseSource,`${e}.traverseSource`,n),through:De(r,u.through,e,"through"),step:S(r,u.step,`${e}.step`,n)};if(_(r,u.BuildAstNode))return{kind:"build-ast-node",astClass:De(r,u.astClass,e,"astClass"),set:Ra(r,`${e}.set`,n)};if(_(r,u.When))return{kind:"when",condition:S(r,u.condition,`${e}.condition`,n),thenBuild:S(r,u.thenBuild,`${e}.thenBuild`,n),elseBuild:Ka(r,u.elseBuild,`${e}.elseBuild`,n)};if(_(r,u.Concat))return{kind:"concat",parts:Nn(r,u.parts,`${e}.parts`,n)};if(_(r,u.Fallback))return{kind:"fallback",primary:S(r,u.primary,`${e}.primary`,n),alternate:S(r,u.alternate,`${e}.alternate`,n)};if(_(r,u.UriName))return{kind:"uri-name",source:S(r,u.uriNameOf,`${e}.uriNameOf`,n)};if(_(r,u.UriPublisher))return{kind:"uri-publisher",source:S(r,u.uriPublisherOf,`${e}.uriPublisherOf`,n)};if(_(r,u.UriPackage))return{kind:"uri-package",source:S(r,u.uriPackageOf,`${e}.uriPackageOf`,n)};if(_(r,u.UriVersion))return{kind:"uri-version",source:S(r,u.uriVersionOf,`${e}.uriVersionOf`,n)};if(_(r,u.SubjectUri))return{kind:"subject-uri",source:S(r,u.subjectOf,`${e}.subjectOf`,n)};if(_(r,u.UriLiteral))return{kind:"uri-literal",refTo:De(r,u.refTo,e,"refTo")};if(_(r,u.DisplayLabel))return{kind:"display-label",labelTarget:De(r,u.labelTarget,e,"labelTarget"),labelSource:De(r,u.labelSource,e,"labelSource")};if(_(r,u.ResolveRef))return{kind:"resolve-ref",source:S(r,u.resolveSource,`${e}.resolveSource`,n)};if(_(r,u.Normalize))return{kind:"normalize",source:S(r,u.normSource,`${e}.normSource`,n),normKind:Ea(r,e)};if(_(r,u.UnescapedString))return{kind:"unescaped-string",source:S(r,u.unescapedSource,`${e}.unescapedSource`,n)};if(_(r,u.RenderMarkdown))return{kind:"render-markdown",source:S(r,u.renderSource,`${e}.renderSource`,n),readProp:De(r,u.renderProp,e,"renderProp"),format:La(r,e)};if(_(r,u.IsSet))return{kind:"is-set",check:S(r,u.checkExpr,`${e}.checkExpr`,n)};if(_(r,u.CallFragment))return Oa(r,e,n);if(_(r,u.Join))return{kind:"join",source:S(r,u.source,`${e}.source`,n),separator:ve(r,u.separator,e)};if(_(r,u.Count))return{kind:"count",source:S(r,u.source,`${e}.source`,n)};if(_(r,u.Sum))return{kind:"sum",source:S(r,u.source,`${e}.source`,n)};if(_(r,u.Min))return{kind:"min",source:S(r,u.source,`${e}.source`,n)};if(_(r,u.Max))return{kind:"max",source:S(r,u.source,`${e}.source`,n)};if(_(r,u.Average))return{kind:"average",source:S(r,u.source,`${e}.source`,n)};if(_(r,u.ForEach))return{kind:"for-each",source:S(r,u.source,`${e}.source`,n),loopVar:ve(r,u.loopVar,e),emit:S(r,u.emit,`${e}.emit`,n)};if(_(r,u.ListMap))return{kind:"list-map",source:S(r,u.source,`${e}.source`,n),loopVar:ve(r,u.loopVar,e),mapBody:S(r,u.mapBody,`${e}.mapBody`,n)};if(_(r,u.Filter))return{kind:"filter",source:S(r,u.source,`${e}.source`,n),loopVar:ve(r,u.loopVar,e),predicate:S(r,u.predicate,`${e}.predicate`,n)};if(_(r,u.PartitionBy))return{kind:"partition-by",source:S(r,u.source,`${e}.source`,n),loopVar:ve(r,u.loopVar,e),partitionKey:S(r,u.partitionKey,`${e}.partitionKey`,n)};if(_(r,u.DistinctBy))return{kind:"distinct-by",source:S(r,u.source,`${e}.source`,n),loopVar:ve(r,u.loopVar,e),distinctKey:S(r,u.distinctKey,`${e}.distinctKey`,n)};if(_(r,u.AllStatements))return{kind:"all-statements",source:S(r,u.statementsOf,`${e}.statementsOf`,n)};if(_(r,u.StatementPredicate))return{kind:"statement-predicate",source:S(r,u.predicateOf,`${e}.predicateOf`,n)};if(_(r,u.StatementValue))return{kind:"statement-value",source:S(r,u.valueOf,`${e}.valueOf`,n)};if(_(r,u.DateFormat))return{kind:"date-format",source:S(r,u.dateSource,`${e}.dateSource`,n),format:Ca(r,e)};if(_(r,u.NumberFormat)){let t=Dn(r,u.fractionDigits);if(t!==void 0&&(!Number.isInteger(t)||t<0||t>20))throw new Y(`fractionDigits must be an integer between 0 and 20; got ${t}`,e);let a=Be(r,u.currencyCode);return{kind:"number-format",source:S(r,u.numberSource,`${e}.numberSource`,n),style:xa(r,e),...t!==void 0?{fractionDigits:t}:{},...a!==void 0?{currencyCode:a}:{}}}if(_(r,u.Add))return{kind:"add",left:S(r,u.arithLeft,`${e}.arithLeft`,n),right:S(r,u.arithRight,`${e}.arithRight`,n)};if(_(r,u.Subtract))return{kind:"subtract",left:S(r,u.arithLeft,`${e}.arithLeft`,n),right:S(r,u.arithRight,`${e}.arithRight`,n)};if(_(r,u.Multiply))return{kind:"multiply",left:S(r,u.arithLeft,`${e}.arithLeft`,n),right:S(r,u.arithRight,`${e}.arithRight`,n)};if(_(r,u.Divide))return{kind:"divide",left:S(r,u.arithLeft,`${e}.arithLeft`,n),right:S(r,u.arithRight,`${e}.arithRight`,n)};if(_(r,u.Reverse))return{kind:"reverse",source:S(r,u.source,`${e}.source`,n)};if(_(r,u.WindowedMap)){let t=Dn(r,u.windowSize);if(t===void 0||!Number.isInteger(t)||t<1)throw new Y("windowSize must be a positive integer",`${e}.windowSize`);return{kind:"windowed-map",source:S(r,u.source,`${e}.source`,n),windowSize:t,windowVar:ve(r,u.windowVar,e),windowBody:S(r,u.windowBody,`${e}.windowBody`,n)}}if(_(r,u.PairwiseMap))return{kind:"pairwise-map",source:S(r,u.source,`${e}.source`,n),firstVar:ve(r,u.firstVar,e),secondVar:ve(r,u.secondVar,e),pairBody:S(r,u.pairBody,`${e}.pairBody`,n)};if(_(r,u.Scan))return{kind:"scan",source:S(r,u.source,`${e}.source`,n),initialState:S(r,u.initialState,`${e}.initialState`,n),stateVar:ve(r,u.stateVar,e),elementVar:ve(r,u.elementVar,e),accumulate:S(r,u.accumulate,`${e}.accumulate`,n)};if(_(r,u.ListItemAt))return{kind:"list-item-at",source:S(r,u.source,`${e}.source`,n),itemIndex:S(r,u.itemIndex,`${e}.itemIndex`,n)};if(_(r,u.Equals))return{kind:"equals",left:S(r,u.compareLeft,`${e}.compareLeft`,n),right:S(r,u.compareRight,`${e}.compareRight`,n)};if(_(r,u.GreaterThan))return{kind:"greater-than",left:S(r,u.compareLeft,`${e}.compareLeft`,n),right:S(r,u.compareRight,`${e}.compareRight`,n)};if(_(r,u.LessThan))return{kind:"less-than",left:S(r,u.compareLeft,`${e}.compareLeft`,n),right:S(r,u.compareRight,`${e}.compareRight`,n)};if(_(r,u.GreaterThanOrEqual))return{kind:"greater-than-or-equal",left:S(r,u.compareLeft,`${e}.compareLeft`,n),right:S(r,u.compareRight,`${e}.compareRight`,n)};if(_(r,u.LessThanOrEqual))return{kind:"less-than-or-equal",left:S(r,u.compareLeft,`${e}.compareLeft`,n),right:S(r,u.compareRight,`${e}.compareRight`,n)};if(_(r,u.Not))return{kind:"not",operand:S(r,u.operand,`${e}.operand`,n)};if(_(r,u.And))return{kind:"and",operands:Nn(r,u.operands,`${e}.operands`,n)};if(_(r,u.Or))return{kind:"or",operands:Nn(r,u.operands,`${e}.operands`,n)};if(_(r,u.Contains))return{kind:"contains",haystack:S(r,u.haystack,`${e}.haystack`,n),needle:S(r,u.needle,`${e}.needle`,n)};if(_(r,u.Abs))return{kind:"abs",value:S(r,u.value,`${e}.value`,n)};if(_(r,u.Negate))return{kind:"negate",value:S(r,u.value,`${e}.value`,n)};if(_(r,u.IsReference))return{kind:"is-reference",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(_(r,u.IsEmbedded))return{kind:"is-embedded",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(_(r,u.IsList))return{kind:"is-list",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(_(r,u.IsString))return{kind:"is-string",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(_(r,u.IsNumber))return{kind:"is-number",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(_(r,u.IsBoolean))return{kind:"is-boolean",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(_(r,u.StatementObject))return{kind:"statement-object",source:S(r,u.statementSource,`${e}.statementSource`,n)};if(_(r,u.Let))return{kind:"let",bindName:ve(r,u.letName,e),bindValue:S(r,u.letValue,`${e}.letValue`,n),body:S(r,u.letBody,`${e}.letBody`,n)};if(_(r,u.GetStatementByName))return{kind:"get-statement-by-name",inSubject:S(r,u.inSubject,`${e}.inSubject`,n),byName:S(r,u.byName,`${e}.byName`,n)};throw new Y("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 Y("child expression is required",n);return Te(a,n,t)}function Ka(r,e,n,t){let a=un(r,e);if(a)return Te(a,n,t)}function Nn(r,e,n,t){let a=[],s=0;for(let o of Se(r,e))if(o instanceof ie)for(let i of o.object)i instanceof D&&a.push(Te(i,`${n}[${s++}]`,t));else o instanceof oe&&a.push(Te(o.object,`${n}[${s++}]`,t));return a}function Ra(r,e,n){let t=[],a=0;for(let s of Se(r,u.set))if(s instanceof ie)for(let o of s.object)o instanceof D&&t.push(yt(o,`${e}[${a++}]`,n));else s instanceof oe&&t.push(yt(s.object,`${e}[${a++}]`,n));return t}function yt(r,e,n){return{field:De(r,u.field,e,"field"),value:S(r,u.bindValue,`${e}.bindValue`,n)}}function Ea(r,e){let n=Pe(r,u.normKind);if(!n)throw new Y("normKind is required",e);if(re(n,u.NORM_TRIM_END))return"trim-end";if(re(n,u.NORM_TO_UPPER))return"to-upper";if(re(n,u.NORM_TO_LOWER))return"to-lower";if(re(n,u.NORM_FIRST_CHAR))return"first-char";throw new Y(`Unknown NormalizeKind: ${n.publisher}/${n.package_}/${n.name}`,e)}function La(r,e){let n=Pe(r,u.renderFormat);if(!n)throw new Y("renderFormat is required",e);if(re(n,u.RENDER_HTML))return"html";if(re(n,u.RENDER_MARKDOWN))return"markdown";throw new Y(`Unknown RenderFormat: ${n.publisher}/${n.package_}/${n.name}`,e)}var vt=new Set(["decimal","percent","basis-points","currency","compact"]);function xa(r,e){let n=Be(r,u.numberStyle);if(n===void 0)throw new Y("numberStyle is required",e);if(!vt.has(n))throw new Y(`Unknown numberStyle "${n}"; supported: ${[...vt].join(", ")}`,e);return n}var $t=new Set(["iso-date","iso-datetime","short-date","long-date","year","month-year"]);function Ca(r,e){let n=Be(r,u.dateFormat);if(!n)throw new Y("dateFormat is required",e);if(!$t.has(n))throw new Y(`Unknown dateFormat "${n}"; supported: ${[...$t].join(", ")}`,e);return n}function Oa(r,e,n){let t=Pe(r,u.fragmentRef);if(!t)throw new Y("fragmentRef is required",e);if(!Fa(n.catalog,t))throw new Y(`ExpressionFragment not found: ${t.publisher}/${t.package_}/${t.name}`,e);return{kind:"call-fragment",fragmentKey:Ua(t)}}function Ua(r){return`${r.publisher}/${r.package_}/${r.name}`}function Ia(r){let e=new Map,n=[];for(let t of r){if(!(t instanceof z)||!_(t,u.ExpressionFragment))continue;let a=un(t,u.body);if(!a)continue;let s=(t.namespace||"").split("@")[0]||"",o=s.indexOf("/");if(o<0)continue;let i=s.substring(0,o),c=s.substring(o+1),l=`${i}/${c}/${t.name}`;n.push({key:l,subject:t,bodyEmb:a,pubPkgName:`${s}/${t.name}`})}for(let t of n){let a=Te(t.bodyEmb,`fragment(${t.pubPkgName})`,{catalog:r,depth:0});e.set(t.key,a)}return e}function Fa(r,e){for(let n of r)if(!(!(n instanceof z)||n.name!==e.name||!(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))&&_(n,u.ExpressionFragment))return n}function jt(r,e){let n=new Set;for(let t of Se(r,u.outputs))if(t instanceof J)n.add(t.object.subject.name);else if(t instanceof ie)for(let a of t.object)a instanceof I&&n.add(a.subject.name);if(n.size===0)throw new Y("outputs is required (at least one OutputFormat)",e);return n}function Kt(r,e,n){let t=new Map,a=0;for(let s of Se(r,u.formatOverrides))if(s instanceof ie){for(let o of s.object)if(o instanceof D){let[i,c]=St(o,`${e}[${a++}]`);t.set(i,c)}}else if(s instanceof oe){let[o,i]=St(s.object,`${e}[${a++}]`);t.set(o,i)}return t}function St(r,e){let n=Pe(r,u.formatTarget);if(!n)throw new Y("formatTarget is required",e);let t=[];for(let i of Se(r,u.metadataKeys))if(i instanceof ae)t.push(i.object);else if(i instanceof ie)for(let c of i.object){let l=c.value;typeof l=="string"&&t.push(l)}let a=new Map;for(let i of Se(r,u.metadataRenames))if(i instanceof ie){for(let c of i.object)if(c instanceof D){let l=Be(c,u.fromKey),d=Be(c,u.toKey);l&&d&&a.set(l,d)}}else if(i instanceof oe){let c=i.object,l=Be(c,u.fromKey),d=Be(c,u.toKey);l&&d&&a.set(l,d)}let s=Bn(r,u.trailingNewline),o=Bn(r,u.omitWrapper);return[n.name,{metadataKeys:t.length>0?t:void 0,metadataRenames:a,trailingNewline:s,omitWrapper:o}]}function Ta(r){return r.predicate?.subject}function Se(r,e){let n=[];for(let t of r.statement){let a=Ta(t);a&&re(a,e)&&n.push(t)}return n}function un(r,e){for(let n of Se(r,e))if(n instanceof oe)return n.object}function Pe(r,e){for(let n of Se(r,e))if(n instanceof J)return Hn(n.object.subject)}function Be(r,e){for(let n of Se(r,e))if(n instanceof ae)return n.object}function Dn(r,e){for(let n of Se(r,e))if(n instanceof he)return n.object}function Bn(r,e){for(let n of Se(r,e))if(n instanceof ke)return n.object}function ve(r,e,n){let t=Be(r,e);if(t===void 0)throw new Y(`${e.name} (string) is required`,n);return t}function wt(r,e,n){let t=Dn(r,e);if(t===void 0)throw new Y(`${e.name} (number) is required`,n);return t}function Pa(r,e,n){let t=Bn(r,e);if(t===void 0)throw new Y(`${e.name} (boolean) is required`,n);return t}function De(r,e,n,t){let a=Pe(r,e);if(!a)throw new Y(`${t} (URI reference) is required`,n);return a}function Hn(r){return{publisher:r.publisher,package_:r.package_,name:r.name}}var Ye="kanonak.org",Ct="look",dn="core-rdf",Va={publisher:Ye,package_:Ct,name:"displayLabel"},Aa={publisher:Ye,package_:Ct,name:"displaySummary"},Ma={publisher:Ye,package_:dn,name:"subClassOf"},Na={publisher:Ye,package_:dn,name:"label"},Da={publisher:Ye,package_:dn,name:"comment"},Rt=new yn(Ye,dn,"Resource"),Ba=8;function H(r,e){return Ot(r,e,new Set)}function Ot(r,e,n){let t=xt(r,e,Va)??Na,a=xt(r,e,Aa)??Da,s=Et(r,e,t,n)??e.name,o=Et(r,e,a,n);return{label:s,summary:o}}function Et(r,e,n,t){for(let a of e.statement){let s=a.predicate;if(!(!s?.subject||!re(s.subject,n))){if(a instanceof ae)return a.object;if(a instanceof he||a instanceof ke)return String(a.object);if(a instanceof J)return Lt(r,a.object.subject,t);if(a instanceof ie){let o=[];for(let i of a.object??[])if(i instanceof I){let c=Lt(r,i.subject,t);c&&o.push(c)}if(o.length>0)return o.join(", ")}return}}}function Lt(r,e,n){let t=W(e);if(n.has(t)||n.size>=Ba)return e.name;let[a]=ce(r,e);if(!a)return e.name;let s=new Set(n);return s.add(t),Ot(r,a,s).label}function xt(r,e,n){let t=xe(e,n);if(t)return t;let a=new Set,s=we(e,Ha);for(;s.length>0;){let o=s.shift(),i=W(o);if(a.has(i))continue;a.add(i);let c=ce(r,o);for(let l of c){let d=xe(l,n);if(d)return d}for(let l of c)s.push(...we(l,Ma))}if(!a.has(W(Rt)))for(let o of ce(r,Rt)){let i=xe(o,n);if(i)return i}}var Ha={publisher:Ye,package_:dn,name:"type"};var qa="kanonak.org",Xe=(r,e)=>({publisher:qa,package_:r,name:e}),Ga=Xe("look","source"),Ut=Xe("look","connectors"),za=Xe("look","relation"),Wa=Xe("look","lineStyle"),Ya=Xe("look","participants"),Xa=Xe("core-owl","SymmetricProperty"),Qa=Xe("core-owl","inverseOf"),It=new Set(["solid","dotted","open","thick"]);function Ft(r){return xe(r,Ga)}function Tt(r,e){let n=ft(e,Ut),t=n?[n]:Mn(e,Ut),a=[];for(let s of t){if(!(s instanceof D))continue;let o=xe(s,za);if(!o)continue;let i=Ee(s,Wa),c=i!==void 0&&It.has(i);a.push({relation:o,subject:ce(r,o)[0],declaredStyle:c?i:void 0,invalidStyle:i!==void 0&&!c?i:void 0})}return a}function Pt(r,e){let n=[];for(let t of Mn(e,Ya)){if(!(t instanceof I))continue;let a=ce(r,t.subject)[0];a&&n.push(a)}return n}function fn(r,e,n){for(let t of ut(e))if(re(t,n)||nn(r,t).some(a=>re(a,n)))return!0;return!1}function Vt(r,e,n){let t=!!e.subject&&fn(r,e.subject,Xa);return e.declaredStyle?{style:e.declaredStyle,undirected:t}:e.subject&&we(e.subject,Qa).some(s=>n.some(o=>re(s,o.relation)))?{style:"dotted",undirected:t}:{style:"solid",undirected:t}}function qn(r,e,n){let t=Ft(n);if(!t)return _n("the band declares no look.source");let a=Tt(r,n);if(a.length===0)return _n("the band declares no look.connectors \u2014 nothing can be a message");let s=dt(e,t);if(!s)return{..._n(),sourceAbsent:!0};if(!(s instanceof Ne))return _n(`look.source ${W(t)} is not a Markdown-ranged property \u2014 the order of a sequence comes from prose [[references]]`);let o=[],i=[],c=0;for(let h of s.links){if(!h.target)continue;let b=h.target.subject,m=ce(r,b)[0];m&&($n(r,m)!==void 0?a.some(y=>re(b,y.relation))?o.push({kind:"selector",relation:b}):i.push(b):(o.push({kind:"participant",subject:m}),c++))}let l=[],d=[],f,p;for(let h of o){if(h.kind==="selector"){p=h.relation;continue}let b=h.subject;if(f){let m=p?a.filter(T=>re(p,T.relation)):a,y=_e(b),v=_e(f),E=[],K=[];for(let T of m){let{style:x,undirected:w}=Vt(r,T,a);y&&we(f,T.relation).some(G=>W(G)===W(y))?E.push({from:f,to:b,relation:T.relation,style:x,undirected:w}):v&&we(b,T.relation).some(G=>W(G)===W(v))&&K.push({from:b,to:f,relation:T.relation,style:x,undirected:w})}let O=E.length>0?E:K;l.push(...O),O.length===0&&Ve(f)!==Ve(b)&&d.push({prev:f,next:b,selected:p}),p=void 0}f=b}let k=new Map;for(let h of Pt(r,n))k.set(Ve(h),h);for(let h of l)k.has(Ve(h.from))||k.set(Ve(h.from),h.from),k.has(Ve(h.to))||k.set(Ve(h.to),h.to);return{messages:l,gaps:d,lifelines:[...k.values()],mentions:c,strayPropertyRefs:i,sourceAbsent:!1}}function Ve(r){return`${r.namespace}/${r.name}`}function _n(r){return{messages:[],gaps:[],lifelines:[],mentions:0,strayPropertyRefs:[],sourceAbsent:!1,...r?{problem:r}:{}}}var Ja="kanonak.org",Za="core-shacl",$e=r=>({publisher:Ja,package_:Za,name:r}),er=$e("NodeShape"),nr=$e("targetClass"),tr=$e("property"),ar=$e("path"),rr=$e("minCount"),sr=$e("maxCount"),or=$e("in"),ir=$e("pattern"),cr=$e("flags"),lr=$e("minLength"),ur=$e("maxLength"),dr=$e("minInclusive"),fr=$e("maxInclusive"),pr=$e("message");function tn(r){return typeof r=="number"?r:void 0}function mr(r){let e={},n=tn(We(r,rr)),t=tn(We(r,sr));n!==void 0&&(e.minCount=n),t!==void 0&&(e.maxCount=t);let a=tn(We(r,lr)),s=tn(We(r,ur));a!==void 0&&(e.minLength=a),s!==void 0&&(e.maxLength=s);let o=tn(We(r,dr)),i=tn(We(r,fr));o!==void 0&&(e.minInclusive=o),i!==void 0&&(e.maxInclusive=i);let c=Ee(r,ir);if(c!==void 0){let f=Ee(r,cr);e.pattern=f!==void 0?{regex:c,flags:f}:{regex:c}}let l=Fe(r,or).map(f=>f.item).filter(f=>"literal"in f).map(f=>f.value);l.length>0&&(e.enumValues=l);let d=Ee(r,pr);return d!==void 0&&(e.message=d),e}function kr(r,e){let n=[];for(let{item:t}of Fe(e,tr))if(t instanceof D)n.push(t);else if(t instanceof I){let a=ze(r,t.subject);a&&n.push(a)}return n}function gr(r){let e=new Map;for(let n of r){if(!(n instanceof z)||!_(n,er))continue;let t=xe(n,nr);if(!t)continue;let a=W(t);for(let s of kr(r,n)){let o=xe(s,ar);if(!o)continue;let i=mr(s);if(hr(s,i))continue;let c={pathKey:W(o),constraints:i},l=e.get(a);l?l.push(c):e.set(a,[c])}}return e}var At=new WeakMap;function pn(r){let e=At.get(r);return e||(e=gr(r),At.set(r,e)),e}function hr(r,e){return ln(r,pt)||ln(r,mt)?Object.keys(e).every(t=>t==="message"):!1}function br(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 Mt(r,e,n){let t=W(n),a=!1,s={};for(let o=e.length-1;o>=0;o--){let i=r.get(W(e[o]));if(i)for(let c of i)c.pathKey===t&&(a=!0,br(s,c.constraints))}if(a)return s.cardinality=s.maxCount===1?"single":"list",s.required=(s.minCount??0)>=1,s}var Qe="kanonak.org",Kn="core-rdf",Nt="core-xsd",yr={publisher:Qe,package_:Kn,name:"subClassOf"},Dt={publisher:Qe,package_:Kn,name:"label"},Bt={publisher:Qe,package_:Kn,name:"comment"},Ht={publisher:Qe,package_:"core-owl",name:"oneOf"},qt=r=>r;function vr(r,e,n){if(e.publisher===Qe&&e.package_===Kn&&e.name==="Literal")return{kind:"datatype",uri:e};let a=ze(r,e);if(a){let s=qt(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_===Nt?{kind:"datatype",uri:e}:n==="datatype"?{kind:"datatype",uri:e}:{kind:"class",uri:e,localName:e.name}}function $r(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=vr(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,Nt,r);function Sr(r){return typeof r=="boolean"?jn("boolean"):typeof r=="number"?Number.isInteger(r)?jn("integer"):jn("decimal"):jn("string")}function wr(r,e,n){let t=[];for(let a of vn(e,Ht,r,W(n)))if(a.kind==="subject"||a.kind==="unresolved"){let s=a.kind==="subject"?a.node:void 0,o=(s?_e(s):void 0)??a.uri,i=s?Ee(s,Dt):void 0,c=s?Ee(s,Bt):void 0;t.push({kind:"individual",uri:o,localName:o.name,...i!==void 0?{label:i}:{},...c!==void 0?{comment:c}:{}})}else a.kind==="literal"&&t.push({kind:"literal",value:a.value,datatype:Sr(a.value)});return t}function Rn(r,e,n,t){let a=nn(r,e),s=W(e);return gt(r,e).filter(i=>n?!0:i.domains.some(c=>W(c)===s)).map(i=>$r(r,i,Mt(t,a,i.uri)))}async function Li(r,e,n){let t=r.metadata?.namespace_;if(!t)throw new Error("buildOntologyModel: document has no namespace (publisher/package/version).");let a=n?.includeInherited??!1,s=Array.isArray(e)?e:await new Sn().parseKanonaks(e),o=pn(s),i=p=>p.publisher===t.publisher&&p.package_===t.package_&&!(p.version&&t.version&&!st(p.version,t.version)),c=[],l=[],d=new Set,f=!1;for(let p of s){if(!(p instanceof z))continue;let k=_e(p);if(!k||!i(k)||(f=!0,!en.isClassType(qt(p))))continue;let h=W(k);if(d.has(h))continue;d.add(h);let b=we(p,yr).map(v=>({uri:v,localName:v.name})),m=Ee(p,Dt),y=Ee(p,Bt);c.push({uri:k,localName:k.name,superClasses:b,properties:Rn(s,k,a,o),...m!==void 0?{label:m}:{},...y!==void 0?{comment:y}:{}}),ln(p,Ht)&&l.push({uri:k,localName:k.name,members:wr(s,p,k),...m!==void 0?{label:m}:{},...y!==void 0?{comment:y}:{}})}if(!f)throw new Error(`buildOntologyModel: ${t.toString()} is not in the ${Array.isArray(e)?"catalog":"repository"} \u2014 a model can only be built for a document ${Array.isArray(e)?"the catalog was parsed from":"the repository holds"}.`);return{classes:c,enums:l}}function 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],d=[];for(a++;a<n.length&&!/^(\s*)```\s*$/.test(n[a]);)d.push(n[a]),a++;a++;let f=d.join(`
4
+ `),p=l&&e.highlight?e.highlight(l,f):rn(f),k=l?` class="language-${zt(l)}"`:"";t.push(`<pre class="kan-code"><code${k}>${p}</code></pre>`);continue}let i=/^(#{1,6})\s+(.*)$/.exec(s);if(i){let l=i[1].length,d=an(i[2].trim());t.push(`<h${l}>${d}</h${l}>`),a++;continue}if(s.includes("|")&&a+1<n.length&&Gt(n[a+1])){let l=Gn(s),d=_r(n[a+1]);a+=2;let f=[];for(;a<n.length&&n[a].trim()!==""&&n[a].includes("|");)f.push(Gn(n[a])),a++;t.push(jr(l,d,f));continue}if(/^\s*[-*]\s+/.test(s)){let l=[];for(;a<n.length&&/^\s*[-*]\s+/.test(n[a]);){let d=[n[a].replace(/^\s*[-*]\s+/,"")];for(a++;a<n.length&&n[a].trim()!==""&&!/^\s*[-*]\s+/.test(n[a])&&!/^\s*\d+\.\s+/.test(n[a]);)d.push(n[a]),a++;a<n.length&&n[a].trim()===""&&a++,l.push(`<li>${an(d.join(" ").trim())}</li>`)}t.push(`<ul>
5
+ ${l.join(`
6
+ `)}
7
+ </ul>`);continue}if(/^\s*\d+\.\s+/.test(s)){let l=[];for(;a<n.length&&/^\s*\d+\.\s+/.test(n[a]);){let d=[n[a].replace(/^\s*\d+\.\s+/,"")];for(a++;a<n.length&&n[a].trim()!==""&&!/^\s*\d+\.\s+/.test(n[a])&&!/^\s*[-*]\s+/.test(n[a]);)d.push(n[a]),a++;a<n.length&&n[a].trim()===""&&a++,l.push(`<li>${an(d.join(" ").trim())}</li>`)}t.push(`<ol>
8
+ ${l.join(`
9
+ `)}
10
+ </ol>`);continue}let c=[s];for(a++;a<n.length&&n[a].trim()!==""&&!/^(#{1,6})\s+/.test(n[a])&&!/^(\s*)```/.test(n[a])&&!/^\s*[-*]\s+/.test(n[a])&&!/^\s*\d+\.\s+/.test(n[a])&&!(n[a].includes("|")&&a+1<n.length&&Gt(n[a+1]));)c.push(n[a]),a++;t.push(`<p>${an(c.join(" "))}</p>`)}return t.join(`
11
+ `)}function Gt(r){return r.includes("-")?/^[\s|:-]+$/.test(r):!1}function Gn(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 _r(r){return Gn(r).map(e=>{let n=e.startsWith(":"),t=e.endsWith(":");return n&&t?"center":t?"right":n?"left":null})}function jr(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="${zt(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 zt(r){return r.replace(/"/g,"&quot;").replace(/&/g,"&amp;")}var Kr={publisher:"kanonak.org",package_:"core-rdf",name:"label"};function Je(r){return typeof r=="object"&&r!==null&&r.kind==="raw-string"}var Ce=class extends Error{},kn=class{constructor(e,n,t=new Map){this.resolver=e;this.catalog=n;this.fragments=t}resolver;catalog;fragments;async evaluate(e,n){switch(e.kind){case"string-literal":return e.value;case"integer-literal":return e.value;case"decimal-literal":return e.value;case"boolean-literal":return e.value;case"uri-literal":return{...e.refTo};case"var-ref":{if(!n.has(e.varName))throw new Ce(`Unbound variable "${e.varName}"`);return n.get(e.varName)}case"concat":{let t=[];for(let a of e.parts){let s=await this.evaluate(a,n);if(s!=null)if(Array.isArray(s))for(let o of s)t.push(o);else t.push(s)}return t}case"fallback":{let t=await this.evaluate(e.primary,n);return Wt(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 Wt(t)}case"property-read":{let t=await this.evaluate(e.source,n);return En(t,e.readProp)}case"traverse":{let t=await this.evaluate(e.source,n);if(!(t instanceof Ie))return;let a=Er(t,e.through),s=[];for(let o of a){let i=ce(this.catalog,o),c=i.length>0?i:[await this.resolver.resolveSubject(o,this.catalog)];for(let l of c){if(!l)continue;let d=new Map(n);d.set("input",l);let f=await this.evaluate(e.step,d);if(f!=null&&He(f)!==""){s.push(He(f));break}}}return s.join("")}case"uri-name":{let t=await this.evaluate(e.source,n);return sn(t)?t.name:t instanceof I?t.subject.name:t instanceof z?t.name:t instanceof D?t.name??"":void 0}case"uri-publisher":{let t=await this.evaluate(e.source,n);return zn(t)?.publisher}case"uri-package":{let t=await this.evaluate(e.source,n);return zn(t)?.package_}case"uri-version":{let t=await this.evaluate(e.source,n);return zn(t)?.version}case"subject-uri":{let t=await this.evaluate(e.source,n);if(t instanceof z){let a=t.namespace??"",s=t.name??"";return!a||!s?void 0:`${a}/${s}`}if(t instanceof I){let a=t.subject,s=a.version;return s&&typeof s.major=="number"?`${a.publisher}/${a.package_}@${s.major}.${s.minor}.${s.patch}/${a.name}`:`${a.publisher}/${a.package_}/${a.name}`}return}case"display-label":{let t=await this.resolver.resolveSubject({...e.labelTarget},this.catalog);return t?En(t,e.labelSource):void 0}case"resolve-ref":{let t=await this.evaluate(e.source,n);return t instanceof z?t:t instanceof I?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?"":He(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?"":He(t)}}case"render-markdown":{let t=await this.evaluate(e.source,n);if(!(t instanceof Ie))return;let a;for(let o of t.statement){let i=Yn(o);if(i&&re(i,e.readProp)){a=o;break}}if(!(a instanceof Ne)){let o=En(t,e.readProp);return o==null?void 0:He(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;xr.has(o)&&(Array.isArray(s)&&s.every(i=>Yt(i))?s=s.map(i=>Xt(i)).join(""):Yt(s)&&(s=Xt(s))),t[o]=s}return t}case"call-fragment":{let t=this.fragments.get(e.fragmentKey);if(!t)throw new Ce(`ExpressionFragment ${e.fragmentKey} not found in registry`);return this.evaluate(t,n)}case"join":return(await this.evaluateList(e.source,n)).map(a=>a==null?"":He(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+=ge(s,"Sum");return a}case"min":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Ce("Min on an empty list is undefined; guard with IsSet");let a=ge(t[0],"Min");for(let s=1;s<t.length;s++){let o=ge(t[s],"Min");o<a&&(a=o)}return a}case"max":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Ce("Max on an empty list is undefined; guard with IsSet");let a=ge(t[0],"Max");for(let s=1;s<t.length;s++){let o=ge(t[s],"Max");o>a&&(a=o)}return a}case"average":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Ce("Average on an empty list is undefined; guard with IsSet");let a=0;for(let s of t)a+=ge(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,je(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,je(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,je(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,je(o));let c=await this.evaluate(e.partitionKey,i),l=Zt(c),d=a.get(l);d||(d={kind:"Partition",key:c,members:[]},a.set(l,d),s.push(l)),d.members.push(o)}return s.map(o=>a.get(o))}case"distinct-by":{let t=await this.evaluateList(e.source,n),a=new Set,s=[];for(let o of t){let i=new Map(n);i.set(e.loopVar,je(o));let c=await this.evaluate(e.distinctKey,i),l=Zt(c);a.has(l)||(a.add(l),s.push(o))}return s}case"all-statements":{let t=await this.evaluate(e.source,n);return t instanceof Ie?t.statement:[]}case"statement-predicate":{let t=await this.evaluate(e.source,n);if(Wn(t)){let a=t.predicate;if(a instanceof I)return a}return}case"statement-value":{let t=await this.evaluate(e.source,n);return Wn(t)?Vr(t):void 0}case"date-format":{let t=await this.evaluate(e.source,n),a=t==null?"":He(t);return a?Or(a,e.format):""}case"number-format":{let t=await this.evaluate(e.source,n),a=t==null?"":He(t);return a.trim()?Pr(a,e.style,e.fractionDigits,e.currencyCode):""}case"add":{let t=ge(await this.evaluate(e.left,n),"Add"),a=ge(await this.evaluate(e.right,n),"Add");return t+a}case"subtract":{let t=ge(await this.evaluate(e.left,n),"Subtract"),a=ge(await this.evaluate(e.right,n),"Subtract");return t-a}case"multiply":{let t=ge(await this.evaluate(e.left,n),"Multiply"),a=ge(await this.evaluate(e.right,n),"Multiply");return t*a}case"divide":{let t=ge(await this.evaluate(e.left,n),"Divide"),a=ge(await this.evaluate(e.right,n),"Divide");if(a===0)throw new Ce("Divide by zero; guard with When");return t/a}case"reverse":{if(e.source.kind==="reverse")return this.evaluate(e.source.source,n);let t=await this.evaluateReverseIterator(e.source,n);return t!==void 0?t:[...await this.evaluateList(e.source,n)].reverse()}case"windowed-map":{let t=await this.evaluateList(e.source,n);if(t.length<e.windowSize)return[];let a=[];for(let s=0;s+e.windowSize<=t.length;s++){let o=t.slice(s,s+e.windowSize),i=new Map(n);i.set(e.windowVar,o);let c=await this.evaluate(e.windowBody,i);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}case"pairwise-map":{let t=await this.evaluateList(e.source,n);if(t.length<2)return[];let a=[];for(let s=0;s+1<t.length;s++){let o=new Map(n);o.set(e.firstVar,je(t[s])),o.set(e.secondVar,je(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,je(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 Qt(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(Qt(s,a))return!0;return!1}case"abs":{let t=ge(await this.evaluate(e.value,n),"Abs");return Math.abs(t)}case"negate":return-ge(await this.evaluate(e.value,n),"Negate");case"is-reference":{let t=await this.evaluate(e.check,n);return t instanceof I||t instanceof z}case"is-embedded":return await this.evaluate(e.check,n)instanceof D;case"is-list":{let t=await this.evaluate(e.check,n);return Array.isArray(t)}case"is-string":return typeof await this.evaluate(e.check,n)=="string";case"is-number":return typeof await this.evaluate(e.check,n)=="number";case"is-boolean":return typeof await this.evaluate(e.check,n)=="boolean";case"statement-object":{let t=await this.evaluate(e.source,n);if(!Wn(t))return;let a=t;return a instanceof ae||a instanceof he||a instanceof ke||a instanceof J||a instanceof oe||a instanceof ie?a.object:void 0}case"let":{let t=await this.evaluate(e.bindValue,n),a=new Map(n);return a.set(e.bindName,t),this.evaluate(e.body,a)}case"get-statement-by-name":{let t=await this.evaluate(e.inSubject,n),a=await this.evaluate(e.byName,n);if(!(t instanceof Ie)||typeof a!="string")return;for(let s of t.statement)if(s.predicate?.subject?.name===a)return s;return}default:{let t=e;throw new Ce("Unknown expression kind")}}}async renderMarkdownLinks(e){let n=e.object,t="",a=0;for(let s of e.links){if(t+=n.slice(a,s.startOffset),s.target){let o=s.target.subject,i=s.displayText??await this.resolveLabel(o)??o.name;t+=`[${i}](${lt(o)})`}else t+=s.displayText??s.reference;a=s.endOffset}return t+=n.slice(a),t}async resolveLabel(e){let n=await this.resolver.resolveSubject(e,this.catalog);if(!n)return;let t=En(n,Kr);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,je(t[s-1])),o.set(e.secondVar,je(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,je(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,je(t[s])),a.push(await this.evaluate(e.mapBody,o))}return a}if(e.kind==="windowed-map"){let t=await this.evaluateList(e.source,n);if(t.length<e.windowSize)return[];let a=[];for(let s=t.length-e.windowSize;s>=0;s--){let o=t.slice(s,s+e.windowSize),i=new Map(n);i.set(e.windowVar,o);let c=await this.evaluate(e.windowBody,i);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}}};function En(r,e){if(r instanceof Ie)return Rr(r,e);if(Lr(r))return re(e,u.key)?r.key:re(e,u.members)?r.members:void 0}function Rr(r,e){for(let n of r.statement){let t=Yn(n);if(!(!t||!re(t,e))&&(n instanceof ae||n instanceof he||n instanceof ke||n instanceof J||n instanceof oe||n instanceof ie))return n.object}}function Er(r,e){let n=[];for(let t of r.statement){let a=Yn(t);if(!(!a||!re(a,e))){if(t instanceof J)n.push(t.object.subject);else if(t instanceof ie)for(let s of t.object)s instanceof I&&n.push(s.subject)}}return n}function Yn(r){return r.predicate?.subject}function He(r){if(r==null)return"";if(typeof r=="string")return r;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Je(r))return r.value;if(r instanceof Ie)return r.name??"";if(r instanceof I)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 je(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)&&!(r instanceof Ie)&&!(r instanceof I)&&!(r instanceof D)&&"value"in r?r.value:r}function Wt(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 Lr(r){return typeof r=="object"&&r!==null&&r.kind==="Partition"&&Array.isArray(r.members)}function ge(r,e){if(typeof r=="number"&&Number.isFinite(r))return r;throw new Ce(`${e} requires numeric elements; got ${Cr(r)}`)}function zn(r){if(r instanceof z){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 I){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 xr=new Set(["stringValue","text","rawContent","key","propertyKey","linkLabel"]);function Yt(r){return typeof r=="string"||typeof r=="number"||typeof r=="boolean"||Je(r)}function Xt(r){return Je(r)?r.value:String(r)}function Cr(r){return r===void 0?"undefined":r===null?"null":Array.isArray(r)?`array(${r.length})`:typeof r}function Or(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 Ur={USD:"$",EUR:"\u20AC",GBP:"\xA3",JPY:"\xA5"},Ir={decimal:0,currency:0,compact:0,percent:2,"basis-points":4};function Fr(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 Tr(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 Pr(r,e,n,t){let a=Number(r.trim());if(!Number.isFinite(a))return"";let s=/e/i.test(r.trim())?a.toFixed(20).replace(/0+$/,""):r.trim();if(e==="compact"){let i=Math.abs(a),c=[[1e12,"T"],[1e9,"B"],[1e6,"M"],[1e3,"K"]];for(let[l,d]of c)if(i>=l){let f=a/l;return`${n===void 0?String(Number(f.toFixed(1))):f.toFixed(n)}${d}`}return n===void 0?String(a):a.toFixed(n)}let o=Fr(s,Ir[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=Ur[i]??`${i} `,l=o.startsWith("-");return`${l?"-":""}${c}${Tr(l?o.slice(1):o)}`}default:return o}}function Qt(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=Jt(r),i=Jt(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 Jt(r){if(r instanceof I){let e=r.subject;return{publisher:e.publisher,package_:e.package_,name:e.name}}if(r instanceof z){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 Wn(r){return r instanceof ae||r instanceof he||r instanceof ke||r instanceof J||r instanceof oe||r instanceof ie}function Vr(r){return r instanceof ae||r instanceof he||r instanceof ke?String(r.object??""):r instanceof J?r.object?.subject?.name??"":r instanceof oe?"[embedded]":r instanceof ie?(r.object??[]).map(n=>{if(n instanceof I)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 Zt(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 I){let e=r.subject;return`r:${e.publisher}/${e.package_}/${e.name}`}if(r instanceof Ie){let e=r.name??"";return`k:${r.namespace??""}/${e}`}return sn(r)?`u:${r.publisher}/${r.package_}/${r.name}`:`o:${JSON.stringify(r)}`}var Ln=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=ze(n,e);if(t)return t;let a=e.version,s=a&&typeof a.major=="number"?`@${a.major}.${a.minor}.${a.patch}`:"",o=`${e.publisher}/${e.package_}${s}`,i=this.cache.get(o);if(!i){let l=await this.repository.getDocumentsByNamespaceAsync(e.publisher,e.package_);if(l.length===0)return;let d=a&&typeof a.major=="number"?l.find(p=>{let k=p.metadata?.namespace_?.version;return k&&k.major===a.major&&k.minor===a.minor&&k.patch===a.patch})??l[0]:l[0],f=new kt(d,this.repository);i=await this.objectParser.parseKanonaks(f),this.cache.set(o,i)}let c=ze(i,e);if(c)return c;for(let l of i)if(l instanceof z&&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"},Pn={publisher:"kanonak.org",package_:"derivation",name:"tokens"},Le={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},Xn={publisher:"kanonak.org",package_:"core-rdf",name:"label"},ea={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},Ar={publisher:"kanonak.org",package_:"core-rdf",name:"range"},Mr={publisher:"kanonak.org",package_:"core-rdf",name:"Class"},Nr={publisher:"kanonak.org",package_:"core-owl",name:"Class"},Dr={publisher:"kanonak.org",package_:"look",name:"Hero"},Br={publisher:"kanonak.org",package_:"look",name:"PropertyList"},Hr={publisher:"kanonak.org",package_:"look",name:"PropertyTable"},qr={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},Gr={publisher:"kanonak.org",package_:"look",name:"ChipRow"},zr={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},Wr={publisher:"kanonak.org",package_:"look",name:"ReferencedBy"},Yr={publisher:"kanonak.org",package_:"look",name:"Instances"},na={publisher:"kanonak.org",package_:"look",name:"Markdown"},Xr={publisher:"kanonak.org",package_:"look",name:"NavGroup"},Qr={publisher:"kanonak.org",package_:"look",name:"nav"},Qn={publisher:"kanonak.org",package_:"look",name:"NavLink"},Jr={publisher:"kanonak.org",package_:"look",name:"footer"},Zr={publisher:"kanonak.org",package_:"look",name:"text"},es={publisher:"kanonak.org",package_:"look",name:"links"},ta={publisher:"kanonak.org",package_:"look",name:"target"},ns={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},ts={publisher:"kanonak.org",package_:"look",name:"Timeline"},as={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},rs={publisher:"kanonak.org",package_:"look",name:"Figure"},ss={publisher:"kanonak.org",package_:"look",name:"Diagram"},os={publisher:"kanonak.org",package_:"look",name:"facets"},is={publisher:"kanonak.org",package_:"look",name:"relation"},cs={publisher:"kanonak.org",package_:"look",name:"encode"},ls={publisher:"kanonak.org",package_:"look",name:"cluster"},us={publisher:"kanonak.org",package_:"look",name:"connector"},ds={publisher:"kanonak.org",package_:"look",name:"channels"},fs={publisher:"kanonak.org",package_:"look",name:"mapPath"},ps={publisher:"kanonak.org",package_:"look",name:"to"},ms={publisher:"kanonak.org",package_:"look",name:"mark"},ks={publisher:"kanonak.org",package_:"look",name:"expand"},gs={publisher:"kanonak.org",package_:"look",name:"edges"},aa={publisher:"kanonak.org",package_:"look",name:"nodeTier"},hs={publisher:"kanonak.org",package_:"look",name:"diagramTier"},bs={publisher:"kanonak.org",package_:"look",name:"nodeNote"},ys={publisher:"kanonak.org",package_:"look",name:"Sequence"},vs={publisher:"kanonak.org",package_:"look",name:"numbered"},$s={publisher:"kanonak.org",package_:"look",name:"EntityRelationship"},Ss={publisher:"kanonak.org",package_:"core-owl",name:"SymmetricProperty"},ws={publisher:"kanonak.org",package_:"core-owl",name:"FunctionalProperty"},_s={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},js={publisher:"kanonak.org",package_:"look",name:"edgeLabel"},Ks={publisher:"kanonak.org",package_:"look",name:"labelEdges"},Rs={publisher:"kanonak.org",package_:"look",name:"edgeValue"},Es={publisher:"kanonak.org",package_:"look",name:"figureTitle"},Ls={publisher:"kanonak.org",package_:"look",name:"titlePosition"},xs=`(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
+ })();`,Ae={chip:56,icon:120,card:240,full:420},Cs=["chip","icon","card","full"],Os={56:"chip",120:"icon",240:"card",420:"full"},de=11,Us={publisher:"kanonak.org",package_:"look",name:"placement"},Is={publisher:"kanonak.org",package_:"look",name:"width"},Fs=4,Ts={publisher:"kanonak.org",package_:"look",name:"StatRow"},Ps={publisher:"kanonak.org",package_:"look",name:"Horizon"},Vs={publisher:"kanonak.org",package_:"look",name:"PackageContents"},Jn={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},As={publisher:"kanonak.org",package_:"core-kanonak",name:"Publisher"},Ms={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},Ns={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},Ds={publisher:"kanonak.org",package_:"look",name:"packages"},Bs={publisher:"kanonak.org",package_:"code-grammars",name:"CodeGrammar"},Hs={publisher:"kanonak.org",package_:"code-grammars",name:"language"},qs={publisher:"kanonak.org",package_:"code-grammars",name:"rule"},Gs={publisher:"kanonak.org",package_:"code-grammars",name:"tokenClass"},zs={publisher:"kanonak.org",package_:"code-grammars",name:"pattern"},Ws={publisher:"kanonak.org",package_:"look",name:"Links"},Ys={publisher:"kanonak.org",package_:"link",name:"url"},Xs={publisher:"kanonak.org",package_:"link",name:"links"};var Qs={publisher:"kanonak.org",package_:"look",name:"Distribution"},Js={publisher:"kanonak.org",package_:"look",name:"alphaPath"},Zs={publisher:"kanonak.org",package_:"look",name:"betaPath"},Zn={publisher:"kanonak.org",package_:"look",name:"SectionHeading"},eo={publisher:"kanonak.org",package_:"look",name:"SectionNav"},ra={publisher:"kanonak.org",package_:"look",name:"heading"},no={publisher:"kanonak.org",package_:"look",name:"note"},to={publisher:"kanonak.org",package_:"look",name:"VersionDelta"},ao={publisher:"kanonak.org",package_:"look",name:"TimePlot"},ro={publisher:"kanonak.org",package_:"look",name:"Details"},so={publisher:"kanonak.org",package_:"look",name:"EmbeddedViews"},oo={publisher:"kanonak.org",package_:"look",name:"ResourceCount"},io={publisher:"kanonak.org",package_:"look",name:"counts"},co={publisher:"kanonak.org",package_:"look",name:"skip"},sa={publisher:"kanonak.org",package_:"derivation",name:"derivations"},lo={publisher:"kanonak.org",package_:"look",name:"laneBy"},uo={publisher:"kanonak.org",package_:"look",name:"stats"},fo={publisher:"kanonak.org",package_:"look",name:"statPath"},po={publisher:"kanonak.org",package_:"look",name:"statLabel"},oa={publisher:"kanonak.org",package_:"look",name:"labelPath"},mo={publisher:"kanonak.org",package_:"look",name:"badgePath"},ia={publisher:"kanonak.org",package_:"look",name:"BarMeter"},ko={publisher:"kanonak.org",package_:"look",name:"cellAs"},go={publisher:"kanonak.org",package_:"look",name:"variants"},ho={publisher:"kanonak.org",package_:"look",name:"when"},bo={publisher:"kanonak.org",package_:"look",name:"property"},ca={publisher:"kanonak.org",package_:"look",name:"equals"},yo={publisher:"kanonak.org",package_:"look",name:"ResourceQuery"},vo={publisher:"kanonak.org",package_:"look",name:"ofClass"},$o={publisher:"kanonak.org",package_:"look",name:"direction"},So={publisher:"kanonak.org",package_:"look",name:"limit"},Cn={publisher:"kanonak.org",package_:"look",name:"orderBy"},la={publisher:"kanonak.org",package_:"look",name:"track"},gn={publisher:"kanonak.org",package_:"look",name:"metricPath"},et={publisher:"kanonak.org",package_:"look",name:"hueBy"},ua={publisher:"kanonak.org",package_:"look",name:"lowerPath"},da={publisher:"kanonak.org",package_:"look",name:"upperPath"},wo={publisher:"kanonak.org",package_:"look",name:"axisMin"},_o={publisher:"kanonak.org",package_:"look",name:"axisMax"},jo={publisher:"kanonak.org",package_:"look",name:"valueLabel"};var fa={publisher:"kanonak.org",package_:"look",name:"semanticSvg"},Ko={publisher:"kanonak.org",package_:"look",name:"tierChip"},Ro={publisher:"kanonak.org",package_:"look",name:"tierIcon"},Eo={publisher:"kanonak.org",package_:"look",name:"tierCard"},Lo={publisher:"kanonak.org",package_:"look",name:"tierFull"},qe={publisher:"kanonak.org",package_:"core-rdf",name:"type"},rt={publisher:"kanonak.org",package_:"core-rdf",name:"subClassOf"},pa=6,xo={publisher:"kanonak.org",package_:"look",name:"bands"},Co={publisher:"kanonak.org",package_:"look",name:"title"},Oo={publisher:"kanonak.org",package_:"look",name:"eyebrow"},Uo={publisher:"kanonak.org",package_:"look",name:"subtitle"},ma={publisher:"kanonak.org",package_:"look",name:"badges"},pe={publisher:"kanonak.org",package_:"look",name:"source"},Io={publisher:"kanonak.org",package_:"look",name:"via"},Fo={publisher:"kanonak.org",package_:"look",name:"size"},To={publisher:"kanonak.org",package_:"look",name:"icon"},Po={publisher:"kanonak.org",package_:"look",name:"avatar"},Vo={publisher:"kanonak.org",package_:"look",name:"contents"},Ao={publisher:"kanonak.org",package_:"look",name:"transitive"},Mo={publisher:"kanonak.org",package_:"look",name:"chips"},ka={publisher:"kanonak.org",package_:"look",name:"entries"},No={publisher:"kanonak.org",package_:"look",name:"urlForm"},An=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 ht.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=Ho(e)?void 0:On(e);return n?{declaration:n,sourceClass:{publisher:le(e),package_:this.uriOf(e).package_,name:e.name}}:this.lookFromTypeRefs(be(e))}lookFromTypeRefs(e){let n=new Set,t=[...e];for(;t.length>0;){let s=t.shift().subject,o=Q(s);if(n.has(o))continue;n.add(o);let i=ce(this.catalog,s);for(let c of i){let l=On(c);if(l)return{declaration:l,sourceClass:{publisher:s.publisher,package_:s.package_,name:s.name}}}for(let c of i)for(let l of In(c))t.push(l)}if(!n.has(Q(Le)))for(let a of ce(this.catalog,Le)){let s=On(a);if(s)return{declaration:s,sourceClass:{...Le}}}}matchingVariants(e){let n=this.findCascadedLook(e);if(!n)return[];let t=this.valueItems(n.declaration,go).filter(i=>i instanceof D);if(t.length===0)return[];let a=ee(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,ho);if(!c)continue;let l=B(c,bo);if(!l)continue;let d=B(c,ca);if(d){this.valueItems(e,l).filter(k=>k instanceof I).some(k=>Q(k.subject)===Q(d))&&o.push({variant:i,declaredBy:s});continue}let f=Z(c,ca);f!==void 0&&this.readPropertyValueText(e,l)===f&&o.push({variant:i,declaredBy:s})}return o}findCascadedTokens(e){let n=this.explainCascadedTokens(e),t=new Map;for(let[a,s]of n)t.set(a,s.value);return t}explainCascadedTokens(e){let n=new Map,t=(i,c,l)=>{for(let[d,f]of Do(i))n.has(d)||n.set(d,{value:f,sourceNamespace:l?.namespace??i.namespace??"",sourceName:l?.name??i.name,level:c})};t(e,"instance");for(let{variant:i,declaredBy:c}of this.matchingVariants(e))t(i,"variant",c);let a=new Set,s=be(e);for(;s.length>0;){let i=s.shift(),c=Q(i.subject);if(a.has(c))continue;a.add(c);let l=c===Q(Le)?"resource-floor":"class",d=ce(this.catalog,i.subject);if(d.length!==0)for(let f of d){t(f,l);for(let p of In(f))s.push(p)}}let o=le(e);if(o){let i=this.publisherSubject(o);i!==e&&t(i,"publisher")}if(!a.has(Q(Le))){let i=ce(this.catalog,Le);for(let c of i)t(c,"resource-floor")}return n}async renderSvg(e){let n=H(this.catalog,e).label,t=(n.trim().charAt(0)||"?").toUpperCase(),a=`${e.namespace??""}/${e.name}`,s=this.collectCascadedSvgTiers(e),o=new Map([["input",e],["label",n],["firstLetter",t],["uri",a],["resourceKey",e.name]]),i=await this.evaluateTier(s.tierChip,o),c=await this.evaluateTier(s.tierIcon,o),l=await this.evaluateTier(s.tierCard,o),d=await this.evaluateTier(s.tierFull,o),p=[...this.findCascadedTokens(e)].map(([k,h])=>`--kan-${k}: ${h};`).join(" ");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" style="${Oe(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">${d}</g>
77
+ </svg>`}resolverInstance;expressionResolver(){if(!this.resolverInstance){let e=new ct,n=new it(e);this.resolverInstance=new Ln(n,e,new Sn(e))}return this.resolverInstance}async evaluateTier(e,n){if(!e)return"";let t;try{t=Te(e,"semanticSvg-tier",{catalog:this.catalog,depth:0})}catch(o){return this.noteExpressionFailure("look.semanticSvg tier",o)}let a=new kn(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(ba(i.kind,c))}return o.join("")}let s=await a.evaluate(t,n);return ba(t.kind,s)}async evaluateCarrier(e,n){if(!e)return;let t;try{t=Te(e,"look-carrier",{catalog:this.catalog,depth:0})}catch(c){this.noteExpressionFailure("look band path carrier",c);return}let a=new kn(this.expressionResolver(),this.catalog),s=new Map([["input",n]]),o=await a.evaluate(t,s),i=Sa(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=Ke(e,n);return t instanceof oe&&t.object instanceof D?t.object:void 0}referenceLabel(e){let n=e.subject,t=ce(this.catalog,n);if(t.length===0){let a=ee(this.catalog,n);a&&t.push(a)}for(let a of t){let s=H(this.catalog,a);if(s.label!==a.name)return s.label}return n.name}collectCascadedSvgTiers(e){let n={},t=c=>{let l=Ke(c,fa);if(!(l instanceof oe))return;let d=l.object,f=Un(d,Ko),p=Un(d,Ro),k=Un(d,Eo),h=Un(d,Lo);n.tierChip===void 0&&f!==void 0&&(n.tierChip=f),n.tierIcon===void 0&&p!==void 0&&(n.tierIcon=p),n.tierCard===void 0&&k!==void 0&&(n.tierCard=k),n.tierFull===void 0&&h!==void 0&&(n.tierFull=h)};t(e);let a=e.namespace||"",s=a.indexOf("/");if(s>=0){let c=a.indexOf("@"),l={publisher:a.slice(0,s),package_:a.slice(s+1,c>=0?c:a.length),name:e.name};for(let d of ce(this.catalog,l))t(d)}let o=new Set,i=be(e);for(;i.length>0;){let c=i.shift(),l=Q(c.subject);if(o.has(l))continue;o.add(l);let d=ce(this.catalog,c.subject);for(let f of d){t(f);for(let p of In(f))i.push(p)}}if(!o.has(Q(Le)))for(let c of ce(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`${qo(n)}
81
+ ${a}
82
+ ${s}`}explainStylesheet(e){let n=this.explainCascadedTokens(e),t=this.explainBaseStylesheet(le(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 z)||f.name!=="base-stylesheet")continue;let p=f.namespace||"";if(p.startsWith(`${e}/look-styles@`)){a.push(p);let k=t(f);k&&(!o||hn(k,o)>0)&&(s=f,o=k)}else if(p.startsWith("kanonak.org/look-styles@")){a.push(p);let k=t(f);k&&(!c||hn(k,c)>0)&&(i=f,c=k)}}let l=s??i;if(!l)return{problem:"no-look-styles-in-catalog",candidates:a};let d=l===s?"publisher-override":"universal-default";for(let f of l.statement){let p=f.predicate?.subject;if(!p)continue;if(`${p.publisher}/${p.package_}/${p.name}`===n&&f instanceof ae)return{css:f.object,sourceNamespace:l.namespace||"",scope:d,candidates:a}}return{problem:"content-property-unresolved",sourceNamespace:l.namespace||"",scope:d,candidates:a}}async renderHtml(e){let n=this.findCascadedLook(e);if(!n)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let t=nt(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=le(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,Zn)&&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=Z(e,Us);if(t!=="floatLeft"&&t!=="floatRight")return n;let a=t==="floatLeft"?"left":"right",s=Z(e,Is),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,Zn))continue;let s=Z(t,ra);s&&n.push({slug:ya(s),label:s})}return n}publisherSubject(e){for(let t of this.catalog){if(!(t instanceof z)||le(t)!==e||!be(t).some(s=>X(s.subject,As)))continue;return ce(this.catalog,{publisher:e,package_:this.uriOf(t).package_,name:t.name})[0]??t}let n=new z;return n.namespace=e,n.name=e,n.statement=[J.parse("kanonak.org/core-rdf/type","kanonak.org/core-kanonak/Publisher"),ae.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===Jn.publisher&&a.package_===Jn.package_&&a.name===Jn.name)(n.sourceClass):!1}renderPackageVersionList(e,n,t){let a=le(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=H(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=le(e),c=this.renderNavGroup(e,i),l=this.renderSiteFooter(i),d=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
+ ${d}
118
+ <main class="kan-main">
119
+ ${o}${t}
120
+ </main>
121
+ ${l}
122
+ </body>
123
+ </html>
124
+ `}hasSvgDerivation(e){let n=new Set,t=be(e);for(;t.length>0;){let a=t.shift(),s=Q(a.subject);if(n.has(s))continue;n.add(s);let o=ee(this.catalog,a.subject);if(o){for(let i of this.valueItems(o,sa))if(i instanceof D)for(let c of i.statement){if(!(c instanceof J)||!Me(c,"kanonak.org","derivation","format")||!(c.object instanceof I))continue;let l=c.object.subject;if(l.publisher==="kanonak.org"&&l.package_==="formats"&&l.name==="svg")return!0}for(let i of In(o))t.push(i)}}return!1}static BAND_DISPATCH=[[eo,(e,n)=>e.renderSectionNav(n.sections)],[Dr,(e,n)=>e.renderHero(n.band,n.instance,n.contextPublisher)],[Br,(e,n)=>e.renderPropertyList(n.band,n.instance,n.contextPublisher)],[Hr,(e,n)=>e.renderPropertyTable(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[qr,(e,n)=>e.renderBadgeRow(n.band,n.instance,n.contextPublisher)],[Gr,(e,n)=>e.renderChipRow(n.band,n.instance,n.contextPublisher)],[zr,(e,n)=>e.renderReferenceList(n.band,n.instance,n.contextPublisher)],[Wr,(e,n)=>e.renderReferencedBy(n.band,n.instance,n.contextPublisher)],[Yr,(e,n)=>e.renderInstances(n.band,n.instance,n.contextPublisher)],[na,(e,n)=>e.renderMarkdown(n.band,n.instance,n.contextPublisher)],[Ws,(e,n)=>e.renderLinks(n.band,n.instance)],[Xr,(e,n)=>e.renderNavGroup(n.instance,n.contextPublisher)],[ns,(e,n)=>e.renderResourceGrid(n.band,n.contextPublisher,n.instance)],[ts,(e,n)=>e.renderTimeline(n.band,n.contextPublisher)],[as,(e,n)=>e.renderVersionDiff(n.band,n.contextPublisher)],[rs,(e,n)=>e.renderFigure(n.band,n.instance,n.contextPublisher)],[ss,(e,n)=>e.renderDiagram(n.band,n.instance,n.contextPublisher)],[ys,(e,n)=>e.renderSequence(n.band,n.instance,n.contextPublisher)],[$s,(e,n)=>e.renderEntityRelationship(n.band,n.instance,n.contextPublisher)],[Ts,(e,n)=>e.renderStatRow(n.band,n.instance)],[Ps,(e,n)=>e.renderHorizon(n.band,n.instance,n.contextPublisher)],[Vs,(e,n)=>e.renderPackageContents(n.instance,n.contextPublisher)],[Ms,(e,n)=>e.renderFeaturedResource(n.band,n.contextPublisher)],[Ns,(e,n)=>e.renderPublisherPackages(n.band,n.contextPublisher)],[Qs,(e,n)=>e.renderDistribution(n.band,n.instance)],[Zn,(e,n)=>e.renderSectionHeading(n.band)],[to,(e,n)=>e.renderVersionDelta(n.band,n.instance)],[ao,(e,n)=>e.renderTimePlot(n.band,n.instance,n.contextPublisher)],[ro,(e,n)=>e.renderDetails(n.band,n.instance,n.contextPublisher)],[so,(e,n)=>e.renderEmbeddedViews(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[oo,(e,n)=>e.renderResourceCount(n.band,n.contextPublisher)],[ia,(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:le(e),package_:"",name:e.name}}async renderBand(e,n,t,a=[],s=""){let o=on(e);if(!o)return"<!-- LookRenderer: band has no rdf:type -->";let i={band:e,instance:n,contextPublisher:t,sections:a,pathPrefix:s};for(let[c,l]of r.BAND_DISPATCH)if(X(o,c))return l(this,i);return`<!-- LookRenderer: unsupported band ${o.publisher}/${o.package_}/${o.name} -->`}async collectTrackedSeries(e,n,t,a){let{hueBy:s,lowerPath:o,upperPath:i}=a??{},c=new Map,l=e.length;for(let d=0;d<e.length;d++){let f=e[d],p=this.readPropertyValueReferences(f,n);for(let k of p){let h=ee(this.catalog,{publisher:k.subject.publisher,package_:k.subject.package_,name:k.subject.name,...k.subject.version?{version:k.subject.version}:{}});if(!h)continue;let b=k.subject.name,m=c.get(b);m||(m={key:b,label:H(this.catalog,h).label,points:new Array(l).fill(null),...o?{lower:new Array(l).fill(null)}:{},...i?{upper:new Array(l).fill(null)}:{}},c.set(b,m));let y=await this.evaluateCarrierNum(t,h);if(Number.isFinite(y)&&(m.points[d]=y),o&&m.lower){let v=await this.evaluateCarrierNum(o,h);Number.isFinite(v)&&(m.lower[d]=v)}if(i&&m.upper){let v=await this.evaluateCarrierNum(i,h);Number.isFinite(v)&&(m.upper[d]=v)}if(s){let v=await this.evaluateCarrierNum(s,h);Number.isFinite(v)&&(m.hue=v)}m.lastSubject=h}}return[...c.values()]}hrefForSubject(e,n,t="="){let a=this.uriOf(e),s=a.package_,o=a.version;return this.resourceHref({publisher:le(e),package_:s,name:e.name,...o?{version:o}:{}},n,t)}async renderVersionDiff(e,n){let t=B(e,pe);if(!t)return"<!-- LookRenderer.VersionDiff: no look.source -->";let a=this.readEmbeddedCarrier(e,gn),s=B(e,la);if(!s||!a)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let o=B(e,Cn),i=this.readEmbeddedCarrier(e,et),c=this.findInstancesOfClass(t,this.readTransitive(e));if(c.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let l=k=>o?this.readPropertyValueText(k,o)??"":"",d=c.slice().sort((k,h)=>l(k).localeCompare(l(h))),f=await this.collectTrackedSeries(d,s,a,{hueBy:i});return f.length===0?"<!-- LookRenderer.VersionDiff: no tracked series -->":`<section class="kan-vdiff">${f.map((k,h)=>{let b=k.hue!==void 0?k.hue:Math.round(h*360/f.length),m=k.points.filter(T=>T!==null);if(m.length===0)return"";let y=m[0],v=m[m.length-1],E=v-y,K;if(Math.abs(E)>=.005){let T=E>0?"up":"down",x=E>0?"\u25B2":"\u25BC";K=`<span class="kan-vdiff-delta ${T}">${E>0?"+":""}${E.toFixed(2)} ${x}</span>`}else K='<span class="kan-vdiff-delta flat">\u2014</span>';let O=k.lastSubject&&this.isLinkable(le(k.lastSubject),n)?`<a href="${g(this.hrefForSubject(k.lastSubject,n))}">${g(k.label)}</a>`:g(k.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${b}"><span class="kan-vdiff-label">${O}</span><span class="kan-vdiff-start">${y.toFixed(2)}</span>`+this.sparkline(k.points,b)+`<span class="kan-vdiff-end">${v.toFixed(2)}</span>`+K+"</div>"}).join("")}</section>`}sparkline(e,n){let o=`hsl(${n},65%,60%)`,i=e.filter(m=>m!==null);if(i.length===0)return'<svg class="kan-vdiff-spark" viewBox="0 0 132 30" xmlns="http://www.w3.org/2000/svg"></svg>';let c=Math.min(...i),d=Math.max(...i)-c,f=e.length,p=m=>f<=1?132/2:4+m/(f-1)*124,k=m=>d<1e-9?30/2:26-(m-c)/d*22,h=[],b=[];return e.forEach((m,y)=>{if(m===null)return;let v=p(y),E=k(m);h.push(`${v.toFixed(1)},${E.toFixed(1)}`),b.push(`<circle cx="${v.toFixed(1)}" cy="${E.toFixed(1)}" r="2" fill="${o}"/>`)}),`<svg class="kan-vdiff-spark" viewBox="0 0 132 30" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" role="img"><polyline points="${h.join(" ")}" fill="none" stroke="${o}" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round"/>`+b.join("")+"</svg>"}svgUrlForSubject(e,n,t="="){return`${this.hrefForSubject(e,n,t)}.svg`}renderFigure(e,n,t){let a=n,s=B(e,pe);if(s){let d=ee(this.catalog,s);d&&(a=d)}let o=this.svgUrlForSubject(a,t),i=H(this.catalog,a).label,c=Z(e,Fo);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.valueItems(e,os).filter(h=>h instanceof D);if(o.length===0)return"<!-- LookRenderer.Diagram: no look.facets -->";let i=[];for(let h of o){let b=B(h,is);if(!b){i.push("<!-- LookRenderer.Diagram: facet has no resolvable look.relation -->");continue}let m=B(h,cs),y=this.resolveFacetNodes(n,b);if(y.length===0){i.push(`<!-- LookRenderer.Diagram: relation ${b.publisher}/${b.package_}/${b.name} resolved to 0 instances -->`);continue}let v=await this.resolveFacetChannels(h,y),E=Ke(h,ms),K=E instanceof oe&&E.object instanceof D?E.object:void 0,O=Z(h,aa),T=O&&Ae[O]!==void 0?Ae[O]:void 0,x=T??this.classTierSize(y),w=Os[x??Ae.icon]??"icon",G=this.readEmbeddedCarrier(h,bs),P=B(h,ks),V=P?ee(this.catalog,P):void 0;if(V){i.push(await this.renderDiagramExpand(y,V,t,a,s,G,T));continue}if(m&&X(m,us)){let L=B(h,gs),j=this.facetEdgeLabel(h,L??b),N=this.readEmbeddedCarrier(h,Rs);i.push(await this.embedTiers(w,R=>L?this.renderDiagramDag(y,L,v,t,R,j,N):this.renderDiagramConnector(n,y,v,t,R,j,N)));continue}if(m&&!X(m,ls)){i.push(`<!-- LookRenderer.Diagram: unknown encode role ${m.publisher}/${m.package_}/${m.name} -->`);continue}i.push(K?`<div class="kan-dgm-tiers" data-geo="1"><div class="kan-dgm-tier" data-tier="card">${await this.renderDiagramCluster(y,v,K,t,x)}</div></div>`:await this.embedTiers(w,L=>this.renderDiagramCluster(y,v,void 0,t,L)))}let c=Z(e,Es),l=Z(e,Ls),d=h=>`<div class="kan-diagram-title" style="font-weight:600;font-size:0.95rem;color:var(--kan-text);${h}">${g(c)}</div>`,f=c&&l!=="bottom"?d("margin:0 0 .5rem"):"",p=c&&l==="bottom"?d("margin:.5rem 0 0"):"",k="";return a===0&&!this.diagramScriptEmitted&&(this.diagramScriptEmitted=!0,k=`<script>${xs}</script>`),`<section class="kan-diagram">${f}${i.join("")}${p}${k}</section>`}async embedTiers(e,n){let t=[];for(let a of Cs){let s=await n(Ae[a]);t.push(`<div class="kan-dgm-tier" data-tier="${a}"${a===e?"":" hidden"}>${s}</div>`)}return`<div class="kan-dgm-tiers">${t.join("")}</div>`}async renderDiagramExpand(e,n,t,a,s,o,i){let c=[];for(let l of e){let d=`${l.namespace??""}/${l.name}`,f=await this.diagramNodeRow(l,t,i??56,o),k=a<Fs&&!s.has(d)?await this.renderDiagram(n,l,t,a+1,new Set([...s,d])):"",h=k?`<div style="margin-left:30px;border-left:2px solid var(--kan-border);padding-left:14px;margin-top:6px">${k}</div>`:"";c.push(`<div class="kan-diagram-node" style="margin:6px 0">${f}${h}</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=H(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 be(t)){let s=ee(this.catalog,a.subject);if(!s)continue;let o=Z(s,hs),i=o?Ae[o]:void 0;i!==void 0&&(n=n===void 0?i:Math.max(n,i))}return n}resolveFacetNodes(e,n){let t=[];for(let a of this.readPropertyValueReferences(e,n)){let s=a.subject,o=ee(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.valueItems(e,ds).filter(s=>s instanceof D),a=[];for(let s of t){let o=this.readEmbeddedCarrier(s,fs),i=Z(s,ps);if(!o||!i)continue;let c=[];for(let h of n){let b=await this.evaluateCarrierNum(o,h);c.push(Number.isFinite(b)?b:NaN)}let l=c.filter(h=>Number.isFinite(h)),d=l.length?Math.min(...l):0,p=(l.length?Math.max(...l):0)-d,k=c.map(h=>Number.isFinite(h)&&p>0?(h-d)/p:.5);a.push({to:i,norm:k})}return a}facetEdgeLabel(e,n){let t=Z(e,js);if(t)return t;if(Bo(e,Ks)&&n){let s=ee(this.catalog,n);if(s)return H(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 m=0;m<e.length;m++){let y=e[m],v=await this.renderBand(t,y,a),E=this.hrefForSubject(y,a),K=H(this.catalog,y).label,O=l?`opacity:${(.4+l.norm[m]*.6).toFixed(2)};`:"";b.push(`<a class="kan-diagram-mark" href="${g(E)}" style="display:block;text-decoration:none;${O}">${v}<span class="kan-diagram-mark-label">${g(K)}</span></a>`)}return`<figure class="kan-diagram-figure"><div class="kan-diagram-marks" style="display:flex;flex-wrap:wrap;gap:18px;align-items:flex-start">${b.join("")}</div></figure>`}let d=Math.min(e.length,4),f=Math.ceil(e.length/d),p=c*2+d*o+(d-1)*i,k=c*2+f*o+(f-1)*i,h=e.map((b,m)=>{let y=m%d,v=Math.floor(m/d),E=c+y*(o+i),K=c+v*(o+i),O=l?.4+l.norm[m]*.6:1;return this.diagramTile(b,E,K,o,a,O)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${p} ${k}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${h}</svg></figure>`}async renderDiagramConnector(e,n,t,a,s,o,i){let c=s??120,l=24,d=130,f=18,p=t.find(P=>P.to==="thickness"),k=t.find(P=>P.to==="opacity"),h=n.length,b=h*c+(h-1)*l,m=f*2+b,y=f*2+c+d+c,v=f,E=f+(b-c)/2,K=f+c+d,O=`kan-arrow-${this.diagramArrowSeq++}`,T=[],x=[],w=[];for(let P=0;P<n.length;P++){let V=n[P],L=f+P*(c+l),j=v+c,N=E+c/2,R=K-de,U=L+c/2,F=(j+K)/2,$=p?1.5+p.norm[P]*5.5:2,A=k?.4+k.norm[P]*.6:1,q=k?` stroke-opacity="${A.toFixed(2)}"`:"";T.push(`<path d="M${j.toFixed(1)},${N.toFixed(1)} C${F.toFixed(1)},${N.toFixed(1)} ${F.toFixed(1)},${U.toFixed(1)} ${R.toFixed(1)},${U.toFixed(1)}" class="kan-diagram-edge" fill="none" stroke="var(--kan-border)" stroke-width="${$.toFixed(1)}"${q} marker-end="url(#${O})"/>`);let C=await this.edgeText(o,V,i);C&&x.push(this.edgeLabelEl((j+K)/2,(N+U)/2-5,C)),w.push(this.diagramTile(V,K,L,c,a,k?A:1))}let G=this.diagramTile(e,v,E,c,a);return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${y.toFixed(0)} ${m.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(O,"var(--kan-border)")}${T.join("")}${x.join("")}${G}${w.join("")}</svg></figure>`}arrowMarkerDef(e,n){return`<defs><marker id="${e}" viewBox="0 0 ${de} ${de}" refX="0" refY="${(de/2).toFixed(1)}" markerWidth="${de}" markerHeight="${de}" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,1 L${de},${(de/2).toFixed(1)} L0,${de-1}" fill="${n}"/></marker></defs>`}async renderDiagramDag(e,n,t,a,s,o,i){let c=s??110,l=110,d=22,f=18,p=new Map(e.map(($,A)=>[$.name,A])),k=new Set(e.map($=>$.name)),h=new Map(e.map($=>[$.name,[]])),b=new Map(e.map($=>[$.name,[]]));for(let $ of e)for(let A of this.readPropertyValueReferences($,n)){let q=A.subject.name;q!==$.name&&k.has(q)&&(h.get($.name).push(q),b.get(q).push($.name))}let m=new Map,y=new Set,v=$=>{let A=m.get($);if(A!==void 0)return A;if(y.has($))return 0;y.add($);let q=0;for(let C of b.get($)??[])q=Math.max(q,v(C)+1);return y.delete($),m.set($,q),q};for(let $ of e)v($.name);let E=Math.min(...m.values());if(E>0)for(let $ of[...m.keys()])m.set($,m.get($)-E);let K=Math.max(0,...m.values()),O=Array.from({length:K+1},()=>[]);for(let $ of e)O[m.get($.name)].push($);let T=Math.max(1,...O.map($=>$.length)),x=!1;for(let[$,A]of h)for(let q of A)m.get(q)<=m.get($)&&(x=!0);let w=x?84:0,G=T*c+(T-1)*d,P=f*2+(K+1)*c+K*l,V=f*2+w+G,L=new Map;O.forEach(($,A)=>{let q=$.length*c+($.length-1)*d,C=f+w+(G-q)/2;$.forEach((M,fe)=>L.set(M.name,{x:f+A*(c+l),y:C+fe*(c+d)}))});let j=t.find($=>$.to==="thickness"),N=`kan-arrow-${this.diagramArrowSeq++}`,R=[],U=[];for(let[$,A]of h){let q=L.get($);for(let C of A){let M=L.get(C),fe=M.x>=q.x,se=j?1.5+j.norm[p.get($)]*4.5:2,ne,ue,te;if(fe){let me=q.x+c,Ge=q.y+c/2,Ue=M.x-de,cn=M.y+c/2,Ze=(me+Ue)/2;ne=`M${me.toFixed(1)},${Ge.toFixed(1)} C${Ze.toFixed(1)},${Ge.toFixed(1)} ${Ze.toFixed(1)},${cn.toFixed(1)} ${Ue.toFixed(1)},${cn.toFixed(1)}`,ue=(me+Ue)/2,te=(Ge+cn)/2-5}else{let me=q.x+c/2,Ge=q.y,Ue=M.x+c/2,cn=M.y-de,Ze=f+w*.2;ne=`M${me.toFixed(1)},${Ge.toFixed(1)} C${me.toFixed(1)},${Ze.toFixed(1)} ${Ue.toFixed(1)},${Ze.toFixed(1)} ${Ue.toFixed(1)},${cn.toFixed(1)}`,ue=(me+Ue)/2,te=Ze+4}let Re=fe?"":' stroke-dasharray="6 4"';R.push(`<path d="${ne}" class="kan-diagram-edge" fill="none" stroke="var(--kan-accent)" stroke-width="${se.toFixed(1)}" stroke-opacity="0.75"${Re} marker-end="url(#${N})"/>`);let ye=await this.edgeText(o,e[p.get($)],i);ye&&U.push(this.edgeLabelEl(ue,te,ye))}}let F=e.map($=>{let A=L.get($.name);return this.diagramTile($,A.x,A.y,c,a)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${P.toFixed(0)} ${V.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(N,"var(--kan-accent)")}${R.join("")}${U.join("")}${F}</svg></figure>`}static SEQ_COL_GAP=70;static SEQ_ROW=46;static SEQ_PAD=20;subjectFor(e){return ce(this.catalog,e)[0]}async renderSequence(e,n,t){let a=qn(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 w of a.strayPropertyRefs)s.push(`<!-- LookRenderer.Sequence: prose references property ${w.publisher}/${w.package_}/${w.name}, which is not a declared connector; ignored -->`);for(let w of a.gaps)s.push(`<!-- LookRenderer.Sequence: prose orders ${w.prev.name} then ${w.next.name}, but no declared connector holds between them in the graph \u2014 no message drawn. -->`);let{messages:o,lifelines:i}=a,c=Ve;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=Z(e,aa);l!==void 0&&Ae[l]===void 0&&s.push(`<!-- LookRenderer.Sequence: look.nodeTier '${g(l)}' is not a tier (${Object.keys(Ae).join(", ")}); using the class/default size -->`);let d=(l!==void 0?Ae[l]:void 0)??this.classTierSize(i)??Ae.icon,f=d+r.SEQ_COL_GAP,p=r.SEQ_ROW,k=r.SEQ_PAD,h=Z(e,vs)==="true",b=new Map;i.forEach((w,G)=>b.set(c(w),k+G*f+d/2));let m=k+d,y=m+p,v=y+o.length*p+k,E=k*2+(i.length-1)*f+d,K=`kan-arrow-${this.diagramArrowSeq++}`,O=`kan-arrow-open-${this.diagramArrowSeq++}`,x=[this.arrowMarkerDef(K,"var(--kan-text-dim)")+`<defs><marker id="${O}" viewBox="0 0 ${de} ${de}" refX="0" refY="${(de/2).toFixed(1)}" markerWidth="${de}" markerHeight="${de}" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,1 L${de},${(de/2).toFixed(1)} L0,${de-1}" fill="none" stroke="var(--kan-text-dim)" stroke-width="1.5"/></marker></defs>`];for(let w of i){let G=b.get(c(w));x.push(`<line class="kan-seq-lifeline" x1="${G}" y1="${m}" x2="${G}" y2="${v-k}" stroke="var(--kan-border)" stroke-width="1.5" stroke-dasharray="5 5"/>`),x.push(this.diagramTile(w,G-d/2,k,d,t))}return o.forEach((w,G)=>{let P=y+G*p,V=b.get(c(w.from)),L=b.get(c(w.to)),j=this.subjectFor(w.relation),N=(h?`${G+1}. `:"")+(j?H(this.catalog,j).label:w.relation.name),R=w.style==="dotted"?' stroke-dasharray="4 4"':"",U=w.style==="thick"?3:1.5,F=w.undirected?"":` marker-end="url(#${w.style==="open"?O:K})"`,$=`kan-seq-message kan-seq-message-${w.style}${w.undirected?" kan-seq-message-undirected":""}`;if(V===L){let M=p*.55,fe=V+(w.undirected?0:de);x.push(`<path class="${$}" d="M${V},${P-M/2} H${V+34} V${P+M/2} H${fe}" fill="none" stroke="var(--kan-text-dim)" stroke-width="${U}"${R}${F}/>`),x.push(`<text class="kan-seq-message-label" x="${V+34+6}" y="${P+4}" font-size="12" fill="var(--kan-text)">${g(N)}</text>`);return}let A=L>V?1:-1,q=w.undirected?L:L-A*de;x.push(`<line class="${$}" x1="${V}" y1="${P}" x2="${q}" y2="${P}" stroke="var(--kan-text-dim)" stroke-width="${U}"${R}${F}/>`),x.push(`<text class="kan-seq-message-label" x="${((V+L)/2).toFixed(1)}" y="${P-6}" text-anchor="middle" font-size="12" fill="var(--kan-text)" style="paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px">${g(N)}</text>`)}),`${s.join(`
127
+ `)}<figure class="kan-diagram-figure kan-seq-figure"><svg class="kan-diagram-svg kan-seq" viewBox="0 0 ${E} ${v}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${x.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(_(e,_s))return{classes:this.catalog.filter(a=>a instanceof z&&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([[W(t),e]]);for(let o of Rn(this.catalog,t,!1,a)){if(o.kind!=="object"||o.range.kind!=="class")continue;let i=this.subjectFor(o.range.uri);i&&!s.has(W(o.range.uri))&&s.set(W(o.range.uri),i)}return{classes:[...s.values()]}}return{classes:[],reason:"the page instance is neither a Package nor a Class"}}erCardinalityGlyph(e,n,t,a,s){let o=[];return s===1?o.push('<line x1="-14" y1="-7" x2="-14" y2="7"/>'):o.push('<path d="M-16,-8 L0,0 L-16,8" fill="none"/>'),a>=1?o.push('<line x1="-22" y1="-7" x2="-22" y2="7"/>'):o.push('<circle cx="-24" cy="0" r="4" fill="var(--kan-bg)"/>'),`<g class="kan-er-cardinality" transform="translate(${e.toFixed(1)},${n.toFixed(1)}) rotate(${t.toFixed(1)})" stroke="var(--kan-text-dim)" stroke-width="1.5">${o.join("")}</g>`}erBorderPoint(e,n,t,a,s,o){let i=s-e,c=o-n;if(i===0&&c===0)return{x:e,y:n};let l=i===0?1/0:Math.abs(t/2/i),d=c===0?1/0:Math.abs(a/2/c),f=Math.min(l,d);return{x:e+i*f,y:n+c*f}}renderEntityRelationship(e,n,t){let{classes:a,reason:s}=this.erScope(n);if(a.length===0)return`<!-- LookRenderer.EntityRelationship: nothing to draw \u2014 ${s??"no classes in scope"} -->`;let o=pn(this.catalog),i=L=>`${L.namespace}/${L.name}`,c=new Map;for(let L of a){let j=_e(L);j&&c.set(W(j),L)}let l=a.map(L=>{let j=_e(L),N=j?Rn(this.catalog,j,!1,o):[];return{subject:L,label:H(this.catalog,L).label,attrs:N.filter(R=>R.kind==="datatype"),rels:N.filter(R=>R.kind==="object"&&R.range.kind==="class"&&c.has(W(R.range.uri))),supers:we(L,rt).filter(R=>c.has(W(R)))}}),d=r.ER_BOX_W,f=r.ER_HEAD_H,p=r.ER_ROW_H,k=r.ER_GAP,h=r.ER_PAD,b=Math.max(1,Math.ceil(Math.sqrt(l.length))),m=L=>f+Math.max(1,L.attrs.length)*p+8,y=[];l.forEach((L,j)=>{let N=Math.floor(j/b);y[N]=Math.max(y[N]??0,m(L))});let v=[],E=h;y.forEach((L,j)=>{v[j]=E,E+=L+k});let K=new Map;l.forEach((L,j)=>{let N=Math.floor(j/b),R=j%b,U=h+R*(d+k),F=v[N],$=m(L);K.set(i(L.subject),{x:U,y:F,w:d,h:$,cx:U+d/2,cy:F+$/2})});let O=h*2+b*d+(b-1)*k,T=E-k+h,x=[],w=[],G=[],P=`kan-er-tri-${this.diagramArrowSeq++}`,V=`<defs><marker id="${P}" viewBox="0 0 12 12" refX="11" refY="6" markerWidth="12" markerHeight="12" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,0 L12,6 L0,12 Z" fill="var(--kan-bg)" stroke="var(--kan-text-dim)" stroke-width="1.5"/></marker></defs>`;for(let L of l){let j=K.get(i(L.subject));for(let N of L.rels){let R=c.get(W(N.range.uri)),U=K.get(i(R)),F=i(R)===i(L.subject),$=this.subjectFor(N.uri),A=!!$&&fn(this.catalog,$,Ss),q=!!$&&fn(this.catalog,$,ws),C=N.minCount??0,M=N.maxCount??(q?1:void 0),fe=$?H(this.catalog,$).label:N.localName;if(F){let te=j.x+j.w,Re=j.y+12,ye=j.y+j.h-12;x.push(`<path class="kan-er-relationship" d="M${te},${Re} h28 V${ye} h-28" fill="none" stroke="var(--kan-text-dim)" stroke-width="1.5"/>`),A||x.push(this.erCardinalityGlyph(te,ye,180,C,M)),w.push(`<text class="kan-er-relationship-label" x="${te+32}" y="${j.cy+4}" font-size="11" fill="var(--kan-text)">${g(fe)}</text>`);continue}let se=this.erBorderPoint(j.cx,j.cy,j.w,j.h,U.cx,U.cy),ne=this.erBorderPoint(U.cx,U.cy,U.w,U.h,j.cx,j.cy);x.push(`<line class="kan-er-relationship" x1="${se.x.toFixed(1)}" y1="${se.y.toFixed(1)}" x2="${ne.x.toFixed(1)}" y2="${ne.y.toFixed(1)}" stroke="var(--kan-text-dim)" stroke-width="1.5"/>`);let ue=Math.atan2(ne.y-se.y,ne.x-se.x)*180/Math.PI;A||x.push(this.erCardinalityGlyph(ne.x,ne.y,ue,C,M)),w.push(`<text class="kan-er-relationship-label" x="${((se.x+ne.x)/2).toFixed(1)}" y="${((se.y+ne.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(fe)}</text>`)}for(let N of L.supers){let R=c.get(W(N)),U=K.get(i(R)),F=this.erBorderPoint(j.cx,j.cy,j.w,j.h,U.cx,U.cy),$=this.erBorderPoint(U.cx,U.cy,U.w,U.h,j.cx,j.cy);x.push(`<line class="kan-er-inherits" x1="${F.x.toFixed(1)}" y1="${F.y.toFixed(1)}" x2="${$.x.toFixed(1)}" y2="${$.y.toFixed(1)}" stroke="var(--kan-text-dim)" stroke-width="1.5" marker-end="url(#${P})"/>`)}}for(let L of l){let j=K.get(i(L.subject)),N=this.hrefForSubject(L.subject,t),R=L.attrs.length===0?`<text x="${j.x+10}" y="${j.y+f+14}" font-size="11" fill="var(--kan-text-faint)" font-style="italic">no attributes</text>`:L.attrs.map((U,F)=>{let $=this.subjectFor(U.uri),A=$?H(this.catalog,$).label:U.localName,q=U.required||(U.minCount??0)>=1?" *":"";return`<text class="kan-er-attribute" x="${j.x+10}" y="${j.y+f+14+F*p}" font-size="11" fill="var(--kan-text)">${g(A)}${q}<tspan fill="var(--kan-text-dim)"> : ${g(U.range.uri.name)}</tspan></text>`}).join("");G.push(`<a href="${g(N)}"><g class="kan-er-entity"><rect x="${j.x}" y="${j.y}" width="${j.w}" height="${j.h}" rx="6" fill="var(--kan-bg-card)" stroke="var(--kan-border)" stroke-width="1.5"/><rect x="${j.x}" y="${j.y}" width="${j.w}" height="${f}" rx="6" fill="var(--kan-bg-elev)"/><text class="kan-er-entity-label" x="${j.cx}" y="${j.y+20}" text-anchor="middle" font-size="13" font-weight="600" fill="var(--kan-text)">${g(L.label)}</text><line x1="${j.x}" y1="${j.y+f}" x2="${j.x+j.w}" y2="${j.y+f}" stroke="var(--kan-border)"/>`+R+"</g></a>")}return`<figure class="kan-diagram-figure kan-er-figure"><svg class="kan-diagram-svg kan-er" viewBox="0 0 ${O} ${T}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${V}${x.join("")}${G.join("")}${w.join("")}</svg></figure>`}diagramTile(e,n,t,a,s,o=1){let i=this.hrefForSubject(e,s),c=this.svgUrlForSubject(e,s),l=H(this.catalog,e).label,d=o<1?` opacity="${o.toFixed(2)}"`:"";return`<a href="${g(i)}"><image href="${g(c)}" x="${n}" y="${t}" width="${a}" height="${a}"${d}><title>${g(l)}</title></image></a>`}async renderStatRow(e,n){let t=this.valueItems(e,uo).filter(s=>s instanceof D);if(t.length===0)return"<!-- LookRenderer.StatRow: no look.stats -->";let a=[];for(let s of t){let o=this.readEmbeddedCarrier(s,fo);if(!o)continue;let i=await this.evaluateCarrier(o,n);if(i===void 0)continue;let c=Z(s,po)??"";a.push('<div class="kan-stat">'+(c?`<span class="kan-stat-label">${g(c)}</span>`:"")+`<span class="kan-stat-val">${g(i)}</span></div>`)}return a.length===0?"":`<div class="kan-stat-row">${a.join("")}</div>`}barMarkup(e){let n=Number(e);if(!Number.isFinite(n))return g(e);let t=Math.max(0,Math.min(1,n))*100;return`<span class="kan-bar-meter" role="img" aria-label="${g(e)}"><span class="kan-bar-fill" style="width:${t.toFixed(1)}%"></span></span><span class="kan-bar-value">${g(e)}</span>`}async renderBarMeter(e,n){let t=this.readEmbeddedCarrier(e,gn);if(!t)return"<!-- LookRenderer.BarMeter: no look.metricPath -->";let a=await this.evaluateCarrier(t,n);return a===void 0?"":`<div class="kan-bar-row">${this.barMarkup(a)}</div>`}renderResourceCount(e,n){let t=this.valueItems(e,io).filter(o=>o instanceof D);if(t.length===0)return"<!-- LookRenderer.ResourceCount: no look.counts -->";let a=this.readTransitive(e),s=[];for(let o of t){let i=B(o,pe);if(!i)continue;let c=ee(this.catalog,i);if(!c)continue;let l=H(this.catalog,c).label,d=this.findInstancesOfClass(i,a).length,f=this.hrefForSubject(c,n);s.push(`<a class="kan-count" href="${g(f)}"><span class="kan-count-val">${d}</span><span class="kan-count-label">${g(l)}</span></a>`)}return s.length===0?"":`<div class="kan-count-row">${s.join("")}</div>`}renderHorizon(e,n,t){let a=B(e,pe);if(!a)return"<!-- LookRenderer.Horizon: no look.source -->";let s=this.valueItems(n,a).filter(i=>i instanceof D);return s.length===0?"":`<section class="kan-horizon">${s.map(i=>this.renderConditionNode(i,t,0)).join("")}</section>`}renderConditionNode(e,n,t){let a=on(e),s=a?this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name:"Condition",o=[],i=[];for(let p of e.statement){let k=p.predicate?.subject;if(!k||X(k,qe))continue;let h=this.readLabelForUri({publisher:k.publisher,package_:k.package_,name:k.name})??k.name;if(p instanceof ae||p instanceof he||p instanceof ke)o.push(`<div class="kan-cond-field"><span class="kan-cond-key">${g(h)}</span><span class="kan-cond-v">${g(String(p.object))}</span></div>`);else if(p instanceof J&&p.object instanceof I){let b=p.object.subject,m=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(h)}</span><span class="kan-cond-v">${g(m)}</span></div>`)}else if(p instanceof oe)i.push(this.renderConditionNode(p.object,n,t+1));else if(p instanceof ie)for(let b of p.object??[])b instanceof D&&i.push(this.renderConditionNode(b,n,t+1))}let c=o.length?`<div class="kan-cond-fields">${o.join("")}</div>`:"",l=i.length?`<div class="kan-cond-children">${i.join("")}</div>`:"",d=i.length>0,f=d?`<span class="kan-cond-op">${g(s)}</span>`:`<div class="kan-cond-type">${g(s)}</div>`;return`<div class="kan-cond ${d?"kan-cond-branch":"kan-cond-leaf"}">${f}${c}${l}</div>`}renderSectionHeading(e){let n=e,t=Z(n,ra);if(!t)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let a=Z(n,no);return`<div class="kan-section" id="${ya(t)}"><h2 class="kan-section-title">${g(t)}</h2>`+(a?`<p class="kan-section-note">${g(a)}</p>`:"")+"</div>"}renderSectionNav(e){return e.length===0?"<!-- LookRenderer.SectionNav: no section headings in this view -->":`<nav class="kan-section-nav" aria-label="On this page">${e.map(t=>`<a class="kan-section-nav-link" href="#${g(t.slug)}">${g(t.label)}</a>`).join("")}</nav>`}async renderVersionDelta(e,n){let t=this.readEmbeddedCarrier(e,gn);if(!t)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let a=async P=>{let V=await this.evaluateCarrierNum(t,P);return Number.isFinite(V)?V:void 0},s=await a(n);if(s===void 0)return"";let o=P=>this.uriOf(P).version??{major:0,minor:0,patch:0},i=(P,V)=>P.major-V.major||P.minor-V.minor||P.patch-V.patch,c={publisher:le(n),package_:this.uriOf(n).package_,name:n.name},l=o(n),d,f;for(let P of ce(this.catalog,c)){let V=o(P);i(V,l)<0&&(!f||i(V,f)>0)&&(d=P,f=V)}if(!d||!f)return'<div class="kan-delta kan-delta-first">First tracked in this version</div>';let p=await a(d);if(p===void 0)return"";let k=s-p,h=Math.abs(k)<.005?"flat":k>0?"up":"down",b=h==="up"?"\u25B2":h==="down"?"\u25BC":"\u2014",m=h==="up"?"#34d399":h==="down"?"#f87171":"var(--kan-text-faint)",y=`${f.major}.${f.minor}.${f.patch}`,v=320,E=46,K=14,O=30,T=P=>K+Math.min(1,Math.max(0,P))*(v-2*K),x=T(p),w=T(s),G=`<svg class="kan-delta-track" viewBox="0 0 ${v} ${E}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${K}" y1="${O}" x2="${v-K}" y2="${O}" class="kan-delta-base"/><line x1="${x.toFixed(1)}" y1="${O}" x2="${w.toFixed(1)}" y2="${O}" stroke="${m}" stroke-width="3"/><circle cx="${x.toFixed(1)}" cy="${O}" r="4" class="kan-delta-prev"/><circle cx="${w.toFixed(1)}" cy="${O}" r="5.5" fill="${m}"/><text x="${x.toFixed(1)}" y="${O-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${p.toFixed(2)}</text><text x="${w.toFixed(1)}" y="${O+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(y)}</span><span class="kan-delta-badge ${h}">${k>0?"+":""}${k.toFixed(2)} ${b}</span></div>`+G+"</div>"}async renderTimePlot(e,n,t){let a=B(e,pe),s=B(e,Cn);if(!a||!s)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let o=this.readEmbeddedCarrier(e,lo),i=this.readEmbeddedCarrier(e,oa),c=[];for(let R of this.readPropertyValueReferences(n,a)){let U=ee(this.catalog,{publisher:R.subject.publisher,package_:R.subject.package_,name:R.subject.name,...R.subject.version?{version:R.subject.version}:{}});if(!U)continue;let F=this.readPropertyValueText(U,s)??"",$=Date.parse(F);if(!Number.isFinite($))continue;let A=o?await this.evaluateCarrier(o,U)??"":"",q=(i?await this.evaluateCarrier(i,U):void 0)??H(this.catalog,U).label;c.push({t:$,dateStr:F,lane:A,label:q,href:this.hrefForSubject(U,t),linkable:this.isLinkable(le(U),t)})}if(c.length===0)return"<!-- LookRenderer.TimePlot: no dated points -->";let l=[];for(let R of c)l.includes(R.lane)||l.push(R.lane);let d=Math.min(...c.map(R=>R.t)),f=Math.max(...c.map(R=>R.t));f===d&&(f=d+1);let p=l.some(R=>R),k=720,h=p?96:16,b=18,m=12,y=24,v=36,E=m+l.length*v+y,K=h,O=k-b,T=O-K,x=R=>K+(R-d)/(f-d)*T,w=R=>m+R*v+v/2,G=R=>Math.round(R*360/Math.max(1,l.length)),P=[];l.forEach((R,U)=>{let F=w(U);P.push(`<line x1="${K}" y1="${F.toFixed(1)}" x2="${O}" y2="${F.toFixed(1)}" class="kan-plot-guide"/>`),R&&P.push(`<text x="${(h-8).toFixed(1)}" y="${(F+4).toFixed(1)}" text-anchor="end" class="kan-plot-lane">${Oe(R)}</text>`)});let V={},L=[];for(let R of c){let U=l.indexOf(R.lane),$=((V[R.lane]=(V[R.lane]??0)+1)%3-1)*7,A=x(R.t),q=w(U)+$,C=`${Fn(R.dateStr)} \xB7 ${R.label}`,M=`<circle cx="${A.toFixed(1)}" cy="${q.toFixed(1)}" r="5" fill="hsl(${G(U)},65%,60%)" class="kan-plot-pt"><title>${Oe(C)}</title></circle>`;L.push(R.linkable?`<a href="${g(R.href)}" class="kan-plot-link">${M}</a>`:M)}let j=`<text x="${K}" y="${(E-6).toFixed(1)}" text-anchor="start" class="kan-plot-axis">${Oe(Fn(new Date(d).toISOString()))}</text><text x="${O}" y="${(E-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${Oe(Fn(new Date(f).toISOString()))}</text>`;return`<section class="kan-plot">${`<svg class="kan-plot-svg" viewBox="0 0 ${k} ${E}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+P.join("")+L.join("")+j+"</svg>"}</section>`}renderDetails(e,n,t){let a=tt(e,co),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 ga(e)){if(this.isMetaPredicate(s)||t.some(c=>X(c,s)))continue;let o=this.readLabelForUri({publisher:s.publisher,package_:s.package_,name:s.name})??s.name,i=this.detailValue(e,s,n,t);i&&a.push(`<dt class="kan-details-key">${g(o)}</dt><dd class="kan-details-val">${i}</dd>`)}return a.join("")}detailValue(e,n,t,a){let s=Fe(e,n),o=s.map(i=>"literal"in i.item?i.item.value:i.item);if(s.length===1&&!s[0].fromList){let i=o[0];return typeof i=="string"?$a(i):typeof i=="number"||typeof i=="boolean"?g(String(i)):i instanceof I?this.detailReferenceLink(i,t):this.detailEmbedded(i,t,a)}return o.length>0&&o.every(i=>i instanceof D)?o.map(i=>this.detailEmbedded(i,t,a)).join(""):o.map(i=>i instanceof I?this.detailReferenceLink(i,t):i instanceof D?this.detailEmbedded(i,t,a):g(String(i))).filter(i=>i).join(", ")}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=ee(this.catalog,e);if(!n)return[];let t=Ke(n,Ar);return t instanceof J&&t.object instanceof I?[t.object]:[]}async renderEmbeddedViews(e,n,t,a=""){let s=B(e,pe);if(!s)return"<!-- LookRenderer: EmbeddedViews missing look.source -->";let o=vn(n,s,this.catalog,a?`#${a}`:"").filter(p=>p.kind==="embedded");if(o.length===0)return"";let i=Ke(e,Vo),c=i instanceof ke?i.object===!0:i instanceof ae&&i.object==="true",l=[],d=[];for(let p of o){let k=p.node,h=k,b=p.address.slice(1),m=k.name?b:"";if(c&&m){let x=H(this.catalog,h).label||k.name||m;l.push(`<a class="kan-section-nav-link" href="#${g(m)}">${g(x)}</a>`)}let y=be(h),v=y.length>0?y:this.rangeTypeRefs(s),E=On(h)?this.findCascadedLook(h):this.lookFromTypeRefs(v),K="";if(E){let x=[];for(let w of nt(E.declaration))x.push(await this.renderBand(w,h,t,[],b));K=x.join(`
128
+ `)}else{let x=this.detailRows(k,t,[]);K=x?`<dl class="kan-details">${x}</dl>`:""}let O=m?` id="${g(m)}"`:"",T=m?this.anchorLink(m):"";d.push(`<section class="kan-embedded-view"${O}>${T}${K}</section>`)}return`<div class="kan-embedded-views">${l.length>0?`<nav class="kan-section-nav" aria-label="On this page">${l.join("")}</nav>
129
+ `:""}${d.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,qe)||X(e,Xn)||X(e,ea)||X(e,Tn)||X(e,Pn)||X(e,sa)||X(e,fa)||X(e,Xs)}renderPackageContents(e,n){let t=e.namespace||"";if(!t)return"";let a=this.catalog.filter(o=>o instanceof z&&o.namespace===t&&o.name!==e.name);return a.length===0?`<!-- LookRenderer.PackageContents: no members in ${t} -->`:(a.sort((o,i)=>{let c=H(this.catalog,o).label,l=H(this.catalog,i).label;return c.localeCompare(l)}),`<section class="kan-pkg-grid">${a.map(o=>{let i=H(this.catalog,o),c=i.label,l=i.summary,d=l?at(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>`+(d?`<span class="kan-pkg-card-comment">${g(d)}</span>`:"")+"</span></a>"}).join("")}</section>`)}renderReferencedBy(e,n,t){let a=B(e,Io),s={publisher:le(n),package_:this.uriOf(n).package_,name:n.name},o=Q(s),i=p=>this.uriOf(p).version??{major:0,minor:0,patch:0},c=(p,k)=>p.major-k.major||p.minor-k.minor||p.patch-k.patch,l=new Map;for(let p of this.catalog){if(!(p instanceof z))continue;let k=Q({publisher:le(p),package_:this.uriOf(p).package_,name:p.name});if(k!==o)for(let h of p.statement){let b=h.predicate?.subject;if(!b||X(b,qe)||a&&Q(b)!==Q(a))continue;let m=[];if(h instanceof J&&h.object instanceof I)m.push(h.object);else if(h instanceof ie)for(let K of h.object??[])K instanceof I&&m.push(K);if(!m.some(K=>Q(K.subject)===o))continue;let y=Q(b),v=l.get(y);v||(v={label:this.readLabelForUri(b)??b.name,best:new Map},l.set(y,v));let E=v.best.get(k);(!E||c(i(p),i(E))>0)&&v.best.set(k,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,k)=>p.label.localeCompare(k.label)).map(p=>{let h=[...p.best.values()].sort((b,m)=>H(this.catalog,b).label.localeCompare(H(this.catalog,m).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">${h}</section></div>`}).join("")}`}resourceCard(e,n,t){let a=H(this.catalog,e),s=a.summary?at(a.summary,160):"",o=be(e).map(y=>this.readLabelForUri({publisher:y.subject.publisher,package_:y.subject.package_,name:y.subject.name})??y.subject.name),c='<span class="kan-pkg-card-body">'+(o.length>0?`<span class="kan-card-types">${o.map(y=>`<span class="kan-card-type">${g(y)}</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(le(e),n),d=l?`<a class="kan-pkg-card-link" href="${g(this.hrefForSubject(e,n))}"><img class="kan-pkg-card-svg" src="${g(this.svgUrlForSubject(e,n))}" alt="" loading="lazy"/>`+c+"</a>":`<span class="kan-pkg-card-link">${c}</span>`,f=e.namespace||"",p=this.uriOf(e),k=p.publisher,h=p.package_,b=p.version?bn(p.version):"",m="";if(h&&f!==t){let y=b?`<span class="kan-card-at">@</span><span class="kan-card-ver">${g(b)}</span>`:"";if(l){let v=`<span class="kan-card-pkg">${g(h)}</span>${y}`;m=`<a class="kan-pkg-card-foot" href="${g(this.packageHref(k,h,b||void 0))}" title="${g(b?`${h}@${b}`:h)}">${v}</a>`}else{let v=`<span class="kan-card-pub">${g(k)}/</span><span class="kan-card-pkg">${g(h)}</span>${y}`;m=`<span class="kan-pkg-card-foot" title="${g(b?`${k}/${h}@${b}`:`${k}/${h}`)}">${v}</span>`}}return`<div class="kan-pkg-card kan-pkg-card--foot">${d}${m}</div>`}renderInstances(e,n,t){let a={publisher:le(n),package_:this.uriOf(n).package_,name:n.name},s=this.readTransitive(e),o=s?this.descendantTypeKeys(a):new Set([Q(a)]),i=m=>this.uriOf(m).version??{major:0,minor:0,patch:0},c=(m,y)=>m.major-y.major||m.minor-y.minor||m.patch-y.patch,l=new Map;for(let m of this.catalog){if(!(m instanceof z)||!be(m).some(K=>o.has(Q(K.subject))))continue;let v=Q({publisher:le(m),package_:this.uriOf(m).package_,name:m.name}),E=l.get(v);(!E||c(i(m),i(E))>0)&&l.set(v,m)}let d=[...l.values()];if(d.length===0)return"<!-- LookRenderer.Instances: none -->";d.sort((m,y)=>H(this.catalog,m).label.localeCompare(H(this.catalog,y).label));let f=48,p=d.slice(0,f),k=p.map(m=>this.resourceCard(m,t,n.namespace??void 0)),h=d.length>f?` <span class="kan-count">${p.length} of ${d.length}</span>`:` <span class="kan-count">${d.length}</span>`;return`<div class="kan-section"><h2 class="kan-section-title">${s?"Instances (including subtypes)":"Instances"}${h}</h2></div><section class="kan-pkg-grid">${k.join("")}</section>`}descendantTypeKeys(e){let n=Q(e),t=new Set([n]),a=new Set;for(let s of this.catalog)if(s instanceof z)for(let o of be(s)){let i=o.subject,c=Q(i);a.has(c)||(a.add(c),nn(this.catalog,i).some(l=>Q(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,qe)||t&&!(s&&Q(s)===Q(t)))continue;let o=[];if(a instanceof J&&a.object instanceof I)o.push(a.object);else if(a instanceof ie)for(let i of a.object??[])i instanceof I&&o.push(i);for(let i of o)if(Q(i.subject)===n)return!0}return!1}async renderFeaturedResource(e,n){let t=B(e,pe);if(!t)return"<!-- LookRenderer.FeaturedResource: no look.source -->";let a=ce(this.catalog,t),s=l=>this.uriOf(l).version??{major:0,minor:0,patch:0},o=a.length>0?a.slice().sort((l,d)=>{let f=s(l),p=s(d);return p.major-f.major||p.minor-f.minor||p.patch-f.patch})[0]:ee(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 F=>{let $=this.readEmbeddedCarrier(e,F);if(!$)return;let A=await this.evaluateCarrierNum($,n);return Number.isFinite(A)?A:void 0},a=await t(Js),s=await t(Zs);if(a===void 0||s===void 0||a<=0||s<=0)return"<!-- LookRenderer.Distribution: needs resolvable alphaPath + betaPath (> 0) -->";let o=await t(gn)??a/(a+s),i=await t(ua),c=await t(da),l=await t(et),d=l!==void 0?`hsl(${l},65%,60%)`:"var(--kan-accent)",f=F=>Number.isInteger(F)?String(F):F.toFixed(1),p=280,k=168,h={top:14,right:14,bottom:24,left:14},b=p-h.left-h.right,m=k-h.top-h.bottom,y=120,v=1e-4,E=[],K=[],O=0;for(let F=0;F<=y;F++){let $=F/y;$<v?$=v:$>1-v&&($=1-v);let A=Math.exp((a-1)*Math.log($)+(s-1)*Math.log(1-$));E.push($),K.push(A),A>O&&(O=A)}let T=F=>h.left+Math.min(1,Math.max(0,F))*b,x=F=>h.top+(1-(O>0?F/O:0))*m,w=h.top+m,G=E.map((F,$)=>`${T(F).toFixed(1)},${x(K[$]).toFixed(1)}`),P=`M${T(0).toFixed(1)},${w.toFixed(1)} L${G.join(" L")} L${T(1).toFixed(1)},${w.toFixed(1)} Z`,V="";if(i!==void 0&&c!==void 0&&c>i){let F=[`${T(i).toFixed(1)},${w.toFixed(1)}`];for(let $=0;$<=y;$++)E[$]>=i&&E[$]<=c&&F.push(`${T(E[$]).toFixed(1)},${x(K[$]).toFixed(1)}`);F.push(`${T(c).toFixed(1)},${w.toFixed(1)}`),V=`<path d="M${F.join(" L")} Z" fill="${d}" fill-opacity="0.3"/>`}let L=T(o),j=`<line x1="${L.toFixed(1)}" y1="${h.top.toFixed(1)}" x2="${L.toFixed(1)}" y2="${w.toFixed(1)}" stroke="${d}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${L.toFixed(1)}" y="${(h.top-3).toFixed(1)}" text-anchor="middle" class="kan-dist-mean">\u03BC ${o.toFixed(2)}</text>`,N=`<text x="${T(0).toFixed(1)}" y="${(w+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${T(1).toFixed(1)}" y="${(w+15).toFixed(1)}" text-anchor="end" class="kan-dist-axis">1</text>`,R=`<svg class="kan-dist-svg" viewBox="0 0 ${p} ${k}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${h.left}" y1="${w.toFixed(1)}" x2="${(p-h.right).toFixed(1)}" y2="${w.toFixed(1)}" class="kan-dist-base"/><path d="${P}" fill="${d}" fill-opacity="0.12"/>`+V+`<polyline points="${G.join(" ")}" fill="none" stroke="${d}" stroke-width="2"/>`+j+N+"</svg>",U=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)})${U}</figcaption></figure>`}renderPublisherPackages(e,n){let t=new Map;for(let i of this.catalog){if(!(i instanceof z)||le(i)!==n)continue;let c=this.uriOf(i).package_;if(!c||i.name!==c)continue;let l=t.get(c),d=this.uriOf(i).version,f=l?this.uriOf(l).version:void 0;(!l||d&&(!f||hn(d,f)>0))&&t.set(c,i)}let a,s=this.valueItems(e,Ds);if(s.length>0){a=[];for(let i of s){if(!(i instanceof I))continue;let c=i.subject.package_,l=t.get(c);l&&a.push([c,l])}}else a=[...t.entries()].sort((i,c)=>i[0].localeCompare(c[0]));return a.length===0?"":`<section class="kan-pkg-grid">${a.map(([i,c])=>{let l=H(this.catalog,c),d=l.label,f=l.summary,p=f?at(f,160):"",k=this.svgUrlForSubject(c,n);return`<a class="kan-pkg-card" href="${g(this.packageHref(n,i))}"><img class="kan-pkg-card-svg" src="${g(k)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${g(d)}</span>`+(p?`<span class="kan-pkg-card-comment">${g(p)}</span>`:"")+"</span></a>"}).join("")}</section>`}async renderTimeline(e,n){let t=B(e,pe);if(!t)return"<!-- LookRenderer.Timeline: no look.source -->";let a=B(e,Cn),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=B(e,la),l=this.readEmbeddedCarrier(e,gn);return c&&l?this.renderTrajectoryChart(i,c,l,e,n,o):`<section class="kan-timeline"><ol>
131
+ ${i.map(f=>{let p=this.uriOf(f),k=p.package_,h=p.version,b=this.resourceHref({publisher:le(f),package_:k,name:f.name,...h?{version:h}:{}},n),m=o(f),y=m?`<span class="kan-timeline-date">${g(m)}</span>`:"",v=h?bn(h):f.name;return`<li class="kan-timeline-node"><a href="${g(b)}"><span class="kan-timeline-key">${g(v)}</span>${y}</a></li>`}).join(`
132
+ `)}
133
+ </ol></section>`}async renderTrajectoryChart(e,n,t,a,s,o){let i=a,c=this.readEmbeddedCarrier(a,et),l=this.readEmbeddedCarrier(a,ua),d=this.readEmbeddedCarrier(a,da),f=Z(i,jo),p=ha(i,wo),k=ha(i,_o),h=e.length,b=await this.collectTrackedSeries(e,n,t,{hueBy:c,lowerPath:l,upperPath:d});if(b.length===0)return"<!-- LookRenderer.Timeline: no tracked series -->";let m=[];for(let C of b){for(let M of C.points)M!==null&&m.push(M);for(let M of C.lower??[])M!==null&&m.push(M);for(let M of C.upper??[])M!==null&&m.push(M)}if(m.length===0)return"<!-- LookRenderer.Timeline: no metric values -->";let y=Math.min(...m),v=Math.max(...m);v-y<1e-9&&(y-=.5,v+=.5);let E=(v-y)*.08,K=p!==void 0?p:y-E,O=k!==void 0?k:v+E;O-K<1e-9&&(O=K+1);let T=1e3,x=440,w={top:28,right:24,bottom:56,left:52},G=T-w.left-w.right,P=x-w.top-w.bottom,V=C=>h<=1?w.left+G/2:w.left+C/(h-1)*G,L=C=>w.top+(1-(C-K)/(O-K))*P,j=(C,M)=>C.hue!==void 0?C.hue:Math.round(M*360/b.length),N=[];for(let C=0;C<5;C++){let M=K+C*(O-K)/4,fe=L(M);N.push(`<line x1="${w.left}" y1="${fe.toFixed(1)}" x2="${(T-w.right).toFixed(1)}" y2="${fe.toFixed(1)}" class="kan-fan-grid"/>`),N.push(`<text x="${(w.left-8).toFixed(1)}" y="${(fe+4).toFixed(1)}" class="kan-fan-axis" text-anchor="end">${M.toFixed(2)}</text>`)}let R=[];e.forEach((C,M)=>{let fe=this.hrefForSubject(C,s),se=this.uriOf(C).version,ne=se?bn(se):"",ue=V(M),te=Fn(o(C));R.push(`<a href="${g(fe)}" class="kan-fan-xtick"><line x1="${ue.toFixed(1)}" y1="${w.top}" x2="${ue.toFixed(1)}" y2="${(x-w.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${ue.toFixed(1)}" y="${(x-w.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${Oe(ne||C.name)}</text>`+(te?`<text x="${ue.toFixed(1)}" y="${(x-w.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${Oe(te)}</text>`:"")+"</a>")});let U=[];b.forEach((C,M)=>{if(!C.lower||!C.upper)return;let fe=j(C,M),se=[],ne=[];for(let te=0;te<h;te++){let Re=C.upper[te],ye=C.lower[te];Re==null||ye===null||ye===void 0||(se.push(`${V(te).toFixed(1)},${L(Re).toFixed(1)}`),ne.unshift(`${V(te).toFixed(1)},${L(ye).toFixed(1)}`))}let ue=se.concat(ne);ue.length<3||U.push(`<polygon class="kan-fan-band" points="${ue.join(" ")}" fill="hsl(${fe},65%,60%)"/>`)});let F=[];b.forEach((C,M)=>{let se=`hsl(${j(C,M)},65%,60%)`,ne=[],ue=[];C.points.forEach((te,Re)=>{if(te===null)return;let ye=V(Re),me=L(te);ne.push(`${ye.toFixed(1)},${me.toFixed(1)}`),ue.push(`<circle cx="${ye.toFixed(1)}" cy="${me.toFixed(1)}" r="3.5" fill="${se}"/>`)}),ne.length!==0&&F.push(`<g class="kan-fan-series" data-series="${g(C.key)}"><polyline points="${ne.join(" ")}" fill="none" stroke="${se}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`+ue.join("")+"</g>")});let $=`<svg class="kan-fan-svg" viewBox="0 0 ${T} ${x}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+N.join("")+R.join("")+U.join("")+F.join("")+"</svg>",A=f?`${g(f)}=`:"",q=b.map((C,M)=>{let fe=j(C,M),se=C.points.filter(me=>me!==null),ne=se.length?se[0]:void 0,ue=se.length?se[se.length-1]:void 0,te="";if(ue!==void 0&&ne!==void 0){let me=ue-ne;if(Math.abs(me)>=.005){let Ge=me>0?"up":"down",Ue=me>0?"\u25B2":"\u25BC";te=` <span class="kan-fan-delta ${Ge}">${me>0?"+":""}${me.toFixed(2)} ${Ue}</span>`}else te=' <span class="kan-fan-delta flat">\u2014</span>'}let Re=ue!==void 0?`${A}${ue.toFixed(2)}`:"\u2014",ye=C.lastSubject&&this.isLinkable(le(C.lastSubject),s)?`<a href="${g(this.hrefForSubject(C.lastSubject,s))}">${g(C.label)}</a>`:g(C.label);return`<div class="kan-fan-legend-item" style="--kan-fan-hue:${fe}"><span class="kan-fan-swatch"></span><span class="kan-fan-legend-label">${ye}</span><span class="kan-fan-legend-cur">${Re}${te}</span></div>`});return`<section class="kan-fan"><div class="kan-fan-chart">${$}</div><div class="kan-fan-legend">${q.join("")}</div></section>`}resolveResourceQuery(e){let n=i=>{let c=B(i,vo);if(!c)return;let l=B(i,Cn),d=Z(i,$o),f=this.readPropertyValueText(i,So),p=f!==void 0?Number(f):NaN;return{ofClass:c,...l?{orderBy:l}:{},descending:d==="descending",...Number.isInteger(p)&&p>0?{limit:p}:{}}},t=this.readEmbeddedCarrier(e,pe);if(t)return n(t);let a=B(e,pe);if(!a)return;let s=ee(this.catalog,a);return(s?be(s).some(i=>X(i.subject,yo)):!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=B(e,pe)??a?.ofClass;if(!s)return"<!-- LookRenderer.ResourceGrid: no look.source -->";let o=ee(this.catalog,s),i=o?$n(this.catalog,o)!==void 0:!1,c=[];if(i&&t){let d=this.readPropertyValueReferences(t,s);for(let f of d){let p=ee(this.catalog,{publisher:f.subject.publisher,package_:f.subject.package_,name:f.subject.name,...f.subject.version?{version:f.subject.version}:{}});p&&c.push(p)}}else a?c=this.applyQueryShape(this.findInstancesOfClass(a.ofClass,this.readTransitive(e)),a):c=this.findInstancesOfClass(s,this.readTransitive(e));if(c.length===0)return`<!-- LookRenderer.ResourceGrid: no resources for ${s.publisher}/${s.package_}/${s.name} -->`;let l=[];for(let d of c){let f=H(this.catalog,d),p=f.label,k=f.summary,h=this.uriOf(d),b=h.package_,m=h.version,y=this.resourceHref({publisher:le(d),package_:b,name:d.name,...m?{version:m}:{}},n),v=k?`<p class="kan-resource-card-subtitle">${g(k)}</p>`:"",E=`<h3 class="kan-resource-card-title">${g(p)}</h3>${v}`;l.push(this.isLinkable(le(d),n)?`<a class="kan-resource-card" href="${g(y)}">${E}</a>`:`<span class="kan-resource-card">${E}</span>`)}return`<section class="kan-resource-grid">
134
+ ${l.join(`
135
+ `)}
136
+ </section>`}readTransitive(e){let n=Ke(e,Ao);return n instanceof ke?n.object===!0:n instanceof ae&&n.object==="true"}findInstancesOfClass(e,n=!1){let t=n?this.descendantTypeKeys(e):new Set([Q(e)]),a=[];for(let s of this.catalog)s instanceof z&&be(s).some(o=>t.has(Q(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 d=e.name,p=!!ee(this.catalog,{publisher:o,package_:c,name:c}),k=l?`${c}@${l}`:c,h=this.resourceHref({publisher:o,package_:c,name:c,...l?{version:ot(l)}:{}},o),b=e.name===c,m=[];return m.push(`<li><a href="${g(this.publisherHref(o))}">${g(o)}</a></li>`),b?m.push(`<li aria-current="page">${g(k)}</li>`):(m.push(p?`<li><a href="${g(h)}">${g(k)}</a></li>`:`<li>${g(k)}</li>`),m.push(`<li aria-current="page">${g(d)}</li>`)),`<nav class="kan-breadcrumb"><ol>
140
+ ${m.join(`
141
+ `)}
142
+ </ol></nav>`}renderNavGroup(e,n){let t=this.valueItems(this.publisherSubject(n),Qr);if(t.length===0)return"";let a=[];for(let s of t){if(!(s instanceof I))continue;let o=ee(this.catalog,{publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name}),{href:i,label:c}=this.resolveNavEntry(s,o,n),l=this.hrefForSubject(e,n),d=i===l?' aria-current="page"':"";a.push(`<li><a class="kan-nav-link" href="${g(i)}"${d}>${g(c)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
143
+ ${a.join(`
144
+ `)}
145
+ </ul></nav>`}renderSiteFooter(e){let n=Ke(this.publisherSubject(e),Jr),t;if(n instanceof oe?t=n.object:n instanceof J&&n.object instanceof I&&(t=ee(this.catalog,{publisher:n.object.subject.publisher,package_:n.object.subject.package_,name:n.object.subject.name})),!t)return"";let a=Z(t,Zr),s=this.valueItems(t,es),o=[];for(let c of s){if(!(c instanceof I))continue;let l=ee(this.catalog,{publisher:c.subject.publisher,package_:c.subject.package_,name:c.subject.name}),{href:d,label:f}=this.resolveNavEntry(c,l,e);o.push(`<a class="kan-footer-link" href="${g(d)}">${g(f)}</a>`)}if(!a&&o.length===0)return"";let i=[];return o.length>0&&i.push(`<div class="kan-footer-links">${o.join("")}</div>`),a&&i.push(`<p class="kan-footer-text">${g(a)}</p>`),`<footer class="kan-site-footer">${i.join(`
146
+ `)}</footer>`}resolveNavEntry(e,n,t){if(n&&be(n).map(c=>c.subject).some(c=>c.publisher===Qn.publisher&&c.package_===Qn.package_&&c.name===Qn.name)){let c=Z(n,Xn),l=Ke(n,ta);if(l instanceof J&&l.object instanceof I){let d=l.object,f=this.readLabelForUri({publisher:d.subject.publisher,package_:d.subject.package_,name:d.subject.name});return{href:this.urlForReference(d,ta,t),label:c??f??d.subject.name}}}let a=this.resourceHref({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},t,"*"),s=n?H(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 z)||!be(n).some(o=>X(o.subject,Bs)))continue;let t=Z(n,Hs);if(!t)continue;let a=this.valueItems(n,qs),s=[];for(let o of a){if(!(o instanceof D))continue;let i=B(o,Gs),c=Z(o,zs);!i||!c||s.push({tokenClass:i.name,pattern:c})}e.push({language:t,rules:s})}return e}renderLinks(e,n){let t=B(e,pe);if(!t)return"";let a=this.valueItems(n,t),s=[];for(let o of a){let i;if(o instanceof D?i=o:o instanceof I&&(i=ee(this.catalog,{publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name})),!i)continue;let c=Z(i,Ys);if(!c)continue;let l=Z(i,Xn)??c,d=Z(i,ea),f=d?` title="${g(d)}"`:"";s.push(`<a class="kan-extlink" href="${g(c)}"${f} target="_blank" rel="noopener noreferrer">${g(l)}</a>`)}return s.length===0?"":`<section class="kan-extlink-row">${s.join("")}</section>`}renderMarkdown(e,n,t){let a=B(e,pe);if(!a)return"<!-- LookRenderer.Markdown: no look.source -->";let s=Ke(n,a),o=new Map,i;if(s instanceof Ne?i=this.resolveMarkdownLinks(s,t,o):s instanceof ae?i=s.object:i=this.readPropertyValueText(n,a),!i)return"";let c=this.codeHighlighter(),l=mn(i,{highlight:(d,f)=>c.highlight(d,f)});for(let[d,f]of o){let p=new RegExp('(<a href="'+va(d)+'">)([^<]*)(</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,""),d=this.resourceHref({publisher:c.publisher,package_:c.package_,name:c.name,...c.version?{version:c.version}:{}},n);t&&t.set(d,`${d}.svg`),i=`[${l}](${d})`}else if(o.target){let c=o.target.subject;i=(o.displayText??this.readLabelForUri({publisher:c.publisher,package_:c.package_,name:c.name})??o.reference).replace(/[[\]]/g,"")}else i=o.displayText??o.reference;a=a.slice(0,o.startOffset)+i+a.slice(o.endOffset)}return a}renderRawMarkdown(e){let n=this.findCascadedLook(e);if(!n)return;let t=nt(n.declaration),a=[];for(let s of t){let o=on(s);if(!o||!X(o,na))continue;let i=B(s,pe);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 m=Ke(e,b);return m instanceof ke?m.object===!0:m instanceof ae&&m.object==="true"},s=a(Po),o=!s&&a(To),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),m=s?"kan-hero-avatar":"kan-hero-icon";l.push(`<img class="${m}" src="${g(b)}" alt="" loading="lazy"/>`),l.push('<div class="kan-hero-text">')}let d=B(e,Oo);if(d){let b=this.readPropertyValueText(n,d);b&&l.push(`<span class="kan-hero-eyebrow">${g(Vn(b)??b)}</span>`)}let f=B(e,Co),p="";f&&(p=this.readPropertyValueText(n,f)??""),p||(p=H(this.catalog,n).label),l.push(`<h1 class="kan-hero-title">${g(Vn(p)??p)}</h1>`);let k=B(e,Uo);if(k){let b=this.readPropertyValueText(n,k);b&&l.push(`<p class="kan-hero-subtitle">${g(Vn(b)??b)}</p>`)}let h=B(e,ma);if(h){let b=this.readPropertyValueReferences(n,h);if(b.length>0){let m=b.map(y=>this.renderBadge(y,ma,t)).join("");l.push(`<div class="kan-hero-badges">${m}</div>`)}}return i&&l.push("</div>"),l.push("</header>"),l.join(`
151
+ `)}renderPropertyList(e,n,t){let a=B(e,pe);if(!a)return"<!-- LookRenderer: PropertyList missing look.source -->";let s=this.readLabelForUri(a)??a.name,o=this.valueItems(n,a),i=o.length>0?o.map(c=>`<li>${this.renderInlineValue(c,pe,t)}</li>`).join(""):'<li class="kan-empty">(no values)</li>';return['<section class="kan-property-list">',`<h3 class="kan-property-list-title">${g(s)}</h3>`,`<ul class="kan-property-list-items">${i}</ul>`,"</section>"].join(`
152
+ `)}renderPropertyTable(e,n,t,a=""){let s=B(e,pe);if(!s)return"<!-- LookRenderer: PropertyTable missing look.source -->";let o=this.valueItems(n,s).filter(d=>d instanceof D);if(o.length===0)return"";let i=this.readLabelForUri(s)??s.name,c=a?`${a}.${s.name}`:s.name,l=B(e,ko);return this.renderEmbeddedTable(o,t,i,c,l)}renderEmbeddedTable(e,n,t,a,s){let o=[],i=new Set;for(let m of e)for(let y of m.statement){let v=y.predicate?.subject;if(!v||this.isMetaPredicate(v))continue;let E=`${v.publisher}/${v.package_}/${v.name}`;i.has(E)||(i.add(E),o.push({uri:{publisher:v.publisher,package_:v.package_,name:v.name},label:this.readLabelForUri(v)??v.name}))}if(o.length===0)return"";let c=e.map(m=>H(this.catalog,m).label),l=e.some((m,y)=>c[y]!==""&&c[y]!==m.name),d=!!a,f=(d?'<th class="kan-anchor-col"></th>':"")+(l?"<th></th>":"")+o.map(m=>`<th>${g(m.label)}</th>`).join(""),p=e.map((m,y)=>{let v=d&&m.name?`${a}.${m.name}`:"",E=v?` id="${g(v)}"`:"",K=d?`<td class="kan-anchor-col">${v?this.anchorLink(v):""}</td>`:"",O=l?`<th scope="row">${g(c[y]??"")}</th>`:"",T=o.map(x=>{let w=Ke(m,x.uri);return w?`<td>${this.tableCellValue(w,n,s)}</td>`:"<td></td>"}).join("");return`<tr${E}>${K}${O}${T}</tr>`}).join(""),k=d&&a?` id="${g(a)}"`:"",h=d&&a?this.anchorLink(a):"",b=t?`<caption>${g(t)}${h}</caption>`:"";return`<table class="kan-property-table"${k}>${b}<thead><tr>${f}</tr></thead><tbody>${p}</tbody></table>`}tableCellValue(e,n,t){if(t&&X(t,ia)){if(e instanceof he)return this.barMarkup(String(e.object));if(e instanceof ae&&Number.isFinite(Number(e.object)))return this.barMarkup(e.object)}if(e instanceof Ne)return this.statementToMarkdownHtml(e,n);if(e instanceof ae)return $a(e.object);if(e instanceof he||e instanceof ke)return g(String(e.object));if(e instanceof J&&e.object instanceof I)return this.detailReferenceLink(e.object,n);if(e instanceof oe)return this.renderEmbeddedTable([e.object],n);if(e instanceof ie){let a=e.object??[],s=a.filter(o=>o instanceof D);return s.length>0&&s.length===a.length?this.renderEmbeddedTable(s,n):a.map(o=>o instanceof I?this.detailReferenceLink(o,n):o instanceof D?this.renderEmbeddedTable([o],n):g(String(o))).filter(o=>o).join(", ")}return""}statementToMarkdownHtml(e,n){let t=new Map,a;if(e instanceof Ne?a=this.resolveMarkdownLinks(e,n,t):e instanceof ae&&(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="'+va(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=B(e,pe);if(!a)return"<!-- LookRenderer: BadgeRow missing look.source -->";let s=this.readPropertyValueReferences(n,a);return s.length===0?"":`<div class="kan-badge-row">${s.map(i=>this.renderBadge(i,pe,t)).join("")}</div>`}renderChipRow(e,n,t){let a=tt(e,Mo);if(a.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let s=[];for(let o of a){let i=this.readLabelForUri(o)??o.name,c=this.renderValuesInline(n,o,o,t);c&&s.push(`<span class="kan-chip"><span class="kan-chip-key">${g(i)}</span> <span class="kan-chip-val">${c}</span></span>`)}return s.length===0?"":`<div class="kan-chip-row">${s.join("")}</div>`}async renderReferenceList(e,n,t){let a=tt(e,ka);if(a.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let s=this.readEmbeddedCarrier(e,oa),o=this.readEmbeddedCarrier(e,mo),i=[];for(let c of a){let l=this.readPropertyValueReferences(n,c);if(l.length===0)continue;let d=this.readLabelForUri(c)??c.name;if(s){let f=[];for(let k of l)f.push(await this.renderDetailRow(k,s,o,t));let p=f.filter(k=>k).join("");p&&i.push(`<dt>${g(d)}</dt><dd><ul class="kan-ref-rows">${p}</ul></dd>`)}else{let f=l.map(p=>this.renderReferenceLink(p,ka,t)).join(", ");i.push(`<dt>${g(d)}</dt><dd>${f}</dd>`)}}return i.length===0?"":`<dl class="kan-reference-list">${i.join("")}</dl>`}async renderDetailRow(e,n,t,a){let s=ee(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)??H(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(le(s),a))return`<li class="kan-ref-row"><span class="kan-ref-rowlink">${c}</span></li>`;let l=this.hrefForSubject(s,a),d=this.svgUrlForSubject(s,a);return`<li class="kan-ref-row"><a class="kan-ref-rowlink" href="${g(l)}"><img class="kan-ref-icon" src="${g(d)}" alt="" loading="lazy"/>`+c+"</a></li>"}readPropertyValueText(e,n){let t=Fe(e,n);if(t.length===0)return Ke(e,n)?"":void 0;let a=o=>o instanceof I?this.readLabelForUri({publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name})??o.subject.name:o instanceof D?this.readEmbeddedText(o,0):String(o),s=t.map(o=>"literal"in o.item?o.item.value:o.item);if(t.length===1&&!t[0].fromList){let o=s[0];return o instanceof D?this.readEmbeddedText(o,0)||void 0:a(o)}return s.map(a).filter(o=>o).join(", ")}readEmbeddedText(e,n){if(n>=pa)return"\u2026";let t=[];for(let a of e.statement){let s=a.predicate?.subject;if(!(s&&X(s,qe)))if(a instanceof ae)t.push(a.object);else if(a instanceof he||a instanceof ke)t.push(String(a.object));else if(a instanceof J){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 oe&&t.push(this.readEmbeddedText(a.object,n+1))}return t.filter(a=>a).join(", ")}readPropertyValueReferences(e,n){return this.valueItems(e,n).filter(t=>t instanceof I)}valueItems(e,n){return Fe(e,n).map(t=>"literal"in t.item?t.item.value:t.item)}renderInlineValue(e,n,t,a=0){return e instanceof I?this.renderReferenceLink(e,n,t):e instanceof D?this.renderEmbeddedInline(e,t,a):typeof e=="string"?g(e):typeof e=="number"||typeof e=="boolean"?g(String(e)):""}renderValuesInline(e,n,t,a,s=0){return this.valueItems(e,n).map(o=>this.renderInlineValue(o,t,a,s)).filter(o=>o).join(", ")}renderEmbeddedInline(e,n,t=0){if(t>=pa)return"\u2026";let a=[];for(let s of ga(e)){if(X(s,qe))continue;let o=this.readLabelForUri({publisher:s.publisher,package_:s.package_,name:s.name})??s.name,i=this.renderValuesInline(e,s,s,n,t+1);i&&a.push(`<dt>${g(o)}</dt><dd>${i}</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=ee(this.catalog,e);if(!n)return"=";let t=Z(n,No);return t==="*"||t==="^"||t==="~"||t==="="?t:"="}readLabelForUri(e){let n=ee(this.catalog,e);if(n)return H(this.catalog,n).label}readCommentForUri(e){let n=ee(this.catalog,e);if(n)return H(this.catalog,n).summary}};function Do(r){let e=new Map;for(let n of r.statement){if(!(n instanceof oe)||!Me(n,Pn.publisher,Pn.package_,Pn.name))continue;let t=n.object;for(let a of t.statement){if(!(a instanceof ae))continue;let s=a.predicate?.subject?.name;if(!s)continue;let o=a.object;e.has(s)||e.set(s,o)}}return e}function On(r){for(let e of r.statement)if(e instanceof oe&&Me(e,Tn.publisher,Tn.package_,Tn.name))return e.object}function nt(r){return Fe(r,xo).map(e=>e.item).filter(e=>e instanceof D)}function on(r){for(let e of r.statement)if(e instanceof J&&!(!e.predicate?.subject||!X(e.predicate.subject,qe))&&e.object instanceof I){let n=e.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function B(r,e){for(let n of r.statement)if(n instanceof J&&Me(n,e.publisher,e.package_,e.name)&&n.object instanceof I){let t=n.object.subject;return{publisher:t.publisher,package_:t.package_,name:t.name}}}function tt(r,e){return we(r,e).map(n=>({publisher:n.publisher,package_:n.package_,name:n.name}))}function ga(r){let e=new Map;for(let n of r.statement){let t=n.predicate?.subject;if(!t)continue;let a=`${t.publisher}/${t.package_}/${t.name}`;e.has(a)||e.set(a,{publisher:t.publisher,package_:t.package_,name:t.name})}return[...e.values()]}function Ke(r,e){for(let n of r.statement)if(Me(n,e.publisher,e.package_,e.name))return n}function Z(r,e){for(let n of r.statement)if(n instanceof ae&&Me(n,e.publisher,e.package_,e.name))return n.object}function Un(r,e){for(let n of r.statement)if(n instanceof oe&&Me(n,e.publisher,e.package_,e.name))return n.object}function ha(r,e){for(let n of r.statement)if(n instanceof he&&Me(n,e.publisher,e.package_,e.name))return n.object}function Bo(r,e){for(let n of r.statement)if(n instanceof ke&&Me(n,e.publisher,e.package_,e.name))return n.object===!0;return!1}function Ho(r){for(let e of be(r))if(X(e.subject,Mr)||X(e.subject,Nr))return!0;return!1}function be(r){return Fe(r,qe).map(e=>e.item).filter(e=>e instanceof I)}function In(r){let e=[];for(let n of r.statement)if(n instanceof J){if(!n.predicate?.subject||!X(n.predicate.subject,rt))continue;n.object instanceof I&&e.push(n.object)}else if(n instanceof ie){if(!n.predicate?.subject||!X(n.predicate.subject,rt))continue;for(let t of n.object??[])t instanceof I&&e.push(t)}return e}function ee(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 z&&a.name===e.name&&a.namespace===t)return a}for(let t of r){if(!(t instanceof z)||t.name!==e.name)continue;if((t.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return t}}function Me(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 Q(r){return`${r.publisher}/${r.package_}/${r.name}`}function qo(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 le(r){let e=r.namespace||"",n=e.indexOf("/");return n>=0?e.substring(0,n):e}function g(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Oe(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function ba(r,e){return e==null?"":Je(e)?e.value:r==="string-literal"?typeof e=="string"?e:String(e):Array.isArray(e)?e.map(n=>Je(n)?n.value:Oe(typeof n=="string"?n:String(n))).join(""):Oe(typeof e=="string"?e:String(e))}function Sa(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(Sa).filter(n=>n!=="").join(", ");if(r instanceof I)return r.subject.name;if(r instanceof z||r instanceof D)return r.name??"";let e=r.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function at(r,e){return r.length<=e?r:r.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function ya(r){return r.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function va(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function $a(r){let e=Vn(r);return g(e||r)}function Vn(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 Fn(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 Go(){return new Set(An.bandDispatchUris().map(r=>`${r.publisher}/${r.package_}/${r.name}`))}export{Y as a,Jo as b,Te as c,H as d,It as e,Ft as f,Tt as g,qn as h,pn as i,Mt as j,Li as k,mn as l,Je as m,Ce as n,kn as o,Ln as p,Ae as q,An as r,Go as s};
@@ -0,0 +1 @@
1
+ import{a as X}from"./chunk-HF5FJBS2.js";import{a as q,b as H,ha as Y,ia as U,ja as N,pa as Q}from"./chunk-MQBWSCNY.js";import{c as w,d as h,e as g,f as I,i as R,j as L,k as E,l as v,m as K,n as P,o as A,p as x,w as J}from"./chunk-54D47DLS.js";import{a as D}from"./chunk-FUUTGGJS.js";import{b as G}from"./chunk-F67UH4FD.js";import{k as W}from"./chunk-QILEJIFU.js";var T=class extends R{links=[]};var re="kanonak.org",ae="transformations",be=3,e=f=>({publisher:re,package_:ae,name:f}),M={Transformation:e("Transformation"),InstanceTransformation:e("InstanceTransformation"),SetTransformation:e("SetTransformation"),inputPattern:e("inputPattern"),rule:e("rule"),artifactName:e("artifactName"),outputs:e("outputs"),formatOverrides:e("formatOverrides"),partitionBy:e("partitionBy"),InputPattern:e("InputPattern"),matchesClass:e("matchesClass"),requires:e("requires"),sortBy:e("sortBy"),SortKey:e("SortKey"),byProperty:e("byProperty"),order:e("order"),SortOrder:e("SortOrder"),ascending:e("ascending"),descending:e("descending"),OutputFormat:e("OutputFormat"),backendUri:e("backendUri"),FormatOverride:e("FormatOverride"),formatTarget:e("formatTarget"),metadataKeys:e("metadataKeys"),metadataRenames:e("metadataRenames"),trailingNewline:e("trailingNewline"),omitWrapper:e("omitWrapper"),RenameEntry:e("RenameEntry"),fromKey:e("fromKey"),toKey:e("toKey"),FMT_MARKDOWN_FRONTMATTER:e("markdown-with-frontmatter"),FMT_PLAIN_MARKDOWN:e("plain-markdown"),FMT_TOML:e("toml"),FMT_JSON:e("json"),FMT_HTML:e("html"),FMT_SVG:e("svg"),Expression:e("Expression"),ListSourcedExpression:e("ListSourcedExpression"),ListAggregate:e("ListAggregate"),IteratingExpression:e("IteratingExpression"),BuildAstNode:e("BuildAstNode"),astClass:e("astClass"),set:e("set"),AstFieldBinding:e("AstFieldBinding"),field:e("field"),bindValue:e("bindValue"),When:e("When"),condition:e("condition"),thenBuild:e("thenBuild"),elseBuild:e("elseBuild"),Concat:e("Concat"),parts:e("parts"),Fallback:e("Fallback"),primary:e("primary"),alternate:e("alternate"),StringLiteral:e("StringLiteral"),stringLiteral:e("stringLiteral"),IntegerLiteral:e("IntegerLiteral"),integerLiteral:e("integerLiteral"),DecimalLiteral:e("DecimalLiteral"),decimalLiteral:e("decimalLiteral"),BooleanLiteral:e("BooleanLiteral"),booleanLiteral:e("booleanLiteral"),VarRef:e("VarRef"),varName:e("varName"),PropertyRead:e("PropertyRead"),readSource:e("readSource"),readProp:e("readProp"),Traverse:e("Traverse"),traverseSource:e("traverseSource"),through:e("through"),step:e("step"),UriName:e("UriName"),uriNameOf:e("uriNameOf"),UriPublisher:e("UriPublisher"),uriPublisherOf:e("uriPublisherOf"),UriPackage:e("UriPackage"),uriPackageOf:e("uriPackageOf"),UriVersion:e("UriVersion"),uriVersionOf:e("uriVersionOf"),SubjectUri:e("SubjectUri"),subjectOf:e("subjectOf"),UriLiteral:e("UriLiteral"),refTo:e("refTo"),DisplayLabel:e("DisplayLabel"),labelTarget:e("labelTarget"),labelSource:e("labelSource"),ResolveRef:e("ResolveRef"),resolveSource:e("resolveSource"),Normalize:e("Normalize"),normSource:e("normSource"),normKind:e("normKind"),NormalizeKind:e("NormalizeKind"),NORM_TRIM_END:e("trim-end"),NORM_TO_UPPER:e("to-upper"),NORM_TO_LOWER:e("to-lower"),NORM_FIRST_CHAR:e("first-char"),UnescapedString:e("UnescapedString"),unescapedSource:e("unescapedSource"),IsSet:e("IsSet"),checkExpr:e("checkExpr"),ExpressionFragment:e("ExpressionFragment"),body:e("body"),CallFragment:e("CallFragment"),fragmentRef:e("fragmentRef"),source:e("source"),Join:e("Join"),separator:e("separator"),Count:e("Count"),Sum:e("Sum"),Min:e("Min"),Max:e("Max"),Average:e("Average"),loopVar:e("loopVar"),ForEach:e("ForEach"),emit:e("emit"),ListMap:e("ListMap"),mapBody:e("mapBody"),Filter:e("Filter"),predicate:e("predicate"),PartitionBy:e("PartitionBy"),partitionKey:e("partitionKey"),DistinctBy:e("DistinctBy"),distinctKey:e("distinctKey"),Partition:e("Partition"),key:e("key"),members:e("members"),AllStatements:e("AllStatements"),statementsOf:e("statementsOf"),StatementPredicate:e("StatementPredicate"),predicateOf:e("predicateOf"),StatementValue:e("StatementValue"),valueOf:e("valueOf"),DateFormat:e("DateFormat"),dateSource:e("dateSource"),dateFormat:e("dateFormat"),NumberFormat:e("NumberFormat"),numberSource:e("numberSource"),numberStyle:e("numberStyle"),fractionDigits:e("fractionDigits"),currencyCode:e("currencyCode"),BinaryArithmetic:e("BinaryArithmetic"),arithLeft:e("arithLeft"),arithRight:e("arithRight"),Add:e("Add"),Subtract:e("Subtract"),Multiply:e("Multiply"),Divide:e("Divide"),Reverse:e("Reverse"),WindowedMap:e("WindowedMap"),windowSize:e("windowSize"),windowVar:e("windowVar"),windowBody:e("windowBody"),PairwiseMap:e("PairwiseMap"),firstVar:e("firstVar"),secondVar:e("secondVar"),pairBody:e("pairBody"),Scan:e("Scan"),initialState:e("initialState"),stateVar:e("stateVar"),elementVar:e("elementVar"),accumulate:e("accumulate"),ListItemAt:e("ListItemAt"),itemIndex:e("itemIndex"),BinaryComparison:e("BinaryComparison"),compareLeft:e("compareLeft"),compareRight:e("compareRight"),Equals:e("Equals"),GreaterThan:e("GreaterThan"),LessThan:e("LessThan"),GreaterThanOrEqual:e("GreaterThanOrEqual"),LessThanOrEqual:e("LessThanOrEqual"),Not:e("Not"),operand:e("operand"),BooleanLogic:e("BooleanLogic"),operands:e("operands"),And:e("And"),Or:e("Or"),Contains:e("Contains"),haystack:e("haystack"),needle:e("needle"),UnaryNumericOp:e("UnaryNumericOp"),value:e("value"),Abs:e("Abs"),Negate:e("Negate"),KindPredicate:e("KindPredicate"),IsReference:e("IsReference"),IsEmbedded:e("IsEmbedded"),IsList:e("IsList"),kindCheck:e("kindCheck"),IsString:e("IsString"),IsNumber:e("IsNumber"),IsBoolean:e("IsBoolean"),StatementObject:e("StatementObject"),statementSource:e("statementSource"),Let:e("Let"),letName:e("letName"),letValue:e("letValue"),letBody:e("letBody"),GetStatementByName:e("GetStatementByName"),inSubject:e("inSubject"),byName:e("byName"),RenderMarkdown:e("RenderMarkdown"),renderSource:e("renderSource"),renderProp:e("renderProp"),renderFormat:e("renderFormat"),RenderFormat:e("RenderFormat"),RENDER_HTML:e("render-html"),RENDER_MARKDOWN:e("render-markdown")};import{Carrier as S,carrierOf as oe}from"@kanonak-protocol/canonical";function _(f){return oe(`${f.publisher}/${f.package_}/${f.name}`)}var se=/\[\[([^\[\]\n]+)\]\]/g,ie=/\[\[/g,Z=/```[\s\S]*?```|`[^`\n]*`/g;function ce(f){let t=[];for(let n of f.matchAll(Z))t.push([n.index,n.index+n[0].length]);return t}function Ke(f){if(!f||!f.includes("[["))return[];let t=ce(f),n=s=>t.some(([o,c])=>s>=o&&s<c),r=new Set(V(f).map(s=>s.startOffset)),a=[];for(let s of f.matchAll(ie)){let o=s.index;if(n(o)||r.has(o))continue;let c=f.slice(o,o+48).replace(/\s+/g," ").trim();a.push({startOffset:o,snippet:c})}return a}function V(f){if(!f||!f.includes("[["))return[];let t=[];for(let a of f.matchAll(Z))t.push([a.index,a.index+a[0].length]);let n=a=>t.some(([s,o])=>a>=s&&a<o),r=[];for(let a of f.matchAll(se)){let s=a.index;if(n(s))continue;let o=a[1],c=o.indexOf("|"),p=(c===-1?o:o.slice(0,c)).trim();if(p.length===0)continue;let i=c===-1?"":o.slice(c+1).trim(),m={reference:p,startOffset:s,endOffset:s+a[0].length};i.length>0&&(m.displayText=i),r.push(m)}return r}import{VersionOperator as pe}from"@kanonak-protocol/types/document/models/enums";function te(f,t){for(let n of f)n instanceof w&&B(n,n.name,t)}function B(f,t,n){n({kanonak:f,path:t});for(let r of f.statement){let a=r.predicate?.subject?.name;if(r instanceof K)B(r.object,ee(t,a,r.object),n);else if(r instanceof P)for(let s=0;s<r.object.length;s++){let o=r.object[s];o instanceof h&&B(o,ee(t,a,o,s),n)}}}function ee(f,t,n,r){let a=`${f}.${t??"<embedded>"}`,s=n instanceof h?n.name:void 0;return s?`${a}.${s}`:r===void 0?a:`${a}[${r}]`}var fe={...U("range"),name:"range"};function me(f){let t=f.lastIndexOf(".");return t===-1?f:f.slice(t+1)}var ne=class{constructor(t){}async parseKanonaks(t,n){let r=await t.getAllDocumentsAsync(),a=new q(t),s=new H(a);this.knownPropertyClasses.clear();let o=await this.parseAllDocumentsAsync(r,a,s,t),c=await this.mergeAndCanonicalizeAsync(o,t);return await this.learnPropertyClassesAsync(c,r,a)&&(o=await this.parseAllDocumentsAsync(r,a,s,t),c=await this.mergeAndCanonicalizeAsync(o,t)),n&&(n.authored=o),c}knownPropertyClasses=new Map;async learnPropertyClassesAsync(t,n,r){let a=new Map;for(let p of n){let i=p.metadata.namespace_?.toString();i&&a.set(i,p)}let s=[],o=new Set;te(t,({kanonak:p})=>{for(let i of p.unresolvedPredicates){let m=`${i.sourceDoc}::${i.key}`;o.has(m)||(o.add(m),s.push(i))}});let c=!1;for(let p of s){let i=a.get(p.sourceDoc);if(!i)continue;let m=await r.resolveEntityAsync(p.key,i);if(!m)continue;let d=A(m.uri);if(this.knownPropertyClasses.has(d))continue;let u=J(t,m.uri);if(!u)continue;let l=Q(t,u);l&&(this.knownPropertyClasses.set(d,l),c=!0)}return c}async parseAllDocumentsAsync(t,n,r,a){let s=[];for(let o of t){let c=o.metadata.namespace_?.toString()??"";for(let[p,i]of Object.entries(o.body)){let m=new w,d=this.resolveCanonicalEntity(p,o,c);m.namespace=d.namespace,m.name=d.name,m.statement=[];let u=await this.parseStatements(i,o,n,r,a);m.statement.push(...u.statements),m.unresolvedPredicates=u.unresolved,F(m,c),s.push(m)}}return s}async mergeAndCanonicalizeAsync(t,n){let r=new Map,a=new Map,s=[];for(let i of t)if(i instanceof w){let m=`${i.namespace}/${i.name}`,d=r.get(m);if(d){let u=a.get(m);for(let l of i.statement){let y=$(l);u.has(y)||(u.add(y),d.statement.push(l))}for(let l of i.unresolvedPredicates)d.unresolvedPredicates.some(y=>y.key===l.key&&y.sourceDoc===l.sourceDoc)||d.unresolvedPredicates.push(l)}else{let u=new w;u.namespace=i.namespace,u.name=i.name,u.sourceDoc=i.sourceDoc;let l=new Set;for(let y of i.statement){let k=$(y);l.has(k)||(l.add(k),u.statement.push(y))}u.unresolvedPredicates=[...i.unresolvedPredicates],a.set(m,l),r.set(m,u),s.push(u)}}else s.push(i);let o=new Set;for(let i of s)if(i instanceof w){let m=i.namespace||"",d=m.indexOf("/"),u=d>=0?m.slice(0,d):"",l=d>=0?m.slice(d+1):"",y=l.indexOf("@"),k=y>=0?l.slice(0,y):l;o.add(`${u}/${k}/${i.name}`)}let c=i=>o.has(`${i.publisher}/${i.package_}/${i.name}`),p=new Map;for(let i of["core-rdf","core-owl","core-kanonak"]){let m=await n.getDocumentsByNamespaceAsync("kanonak.org",i);p.set(i,W(m).chosen?.metadata.namespace_?.version??void 0)}for(let i of t)i instanceof w&&this.canonicalizeStatementBuiltins(i.statement,c,p);return s}canonicalizeStatementBuiltins(t,n,r){for(let a of t){let s=a.predicate?.subject;if(N(s,n,r),a instanceof v)a.object instanceof g&&N(a.object.subject,n,r);else if(a instanceof K)a.object&&this.canonicalizeStatementBuiltins(a.object.statement,n,r);else if(a instanceof P)for(let o of a.object??[])o instanceof g?N(o.subject,n,r):o instanceof h&&this.canonicalizeStatementBuiltins(o.statement,n,r)}}resolveCanonicalEntity(t,n,r){if(!t.includes(".")||!n.metadata?.imports)return{namespace:r,name:t};let a=t.indexOf("."),s=t.substring(0,a),o=t.substring(a+1);for(let[c,p]of Object.entries(n.metadata.imports))for(let i of p)if((i.alias??i.packageName)===s){let d=i.version;return{namespace:`${c}/${i.packageName}@${d.major}.${d.minor}.${d.patch}`,name:o}}return{namespace:r,name:t}}async parseStatements(t,n,r,a,s){let o=[],c=[];if(typeof t!="object"||t===null||Array.isArray(t))return{statements:o,unresolved:c};let p=n.metadata.namespace_?.toString()??"";for(let[i,m]of Object.entries(t))try{let d=await this.getPropertyMetadata(i,n,r,s,a);if(!d){let l=i.includes(".")?i.slice(i.lastIndexOf(".")+1):i;Y(l)||c.push({key:i,sourceDoc:p});continue}let u=await this.parsePropertyValue(i,m,d,n,r,a,s);u&&o.push(u)}catch(d){throw new Error(`Failed to parse property '${i}': ${d.message}`,{cause:d})}return{statements:o,unresolved:c}}async getPropertyMetadata(t,n,r,a,s){let o=await r.resolveEntityAsync(t,n);if(!o)return;let c=o.entity,p=c.type?.toString()??"",i=p.includes(".")?p.substring(p.lastIndexOf(".")+1):p,m=new Set(["Property","DatatypeProperty","ObjectProperty","AnnotationProperty"]),d=this.knownPropertyClasses.get(A(o.uri));if(!m.has(i)&&!d)return;let u=d??s.getPropertyTypeClassification(p),l,y=async()=>{if(l)return l;if(!(o.isImported&&o.definedInNamespace))return l=n,n;if(typeof a.getDocumentAsync!="function")throw new Error(`Cannot resolve the range of imported property '${t}': the parse repository cannot fetch defining document '${o.definedInNamespace}'. Thread the real repository through to embedded-object parsing \u2014 no stub, no fallback.`);let j=await a.getDocumentAsync(o.definedInNamespace);if(!j)throw new Error(`Cannot resolve the range of imported property '${t}': defining document '${o.definedInNamespace}' was not found in the repository.`);return l=j,j},k=await this.readDefinitionSlot(c,fe,y,r),b=k==null?void 0:String(k),O;if(u==="ObjectProperty")O="ObjectProperty";else if(u==="DatatypeProperty")O="DatatypeProperty";else{let j=b&&b.includes(".")?b.substring(b.lastIndexOf(".")+1):b??"";(b?s.isKnownXsdDatatypeName(b):!1)||j==="Literal"?O="DatatypeProperty":O="ObjectProperty"}let z;return b&&(z=(await r.resolveEntityAsync(b,await y()))?.uri),{propertyUri:o.uri.toString(),propertyType:O,range:b,rangeUri:z,isImported:o.isImported,definedInNamespace:o.definedInNamespace}}async readDefinitionSlot(t,n,r,a){let s=Object.keys(t).filter(i=>me(i)===n.name);if(s.length===0)return;let o=await r(),c=U(n.name),p=c!==void 0&&c.publisher===n.publisher&&c.package_===n.package_;for(let i of s){let m=await a.resolveEntityAsync(i,o);if(m){if(x(m.uri,n))return t[i];continue}if(!i.includes(".")&&p)return t[i]}}async parsePropertyValue(t,n,r,a,s,o,c){let p=r.propertyUri;if(n!=null){if(Array.isArray(n))return this.parseListValue(p,n,r,a,s,o,c);if(r.propertyType==="DatatypeProperty")return this.parseDatatypeValue(p,n,r,a,s,o);if(r.propertyType==="ObjectProperty")return this.parseObjectValue(p,n,r,a,s,o,c)}}async parseDatatypeValue(t,n,r,a,s,o){let c;if(typeof n=="string"){if(o.isSubstitutableDatatype(r.rangeUri))return await this.parseSubstitutableValue(t,n,a,s);c=n}else if(typeof n=="number"||typeof n=="boolean")c=String(n);else return;return this.typedScalarStatement(t,c,r)}typedScalarStatement(t,n,r){let a=g.parse(t),s=r.rangeUri?_(r.rangeUri):void 0;if(s===S.Boolean){let c=new E;return c.predicate=a,c.object=n==="true"||n==="1",c.carrier=s,c.lexical=n,c}if(s===S.Integer||s===S.Decimal||s===S.Double||s===S.Float){let c=new L;return c.predicate=a,c.object=Number(n),c.carrier=s,c.lexical=n,c}let o=R.parse(t,n);return s&&(o.carrier=s,o.lexical=n),o}typedListLiteral(t,n){let r=new I,a=n.rangeUri?_(n.rangeUri):void 0;return a===S.Boolean?r.value=t==="true"||t==="1":a===S.Integer||a===S.Decimal||a===S.Double||a===S.Float?r.value=Number(t):r.value=t,a&&(r.carrier=a,r.lexical=t),r}async parseSubstitutableValue(t,n,r,a){let s=new T;s.predicate=g.parse(t),s.object=n;for(let o of V(n)){let c=this.linkReference(o.reference,r);if(!c){let i=await a.resolveEntityAsync(o.reference,r);i&&(c=new g,c.subject=i.uri)}let p={reference:o.reference,startOffset:o.startOffset,endOffset:o.endOffset};o.displayText!==void 0&&(p.displayText=o.displayText),c!==void 0&&(p.target=c),s.links.push(p)}return s}async parseObjectValue(t,n,r,a,s,o,c){if(typeof n=="string"){if(r.rangeUri&&x(r.rangeUri,M.Expression))return this.coerceExpressionLiteral(t,n,r.rangeUri);let p=await this.resolveReference(n,a,s);if(!p)return;let i=new v;return i.predicate=g.parse(t),i.object=p,i}if(typeof n=="object"&&!Array.isArray(n)){let p=await this.parseStatements(n,a,s,o,c);if(p.statements.length>0){let d=new h;d.statement=p.statements,d.unresolvedPredicates=p.unresolved,r.rangeUri&&(d.rangeType=r.rangeUri);let u=new K;return u.predicate=g.parse(t),u.object=d,u}let i=[];for(let[d,u]of Object.entries(n))if(typeof u=="object"&&u!==null&&!Array.isArray(u)){let l=new h;l.name=d,r.rangeUri&&(l.rangeType=r.rangeUri);let y=await this.parseStatements(u,a,s,o,c);l.statement=y.statements,l.unresolvedPredicates=y.unresolved,i.push(l)}else if(typeof u=="string"){let l=await this.resolveReference(u,a,s);l&&i.push(l)}if(i.length>0){let d=new P;return d.predicate=g.parse(t),d.object=i,d}let m=new K;return m.predicate=g.parse(t),m.object=new h,r.rangeUri&&(m.object.rangeType=r.rangeUri),m}}coerceExpressionLiteral(t,n,r){let a=new h,s=new v,o=new g;o.subject=new D("kanonak.org","core-rdf","type"),s.predicate=o;let c=new g;c.subject=new D(r.publisher,r.package_,M.StringLiteral.name,r.version),s.object=c;let p=new R,i=new g;i.subject=new D(r.publisher,r.package_,M.stringLiteral.name,r.version),p.predicate=i,p.object=n,a.statement=[s,p];let m=new K;return m.predicate=g.parse(t),m.object=a,m}async parseListValue(t,n,r,a,s,o,c){let p=[],i=r.propertyType==="DatatypeProperty",m=r.rangeUri?.publisher==="kanonak.org"&&r.rangeUri?.package_==="core-rdf"&&r.rangeUri?.name==="List"||!r.rangeUri&&(r.range?.includes(".")?r.range.substring(r.range.lastIndexOf(".")+1):r.range)==="List";for(let u of n){let l=typeof u=="string"||typeof u=="number"||typeof u=="boolean";if(i&&l){let y=typeof u=="string"?u:String(u);p.push(this.typedListLiteral(y,r));continue}if(m&&l){if(typeof u=="string"){let y=await s.resolveEntityAsync(u,a);if(y){let k=new g;k.subject=y.uri,p.push(k)}else{let k=new I;k.value=u,p.push(k)}}else{let y=new I;y.value=u,p.push(y)}continue}if(typeof u=="string"){let y=await this.resolveReference(u,a,s);y&&p.push(y)}else if(typeof u=="object"&&u!==null&&!Array.isArray(u)){let y=new h;r.rangeUri&&(y.rangeType=r.rangeUri);let k=await this.parseStatements(u,a,s,o,c);y.statement=k.statements,y.unresolvedPredicates=k.unresolved,p.push(y)}}let d=new P;return d.predicate=g.parse(t),d.object=p,d}linkReference(t,n){let r=t.indexOf(".");if(r<=0||!n.metadata?.imports)return;let a=t.substring(0,r),s=t.substring(r+1);for(let[o,c]of Object.entries(n.metadata.imports))for(let p of c){if(!G(p)||(p.alias??p.packageName)!==a)continue;let i=new g,m=p.versionOperator===pe.Exact?p.version:void 0;return i.subject=new D(o,p.packageName,s,m),i}}async resolveReference(t,n,r){let a=this.linkReference(t,n);if(a)return a;let s=await r.resolveEntityAsync(t,n);if(s){let c=new g;return c.subject=s.uri,c}let o=n.metadata?.namespace_;if(o){let{KanonakUri:c}=await import("./KanonakUri-4VJGV3FN.js");if(t.includes(".")){let i=t.indexOf("."),m=t.substring(0,i),d=t.substring(i+1);if(n.metadata?.imports){for(let[u,l]of Object.entries(n.metadata.imports))for(let y of l)if((y.alias??y.packageName)===m){let b=new g;return b.subject=new c(u,y.packageName,d,y.version),b}}}let p=new g;return p.subject=new c(o.publisher,o.package_,t,o.version??void 0),p}return null}async saveKanonaks(t,n){let r=new Map;for(let a of t)a instanceof w&&a.namespace&&(r.has(a.namespace)||r.set(a.namespace,[]),r.get(a.namespace).push(a));for(let[a,s]of r){let o=await this.convertKanonaksToDocument(a,s),c=`${a.split("@")[0]}.yml`;await n.saveDocumentAsync(o,c)}}async serializeToYaml(t,n){let r=t.filter(o=>o instanceof w&&o.namespace===n);if(r.length===0)throw new Error(`No kanonaks found with namespace '${n}'`);let a=await this.convertKanonaksToDocument(n,r);return new X().save(a)}async convertKanonaksToDocument(t,n){let a={metadata:{namespace_:t,get allImports(){if(!this.imports)return[];let o=[];for(let c of Object.values(this.imports))o.push(...c);return o}},body:{}},s=new Map;for(let o of n){let c={};for(let p of o.statement){let[i,m]=this.convertStatementToProperty(p);i&&m!==null&&m!==void 0&&(c[i]=m),this.collectImportsFromStatement(p,t,s)}a.body[o.name]=c}return a}convertStatementToProperty(t){if(t instanceof R)return[t.predicate.subject.name,t.object];if(t instanceof L)return[t.predicate.subject.name,t.object];if(t instanceof E)return[t.predicate.subject.name,t.object];if(t instanceof v)return[t.predicate.subject.name,t.object.subject.name];if(t instanceof P){let n=this.convertKanonakListToValue(t.object);return[t.predicate.subject.name,n]}else if(t instanceof K){let n=this.convertEmbeddedKanonakToValue(t.object);return[t.predicate.subject.name,n]}return[null,null]}convertKanonakListToValue(t){let n=[];for(let r of t)r instanceof g?n.push(r.subject.name):r instanceof h&&n.push(this.convertEmbeddedKanonakToValue(r));return n}convertEmbeddedKanonakToValue(t){let n={};for(let r of t.statement){let[a,s]=this.convertStatementToProperty(r);a&&s!==null&&s!==void 0&&(n[a]=s)}return n}collectImportsFromStatement(t,n,r){}};function F(f,t){f.sourceDoc=t;for(let n of f.statement)if(n instanceof K)F(n.object,t);else if(n instanceof P)for(let r of n.object)r instanceof h&&F(r,t)}function $(f){let t=f.predicate?.subject;return(t?`${t.publisher}/${t.package_}/${t.name}`:"?")+"="+ue(f)}function ue(f){return f instanceof T?"m:"+String(f.object):f instanceof R?"s:"+String(f.object):f instanceof L?"n:"+String(f.object):f instanceof E?"b:"+String(f.object):f instanceof v?"r:"+C(f.object):f instanceof K?"e:"+C(f.object):f instanceof P?"l:["+(f.object??[]).map(C).join("|")+"]":"x"}function C(f){if(!f)return"";if(f instanceof g){let t=f.subject;return"R("+(t?`${t.publisher}/${t.package_}/${t.name}`:"")+")"}return f instanceof h?"E("+(f.statement??[]).map($).join(";")+")":f instanceof I?"L("+String(f.value)+")":"N"}export{T as a,te as b,re as c,ae as d,be as e,M as f,S as g,_ as h,Ke as i,V as j,ne as k};