@kanonak-protocol/sdk 6.4.0 → 6.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.d.ts +1 -1
- package/dist/browser.js +1 -1
- package/dist/chunk-6WOPXTIL.js +1 -0
- package/dist/{chunk-GXEKJFXG.js → chunk-CPENAANM.js} +27 -27
- package/dist/{chunk-AAYMTPG7.js → chunk-DQGXJDQU.js} +1 -1
- package/dist/{chunk-7TNZ7ICK.js → chunk-FS7UGDEX.js} +1 -1
- package/dist/{chunk-Q57XCPAQ.js → chunk-I2T6ORSG.js} +1 -1
- package/dist/{chunk-5AMN6MW7.js → chunk-IWPCPQQY.js} +1 -1
- package/dist/{chunk-X4V6DEZL.js → chunk-LIN5SG5I.js} +1 -1
- package/dist/chunk-LK5SHY4B.js +1 -0
- package/dist/{chunk-FB5QKDNM.js → chunk-OHF4RIKS.js} +1 -1
- package/dist/{chunk-LKJVNKCN.js → chunk-SBWD7EOG.js} +1 -1
- package/dist/{chunk-MSOUPUUB.js → chunk-TF23WBSZ.js} +1 -1
- package/dist/chunk-VJUZKHQU.js +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +4 -2
- package/dist/look/LookRenderer.d.ts +10 -4
- package/dist/parsing/index.js +1 -1
- package/dist/producer/index.js +1 -1
- package/dist/reasoning/KanonakVocabulary.d.ts +9 -0
- package/dist/reasoning/Reasoner.d.ts +6 -0
- package/dist/reasoning/index.d.ts +1 -1
- package/dist/reasoning/index.js +1 -1
- package/dist/resolution/index.js +1 -1
- package/dist/search/index.js +1 -1
- package/dist/server/closure.d.ts +11 -6
- package/dist/server/index.js +5 -5
- package/dist/shacl/ConformanceEvaluator.d.ts +8 -3
- package/dist/shacl/ConformanceScope.d.ts +32 -4
- package/dist/shacl/ShapesModel.d.ts +23 -0
- package/dist/shacl/index.d.ts +3 -3
- package/dist/shacl/uris.d.ts +1 -0
- package/dist/transformations/index.js +2 -2
- package/dist/transformations/v3/ExpressionEngineV3.d.ts +15 -0
- package/dist/uri-helpers/UriHelpers.d.ts +8 -0
- package/dist/uri-helpers/index.d.ts +1 -1
- package/dist/uri-helpers/index.js +1 -1
- package/dist/validation/index.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-A224OOBZ.js +0 -1
- package/dist/chunk-PC3MYDGL.js +0 -1
- package/dist/chunk-WXUMROTA.js +0 -1
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import{a as lt}from"./chunk-WXXZOJ4O.js";import{e as ke,f as u,k as Sn}from"./chunk-LKJVNKCN.js";import{a as ut}from"./chunk-5ZRVFYCP.js";import{a as yt}from"./chunk-PEJALHXK.js";import{$ as kt,_ as gt,ma as tn,na as we,oa as an,pa as $n,ta as bt}from"./chunk-WXUMROTA.js";import{A as un,B as Ye,C as xe,D as Ue,E as mt,F as Mn,G as vn,J as ht,b as Te,c as Y,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,p as H,q as re,r as dt,s as ft,t as je,u as Ee,v as _,x as Fe,y as oe,z as pt}from"./chunk-PC3MYDGL.js";import{c as hn,d as it,e as bn,g as ct}from"./chunk-GGK6A6QK.js";import{a as yn}from"./chunk-FUUTGGJS.js";import{ExpressionError as La,evaluates as Ca,validateMatchesPattern as Ua}from"@kanonak-protocol/expression";var q=class extends Error{constructor(n,t){super(`${n} (at ${t})`);this.path=t}path};function gi(r,e){let n=r.name,t=Wa(e),a={catalog:e,depth:0};if(_(r,u.InstanceTransformation))return Oa(r,n,a,t);if(_(r,u.SetTransformation))return Ia(r,n,a,t);throw new q("Subject is not a recognized v3 transformation type \u2014 expected InstanceTransformation or SetTransformation",n)}function Oa(r,e,n,t){return{kind:"instance",name:r.name,inputPattern:Kt(r,e),rule:wn(r,u.rule,`${e}.rule`,n),artifactName:wn(r,u.artifactName,`${e}.artifactName`,n),outputs:Rt(r,`${e}.outputs`),overrides:Et(r,`${e}.formatOverrides`,n),fragments:t}}function Ia(r,e,n,t){let a=Pe(r,u.partitionBy);return{kind:"set",name:r.name,inputPattern:Kt(r,e),rule:wn(r,u.rule,`${e}.rule`,n),artifactName:wn(r,u.artifactName,`${e}.artifactName`,n),outputs:Rt(r,`${e}.outputs`),overrides:Et(r,`${e}.formatOverrides`,n),partitionBy:a,fragments:t}}function Kt(r,e){let n=xt(r,u.inputPattern);if(!n)throw new q("inputPattern is required",e);return Ta(n,`${e}.inputPattern`)}function Ta(r,e){let n=Pe(r,u.matchesClass);if(!n)throw new q("matchesClass is required",e);let t=[];for(let o of Le(r,u.requires))if(o instanceof J)t.push(Hn(o.object.subject));else if(o instanceof ue)for(let i of o.object)i instanceof O&&t.push(Hn(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(vt(i,`${e}.sortBy[${s++}]`));else o instanceof le&&a.push(vt(o.object,`${e}.sortBy[${s++}]`));return{matchesClass:n,requires:t,sortBy:a}}function vt(r,e){let n=Pe(r,u.byProperty);if(!n)throw new q("SortKey.byProperty is required",e);let t=Pe(r,u.order);if(!t)throw new q("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 q(`SortKey.order must reference tx.ascending or tx.descending; got ${t.publisher}/${t.package_}/${t.name}`,e)}function wn(r,e,n,t){let a=Gn(r,e,n,t);if(!a)throw new q("expression is required",n);return He(a,n,t)}function qn(r,e,n,t){return Ee(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=Fe(t.catalog,a.item.subject);if(!c)throw new q(`references '${H(a.item.subject)}', which does not resolve in the catalog`,i);return c}throw new q(`expects a node, not the literal ${JSON.stringify(a.item.value)}`,i)})}function Gn(r,e,n,t){let a=qn(r,e,n,t);if(a.length>1)throw new q(`expects one expression, has ${a.length}`,n);return a[0]}function He(r,e,n){if(r instanceof Y){let t=we(r),a=t?H(t):`${r.namespace}/${r.name}`,s=n.visiting??new Set;if(s.has(a))throw new q(`named expressions form a cycle: ${[...s,a].join(" -> ")}`,e);return $t(r,a,{...n,visiting:new Set([...s,a])})}return $t(r,e,n)}function $t(r,e,n){if(_(r,u.StringLiteral))return{kind:"string-literal",value:be(r,u.stringLiteral,e)};if(_(r,u.IntegerLiteral))return{kind:"integer-literal",value:jt(r,u.integerLiteral,e)};if(_(r,u.DecimalLiteral))return{kind:"decimal-literal",value:jt(r,u.decimalLiteral,e)};if(_(r,u.BooleanLiteral))return{kind:"boolean-literal",value:Qa(r,u.booleanLiteral,e)};if(_(r,u.VarRef))return{kind:"var-ref",varName:be(r,u.varName,e)};if(_(r,u.PropertyRead))return{kind:"property-read",source:w(r,u.readSource,`${e}.readSource`,n),readProp:De(r,u.readProp,e,"readProp")};if(_(r,u.Traverse))return{kind:"traverse",source:w(r,u.traverseSource,`${e}.traverseSource`,n),through:De(r,u.through,e,"through"),step:w(r,u.step,`${e}.step`,n)};if(_(r,u.BuildAstNode))return{kind:"build-ast-node",astClass:De(r,u.astClass,e,"astClass"),set:Ma(r,`${e}.set`,n)};if(_(r,u.When))return{kind:"when",condition:w(r,u.condition,`${e}.condition`,n),thenBuild:w(r,u.thenBuild,`${e}.thenBuild`,n),elseBuild:Va(r,u.elseBuild,`${e}.elseBuild`,n)};if(_(r,u.Concat))return{kind:"concat",parts:Nn(r,u.parts,`${e}.parts`,n)};if(_(r,u.Fallback))return{kind:"fallback",primary:w(r,u.primary,`${e}.primary`,n),alternate:w(r,u.alternate,`${e}.alternate`,n)};if(_(r,u.UriName))return{kind:"uri-name",source:w(r,u.uriNameOf,`${e}.uriNameOf`,n)};if(_(r,u.UriPublisher))return{kind:"uri-publisher",source:w(r,u.uriPublisherOf,`${e}.uriPublisherOf`,n)};if(_(r,u.UriPackage))return{kind:"uri-package",source:w(r,u.uriPackageOf,`${e}.uriPackageOf`,n)};if(_(r,u.UriVersion))return{kind:"uri-version",source:w(r,u.uriVersionOf,`${e}.uriVersionOf`,n)};if(_(r,u.SubjectUri))return{kind:"subject-uri",source:w(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:w(r,u.resolveSource,`${e}.resolveSource`,n)};if(_(r,u.Normalize))return{kind:"normalize",source:w(r,u.normSource,`${e}.normSource`,n),normKind:Da(r,e)};if(_(r,u.UnescapedString))return{kind:"unescaped-string",source:w(r,u.unescapedSource,`${e}.unescapedSource`,n)};if(_(r,u.RenderMarkdown))return{kind:"render-markdown",source:w(r,u.renderSource,`${e}.renderSource`,n),readProp:De(r,u.renderProp,e,"renderProp"),format:Ba(r,e)};if(_(r,u.IsSet))return{kind:"is-set",check:w(r,u.checkExpr,`${e}.checkExpr`,n)};if(_(r,u.CallFragment))return Ga(r,e,n);if(_(r,u.Join))return{kind:"join",source:w(r,u.source,`${e}.source`,n),separator:be(r,u.separator,e)};if(_(r,u.Count))return{kind:"count",source:w(r,u.source,`${e}.source`,n)};if(_(r,u.Sum))return{kind:"sum",source:w(r,u.source,`${e}.source`,n)};if(_(r,u.Min))return{kind:"min",source:w(r,u.source,`${e}.source`,n)};if(_(r,u.Max))return{kind:"max",source:w(r,u.source,`${e}.source`,n)};if(_(r,u.Average))return{kind:"average",source:w(r,u.source,`${e}.source`,n)};if(_(r,u.ForEach))return{kind:"for-each",source:w(r,u.source,`${e}.source`,n),loopVar:be(r,u.loopVar,e),emit:w(r,u.emit,`${e}.emit`,n)};if(_(r,u.ListMap))return{kind:"list-map",source:w(r,u.source,`${e}.source`,n),loopVar:be(r,u.loopVar,e),mapBody:w(r,u.mapBody,`${e}.mapBody`,n)};if(_(r,u.Filter))return{kind:"filter",source:w(r,u.source,`${e}.source`,n),loopVar:be(r,u.loopVar,e),predicate:w(r,u.predicate,`${e}.predicate`,n)};if(_(r,u.PartitionBy))return{kind:"partition-by",source:w(r,u.source,`${e}.source`,n),loopVar:be(r,u.loopVar,e),partitionKey:w(r,u.partitionKey,`${e}.partitionKey`,n)};if(_(r,u.DistinctBy))return{kind:"distinct-by",source:w(r,u.source,`${e}.source`,n),loopVar:be(r,u.loopVar,e),distinctKey:w(r,u.distinctKey,`${e}.distinctKey`,n)};if(_(r,u.AllStatements))return{kind:"all-statements",source:w(r,u.statementsOf,`${e}.statementsOf`,n)};if(_(r,u.StatementPredicate))return{kind:"statement-predicate",source:w(r,u.predicateOf,`${e}.predicateOf`,n)};if(_(r,u.StatementValue))return{kind:"statement-value",source:w(r,u.valueOf,`${e}.valueOf`,n)};if(_(r,u.DateFormat))return{kind:"date-format",source:w(r,u.dateSource,`${e}.dateSource`,n),format:qa(r,e)};if(_(r,u.NumberFormat)){let a=Dn(r,u.fractionDigits);if(a!==void 0&&(!Number.isInteger(a)||a<0||a>20))throw new q(`fractionDigits must be an integer between 0 and 20; got ${a}`,e);let s=Be(r,u.currencyCode);return{kind:"number-format",source:w(r,u.numberSource,`${e}.numberSource`,n),style:Ha(r,e),...a!==void 0?{fractionDigits:a}:{},...s!==void 0?{currencyCode:s}:{}}}let t=Aa.find(a=>_(r,a.type));if(t){let a=H(t.type);if(!Ca(a))throw new q(`${a} is a numeric operator the expression runtime does not evaluate`,e);return{kind:"numeric-op",type:a,name:t.type.name,operands:t.operands.map(s=>({name:s.name,expr:w(r,s,`${e}.${s.name}`,n)}))}}if(_(r,u.Reverse))return{kind:"reverse",source:w(r,u.source,`${e}.source`,n)};if(_(r,u.WindowedMap)){let a=Dn(r,u.windowSize);if(a===void 0||!Number.isInteger(a)||a<1)throw new q("windowSize must be a positive integer",`${e}.windowSize`);return{kind:"windowed-map",source:w(r,u.source,`${e}.source`,n),windowSize:a,windowVar:be(r,u.windowVar,e),windowBody:w(r,u.windowBody,`${e}.windowBody`,n)}}if(_(r,u.PairwiseMap))return{kind:"pairwise-map",source:w(r,u.source,`${e}.source`,n),firstVar:be(r,u.firstVar,e),secondVar:be(r,u.secondVar,e),pairBody:w(r,u.pairBody,`${e}.pairBody`,n)};if(_(r,u.Scan))return{kind:"scan",source:w(r,u.source,`${e}.source`,n),initialState:w(r,u.initialState,`${e}.initialState`,n),stateVar:be(r,u.stateVar,e),elementVar:be(r,u.elementVar,e),accumulate:w(r,u.accumulate,`${e}.accumulate`,n)};if(_(r,u.ListItemAt))return{kind:"list-item-at",source:w(r,u.source,`${e}.source`,n),itemIndex:w(r,u.itemIndex,`${e}.itemIndex`,n)};if(_(r,u.Equals))return{kind:"equals",left:w(r,u.compareLeft,`${e}.compareLeft`,n),right:w(r,u.compareRight,`${e}.compareRight`,n)};if(_(r,u.GreaterThan))return{kind:"greater-than",left:w(r,u.compareLeft,`${e}.compareLeft`,n),right:w(r,u.compareRight,`${e}.compareRight`,n)};if(_(r,u.LessThan))return{kind:"less-than",left:w(r,u.compareLeft,`${e}.compareLeft`,n),right:w(r,u.compareRight,`${e}.compareRight`,n)};if(_(r,u.GreaterThanOrEqual))return{kind:"greater-than-or-equal",left:w(r,u.compareLeft,`${e}.compareLeft`,n),right:w(r,u.compareRight,`${e}.compareRight`,n)};if(_(r,u.LessThanOrEqual))return{kind:"less-than-or-equal",left:w(r,u.compareLeft,`${e}.compareLeft`,n),right:w(r,u.compareRight,`${e}.compareRight`,n)};if(_(r,u.Not))return{kind:"not",operand:w(r,u.operand,`${e}.operand`,n)};if(_(r,u.And))return{kind:"and",operands:Nn(r,u.operands,`${e}.operands`,n)};if(_(r,u.Or))return{kind:"or",operands:Nn(r,u.operands,`${e}.operands`,n)};if(_(r,u.Contains))return{kind:"contains",haystack:w(r,u.haystack,`${e}.haystack`,n),needle:w(r,u.needle,`${e}.needle`,n)};if(_(r,u.Matches)){let a=be(r,u.pattern,e);try{Ua(a)}catch(s){throw s instanceof La?new q(s.message,`${e}.pattern`):s}return{kind:"matches",source:w(r,u.matchSource,`${e}.matchSource`,n),pattern:a}}if(_(r,u.IsReference))return{kind:"is-reference",check:w(r,u.kindCheck,`${e}.kindCheck`,n)};if(_(r,u.IsEmbedded))return{kind:"is-embedded",check:w(r,u.kindCheck,`${e}.kindCheck`,n)};if(_(r,u.IsList))return{kind:"is-list",check:w(r,u.kindCheck,`${e}.kindCheck`,n)};if(_(r,u.IsString))return{kind:"is-string",check:w(r,u.kindCheck,`${e}.kindCheck`,n)};if(_(r,u.IsNumber))return{kind:"is-number",check:w(r,u.kindCheck,`${e}.kindCheck`,n)};if(_(r,u.IsBoolean))return{kind:"is-boolean",check:w(r,u.kindCheck,`${e}.kindCheck`,n)};if(_(r,u.StatementObject))return{kind:"statement-object",source:w(r,u.statementSource,`${e}.statementSource`,n)};if(_(r,u.Let))return{kind:"let",bindName:be(r,u.letName,e),bindValue:w(r,u.letValue,`${e}.letValue`,n),body:w(r,u.letBody,`${e}.letBody`,n)};if(_(r,u.GetStatementByName))return{kind:"get-statement-by-name",inSubject:w(r,u.inSubject,`${e}.inSubject`,n),byName:w(r,u.byName,`${e}.byName`,n)};throw new q("Expression is not of a recognized v3 type \u2014 embedded has no matching subclass of tx.Expression",e)}var Fa=[u.arithLeft,u.arithRight],Pa=[u.value],Aa=[...[u.Add,u.Subtract,u.Multiply,u.Divide,ke.Power,ke.Modulo,ke.Minimum,ke.Maximum].map(r=>({type:r,operands:Fa})),...[u.Abs,u.Negate,ke.Exp,ke.Ln,ke.Log10,ke.Sqrt,ke.Floor,ke.Ceil,ke.Round,ke.Sign].map(r=>({type:r,operands:Pa})),{type:ke.Clip,operands:[ke.clipValue,ke.clipLower,ke.clipUpper]}];function w(r,e,n,t){let a=Gn(r,e,n,t);if(!a)throw new q("child expression is required",n);return He(a,n,t)}function Va(r,e,n,t){let a=Gn(r,e,n,t);if(a)return He(a,n,t)}function Nn(r,e,n,t){return qn(r,e,n,t).map((a,s)=>He(a,`${n}[${s}]`,t))}function Ma(r,e,n){return qn(r,u.set,e,n).map((t,a)=>Na(t,`${e}[${a}]`,n))}function Na(r,e,n){return{field:De(r,u.field,e,"field"),value:w(r,u.bindValue,`${e}.bindValue`,n)}}function Da(r,e){let n=Pe(r,u.normKind);if(!n)throw new q("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 q(`Unknown NormalizeKind: ${n.publisher}/${n.package_}/${n.name}`,e)}function Ba(r,e){let n=Pe(r,u.renderFormat);if(!n)throw new q("renderFormat is required",e);if(re(n,u.RENDER_HTML))return"html";if(re(n,u.RENDER_MARKDOWN))return"markdown";throw new q(`Unknown RenderFormat: ${n.publisher}/${n.package_}/${n.name}`,e)}var St=new Set(["decimal","percent","basis-points","currency","compact"]);function Ha(r,e){let n=Be(r,u.numberStyle);if(n===void 0)throw new q("numberStyle is required",e);if(!St.has(n))throw new q(`Unknown numberStyle "${n}"; supported: ${[...St].join(", ")}`,e);return n}var wt=new Set(["iso-date","iso-datetime","short-date","long-date","year","month-year"]);function qa(r,e){let n=Be(r,u.dateFormat);if(!n)throw new q("dateFormat is required",e);if(!wt.has(n))throw new q(`Unknown dateFormat "${n}"; supported: ${[...wt].join(", ")}`,e);return n}function Ga(r,e,n){let t=Pe(r,u.fragmentRef);if(!t)throw new q("fragmentRef is required",e);if(!Ya(n.catalog,t))throw new q(`ExpressionFragment not found: ${t.publisher}/${t.package_}/${t.name}`,e);return{kind:"call-fragment",fragmentKey:za(t)}}function za(r){return`${r.publisher}/${r.package_}/${r.name}`}function Wa(r){let e=new Map,n=[];for(let t of r){if(!(t instanceof Y)||!_(t,u.ExpressionFragment))continue;let a=xt(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 Ya(r,e){for(let n of r)if(!(!(n instanceof Y)||n.name!==e.name||!(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))&&_(n,u.ExpressionFragment))return n}function Rt(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 q("outputs is required (at least one OutputFormat)",e);return n}function Et(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]=_t(o,`${e}[${a++}]`);t.set(i,c)}}else if(s instanceof le){let[o,i]=_t(s.object,`${e}[${a++}]`);t.set(o,i)}return t}function _t(r,e){let n=Pe(r,u.formatTarget);if(!n)throw new q("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=Bn(r,u.trailingNewline),o=Bn(r,u.omitWrapper);return[n.name,{metadataKeys:t.length>0?t:void 0,metadataRenames:a,trailingNewline:s,omitWrapper:o}]}function Xa(r){return r.predicate?.subject}function Le(r,e){let n=[];for(let t of r.statement){let a=Xa(t);a&&re(a,e)&&n.push(t)}return n}function xt(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 Hn(n.object.subject)}function Be(r,e){for(let n of Le(r,e))if(n instanceof ae)return n.object}function Dn(r,e){for(let n of Le(r,e))if(n instanceof he)return n.object}function Bn(r,e){for(let n of Le(r,e))if(n instanceof ge)return n.object}function be(r,e,n){let t=Be(r,e);if(t===void 0)throw new q(`${e.name} (string) is required`,n);return t}function jt(r,e,n){let t=Dn(r,e);if(t===void 0)throw new q(`${e.name} (number) is required`,n);return t}function Qa(r,e,n){let t=Bn(r,e);if(t===void 0)throw new q(`${e.name} (boolean) is required`,n);return t}function De(r,e,n,t){let a=Pe(r,e);if(!a)throw new q(`${t} (URI reference) is required`,n);return a}function Hn(r){return{publisher:r.publisher,package_:r.package_,name:r.name}}var Xe="kanonak.org",It="look",dn="core-rdf",Tt={publisher:Xe,package_:It,name:"displayLabel"},Ft={publisher:Xe,package_:It,name:"displaySummary"},Ja={publisher:Xe,package_:dn,name:"subClassOf"},Za={publisher:Xe,package_:dn,name:"label"},er={publisher:Xe,package_:dn,name:"comment"},Lt=new yn(Xe,dn,"Resource"),nr=8;function G(r,e){return Pt(r,e,new Set)}function Pt(r,e,n){let t=Ot(r,e,Tt)??Za,a=Ot(r,e,Ft)??er,s=Ct(r,e,t,n)??e.name,o=Ct(r,e,a,n);return{label:s,summary:o}}function Ct(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 Ut(r,a.object.subject,t);if(a instanceof ue){let o=[];for(let i of a.object??[])if(i instanceof O){let c=Ut(r,i.subject,t);c&&o.push(c)}if(o.length>0)return o.join(", ")}return}}}function Ut(r,e,n){let t=H(e);if(n.has(t)||n.size>=nr)return e.name;let[a]=oe(r,e);if(!a)return e.name;let s=new Set(n);return s.add(t),Pt(r,a,s).label}function Ot(r,e,n){let t=Ue(e,n);if(t)return t;let a=new Set,s=je(e,tr);for(;s.length>0;){let o=s.shift(),i=H(o);if(a.has(i))continue;a.add(i);let c=oe(r,o);for(let l of c){let d=Ue(l,n);if(d)return d}for(let l of c)s.push(...je(l,Ja))}if(!a.has(H(Lt)))for(let o of oe(r,Lt)){let i=Ue(o,n);if(i)return i}}var tr={publisher:Xe,package_:dn,name:"type"};var ar="kanonak.org",Qe=(r,e)=>({publisher:ar,package_:r,name:e}),rr=Qe("look","source"),At=Qe("look","connectors"),sr=Qe("look","relation"),or=Qe("look","lineStyle"),ir=Qe("look","participants"),cr=Qe("core-owl","SymmetricProperty"),lr=Qe("core-owl","inverseOf"),Vt=new Set(["solid","dotted","open","thick"]);function Mt(r){return Ue(r,rr)}function Nt(r,e){let n=mt(e,At),t=n?[n]:Mn(e,At),a=[];for(let s of t){if(!(s instanceof D))continue;let o=Ue(s,sr);if(!o)continue;let i=xe(s,or),c=i!==void 0&&Vt.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 Dt(r,e){let n=[];for(let t of Mn(e,ir)){if(!(t instanceof O))continue;let a=oe(r,t.subject)[0];a&&n.push(a)}return n}function fn(r,e,n){for(let t of ft(e))if(re(t,n)||an(r,t).some(a=>re(a,n)))return!0;return!1}function Bt(r,e,n){let t=!!e.subject&&fn(r,e.subject,cr);return e.declaredStyle?{style:e.declaredStyle,undirected:t}:e.subject&&je(e.subject,lr).some(s=>n.some(o=>re(s,o.relation)))?{style:"dotted",undirected:t}:{style:"solid",undirected:t}}function zn(r,e,n){let t=Mt(n);if(!t)return _n("the band declares no look.source");let a=Nt(r,n);if(a.length===0)return _n("the band declares no look.connectors \u2014 nothing can be a message");let s=pt(e,t);if(!s)return{..._n(),sourceAbsent:!0};if(!(s instanceof Ne))return _n(`look.source ${H(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&&($n(r,m)!==void 0?a.some(y=>re(b,y.relation))?o.push({kind:"selector",relation:b}):i.push(b):(o.push({kind:"participant",subject:m}),c++))}let l=[],d=[],f,p;for(let h of o){if(h.kind==="selector"){p=h.relation;continue}let b=h.subject;if(f){let m=p?a.filter(F=>re(p,F.relation)):a,y=we(b),v=we(f),E=[],K=[];for(let F of m){let{style:L,undirected:S}=Bt(r,F,a);y&&je(f,F.relation).some(W=>H(W)===H(y))?E.push({from:f,to:b,relation:F.relation,style:L,undirected:S}):v&&je(b,F.relation).some(W=>H(W)===H(v))&&K.push({from:b,to:f,relation:F.relation,style:L,undirected:S})}let U=E.length>0?E:K;l.push(...U),U.length===0&&Ae(f)!==Ae(b)&&d.push({prev:f,next:b,selected:p}),p=void 0}f=b}let g=new Map;for(let h of Dt(r,n))g.set(Ae(h),h);for(let h of l)g.has(Ae(h.from))||g.set(Ae(h.from),h.from),g.has(Ae(h.to))||g.set(Ae(h.to),h.to);return{messages:l,gaps:d,lifelines:[...g.values()],mentions:c,strayPropertyRefs:i,sourceAbsent:!1}}function Ae(r){return`${r.namespace}/${r.name}`}function _n(r){return{messages:[],gaps:[],lifelines:[],mentions:0,strayPropertyRefs:[],sourceAbsent:!1,...r?{problem:r}:{}}}var ur="kanonak.org",dr="core-shacl",_e=r=>({publisher:ur,package_:dr,name:r}),fr=_e("NodeShape"),pr=_e("targetClass"),mr=_e("property"),gr=_e("path"),kr=_e("minCount"),hr=_e("maxCount"),br=_e("in"),yr=_e("pattern"),vr=_e("flags"),$r=_e("minLength"),Sr=_e("maxLength"),wr=_e("minInclusive"),_r=_e("maxInclusive"),jr=_e("message");function rn(r){return typeof r=="number"?r:void 0}function Kr(r){let e={},n=rn(Ye(r,kr)),t=rn(Ye(r,hr));n!==void 0&&(e.minCount=n),t!==void 0&&(e.maxCount=t);let a=rn(Ye(r,$r)),s=rn(Ye(r,Sr));a!==void 0&&(e.minLength=a),s!==void 0&&(e.maxLength=s);let o=rn(Ye(r,wr)),i=rn(Ye(r,_r));o!==void 0&&(e.minInclusive=o),i!==void 0&&(e.maxInclusive=i);let c=xe(r,yr);if(c!==void 0){let f=xe(r,vr);e.pattern=f!==void 0?{regex:c,flags:f}:{regex:c}}let l=Ee(r,br).map(f=>f.item).filter(f=>"literal"in f).map(f=>f.value);l.length>0&&(e.enumValues=l);let d=xe(r,jr);return d!==void 0&&(e.message=d),e}function Rr(r,e){let n=[];for(let{item:t}of Ee(e,mr))if(t instanceof D)n.push(t);else if(t instanceof O){let a=Fe(r,t.subject);a&&n.push(a)}return n}function Er(r){let e=new Map;for(let n of r){if(!(n instanceof Y)||!_(n,fr))continue;let t=Ue(n,pr);if(!t)continue;let a=H(t);for(let s of Rr(r,n)){let o=Ue(s,gr);if(!o)continue;let i=Kr(s);if(xr(s,i))continue;let c={pathKey:H(o),constraints:i},l=e.get(a);l?l.push(c):e.set(a,[c])}}return e}var Ht=new WeakMap;function pn(r){let e=Ht.get(r);return e||(e=Er(r),Ht.set(r,e)),e}function xr(r,e){return un(r,gt)||un(r,kt)?Object.keys(e).every(t=>t==="message"):!1}function Lr(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 qt(r,e,n){let t=H(n),a=!1,s={};for(let o=e.length-1;o>=0;o--){let i=r.get(H(e[o]));if(i)for(let c of i)c.pathKey===t&&(a=!0,Lr(s,c.constraints))}if(a)return s.cardinality=s.maxCount===1?"single":"list",s.required=(s.minCount??0)>=1,s}var Je="kanonak.org",Kn="core-rdf",Gt="core-xsd",Cr={publisher:Je,package_:Kn,name:"subClassOf"},zt={publisher:Je,package_:Kn,name:"label"},Wt={publisher:Je,package_:Kn,name:"comment"},Yt={publisher:Je,package_:"core-owl",name:"oneOf"},Xt=r=>r;function Ur(r,e,n){if(e.publisher===Je&&e.package_===Kn&&e.name==="Literal")return{kind:"datatype",uri:e};let a=Fe(r,e);if(a){let s=Xt(a);if(tn.isDatatypeType(s))return{kind:"datatype",uri:e};if(tn.isClassType(s))return{kind:"class",uri:we(a)??e,localName:a.name}}return e.publisher===Je&&e.package_===Gt?{kind:"datatype",uri:e}:n==="datatype"?{kind:"datatype",uri:e}:{kind:"class",uri:e,localName:e.name}}function Or(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=Ur(r,e.range,e.kind),a=e.kind==="object"?"object":e.kind==="datatype"?"datatype":t.kind==="class"?"object":"datatype";return{uri:e.uri,localName:e.uri.name,kind:a,range:t,...e.label!==void 0?{label:e.label}:{},...e.comment!==void 0?{comment:e.comment}:{},...n??{}}}var jn=r=>new yn(Je,Gt,r);function Ir(r){return typeof r=="boolean"?jn("boolean"):typeof r=="number"?Number.isInteger(r)?jn("integer"):jn("decimal"):jn("string")}function Tr(r,e,n){let t=[];for(let a of vn(e,Yt,r,H(n)))if(a.kind==="subject"||a.kind==="unresolved"){let s=a.kind==="subject"?a.node:void 0,o=(s?we(s):void 0)??a.uri,i=s?xe(s,zt):void 0,c=s?xe(s,Wt):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:Ir(a.value)});return t}function Rn(r,e,n,t){let a=an(r,e),s=H(e);return bt(r,e).filter(i=>n?!0:i.domains.some(c=>H(c)===s)).map(i=>Or(r,i,qt(t,a,i.uri)))}async function Gi(r,e,n){let t=r.metadata?.namespace_;if(!t)throw new Error("buildOntologyModel: document has no namespace (publisher/package/version).");let a=n?.includeInherited??!1,s=Array.isArray(e)?e:await new Sn().parseKanonaks(e),o=pn(s),i=p=>p.publisher===t.publisher&&p.package_===t.package_&&!(p.version&&t.version&&!it(p.version,t.version)),c=[],l=[],d=new Set,f=!1;for(let p of s){if(!(p instanceof Y))continue;let g=we(p);if(!g||!i(g)||(f=!0,!tn.isClassType(Xt(p))))continue;let h=H(g);if(d.has(h))continue;d.add(h);let b=je(p,Cr).map(v=>({uri:v,localName:v.name})),m=xe(p,zt),y=xe(p,Wt);c.push({uri:g,localName:g.name,superClasses:b,properties:Rn(s,g,a,o),...m!==void 0?{label:m}:{},...y!==void 0?{comment:y}:{}}),un(p,Yt)&&l.push({uri:g,localName:g.name,members:Tr(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 mn(r,e={}){let n=r.replace(/\r\n/g,`
|
|
1
|
+
import{a as dt}from"./chunk-WXXZOJ4O.js";import{e as he,f as u,k as Sn}from"./chunk-SBWD7EOG.js";import{a as ft}from"./chunk-5ZRVFYCP.js";import{a as $t}from"./chunk-PEJALHXK.js";import{$ as bt,_ as ht,oa as tn,pa as we,qa as an,ra as $n,va as vt}from"./chunk-6WOPXTIL.js";import{A as gt,B as un,C as Xe,D as xe,E as Oe,F as kt,G as Mn,H as vn,K as yt,b as Ue,c as Y,d as D,e as U,i as ae,j as be,k as ke,l as Q,m as le,n as ue,o as De,p as B,q as re,r as pt,s as mt,t as je,u as Ee,w as _,y as Te,z as oe}from"./chunk-LK5SHY4B.js";import{c as hn,d as lt,e as bn,g as ut}from"./chunk-GGK6A6QK.js";import{a as yn}from"./chunk-FUUTGGJS.js";import{ExpressionError as Oa,evaluates as Ia,validateMatchesPattern as Fa}from"@kanonak-protocol/expression";var q=class extends Error{constructor(n,t){super(`${n} (at ${t})`);this.path=t}path};function bi(r,e){let n=r.name,t=Ja(e),a={catalog:e,depth:0};if(_(r,u.InstanceTransformation))return Ta(r,n,a,t);if(_(r,u.SetTransformation))return Pa(r,n,a,t);throw new q("Subject is not a recognized v3 transformation type \u2014 expected InstanceTransformation or SetTransformation",n)}function Ta(r,e,n,t){return{kind:"instance",name:r.name,inputPattern:Et(r,e),rule:wn(r,u.rule,`${e}.rule`,n),artifactName:wn(r,u.artifactName,`${e}.artifactName`,n),outputs:xt(r,`${e}.outputs`),overrides:Lt(r,`${e}.formatOverrides`,n),fragments:t}}function Pa(r,e,n,t){let a=Pe(r,u.partitionBy);return{kind:"set",name:r.name,inputPattern:Et(r,e),rule:wn(r,u.rule,`${e}.rule`,n),artifactName:wn(r,u.artifactName,`${e}.artifactName`,n),outputs:xt(r,`${e}.outputs`),overrides:Lt(r,`${e}.formatOverrides`,n),partitionBy:a,fragments:t}}function Et(r,e){let n=Ct(r,u.inputPattern);if(!n)throw new q("inputPattern is required",e);return Va(n,`${e}.inputPattern`)}function Va(r,e){let n=Pe(r,u.matchesClass);if(!n)throw new q("matchesClass is required",e);let t=[];for(let o of Le(r,u.requires))if(o instanceof Q)t.push(Hn(o.object.subject));else if(o instanceof ue)for(let i of o.object)i instanceof U&&t.push(Hn(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(St(i,`${e}.sortBy[${s++}]`));else o instanceof le&&a.push(St(o.object,`${e}.sortBy[${s++}]`));return{matchesClass:n,requires:t,sortBy:a}}function St(r,e){let n=Pe(r,u.byProperty);if(!n)throw new q("SortKey.byProperty is required",e);let t=Pe(r,u.order);if(!t)throw new q("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 q(`SortKey.order must reference tx.ascending or tx.descending; got ${t.publisher}/${t.package_}/${t.name}`,e)}function wn(r,e,n,t){let a=Gn(r,e,n,t);if(!a)throw new q("expression is required",n);return qe(a,n,t)}function qn(r,e,n,t){return Ee(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 U){let c=Te(t.catalog,a.item.subject);if(!c)throw new q(`references '${B(a.item.subject)}', which does not resolve in the catalog`,i);return c}throw new q(`expects a node, not the literal ${JSON.stringify(a.item.value)}`,i)})}function Gn(r,e,n,t){let a=qn(r,e,n,t);if(a.length>1)throw new q(`expects one expression, has ${a.length}`,n);return a[0]}function qe(r,e,n){if(r instanceof Y){let t=we(r),a=t?B(t):`${r.namespace}/${r.name}`,s=n.visiting??new Set;if(s.has(a))throw new q(`named expressions form a cycle: ${[...s,a].join(" -> ")}`,e);return wt(r,a,{...n,visiting:new Set([...s,a])})}return wt(r,e,n)}function wt(r,e,n){if(_(r,u.StringLiteral))return{kind:"string-literal",value:ye(r,u.stringLiteral,e)};if(_(r,u.IntegerLiteral))return{kind:"integer-literal",value:Rt(r,u.integerLiteral,e)};if(_(r,u.DecimalLiteral))return{kind:"decimal-literal",value:Rt(r,u.decimalLiteral,e)};if(_(r,u.BooleanLiteral))return{kind:"boolean-literal",value:er(r,u.booleanLiteral,e)};if(_(r,u.VarRef))return{kind:"var-ref",varName:ye(r,u.varName,e)};if(_(r,u.PropertyRead))return{kind:"property-read",source:w(r,u.readSource,`${e}.readSource`,n),readProp:Be(r,u.readProp,e,"readProp")};if(_(r,u.Traverse))return{kind:"traverse",source:w(r,u.traverseSource,`${e}.traverseSource`,n),through:Be(r,u.through,e,"through"),step:w(r,u.step,`${e}.step`,n)};if(_(r,u.BuildAstNode))return{kind:"build-ast-node",astClass:Be(r,u.astClass,e,"astClass"),set:Ba(r,`${e}.set`,n)};if(_(r,u.When))return{kind:"when",condition:w(r,u.condition,`${e}.condition`,n),thenBuild:w(r,u.thenBuild,`${e}.thenBuild`,n),elseBuild:Da(r,u.elseBuild,`${e}.elseBuild`,n)};if(_(r,u.Concat))return{kind:"concat",parts:Nn(r,u.parts,`${e}.parts`,n)};if(_(r,u.Fallback))return{kind:"fallback",primary:w(r,u.primary,`${e}.primary`,n),alternate:w(r,u.alternate,`${e}.alternate`,n)};if(_(r,u.UriName))return{kind:"uri-name",source:w(r,u.uriNameOf,`${e}.uriNameOf`,n)};if(_(r,u.UriPublisher))return{kind:"uri-publisher",source:w(r,u.uriPublisherOf,`${e}.uriPublisherOf`,n)};if(_(r,u.UriPackage))return{kind:"uri-package",source:w(r,u.uriPackageOf,`${e}.uriPackageOf`,n)};if(_(r,u.UriVersion))return{kind:"uri-version",source:w(r,u.uriVersionOf,`${e}.uriVersionOf`,n)};if(_(r,u.SubjectUri))return{kind:"subject-uri",source:w(r,u.subjectOf,`${e}.subjectOf`,n)};if(_(r,u.UriLiteral))return{kind:"uri-literal",refTo:Be(r,u.refTo,e,"refTo")};if(_(r,u.DisplayLabel))return{kind:"display-label",labelTarget:Be(r,u.labelTarget,e,"labelTarget"),labelSource:Be(r,u.labelSource,e,"labelSource")};if(_(r,u.ResolveRef))return{kind:"resolve-ref",source:w(r,u.resolveSource,`${e}.resolveSource`,n)};if(_(r,u.Normalize))return{kind:"normalize",source:w(r,u.normSource,`${e}.normSource`,n),normKind:qa(r,e)};if(_(r,u.UnescapedString))return{kind:"unescaped-string",source:w(r,u.unescapedSource,`${e}.unescapedSource`,n)};if(_(r,u.RenderMarkdown))return{kind:"render-markdown",source:w(r,u.renderSource,`${e}.renderSource`,n),readProp:Be(r,u.renderProp,e,"renderProp"),format:Ga(r,e)};if(_(r,u.IsSet))return{kind:"is-set",check:w(r,u.checkExpr,`${e}.checkExpr`,n)};if(_(r,u.CallFragment))return Ya(r,e,n);if(_(r,u.Join))return{kind:"join",source:w(r,u.source,`${e}.source`,n),separator:ye(r,u.separator,e)};if(_(r,u.Count))return{kind:"count",source:w(r,u.source,`${e}.source`,n)};if(_(r,u.Sum))return{kind:"sum",source:w(r,u.source,`${e}.source`,n)};if(_(r,u.Min))return{kind:"min",source:w(r,u.source,`${e}.source`,n)};if(_(r,u.Max))return{kind:"max",source:w(r,u.source,`${e}.source`,n)};if(_(r,u.Average))return{kind:"average",source:w(r,u.source,`${e}.source`,n)};if(_(r,u.ForEach))return{kind:"for-each",source:w(r,u.source,`${e}.source`,n),loopVar:ye(r,u.loopVar,e),emit:w(r,u.emit,`${e}.emit`,n)};if(_(r,u.ListMap))return{kind:"list-map",source:w(r,u.source,`${e}.source`,n),loopVar:ye(r,u.loopVar,e),mapBody:w(r,u.mapBody,`${e}.mapBody`,n)};if(_(r,u.Filter))return{kind:"filter",source:w(r,u.source,`${e}.source`,n),loopVar:ye(r,u.loopVar,e),predicate:w(r,u.predicate,`${e}.predicate`,n)};if(_(r,u.PartitionBy))return{kind:"partition-by",source:w(r,u.source,`${e}.source`,n),loopVar:ye(r,u.loopVar,e),partitionKey:w(r,u.partitionKey,`${e}.partitionKey`,n)};if(_(r,u.DistinctBy))return{kind:"distinct-by",source:w(r,u.source,`${e}.source`,n),loopVar:ye(r,u.loopVar,e),distinctKey:w(r,u.distinctKey,`${e}.distinctKey`,n)};if(_(r,u.AllStatements))return{kind:"all-statements",source:w(r,u.statementsOf,`${e}.statementsOf`,n)};if(_(r,u.StatementPredicate))return{kind:"statement-predicate",source:w(r,u.predicateOf,`${e}.predicateOf`,n)};if(_(r,u.StatementValue))return{kind:"statement-value",source:w(r,u.valueOf,`${e}.valueOf`,n)};if(_(r,u.DateFormat))return{kind:"date-format",source:w(r,u.dateSource,`${e}.dateSource`,n),format:Wa(r,e)};if(_(r,u.NumberFormat)){let a=Dn(r,u.fractionDigits);if(a!==void 0&&(!Number.isInteger(a)||a<0||a>20))throw new q(`fractionDigits must be an integer between 0 and 20; got ${a}`,e);let s=He(r,u.currencyCode);return{kind:"number-format",source:w(r,u.numberSource,`${e}.numberSource`,n),style:za(r,e),...a!==void 0?{fractionDigits:a}:{},...s!==void 0?{currencyCode:s}:{}}}let t=Na.find(a=>_(r,a.type));if(t){let a=B(t.type);if(!Ia(a))throw new q(`${a} is a numeric operator the expression runtime does not evaluate`,e);return{kind:"numeric-op",type:a,name:t.type.name,operands:t.operands.map(s=>({name:s.name,expr:w(r,s,`${e}.${s.name}`,n)}))}}if(_(r,u.Reverse))return{kind:"reverse",source:w(r,u.source,`${e}.source`,n)};if(_(r,u.WindowedMap)){let a=Dn(r,u.windowSize);if(a===void 0||!Number.isInteger(a)||a<1)throw new q("windowSize must be a positive integer",`${e}.windowSize`);return{kind:"windowed-map",source:w(r,u.source,`${e}.source`,n),windowSize:a,windowVar:ye(r,u.windowVar,e),windowBody:w(r,u.windowBody,`${e}.windowBody`,n)}}if(_(r,u.PairwiseMap))return{kind:"pairwise-map",source:w(r,u.source,`${e}.source`,n),firstVar:ye(r,u.firstVar,e),secondVar:ye(r,u.secondVar,e),pairBody:w(r,u.pairBody,`${e}.pairBody`,n)};if(_(r,u.Scan))return{kind:"scan",source:w(r,u.source,`${e}.source`,n),initialState:w(r,u.initialState,`${e}.initialState`,n),stateVar:ye(r,u.stateVar,e),elementVar:ye(r,u.elementVar,e),accumulate:w(r,u.accumulate,`${e}.accumulate`,n)};if(_(r,u.ListItemAt))return{kind:"list-item-at",source:w(r,u.source,`${e}.source`,n),itemIndex:w(r,u.itemIndex,`${e}.itemIndex`,n)};if(_(r,u.Equals))return{kind:"equals",left:w(r,u.compareLeft,`${e}.compareLeft`,n),right:w(r,u.compareRight,`${e}.compareRight`,n)};if(_(r,u.GreaterThan))return{kind:"greater-than",left:w(r,u.compareLeft,`${e}.compareLeft`,n),right:w(r,u.compareRight,`${e}.compareRight`,n)};if(_(r,u.LessThan))return{kind:"less-than",left:w(r,u.compareLeft,`${e}.compareLeft`,n),right:w(r,u.compareRight,`${e}.compareRight`,n)};if(_(r,u.GreaterThanOrEqual))return{kind:"greater-than-or-equal",left:w(r,u.compareLeft,`${e}.compareLeft`,n),right:w(r,u.compareRight,`${e}.compareRight`,n)};if(_(r,u.LessThanOrEqual))return{kind:"less-than-or-equal",left:w(r,u.compareLeft,`${e}.compareLeft`,n),right:w(r,u.compareRight,`${e}.compareRight`,n)};if(_(r,u.Not))return{kind:"not",operand:w(r,u.operand,`${e}.operand`,n)};if(_(r,u.And))return{kind:"and",operands:Nn(r,u.operands,`${e}.operands`,n)};if(_(r,u.Or))return{kind:"or",operands:Nn(r,u.operands,`${e}.operands`,n)};if(_(r,u.Contains))return{kind:"contains",haystack:w(r,u.haystack,`${e}.haystack`,n),needle:w(r,u.needle,`${e}.needle`,n)};if(_(r,u.Matches)){let a=ye(r,u.pattern,e);try{Fa(a)}catch(s){throw s instanceof Oa?new q(s.message,`${e}.pattern`):s}return{kind:"matches",source:w(r,u.matchSource,`${e}.matchSource`,n),pattern:a}}if(_(r,u.IsReference))return{kind:"is-reference",check:w(r,u.kindCheck,`${e}.kindCheck`,n)};if(_(r,u.IsEmbedded))return{kind:"is-embedded",check:w(r,u.kindCheck,`${e}.kindCheck`,n)};if(_(r,u.IsList))return{kind:"is-list",check:w(r,u.kindCheck,`${e}.kindCheck`,n)};if(_(r,u.IsString))return{kind:"is-string",check:w(r,u.kindCheck,`${e}.kindCheck`,n)};if(_(r,u.IsNumber))return{kind:"is-number",check:w(r,u.kindCheck,`${e}.kindCheck`,n)};if(_(r,u.IsBoolean))return{kind:"is-boolean",check:w(r,u.kindCheck,`${e}.kindCheck`,n)};if(_(r,u.StatementObject))return{kind:"statement-object",source:w(r,u.statementSource,`${e}.statementSource`,n)};if(_(r,u.Let))return{kind:"let",bindName:ye(r,u.letName,e),bindValue:w(r,u.letValue,`${e}.letValue`,n),body:w(r,u.letBody,`${e}.letBody`,n)};if(_(r,u.GetStatementByName))return{kind:"get-statement-by-name",inSubject:w(r,u.inSubject,`${e}.inSubject`,n),byName:w(r,u.byName,`${e}.byName`,n)};throw new q("Expression is not of a recognized v3 type \u2014 embedded has no matching subclass of tx.Expression",e)}var Aa=[u.arithLeft,u.arithRight],Ma=[u.value],Na=[...[u.Add,u.Subtract,u.Multiply,u.Divide,he.Power,he.Modulo,he.Minimum,he.Maximum].map(r=>({type:r,operands:Aa})),...[u.Abs,u.Negate,he.Exp,he.Ln,he.Log10,he.Sqrt,he.Floor,he.Ceil,he.Round,he.Sign].map(r=>({type:r,operands:Ma})),{type:he.Clip,operands:[he.clipValue,he.clipLower,he.clipUpper]}];function w(r,e,n,t){let a=Gn(r,e,n,t);if(!a)throw new q("child expression is required",n);return qe(a,n,t)}function Da(r,e,n,t){let a=Gn(r,e,n,t);if(a)return qe(a,n,t)}function Nn(r,e,n,t){return qn(r,e,n,t).map((a,s)=>qe(a,`${n}[${s}]`,t))}function Ba(r,e,n){return qn(r,u.set,e,n).map((t,a)=>Ha(t,`${e}[${a}]`,n))}function Ha(r,e,n){return{field:Be(r,u.field,e,"field"),value:w(r,u.bindValue,`${e}.bindValue`,n)}}function qa(r,e){let n=Pe(r,u.normKind);if(!n)throw new q("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 q(`Unknown NormalizeKind: ${n.publisher}/${n.package_}/${n.name}`,e)}function Ga(r,e){let n=Pe(r,u.renderFormat);if(!n)throw new q("renderFormat is required",e);if(re(n,u.RENDER_HTML))return"html";if(re(n,u.RENDER_MARKDOWN))return"markdown";throw new q(`Unknown RenderFormat: ${n.publisher}/${n.package_}/${n.name}`,e)}var _t=new Set(["decimal","percent","basis-points","currency","compact"]);function za(r,e){let n=He(r,u.numberStyle);if(n===void 0)throw new q("numberStyle is required",e);if(!_t.has(n))throw new q(`Unknown numberStyle "${n}"; supported: ${[..._t].join(", ")}`,e);return n}var jt=new Set(["iso-date","iso-datetime","short-date","long-date","year","month-year"]);function Wa(r,e){let n=He(r,u.dateFormat);if(!n)throw new q("dateFormat is required",e);if(!jt.has(n))throw new q(`Unknown dateFormat "${n}"; supported: ${[...jt].join(", ")}`,e);return n}function Ya(r,e,n){let t=Pe(r,u.fragmentRef);if(!t)throw new q("fragmentRef is required",e);if(!Qa(n.catalog,t))throw new q(`ExpressionFragment not found: ${t.publisher}/${t.package_}/${t.name}`,e);return{kind:"call-fragment",fragmentKey:Xa(t)}}function Xa(r){return`${r.publisher}/${r.package_}/${r.name}`}function Ja(r){let e=new Map,n=[];for(let t of r){if(!(t instanceof Y)||!_(t,u.ExpressionFragment))continue;let a=Ct(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=qe(t.bodyEmb,`fragment(${t.pubPkgName})`,{catalog:r,depth:0});e.set(t.key,a)}return e}function Qa(r,e){for(let n of r)if(!(!(n instanceof Y)||n.name!==e.name||!(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))&&_(n,u.ExpressionFragment))return n}function xt(r,e){let n=new Set;for(let t of Le(r,u.outputs))if(t instanceof Q)n.add(t.object.subject.name);else if(t instanceof ue)for(let a of t.object)a instanceof U&&n.add(a.subject.name);if(n.size===0)throw new q("outputs is required (at least one OutputFormat)",e);return n}function Lt(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]=Kt(o,`${e}[${a++}]`);t.set(i,c)}}else if(s instanceof le){let[o,i]=Kt(s.object,`${e}[${a++}]`);t.set(o,i)}return t}function Kt(r,e){let n=Pe(r,u.formatTarget);if(!n)throw new q("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=He(c,u.fromKey),d=He(c,u.toKey);l&&d&&a.set(l,d)}}else if(i instanceof le){let c=i.object,l=He(c,u.fromKey),d=He(c,u.toKey);l&&d&&a.set(l,d)}let s=Bn(r,u.trailingNewline),o=Bn(r,u.omitWrapper);return[n.name,{metadataKeys:t.length>0?t:void 0,metadataRenames:a,trailingNewline:s,omitWrapper:o}]}function Za(r){return r.predicate?.subject}function Le(r,e){let n=[];for(let t of r.statement){let a=Za(t);a&&re(a,e)&&n.push(t)}return n}function Ct(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 Q)return Hn(n.object.subject)}function He(r,e){for(let n of Le(r,e))if(n instanceof ae)return n.object}function Dn(r,e){for(let n of Le(r,e))if(n instanceof be)return n.object}function Bn(r,e){for(let n of Le(r,e))if(n instanceof ke)return n.object}function ye(r,e,n){let t=He(r,e);if(t===void 0)throw new q(`${e.name} (string) is required`,n);return t}function Rt(r,e,n){let t=Dn(r,e);if(t===void 0)throw new q(`${e.name} (number) is required`,n);return t}function er(r,e,n){let t=Bn(r,e);if(t===void 0)throw new q(`${e.name} (boolean) is required`,n);return t}function Be(r,e,n,t){let a=Pe(r,e);if(!a)throw new q(`${t} (URI reference) is required`,n);return a}function Hn(r){return{publisher:r.publisher,package_:r.package_,name:r.name}}var Je="kanonak.org",Tt="look",dn="core-rdf",Pt={publisher:Je,package_:Tt,name:"displayLabel"},Vt={publisher:Je,package_:Tt,name:"displaySummary"},nr={publisher:Je,package_:dn,name:"subClassOf"},tr={publisher:Je,package_:dn,name:"label"},ar={publisher:Je,package_:dn,name:"comment"},Ut=new yn(Je,dn,"Resource"),rr=8;function G(r,e){return At(r,e,new Set)}function At(r,e,n){let t=Ft(r,e,Pt)??tr,a=Ft(r,e,Vt)??ar,s=Ot(r,e,t,n)??e.name,o=Ot(r,e,a,n);return{label:s,summary:o}}function Ot(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 be||a instanceof ke)return String(a.object);if(a instanceof Q)return It(r,a.object.subject,t);if(a instanceof ue){let o=[];for(let i of a.object??[])if(i instanceof U){let c=It(r,i.subject,t);c&&o.push(c)}if(o.length>0)return o.join(", ")}return}}}function It(r,e,n){let t=B(e);if(n.has(t)||n.size>=rr)return e.name;let[a]=oe(r,e);if(!a)return e.name;let s=new Set(n);return s.add(t),At(r,a,s).label}function Ft(r,e,n){let t=Oe(e,n);if(t)return t;let a=new Set,s=je(e,sr);for(;s.length>0;){let o=s.shift(),i=B(o);if(a.has(i))continue;a.add(i);let c=oe(r,o);for(let l of c){let d=Oe(l,n);if(d)return d}for(let l of c)s.push(...je(l,nr))}if(!a.has(B(Ut)))for(let o of oe(r,Ut)){let i=Oe(o,n);if(i)return i}}var sr={publisher:Je,package_:dn,name:"type"};var or="kanonak.org",Qe=(r,e)=>({publisher:or,package_:r,name:e}),ir=Qe("look","source"),Mt=Qe("look","connectors"),cr=Qe("look","relation"),lr=Qe("look","lineStyle"),ur=Qe("look","participants"),dr=Qe("core-owl","SymmetricProperty"),fr=Qe("core-owl","inverseOf"),Nt=new Set(["solid","dotted","open","thick"]);function Dt(r){return Oe(r,ir)}function Bt(r,e){let n=kt(e,Mt),t=n?[n]:Mn(e,Mt),a=[];for(let s of t){if(!(s instanceof D))continue;let o=Oe(s,cr);if(!o)continue;let i=xe(s,lr),c=i!==void 0&&Nt.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 Ht(r,e){let n=[];for(let t of Mn(e,ur)){if(!(t instanceof U))continue;let a=oe(r,t.subject)[0];a&&n.push(a)}return n}function fn(r,e,n){for(let t of mt(e))if(re(t,n)||an(r,t).some(a=>re(a,n)))return!0;return!1}function qt(r,e,n){let t=!!e.subject&&fn(r,e.subject,dr);return e.declaredStyle?{style:e.declaredStyle,undirected:t}:e.subject&&je(e.subject,fr).some(s=>n.some(o=>re(s,o.relation)))?{style:"dotted",undirected:t}:{style:"solid",undirected:t}}function zn(r,e,n){let t=Dt(n);if(!t)return _n("the band declares no look.source");let a=Bt(r,n);if(a.length===0)return _n("the band declares no look.connectors \u2014 nothing can be a message");let s=gt(e,t);if(!s)return{..._n(),sourceAbsent:!0};if(!(s instanceof De))return _n(`look.source ${B(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&&($n(r,m)!==void 0?a.some(y=>re(b,y.relation))?o.push({kind:"selector",relation:b}):i.push(b):(o.push({kind:"participant",subject:m}),c++))}let l=[],d=[],f,p;for(let h of o){if(h.kind==="selector"){p=h.relation;continue}let b=h.subject;if(f){let m=p?a.filter(T=>re(p,T.relation)):a,y=we(b),v=we(f),E=[],K=[];for(let T of m){let{style:L,undirected:S}=qt(r,T,a);y&&je(f,T.relation).some(W=>B(W)===B(y))?E.push({from:f,to:b,relation:T.relation,style:L,undirected:S}):v&&je(b,T.relation).some(W=>B(W)===B(v))&&K.push({from:b,to:f,relation:T.relation,style:L,undirected:S})}let O=E.length>0?E:K;l.push(...O),O.length===0&&Ve(f)!==Ve(b)&&d.push({prev:f,next:b,selected:p}),p=void 0}f=b}let g=new Map;for(let h of Ht(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 _n(r){return{messages:[],gaps:[],lifelines:[],mentions:0,strayPropertyRefs:[],sourceAbsent:!1,...r?{problem:r}:{}}}var pr="kanonak.org",mr="core-shacl",_e=r=>({publisher:pr,package_:mr,name:r}),gr=_e("NodeShape"),kr=_e("targetClass"),hr=_e("property"),br=_e("path"),yr=_e("minCount"),vr=_e("maxCount"),$r=_e("in"),Sr=_e("pattern"),wr=_e("flags"),_r=_e("minLength"),jr=_e("maxLength"),Kr=_e("minInclusive"),Rr=_e("maxInclusive"),Er=_e("message");function rn(r){return typeof r=="number"?r:void 0}function xr(r){let e={},n=rn(Xe(r,yr)),t=rn(Xe(r,vr));n!==void 0&&(e.minCount=n),t!==void 0&&(e.maxCount=t);let a=rn(Xe(r,_r)),s=rn(Xe(r,jr));a!==void 0&&(e.minLength=a),s!==void 0&&(e.maxLength=s);let o=rn(Xe(r,Kr)),i=rn(Xe(r,Rr));o!==void 0&&(e.minInclusive=o),i!==void 0&&(e.maxInclusive=i);let c=xe(r,Sr);if(c!==void 0){let f=xe(r,wr);e.pattern=f!==void 0?{regex:c,flags:f}:{regex:c}}let l=Ee(r,$r).map(f=>f.item).filter(f=>"literal"in f).map(f=>f.value);l.length>0&&(e.enumValues=l);let d=xe(r,Er);return d!==void 0&&(e.message=d),e}function Lr(r,e){let n=[];for(let{item:t}of Ee(e,hr))if(t instanceof D)n.push(t);else if(t instanceof U){let a=Te(r,t.subject);a&&n.push(a)}return n}function Cr(r){let e=new Map;for(let n of r){if(!(n instanceof Y)||!_(n,gr))continue;let t=Oe(n,kr);if(!t)continue;let a=B(t);for(let s of Lr(r,n)){let o=Oe(s,br);if(!o)continue;let i=xr(s);if(Ur(s,i))continue;let c={pathKey:B(o),constraints:i},l=e.get(a);l?l.push(c):e.set(a,[c])}}return e}var Gt=new WeakMap;function pn(r){let e=Gt.get(r);return e||(e=Cr(r),Gt.set(r,e)),e}function Ur(r,e){return un(r,ht)||un(r,bt)?Object.keys(e).every(t=>t==="message"):!1}function Or(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 zt(r,e,n){let t=B(n),a=!1,s={};for(let o=e.length-1;o>=0;o--){let i=r.get(B(e[o]));if(i)for(let c of i)c.pathKey===t&&(a=!0,Or(s,c.constraints))}if(a)return s.cardinality=s.maxCount===1?"single":"list",s.required=(s.minCount??0)>=1,s}var Ze="kanonak.org",Kn="core-rdf",Wt="core-xsd",Ir={publisher:Ze,package_:Kn,name:"subClassOf"},Yt={publisher:Ze,package_:Kn,name:"label"},Xt={publisher:Ze,package_:Kn,name:"comment"},Jt={publisher:Ze,package_:"core-owl",name:"oneOf"},Qt=r=>r;function Fr(r,e,n){if(e.publisher===Ze&&e.package_===Kn&&e.name==="Literal")return{kind:"datatype",uri:e};let a=Te(r,e);if(a){let s=Qt(a);if(tn.isDatatypeType(s))return{kind:"datatype",uri:e};if(tn.isClassType(s))return{kind:"class",uri:we(a)??e,localName:a.name}}return e.publisher===Ze&&e.package_===Wt?{kind:"datatype",uri:e}:n==="datatype"?{kind:"datatype",uri:e}:{kind:"class",uri:e,localName:e.name}}function Tr(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=Fr(r,e.range,e.kind),a=e.kind==="object"?"object":e.kind==="datatype"?"datatype":t.kind==="class"?"object":"datatype";return{uri:e.uri,localName:e.uri.name,kind:a,range:t,...e.label!==void 0?{label:e.label}:{},...e.comment!==void 0?{comment:e.comment}:{},...n??{}}}var jn=r=>new yn(Ze,Wt,r);function Pr(r){return typeof r=="boolean"?jn("boolean"):typeof r=="number"?Number.isInteger(r)?jn("integer"):jn("decimal"):jn("string")}function Vr(r,e,n){let t=[];for(let a of vn(e,Jt,r,B(n)))if(a.kind==="subject"||a.kind==="unresolved"){let s=a.kind==="subject"?a.node:void 0,o=(s?we(s):void 0)??a.uri,i=s?xe(s,Yt):void 0,c=s?xe(s,Xt):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:Pr(a.value)});return t}function Rn(r,e,n,t){let a=an(r,e),s=B(e);return vt(r,e).filter(i=>n?!0:i.domains.some(c=>B(c)===s)).map(i=>Tr(r,i,zt(t,a,i.uri)))}async function Yi(r,e,n){let t=r.metadata?.namespace_;if(!t)throw new Error("buildOntologyModel: document has no namespace (publisher/package/version).");let a=n?.includeInherited??!1,s=Array.isArray(e)?e:await new Sn().parseKanonaks(e),o=pn(s),i=p=>p.publisher===t.publisher&&p.package_===t.package_&&!(p.version&&t.version&&!lt(p.version,t.version)),c=[],l=[],d=new Set,f=!1;for(let p of s){if(!(p instanceof Y))continue;let g=we(p);if(!g||!i(g)||(f=!0,!tn.isClassType(Qt(p))))continue;let h=B(g);if(d.has(h))continue;d.add(h);let b=je(p,Ir).map(v=>({uri:v,localName:v.name})),m=xe(p,Yt),y=xe(p,Xt);c.push({uri:g,localName:g.name,superClasses:b,properties:Rn(s,g,a,o),...m!==void 0?{label:m}:{},...y!==void 0?{comment:y}:{}}),un(p,Jt)&&l.push({uri:g,localName:g.name,members:Vr(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 mn(r,e={}){let n=r.replace(/\r\n/g,`
|
|
2
2
|
`).split(`
|
|
3
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):on(f),g=l?` class="language-${
|
|
4
|
+
`),p=l&&e.highlight?e.highlight(l,f):on(f),g=l?` class="language-${ea(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=sn(i[2].trim());t.push(`<h${l}>${d}</h${l}>`),a++;continue}if(s.includes("|")&&a+1<n.length&&Zt(n[a+1])){let l=Wn(s),d=Ar(n[a+1]);a+=2;let f=[];for(;a<n.length&&n[a].trim()!==""&&n[a].includes("|");)f.push(Wn(n[a])),a++;t.push(Mr(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>${sn(d.join(" ").trim())}</li>`)}t.push(`<ul>
|
|
5
5
|
${l.join(`
|
|
6
6
|
`)}
|
|
7
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>${sn(d.join(" ").trim())}</li>`)}t.push(`<ol>
|
|
8
8
|
${l.join(`
|
|
9
9
|
`)}
|
|
10
|
-
</ol>`);continue}let c=[s];for(a++;a<n.length&&n[a].trim()!==""&&!/^(#{1,6})\s+/.test(n[a])&&!/^(\s*)```/.test(n[a])&&!/^\s*[-*]\s+/.test(n[a])&&!/^\s*\d+\.\s+/.test(n[a])&&!(n[a].includes("|")&&a+1<n.length&&
|
|
11
|
-
`)}function
|
|
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&&Zt(n[a+1]));)c.push(n[a]),a++;t.push(`<p>${sn(c.join(" "))}</p>`)}return t.join(`
|
|
11
|
+
`)}function Zt(r){return r.includes("-")?/^[\s|:-]+$/.test(r):!1}function Wn(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 Ar(r){return Wn(r).map(e=>{let n=e.startsWith(":"),t=e.endsWith(":");return n&&t?"center":t?"right":n?"left":null})}function Mr(r,e,n){let t=o=>{let i=e[o];return i?` style="text-align:${i}"`:""},a=r.map((o,i)=>`<th${t(i)}>${sn(o)}</th>`).join(""),s=n.map(o=>`<tr>${o.map((c,l)=>`<td${t(l)}>${sn(c)}</td>`).join("")}</tr>`).join(`
|
|
12
12
|
`);return`<table>
|
|
13
13
|
<thead><tr>${a}</tr></thead>
|
|
14
14
|
<tbody>
|
|
15
15
|
${s}
|
|
16
16
|
</tbody>
|
|
17
|
-
</table>`}function sn(r){let e=on(r);return e=e.replace(/`([^`\n]+)`/g,(n,t)=>`<code>${t}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(n,t,a)=>`<a href="${Jt(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 on(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Jt(r){return r.replace(/"/g,""").replace(/&/g,"&")}import{ExpressionError as Zt,evaluate as Ar,matches as Vr}from"@kanonak-protocol/expression";var Mr={publisher:"kanonak.org",package_:"core-rdf",name:"label"};function Ge(r){return typeof r=="object"&&r!==null&&r.kind==="raw-string"}var ve=class extends Error{},Nr=H(u.DecimalLiteral);function Dr(r){throw new ve(`The expression runtime asked to resolve '${r.type}' inside a numeric operator`)}var gn=class{constructor(e,n,t=new Map){this.resolver=e;this.catalog=n;this.fragments=t}resolver;catalog;fragments;async evaluate(e,n){switch(e.kind){case"string-literal":return e.value;case"integer-literal":return e.value;case"decimal-literal":return e.value;case"boolean-literal":return e.value;case"uri-literal":return{...e.refTo};case"var-ref":{if(!n.has(e.varName))throw new ve(`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 ea(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 ea(t)}case"property-read":{let t=await this.evaluate(e.source,n);return En(t,e.readProp)}case"traverse":{let t=await this.evaluate(e.source,n);if(!(t instanceof Te))return;let a=Hr(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 en(t)?t.name:t instanceof O?t.subject.name:t instanceof Y?t.name:t instanceof D?t.name??"":void 0}case"uri-publisher":{let t=await this.evaluate(e.source,n);return Yn(t)?.publisher}case"uri-package":{let t=await this.evaluate(e.source,n);return Yn(t)?.package_}case"uri-version":{let t=await this.evaluate(e.source,n);return Yn(t)?.version}case"subject-uri":{let t=await this.evaluate(e.source,n);if(t instanceof Y){let a=t.namespace??"",s=t.name??"";return!a||!s?void 0:`${a}/${s}`}if(t instanceof 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?En(t,e.labelSource):void 0}case"resolve-ref":{let t=await this.evaluate(e.source,n);return t instanceof Y?t:t instanceof O?await this.resolver.resolveSubject(t.subject,this.catalog):en(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 Te))return;let a;for(let o of t.statement){let i=Qn(o);if(i&&re(i,e.readProp)){a=o;break}}if(!(a instanceof Ne)){let o=En(t,e.readProp);return o==null?void 0:qe(o)}let s=await this.renderMarkdownLinks(a);return e.format==="html"?mn(s):s}case"build-ast-node":{let t={kind:e.astClass.name};for(let a of e.set){let s=await this.evaluate(a.value,n);if(s==null||Array.isArray(s)&&s.length===0)continue;let o=a.field.name;Gr.has(o)&&(Array.isArray(s)&&s.every(i=>na(i))?s=s.map(i=>ta(i)).join(""):na(s)&&(s=ta(s))),t[o]=s}return t}case"call-fragment":{let t=this.fragments.get(e.fragmentKey);if(!t)throw new ve(`ExpressionFragment ${e.fragmentKey} not found in registry`);return this.evaluate(t,n)}case"join":return(await this.evaluateList(e.source,n)).map(a=>{if(Array.isArray(a))throw new ve("Join cannot stringify a nested list");return 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+=Ze(s,"Sum");return a}case"min":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new ve("Min on an empty list is undefined; guard with IsSet");let a=Ze(t[0],"Min");for(let s=1;s<t.length;s++){let o=Ze(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 ve("Max on an empty list is undefined; guard with IsSet");let a=Ze(t[0],"Max");for(let s=1;s<t.length;s++){let o=Ze(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 ve("Average on an empty list is undefined; guard with IsSet");let a=0;for(let s of t)a+=Ze(s,"Average");return a/t.length}case"for-each":{let t=await this.evaluateList(e.source,n),a=[];for(let s of t){let o=new Map(n);o.set(e.loopVar,ye(s));let i=await this.evaluate(e.emit,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}case"list-map":{let t=await this.evaluateList(e.source,n),a=[];for(let s of t){let o=new Map(n);o.set(e.loopVar,ye(s)),a.push(await this.evaluate(e.mapBody,o))}return a}case"filter":{let t=await this.evaluateList(e.source,n),a=[];for(let s of t){let o=new Map(n);o.set(e.loopVar,ye(s)),await this.evaluate(e.predicate,o)===!0&&a.push(s)}return a}case"partition-by":{let t=await this.evaluateList(e.source,n),a=new Map,s=[];for(let o of t){let i=new Map(n);i.set(e.loopVar,ye(o));let c=await this.evaluate(e.partitionKey,i),l=sa(c),d=a.get(l);d||(d={kind:"Partition",key:c,members:[]},a.set(l,d),s.push(l)),d.members.push(o)}return s.map(o=>a.get(o))}case"distinct-by":{let t=await this.evaluateList(e.source,n),a=new Set,s=[];for(let o of t){let i=new Map(n);i.set(e.loopVar,ye(o));let c=await this.evaluate(e.distinctKey,i),l=sa(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 Te?t.statement:[]}case"statement-predicate":{let t=await this.evaluate(e.source,n);if(Xn(t)){let a=t.predicate;if(a instanceof O)return a}return}case"statement-value":{let t=await this.evaluate(e.source,n);return Xn(t)?Zr(t):void 0}case"date-format":{let t=await this.evaluate(e.source,n),a=t==null?"":qe(t);return a?zr(a,e.format):""}case"number-format":{let t=await this.evaluate(e.source,n),a=t==null?"":qe(t);return a.trim()?Jr(a,e.style,e.fractionDigits,e.currencyCode):""}case"numeric-op":{let t={type:e.type};for(let a of e.operands){let s=Ze(ye(await this.evaluate(a.expr,n)),e.name);t[a.name]={type:Nr,decimalLiteral:s}}try{return Ar(t,void 0,Dr)}catch(a){throw a instanceof Zt?new ve(a.message):a}}case"reverse":{if(e.source.kind==="reverse")return this.evaluate(e.source.source,n);let t=await this.evaluateReverseIterator(e.source,n);return t!==void 0?t:[...await this.evaluateList(e.source,n)].reverse()}case"windowed-map":{let t=await this.evaluateList(e.source,n);if(t.length<e.windowSize)return[];let a=[];for(let s=0;s+e.windowSize<=t.length;s++){let o=t.slice(s,s+e.windowSize),i=new Map(n);i.set(e.windowVar,o);let c=await this.evaluate(e.windowBody,i);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}case"pairwise-map":{let t=await this.evaluateList(e.source,n);if(t.length<2)return[];let a=[];for(let s=0;s+1<t.length;s++){let o=new Map(n);o.set(e.firstVar,ye(t[s])),o.set(e.secondVar,ye(t[s+1]));let i=await this.evaluate(e.pairBody,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}case"scan":{let t=await this.evaluateList(e.source,n);if(t.length===0)return[];let a=await this.evaluate(e.initialState,n),s=[];for(let o of t){let i=new Map(n);i.set(e.stateVar,a),i.set(e.elementVar,ye(o));let c=await this.evaluate(e.accumulate,i);s.push(c),a=c}return s}case"list-item-at":{let t=await this.evaluateList(e.source,n),a=ye(await this.evaluate(e.itemIndex,n));if(typeof a!="number"||!Number.isInteger(a)||a<0)throw new ve("ListItemAt itemIndex must be a non-negative integer");return 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 aa(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(aa(s,a))return!0;return!1}case"matches":{let t=ye(await this.evaluate(e.source,n)),a=Ge(t)?t.value:t;if(typeof a!="string")throw new ve(`Matches requires a string matchSource; got ${oa(a)}`);try{return Vr(a,e.pattern)}catch(s){throw s instanceof Zt?new ve(s.message):s}}case"is-reference":{let t=await this.evaluate(e.check,n);return t instanceof O||t instanceof Y||en(t)}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(!Xn(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 Te)||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 ve("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}](${dt(o)})`}else t+=s.displayText??s.reference;a=s.endOffset}return t+=n.slice(a),t}async resolveLabel(e){let n=await this.resolver.resolveSubject(e,this.catalog);if(!n)return;let t=En(n,Mr);return typeof t=="string"?t:void 0}async evaluateList(e,n){let t=await this.evaluate(e,n);return t==null?[]:Array.isArray(t)?t:[t]}async evaluateReverseIterator(e,n){if(e.kind==="pairwise-map"){let t=await this.evaluateList(e.source,n);if(t.length<2)return[];let a=[];for(let s=t.length-1;s>=1;s--){let o=new Map(n);o.set(e.firstVar,ye(t[s-1])),o.set(e.secondVar,ye(t[s]));let i=await this.evaluate(e.pairBody,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}if(e.kind==="for-each"){let t=await this.evaluateList(e.source,n),a=[];for(let s=t.length-1;s>=0;s--){let o=new Map(n);o.set(e.loopVar,ye(t[s]));let i=await this.evaluate(e.emit,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}if(e.kind==="list-map"){let t=await this.evaluateList(e.source,n),a=[];for(let s=t.length-1;s>=0;s--){let o=new Map(n);o.set(e.loopVar,ye(t[s])),a.push(await this.evaluate(e.mapBody,o))}return a}if(e.kind==="windowed-map"){let t=await this.evaluateList(e.source,n);if(t.length<e.windowSize)return[];let a=[];for(let s=t.length-e.windowSize;s>=0;s--){let o=t.slice(s,s+e.windowSize),i=new Map(n);i.set(e.windowVar,o);let c=await this.evaluate(e.windowBody,i);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}}};function En(r,e){if(r instanceof Te)return Br(r,e);if(qr(r))return re(e,u.key)?r.key:re(e,u.members)?r.members:void 0}function Br(r,e){for(let n of r.statement){let t=Qn(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 Hr(r,e){let n=[];for(let t of r.statement){let a=Qn(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 Qn(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(Ge(r))return r.value;if(r instanceof Te)return r.name??"";if(r instanceof O)return r.subject.name;if(en(r))return r.name;let e=r.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function ye(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)&&!(r instanceof Te)&&!(r instanceof O)&&!(r instanceof D)&&"value"in r?r.value:r}function ea(r){return r==null?!1:typeof r=="string"||Array.isArray(r)?r.length>0:typeof r=="boolean"?r===!0:!0}function en(r){return typeof r=="object"&&r!==null&&typeof r.publisher=="string"&&typeof r.package_=="string"&&typeof r.name=="string"}function qr(r){return typeof r=="object"&&r!==null&&r.kind==="Partition"&&Array.isArray(r.members)}function Ze(r,e){if(typeof r=="number"&&Number.isFinite(r))return r;throw new ve(`${e} requires numeric elements; got ${oa(r)}`)}function Yn(r){if(r instanceof Y){let e=r.namespace??"",n=e.indexOf("/"),t=e.indexOf("@",n+1);return n<0||t<0?void 0:{publisher:e.substring(0,n),package_:e.substring(n+1,t),version:e.substring(t+1),name:r.name??""}}if(r instanceof 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(en(r))return{publisher:r.publisher,package_:r.package_,version:"",name:r.name}}var Gr=new Set(["stringValue","text","rawContent","key","propertyKey","linkLabel"]);function na(r){return typeof r=="string"||typeof r=="number"||typeof r=="boolean"||Ge(r)}function ta(r){return Ge(r)?r.value:String(r)}function oa(r){return r===void 0?"undefined":r===null?"null":Array.isArray(r)?`array(${r.length})`:typeof r}function zr(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 Wr={USD:"$",EUR:"\u20AC",GBP:"\xA3",JPY:"\xA5"},Yr={decimal:0,currency:0,compact:0,percent:2,"basis-points":4};function Xr(r,e){if(e===0)return r;let n=r.startsWith("-"),t=n?r.slice(1):r,a=t.indexOf("."),s=a===-1?t:t.slice(0,a),o=a===-1?"":t.slice(a+1),i=s+o,c=s.length+e,l;return c<=0?l=`0.${"0".repeat(-c)}${i}`:c>=i.length?l=i+"0".repeat(c-i.length):l=`${i.slice(0,c)}.${i.slice(c)}`,l=l.replace(/^0+(?=\d)/,""),n&&/[1-9]/.test(l)?`-${l}`:l}function Qr(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 Jr(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=Xr(s,Yr[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=Wr[i]??`${i} `,l=o.startsWith("-");return`${l?"-":""}${c}${Qr(l?o.slice(1):o)}`}default:return o}}function aa(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=ra(r),i=ra(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 ra(r){if(r instanceof O){let e=r.subject;return{publisher:e.publisher,package_:e.package_,name:e.name}}if(r instanceof Y){let e=r.namespace??"",n=e.indexOf("/"),t=e.indexOf("@",n+1);if(n<0)return;let a=e.substring(0,n),s=t>=0?e.substring(n+1,t):e.substring(n+1);return{publisher:a,package_:s,name:r.name??""}}if(en(r))return{publisher:r.publisher,package_:r.package_,name:r.name}}function Xn(r){return r instanceof ae||r instanceof he||r instanceof ge||r instanceof J||r instanceof le||r instanceof ue}function Zr(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 sa(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 Te){let e=r.name??"";return`k:${r.namespace??""}/${e}`}return en(r)?`u:${r.publisher}/${r.package_}/${r.name}`:`o:${JSON.stringify(r,(e,n)=>e==="sourceKey"?void 0:n)}`}var xn=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=Fe(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 ht(d,this.repository);i=await this.objectParser.parseKanonaks(f),this.cache.set(o,i)}let c=Fe(i,e);if(c)return c;for(let l of i)if(l instanceof Y&&l.name===e.name)return l}};var Ln=class{byLang=new Map;constructor(e){for(let n of e){if(!n.language)continue;let t=[];for(let a of n.rules){if(!a.tokenClass||!a.pattern)continue;let s;try{s=new RegExp(a.pattern,"y")}catch{continue}t.push({tokenClass:a.tokenClass,re:s})}this.byLang.set(n.language,t)}}has(e){return this.byLang.has(e)}highlight(e,n){let t=this.byLang.get(e);return!t||t.length===0?on(n):n.split(`
|
|
17
|
+
</table>`}function sn(r){let e=on(r);return e=e.replace(/`([^`\n]+)`/g,(n,t)=>`<code>${t}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(n,t,a)=>`<a href="${ea(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 on(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function ea(r){return r.replace(/"/g,""").replace(/&/g,"&")}import{ExpressionError as na,evaluate as Nr,matches as Dr}from"@kanonak-protocol/expression";var Br={publisher:"kanonak.org",package_:"core-rdf",name:"label"};function Ae(r){return typeof r=="object"&&r!==null&&r.kind==="raw-string"}var pe=class extends Error{},Hr=B(u.DecimalLiteral);function qr(r){throw new pe(`The expression runtime asked to resolve '${r.type}' inside a numeric operator`)}var gn=class{constructor(e,n,t=new Map){this.resolver=e;this.catalog=n;this.fragments=t}resolver;catalog;fragments;async evaluate(e,n){switch(e.kind){case"string-literal":return e.value;case"integer-literal":return e.value;case"decimal-literal":return e.value;case"boolean-literal":return e.value;case"uri-literal":return{...e.refTo};case"var-ref":{if(!n.has(e.varName))throw new pe(`Unbound variable "${e.varName}"`);return n.get(e.varName)}case"concat":{let t=[];for(let[a,s]of e.parts.entries()){let o=await this.evaluate(s,n);if(o==null)throw Zn(a,s);if(Array.isArray(o))for(let i of o)t.push(i);else t.push(o)}return t}case"fallback":{let t=await this.evaluate(e.primary,n);return ta(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):[];case"is-set":{let t=await this.evaluate(e.check,n);return ta(t)}case"property-read":{let t=await this.evaluate(e.source,n);return t==null?void 0:En(await this.propertyReadSource(t,e.readProp),e.readProp)}case"traverse":{let t=await this.evaluate(e.source,n);if(!(t instanceof Ue))return;let a=zr(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&&Ge(f)!==""){s.push(Ge(f));break}}}return s.join("")}case"uri-name":{let t=await this.evaluate(e.source,n);return ze(t)?t.name:t instanceof U?t.subject.name:t instanceof Y?t.name:t instanceof D?t.name??"":void 0}case"uri-publisher":{let t=await this.evaluate(e.source,n);return Yn(t)?.publisher}case"uri-package":{let t=await this.evaluate(e.source,n);return Yn(t)?.package_}case"uri-version":{let t=await this.evaluate(e.source,n);return Yn(t)?.version}case"subject-uri":{let t=await this.evaluate(e.source,n);if(t instanceof Y){let a=t.namespace??"",s=t.name??"";return!a||!s?void 0:`${a}/${s}`}if(t instanceof U){let a=t.subject,s=a.version;return s&&typeof s.major=="number"?`${a.publisher}/${a.package_}@${s.major}.${s.minor}.${s.patch}/${a.name}`:`${a.publisher}/${a.package_}/${a.name}`}return}case"display-label":{let t=await this.resolver.resolveSubject({...e.labelTarget},this.catalog);return t?En(t,e.labelSource):void 0}case"resolve-ref":{let t=await this.evaluate(e.source,n);return t instanceof Y?t:t instanceof U?await this.resolver.resolveSubject(t.subject,this.catalog):ze(t)?await this.resolver.resolveSubject(t,this.catalog):void 0}case"normalize":{let t=await this.evaluate(e.source,n),a=t==null?"":Ge(t);return e.normKind==="trim-end"?a.replace(/[\s\r\n]+$/u,""):e.normKind==="to-upper"?a.toUpperCase():e.normKind==="to-lower"?a.toLowerCase():e.normKind==="first-char"?a.length===0?"":a.charAt(0):a}case"unescaped-string":{let t=await this.evaluate(e.source,n);return{kind:"raw-string",value:t==null?"":Ge(t)}}case"render-markdown":{let t=await this.evaluate(e.source,n);if(!(t instanceof Ue))return;let a;for(let o of t.statement){let i=Qn(o);if(i&&re(i,e.readProp)){a=o;break}}if(!(a instanceof De)){let o=En(t,e.readProp);return o==null?void 0:Ge(o)}let s=await this.renderMarkdownLinks(a);return e.format==="html"?mn(s):s}case"build-ast-node":{let t={kind:e.astClass.name};for(let a of e.set){let s=await this.evaluate(a.value,n);if(s==null||Array.isArray(s)&&s.length===0)continue;let o=a.field.name;Yr.has(o)&&(Array.isArray(s)&&s.every(i=>aa(i))?s=s.map(i=>ra(i)).join(""):aa(s)&&(s=ra(s))),t[o]=s}return t}case"call-fragment":{let t=this.fragments.get(e.fragmentKey);if(!t)throw new pe(`ExpressionFragment ${e.fragmentKey} not found in registry`);return this.evaluate(t,n)}case"join":{let t=await this.evaluate(e.source,n);if(t==null)throw new pe(`Join: its source (${Jn(e.source)}) has no value.`);return(Array.isArray(t)?t:[t]).map((s,o)=>{if(s==null||Array.isArray(s)&&s.length===0)throw new pe(`Join: element ${o} of its source (${Jn(e.source)}) has no value. Filter the list first if it may have gaps.`);if(Array.isArray(s))throw new pe("Join cannot stringify a nested list");return Ge(s)}).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+=en(s,"Sum");return a}case"min":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new pe("Min on an empty list is undefined; guard with IsSet");let a=en(t[0],"Min");for(let s=1;s<t.length;s++){let o=en(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 pe("Max on an empty list is undefined; guard with IsSet");let a=en(t[0],"Max");for(let s=1;s<t.length;s++){let o=en(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 pe("Average on an empty list is undefined; guard with IsSet");let a=0;for(let s of t)a+=en(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,ve(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,ve(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,ve(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,ve(o));let c=await this.evaluate(e.partitionKey,i),l=ia(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,ve(o));let c=await this.evaluate(e.distinctKey,i),l=ia(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 Ue?t.statement:[]}case"statement-predicate":{let t=await this.evaluate(e.source,n);if(Xn(t)){let a=t.predicate;if(a instanceof U)return a}return}case"statement-value":{let t=await this.evaluate(e.source,n);return Xn(t)?ts(t):void 0}case"date-format":{let t=await this.evaluate(e.source,n),a=t==null?"":Ge(t);return a?Xr(a,e.format):""}case"number-format":{let t=await this.evaluate(e.source,n),a=t==null?"":Ge(t);return a.trim()?ns(a,e.style,e.fractionDigits,e.currencyCode):""}case"numeric-op":{let t={type:e.type};for(let a of e.operands){let s=en(ve(await this.evaluate(a.expr,n)),e.name);t[a.name]={type:Hr,decimalLiteral:s}}try{return Nr(t,void 0,qr)}catch(a){throw a instanceof na?new pe(a.message):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,ve(t[s])),o.set(e.secondVar,ve(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,ve(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=ve(await this.evaluate(e.itemIndex,n));if(typeof a!="number"||!Number.isInteger(a)||a<0)throw new pe("ListItemAt itemIndex must be a non-negative integer");return 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 sa(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(sa(s,a))return!0;return!1}case"matches":{let t=ve(await this.evaluate(e.source,n)),a=Ae(t)?t.value:t;if(typeof a!="string")throw new pe(`Matches requires a string matchSource; got ${la(a)}`);try{return Dr(a,e.pattern)}catch(s){throw s instanceof na?new pe(s.message):s}}case"is-reference":{let t=await this.evaluate(e.check,n);return t instanceof U||t instanceof Y||ze(t)}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(!Xn(t))return;let a=t;return a instanceof ae||a instanceof be||a instanceof ke||a instanceof Q||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 Ue)||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 pe("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}](${pt(o)})`}else t+=s.displayText??s.reference;a=s.endOffset}return t+=n.slice(a),t}async resolveLabel(e){let n=await this.resolver.resolveSubject(e,this.catalog);if(!n)return;let t=En(n,Br);return typeof t=="string"?t:void 0}async propertyReadSource(e,n){if(e instanceof Ue||ca(e))return e;let t=e instanceof U?e.subject:ze(e)?e:void 0;if(t){let a=await this.resolver.resolveSubject(t,this.catalog);if(!a)throw new pe(`PropertyRead of ${n.name}: its source is a reference to ${B(t)}, which does not resolve.`);return a}throw new pe(`PropertyRead of ${n.name}: its source is ${Wr(e)}, not a resource. Read a list's items with ListMap or ForEach.`)}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,ve(t[s-1])),o.set(e.secondVar,ve(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,ve(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,ve(t[s])),a.push(await this.evaluate(e.mapBody,o))}return a}if(e.kind==="windowed-map"){let t=await this.evaluateList(e.source,n);if(t.length<e.windowSize)return[];let a=[];for(let s=t.length-e.windowSize;s>=0;s--){let o=t.slice(s,s+e.windowSize),i=new Map(n);i.set(e.windowVar,o);let c=await this.evaluate(e.windowBody,i);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}}};function En(r,e){if(r instanceof Ue)return Gr(r,e);if(ca(r))return re(e,u.key)?r.key:re(e,u.members)?r.members:void 0}function Gr(r,e){for(let n of r.statement){let t=Qn(n);if(!(!t||!re(t,e))&&(n instanceof ae||n instanceof be||n instanceof ke||n instanceof Q||n instanceof le||n instanceof ue))return n.object}}function zr(r,e){let n=[];for(let t of r.statement){let a=Qn(t);if(!(!a||!re(a,e))){if(t instanceof Q)n.push(t.object.subject);else if(t instanceof ue)for(let s of t.object)s instanceof U&&n.push(s.subject)}}return n}function Qn(r){return r.predicate?.subject}function Ge(r){if(r==null)return"";if(typeof r=="string")return r;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Ae(r))return r.value;if(r instanceof Ue)return r.name??"";if(r instanceof U)return r.subject.name;if(ze(r))return r.name;let e=r.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function ve(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)&&!(r instanceof Ue)&&!(r instanceof U)&&!(r instanceof D)&&"value"in r?r.value:r}function ta(r){return r==null?!1:typeof r=="string"||Array.isArray(r)?r.length>0:typeof r=="boolean"?r===!0:!0}function ze(r){return typeof r=="object"&&r!==null&&typeof r.publisher=="string"&&typeof r.package_=="string"&&typeof r.name=="string"}function Zn(r,e){return new pe(`Concat: part ${r} (${Jn(e)}) has no value. A part that may be absent must say so: wrap it in a When, or give it a Fallback.`)}function Jn(r){switch(r.kind){case"property-read":return`PropertyRead of ${r.readProp.name}`;case"var-ref":return`VarRef ${r.varName}`;case"traverse":return`Traverse through ${r.through.name}`;default:return r.kind}}function Wr(r){return Array.isArray(r)?`a list of ${r.length}`:Ae(r)?"a string":typeof r=="object"&&r!==null?"a literal":`a ${typeof r}`}function ca(r){return typeof r=="object"&&r!==null&&r.kind==="Partition"&&Array.isArray(r.members)}function en(r,e){if(typeof r=="number"&&Number.isFinite(r))return r;throw new pe(`${e} requires numeric elements; got ${la(r)}`)}function Yn(r){if(r instanceof Y){let e=r.namespace??"",n=e.indexOf("/"),t=e.indexOf("@",n+1);return n<0||t<0?void 0:{publisher:e.substring(0,n),package_:e.substring(n+1,t),version:e.substring(t+1),name:r.name??""}}if(r instanceof U){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(ze(r))return{publisher:r.publisher,package_:r.package_,version:"",name:r.name}}var Yr=new Set(["stringValue","text","rawContent","key","propertyKey","linkLabel"]);function aa(r){return typeof r=="string"||typeof r=="number"||typeof r=="boolean"||Ae(r)}function ra(r){return Ae(r)?r.value:String(r)}function la(r){return r===void 0?"undefined":r===null?"null":Array.isArray(r)?`array(${r.length})`:typeof r}function Xr(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 Jr={USD:"$",EUR:"\u20AC",GBP:"\xA3",JPY:"\xA5"},Qr={decimal:0,currency:0,compact:0,percent:2,"basis-points":4};function Zr(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 es(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 ns(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=Zr(s,Qr[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=Jr[i]??`${i} `,l=o.startsWith("-");return`${l?"-":""}${c}${es(l?o.slice(1):o)}`}default:return o}}function sa(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=oa(r),i=oa(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 oa(r){if(r instanceof U){let e=r.subject;return{publisher:e.publisher,package_:e.package_,name:e.name}}if(r instanceof Y){let e=r.namespace??"",n=e.indexOf("/"),t=e.indexOf("@",n+1);if(n<0)return;let a=e.substring(0,n),s=t>=0?e.substring(n+1,t):e.substring(n+1);return{publisher:a,package_:s,name:r.name??""}}if(ze(r))return{publisher:r.publisher,package_:r.package_,name:r.name}}function Xn(r){return r instanceof ae||r instanceof be||r instanceof ke||r instanceof Q||r instanceof le||r instanceof ue}function ts(r){return r instanceof ae||r instanceof be||r instanceof ke?String(r.object??""):r instanceof Q?r.object?.subject?.name??"":r instanceof le?"[embedded]":r instanceof ue?(r.object??[]).map(n=>{if(n instanceof U)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 ia(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 U){let e=r.subject;return`r:${e.publisher}/${e.package_}/${e.name}`}if(r instanceof Ue){let e=r.name??"";return`k:${r.namespace??""}/${e}`}return ze(r)?`u:${r.publisher}/${r.package_}/${r.name}`:`o:${JSON.stringify(r,(e,n)=>e==="sourceKey"?void 0:n)}`}var xn=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 yt(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 Y&&l.name===e.name)return l}};var Ln=class{byLang=new Map;constructor(e){for(let n of e){if(!n.language)continue;let t=[];for(let a of n.rules){if(!a.tokenClass||!a.pattern)continue;let s;try{s=new RegExp(a.pattern,"y")}catch{continue}t.push({tokenClass:a.tokenClass,re:s})}this.byLang.set(n.language,t)}}has(e){return this.byLang.has(e)}highlight(e,n){let t=this.byLang.get(e);return!t||t.length===0?on(n):n.split(`
|
|
18
18
|
`).map(a=>this.highlightLine(a,t)).join(`
|
|
19
|
-
`)}highlightLine(e,n){let t="",a=0;for(;a<e.length;){let s=!1;for(let o of n){o.re.lastIndex=a;let i=o.re.exec(e);if(i&&i[0].length>0){t+=`<span class="kan-tok-${o.tokenClass}">${on(i[0])}</span>`,a+=i[0].length,s=!0;break}}s||(t+=on(e[a]),a++)}return t}};var
|
|
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}">${on(i[0])}</span>`,a+=i[0].length,s=!0;break}}s||(t+=on(e[a]),a++)}return t}};var Tn={publisher:"kanonak.org",package_:"derivation",name:"look"},Pn={publisher:"kanonak.org",package_:"derivation",name:"tokens"},Ce={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},et={publisher:"kanonak.org",package_:"core-rdf",name:"label"},ua={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},as={publisher:"kanonak.org",package_:"core-rdf",name:"range"},rs={publisher:"kanonak.org",package_:"core-rdf",name:"Class"},ss={publisher:"kanonak.org",package_:"core-owl",name:"Class"},os={publisher:"kanonak.org",package_:"look",name:"Hero"},is={publisher:"kanonak.org",package_:"look",name:"PropertyList"},cs={publisher:"kanonak.org",package_:"look",name:"PropertyTable"},ls={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},us={publisher:"kanonak.org",package_:"look",name:"ChipRow"},ds={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},fs={publisher:"kanonak.org",package_:"look",name:"ReferencedBy"},ps={publisher:"kanonak.org",package_:"look",name:"Instances"},da={publisher:"kanonak.org",package_:"look",name:"Markdown"},ms={publisher:"kanonak.org",package_:"look",name:"NavGroup"},gs={publisher:"kanonak.org",package_:"look",name:"nav"},nt={publisher:"kanonak.org",package_:"look",name:"NavLink"},ks={publisher:"kanonak.org",package_:"look",name:"footer"},hs={publisher:"kanonak.org",package_:"look",name:"text"},bs={publisher:"kanonak.org",package_:"look",name:"links"},fa={publisher:"kanonak.org",package_:"look",name:"target"},ys={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},vs={publisher:"kanonak.org",package_:"look",name:"Timeline"},$s={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},Ss={publisher:"kanonak.org",package_:"look",name:"Figure"},ws={publisher:"kanonak.org",package_:"look",name:"Diagram"},_s={publisher:"kanonak.org",package_:"look",name:"facets"},js={publisher:"kanonak.org",package_:"look",name:"relation"},Ks={publisher:"kanonak.org",package_:"look",name:"encode"},Rs={publisher:"kanonak.org",package_:"look",name:"cluster"},Es={publisher:"kanonak.org",package_:"look",name:"connector"},xs={publisher:"kanonak.org",package_:"look",name:"channels"},Ls={publisher:"kanonak.org",package_:"look",name:"mapPath"},Cs={publisher:"kanonak.org",package_:"look",name:"to"},Us={publisher:"kanonak.org",package_:"look",name:"mark"},Os={publisher:"kanonak.org",package_:"look",name:"expand"},Is={publisher:"kanonak.org",package_:"look",name:"edges"},pa={publisher:"kanonak.org",package_:"look",name:"nodeTier"},Fs={publisher:"kanonak.org",package_:"look",name:"diagramTier"},Ts={publisher:"kanonak.org",package_:"look",name:"nodeNote"},Ps={publisher:"kanonak.org",package_:"look",name:"Sequence"},Vs={publisher:"kanonak.org",package_:"look",name:"numbered"},As={publisher:"kanonak.org",package_:"look",name:"EntityRelationship"},Ms={publisher:"kanonak.org",package_:"core-owl",name:"SymmetricProperty"},Ns={publisher:"kanonak.org",package_:"core-owl",name:"FunctionalProperty"},Ds={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},Bs={publisher:"kanonak.org",package_:"look",name:"edgeLabel"},Hs={publisher:"kanonak.org",package_:"look",name:"labelEdges"},qs={publisher:"kanonak.org",package_:"look",name:"edgeValue"},Gs={publisher:"kanonak.org",package_:"look",name:"figureTitle"},zs={publisher:"kanonak.org",package_:"look",name:"titlePosition"},Ws=`(function(){
|
|
20
20
|
if(window.__kanDiagramZoom)return;window.__kanDiagramZoom=1;
|
|
21
21
|
var TIERS=['chip','icon','card','full'];
|
|
22
22
|
var css='.kan-dgm-tier[hidden]{display:none}.kan-dgm-tiers{position:relative}'
|
|
@@ -62,7 +62,7 @@ var b=document.createElement('button');b.type='button';b.className='kan-dgm-btn'
|
|
|
62
62
|
b.style.cssText='position:absolute;top:6px;right:6px;z-index:3;border:1px solid var(--kan-border,#333);background:var(--kan-bg-card,#111);color:var(--kan-text,#ccc);border-radius:6px;width:28px;height:28px;cursor:pointer;font-size:15px;line-height:1;padding:0';
|
|
63
63
|
b.addEventListener('click',function(ev){ev.preventDefault();ev.stopPropagation();open(c);});c.appendChild(b);})(cs[i]);}}
|
|
64
64
|
if(document.readyState!=='loading')enhance();else document.addEventListener('DOMContentLoaded',enhance);
|
|
65
|
-
})();`,
|
|
65
|
+
})();`,Me={chip:56,icon:120,card:240,full:420},Ys=["chip","icon","card","full"],Xs={56:"chip",120:"icon",240:"card",420:"full"},de=11,Js={publisher:"kanonak.org",package_:"look",name:"placement"},Qs={publisher:"kanonak.org",package_:"look",name:"width"},Zs=4,eo={publisher:"kanonak.org",package_:"look",name:"StatRow"},no={publisher:"kanonak.org",package_:"look",name:"Horizon"},to={publisher:"kanonak.org",package_:"look",name:"PackageContents"},tt={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},ao={publisher:"kanonak.org",package_:"core-kanonak",name:"Publisher"},ro={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},so={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},oo={publisher:"kanonak.org",package_:"look",name:"packages"},io={publisher:"kanonak.org",package_:"code-grammars",name:"CodeGrammar"},co={publisher:"kanonak.org",package_:"code-grammars",name:"language"},lo={publisher:"kanonak.org",package_:"code-grammars",name:"rule"},uo={publisher:"kanonak.org",package_:"code-grammars",name:"tokenClass"},fo={publisher:"kanonak.org",package_:"code-grammars",name:"pattern"},po={publisher:"kanonak.org",package_:"look",name:"Links"},mo={publisher:"kanonak.org",package_:"link",name:"url"},go={publisher:"kanonak.org",package_:"link",name:"links"};var ko={publisher:"kanonak.org",package_:"look",name:"Distribution"},ho={publisher:"kanonak.org",package_:"look",name:"alphaPath"},bo={publisher:"kanonak.org",package_:"look",name:"betaPath"},at={publisher:"kanonak.org",package_:"look",name:"SectionHeading"},yo={publisher:"kanonak.org",package_:"look",name:"SectionNav"},ma={publisher:"kanonak.org",package_:"look",name:"heading"},vo={publisher:"kanonak.org",package_:"look",name:"note"},$o={publisher:"kanonak.org",package_:"look",name:"VersionDelta"},So={publisher:"kanonak.org",package_:"look",name:"TimePlot"},wo={publisher:"kanonak.org",package_:"look",name:"Details"},_o={publisher:"kanonak.org",package_:"look",name:"EmbeddedViews"},jo={publisher:"kanonak.org",package_:"look",name:"ResourceCount"},Ko={publisher:"kanonak.org",package_:"look",name:"counts"},Ro={publisher:"kanonak.org",package_:"look",name:"skip"},ga={publisher:"kanonak.org",package_:"derivation",name:"derivations"},Eo={publisher:"kanonak.org",package_:"look",name:"laneBy"},xo={publisher:"kanonak.org",package_:"look",name:"stats"},Lo={publisher:"kanonak.org",package_:"look",name:"statPath"},Co={publisher:"kanonak.org",package_:"look",name:"statLabel"},ka={publisher:"kanonak.org",package_:"look",name:"labelPath"},Uo={publisher:"kanonak.org",package_:"look",name:"badgePath"},ha={publisher:"kanonak.org",package_:"look",name:"BarMeter"},Oo={publisher:"kanonak.org",package_:"look",name:"cellAs"},Io={publisher:"kanonak.org",package_:"look",name:"variants"},Fo={publisher:"kanonak.org",package_:"look",name:"when"},To={publisher:"kanonak.org",package_:"look",name:"property"},ba={publisher:"kanonak.org",package_:"look",name:"equals"},Po={publisher:"kanonak.org",package_:"look",name:"ResourceQuery"},Vo={publisher:"kanonak.org",package_:"look",name:"ofClass"},Ao={publisher:"kanonak.org",package_:"look",name:"direction"},Mo={publisher:"kanonak.org",package_:"look",name:"limit"},Cn={publisher:"kanonak.org",package_:"look",name:"orderBy"},ya={publisher:"kanonak.org",package_:"look",name:"track"},kn={publisher:"kanonak.org",package_:"look",name:"metricPath"},rt={publisher:"kanonak.org",package_:"look",name:"hueBy"},va={publisher:"kanonak.org",package_:"look",name:"lowerPath"},$a={publisher:"kanonak.org",package_:"look",name:"upperPath"},No={publisher:"kanonak.org",package_:"look",name:"axisMin"},Do={publisher:"kanonak.org",package_:"look",name:"axisMax"},Bo={publisher:"kanonak.org",package_:"look",name:"valueLabel"};var Sa={publisher:"kanonak.org",package_:"look",name:"semanticSvg"},Ho={publisher:"kanonak.org",package_:"look",name:"tierChip"},qo={publisher:"kanonak.org",package_:"look",name:"tierIcon"},Go={publisher:"kanonak.org",package_:"look",name:"tierCard"},zo={publisher:"kanonak.org",package_:"look",name:"tierFull"},We={publisher:"kanonak.org",package_:"core-rdf",name:"type"},ct={publisher:"kanonak.org",package_:"core-rdf",name:"subClassOf"},wa=6,Wo={publisher:"kanonak.org",package_:"look",name:"bands"},Yo={publisher:"kanonak.org",package_:"look",name:"title"},Xo={publisher:"kanonak.org",package_:"look",name:"eyebrow"},Jo={publisher:"kanonak.org",package_:"look",name:"subtitle"},_a={publisher:"kanonak.org",package_:"look",name:"badges"},me={publisher:"kanonak.org",package_:"look",name:"source"},Qo={publisher:"kanonak.org",package_:"look",name:"via"},Zo={publisher:"kanonak.org",package_:"look",name:"size"},ei={publisher:"kanonak.org",package_:"look",name:"icon"},ni={publisher:"kanonak.org",package_:"look",name:"avatar"},ti={publisher:"kanonak.org",package_:"look",name:"contents"},ai={publisher:"kanonak.org",package_:"look",name:"transitive"},ri={publisher:"kanonak.org",package_:"look",name:"chips"},ja={publisher:"kanonak.org",package_:"look",name:"entries"},si={publisher:"kanonak.org",package_:"look",name:"urlForm"},An=class r{constructor(e){this.catalog=e}catalog;linkMode="single-publisher";setLinkMode(e){return this.linkMode=e,this}expressionFailureList=[];expressionFailureSeen=new Set;expressionFailures(){return this.expressionFailureList}noteExpressionFailure(e,n,t){let a=t instanceof Error?t.message:String(t),s=`${e}\0${n}\0${a}`;this.expressionFailureSeen.has(s)||(this.expressionFailureSeen.add(s),this.expressionFailureList.push({carrier:e,stage:n,reason:a}));let o=i=>i.replace(/-{2,}/g,"\u2013").replace(/-$/,"");return`<!-- LookRenderer: expression carrier "${o(e)}" ${n==="compile"?"did not compile":"failed to evaluate"}: ${o(a)} 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 $t.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=ci(e)?void 0:Un(e);return n?{declaration:n,sourceClass:{publisher:ie(e),package_:this.uriOf(e).package_,name:e.name}}:this.lookFromTypeRefs($e(e))}lookFromTypeRefs(e){let n=new Set,t=[...e];for(;t.length>0;){let s=t.shift().subject,o=J(s);if(n.has(o))continue;n.add(o);let i=oe(this.catalog,s);for(let c of i){let l=Un(c);if(l)return{declaration:l,sourceClass:{publisher:s.publisher,package_:s.package_,name:s.name}}}for(let c of i)for(let l of In(c))t.push(l)}if(!n.has(J(Ce)))for(let a of oe(this.catalog,Ce)){let s=Un(a);if(s)return{declaration:s,sourceClass:{...Ce}}}}matchingVariants(e){let n=this.findCascadedLook(e);if(!n)return[];let t=this.valueItems(n.declaration,Io).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,Fo);if(!c)continue;let l=H(c,To);if(!l)continue;let d=H(c,ba);if(d){this.valueItems(e,l).filter(g=>g instanceof U).some(g=>J(g.subject)===J(d))&&o.push({variant:i,declaredBy:s});continue}let f=Z(c,ba);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 oi(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=$e(e);for(;s.length>0;){let i=s.shift(),c=J(i.subject);if(a.has(c))continue;a.add(c);let l=c===J(Ce)?"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 In(f))s.push(p)}}let o=ie(e);if(o){let i=this.publisherSubject(o);i!==e&&t(i,"publisher")}if(!a.has(J(Ce))){let i=oe(this.catalog,Ce);for(let c of i)t(c,"resource-floor")}return n}async renderSvg(e){let n=G(this.catalog,e).label,t=(n.trim().charAt(0)||"?").toUpperCase(),a=`${e.namespace??""}/${e.name}`,s=this.collectCascadedSvgTiers(e),o=new Map([["input",e],["label",n],["firstLetter",t],["uri",a],["resourceKey",e.name]]),i=await this.evaluateTier(s.tierChip,o),c=await this.evaluateTier(s.tierIcon,o),l=await this.evaluateTier(s.tierCard,o),d=await this.evaluateTier(s.tierFull,o),p=[...this.findCascadedTokens(e)].map(([g,h])=>`--kan-${g}: ${h};`).join(" ");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" style="${Ie(p)}">
|
|
66
66
|
<style>
|
|
67
67
|
.tier-chip,.tier-icon,.tier-card{display:none}
|
|
68
68
|
.tier-full{display:block}
|
|
@@ -74,13 +74,13 @@ if(document.readyState!=='loading')enhance();else document.addEventListener('DOM
|
|
|
74
74
|
<g class="tier-icon">${c}</g>
|
|
75
75
|
<g class="tier-card">${l}</g>
|
|
76
76
|
<g class="tier-full">${d}</g>
|
|
77
|
-
</svg>`}resolverInstance;expressionResolver(){if(!this.resolverInstance){let e=new
|
|
77
|
+
</svg>`}resolverInstance;expressionResolver(){if(!this.resolverInstance){let e=new ft,n=new dt(e);this.resolverInstance=new xn(n,e,new Sn(e))}return this.resolverInstance}async evaluateTier(e,n){if(!e)return"";let t;try{t=qe(e,"semanticSvg-tier",{catalog:this.catalog,depth:0})}catch(s){return this.noteExpressionFailure("look.semanticSvg tier","compile",s)}let a=new gn(this.expressionResolver(),this.catalog);try{if(t.kind==="concat"){let o=[];for(let[i,c]of t.parts.entries()){let l=await a.evaluate(c,n);if(l==null)throw Zn(i,c);o.push(Ea(c.kind,l))}return o.join("")}let s=await a.evaluate(t,n);return Ea(t.kind,s)}catch(s){return this.noteExpressionFailure("look.semanticSvg tier","evaluate",s)}}async evaluateCarrier(e,n){if(!e)return;let t;try{t=qe(e,"look-carrier",{catalog:this.catalog,depth:0})}catch(c){this.noteExpressionFailure("look band path carrier","compile",c);return}let a=new gn(this.expressionResolver(),this.catalog),s=new Map([["input",n]]),o;try{o=await a.evaluate(t,s)}catch(c){this.noteExpressionFailure("look band path carrier","evaluate",c);return}let i=Ua(o);return i===""?void 0:i}async evaluateCarrierNum(e,n){let t=await this.evaluateCarrier(e,n);return t===void 0?NaN:parseFloat(t)}readEmbeddedCarrier(e,n){let t=Ke(e,n);return t instanceof 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=G(this.catalog,a);if(s.label!==a.name)return s.label}return n.name}collectCascadedSvgTiers(e){let n={},t=c=>{let l=Ke(c,Sa);if(!(l instanceof le))return;let d=l.object,f=On(d,Ho),p=On(d,qo),g=On(d,Go),h=On(d,zo);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=$e(e);for(;i.length>0;){let c=i.shift(),l=J(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 In(f))i.push(p)}}if(!o.has(J(Ce)))for(let c of oe(this.catalog,Ce))t(c);return n}renderStylesheet(e){let n=this.explainStylesheet(e),t=[];for(let[o,i]of n.tokens)t.push(` --kan-${o}: ${i.value};`);let a=t.length>0?`:root {
|
|
78
78
|
${t.join(`
|
|
79
79
|
`)}
|
|
80
|
-
}`:":root { /* no tokens resolved */ }",s=n.baseStylesheet.css??"";return`${
|
|
80
|
+
}`:":root { /* no tokens resolved */ }",s=n.baseStylesheet.css??"";return`${li(n)}
|
|
81
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 Y)||f.name!=="base-stylesheet")continue;let p=f.namespace||"";if(p.startsWith(`${e}/look-styles@`)){a.push(p);let g=t(f);g&&(!o||hn(g,o)>0)&&(s=f,o=g)}else if(p.startsWith("kanonak.org/look-styles@")){a.push(p);let g=t(f);g&&(!c||hn(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=
|
|
83
|
-
`)}applyBandPlacement(e,n){let t=Z(e,
|
|
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 Y)||f.name!=="base-stylesheet")continue;let p=f.namespace||"";if(p.startsWith(`${e}/look-styles@`)){a.push(p);let g=t(f);g&&(!o||hn(g,o)>0)&&(s=f,o=g)}else if(p.startsWith("kanonak.org/look-styles@")){a.push(p);let g=t(f);g&&(!c||hn(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=st(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=cn(i);c&&X(c,at)&&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,Js);if(t!=="floatLeft"&&t!=="floatRight")return n;let a=t==="floatLeft"?"left":"right",s=Z(e,Qs),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=cn(t);if(!a||!X(a,at))continue;let s=Z(t,ma);s&&n.push({slug:xa(s),label:s})}return n}publisherSubject(e){for(let t of this.catalog){if(!(t instanceof Y)||ie(t)!==e||!$e(t).some(s=>X(s.subject,ao)))continue;return oe(this.catalog,{publisher:e,package_:this.uriOf(t).package_,name:t.name})[0]??t}let n=new Y;return n.namespace=e,n.name=e,n.statement=[Q.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===Ce.publisher&&a.package_===Ce.package_&&a.name===Ce.name||a.publisher===tt.publisher&&a.package_===tt.package_&&a.name===tt.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
84
|
`),c=`<header class="kan-hero">
|
|
85
85
|
<span class="kan-hero-eyebrow">PACKAGE</span>
|
|
86
86
|
<h1 class="kan-hero-title">${k(e)}</h1>
|
|
@@ -121,35 +121,35 @@ ${o}${t}
|
|
|
121
121
|
${l}
|
|
122
122
|
</body>
|
|
123
123
|
</html>
|
|
124
|
-
`}hasSvgDerivation(e){let n=new Set,t=$e(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,fa))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 In(o))t.push(i)}}return!1}static BAND_DISPATCH=[[ko,(e,n)=>e.renderSectionNav(n.sections)],[as,(e,n)=>e.renderHero(n.band,n.instance,n.contextPublisher)],[rs,(e,n)=>e.renderPropertyList(n.band,n.instance,n.contextPublisher)],[ss,(e,n)=>e.renderPropertyTable(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[os,(e,n)=>e.renderBadgeRow(n.band,n.instance,n.contextPublisher)],[is,(e,n)=>e.renderChipRow(n.band,n.instance,n.contextPublisher)],[cs,(e,n)=>e.renderReferenceList(n.band,n.instance,n.contextPublisher)],[ls,(e,n)=>e.renderReferencedBy(n.band,n.instance,n.contextPublisher)],[us,(e,n)=>e.renderInstances(n.band,n.instance,n.contextPublisher)],[ca,(e,n)=>e.renderMarkdown(n.band,n.instance,n.contextPublisher)],[lo,(e,n)=>e.renderLinks(n.band,n.instance)],[ds,(e,n)=>e.renderNavGroup(n.instance,n.contextPublisher)],[ks,(e,n)=>e.renderResourceGrid(n.band,n.contextPublisher,n.instance)],[hs,(e,n)=>e.renderTimeline(n.band,n.contextPublisher)],[bs,(e,n)=>e.renderVersionDiff(n.band,n.contextPublisher)],[ys,(e,n)=>e.renderFigure(n.band,n.instance,n.contextPublisher)],[vs,(e,n)=>e.renderDiagram(n.band,n.instance,n.contextPublisher)],[Is,(e,n)=>e.renderSequence(n.band,n.instance,n.contextPublisher)],[Fs,(e,n)=>e.renderEntityRelationship(n.band,n.instance,n.contextPublisher)],[Qs,(e,n)=>e.renderStatRow(n.band,n.instance)],[Js,(e,n)=>e.renderHorizon(n.band,n.instance,n.contextPublisher)],[Zs,(e,n)=>e.renderPackageContents(n.instance,n.contextPublisher)],[no,(e,n)=>e.renderFeaturedResource(n.band,n.contextPublisher)],[to,(e,n)=>e.renderPublisherPackages(n.band,n.contextPublisher)],[po,(e,n)=>e.renderDistribution(n.band,n.instance)],[nt,(e,n)=>e.renderSectionHeading(n.band)],[bo,(e,n)=>e.renderVersionDelta(n.band,n.instance)],[yo,(e,n)=>e.renderTimePlot(n.band,n.instance,n.contextPublisher)],[vo,(e,n)=>e.renderDetails(n.band,n.instance,n.contextPublisher)],[$o,(e,n)=>e.renderEmbeddedViews(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[So,(e,n)=>e.renderResourceCount(n.band,n.contextPublisher)],[ma,(e,n)=>e.renderBarMeter(n.band,n.instance)]];static bandDispatchUris(){return r.BAND_DISPATCH.map(([e])=>e)}uriOf(e){let n=we(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=cn(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:G(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,kn),s=B(e,ka);if(!s||!a)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let o=B(e,Cn),i=this.readEmbeddedCarrier(e,tt),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(F=>F!==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 F=E>0?"up":"down",L=E>0?"\u25B2":"\u25BC";K=`<span class="kan-vdiff-delta ${F}">${E>0?"+":""}${E.toFixed(2)} ${L}</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=G(this.catalog,a).label,c=Z(e,Xo);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,$s).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,Ss);if(!b){i.push("<!-- LookRenderer.Diagram: facet has no resolvable look.relation -->");continue}let m=B(h,ws),y=this.resolveFacetNodes(n,b);if(y.length===0){i.push(`<!-- LookRenderer.Diagram: relation ${b.publisher}/${b.package_}/${b.name} resolved to 0 instances -->`);continue}let v=await this.resolveFacetChannels(h,y),E=Ke(h,xs),K=E instanceof le&&E.object instanceof D?E.object:void 0,U=Z(h,ua),F=U&&Ve[U]!==void 0?Ve[U]:void 0,L=F??this.classTierSize(y),S=zs[L??Ve.icon]??"icon",W=this.readEmbeddedCarrier(h,Os),P=B(h,Ls),A=P?ee(this.catalog,P):void 0;if(A){i.push(await this.renderDiagramExpand(y,A,t,a,s,W,F));continue}if(m&&X(m,js)){let x=B(h,Cs),j=this.facetEdgeLabel(h,x??b),N=this.readEmbeddedCarrier(h,Ds);i.push(await this.embedTiers(S,R=>x?this.renderDiagramDag(y,x,v,t,R,j,N):this.renderDiagramConnector(n,y,v,t,R,j,N)));continue}if(m&&!X(m,_s)){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,L)}</div></div>`:await this.embedTiers(S,x=>this.renderDiagramCluster(y,v,void 0,t,x)))}let c=Z(e,Bs),l=Z(e,Hs),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>${qs}</script>`),`<section class="kan-diagram">${f}${i.join("")}${p}${g}</section>`}async embedTiers(e,n){let t=[];for(let a of Gs){let s=await n(Ve[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<Xs&&!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=G(this.catalog,e).label,c=a?await this.evaluateCarrier(a,e):void 0,l=c!==void 0?`<span class="kan-diagram-node-note" style="display:block;font-size:0.8em;color:var(--kan-text-dim)">${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 $e(t)){let s=ee(this.catalog,a.subject);if(!s)continue;let o=Z(s,Us),i=o?Ve[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,Ks).filter(s=>s instanceof D),a=[];for(let s of t){let o=this.readEmbeddedCarrier(s,Rs),i=Z(s,Es);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,Ms);if(t)return t;if(ri(e,Ns)&&n){let s=ee(this.catalog,n);if(s)return G(this.catalog,s).label}}async edgeText(e,n,t){let a=t&&n?await this.evaluateCarrier(t,n):void 0,s=[e,a].filter(o=>!!o);return s.length?s.join(" "):void 0}edgeLabelEl(e,n,t){return`<text x="${e.toFixed(1)}" y="${n.toFixed(1)}" text-anchor="middle" class="kan-diagram-edge-label" style="font-size:11px;paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px;fill:var(--kan-text-dim)">${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=G(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++}`,F=[],L=[],S=[];for(let P=0;P<n.length;P++){let A=n[P],x=f+P*(c+l),j=v+c,N=E+c/2,R=K-de,I=x+c/2,T=(j+K)/2,$=p?1.5+p.norm[P]*5.5:2,V=g?.4+g.norm[P]*.6:1,z=g?` stroke-opacity="${V.toFixed(2)}"`:"";F.push(`<path d="M${j.toFixed(1)},${N.toFixed(1)} C${T.toFixed(1)},${N.toFixed(1)} ${T.toFixed(1)},${I.toFixed(1)} ${R.toFixed(1)},${I.toFixed(1)}" class="kan-diagram-edge" fill="none" stroke="var(--kan-border)" stroke-width="${$.toFixed(1)}"${z} marker-end="url(#${U})"/>`);let C=await this.edgeText(o,A,i);C&&L.push(this.edgeLabelEl((j+K)/2,(N+I)/2-5,C)),S.push(this.diagramTile(A,K,x,c,a,g?V:1))}let W=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)")}${F.join("")}${L.join("")}${W}${S.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(($,V)=>[$.name,V])),g=new Set(e.map($=>$.name)),h=new Map(e.map($=>[$.name,[]])),b=new Map(e.map($=>[$.name,[]]));for(let $ of e)for(let V of this.readPropertyValueReferences($,n)){let z=V.subject.name;z!==$.name&&g.has(z)&&(h.get($.name).push(z),b.get(z).push($.name))}let m=new Map,y=new Set,v=$=>{let V=m.get($);if(V!==void 0)return V;if(y.has($))return 0;y.add($);let z=0;for(let C of b.get($)??[])z=Math.max(z,v(C)+1);return y.delete($),m.set($,z),z};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 F=Math.max(1,...U.map($=>$.length)),L=!1;for(let[$,V]of h)for(let z of V)m.get(z)<=m.get($)&&(L=!0);let S=L?84:0,W=F*c+(F-1)*d,P=f*2+(K+1)*c+K*l,A=f*2+S+W,x=new Map;U.forEach(($,V)=>{let z=$.length*c+($.length-1)*d,C=f+S+(W-z)/2;$.forEach((M,fe)=>x.set(M.name,{x:f+V*(c+l),y:C+fe*(c+d)}))});let j=t.find($=>$.to==="thickness"),N=`kan-arrow-${this.diagramArrowSeq++}`,R=[],I=[];for(let[$,V]of h){let z=x.get($);for(let C of V){let M=x.get(C),fe=M.x>=z.x,se=j?1.5+j.norm[p.get($)]*4.5:2,ne,ce,te;if(fe){let me=z.x+c,We=z.y+c/2,Ie=M.x-de,ln=M.y+c/2,nn=(me+Ie)/2;ne=`M${me.toFixed(1)},${We.toFixed(1)} C${nn.toFixed(1)},${We.toFixed(1)} ${nn.toFixed(1)},${ln.toFixed(1)} ${Ie.toFixed(1)},${ln.toFixed(1)}`,ce=(me+Ie)/2,te=(We+ln)/2-5}else{let me=z.x+c/2,We=z.y,Ie=M.x+c/2,ln=M.y-de,nn=f+S*.2;ne=`M${me.toFixed(1)},${We.toFixed(1)} C${me.toFixed(1)},${nn.toFixed(1)} ${Ie.toFixed(1)},${nn.toFixed(1)} ${Ie.toFixed(1)},${ln.toFixed(1)}`,ce=(me+Ie)/2,te=nn+4}let Re=fe?"":' stroke-dasharray="6 4"';R.push(`<path d="${ne}" class="kan-diagram-edge" fill="none" stroke="var(--kan-accent)" stroke-width="${se.toFixed(1)}" stroke-opacity="0.75"${Re} marker-end="url(#${N})"/>`);let Se=await this.edgeText(o,e[p.get($)],i);Se&&I.push(this.edgeLabelEl(ce,te,Se))}}let T=e.map($=>{let V=x.get($.name);return this.diagramTile($,V.x,V.y,c,a)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${P.toFixed(0)} ${A.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(N,"var(--kan-accent)")}${R.join("")}${I.join("")}${T}</svg></figure>`}static SEQ_COL_GAP=70;static SEQ_ROW=46;static SEQ_PAD=20;subjectFor(e){return oe(this.catalog,e)[0]}async renderSequence(e,n,t){let a=zn(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 S of a.strayPropertyRefs)s.push(`<!-- LookRenderer.Sequence: prose references property ${S.publisher}/${S.package_}/${S.name}, which is not a declared connector; ignored -->`);for(let S of a.gaps)s.push(`<!-- LookRenderer.Sequence: prose orders ${S.prev.name} then ${S.next.name}, but no declared connector holds between them in the graph \u2014 no message drawn. -->`);let{messages:o,lifelines:i}=a,c=Ae;if(i.length===0)return`${s.join(`
|
|
124
|
+
`}hasSvgDerivation(e){let n=new Set,t=$e(e);for(;t.length>0;){let a=t.shift(),s=J(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,ga))if(i instanceof D)for(let c of i.statement){if(!(c instanceof Q)||!Ne(c,"kanonak.org","derivation","format")||!(c.object instanceof U))continue;let l=c.object.subject;if(l.publisher==="kanonak.org"&&l.package_==="formats"&&l.name==="svg")return!0}for(let i of In(o))t.push(i)}}return!1}static BAND_DISPATCH=[[yo,(e,n)=>e.renderSectionNav(n.sections)],[os,(e,n)=>e.renderHero(n.band,n.instance,n.contextPublisher)],[is,(e,n)=>e.renderPropertyList(n.band,n.instance,n.contextPublisher)],[cs,(e,n)=>e.renderPropertyTable(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[ls,(e,n)=>e.renderBadgeRow(n.band,n.instance,n.contextPublisher)],[us,(e,n)=>e.renderChipRow(n.band,n.instance,n.contextPublisher)],[ds,(e,n)=>e.renderReferenceList(n.band,n.instance,n.contextPublisher)],[fs,(e,n)=>e.renderReferencedBy(n.band,n.instance,n.contextPublisher)],[ps,(e,n)=>e.renderInstances(n.band,n.instance,n.contextPublisher)],[da,(e,n)=>e.renderMarkdown(n.band,n.instance,n.contextPublisher)],[po,(e,n)=>e.renderLinks(n.band,n.instance)],[ms,(e,n)=>e.renderNavGroup(n.instance,n.contextPublisher)],[ys,(e,n)=>e.renderResourceGrid(n.band,n.contextPublisher,n.instance)],[vs,(e,n)=>e.renderTimeline(n.band,n.contextPublisher)],[$s,(e,n)=>e.renderVersionDiff(n.band,n.contextPublisher)],[Ss,(e,n)=>e.renderFigure(n.band,n.instance,n.contextPublisher)],[ws,(e,n)=>e.renderDiagram(n.band,n.instance,n.contextPublisher)],[Ps,(e,n)=>e.renderSequence(n.band,n.instance,n.contextPublisher)],[As,(e,n)=>e.renderEntityRelationship(n.band,n.instance,n.contextPublisher)],[eo,(e,n)=>e.renderStatRow(n.band,n.instance)],[no,(e,n)=>e.renderHorizon(n.band,n.instance,n.contextPublisher)],[to,(e,n)=>e.renderPackageContents(n.instance,n.contextPublisher)],[ro,(e,n)=>e.renderFeaturedResource(n.band,n.contextPublisher)],[so,(e,n)=>e.renderPublisherPackages(n.band,n.contextPublisher)],[ko,(e,n)=>e.renderDistribution(n.band,n.instance)],[at,(e,n)=>e.renderSectionHeading(n.band)],[$o,(e,n)=>e.renderVersionDelta(n.band,n.instance)],[So,(e,n)=>e.renderTimePlot(n.band,n.instance,n.contextPublisher)],[wo,(e,n)=>e.renderDetails(n.band,n.instance,n.contextPublisher)],[_o,(e,n)=>e.renderEmbeddedViews(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[jo,(e,n)=>e.renderResourceCount(n.band,n.contextPublisher)],[ha,(e,n)=>e.renderBarMeter(n.band,n.instance)]];static bandDispatchUris(){return r.BAND_DISPATCH.map(([e])=>e)}uriOf(e){let n=we(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=cn(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:G(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=H(e,me);if(!t)return"<!-- LookRenderer.VersionDiff: no look.source -->";let a=this.readEmbeddedCarrier(e,kn),s=H(e,ya);if(!s||!a)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let o=H(e,Cn),i=this.readEmbeddedCarrier(e,rt),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",L=E>0?"\u25B2":"\u25BC";K=`<span class="kan-vdiff-delta ${T}">${E>0?"+":""}${E.toFixed(2)} ${L}</span>`}else K='<span class="kan-vdiff-delta flat">\u2014</span>';let O=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">${O}</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=H(e,me);if(s){let d=ee(this.catalog,s);d&&(a=d)}let o=this.svgUrlForSubject(a,t),i=G(this.catalog,a).label,c=Z(e,Zo);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,_s).filter(h=>h instanceof D);if(o.length===0)return"<!-- LookRenderer.Diagram: no look.facets -->";let i=[];for(let h of o){let b=H(h,js);if(!b){i.push("<!-- LookRenderer.Diagram: facet has no resolvable look.relation -->");continue}let m=H(h,Ks),y=this.resolveFacetNodes(n,b);if(y.length===0){i.push(`<!-- LookRenderer.Diagram: relation ${b.publisher}/${b.package_}/${b.name} resolved to 0 instances -->`);continue}let v=await this.resolveFacetChannels(h,y),E=Ke(h,Us),K=E instanceof le&&E.object instanceof D?E.object:void 0,O=Z(h,pa),T=O&&Me[O]!==void 0?Me[O]:void 0,L=T??this.classTierSize(y),S=Xs[L??Me.icon]??"icon",W=this.readEmbeddedCarrier(h,Ts),P=H(h,Os),V=P?ee(this.catalog,P):void 0;if(V){i.push(await this.renderDiagramExpand(y,V,t,a,s,W,T));continue}if(m&&X(m,Es)){let x=H(h,Is),j=this.facetEdgeLabel(h,x??b),N=this.readEmbeddedCarrier(h,qs);i.push(await this.embedTiers(S,R=>x?this.renderDiagramDag(y,x,v,t,R,j,N):this.renderDiagramConnector(n,y,v,t,R,j,N)));continue}if(m&&!X(m,Rs)){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,L)}</div></div>`:await this.embedTiers(S,x=>this.renderDiagramCluster(y,v,void 0,t,x)))}let c=Z(e,Gs),l=Z(e,zs),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>${Ws}</script>`),`<section class="kan-diagram">${f}${i.join("")}${p}${g}</section>`}async embedTiers(e,n){let t=[];for(let a of Ys){let s=await n(Me[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<Zs&&!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=G(this.catalog,e).label,c=a?await this.evaluateCarrier(a,e):void 0,l=c!==void 0?`<span class="kan-diagram-node-note" style="display:block;font-size:0.8em;color:var(--kan-text-dim)">${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 $e(t)){let s=ee(this.catalog,a.subject);if(!s)continue;let o=Z(s,Fs),i=o?Me[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,xs).filter(s=>s instanceof D),a=[];for(let s of t){let o=this.readEmbeddedCarrier(s,Ls),i=Z(s,Cs);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,Bs);if(t)return t;if(ii(e,Hs)&&n){let s=ee(this.catalog,n);if(s)return G(this.catalog,s).label}}async edgeText(e,n,t){let a=t&&n?await this.evaluateCarrier(t,n):void 0,s=[e,a].filter(o=>!!o);return s.length?s.join(" "):void 0}edgeLabelEl(e,n,t){return`<text x="${e.toFixed(1)}" y="${n.toFixed(1)}" text-anchor="middle" class="kan-diagram-edge-label" style="font-size:11px;paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px;fill:var(--kan-text-dim)">${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=G(this.catalog,y).label,O=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;${O}">${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),O=l?.4+l.norm[m]*.6:1;return this.diagramTile(b,E,K,o,a,O)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${p} ${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,O=`kan-arrow-${this.diagramArrowSeq++}`,T=[],L=[],S=[];for(let P=0;P<n.length;P++){let V=n[P],x=f+P*(c+l),j=v+c,N=E+c/2,R=K-de,I=x+c/2,F=(j+K)/2,$=p?1.5+p.norm[P]*5.5:2,A=g?.4+g.norm[P]*.6:1,z=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)}"${z} marker-end="url(#${O})"/>`);let C=await this.edgeText(o,V,i);C&&L.push(this.edgeLabelEl((j+K)/2,(N+I)/2-5,C)),S.push(this.diagramTile(V,K,x,c,a,g?A:1))}let W=this.diagramTile(e,v,E,c,a);return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${y.toFixed(0)} ${m.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(O,"var(--kan-border)")}${T.join("")}${L.join("")}${W}${S.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 z=A.subject.name;z!==$.name&&g.has(z)&&(h.get($.name).push(z),b.get(z).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 z=0;for(let C of b.get($)??[])z=Math.max(z,v(C)+1);return y.delete($),m.set($,z),z};for(let $ of e)v($.name);let E=Math.min(...m.values());if(E>0)for(let $ of[...m.keys()])m.set($,m.get($)-E);let K=Math.max(0,...m.values()),O=Array.from({length:K+1},()=>[]);for(let $ of e)O[m.get($.name)].push($);let T=Math.max(1,...O.map($=>$.length)),L=!1;for(let[$,A]of h)for(let z of A)m.get(z)<=m.get($)&&(L=!0);let S=L?84:0,W=T*c+(T-1)*d,P=f*2+(K+1)*c+K*l,V=f*2+S+W,x=new Map;O.forEach(($,A)=>{let z=$.length*c+($.length-1)*d,C=f+S+(W-z)/2;$.forEach((M,fe)=>x.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 z=x.get($);for(let C of A){let M=x.get(C),fe=M.x>=z.x,se=j?1.5+j.norm[p.get($)]*4.5:2,ne,ce,te;if(fe){let ge=z.x+c,Ye=z.y+c/2,Fe=M.x-de,ln=M.y+c/2,nn=(ge+Fe)/2;ne=`M${ge.toFixed(1)},${Ye.toFixed(1)} C${nn.toFixed(1)},${Ye.toFixed(1)} ${nn.toFixed(1)},${ln.toFixed(1)} ${Fe.toFixed(1)},${ln.toFixed(1)}`,ce=(ge+Fe)/2,te=(Ye+ln)/2-5}else{let ge=z.x+c/2,Ye=z.y,Fe=M.x+c/2,ln=M.y-de,nn=f+S*.2;ne=`M${ge.toFixed(1)},${Ye.toFixed(1)} C${ge.toFixed(1)},${nn.toFixed(1)} ${Fe.toFixed(1)},${nn.toFixed(1)} ${Fe.toFixed(1)},${ln.toFixed(1)}`,ce=(ge+Fe)/2,te=nn+4}let Re=fe?"":' stroke-dasharray="6 4"';R.push(`<path d="${ne}" class="kan-diagram-edge" fill="none" stroke="var(--kan-accent)" stroke-width="${se.toFixed(1)}" stroke-opacity="0.75"${Re} marker-end="url(#${N})"/>`);let Se=await this.edgeText(o,e[p.get($)],i);Se&&I.push(this.edgeLabelEl(ce,te,Se))}}let F=e.map($=>{let A=x.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=zn(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 S of a.strayPropertyRefs)s.push(`<!-- LookRenderer.Sequence: prose references property ${S.publisher}/${S.package_}/${S.name}, which is not a declared connector; ignored -->`);for(let S of a.gaps)s.push(`<!-- LookRenderer.Sequence: prose orders ${S.prev.name} then ${S.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
125
|
`)}
|
|
126
|
-
<!-- LookRenderer.Sequence: no messages \u2014 no consecutive prose references are joined by a declared connector -->`;let l=Z(e,
|
|
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">${L.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=>tn.isClassType(t);if(_(e,Vs))return{classes:this.catalog.filter(a=>a instanceof Y&&a.namespace===e.namespace&&n(a))};if(n(e)){let t=we(e);if(!t)return{classes:[],reason:"the page class has no canonical URI"};let a=pn(this.catalog),s=new Map([[H(t),e]]);for(let o of Rn(this.catalog,t,!1,a)){if(o.kind!=="object"||o.range.kind!=="class")continue;let i=this.subjectFor(o.range.uri);i&&!s.has(H(o.range.uri))&&s.set(H(o.range.uri),i)}return{classes:[...s.values()]}}return{classes:[],reason:"the page instance is neither a Package nor a Class"}}erCardinalityGlyph(e,n,t,a,s){let o=[];return s===1?o.push('<line x1="-14" y1="-7" x2="-14" y2="7"/>'):o.push('<path d="M-16,-8 L0,0 L-16,8" fill="none"/>'),a>=1?o.push('<line x1="-22" y1="-7" x2="-22" y2="7"/>'):o.push('<circle cx="-24" cy="0" r="4" fill="var(--kan-bg)"/>'),`<g class="kan-er-cardinality" transform="translate(${e.toFixed(1)},${n.toFixed(1)}) rotate(${t.toFixed(1)})" stroke="var(--kan-text-dim)" stroke-width="1.5">${o.join("")}</g>`}erBorderPoint(e,n,t,a,s,o){let i=s-e,c=o-n;if(i===0&&c===0)return{x:e,y:n};let l=i===0?1/0:Math.abs(t/2/i),d=c===0?1/0:Math.abs(a/2/c),f=Math.min(l,d);return{x:e+i*f,y:n+c*f}}renderEntityRelationship(e,n,t){let{classes:a,reason:s}=this.erScope(n);if(a.length===0)return`<!-- LookRenderer.EntityRelationship: nothing to draw \u2014 ${s??"no classes in scope"} -->`;let o=pn(this.catalog),i=x=>`${x.namespace}/${x.name}`,c=new Map;for(let x of a){let j=we(x);j&&c.set(H(j),x)}let l=a.map(x=>{let j=we(x),N=j?Rn(this.catalog,j,!1,o):[];return{subject:x,label:G(this.catalog,x).label,attrs:N.filter(R=>R.kind==="datatype"),rels:N.filter(R=>R.kind==="object"&&R.range.kind==="class"&&c.has(H(R.range.uri))),supers:je(x,ot).filter(R=>c.has(H(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=x=>f+Math.max(1,x.attrs.length)*p+8,y=[];l.forEach((x,j)=>{let N=Math.floor(j/b);y[N]=Math.max(y[N]??0,m(x))});let v=[],E=h;y.forEach((x,j)=>{v[j]=E,E+=x+g});let K=new Map;l.forEach((x,j)=>{let N=Math.floor(j/b),R=j%b,I=h+R*(d+g),T=v[N],$=m(x);K.set(i(x.subject),{x:I,y:T,w:d,h:$,cx:I+d/2,cy:T+$/2})});let U=h*2+b*d+(b-1)*g,F=E-g+h,L=[],S=[],W=[],P=`kan-er-tri-${this.diagramArrowSeq++}`,A=`<defs><marker id="${P}" viewBox="0 0 12 12" refX="11" refY="6" markerWidth="12" markerHeight="12" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,0 L12,6 L0,12 Z" fill="var(--kan-bg)" stroke="var(--kan-text-dim)" stroke-width="1.5"/></marker></defs>`;for(let x of l){let j=K.get(i(x.subject));for(let N of x.rels){let R=c.get(H(N.range.uri)),I=K.get(i(R)),T=i(R)===i(x.subject),$=this.subjectFor(N.uri),V=!!$&&fn(this.catalog,$,Ps),z=!!$&&fn(this.catalog,$,As),C=N.minCount??0,M=N.maxCount??(z?1:void 0),fe=$?G(this.catalog,$).label:N.localName;if(T){let te=j.x+j.w,Re=j.y+12,Se=j.y+j.h-12;L.push(`<path class="kan-er-relationship" d="M${te},${Re} h28 V${Se} h-28" fill="none" stroke="var(--kan-text-dim)" stroke-width="1.5"/>`),V||L.push(this.erCardinalityGlyph(te,Se,180,C,M)),S.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);L.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;V||L.push(this.erCardinalityGlyph(ne.x,ne.y,ce,C,M)),S.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 x.supers){let R=c.get(H(N)),I=K.get(i(R)),T=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);L.push(`<line class="kan-er-inherits" x1="${T.x.toFixed(1)}" y1="${T.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 x of l){let j=K.get(i(x.subject)),N=this.hrefForSubject(x.subject,t),R=x.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>`:x.attrs.map((I,T)=>{let $=this.subjectFor(I.uri),V=$?G(this.catalog,$).label:I.localName,z=I.required||(I.minCount??0)>=1?" *":"";return`<text class="kan-er-attribute" x="${j.x+10}" y="${j.y+f+14+T*p}" font-size="11" fill="var(--kan-text)">${k(V)}${z}<tspan fill="var(--kan-text-dim)"> : ${k(I.range.uri.name)}</tspan></text>`}).join("");W.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(x.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} ${F}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${A}${L.join("")}${W.join("")}${S.join("")}</svg></figure>`}diagramTile(e,n,t,a,s,o=1){let i=this.hrefForSubject(e,s),c=this.svgUrlForSubject(e,s),l=G(this.catalog,e).label,d=o<1?` opacity="${o.toFixed(2)}"`:"";return`<a href="${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,Ko).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,Ro);if(!o)continue;let i=await this.evaluateCarrier(o,n);if(i===void 0)continue;let c=Z(s,Eo)??"";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,kn);if(!t)return"<!-- LookRenderer.BarMeter: no look.metricPath -->";let a=await this.evaluateCarrier(t,n);return a===void 0?"":`<div class="kan-bar-row">${this.barMarkup(a)}</div>`}renderResourceCount(e,n){let t=this.valueItems(e,wo).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=G(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=cn(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,ze))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,da);if(!t)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let a=Z(n,ho);return`<div class="kan-section" id="${Ka(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,kn);if(!t)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let a=async P=>{let A=await this.evaluateCarrierNum(t,P);return Number.isFinite(A)?A: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,A)=>P.major-A.major||P.minor-A.minor||P.patch-A.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 A=o(P);i(A,l)<0&&(!f||i(A,f)>0)&&(d=P,f=A)}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,F=P=>K+Math.min(1,Math.max(0,P))*(v-2*K),L=F(p),S=F(s),W=`<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="${L.toFixed(1)}" y1="${U}" x2="${S.toFixed(1)}" y2="${U}" stroke="${m}" stroke-width="3"/><circle cx="${L.toFixed(1)}" cy="${U}" r="4" class="kan-delta-prev"/><circle cx="${S.toFixed(1)}" cy="${U}" r="5.5" fill="${m}"/><text x="${L.toFixed(1)}" y="${U-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${p.toFixed(2)}</text><text x="${S.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>`+W+"</div>"}async renderTimePlot(e,n,t){let a=B(e,pe),s=B(e,Cn);if(!a||!s)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let o=this.readEmbeddedCarrier(e,jo),i=this.readEmbeddedCarrier(e,pa),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 T=this.readPropertyValueText(I,s)??"",$=Date.parse(T);if(!Number.isFinite($))continue;let V=o?await this.evaluateCarrier(o,I)??"":"",z=(i?await this.evaluateCarrier(i,I):void 0)??G(this.catalog,I).label;c.push({t:$,dateStr:T,lane:V,label:z,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,F=U-K,L=R=>K+(R-d)/(f-d)*F,S=R=>m+R*v+v/2,W=R=>Math.round(R*360/Math.max(1,l.length)),P=[];l.forEach((R,I)=>{let T=S(I);P.push(`<line x1="${K}" y1="${T.toFixed(1)}" x2="${U}" y2="${T.toFixed(1)}" class="kan-plot-guide"/>`),R&&P.push(`<text x="${(h-8).toFixed(1)}" y="${(T+4).toFixed(1)}" text-anchor="end" class="kan-plot-lane">${Oe(R)}</text>`)});let A={},x=[];for(let R of c){let I=l.indexOf(R.lane),$=((A[R.lane]=(A[R.lane]??0)+1)%3-1)*7,V=L(R.t),z=S(I)+$,C=`${Tn(R.dateStr)} \xB7 ${R.label}`,M=`<circle cx="${V.toFixed(1)}" cy="${z.toFixed(1)}" r="5" fill="hsl(${W(I)},65%,60%)" class="kan-plot-pt"><title>${Oe(C)}</title></circle>`;x.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(Tn(new Date(d).toISOString()))}</text><text x="${U}" y="${(E-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${Oe(Tn(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("")+x.join("")+j+"</svg>"}</section>`}renderDetails(e,n,t){let a=rt(e,_o),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 wa(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=Ee(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"?Ea(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=cn(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=Ke(n,es);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=vn(n,s,this.catalog,a?`#${a}`:"").filter(p=>p.kind==="embedded");if(o.length===0)return"";let i=Ke(e,Zo),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 L=G(this.catalog,h).label||g.name||m;l.push(`<a class="kan-section-nav-link" href="#${k(m)}">${k(L)}</a>`)}let y=$e(h),v=y.length>0?y:this.rangeTypeRefs(s),E=Un(h)?this.findCascadedLook(h):this.lookFromTypeRefs(v),K="";if(E){let L=[];for(let S of at(E.declaration))L.push(await this.renderBand(S,h,t,[],b));K=L.join(`
|
|
128
|
-
`)}else{let L=this.detailRows(g,t,[]);K=L?`<dl class="kan-details">${L}</dl>`:""}let
|
|
126
|
+
<!-- LookRenderer.Sequence: no messages \u2014 no consecutive prose references are joined by a declared connector -->`;let l=Z(e,pa);l!==void 0&&Me[l]===void 0&&s.push(`<!-- LookRenderer.Sequence: look.nodeTier '${k(l)}' is not a tier (${Object.keys(Me).join(", ")}); using the class/default size -->`);let d=(l!==void 0?Me[l]:void 0)??this.classTierSize(i)??Me.icon,f=d+r.SEQ_COL_GAP,p=r.SEQ_ROW,g=r.SEQ_PAD,h=Z(e,Vs)==="true",b=new Map;i.forEach((S,W)=>b.set(c(S),g+W*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++}`,O=`kan-arrow-open-${this.diagramArrowSeq++}`,L=[this.arrowMarkerDef(K,"var(--kan-text-dim)")+`<defs><marker id="${O}" viewBox="0 0 ${de} ${de}" refX="0" refY="${(de/2).toFixed(1)}" markerWidth="${de}" markerHeight="${de}" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,1 L${de},${(de/2).toFixed(1)} L0,${de-1}" fill="none" stroke="var(--kan-text-dim)" stroke-width="1.5"/></marker></defs>`];for(let S of i){let W=b.get(c(S));L.push(`<line class="kan-seq-lifeline" x1="${W}" y1="${m}" x2="${W}" y2="${v-g}" stroke="var(--kan-border)" stroke-width="1.5" stroke-dasharray="5 5"/>`),L.push(this.diagramTile(S,W-d/2,g,d,t))}return o.forEach((S,W)=>{let P=y+W*p,V=b.get(c(S.from)),x=b.get(c(S.to)),j=this.subjectFor(S.relation),N=(h?`${W+1}. `:"")+(j?G(this.catalog,j).label:S.relation.name),R=S.style==="dotted"?' stroke-dasharray="4 4"':"",I=S.style==="thick"?3:1.5,F=S.undirected?"":` marker-end="url(#${S.style==="open"?O:K})"`,$=`kan-seq-message kan-seq-message-${S.style}${S.undirected?" kan-seq-message-undirected":""}`;if(V===x){let M=p*.55,fe=V+(S.undirected?0:de);L.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}/>`),L.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=x>V?1:-1,z=S.undirected?x:x-A*de;L.push(`<line class="${$}" x1="${V}" y1="${P}" x2="${z}" y2="${P}" stroke="var(--kan-text-dim)" stroke-width="${I}"${R}${F}/>`),L.push(`<text class="kan-seq-message-label" x="${((V+x)/2).toFixed(1)}" y="${P-6}" text-anchor="middle" font-size="12" fill="var(--kan-text)" style="paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px">${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">${L.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=>tn.isClassType(t);if(_(e,Ds))return{classes:this.catalog.filter(a=>a instanceof Y&&a.namespace===e.namespace&&n(a))};if(n(e)){let t=we(e);if(!t)return{classes:[],reason:"the page class has no canonical URI"};let a=pn(this.catalog),s=new Map([[B(t),e]]);for(let o of Rn(this.catalog,t,!1,a)){if(o.kind!=="object"||o.range.kind!=="class")continue;let i=this.subjectFor(o.range.uri);i&&!s.has(B(o.range.uri))&&s.set(B(o.range.uri),i)}return{classes:[...s.values()]}}return{classes:[],reason:"the page instance is neither a Package nor a Class"}}erCardinalityGlyph(e,n,t,a,s){let o=[];return s===1?o.push('<line x1="-14" y1="-7" x2="-14" y2="7"/>'):o.push('<path d="M-16,-8 L0,0 L-16,8" fill="none"/>'),a>=1?o.push('<line x1="-22" y1="-7" x2="-22" y2="7"/>'):o.push('<circle cx="-24" cy="0" r="4" fill="var(--kan-bg)"/>'),`<g class="kan-er-cardinality" transform="translate(${e.toFixed(1)},${n.toFixed(1)}) rotate(${t.toFixed(1)})" stroke="var(--kan-text-dim)" stroke-width="1.5">${o.join("")}</g>`}erBorderPoint(e,n,t,a,s,o){let i=s-e,c=o-n;if(i===0&&c===0)return{x:e,y:n};let l=i===0?1/0:Math.abs(t/2/i),d=c===0?1/0:Math.abs(a/2/c),f=Math.min(l,d);return{x:e+i*f,y:n+c*f}}renderEntityRelationship(e,n,t){let{classes:a,reason:s}=this.erScope(n);if(a.length===0)return`<!-- LookRenderer.EntityRelationship: nothing to draw \u2014 ${s??"no classes in scope"} -->`;let o=pn(this.catalog),i=x=>`${x.namespace}/${x.name}`,c=new Map;for(let x of a){let j=we(x);j&&c.set(B(j),x)}let l=a.map(x=>{let j=we(x),N=j?Rn(this.catalog,j,!1,o):[];return{subject:x,label:G(this.catalog,x).label,attrs:N.filter(R=>R.kind==="datatype"),rels:N.filter(R=>R.kind==="object"&&R.range.kind==="class"&&c.has(B(R.range.uri))),supers:je(x,ct).filter(R=>c.has(B(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=x=>f+Math.max(1,x.attrs.length)*p+8,y=[];l.forEach((x,j)=>{let N=Math.floor(j/b);y[N]=Math.max(y[N]??0,m(x))});let v=[],E=h;y.forEach((x,j)=>{v[j]=E,E+=x+g});let K=new Map;l.forEach((x,j)=>{let N=Math.floor(j/b),R=j%b,I=h+R*(d+g),F=v[N],$=m(x);K.set(i(x.subject),{x:I,y:F,w:d,h:$,cx:I+d/2,cy:F+$/2})});let O=h*2+b*d+(b-1)*g,T=E-g+h,L=[],S=[],W=[],P=`kan-er-tri-${this.diagramArrowSeq++}`,V=`<defs><marker id="${P}" viewBox="0 0 12 12" refX="11" refY="6" markerWidth="12" markerHeight="12" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,0 L12,6 L0,12 Z" fill="var(--kan-bg)" stroke="var(--kan-text-dim)" stroke-width="1.5"/></marker></defs>`;for(let x of l){let j=K.get(i(x.subject));for(let N of x.rels){let R=c.get(B(N.range.uri)),I=K.get(i(R)),F=i(R)===i(x.subject),$=this.subjectFor(N.uri),A=!!$&&fn(this.catalog,$,Ms),z=!!$&&fn(this.catalog,$,Ns),C=N.minCount??0,M=N.maxCount??(z?1:void 0),fe=$?G(this.catalog,$).label:N.localName;if(F){let te=j.x+j.w,Re=j.y+12,Se=j.y+j.h-12;L.push(`<path class="kan-er-relationship" d="M${te},${Re} h28 V${Se} h-28" fill="none" stroke="var(--kan-text-dim)" stroke-width="1.5"/>`),A||L.push(this.erCardinalityGlyph(te,Se,180,C,M)),S.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);L.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||L.push(this.erCardinalityGlyph(ne.x,ne.y,ce,C,M)),S.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 x.supers){let R=c.get(B(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);L.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 x of l){let j=K.get(i(x.subject)),N=this.hrefForSubject(x.subject,t),R=x.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>`:x.attrs.map((I,F)=>{let $=this.subjectFor(I.uri),A=$?G(this.catalog,$).label:I.localName,z=I.required||(I.minCount??0)>=1?" *":"";return`<text class="kan-er-attribute" x="${j.x+10}" y="${j.y+f+14+F*p}" font-size="11" fill="var(--kan-text)">${k(A)}${z}<tspan fill="var(--kan-text-dim)"> : ${k(I.range.uri.name)}</tspan></text>`}).join("");W.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(x.label)}</text><line x1="${j.x}" y1="${j.y+f}" x2="${j.x+j.w}" y2="${j.y+f}" stroke="var(--kan-border)"/>`+R+"</g></a>")}return`<figure class="kan-diagram-figure kan-er-figure"><svg class="kan-diagram-svg kan-er" viewBox="0 0 ${O} ${T}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${V}${L.join("")}${W.join("")}${S.join("")}</svg></figure>`}diagramTile(e,n,t,a,s,o=1){let i=this.hrefForSubject(e,s),c=this.svgUrlForSubject(e,s),l=G(this.catalog,e).label,d=o<1?` opacity="${o.toFixed(2)}"`:"";return`<a href="${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,xo).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,Lo);if(!o)continue;let i=await this.evaluateCarrier(o,n);if(i===void 0)continue;let c=Z(s,Co)??"";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,kn);if(!t)return"<!-- LookRenderer.BarMeter: no look.metricPath -->";let a=await this.evaluateCarrier(t,n);return a===void 0?"":`<div class="kan-bar-row">${this.barMarkup(a)}</div>`}renderResourceCount(e,n){let t=this.valueItems(e,Ko).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=H(o,me);if(!i)continue;let c=ee(this.catalog,i);if(!c)continue;let l=G(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=H(e,me);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=cn(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,We))continue;let h=this.readLabelForUri({publisher:g.publisher,package_:g.package_,name:g.name})??g.name;if(p instanceof ae||p instanceof be||p instanceof ke)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 Q&&p.object instanceof U){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,ma);if(!t)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let a=Z(n,vo);return`<div class="kan-section" id="${xa(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,kn);if(!t)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let a=async P=>{let V=await this.evaluateCarrierNum(t,P);return Number.isFinite(V)?V:void 0},s=await a(n);if(s===void 0)return"";let o=P=>this.uriOf(P).version??{major:0,minor:0,patch:0},i=(P,V)=>P.major-V.major||P.minor-V.minor||P.patch-V.patch,c={publisher: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,O=30,T=P=>K+Math.min(1,Math.max(0,P))*(v-2*K),L=T(p),S=T(s),W=`<svg class="kan-delta-track" viewBox="0 0 ${v} ${E}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${K}" y1="${O}" x2="${v-K}" y2="${O}" class="kan-delta-base"/><line x1="${L.toFixed(1)}" y1="${O}" x2="${S.toFixed(1)}" y2="${O}" stroke="${m}" stroke-width="3"/><circle cx="${L.toFixed(1)}" cy="${O}" r="4" class="kan-delta-prev"/><circle cx="${S.toFixed(1)}" cy="${O}" r="5.5" fill="${m}"/><text x="${L.toFixed(1)}" y="${O-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${p.toFixed(2)}</text><text x="${S.toFixed(1)}" y="${O+17}" text-anchor="middle" class="kan-delta-tick">${s.toFixed(2)}</text></svg>`;return`<div class="kan-delta"><div class="kan-delta-head"><span class="kan-delta-vs">vs ${k(y)}</span><span class="kan-delta-badge ${h}">${g>0?"+":""}${g.toFixed(2)} ${b}</span></div>`+W+"</div>"}async renderTimePlot(e,n,t){let a=H(e,me),s=H(e,Cn);if(!a||!s)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let o=this.readEmbeddedCarrier(e,Eo),i=this.readEmbeddedCarrier(e,ka),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)??"":"",z=(i?await this.evaluateCarrier(i,I):void 0)??G(this.catalog,I).label;c.push({t:$,dateStr:F,lane:A,label:z,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,O=g-b,T=O-K,L=R=>K+(R-d)/(f-d)*T,S=R=>m+R*v+v/2,W=R=>Math.round(R*360/Math.max(1,l.length)),P=[];l.forEach((R,I)=>{let F=S(I);P.push(`<line x1="${K}" y1="${F.toFixed(1)}" x2="${O}" y2="${F.toFixed(1)}" class="kan-plot-guide"/>`),R&&P.push(`<text x="${(h-8).toFixed(1)}" y="${(F+4).toFixed(1)}" text-anchor="end" class="kan-plot-lane">${Ie(R)}</text>`)});let V={},x=[];for(let R of c){let I=l.indexOf(R.lane),$=((V[R.lane]=(V[R.lane]??0)+1)%3-1)*7,A=L(R.t),z=S(I)+$,C=`${Fn(R.dateStr)} \xB7 ${R.label}`,M=`<circle cx="${A.toFixed(1)}" cy="${z.toFixed(1)}" r="5" fill="hsl(${W(I)},65%,60%)" class="kan-plot-pt"><title>${Ie(C)}</title></circle>`;x.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">${Ie(Fn(new Date(d).toISOString()))}</text><text x="${O}" y="${(E-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${Ie(Fn(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("")+x.join("")+j+"</svg>"}</section>`}renderDetails(e,n,t){let a=ot(e,Ro),s=this.detailRows(n,t,a);return s?`<dl class="kan-details">${s}</dl>`:"<!-- LookRenderer.Details: no properties -->"}detailRows(e,n,t){let a=[];for(let s of Ka(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=Ee(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"?Ca(i):typeof i=="number"||typeof i=="boolean"?k(String(i)):i instanceof U?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 U?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=cn(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=Ke(n,as);return t instanceof Q&&t.object instanceof U?[t.object]:[]}async renderEmbeddedViews(e,n,t,a=""){let s=H(e,me);if(!s)return"<!-- LookRenderer: EmbeddedViews missing look.source -->";let o=vn(n,s,this.catalog,a?`#${a}`:"").filter(p=>p.kind==="embedded");if(o.length===0)return"";let i=Ke(e,ti),c=i instanceof ke?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 L=G(this.catalog,h).label||g.name||m;l.push(`<a class="kan-section-nav-link" href="#${k(m)}">${k(L)}</a>`)}let y=$e(h),v=y.length>0?y:this.rangeTypeRefs(s),E=Un(h)?this.findCascadedLook(h):this.lookFromTypeRefs(v),K="";if(E){let L=[];for(let S of st(E.declaration))L.push(await this.renderBand(S,h,t,[],b));K=L.join(`
|
|
128
|
+
`)}else{let L=this.detailRows(g,t,[]);K=L?`<dl class="kan-details">${L}</dl>`:""}let O=m?` id="${k(m)}"`:"",T=m?this.anchorLink(m):"";d.push(`<section class="kan-embedded-view"${O}>${T}${K}</section>`)}return`<div class="kan-embedded-views">${l.length>0?`<nav class="kan-section-nav" aria-label="On this page">${l.join("")}</nav>
|
|
129
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,
|
|
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,We)||X(e,et)||X(e,ua)||X(e,Tn)||X(e,Pn)||X(e,ga)||X(e,Sa)||X(e,go)}renderPackageContents(e,n){let t=e.namespace||"";if(!t)return"";let a=this.catalog.filter(o=>o instanceof Y&&o.namespace===t&&o.name!==e.name);return a.length===0?`<!-- LookRenderer.PackageContents: no members in ${t} -->`:(a.sort((o,i)=>{let c=G(this.catalog,o).label,l=G(this.catalog,i).label;return c.localeCompare(l)}),`<section class="kan-pkg-grid">${a.map(o=>{let i=G(this.catalog,o),c=i.label,l=i.summary,d=l?it(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=H(e,Qo),s={publisher:ie(n),package_:this.uriOf(n).package_,name:n.name},o=J(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 Y))continue;let g=J({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,We)||a&&J(b)!==J(a))continue;let m=[];if(h instanceof Q&&h.object instanceof U)m.push(h.object);else if(h instanceof ue)for(let K of h.object??[])K instanceof U&&m.push(K);if(!m.some(K=>J(K.subject)===o))continue;let y=J(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)=>G(this.catalog,b).label.localeCompare(G(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=G(this.catalog,e),s=a.summary?it(a.summary,160):"",o=$e(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?bn(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([J(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 Y)||!$e(m).some(K=>o.has(J(K.subject))))continue;let v=J({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)=>G(this.catalog,m).label.localeCompare(G(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=J(e),t=new Set([n]),a=new Set;for(let s of this.catalog)if(s instanceof Y)for(let o of $e(s)){let i=o.subject,c=J(i);a.has(c)||(a.add(c),an(this.catalog,i).some(l=>J(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,We)||t&&!(s&&J(s)===J(t)))continue;let o=[];if(a instanceof Q&&a.object instanceof U)o.push(a.object);else if(a instanceof ue)for(let i of a.object??[])i instanceof U&&o.push(i);for(let i of o)if(J(i.subject)===n)return!0}return!1}async renderFeaturedResource(e,n){let t=H(e,me);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(ho),s=await t(bo);if(a===void 0||s===void 0||a<=0||s<=0)return"<!-- LookRenderer.Distribution: needs resolvable alphaPath + betaPath (> 0) -->";let o=await t(kn)??a/(a+s),i=await t(va),c=await t($a),l=await t(rt),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=[],O=0;for(let F=0;F<=y;F++){let $=F/y;$<v?$=v:$>1-v&&($=1-v);let A=Math.exp((a-1)*Math.log($)+(s-1)*Math.log(1-$));E.push($),K.push(A),A>O&&(O=A)}let T=F=>h.left+Math.min(1,Math.max(0,F))*b,L=F=>h.top+(1-(O>0?F/O:0))*m,S=h.top+m,W=E.map((F,$)=>`${T(F).toFixed(1)},${L(K[$]).toFixed(1)}`),P=`M${T(0).toFixed(1)},${S.toFixed(1)} L${W.join(" L")} L${T(1).toFixed(1)},${S.toFixed(1)} Z`,V="";if(i!==void 0&&c!==void 0&&c>i){let F=[`${T(i).toFixed(1)},${S.toFixed(1)}`];for(let $=0;$<=y;$++)E[$]>=i&&E[$]<=c&&F.push(`${T(E[$]).toFixed(1)},${L(K[$]).toFixed(1)}`);F.push(`${T(c).toFixed(1)},${S.toFixed(1)}`),V=`<path d="M${F.join(" L")} Z" fill="${d}" fill-opacity="0.3"/>`}let x=T(o),j=`<line x1="${x.toFixed(1)}" y1="${h.top.toFixed(1)}" x2="${x.toFixed(1)}" y2="${S.toFixed(1)}" stroke="${d}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${x.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="${(S+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${T(1).toFixed(1)}" y="${(S+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="${S.toFixed(1)}" x2="${(p-h.right).toFixed(1)}" y2="${S.toFixed(1)}" class="kan-dist-base"/><path d="${P}" fill="${d}" fill-opacity="0.12"/>`+V+`<polyline points="${W.join(" ")}" fill="none" stroke="${d}" stroke-width="2"/>`+j+N+"</svg>",I=i!==void 0&&c!==void 0?` \xB7 95% CI [${i.toFixed(2)}\u2013${c.toFixed(2)}]`:"";return`<figure class="kan-dist">${R}<figcaption class="kan-dist-caption">Beta(${f(a)}, ${f(s)})${I}</figcaption></figure>`}renderPublisherPackages(e,n){let t=new Map;for(let i of this.catalog){if(!(i instanceof Y)||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||hn(d,f)>0))&&t.set(c,i)}let a,s=this.valueItems(e,oo);if(s.length>0){a=[];for(let i of s){if(!(i instanceof U))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=G(this.catalog,c),d=l.label,f=l.summary,p=f?it(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=H(e,me);if(!t)return"<!-- LookRenderer.Timeline: no look.source -->";let a=H(e,Cn),s=this.findInstancesOfClass(t,this.readTransitive(e));if(s.length===0)return"<!-- LookRenderer.Timeline: no instances -->";let o=f=>a?this.readPropertyValueText(f,a)??"":"",i=s.slice().sort((f,p)=>o(f).localeCompare(o(p))),c=H(e,ya),l=this.readEmbeddedCarrier(e,kn);return c&&l?this.renderTrajectoryChart(i,c,l,e,n,o):`<section class="kan-timeline"><ol>
|
|
131
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?bn(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
132
|
`)}
|
|
133
|
-
</ol></section>`}async renderTrajectoryChart(e,n,t,a,s,o){let i=a,c=this.readEmbeddedCarrier(a,
|
|
133
|
+
</ol></section>`}async renderTrajectoryChart(e,n,t,a,s,o){let i=a,c=this.readEmbeddedCarrier(a,rt),l=this.readEmbeddedCarrier(a,va),d=this.readEmbeddedCarrier(a,$a),f=Z(i,Bo),p=Ra(i,No),g=Ra(i,Do),h=e.length,b=await this.collectTrackedSeries(e,n,t,{hueBy:c,lowerPath:l,upperPath:d});if(b.length===0)return"<!-- LookRenderer.Timeline: no tracked series -->";let m=[];for(let C of b){for(let M of C.points)M!==null&&m.push(M);for(let M of C.lower??[])M!==null&&m.push(M);for(let M of C.upper??[])M!==null&&m.push(M)}if(m.length===0)return"<!-- LookRenderer.Timeline: no metric values -->";let y=Math.min(...m),v=Math.max(...m);v-y<1e-9&&(y-=.5,v+=.5);let E=(v-y)*.08,K=p!==void 0?p:y-E,O=g!==void 0?g:v+E;O-K<1e-9&&(O=K+1);let T=1e3,L=440,S={top:28,right:24,bottom:56,left:52},W=T-S.left-S.right,P=L-S.top-S.bottom,V=C=>h<=1?S.left+W/2:S.left+C/(h-1)*W,x=C=>S.top+(1-(C-K)/(O-K))*P,j=(C,M)=>C.hue!==void 0?C.hue:Math.round(M*360/b.length),N=[];for(let C=0;C<5;C++){let M=K+C*(O-K)/4,fe=x(M);N.push(`<line x1="${S.left}" y1="${fe.toFixed(1)}" x2="${(T-S.right).toFixed(1)}" y2="${fe.toFixed(1)}" class="kan-fan-grid"/>`),N.push(`<text x="${(S.left-8).toFixed(1)}" y="${(fe+4).toFixed(1)}" class="kan-fan-axis" text-anchor="end">${M.toFixed(2)}</text>`)}let R=[];e.forEach((C,M)=>{let fe=this.hrefForSubject(C,s),se=this.uriOf(C).version,ne=se?bn(se):"",ce=V(M),te=Fn(o(C));R.push(`<a href="${k(fe)}" class="kan-fan-xtick"><line x1="${ce.toFixed(1)}" y1="${S.top}" x2="${ce.toFixed(1)}" y2="${(L-S.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${ce.toFixed(1)}" y="${(L-S.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${Ie(ne||C.name)}</text>`+(te?`<text x="${ce.toFixed(1)}" y="${(L-S.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${Ie(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 Re=C.upper[te],Se=C.lower[te];Re==null||Se===null||Se===void 0||(se.push(`${V(te).toFixed(1)},${x(Re).toFixed(1)}`),ne.unshift(`${V(te).toFixed(1)},${x(Se).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,Re)=>{if(te===null)return;let Se=V(Re),ge=x(te);ne.push(`${Se.toFixed(1)},${ge.toFixed(1)}`),ce.push(`<circle cx="${Se.toFixed(1)}" cy="${ge.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} ${L}" 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)}=`:"",z=b.map((C,M)=>{let fe=j(C,M),se=C.points.filter(ge=>ge!==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 ge=ce-ne;if(Math.abs(ge)>=.005){let Ye=ge>0?"up":"down",Fe=ge>0?"\u25B2":"\u25BC";te=` <span class="kan-fan-delta ${Ye}">${ge>0?"+":""}${ge.toFixed(2)} ${Fe}</span>`}else te=' <span class="kan-fan-delta flat">\u2014</span>'}let Re=ce!==void 0?`${A}${ce.toFixed(2)}`:"\u2014",Se=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">${Se}</span><span class="kan-fan-legend-cur">${Re}${te}</span></div>`});return`<section class="kan-fan"><div class="kan-fan-chart">${$}</div><div class="kan-fan-legend">${z.join("")}</div></section>`}resolveResourceQuery(e){let n=i=>{let c=H(i,Vo);if(!c)return;let l=H(i,Cn),d=Z(i,Ao),f=this.readPropertyValueText(i,Mo),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,me);if(t)return n(t);let a=H(e,me);if(!a)return;let s=ee(this.catalog,a);return(s?$e(s).some(i=>X(i.subject,Po)):!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=H(e,me)??a?.ofClass;if(!s)return"<!-- LookRenderer.ResourceGrid: no look.source -->";let o=ee(this.catalog,s),i=o?$n(this.catalog,o)!==void 0:!1,c=[];if(i&&t){let d=this.readPropertyValueReferences(t,s);for(let f of d){let p=ee(this.catalog,{publisher:f.subject.publisher,package_:f.subject.package_,name:f.subject.name,...f.subject.version?{version:f.subject.version}:{}});p&&c.push(p)}}else a?c=this.applyQueryShape(this.findInstancesOfClass(a.ofClass,this.readTransitive(e)),a):c=this.findInstancesOfClass(s,this.readTransitive(e));if(c.length===0)return`<!-- LookRenderer.ResourceGrid: no resources for ${s.publisher}/${s.package_}/${s.name} -->`;let l=[];for(let d of c){let f=G(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
134
|
${l.join(`
|
|
135
135
|
`)}
|
|
136
|
-
</section>`}readTransitive(e){let n=Ke(e,
|
|
136
|
+
</section>`}readTransitive(e){let n=Ke(e,ai);return n instanceof ke?n.object===!0:n instanceof ae&&n.object==="true"}findInstancesOfClass(e,n=!1){let t=n?this.descendantTypeKeys(e):new Set([J(e)]),a=[];for(let s of this.catalog)s instanceof Y&&$e(s).some(o=>t.has(J(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
137
|
<li><a href="${k(this.publisherHref(o))}">${k(o)}</a></li>
|
|
138
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:
|
|
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:ut(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
140
|
${m.join(`
|
|
141
141
|
`)}
|
|
142
|
-
</ol></nav>`}renderNavGroup(e,n){let t=this.valueItems(this.publisherSubject(n),
|
|
142
|
+
</ol></nav>`}renderNavGroup(e,n){let t=this.valueItems(this.publisherSubject(n),gs);if(t.length===0)return"";let a=[];for(let s of t){if(!(s instanceof U))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
143
|
${a.join(`
|
|
144
144
|
`)}
|
|
145
|
-
</ul></nav>`}renderSiteFooter(e){let n=Ke(this.publisherSubject(e),
|
|
146
|
-
`)}</footer>`}resolveNavEntry(e,n,t){if(n&&$e(n).map(c=>c.subject).some(c=>c.publisher===
|
|
145
|
+
</ul></nav>`}renderSiteFooter(e){let n=Ke(this.publisherSubject(e),ks),t;if(n instanceof le?t=n.object:n instanceof Q&&n.object instanceof U&&(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,hs),s=this.valueItems(t,bs),o=[];for(let c of s){if(!(c instanceof U))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&&$e(n).map(c=>c.subject).some(c=>c.publisher===nt.publisher&&c.package_===nt.package_&&c.name===nt.name)){let c=Z(n,et),l=Ke(n,fa);if(l instanceof Q&&l.object instanceof U){let d=l.object,f=this.readLabelForUri({publisher:d.subject.publisher,package_:d.subject.package_,name:d.subject.name});return{href:this.urlForReference(d,fa,t),label:c??f??d.subject.name}}}let a=this.resourceHref({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},t,"*"),s=n?G(this.catalog,n).label:e.subject.name;return{href:a,label:s}}codeHighlighter(){return this._codeHighlighter||(this._codeHighlighter=new Ln(this.collectGrammars())),this._codeHighlighter}collectGrammars(){let e=[];for(let n of this.catalog){if(!(n instanceof Y)||!$e(n).some(o=>X(o.subject,io)))continue;let t=Z(n,co);if(!t)continue;let a=this.valueItems(n,lo),s=[];for(let o of a){if(!(o instanceof D))continue;let i=H(o,uo),c=Z(o,fo);!i||!c||s.push({tokenClass:i.name,pattern:c})}e.push({language:t,rules:s})}return e}renderLinks(e,n){let t=H(e,me);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 U&&(i=ee(this.catalog,{publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name})),!i)continue;let c=Z(i,mo);if(!c)continue;let l=Z(i,et)??c,d=Z(i,ua),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=H(e,me);if(!a)return"<!-- LookRenderer.Markdown: no look.source -->";let s=Ke(n,a),o=new Map,i;if(s instanceof De?i=this.resolveMarkdownLinks(s,t,o):s instanceof ae?i=s.object:i=this.readPropertyValueText(n,a),!i)return"";let c=this.codeHighlighter(),l=mn(i,{highlight:(d,f)=>c.highlight(d,f)});for(let[d,f]of o){let p=new RegExp('(<a href="'+La(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
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=
|
|
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=st(n.declaration),a=[];for(let s of t){let o=cn(s);if(!o||!X(o,da))continue;let i=H(s,me);if(!i)continue;let c=this.readPropertyValueText(e,i);c&&a.push(c)}return a.length>0?a.join(`
|
|
149
149
|
|
|
150
|
-
`):void 0}renderHero(e,n,t){let a=b=>{let m=Ke(e,b);return m instanceof
|
|
151
|
-
`)}renderPropertyList(e,n,t){let a=
|
|
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,Lo);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=>G(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>`:"",F=o.map(L=>{let S=Ke(m,L.uri);return S?`<td>${this.tableCellValue(S,n,s)}</td>`:"<td></td>"}).join("");return`<tr${E}>${K}${U}${F}</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,ma)){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 Ea(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=mn(a,{highlight:(i,c)=>s.highlight(i,c)});for(let[i,c]of t){let l=new RegExp('(<a href="'+Ra(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=rt(e,ni);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=rt(e,Sa);if(a.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let s=this.readEmbeddedCarrier(e,pa),o=this.readEmbeddedCarrier(e,xo),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,Sa,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)??G(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=Ee(e,n);if(t.length===0)return Ke(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>=va)return"\u2026";let t=[];for(let a of e.statement){let s=a.predicate?.subject;if(!(s&&X(s,ze)))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 Ee(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>=va)return"\u2026";let a=[];for(let s of wa(e)){if(X(s,ze))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,ti);return t==="*"||t==="^"||t==="~"||t==="="?t:"="}readLabelForUri(e){let n=ee(this.catalog,e);if(n)return G(this.catalog,n).label}readCommentForUri(e){let n=ee(this.catalog,e);if(n)return G(this.catalog,n).summary}};function ai(r){let e=new Map;for(let n of r.statement){if(!(n instanceof le)||!Me(n,Pn.publisher,Pn.package_,Pn.name))continue;let t=n.object;for(let a of t.statement){if(!(a instanceof ae))continue;let s=a.predicate?.subject?.name;if(!s)continue;let o=a.object;e.has(s)||e.set(s,o)}}return e}function Un(r){for(let e of r.statement)if(e instanceof le&&Me(e,Fn.publisher,Fn.package_,Fn.name))return e.object}function at(r){return Ee(r,qo).map(e=>e.item).filter(e=>e instanceof D)}function cn(r){for(let e of r.statement)if(e instanceof J&&!(!e.predicate?.subject||!X(e.predicate.subject,ze))&&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 rt(r,e){return je(r,e).map(n=>({publisher:n.publisher,package_:n.package_,name:n.name}))}function wa(r){let e=new Map;for(let n of r.statement){let t=n.predicate?.subject;if(!t)continue;let a=`${t.publisher}/${t.package_}/${t.name}`;e.has(a)||e.set(a,{publisher:t.publisher,package_:t.package_,name:t.name})}return[...e.values()]}function Ke(r,e){for(let n of r.statement)if(Me(n,e.publisher,e.package_,e.name))return n}function Z(r,e){for(let n of r.statement)if(n instanceof ae&&Me(n,e.publisher,e.package_,e.name))return n.object}function On(r,e){for(let n of r.statement)if(n instanceof le&&Me(n,e.publisher,e.package_,e.name))return n.object}function _a(r,e){for(let n of r.statement)if(n instanceof he&&Me(n,e.publisher,e.package_,e.name))return n.object}function ri(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 si(r){for(let e of $e(r))if(X(e.subject,ns)||X(e.subject,ts))return!0;return!1}function $e(r){return Ee(r,ze).map(e=>e.item).filter(e=>e instanceof O)}function In(r){let e=[];for(let n of r.statement)if(n instanceof J){if(!n.predicate?.subject||!X(n.predicate.subject,ot))continue;n.object instanceof O&&e.push(n.object)}else if(n instanceof ue){if(!n.predicate?.subject||!X(n.predicate.subject,ot))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 Y&&a.name===e.name&&a.namespace===t)return a}for(let t of r){if(!(t instanceof Y)||t.name!==e.name)continue;if((t.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return t}}function 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 oi(r){let e=s=>s.replace(/\*\//g,"* /"),n=[];n.push(` * kanonak stylesheet \u2014 ${e(r.resource.namespace)}/${e(r.resource.name)}`),n.push(" *");let t=new Map;for(let s of r.tokens.values()){let o=`${s.sourceNamespace} ${s.sourceName}`,i=t.get(o)??{count:0,level:s.level};i.count+=1,t.set(o,i)}if(t.size===0)n.push(" * :root tokens: NONE resolved");else{n.push(` * :root tokens (${r.tokens.size}):`);for(let[s,{count:o,level:i}]of t)n.push(` * ${o} from ${e(s)} (${i})`)}let a=r.baseStylesheet;if(a.css!==void 0)n.push(` * base CSS: ${e(a.sourceNamespace??"")}/base-stylesheet (${a.css.length} bytes, ${a.scope})`);else{n.push(" *"),n.push(" * !! WARNING: NO BASE STYLESHEET \u2014 this file contains only :root tokens."),n.push(" * !! Pages will appear UNSTYLED.");for(let s of r.warnings)n.push(` * !! ${e(s)}`);n.push(" * !! Full diagnostics: /.well-known/kanonak-render")}if(r.look){let s=r.look.sourceClass;n.push(` * look: ${e(s.publisher)}/${e(s.package_)}/${e(s.name)}`)}return`/*
|
|
150
|
+
`):void 0}renderHero(e,n,t){let a=b=>{let m=Ke(e,b);return m instanceof ke?m.object===!0:m instanceof ae&&m.object==="true"},s=a(ni),o=!s&&a(ei),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=H(e,Xo);if(d){let b=this.readPropertyValueText(n,d);b&&l.push(`<span class="kan-hero-eyebrow">${k(Vn(b)??b)}</span>`)}let f=H(e,Yo),p="";f&&(p=this.readPropertyValueText(n,f)??""),p||(p=G(this.catalog,n).label),l.push(`<h1 class="kan-hero-title">${k(Vn(p)??p)}</h1>`);let g=H(e,Jo);if(g){let b=this.readPropertyValueText(n,g);b&&l.push(`<p class="kan-hero-subtitle">${k(Vn(b)??b)}</p>`)}let h=H(e,_a);if(h){let b=this.readPropertyValueReferences(n,h);if(b.length>0){let m=b.map(y=>this.renderBadge(y,_a,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=H(e,me);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,me,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=H(e,me);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=H(e,Oo);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=>G(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>`:"",O=l?`<th scope="row">${k(c[y]??"")}</th>`:"",T=o.map(L=>{let S=Ke(m,L.uri);return S?`<td>${this.tableCellValue(S,n,s)}</td>`:"<td></td>"}).join("");return`<tr${E}>${K}${O}${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,ha)){if(e instanceof be)return this.barMarkup(String(e.object));if(e instanceof ae&&Number.isFinite(Number(e.object)))return this.barMarkup(e.object)}if(e instanceof De)return this.statementToMarkdownHtml(e,n);if(e instanceof ae)return Ca(e.object);if(e instanceof be||e instanceof ke)return k(String(e.object));if(e instanceof Q&&e.object instanceof U)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 U?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 De?a=this.resolveMarkdownLinks(e,n,t):e instanceof ae&&(a=e.object),!a)return"";let s=this.codeHighlighter(),o=mn(a,{highlight:(i,c)=>s.highlight(i,c)});for(let[i,c]of t){let l=new RegExp('(<a href="'+La(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=H(e,me);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,me,t)).join("")}</div>`}renderChipRow(e,n,t){let a=ot(e,ri);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=ot(e,ja);if(a.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let s=this.readEmbeddedCarrier(e,ka),o=this.readEmbeddedCarrier(e,Uo),i=[];for(let c of a){let l=this.readPropertyValueReferences(n,c);if(l.length===0)continue;let d=this.readLabelForUri(c)??c.name;if(s){let f=[];for(let 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,ja,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)??G(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=Ee(e,n);if(t.length===0)return Ke(e,n)?"":void 0;let a=o=>o instanceof U?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>=wa)return"\u2026";let t=[];for(let a of e.statement){let s=a.predicate?.subject;if(!(s&&X(s,We)))if(a instanceof ae)t.push(a.object);else if(a instanceof be||a instanceof ke)t.push(String(a.object));else if(a instanceof Q){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 U)}valueItems(e,n){return Ee(e,n).map(t=>"literal"in t.item?t.item.value:t.item)}renderInlineValue(e,n,t,a=0){return e instanceof U?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>=wa)return"\u2026";let a=[];for(let s of Ka(e)){if(X(s,We))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,si);return t==="*"||t==="^"||t==="~"||t==="="?t:"="}readLabelForUri(e){let n=ee(this.catalog,e);if(n)return G(this.catalog,n).label}readCommentForUri(e){let n=ee(this.catalog,e);if(n)return G(this.catalog,n).summary}};function oi(r){let e=new Map;for(let n of r.statement){if(!(n instanceof le)||!Ne(n,Pn.publisher,Pn.package_,Pn.name))continue;let t=n.object;for(let a of t.statement){if(!(a instanceof ae))continue;let s=a.predicate?.subject?.name;if(!s)continue;let o=a.object;e.has(s)||e.set(s,o)}}return e}function Un(r){for(let e of r.statement)if(e instanceof le&&Ne(e,Tn.publisher,Tn.package_,Tn.name))return e.object}function st(r){return Ee(r,Wo).map(e=>e.item).filter(e=>e instanceof D)}function cn(r){for(let e of r.statement)if(e instanceof Q&&!(!e.predicate?.subject||!X(e.predicate.subject,We))&&e.object instanceof U){let n=e.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function H(r,e){for(let n of r.statement)if(n instanceof Q&&Ne(n,e.publisher,e.package_,e.name)&&n.object instanceof U){let t=n.object.subject;return{publisher:t.publisher,package_:t.package_,name:t.name}}}function ot(r,e){return je(r,e).map(n=>({publisher:n.publisher,package_:n.package_,name:n.name}))}function Ka(r){let e=new Map;for(let n of r.statement){let t=n.predicate?.subject;if(!t)continue;let a=`${t.publisher}/${t.package_}/${t.name}`;e.has(a)||e.set(a,{publisher:t.publisher,package_:t.package_,name:t.name})}return[...e.values()]}function Ke(r,e){for(let n of r.statement)if(Ne(n,e.publisher,e.package_,e.name))return n}function Z(r,e){for(let n of r.statement)if(n instanceof ae&&Ne(n,e.publisher,e.package_,e.name))return n.object}function On(r,e){for(let n of r.statement)if(n instanceof le&&Ne(n,e.publisher,e.package_,e.name))return n.object}function Ra(r,e){for(let n of r.statement)if(n instanceof be&&Ne(n,e.publisher,e.package_,e.name))return n.object}function ii(r,e){for(let n of r.statement)if(n instanceof ke&&Ne(n,e.publisher,e.package_,e.name))return n.object===!0;return!1}function ci(r){for(let e of $e(r))if(X(e.subject,rs)||X(e.subject,ss))return!0;return!1}function $e(r){return Ee(r,We).map(e=>e.item).filter(e=>e instanceof U)}function In(r){let e=[];for(let n of r.statement)if(n instanceof Q){if(!n.predicate?.subject||!X(n.predicate.subject,ct))continue;n.object instanceof U&&e.push(n.object)}else if(n instanceof ue){if(!n.predicate?.subject||!X(n.predicate.subject,ct))continue;for(let t of n.object??[])t instanceof U&&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 Y&&a.name===e.name&&a.namespace===t)return a}for(let t of r){if(!(t instanceof Y)||t.name!==e.name)continue;if((t.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return t}}function Ne(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 J(r){return`${r.publisher}/${r.package_}/${r.name}`}function li(r){let e=s=>s.replace(/\*\//g,"* /"),n=[];n.push(` * kanonak stylesheet \u2014 ${e(r.resource.namespace)}/${e(r.resource.name)}`),n.push(" *");let t=new Map;for(let s of r.tokens.values()){let o=`${s.sourceNamespace} ${s.sourceName}`,i=t.get(o)??{count:0,level:s.level};i.count+=1,t.set(o,i)}if(t.size===0)n.push(" * :root tokens: NONE resolved");else{n.push(` * :root tokens (${r.tokens.size}):`);for(let[s,{count:o,level:i}]of t)n.push(` * ${o} from ${e(s)} (${i})`)}let a=r.baseStylesheet;if(a.css!==void 0)n.push(` * base CSS: ${e(a.sourceNamespace??"")}/base-stylesheet (${a.css.length} bytes, ${a.scope})`);else{n.push(" *"),n.push(" * !! WARNING: NO BASE STYLESHEET \u2014 this file contains only :root tokens."),n.push(" * !! Pages will appear UNSTYLED.");for(let s of r.warnings)n.push(` * !! ${e(s)}`);n.push(" * !! Full diagnostics: /.well-known/kanonak-render")}if(r.look){let s=r.look.sourceClass;n.push(` * look: ${e(s.publisher)}/${e(s.package_)}/${e(s.name)}`)}return`/*
|
|
153
153
|
${n.join(`
|
|
154
154
|
`)}
|
|
155
|
-
*/`}function ie(r){let e=r.namespace||"",n=e.indexOf("/");return n>=0?e.substring(0,n):e}function k(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function
|
|
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,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Ie(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function Ea(r,e){return e==null?"":Ae(e)?e.value:r==="string-literal"?typeof e=="string"?e:String(e):Array.isArray(e)?e.map(n=>Ae(n)?n.value:Ie(typeof n=="string"?n:String(n))).join(""):Ie(typeof e=="string"?e:String(e))}function Ua(r){if(r==null)return"";if(typeof r=="string")return r;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Ae(r))return r.value;if(Array.isArray(r))return r.map(Ua).filter(n=>n!=="").join(", ");if(r instanceof U)return r.subject.name;if(r instanceof Y||r instanceof D)return r.name??"";let e=r.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function it(r,e){return r.length<=e?r:r.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function xa(r){return r.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function La(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ca(r){let e=Vn(r);return k(e||r)}function Vn(r){let e=/^(\d{4})-(\d{2})-(\d{2})([T ]\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?)?$/.exec(r.trim());if(!e)return;let n=Date.parse(r);if(!Number.isFinite(n))return;let t=new Date(n),s=`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][t.getUTCMonth()]} ${t.getUTCDate()}, ${t.getUTCFullYear()}`;if(!e[4])return s;let o=t.getUTCHours(),i=(o+11)%12+1,c=o>=12?"PM":"AM";return`${s} \xB7 ${i}:${String(t.getUTCMinutes()).padStart(2,"0")} ${c} UTC`}function Fn(r){if(!r)return"";let e=/^(\d{4})-(\d{2})-(\d{2})/.exec(r);return e?`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][parseInt(e[2],10)-1]??e[2]} ${parseInt(e[3],10)}`:r}function ui(){return new Set(An.bandDispatchUris().map(r=>`${r.publisher}/${r.package_}/${r.name}`))}export{q as a,bi as b,qe as c,Pt as d,Vt as e,G as f,Nt as g,Dt as h,Bt as i,zn as j,pn as k,zt as l,Yi as m,mn as n,Ae as o,pe as p,gn as q,Zn as r,xn as s,Me as t,An as u,ui as v};
|