@kanonak-protocol/sdk 5.35.0 → 5.36.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 (37) hide show
  1. package/dist/browser.d.ts +3 -1
  2. package/dist/browser.js +1 -1
  3. package/dist/{chunk-26SO3A4B.js → chunk-4QXD6HKI.js} +1 -1
  4. package/dist/chunk-6TEJENCD.js +68 -0
  5. package/dist/chunk-7TU55KLO.js +1 -0
  6. package/dist/{chunk-O35Y6QUW.js → chunk-H7SX57L7.js} +1 -1
  7. package/dist/{chunk-ZYDJUGIA.js → chunk-IN5VVPYH.js} +1 -1
  8. package/dist/chunk-Q2FG7DME.js +1 -0
  9. package/dist/chunk-ROKDCCJN.js +155 -0
  10. package/dist/{chunk-2Y6R3K5A.js → chunk-VENZTHCC.js} +1 -1
  11. package/dist/chunk-XNEWQEB6.js +1 -0
  12. package/dist/{chunk-VEGFYZXG.js → chunk-YBHIELES.js} +1 -1
  13. package/dist/index.d.ts +3 -1
  14. package/dist/index.js +1 -1
  15. package/dist/kanonaks/LiteralKanonak.d.ts +10 -0
  16. package/dist/kanonaks/walkDefinedKanonaks.d.ts +23 -18
  17. package/dist/parsing/KanonakObjectParser.d.ts +8 -0
  18. package/dist/parsing/index.js +1 -1
  19. package/dist/producer/index.js +1 -1
  20. package/dist/reasoning/index.js +1 -1
  21. package/dist/resolution/index.js +1 -1
  22. package/dist/search/index.js +1 -1
  23. package/dist/server/index.js +1 -1
  24. package/dist/transformations/index.js +1 -1
  25. package/dist/transformations/v3/TransformationLoaderV3.d.ts +8 -2
  26. package/dist/uri-helpers/PropertyValues.d.ts +34 -3
  27. package/dist/uri-helpers/UriHelpers.d.ts +3 -0
  28. package/dist/uri-helpers/index.d.ts +1 -1
  29. package/dist/uri-helpers/index.js +1 -1
  30. package/dist/validation/index.js +1 -1
  31. package/dist/validation/rules/repository/MarkdownLinkRule.d.ts +1 -0
  32. package/package.json +2 -2
  33. package/dist/chunk-54D47DLS.js +0 -1
  34. package/dist/chunk-AVVLDZAZ.js +0 -68
  35. package/dist/chunk-D7QLWVPK.js +0 -155
  36. package/dist/chunk-JHQPXEMA.js +0 -1
  37. package/dist/chunk-MQBWSCNY.js +0 -1
