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