@kanonak-protocol/sdk 5.34.0 → 5.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.d.ts +2 -0
- package/dist/browser.js +1 -1
- package/dist/{chunk-BMKA5YBF.js → chunk-26SO3A4B.js} +1 -1
- package/dist/{chunk-64A7JMOY.js → chunk-2Y6R3K5A.js} +1 -1
- package/dist/chunk-54D47DLS.js +1 -0
- package/dist/chunk-AVVLDZAZ.js +68 -0
- package/dist/chunk-D7QLWVPK.js +155 -0
- package/dist/chunk-JHQPXEMA.js +1 -0
- package/dist/chunk-MQBWSCNY.js +1 -0
- package/dist/{chunk-FLITV5YI.js → chunk-O35Y6QUW.js} +1 -1
- package/dist/{chunk-JIQNO36P.js → chunk-VEGFYZXG.js} +1 -1
- package/dist/chunk-ZYDJUGIA.js +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -1
- package/dist/look/LookRenderer.d.ts +10 -5
- package/dist/parsing/index.js +1 -1
- package/dist/producer/index.js +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/index.js +1 -1
- package/dist/transformations/index.js +1 -1
- package/dist/uri-helpers/PropertyValues.d.ts +74 -0
- package/dist/uri-helpers/UriHelpers.d.ts +37 -5
- package/dist/uri-helpers/index.d.ts +4 -2
- package/dist/uri-helpers/index.js +1 -1
- package/dist/validation/index.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-A7N2BMMP.js +0 -1
- package/dist/chunk-CJMVIOZX.js +0 -1
- package/dist/chunk-ESABMC5L.js +0 -1
- package/dist/chunk-FL42CQAH.js +0 -155
- package/dist/chunk-LO5IH6OE.js +0 -68
- package/dist/chunk-R53WM2ZP.js +0 -1
package/dist/chunk-FL42CQAH.js
DELETED
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import{a as it}from"./chunk-6VIUXP4N.js";import{a as vn,b as De,g as u,l as Sn}from"./chunk-A7N2BMMP.js";import{a as ct}from"./chunk-HF5FJBS2.js";import{a as ht}from"./chunk-PEJALHXK.js";import{a as D,ba as pt,ca as mt,na as en,oa as je,pa as nn,qa as $n,ua as kt}from"./chunk-ESABMC5L.js";import{A as ft,B as Te,C as gt,b as Ie,c as Y,d as x,g as Z,h as ge,i as fe,j as H,k as ee,l as B,m as ne,n as ie,o as lt,p as ut,q as Fe,r as w,t as Be,u as le,v as dt,w as ln,x as We,y as Le,z as _e}from"./chunk-CJMVIOZX.js";import{a as yn}from"./chunk-FUUTGGJS.js";import{c as hn,d as st,e as bn,g as ot}from"./chunk-QILEJIFU.js";var Q=class extends Error{constructor(n,t){super(`${n} (at ${t})`);this.path=t}path};function Qo(r,e){let n=r.name,t=Oa(e),a={catalog:e,depth:0};if(w(r,u.InstanceTransformation))return Sa(r,n,a,t);if(w(r,u.SetTransformation))return wa(r,n,a,t);throw new Q("Subject is not a recognized v3 transformation type \u2014 expected InstanceTransformation or SetTransformation",n)}function Sa(r,e,n,t){return{kind:"instance",name:r.name,inputPattern:_t(r,e),rule:wn(r,u.rule,`${e}.rule`,n),artifactName:wn(r,u.artifactName,`${e}.artifactName`,n),outputs:jt(r,`${e}.outputs`),overrides:Kt(r,`${e}.formatOverrides`,n),fragments:t}}function wa(r,e,n,t){let a=Ve(r,u.partitionBy);return{kind:"set",name:r.name,inputPattern:_t(r,e),rule:wn(r,u.rule,`${e}.rule`,n),artifactName:wn(r,u.artifactName,`${e}.artifactName`,n),outputs:jt(r,`${e}.outputs`),overrides:Kt(r,`${e}.formatOverrides`,n),partitionBy:a,fragments:t}}function _t(r,e){let n=un(r,u.inputPattern);if(!n)throw new Q("inputPattern is required",e);return _a(n,`${e}.inputPattern`)}function _a(r,e){let n=Ve(r,u.matchesClass);if(!n)throw new Q("matchesClass is required",e);let t=[];for(let o of we(r,u.requires))if(o instanceof H)t.push(Bn(o.object.subject));else if(o instanceof B)for(let i of o.object)i instanceof x&&t.push(Bn(i.subject));let a=[],s=0;for(let o of we(r,u.sortBy))if(o instanceof B)for(let i of o.object)i instanceof D&&a.push(bt(i,`${e}.sortBy[${s++}]`));else o instanceof ee&&a.push(bt(o.object,`${e}.sortBy[${s++}]`));return{matchesClass:n,requires:t,sortBy:a}}function bt(r,e){let n=Ve(r,u.byProperty);if(!n)throw new Q("SortKey.byProperty is required",e);let t=Ve(r,u.order);if(!t)throw new Q("SortKey.order is required",e);if(ie(t,u.ascending))return{byProperty:n,order:"ascending"};if(ie(t,u.descending))return{byProperty:n,order:"descending"};throw new Q(`SortKey.order must reference tx.ascending or tx.descending; got ${t.publisher}/${t.package_}/${t.name}`,e)}function wn(r,e,n,t){let a=un(r,e);if(!a)throw new Q("expression is required",n);return Pe(a,n,t)}function Pe(r,e,n){if(w(r,u.StringLiteral))return{kind:"string-literal",value:$e(r,u.stringLiteral,e)};if(w(r,u.IntegerLiteral))return{kind:"integer-literal",value:wt(r,u.integerLiteral,e)};if(w(r,u.DecimalLiteral))return{kind:"decimal-literal",value:wt(r,u.decimalLiteral,e)};if(w(r,u.BooleanLiteral))return{kind:"boolean-literal",value:Ta(r,u.booleanLiteral,e)};if(w(r,u.VarRef))return{kind:"var-ref",varName:$e(r,u.varName,e)};if(w(r,u.PropertyRead))return{kind:"property-read",source:S(r,u.readSource,`${e}.readSource`,n),readProp:He(r,u.readProp,e,"readProp")};if(w(r,u.Traverse))return{kind:"traverse",source:S(r,u.traverseSource,`${e}.traverseSource`,n),through:He(r,u.through,e,"through"),step:S(r,u.step,`${e}.step`,n)};if(w(r,u.BuildAstNode))return{kind:"build-ast-node",astClass:He(r,u.astClass,e,"astClass"),set:Ka(r,`${e}.set`,n)};if(w(r,u.When))return{kind:"when",condition:S(r,u.condition,`${e}.condition`,n),thenBuild:S(r,u.thenBuild,`${e}.thenBuild`,n),elseBuild:ja(r,u.elseBuild,`${e}.elseBuild`,n)};if(w(r,u.Concat))return{kind:"concat",parts:Mn(r,u.parts,`${e}.parts`,n)};if(w(r,u.Fallback))return{kind:"fallback",primary:S(r,u.primary,`${e}.primary`,n),alternate:S(r,u.alternate,`${e}.alternate`,n)};if(w(r,u.UriName))return{kind:"uri-name",source:S(r,u.uriNameOf,`${e}.uriNameOf`,n)};if(w(r,u.UriPublisher))return{kind:"uri-publisher",source:S(r,u.uriPublisherOf,`${e}.uriPublisherOf`,n)};if(w(r,u.UriPackage))return{kind:"uri-package",source:S(r,u.uriPackageOf,`${e}.uriPackageOf`,n)};if(w(r,u.UriVersion))return{kind:"uri-version",source:S(r,u.uriVersionOf,`${e}.uriVersionOf`,n)};if(w(r,u.SubjectUri))return{kind:"subject-uri",source:S(r,u.subjectOf,`${e}.subjectOf`,n)};if(w(r,u.UriLiteral))return{kind:"uri-literal",refTo:He(r,u.refTo,e,"refTo")};if(w(r,u.DisplayLabel))return{kind:"display-label",labelTarget:He(r,u.labelTarget,e,"labelTarget"),labelSource:He(r,u.labelSource,e,"labelSource")};if(w(r,u.ResolveRef))return{kind:"resolve-ref",source:S(r,u.resolveSource,`${e}.resolveSource`,n)};if(w(r,u.Normalize))return{kind:"normalize",source:S(r,u.normSource,`${e}.normSource`,n),normKind:Ra(r,e)};if(w(r,u.UnescapedString))return{kind:"unescaped-string",source:S(r,u.unescapedSource,`${e}.unescapedSource`,n)};if(w(r,u.RenderMarkdown))return{kind:"render-markdown",source:S(r,u.renderSource,`${e}.renderSource`,n),readProp:He(r,u.renderProp,e,"renderProp"),format:Ea(r,e)};if(w(r,u.IsSet))return{kind:"is-set",check:S(r,u.checkExpr,`${e}.checkExpr`,n)};if(w(r,u.CallFragment))return Ca(r,e,n);if(w(r,u.Join))return{kind:"join",source:S(r,u.source,`${e}.source`,n),separator:$e(r,u.separator,e)};if(w(r,u.Count))return{kind:"count",source:S(r,u.source,`${e}.source`,n)};if(w(r,u.Sum))return{kind:"sum",source:S(r,u.source,`${e}.source`,n)};if(w(r,u.Min))return{kind:"min",source:S(r,u.source,`${e}.source`,n)};if(w(r,u.Max))return{kind:"max",source:S(r,u.source,`${e}.source`,n)};if(w(r,u.Average))return{kind:"average",source:S(r,u.source,`${e}.source`,n)};if(w(r,u.ForEach))return{kind:"for-each",source:S(r,u.source,`${e}.source`,n),loopVar:$e(r,u.loopVar,e),emit:S(r,u.emit,`${e}.emit`,n)};if(w(r,u.ListMap))return{kind:"list-map",source:S(r,u.source,`${e}.source`,n),loopVar:$e(r,u.loopVar,e),mapBody:S(r,u.mapBody,`${e}.mapBody`,n)};if(w(r,u.Filter))return{kind:"filter",source:S(r,u.source,`${e}.source`,n),loopVar:$e(r,u.loopVar,e),predicate:S(r,u.predicate,`${e}.predicate`,n)};if(w(r,u.PartitionBy))return{kind:"partition-by",source:S(r,u.source,`${e}.source`,n),loopVar:$e(r,u.loopVar,e),partitionKey:S(r,u.partitionKey,`${e}.partitionKey`,n)};if(w(r,u.DistinctBy))return{kind:"distinct-by",source:S(r,u.source,`${e}.source`,n),loopVar:$e(r,u.loopVar,e),distinctKey:S(r,u.distinctKey,`${e}.distinctKey`,n)};if(w(r,u.AllStatements))return{kind:"all-statements",source:S(r,u.statementsOf,`${e}.statementsOf`,n)};if(w(r,u.StatementPredicate))return{kind:"statement-predicate",source:S(r,u.predicateOf,`${e}.predicateOf`,n)};if(w(r,u.StatementValue))return{kind:"statement-value",source:S(r,u.valueOf,`${e}.valueOf`,n)};if(w(r,u.DateFormat))return{kind:"date-format",source:S(r,u.dateSource,`${e}.dateSource`,n),format:xa(r,e)};if(w(r,u.NumberFormat)){let t=Nn(r,u.fractionDigits);if(t!==void 0&&(!Number.isInteger(t)||t<0||t>20))throw new Q(`fractionDigits must be an integer between 0 and 20; got ${t}`,e);let a=qe(r,u.currencyCode);return{kind:"number-format",source:S(r,u.numberSource,`${e}.numberSource`,n),style:La(r,e),...t!==void 0?{fractionDigits:t}:{},...a!==void 0?{currencyCode:a}:{}}}if(w(r,u.Add))return{kind:"add",left:S(r,u.arithLeft,`${e}.arithLeft`,n),right:S(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Subtract))return{kind:"subtract",left:S(r,u.arithLeft,`${e}.arithLeft`,n),right:S(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Multiply))return{kind:"multiply",left:S(r,u.arithLeft,`${e}.arithLeft`,n),right:S(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Divide))return{kind:"divide",left:S(r,u.arithLeft,`${e}.arithLeft`,n),right:S(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Reverse))return{kind:"reverse",source:S(r,u.source,`${e}.source`,n)};if(w(r,u.WindowedMap)){let t=Nn(r,u.windowSize);if(t===void 0||!Number.isInteger(t)||t<1)throw new Q("windowSize must be a positive integer",`${e}.windowSize`);return{kind:"windowed-map",source:S(r,u.source,`${e}.source`,n),windowSize:t,windowVar:$e(r,u.windowVar,e),windowBody:S(r,u.windowBody,`${e}.windowBody`,n)}}if(w(r,u.PairwiseMap))return{kind:"pairwise-map",source:S(r,u.source,`${e}.source`,n),firstVar:$e(r,u.firstVar,e),secondVar:$e(r,u.secondVar,e),pairBody:S(r,u.pairBody,`${e}.pairBody`,n)};if(w(r,u.Scan))return{kind:"scan",source:S(r,u.source,`${e}.source`,n),initialState:S(r,u.initialState,`${e}.initialState`,n),stateVar:$e(r,u.stateVar,e),elementVar:$e(r,u.elementVar,e),accumulate:S(r,u.accumulate,`${e}.accumulate`,n)};if(w(r,u.ListItemAt))return{kind:"list-item-at",source:S(r,u.source,`${e}.source`,n),itemIndex:S(r,u.itemIndex,`${e}.itemIndex`,n)};if(w(r,u.Equals))return{kind:"equals",left:S(r,u.compareLeft,`${e}.compareLeft`,n),right:S(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.GreaterThan))return{kind:"greater-than",left:S(r,u.compareLeft,`${e}.compareLeft`,n),right:S(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.LessThan))return{kind:"less-than",left:S(r,u.compareLeft,`${e}.compareLeft`,n),right:S(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.GreaterThanOrEqual))return{kind:"greater-than-or-equal",left:S(r,u.compareLeft,`${e}.compareLeft`,n),right:S(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.LessThanOrEqual))return{kind:"less-than-or-equal",left:S(r,u.compareLeft,`${e}.compareLeft`,n),right:S(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.Not))return{kind:"not",operand:S(r,u.operand,`${e}.operand`,n)};if(w(r,u.And))return{kind:"and",operands:Mn(r,u.operands,`${e}.operands`,n)};if(w(r,u.Or))return{kind:"or",operands:Mn(r,u.operands,`${e}.operands`,n)};if(w(r,u.Contains))return{kind:"contains",haystack:S(r,u.haystack,`${e}.haystack`,n),needle:S(r,u.needle,`${e}.needle`,n)};if(w(r,u.Abs))return{kind:"abs",value:S(r,u.value,`${e}.value`,n)};if(w(r,u.Negate))return{kind:"negate",value:S(r,u.value,`${e}.value`,n)};if(w(r,u.IsReference))return{kind:"is-reference",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsEmbedded))return{kind:"is-embedded",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsList))return{kind:"is-list",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsString))return{kind:"is-string",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsNumber))return{kind:"is-number",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsBoolean))return{kind:"is-boolean",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.StatementObject))return{kind:"statement-object",source:S(r,u.statementSource,`${e}.statementSource`,n)};if(w(r,u.Let))return{kind:"let",bindName:$e(r,u.letName,e),bindValue:S(r,u.letValue,`${e}.letValue`,n),body:S(r,u.letBody,`${e}.letBody`,n)};if(w(r,u.GetStatementByName))return{kind:"get-statement-by-name",inSubject:S(r,u.inSubject,`${e}.inSubject`,n),byName:S(r,u.byName,`${e}.byName`,n)};throw new Q("Expression is not of a recognized v3 type \u2014 embedded has no matching subclass of tx.Expression",e)}function S(r,e,n,t){let a=un(r,e);if(!a)throw new Q("child expression is required",n);return Pe(a,n,t)}function ja(r,e,n,t){let a=un(r,e);if(a)return Pe(a,n,t)}function Mn(r,e,n,t){let a=[],s=0;for(let o of we(r,e))if(o instanceof B)for(let i of o.object)i instanceof D&&a.push(Pe(i,`${n}[${s++}]`,t));else o instanceof ee&&a.push(Pe(o.object,`${n}[${s++}]`,t));return a}function Ka(r,e,n){let t=[],a=0;for(let s of we(r,u.set))if(s instanceof B)for(let o of s.object)o instanceof D&&t.push(yt(o,`${e}[${a++}]`,n));else s instanceof ee&&t.push(yt(s.object,`${e}[${a++}]`,n));return t}function yt(r,e,n){return{field:He(r,u.field,e,"field"),value:S(r,u.bindValue,`${e}.bindValue`,n)}}function Ra(r,e){let n=Ve(r,u.normKind);if(!n)throw new Q("normKind is required",e);if(ie(n,u.NORM_TRIM_END))return"trim-end";if(ie(n,u.NORM_TO_UPPER))return"to-upper";if(ie(n,u.NORM_TO_LOWER))return"to-lower";if(ie(n,u.NORM_FIRST_CHAR))return"first-char";throw new Q(`Unknown NormalizeKind: ${n.publisher}/${n.package_}/${n.name}`,e)}function Ea(r,e){let n=Ve(r,u.renderFormat);if(!n)throw new Q("renderFormat is required",e);if(ie(n,u.RENDER_HTML))return"html";if(ie(n,u.RENDER_MARKDOWN))return"markdown";throw new Q(`Unknown RenderFormat: ${n.publisher}/${n.package_}/${n.name}`,e)}var vt=new Set(["decimal","percent","basis-points","currency","compact"]);function La(r,e){let n=qe(r,u.numberStyle);if(n===void 0)throw new Q("numberStyle is required",e);if(!vt.has(n))throw new Q(`Unknown numberStyle "${n}"; supported: ${[...vt].join(", ")}`,e);return n}var $t=new Set(["iso-date","iso-datetime","short-date","long-date","year","month-year"]);function xa(r,e){let n=qe(r,u.dateFormat);if(!n)throw new Q("dateFormat is required",e);if(!$t.has(n))throw new Q(`Unknown dateFormat "${n}"; supported: ${[...$t].join(", ")}`,e);return n}function Ca(r,e,n){let t=Ve(r,u.fragmentRef);if(!t)throw new Q("fragmentRef is required",e);if(!Ia(n.catalog,t))throw new Q(`ExpressionFragment not found: ${t.publisher}/${t.package_}/${t.name}`,e);return{kind:"call-fragment",fragmentKey:Ua(t)}}function Ua(r){return`${r.publisher}/${r.package_}/${r.name}`}function Oa(r){let e=new Map,n=[];for(let t of r){if(!(t instanceof Y)||!w(t,u.ExpressionFragment))continue;let a=un(t,u.body);if(!a)continue;let s=(t.namespace||"").split("@")[0]||"",o=s.indexOf("/");if(o<0)continue;let i=s.substring(0,o),c=s.substring(o+1),l=`${i}/${c}/${t.name}`;n.push({key:l,subject:t,bodyEmb:a,pubPkgName:`${s}/${t.name}`})}for(let t of n){let a=Pe(t.bodyEmb,`fragment(${t.pubPkgName})`,{catalog:r,depth:0});e.set(t.key,a)}return e}function Ia(r,e){for(let n of r)if(!(!(n instanceof Y)||n.name!==e.name||!(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))&&w(n,u.ExpressionFragment))return n}function jt(r,e){let n=new Set;for(let t of we(r,u.outputs))if(t instanceof H)n.add(t.object.subject.name);else if(t instanceof B)for(let a of t.object)a instanceof x&&n.add(a.subject.name);if(n.size===0)throw new Q("outputs is required (at least one OutputFormat)",e);return n}function Kt(r,e,n){let t=new Map,a=0;for(let s of we(r,u.formatOverrides))if(s instanceof B){for(let o of s.object)if(o instanceof D){let[i,c]=St(o,`${e}[${a++}]`);t.set(i,c)}}else if(s instanceof ee){let[o,i]=St(s.object,`${e}[${a++}]`);t.set(o,i)}return t}function St(r,e){let n=Ve(r,u.formatTarget);if(!n)throw new Q("formatTarget is required",e);let t=[];for(let i of we(r,u.metadataKeys))if(i instanceof Z)t.push(i.object);else if(i instanceof B)for(let c of i.object){let l=c.value;typeof l=="string"&&t.push(l)}let a=new Map;for(let i of we(r,u.metadataRenames))if(i instanceof B){for(let c of i.object)if(c instanceof D){let l=qe(c,u.fromKey),d=qe(c,u.toKey);l&&d&&a.set(l,d)}}else if(i instanceof ee){let c=i.object,l=qe(c,u.fromKey),d=qe(c,u.toKey);l&&d&&a.set(l,d)}let s=Dn(r,u.trailingNewline),o=Dn(r,u.omitWrapper);return[n.name,{metadataKeys:t.length>0?t:void 0,metadataRenames:a,trailingNewline:s,omitWrapper:o}]}function Fa(r){return r.predicate?.subject}function we(r,e){let n=[];for(let t of r.statement){let a=Fa(t);a&&ie(a,e)&&n.push(t)}return n}function un(r,e){for(let n of we(r,e))if(n instanceof ee)return n.object}function Ve(r,e){for(let n of we(r,e))if(n instanceof H)return Bn(n.object.subject)}function qe(r,e){for(let n of we(r,e))if(n instanceof Z)return n.object}function Nn(r,e){for(let n of we(r,e))if(n instanceof ge)return n.object}function Dn(r,e){for(let n of we(r,e))if(n instanceof fe)return n.object}function $e(r,e,n){let t=qe(r,e);if(t===void 0)throw new Q(`${e.name} (string) is required`,n);return t}function wt(r,e,n){let t=Nn(r,e);if(t===void 0)throw new Q(`${e.name} (number) is required`,n);return t}function Ta(r,e,n){let t=Dn(r,e);if(t===void 0)throw new Q(`${e.name} (boolean) is required`,n);return t}function He(r,e,n,t){let a=Ve(r,e);if(!a)throw new Q(`${t} (URI reference) is required`,n);return a}function Bn(r){return{publisher:r.publisher,package_:r.package_,name:r.name}}var Ye="kanonak.org",Ct="look",dn="core-rdf",Pa={publisher:Ye,package_:Ct,name:"displayLabel"},Va={publisher:Ye,package_:Ct,name:"displaySummary"},Aa={publisher:Ye,package_:dn,name:"subClassOf"},Ma={publisher:Ye,package_:dn,name:"label"},Na={publisher:Ye,package_:dn,name:"comment"},Rt=new yn(Ye,dn,"Resource"),Da=8;function G(r,e){return Ut(r,e,new Set)}function Ut(r,e,n){let t=xt(r,e,Pa)??Ma,a=xt(r,e,Va)??Na,s=Et(r,e,t,n)??e.name,o=Et(r,e,a,n);return{label:s,summary:o}}function Et(r,e,n,t){for(let a of e.statement){let s=a.predicate;if(!(!s?.subject||!ie(s.subject,n))){if(a instanceof Z)return a.object;if(a instanceof ge||a instanceof fe)return String(a.object);if(a instanceof H)return Lt(r,a.object.subject,t);if(a instanceof B){let o=[];for(let i of a.object??[])if(i instanceof x){let c=Lt(r,i.subject,t);c&&o.push(c)}if(o.length>0)return o.join(", ")}return}}}function Lt(r,e,n){let t=ne(e);if(n.has(t)||n.size>=Da)return e.name;let[a]=le(r,e);if(!a)return e.name;let s=new Set(n);return s.add(t),Ut(r,a,s).label}function xt(r,e,n){let t=_e(e,n);if(t)return t;let a=new Set,s=Fe(e,Ba);for(;s.length>0;){let o=s.shift(),i=ne(o);if(a.has(i))continue;a.add(i);let c=le(r,o);for(let l of c){let d=_e(l,n);if(d)return d}for(let l of c)s.push(...Fe(l,Aa))}if(!a.has(ne(Rt)))for(let o of le(r,Rt)){let i=_e(o,n);if(i)return i}}var Ba={publisher:Ye,package_:dn,name:"type"};var Ha="kanonak.org",Xe=(r,e)=>({publisher:Ha,package_:r,name:e}),qa=Xe("look","source"),Ot=Xe("look","connectors"),Ga=Xe("look","relation"),za=Xe("look","lineStyle"),Wa=Xe("look","participants"),Ya=Xe("core-owl","SymmetricProperty"),Xa=Xe("core-owl","inverseOf"),It=new Set(["solid","dotted","open","thick"]);function Ft(r){return _e(r,qa)}function Tt(r,e){let n=ft(e,Ot),t=n?[n]:Te(e,Ot),a=[];for(let s of t){if(!(s instanceof D))continue;let o=_e(s,Ga);if(!o)continue;let i=Le(s,za),c=i!==void 0&&It.has(i);a.push({relation:o,subject:le(r,o)[0],declaredStyle:c?i:void 0,invalidStyle:i!==void 0&&!c?i:void 0})}return a}function Pt(r,e){let n=[];for(let t of Te(e,Wa)){if(!(t instanceof x))continue;let a=le(r,t.subject)[0];a&&n.push(a)}return n}function fn(r,e,n){for(let t of ut(e))if(ie(t,n)||nn(r,t).some(a=>ie(a,n)))return!0;return!1}function Vt(r,e,n){let t=!!e.subject&&fn(r,e.subject,Ya);return e.declaredStyle?{style:e.declaredStyle,undirected:t}:e.subject&&Fe(e.subject,Xa).some(s=>n.some(o=>ie(s,o.relation)))?{style:"dotted",undirected:t}:{style:"solid",undirected:t}}function Hn(r,e,n){let t=Ft(n);if(!t)return _n("the band declares no look.source");let a=Tt(r,n);if(a.length===0)return _n("the band declares no look.connectors \u2014 nothing can be a message");let s=dt(e,t);if(!s)return{..._n(),sourceAbsent:!0};if(!(s instanceof De))return _n(`look.source ${ne(t)} is not a Markdown-ranged property \u2014 the order of a sequence comes from prose [[references]]`);let o=[],i=[],c=0;for(let g of s.links){if(!g.target)continue;let b=g.target.subject,k=le(r,b)[0];k&&($n(r,k)!==void 0?a.some(v=>ie(b,v.relation))?o.push({kind:"selector",relation:b}):i.push(b):(o.push({kind:"participant",subject:k}),c++))}let l=[],d=[],f,p;for(let g of o){if(g.kind==="selector"){p=g.relation;continue}let b=g.subject;if(f){let k=p?a.filter(C=>ie(p,C.relation)):a,v=je(b),y=je(f),K=[],E=[];for(let C of k){let{style:T,undirected:_}=Vt(r,C,a);v&&Fe(f,C.relation).some(W=>ne(W)===ne(v))?K.push({from:f,to:b,relation:C.relation,style:T,undirected:_}):y&&Fe(b,C.relation).some(W=>ne(W)===ne(y))&&E.push({from:b,to:f,relation:C.relation,style:T,undirected:_})}let O=K.length>0?K:E;l.push(...O),O.length===0&&Ae(f)!==Ae(b)&&d.push({prev:f,next:b,selected:p}),p=void 0}f=b}let m=new Map;for(let g of Pt(r,n))m.set(Ae(g),g);for(let g of l)m.has(Ae(g.from))||m.set(Ae(g.from),g.from),m.has(Ae(g.to))||m.set(Ae(g.to),g.to);return{messages:l,gaps:d,lifelines:[...m.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 Qa="kanonak.org",Ja="core-shacl",Se=r=>({publisher:Qa,package_:Ja,name:r}),Za=Se("NodeShape"),er=Se("targetClass"),nr=Se("property"),tr=Se("path"),ar=Se("minCount"),rr=Se("maxCount"),sr=Se("in"),or=Se("pattern"),ir=Se("flags"),cr=Se("minLength"),lr=Se("maxLength"),ur=Se("minInclusive"),dr=Se("maxInclusive"),fr=Se("message");function tn(r){return typeof r=="number"?r:void 0}function pr(r){let e={},n=tn(We(r,ar)),t=tn(We(r,rr));n!==void 0&&(e.minCount=n),t!==void 0&&(e.maxCount=t);let a=tn(We(r,cr)),s=tn(We(r,lr));a!==void 0&&(e.minLength=a),s!==void 0&&(e.maxLength=s);let o=tn(We(r,ur)),i=tn(We(r,dr));o!==void 0&&(e.minInclusive=o),i!==void 0&&(e.maxInclusive=i);let c=Le(r,or);if(c!==void 0){let f=Le(r,ir);e.pattern=f!==void 0?{regex:c,flags:f}:{regex:c}}let l=Te(r,sr).filter(f=>f instanceof vn).map(f=>f.value);l.length>0&&(e.enumValues=l);let d=Le(r,fr);return d!==void 0&&(e.message=d),e}function mr(r,e){let n=[];for(let t of Te(e,nr))if(t instanceof D)n.push(t);else if(t instanceof x){let a=Be(r,t.subject);a&&n.push(a)}return n}function gr(r){let e=new Map;for(let n of r){if(!(n instanceof Y)||!w(n,Za))continue;let t=_e(n,er);if(!t)continue;let a=ne(t);for(let s of mr(r,n)){let o=_e(s,tr);if(!o)continue;let i=pr(s);if(kr(s,i))continue;let c={pathKey:ne(o),constraints:i},l=e.get(a);l?l.push(c):e.set(a,[c])}}return e}var At=new WeakMap;function pn(r){let e=At.get(r);return e||(e=gr(r),At.set(r,e)),e}function kr(r,e){return ln(r,pt)||ln(r,mt)?Object.keys(e).every(t=>t==="message"):!1}function hr(r,e){e.minCount!==void 0&&(r.minCount=e.minCount),e.maxCount!==void 0&&(r.maxCount=e.maxCount),e.minLength!==void 0&&(r.minLength=e.minLength),e.maxLength!==void 0&&(r.maxLength=e.maxLength),e.minInclusive!==void 0&&(r.minInclusive=e.minInclusive),e.maxInclusive!==void 0&&(r.maxInclusive=e.maxInclusive),e.pattern!==void 0&&(r.pattern=e.pattern),e.enumValues!==void 0&&(r.enumValues=e.enumValues),e.message!==void 0&&(r.message=e.message)}function Mt(r,e,n){let t=ne(n),a=!1,s={};for(let o=e.length-1;o>=0;o--){let i=r.get(ne(e[o]));if(i)for(let c of i)c.pathKey===t&&(a=!0,hr(s,c.constraints))}if(a)return s.cardinality=s.maxCount===1?"single":"list",s.required=(s.minCount??0)>=1,s}var Qe="kanonak.org",Kn="core-rdf",Dt="core-xsd",Nt={publisher:Qe,package_:Kn,name:"subClassOf"},Bt={publisher:Qe,package_:Kn,name:"label"},Ht={publisher:Qe,package_:Kn,name:"comment"},qt={publisher:Qe,package_:"core-owl",name:"oneOf"},Gt=r=>r;function br(r){let e=_e(r,Nt);if(e)return[e];let n=[];for(let t of Te(r,Nt))t instanceof x&&n.push(t.subject);return n}function yr(r,e,n){if(e.publisher===Qe&&e.package_===Kn&&e.name==="Literal")return{kind:"datatype",uri:e};let a=Be(r,e);if(a){let s=Gt(a);if(en.isDatatypeType(s))return{kind:"datatype",uri:e};if(en.isClassType(s))return{kind:"class",uri:je(a)??e,localName:a.name}}return e.publisher===Qe&&e.package_===Dt?{kind:"datatype",uri:e}:n==="datatype"?{kind:"datatype",uri:e}:{kind:"class",uri:e,localName:e.name}}function vr(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=yr(r,e.range,e.kind),a=e.kind==="object"?"object":e.kind==="datatype"?"datatype":t.kind==="class"?"object":"datatype";return{uri:e.uri,localName:e.uri.name,kind:a,range:t,...e.label!==void 0?{label:e.label}:{},...e.comment!==void 0?{comment:e.comment}:{},...n??{}}}var jn=r=>new yn(Qe,Dt,r);function $r(r){return typeof r=="boolean"?jn("boolean"):typeof r=="number"?Number.isInteger(r)?jn("integer"):jn("decimal"):jn("string")}function Sr(r,e){let n=[];for(let t of Te(e,qt))if(t instanceof x){let a=Be(r,t.subject),s=(a?je(a):void 0)??t.subject,o=a?Le(a,Bt):void 0,i=a?Le(a,Ht):void 0;n.push({kind:"individual",uri:s,localName:s.name,...o!==void 0?{label:o}:{},...i!==void 0?{comment:i}:{}})}else t instanceof vn&&n.push({kind:"literal",value:t.value,datatype:$r(t.value)});return n}function Rn(r,e,n,t){let a=nn(r,e),s=ne(e);return kt(r,e).filter(i=>n?!0:i.domains.some(c=>ne(c)===s)).map(i=>vr(r,i,Mt(t,a,i.uri)))}async function Ci(r,e,n){let t=r.metadata?.namespace_;if(!t)throw new Error("buildOntologyModel: document has no namespace (publisher/package/version).");let a=n?.includeInherited??!1,s=Array.isArray(e)?e:await new Sn().parseKanonaks(e),o=pn(s),i=p=>p.publisher===t.publisher&&p.package_===t.package_&&!(p.version&&t.version&&!st(p.version,t.version)),c=[],l=[],d=new Set,f=!1;for(let p of s){if(!(p instanceof Y))continue;let m=je(p);if(!m||!i(m)||(f=!0,!en.isClassType(Gt(p))))continue;let g=ne(m);if(d.has(g))continue;d.add(g);let b=br(p).map(y=>({uri:y,localName:y.name})),k=Le(p,Bt),v=Le(p,Ht);c.push({uri:m,localName:m.name,superClasses:b,properties:Rn(s,m,a,o),...k!==void 0?{label:k}:{},...v!==void 0?{comment:v}:{}}),ln(p,qt)&&l.push({uri:m,localName:m.name,members:Sr(s,p),...k!==void 0?{label:k}:{},...v!==void 0?{comment:v}:{}})}if(!f)throw new Error(`buildOntologyModel: ${t.toString()} is not in the ${Array.isArray(e)?"catalog":"repository"} \u2014 a model can only be built for a document ${Array.isArray(e)?"the catalog was parsed from":"the repository holds"}.`);return{classes:c,enums:l}}function mn(r,e={}){let n=r.replace(/\r\n/g,`
|
|
2
|
-
`).split(`
|
|
3
|
-
`),t=[],a=0;for(;a<n.length;){let s=n[a];if(s.trim()===""){a++;continue}let o=/^(\s*)```(\S*)\s*$/.exec(s);if(o){let l=o[2],d=[];for(a++;a<n.length&&!/^(\s*)```\s*$/.test(n[a]);)d.push(n[a]),a++;a++;let f=d.join(`
|
|
4
|
-
`),p=l&&e.highlight?e.highlight(l,f):rn(f),m=l?` class="language-${Wt(l)}"`:"";t.push(`<pre class="kan-code"><code${m}>${p}</code></pre>`);continue}let i=/^(#{1,6})\s+(.*)$/.exec(s);if(i){let l=i[1].length,d=an(i[2].trim());t.push(`<h${l}>${d}</h${l}>`),a++;continue}if(s.includes("|")&&a+1<n.length&&zt(n[a+1])){let l=qn(s),d=wr(n[a+1]);a+=2;let f=[];for(;a<n.length&&n[a].trim()!==""&&n[a].includes("|");)f.push(qn(n[a])),a++;t.push(_r(l,d,f));continue}if(/^\s*[-*]\s+/.test(s)){let l=[];for(;a<n.length&&/^\s*[-*]\s+/.test(n[a]);){let d=[n[a].replace(/^\s*[-*]\s+/,"")];for(a++;a<n.length&&n[a].trim()!==""&&!/^\s*[-*]\s+/.test(n[a])&&!/^\s*\d+\.\s+/.test(n[a]);)d.push(n[a]),a++;a<n.length&&n[a].trim()===""&&a++,l.push(`<li>${an(d.join(" ").trim())}</li>`)}t.push(`<ul>
|
|
5
|
-
${l.join(`
|
|
6
|
-
`)}
|
|
7
|
-
</ul>`);continue}if(/^\s*\d+\.\s+/.test(s)){let l=[];for(;a<n.length&&/^\s*\d+\.\s+/.test(n[a]);){let d=[n[a].replace(/^\s*\d+\.\s+/,"")];for(a++;a<n.length&&n[a].trim()!==""&&!/^\s*\d+\.\s+/.test(n[a])&&!/^\s*[-*]\s+/.test(n[a]);)d.push(n[a]),a++;a<n.length&&n[a].trim()===""&&a++,l.push(`<li>${an(d.join(" ").trim())}</li>`)}t.push(`<ol>
|
|
8
|
-
${l.join(`
|
|
9
|
-
`)}
|
|
10
|
-
</ol>`);continue}let c=[s];for(a++;a<n.length&&n[a].trim()!==""&&!/^(#{1,6})\s+/.test(n[a])&&!/^(\s*)```/.test(n[a])&&!/^\s*[-*]\s+/.test(n[a])&&!/^\s*\d+\.\s+/.test(n[a])&&!(n[a].includes("|")&&a+1<n.length&&zt(n[a+1]));)c.push(n[a]),a++;t.push(`<p>${an(c.join(" "))}</p>`)}return t.join(`
|
|
11
|
-
`)}function zt(r){return r.includes("-")?/^[\s|:-]+$/.test(r):!1}function qn(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 wr(r){return qn(r).map(e=>{let n=e.startsWith(":"),t=e.endsWith(":");return n&&t?"center":t?"right":n?"left":null})}function _r(r,e,n){let t=o=>{let i=e[o];return i?` style="text-align:${i}"`:""},a=r.map((o,i)=>`<th${t(i)}>${an(o)}</th>`).join(""),s=n.map(o=>`<tr>${o.map((c,l)=>`<td${t(l)}>${an(c)}</td>`).join("")}</tr>`).join(`
|
|
12
|
-
`);return`<table>
|
|
13
|
-
<thead><tr>${a}</tr></thead>
|
|
14
|
-
<tbody>
|
|
15
|
-
${s}
|
|
16
|
-
</tbody>
|
|
17
|
-
</table>`}function an(r){let e=rn(r);return e=e.replace(/`([^`\n]+)`/g,(n,t)=>`<code>${t}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(n,t,a)=>`<a href="${Wt(a)}">${t}</a>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,(n,t)=>`<strong>${t}</strong>`),e=e.replace(/(^|[^*])\*([^*\n]+)\*(?!\*)/g,(n,t,a)=>`${t}<em>${a}</em>`),e=e.replace(/(^|[\s(])_([^_\n]+)_(?=[\s).,;:!?]|$)/g,(n,t,a)=>`${t}<em>${a}</em>`),e}function rn(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Wt(r){return r.replace(/"/g,""").replace(/&/g,"&")}var jr={publisher:"kanonak.org",package_:"core-rdf",name:"label"};function Je(r){return typeof r=="object"&&r!==null&&r.kind==="raw-string"}var Ce=class extends Error{},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 Ce(`Unbound variable "${e.varName}"`);return n.get(e.varName)}case"concat":{let t=[];for(let a of e.parts){let s=await this.evaluate(a,n);if(s!=null)if(Array.isArray(s))for(let o of s)t.push(o);else t.push(s)}return t}case"fallback":{let t=await this.evaluate(e.primary,n);return Yt(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 Yt(t)}case"property-read":{let t=await this.evaluate(e.source,n);return En(t,e.readProp)}case"traverse":{let t=await this.evaluate(e.source,n);if(!(t instanceof Ie))return;let a=Rr(t,e.through),s=[];for(let o of a){let i=le(this.catalog,o),c=i.length>0?i:[await this.resolver.resolveSubject(o,this.catalog)];for(let l of c){if(!l)continue;let d=new Map(n);d.set("input",l);let f=await this.evaluate(e.step,d);if(f!=null&&Ge(f)!==""){s.push(Ge(f));break}}}return s.join("")}case"uri-name":{let t=await this.evaluate(e.source,n);return sn(t)?t.name:t instanceof x?t.subject.name:t instanceof Y?t.name:t instanceof D?t.name??"":void 0}case"uri-publisher":{let t=await this.evaluate(e.source,n);return Gn(t)?.publisher}case"uri-package":{let t=await this.evaluate(e.source,n);return Gn(t)?.package_}case"uri-version":{let t=await this.evaluate(e.source,n);return Gn(t)?.version}case"subject-uri":{let t=await this.evaluate(e.source,n);if(t instanceof Y){let a=t.namespace??"",s=t.name??"";return!a||!s?void 0:`${a}/${s}`}if(t instanceof x){let a=t.subject,s=a.version;return s&&typeof s.major=="number"?`${a.publisher}/${a.package_}@${s.major}.${s.minor}.${s.patch}/${a.name}`:`${a.publisher}/${a.package_}/${a.name}`}return}case"display-label":{let t=await this.resolver.resolveSubject({...e.labelTarget},this.catalog);return t?En(t,e.labelSource):void 0}case"resolve-ref":{let t=await this.evaluate(e.source,n);return t instanceof Y?t:t instanceof x?await this.resolver.resolveSubject(t.subject,this.catalog):sn(t)?await this.resolver.resolveSubject(t,this.catalog):void 0}case"normalize":{let t=await this.evaluate(e.source,n),a=t==null?"":Ge(t);return e.normKind==="trim-end"?a.replace(/[\s\r\n]+$/u,""):e.normKind==="to-upper"?a.toUpperCase():e.normKind==="to-lower"?a.toLowerCase():e.normKind==="first-char"?a.length===0?"":a.charAt(0):a}case"unescaped-string":{let t=await this.evaluate(e.source,n);return{kind:"raw-string",value:t==null?"":Ge(t)}}case"render-markdown":{let t=await this.evaluate(e.source,n);if(!(t instanceof Ie))return;let a;for(let o of t.statement){let i=Wn(o);if(i&&ie(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;Lr.has(o)&&(Array.isArray(s)&&s.every(i=>Xt(i))?s=s.map(i=>Qt(i)).join(""):Xt(s)&&(s=Qt(s))),t[o]=s}return t}case"call-fragment":{let t=this.fragments.get(e.fragmentKey);if(!t)throw new Ce(`ExpressionFragment ${e.fragmentKey} not found in registry`);return this.evaluate(t,n)}case"join":return(await this.evaluateList(e.source,n)).map(a=>a==null?"":Ge(a)).join(e.separator);case"count":return(await this.evaluateList(e.source,n)).length;case"sum":{let t=await this.evaluateList(e.source,n),a=0;for(let s of t)a+=be(s,"Sum");return a}case"min":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Ce("Min on an empty list is undefined; guard with IsSet");let a=be(t[0],"Min");for(let s=1;s<t.length;s++){let o=be(t[s],"Min");o<a&&(a=o)}return a}case"max":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Ce("Max on an empty list is undefined; guard with IsSet");let a=be(t[0],"Max");for(let s=1;s<t.length;s++){let o=be(t[s],"Max");o>a&&(a=o)}return a}case"average":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Ce("Average on an empty list is undefined; guard with IsSet");let a=0;for(let s of t)a+=be(s,"Average");return a/t.length}case"for-each":{let t=await this.evaluateList(e.source,n),a=[];for(let s of t){let o=new Map(n);o.set(e.loopVar,Ke(s));let i=await this.evaluate(e.emit,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}case"list-map":{let t=await this.evaluateList(e.source,n),a=[];for(let s of t){let o=new Map(n);o.set(e.loopVar,Ke(s)),a.push(await this.evaluate(e.mapBody,o))}return a}case"filter":{let t=await this.evaluateList(e.source,n),a=[];for(let s of t){let o=new Map(n);o.set(e.loopVar,Ke(s)),await this.evaluate(e.predicate,o)===!0&&a.push(s)}return a}case"partition-by":{let t=await this.evaluateList(e.source,n),a=new Map,s=[];for(let o of t){let i=new Map(n);i.set(e.loopVar,Ke(o));let c=await this.evaluate(e.partitionKey,i),l=ea(c),d=a.get(l);d||(d={kind:"Partition",key:c,members:[]},a.set(l,d),s.push(l)),d.members.push(o)}return s.map(o=>a.get(o))}case"distinct-by":{let t=await this.evaluateList(e.source,n),a=new Set,s=[];for(let o of t){let i=new Map(n);i.set(e.loopVar,Ke(o));let c=await this.evaluate(e.distinctKey,i),l=ea(c);a.has(l)||(a.add(l),s.push(o))}return s}case"all-statements":{let t=await this.evaluate(e.source,n);return t instanceof Ie?t.statement:[]}case"statement-predicate":{let t=await this.evaluate(e.source,n);if(zn(t)){let a=t.predicate;if(a instanceof x)return a}return}case"statement-value":{let t=await this.evaluate(e.source,n);return zn(t)?Pr(t):void 0}case"date-format":{let t=await this.evaluate(e.source,n),a=t==null?"":Ge(t);return a?Cr(a,e.format):""}case"number-format":{let t=await this.evaluate(e.source,n),a=t==null?"":Ge(t);return a.trim()?Tr(a,e.style,e.fractionDigits,e.currencyCode):""}case"add":{let t=be(await this.evaluate(e.left,n),"Add"),a=be(await this.evaluate(e.right,n),"Add");return t+a}case"subtract":{let t=be(await this.evaluate(e.left,n),"Subtract"),a=be(await this.evaluate(e.right,n),"Subtract");return t-a}case"multiply":{let t=be(await this.evaluate(e.left,n),"Multiply"),a=be(await this.evaluate(e.right,n),"Multiply");return t*a}case"divide":{let t=be(await this.evaluate(e.left,n),"Divide"),a=be(await this.evaluate(e.right,n),"Divide");if(a===0)throw new Ce("Divide by zero; guard with When");return t/a}case"reverse":{if(e.source.kind==="reverse")return this.evaluate(e.source.source,n);let t=await this.evaluateReverseIterator(e.source,n);return t!==void 0?t:[...await this.evaluateList(e.source,n)].reverse()}case"windowed-map":{let t=await this.evaluateList(e.source,n);if(t.length<e.windowSize)return[];let a=[];for(let s=0;s+e.windowSize<=t.length;s++){let o=t.slice(s,s+e.windowSize),i=new Map(n);i.set(e.windowVar,o);let c=await this.evaluate(e.windowBody,i);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}case"pairwise-map":{let t=await this.evaluateList(e.source,n);if(t.length<2)return[];let a=[];for(let s=0;s+1<t.length;s++){let o=new Map(n);o.set(e.firstVar,Ke(t[s])),o.set(e.secondVar,Ke(t[s+1]));let i=await this.evaluate(e.pairBody,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}case"scan":{let t=await this.evaluateList(e.source,n);if(t.length===0)return[];let a=await this.evaluate(e.initialState,n),s=[];for(let o of t){let i=new Map(n);i.set(e.stateVar,a),i.set(e.elementVar,Ke(o));let c=await this.evaluate(e.accumulate,i);s.push(c),a=c}return s}case"list-item-at":{let t=await this.evaluateList(e.source,n),a=await this.evaluate(e.itemIndex,n);return typeof a!="number"||!Number.isInteger(a)||a<0||a>=t.length?void 0:t[a]}case"equals":{let t=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return Jt(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(Jt(s,a))return!0;return!1}case"abs":{let t=be(await this.evaluate(e.value,n),"Abs");return Math.abs(t)}case"negate":return-be(await this.evaluate(e.value,n),"Negate");case"is-reference":{let t=await this.evaluate(e.check,n);return t instanceof x||t instanceof Y}case"is-embedded":return await this.evaluate(e.check,n)instanceof D;case"is-list":{let t=await this.evaluate(e.check,n);return Array.isArray(t)}case"is-string":return typeof await this.evaluate(e.check,n)=="string";case"is-number":return typeof await this.evaluate(e.check,n)=="number";case"is-boolean":return typeof await this.evaluate(e.check,n)=="boolean";case"statement-object":{let t=await this.evaluate(e.source,n);if(!zn(t))return;let a=t;return a instanceof Z||a instanceof ge||a instanceof fe||a instanceof H||a instanceof ee||a instanceof B?a.object:void 0}case"let":{let t=await this.evaluate(e.bindValue,n),a=new Map(n);return a.set(e.bindName,t),this.evaluate(e.body,a)}case"get-statement-by-name":{let t=await this.evaluate(e.inSubject,n),a=await this.evaluate(e.byName,n);if(!(t instanceof Ie)||typeof a!="string")return;for(let s of t.statement)if(s.predicate?.subject?.name===a)return s;return}default:{let t=e;throw new Ce("Unknown expression kind")}}}async renderMarkdownLinks(e){let n=e.object,t="",a=0;for(let s of e.links){if(t+=n.slice(a,s.startOffset),s.target){let o=s.target.subject,i=s.displayText??await this.resolveLabel(o)??o.name;t+=`[${i}](${lt(o)})`}else t+=s.displayText??s.reference;a=s.endOffset}return t+=n.slice(a),t}async resolveLabel(e){let n=await this.resolver.resolveSubject(e,this.catalog);if(!n)return;let t=En(n,jr);return typeof t=="string"?t:void 0}async evaluateList(e,n){let t=await this.evaluate(e,n);return t==null?[]:Array.isArray(t)?t:[t]}async evaluateReverseIterator(e,n){if(e.kind==="pairwise-map"){let t=await this.evaluateList(e.source,n);if(t.length<2)return[];let a=[];for(let s=t.length-1;s>=1;s--){let o=new Map(n);o.set(e.firstVar,Ke(t[s-1])),o.set(e.secondVar,Ke(t[s]));let i=await this.evaluate(e.pairBody,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}if(e.kind==="for-each"){let t=await this.evaluateList(e.source,n),a=[];for(let s=t.length-1;s>=0;s--){let o=new Map(n);o.set(e.loopVar,Ke(t[s]));let i=await this.evaluate(e.emit,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}if(e.kind==="list-map"){let t=await this.evaluateList(e.source,n),a=[];for(let s=t.length-1;s>=0;s--){let o=new Map(n);o.set(e.loopVar,Ke(t[s])),a.push(await this.evaluate(e.mapBody,o))}return a}if(e.kind==="windowed-map"){let t=await this.evaluateList(e.source,n);if(t.length<e.windowSize)return[];let a=[];for(let s=t.length-e.windowSize;s>=0;s--){let o=t.slice(s,s+e.windowSize),i=new Map(n);i.set(e.windowVar,o);let c=await this.evaluate(e.windowBody,i);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}}};function En(r,e){if(r instanceof Ie)return Kr(r,e);if(Er(r))return ie(e,u.key)?r.key:ie(e,u.members)?r.members:void 0}function Kr(r,e){for(let n of r.statement){let t=Wn(n);if(!(!t||!ie(t,e))&&(n instanceof Z||n instanceof ge||n instanceof fe||n instanceof H||n instanceof ee||n instanceof B))return n.object}}function Rr(r,e){let n=[];for(let t of r.statement){let a=Wn(t);if(!(!a||!ie(a,e))){if(t instanceof H)n.push(t.object.subject);else if(t instanceof B)for(let s of t.object)s instanceof x&&n.push(s.subject)}}return n}function Wn(r){return r.predicate?.subject}function Ge(r){if(r==null)return"";if(typeof r=="string")return r;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Je(r))return r.value;if(r instanceof Ie)return r.name??"";if(r instanceof x)return r.subject.name;if(sn(r))return r.name;let e=r.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function Ke(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)&&!(r instanceof Ie)&&!(r instanceof x)&&!(r instanceof D)&&"value"in r?r.value:r}function Yt(r){return r==null?!1:typeof r=="string"||Array.isArray(r)?r.length>0:typeof r=="boolean"?r===!0:!0}function sn(r){return typeof r=="object"&&r!==null&&typeof r.publisher=="string"&&typeof r.package_=="string"&&typeof r.name=="string"}function Er(r){return typeof r=="object"&&r!==null&&r.kind==="Partition"&&Array.isArray(r.members)}function be(r,e){if(typeof r=="number"&&Number.isFinite(r))return r;throw new Ce(`${e} requires numeric elements; got ${xr(r)}`)}function Gn(r){if(r instanceof Y){let e=r.namespace??"",n=e.indexOf("/"),t=e.indexOf("@",n+1);return n<0||t<0?void 0:{publisher:e.substring(0,n),package_:e.substring(n+1,t),version:e.substring(t+1),name:r.name??""}}if(r instanceof x){let e=r.subject,n=e.version;return{publisher:e.publisher,package_:e.package_,version:n&&typeof n.major=="number"?`${n.major}.${n.minor}.${n.patch}`:"",name:e.name}}if(sn(r))return{publisher:r.publisher,package_:r.package_,version:"",name:r.name}}var Lr=new Set(["stringValue","text","rawContent","key","propertyKey","linkLabel"]);function Xt(r){return typeof r=="string"||typeof r=="number"||typeof r=="boolean"||Je(r)}function Qt(r){return Je(r)?r.value:String(r)}function xr(r){return r===void 0?"undefined":r===null?"null":Array.isArray(r)?`array(${r.length})`:typeof r}function Cr(r,e){let n=new Date(r);if(isNaN(n.getTime()))return"";let t=n.getUTCFullYear(),a=["January","February","March","April","May","June","July","August","September","October","November","December"][n.getUTCMonth()],s=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][n.getUTCMonth()],o=n.getUTCDate(),i=(c,l=2)=>String(c).padStart(l,"0");switch(e){case"iso-date":return`${t}-${i(n.getUTCMonth()+1)}-${i(o)}`;case"iso-datetime":return`${t}-${i(n.getUTCMonth()+1)}-${i(o)}T${i(n.getUTCHours())}:${i(n.getUTCMinutes())}:${i(n.getUTCSeconds())}Z`;case"short-date":return`${s} ${o}`;case"long-date":return`${a} ${o}, ${t}`;case"year":return String(t);case"month-year":return`${a} ${t}`}}var Ur={USD:"$",EUR:"\u20AC",GBP:"\xA3",JPY:"\xA5"},Or={decimal:0,currency:0,compact:0,percent:2,"basis-points":4};function Ir(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 Fr(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 Tr(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=Ir(s,Or[e]??0);switch(n!==void 0&&(o=Number(o).toFixed(n)),e){case"percent":return`${o}%`;case"basis-points":return`${o} bp`;case"currency":{let i=(t??"USD").toUpperCase(),c=Ur[i]??`${i} `,l=o.startsWith("-");return`${l?"-":""}${c}${Fr(l?o.slice(1):o)}`}default:return o}}function Jt(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=Zt(r),i=Zt(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 Zt(r){if(r instanceof x){let e=r.subject;return{publisher:e.publisher,package_:e.package_,name:e.name}}if(r instanceof Y){let e=r.namespace??"",n=e.indexOf("/"),t=e.indexOf("@",n+1);if(n<0)return;let a=e.substring(0,n),s=t>=0?e.substring(n+1,t):e.substring(n+1);return{publisher:a,package_:s,name:r.name??""}}if(sn(r))return{publisher:r.publisher,package_:r.package_,name:r.name}}function zn(r){return r instanceof Z||r instanceof ge||r instanceof fe||r instanceof H||r instanceof ee||r instanceof B}function Pr(r){return r instanceof Z||r instanceof ge||r instanceof fe?String(r.object??""):r instanceof H?r.object?.subject?.name??"":r instanceof ee?"[embedded]":r instanceof B?(r.object??[]).map(n=>{if(n instanceof x)return n.subject.name;let t=n.name;if(t&&t.length>0)return t;let a=n.value;return typeof a=="string"||typeof a=="number"||typeof a=="boolean"?String(a):"[embedded]"}).join(", "):""}function ea(r){if(r===void 0)return"\0undef";if(r===null)return"\0null";if(typeof r=="string")return`s:${r}`;if(typeof r=="number")return`n:${r}`;if(typeof r=="boolean")return`b:${r}`;if(r instanceof x){let e=r.subject;return`r:${e.publisher}/${e.package_}/${e.name}`}if(r instanceof Ie){let e=r.name??"";return`k:${r.namespace??""}/${e}`}return sn(r)?`u:${r.publisher}/${r.package_}/${r.name}`:`o:${JSON.stringify(r)}`}var Ln=class{constructor(e,n,t){this.repository=e;this.parser=n;this.objectParser=t}repository;parser;objectParser;cache=new Map;async resolveSubject(e,n){let t=Be(n,e);if(t)return t;let a=e.version,s=a&&typeof a.major=="number"?`@${a.major}.${a.minor}.${a.patch}`:"",o=`${e.publisher}/${e.package_}${s}`,i=this.cache.get(o);if(!i){let l=await this.repository.getDocumentsByNamespaceAsync(e.publisher,e.package_);if(l.length===0)return;let d=a&&typeof a.major=="number"?l.find(p=>{let m=p.metadata?.namespace_?.version;return m&&m.major===a.major&&m.minor===a.minor&&m.patch===a.patch})??l[0]:l[0],f=new gt(d,this.repository);i=await this.objectParser.parseKanonaks(f),this.cache.set(o,i)}let c=Be(i,e);if(c)return c;for(let l of i)if(l instanceof Y&&l.name===e.name)return l}};var xn=class{byLang=new Map;constructor(e){for(let n of e){if(!n.language)continue;let t=[];for(let a of n.rules){if(!a.tokenClass||!a.pattern)continue;let s;try{s=new RegExp(a.pattern,"y")}catch{continue}t.push({tokenClass:a.tokenClass,re:s})}this.byLang.set(n.language,t)}}has(e){return this.byLang.has(e)}highlight(e,n){let t=this.byLang.get(e);return!t||t.length===0?rn(n):n.split(`
|
|
18
|
-
`).map(a=>this.highlightLine(a,t)).join(`
|
|
19
|
-
`)}highlightLine(e,n){let t="",a=0;for(;a<e.length;){let s=!1;for(let o of n){o.re.lastIndex=a;let i=o.re.exec(e);if(i&&i[0].length>0){t+=`<span class="kan-tok-${o.tokenClass}">${rn(i[0])}</span>`,a+=i[0].length,s=!0;break}}s||(t+=rn(e[a]),a++)}return t}};var Tn={publisher:"kanonak.org",package_:"derivation",name:"look"},Pn={publisher:"kanonak.org",package_:"derivation",name:"tokens"},xe={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},Yn={publisher:"kanonak.org",package_:"core-rdf",name:"label"},na={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},Vr={publisher:"kanonak.org",package_:"core-rdf",name:"range"},Ar={publisher:"kanonak.org",package_:"core-rdf",name:"Class"},Mr={publisher:"kanonak.org",package_:"core-owl",name:"Class"},Nr={publisher:"kanonak.org",package_:"look",name:"Hero"},Dr={publisher:"kanonak.org",package_:"look",name:"PropertyList"},Br={publisher:"kanonak.org",package_:"look",name:"PropertyTable"},Hr={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},qr={publisher:"kanonak.org",package_:"look",name:"ChipRow"},Gr={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},zr={publisher:"kanonak.org",package_:"look",name:"ReferencedBy"},Wr={publisher:"kanonak.org",package_:"look",name:"Instances"},ta={publisher:"kanonak.org",package_:"look",name:"Markdown"},Yr={publisher:"kanonak.org",package_:"look",name:"NavGroup"},Xr={publisher:"kanonak.org",package_:"look",name:"nav"},Xn={publisher:"kanonak.org",package_:"look",name:"NavLink"},Qr={publisher:"kanonak.org",package_:"look",name:"footer"},Jr={publisher:"kanonak.org",package_:"look",name:"text"},Zr={publisher:"kanonak.org",package_:"look",name:"links"},aa={publisher:"kanonak.org",package_:"look",name:"target"},es={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},ns={publisher:"kanonak.org",package_:"look",name:"Timeline"},ts={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},as={publisher:"kanonak.org",package_:"look",name:"Figure"},rs={publisher:"kanonak.org",package_:"look",name:"Diagram"},ss={publisher:"kanonak.org",package_:"look",name:"facets"},os={publisher:"kanonak.org",package_:"look",name:"relation"},is={publisher:"kanonak.org",package_:"look",name:"encode"},cs={publisher:"kanonak.org",package_:"look",name:"cluster"},ls={publisher:"kanonak.org",package_:"look",name:"connector"},us={publisher:"kanonak.org",package_:"look",name:"channels"},ds={publisher:"kanonak.org",package_:"look",name:"mapPath"},fs={publisher:"kanonak.org",package_:"look",name:"to"},ps={publisher:"kanonak.org",package_:"look",name:"mark"},ms={publisher:"kanonak.org",package_:"look",name:"expand"},gs={publisher:"kanonak.org",package_:"look",name:"edges"},ra={publisher:"kanonak.org",package_:"look",name:"nodeTier"},ks={publisher:"kanonak.org",package_:"look",name:"diagramTier"},hs={publisher:"kanonak.org",package_:"look",name:"nodeNote"},bs={publisher:"kanonak.org",package_:"look",name:"Sequence"},ys={publisher:"kanonak.org",package_:"look",name:"numbered"},vs={publisher:"kanonak.org",package_:"look",name:"EntityRelationship"},$s={publisher:"kanonak.org",package_:"core-owl",name:"SymmetricProperty"},Ss={publisher:"kanonak.org",package_:"core-owl",name:"FunctionalProperty"},ws={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},_s={publisher:"kanonak.org",package_:"look",name:"edgeLabel"},js={publisher:"kanonak.org",package_:"look",name:"labelEdges"},Ks={publisher:"kanonak.org",package_:"look",name:"edgeValue"},Rs={publisher:"kanonak.org",package_:"look",name:"figureTitle"},Es={publisher:"kanonak.org",package_:"look",name:"titlePosition"},Ls=`(function(){
|
|
20
|
-
if(window.__kanDiagramZoom)return;window.__kanDiagramZoom=1;
|
|
21
|
-
var TIERS=['chip','icon','card','full'];
|
|
22
|
-
var css='.kan-dgm-tier[hidden]{display:none}.kan-dgm-tiers{position:relative}'
|
|
23
|
-
+'.kan-dgm-tiers>.kan-dgm-btn{opacity:0;transition:opacity .12s}.kan-dgm-tiers:hover>.kan-dgm-btn,.kan-dgm-btn:focus{opacity:1}'
|
|
24
|
-
+'#kan-dgm-modal{position:fixed;inset:0;z-index:9999;display:none;background:rgba(0,0,0,.85);cursor:grab}'
|
|
25
|
-
+'#kan-dgm-stage{position:absolute;top:50%;left:50%}'
|
|
26
|
-
+'#kan-dgm-bar{position:fixed;top:14px;left:50%;transform:translateX(-50%);display:flex;gap:9px;align-items:center;font:12px sans-serif;color:#cbd5e1;background:rgba(12,18,32,.92);border:1px solid #1e293b;border-radius:999px;padding:7px 14px;user-select:none}'
|
|
27
|
-
+'#kan-dgm-bar .pip{width:9px;height:9px;border-radius:50%;background:#334155;cursor:pointer}'
|
|
28
|
-
+'#kan-dgm-bar .pip.on{background:#38bdf8}'
|
|
29
|
-
+'#kan-dgm-lbl{min-width:32px;text-transform:capitalize}';
|
|
30
|
-
var sty=document.createElement('style');sty.textContent=css;(document.head||document.documentElement).appendChild(sty);
|
|
31
|
-
var S={cont:null,mode:'snap',tier:1,z:1,x:0,y:0,drag:0,sx:0,sy:0,lock:0};
|
|
32
|
-
function el(id){return document.getElementById(id);}
|
|
33
|
-
function modal(){var m=el('kan-dgm-modal');if(m)return m;
|
|
34
|
-
m=document.createElement('div');m.id='kan-dgm-modal';
|
|
35
|
-
var st=document.createElement('div');st.id='kan-dgm-stage';m.appendChild(st);
|
|
36
|
-
var bar=document.createElement('div');bar.id='kan-dgm-bar';
|
|
37
|
-
var lbl=document.createElement('span');lbl.id='kan-dgm-lbl';bar.appendChild(lbl);
|
|
38
|
-
for(var i=0;i<4;i++){(function(i){var p=document.createElement('span');p.className='pip';p.title=TIERS[i];p.addEventListener('click',function(e){e.stopPropagation();setTier(i);});bar.appendChild(p);})(i);}
|
|
39
|
-
var h=document.createElement('span');h.textContent='scroll: zoom \\u00b7 drag: pan \\u00b7 esc';h.style.cssText='margin-left:6px;color:#64748b';bar.appendChild(h);
|
|
40
|
-
m.appendChild(bar);m.addEventListener('click',function(e){if(e.target===m)close();});document.body.appendChild(m);return m;}
|
|
41
|
-
function apply(){var st=el('kan-dgm-stage');if(st)st.style.transform='translate(calc(-50% + '+S.x+'px),calc(-50% + '+S.y+'px)) scale('+S.z+')';}
|
|
42
|
-
function updBar(){var b=el('kan-dgm-bar');if(!b)return;var geo=S.mode==='geo';var ps=b.querySelectorAll('.pip');for(var i=0;i<ps.length;i++){ps[i].style.display=geo?'none':'';ps[i].className='pip'+(i===S.tier?' on':'');}el('kan-dgm-lbl').textContent=geo?'zoom':TIERS[S.tier];}
|
|
43
|
-
function sizeVisible(){var c=S.cont;if(!c||S.mode==='geo')return;var svg=c.querySelector('.kan-dgm-tier:not([hidden]) svg');if(svg){var vb=(svg.getAttribute('viewBox')||'0 0 800 600').split(' ');var w=parseFloat(vb[2])||800;svg.style.width=Math.min(w,window.innerWidth*0.92)+'px';svg.style.height='auto';svg.style.display='block';}apply();}
|
|
44
|
-
function setTier(i){i=Math.max(0,Math.min(3,i));S.tier=i;var c=S.cont;if(!c)return;var ts=c.querySelectorAll('.kan-dgm-tier');for(var j=0;j<ts.length;j++){if(ts[j].getAttribute('data-tier')===TIERS[i])ts[j].removeAttribute('hidden');else ts[j].setAttribute('hidden','');}sizeVisible();updBar();}
|
|
45
|
-
function uniq(root){var seq=(window.__kanMk=(window.__kanMk||0)+1);var map={};var mk=root.querySelectorAll('marker[id]');for(var i=0;i<mk.length;i++){var o=mk[i].getAttribute('id');var n=o+'_z'+seq;map[o]=n;mk[i].setAttribute('id',n);}var all=root.querySelectorAll('[marker-end],[marker-start],[marker-mid]');for(var j=0;j<all.length;j++){(function(e){['marker-end','marker-start','marker-mid'].forEach(function(a){var v=e.getAttribute(a);if(!v)return;var mm=v.match(/url\\(#(.+?)\\)/);if(mm&&map[mm[1]])e.setAttribute(a,'url(#'+map[mm[1]]+')');});})(all[j]);}}
|
|
46
|
-
function open(tiersEl){modal();var st=el('kan-dgm-stage');var c=tiersEl.cloneNode(true);uniq(c);var bb=c.querySelector('.kan-dgm-btn');if(bb&&bb.parentNode)bb.parentNode.removeChild(bb);st.innerHTML='';st.appendChild(c);S.cont=c;S.x=0;S.y=0;S.z=1;
|
|
47
|
-
S.mode=c.getAttribute('data-geo')?'geo':'snap';
|
|
48
|
-
var vis=c.querySelector('.kan-dgm-tier:not([hidden])');var t=vis?vis.getAttribute('data-tier'):'icon';S.tier=Math.max(0,TIERS.indexOf(t));
|
|
49
|
-
el('kan-dgm-modal').style.display='block';
|
|
50
|
-
if(S.mode==='geo'){var bw=c.getBoundingClientRect().width||600;S.z=Math.min(1.8,(window.innerWidth*0.9)/bw);if(!(S.z>0))S.z=1;}else sizeVisible();
|
|
51
|
-
apply();updBar();}
|
|
52
|
-
function close(){var m=el('kan-dgm-modal');if(m){m.style.display='none';el('kan-dgm-stage').innerHTML='';S.cont=null;}}
|
|
53
|
-
document.addEventListener('wheel',function(e){var m=el('kan-dgm-modal');if(!m||m.style.display==='none')return;e.preventDefault();
|
|
54
|
-
if(S.mode==='geo'){S.z*=e.deltaY<0?1.15:1/1.15;S.z=Math.max(.2,Math.min(S.z,9));apply();return;}
|
|
55
|
-
var n=Date.now();if(n-S.lock<200)return;S.lock=n;setTier(S.tier+(e.deltaY<0?1:-1));},{passive:false});
|
|
56
|
-
document.addEventListener('mousedown',function(e){var m=el('kan-dgm-modal');if(!m||m.style.display==='none')return;S.drag=1;S.sx=e.clientX-S.x;S.sy=e.clientY-S.y;m.style.cursor='grabbing';});
|
|
57
|
-
document.addEventListener('mousemove',function(e){if(!S.drag)return;S.x=e.clientX-S.sx;S.y=e.clientY-S.sy;apply();});
|
|
58
|
-
document.addEventListener('mouseup',function(){S.drag=0;var m=el('kan-dgm-modal');if(m)m.style.cursor='grab';});
|
|
59
|
-
document.addEventListener('keydown',function(e){if(e.key==='Escape')close();});
|
|
60
|
-
function enhance(){var cs=document.querySelectorAll('.kan-dgm-tiers');for(var i=0;i<cs.length;i++){(function(c){if(c.__kz)return;c.__kz=1;
|
|
61
|
-
var b=document.createElement('button');b.type='button';b.className='kan-dgm-btn';b.textContent='\\u2922';b.setAttribute('aria-label','Open and zoom');
|
|
62
|
-
b.style.cssText='position:absolute;top:6px;right:6px;z-index:3;border:1px solid var(--kan-border,#333);background:var(--kan-bg-card,#111);color:var(--kan-text,#ccc);border-radius:6px;width:28px;height:28px;cursor:pointer;font-size:15px;line-height:1;padding:0';
|
|
63
|
-
b.addEventListener('click',function(ev){ev.preventDefault();ev.stopPropagation();open(c);});c.appendChild(b);})(cs[i]);}}
|
|
64
|
-
if(document.readyState!=='loading')enhance();else document.addEventListener('DOMContentLoaded',enhance);
|
|
65
|
-
})();`,Me={chip:56,icon:120,card:240,full:420},xs=["chip","icon","card","full"],Cs={56:"chip",120:"icon",240:"card",420:"full"},pe=11,Us={publisher:"kanonak.org",package_:"look",name:"placement"},Os={publisher:"kanonak.org",package_:"look",name:"width"},Is=4,Fs={publisher:"kanonak.org",package_:"look",name:"StatRow"},Ts={publisher:"kanonak.org",package_:"look",name:"Horizon"},Ps={publisher:"kanonak.org",package_:"look",name:"PackageContents"},Qn={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},Vs={publisher:"kanonak.org",package_:"core-kanonak",name:"Publisher"},As={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},Ms={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},Ns={publisher:"kanonak.org",package_:"look",name:"packages"},Ds={publisher:"kanonak.org",package_:"code-grammars",name:"CodeGrammar"},Bs={publisher:"kanonak.org",package_:"code-grammars",name:"language"},Hs={publisher:"kanonak.org",package_:"code-grammars",name:"rule"},qs={publisher:"kanonak.org",package_:"code-grammars",name:"tokenClass"},Gs={publisher:"kanonak.org",package_:"code-grammars",name:"pattern"},zs={publisher:"kanonak.org",package_:"look",name:"Links"},Ws={publisher:"kanonak.org",package_:"link",name:"url"},Ys={publisher:"kanonak.org",package_:"link",name:"links"};var Xs={publisher:"kanonak.org",package_:"look",name:"Distribution"},Qs={publisher:"kanonak.org",package_:"look",name:"alphaPath"},Js={publisher:"kanonak.org",package_:"look",name:"betaPath"},Jn={publisher:"kanonak.org",package_:"look",name:"SectionHeading"},Zs={publisher:"kanonak.org",package_:"look",name:"SectionNav"},sa={publisher:"kanonak.org",package_:"look",name:"heading"},eo={publisher:"kanonak.org",package_:"look",name:"note"},no={publisher:"kanonak.org",package_:"look",name:"VersionDelta"},to={publisher:"kanonak.org",package_:"look",name:"TimePlot"},ao={publisher:"kanonak.org",package_:"look",name:"Details"},ro={publisher:"kanonak.org",package_:"look",name:"EmbeddedViews"},so={publisher:"kanonak.org",package_:"look",name:"ResourceCount"},oo={publisher:"kanonak.org",package_:"look",name:"counts"},io={publisher:"kanonak.org",package_:"look",name:"skip"},co={publisher:"kanonak.org",package_:"derivation",name:"derivations"},lo={publisher:"kanonak.org",package_:"look",name:"laneBy"},uo={publisher:"kanonak.org",package_:"look",name:"stats"},fo={publisher:"kanonak.org",package_:"look",name:"statPath"},po={publisher:"kanonak.org",package_:"look",name:"statLabel"},oa={publisher:"kanonak.org",package_:"look",name:"labelPath"},mo={publisher:"kanonak.org",package_:"look",name:"badgePath"},ia={publisher:"kanonak.org",package_:"look",name:"BarMeter"},go={publisher:"kanonak.org",package_:"look",name:"cellAs"},ko={publisher:"kanonak.org",package_:"look",name:"variants"},ho={publisher:"kanonak.org",package_:"look",name:"when"},bo={publisher:"kanonak.org",package_:"look",name:"property"},ca={publisher:"kanonak.org",package_:"look",name:"equals"},yo={publisher:"kanonak.org",package_:"look",name:"ResourceQuery"},vo={publisher:"kanonak.org",package_:"look",name:"ofClass"},$o={publisher:"kanonak.org",package_:"look",name:"direction"},So={publisher:"kanonak.org",package_:"look",name:"limit"},Cn={publisher:"kanonak.org",package_:"look",name:"orderBy"},la={publisher:"kanonak.org",package_:"look",name:"track"},kn={publisher:"kanonak.org",package_:"look",name:"metricPath"},Zn={publisher:"kanonak.org",package_:"look",name:"hueBy"},ua={publisher:"kanonak.org",package_:"look",name:"lowerPath"},da={publisher:"kanonak.org",package_:"look",name:"upperPath"},wo={publisher:"kanonak.org",package_:"look",name:"axisMin"},_o={publisher:"kanonak.org",package_:"look",name:"axisMax"},jo={publisher:"kanonak.org",package_:"look",name:"valueLabel"};var fa={publisher:"kanonak.org",package_:"look",name:"semanticSvg"},Ko={publisher:"kanonak.org",package_:"look",name:"tierChip"},Ro={publisher:"kanonak.org",package_:"look",name:"tierIcon"},Eo={publisher:"kanonak.org",package_:"look",name:"tierCard"},Lo={publisher:"kanonak.org",package_:"look",name:"tierFull"},Ne={publisher:"kanonak.org",package_:"core-rdf",name:"type"},rt={publisher:"kanonak.org",package_:"core-rdf",name:"subClassOf"},pa=6,et={publisher:"kanonak.org",package_:"look",name:"bands"},xo={publisher:"kanonak.org",package_:"look",name:"title"},Co={publisher:"kanonak.org",package_:"look",name:"eyebrow"},Uo={publisher:"kanonak.org",package_:"look",name:"subtitle"},ma={publisher:"kanonak.org",package_:"look",name:"badges"},ke={publisher:"kanonak.org",package_:"look",name:"source"},Oo={publisher:"kanonak.org",package_:"look",name:"via"},Io={publisher:"kanonak.org",package_:"look",name:"size"},Fo={publisher:"kanonak.org",package_:"look",name:"icon"},To={publisher:"kanonak.org",package_:"look",name:"avatar"},Po={publisher:"kanonak.org",package_:"look",name:"contents"},Vo={publisher:"kanonak.org",package_:"look",name:"transitive"},Ao={publisher:"kanonak.org",package_:"look",name:"chips"},ga={publisher:"kanonak.org",package_:"look",name:"entries"},Mo={publisher:"kanonak.org",package_:"look",name:"urlForm"},An=class r{constructor(e){this.catalog=e}catalog;linkMode="single-publisher";setLinkMode(e){return this.linkMode=e,this}expressionFailureList=[];expressionFailureSeen=new Set;expressionFailures(){return this.expressionFailureList}noteExpressionFailure(e,n){let t=n instanceof Error?n.message:String(n),a=`${e}\0${t}`;this.expressionFailureSeen.has(a)||(this.expressionFailureSeen.add(a),this.expressionFailureList.push({carrier:e,reason:t}));let s=o=>o.replace(/-{2,}/g,"\u2013").replace(/-$/,"");return`<!-- LookRenderer: expression carrier "${s(e)}" did not compile: ${s(t)} Nothing is rendered for it. See /.well-known/kanonak-render (Expression carriers). -->`}get publisherFirst(){return this.linkMode==="open-world"}linkBase(e){return this.publisherFirst?`/${e}`:""}resourceHref(e,n,t="="){return ht.formatResourceUrl(e,t,{contextPublisher:n,...this.publisherFirst?{publisherFirst:!0}:{}})}packageHref(e,n,t){return`${this.linkBase(e)}/${n}${t?`/${t}`:""}`}publisherHref(e){return`${this.linkBase(e)}/`}_codeHighlighter;findCascadedLook(e){let n=Bo(e)?void 0:Un(e);return n?{declaration:n,sourceClass:{publisher:ue(e),package_:this.uriOf(e).package_,name:e.name}}:this.lookFromTypeRefs(ye(e))}lookFromTypeRefs(e){let n=new Set,t=[...e];for(;t.length>0;){let s=t.shift().subject,o=te(s);if(n.has(o))continue;n.add(o);let i=le(this.catalog,s);for(let c of i){let l=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(te(xe)))for(let a of le(this.catalog,xe)){let s=Un(a);if(s)return{declaration:s,sourceClass:{...xe}}}}matchingVariants(e){let n=this.findCascadedLook(e);if(!n)return[];let t=this.gatherValueItems(J(n.declaration,ko)).filter(i=>i instanceof D);if(t.length===0)return[];let a=re(this.catalog,n.sourceClass),s={namespace:a?.namespace??"",name:a?.name??n.sourceClass.name},o=[];for(let i of t){let c=this.readEmbeddedCarrier(i,ho);if(!c)continue;let l=q(c,bo);if(!l)continue;let d=q(c,ca);if(d){let p=J(e,l);this.gatherValueItems(p).filter(g=>g instanceof x).some(g=>te(g.subject)===te(d))&&o.push({variant:i,declaredBy:s});continue}let f=ae(c,ca);f!==void 0&&this.readPropertyValueText(e,l)===f&&o.push({variant:i,declaredBy:s})}return o}findCascadedTokens(e){let n=this.explainCascadedTokens(e),t=new Map;for(let[a,s]of n)t.set(a,s.value);return t}explainCascadedTokens(e){let n=new Map,t=(i,c,l)=>{for(let[d,f]of No(i))n.has(d)||n.set(d,{value:f,sourceNamespace:l?.namespace??i.namespace??"",sourceName:l?.name??i.name,level:c})};t(e,"instance");for(let{variant:i,declaredBy:c}of this.matchingVariants(e))t(i,"variant",c);let a=new Set,s=ye(e);for(;s.length>0;){let i=s.shift(),c=te(i.subject);if(a.has(c))continue;a.add(c);let l=c===te(xe)?"resource-floor":"class",d=le(this.catalog,i.subject);if(d.length!==0)for(let f of d){t(f,l);for(let p of In(f))s.push(p)}}let o=ue(e);if(o){let i=this.publisherSubject(o);i!==e&&t(i,"publisher")}if(!a.has(te(xe))){let i=le(this.catalog,xe);for(let c of i)t(c,"resource-floor")}return n}async renderSvg(e){let n=G(this.catalog,e).label,t=(n.trim().charAt(0)||"?").toUpperCase(),a=`${e.namespace??""}/${e.name}`,s=this.collectCascadedSvgTiers(e),o=new Map([["input",e],["label",n],["firstLetter",t],["uri",a],["resourceKey",e.name]]),i=await this.evaluateTier(s.tierChip,o),c=await this.evaluateTier(s.tierIcon,o),l=await this.evaluateTier(s.tierCard,o),d=await this.evaluateTier(s.tierFull,o),p=[...this.findCascadedTokens(e)].map(([m,g])=>`--kan-${m}: ${g};`).join(" ");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" style="${Ue(p)}">
|
|
66
|
-
<style>
|
|
67
|
-
.tier-chip,.tier-icon,.tier-card{display:none}
|
|
68
|
-
.tier-full{display:block}
|
|
69
|
-
@media (max-width:400px){.tier-full{display:none}.tier-card{display:block}}
|
|
70
|
-
@media (max-width:160px){.tier-card{display:none}.tier-icon{display:block}}
|
|
71
|
-
@media (max-width:60px){.tier-icon{display:none}.tier-chip{display:block}}
|
|
72
|
-
</style>
|
|
73
|
-
<g class="tier-chip">${i}</g>
|
|
74
|
-
<g class="tier-icon">${c}</g>
|
|
75
|
-
<g class="tier-card">${l}</g>
|
|
76
|
-
<g class="tier-full">${d}</g>
|
|
77
|
-
</svg>`}resolverInstance;expressionResolver(){if(!this.resolverInstance){let e=new ct,n=new it(e);this.resolverInstance=new Ln(n,e,new Sn(e))}return this.resolverInstance}async evaluateTier(e,n){if(!e)return"";let t;try{t=Pe(e,"semanticSvg-tier",{catalog:this.catalog,depth:0})}catch(o){return this.noteExpressionFailure("look.semanticSvg tier",o)}let a=new gn(this.expressionResolver(),this.catalog);if(t.kind==="concat"){let o=[];for(let i of t.parts){let c=await a.evaluate(i,n);o.push(ha(i.kind,c))}return o.join("")}let s=await a.evaluate(t,n);return ha(t.kind,s)}async evaluateCarrier(e,n){if(!e)return;let t;try{t=Pe(e,"look-carrier",{catalog:this.catalog,depth:0})}catch(c){this.noteExpressionFailure("look band path carrier",c);return}let a=new gn(this.expressionResolver(),this.catalog),s=new Map([["input",n]]),o=await a.evaluate(t,s),i=$a(o);return i===""?void 0:i}async evaluateCarrierNum(e,n){let t=await this.evaluateCarrier(e,n);return t===void 0?NaN:parseFloat(t)}readEmbeddedCarrier(e,n){let t=J(e,n);return t instanceof ee&&t.object instanceof D?t.object:void 0}referenceLabel(e){let n=e.subject,t=le(this.catalog,n);if(t.length===0){let a=re(this.catalog,n);a&&t.push(a)}for(let a of t){let s=G(this.catalog,a);if(s.label!==a.name)return s.label}return n.name}collectCascadedSvgTiers(e){let n={},t=c=>{let l=J(c,fa);if(!(l instanceof ee))return;let d=l.object,f=On(d,Ko),p=On(d,Ro),m=On(d,Eo),g=On(d,Lo);n.tierChip===void 0&&f!==void 0&&(n.tierChip=f),n.tierIcon===void 0&&p!==void 0&&(n.tierIcon=p),n.tierCard===void 0&&m!==void 0&&(n.tierCard=m),n.tierFull===void 0&&g!==void 0&&(n.tierFull=g)};t(e);let a=e.namespace||"",s=a.indexOf("/");if(s>=0){let c=a.indexOf("@"),l={publisher:a.slice(0,s),package_:a.slice(s+1,c>=0?c:a.length),name:e.name};for(let d of le(this.catalog,l))t(d)}let o=new Set,i=ye(e);for(;i.length>0;){let c=i.shift(),l=te(c.subject);if(o.has(l))continue;o.add(l);let d=le(this.catalog,c.subject);for(let f of d){t(f);for(let p of In(f))i.push(p)}}if(!o.has(te(xe)))for(let c of le(this.catalog,xe))t(c);return n}renderStylesheet(e){let n=this.explainStylesheet(e),t=[];for(let[o,i]of n.tokens)t.push(` --kan-${o}: ${i.value};`);let a=t.length>0?`:root {
|
|
78
|
-
${t.join(`
|
|
79
|
-
`)}
|
|
80
|
-
}`:":root { /* no tokens resolved */ }",s=n.baseStylesheet.css??"";return`${Ho(n)}
|
|
81
|
-
${a}
|
|
82
|
-
${s}`}explainStylesheet(e){let n=this.explainCascadedTokens(e),t=this.explainBaseStylesheet(ue(e)),a=this.findCascadedLook(e),s=[];return t.css||(t.problem==="content-property-unresolved"?s.push(`Base stylesheet asset ${t.sourceNamespace}/base-stylesheet is in the catalog but its site.content property did not resolve \u2014 the package was likely cached without its imports block. Pages will render UNSTYLED (CSS stops at :root). Fix: re-install it from its published source: kanonak install kanonak.org/look-styles`):s.push("No look-styles package in the render catalog \u2014 pages will render UNSTYLED (CSS stops at :root). The look stack is ambient (not imported): it must be in the workspace, the global cache, or fetchable from kanonak.org by the user running the render. Fix: kanonak install kanonak.org/look-styles")),n.size===0&&s.push("No design tokens resolved \u2014 the :root block is empty. The universal token floor lives on rdfs.Resource in kanonak.org/look-tokens; that package is missing from the render catalog. Fix: kanonak install kanonak.org/look-tokens"),a||s.push(`No look (band declaration) resolved for ${e.namespace}/${e.name} \u2014 the HTML body will be an empty comment. The universal look floor lives on rdfs.Resource in kanonak.org/universal-look. Fix: kanonak install kanonak.org/universal-look`),{resource:{namespace:e.namespace||"",name:e.name},tokens:n,baseStylesheet:t,...a?{look:{sourceClass:a.sourceClass}}:{},warnings:s}}findBaseStylesheet(e){return this.explainBaseStylesheet(e).css}explainBaseStylesheet(e){let n="kanonak.org/site/content",t=f=>this.uriOf(f).version??null,a=[],s,o,i,c;for(let f of this.catalog){if(!(f instanceof Y)||f.name!=="base-stylesheet")continue;let p=f.namespace||"";if(p.startsWith(`${e}/look-styles@`)){a.push(p);let m=t(f);m&&(!o||hn(m,o)>0)&&(s=f,o=m)}else if(p.startsWith("kanonak.org/look-styles@")){a.push(p);let m=t(f);m&&(!c||hn(m,c)>0)&&(i=f,c=m)}}let l=s??i;if(!l)return{problem:"no-look-styles-in-catalog",candidates:a};let d=l===s?"publisher-override":"universal-default";for(let f of l.statement){let p=f.predicate?.subject;if(!p)continue;if(`${p.publisher}/${p.package_}/${p.name}`===n&&f instanceof Z)return{css:f.object,sourceNamespace:l.namespace||"",scope:d,candidates:a}}return{problem:"content-property-unresolved",sourceNamespace:l.namespace||"",scope:d,candidates:a}}async renderHtml(e){let n=this.findCascadedLook(e);if(!n)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let t=nt(n.declaration);if(t.length===0){let i=n.declaration.unresolvedPredicates;return i.length>0?`<!-- LookRenderer: look declaration has no bands \u2014 unresolved predicates dropped from the parse: ${i.map(l=>`${l.key} (authored by ${l.sourceDoc})`).join(", ")}. An import in the authoring document did not resolve; see the render-stack warnings (/.well-known/kanonak-render). -->`:"<!-- LookRenderer: look declaration has no bands -->"}let a=ue(e),s=this.collectSectionHeadings(t);this.diagramScriptEmitted=!1,this.diagramArrowSeq=0;let o=[];for(let i of t){let c=on(i);c&&X(c,Jn)&&o.push('<div style="clear:both"></div>'),o.push(this.applyBandPlacement(i,await this.renderBand(i,e,a,s)))}return o.push('<div style="clear:both"></div>'),o.join(`
|
|
83
|
-
`)}applyBandPlacement(e,n){let t=ae(e,Us);if(t!=="floatLeft"&&t!=="floatRight")return n;let a=t==="floatLeft"?"left":"right",s=ae(e,Os),o=s&&/^\d+(\.\d+)?(%|px|rem|em)$/.test(s)?s:"42%";return`<div class="kan-band-float kan-band-${a}" style="float:${a};width:${o};margin:${a==="left"?"0 1.25rem 0.75rem 0":"0 0 0.75rem 1.25rem"}">${n}</div>`}collectSectionHeadings(e){let n=[];for(let t of e){let a=on(t);if(!a||!X(a,Jn))continue;let s=ae(t,sa);s&&n.push({slug:ba(s),label:s})}return n}publisherSubject(e){for(let t of this.catalog){if(!(t instanceof Y)||ue(t)!==e||!ye(t).some(s=>X(s.subject,Vs)))continue;return le(this.catalog,{publisher:e,package_:this.uriOf(t).package_,name:t.name})[0]??t}let n=new Y;return n.namespace=e,n.name=e,n.statement=[H.parse("kanonak.org/core-rdf/type","kanonak.org/core-kanonak/Publisher"),Z.parse("kanonak.org/core-rdf/label",e)],n}hasDeclaredView(e){let n=this.findCascadedLook(e);return n?!(a=>a.publisher===xe.publisher&&a.package_===xe.package_&&a.name===xe.name||a.publisher===Qn.publisher&&a.package_===Qn.package_&&a.name===Qn.name)(n.sourceClass):!1}renderPackageVersionList(e,n,t){let a=ue(t),s=this.renderNavGroup(t,a),o=this.renderBreadcrumb(t,a,{bareOverview:!0}),i=n.map(l=>`<a class="kan-resource-card" href="${h(this.packageHref(a,e,l))}/"><h3 class="kan-resource-card-title">${h(l)}</h3></a>`).join(`
|
|
84
|
-
`),c=`<header class="kan-hero">
|
|
85
|
-
<span class="kan-hero-eyebrow">PACKAGE</span>
|
|
86
|
-
<h1 class="kan-hero-title">${h(e)}</h1>
|
|
87
|
-
</header>
|
|
88
|
-
<section class="kan-resource-grid">
|
|
89
|
-
${i}
|
|
90
|
-
</section>`;return`<!doctype html>
|
|
91
|
-
<html lang="en">
|
|
92
|
-
<head>
|
|
93
|
-
<meta charset="utf-8">
|
|
94
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
95
|
-
<title>${h(e)}</title>
|
|
96
|
-
<link rel="stylesheet" href="${h(t.name)}.css">
|
|
97
|
-
</head>
|
|
98
|
-
<body>
|
|
99
|
-
${s}
|
|
100
|
-
${o}
|
|
101
|
-
<main class="kan-main">
|
|
102
|
-
${c}
|
|
103
|
-
</main>
|
|
104
|
-
</body>
|
|
105
|
-
</html>
|
|
106
|
-
`}async renderDocument(e,n){let t=await this.renderHtml(e),a=G(this.catalog,e).label,s=n?.rootIndex?"index.css":`${e.name}.css`,o=!n?.rootIndex&&this.hasSvgDerivation(e)?`<figure class="kan-figure"><img src="${h(e.name)}.svg" alt=""></figure>
|
|
107
|
-
`:"",i=ue(e),c=this.renderNavGroup(e,i),l=this.renderSiteFooter(i),d=n?.rootIndex?"":this.renderBreadcrumb(e,i,n);return`<!doctype html>
|
|
108
|
-
<html lang="en">
|
|
109
|
-
<head>
|
|
110
|
-
<meta charset="utf-8">
|
|
111
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
112
|
-
<title>${h(a)}</title>
|
|
113
|
-
<link rel="stylesheet" href="${h(s)}">
|
|
114
|
-
</head>
|
|
115
|
-
<body>
|
|
116
|
-
${c}
|
|
117
|
-
${d}
|
|
118
|
-
<main class="kan-main">
|
|
119
|
-
${o}${t}
|
|
120
|
-
</main>
|
|
121
|
-
${l}
|
|
122
|
-
</body>
|
|
123
|
-
</html>
|
|
124
|
-
`}hasSvgDerivation(e){let n=new Set,t=ye(e);for(;t.length>0;){let a=t.shift(),s=te(a.subject);if(n.has(s))continue;n.add(s);let o=re(this.catalog,a.subject);if(o){for(let i of o.statement)if(i instanceof B&&Re(i,"kanonak.org","derivation","derivations")){for(let c of i.object??[])if(c instanceof D)for(let l of c.statement){if(!(l instanceof H)||!Re(l,"kanonak.org","derivation","format")||!(l.object instanceof x))continue;let d=l.object.subject;if(d.publisher==="kanonak.org"&&d.package_==="formats"&&d.name==="svg")return!0}}for(let i of In(o))t.push(i)}}return!1}static BAND_DISPATCH=[[Zs,(e,n)=>e.renderSectionNav(n.sections)],[Nr,(e,n)=>e.renderHero(n.band,n.instance,n.contextPublisher)],[Dr,(e,n)=>e.renderPropertyList(n.band,n.instance,n.contextPublisher)],[Br,(e,n)=>e.renderPropertyTable(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[Hr,(e,n)=>e.renderBadgeRow(n.band,n.instance,n.contextPublisher)],[qr,(e,n)=>e.renderChipRow(n.band,n.instance,n.contextPublisher)],[Gr,(e,n)=>e.renderReferenceList(n.band,n.instance,n.contextPublisher)],[zr,(e,n)=>e.renderReferencedBy(n.band,n.instance,n.contextPublisher)],[Wr,(e,n)=>e.renderInstances(n.band,n.instance,n.contextPublisher)],[ta,(e,n)=>e.renderMarkdown(n.band,n.instance,n.contextPublisher)],[zs,(e,n)=>e.renderLinks(n.band,n.instance)],[Yr,(e,n)=>e.renderNavGroup(n.instance,n.contextPublisher)],[es,(e,n)=>e.renderResourceGrid(n.band,n.contextPublisher,n.instance)],[ns,(e,n)=>e.renderTimeline(n.band,n.contextPublisher)],[ts,(e,n)=>e.renderVersionDiff(n.band,n.contextPublisher)],[as,(e,n)=>e.renderFigure(n.band,n.instance,n.contextPublisher)],[rs,(e,n)=>e.renderDiagram(n.band,n.instance,n.contextPublisher)],[bs,(e,n)=>e.renderSequence(n.band,n.instance,n.contextPublisher)],[vs,(e,n)=>e.renderEntityRelationship(n.band,n.instance,n.contextPublisher)],[Fs,(e,n)=>e.renderStatRow(n.band,n.instance)],[Ts,(e,n)=>e.renderHorizon(n.band,n.instance,n.contextPublisher)],[Ps,(e,n)=>e.renderPackageContents(n.instance,n.contextPublisher)],[As,(e,n)=>e.renderFeaturedResource(n.band,n.contextPublisher)],[Ms,(e,n)=>e.renderPublisherPackages(n.band,n.contextPublisher)],[Xs,(e,n)=>e.renderDistribution(n.band,n.instance)],[Jn,(e,n)=>e.renderSectionHeading(n.band)],[no,(e,n)=>e.renderVersionDelta(n.band,n.instance)],[to,(e,n)=>e.renderTimePlot(n.band,n.instance,n.contextPublisher)],[ao,(e,n)=>e.renderDetails(n.band,n.instance,n.contextPublisher)],[ro,(e,n)=>e.renderEmbeddedViews(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[so,(e,n)=>e.renderResourceCount(n.band,n.contextPublisher)],[ia,(e,n)=>e.renderBarMeter(n.band,n.instance)]];static bandDispatchUris(){return r.BAND_DISPATCH.map(([e])=>e)}uriOf(e){let n=je(e);return n?{publisher:n.publisher,package_:n.package_,name:n.name,...n.version?{version:n.version}:{}}:{publisher:ue(e),package_:"",name:e.name}}async renderBand(e,n,t,a=[],s=""){let o=on(e);if(!o)return"<!-- LookRenderer: band has no rdf:type -->";let i={band:e,instance:n,contextPublisher:t,sections:a,pathPrefix:s};for(let[c,l]of r.BAND_DISPATCH)if(X(o,c))return l(this,i);return`<!-- LookRenderer: unsupported band ${o.publisher}/${o.package_}/${o.name} -->`}async collectTrackedSeries(e,n,t,a){let{hueBy:s,lowerPath:o,upperPath:i}=a??{},c=new Map,l=e.length;for(let d=0;d<e.length;d++){let f=e[d],p=this.readPropertyValueReferences(f,n);for(let m of p){let g=re(this.catalog,{publisher:m.subject.publisher,package_:m.subject.package_,name:m.subject.name,...m.subject.version?{version:m.subject.version}:{}});if(!g)continue;let b=m.subject.name,k=c.get(b);k||(k={key:b,label:G(this.catalog,g).label,points:new Array(l).fill(null),...o?{lower:new Array(l).fill(null)}:{},...i?{upper:new Array(l).fill(null)}:{}},c.set(b,k));let v=await this.evaluateCarrierNum(t,g);if(Number.isFinite(v)&&(k.points[d]=v),o&&k.lower){let y=await this.evaluateCarrierNum(o,g);Number.isFinite(y)&&(k.lower[d]=y)}if(i&&k.upper){let y=await this.evaluateCarrierNum(i,g);Number.isFinite(y)&&(k.upper[d]=y)}if(s){let y=await this.evaluateCarrierNum(s,g);Number.isFinite(y)&&(k.hue=y)}k.lastSubject=g}}return[...c.values()]}hrefForSubject(e,n,t="="){let a=this.uriOf(e),s=a.package_,o=a.version;return this.resourceHref({publisher:ue(e),package_:s,name:e.name,...o?{version:o}:{}},n,t)}async renderVersionDiff(e,n){let t=q(e,ke);if(!t)return"<!-- LookRenderer.VersionDiff: no look.source -->";let a=this.readEmbeddedCarrier(e,kn),s=q(e,la);if(!s||!a)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let o=q(e,Cn),i=this.readEmbeddedCarrier(e,Zn),c=this.findInstancesOfClass(t,this.readTransitive(e));if(c.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let l=m=>o?this.readPropertyValueText(m,o)??"":"",d=c.slice().sort((m,g)=>l(m).localeCompare(l(g))),f=await this.collectTrackedSeries(d,s,a,{hueBy:i});return f.length===0?"<!-- LookRenderer.VersionDiff: no tracked series -->":`<section class="kan-vdiff">${f.map((m,g)=>{let b=m.hue!==void 0?m.hue:Math.round(g*360/f.length),k=m.points.filter(C=>C!==null);if(k.length===0)return"";let v=k[0],y=k[k.length-1],K=y-v,E;if(Math.abs(K)>=.005){let C=K>0?"up":"down",T=K>0?"\u25B2":"\u25BC";E=`<span class="kan-vdiff-delta ${C}">${K>0?"+":""}${K.toFixed(2)} ${T}</span>`}else E='<span class="kan-vdiff-delta flat">\u2014</span>';let O=m.lastSubject&&this.isLinkable(ue(m.lastSubject),n)?`<a href="${h(this.hrefForSubject(m.lastSubject,n))}">${h(m.label)}</a>`:h(m.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${b}"><span class="kan-vdiff-label">${O}</span><span class="kan-vdiff-start">${v.toFixed(2)}</span>`+this.sparkline(m.points,b)+`<span class="kan-vdiff-end">${y.toFixed(2)}</span>`+E+"</div>"}).join("")}</section>`}sparkline(e,n){let o=`hsl(${n},65%,60%)`,i=e.filter(k=>k!==null);if(i.length===0)return'<svg class="kan-vdiff-spark" viewBox="0 0 132 30" xmlns="http://www.w3.org/2000/svg"></svg>';let c=Math.min(...i),d=Math.max(...i)-c,f=e.length,p=k=>f<=1?132/2:4+k/(f-1)*124,m=k=>d<1e-9?30/2:26-(k-c)/d*22,g=[],b=[];return e.forEach((k,v)=>{if(k===null)return;let y=p(v),K=m(k);g.push(`${y.toFixed(1)},${K.toFixed(1)}`),b.push(`<circle cx="${y.toFixed(1)}" cy="${K.toFixed(1)}" r="2" fill="${o}"/>`)}),`<svg class="kan-vdiff-spark" viewBox="0 0 132 30" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" role="img"><polyline points="${g.join(" ")}" fill="none" stroke="${o}" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round"/>`+b.join("")+"</svg>"}svgUrlForSubject(e,n,t="="){return`${this.hrefForSubject(e,n,t)}.svg`}renderFigure(e,n,t){let a=n,s=q(e,ke);if(s){let d=re(this.catalog,s);d&&(a=d)}let o=this.svgUrlForSubject(a,t),i=G(this.catalog,a).label,c=ae(e,Io);return`<figure class="kan-figure${c==="small"||c==="medium"||c==="large"?` kan-figure-${c}`:""}"><img class="kan-figure-img" src="${h(o)}" alt="${h(i)}" loading="lazy"/></figure>`}diagramArrowSeq=0;diagramScriptEmitted=!1;async renderDiagram(e,n,t,a=0,s=new Set){let o=this.gatherValueItems(J(e,ss)).filter(g=>g instanceof D);if(o.length===0)return"<!-- LookRenderer.Diagram: no look.facets -->";let i=[];for(let g of o){let b=q(g,os);if(!b){i.push("<!-- LookRenderer.Diagram: facet has no resolvable look.relation -->");continue}let k=q(g,is),v=this.resolveFacetNodes(n,b);if(v.length===0){i.push(`<!-- LookRenderer.Diagram: relation ${b.publisher}/${b.package_}/${b.name} resolved to 0 instances -->`);continue}let y=await this.resolveFacetChannels(g,v),K=J(g,ps),E=K instanceof ee&&K.object instanceof D?K.object:void 0,O=ae(g,ra),C=O&&Me[O]!==void 0?Me[O]:void 0,T=C??this.classTierSize(v),_=Cs[T??Me.icon]??"icon",W=this.readEmbeddedCarrier(g,hs),P=q(g,ms),V=P?re(this.catalog,P):void 0;if(V){i.push(await this.renderDiagramExpand(v,V,t,a,s,W,C));continue}if(k&&X(k,ls)){let L=q(g,gs),j=this.facetEdgeLabel(g,L??b),N=this.readEmbeddedCarrier(g,Ks);i.push(await this.embedTiers(_,R=>L?this.renderDiagramDag(v,L,y,t,R,j,N):this.renderDiagramConnector(n,v,y,t,R,j,N)));continue}if(k&&!X(k,cs)){i.push(`<!-- LookRenderer.Diagram: unknown encode role ${k.publisher}/${k.package_}/${k.name} -->`);continue}i.push(E?`<div class="kan-dgm-tiers" data-geo="1"><div class="kan-dgm-tier" data-tier="card">${await this.renderDiagramCluster(v,y,E,t,T)}</div></div>`:await this.embedTiers(_,L=>this.renderDiagramCluster(v,y,void 0,t,L)))}let c=ae(e,Rs),l=ae(e,Es),d=g=>`<div class="kan-diagram-title" style="font-weight:600;font-size:0.95rem;color:var(--kan-text);${g}">${h(c)}</div>`,f=c&&l!=="bottom"?d("margin:0 0 .5rem"):"",p=c&&l==="bottom"?d("margin:.5rem 0 0"):"",m="";return a===0&&!this.diagramScriptEmitted&&(this.diagramScriptEmitted=!0,m=`<script>${Ls}</script>`),`<section class="kan-diagram">${f}${i.join("")}${p}${m}</section>`}async embedTiers(e,n){let t=[];for(let a of xs){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),m=a<Is&&!s.has(d)?await this.renderDiagram(n,l,t,a+1,new Set([...s,d])):"",g=m?`<div style="margin-left:30px;border-left:2px solid var(--kan-border);padding-left:14px;margin-top:6px">${m}</div>`:"";c.push(`<div class="kan-diagram-node" style="margin:6px 0">${f}${g}</div>`)}return`<figure class="kan-diagram-figure"><div class="kan-diagram-tree">${c.join("")}</div></figure>`}async diagramNodeRow(e,n,t=56,a){let s=this.hrefForSubject(e,n),o=this.svgUrlForSubject(e,n),i=G(this.catalog,e).label,c=a?await this.evaluateCarrier(a,e):void 0,l=c!==void 0?`<span class="kan-diagram-node-note" style="display:block;font-size:0.8em;color:var(--kan-text-dim)">${h(c)}</span>`:"";return`<a href="${h(s)}" style="display:inline-flex;align-items:center;gap:10px;text-decoration:none"><img src="${h(o)}" width="${t}" height="${t}" alt="" loading="lazy"/><span><span class="kan-diagram-node-label">${h(i)}</span>${l}</span></a>`}classTierSize(e){let n;for(let t of e)for(let a of ye(t)){let s=re(this.catalog,a.subject);if(!s)continue;let o=ae(s,ks),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=re(this.catalog,{publisher:s.publisher,package_:s.package_,name:s.name,...s.version?{version:s.version}:{}});o&&t.push(o)}return t}async resolveFacetChannels(e,n){let t=this.gatherValueItems(J(e,us)).filter(s=>s instanceof D),a=[];for(let s of t){let o=this.readEmbeddedCarrier(s,ds),i=ae(s,fs);if(!o||!i)continue;let c=[];for(let g of n){let b=await this.evaluateCarrierNum(o,g);c.push(Number.isFinite(b)?b:NaN)}let l=c.filter(g=>Number.isFinite(g)),d=l.length?Math.min(...l):0,p=(l.length?Math.max(...l):0)-d,m=c.map(g=>Number.isFinite(g)&&p>0?(g-d)/p:.5);a.push({to:i,norm:m})}return a}facetEdgeLabel(e,n){let t=ae(e,_s);if(t)return t;if(Do(e,js)&&n){let s=re(this.catalog,n);if(s)return G(this.catalog,s).label}}async edgeText(e,n,t){let a=t&&n?await this.evaluateCarrier(t,n):void 0,s=[e,a].filter(o=>!!o);return s.length?s.join(" "):void 0}edgeLabelEl(e,n,t){return`<text x="${e.toFixed(1)}" y="${n.toFixed(1)}" text-anchor="middle" class="kan-diagram-edge-label" style="font-size:11px;paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px;fill:var(--kan-text-dim)">${h(t)}</text>`}async renderDiagramCluster(e,n,t,a,s){let o=s??132,i=18,c=18,l=n.find(b=>b.to==="opacity");if(t){let b=[];for(let k=0;k<e.length;k++){let v=e[k],y=await this.renderBand(t,v,a),K=this.hrefForSubject(v,a),E=G(this.catalog,v).label,O=l?`opacity:${(.4+l.norm[k]*.6).toFixed(2)};`:"";b.push(`<a class="kan-diagram-mark" href="${h(K)}" style="display:block;text-decoration:none;${O}">${y}<span class="kan-diagram-mark-label">${h(E)}</span></a>`)}return`<figure class="kan-diagram-figure"><div class="kan-diagram-marks" style="display:flex;flex-wrap:wrap;gap:18px;align-items:flex-start">${b.join("")}</div></figure>`}let d=Math.min(e.length,4),f=Math.ceil(e.length/d),p=c*2+d*o+(d-1)*i,m=c*2+f*o+(f-1)*i,g=e.map((b,k)=>{let v=k%d,y=Math.floor(k/d),K=c+v*(o+i),E=c+y*(o+i),O=l?.4+l.norm[k]*.6:1;return this.diagramTile(b,K,E,o,a,O)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${p} ${m}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${g}</svg></figure>`}async renderDiagramConnector(e,n,t,a,s,o,i){let c=s??120,l=24,d=130,f=18,p=t.find(P=>P.to==="thickness"),m=t.find(P=>P.to==="opacity"),g=n.length,b=g*c+(g-1)*l,k=f*2+b,v=f*2+c+d+c,y=f,K=f+(b-c)/2,E=f+c+d,O=`kan-arrow-${this.diagramArrowSeq++}`,C=[],T=[],_=[];for(let P=0;P<n.length;P++){let V=n[P],L=f+P*(c+l),j=y+c,N=K+c/2,R=E-pe,I=L+c/2,F=(j+E)/2,$=p?1.5+p.norm[P]*5.5:2,A=m?.4+m.norm[P]*.6:1,z=m?` stroke-opacity="${A.toFixed(2)}"`:"";C.push(`<path d="M${j.toFixed(1)},${N.toFixed(1)} C${F.toFixed(1)},${N.toFixed(1)} ${F.toFixed(1)},${I.toFixed(1)} ${R.toFixed(1)},${I.toFixed(1)}" class="kan-diagram-edge" fill="none" stroke="var(--kan-border)" stroke-width="${$.toFixed(1)}"${z} marker-end="url(#${O})"/>`);let U=await this.edgeText(o,V,i);U&&T.push(this.edgeLabelEl((j+E)/2,(N+I)/2-5,U)),_.push(this.diagramTile(V,E,L,c,a,m?A:1))}let W=this.diagramTile(e,y,K,c,a);return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${v.toFixed(0)} ${k.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(O,"var(--kan-border)")}${C.join("")}${T.join("")}${W}${_.join("")}</svg></figure>`}arrowMarkerDef(e,n){return`<defs><marker id="${e}" viewBox="0 0 ${pe} ${pe}" refX="0" refY="${(pe/2).toFixed(1)}" markerWidth="${pe}" markerHeight="${pe}" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,1 L${pe},${(pe/2).toFixed(1)} L0,${pe-1}" fill="${n}"/></marker></defs>`}async renderDiagramDag(e,n,t,a,s,o,i){let c=s??110,l=110,d=22,f=18,p=new Map(e.map(($,A)=>[$.name,A])),m=new Set(e.map($=>$.name)),g=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&&m.has(z)&&(g.get($.name).push(z),b.get(z).push($.name))}let k=new Map,v=new Set,y=$=>{let A=k.get($);if(A!==void 0)return A;if(v.has($))return 0;v.add($);let z=0;for(let U of b.get($)??[])z=Math.max(z,y(U)+1);return v.delete($),k.set($,z),z};for(let $ of e)y($.name);let K=Math.min(...k.values());if(K>0)for(let $ of[...k.keys()])k.set($,k.get($)-K);let E=Math.max(0,...k.values()),O=Array.from({length:E+1},()=>[]);for(let $ of e)O[k.get($.name)].push($);let C=Math.max(1,...O.map($=>$.length)),T=!1;for(let[$,A]of g)for(let z of A)k.get(z)<=k.get($)&&(T=!0);let _=T?84:0,W=C*c+(C-1)*d,P=f*2+(E+1)*c+E*l,V=f*2+_+W,L=new Map;O.forEach(($,A)=>{let z=$.length*c+($.length-1)*d,U=f+_+(W-z)/2;$.forEach((M,me)=>L.set(M.name,{x:f+A*(c+l),y:U+me*(c+d)}))});let j=t.find($=>$.to==="thickness"),N=`kan-arrow-${this.diagramArrowSeq++}`,R=[],I=[];for(let[$,A]of g){let z=L.get($);for(let U of A){let M=L.get(U),me=M.x>=z.x,ce=j?1.5+j.norm[p.get($)]*4.5:2,se,de,oe;if(me){let he=z.x+c,ze=z.y+c/2,Oe=M.x-pe,cn=M.y+c/2,Ze=(he+Oe)/2;se=`M${he.toFixed(1)},${ze.toFixed(1)} C${Ze.toFixed(1)},${ze.toFixed(1)} ${Ze.toFixed(1)},${cn.toFixed(1)} ${Oe.toFixed(1)},${cn.toFixed(1)}`,de=(he+Oe)/2,oe=(ze+cn)/2-5}else{let he=z.x+c/2,ze=z.y,Oe=M.x+c/2,cn=M.y-pe,Ze=f+_*.2;se=`M${he.toFixed(1)},${ze.toFixed(1)} C${he.toFixed(1)},${Ze.toFixed(1)} ${Oe.toFixed(1)},${Ze.toFixed(1)} ${Oe.toFixed(1)},${cn.toFixed(1)}`,de=(he+Oe)/2,oe=Ze+4}let Ee=me?"":' stroke-dasharray="6 4"';R.push(`<path d="${se}" class="kan-diagram-edge" fill="none" stroke="var(--kan-accent)" stroke-width="${ce.toFixed(1)}" stroke-opacity="0.75"${Ee} marker-end="url(#${N})"/>`);let ve=await this.edgeText(o,e[p.get($)],i);ve&&I.push(this.edgeLabelEl(de,oe,ve))}}let F=e.map($=>{let A=L.get($.name);return this.diagramTile($,A.x,A.y,c,a)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${P.toFixed(0)} ${V.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(N,"var(--kan-accent)")}${R.join("")}${I.join("")}${F}</svg></figure>`}static SEQ_COL_GAP=70;static SEQ_ROW=46;static SEQ_PAD=20;subjectFor(e){return le(this.catalog,e)[0]}async renderSequence(e,n,t){let a=Hn(this.catalog,n,e);if(a.problem)return`<!-- LookRenderer.Sequence: ${a.problem} -->`;if(a.sourceAbsent)return`<!-- LookRenderer.Sequence: ${n.name} carries no value for the band's look.source \u2014 nothing to sequence -->`;let s=[];for(let _ of a.strayPropertyRefs)s.push(`<!-- LookRenderer.Sequence: prose references property ${_.publisher}/${_.package_}/${_.name}, which is not a declared connector; ignored -->`);for(let _ of a.gaps)s.push(`<!-- LookRenderer.Sequence: prose orders ${_.prev.name} then ${_.next.name}, but no declared connector holds between them in the graph \u2014 no message drawn. -->`);let{messages:o,lifelines:i}=a,c=Ae;if(i.length===0)return`${s.join(`
|
|
125
|
-
`)}
|
|
126
|
-
<!-- LookRenderer.Sequence: no messages \u2014 no consecutive prose references are joined by a declared connector -->`;let l=ae(e,ra);l!==void 0&&Me[l]===void 0&&s.push(`<!-- LookRenderer.Sequence: look.nodeTier '${h(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,m=r.SEQ_PAD,g=ae(e,ys)==="true",b=new Map;i.forEach((_,W)=>b.set(c(_),m+W*f+d/2));let k=m+d,v=k+p,y=v+o.length*p+m,K=m*2+(i.length-1)*f+d,E=`kan-arrow-${this.diagramArrowSeq++}`,O=`kan-arrow-open-${this.diagramArrowSeq++}`,T=[this.arrowMarkerDef(E,"var(--kan-text-dim)")+`<defs><marker id="${O}" viewBox="0 0 ${pe} ${pe}" refX="0" refY="${(pe/2).toFixed(1)}" markerWidth="${pe}" markerHeight="${pe}" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,1 L${pe},${(pe/2).toFixed(1)} L0,${pe-1}" fill="none" stroke="var(--kan-text-dim)" stroke-width="1.5"/></marker></defs>`];for(let _ of i){let W=b.get(c(_));T.push(`<line class="kan-seq-lifeline" x1="${W}" y1="${k}" x2="${W}" y2="${y-m}" stroke="var(--kan-border)" stroke-width="1.5" stroke-dasharray="5 5"/>`),T.push(this.diagramTile(_,W-d/2,m,d,t))}return o.forEach((_,W)=>{let P=v+W*p,V=b.get(c(_.from)),L=b.get(c(_.to)),j=this.subjectFor(_.relation),N=(g?`${W+1}. `:"")+(j?G(this.catalog,j).label:_.relation.name),R=_.style==="dotted"?' stroke-dasharray="4 4"':"",I=_.style==="thick"?3:1.5,F=_.undirected?"":` marker-end="url(#${_.style==="open"?O:E})"`,$=`kan-seq-message kan-seq-message-${_.style}${_.undirected?" kan-seq-message-undirected":""}`;if(V===L){let M=p*.55,me=V+(_.undirected?0:pe);T.push(`<path class="${$}" d="M${V},${P-M/2} H${V+34} V${P+M/2} H${me}" fill="none" stroke="var(--kan-text-dim)" stroke-width="${I}"${R}${F}/>`),T.push(`<text class="kan-seq-message-label" x="${V+34+6}" y="${P+4}" font-size="12" fill="var(--kan-text)">${h(N)}</text>`);return}let A=L>V?1:-1,z=_.undirected?L:L-A*pe;T.push(`<line class="${$}" x1="${V}" y1="${P}" x2="${z}" y2="${P}" stroke="var(--kan-text-dim)" stroke-width="${I}"${R}${F}/>`),T.push(`<text class="kan-seq-message-label" x="${((V+L)/2).toFixed(1)}" y="${P-6}" text-anchor="middle" font-size="12" fill="var(--kan-text)" style="paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px">${h(N)}</text>`)}),`${s.join(`
|
|
127
|
-
`)}<figure class="kan-diagram-figure kan-seq-figure"><svg class="kan-diagram-svg kan-seq" viewBox="0 0 ${K} ${y}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${T.join("")}</svg></figure>`}static ER_BOX_W=230;static ER_HEAD_H=30;static ER_ROW_H=20;static ER_GAP=70;static ER_PAD=24;erScope(e){let n=t=>en.isClassType(t);if(w(e,ws))return{classes:this.catalog.filter(a=>a instanceof Y&&a.namespace===e.namespace&&n(a))};if(n(e)){let t=je(e);if(!t)return{classes:[],reason:"the page class has no canonical URI"};let a=pn(this.catalog),s=new Map([[ne(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(ne(o.range.uri))&&s.set(ne(o.range.uri),i)}return{classes:[...s.values()]}}return{classes:[],reason:"the page instance is neither a Package nor a Class"}}erCardinalityGlyph(e,n,t,a,s){let o=[];return s===1?o.push('<line x1="-14" y1="-7" x2="-14" y2="7"/>'):o.push('<path d="M-16,-8 L0,0 L-16,8" fill="none"/>'),a>=1?o.push('<line x1="-22" y1="-7" x2="-22" y2="7"/>'):o.push('<circle cx="-24" cy="0" r="4" fill="var(--kan-bg)"/>'),`<g class="kan-er-cardinality" transform="translate(${e.toFixed(1)},${n.toFixed(1)}) rotate(${t.toFixed(1)})" stroke="var(--kan-text-dim)" stroke-width="1.5">${o.join("")}</g>`}erBorderPoint(e,n,t,a,s,o){let i=s-e,c=o-n;if(i===0&&c===0)return{x:e,y:n};let l=i===0?1/0:Math.abs(t/2/i),d=c===0?1/0:Math.abs(a/2/c),f=Math.min(l,d);return{x:e+i*f,y:n+c*f}}renderEntityRelationship(e,n,t){let{classes:a,reason:s}=this.erScope(n);if(a.length===0)return`<!-- LookRenderer.EntityRelationship: nothing to draw \u2014 ${s??"no classes in scope"} -->`;let o=pn(this.catalog),i=L=>`${L.namespace}/${L.name}`,c=new Map;for(let L of a){let j=je(L);j&&c.set(ne(j),L)}let l=a.map(L=>{let j=je(L),N=j?Rn(this.catalog,j,!1,o):[];return{subject:L,label:G(this.catalog,L).label,attrs:N.filter(R=>R.kind==="datatype"),rels:N.filter(R=>R.kind==="object"&&R.range.kind==="class"&&c.has(ne(R.range.uri))),supers:Fe(L,rt).filter(R=>c.has(ne(R)))}}),d=r.ER_BOX_W,f=r.ER_HEAD_H,p=r.ER_ROW_H,m=r.ER_GAP,g=r.ER_PAD,b=Math.max(1,Math.ceil(Math.sqrt(l.length))),k=L=>f+Math.max(1,L.attrs.length)*p+8,v=[];l.forEach((L,j)=>{let N=Math.floor(j/b);v[N]=Math.max(v[N]??0,k(L))});let y=[],K=g;v.forEach((L,j)=>{y[j]=K,K+=L+m});let E=new Map;l.forEach((L,j)=>{let N=Math.floor(j/b),R=j%b,I=g+R*(d+m),F=y[N],$=k(L);E.set(i(L.subject),{x:I,y:F,w:d,h:$,cx:I+d/2,cy:F+$/2})});let O=g*2+b*d+(b-1)*m,C=K-m+g,T=[],_=[],W=[],P=`kan-er-tri-${this.diagramArrowSeq++}`,V=`<defs><marker id="${P}" viewBox="0 0 12 12" refX="11" refY="6" markerWidth="12" markerHeight="12" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,0 L12,6 L0,12 Z" fill="var(--kan-bg)" stroke="var(--kan-text-dim)" stroke-width="1.5"/></marker></defs>`;for(let L of l){let j=E.get(i(L.subject));for(let N of L.rels){let R=c.get(ne(N.range.uri)),I=E.get(i(R)),F=i(R)===i(L.subject),$=this.subjectFor(N.uri),A=!!$&&fn(this.catalog,$,$s),z=!!$&&fn(this.catalog,$,Ss),U=N.minCount??0,M=N.maxCount??(z?1:void 0),me=$?G(this.catalog,$).label:N.localName;if(F){let oe=j.x+j.w,Ee=j.y+12,ve=j.y+j.h-12;T.push(`<path class="kan-er-relationship" d="M${oe},${Ee} h28 V${ve} h-28" fill="none" stroke="var(--kan-text-dim)" stroke-width="1.5"/>`),A||T.push(this.erCardinalityGlyph(oe,ve,180,U,M)),_.push(`<text class="kan-er-relationship-label" x="${oe+32}" y="${j.cy+4}" font-size="11" fill="var(--kan-text)">${h(me)}</text>`);continue}let ce=this.erBorderPoint(j.cx,j.cy,j.w,j.h,I.cx,I.cy),se=this.erBorderPoint(I.cx,I.cy,I.w,I.h,j.cx,j.cy);T.push(`<line class="kan-er-relationship" x1="${ce.x.toFixed(1)}" y1="${ce.y.toFixed(1)}" x2="${se.x.toFixed(1)}" y2="${se.y.toFixed(1)}" stroke="var(--kan-text-dim)" stroke-width="1.5"/>`);let de=Math.atan2(se.y-ce.y,se.x-ce.x)*180/Math.PI;A||T.push(this.erCardinalityGlyph(se.x,se.y,de,U,M)),_.push(`<text class="kan-er-relationship-label" x="${((ce.x+se.x)/2).toFixed(1)}" y="${((ce.y+se.y)/2-6).toFixed(1)}" text-anchor="middle" font-size="11" fill="var(--kan-text)" style="paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px">${h(me)}</text>`)}for(let N of L.supers){let R=c.get(ne(N)),I=E.get(i(R)),F=this.erBorderPoint(j.cx,j.cy,j.w,j.h,I.cx,I.cy),$=this.erBorderPoint(I.cx,I.cy,I.w,I.h,j.cx,j.cy);T.push(`<line class="kan-er-inherits" x1="${F.x.toFixed(1)}" y1="${F.y.toFixed(1)}" x2="${$.x.toFixed(1)}" y2="${$.y.toFixed(1)}" stroke="var(--kan-text-dim)" stroke-width="1.5" marker-end="url(#${P})"/>`)}}for(let L of l){let j=E.get(i(L.subject)),N=this.hrefForSubject(L.subject,t),R=L.attrs.length===0?`<text x="${j.x+10}" y="${j.y+f+14}" font-size="11" fill="var(--kan-text-faint)" font-style="italic">no attributes</text>`:L.attrs.map((I,F)=>{let $=this.subjectFor(I.uri),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)">${h(A)}${z}<tspan fill="var(--kan-text-dim)"> : ${h(I.range.uri.name)}</tspan></text>`}).join("");W.push(`<a href="${h(N)}"><g class="kan-er-entity"><rect x="${j.x}" y="${j.y}" width="${j.w}" height="${j.h}" rx="6" fill="var(--kan-bg-card)" stroke="var(--kan-border)" stroke-width="1.5"/><rect x="${j.x}" y="${j.y}" width="${j.w}" height="${f}" rx="6" fill="var(--kan-bg-elev)"/><text class="kan-er-entity-label" x="${j.cx}" y="${j.y+20}" text-anchor="middle" font-size="13" font-weight="600" fill="var(--kan-text)">${h(L.label)}</text><line x1="${j.x}" y1="${j.y+f}" x2="${j.x+j.w}" y2="${j.y+f}" stroke="var(--kan-border)"/>`+R+"</g></a>")}return`<figure class="kan-diagram-figure kan-er-figure"><svg class="kan-diagram-svg kan-er" viewBox="0 0 ${O} ${C}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${V}${T.join("")}${W.join("")}${_.join("")}</svg></figure>`}diagramTile(e,n,t,a,s,o=1){let i=this.hrefForSubject(e,s),c=this.svgUrlForSubject(e,s),l=G(this.catalog,e).label,d=o<1?` opacity="${o.toFixed(2)}"`:"";return`<a href="${h(i)}"><image href="${h(c)}" x="${n}" y="${t}" width="${a}" height="${a}"${d}><title>${h(l)}</title></image></a>`}async renderStatRow(e,n){let t=J(e,uo),a=this.gatherValueItems(t).filter(o=>o instanceof D);if(a.length===0)return"<!-- LookRenderer.StatRow: no look.stats -->";let s=[];for(let o of a){let i=this.readEmbeddedCarrier(o,fo);if(!i)continue;let c=await this.evaluateCarrier(i,n);if(c===void 0)continue;let l=ae(o,po)??"";s.push('<div class="kan-stat">'+(l?`<span class="kan-stat-label">${h(l)}</span>`:"")+`<span class="kan-stat-val">${h(c)}</span></div>`)}return s.length===0?"":`<div class="kan-stat-row">${s.join("")}</div>`}barMarkup(e){let n=Number(e);if(!Number.isFinite(n))return h(e);let t=Math.max(0,Math.min(1,n))*100;return`<span class="kan-bar-meter" role="img" aria-label="${h(e)}"><span class="kan-bar-fill" style="width:${t.toFixed(1)}%"></span></span><span class="kan-bar-value">${h(e)}</span>`}async renderBarMeter(e,n){let t=this.readEmbeddedCarrier(e,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=J(e,oo),a=this.gatherValueItems(t).filter(i=>i instanceof D);if(a.length===0)return"<!-- LookRenderer.ResourceCount: no look.counts -->";let s=this.readTransitive(e),o=[];for(let i of a){let c=q(i,ke);if(!c)continue;let l=re(this.catalog,c);if(!l)continue;let d=G(this.catalog,l).label,f=this.findInstancesOfClass(c,s).length,p=this.hrefForSubject(l,n);o.push(`<a class="kan-count" href="${h(p)}"><span class="kan-count-val">${f}</span><span class="kan-count-label">${h(d)}</span></a>`)}return o.length===0?"":`<div class="kan-count-row">${o.join("")}</div>`}renderHorizon(e,n,t){let a=q(e,ke);if(!a)return"<!-- LookRenderer.Horizon: no look.source -->";let s=this.gatherValueItems(J(n,a)).filter(i=>i instanceof D);return s.length===0?"":`<section class="kan-horizon">${s.map(i=>this.renderConditionNode(i,t,0)).join("")}</section>`}renderConditionNode(e,n,t){let a=on(e),s=a?this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name:"Condition",o=[],i=[];for(let p of e.statement){let m=p.predicate?.subject;if(!m||X(m,Ne))continue;let g=this.readLabelForUri({publisher:m.publisher,package_:m.package_,name:m.name})??m.name;if(p instanceof Z||p instanceof ge||p instanceof fe)o.push(`<div class="kan-cond-field"><span class="kan-cond-key">${h(g)}</span><span class="kan-cond-v">${h(String(p.object))}</span></div>`);else if(p instanceof H&&p.object instanceof x){let b=p.object.subject,k=this.readLabelForUri({publisher:b.publisher,package_:b.package_,name:b.name})??b.name;o.push(`<div class="kan-cond-field"><span class="kan-cond-key">${h(g)}</span><span class="kan-cond-v">${h(k)}</span></div>`)}else if(p instanceof ee)i.push(this.renderConditionNode(p.object,n,t+1));else if(p instanceof B)for(let b of p.object??[])b instanceof D&&i.push(this.renderConditionNode(b,n,t+1))}let c=o.length?`<div class="kan-cond-fields">${o.join("")}</div>`:"",l=i.length?`<div class="kan-cond-children">${i.join("")}</div>`:"",d=i.length>0,f=d?`<span class="kan-cond-op">${h(s)}</span>`:`<div class="kan-cond-type">${h(s)}</div>`;return`<div class="kan-cond ${d?"kan-cond-branch":"kan-cond-leaf"}">${f}${c}${l}</div>`}renderSectionHeading(e){let n=e,t=ae(n,sa);if(!t)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let a=ae(n,eo);return`<div class="kan-section" id="${ba(t)}"><h2 class="kan-section-title">${h(t)}</h2>`+(a?`<p class="kan-section-note">${h(a)}</p>`:"")+"</div>"}renderSectionNav(e){return e.length===0?"<!-- LookRenderer.SectionNav: no section headings in this view -->":`<nav class="kan-section-nav" aria-label="On this page">${e.map(t=>`<a class="kan-section-nav-link" href="#${h(t.slug)}">${h(t.label)}</a>`).join("")}</nav>`}async renderVersionDelta(e,n){let t=this.readEmbeddedCarrier(e,kn);if(!t)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let a=async P=>{let V=await this.evaluateCarrierNum(t,P);return Number.isFinite(V)?V:void 0},s=await a(n);if(s===void 0)return"";let o=P=>this.uriOf(P).version??{major:0,minor:0,patch:0},i=(P,V)=>P.major-V.major||P.minor-V.minor||P.patch-V.patch,c={publisher:ue(n),package_:this.uriOf(n).package_,name:n.name},l=o(n),d,f;for(let P of le(this.catalog,c)){let V=o(P);i(V,l)<0&&(!f||i(V,f)>0)&&(d=P,f=V)}if(!d||!f)return'<div class="kan-delta kan-delta-first">First tracked in this version</div>';let p=await a(d);if(p===void 0)return"";let m=s-p,g=Math.abs(m)<.005?"flat":m>0?"up":"down",b=g==="up"?"\u25B2":g==="down"?"\u25BC":"\u2014",k=g==="up"?"#34d399":g==="down"?"#f87171":"var(--kan-text-faint)",v=`${f.major}.${f.minor}.${f.patch}`,y=320,K=46,E=14,O=30,C=P=>E+Math.min(1,Math.max(0,P))*(y-2*E),T=C(p),_=C(s),W=`<svg class="kan-delta-track" viewBox="0 0 ${y} ${K}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${E}" y1="${O}" x2="${y-E}" y2="${O}" class="kan-delta-base"/><line x1="${T.toFixed(1)}" y1="${O}" x2="${_.toFixed(1)}" y2="${O}" stroke="${k}" stroke-width="3"/><circle cx="${T.toFixed(1)}" cy="${O}" r="4" class="kan-delta-prev"/><circle cx="${_.toFixed(1)}" cy="${O}" r="5.5" fill="${k}"/><text x="${T.toFixed(1)}" y="${O-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${p.toFixed(2)}</text><text x="${_.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 ${h(v)}</span><span class="kan-delta-badge ${g}">${m>0?"+":""}${m.toFixed(2)} ${b}</span></div>`+W+"</div>"}async renderTimePlot(e,n,t){let a=q(e,ke),s=q(e,Cn);if(!a||!s)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let o=this.readEmbeddedCarrier(e,lo),i=this.readEmbeddedCarrier(e,oa),c=[];for(let R of this.readPropertyValueReferences(n,a)){let I=re(this.catalog,{publisher:R.subject.publisher,package_:R.subject.package_,name:R.subject.name,...R.subject.version?{version:R.subject.version}:{}});if(!I)continue;let F=this.readPropertyValueText(I,s)??"",$=Date.parse(F);if(!Number.isFinite($))continue;let 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(ue(I),t)})}if(c.length===0)return"<!-- LookRenderer.TimePlot: no dated points -->";let l=[];for(let R of c)l.includes(R.lane)||l.push(R.lane);let d=Math.min(...c.map(R=>R.t)),f=Math.max(...c.map(R=>R.t));f===d&&(f=d+1);let p=l.some(R=>R),m=720,g=p?96:16,b=18,k=12,v=24,y=36,K=k+l.length*y+v,E=g,O=m-b,C=O-E,T=R=>E+(R-d)/(f-d)*C,_=R=>k+R*y+y/2,W=R=>Math.round(R*360/Math.max(1,l.length)),P=[];l.forEach((R,I)=>{let F=_(I);P.push(`<line x1="${E}" y1="${F.toFixed(1)}" x2="${O}" y2="${F.toFixed(1)}" class="kan-plot-guide"/>`),R&&P.push(`<text x="${(g-8).toFixed(1)}" y="${(F+4).toFixed(1)}" text-anchor="end" class="kan-plot-lane">${Ue(R)}</text>`)});let V={},L=[];for(let R of c){let I=l.indexOf(R.lane),$=((V[R.lane]=(V[R.lane]??0)+1)%3-1)*7,A=T(R.t),z=_(I)+$,U=`${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>${Ue(U)}</title></circle>`;L.push(R.linkable?`<a href="${h(R.href)}" class="kan-plot-link">${M}</a>`:M)}let j=`<text x="${E}" y="${(K-6).toFixed(1)}" text-anchor="start" class="kan-plot-axis">${Ue(Fn(new Date(d).toISOString()))}</text><text x="${O}" y="${(K-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${Ue(Fn(new Date(f).toISOString()))}</text>`;return`<section class="kan-plot">${`<svg class="kan-plot-svg" viewBox="0 0 ${m} ${K}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+P.join("")+L.join("")+j+"</svg>"}</section>`}renderDetails(e,n,t){let a=tt(e,io),s=this.detailRows(n,t,a);return s?`<dl class="kan-details">${s}</dl>`:"<!-- LookRenderer.Details: no properties -->"}detailRows(e,n,t){let a=[];for(let s of e.statement){let o=s.predicate?.subject;if(!o||this.isMetaPredicate(o)||t.some(l=>X(l,o)))continue;let i=this.readLabelForUri({publisher:o.publisher,package_:o.package_,name:o.name})??o.name,c=this.detailValue(s,n,t);c&&a.push(`<dt class="kan-details-key">${h(i)}</dt><dd class="kan-details-val">${c}</dd>`)}return a.join("")}detailValue(e,n,t){if(e instanceof Z)return va(e.object);if(e instanceof ge||e instanceof fe)return h(String(e.object));if(e instanceof H&&e.object instanceof x)return this.detailReferenceLink(e.object,n);if(e instanceof ee)return this.detailEmbedded(e.object,n,t);if(e instanceof B){let a=e.object??[];return a.length>0&&a.every(s=>s instanceof D)?a.map(s=>this.detailEmbedded(s,n,t)).join(""):a.map(s=>s instanceof x?this.detailReferenceLink(s,n):s instanceof D?this.detailEmbedded(s,n,t):h(String(s))).filter(s=>s).join(", ")}return""}detailReferenceLink(e,n){let t=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name;if(!this.isLinkable(e.subject.publisher,n))return`<span class="kan-link-plain">${h(t)}</span>`;let a=this.urlForReference(e,void 0,n);return`<img class="kan-md-chip" src="${h(`${a}.svg`)}" alt="" loading="lazy"><a class="kan-link" href="${h(a)}">${h(t)}</a>`}detailEmbedded(e,n,t){let a=on(e),s=a?this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name:"",o=this.detailRows(e,n,t);return'<div class="kan-details-embed">'+(s?`<span class="kan-details-type">${h(s)}</span>`:"")+(o?`<dl class="kan-details">${o}</dl>`:"")+"</div>"}rangeTypeRefs(e){let n=re(this.catalog,e);if(!n)return[];let t=J(n,Vr);return t instanceof H&&t.object instanceof x?[t.object]:[]}async renderEmbeddedViews(e,n,t,a=""){let s=q(e,ke);if(!s)return"<!-- LookRenderer: EmbeddedViews missing look.source -->";let o=this.gatherValueItems(J(n,s)).filter(m=>m instanceof D);if(o.length===0)return"";let i=a?`${a}.${s.name}`:s.name,c=J(e,Po),l=c instanceof fe?c.object===!0:c instanceof Z&&c.object==="true",d=[],f=[];for(let m of o){let g=m,b=m.name?`${i}.${m.name}`:"";if(l&&b){let C=G(this.catalog,g).label||m.name||b;d.push(`<a class="kan-section-nav-link" href="#${h(b)}">${h(C)}</a>`)}let k=ye(g),v=k.length>0?k:this.rangeTypeRefs(s),y=Un(g)?this.findCascadedLook(g):this.lookFromTypeRefs(v),K="";if(y){let C=[];for(let T of nt(y.declaration))C.push(await this.renderBand(T,g,t,[],b));K=C.join(`
|
|
128
|
-
`)}else{let C=this.detailRows(m,t,[]);K=C?`<dl class="kan-details">${C}</dl>`:""}let E=b?` id="${h(b)}"`:"",O=b?this.anchorLink(b):"";f.push(`<section class="kan-embedded-view"${E}>${O}${K}</section>`)}return`<div class="kan-embedded-views">${d.length>0?`<nav class="kan-section-nav" aria-label="On this page">${d.join("")}</nav>
|
|
129
|
-
`:""}${f.join(`
|
|
130
|
-
`)}</div>`}anchorLink(e){return`<a class="kan-anchor" href="#${h(e)}" title="${h(e)}" aria-label="Link to this resource">#</a>`}isMetaPredicate(e){return X(e,Ne)||X(e,Yn)||X(e,na)||X(e,Tn)||X(e,Pn)||X(e,co)||X(e,fa)||X(e,Ys)}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?at(l,160):"",f=this.hrefForSubject(o,n),p=this.svgUrlForSubject(o,n);return`<a class="kan-pkg-card" href="${h(f)}"><img class="kan-pkg-card-svg" src="${h(p)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${h(c)}</span>`+(d?`<span class="kan-pkg-card-comment">${h(d)}</span>`:"")+"</span></a>"}).join("")}</section>`)}renderReferencedBy(e,n,t){let a=q(e,Oo),s={publisher:ue(n),package_:this.uriOf(n).package_,name:n.name},o=te(s),i=p=>this.uriOf(p).version??{major:0,minor:0,patch:0},c=(p,m)=>p.major-m.major||p.minor-m.minor||p.patch-m.patch,l=new Map;for(let p of this.catalog){if(!(p instanceof Y))continue;let m=te({publisher:ue(p),package_:this.uriOf(p).package_,name:p.name});if(m!==o)for(let g of p.statement){let b=g.predicate?.subject;if(!b||X(b,Ne)||a&&te(b)!==te(a))continue;let k=[];if(g instanceof H&&g.object instanceof x)k.push(g.object);else if(g instanceof B)for(let E of g.object??[])E instanceof x&&k.push(E);if(!k.some(E=>te(E.subject)===o))continue;let v=te(b),y=l.get(v);y||(y={label:this.readLabelForUri(b)??b.name,best:new Map},l.set(v,y));let K=y.best.get(m);(!K||c(i(p),i(K))>0)&&y.best.set(m,p)}}return l.size===0?"<!-- LookRenderer.ReferencedBy: no incoming references -->":`<div class="kan-section"><h2 class="kan-section-title">Referenced by</h2></div>${[...l.values()].sort((p,m)=>p.label.localeCompare(m.label)).map(p=>{let g=[...p.best.values()].sort((b,k)=>G(this.catalog,b).label.localeCompare(G(this.catalog,k).label)).map(b=>this.resourceCard(b,t,n.namespace??void 0)).join("");return`<div class="kan-rel-group"><h3 class="kan-rel-prop"><span class="kan-rel-dir" title="incoming \u2014 references this resource">\u2190</span> ${h(p.label)}</h3><section class="kan-pkg-grid">${g}</section></div>`}).join("")}`}resourceCard(e,n,t){let a=G(this.catalog,e),s=a.summary?at(a.summary,160):"",o=ye(e).map(v=>this.readLabelForUri({publisher:v.subject.publisher,package_:v.subject.package_,name:v.subject.name})??v.subject.name),c='<span class="kan-pkg-card-body">'+(o.length>0?`<span class="kan-card-types">${o.map(v=>`<span class="kan-card-type">${h(v)}</span>`).join("")}</span>`:"")+`<span class="kan-pkg-card-title">${h(a.label)}</span>`+(s?`<span class="kan-pkg-card-comment">${h(s)}</span>`:"")+"</span>",l=this.isLinkable(ue(e),n),d=l?`<a class="kan-pkg-card-link" href="${h(this.hrefForSubject(e,n))}"><img class="kan-pkg-card-svg" src="${h(this.svgUrlForSubject(e,n))}" alt="" loading="lazy"/>`+c+"</a>":`<span class="kan-pkg-card-link">${c}</span>`,f=e.namespace||"",p=this.uriOf(e),m=p.publisher,g=p.package_,b=p.version?bn(p.version):"",k="";if(g&&f!==t){let v=b?`<span class="kan-card-at">@</span><span class="kan-card-ver">${h(b)}</span>`:"";if(l){let y=`<span class="kan-card-pkg">${h(g)}</span>${v}`;k=`<a class="kan-pkg-card-foot" href="${h(this.packageHref(m,g,b||void 0))}" title="${h(b?`${g}@${b}`:g)}">${y}</a>`}else{let y=`<span class="kan-card-pub">${h(m)}/</span><span class="kan-card-pkg">${h(g)}</span>${v}`;k=`<span class="kan-pkg-card-foot" title="${h(b?`${m}/${g}@${b}`:`${m}/${g}`)}">${y}</span>`}}return`<div class="kan-pkg-card kan-pkg-card--foot">${d}${k}</div>`}renderInstances(e,n,t){let a={publisher:ue(n),package_:this.uriOf(n).package_,name:n.name},s=this.readTransitive(e),o=s?this.descendantTypeKeys(a):new Set([te(a)]),i=k=>this.uriOf(k).version??{major:0,minor:0,patch:0},c=(k,v)=>k.major-v.major||k.minor-v.minor||k.patch-v.patch,l=new Map;for(let k of this.catalog){if(!(k instanceof Y)||!ye(k).some(E=>o.has(te(E.subject))))continue;let y=te({publisher:ue(k),package_:this.uriOf(k).package_,name:k.name}),K=l.get(y);(!K||c(i(k),i(K))>0)&&l.set(y,k)}let d=[...l.values()];if(d.length===0)return"<!-- LookRenderer.Instances: none -->";d.sort((k,v)=>G(this.catalog,k).label.localeCompare(G(this.catalog,v).label));let f=48,p=d.slice(0,f),m=p.map(k=>this.resourceCard(k,t,n.namespace??void 0)),g=d.length>f?` <span class="kan-count">${p.length} of ${d.length}</span>`:` <span class="kan-count">${d.length}</span>`;return`<div class="kan-section"><h2 class="kan-section-title">${s?"Instances (including subtypes)":"Instances"}${g}</h2></div><section class="kan-pkg-grid">${m.join("")}</section>`}descendantTypeKeys(e){let n=te(e),t=new Set([n]),a=new Set;for(let s of this.catalog)if(s instanceof Y)for(let o of ye(s)){let i=o.subject,c=te(i);a.has(c)||(a.add(c),nn(this.catalog,i).some(l=>te(l)===n)&&t.add(c))}return t}referencesTarget(e,n,t){for(let a of e.statement){let s=a.predicate?.subject;if(s&&X(s,Ne)||t&&!(s&&te(s)===te(t)))continue;let o=[];if(a instanceof H&&a.object instanceof x)o.push(a.object);else if(a instanceof B)for(let i of a.object??[])i instanceof x&&o.push(i);for(let i of o)if(te(i.subject)===n)return!0}return!1}async renderFeaturedResource(e,n){let t=q(e,ke);if(!t)return"<!-- LookRenderer.FeaturedResource: no look.source -->";let a=le(this.catalog,t),s=l=>this.uriOf(l).version??{major:0,minor:0,patch:0},o=a.length>0?a.slice().sort((l,d)=>{let f=s(l),p=s(d);return p.major-f.major||p.minor-f.minor||p.patch-f.patch})[0]:re(this.catalog,t);if(!o)return`<!-- LookRenderer.FeaturedResource: ${t.publisher}/${t.package_}/${t.name} not found -->`;let i=await this.renderHtml(o),c=this.hrefForSubject(o,n);return`<section class="kan-featured"><a class="kan-featured-permalink" href="${h(c)}">View full resource \u2192</a>`+i+"</section>"}async renderDistribution(e,n){let t=async F=>{let $=this.readEmbeddedCarrier(e,F);if(!$)return;let A=await this.evaluateCarrierNum($,n);return Number.isFinite(A)?A:void 0},a=await t(Qs),s=await t(Js);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(ua),c=await t(da),l=await t(Zn),d=l!==void 0?`hsl(${l},65%,60%)`:"var(--kan-accent)",f=F=>Number.isInteger(F)?String(F):F.toFixed(1),p=280,m=168,g={top:14,right:14,bottom:24,left:14},b=p-g.left-g.right,k=m-g.top-g.bottom,v=120,y=1e-4,K=[],E=[],O=0;for(let F=0;F<=v;F++){let $=F/v;$<y?$=y:$>1-y&&($=1-y);let A=Math.exp((a-1)*Math.log($)+(s-1)*Math.log(1-$));K.push($),E.push(A),A>O&&(O=A)}let C=F=>g.left+Math.min(1,Math.max(0,F))*b,T=F=>g.top+(1-(O>0?F/O:0))*k,_=g.top+k,W=K.map((F,$)=>`${C(F).toFixed(1)},${T(E[$]).toFixed(1)}`),P=`M${C(0).toFixed(1)},${_.toFixed(1)} L${W.join(" L")} L${C(1).toFixed(1)},${_.toFixed(1)} Z`,V="";if(i!==void 0&&c!==void 0&&c>i){let F=[`${C(i).toFixed(1)},${_.toFixed(1)}`];for(let $=0;$<=v;$++)K[$]>=i&&K[$]<=c&&F.push(`${C(K[$]).toFixed(1)},${T(E[$]).toFixed(1)}`);F.push(`${C(c).toFixed(1)},${_.toFixed(1)}`),V=`<path d="M${F.join(" L")} Z" fill="${d}" fill-opacity="0.3"/>`}let L=C(o),j=`<line x1="${L.toFixed(1)}" y1="${g.top.toFixed(1)}" x2="${L.toFixed(1)}" y2="${_.toFixed(1)}" stroke="${d}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${L.toFixed(1)}" y="${(g.top-3).toFixed(1)}" text-anchor="middle" class="kan-dist-mean">\u03BC ${o.toFixed(2)}</text>`,N=`<text x="${C(0).toFixed(1)}" y="${(_+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${C(1).toFixed(1)}" y="${(_+15).toFixed(1)}" text-anchor="end" class="kan-dist-axis">1</text>`,R=`<svg class="kan-dist-svg" viewBox="0 0 ${p} ${m}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${g.left}" y1="${_.toFixed(1)}" x2="${(p-g.right).toFixed(1)}" y2="${_.toFixed(1)}" class="kan-dist-base"/><path d="${P}" fill="${d}" fill-opacity="0.12"/>`+V+`<polyline points="${W.join(" ")}" fill="none" stroke="${d}" stroke-width="2"/>`+j+N+"</svg>",I=i!==void 0&&c!==void 0?` \xB7 95% CI [${i.toFixed(2)}\u2013${c.toFixed(2)}]`:"";return`<figure class="kan-dist">${R}<figcaption class="kan-dist-caption">Beta(${f(a)}, ${f(s)})${I}</figcaption></figure>`}renderPublisherPackages(e,n){let t=new Map;for(let c of this.catalog){if(!(c instanceof Y)||ue(c)!==n)continue;let l=this.uriOf(c).package_;if(!l||c.name!==l)continue;let d=t.get(l),f=this.uriOf(c).version,p=d?this.uriOf(d).version:void 0;(!d||f&&(!p||hn(f,p)>0))&&t.set(l,c)}let a,s=J(e,Ns),o=s instanceof B?s.object??[]:s instanceof H&&s.object instanceof x?[s.object]:[];if(o.length>0){a=[];for(let c of o){if(!(c instanceof x))continue;let l=c.subject.package_,d=t.get(l);d&&a.push([l,d])}}else a=[...t.entries()].sort((c,l)=>c[0].localeCompare(l[0]));return a.length===0?"":`<section class="kan-pkg-grid">${a.map(([c,l])=>{let d=G(this.catalog,l),f=d.label,p=d.summary,m=p?at(p,160):"",g=this.svgUrlForSubject(l,n);return`<a class="kan-pkg-card" href="${h(this.packageHref(n,c))}"><img class="kan-pkg-card-svg" src="${h(g)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${h(f)}</span>`+(m?`<span class="kan-pkg-card-comment">${h(m)}</span>`:"")+"</span></a>"}).join("")}</section>`}async renderTimeline(e,n){let t=q(e,ke);if(!t)return"<!-- LookRenderer.Timeline: no look.source -->";let a=q(e,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=q(e,la),l=this.readEmbeddedCarrier(e,kn);return c&&l?this.renderTrajectoryChart(i,c,l,e,n,o):`<section class="kan-timeline"><ol>
|
|
131
|
-
${i.map(f=>{let p=this.uriOf(f),m=p.package_,g=p.version,b=this.resourceHref({publisher:ue(f),package_:m,name:f.name,...g?{version:g}:{}},n),k=o(f),v=k?`<span class="kan-timeline-date">${h(k)}</span>`:"",y=g?bn(g):f.name;return`<li class="kan-timeline-node"><a href="${h(b)}"><span class="kan-timeline-key">${h(y)}</span>${v}</a></li>`}).join(`
|
|
132
|
-
`)}
|
|
133
|
-
</ol></section>`}async renderTrajectoryChart(e,n,t,a,s,o){let i=a,c=this.readEmbeddedCarrier(a,Zn),l=this.readEmbeddedCarrier(a,ua),d=this.readEmbeddedCarrier(a,da),f=ae(i,jo),p=ka(i,wo),m=ka(i,_o),g=e.length,b=await this.collectTrackedSeries(e,n,t,{hueBy:c,lowerPath:l,upperPath:d});if(b.length===0)return"<!-- LookRenderer.Timeline: no tracked series -->";let k=[];for(let U of b){for(let M of U.points)M!==null&&k.push(M);for(let M of U.lower??[])M!==null&&k.push(M);for(let M of U.upper??[])M!==null&&k.push(M)}if(k.length===0)return"<!-- LookRenderer.Timeline: no metric values -->";let v=Math.min(...k),y=Math.max(...k);y-v<1e-9&&(v-=.5,y+=.5);let K=(y-v)*.08,E=p!==void 0?p:v-K,O=m!==void 0?m:y+K;O-E<1e-9&&(O=E+1);let C=1e3,T=440,_={top:28,right:24,bottom:56,left:52},W=C-_.left-_.right,P=T-_.top-_.bottom,V=U=>g<=1?_.left+W/2:_.left+U/(g-1)*W,L=U=>_.top+(1-(U-E)/(O-E))*P,j=(U,M)=>U.hue!==void 0?U.hue:Math.round(M*360/b.length),N=[];for(let U=0;U<5;U++){let M=E+U*(O-E)/4,me=L(M);N.push(`<line x1="${_.left}" y1="${me.toFixed(1)}" x2="${(C-_.right).toFixed(1)}" y2="${me.toFixed(1)}" class="kan-fan-grid"/>`),N.push(`<text x="${(_.left-8).toFixed(1)}" y="${(me+4).toFixed(1)}" class="kan-fan-axis" text-anchor="end">${M.toFixed(2)}</text>`)}let R=[];e.forEach((U,M)=>{let me=this.hrefForSubject(U,s),ce=this.uriOf(U).version,se=ce?bn(ce):"",de=V(M),oe=Fn(o(U));R.push(`<a href="${h(me)}" class="kan-fan-xtick"><line x1="${de.toFixed(1)}" y1="${_.top}" x2="${de.toFixed(1)}" y2="${(T-_.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${de.toFixed(1)}" y="${(T-_.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${Ue(se||U.name)}</text>`+(oe?`<text x="${de.toFixed(1)}" y="${(T-_.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${Ue(oe)}</text>`:"")+"</a>")});let I=[];b.forEach((U,M)=>{if(!U.lower||!U.upper)return;let me=j(U,M),ce=[],se=[];for(let oe=0;oe<g;oe++){let Ee=U.upper[oe],ve=U.lower[oe];Ee==null||ve===null||ve===void 0||(ce.push(`${V(oe).toFixed(1)},${L(Ee).toFixed(1)}`),se.unshift(`${V(oe).toFixed(1)},${L(ve).toFixed(1)}`))}let de=ce.concat(se);de.length<3||I.push(`<polygon class="kan-fan-band" points="${de.join(" ")}" fill="hsl(${me},65%,60%)"/>`)});let F=[];b.forEach((U,M)=>{let ce=`hsl(${j(U,M)},65%,60%)`,se=[],de=[];U.points.forEach((oe,Ee)=>{if(oe===null)return;let ve=V(Ee),he=L(oe);se.push(`${ve.toFixed(1)},${he.toFixed(1)}`),de.push(`<circle cx="${ve.toFixed(1)}" cy="${he.toFixed(1)}" r="3.5" fill="${ce}"/>`)}),se.length!==0&&F.push(`<g class="kan-fan-series" data-series="${h(U.key)}"><polyline points="${se.join(" ")}" fill="none" stroke="${ce}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`+de.join("")+"</g>")});let $=`<svg class="kan-fan-svg" viewBox="0 0 ${C} ${T}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+N.join("")+R.join("")+I.join("")+F.join("")+"</svg>",A=f?`${h(f)}=`:"",z=b.map((U,M)=>{let me=j(U,M),ce=U.points.filter(he=>he!==null),se=ce.length?ce[0]:void 0,de=ce.length?ce[ce.length-1]:void 0,oe="";if(de!==void 0&&se!==void 0){let he=de-se;if(Math.abs(he)>=.005){let ze=he>0?"up":"down",Oe=he>0?"\u25B2":"\u25BC";oe=` <span class="kan-fan-delta ${ze}">${he>0?"+":""}${he.toFixed(2)} ${Oe}</span>`}else oe=' <span class="kan-fan-delta flat">\u2014</span>'}let Ee=de!==void 0?`${A}${de.toFixed(2)}`:"\u2014",ve=U.lastSubject&&this.isLinkable(ue(U.lastSubject),s)?`<a href="${h(this.hrefForSubject(U.lastSubject,s))}">${h(U.label)}</a>`:h(U.label);return`<div class="kan-fan-legend-item" style="--kan-fan-hue:${me}"><span class="kan-fan-swatch"></span><span class="kan-fan-legend-label">${ve}</span><span class="kan-fan-legend-cur">${Ee}${oe}</span></div>`});return`<section class="kan-fan"><div class="kan-fan-chart">${$}</div><div class="kan-fan-legend">${z.join("")}</div></section>`}resolveResourceQuery(e){let n=i=>{let c=q(i,vo);if(!c)return;let l=q(i,Cn),d=ae(i,$o),f=this.readPropertyValueText(i,So),p=f!==void 0?Number(f):NaN;return{ofClass:c,...l?{orderBy:l}:{},descending:d==="descending",...Number.isInteger(p)&&p>0?{limit:p}:{}}},t=this.readEmbeddedCarrier(e,ke);if(t)return n(t);let a=q(e,ke);if(!a)return;let s=re(this.catalog,a);return(s?ye(s).some(i=>X(i.subject,yo)):!1)&&s?n(s):{ofClass:a,descending:!1}}applyQueryShape(e,n){let t=e;if(n.orderBy){let a=s=>this.readPropertyValueText(s,n.orderBy)??"";t=t.slice().sort((s,o)=>a(s).localeCompare(a(o))),n.descending&&t.reverse()}return n.limit!==void 0&&(t=t.slice(0,n.limit)),t}renderResourceGrid(e,n,t){let a=this.resolveResourceQuery(e),s=q(e,ke)??a?.ofClass;if(!s)return"<!-- LookRenderer.ResourceGrid: no look.source -->";let o=re(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=re(this.catalog,{publisher:f.subject.publisher,package_:f.subject.package_,name:f.subject.name,...f.subject.version?{version:f.subject.version}:{}});p&&c.push(p)}}else a?c=this.applyQueryShape(this.findInstancesOfClass(a.ofClass,this.readTransitive(e)),a):c=this.findInstancesOfClass(s,this.readTransitive(e));if(c.length===0)return`<!-- LookRenderer.ResourceGrid: no resources for ${s.publisher}/${s.package_}/${s.name} -->`;let l=[];for(let d of c){let f=G(this.catalog,d),p=f.label,m=f.summary,g=this.uriOf(d),b=g.package_,k=g.version,v=this.resourceHref({publisher:ue(d),package_:b,name:d.name,...k?{version:k}:{}},n),y=m?`<p class="kan-resource-card-subtitle">${h(m)}</p>`:"",K=`<h3 class="kan-resource-card-title">${h(p)}</h3>${y}`;l.push(this.isLinkable(ue(d),n)?`<a class="kan-resource-card" href="${h(v)}">${K}</a>`:`<span class="kan-resource-card">${K}</span>`)}return`<section class="kan-resource-grid">
|
|
134
|
-
${l.join(`
|
|
135
|
-
`)}
|
|
136
|
-
</section>`}readTransitive(e){let n=J(e,Vo);return n instanceof fe?n.object===!0:n instanceof Z&&n.object==="true"}findInstancesOfClass(e,n=!1){let t=n?this.descendantTypeKeys(e):new Set([te(e)]),a=[];for(let s of this.catalog)s instanceof Y&&ye(s).some(o=>t.has(te(o.subject)))&&a.push(s);return a}renderBreadcrumb(e,n,t){let s=(e.namespace||"").split("/");if(s.length<2)return"";let o=s[0],i=s[1]??"",c=i.split("@")[0]??"",l=i.split("@")[1]??"";if(!o||!c)return"";if(t?.bareOverview)return`<nav class="kan-breadcrumb"><ol>
|
|
137
|
-
<li><a href="${h(this.publisherHref(o))}">${h(o)}</a></li>
|
|
138
|
-
<li aria-current="page">${h(c)}</li>
|
|
139
|
-
</ol></nav>`;let d=e.name,p=!!re(this.catalog,{publisher:o,package_:c,name:c}),m=l?`${c}@${l}`:c,g=this.resourceHref({publisher:o,package_:c,name:c,...l?{version:ot(l)}:{}},o),b=e.name===c,k=[];return k.push(`<li><a href="${h(this.publisherHref(o))}">${h(o)}</a></li>`),b?k.push(`<li aria-current="page">${h(m)}</li>`):(k.push(p?`<li><a href="${h(g)}">${h(m)}</a></li>`:`<li>${h(m)}</li>`),k.push(`<li aria-current="page">${h(d)}</li>`)),`<nav class="kan-breadcrumb"><ol>
|
|
140
|
-
${k.join(`
|
|
141
|
-
`)}
|
|
142
|
-
</ol></nav>`}renderNavGroup(e,n){let t=J(this.publisherSubject(n),Xr),a=t instanceof B?t.object??[]:t instanceof H&&t.object instanceof x?[t.object]:[];if(a.length===0)return"";let s=[];for(let o of a){if(!(o instanceof x))continue;let i=re(this.catalog,{publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name}),{href:c,label:l}=this.resolveNavEntry(o,i,n),d=this.hrefForSubject(e,n),f=c===d?' aria-current="page"':"";s.push(`<li><a class="kan-nav-link" href="${h(c)}"${f}>${h(l)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
|
|
143
|
-
${s.join(`
|
|
144
|
-
`)}
|
|
145
|
-
</ul></nav>`}renderSiteFooter(e){let n=J(this.publisherSubject(e),Qr),t;if(n instanceof ee?t=n.object:n instanceof H&&n.object instanceof x&&(t=re(this.catalog,{publisher:n.object.subject.publisher,package_:n.object.subject.package_,name:n.object.subject.name})),!t)return"";let a=ae(t,Jr),s=J(t,Zr),o=s instanceof B?s.object??[]:s instanceof H&&s.object instanceof x?[s.object]:[],i=[];for(let l of o){if(!(l instanceof x))continue;let d=re(this.catalog,{publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name}),{href:f,label:p}=this.resolveNavEntry(l,d,e);i.push(`<a class="kan-footer-link" href="${h(f)}">${h(p)}</a>`)}if(!a&&i.length===0)return"";let c=[];return i.length>0&&c.push(`<div class="kan-footer-links">${i.join("")}</div>`),a&&c.push(`<p class="kan-footer-text">${h(a)}</p>`),`<footer class="kan-site-footer">${c.join(`
|
|
146
|
-
`)}</footer>`}resolveNavEntry(e,n,t){if(n&&ye(n).map(c=>c.subject).some(c=>c.publisher===Xn.publisher&&c.package_===Xn.package_&&c.name===Xn.name)){let c=ae(n,Yn),l=J(n,aa);if(l instanceof H&&l.object instanceof x){let d=l.object,f=this.readLabelForUri({publisher:d.subject.publisher,package_:d.subject.package_,name:d.subject.name});return{href:this.urlForReference(d,aa,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 xn(this.collectGrammars())),this._codeHighlighter}collectGrammars(){let e=[];for(let n of this.catalog){if(!(n instanceof Y)||!ye(n).some(i=>X(i.subject,Ds)))continue;let t=ae(n,Bs);if(!t)continue;let a=J(n,Hs),s=a instanceof B?a.object??[]:[],o=[];for(let i of s){if(!(i instanceof D))continue;let c=q(i,qs),l=ae(i,Gs);!c||!l||o.push({tokenClass:c.name,pattern:l})}e.push({language:t,rules:o})}return e}renderLinks(e,n){let t=q(e,ke);if(!t)return"";let a=J(n,t),s=[];a instanceof B?s=a.object??[]:a instanceof ee?s=[a.object]:a instanceof H&&a.object instanceof x&&(s=[a.object]);let o=[];for(let i of s){let c;if(i instanceof D?c=i:i instanceof x&&(c=re(this.catalog,{publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name})),!c)continue;let l=ae(c,Ws);if(!l)continue;let d=ae(c,Yn)??l,f=ae(c,na),p=f?` title="${h(f)}"`:"";o.push(`<a class="kan-extlink" href="${h(l)}"${p} target="_blank" rel="noopener noreferrer">${h(d)}</a>`)}return o.length===0?"":`<section class="kan-extlink-row">${o.join("")}</section>`}renderMarkdown(e,n,t){let a=q(e,ke);if(!a)return"<!-- LookRenderer.Markdown: no look.source -->";let s=J(n,a),o=new Map,i;if(s instanceof De?i=this.resolveMarkdownLinks(s,t,o):s instanceof Z?i=s.object:i=this.readPropertyValueText(n,a),!i)return"";let c=this.codeHighlighter(),l=mn(i,{highlight:(d,f)=>c.highlight(d,f)});for(let[d,f]of o){let p=new RegExp('(<a href="'+ya(d)+'">)([^<]*)(</a>)',"g");l=l.replace(p,`$1<img class="kan-md-chip" src="${h(f)}" alt="" loading="lazy">$2$3`)}return`<section class="kan-markdown">
|
|
147
|
-
${l}
|
|
148
|
-
</section>`}resolveMarkdownLinks(e,n,t){let a=e.object,s=[...e.links].sort((o,i)=>i.startOffset-o.startOffset);for(let o of s){let i;if(o.target&&this.isLinkable(o.target.subject.publisher,n)){let c=o.target.subject,l=(o.displayText??this.readLabelForUri({publisher:c.publisher,package_:c.package_,name:c.name})??o.reference).replace(/[[\]]/g,""),d=this.resourceHref({publisher:c.publisher,package_:c.package_,name:c.name,...c.version?{version:c.version}:{}},n);t&&t.set(d,`${d}.svg`),i=`[${l}](${d})`}else if(o.target){let c=o.target.subject;i=(o.displayText??this.readLabelForUri({publisher:c.publisher,package_:c.package_,name:c.name})??o.reference).replace(/[[\]]/g,"")}else i=o.displayText??o.reference;a=a.slice(0,o.startOffset)+i+a.slice(o.endOffset)}return a}renderRawMarkdown(e){let n=this.findCascadedLook(e);if(!n)return;let t=nt(n.declaration),a=[];for(let s of t){let o=on(s);if(!o||!X(o,ta))continue;let i=q(s,ke);if(!i)continue;let c=this.readPropertyValueText(e,i);c&&a.push(c)}return a.length>0?a.join(`
|
|
149
|
-
|
|
150
|
-
`):void 0}renderHero(e,n,t){let a=b=>{let k=J(e,b);return k instanceof fe?k.object===!0:k instanceof Z&&k.object==="true"},s=a(To),o=!s&&a(Fo),i=s||o,l=[`<header class="${s?"kan-hero kan-hero-has-avatar":o?"kan-hero kan-hero-has-icon":"kan-hero"}">`];if(i){let b=this.svgUrlForSubject(n,t),k=s?"kan-hero-avatar":"kan-hero-icon";l.push(`<img class="${k}" src="${h(b)}" alt="" loading="lazy"/>`),l.push('<div class="kan-hero-text">')}let d=q(e,Co);if(d){let b=this.readPropertyValueText(n,d);b&&l.push(`<span class="kan-hero-eyebrow">${h(Vn(b)??b)}</span>`)}let f=q(e,xo),p="";f&&(p=this.readPropertyValueText(n,f)??""),p||(p=G(this.catalog,n).label),l.push(`<h1 class="kan-hero-title">${h(Vn(p)??p)}</h1>`);let m=q(e,Uo);if(m){let b=this.readPropertyValueText(n,m);b&&l.push(`<p class="kan-hero-subtitle">${h(Vn(b)??b)}</p>`)}let g=q(e,ma);if(g){let b=this.readPropertyValueReferences(n,g);if(b.length>0){let k=b.map(v=>this.renderBadge(v,ma,t)).join("");l.push(`<div class="kan-hero-badges">${k}</div>`)}}return i&&l.push("</div>"),l.push("</header>"),l.join(`
|
|
151
|
-
`)}renderPropertyList(e,n,t){let a=q(e,ke);if(!a)return"<!-- LookRenderer: PropertyList missing look.source -->";let s=this.readLabelForUri(a)??a.name,o=J(n,a),i=this.gatherValueItems(o),c=i.length>0?i.map(l=>`<li>${this.renderInlineValue(l,ke,t)}</li>`).join(""):'<li class="kan-empty">(no values)</li>';return['<section class="kan-property-list">',`<h3 class="kan-property-list-title">${h(s)}</h3>`,`<ul class="kan-property-list-items">${c}</ul>`,"</section>"].join(`
|
|
152
|
-
`)}renderPropertyTable(e,n,t,a=""){let s=q(e,ke);if(!s)return"<!-- LookRenderer: PropertyTable missing look.source -->";let o=this.gatherValueItems(J(n,s)).filter(d=>d instanceof D);if(o.length===0)return"";let i=this.readLabelForUri(s)??s.name,c=a?`${a}.${s.name}`:s.name,l=q(e,go);return this.renderEmbeddedTable(o,t,i,c,l)}renderEmbeddedTable(e,n,t,a,s){let o=[],i=new Set;for(let k of e)for(let v of k.statement){let y=v.predicate?.subject;if(!y||this.isMetaPredicate(y))continue;let K=`${y.publisher}/${y.package_}/${y.name}`;i.has(K)||(i.add(K),o.push({uri:{publisher:y.publisher,package_:y.package_,name:y.name},label:this.readLabelForUri(y)??y.name}))}if(o.length===0)return"";let c=e.map(k=>G(this.catalog,k).label),l=e.some((k,v)=>c[v]!==""&&c[v]!==k.name),d=!!a,f=(d?'<th class="kan-anchor-col"></th>':"")+(l?"<th></th>":"")+o.map(k=>`<th>${h(k.label)}</th>`).join(""),p=e.map((k,v)=>{let y=d&&k.name?`${a}.${k.name}`:"",K=y?` id="${h(y)}"`:"",E=d?`<td class="kan-anchor-col">${y?this.anchorLink(y):""}</td>`:"",O=l?`<th scope="row">${h(c[v]??"")}</th>`:"",C=o.map(T=>{let _=J(k,T.uri);return _?`<td>${this.tableCellValue(_,n,s)}</td>`:"<td></td>"}).join("");return`<tr${K}>${E}${O}${C}</tr>`}).join(""),m=d&&a?` id="${h(a)}"`:"",g=d&&a?this.anchorLink(a):"",b=t?`<caption>${h(t)}${g}</caption>`:"";return`<table class="kan-property-table"${m}>${b}<thead><tr>${f}</tr></thead><tbody>${p}</tbody></table>`}tableCellValue(e,n,t){if(t&&X(t,ia)){if(e instanceof ge)return this.barMarkup(String(e.object));if(e instanceof Z&&Number.isFinite(Number(e.object)))return this.barMarkup(e.object)}if(e instanceof De)return this.statementToMarkdownHtml(e,n);if(e instanceof Z)return va(e.object);if(e instanceof ge||e instanceof fe)return h(String(e.object));if(e instanceof H&&e.object instanceof x)return this.detailReferenceLink(e.object,n);if(e instanceof ee)return this.renderEmbeddedTable([e.object],n);if(e instanceof B){let a=e.object??[],s=a.filter(o=>o instanceof D);return s.length>0&&s.length===a.length?this.renderEmbeddedTable(s,n):a.map(o=>o instanceof x?this.detailReferenceLink(o,n):o instanceof D?this.renderEmbeddedTable([o],n):h(String(o))).filter(o=>o).join(", ")}return""}statementToMarkdownHtml(e,n){let t=new Map,a;if(e instanceof De?a=this.resolveMarkdownLinks(e,n,t):e instanceof Z&&(a=e.object),!a)return"";let s=this.codeHighlighter(),o=mn(a,{highlight:(i,c)=>s.highlight(i,c)});for(let[i,c]of t){let l=new RegExp('(<a href="'+ya(i)+'">)([^<]*)(</a>)',"g");o=o.replace(l,`$1<img class="kan-md-chip" src="${h(c)}" alt="" loading="lazy">$2$3`)}return o}renderBadgeRow(e,n,t){let a=q(e,ke);if(!a)return"<!-- LookRenderer: BadgeRow missing look.source -->";let s=this.readPropertyValueReferences(n,a);return s.length===0?"":`<div class="kan-badge-row">${s.map(i=>this.renderBadge(i,ke,t)).join("")}</div>`}renderChipRow(e,n,t){let a=tt(e,Ao);if(a.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let s=[];for(let o of a){let i=J(n,o);if(!i)continue;let c=this.readLabelForUri(o)??o.name,l=this.renderStatementInlineValue(i,o,t);l&&s.push(`<span class="kan-chip"><span class="kan-chip-key">${h(c)}</span> <span class="kan-chip-val">${l}</span></span>`)}return s.length===0?"":`<div class="kan-chip-row">${s.join("")}</div>`}async renderReferenceList(e,n,t){let a=tt(e,ga);if(a.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let s=this.readEmbeddedCarrier(e,oa),o=this.readEmbeddedCarrier(e,mo),i=[];for(let c of a){let l=this.readPropertyValueReferences(n,c);if(l.length===0)continue;let d=this.readLabelForUri(c)??c.name;if(s){let f=[];for(let m of l)f.push(await this.renderDetailRow(m,s,o,t));let p=f.filter(m=>m).join("");p&&i.push(`<dt>${h(d)}</dt><dd><ul class="kan-ref-rows">${p}</ul></dd>`)}else{let f=l.map(p=>this.renderReferenceLink(p,ga,t)).join(", ");i.push(`<dt>${h(d)}</dt><dd>${f}</dd>`)}}return i.length===0?"":`<dl class="kan-reference-list">${i.join("")}</dl>`}async renderDetailRow(e,n,t,a){let s=re(this.catalog,{publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name,...e.subject.version?{version:e.subject.version}:{}});if(!s)return"";let o=await this.evaluateCarrier(n,s)??G(this.catalog,s).label,i="";if(t){let f=await this.evaluateCarrier(t,s);f&&(i=`<span class="kan-ref-badge">${h(f)}</span>`)}let c=`<span class="kan-ref-text">${h(o)}</span>${i}`;if(!this.isLinkable(ue(s),a))return`<li class="kan-ref-row"><span class="kan-ref-rowlink">${c}</span></li>`;let l=this.hrefForSubject(s,a),d=this.svgUrlForSubject(s,a);return`<li class="kan-ref-row"><a class="kan-ref-rowlink" href="${h(l)}"><img class="kan-ref-icon" src="${h(d)}" alt="" loading="lazy"/>`+c+"</a></li>"}readPropertyValueText(e,n){let t=J(e,n);if(t){if(t instanceof Z)return t.object;if(t instanceof ge||t instanceof fe)return String(t.object);if(t instanceof H){let a=t.object;return this.readLabelForUri({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name})??a.subject.name}if(t instanceof ee)return this.readEmbeddedText(t.object,0)||void 0;if(t instanceof B)return(t.object??[]).map(s=>s instanceof x?this.readLabelForUri({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name})??s.subject.name:s instanceof D?this.readEmbeddedText(s,0):String(s)).filter(s=>s).join(", ")}}readEmbeddedText(e,n){if(n>=pa)return"\u2026";let t=[];for(let a of e.statement){let s=a.predicate?.subject;if(!(s&&X(s,Ne)))if(a instanceof Z)t.push(a.object);else if(a instanceof ge||a instanceof fe)t.push(String(a.object));else if(a instanceof H){let o=a.object;t.push(this.readLabelForUri({publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name})??o.subject.name)}else a instanceof ee&&t.push(this.readEmbeddedText(a.object,n+1))}return t.filter(a=>a).join(", ")}readPropertyValueReferences(e,n){let t=J(e,n);if(!t)return[];if(t instanceof H)return[t.object];if(t instanceof B){let a=[];for(let s of t.object??[])s instanceof x&&a.push(s);return a}return[]}gatherValueItems(e){return e?e instanceof B?e.object??[]:e instanceof H?[e.object]:e instanceof ee?[e.object]:e instanceof Z?[e.object]:e instanceof ge||e instanceof fe?[e.object]:[]:[]}renderInlineValue(e,n,t,a=0){return e instanceof x?this.renderReferenceLink(e,n,t):e instanceof D?this.renderEmbeddedInline(e,t,a):typeof e=="string"?h(e):typeof e=="number"||typeof e=="boolean"?h(String(e)):""}renderStatementInlineValue(e,n,t,a=0){return e instanceof Z?h(e.object):e instanceof ge||e instanceof fe?h(String(e.object)):e instanceof H?this.renderReferenceLink(e.object,n,t):e instanceof ee?this.renderEmbeddedInline(e.object,t,a):e instanceof B?(e.object??[]).map(o=>this.renderInlineValue(o,n,t,a)).filter(o=>o).join(", "):""}renderEmbeddedInline(e,n,t=0){if(t>=pa)return"\u2026";let a=[];for(let s of e.statement){let o=s.predicate?.subject;if(!o||X(o,Ne))continue;let i=this.readLabelForUri({publisher:o.publisher,package_:o.package_,name:o.name})??o.name,c=this.renderStatementInlineValue(s,o,n,t+1);c&&a.push(`<dt>${h(i)}</dt><dd>${c}</dd>`)}return a.length?`<dl class="kan-embedded">${a.join("")}</dl>`:""}renderReferenceLink(e,n,t){let a=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name;if(!this.isLinkable(e.subject.publisher,t))return`<span class="kan-link-plain">${h(a)}</span>`;let s=this.urlForReference(e,n,t);return`<a class="kan-link" href="${h(s)}">${h(a)}</a>`}isLinkable(e,n){return this.publisherFirst||e===n}renderBadge(e,n,t){let a=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name,s=this.readCommentForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name}),o=s?` title="${h(s)}"`:"";if(!this.isLinkable(e.subject.publisher,t))return`<span class="kan-badge"${o}>${h(a)}</span>`;let i=this.urlForReference(e,n,t);return`<a class="kan-badge" href="${h(i)}"${o}>${h(a)}</a>`}urlForReference(e,n,t){let a=n?this.getUrlFormForProperty(n):"=";return this.resourceHref({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},t,a)}getUrlFormForProperty(e){let n=re(this.catalog,e);if(!n)return"=";let t=ae(n,Mo);return t==="*"||t==="^"||t==="~"||t==="="?t:"="}readLabelForUri(e){let n=re(this.catalog,e);if(n)return G(this.catalog,n).label}readCommentForUri(e){let n=re(this.catalog,e);if(n)return G(this.catalog,n).summary}};function No(r){let e=new Map;for(let n of r.statement){if(!(n instanceof ee)||!Re(n,Pn.publisher,Pn.package_,Pn.name))continue;let t=n.object;for(let a of t.statement){if(!(a instanceof Z))continue;let s=a.predicate?.subject?.name;if(!s)continue;let o=a.object;e.has(s)||e.set(s,o)}}return e}function Un(r){for(let e of r.statement)if(e instanceof ee&&Re(e,Tn.publisher,Tn.package_,Tn.name))return e.object}function nt(r){for(let e of r.statement){if(!(e instanceof B)||!Re(e,et.publisher,et.package_,et.name))continue;let n=[];for(let t of e.object??[])t instanceof D&&n.push(t);return n}return[]}function on(r){for(let e of r.statement)if(e instanceof H&&!(!e.predicate?.subject||!X(e.predicate.subject,Ne))&&e.object instanceof x){let n=e.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function q(r,e){for(let n of r.statement)if(n instanceof H&&Re(n,e.publisher,e.package_,e.name)&&n.object instanceof x){let t=n.object.subject;return{publisher:t.publisher,package_:t.package_,name:t.name}}}function tt(r,e){for(let n of r.statement){if(!(n instanceof B)||!Re(n,e.publisher,e.package_,e.name))continue;let t=[];for(let a of n.object??[])a instanceof x&&t.push({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name});return t}return[]}function J(r,e){for(let n of r.statement)if(Re(n,e.publisher,e.package_,e.name))return n}function ae(r,e){for(let n of r.statement)if(n instanceof Z&&Re(n,e.publisher,e.package_,e.name))return n.object}function On(r,e){for(let n of r.statement)if(n instanceof ee&&Re(n,e.publisher,e.package_,e.name))return n.object}function ka(r,e){for(let n of r.statement)if(n instanceof ge&&Re(n,e.publisher,e.package_,e.name))return n.object}function Do(r,e){for(let n of r.statement)if(n instanceof fe&&Re(n,e.publisher,e.package_,e.name))return n.object===!0;return!1}function Bo(r){for(let e of ye(r))if(X(e.subject,Ar)||X(e.subject,Mr))return!0;return!1}function ye(r){let e=[];for(let n of r.statement)if(n instanceof H){if(!n.predicate?.subject||!X(n.predicate.subject,Ne))continue;n.object instanceof x&&e.push(n.object)}else if(n instanceof B){if(!n.predicate?.subject||!X(n.predicate.subject,Ne))continue;for(let t of n.object??[])t instanceof x&&e.push(t)}return e}function In(r){let e=[];for(let n of r.statement)if(n instanceof H){if(!n.predicate?.subject||!X(n.predicate.subject,rt))continue;n.object instanceof x&&e.push(n.object)}else if(n instanceof B){if(!n.predicate?.subject||!X(n.predicate.subject,rt))continue;for(let t of n.object??[])t instanceof x&&e.push(t)}return e}function re(r,e){let n="version"in e?e.version:void 0;if(n){let t=`${e.publisher}/${e.package_}@${n.major}.${n.minor}.${n.patch}`;for(let a of r)if(a instanceof Y&&a.name===e.name&&a.namespace===t)return a}for(let t of r){if(!(t instanceof Y)||t.name!==e.name)continue;if((t.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return t}}function Re(r,e,n,t){let a=r.predicate?.subject;return a?a.publisher===e&&a.package_===n&&a.name===t:!1}function X(r,e){return r.publisher===e.publisher&&r.package_===e.package_&&r.name===e.name}function te(r){return`${r.publisher}/${r.package_}/${r.name}`}function Ho(r){let e=s=>s.replace(/\*\//g,"* /"),n=[];n.push(` * kanonak stylesheet \u2014 ${e(r.resource.namespace)}/${e(r.resource.name)}`),n.push(" *");let t=new Map;for(let s of r.tokens.values()){let o=`${s.sourceNamespace} ${s.sourceName}`,i=t.get(o)??{count:0,level:s.level};i.count+=1,t.set(o,i)}if(t.size===0)n.push(" * :root tokens: NONE resolved");else{n.push(` * :root tokens (${r.tokens.size}):`);for(let[s,{count:o,level:i}]of t)n.push(` * ${o} from ${e(s)} (${i})`)}let a=r.baseStylesheet;if(a.css!==void 0)n.push(` * base CSS: ${e(a.sourceNamespace??"")}/base-stylesheet (${a.css.length} bytes, ${a.scope})`);else{n.push(" *"),n.push(" * !! WARNING: NO BASE STYLESHEET \u2014 this file contains only :root tokens."),n.push(" * !! Pages will appear UNSTYLED.");for(let s of r.warnings)n.push(` * !! ${e(s)}`);n.push(" * !! Full diagnostics: /.well-known/kanonak-render")}if(r.look){let s=r.look.sourceClass;n.push(` * look: ${e(s.publisher)}/${e(s.package_)}/${e(s.name)}`)}return`/*
|
|
153
|
-
${n.join(`
|
|
154
|
-
`)}
|
|
155
|
-
*/`}function ue(r){let e=r.namespace||"",n=e.indexOf("/");return n>=0?e.substring(0,n):e}function h(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Ue(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function ha(r,e){return e==null?"":Je(e)?e.value:r==="string-literal"?typeof e=="string"?e:String(e):Array.isArray(e)?e.map(n=>Je(n)?n.value:Ue(typeof n=="string"?n:String(n))).join(""):Ue(typeof e=="string"?e:String(e))}function $a(r){if(r==null)return"";if(typeof r=="string")return r;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Je(r))return r.value;if(Array.isArray(r))return r.map($a).filter(n=>n!=="").join(", ");if(r instanceof x)return r.subject.name;if(r instanceof Y||r instanceof D)return r.name??"";let e=r.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function at(r,e){return r.length<=e?r:r.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function ba(r){return r.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function ya(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function va(r){let e=Vn(r);return h(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 qo(){return new Set(An.bandDispatchUris().map(r=>`${r.publisher}/${r.package_}/${r.name}`))}export{Q as a,Qo as b,Pe as c,G as d,It as e,Ft as f,Tt as g,Hn as h,pn as i,Mt as j,Ci as k,mn as l,Je as m,Ce as n,gn as o,Ln as p,Me as q,An as r,qo as s};
|