@@ -0,0 +1,155 @@
1
+ import{a as ct}from"./chunk-6VIUXP4N.js";import{e as u,j as $n}from"./chunk-Q2FG7DME.js";import{a as lt}from"./chunk-HF5FJBS2.js";import{a as bt}from"./chunk-PEJALHXK.js";import{$ as gt,_ as mt,ka as en,la as ve,ma as nn,na as vn,ra as ht}from"./chunk-7TU55KLO.js";import{A as oe,B as ft,C as ln,D as We,E as Ee,F as Ce,G as pt,H as An,I as yn,L as kt,b as Fe,c as W,d as D,e as O,i as ae,j as he,k as ge,l as J,m as le,n as ue,o as Ne,r as Y,s as re,t as ut,u as dt,v as we,w as Re,x as _,z as Te}from"./chunk-XNEWQEB6.js";import{a as bn}from"./chunk-FUUTGGJS.js";import{c as kn,d as ot,e as hn,g as it}from"./chunk-QILEJIFU.js";var G=class extends Error{constructor(n,t){super(`${n} (at ${t})`);this.path=t}path};function ti(r,e){let n=r.name,t=Pa(e),a={catalog:e,depth:0};if(_(r,u.InstanceTransformation))return ja(r,n,a,t);if(_(r,u.SetTransformation))return Ka(r,n,a,t);throw new G("Subject is not a recognized v3 transformation type \u2014 expected InstanceTransformation or SetTransformation",n)}function ja(r,e,n,t){return{kind:"instance",name:r.name,inputPattern:jt(r,e),rule:Sn(r,u.rule,`${e}.rule`,n),artifactName:Sn(r,u.artifactName,`${e}.artifactName`,n),outputs:Kt(r,`${e}.outputs`),overrides:Rt(r,`${e}.formatOverrides`,n),fragments:t}}function Ka(r,e,n,t){let a=Pe(r,u.partitionBy);return{kind:"set",name:r.name,inputPattern:jt(r,e),rule:Sn(r,u.rule,`${e}.rule`,n),artifactName:Sn(r,u.artifactName,`${e}.artifactName`,n),outputs:Kt(r,`${e}.outputs`),overrides:Rt(r,`${e}.formatOverrides`,n),partitionBy:a,fragments:t}}function jt(r,e){let n=Et(r,u.inputPattern);if(!n)throw new G("inputPattern is required",e);return Ra(n,`${e}.inputPattern`)}function Ra(r,e){let n=Pe(r,u.matchesClass);if(!n)throw new G("matchesClass is required",e);let t=[];for(let o of Le(r,u.requires))if(o instanceof J)t.push(Bn(o.object.subject));else if(o instanceof ue)for(let i of o.object)i instanceof O&&t.push(Bn(i.subject));let a=[],s=0;for(let o of Le(r,u.sortBy))if(o instanceof ue)for(let i of o.object)i instanceof D&&a.push(yt(i,`${e}.sortBy[${s++}]`));else o instanceof le&&a.push(yt(o.object,`${e}.sortBy[${s++}]`));return{matchesClass:n,requires:t,sortBy:a}}function yt(r,e){let n=Pe(r,u.byProperty);if(!n)throw new G("SortKey.byProperty is required",e);let t=Pe(r,u.order);if(!t)throw new G("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 G(`SortKey.order must reference tx.ascending or tx.descending; got ${t.publisher}/${t.package_}/${t.name}`,e)}function Sn(r,e,n,t){let a=qn(r,e,n,t);if(!a)throw new G("expression is required",n);return He(a,n,t)}function Hn(r,e,n,t){return Re(r,e).map((a,s,o)=>{let i=o.length>1||a.fromList?`${n}[${s}]`:n;if(a.item instanceof D)return a.item;if(a.item instanceof O){let c=Te(t.catalog,a.item.subject);if(!c)throw new G(`references '${Y(a.item.subject)}', which does not resolve in the catalog`,i);return c}throw new G(`expects a node, not the literal ${JSON.stringify(a.item.value)}`,i)})}function qn(r,e,n,t){let a=Hn(r,e,n,t);if(a.length>1)throw new G(`expects one expression, has ${a.length}`,n);return a[0]}function He(r,e,n){if(r instanceof W){let t=ve(r),a=t?Y(t):`${r.namespace}/${r.name}`,s=n.visiting??new Set;if(s.has(a))throw new G(`named expressions form a cycle: ${[...s,a].join(" -> ")}`,e);return vt(r,a,{...n,visiting:new Set([...s,a])})}return vt(r,e,n)}function vt(r,e,n){if(_(r,u.StringLiteral))return{kind:"string-literal",value:$e(r,u.stringLiteral,e)};if(_(r,u.IntegerLiteral))return{kind:"integer-literal",value:_t(r,u.integerLiteral,e)};if(_(r,u.DecimalLiteral))return{kind:"decimal-literal",value:_t(r,u.decimalLiteral,e)};if(_(r,u.BooleanLiteral))return{kind:"boolean-literal",value:Ma(r,u.booleanLiteral,e)};if(_(r,u.VarRef))return{kind:"var-ref",varName:$e(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:La(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:Ea(r,u.elseBuild,`${e}.elseBuild`,n)};if(_(r,u.Concat))return{kind:"concat",parts:Mn(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:Ca(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:Ua(r,e)};if(_(r,u.IsSet))return{kind:"is-set",check:S(r,u.checkExpr,`${e}.checkExpr`,n)};if(_(r,u.CallFragment))return Fa(r,e,n);if(_(r,u.Join))return{kind:"join",source:S(r,u.source,`${e}.source`,n),separator:$e(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:$e(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:$e(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:$e(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:$e(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:$e(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:Ia(r,e)};if(_(r,u.NumberFormat)){let t=Nn(r,u.fractionDigits);if(t!==void 0&&(!Number.isInteger(t)||t<0||t>20))throw new G(`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:Oa(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=Nn(r,u.windowSize);if(t===void 0||!Number.isInteger(t)||t<1)throw new G("windowSize must be a positive integer",`${e}.windowSize`);return{kind:"windowed-map",source:S(r,u.source,`${e}.source`,n),windowSize:t,windowVar:$e(r,u.windowVar,e),windowBody:S(r,u.windowBody,`${e}.windowBody`,n)}}if(_(r,u.PairwiseMap))return{kind:"pairwise-map",source:S(r,u.source,`${e}.source`,n),firstVar:$e(r,u.firstVar,e),secondVar:$e(r,u.secondVar,e),pairBody:S(r,u.pairBody,`${e}.pairBody`,n)};if(_(r,u.Scan))return{kind:"scan",source:S(r,u.source,`${e}.source`,n),initialState:S(r,u.initialState,`${e}.initialState`,n),stateVar:$e(r,u.stateVar,e),elementVar:$e(r,u.elementVar,e),accumulate:S(r,u.accumulate,`${e}.accumulate`,n)};if(_(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:Mn(r,u.operands,`${e}.operands`,n)};if(_(r,u.Or))return{kind:"or",operands:Mn(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:$e(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 G("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=qn(r,e,n,t);if(!a)throw new G("child expression is required",n);return He(a,n,t)}function Ea(r,e,n,t){let a=qn(r,e,n,t);if(a)return He(a,n,t)}function Mn(r,e,n,t){return Hn(r,e,n,t).map((a,s)=>He(a,`${n}[${s}]`,t))}function La(r,e,n){return Hn(r,u.set,e,n).map((t,a)=>xa(t,`${e}[${a}]`,n))}function xa(r,e,n){return{field:De(r,u.field,e,"field"),value:S(r,u.bindValue,`${e}.bindValue`,n)}}function Ca(r,e){let n=Pe(r,u.normKind);if(!n)throw new G("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 G(`Unknown NormalizeKind: ${n.publisher}/${n.package_}/${n.name}`,e)}function Ua(r,e){let n=Pe(r,u.renderFormat);if(!n)throw new G("renderFormat is required",e);if(re(n,u.RENDER_HTML))return"html";if(re(n,u.RENDER_MARKDOWN))return"markdown";throw new G(`Unknown RenderFormat: ${n.publisher}/${n.package_}/${n.name}`,e)}var $t=new Set(["decimal","percent","basis-points","currency","compact"]);function Oa(r,e){let n=Be(r,u.numberStyle);if(n===void 0)throw new G("numberStyle is required",e);if(!$t.has(n))throw new G(`Unknown numberStyle "${n}"; supported: ${[...$t].join(", ")}`,e);return n}var St=new Set(["iso-date","iso-datetime","short-date","long-date","year","month-year"]);function Ia(r,e){let n=Be(r,u.dateFormat);if(!n)throw new G("dateFormat is required",e);if(!St.has(n))throw new G(`Unknown dateFormat "${n}"; supported: ${[...St].join(", ")}`,e);return n}function Fa(r,e,n){let t=Pe(r,u.fragmentRef);if(!t)throw new G("fragmentRef is required",e);if(!Va(n.catalog,t))throw new G(`ExpressionFragment not found: ${t.publisher}/${t.package_}/${t.name}`,e);return{kind:"call-fragment",fragmentKey:Ta(t)}}function Ta(r){return`${r.publisher}/${r.package_}/${r.name}`}function Pa(r){let e=new Map,n=[];for(let t of r){if(!(t instanceof W)||!_(t,u.ExpressionFragment))continue;let a=Et(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=He(t.bodyEmb,`fragment(${t.pubPkgName})`,{catalog:r,depth:0});e.set(t.key,a)}return e}function Va(r,e){for(let n of r)if(!(!(n instanceof W)||n.name!==e.name||!(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))&&_(n,u.ExpressionFragment))return n}function Kt(r,e){let n=new Set;for(let t of Le(r,u.outputs))if(t instanceof J)n.add(t.object.subject.name);else if(t instanceof ue)for(let a of t.object)a instanceof O&&n.add(a.subject.name);if(n.size===0)throw new G("outputs is required (at least one OutputFormat)",e);return n}function Rt(r,e,n){let t=new Map,a=0;for(let s of Le(r,u.formatOverrides))if(s instanceof ue){for(let o of s.object)if(o instanceof D){let[i,c]=wt(o,`${e}[${a++}]`);t.set(i,c)}}else if(s instanceof le){let[o,i]=wt(s.object,`${e}[${a++}]`);t.set(o,i)}return t}function wt(r,e){let n=Pe(r,u.formatTarget);if(!n)throw new G("formatTarget is required",e);let t=[];for(let i of Le(r,u.metadataKeys))if(i instanceof ae)t.push(i.object);else if(i instanceof ue)for(let c of i.object){let l=c.value;typeof l=="string"&&t.push(l)}let a=new Map;for(let i of Le(r,u.metadataRenames))if(i instanceof ue){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 le){let c=i.object,l=Be(c,u.fromKey),d=Be(c,u.toKey);l&&d&&a.set(l,d)}let s=Dn(r,u.trailingNewline),o=Dn(r,u.omitWrapper);return[n.name,{metadataKeys:t.length>0?t:void 0,metadataRenames:a,trailingNewline:s,omitWrapper:o}]}function Aa(r){return r.predicate?.subject}function Le(r,e){let n=[];for(let t of r.statement){let a=Aa(t);a&&re(a,e)&&n.push(t)}return n}function Et(r,e){for(let n of Le(r,e))if(n instanceof le)return n.object}function Pe(r,e){for(let n of Le(r,e))if(n instanceof J)return Bn(n.object.subject)}function Be(r,e){for(let n of Le(r,e))if(n instanceof ae)return n.object}function Nn(r,e){for(let n of Le(r,e))if(n instanceof he)return n.object}function Dn(r,e){for(let n of Le(r,e))if(n instanceof ge)return n.object}function $e(r,e,n){let t=Be(r,e);if(t===void 0)throw new G(`${e.name} (string) is required`,n);return t}function _t(r,e,n){let t=Nn(r,e);if(t===void 0)throw new G(`${e.name} (number) is required`,n);return t}function Ma(r,e,n){let t=Dn(r,e);if(t===void 0)throw new G(`${e.name} (boolean) is required`,n);return t}function De(r,e,n,t){let a=Pe(r,e);if(!a)throw new G(`${t} (URI reference) is required`,n);return a}function Bn(r){return{publisher:r.publisher,package_:r.package_,name:r.name}}var Ye="kanonak.org",Ot="look",un="core-rdf",Na={publisher:Ye,package_:Ot,name:"displayLabel"},Da={publisher:Ye,package_:Ot,name:"displaySummary"},Ba={publisher:Ye,package_:un,name:"subClassOf"},Ha={publisher:Ye,package_:un,name:"label"},qa={publisher:Ye,package_:un,name:"comment"},Lt=new bn(Ye,un,"Resource"),Ga=8;function H(r,e){return It(r,e,new Set)}function It(r,e,n){let t=Ut(r,e,Na)??Ha,a=Ut(r,e,Da)??qa,s=xt(r,e,t,n)??e.name,o=xt(r,e,a,n);return{label:s,summary:o}}function xt(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 ge)return String(a.object);if(a instanceof J)return Ct(r,a.object.subject,t);if(a instanceof ue){let o=[];for(let i of a.object??[])if(i instanceof O){let c=Ct(r,i.subject,t);c&&o.push(c)}if(o.length>0)return o.join(", ")}return}}}function Ct(r,e,n){let t=Y(e);if(n.has(t)||n.size>=Ga)return e.name;let[a]=oe(r,e);if(!a)return e.name;let s=new Set(n);return s.add(t),It(r,a,s).label}function Ut(r,e,n){let t=Ce(e,n);if(t)return t;let a=new Set,s=we(e,za);for(;s.length>0;){let o=s.shift(),i=Y(o);if(a.has(i))continue;a.add(i);let c=oe(r,o);for(let l of c){let d=Ce(l,n);if(d)return d}for(let l of c)s.push(...we(l,Ba))}if(!a.has(Y(Lt)))for(let o of oe(r,Lt)){let i=Ce(o,n);if(i)return i}}var za={publisher:Ye,package_:un,name:"type"};var Wa="kanonak.org",Xe=(r,e)=>({publisher:Wa,package_:r,name:e}),Ya=Xe("look","source"),Ft=Xe("look","connectors"),Xa=Xe("look","relation"),Qa=Xe("look","lineStyle"),Ja=Xe("look","participants"),Za=Xe("core-owl","SymmetricProperty"),er=Xe("core-owl","inverseOf"),Tt=new Set(["solid","dotted","open","thick"]);function Pt(r){return Ce(r,Ya)}function Vt(r,e){let n=pt(e,Ft),t=n?[n]:An(e,Ft),a=[];for(let s of t){if(!(s instanceof D))continue;let o=Ce(s,Xa);if(!o)continue;let i=Ee(s,Qa),c=i!==void 0&&Tt.has(i);a.push({relation:o,subject:oe(r,o)[0],declaredStyle:c?i:void 0,invalidStyle:i!==void 0&&!c?i:void 0})}return a}function At(r,e){let n=[];for(let t of An(e,Ja)){if(!(t instanceof O))continue;let a=oe(r,t.subject)[0];a&&n.push(a)}return n}function dn(r,e,n){for(let t of dt(e))if(re(t,n)||nn(r,t).some(a=>re(a,n)))return!0;return!1}function Mt(r,e,n){let t=!!e.subject&&dn(r,e.subject,Za);return e.declaredStyle?{style:e.declaredStyle,undirected:t}:e.subject&&we(e.subject,er).some(s=>n.some(o=>re(s,o.relation)))?{style:"dotted",undirected:t}:{style:"solid",undirected:t}}function Gn(r,e,n){let t=Pt(n);if(!t)return wn("the band declares no look.source");let a=Vt(r,n);if(a.length===0)return wn("the band declares no look.connectors \u2014 nothing can be a message");let s=ft(e,t);if(!s)return{...wn(),sourceAbsent:!0};if(!(s instanceof Ne))return wn(`look.source ${Y(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=oe(r,b)[0];m&&(vn(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=ve(b),v=ve(f),E=[],K=[];for(let T of m){let{style:x,undirected:w}=Mt(r,T,a);y&&we(f,T.relation).some(z=>Y(z)===Y(y))?E.push({from:f,to:b,relation:T.relation,style:x,undirected:w}):v&&we(b,T.relation).some(z=>Y(z)===Y(v))&&K.push({from:b,to:f,relation:T.relation,style:x,undirected:w})}let U=E.length>0?E:K;l.push(...U),U.length===0&&Ve(f)!==Ve(b)&&d.push({prev:f,next:b,selected:p}),p=void 0}f=b}let g=new Map;for(let h of At(r,n))g.set(Ve(h),h);for(let h of l)g.has(Ve(h.from))||g.set(Ve(h.from),h.from),g.has(Ve(h.to))||g.set(Ve(h.to),h.to);return{messages:l,gaps:d,lifelines:[...g.values()],mentions:c,strayPropertyRefs:i,sourceAbsent:!1}}function Ve(r){return`${r.namespace}/${r.name}`}function wn(r){return{messages:[],gaps:[],lifelines:[],mentions:0,strayPropertyRefs:[],sourceAbsent:!1,...r?{problem:r}:{}}}var nr="kanonak.org",tr="core-shacl",Se=r=>({publisher:nr,package_:tr,name:r}),ar=Se("NodeShape"),rr=Se("targetClass"),sr=Se("property"),or=Se("path"),ir=Se("minCount"),cr=Se("maxCount"),lr=Se("in"),ur=Se("pattern"),dr=Se("flags"),fr=Se("minLength"),pr=Se("maxLength"),mr=Se("minInclusive"),gr=Se("maxInclusive"),kr=Se("message");function tn(r){return typeof r=="number"?r:void 0}function hr(r){let e={},n=tn(We(r,ir)),t=tn(We(r,cr));n!==void 0&&(e.minCount=n),t!==void 0&&(e.maxCount=t);let a=tn(We(r,fr)),s=tn(We(r,pr));a!==void 0&&(e.minLength=a),s!==void 0&&(e.maxLength=s);let o=tn(We(r,mr)),i=tn(We(r,gr));o!==void 0&&(e.minInclusive=o),i!==void 0&&(e.maxInclusive=i);let c=Ee(r,ur);if(c!==void 0){let f=Ee(r,dr);e.pattern=f!==void 0?{regex:c,flags:f}:{regex:c}}let l=Re(r,lr).map(f=>f.item).filter(f=>"literal"in f).map(f=>f.value);l.length>0&&(e.enumValues=l);let d=Ee(r,kr);return d!==void 0&&(e.message=d),e}function br(r,e){let n=[];for(let{item:t}of Re(e,sr))if(t instanceof D)n.push(t);else if(t instanceof O){let a=Te(r,t.subject);a&&n.push(a)}return n}function yr(r){let e=new Map;for(let n of r){if(!(n instanceof W)||!_(n,ar))continue;let t=Ce(n,rr);if(!t)continue;let a=Y(t);for(let s of br(r,n)){let o=Ce(s,or);if(!o)continue;let i=hr(s);if(vr(s,i))continue;let c={pathKey:Y(o),constraints:i},l=e.get(a);l?l.push(c):e.set(a,[c])}}return e}var Nt=new WeakMap;function fn(r){let e=Nt.get(r);return e||(e=yr(r),Nt.set(r,e)),e}function vr(r,e){return ln(r,mt)||ln(r,gt)?Object.keys(e).every(t=>t==="message"):!1}function $r(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 Dt(r,e,n){let t=Y(n),a=!1,s={};for(let o=e.length-1;o>=0;o--){let i=r.get(Y(e[o]));if(i)for(let c of i)c.pathKey===t&&(a=!0,$r(s,c.constraints))}if(a)return s.cardinality=s.maxCount===1?"single":"list",s.required=(s.minCount??0)>=1,s}var Qe="kanonak.org",jn="core-rdf",Bt="core-xsd",Sr={publisher:Qe,package_:jn,name:"subClassOf"},Ht={publisher:Qe,package_:jn,name:"label"},qt={publisher:Qe,package_:jn,name:"comment"},Gt={publisher:Qe,package_:"core-owl",name:"oneOf"},zt=r=>r;function wr(r,e,n){if(e.publisher===Qe&&e.package_===jn&&e.name==="Literal")return{kind:"datatype",uri:e};let a=Te(r,e);if(a){let s=zt(a);if(en.isDatatypeType(s))return{kind:"datatype",uri:e};if(en.isClassType(s))return{kind:"class",uri:ve(a)??e,localName:a.name}}return e.publisher===Qe&&e.package_===Bt?{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=wr(r,e.range,e.kind),a=e.kind==="object"?"object":e.kind==="datatype"?"datatype":t.kind==="class"?"object":"datatype";return{uri:e.uri,localName:e.uri.name,kind:a,range:t,...e.label!==void 0?{label:e.label}:{},...e.comment!==void 0?{comment:e.comment}:{},...n??{}}}var _n=r=>new bn(Qe,Bt,r);function jr(r){return typeof r=="boolean"?_n("boolean"):typeof r=="number"?Number.isInteger(r)?_n("integer"):_n("decimal"):_n("string")}function Kr(r,e,n){let t=[];for(let a of yn(e,Gt,r,Y(n)))if(a.kind==="subject"||a.kind==="unresolved"){let s=a.kind==="subject"?a.node:void 0,o=(s?ve(s):void 0)??a.uri,i=s?Ee(s,Ht):void 0,c=s?Ee(s,qt):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:jr(a.value)});return t}function Kn(r,e,n,t){let a=nn(r,e),s=Y(e);return ht(r,e).filter(i=>n?!0:i.domains.some(c=>Y(c)===s)).map(i=>_r(r,i,Dt(t,a,i.uri)))}async function Oi(r,e,n){let t=r.metadata?.namespace_;if(!t)throw new Error("buildOntologyModel: document has no namespace (publisher/package/version).");let a=n?.includeInherited??!1,s=Array.isArray(e)?e:await new $n().parseKanonaks(e),o=fn(s),i=p=>p.publisher===t.publisher&&p.package_===t.package_&&!(p.version&&t.version&&!ot(p.version,t.version)),c=[],l=[],d=new Set,f=!1;for(let p of s){if(!(p instanceof W))continue;let g=ve(p);if(!g||!i(g)||(f=!0,!en.isClassType(zt(p))))continue;let h=Y(g);if(d.has(h))continue;d.add(h);let b=we(p,Sr).map(v=>({uri:v,localName:v.name})),m=Ee(p,Ht),y=Ee(p,qt);c.push({uri:g,localName:g.name,superClasses:b,properties:Kn(s,g,a,o),...m!==void 0?{label:m}:{},...y!==void 0?{comment:y}:{}}),ln(p,Gt)&&l.push({uri:g,localName:g.name,members:Kr(s,p,g),...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 pn(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),g=l?` class="language-${Yt(l)}"`:"";t.push(`<pre class="kan-code"><code${g}>${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&&Wt(n[a+1])){let l=zn(s),d=Rr(n[a+1]);a+=2;let f=[];for(;a<n.length&&n[a].trim()!==""&&n[a].includes("|");)f.push(zn(n[a])),a++;t.push(Er(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&&Wt(n[a+1]));)c.push(n[a]),a++;t.push(`<p>${an(c.join(" "))}</p>`)}return t.join(`
11
+ `)}function Wt(r){return r.includes("-")?/^[\s|:-]+$/.test(r):!1}function zn(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 Rr(r){return zn(r).map(e=>{let n=e.startsWith(":"),t=e.endsWith(":");return n&&t?"center":t?"right":n?"left":null})}function Er(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="${Yt(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 Yt(r){return r.replace(/"/g,"&quot;").replace(/&/g,"&amp;")}var Lr={publisher:"kanonak.org",package_:"core-rdf",name:"label"};function Je(r){return typeof r=="object"&&r!==null&&r.kind==="raw-string"}var Ue=class extends Error{},mn=class{constructor(e,n,t=new Map){this.resolver=e;this.catalog=n;this.fragments=t}resolver;catalog;fragments;async evaluate(e,n){switch(e.kind){case"string-literal":return e.value;case"integer-literal":return e.value;case"decimal-literal":return e.value;case"boolean-literal":return e.value;case"uri-literal":return{...e.refTo};case"var-ref":{if(!n.has(e.varName))throw new Ue(`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 Xt(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 Xt(t)}case"property-read":{let t=await this.evaluate(e.source,n);return Rn(t,e.readProp)}case"traverse":{let t=await this.evaluate(e.source,n);if(!(t instanceof Fe))return;let a=Cr(t,e.through),s=[];for(let o of a){let i=oe(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&&qe(f)!==""){s.push(qe(f));break}}}return s.join("")}case"uri-name":{let t=await this.evaluate(e.source,n);return sn(t)?t.name:t instanceof O?t.subject.name:t instanceof W?t.name:t instanceof D?t.name??"":void 0}case"uri-publisher":{let t=await this.evaluate(e.source,n);return Wn(t)?.publisher}case"uri-package":{let t=await this.evaluate(e.source,n);return Wn(t)?.package_}case"uri-version":{let t=await this.evaluate(e.source,n);return Wn(t)?.version}case"subject-uri":{let t=await this.evaluate(e.source,n);if(t instanceof W){let a=t.namespace??"",s=t.name??"";return!a||!s?void 0:`${a}/${s}`}if(t instanceof O){let a=t.subject,s=a.version;return s&&typeof s.major=="number"?`${a.publisher}/${a.package_}@${s.major}.${s.minor}.${s.patch}/${a.name}`:`${a.publisher}/${a.package_}/${a.name}`}return}case"display-label":{let t=await this.resolver.resolveSubject({...e.labelTarget},this.catalog);return t?Rn(t,e.labelSource):void 0}case"resolve-ref":{let t=await this.evaluate(e.source,n);return t instanceof W?t:t instanceof O?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?"":qe(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?"":qe(t)}}case"render-markdown":{let t=await this.evaluate(e.source,n);if(!(t instanceof Fe))return;let a;for(let o of t.statement){let i=Xn(o);if(i&&re(i,e.readProp)){a=o;break}}if(!(a instanceof Ne)){let o=Rn(t,e.readProp);return o==null?void 0:qe(o)}let s=await this.renderMarkdownLinks(a);return e.format==="html"?pn(s):s}case"build-ast-node":{let t={kind:e.astClass.name};for(let a of e.set){let s=await this.evaluate(a.value,n);if(s==null||Array.isArray(s)&&s.length===0)continue;let o=a.field.name;Or.has(o)&&(Array.isArray(s)&&s.every(i=>Qt(i))?s=s.map(i=>Jt(i)).join(""):Qt(s)&&(s=Jt(s))),t[o]=s}return t}case"call-fragment":{let t=this.fragments.get(e.fragmentKey);if(!t)throw new Ue(`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?"":qe(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+=ke(s,"Sum");return a}case"min":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Ue("Min on an empty list is undefined; guard with IsSet");let a=ke(t[0],"Min");for(let s=1;s<t.length;s++){let o=ke(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 Ue("Max on an empty list is undefined; guard with IsSet");let a=ke(t[0],"Max");for(let s=1;s<t.length;s++){let o=ke(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 Ue("Average on an empty list is undefined; guard with IsSet");let a=0;for(let s of t)a+=ke(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,_e(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,_e(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,_e(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,_e(o));let c=await this.evaluate(e.partitionKey,i),l=na(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,_e(o));let c=await this.evaluate(e.distinctKey,i),l=na(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 Fe?t.statement:[]}case"statement-predicate":{let t=await this.evaluate(e.source,n);if(Yn(t)){let a=t.predicate;if(a instanceof O)return a}return}case"statement-value":{let t=await this.evaluate(e.source,n);return Yn(t)?Nr(t):void 0}case"date-format":{let t=await this.evaluate(e.source,n),a=t==null?"":qe(t);return a?Fr(a,e.format):""}case"number-format":{let t=await this.evaluate(e.source,n),a=t==null?"":qe(t);return a.trim()?Mr(a,e.style,e.fractionDigits,e.currencyCode):""}case"add":{let t=ke(await this.evaluate(e.left,n),"Add"),a=ke(await this.evaluate(e.right,n),"Add");return t+a}case"subtract":{let t=ke(await this.evaluate(e.left,n),"Subtract"),a=ke(await this.evaluate(e.right,n),"Subtract");return t-a}case"multiply":{let t=ke(await this.evaluate(e.left,n),"Multiply"),a=ke(await this.evaluate(e.right,n),"Multiply");return t*a}case"divide":{let t=ke(await this.evaluate(e.left,n),"Divide"),a=ke(await this.evaluate(e.right,n),"Divide");if(a===0)throw new Ue("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,_e(t[s])),o.set(e.secondVar,_e(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,_e(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 Zt(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(Zt(s,a))return!0;return!1}case"abs":{let t=ke(await this.evaluate(e.value,n),"Abs");return Math.abs(t)}case"negate":return-ke(await this.evaluate(e.value,n),"Negate");case"is-reference":{let t=await this.evaluate(e.check,n);return t instanceof O||t instanceof W}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(!Yn(t))return;let a=t;return a instanceof ae||a instanceof he||a instanceof ge||a instanceof J||a instanceof le||a instanceof ue?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 Fe)||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 Ue("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}](${ut(o)})`}else t+=s.displayText??s.reference;a=s.endOffset}return t+=n.slice(a),t}async resolveLabel(e){let n=await this.resolver.resolveSubject(e,this.catalog);if(!n)return;let t=Rn(n,Lr);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,_e(t[s-1])),o.set(e.secondVar,_e(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,_e(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,_e(t[s])),a.push(await this.evaluate(e.mapBody,o))}return a}if(e.kind==="windowed-map"){let t=await this.evaluateList(e.source,n);if(t.length<e.windowSize)return[];let a=[];for(let s=t.length-e.windowSize;s>=0;s--){let o=t.slice(s,s+e.windowSize),i=new Map(n);i.set(e.windowVar,o);let c=await this.evaluate(e.windowBody,i);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}}};function Rn(r,e){if(r instanceof Fe)return xr(r,e);if(Ur(r))return re(e,u.key)?r.key:re(e,u.members)?r.members:void 0}function xr(r,e){for(let n of r.statement){let t=Xn(n);if(!(!t||!re(t,e))&&(n instanceof ae||n instanceof he||n instanceof ge||n instanceof J||n instanceof le||n instanceof ue))return n.object}}function Cr(r,e){let n=[];for(let t of r.statement){let a=Xn(t);if(!(!a||!re(a,e))){if(t instanceof J)n.push(t.object.subject);else if(t instanceof ue)for(let s of t.object)s instanceof O&&n.push(s.subject)}}return n}function Xn(r){return r.predicate?.subject}function qe(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 Fe)return r.name??"";if(r instanceof O)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 _e(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)&&!(r instanceof Fe)&&!(r instanceof O)&&!(r instanceof D)&&"value"in r?r.value:r}function Xt(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 Ur(r){return typeof r=="object"&&r!==null&&r.kind==="Partition"&&Array.isArray(r.members)}function ke(r,e){if(typeof r=="number"&&Number.isFinite(r))return r;throw new Ue(`${e} requires numeric elements; got ${Ir(r)}`)}function Wn(r){if(r instanceof W){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 O){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 Or=new Set(["stringValue","text","rawContent","key","propertyKey","linkLabel"]);function Qt(r){return typeof r=="string"||typeof r=="number"||typeof r=="boolean"||Je(r)}function Jt(r){return Je(r)?r.value:String(r)}function Ir(r){return r===void 0?"undefined":r===null?"null":Array.isArray(r)?`array(${r.length})`:typeof r}function Fr(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 Tr={USD:"$",EUR:"\u20AC",GBP:"\xA3",JPY:"\xA5"},Pr={decimal:0,currency:0,compact:0,percent:2,"basis-points":4};function Vr(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 Ar(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 Mr(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=Vr(s,Pr[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=Tr[i]??`${i} `,l=o.startsWith("-");return`${l?"-":""}${c}${Ar(l?o.slice(1):o)}`}default:return o}}function Zt(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=ea(r),i=ea(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 ea(r){if(r instanceof O){let e=r.subject;return{publisher:e.publisher,package_:e.package_,name:e.name}}if(r instanceof W){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 Yn(r){return r instanceof ae||r instanceof he||r instanceof ge||r instanceof J||r instanceof le||r instanceof ue}function Nr(r){return r instanceof ae||r instanceof he||r instanceof ge?String(r.object??""):r instanceof J?r.object?.subject?.name??"":r instanceof le?"[embedded]":r instanceof ue?(r.object??[]).map(n=>{if(n instanceof O)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 na(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 O){let e=r.subject;return`r:${e.publisher}/${e.package_}/${e.name}`}if(r instanceof Fe){let e=r.name??"";return`k:${r.namespace??""}/${e}`}return sn(r)?`u:${r.publisher}/${r.package_}/${r.name}`:`o:${JSON.stringify(r)}`}var En=class{constructor(e,n,t){this.repository=e;this.parser=n;this.objectParser=t}repository;parser;objectParser;cache=new Map;async resolveSubject(e,n){let t=Te(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 g=p.metadata?.namespace_?.version;return g&&g.major===a.major&&g.minor===a.minor&&g.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=Te(i,e);if(c)return c;for(let l of i)if(l instanceof W&&l.name===e.name)return l}};var Ln=class{byLang=new Map;constructor(e){for(let n of e){if(!n.language)continue;let t=[];for(let a of n.rules){if(!a.tokenClass||!a.pattern)continue;let s;try{s=new RegExp(a.pattern,"y")}catch{continue}t.push({tokenClass:a.tokenClass,re:s})}this.byLang.set(n.language,t)}}has(e){return this.byLang.has(e)}highlight(e,n){let t=this.byLang.get(e);return!t||t.length===0?rn(n):n.split(`
18
+ `).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 Fn={publisher:"kanonak.org",package_:"derivation",name:"look"},Tn={publisher:"kanonak.org",package_:"derivation",name:"tokens"},xe={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},Qn={publisher:"kanonak.org",package_:"core-rdf",name:"label"},ta={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},Dr={publisher:"kanonak.org",package_:"core-rdf",name:"range"},Br={publisher:"kanonak.org",package_:"core-rdf",name:"Class"},Hr={publisher:"kanonak.org",package_:"core-owl",name:"Class"},qr={publisher:"kanonak.org",package_:"look",name:"Hero"},Gr={publisher:"kanonak.org",package_:"look",name:"PropertyList"},zr={publisher:"kanonak.org",package_:"look",name:"PropertyTable"},Wr={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},Yr={publisher:"kanonak.org",package_:"look",name:"ChipRow"},Xr={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},Qr={publisher:"kanonak.org",package_:"look",name:"ReferencedBy"},Jr={publisher:"kanonak.org",package_:"look",name:"Instances"},aa={publisher:"kanonak.org",package_:"look",name:"Markdown"},Zr={publisher:"kanonak.org",package_:"look",name:"NavGroup"},es={publisher:"kanonak.org",package_:"look",name:"nav"},Jn={publisher:"kanonak.org",package_:"look",name:"NavLink"},ns={publisher:"kanonak.org",package_:"look",name:"footer"},ts={publisher:"kanonak.org",package_:"look",name:"text"},as={publisher:"kanonak.org",package_:"look",name:"links"},ra={publisher:"kanonak.org",package_:"look",name:"target"},rs={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},ss={publisher:"kanonak.org",package_:"look",name:"Timeline"},os={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},is={publisher:"kanonak.org",package_:"look",name:"Figure"},cs={publisher:"kanonak.org",package_:"look",name:"Diagram"},ls={publisher:"kanonak.org",package_:"look",name:"facets"},us={publisher:"kanonak.org",package_:"look",name:"relation"},ds={publisher:"kanonak.org",package_:"look",name:"encode"},fs={publisher:"kanonak.org",package_:"look",name:"cluster"},ps={publisher:"kanonak.org",package_:"look",name:"connector"},ms={publisher:"kanonak.org",package_:"look",name:"channels"},gs={publisher:"kanonak.org",package_:"look",name:"mapPath"},ks={publisher:"kanonak.org",package_:"look",name:"to"},hs={publisher:"kanonak.org",package_:"look",name:"mark"},bs={publisher:"kanonak.org",package_:"look",name:"expand"},ys={publisher:"kanonak.org",package_:"look",name:"edges"},sa={publisher:"kanonak.org",package_:"look",name:"nodeTier"},vs={publisher:"kanonak.org",package_:"look",name:"diagramTier"},$s={publisher:"kanonak.org",package_:"look",name:"nodeNote"},Ss={publisher:"kanonak.org",package_:"look",name:"Sequence"},ws={publisher:"kanonak.org",package_:"look",name:"numbered"},_s={publisher:"kanonak.org",package_:"look",name:"EntityRelationship"},js={publisher:"kanonak.org",package_:"core-owl",name:"SymmetricProperty"},Ks={publisher:"kanonak.org",package_:"core-owl",name:"FunctionalProperty"},Rs={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},Es={publisher:"kanonak.org",package_:"look",name:"edgeLabel"},Ls={publisher:"kanonak.org",package_:"look",name:"labelEdges"},xs={publisher:"kanonak.org",package_:"look",name:"edgeValue"},Cs={publisher:"kanonak.org",package_:"look",name:"figureTitle"},Us={publisher:"kanonak.org",package_:"look",name:"titlePosition"},Os=`(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},Is=["chip","icon","card","full"],Fs={56:"chip",120:"icon",240:"card",420:"full"},de=11,Ts={publisher:"kanonak.org",package_:"look",name:"placement"},Ps={publisher:"kanonak.org",package_:"look",name:"width"},Vs=4,As={publisher:"kanonak.org",package_:"look",name:"StatRow"},Ms={publisher:"kanonak.org",package_:"look",name:"Horizon"},Ns={publisher:"kanonak.org",package_:"look",name:"PackageContents"},Zn={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},Ds={publisher:"kanonak.org",package_:"core-kanonak",name:"Publisher"},Bs={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},Hs={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},qs={publisher:"kanonak.org",package_:"look",name:"packages"},Gs={publisher:"kanonak.org",package_:"code-grammars",name:"CodeGrammar"},zs={publisher:"kanonak.org",package_:"code-grammars",name:"language"},Ws={publisher:"kanonak.org",package_:"code-grammars",name:"rule"},Ys={publisher:"kanonak.org",package_:"code-grammars",name:"tokenClass"},Xs={publisher:"kanonak.org",package_:"code-grammars",name:"pattern"},Qs={publisher:"kanonak.org",package_:"look",name:"Links"},Js={publisher:"kanonak.org",package_:"link",name:"url"},Zs={publisher:"kanonak.org",package_:"link",name:"links"};var eo={publisher:"kanonak.org",package_:"look",name:"Distribution"},no={publisher:"kanonak.org",package_:"look",name:"alphaPath"},to={publisher:"kanonak.org",package_:"look",name:"betaPath"},et={publisher:"kanonak.org",package_:"look",name:"SectionHeading"},ao={publisher:"kanonak.org",package_:"look",name:"SectionNav"},oa={publisher:"kanonak.org",package_:"look",name:"heading"},ro={publisher:"kanonak.org",package_:"look",name:"note"},so={publisher:"kanonak.org",package_:"look",name:"VersionDelta"},oo={publisher:"kanonak.org",package_:"look",name:"TimePlot"},io={publisher:"kanonak.org",package_:"look",name:"Details"},co={publisher:"kanonak.org",package_:"look",name:"EmbeddedViews"},lo={publisher:"kanonak.org",package_:"look",name:"ResourceCount"},uo={publisher:"kanonak.org",package_:"look",name:"counts"},fo={publisher:"kanonak.org",package_:"look",name:"skip"},ia={publisher:"kanonak.org",package_:"derivation",name:"derivations"},po={publisher:"kanonak.org",package_:"look",name:"laneBy"},mo={publisher:"kanonak.org",package_:"look",name:"stats"},go={publisher:"kanonak.org",package_:"look",name:"statPath"},ko={publisher:"kanonak.org",package_:"look",name:"statLabel"},ca={publisher:"kanonak.org",package_:"look",name:"labelPath"},ho={publisher:"kanonak.org",package_:"look",name:"badgePath"},la={publisher:"kanonak.org",package_:"look",name:"BarMeter"},bo={publisher:"kanonak.org",package_:"look",name:"cellAs"},yo={publisher:"kanonak.org",package_:"look",name:"variants"},vo={publisher:"kanonak.org",package_:"look",name:"when"},$o={publisher:"kanonak.org",package_:"look",name:"property"},ua={publisher:"kanonak.org",package_:"look",name:"equals"},So={publisher:"kanonak.org",package_:"look",name:"ResourceQuery"},wo={publisher:"kanonak.org",package_:"look",name:"ofClass"},_o={publisher:"kanonak.org",package_:"look",name:"direction"},jo={publisher:"kanonak.org",package_:"look",name:"limit"},xn={publisher:"kanonak.org",package_:"look",name:"orderBy"},da={publisher:"kanonak.org",package_:"look",name:"track"},gn={publisher:"kanonak.org",package_:"look",name:"metricPath"},nt={publisher:"kanonak.org",package_:"look",name:"hueBy"},fa={publisher:"kanonak.org",package_:"look",name:"lowerPath"},pa={publisher:"kanonak.org",package_:"look",name:"upperPath"},Ko={publisher:"kanonak.org",package_:"look",name:"axisMin"},Ro={publisher:"kanonak.org",package_:"look",name:"axisMax"},Eo={publisher:"kanonak.org",package_:"look",name:"valueLabel"};var ma={publisher:"kanonak.org",package_:"look",name:"semanticSvg"},Lo={publisher:"kanonak.org",package_:"look",name:"tierChip"},xo={publisher:"kanonak.org",package_:"look",name:"tierIcon"},Co={publisher:"kanonak.org",package_:"look",name:"tierCard"},Uo={publisher:"kanonak.org",package_:"look",name:"tierFull"},Ge={publisher:"kanonak.org",package_:"core-rdf",name:"type"},st={publisher:"kanonak.org",package_:"core-rdf",name:"subClassOf"},ga=6,Oo={publisher:"kanonak.org",package_:"look",name:"bands"},Io={publisher:"kanonak.org",package_:"look",name:"title"},Fo={publisher:"kanonak.org",package_:"look",name:"eyebrow"},To={publisher:"kanonak.org",package_:"look",name:"subtitle"},ka={publisher:"kanonak.org",package_:"look",name:"badges"},pe={publisher:"kanonak.org",package_:"look",name:"source"},Po={publisher:"kanonak.org",package_:"look",name:"via"},Vo={publisher:"kanonak.org",package_:"look",name:"size"},Ao={publisher:"kanonak.org",package_:"look",name:"icon"},Mo={publisher:"kanonak.org",package_:"look",name:"avatar"},No={publisher:"kanonak.org",package_:"look",name:"contents"},Do={publisher:"kanonak.org",package_:"look",name:"transitive"},Bo={publisher:"kanonak.org",package_:"look",name:"chips"},ha={publisher:"kanonak.org",package_:"look",name:"entries"},Ho={publisher:"kanonak.org",package_:"look",name:"urlForm"},Vn=class r{constructor(e){this.catalog=e}catalog;linkMode="single-publisher";setLinkMode(e){return this.linkMode=e,this}expressionFailureList=[];expressionFailureSeen=new Set;expressionFailures(){return this.expressionFailureList}noteExpressionFailure(e,n){let t=n instanceof Error?n.message:String(n),a=`${e}\0${t}`;this.expressionFailureSeen.has(a)||(this.expressionFailureSeen.add(a),this.expressionFailureList.push({carrier:e,reason:t}));let s=o=>o.replace(/-{2,}/g,"\u2013").replace(/-$/,"");return`<!-- LookRenderer: expression carrier "${s(e)}" did not compile: ${s(t)} Nothing is rendered for it. See /.well-known/kanonak-render (Expression carriers). -->`}get publisherFirst(){return this.linkMode==="open-world"}linkBase(e){return this.publisherFirst?`/${e}`:""}resourceHref(e,n,t="="){return bt.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=zo(e)?void 0:Cn(e);return n?{declaration:n,sourceClass:{publisher:ie(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=oe(this.catalog,s);for(let c of i){let l=Cn(c);if(l)return{declaration:l,sourceClass:{publisher:s.publisher,package_:s.package_,name:s.name}}}for(let c of i)for(let l of On(c))t.push(l)}if(!n.has(Q(xe)))for(let a of oe(this.catalog,xe)){let s=Cn(a);if(s)return{declaration:s,sourceClass:{...xe}}}}matchingVariants(e){let n=this.findCascadedLook(e);if(!n)return[];let t=this.valueItems(n.declaration,yo).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,vo);if(!c)continue;let l=B(c,$o);if(!l)continue;let d=B(c,ua);if(d){this.valueItems(e,l).filter(g=>g instanceof O).some(g=>Q(g.subject)===Q(d))&&o.push({variant:i,declaredBy:s});continue}let f=Z(c,ua);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 qo(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(xe)?"resource-floor":"class",d=oe(this.catalog,i.subject);if(d.length!==0)for(let f of d){t(f,l);for(let p of On(f))s.push(p)}}let o=ie(e);if(o){let i=this.publisherSubject(o);i!==e&&t(i,"publisher")}if(!a.has(Q(xe))){let i=oe(this.catalog,xe);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(([g,h])=>`--kan-${g}: ${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 lt,n=new ct(e);this.resolverInstance=new En(n,e,new $n(e))}return this.resolverInstance}async evaluateTier(e,n){if(!e)return"";let t;try{t=He(e,"semanticSvg-tier",{catalog:this.catalog,depth:0})}catch(o){return this.noteExpressionFailure("look.semanticSvg tier",o)}let a=new mn(this.expressionResolver(),this.catalog);if(t.kind==="concat"){let o=[];for(let i of t.parts){let c=await a.evaluate(i,n);o.push(va(i.kind,c))}return o.join("")}let s=await a.evaluate(t,n);return va(t.kind,s)}async evaluateCarrier(e,n){if(!e)return;let t;try{t=He(e,"look-carrier",{catalog:this.catalog,depth:0})}catch(c){this.noteExpressionFailure("look band path carrier",c);return}let a=new mn(this.expressionResolver(),this.catalog),s=new Map([["input",n]]),o=await a.evaluate(t,s),i=_a(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=je(e,n);return t instanceof le&&t.object instanceof D?t.object:void 0}referenceLabel(e){let n=e.subject,t=oe(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=je(c,ma);if(!(l instanceof le))return;let d=l.object,f=Un(d,Lo),p=Un(d,xo),g=Un(d,Co),h=Un(d,Uo);n.tierChip===void 0&&f!==void 0&&(n.tierChip=f),n.tierIcon===void 0&&p!==void 0&&(n.tierIcon=p),n.tierCard===void 0&&g!==void 0&&(n.tierCard=g),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 oe(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=oe(this.catalog,c.subject);for(let f of d){t(f);for(let p of On(f))i.push(p)}}if(!o.has(Q(xe)))for(let c of oe(this.catalog,xe))t(c);return n}renderStylesheet(e){let n=this.explainStylesheet(e),t=[];for(let[o,i]of n.tokens)t.push(` --kan-${o}: ${i.value};`);let a=t.length>0?`:root {
78
+ ${t.join(`
79
+ `)}
80
+ }`:":root { /* no tokens resolved */ }",s=n.baseStylesheet.css??"";return`${Wo(n)}
81
+ ${a}
82
+ ${s}`}explainStylesheet(e){let n=this.explainCascadedTokens(e),t=this.explainBaseStylesheet(ie(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 W)||f.name!=="base-stylesheet")continue;let p=f.namespace||"";if(p.startsWith(`${e}/look-styles@`)){a.push(p);let g=t(f);g&&(!o||kn(g,o)>0)&&(s=f,o=g)}else if(p.startsWith("kanonak.org/look-styles@")){a.push(p);let g=t(f);g&&(!c||kn(g,c)>0)&&(i=f,c=g)}}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=tt(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=ie(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,et)&&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,Ts);if(t!=="floatLeft"&&t!=="floatRight")return n;let a=t==="floatLeft"?"left":"right",s=Z(e,Ps),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,et))continue;let s=Z(t,oa);s&&n.push({slug:$a(s),label:s})}return n}publisherSubject(e){for(let t of this.catalog){if(!(t instanceof W)||ie(t)!==e||!be(t).some(s=>X(s.subject,Ds)))continue;return oe(this.catalog,{publisher:e,package_:this.uriOf(t).package_,name:t.name})[0]??t}let n=new W;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===xe.publisher&&a.package_===xe.package_&&a.name===xe.name||a.publisher===Zn.publisher&&a.package_===Zn.package_&&a.name===Zn.name)(n.sourceClass):!1}renderPackageVersionList(e,n,t){let a=ie(t),s=this.renderNavGroup(t,a),o=this.renderBreadcrumb(t,a,{bareOverview:!0}),i=n.map(l=>`<a class="kan-resource-card" href="${k(this.packageHref(a,e,l))}/"><h3 class="kan-resource-card-title">${k(l)}</h3></a>`).join(`
84
+ `),c=`<header class="kan-hero">
85
+ <span class="kan-hero-eyebrow">PACKAGE</span>
86
+ <h1 class="kan-hero-title">${k(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>${k(e)}</title>
96
+ <link rel="stylesheet" href="${k(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="${k(e.name)}.svg" alt=""></figure>
107
+ `:"",i=ie(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>${k(a)}</title>
113
+ <link rel="stylesheet" href="${k(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,ia))if(i instanceof D)for(let c of i.statement){if(!(c instanceof J)||!Me(c,"kanonak.org","derivation","format")||!(c.object instanceof O))continue;let l=c.object.subject;if(l.publisher==="kanonak.org"&&l.package_==="formats"&&l.name==="svg")return!0}for(let i of On(o))t.push(i)}}return!1}static BAND_DISPATCH=[[ao,(e,n)=>e.renderSectionNav(n.sections)],[qr,(e,n)=>e.renderHero(n.band,n.instance,n.contextPublisher)],[Gr,(e,n)=>e.renderPropertyList(n.band,n.instance,n.contextPublisher)],[zr,(e,n)=>e.renderPropertyTable(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[Wr,(e,n)=>e.renderBadgeRow(n.band,n.instance,n.contextPublisher)],[Yr,(e,n)=>e.renderChipRow(n.band,n.instance,n.contextPublisher)],[Xr,(e,n)=>e.renderReferenceList(n.band,n.instance,n.contextPublisher)],[Qr,(e,n)=>e.renderReferencedBy(n.band,n.instance,n.contextPublisher)],[Jr,(e,n)=>e.renderInstances(n.band,n.instance,n.contextPublisher)],[aa,(e,n)=>e.renderMarkdown(n.band,n.instance,n.contextPublisher)],[Qs,(e,n)=>e.renderLinks(n.band,n.instance)],[Zr,(e,n)=>e.renderNavGroup(n.instance,n.contextPublisher)],[rs,(e,n)=>e.renderResourceGrid(n.band,n.contextPublisher,n.instance)],[ss,(e,n)=>e.renderTimeline(n.band,n.contextPublisher)],[os,(e,n)=>e.renderVersionDiff(n.band,n.contextPublisher)],[is,(e,n)=>e.renderFigure(n.band,n.instance,n.contextPublisher)],[cs,(e,n)=>e.renderDiagram(n.band,n.instance,n.contextPublisher)],[Ss,(e,n)=>e.renderSequence(n.band,n.instance,n.contextPublisher)],[_s,(e,n)=>e.renderEntityRelationship(n.band,n.instance,n.contextPublisher)],[As,(e,n)=>e.renderStatRow(n.band,n.instance)],[Ms,(e,n)=>e.renderHorizon(n.band,n.instance,n.contextPublisher)],[Ns,(e,n)=>e.renderPackageContents(n.instance,n.contextPublisher)],[Bs,(e,n)=>e.renderFeaturedResource(n.band,n.contextPublisher)],[Hs,(e,n)=>e.renderPublisherPackages(n.band,n.contextPublisher)],[eo,(e,n)=>e.renderDistribution(n.band,n.instance)],[et,(e,n)=>e.renderSectionHeading(n.band)],[so,(e,n)=>e.renderVersionDelta(n.band,n.instance)],[oo,(e,n)=>e.renderTimePlot(n.band,n.instance,n.contextPublisher)],[io,(e,n)=>e.renderDetails(n.band,n.instance,n.contextPublisher)],[co,(e,n)=>e.renderEmbeddedViews(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[lo,(e,n)=>e.renderResourceCount(n.band,n.contextPublisher)],[la,(e,n)=>e.renderBarMeter(n.band,n.instance)]];static bandDispatchUris(){return r.BAND_DISPATCH.map(([e])=>e)}uriOf(e){let n=ve(e);return n?{publisher:n.publisher,package_:n.package_,name:n.name,...n.version?{version:n.version}:{}}:{publisher:ie(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 g of p){let h=ee(this.catalog,{publisher:g.subject.publisher,package_:g.subject.package_,name:g.subject.name,...g.subject.version?{version:g.subject.version}:{}});if(!h)continue;let b=g.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:ie(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,da);if(!s||!a)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let o=B(e,xn),i=this.readEmbeddedCarrier(e,nt),c=this.findInstancesOfClass(t,this.readTransitive(e));if(c.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let l=g=>o?this.readPropertyValueText(g,o)??"":"",d=c.slice().sort((g,h)=>l(g).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((g,h)=>{let b=g.hue!==void 0?g.hue:Math.round(h*360/f.length),m=g.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 U=g.lastSubject&&this.isLinkable(ie(g.lastSubject),n)?`<a href="${k(this.hrefForSubject(g.lastSubject,n))}">${k(g.label)}</a>`:k(g.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${b}"><span class="kan-vdiff-label">${U}</span><span class="kan-vdiff-start">${y.toFixed(2)}</span>`+this.sparkline(g.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,g=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=g(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,Vo);return`<figure class="kan-figure${c==="small"||c==="medium"||c==="large"?` kan-figure-${c}`:""}"><img class="kan-figure-img" src="${k(o)}" alt="${k(i)}" loading="lazy"/></figure>`}diagramArrowSeq=0;diagramScriptEmitted=!1;async renderDiagram(e,n,t,a=0,s=new Set){let o=this.valueItems(e,ls).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,us);if(!b){i.push("<!-- LookRenderer.Diagram: facet has no resolvable look.relation -->");continue}let m=B(h,ds),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=je(h,hs),K=E instanceof le&&E.object instanceof D?E.object:void 0,U=Z(h,sa),T=U&&Ae[U]!==void 0?Ae[U]:void 0,x=T??this.classTierSize(y),w=Fs[x??Ae.icon]??"icon",z=this.readEmbeddedCarrier(h,$s),P=B(h,bs),V=P?ee(this.catalog,P):void 0;if(V){i.push(await this.renderDiagramExpand(y,V,t,a,s,z,T));continue}if(m&&X(m,ps)){let L=B(h,ys),j=this.facetEdgeLabel(h,L??b),N=this.readEmbeddedCarrier(h,xs);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,fs)){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,Cs),l=Z(e,Us),d=h=>`<div class="kan-diagram-title" style="font-weight:600;font-size:0.95rem;color:var(--kan-text);${h}">${k(c)}</div>`,f=c&&l!=="bottom"?d("margin:0 0 .5rem"):"",p=c&&l==="bottom"?d("margin:.5rem 0 0"):"",g="";return a===0&&!this.diagramScriptEmitted&&(this.diagramScriptEmitted=!0,g=`<script>${Os}</script>`),`<section class="kan-diagram">${f}${i.join("")}${p}${g}</section>`}async embedTiers(e,n){let t=[];for(let a of Is){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),g=a<Vs&&!s.has(d)?await this.renderDiagram(n,l,t,a+1,new Set([...s,d])):"",h=g?`<div style="margin-left:30px;border-left:2px solid var(--kan-border);padding-left:14px;margin-top:6px">${g}</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)">${k(c)}</span>`:"";return`<a href="${k(s)}" style="display:inline-flex;align-items:center;gap:10px;text-decoration:none"><img src="${k(o)}" width="${t}" height="${t}" alt="" loading="lazy"/><span><span class="kan-diagram-node-label">${k(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,vs),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,ms).filter(s=>s instanceof D),a=[];for(let s of t){let o=this.readEmbeddedCarrier(s,gs),i=Z(s,ks);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,g=c.map(h=>Number.isFinite(h)&&p>0?(h-d)/p:.5);a.push({to:i,norm:g})}return a}facetEdgeLabel(e,n){let t=Z(e,Es);if(t)return t;if(Go(e,Ls)&&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)">${k(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,U=l?`opacity:${(.4+l.norm[m]*.6).toFixed(2)};`:"";b.push(`<a class="kan-diagram-mark" href="${k(E)}" style="display:block;text-decoration:none;${U}">${v}<span class="kan-diagram-mark-label">${k(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,g=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),U=l?.4+l.norm[m]*.6:1;return this.diagramTile(b,E,K,o,a,U)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${p} ${g}" 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"),g=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,U=`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,I=L+c/2,F=(j+K)/2,$=p?1.5+p.norm[P]*5.5:2,A=g?.4+g.norm[P]*.6:1,q=g?` 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)},${I.toFixed(1)} ${R.toFixed(1)},${I.toFixed(1)}" class="kan-diagram-edge" fill="none" stroke="var(--kan-border)" stroke-width="${$.toFixed(1)}"${q} marker-end="url(#${U})"/>`);let C=await this.edgeText(o,V,i);C&&x.push(this.edgeLabelEl((j+K)/2,(N+I)/2-5,C)),w.push(this.diagramTile(V,K,L,c,a,g?A:1))}let z=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(U,"var(--kan-border)")}${T.join("")}${x.join("")}${z}${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])),g=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&&g.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()),U=Array.from({length:K+1},()=>[]);for(let $ of e)U[m.get($.name)].push($);let T=Math.max(1,...U.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,z=T*c+(T-1)*d,P=f*2+(K+1)*c+K*l,V=f*2+w+z,L=new Map;U.forEach(($,A)=>{let q=$.length*c+($.length-1)*d,C=f+w+(z-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=[],I=[];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,ce,te;if(fe){let me=q.x+c,ze=q.y+c/2,Ie=M.x-de,cn=M.y+c/2,Ze=(me+Ie)/2;ne=`M${me.toFixed(1)},${ze.toFixed(1)} C${Ze.toFixed(1)},${ze.toFixed(1)} ${Ze.toFixed(1)},${cn.toFixed(1)} ${Ie.toFixed(1)},${cn.toFixed(1)}`,ce=(me+Ie)/2,te=(ze+cn)/2-5}else{let me=q.x+c/2,ze=q.y,Ie=M.x+c/2,cn=M.y-de,Ze=f+w*.2;ne=`M${me.toFixed(1)},${ze.toFixed(1)} C${me.toFixed(1)},${Ze.toFixed(1)} ${Ie.toFixed(1)},${Ze.toFixed(1)} ${Ie.toFixed(1)},${cn.toFixed(1)}`,ce=(me+Ie)/2,te=Ze+4}let Ke=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"${Ke} marker-end="url(#${N})"/>`);let ye=await this.edgeText(o,e[p.get($)],i);ye&&I.push(this.edgeLabelEl(ce,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("")}${I.join("")}${F}</svg></figure>`}static SEQ_COL_GAP=70;static SEQ_ROW=46;static SEQ_PAD=20;subjectFor(e){return oe(this.catalog,e)[0]}async renderSequence(e,n,t){let a=Gn(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,sa);l!==void 0&&Ae[l]===void 0&&s.push(`<!-- LookRenderer.Sequence: look.nodeTier '${k(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,g=r.SEQ_PAD,h=Z(e,ws)==="true",b=new Map;i.forEach((w,z)=>b.set(c(w),g+z*f+d/2));let m=g+d,y=m+p,v=y+o.length*p+g,E=g*2+(i.length-1)*f+d,K=`kan-arrow-${this.diagramArrowSeq++}`,U=`kan-arrow-open-${this.diagramArrowSeq++}`,x=[this.arrowMarkerDef(K,"var(--kan-text-dim)")+`<defs><marker id="${U}" 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 z=b.get(c(w));x.push(`<line class="kan-seq-lifeline" x1="${z}" y1="${m}" x2="${z}" y2="${v-g}" stroke="var(--kan-border)" stroke-width="1.5" stroke-dasharray="5 5"/>`),x.push(this.diagramTile(w,z-d/2,g,d,t))}return o.forEach((w,z)=>{let P=y+z*p,V=b.get(c(w.from)),L=b.get(c(w.to)),j=this.subjectFor(w.relation),N=(h?`${z+1}. `:"")+(j?H(this.catalog,j).label:w.relation.name),R=w.style==="dotted"?' stroke-dasharray="4 4"':"",I=w.style==="thick"?3:1.5,F=w.undirected?"":` marker-end="url(#${w.style==="open"?U: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="${I}"${R}${F}/>`),x.push(`<text class="kan-seq-message-label" x="${V+34+6}" y="${P+4}" font-size="12" fill="var(--kan-text)">${k(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="${I}"${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">${k(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,Rs))return{classes:this.catalog.filter(a=>a instanceof W&&a.namespace===e.namespace&&n(a))};if(n(e)){let t=ve(e);if(!t)return{classes:[],reason:"the page class has no canonical URI"};let a=fn(this.catalog),s=new Map([[Y(t),e]]);for(let o of Kn(this.catalog,t,!1,a)){if(o.kind!=="object"||o.range.kind!=="class")continue;let i=this.subjectFor(o.range.uri);i&&!s.has(Y(o.range.uri))&&s.set(Y(o.range.uri),i)}return{classes:[...s.values()]}}return{classes:[],reason:"the page instance is neither a Package nor a Class"}}erCardinalityGlyph(e,n,t,a,s){let o=[];return s===1?o.push('<line x1="-14" y1="-7" x2="-14" y2="7"/>'):o.push('<path d="M-16,-8 L0,0 L-16,8" fill="none"/>'),a>=1?o.push('<line x1="-22" y1="-7" x2="-22" y2="7"/>'):o.push('<circle cx="-24" cy="0" r="4" fill="var(--kan-bg)"/>'),`<g class="kan-er-cardinality" transform="translate(${e.toFixed(1)},${n.toFixed(1)}) rotate(${t.toFixed(1)})" stroke="var(--kan-text-dim)" stroke-width="1.5">${o.join("")}</g>`}erBorderPoint(e,n,t,a,s,o){let i=s-e,c=o-n;if(i===0&&c===0)return{x:e,y:n};let l=i===0?1/0:Math.abs(t/2/i),d=c===0?1/0:Math.abs(a/2/c),f=Math.min(l,d);return{x:e+i*f,y:n+c*f}}renderEntityRelationship(e,n,t){let{classes:a,reason:s}=this.erScope(n);if(a.length===0)return`<!-- LookRenderer.EntityRelationship: nothing to draw \u2014 ${s??"no classes in scope"} -->`;let o=fn(this.catalog),i=L=>`${L.namespace}/${L.name}`,c=new Map;for(let L of a){let j=ve(L);j&&c.set(Y(j),L)}let l=a.map(L=>{let j=ve(L),N=j?Kn(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(Y(R.range.uri))),supers:we(L,st).filter(R=>c.has(Y(R)))}}),d=r.ER_BOX_W,f=r.ER_HEAD_H,p=r.ER_ROW_H,g=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+g});let K=new Map;l.forEach((L,j)=>{let N=Math.floor(j/b),R=j%b,I=h+R*(d+g),F=v[N],$=m(L);K.set(i(L.subject),{x:I,y:F,w:d,h:$,cx:I+d/2,cy:F+$/2})});let U=h*2+b*d+(b-1)*g,T=E-g+h,x=[],w=[],z=[],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(Y(N.range.uri)),I=K.get(i(R)),F=i(R)===i(L.subject),$=this.subjectFor(N.uri),A=!!$&&dn(this.catalog,$,js),q=!!$&&dn(this.catalog,$,Ks),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,Ke=j.y+12,ye=j.y+j.h-12;x.push(`<path class="kan-er-relationship" d="M${te},${Ke} 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)">${k(fe)}</text>`);continue}let se=this.erBorderPoint(j.cx,j.cy,j.w,j.h,I.cx,I.cy),ne=this.erBorderPoint(I.cx,I.cy,I.w,I.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 ce=Math.atan2(ne.y-se.y,ne.x-se.x)*180/Math.PI;A||x.push(this.erCardinalityGlyph(ne.x,ne.y,ce,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">${k(fe)}</text>`)}for(let N of L.supers){let R=c.get(Y(N)),I=K.get(i(R)),F=this.erBorderPoint(j.cx,j.cy,j.w,j.h,I.cx,I.cy),$=this.erBorderPoint(I.cx,I.cy,I.w,I.h,j.cx,j.cy);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((I,F)=>{let $=this.subjectFor(I.uri),A=$?H(this.catalog,$).label:I.localName,q=I.required||(I.minCount??0)>=1?" *":"";return`<text class="kan-er-attribute" x="${j.x+10}" y="${j.y+f+14+F*p}" font-size="11" fill="var(--kan-text)">${k(A)}${q}<tspan fill="var(--kan-text-dim)"> : ${k(I.range.uri.name)}</tspan></text>`}).join("");z.push(`<a href="${k(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)">${k(L.label)}</text><line x1="${j.x}" y1="${j.y+f}" x2="${j.x+j.w}" y2="${j.y+f}" stroke="var(--kan-border)"/>`+R+"</g></a>")}return`<figure class="kan-diagram-figure kan-er-figure"><svg class="kan-diagram-svg kan-er" viewBox="0 0 ${U} ${T}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${V}${x.join("")}${z.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="${k(i)}"><image href="${k(c)}" x="${n}" y="${t}" width="${a}" height="${a}"${d}><title>${k(l)}</title></image></a>`}async renderStatRow(e,n){let t=this.valueItems(e,mo).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,go);if(!o)continue;let i=await this.evaluateCarrier(o,n);if(i===void 0)continue;let c=Z(s,ko)??"";a.push('<div class="kan-stat">'+(c?`<span class="kan-stat-label">${k(c)}</span>`:"")+`<span class="kan-stat-val">${k(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 k(e);let t=Math.max(0,Math.min(1,n))*100;return`<span class="kan-bar-meter" role="img" aria-label="${k(e)}"><span class="kan-bar-fill" style="width:${t.toFixed(1)}%"></span></span><span class="kan-bar-value">${k(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,uo).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="${k(f)}"><span class="kan-count-val">${d}</span><span class="kan-count-label">${k(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 g=p.predicate?.subject;if(!g||X(g,Ge))continue;let h=this.readLabelForUri({publisher:g.publisher,package_:g.package_,name:g.name})??g.name;if(p instanceof ae||p instanceof he||p instanceof ge)o.push(`<div class="kan-cond-field"><span class="kan-cond-key">${k(h)}</span><span class="kan-cond-v">${k(String(p.object))}</span></div>`);else if(p instanceof J&&p.object instanceof O){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">${k(h)}</span><span class="kan-cond-v">${k(m)}</span></div>`)}else if(p instanceof le)i.push(this.renderConditionNode(p.object,n,t+1));else if(p instanceof ue)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">${k(s)}</span>`:`<div class="kan-cond-type">${k(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,oa);if(!t)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let a=Z(n,ro);return`<div class="kan-section" id="${$a(t)}"><h2 class="kan-section-title">${k(t)}</h2>`+(a?`<p class="kan-section-note">${k(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="#${k(t.slug)}">${k(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:ie(n),package_:this.uriOf(n).package_,name:n.name},l=o(n),d,f;for(let P of oe(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 g=s-p,h=Math.abs(g)<.005?"flat":g>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,U=30,T=P=>K+Math.min(1,Math.max(0,P))*(v-2*K),x=T(p),w=T(s),z=`<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="${U}" x2="${v-K}" y2="${U}" class="kan-delta-base"/><line x1="${x.toFixed(1)}" y1="${U}" x2="${w.toFixed(1)}" y2="${U}" stroke="${m}" stroke-width="3"/><circle cx="${x.toFixed(1)}" cy="${U}" r="4" class="kan-delta-prev"/><circle cx="${w.toFixed(1)}" cy="${U}" r="5.5" fill="${m}"/><text x="${x.toFixed(1)}" y="${U-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${p.toFixed(2)}</text><text x="${w.toFixed(1)}" y="${U+17}" text-anchor="middle" class="kan-delta-tick">${s.toFixed(2)}</text></svg>`;return`<div class="kan-delta"><div class="kan-delta-head"><span class="kan-delta-vs">vs ${k(y)}</span><span class="kan-delta-badge ${h}">${g>0?"+":""}${g.toFixed(2)} ${b}</span></div>`+z+"</div>"}async renderTimePlot(e,n,t){let a=B(e,pe),s=B(e,xn);if(!a||!s)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let o=this.readEmbeddedCarrier(e,po),i=this.readEmbeddedCarrier(e,ca),c=[];for(let R of this.readPropertyValueReferences(n,a)){let I=ee(this.catalog,{publisher:R.subject.publisher,package_:R.subject.package_,name:R.subject.name,...R.subject.version?{version:R.subject.version}:{}});if(!I)continue;let F=this.readPropertyValueText(I,s)??"",$=Date.parse(F);if(!Number.isFinite($))continue;let A=o?await this.evaluateCarrier(o,I)??"":"",q=(i?await this.evaluateCarrier(i,I):void 0)??H(this.catalog,I).label;c.push({t:$,dateStr:F,lane:A,label:q,href:this.hrefForSubject(I,t),linkable:this.isLinkable(ie(I),t)})}if(c.length===0)return"<!-- LookRenderer.TimePlot: no dated points -->";let l=[];for(let R of c)l.includes(R.lane)||l.push(R.lane);let d=Math.min(...c.map(R=>R.t)),f=Math.max(...c.map(R=>R.t));f===d&&(f=d+1);let p=l.some(R=>R),g=720,h=p?96:16,b=18,m=12,y=24,v=36,E=m+l.length*v+y,K=h,U=g-b,T=U-K,x=R=>K+(R-d)/(f-d)*T,w=R=>m+R*v+v/2,z=R=>Math.round(R*360/Math.max(1,l.length)),P=[];l.forEach((R,I)=>{let F=w(I);P.push(`<line x1="${K}" y1="${F.toFixed(1)}" x2="${U}" 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 I=l.indexOf(R.lane),$=((V[R.lane]=(V[R.lane]??0)+1)%3-1)*7,A=x(R.t),q=w(I)+$,C=`${In(R.dateStr)} \xB7 ${R.label}`,M=`<circle cx="${A.toFixed(1)}" cy="${q.toFixed(1)}" r="5" fill="hsl(${z(I)},65%,60%)" class="kan-plot-pt"><title>${Oe(C)}</title></circle>`;L.push(R.linkable?`<a href="${k(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(In(new Date(d).toISOString()))}</text><text x="${U}" y="${(E-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${Oe(In(new Date(f).toISOString()))}</text>`;return`<section class="kan-plot">${`<svg class="kan-plot-svg" viewBox="0 0 ${g} ${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=at(e,fo),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 ba(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">${k(o)}</dt><dd class="kan-details-val">${i}</dd>`)}return a.join("")}detailValue(e,n,t,a){let s=Re(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"?wa(i):typeof i=="number"||typeof i=="boolean"?k(String(i)):i instanceof O?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 O?this.detailReferenceLink(i,t):i instanceof D?this.detailEmbedded(i,t,a):k(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">${k(t)}</span>`;let a=this.urlForReference(e,void 0,n);return`<img class="kan-md-chip" src="${k(`${a}.svg`)}" alt="" loading="lazy"><a class="kan-link" href="${k(a)}">${k(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">${k(s)}</span>`:"")+(o?`<dl class="kan-details">${o}</dl>`:"")+"</div>"}rangeTypeRefs(e){let n=ee(this.catalog,e);if(!n)return[];let t=je(n,Dr);return t instanceof J&&t.object instanceof O?[t.object]:[]}async renderEmbeddedViews(e,n,t,a=""){let s=B(e,pe);if(!s)return"<!-- LookRenderer: EmbeddedViews missing look.source -->";let o=yn(n,s,this.catalog,a?`#${a}`:"").filter(p=>p.kind==="embedded");if(o.length===0)return"";let i=je(e,No),c=i instanceof ge?i.object===!0:i instanceof ae&&i.object==="true",l=[],d=[];for(let p of o){let g=p.node,h=g,b=p.address.slice(1),m=g.name?b:"";if(c&&m){let x=H(this.catalog,h).label||g.name||m;l.push(`<a class="kan-section-nav-link" href="#${k(m)}">${k(x)}</a>`)}let y=be(h),v=y.length>0?y:this.rangeTypeRefs(s),E=Cn(h)?this.findCascadedLook(h):this.lookFromTypeRefs(v),K="";if(E){let x=[];for(let w of tt(E.declaration))x.push(await this.renderBand(w,h,t,[],b));K=x.join(`
128
+ `)}else{let x=this.detailRows(g,t,[]);K=x?`<dl class="kan-details">${x}</dl>`:""}let U=m?` id="${k(m)}"`:"",T=m?this.anchorLink(m):"";d.push(`<section class="kan-embedded-view"${U}>${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="#${k(e)}" title="${k(e)}" aria-label="Link to this resource">#</a>`}isMetaPredicate(e){return X(e,Ge)||X(e,Qn)||X(e,ta)||X(e,Fn)||X(e,Tn)||X(e,ia)||X(e,ma)||X(e,Zs)}renderPackageContents(e,n){let t=e.namespace||"";if(!t)return"";let a=this.catalog.filter(o=>o instanceof W&&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?rt(l,160):"",f=this.hrefForSubject(o,n),p=this.svgUrlForSubject(o,n);return`<a class="kan-pkg-card" href="${k(f)}"><img class="kan-pkg-card-svg" src="${k(p)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${k(c)}</span>`+(d?`<span class="kan-pkg-card-comment">${k(d)}</span>`:"")+"</span></a>"}).join("")}</section>`)}renderReferencedBy(e,n,t){let a=B(e,Po),s={publisher:ie(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,g)=>p.major-g.major||p.minor-g.minor||p.patch-g.patch,l=new Map;for(let p of this.catalog){if(!(p instanceof W))continue;let g=Q({publisher:ie(p),package_:this.uriOf(p).package_,name:p.name});if(g!==o)for(let h of p.statement){let b=h.predicate?.subject;if(!b||X(b,Ge)||a&&Q(b)!==Q(a))continue;let m=[];if(h instanceof J&&h.object instanceof O)m.push(h.object);else if(h instanceof ue)for(let K of h.object??[])K instanceof O&&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(g);(!E||c(i(p),i(E))>0)&&v.best.set(g,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,g)=>p.label.localeCompare(g.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> ${k(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?rt(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">${k(y)}</span>`).join("")}</span>`:"")+`<span class="kan-pkg-card-title">${k(a.label)}</span>`+(s?`<span class="kan-pkg-card-comment">${k(s)}</span>`:"")+"</span>",l=this.isLinkable(ie(e),n),d=l?`<a class="kan-pkg-card-link" href="${k(this.hrefForSubject(e,n))}"><img class="kan-pkg-card-svg" src="${k(this.svgUrlForSubject(e,n))}" alt="" loading="lazy"/>`+c+"</a>":`<span class="kan-pkg-card-link">${c}</span>`,f=e.namespace||"",p=this.uriOf(e),g=p.publisher,h=p.package_,b=p.version?hn(p.version):"",m="";if(h&&f!==t){let y=b?`<span class="kan-card-at">@</span><span class="kan-card-ver">${k(b)}</span>`:"";if(l){let v=`<span class="kan-card-pkg">${k(h)}</span>${y}`;m=`<a class="kan-pkg-card-foot" href="${k(this.packageHref(g,h,b||void 0))}" title="${k(b?`${h}@${b}`:h)}">${v}</a>`}else{let v=`<span class="kan-card-pub">${k(g)}/</span><span class="kan-card-pkg">${k(h)}</span>${y}`;m=`<span class="kan-pkg-card-foot" title="${k(b?`${g}/${h}@${b}`:`${g}/${h}`)}">${v}</span>`}}return`<div class="kan-pkg-card kan-pkg-card--foot">${d}${m}</div>`}renderInstances(e,n,t){let a={publisher:ie(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 W)||!be(m).some(K=>o.has(Q(K.subject))))continue;let v=Q({publisher:ie(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),g=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">${g.join("")}</section>`}descendantTypeKeys(e){let n=Q(e),t=new Set([n]),a=new Set;for(let s of this.catalog)if(s instanceof W)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,Ge)||t&&!(s&&Q(s)===Q(t)))continue;let o=[];if(a instanceof J&&a.object instanceof O)o.push(a.object);else if(a instanceof ue)for(let i of a.object??[])i instanceof O&&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=oe(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="${k(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(no),s=await t(to);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(fa),c=await t(pa),l=await t(nt),d=l!==void 0?`hsl(${l},65%,60%)`:"var(--kan-accent)",f=F=>Number.isInteger(F)?String(F):F.toFixed(1),p=280,g=168,h={top:14,right:14,bottom:24,left:14},b=p-h.left-h.right,m=g-h.top-h.bottom,y=120,v=1e-4,E=[],K=[],U=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>U&&(U=A)}let T=F=>h.left+Math.min(1,Math.max(0,F))*b,x=F=>h.top+(1-(U>0?F/U:0))*m,w=h.top+m,z=E.map((F,$)=>`${T(F).toFixed(1)},${x(K[$]).toFixed(1)}`),P=`M${T(0).toFixed(1)},${w.toFixed(1)} L${z.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} ${g}" 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="${z.join(" ")}" fill="none" stroke="${d}" stroke-width="2"/>`+j+N+"</svg>",I=i!==void 0&&c!==void 0?` \xB7 95% CI [${i.toFixed(2)}\u2013${c.toFixed(2)}]`:"";return`<figure class="kan-dist">${R}<figcaption class="kan-dist-caption">Beta(${f(a)}, ${f(s)})${I}</figcaption></figure>`}renderPublisherPackages(e,n){let t=new Map;for(let i of this.catalog){if(!(i instanceof W)||ie(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||kn(d,f)>0))&&t.set(c,i)}let a,s=this.valueItems(e,qs);if(s.length>0){a=[];for(let i of s){if(!(i instanceof O))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?rt(f,160):"",g=this.svgUrlForSubject(c,n);return`<a class="kan-pkg-card" href="${k(this.packageHref(n,i))}"><img class="kan-pkg-card-svg" src="${k(g)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${k(d)}</span>`+(p?`<span class="kan-pkg-card-comment">${k(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,xn),s=this.findInstancesOfClass(t,this.readTransitive(e));if(s.length===0)return"<!-- LookRenderer.Timeline: no instances -->";let o=f=>a?this.readPropertyValueText(f,a)??"":"",i=s.slice().sort((f,p)=>o(f).localeCompare(o(p))),c=B(e,da),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),g=p.package_,h=p.version,b=this.resourceHref({publisher:ie(f),package_:g,name:f.name,...h?{version:h}:{}},n),m=o(f),y=m?`<span class="kan-timeline-date">${k(m)}</span>`:"",v=h?hn(h):f.name;return`<li class="kan-timeline-node"><a href="${k(b)}"><span class="kan-timeline-key">${k(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,nt),l=this.readEmbeddedCarrier(a,fa),d=this.readEmbeddedCarrier(a,pa),f=Z(i,Eo),p=ya(i,Ko),g=ya(i,Ro),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,U=g!==void 0?g:v+E;U-K<1e-9&&(U=K+1);let T=1e3,x=440,w={top:28,right:24,bottom:56,left:52},z=T-w.left-w.right,P=x-w.top-w.bottom,V=C=>h<=1?w.left+z/2:w.left+C/(h-1)*z,L=C=>w.top+(1-(C-K)/(U-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*(U-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?hn(se):"",ce=V(M),te=In(o(C));R.push(`<a href="${k(fe)}" class="kan-fan-xtick"><line x1="${ce.toFixed(1)}" y1="${w.top}" x2="${ce.toFixed(1)}" y2="${(x-w.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${ce.toFixed(1)}" y="${(x-w.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${Oe(ne||C.name)}</text>`+(te?`<text x="${ce.toFixed(1)}" y="${(x-w.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${Oe(te)}</text>`:"")+"</a>")});let I=[];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 Ke=C.upper[te],ye=C.lower[te];Ke==null||ye===null||ye===void 0||(se.push(`${V(te).toFixed(1)},${L(Ke).toFixed(1)}`),ne.unshift(`${V(te).toFixed(1)},${L(ye).toFixed(1)}`))}let ce=se.concat(ne);ce.length<3||I.push(`<polygon class="kan-fan-band" points="${ce.join(" ")}" fill="hsl(${fe},65%,60%)"/>`)});let F=[];b.forEach((C,M)=>{let se=`hsl(${j(C,M)},65%,60%)`,ne=[],ce=[];C.points.forEach((te,Ke)=>{if(te===null)return;let ye=V(Ke),me=L(te);ne.push(`${ye.toFixed(1)},${me.toFixed(1)}`),ce.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="${k(C.key)}"><polyline points="${ne.join(" ")}" fill="none" stroke="${se}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`+ce.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("")+I.join("")+F.join("")+"</svg>",A=f?`${k(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,ce=se.length?se[se.length-1]:void 0,te="";if(ce!==void 0&&ne!==void 0){let me=ce-ne;if(Math.abs(me)>=.005){let ze=me>0?"up":"down",Ie=me>0?"\u25B2":"\u25BC";te=` <span class="kan-fan-delta ${ze}">${me>0?"+":""}${me.toFixed(2)} ${Ie}</span>`}else te=' <span class="kan-fan-delta flat">\u2014</span>'}let Ke=ce!==void 0?`${A}${ce.toFixed(2)}`:"\u2014",ye=C.lastSubject&&this.isLinkable(ie(C.lastSubject),s)?`<a href="${k(this.hrefForSubject(C.lastSubject,s))}">${k(C.label)}</a>`:k(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">${Ke}${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,wo);if(!c)return;let l=B(i,xn),d=Z(i,_o),f=this.readPropertyValueText(i,jo),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,So)):!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?vn(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,g=f.summary,h=this.uriOf(d),b=h.package_,m=h.version,y=this.resourceHref({publisher:ie(d),package_:b,name:d.name,...m?{version:m}:{}},n),v=g?`<p class="kan-resource-card-subtitle">${k(g)}</p>`:"",E=`<h3 class="kan-resource-card-title">${k(p)}</h3>${v}`;l.push(this.isLinkable(ie(d),n)?`<a class="kan-resource-card" href="${k(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=je(e,Do);return n instanceof ge?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 W&&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="${k(this.publisherHref(o))}">${k(o)}</a></li>
138
+ <li aria-current="page">${k(c)}</li>
139
+ </ol></nav>`;let d=e.name,p=!!ee(this.catalog,{publisher:o,package_:c,name:c}),g=l?`${c}@${l}`:c,h=this.resourceHref({publisher:o,package_:c,name:c,...l?{version:it(l)}:{}},o),b=e.name===c,m=[];return m.push(`<li><a href="${k(this.publisherHref(o))}">${k(o)}</a></li>`),b?m.push(`<li aria-current="page">${k(g)}</li>`):(m.push(p?`<li><a href="${k(h)}">${k(g)}</a></li>`:`<li>${k(g)}</li>`),m.push(`<li aria-current="page">${k(d)}</li>`)),`<nav class="kan-breadcrumb"><ol>
140
+ ${m.join(`
141
+ `)}
142
+ </ol></nav>`}renderNavGroup(e,n){let t=this.valueItems(this.publisherSubject(n),es);if(t.length===0)return"";let a=[];for(let s of t){if(!(s instanceof O))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="${k(i)}"${d}>${k(c)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
143
+ ${a.join(`
144
+ `)}
145
+ </ul></nav>`}renderSiteFooter(e){let n=je(this.publisherSubject(e),ns),t;if(n instanceof le?t=n.object:n instanceof J&&n.object instanceof O&&(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,ts),s=this.valueItems(t,as),o=[];for(let c of s){if(!(c instanceof O))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="${k(d)}">${k(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">${k(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===Jn.publisher&&c.package_===Jn.package_&&c.name===Jn.name)){let c=Z(n,Qn),l=je(n,ra);if(l instanceof J&&l.object instanceof O){let d=l.object,f=this.readLabelForUri({publisher:d.subject.publisher,package_:d.subject.package_,name:d.subject.name});return{href:this.urlForReference(d,ra,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 Ln(this.collectGrammars())),this._codeHighlighter}collectGrammars(){let e=[];for(let n of this.catalog){if(!(n instanceof W)||!be(n).some(o=>X(o.subject,Gs)))continue;let t=Z(n,zs);if(!t)continue;let a=this.valueItems(n,Ws),s=[];for(let o of a){if(!(o instanceof D))continue;let i=B(o,Ys),c=Z(o,Xs);!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 O&&(i=ee(this.catalog,{publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name})),!i)continue;let c=Z(i,Js);if(!c)continue;let l=Z(i,Qn)??c,d=Z(i,ta),f=d?` title="${k(d)}"`:"";s.push(`<a class="kan-extlink" href="${k(c)}"${f} target="_blank" rel="noopener noreferrer">${k(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=je(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=pn(i,{highlight:(d,f)=>c.highlight(d,f)});for(let[d,f]of o){let p=new RegExp('(<a href="'+Sa(d)+'">)([^<]*)(</a>)',"g");l=l.replace(p,`$1<img class="kan-md-chip" src="${k(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=tt(n.declaration),a=[];for(let s of t){let o=on(s);if(!o||!X(o,aa))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=je(e,b);return m instanceof ge?m.object===!0:m instanceof ae&&m.object==="true"},s=a(Mo),o=!s&&a(Ao),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="${k(b)}" alt="" loading="lazy"/>`),l.push('<div class="kan-hero-text">')}let d=B(e,Fo);if(d){let b=this.readPropertyValueText(n,d);b&&l.push(`<span class="kan-hero-eyebrow">${k(Pn(b)??b)}</span>`)}let f=B(e,Io),p="";f&&(p=this.readPropertyValueText(n,f)??""),p||(p=H(this.catalog,n).label),l.push(`<h1 class="kan-hero-title">${k(Pn(p)??p)}</h1>`);let g=B(e,To);if(g){let b=this.readPropertyValueText(n,g);b&&l.push(`<p class="kan-hero-subtitle">${k(Pn(b)??b)}</p>`)}let h=B(e,ka);if(h){let b=this.readPropertyValueReferences(n,h);if(b.length>0){let m=b.map(y=>this.renderBadge(y,ka,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">${k(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,bo);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>${k(m.label)}</th>`).join(""),p=e.map((m,y)=>{let v=d&&m.name?`${a}.${m.name}`:"",E=v?` id="${k(v)}"`:"",K=d?`<td class="kan-anchor-col">${v?this.anchorLink(v):""}</td>`:"",U=l?`<th scope="row">${k(c[y]??"")}</th>`:"",T=o.map(x=>{let w=je(m,x.uri);return w?`<td>${this.tableCellValue(w,n,s)}</td>`:"<td></td>"}).join("");return`<tr${E}>${K}${U}${T}</tr>`}).join(""),g=d&&a?` id="${k(a)}"`:"",h=d&&a?this.anchorLink(a):"",b=t?`<caption>${k(t)}${h}</caption>`:"";return`<table class="kan-property-table"${g}>${b}<thead><tr>${f}</tr></thead><tbody>${p}</tbody></table>`}tableCellValue(e,n,t){if(t&&X(t,la)){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 wa(e.object);if(e instanceof he||e instanceof ge)return k(String(e.object));if(e instanceof J&&e.object instanceof O)return this.detailReferenceLink(e.object,n);if(e instanceof le)return this.renderEmbeddedTable([e.object],n);if(e instanceof ue){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 O?this.detailReferenceLink(o,n):o instanceof D?this.renderEmbeddedTable([o],n):k(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=pn(a,{highlight:(i,c)=>s.highlight(i,c)});for(let[i,c]of t){let l=new RegExp('(<a href="'+Sa(i)+'">)([^<]*)(</a>)',"g");o=o.replace(l,`$1<img class="kan-md-chip" src="${k(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=at(e,Bo);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">${k(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=at(e,ha);if(a.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let s=this.readEmbeddedCarrier(e,ca),o=this.readEmbeddedCarrier(e,ho),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 g of l)f.push(await this.renderDetailRow(g,s,o,t));let p=f.filter(g=>g).join("");p&&i.push(`<dt>${k(d)}</dt><dd><ul class="kan-ref-rows">${p}</ul></dd>`)}else{let f=l.map(p=>this.renderReferenceLink(p,ha,t)).join(", ");i.push(`<dt>${k(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">${k(f)}</span>`)}let c=`<span class="kan-ref-text">${k(o)}</span>${i}`;if(!this.isLinkable(ie(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="${k(l)}"><img class="kan-ref-icon" src="${k(d)}" alt="" loading="lazy"/>`+c+"</a></li>"}readPropertyValueText(e,n){let t=Re(e,n);if(t.length===0)return je(e,n)?"":void 0;let a=o=>o instanceof O?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>=ga)return"\u2026";let t=[];for(let a of e.statement){let s=a.predicate?.subject;if(!(s&&X(s,Ge)))if(a instanceof ae)t.push(a.object);else if(a instanceof he||a instanceof ge)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 le&&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 O)}valueItems(e,n){return Re(e,n).map(t=>"literal"in t.item?t.item.value:t.item)}renderInlineValue(e,n,t,a=0){return e instanceof O?this.renderReferenceLink(e,n,t):e instanceof D?this.renderEmbeddedInline(e,t,a):typeof e=="string"?k(e):typeof e=="number"||typeof e=="boolean"?k(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>=ga)return"\u2026";let a=[];for(let s of ba(e)){if(X(s,Ge))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>${k(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">${k(a)}</span>`;let s=this.urlForReference(e,n,t);return`<a class="kan-link" href="${k(s)}">${k(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="${k(s)}"`:"";if(!this.isLinkable(e.subject.publisher,t))return`<span class="kan-badge"${o}>${k(a)}</span>`;let i=this.urlForReference(e,n,t);return`<a class="kan-badge" href="${k(i)}"${o}>${k(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,Ho);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 qo(r){let e=new Map;for(let n of r.statement){if(!(n instanceof le)||!Me(n,Tn.publisher,Tn.package_,Tn.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 Cn(r){for(let e of r.statement)if(e instanceof le&&Me(e,Fn.publisher,Fn.package_,Fn.name))return e.object}function tt(r){return Re(r,Oo).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,Ge))&&e.object instanceof O){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 O){let t=n.object.subject;return{publisher:t.publisher,package_:t.package_,name:t.name}}}function at(r,e){return we(r,e).map(n=>({publisher:n.publisher,package_:n.package_,name:n.name}))}function ba(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 je(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 le&&Me(n,e.publisher,e.package_,e.name))return n.object}function ya(r,e){for(let n of r.statement)if(n instanceof he&&Me(n,e.publisher,e.package_,e.name))return n.object}function Go(r,e){for(let n of r.statement)if(n instanceof ge&&Me(n,e.publisher,e.package_,e.name))return n.object===!0;return!1}function zo(r){for(let e of be(r))if(X(e.subject,Br)||X(e.subject,Hr))return!0;return!1}function be(r){return Re(r,Ge).map(e=>e.item).filter(e=>e instanceof O)}function On(r){let e=[];for(let n of r.statement)if(n instanceof J){if(!n.predicate?.subject||!X(n.predicate.subject,st))continue;n.object instanceof O&&e.push(n.object)}else if(n instanceof ue){if(!n.predicate?.subject||!X(n.predicate.subject,st))continue;for(let t of n.object??[])t instanceof O&&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 W&&a.name===e.name&&a.namespace===t)return a}for(let t of r){if(!(t instanceof W)||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 Wo(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 ie(r){let e=r.namespace||"",n=e.indexOf("/");return n>=0?e.substring(0,n):e}function k(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 va(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 _a(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(_a).filter(n=>n!=="").join(", ");if(r instanceof O)return r.subject.name;if(r instanceof W||r instanceof D)return r.name??"";let e=r.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function rt(r,e){return r.length<=e?r:r.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function $a(r){return r.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function Sa(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function wa(r){let e=Pn(r);return k(e||r)}function Pn(r){let e=/^(\d{4})-(\d{2})-(\d{2})([T ]\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?)?$/.exec(r.trim());if(!e)return;let n=Date.parse(r);if(!Number.isFinite(n))return;let t=new Date(n),s=`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][t.getUTCMonth()]} ${t.getUTCDate()}, ${t.getUTCFullYear()}`;if(!e[4])return s;let o=t.getUTCHours(),i=(o+11)%12+1,c=o>=12?"PM":"AM";return`${s} \xB7 ${i}:${String(t.getUTCMinutes()).padStart(2,"0")} ${c} UTC`}function In(r){if(!r)return"";let e=/^(\d{4})-(\d{2})-(\d{2})/.exec(r);return e?`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][parseInt(e[2],10)-1]??e[2]} ${parseInt(e[3],10)}`:r}function Yo(){return new Set(Vn.bandDispatchUris().map(r=>`${r.publisher}/${r.package_}/${r.name}`))}export{G as a,ti as b,He as c,H as d,Tt as e,Pt as f,Vt as g,Gn as h,fn as i,Dt as j,Oi as k,pn as l,Je as m,Ue as n,mn as o,En as p,Ae as q,Vn as r,Yo as s};
@@ -1 +1 @@
1
- import{g as U,k as B}from"./chunk-JHQPXEMA.js";import{a as K}from"./chunk-HF5FJBS2.js";import{c as D,ia as _}from"./chunk-MQBWSCNY.js";import{G as N,b as j,c as d,d as m,e as p,f as E,h as R,i as $,j as A,k as v,l as S,m as V,n as g}from"./chunk-54D47DLS.js";import{b as C,e as l}from"./chunk-QILEJIFU.js";import*as P from"js-yaml";import{canonicalForm as Y,canonicalHash as ee}from"@kanonak-protocol/canonical";function k(n){return typeof n=="object"&&n!==null&&Array.isArray(n.subjects)}import{CANONICAL_FORM_VERSION as Pe}from"@kanonak-protocol/canonical";function ke(n){return Y(k(n)?n:F(n))}function O(n){return ee(k(n)?n:F(n))}function F(n){let e=[];for(let t of n)t instanceof d&&e.push({uri:se(t),statements:h(t.statement)});return{subjects:e}}function h(n){let e=[];for(let t of n){let r=ie(t);if(!r)continue;if(t instanceof g&&ne(t.predicate.subject)){e.push(...re(t,r));continue}let o=oe(t);o&&e.push({predicate:r,value:o})}return e}function ne(n){let e=_("type");return e!==void 0&&n.name==="type"&&n.publisher===e.publisher&&n.package_===e.package_}var H=new TextEncoder;function te(n,e){let t=H.encode(n),r=H.encode(e),o=Math.min(t.length,r.length);for(let a=0;a<o;a++)if(t[a]!==r[a])return t[a]-r[a];return t.length-r.length}function re(n,e){let t=[];for(let r of n.object){if(!(r instanceof p))throw new Error(`canonicalForm: a multi-valued type statement must contain only entity references, got ${r.constructor?.name??typeof r}`);t.push(b(r))}t.sort(te);for(let r=1;r<t.length;r++)if(t[r-1]===t[r])throw new Error(`canonicalForm: duplicate type ${t[r]} in a multi-valued type statement`);return t.map(r=>({predicate:e,value:{ref:r}}))}function oe(n){if(n instanceof R&&n.carrier)return{lit:n.lexical??String(n.object),datatype:z(n.carrier)};if(n instanceof $)return{raw:n.object};if(n instanceof A)return{raw:n.lexical??String(n.object)};if(n instanceof v)return{raw:n.lexical??String(n.object)};if(n instanceof S)return{ref:b(n.object)};if(n instanceof V)return M(n.object);if(n instanceof g)return{list:n.object.map(ae)}}function M(n){let e=h(n.statement);return n.name&&n.name.length>0?{embed:{name:n.name,statements:e}}:{embed:{statements:e}}}function ae(n){if(n instanceof p)return{ref:b(n)};if(n instanceof m)return M(n);if(n instanceof E){if(n.carrier)return{lit:n.lexical??String(n.value),datatype:z(n.carrier)};let e=n.value;if(typeof e=="string")return{raw:e};if(typeof e=="number")return{raw:String(e)};if(typeof e=="boolean")return{raw:String(e)}}if(n instanceof j)return{embed:{statements:h(n.statement)}};throw new Error(`canonicalForm: list item of unrecognized kind (${n.constructor?.name??typeof n}); add canonicalization support before hashing data that contains it`)}function z(n){return n===U.LangString?"kanonak.org/core-rdf/langString":`kanonak.org/core-xsd/${n}`}function ie(n){let e=n.predicate;if(e)return L(e.subject)}function se(n){let e=n.namespace??"",t=n.name??"";return`${e}/${t}`}function b(n){return L(n.subject)}function L(n){let e=n.version;return e&&typeof e.major=="number"?`${n.publisher}/${n.package_}@${e.major}.${e.minor}.${e.patch}/${n.name}`:`${n.publisher}/${n.package_}/${n.name}`}import{VersionOperator as T}from"@kanonak-protocol/types/document/models/enums";var ce="0.0.0",w=class{constructor(e,t=new K,r){this.repository=e;this.parser=t;this.objectParser=r??new B(this.parser)}repository;parser;objectParser;imports(){return new f}serializeValue(e,t){return G(e,t)}async buildContentAddressed(e){let t=e.book.toImports(),r=await this.hashBody(e.publisher,t,e.body),o=Z(r),a={type:"EphemeralPackage",publisher:e.publisher,imports:t};e.contentHashProperty&&(a[e.contentHashProperty]=r),Object.assign(a,e.header??{}),a.imports=t;let i={[o]:a,...e.body},s=this.dump(i);return{yaml:s,byteCount:W(s),contentHash:r,packageName:o,publisher:e.publisher,resourceCount:Object.keys(e.body).length}}async buildNamed(e){let t=e.book.toImports(),r={type:e.type??"Package",publisher:e.publisher,version:e.version,imports:t},o;e.contentHashProperty&&(o=await this.hashBody(e.publisher,t,e.body),r[e.contentHashProperty]=o),Object.assign(r,e.header??{}),r.imports=t;let a={[e.name]:r,...e.body},i=this.dump(a),s={yaml:i,byteCount:W(i),packageName:e.name,publisher:e.publisher,resourceCount:Object.keys(e.body).length};return o!==void 0&&(s.contentHash=o),s}dump(e){return P.dump(e,{lineWidth:-1})}async hashBody(e,t,r){let o={[q]:{type:"EphemeralPackage",publisher:e,imports:t},...r},a=this.parser.parse(P.dump(o,{lineWidth:-1})),i=a.metadata.namespace_?.toString(),c=(await this.objectParser.parseKanonaks(new N(a,this.repository))).filter(u=>u instanceof d&&u.namespace===i&&u.name!==q);for(let u of c)u.namespace="ephemeral";return O(c)}},q="__pkgbuilder_probe__";function W(n){return new TextEncoder().encode(n).length}function Z(n){let e="sha256:",t=n.startsWith(e)?e.length:0;return`q-${n.slice(t,t+16)}`}var f=class{byKey=new Map;aliases=new Set;ensure(e,t,r,o,a=T.Major){let i=`${e}/${t}@${r}`,s=this.byKey.get(i);if(s)return s.alias;let c=this.uniqueAlias(o);return this.byKey.set(i,{publisher:e,package_:t,version:r,alias:c,match:a}),c}ref(e){if(!e.version||typeof e.version.major!="number")throw new Error(`Cannot serialize a reference to ${e.publisher}/${e.package_}/${e.name} without a version.`);return`${this.ensure(e.publisher,e.package_,l(e.version),e.package_)}.${e.name}`}refLatest(e,t,r,o){return`${this.ensure(e,t,ce,o??t,T.Any)}.${r}`}toImports(){let e=new Map;for(let r of this.byKey.values()){let o=e.get(r.publisher)??[];o.push(r),e.set(r.publisher,o)}return[...e.keys()].sort().map(r=>({publisher:r,packages:e.get(r).sort((o,a)=>o.package_<a.package_?-1:1).map(o=>({package:o.package_,match:C(o.match),version:o.version,alias:o.alias}))}))}uniqueAlias(e){let t=J(e)||"pkg",r=t,o=2;for(;this.aliases.has(r);)r=`${t}${o++}`;return this.aliases.add(r),r}};function G(n,e){if(n!=null){if(typeof n=="string"||typeof n=="number"||typeof n=="boolean")return n;if(n instanceof p)return e.ref(n.subject);if(Array.isArray(n)){let t=n.map(r=>G(r,e)).filter(r=>r!==void 0);return t.length>0?t:void 0}if(n instanceof m)throw new Error("Embedded values are not yet supported by PackageBuilder. Produce a literal or a reference, or compose the embedded shape into the output class.");if(ue(n))throw new Error(`Value produced a bare URI without a version (${n.publisher}/${n.package_}/${n.name}); cannot serialize it as a reference.`)}}function J(n){return n.replace(/[^A-Za-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}function ue(n){return typeof n=="object"&&n!==null&&typeof n.publisher=="string"&&typeof n.package_=="string"&&typeof n.name=="string"}var I=class{constructor(e){this.producers=e}producers;produced=new Map;producerFor(e,t){return this.producers.find(r=>r.canProduce(e,t))}async produceCached(e,t,r,o){let a=`${t}/${r}@${l(o)}`,i=this.produced.get(a);if(i)return i;let{document:s}=await e.produce(t,r,o);return this.produced.set(a,s),s}async getHighestCompatibleVersionAsync(e,t){let r=this.producerFor(e,t.packageName);if(!r)return null;let o={operator:t.versionOperator,version:t.version},a=await r.resolveVersion(e,t.packageName,o);return a?this.produceCached(r,e,t.packageName,a):null}async getDocumentAsync(e){let t;try{t=D(e)}catch{return null}if(t.kind!=="package"||!t.version)return null;let r=this.producerFor(t.publisher,t.package_);return r?this.produceCached(r,t.publisher,t.package_,t.version):null}async getDocumentsByNamespaceAsync(e,t){return Array.from(this.produced.values()).filter(r=>{let o=r.metadata.namespace_;return o!=null&&o.publisher===e&&o.package_===t})}async getAllDocumentsAsync(){return Array.from(this.produced.values())}async saveDocumentAsync(e,t){throw new Error("ProducerRepository is read-only: a producer is a source, not a store.")}async deleteDocumentAsync(e){throw new Error("ProducerRepository is read-only: a producer is a source, not a store.")}async clearNamespaceAsync(e,t){throw new Error("ProducerRepository is read-only: a producer is a source, not a store.")}async getAllDocumentReferencesAsync(){return[]}async getDocumentContentAsync(e){return null}async getDocumentUriAsync(e){return null}};var Q={async authorize(){return{allowed:!0}}},X={async record(){}},y=class extends Error{constructor(t,r){let o=`${t.publisher}/${t.package_}${t.version?`@${t.version.major}.${t.version.minor}.${t.version.patch}`:""}`;super(`Not entitled to produce ${o}${r?`: ${r}`:""}`);this.address=t;this.reason=r;this.name="EntitlementDeniedError"}address;reason},x=class{inner;ctx;policy;meter;constructor(e,t,r=Q,o=X){this.inner=e,this.ctx=t,this.policy=r,this.meter=o}canProduce(e,t){return this.inner.canProduce(e,t)}async resolveVersion(e,t,r){return await this.assertAllowed({publisher:e,package_:t,version:r.version}),this.inner.resolveVersion(e,t,r)}async produce(e,t,r){let o={publisher:e,package_:t,version:r};await this.assertAllowed(o);let a=await this.inner.produce(e,t,r);return await this.meter.record(this.ctx,o,a),a}async assertAllowed(e){let t=await this.policy.authorize(this.ctx,e);if(!t.allowed)throw new y(e,t.reason)}};export{ke as a,O as b,Pe as c,w as d,Z as e,f,J as g,I as h,Q as i,X as j,y as k,x as l};
1
+ import{f as U,j as B}from"./chunk-Q2FG7DME.js";import{a as K}from"./chunk-HF5FJBS2.js";import{ga as _}from"./chunk-7TU55KLO.js";import{L as N,b as j,c as d,d as m,e as p,f as E,h as R,i as $,j as A,k as v,l as S,m as V,n as g,p as D}from"./chunk-XNEWQEB6.js";import{b as C,e as l}from"./chunk-QILEJIFU.js";import*as P from"js-yaml";import{canonicalForm as Y,canonicalHash as ee}from"@kanonak-protocol/canonical";function k(n){return typeof n=="object"&&n!==null&&Array.isArray(n.subjects)}import{CANONICAL_FORM_VERSION as Pe}from"@kanonak-protocol/canonical";function ke(n){return Y(k(n)?n:F(n))}function O(n){return ee(k(n)?n:F(n))}function F(n){let e=[];for(let t of n)t instanceof d&&e.push({uri:se(t),statements:h(t.statement)});return{subjects:e}}function h(n){let e=[];for(let t of n){let r=ie(t);if(!r)continue;if(t instanceof g&&ne(t.predicate.subject)){e.push(...re(t,r));continue}let o=oe(t);o&&e.push({predicate:r,value:o})}return e}function ne(n){let e=_("type");return e!==void 0&&n.name==="type"&&n.publisher===e.publisher&&n.package_===e.package_}var H=new TextEncoder;function te(n,e){let t=H.encode(n),r=H.encode(e),o=Math.min(t.length,r.length);for(let a=0;a<o;a++)if(t[a]!==r[a])return t[a]-r[a];return t.length-r.length}function re(n,e){let t=[];for(let r of n.object){if(!(r instanceof p))throw new Error(`canonicalForm: a multi-valued type statement must contain only entity references, got ${r.constructor?.name??typeof r}`);t.push(b(r))}t.sort(te);for(let r=1;r<t.length;r++)if(t[r-1]===t[r])throw new Error(`canonicalForm: duplicate type ${t[r]} in a multi-valued type statement`);return t.map(r=>({predicate:e,value:{ref:r}}))}function oe(n){if(n instanceof R&&n.carrier)return{lit:n.lexical??String(n.object),datatype:z(n.carrier)};if(n instanceof $)return{raw:n.object};if(n instanceof A)return{raw:n.lexical??String(n.object)};if(n instanceof v)return{raw:n.lexical??String(n.object)};if(n instanceof S)return{ref:b(n.object)};if(n instanceof V)return M(n.object);if(n instanceof g)return{list:n.object.map(ae)}}function M(n){let e=h(n.statement);return n.name&&n.name.length>0?{embed:{name:n.name,statements:e}}:{embed:{statements:e}}}function ae(n){if(n instanceof p)return{ref:b(n)};if(n instanceof m)return M(n);if(n instanceof E){if(n.carrier)return{lit:n.lexical??String(n.value),datatype:z(n.carrier)};let e=n.value;if(typeof e=="string")return{raw:e};if(typeof e=="number")return{raw:String(e)};if(typeof e=="boolean")return{raw:String(e)}}if(n instanceof j)return{embed:{statements:h(n.statement)}};throw new Error(`canonicalForm: list item of unrecognized kind (${n.constructor?.name??typeof n}); add canonicalization support before hashing data that contains it`)}function z(n){return n===U.LangString?"kanonak.org/core-rdf/langString":`kanonak.org/core-xsd/${n}`}function ie(n){let e=n.predicate;if(e)return L(e.subject)}function se(n){let e=n.namespace??"",t=n.name??"";return`${e}/${t}`}function b(n){return L(n.subject)}function L(n){let e=n.version;return e&&typeof e.major=="number"?`${n.publisher}/${n.package_}@${e.major}.${e.minor}.${e.patch}/${n.name}`:`${n.publisher}/${n.package_}/${n.name}`}import{VersionOperator as T}from"@kanonak-protocol/types/document/models/enums";var ce="0.0.0",w=class{constructor(e,t=new K,r){this.repository=e;this.parser=t;this.objectParser=r??new B(this.parser)}repository;parser;objectParser;imports(){return new f}serializeValue(e,t){return G(e,t)}async buildContentAddressed(e){let t=e.book.toImports(),r=await this.hashBody(e.publisher,t,e.body),o=Z(r),a={type:"EphemeralPackage",publisher:e.publisher,imports:t};e.contentHashProperty&&(a[e.contentHashProperty]=r),Object.assign(a,e.header??{}),a.imports=t;let i={[o]:a,...e.body},s=this.dump(i);return{yaml:s,byteCount:W(s),contentHash:r,packageName:o,publisher:e.publisher,resourceCount:Object.keys(e.body).length}}async buildNamed(e){let t=e.book.toImports(),r={type:e.type??"Package",publisher:e.publisher,version:e.version,imports:t},o;e.contentHashProperty&&(o=await this.hashBody(e.publisher,t,e.body),r[e.contentHashProperty]=o),Object.assign(r,e.header??{}),r.imports=t;let a={[e.name]:r,...e.body},i=this.dump(a),s={yaml:i,byteCount:W(i),packageName:e.name,publisher:e.publisher,resourceCount:Object.keys(e.body).length};return o!==void 0&&(s.contentHash=o),s}dump(e){return P.dump(e,{lineWidth:-1})}async hashBody(e,t,r){let o={[q]:{type:"EphemeralPackage",publisher:e,imports:t},...r},a=this.parser.parse(P.dump(o,{lineWidth:-1})),i=a.metadata.namespace_?.toString(),c=(await this.objectParser.parseKanonaks(new N(a,this.repository))).filter(u=>u instanceof d&&u.namespace===i&&u.name!==q);for(let u of c)u.namespace="ephemeral";return O(c)}},q="__pkgbuilder_probe__";function W(n){return new TextEncoder().encode(n).length}function Z(n){let e="sha256:",t=n.startsWith(e)?e.length:0;return`q-${n.slice(t,t+16)}`}var f=class{byKey=new Map;aliases=new Set;ensure(e,t,r,o,a=T.Major){let i=`${e}/${t}@${r}`,s=this.byKey.get(i);if(s)return s.alias;let c=this.uniqueAlias(o);return this.byKey.set(i,{publisher:e,package_:t,version:r,alias:c,match:a}),c}ref(e){if(!e.version||typeof e.version.major!="number")throw new Error(`Cannot serialize a reference to ${e.publisher}/${e.package_}/${e.name} without a version.`);return`${this.ensure(e.publisher,e.package_,l(e.version),e.package_)}.${e.name}`}refLatest(e,t,r,o){return`${this.ensure(e,t,ce,o??t,T.Any)}.${r}`}toImports(){let e=new Map;for(let r of this.byKey.values()){let o=e.get(r.publisher)??[];o.push(r),e.set(r.publisher,o)}return[...e.keys()].sort().map(r=>({publisher:r,packages:e.get(r).sort((o,a)=>o.package_<a.package_?-1:1).map(o=>({package:o.package_,match:C(o.match),version:o.version,alias:o.alias}))}))}uniqueAlias(e){let t=J(e)||"pkg",r=t,o=2;for(;this.aliases.has(r);)r=`${t}${o++}`;return this.aliases.add(r),r}};function G(n,e){if(n!=null){if(typeof n=="string"||typeof n=="number"||typeof n=="boolean")return n;if(n instanceof p)return e.ref(n.subject);if(Array.isArray(n)){let t=n.map(r=>G(r,e)).filter(r=>r!==void 0);return t.length>0?t:void 0}if(n instanceof m)throw new Error("Embedded values are not yet supported by PackageBuilder. Produce a literal or a reference, or compose the embedded shape into the output class.");if(ue(n))throw new Error(`Value produced a bare URI without a version (${n.publisher}/${n.package_}/${n.name}); cannot serialize it as a reference.`)}}function J(n){return n.replace(/[^A-Za-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}function ue(n){return typeof n=="object"&&n!==null&&typeof n.publisher=="string"&&typeof n.package_=="string"&&typeof n.name=="string"}var I=class{constructor(e){this.producers=e}producers;produced=new Map;producerFor(e,t){return this.producers.find(r=>r.canProduce(e,t))}async produceCached(e,t,r,o){let a=`${t}/${r}@${l(o)}`,i=this.produced.get(a);if(i)return i;let{document:s}=await e.produce(t,r,o);return this.produced.set(a,s),s}async getHighestCompatibleVersionAsync(e,t){let r=this.producerFor(e,t.packageName);if(!r)return null;let o={operator:t.versionOperator,version:t.version},a=await r.resolveVersion(e,t.packageName,o);return a?this.produceCached(r,e,t.packageName,a):null}async getDocumentAsync(e){let t;try{t=D(e)}catch{return null}if(t.kind!=="package"||!t.version)return null;let r=this.producerFor(t.publisher,t.package_);return r?this.produceCached(r,t.publisher,t.package_,t.version):null}async getDocumentsByNamespaceAsync(e,t){return Array.from(this.produced.values()).filter(r=>{let o=r.metadata.namespace_;return o!=null&&o.publisher===e&&o.package_===t})}async getAllDocumentsAsync(){return Array.from(this.produced.values())}async saveDocumentAsync(e,t){throw new Error("ProducerRepository is read-only: a producer is a source, not a store.")}async deleteDocumentAsync(e){throw new Error("ProducerRepository is read-only: a producer is a source, not a store.")}async clearNamespaceAsync(e,t){throw new Error("ProducerRepository is read-only: a producer is a source, not a store.")}async getAllDocumentReferencesAsync(){return[]}async getDocumentContentAsync(e){return null}async getDocumentUriAsync(e){return null}};var Q={async authorize(){return{allowed:!0}}},X={async record(){}},y=class extends Error{constructor(t,r){let o=`${t.publisher}/${t.package_}${t.version?`@${t.version.major}.${t.version.minor}.${t.version.patch}`:""}`;super(`Not entitled to produce ${o}${r?`: ${r}`:""}`);this.address=t;this.reason=r;this.name="EntitlementDeniedError"}address;reason},x=class{inner;ctx;policy;meter;constructor(e,t,r=Q,o=X){this.inner=e,this.ctx=t,this.policy=r,this.meter=o}canProduce(e,t){return this.inner.canProduce(e,t)}async resolveVersion(e,t,r){return await this.assertAllowed({publisher:e,package_:t,version:r.version}),this.inner.resolveVersion(e,t,r)}async produce(e,t,r){let o={publisher:e,package_:t,version:r};await this.assertAllowed(o);let a=await this.inner.produce(e,t,r);return await this.meter.record(this.ctx,o,a),a}async assertAllowed(e){let t=await this.policy.authorize(this.ctx,e);if(!t.allowed)throw new y(e,t.reason)}};export{ke as a,O as b,Pe as c,w as d,Z as e,f,J as g,I as h,Q as i,X as j,y as k,x as l};