@likec4/core 1.55.0 → 1.56.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/THIRD-PARTY-LICENSES.md +30 -30
- package/dist/_chunks/Builder.view-element.mjs +2 -2
- package/dist/_chunks/LikeC4Model.d.mts +1 -0
- package/dist/_chunks/assignTagColors.mjs +1 -1
- package/dist/_chunks/index3.d.mts +2 -2
- package/dist/_chunks/index5.d.mts +4 -0
- package/dist/_chunks/libs/{@mantine/colors-generator.mjs → chroma-js.mjs} +2 -2
- package/dist/_chunks/libs/graphology-dag.d.mts +607 -0
- package/dist/_chunks/libs/hast-util-to-html.mjs +1 -1
- package/dist/_chunks/libs/mdast-util-find-and-replace.mjs +1 -1
- package/dist/_chunks/libs/mdast-util-from-markdown.mjs +1 -1
- package/dist/_chunks/libs/mdast-util-gfm.mjs +11 -11
- package/dist/_chunks/libs/mnemonist.mjs +1 -1
- package/dist/_chunks/libs/unified.mjs +1 -1
- package/dist/_chunks/manual-layout.mjs +1 -1
- package/dist/_chunks/mnemonist.d.mts +1 -1
- package/dist/_chunks/model.mjs +4 -4
- package/dist/_chunks/rolldown-runtime.mjs +1 -1
- package/dist/_chunks/types.mjs +1 -1
- package/dist/builder/index.d.mts +0 -6
- package/dist/builder/index.mjs +1 -1
- package/dist/compute-view/index.d.mts +0 -4
- package/dist/compute-view/index.mjs +2 -2
- package/dist/geometry/index.mjs +1 -1
- package/dist/index.d.mts +0 -1
- package/dist/index.mjs +1 -1
- package/dist/model/index.d.mts +0 -5
- package/dist/model/index.mjs +1 -1
- package/dist/styles/index.d.mts +0 -1
- package/dist/styles/index.mjs +1 -1
- package/dist/types/index.mjs +1 -1
- package/dist/utils/graphology/index.d.mts +2 -1
- package/dist/utils/graphology/index.mjs +1 -1
- package/dist/utils/index.d.mts +0 -2
- package/dist/utils/index.mjs +1 -1
- package/package.json +9 -9
- package/dist/_chunks/geometry.mjs +0 -1
- package/dist/_chunks/utils.mjs +0 -1
|
@@ -35,36 +35,6 @@ Repository: https://github.com/likec4/likec4
|
|
|
35
35
|
|
|
36
36
|
---------------------------------------
|
|
37
37
|
|
|
38
|
-
## @mantine/colors-generator
|
|
39
|
-
|
|
40
|
-
License: MIT
|
|
41
|
-
By: Vitaly Rtishchev
|
|
42
|
-
Repository: https://github.com/mantinedev/mantine
|
|
43
|
-
|
|
44
|
-
> MIT License
|
|
45
|
-
>
|
|
46
|
-
> Copyright (c) 2021 Vitaly Rtishchev
|
|
47
|
-
>
|
|
48
|
-
> Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
49
|
-
> of this software and associated documentation files (the "Software"), to deal
|
|
50
|
-
> in the Software without restriction, including without limitation the rights
|
|
51
|
-
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
52
|
-
> copies of the Software, and to permit persons to whom the Software is
|
|
53
|
-
> furnished to do so, subject to the following conditions:
|
|
54
|
-
>
|
|
55
|
-
> The above copyright notice and this permission notice shall be included in all
|
|
56
|
-
> copies or substantial portions of the Software.
|
|
57
|
-
>
|
|
58
|
-
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
59
|
-
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
60
|
-
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
61
|
-
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
62
|
-
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
63
|
-
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
64
|
-
> SOFTWARE.
|
|
65
|
-
|
|
66
|
-
---------------------------------------
|
|
67
|
-
|
|
68
38
|
## @radix-ui/colors
|
|
69
39
|
|
|
70
40
|
License: MIT
|
|
@@ -471,6 +441,36 @@ Repository: https://github.com/graphology/graphology
|
|
|
471
441
|
|
|
472
442
|
---------------------------------------
|
|
473
443
|
|
|
444
|
+
## graphology-types
|
|
445
|
+
|
|
446
|
+
License: MIT
|
|
447
|
+
By: Guillaume Plique
|
|
448
|
+
Repository: https://github.com/graphology/graphology
|
|
449
|
+
|
|
450
|
+
> The MIT License (MIT)
|
|
451
|
+
>
|
|
452
|
+
> Copyright (c) 2020-2021 Guillaume Plique (Yomguithereal)
|
|
453
|
+
>
|
|
454
|
+
> Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
455
|
+
> of this software and associated documentation files (the "Software"), to deal
|
|
456
|
+
> in the Software without restriction, including without limitation the rights
|
|
457
|
+
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
458
|
+
> copies of the Software, and to permit persons to whom the Software is
|
|
459
|
+
> furnished to do so, subject to the following conditions:
|
|
460
|
+
>
|
|
461
|
+
> The above copyright notice and this permission notice shall be included in
|
|
462
|
+
> all copies or substantial portions of the Software.
|
|
463
|
+
>
|
|
464
|
+
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
465
|
+
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
466
|
+
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
467
|
+
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
468
|
+
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
469
|
+
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
470
|
+
> THE SOFTWARE.
|
|
471
|
+
|
|
472
|
+
---------------------------------------
|
|
473
|
+
|
|
474
474
|
## graphology-utils, obliterator
|
|
475
475
|
|
|
476
476
|
License: MIT
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime.mjs";import{B as t,C as n,E as r,G as i,H as a,I as o,J as s,K as c,L as l,M as u,N as d,O as f,P as p,Q as m,R as h,S as g,T as _,V as v,Y as y,Z as ee,_ as te,a as ne,d as re,et as b,g as ie,h as ae,i as oe,k as se,m as ce,n as le,nt as ue,o as de,q as fe,r as pe,rt as x,t as me,tt as he,u as ge,v as _e,w as ve,x as ye,y as S,z as be}from"./libs/remeda.mjs";import{G as C,J as xe,O as w,St as T,U as Se,W as E,Y as D,_t as Ce,b as we,d as Te,dt as Ee,et as De,g as Oe,h as ke,ht as Ae,l as je,lt as Me,n as Ne,o as Pe,p as Fe,q as O,r as Ie,s as Le,tt as Re,u as ze,vt as Be,xt as Ve,y as He}from"./types.mjs";import{$ as k,A as Ue,B as We,D as A,I as j,K as Ge,L as Ke,M as qe,O as M,Q as N,R as Je,U as Ye,V as Xe,Z as Ze,_ as P,a as F,c as I,d as Qe,et as L,g as $e,i as et,j as tt,s as nt,u as R,v as z,w as rt,x as it,y as at}from"./utils.mjs";import{n as ot,t as st}from"./libs/graphology-dag.mjs";import{c as ct,t as lt}from"./libs/mnemonist.mjs";import{A as ut,C as dt,D as ft,E as pt,M as B,N as mt,O as ht,T as gt,_ as _t,c as vt,d as yt,f as bt,g as xt,h as St,j as Ct,m as wt,n as Tt,o as Et,p as Dt,q as Ot,r as kt,t as At,v as jt,w as Mt,y as Nt}from"./model.mjs";import{r as Pt}from"./manual-layout.mjs";import{t as Ft}from"./libs/graphology.mjs";function It(e,t){let n=[],r=e.parent;for(;r;){let e=k(t.get(r),`Parent node ${r} not found`);n.push(e),r=e.parent}return n}function Lt(e,t){for(let n of t){let t=e.get(n.source),i=e.get(n.target);N(t,`Source node ${n.source} not found`),N(i,`Target node ${n.target} not found`),t.outEdges.push(n.id),i.inEdges.push(n.id);let a=It(t,e),o=It(i,e),s=a.length>0&&o.length>0?r(Ze(ge(a),ge(o))):null;n.parent=s?s.id:null;for(let e of a){if(e===s)break;e.outEdges.push(n.id)}for(let e of o){if(e===s)break;e.inEdges.push(n.id)}}}var Rt=ot(),zt=e(st(),1);function Bt(e){let t=[],n=[...e],r;for(;r=n.shift();){let e=r.parent;if(e){let r=[];for(;e;){let t=n.findIndex(t=>t.id===e);if(t<0)break;let[i]=n.splice(t,1);if(!i)throw Error(`Invalid state, should not happen`);r.unshift(i),e=i.parent}t.push(...r)}t.push(r)}return t}function Vt(e){return e.forEach(t=>{t.children.length>0&&(t.children=e.reduce((e,n)=>(n.parent===t.id&&e.push(n.id),e),[]))}),e}function Ht(e){let t=Bt([...e.nodes.values()]),n=[...e.edges];if(t.length<2||n.length===0)return{nodes:t,edges:n};let r=t=>k(e.nodes.get(t)),a=new Ft({multi:!0,allowSelfLoops:!0,type:`directed`}),[o,s]=_e(b(n,_(e=>{let t=r(e.source),n=r(e.target),i=e.parent?r(e.parent):null;return{id:e.id,edge:e,parent:i,source:t,target:n}})),({source:e,target:t})=>e.children.length===0&&t.children.length===0),c=[],l=e=>{a.mergeNode(e.source),a.mergeNode(e.target),c.push(e),(0,zt.default)(a,e.source,e.target)||a.mergeDirectedEdge(e.source,e.target)};for(let{edge:t,source:n,target:s}of o)if(l(t),s.parent&&s.parent!==t.parent&&b(It(s,e.nodes),ne(e=>e.inEdges.includes(t.id)),i(e=>{a.mergeNode(e.id),(0,zt.default)(a,t.source,e.id)||a.mergeDirectedEdge(t.source,e.id),(0,zt.default)(a,e.id,t.target)||a.mergeDirectedEdge(e.id,t.target)})),n.parent){let e=r(n.parent);a.mergeNode(e.id),(0,zt.default)(a,e.id,n.id)||a.mergeDirectedEdge(e.id,n.id),s.parent&&s.parent!==n.parent&&((0,zt.default)(a,e.id,s.parent)||a.mergeDirectedEdge(e.id,s.parent))}for(let{edge:e}of s)l(e);N(c.length===n.length,`Not all edges were added to the graph`);let u=(0,Rt.topologicalSort)(a),d=[],f=t.slice();for(let e of u){let t=f.findIndex(t=>t.id===e);N(t>=0,`Node "${e}" not found`),d.push(...f.splice(t,1))}return f.length>0&&d.length>0&&(d=d.flatMap(e=>{if(f.length===0)return e;let n=t.slice(0,t.indexOf(e)).filter(e=>f.includes(e));return n.length>0?(f=f.filter(e=>!n.includes(e)),[...n,e]):e})),d.push(...f),{nodes:Vt(Bt(d)),edges:c}}function Ut(e){return e.hash=et({id:e.id,__:e._type??`element`,autoLayout:e.autoLayout,nodes:b(e.nodes,_(e=>({id:e.id,icon:f(e.icon)&&e.icon!==`none`?`Y`:`N`,title:e.title,description:Me(e.description),technology:e.technology??null,shape:e.shape,size:e.style.size??null,iconSize:e.style.iconSize??null,iconPosition:e.style.iconPosition??null,textSize:e.style.textSize??null,padding:e.style.padding??null,children:e.children})),ve(({id:e,...t})=>[e,t])),edges:b(e.edges,_(e=>({source:e.source,target:e.target,label:e.label,description:Me(e.description),technology:e.technology??null,dir:e.dir,head:e.head,tail:e.tail,line:e.line})),ve(({source:e,target:t,...n})=>[`${e}:${t}`,n]))}),e}var Wt=class{get Ctx(){throw Error(`Should not be called in runtime`)}constructor(e){this.state=e}get elements(){return this.state.elements}get explicits(){return this.state.explicits}get final(){return this.state.final}get connections(){return this.state.connections}isEmpty(){return this.elements.size===0&&this.connections.length===0&&this.explicits.size===0&&this.final.size===0}},Gt=class{excluded={elements:new Set,connections:[]};constructor(e,t){this.memory=e,this.expression=t}markedToMoveExplicitToImplicit=!1;_removeElement(e){this.excluded.elements.add(e)}exclude(e){if(!e)return this;if(M(e)){for(let t of e)this._removeElement(t);return this}return this._removeElement(e),this}_removeConnection(e){this.excluded.connections.push(e)}excludeConnections(e,t){if(be(t)&&(N(!this.markedToMoveExplicitToImplicit,`Already marked to move explicits`),this.markedToMoveExplicitToImplicit=t),M(e)){for(let t of e)this._removeConnection(t);return this}return this._removeConnection(e),this}isDirty(){return this.excluded.elements.size>0||this.excluded.connections.length>0}isEmpty(){return!this.isDirty()}filterForMoveToImplicits(e){return this.markedToMoveExplicitToImplicit||this.excluded.elements.size>0?e:new Set}moveDisconnectedExplicitsToImplicits(e){let t=F(new Set(this.memory.connections.flatMap(e=>[e.source,e.target])),new Set(e.connections.flatMap(e=>[e.source,e.target])));return t=I(t,e.elements),t=b(t,A(t=>e.explicits.has(t)&&!at(e.final,Ke(t))),z()),t.size>0&&(t=this.filterForMoveToImplicits(t),e.explicits=F(e.explicits,t),e.final=F(e.final,t)),e}removeElements(e){return e.elements=F(e.elements,this.excluded.elements),e.explicits=F(e.explicits,this.excluded.elements),e.final=F(e.final,this.excluded.elements),e}removeConnections(e){let t=this.excluded.connections.reduce((e,t)=>{let n=e.get(t.id);return n?e.set(t.id,n.mergeWith(t)):e.set(t.id,t),e},new Map),n=new Set;e.connections=e.connections.reduce((e,r)=>{let i=t.get(r.id);if(i){n.add(r.source),n.add(r.target);let t=r.difference(i);t.nonEmpty()&&e.push(t)}else e.push(r);return e},[]);for(let t of e.connections)n.delete(t.source),n.delete(t.target),t.boundary&&e.elements.has(t.boundary)&&n.delete(t.boundary);return n.size===0?e:(n=F(n,e.explicits),e.final=F(e.final,n),e)}precommit(e){return e}postcommit(e){return N(F(e.explicits,e.elements).size===0,`Explicits must be subset of elements`),N(F(e.final,e.elements).size===0,`Final elements must be subset of elements`),e}commit(){let e=this.precommit(this.memory.mutableState());if(this.excluded.elements.size>0){let t=e.connections.filter(e=>this.excluded.elements.has(e.source)||this.excluded.elements.has(e.target)).flatMap(t=>[t,..._t(e.connections,t).map(e=>e.intersect(t))]).filter(e=>e.nonEmpty());this.excludeConnections(t)}return this.excluded.connections.length>0&&(e=this.removeConnections(e)),this.excluded.elements.size>0&&(e=this.removeElements(e)),this.memory.update(this.postcommit(e))}},Kt=class{explicits=new Set;implicits=new Set;_ordered=new Set;_connections=[];constructor(e,t){this.memory=e,this.expression=t}get elements(){return this.explicits}get connections(){return this._connections}mergedConnections(){return ft([...this.memory.connections,...this._connections])}connectWithExisting(e,t){throw Error(`Method not implements, depends on the model`)}_addExplicit(e){this._ordered.add(e),this.explicits.add(e),this.implicits.delete(e)}addExplicit(e){if(!e)return this;if(M(e)){for(let t of e)this._addExplicit(t);return this}return this._addExplicit(e),this}_addImplicit(e){this.explicits.has(e)||(this._ordered.add(e),this.implicits.add(e))}addImplicit(e){if(!e)return this;if(M(e)){for(let t of e)this._addImplicit(t);return this}return this._addImplicit(e),this}_addConnection(e){this._connections.push(e),this._addImplicit(e.source),this._addImplicit(e.target)}addConnections(e){if(M(e)){for(let t of e)this._addConnection(t);return this}return this._addConnection(e),this}isDirty(){return this.explicits.size>0||this.implicits.size>0||this._connections.length>0}isEmpty(){return!this.isDirty()}precommit(e){return e}postcommit(e){return e}processConnections(e){return e}commit(){let e=this.precommit(this.memory.mutableState()),t=new Set;if(this._connections.length>0){let[n,r]=_e(this._connections,t=>e.final.has(t.source));e.connections=this.processConnections(ft([...e.connections,...n,...r])),t=new Set(e.connections.flatMap(e=>[e.source,e.target]))}return e.elements=R(e.elements,this._ordered,this.explicits,t,this.implicits),e.explicits=I(e.elements,R(e.explicits,this.explicits)),e.final=I(e.elements,R(e.final,this.explicits,t)),this.memory.update(this.postcommit(e))}};function qt(e,t=`final`){let n=Ye(P(t===`final`?e.final:e.elements)),r=new Set(e.connections.flatMap(e=>[e.source,e.target])),i=new Set(n),a=new lt.default(()=>null),o=n.reduce((e,t,n,r)=>(e.set(t,r.slice(n+1).filter(e=>j(t,e)).map(e=>(i.delete(e),e)).reduce((e,n)=>(e.some(e=>j(e,n))||(e.push(n),a.set(n,t)),e),[])),e),new lt.default(()=>[]));return{root:i,connected:r,hasInOut:t=>e.connections.some(B.isAnyInOut(t.id)),parent:e=>a.get(e),children:e=>o.get(e)}}var Jt=class extends Gt{};function V(e){if(E.isCustom(e))return V(e.custom.expr);if(E.isWhere(e)){let t=V(e.where.expr),n=w(e.where.condition);return e=>t(e)&&n(e)}if(E.isElementKindExpr(e))return e.isEqual?t=>t.kind===e.elementKind:t=>t.kind!==e.elementKind;if(E.isElementTagExpr(e))return e.isEqual?({tags:t})=>t.includes(e.elementTag):({tags:t})=>!t.includes(e.elementTag);if(E.isWildcard(e))return()=>!0;if(E.isModelRef(e)){let t=D.flatten(e.ref);if(e.selector===`expanded`)return e=>e.id===t||We(e.id)===t;if(e.selector===`descendants`||e.selector===`children`){let e=t+`.`;return t=>t.id.startsWith(e)}return e=>e.id===t}L(e)}function Yt(e,t,n){let{shape:r,color:a,icon:o,...s}=e.style,c=!l(s);b(n,y(d(Ee)),y(t),i(t=>{t.shape=r??t.shape,t.color=a??t.color,h(o)&&(t.icon=o),h(e.notation)&&(t.notation=e.notation),c&&(t.style={...t.style,...s})}))}function Xt(e,t){for(let n of e)!we(n)||n.targets.length===0||Yt(n,x(n.targets.map(V)),t);return t}var Zt=class e{static kind=De;constructor(e,t,n=null,r=new Set){this.id=e,this.viewRule=t,this.parent=n,this.elements=r}isEmpty(){return this.elements.size===0}update(t){return new e(this.id,this.viewRule,this.parent,t)}clone(){return new e(this.id,this.viewRule,this.parent,new Set(this.elements))}},Qt=class extends Gt{excludeRelations(e){return b(this.memory.connections,y(t=>nt(t.relations,e)),i(t=>{this.excludeConnections(t.update(I(t.relations,e)))})),this}precommit(e){if(this.excluded.elements.size>0){let e=new Set([...this.excluded.elements].flatMap(e=>[...e.incoming(`direct`),...e.outgoing(`direct`)]));this.excludeRelations(e)}return e}postcommit(e){let t=F(this.memory.explicits,e.explicits);for(let n of t)e.explicitFirstSeenIn.delete(n);let n=F(this.memory.elements,e.elements);for(let t of n)e.lastSeenIn.delete(t);return e}},$t=class extends Qt{constructor(e,t){super(e,t),this.memory=e,this.expression=t}};const{findConnection:en,findConnectionsBetween:tn}=Dt;var nn=class extends Kt{connectWithExisting(e,t=`both`){let n=this._connections.length,r=()=>this._connections.length>n;if(!M(e)){if(t===`in`||t===`both`)for(let t of this.memory.elements)this.addConnections(en(t,e,`directed`));return(t===`out`||t===`both`)&&this.addConnections(tn(e,this.memory.elements,`directed`)),r()}let i=[...e];if(t===`in`||t===`both`)for(let e of this.memory.elements)this.addConnections(tn(e,i,`directed`));if(t===`out`||t===`both`)for(let e of i)this.addConnections(tn(e,this.memory.elements,`directed`));return r()}addImplicitWithinScope(e){e&&(!this.memory.scope||j(this.memory.scope,e))&&this.addImplicit(e)}processConnections(e){return Se.isRelationExpr(this.expression)||b(e,i(({source:e,target:t,boundary:n})=>{b(me([...P(e.ancestors()).reverse(),e],[...P(t.ancestors()).reverse(),t]),ee(([e,t])=>e===t),de(1),i(([r,i])=>{if(r===e&&i===t){this.addImplicitWithinScope(n);return}r!==e&&this.addImplicitWithinScope(r),i!==t&&this.addImplicitWithinScope(i)}))})),e}postcommit(e){let t=F(e.explicits,this.memory.explicits);for(let n of t)e.explicitFirstSeenIn.set(n,`@root`);return e}},rn=class extends nn{constructor(e,t){super(e,t),this.memory=e,this.expression=t}postcommit(e){let t=F(e.explicits,this.memory.explicits);for(let n of t)e.explicitFirstSeenIn.set(n,this.memory.activeGroupId);for(let t of[...this.explicits,...this.implicits])e.lastSeenIn.set(t,this.memory.activeGroupId);return e}},an=class e extends Wt{static empty(t){return new e({elements:new Set,explicits:new Set,final:new Set,connections:[],groups:[],explicitFirstSeenIn:new Map,lastSeenIn:new Map},t)}constructor(e,t){super(e),this.state=e,this.scope=t}get groups(){return this.state.groups}get explicitFirstSeenIn(){return this.state.explicitFirstSeenIn}get lastSeenIn(){return this.state.lastSeenIn}stageInclude(e){return new nn(this,e)}stageExclude(e){return new Qt(this,e)}mutableState(){return{elements:new Set(this.state.elements),explicits:new Set(this.state.explicits),final:new Set(this.state.final),connections:[...this.state.connections],groups:this.state.groups.map(e=>e.clone()),explicitFirstSeenIn:new Map(this.state.explicitFirstSeenIn),lastSeenIn:new Map(this.state.lastSeenIn)}}update(t){return new e({...this.state,...t},this.scope)}},on=class e extends an{static enter(t,n){let r=`@gr${t.groups.length+1}`;if(t instanceof e){let i=ct.default.from([...t.stack].reverse()),a=t.mutableState();return a.groups.push(new Zt(r,n,t.activeGroupId)),i.push(r),new e(a,t.scope,i)}let i=t.mutableState();i.groups.push(new Zt(r,n,null));let a=ct.default.of(r);return new e(i,t.scope,a)}constructor(e,t,n){super(e,t),this.state=e,this.scope=t,this.stack=n}get activeGroupId(){return k(this.stack.peek(),`Stack must not be empty`)}mutableState(){return{...super.mutableState()}}update(t){return new e({...this.state,...t},this.scope,this.stack)}stageInclude(e){return new rn(this,e)}stageExclude(e){return new $t(this,e)}leave(){let t=this.mutableState();return this.stack.pop(),this.stack.peek()?new e(t,this.scope,this.stack):new an(t,this.scope)}};function sn(e,t){let n;for(;e.parent&&(n=t.get(e.parent));){let t=n.depth??1;if(n.depth=Math.max(t,(e.depth??0)+1),n.depth===t)break;e=n}}function cn(e){let{id:t,title:n,...r}=g(e.$element,[`summary`,`description`,`metadata`,`style`,`tags`]),{color:i,icon:a,shape:o,...s}=e.style;return T({id:t,title:n,modelRef:t,shape:o,color:i,icon:a,style:s,description:Ve(e.$element),tags:[...e.tags],metadata:e.$element.metadata,...r})}function ln({defaults:e},t,n){let r=new Map,i=new Map;n?.forEach(({id:t,parent:n,viewRule:a,elements:o})=>{n&&k(r.get(n),`Parent group node ${n} not found`).children.push(t),r.set(t,{id:t,parent:n,kind:De,title:a.title??``,color:a.color??e.group.color??e.color,shape:`rectangle`,children:[],inEdges:[],outEdges:[],level:0,depth:0,tags:[],style:T({border:a.border??e.group.border,opacity:a.opacity??e.group.opacity,size:a.size,multiple:a.multiple,padding:a.padding,textSize:a.textSize})});for(let e of o)i.set(e.id,t)}),Array.from(t).sort(qe).forEach(({id:e,...t})=>{let n=We(e),a=0,o;for(;n&&(o=r.get(n),!o);)n=We(n);let s=t.modelRef??e;if(!o&&i.has(s)){let e=k(i.get(s));o=r.get(e),n=e}o&&(o.children.length==0&&(o.depth=1,sn(o,r)),o.children.push(e),a=o.level+1);let c=T({id:e,parent:n,level:a,children:[],inEdges:[],outEdges:[],...t});r.set(e,c)});let a=new Map;return n?.forEach(({id:e})=>{a.set(e,k(r.get(e)))}),t.forEach(({id:e})=>{a.set(e,k(r.get(e)))}),a}function un(e){let{title:t,description:n=null}=e;return{...t&&{title:t,description:n},...te(e,[`color`,`technology`,`head`,`line`,`tail`,`kind`,`navigateTo`])}}function dn(e,t){let n=b(e,re((e,t)=>(f(t.title)&&!e.title.includes(t.title)&&e.title.push(t.title),f(t.description)&&!e.description.some(v(t.description))&&e.description.push(t.description),f(t.technology)&&!e.technology.includes(t.technology)&&e.technology.push(t.technology),f(t.kind)&&!e.kind.includes(t.kind)&&e.kind.push(t.kind),f(t.color)&&!e.color.includes(t.color)&&e.color.push(t.color),f(t.line)&&!e.line.includes(t.line)&&e.line.push(t.line),f(t.head)&&!e.head.includes(t.head)&&e.head.push(t.head),f(t.tail)&&!e.tail.includes(t.tail)&&e.tail.push(t.tail),f(t.navigateTo)&&!e.navigateTo.includes(t.navigateTo)&&e.navigateTo.push(t.navigateTo),t.tags&&e.tags.push(...t.tags),e),{title:[],description:[],technology:[],kind:[],head:[],tail:[],color:[],tags:[],line:[],navigateTo:[]})),r=S(n.title)??(n.title.length>1?`[...]`:void 0),i=oe(n.tags),a=T({title:r,description:S(n.description),technology:S(n.technology),kind:S(n.kind),head:S(n.head),tail:S(n.tail),color:S(n.color),line:S(n.line),navigateTo:S(n.navigateTo),...Ge(i)&&{tags:i}});if(t){let e=un(t);a=ie({...a,...e},f)}return u(a.title)&&f(a.technology)&&(a.title=`[${a.technology}]`,delete a.technology),a}const{findConnection:fn,findConnectionsBetween:H,findConnectionsWithin:pn}=wt;function U(e,t){let n=e.element(t.ref.deployment);if(n.isDeploymentNode()){if(t.selector===`children`)return[...n.children()];if(t.selector===`expanded`)return[n,...n.children()];if(t.selector===`descendants`)return[...n.descendants()]}return[n]}function mn(e,t){let n=e.$model.element(t.ref.model);return t.selector===`children`?[...n.children()]:t.selector===`expanded`?[n,...n.children()]:t.selector===`descendants`?[...n.descendants()]:[n]}function hn(e){if(O.isWildcard(e))return()=>!0;if(O.isElementTagExpr(e)||O.isElementKindExpr(e))throw Error(`element kind and tag expressions are not supported in deployment view rules`);if(O.isDeploymentRef(e)){let t=e.ref.deployment;if(e.selector===`expanded`){let e=t+`.`;return n=>n.id===t||n.id.startsWith(e)}if(e.selector===`descendants`){let e=t+`.`;return t=>t.id.startsWith(e)}return e.selector===`children`?e=>We(e.id)===t:e=>e.id===t}if(O.isModelRef(e)){let t=e.ref.model;if(e.selector===`expanded`){let e=t+`.`;return n=>{let r=n.modelRef??null;return r?r===t||r.startsWith(e):!0}}if(e.selector===`descendants`){let e=t+`.`;return t=>{let n=t.modelRef??null;return n?n.startsWith(e):!0}}return e.selector===`children`?e=>{let n=e.modelRef??null;return n?We(n)===t:!0}:e=>{let n=e.modelRef??null;return n?n===t:!0}}L(e)}function gn(e){return Ve(e.$instance)??Ve(e.element.$element)}function _n(e){let t=e.id,n=e.onlyOneInstance();return T({id:t,deploymentRef:t,title:e.title,kind:e.kind,technology:e.technology??void 0,links:m(e.links,1)?[...e.links]:void 0,notation:e.$node.notation??void 0,color:e.color,shape:e.shape,modelRef:n?.element.id,icon:e.style.icon,description:Ve(e.$node)??void 0,tags:[...e.tags],style:g(e.style,[`icon`,`shape`,`color`])})}function vn(e){let t=e.$instance,n=e.element,{icon:r,color:i,shape:a,...o}=e.style,s=[...n.links,...t.links??[]];return T({id:e.id,kind:`instance`,title:e.title,description:gn(e)??void 0,technology:e.technology??void 0,tags:[...e.tags],links:m(s,1)?s:void 0,icon:r,color:i,shape:a,style:o,deploymentRef:t.id,modelRef:n.id,notation:t.notation})}function yn(e){return e.isInstance()?vn(e):_n(e)}function bn(e){return e.reduce((e,t)=>{let n=[...t.relations.model,...t.relations.deployment];N(m(n,1),`Edge must have at least one relation`);let r=t.source.$model.$styles.defaults,i=t.source.id,a=t.target.id,{title:o,color:s=r.relationship.color,line:c=r.relationship.line,head:l=r.relationship.arrow,...u}=dn(n.map(e=>e.$relationship)),d=T({id:t.id,parent:t.boundary?.id??null,source:i,target:a,label:o??null,relations:n.map(e=>e.id),color:s,line:c,head:l,...u}),f=e.find(e=>e.source===a&&e.target===i);if(f&&d.label===f.label){f.dir=`both`;let n=f.head??d.head??t.source.$model.$styles.defaults.relationship.arrow;return f.head??=n,f.tail??=n,d.color&&(f.color??=d.color),d.line&&(f.line??=d.line),e}return e.push(d),e},[])}function xn(e,t){let n=ln(e.$styles,[...t.final].map(yn));for(let t of n.values()){if(!t.deploymentRef||!t.modelRef||t.children.length>0)continue;let n=e.deployment.element(t.deploymentRef),r=n.isDeploymentNode()&&n.onlyOneInstance();if(!r)continue;t.title===n.name&&(t.title=r.title),t.description??=gn(r)??null,t.technology??=r.technology,l(t.tags)&&(t.tags=[...r.tags]),(!t.links||l(t.links))&&m(r.links,1)&&(t.links=[...r.links]);let i=e.$styles.defaults;t.shape===i.shape&&t.shape!==r.shape&&(t.shape=r.shape,t.notation=null),t.color===i.color&&t.color!==r.color&&(t.color=r.color,t.notation=null),!t.icon&&r.icon&&(t.icon=r.icon)}return n}function Sn(e,t){for(let n of e)!we(n)||n.targets.length===0||Yt(n,x(n.targets.map(hn)),t);return t}function Cn(e){let t=new lt.default(()=>[]);for(let n of e)for(let e of n.relations.model)t.get(e).push(n);let n=new lt.default(()=>new Set);for(let[e,r]of t)m(r,2)&&b(r,c(e=>[{group:`$source-${e.source.id}`,conn:e},{group:`$target-${e.target.id}`,conn:e}]),a(ce(`group`)),pe(),y(m(2)),i(ae(_(ce(`conn`)),ht(`desc`),ee((e,t,n)=>t===0||e.boundary===n[t-1].boundary),i(t=>{n.get(t).add(e)}))));return n}function wn(e){e=ft(e);let t=Cn(e);for(let n of e){let{source:e,target:r}=n,i=n.relations.model;if(e.isDeploymentNode()!==r.isDeploymentNode()){let r=e.isDeploymentNode()?e:n.target;N(r.isDeploymentNode());let a=I(i,r.internalModelRelationships());for(let e of a)t.get(n).add(e);continue}if(e.isDeploymentNode()&&r.isDeploymentNode()){let i=R(I(n.relations.model,e.internalModelRelationships()),I(n.relations.model,r.internalModelRelationships()));for(let e of i)t.get(n).add(e)}}return b(t.entries(),it(([e,t])=>e.update({model:t,deployment:null})),P())}function Tn(e){return xt(e,wn(e))}function En(e){return b(e,ft,re((t,n)=>{let{source:r,target:i,relations:a}=n;if(r.isInstance()&&i.isInstance())return t;let o=Ot.empty();if(r.isDeploymentNode()&&i.isDeploymentNode()){let[e]=fn(i,r,`directed`);e&&(o=a.intersect(e.relations))}for(let t of e)gt(t,n)&&(o=o.union(a.intersect(t.relations)));return o.nonEmpty&&t.push(new ut(r,i,o)),t},[]))}function Dn(e){return xt(e,En(e))}var On=class extends Kt{connectWithExisting(e,t=`both`){let n=this._connections.length,r=()=>this._connections.length>n;if(!M(e)){if(t===`in`||t===`both`)for(let t of this.memory.elements)this.addConnections(fn(t,e,`directed`));return(t===`out`||t===`both`)&&this.addConnections(H(e,this.memory.elements,`directed`)),r()}let i=[...e];if(t===`in`||t===`both`)for(let e of this.memory.elements)this.addConnections(H(e,i,`directed`));if(t===`out`||t===`both`)for(let e of i)this.addConnections(H(e,this.memory.elements,`directed`));return r()}processConnections(e){let t=b(e,Tn,Dn);return b(t,i(({source:e,target:t,boundary:n})=>{b(me([...P(e.ancestors()).reverse(),e],[...P(t.ancestors()).reverse(),t]),ee(([e,t])=>e===t),de(1),i(([r,i])=>{if(e===r&&t===i){this.addImplicit(n);return}r!==e&&r.isDeploymentNode()&&!r.onlyOneInstance()&&this.addImplicit(r),i!==t&&i.isDeploymentNode()&&!i.onlyOneInstance()&&this.addImplicit(i)}))})),t}},kn=class e extends Wt{static empty(){return new e({elements:new Set,explicits:new Set,final:new Set,connections:[]})}stageInclude(e){return new On(this,e)}stageExclude(e){return new Jt(this,e)}mutableState(){return{elements:new Set(this.state.elements),explicits:new Set(this.state.explicits),final:new Set(this.state.final),connections:[...this.state.connections]}}update(t){return new e({...this.state,...t})}equals(t){return t instanceof e&&v(this.state,t.state)}diff(e){return{added:{elements:P(F(e.elements,this.elements)),explicits:P(F(e.explicits,this.explicits)),final:P(F(e.final,this.final)),connections:P(xt(e.connections,this.connections))},removed:{elements:P(F(this.elements,e.elements)),explicits:P(F(this.explicits,e.explicits)),final:P(F(this.final,e.final)),connections:xt(this.connections,e.connections)}}}toString(){return[`final:`,...[...this.final].map(e=>` `+e.id),`connections:`,...this.connections.map(e=>` `+e.expression)].join(`
|
|
2
|
-
`)}[Ct](e,t,n){return this.toString()}};const An={include:({expr:e,model:t,memory:n,stage:r})=>{let i=w(e.where.condition);return k(Hn(`include`,{expr:e.where.expr,model:t,stage:r,memory:n,where:i}))},exclude:({expr:e,model:t,memory:n,stage:r})=>{let i=w(e.where.condition);return k(Hn(`exclude`,{expr:e.where.expr,model:t,stage:r,memory:n,where:i}))}},jn={include:({expr:e,model:t,memory:n,stage:r,where:i})=>{let a=[...n.elements];if(O.isWildcard(e.incoming)){for(let e of a){if(e.allOutgoing.isEmpty)continue;let t=G(H(e,[...qn(e)],`directed`),i);r.addConnections(t)}return r}N(O.isDeploymentRef(e.incoming),`Only deployment refs are supported in include`);let o=U(t,e.incoming);for(let e of a){let t=G(H(e,o,`directed`),i);r.addConnections(t)}return r},exclude:({expr:e,model:t,memory:n,stage:r,where:i})=>{if(O.isElementTagExpr(e.incoming)||O.isElementKindExpr(e.incoming))throw Error(`element kind and tag expressions are not supported in exclude`);if(O.isModelRef(e.incoming))return W(Nn(t,e.incoming),{stage:r,memory:n},i);if(O.isWildcard(e.incoming))return r;let a=Mn(U(t,e.incoming)),o=b(n.connections,y(a),G(i));return r.excludeConnections(o),r}};function Mn(e){return x(e.map(e=>{let t=t=>t===e||j(e,t);return e=>!t(e.source)&&t(e.target)}))}function Nn(e,t){let n=mn(e,t);return new Set(n.flatMap(e=>[...e.allIncoming]))}const Pn={include:({expr:e,model:t,memory:n,stage:r,where:i})=>{let a=[...n.elements];if(O.isWildcard(e.outgoing)){for(let e of a)if(!e.allIncoming.isEmpty)for(let t of qn(e)){let n=G(fn(t,e,`directed`),i);r.addConnections(n)}return r}N(O.isDeploymentRef(e.outgoing),`Only deployment refs are supported in include`);let o=U(t,e.outgoing);for(let e of o){let t=G(H(e,a,`directed`),i);r.addConnections(t)}return r},exclude:({expr:e,model:t,memory:n,stage:r,where:i})=>{if(O.isElementTagExpr(e.outgoing)||O.isElementKindExpr(e.outgoing))throw Error(`element kind and tag expressions are not supported in exclude`);if(O.isModelRef(e.outgoing))return W(In(t,e.outgoing),{stage:r,memory:n},i);if(O.isWildcard(e.outgoing))return r;let a=Fn(U(t,e.outgoing)),o=b(n.connections,y(a),G(i));return r.excludeConnections(o),r}};function Fn(e){return x(e.map(e=>{let t=t=>t===e||j(e,t);return e=>t(e.source)&&!t(e.target)}))}function In(e,t){let n=mn(e,t);return new Set(n.flatMap(e=>[...e.allOutgoing]))}const Ln={include:({expr:{source:e,target:t,isBidirectional:n=!1},model:r,stage:i,where:a})=>{if(O.isElementTagExpr(e)||O.isElementKindExpr(e)||O.isElementTagExpr(t)||O.isElementKindExpr(t))throw Error(`element kind and tag expressions are not supported in include`);N(!O.isModelRef(e),`Invalid source model ref in direct relation`),N(!O.isModelRef(t),`Invalid target model ref in direct relation`);let o=O.isWildcard(e),s=O.isWildcard(t),l=n?`both`:`directed`,u;switch(!0){case o&&s:u=b(pn(r.instances()),G(a),_(e=>(i.addImplicit(e.boundary),e)));break;case!o&&s:{let t=U(r,e),i=Fn(t),o=i;if(n){let e=Mn(t);o=t=>i(t)!==e(t)}u=b(t,c(e=>H(e,qn(e),l)),y(o),G(a));break}case o&&!s:{let e=U(r,t),i=Mn(e),o=i;if(n){let t=Fn(e);o=e=>t(e)!==i(e)}u=b(e,c(e=>[...qn(e)].flatMap(t=>fn(t,e,l))),y(o),G(a));break}default:{N(!o,`Inference failed - source should be a deployment ref`),N(!s,`Inference failed - target should be a deployment ref`);let n=U(r,e),i=U(r,t),d=Fn(n),f=Mn(i);u=b(n,c(e=>H(e,i,l)),y(e=>d(e)&&f(e)),G(a))}}return i.addConnections(u),O.isDeploymentRef(e)&&p(e.selector)&&i.addImplicit(r.element(e.ref.deployment)),O.isDeploymentRef(t)&&p(t.selector)&&i.addImplicit(r.element(t.ref.deployment)),i},exclude:({expr:e,model:t,memory:n,stage:r,where:i})=>{let a=hn(e.target),o=hn(e.source),s;switch(!0){case O.isWildcard(e.source)&&O.isWildcard(e.target):return r.excludeConnections(G(n.connections,i)),r;case O.isModelRef(e.source)&&O.isModelRef(e.target):return s=Rn({source:e.source,target:e.target,expr:e,model:t}),W(s,{stage:r,memory:n},i);case O.isModelRef(e.source)&&O.isWildcard(e.target):return s=In(t,e.source),W(s,{stage:r,memory:n},i);case O.isModelRef(e.source):return s=In(t,e.source),W(s,{stage:r,memory:n},i,e=>a(e.target));case O.isModelRef(e.target):return s=Nn(t,e.target),W(s,{stage:r,memory:n},i,e=>o(e.source));default:let c=t=>o(t.source)&&a(t.target)||e.isBidirectional===!0&&o(t.target)&&a(t.source),l=b(n.connections,y(c),G(i));return l.length===0||r.excludeConnections(l),r}}};function Rn({source:e,target:t,expr:n,model:r}){let i=mn(r,e),a=mn(r,t),o=n.isBidirectional?`both`:`directed`,s=[];for(let e of i)s.push(...bt(e,a,o));return new Set(s.flatMap(e=>[...e.relations]))}const zn={include:({expr:e,model:t,memory:n,stage:r,where:i})=>{let a=[...n.elements];if(O.isWildcard(e.inout)){for(let e of a){let t=Wn(H(e,[...qn(e)],`both`),i);r.addConnections(t)}return r}N(O.isDeploymentRef(e.inout),`Only deployment refs are supported in include`);let o=U(t,e.inout);for(let e of a){let t=Wn(H(e,o,`both`),i);r.addConnections(t)}return r},exclude:({expr:e,model:t,memory:n,stage:r,where:i})=>{if(O.isElementTagExpr(e.inout)||O.isElementKindExpr(e.inout))throw Error(`element kind and tag expressions are not supported in exclude`);if(O.isModelRef(e.inout)){let a=mn(t,e.inout);return a.length===0?r:W(R(new Set,...a.flatMap(e=>[e.allIncoming,e.allOutgoing])),{stage:r,memory:n},i)}if(O.isWildcard(e.inout))return r;let a=U(t,e.inout),o=Mn(a),s=Fn(a),c=b(n.connections,y(e=>o(e)!==s(e)),G(i));return r.excludeConnections(c),r}},Bn={include:({expr:e,model:t,memory:n,stage:r})=>{let i=w(e.where.condition);return Hn(`include`,{expr:e.where.expr,model:t,stage:r,memory:n,where:i})},exclude:({expr:e,model:t,memory:n,stage:r})=>{let i=w(e.where.condition);return Hn(`exclude`,{expr:e.where.expr,model:t,stage:r,memory:n,where:i})}},Vn={include:({model:e,stage:t,where:n})=>{let r=[],i;return i=n?b([...e.elements()],K(n)):P(it(e.roots(),e=>(e.onlyOneInstance()||r.push(...e.children()),e))),t.addExplicit(i),r.length>1?(t.addConnections(pn([...i,...r])),t.connectWithExisting(r)):t.addConnections(pn(i)),t.connectWithExisting(i),t},exclude:({stage:e,memory:t,where:n})=>{let r=b([...t.elements],K(n));return e.exclude(r),e}};function Hn(e,{expr:t,where:n,...r}){switch(!0){case O.isElementTagExpr(t):case O.isElementKindExpr(t):throw Error(`element kind and tag expressions are not supported in deployment view rules`);case xe.isCustom(t):case O.isCustom(t):case O.isModelRef(t):return;case O.isWhere(t):return An[e]({...r,expr:t,where:n});case xe.isWhere(t):return Bn[e]({...r,expr:t,where:n});case O.isDeploymentRef(t):return Jn[e]({...r,expr:t,where:n});case O.isWildcard(t):return Vn[e]({...r,expr:t,where:n});case xe.isDirect(t):return Ln[e]({...r,expr:t,where:n});case xe.isInOut(t):return zn[e]({...r,expr:t,where:n});case xe.isOutgoing(t):return Pn[e]({...r,expr:t,where:n});case xe.isIncoming(t):return jn[e]({...r,expr:t,where:n});default:L(t)}}function W(e,{stage:t,memory:n},r,i=()=>!0){if(e.size===0)return t;let a=b(n.connections,y(e=>i(e)),y(t=>nt(t.relations.model,e)),_(t=>t.update({deployment:null,model:I(t.relations.model,e)})),G(r),y(e=>e.nonEmpty()));return a.length===0?t:t.excludeConnections(a)}function Un(e,t){return G(e,t).nonEmpty()}function G(...e){if(e.length===1)return t=>G(t,e[0]);let[n,r]=e;return r===null?n:t(n)?n.map(e=>G(e,r)).filter(e=>e.nonEmpty()):n.update({model:new Set([...n.relations.model.values()].filter(e=>r(Kn(n)(e)))),deployment:new Set([...n.relations.deployment.values()].filter(e=>r(Kn(n)(e))))})}function K(...e){if(e.length===1){let t=e[0];return t==null?e=>e:e=>e.filter(e=>t(Gn(e,e)))}let[n,r]=e;return t(n)?r==null?n:n.filter(e=>r(Gn(e,e))):r?.(Gn(n,n))??!0}function Wn(e,t){return t?b(e,y(e=>Un(e,t))):e}function Gn(e,t){if(Et(e)){let n=Tt(t)&&At(t)?t:null;return{kind:e.kind,tags:[...e.tags,...n?.tags??[]],metadata:e.metadata}}if(vt(e))return te(e.element,[`tags`,`kind`,`metadata`]);if(At(e))return{kind:e.element.kind,tags:[...e.tags,...e.element.tags],metadata:e.metadata};if(kt(e))return te(e,[`tags`,`kind`,`metadata`]);L(e)}function Kn(e){return t=>({tags:t.tags,kind:t.kind,metadata:t.metadata,source:Gn(t.source,e.source),target:Gn(t.target,e.target)})}function qn(e){let t=new Set;for(let n of e.descendingSiblings())t.add(n);return t}const Jn={include:e=>{let{expr:t,where:n}=e,r=e.model.element(t.ref.deployment);if(At(r))return K(r,n)&&(e.stage.addExplicit(r),e.stage.connectWithExisting(r)),e.stage;switch(!0){case t.selector===`expanded`:Xn(r,e);break;case t.selector===`children`:Yn(r,e);break;case t.selector===`descendants`:Zn(r,e);break;default:K(r,n)&&(e.stage.addExplicit(r),e.stage.connectWithExisting(r))}return e.stage},exclude:({expr:e,stage:t,memory:n,where:r})=>{let i=hn(e),a=b([...n.elements],y(i),K(r));return t.exclude(a),t}};function Yn(e,{stage:t,where:n}){let r=K([...e.children()],n);r.length!==0&&(t.addImplicit(e),t.addConnections(pn(r)),t.connectWithExisting(r),t.addExplicit(r))}function Xn(e,{memory:t,stage:n,where:r}){n.addImplicit(e),n.connectWithExisting(e);let i=K([...e.children()],r),a=!1;for(let e of i)if(H(e,t.elements).length>0){a=!0;break}a&&(n.connectWithExisting(i,`in`),n.addConnections(pn(i)),n.connectWithExisting(i,`out`)),n.addImplicit(i),n.connections.length>0&&n.addExplicit(e)}function Zn(e,{stage:t,where:n}){let r=e=>{let i=[];for(let t of e.children())t.isDeploymentNode()&&i.push(...r(t)),K(t,n)&&i.push(t);return t.connectWithExisting(i,`in`),t.addConnections(pn(i)),t.addImplicit(i),i},a=r(e);if(a.length===0)return;t.connectWithExisting(a,`out`);let o=Qn(t);b(a,y(e=>o.has(e)),i(e=>t.addExplicit(e)))}function Qn(e){return b(e.mergedConnections(),Tn,Dn,re((e,t)=>(e.add(t.source),e.add(t.target),e),new Set))}var $n=class e{static for(t){return new e(t)}constructor(e){this.memory=e}step1CleanConnections(e){if(e.connections.length<2)return e;let t=b(e.connections,Tn,Dn),n=xt(e.connections,t);if(n.length===0)return e;let r=e.stageExclude({});return r.excludeConnections(n,!0),r.commit()}step2ProcessImplicits(e){let t=R(this.memory.elements,e.elements),n=R(e.final,this.memory.explicits),r=new lt.default(()=>new Set);for(let t of e.connections)if(t.boundary)for(let e of t.relations.model)r.get(e).add(t.boundary);for(let[e,i]of r)if(!(i.size<2))for(let e of i)t.delete(e)&&n.add(e);let a=new Set(n),o=e=>{for(let t of a)if(e===t||j(e,t))return!0;return!1};return b(F(t,a),A(e=>e.isDeploymentNode()),P(),Xe,i(e=>{let t=[...e.children()].filter(o).length;if(t>=2){n.add(e);return}t===1&&at(e.siblings(),o)&&n.add(e)})),e.update({final:n})}step3ProcessBoundaries(e){let t=new Set;for(let n of e.connections)n.boundary&&t.add(n.boundary);let n=qt(e,`final`),r=e.stageExclude({}),i=r=>!(t.has(r)||e.explicits.has(r)||n.hasInOut(r)||n.root.has(r)),a=S([...n.root]);a&&!e.explicits.has(a)&&r.exclude(a);for(let t of e.final){let e=S(n.children(t));e&&!n.hasInOut(e)&&i(t)&&r.exclude(t)}return r.isDirty()?r.commit():e}commit(){let e=this.step1CleanConnections(this.memory),t=this.step2ProcessImplicits(e);return this.step3ProcessBoundaries(t)}};function er(e,t){let n=kn.empty();for(let r of t)if(He(r)){let t=`include`in r?`include`:`exclude`,i=r.include??r.exclude;for(let r of i){let i=t===`include`?n.stageInclude(r):n.stageExclude(r);i=Hn(t,{expr:r,model:e,stage:i,memory:n,where:null})??i,n=i.commit()}}return $n.for(n).commit()}function tr(e,{docUri:t,rules:n,...r}){let i=er(e.deployment,n),a=xn(e,i),o=bn(i.connections);Lt(a,o);let c=Ht({nodes:a,edges:o}),l=Sn(n,c.nodes),u=s(n,je),d=Pt(l);return Ut({...r,[Ce]:`computed`,[Be]:`deployment`,autoLayout:{direction:u?.direction??`TB`,...u?.nodeSep&&{nodeSep:u.nodeSep},...u?.rankSep&&{rankSep:u.rankSep}},edges:c.edges,nodes:_(l,e=>(e.icon===`none`&&delete e.icon,e)),...d.length>0&&{notation:{nodes:d}}})}function nr(e){return t=>Ne(t)?t.groupRules.flatMap(nr(e)):He(t)&&`include`in t?t.include.filter(e):[]}function rr(e,t){let n=e.flatMap(nr(E.isCustom));if(n.length===0)return t;let r=[...t];for(let{custom:{expr:e,...t}}of n){let{border:n,opacity:i,multiple:a,iconColor:s,iconSize:c,iconPosition:l,padding:d,size:f,textSize:p,...m}=ye(t,u),h=T({border:n,opacity:i,multiple:a,iconColor:s,iconSize:c,iconPosition:l,padding:d,size:f,textSize:p}),g=!o(h),_=!o(m),v=V(e);r.forEach((e,t)=>{Ee(e)||!v(e)||(_&&(e={...e,...m,isCustomized:!0}),g&&(e={...e,isCustomized:!0,style:{...e.style,...h}}),r[t]=e)})}return r}function ir(e,t){return e.reduce((e,n)=>{if(ze(n)){let r=t.predicates[n.predicateId];return u(r)?e:e.concat(r)}if(Te(n)){let r=t.styles[n.styleId];return u(r)?e:e.concat(r)}return e.push(n),e},[])}function ar(e,t){return e.reduce((e,n)=>{if(ze(n)){let r=t.dynamicPredicates[n.predicateId];return u(r)?e:e.concat(r)}if(Te(n)){let r=t.styles[n.styleId];return u(r)?e:e.concat(r)}return e.push(n),e},[])}function or(e,t){let n=new Set;for(let r of t)if(He(r))for(let t of r.include){let r=V(t);for(let t of e.elements())r(t)&&n.add(t)}return n}const sr=e=>{if(Pe(e)){let t=[],n=[];for(let r of e.__parallel)if(Le(r)){let[e,...i]=r.__series;t.push(e),n.push(...i)}else t.push(r);return[...t,...n]}return Le(e)?[...e.__series]:e};function cr(e,t){let n=[],r=(...[e,t])=>{if(!n.includes(e)){let r=n.indexOf(t);if(r>0){n.splice(r,0,e);return}else n.push(e)}n.includes(t)||n.push(t)};for(let i of c(t,sr)){let t=e.element(i.source),a=e.element(i.target),o=n.indexOf(t),s=n.indexOf(a);o>=0&&s>=0||(i.isBackward?r(a,t):r(t,a))}return new Set(n)}function lr(e,t,n){let r=yt(e,t,`directed`).flatMap(e=>[...e.relations]).sort(Qe);if(!Ge(r))return{};if(r.length===1){let e=r[0];return T({title:e.title??void 0,kind:e.kind??void 0,tags:e.tags,relations:[e.id],navigateTo:e.$relationship.navigateTo,color:e.$relationship.color,line:e.$relationship.line,technology:e.technology??void 0,description:e.$relationship.description??void 0})}let i=b(r,c(e=>e.tags),oe()),a=m(i,1)?i:void 0,o=_(r,e=>e.id),s=fe(r).$relationship.navigateTo;s===n&&(s=void 0),s||=b(r,c(e=>e.$relationship.navigateTo&&e.$relationship.navigateTo!==n?e.$relationship.navigateTo:[]),oe(),S());let l=b(r,re((e,{title:t,technology:n,$relationship:r})=>(f(t)&&e.title.add(t),f(r.color)&&e.color.add(r.color),f(r.line)&&e.line.add(r.line),f(r.kind)&&e.kind.add(r.kind),f(n)&&e.technology.add(n),f(r.description)&&!e.description.some(v(r.description))&&e.description.push(r.description),e),{kind:new Set,color:new Set,line:new Set,title:new Set,technology:new Set,description:[]}));return T({tags:a??void 0,relations:o,navigateTo:s,kind:S([...l.kind]),title:S([...l.title]),color:S([...l.color]),line:S([...l.line]),technology:S([...l.technology]),description:S(l.description)})}var ur=class{steps=[];constructor(e,t){this.model=e,this.view=t}compute(){let{docUri:e,rules:t,steps:n,...r}=this.view,i=ar(t,this.model.globals),a=or(this.model,i),o=cr(this.model,n),c=b(R(I(a,o),o,a),P(),Ye),l=c.reduce((e,t,n,r)=>{for(let i=n+1;i<r.length;i++){let n=r[i];if(j(t,n)){e.push(t);break}}return e},[]),u=(e,t,n)=>{if(Le(e)){for(let r of e.__series)t=u(r,t,n);return t}let r=n?Ae(n,t):Ae(t),{source:i,target:a,title:o,isBackward:s,navigateTo:d,notation:p,...m}=e,h=this.model.element(i),g=c.indexOf(h);N(g>=0,`Source ${i} not found`);let _=this.model.element(a),v=c.indexOf(_);N(v>=0,`Target ${a} not found`),(l.includes(h)||l.includes(_))&&console.error(`Step ${h.id} -> ${_.id} because it involves a compound`);let{title:y,relations:ee,navigateTo:te,...ne}=lr(h,_,this.view.id),re=f(d)&&d!==this.view.id?d:te,b=e.kind?this.model.specification.relationships[e.kind]:void 0;return this.steps.push(T({...ne,...!e.technology&&!ne.technology&&b?.technology&&{technology:b.technology},...!e.color&&!ne.color&&b?.color&&{color:b.color},...!e.line&&!ne.line&&b?.line&&{line:b.line},...!e.head&&b?.head&&{head:b.head},...!e.tail&&b?.tail&&{tail:b.tail},...m,id:r,source:h,target:_,navigateTo:re,title:o??y,relations:ee??[],isBackward:g>v})),t+1},d=1;for(let e of n){if(Pe(e)){let t=1;for(let n of e.__parallel)t=u(n,t,d);d++;continue}d=u(e,d)}let p=ln(this.model.$styles,c.map(cn)),m=this.model.$styles.defaults.relationship,h=this.steps.map(({id:e,source:t,target:n,relations:r,title:i,isBackward:a,tags:o,...s})=>{let c=k(p.get(t.id),`Source node ${t.id} not found`),l=k(p.get(n.id),`Target node ${n.id} not found`),u={id:e,parent:tt(t.id,n.id),source:c.id,target:l.id,label:i??null,relations:r,color:m.color,line:m.line,head:m.arrow,tags:o??[],...s};for(a&&(u.dir=`back`);u.parent&&!p.has(u.parent);)u.parent=We(u.parent);c.outEdges.push(u.id),l.inEdges.push(u.id);for(let e of Ue(u.source)){if(e===u.parent)break;p.get(e)?.outEdges.push(u.id)}for(let e of Ue(u.target)){if(e===u.parent)break;p.get(e)?.inEdges.push(u.id)}return u}),g=rr(i,Xt(i,c.map(e=>k(p.get(e.id))))),v=s(i,je),y=Pt(g);return Ut({...r,[Be]:`dynamic`,[Ce]:`computed`,variant:r.variant??`diagram`,autoLayout:{direction:v?.direction??`LR`,...v?.nodeSep&&{nodeSep:v.nodeSep},...v?.rankSep&&{rankSep:v.rankSep}},nodes:_(g,e=>(e.icon===`none`&&delete e.icon,e)),edges:h,...y.length>0&&{notation:{nodes:y}}})}};function dr(e,t){return new ur(e,t).compute()}function fr(e){switch(!0){case C.isCustom(e):return fr(e.customRelation.expr);case C.isWhere(e):{let t=fr(e.where.expr),n=w(e.where.condition);return e=>t(e)&&n({source:{tags:e.source.tags,kind:e.source.kind,metadata:e.source.metadata},target:{tags:e.target.tags,kind:e.target.kind,metadata:e.target.metadata},...e.tags&&{tags:e.tags},...e.kind&&{kind:e.kind},...e.metadata&&{metadata:e.metadata}})}case C.isDirect(e):{let t=V(e.source),n=V(e.target);return r=>t(r.source)&&n(r.target)||!!e.isBidirectional&&t(r.target)&&n(r.source)}case C.isInOut(e):{let t=V(e.inout);return e=>t(e.source)||t(e.target)}case C.isIncoming(e):{let t=V(e.incoming);return e=>t(e.target)}case C.isOutgoing(e):{let t=V(e.outgoing);return e=>t(e.source)}default:L(e)}}function pr(e,t,n){let r=e.flatMap(nr(C.isCustom)),i=Array.from(n);if(r.length===0||i.length===0)return i;for(let{customRelation:{expr:e,title:n,description:a,notes:o,...s}}of r){let r=a?{description:Re(a)}:{},c=o?{notes:Re(o)}:{},l=ye(s,u),d=fr(e);i.forEach((e,a)=>{let o,s;for(let n of t)if(n.id===e.source&&(o=n),n.id===e.target&&(s=n),o&&s)break;!o||!s||d({source:o,target:s,...te(e,[`kind`,`tags`])})&&(i[a]={...e,...l,...r,...c,label:n??e.label,isCustomized:!0})})}return i}function mr(e){return b([...e],ft,re((e,t,n,r)=>{let i=Nt(r,t),a=R(...i.map(ce(`relations`))),o=I(t.relations,a);if(i.length>0&&(o=R(o,t.directRelations)),jt(r,t.reversed())&&(o=R(o,t.directRelations)),o.size<t.relations.size){let e=r.some(dt(t.source)),n=r.some(dt(t.target));e&&(o=R(o,z(A(t.relations,pt(t.source))))),n&&(o=R(o,z(A(t.relations,Mt(t.target)))))}return o.size>0&&e.push(t.update(o)),e},[]))}var hr=class e{static for(t){return new e(t)}constructor(e){this.memory=e}step1CleanConnections(e){if(e.connections.length<2)return e;let t=mr(e.connections);if(t.length===0)return e;let n=e.stageExclude({});return n.excludeConnections(t,!0),n.commit()}step2ProcessImplicits(e){let t=R(this.memory.elements,e.elements),n=R(e.final,this.memory.explicits),r=new Set(n),a=e=>{for(let t of r)if(e===t||j(e,t))return!0;return!1};return b(F(t,r),P(),Xe,i(e=>{let t=[...e.children()].filter(a).length;if(t>=2){n.add(e);return}t===1&&at(e.siblings(),a)&&n.add(e)})),e.update({final:n})}step3ProcessBoundaries(e){let t=new Set;for(let n of e.connections)n.boundary&&n.boundary!==n.source&&n.boundary!==n.target&&t.add(n.boundary);let n=qt(e,`final`),r=e.stageExclude({}),i=r=>!(t.has(r)||e.explicits.has(r)||n.hasInOut(r)||n.root.has(r)),a=S([...n.root]);a&&!e.explicits.has(a)&&r.exclude(a);for(let t of e.final){let e=S(n.children(t));e&&!n.hasInOut(e)&&i(t)&&r.exclude(t)}return r.isDirty()?r.commit():e}commit(){let e=this.step1CleanConnections(this.memory),t=this.step2ProcessImplicits(e);return this.step3ProcessBoundaries(t)}};const{findConnection:gr,findConnectionsBetween:q,findConnectionsWithin:J}=Dt;function Y(e,t){switch(!0){case E.isElementKindExpr(t):return[...A(e.elements(),e=>t.isEqual===(e.kind===t.elementKind))];case E.isElementTagExpr(t):return[...A(e.elements(),e=>t.isEqual===e.tags.includes(t.elementTag))];case t.selector===`expanded`:{let n=e.element(D.flatten(t.ref));return[n,...n.children()]}case t.selector===`children`:case t.selector===`descendants`:{let n=e.element(D.flatten(t.ref)),r=t.selector===`children`?P(n.children()):P(n.descendants());return r&&r.length>0?r:[n]}case E.isModelRef(t):return[e.element(D.flatten(t.ref))];default:L(t)}}function _r(e,t){if(t.isEmpty()||e.length===0)return e;let n=x(e.map(e=>Ke(e))),r=P(A(t.elements,t=>!e.includes(t)&&n(t)));return[...e,...r]}function vr(e,{memory:t,model:n}){let r=Y(n,e);return E.isModelRef(e)?e.selector===`descendants`?r:_r(r,t):r}const yr={include:({expr:e,model:t,stage:n,where:r})=>{let i=t.element(D.flatten(e.ref));r(i)&&(n.addExplicit(i),n.connectWithExisting(i));let a=[...i.children()].filter(r),o=[];for(let e of a)n.addImplicit(e),n.connectWithExisting(e)&&o.push(e);return n.addConnections(J(o)),n},exclude:({expr:e,model:t,stage:n,filterWhere:r})=>{let i=r(Y(t,e));return n.exclude(i),n}},br={include:({expr:e,model:t,stage:n,filterWhere:r})=>{let i=r(Y(t,e));if(i.length!==0)return n.addExplicit(i),n.connectWithExisting(i),n.addConnections(J(i)),n},exclude:({expr:e,model:t,stage:n,filterWhere:r})=>{let i=r(Y(t,e));return n.exclude(i),n}},xr={include:({expr:e,model:t,stage:n,filterWhere:r})=>{let i=r(Y(t,e));if(i.length!==0)return n.addExplicit(i),n.connectWithExisting(i),n.addConnections(J(i)),n},exclude:({expr:e,model:t,stage:n,filterWhere:r})=>{let i=r(Y(t,e));return n.exclude(i),n}},X=()=>!0,Sr=e=>e;function Cr(e){return e.reduce((e,t)=>{let n=[...t.relations];N(m(n,1),`Edge must have at least one relation`);let r=t.source.$model.$styles.defaults,i=t.source.id,a=t.target.id,{title:o,color:s=r.relationship.color,line:c=r.relationship.line,head:l=r.relationship.arrow,...u}=dn(n.map(e=>e.$relationship),S(y(n,e=>e.source.id===i&&e.target.id===a))?.$relationship),d=T({id:t.id,parent:t.boundary?.id??null,source:i,target:a,label:o??null,relations:n.map(e=>e.id),color:s,line:c,head:l,...u});return e.push(d),e},[])}function wr(e,t){return ln(e.$styles,[...t.final].map(cn),t.groups)}const Z=E.isWildcard,Tr=(e,t)=>e.isAncestorOf(t)||e.isDescendantOf(t),Er={include:({expr:{source:e,target:t,isBidirectional:n=!1},memory:r,model:i,stage:a,where:o,filterWhere:s})=>{let l=Z(e),u=Z(t),d=[];switch(!0){case l&&u&&r.isEmpty()&&o!==X:{let e=b(i.relationships(),A(o),P(),_(e=>new St(e.source,e.target,new Set([e]))));return a.addConnections(e),a}case l&&u&&!r.isEmpty()&&o!==X:d.push(...J(r.elements));break;case l&&u:d.push(...J(i.roots()));break;case!l&&u&&o!==X:{let t=b(Y(i,e),c(e=>b(e,le(he(n===!0),{onTrue:e=>R(e.allIncoming,e.allOutgoing),onFalse:e=>e.allOutgoing}),A(o),$e(),P(),_e(t=>t.source===e),([t,n])=>ue(b(t,y(t=>!Tr(e,t.target)),_(t=>new St(e,t.target,new Set([t])))),b(n,y(t=>!Tr(e,t.source)),_(t=>new St(t.source,e,new Set([t]))))))));return a.addConnections(t),a}case!l&&u:{let[t,a]=Dr(e,{memory:r,model:i}),o=n?`both`:`directed`;for(let e of t)d.push(...q(e,a,o));break}case l&&!u&&o!==X:{let e=b(Y(i,t),c(e=>b(e,le(he(n===!0),{onTrue:e=>R(e.allIncoming,e.allOutgoing),onFalse:e=>e.allIncoming}),A(o),P(),_e(t=>t.target===e),([t,n])=>ue(b(n,y(t=>!Tr(e,t.target)),_(t=>new St(e,t.target,new Set([t])))),b(t,y(t=>!Tr(e,t.source)),_(t=>new St(t.source,e,new Set([t]))))))));return a.addConnections(e),a}case l&&!u:{let[e,a]=Dr(t,{memory:r,model:i}),o=n?`both`:`directed`;for(let t of a)d.push(...q(t,e,o));break}default:{N(!Z(e),`Inference failed - source must be not a wildcard`),N(!Z(t),`Inference failed - target must be not a wildcard`);let a=vr(e,{memory:r,model:i}),o=vr(t,{memory:r,model:i}),s=n?`both`:`directed`;for(let e of a)d.push(...q(e,o,s))}}return a.addConnections(s(d)),a},exclude:({expr:{source:e,target:t,isBidirectional:n},model:r,memory:i,stage:a,where:o})=>{let s=Z(e),l=Z(t),u;switch(!0){case s&&l:u=b(i.connections,c(ae(ce(`relations`),A(o),P())),z());break;case!s&&l:u=b(Y(r,e),c(e=>b(e,le(he(n===!0),{onTrue:e=>R(e.allIncoming,e.allOutgoing),onFalse:e=>e.allOutgoing}),A(o),P())),z());break;case s&&!l:u=b(Y(r,t),c(e=>b(e,le(he(n===!0),{onTrue:e=>R(e.allIncoming,e.allOutgoing),onFalse:e=>e.allIncoming}),A(o),P())),z());break;default:{N(!Z(e),`Inference failed - source must be not a wildcard`),N(!Z(t),`Inference failed - target must be not a wildcard`);let i=Y(r,e),a=Y(r,t),s=new Set;for(let e of i)for(let t of a)Je(e,t)||(s=R(s,I(e.allOutgoing,t.allIncoming),n?I(t.allOutgoing,e.allIncoming):new Set));u=z(A(s,o))}}return a.excludeRelations(u),a}};function Dr(e,{memory:t,model:n}){let r=Y(n,e);if(!m(r,1))return[[],[]];if(E.isModelRef(e)){let i=P(n.element(D.flatten(e.ref)).ascendingSiblings());return[_r(r,t),_r(i,t)]}return[r,b(r,_(e=>e.ascendingSiblings()),rt(),$e(),P(),e=>_r(e,t))]}const Or={include:({expr:e,scope:t,model:n,memory:r,stage:i,filterWhere:a})=>{let o=e.incoming,s=[];if(E.isWildcard(o)){if(!t)return;for(let e of t.ascendingSiblings())s.push(...gr(e,t,`directed`))}else{let e=vr(o,{memory:r,model:n}),t=[...r.elements];t.length===0&&t.push(...oe(e.flatMap(e=>[...e.ascendingSiblings()])));let i=kr(n,o);for(let n of t)s.push(...q(n,e,`directed`).filter(i))}return i.addConnections(a(s)),i},exclude:({expr:{incoming:e},model:t,scope:n,stage:r,where:i})=>{let a=[];if(E.isWildcard(e)){if(!n)return;a.push(...n.allIncoming)}else{let n=Y(t,e);a.push(...n.flatMap(e=>[...e.allIncoming]))}return r.excludeRelations(new Set(a.filter(i))),r}};function kr(e,t){switch(!0){case E.isElementKindExpr(t):case E.isElementTagExpr(t):{let e=V(t);return t=>e(t.target)}case E.isModelRef(t)&&t.selector===`children`:{let n=D.flatten(t.ref);return x([...e.children(n)].map(e=>B.isIncoming(e.id)))}case E.isModelRef(t)&&t.selector===`descendants`:{let n=D.flatten(t.ref);return x([B.isInside(n),...[...e.children(n)].map(e=>B.isIncoming(e.id))])}case E.isModelRef(t)&&t.selector===`expanded`:{let e=D.flatten(t.ref);return x([B.isIncoming(e),B.isInside(e)])}case E.isModelRef(t):{let e=D.flatten(t.ref);return B.isIncoming(e)}default:L(t)}}const Ar={include:({expr:{inout:e},scope:t,model:n,memory:r,stage:i,filterWhere:a})=>{let o=[];if(E.isWildcard(e)){if(!t)return;o.push(...q(t,t.ascendingSiblings()))}else{let t=vr(e,{memory:r,model:n}),i=[...r.elements];i.length===0&&(i=oe(t.flatMap(e=>P(e.ascendingSiblings()))));for(let e of t)o.push(...q(e,i))}return i.addConnections(a(o)),i},exclude:({expr:{inout:e},model:t,scope:n,stage:r,where:i})=>{let a=[];if(E.isWildcard(e)){if(!n)return;a.push(...n.allOutgoing),a.push(...n.allIncoming)}else{let n=Y(t,e);a.push(...n.flatMap(e=>[...e.allOutgoing,...e.allIncoming]))}return r.excludeRelations(z(a.filter(i))),r}},jr={include:({expr:e,scope:t,model:n,memory:r,stage:i,filterWhere:a})=>{let o=e.outgoing,s=[];if(E.isWildcard(o)){if(!t)return;s.push(...q(t,t.ascendingSiblings(),`directed`))}else{let e=vr(o,{memory:r,model:n}),t=[...r.elements];t.length===0&&t.push(...oe(e.flatMap(e=>[...e.ascendingSiblings()])));let i=Mr(n,o);for(let n of e)s.push(...q(n,t,`directed`).filter(i))}return i.addConnections(a(s)),i},exclude:({expr:{outgoing:e},model:t,scope:n,stage:r,where:i})=>{let a=[];if(E.isWildcard(e)){if(!n)return;a.push(...n.allOutgoing)}else{let n=Y(t,e);a.push(...n.flatMap(e=>[...e.allOutgoing]))}return r.excludeRelations(z(a.filter(i))),r}};function Mr(e,t){switch(!0){case E.isElementKindExpr(t):case E.isElementTagExpr(t):{let e=V(t);return t=>e(t.source)}case E.isModelRef(t)&&t.selector===`children`:{let n=D.flatten(t.ref);return x([...e.children(n)].map(e=>B.isOutgoing(e.id)))}case E.isModelRef(t)&&t.selector===`descendants`:{let n=D.flatten(t.ref);return x([B.isInside(n),...[...e.children(n)].map(e=>B.isOutgoing(e.id))])}case E.isModelRef(t)&&t.selector===`expanded`:{let e=D.flatten(t.ref);return x([B.isOutgoing(e),B.isInside(e)])}case E.isModelRef(t):{let e=D.flatten(t.ref);return B.isOutgoing(e)}default:L(t)}}const Nr={include:({scope:e,model:t,stage:n,memory:r,where:i})=>{if(!e){let e=i===X?[...t.roots()]:P(A(t.elements(),i));if(e.length===0)return;let[r,a]=_e(e,e=>!e.imported);return n.addExplicit(r),n.addImplicit(a),n.addConnections(J(e)),n.connectWithExisting(e),n}let a=P(A(e.children(),i)),o=a.length>0;if(!o){let t=q(e,e.siblings()),r=e.parent;t.length===0&&r&&n.addExplicit(r),a.push(e)}n.addExplicit(e);let s=z([...r.elements,...e.descendingSiblings()]);for(let e of s)n.addConnections(q(e,a,`directed`));o&&(n.addConnections(J(a)),n.addExplicit(a));for(let e of a)n.addConnections(q(e,s,`directed`));return n},exclude:({scope:e,memory:t,stage:n,where:r})=>r===X?e?(n.exclude([e,...e.descendants()]),n):an.empty(t.scope).stageExclude(n.expression):(n.exclude(y([...t.elements],r)),n)};function Pr(e,t,n){switch(!0){case E.isCustom(e):return t===`include`?Pr(e.custom.expr,t,n):n.stage;case E.isWhere(e):{let r=w(e.where.condition),i=e=>y(e,r);return Pr(e.where.expr,t,{...n,where:r,filterWhere:i})}case E.isModelRef(e)&&e.selector===`expanded`:return yr[t]({...n,expr:e})??n.stage;case E.isWildcard(e):return Nr[t]({...n,expr:e})??n.stage;case E.isElementKindExpr(e):case E.isElementTagExpr(e):return br[t]({...n,expr:e})??n.stage;case E.isModelRef(e):return xr[t]({...n,expr:e})??n.stage;default:L(e)}}function Fr(e,t,n){switch(!0){case C.isCustom(e):return t===`include`?Fr(e.customRelation.expr,t,n):n.stage;case C.isWhere(e):{let r=w(e.where.condition),i=e=>new Set(y([...e],r)),a=e=>b(e,_(e=>new St(e.source,e.target,i(e.relations))),y(e=>e.nonEmpty()));return Fr(e.where.expr,t,{...n,where:r,filterWhere:a})}case C.isInOut(e):return Ar[t]({...n,expr:e})??n.stage;case C.isDirect(e):return Er[t]({...n,expr:e})??n.stage;case C.isOutgoing(e):return jr[t]({...n,expr:e})??n.stage;case C.isIncoming(e):return Or[t]({...n,expr:e})??n.stage;default:L(e)}}function Ir(e,t,n){let r={model:e,scope:t.scope,where:X,filterWhere:Sr};for(let i of n){if(Ne(i)){t=Ir(e,on.enter(t,i),i.groupRules),N(t instanceof on,`processPredicates must return ActiveGroupMemory`),t=t.leave();continue}if(He(i)){let e=`include`in i?`include`:`exclude`,n=i.include??i.exclude;for(let i of n){let n=e===`include`?t.stageInclude(i):t.stageExclude(i);switch(!0){case Se.isFqnExpr(i):n=Pr(i,e,{...r,stage:n,memory:t})??n;break;case Se.isRelationExpr(i):n=Fr(i,e,{...r,stage:n,memory:t})??n;break;default:L(i)}t=n.commit()}}}return t}function Lr(e,t,n){return t=Ir(e,t,n),hr.for(t).commit()}function Rr(e,{docUri:t,rules:n,...r}){let i=ir(n,e.globals),a=r.viewOf?e.asComputed.element(r.viewOf):null,o=Lr(e,an.empty(a),i);o.isEmpty()&&a&&(o=o.update({final:new Set([a])})),o=Br(o);let c=wr(e,o),l=Cr(o.connections);Lt(c,l);let u=Ht({nodes:c,edges:l}),d=rr(i,Xt(i,u.nodes)),f=s(i,je),p=Pt(d),m=zr(i,d);return Ut({...r,_stage:`computed`,autoLayout:{direction:f?.direction??`TB`,...f?.nodeSep&&{nodeSep:f.nodeSep},...f?.rankSep&&{rankSep:f.rankSep}},edges:pr(i,d,u.edges),nodes:_(d,e=>(e.icon===`none`&&delete e.icon,e)),...p.length>0&&{notation:{nodes:p}},...m.length>0&&{ranks:m}})}function zr(e,t){let n=[];for(let r of e){if(!Ie(r)||r.targets.length===0)continue;let e=b(t,y(x(r.targets.map(V))),_(e=>e.id));m(e,1)&&n.push({type:r.rank,nodes:e})}return n}function Br(e){if(e.groups.length===0)return e;let t=new lt.default(()=>new Set),n=new Map,r=e=>{for(let r of e.ancestors()){let i=n.get(r);if(i)return n.set(e,i),t.get(i).add(e),!0}return!1},a=e=>{for(let r of e.descendants(`asc`)){let i=n.get(r);if(i)return n.set(e,i),t.get(i).add(e),!0}return!1};if(b(Ye([...e.explicitFirstSeenIn.keys()]),i(i=>{if(!r(i)){let r=k(e.explicitFirstSeenIn.get(i));n.set(i,r),t.get(r).add(i)}})),b(Ye([...e.lastSeenIn.keys()]),y(e=>!n.has(e)),i(i=>{if(r(i)||a(i))return;let o=k(e.lastSeenIn.get(i));n.set(i,o),t.get(o).add(i)})),t.size===0)return e;let o=e.groups.map(e=>{let n=t.get(e.id);return n?e.update(n):e});return e.update({groups:o})}function Vr(e,t){switch(!0){case Oe(e):return Rr(t,e);case Fe(e):return tr(t,e);case ke(e):return dr(t,e);default:L(e)}}function Hr(e,t){try{return{isSuccess:!0,view:Vr(e,t)}}catch(e){return{isSuccess:!1,error:e instanceof Error?e:Error(`Unknown error: ${e}`),view:void 0}}}function Ur(e){let t=mt.create(e),{views:r,_stage:i,...a}=e,o=n(r,e=>Vr(e,t));return{[Ce]:`computed`,...a,views:o}}function Wr(e){return mt.create(Ur(e))}const Q=e=>e;function $(e){if(!se(e))return e;if(e===`*`)return Q({wildcard:!0});if(e.startsWith(`->`))return e.endsWith(`->`)?Q({inout:$(e.replace(/->/g,``).trim())}):Q({incoming:$(e.replace(`-> `,``))});if(e.endsWith(` ->`))return Q({outgoing:$(e.replace(` ->`,``))});if(e.includes(` <-> `)){let[t,n]=e.split(` <-> `);return Q({source:$(t),target:$(n),isBidirectional:!0})}if(e.includes(` -> `)){let[t,n]=e.split(` -> `);return Q({source:$(t),target:$(n)})}return e.endsWith(`._`)?Q({ref:{model:e.replace(`._`,``)},selector:`expanded`}):e.endsWith(`.**`)?Q({ref:{model:e.replace(`.**`,``)},selector:`descendants`}):e.endsWith(`.*`)?Q({ref:{model:e.replace(`.*`,``)},selector:`children`}):Q({ref:{model:e}})}export{Vr as a,Lt as c,Hr as i,Wr as n,Rr as o,Ur as r,Ht as s,$ as t};
|
|
1
|
+
import{B as e,C as t,E as n,G as r,H as i,I as a,J as o,K as s,L as c,M as l,N as u,O as d,P as f,Q as p,R as m,S as h,T as g,V as _,Y as v,Z as ee,_ as te,a as ne,d as y,et as b,g as x,h as re,i as ie,k as ae,m as oe,n as se,nt as ce,o as le,q as ue,r as de,rt as S,t as fe,tt as pe,u as me,v as he,w as ge,x as _e,y as C,z as ve}from"./libs/remeda.mjs";import{Bt as ye,Cn as w,Dn as be,Et as T,G as E,Gt as xe,Ht as Se,J as Ce,Jt as D,Lt as we,Mt as Te,O,On as k,Ot as Ee,Qt as De,Rt as A,Sn as j,Tt as Oe,U as ke,W as M,Y as N,Yt as P,_t as Ae,b as je,cn as Me,d as Ne,dn as Pe,dt as Fe,et as Ie,fn as Le,g as Re,h as ze,ht as Be,jt as F,kt as I,l as Ve,ln as He,lt as Ue,mn as We,n as Ge,nn as Ke,o as qe,p as Je,q as L,r as Ye,rn as Xe,s as Ze,sn as R,tn as Qe,tt as $e,u as et,vn as tt,vt as nt,xn as z,y as rt,zt as B}from"./types.mjs";import{c as it,t as at}from"./libs/mnemonist.mjs";import{A as ot,C as st,D as ct,E as lt,M as V,N as ut,O as dt,T as ft,_ as pt,c as mt,d as ht,f as gt,g as _t,h as vt,j as yt,m as bt,n as xt,o as St,p as Ct,q as wt,r as Tt,t as Et,v as Dt,w as Ot,y as kt}from"./model.mjs";import{r as At}from"./manual-layout.mjs";import{t as jt}from"./libs/graphology.mjs";import{n as Mt,t as Nt}from"../utils/graphology/index.mjs";function Pt(e,t){let n=[],r=e.parent;for(;r;){let e=j(t.get(r),`Parent node ${r} not found`);n.push(e),r=e.parent}return n}function Ft(e,t){for(let r of t){let t=e.get(r.source),i=e.get(r.target);z(t,`Source node ${r.source} not found`),z(i,`Target node ${r.target} not found`),t.outEdges.push(r.id),i.inEdges.push(r.id);let a=Pt(t,e),o=Pt(i,e),s=a.length>0&&o.length>0?n(tt(me(a),me(o))):null;r.parent=s?s.id:null;for(let e of a){if(e===s)break;e.outEdges.push(r.id)}for(let e of o){if(e===s)break;e.inEdges.push(r.id)}}}function It(e){let t=[],n=[...e],r;for(;r=n.shift();){let e=r.parent;if(e){let r=[];for(;e;){let t=n.findIndex(t=>t.id===e);if(t<0)break;let[i]=n.splice(t,1);if(!i)throw Error(`Invalid state, should not happen`);r.unshift(i),e=i.parent}t.push(...r)}t.push(r)}return t}function Lt(e){return e.forEach(t=>{t.children.length>0&&(t.children=e.reduce((e,n)=>(n.parent===t.id&&e.push(n.id),e),[]))}),e}function Rt(e){let t=It([...e.nodes.values()]),n=[...e.edges];if(t.length<2||n.length===0)return{nodes:t,edges:n};let i=t=>j(e.nodes.get(t)),a=new jt({multi:!0,allowSelfLoops:!0,type:`directed`}),[o,s]=he(b(n,g(e=>{let t=i(e.source),n=i(e.target),r=e.parent?i(e.parent):null;return{id:e.id,edge:e,parent:r,source:t,target:n}})),({source:e,target:t})=>e.children.length===0&&t.children.length===0),c=[],l=e=>{a.mergeNode(e.source),a.mergeNode(e.target),c.push(e),(0,Mt.default)(a,e.source,e.target)||a.mergeDirectedEdge(e.source,e.target)};for(let{edge:t,source:n,target:s}of o)if(l(t),s.parent&&s.parent!==t.parent&&b(Pt(s,e.nodes),ne(e=>e.inEdges.includes(t.id)),r(e=>{a.mergeNode(e.id),(0,Mt.default)(a,t.source,e.id)||a.mergeDirectedEdge(t.source,e.id),(0,Mt.default)(a,e.id,t.target)||a.mergeDirectedEdge(e.id,t.target)})),n.parent){let e=i(n.parent);a.mergeNode(e.id),(0,Mt.default)(a,e.id,n.id)||a.mergeDirectedEdge(e.id,n.id),s.parent&&s.parent!==n.parent&&((0,Mt.default)(a,e.id,s.parent)||a.mergeDirectedEdge(e.id,s.parent))}for(let{edge:e}of s)l(e);z(c.length===n.length,`Not all edges were added to the graph`);let u=(0,Nt.topologicalSort)(a),d=[],f=t.slice();for(let e of u){let t=f.findIndex(t=>t.id===e);z(t>=0,`Node "${e}" not found`),d.push(...f.splice(t,1))}return f.length>0&&d.length>0&&(d=d.flatMap(e=>{if(f.length===0)return e;let n=t.slice(0,t.indexOf(e)).filter(e=>f.includes(e));return n.length>0?(f=f.filter(e=>!n.includes(e)),[...n,e]):e})),d.push(...f),{nodes:Lt(It(d)),edges:c}}function zt(e){return e.hash=Oe({id:e.id,__:e._type??`element`,autoLayout:e.autoLayout,nodes:b(e.nodes,g(e=>({id:e.id,icon:d(e.icon)&&e.icon!==`none`?`Y`:`N`,title:e.title,description:Ue(e.description),technology:e.technology??null,shape:e.shape,size:e.style.size??null,iconSize:e.style.iconSize??null,iconPosition:e.style.iconPosition??null,textSize:e.style.textSize??null,padding:e.style.padding??null,children:e.children})),ge(({id:e,...t})=>[e,t])),edges:b(e.edges,g(e=>({source:e.source,target:e.target,label:e.label,description:Ue(e.description),technology:e.technology??null,dir:e.dir,head:e.head,tail:e.tail,line:e.line})),ge(({source:e,target:t,...n})=>[`${e}:${t}`,n]))}),e}var Bt=class{get Ctx(){throw Error(`Should not be called in runtime`)}constructor(e){this.state=e}get elements(){return this.state.elements}get explicits(){return this.state.explicits}get final(){return this.state.final}get connections(){return this.state.connections}isEmpty(){return this.elements.size===0&&this.connections.length===0&&this.explicits.size===0&&this.final.size===0}},Vt=class{excluded={elements:new Set,connections:[]};constructor(e,t){this.memory=e,this.expression=t}markedToMoveExplicitToImplicit=!1;_removeElement(e){this.excluded.elements.add(e)}exclude(e){if(!e)return this;if(P(e)){for(let t of e)this._removeElement(t);return this}return this._removeElement(e),this}_removeConnection(e){this.excluded.connections.push(e)}excludeConnections(e,t){if(ve(t)&&(z(!this.markedToMoveExplicitToImplicit,`Already marked to move explicits`),this.markedToMoveExplicitToImplicit=t),P(e)){for(let t of e)this._removeConnection(t);return this}return this._removeConnection(e),this}isDirty(){return this.excluded.elements.size>0||this.excluded.connections.length>0}isEmpty(){return!this.isDirty()}filterForMoveToImplicits(e){return this.markedToMoveExplicitToImplicit||this.excluded.elements.size>0?e:new Set}moveDisconnectedExplicitsToImplicits(e){let t=T(new Set(this.memory.connections.flatMap(e=>[e.source,e.target])),new Set(e.connections.flatMap(e=>[e.source,e.target])));return t=I(t,e.elements),t=b(t,D(t=>e.explicits.has(t)&&!ye(e.final,Me(t))),B()),t.size>0&&(t=this.filterForMoveToImplicits(t),e.explicits=T(e.explicits,t),e.final=T(e.final,t)),e}removeElements(e){return e.elements=T(e.elements,this.excluded.elements),e.explicits=T(e.explicits,this.excluded.elements),e.final=T(e.final,this.excluded.elements),e}removeConnections(e){let t=this.excluded.connections.reduce((e,t)=>{let n=e.get(t.id);return n?e.set(t.id,n.mergeWith(t)):e.set(t.id,t),e},new Map),n=new Set;e.connections=e.connections.reduce((e,r)=>{let i=t.get(r.id);if(i){n.add(r.source),n.add(r.target);let t=r.difference(i);t.nonEmpty()&&e.push(t)}else e.push(r);return e},[]);for(let t of e.connections)n.delete(t.source),n.delete(t.target),t.boundary&&e.elements.has(t.boundary)&&n.delete(t.boundary);return n.size===0?e:(n=T(n,e.explicits),e.final=T(e.final,n),e)}precommit(e){return e}postcommit(e){return z(T(e.explicits,e.elements).size===0,`Explicits must be subset of elements`),z(T(e.final,e.elements).size===0,`Final elements must be subset of elements`),e}commit(){let e=this.precommit(this.memory.mutableState());if(this.excluded.elements.size>0){let t=e.connections.filter(e=>this.excluded.elements.has(e.source)||this.excluded.elements.has(e.target)).flatMap(t=>[t,...pt(e.connections,t).map(e=>e.intersect(t))]).filter(e=>e.nonEmpty());this.excludeConnections(t)}return this.excluded.connections.length>0&&(e=this.removeConnections(e)),this.excluded.elements.size>0&&(e=this.removeElements(e)),this.memory.update(this.postcommit(e))}},Ht=class{explicits=new Set;implicits=new Set;_ordered=new Set;_connections=[];constructor(e,t){this.memory=e,this.expression=t}get elements(){return this.explicits}get connections(){return this._connections}mergedConnections(){return ct([...this.memory.connections,...this._connections])}connectWithExisting(e,t){throw Error(`Method not implements, depends on the model`)}_addExplicit(e){this._ordered.add(e),this.explicits.add(e),this.implicits.delete(e)}addExplicit(e){if(!e)return this;if(P(e)){for(let t of e)this._addExplicit(t);return this}return this._addExplicit(e),this}_addImplicit(e){this.explicits.has(e)||(this._ordered.add(e),this.implicits.add(e))}addImplicit(e){if(!e)return this;if(P(e)){for(let t of e)this._addImplicit(t);return this}return this._addImplicit(e),this}_addConnection(e){this._connections.push(e),this._addImplicit(e.source),this._addImplicit(e.target)}addConnections(e){if(P(e)){for(let t of e)this._addConnection(t);return this}return this._addConnection(e),this}isDirty(){return this.explicits.size>0||this.implicits.size>0||this._connections.length>0}isEmpty(){return!this.isDirty()}precommit(e){return e}postcommit(e){return e}processConnections(e){return e}commit(){let e=this.precommit(this.memory.mutableState()),t=new Set;if(this._connections.length>0){let[n,r]=he(this._connections,t=>e.final.has(t.source));e.connections=this.processConnections(ct([...e.connections,...n,...r])),t=new Set(e.connections.flatMap(e=>[e.source,e.target]))}return e.elements=F(e.elements,this._ordered,this.explicits,t,this.implicits),e.explicits=I(e.elements,F(e.explicits,this.explicits)),e.final=I(e.elements,F(e.final,this.explicits,t)),this.memory.update(this.postcommit(e))}};function Ut(e,t=`final`){let n=We(A(t===`final`?e.final:e.elements)),r=new Set(e.connections.flatMap(e=>[e.source,e.target])),i=new Set(n),a=new at.default(()=>null),o=n.reduce((e,t,n,r)=>(e.set(t,r.slice(n+1).filter(e=>R(t,e)).map(e=>(i.delete(e),e)).reduce((e,n)=>(e.some(e=>R(e,n))||(e.push(n),a.set(n,t)),e),[])),e),new at.default(()=>[]));return{root:i,connected:r,hasInOut:t=>e.connections.some(V.isAnyInOut(t.id)),parent:e=>a.get(e),children:e=>o.get(e)}}var Wt=class extends Vt{};function H(e){if(M.isCustom(e))return H(e.custom.expr);if(M.isWhere(e)){let t=H(e.where.expr),n=O(e.where.condition);return e=>t(e)&&n(e)}if(M.isElementKindExpr(e))return e.isEqual?t=>t.kind===e.elementKind:t=>t.kind!==e.elementKind;if(M.isElementTagExpr(e))return e.isEqual?({tags:t})=>t.includes(e.elementTag):({tags:t})=>!t.includes(e.elementTag);if(M.isWildcard(e))return()=>!0;if(M.isModelRef(e)){let t=N.flatten(e.ref);if(e.selector===`expanded`)return e=>e.id===t||Pe(e.id)===t;if(e.selector===`descendants`||e.selector===`children`){let e=t+`.`;return t=>t.id.startsWith(e)}return e=>e.id===t}w(e)}function Gt(e,t,n){let{shape:i,color:a,icon:o,...s}=e.style,l=!c(s);b(n,v(u(Fe)),v(t),r(t=>{t.shape=i??t.shape,t.color=a??t.color,m(o)&&(t.icon=o),m(e.notation)&&(t.notation=e.notation),l&&(t.style={...t.style,...s})}))}function Kt(e,t){for(let n of e)!je(n)||n.targets.length===0||Gt(n,S(n.targets.map(H)),t);return t}var qt=class e{static kind=Ie;constructor(e,t,n=null,r=new Set){this.id=e,this.viewRule=t,this.parent=n,this.elements=r}isEmpty(){return this.elements.size===0}update(t){return new e(this.id,this.viewRule,this.parent,t)}clone(){return new e(this.id,this.viewRule,this.parent,new Set(this.elements))}},Jt=class extends Vt{excludeRelations(e){return b(this.memory.connections,v(t=>Ee(t.relations,e)),r(t=>{this.excludeConnections(t.update(I(t.relations,e)))})),this}precommit(e){if(this.excluded.elements.size>0){let e=new Set([...this.excluded.elements].flatMap(e=>[...e.incoming(`direct`),...e.outgoing(`direct`)]));this.excludeRelations(e)}return e}postcommit(e){let t=T(this.memory.explicits,e.explicits);for(let n of t)e.explicitFirstSeenIn.delete(n);let n=T(this.memory.elements,e.elements);for(let t of n)e.lastSeenIn.delete(t);return e}},Yt=class extends Jt{constructor(e,t){super(e,t),this.memory=e,this.expression=t}};const{findConnection:Xt,findConnectionsBetween:Zt}=Ct;var Qt=class extends Ht{connectWithExisting(e,t=`both`){let n=this._connections.length,r=()=>this._connections.length>n;if(!P(e)){if(t===`in`||t===`both`)for(let t of this.memory.elements)this.addConnections(Xt(t,e,`directed`));return(t===`out`||t===`both`)&&this.addConnections(Zt(e,this.memory.elements,`directed`)),r()}let i=[...e];if(t===`in`||t===`both`)for(let e of this.memory.elements)this.addConnections(Zt(e,i,`directed`));if(t===`out`||t===`both`)for(let e of i)this.addConnections(Zt(e,this.memory.elements,`directed`));return r()}addImplicitWithinScope(e){e&&(!this.memory.scope||R(this.memory.scope,e))&&this.addImplicit(e)}processConnections(e){return ke.isRelationExpr(this.expression)||b(e,r(({source:e,target:t,boundary:n})=>{b(fe([...A(e.ancestors()).reverse(),e],[...A(t.ancestors()).reverse(),t]),ee(([e,t])=>e===t),le(1),r(([r,i])=>{if(r===e&&i===t){this.addImplicitWithinScope(n);return}r!==e&&this.addImplicitWithinScope(r),i!==t&&this.addImplicitWithinScope(i)}))})),e}postcommit(e){let t=T(e.explicits,this.memory.explicits);for(let n of t)e.explicitFirstSeenIn.set(n,`@root`);return e}},$t=class extends Qt{constructor(e,t){super(e,t),this.memory=e,this.expression=t}postcommit(e){let t=T(e.explicits,this.memory.explicits);for(let n of t)e.explicitFirstSeenIn.set(n,this.memory.activeGroupId);for(let t of[...this.explicits,...this.implicits])e.lastSeenIn.set(t,this.memory.activeGroupId);return e}},en=class e extends Bt{static empty(t){return new e({elements:new Set,explicits:new Set,final:new Set,connections:[],groups:[],explicitFirstSeenIn:new Map,lastSeenIn:new Map},t)}constructor(e,t){super(e),this.state=e,this.scope=t}get groups(){return this.state.groups}get explicitFirstSeenIn(){return this.state.explicitFirstSeenIn}get lastSeenIn(){return this.state.lastSeenIn}stageInclude(e){return new Qt(this,e)}stageExclude(e){return new Jt(this,e)}mutableState(){return{elements:new Set(this.state.elements),explicits:new Set(this.state.explicits),final:new Set(this.state.final),connections:[...this.state.connections],groups:this.state.groups.map(e=>e.clone()),explicitFirstSeenIn:new Map(this.state.explicitFirstSeenIn),lastSeenIn:new Map(this.state.lastSeenIn)}}update(t){return new e({...this.state,...t},this.scope)}},tn=class e extends en{static enter(t,n){let r=`@gr${t.groups.length+1}`;if(t instanceof e){let i=it.default.from([...t.stack].reverse()),a=t.mutableState();return a.groups.push(new qt(r,n,t.activeGroupId)),i.push(r),new e(a,t.scope,i)}let i=t.mutableState();i.groups.push(new qt(r,n,null));let a=it.default.of(r);return new e(i,t.scope,a)}constructor(e,t,n){super(e,t),this.state=e,this.scope=t,this.stack=n}get activeGroupId(){return j(this.stack.peek(),`Stack must not be empty`)}mutableState(){return{...super.mutableState()}}update(t){return new e({...this.state,...t},this.scope,this.stack)}stageInclude(e){return new $t(this,e)}stageExclude(e){return new Yt(this,e)}leave(){let t=this.mutableState();return this.stack.pop(),this.stack.peek()?new e(t,this.scope,this.stack):new en(t,this.scope)}};function nn(e,t){let n;for(;e.parent&&(n=t.get(e.parent));){let t=n.depth??1;if(n.depth=Math.max(t,(e.depth??0)+1),n.depth===t)break;e=n}}function rn(e){let{id:t,title:n,...r}=h(e.$element,[`summary`,`description`,`metadata`,`style`,`tags`]),{color:i,icon:a,shape:o,...s}=e.style;return k({id:t,title:n,modelRef:t,shape:o,color:i,icon:a,style:s,description:be(e.$element),tags:[...e.tags],metadata:e.$element.metadata,...r})}function an({defaults:e},t,n){let r=new Map,i=new Map;n?.forEach(({id:t,parent:n,viewRule:a,elements:o})=>{n&&j(r.get(n),`Parent group node ${n} not found`).children.push(t),r.set(t,{id:t,parent:n,kind:Ie,title:a.title??``,color:a.color??e.group.color??e.color,shape:`rectangle`,children:[],inEdges:[],outEdges:[],level:0,depth:0,tags:[],style:k({border:a.border??e.group.border,opacity:a.opacity??e.group.opacity,size:a.size,multiple:a.multiple,padding:a.padding,textSize:a.textSize})});for(let e of o)i.set(e.id,t)}),Array.from(t).sort(Xe).forEach(({id:e,...t})=>{let n=Pe(e),a=0,o;for(;n&&(o=r.get(n),!o);)n=Pe(n);let s=t.modelRef??e;if(!o&&i.has(s)){let e=j(i.get(s));o=r.get(e),n=e}o&&(o.children.length==0&&(o.depth=1,nn(o,r)),o.children.push(e),a=o.level+1);let c=k({id:e,parent:n,level:a,children:[],inEdges:[],outEdges:[],...t});r.set(e,c)});let a=new Map;return n?.forEach(({id:e})=>{a.set(e,j(r.get(e)))}),t.forEach(({id:e})=>{a.set(e,j(r.get(e)))}),a}function on(e){let{title:t,description:n=null}=e;return{...t&&{title:t,description:n},...te(e,[`color`,`technology`,`head`,`line`,`tail`,`kind`,`navigateTo`])}}function sn(e,t){let n=b(e,y((e,t)=>(d(t.title)&&!e.title.includes(t.title)&&e.title.push(t.title),d(t.description)&&!e.description.some(_(t.description))&&e.description.push(t.description),d(t.technology)&&!e.technology.includes(t.technology)&&e.technology.push(t.technology),d(t.kind)&&!e.kind.includes(t.kind)&&e.kind.push(t.kind),d(t.color)&&!e.color.includes(t.color)&&e.color.push(t.color),d(t.line)&&!e.line.includes(t.line)&&e.line.push(t.line),d(t.head)&&!e.head.includes(t.head)&&e.head.push(t.head),d(t.tail)&&!e.tail.includes(t.tail)&&e.tail.push(t.tail),d(t.navigateTo)&&!e.navigateTo.includes(t.navigateTo)&&e.navigateTo.push(t.navigateTo),t.tags&&e.tags.push(...t.tags),e),{title:[],description:[],technology:[],kind:[],head:[],tail:[],color:[],tags:[],line:[],navigateTo:[]})),r=C(n.title)??(n.title.length>1?`[...]`:void 0),i=ie(n.tags),a=k({title:r,description:C(n.description),technology:C(n.technology),kind:C(n.kind),head:C(n.head),tail:C(n.tail),color:C(n.color),line:C(n.line),navigateTo:C(n.navigateTo),...De(i)&&{tags:i}});if(t){let e=on(t);a=x({...a,...e},d)}return l(a.title)&&d(a.technology)&&(a.title=`[${a.technology}]`,delete a.technology),a}const{findConnection:cn,findConnectionsBetween:U,findConnectionsWithin:ln}=bt;function W(e,t){let n=e.element(t.ref.deployment);if(n.isDeploymentNode()){if(t.selector===`children`)return[...n.children()];if(t.selector===`expanded`)return[n,...n.children()];if(t.selector===`descendants`)return[...n.descendants()]}return[n]}function un(e,t){let n=e.$model.element(t.ref.model);return t.selector===`children`?[...n.children()]:t.selector===`expanded`?[n,...n.children()]:t.selector===`descendants`?[...n.descendants()]:[n]}function dn(e){if(L.isWildcard(e))return()=>!0;if(L.isElementTagExpr(e)||L.isElementKindExpr(e))throw Error(`element kind and tag expressions are not supported in deployment view rules`);if(L.isDeploymentRef(e)){let t=e.ref.deployment;if(e.selector===`expanded`){let e=t+`.`;return n=>n.id===t||n.id.startsWith(e)}if(e.selector===`descendants`){let e=t+`.`;return t=>t.id.startsWith(e)}return e.selector===`children`?e=>Pe(e.id)===t:e=>e.id===t}if(L.isModelRef(e)){let t=e.ref.model;if(e.selector===`expanded`){let e=t+`.`;return n=>{let r=n.modelRef??null;return r?r===t||r.startsWith(e):!0}}if(e.selector===`descendants`){let e=t+`.`;return t=>{let n=t.modelRef??null;return n?n.startsWith(e):!0}}return e.selector===`children`?e=>{let n=e.modelRef??null;return n?Pe(n)===t:!0}:e=>{let n=e.modelRef??null;return n?n===t:!0}}w(e)}function fn(e){return be(e.$instance)??be(e.element.$element)}function pn(e){let t=e.id,n=e.onlyOneInstance();return k({id:t,deploymentRef:t,title:e.title,kind:e.kind,technology:e.technology??void 0,links:p(e.links,1)?[...e.links]:void 0,notation:e.$node.notation??void 0,color:e.color,shape:e.shape,modelRef:n?.element.id,icon:e.style.icon,description:be(e.$node)??void 0,tags:[...e.tags],style:h(e.style,[`icon`,`shape`,`color`])})}function mn(e){let t=e.$instance,n=e.element,{icon:r,color:i,shape:a,...o}=e.style,s=[...n.links,...t.links??[]];return k({id:e.id,kind:`instance`,title:e.title,description:fn(e)??void 0,technology:e.technology??void 0,tags:[...e.tags],links:p(s,1)?s:void 0,icon:r,color:i,shape:a,style:o,deploymentRef:t.id,modelRef:n.id,notation:t.notation})}function hn(e){return e.isInstance()?mn(e):pn(e)}function gn(e){return e.reduce((e,t)=>{let n=[...t.relations.model,...t.relations.deployment];z(p(n,1),`Edge must have at least one relation`);let r=t.source.$model.$styles.defaults,i=t.source.id,a=t.target.id,{title:o,color:s=r.relationship.color,line:c=r.relationship.line,head:l=r.relationship.arrow,...u}=sn(n.map(e=>e.$relationship)),d=k({id:t.id,parent:t.boundary?.id??null,source:i,target:a,label:o??null,relations:n.map(e=>e.id),color:s,line:c,head:l,...u}),f=e.find(e=>e.source===a&&e.target===i);if(f&&d.label===f.label){f.dir=`both`;let n=f.head??d.head??t.source.$model.$styles.defaults.relationship.arrow;return f.head??=n,f.tail??=n,d.color&&(f.color??=d.color),d.line&&(f.line??=d.line),e}return e.push(d),e},[])}function _n(e,t){let n=an(e.$styles,[...t.final].map(hn));for(let t of n.values()){if(!t.deploymentRef||!t.modelRef||t.children.length>0)continue;let n=e.deployment.element(t.deploymentRef),r=n.isDeploymentNode()&&n.onlyOneInstance();if(!r)continue;t.title===n.name&&(t.title=r.title),t.description??=fn(r)??null,t.technology??=r.technology,c(t.tags)&&(t.tags=[...r.tags]),(!t.links||c(t.links))&&p(r.links,1)&&(t.links=[...r.links]);let i=e.$styles.defaults;t.shape===i.shape&&t.shape!==r.shape&&(t.shape=r.shape,t.notation=null),t.color===i.color&&t.color!==r.color&&(t.color=r.color,t.notation=null),!t.icon&&r.icon&&(t.icon=r.icon)}return n}function vn(e,t){for(let n of e)!je(n)||n.targets.length===0||Gt(n,S(n.targets.map(dn)),t);return t}function yn(e){let t=new at.default(()=>[]);for(let n of e)for(let e of n.relations.model)t.get(e).push(n);let n=new at.default(()=>new Set);for(let[e,a]of t)p(a,2)&&b(a,s(e=>[{group:`$source-${e.source.id}`,conn:e},{group:`$target-${e.target.id}`,conn:e}]),i(oe(`group`)),de(),v(p(2)),r(re(g(oe(`conn`)),dt(`desc`),ee((e,t,n)=>t===0||e.boundary===n[t-1].boundary),r(t=>{n.get(t).add(e)}))));return n}function bn(e){e=ct(e);let t=yn(e);for(let n of e){let{source:e,target:r}=n,i=n.relations.model;if(e.isDeploymentNode()!==r.isDeploymentNode()){let r=e.isDeploymentNode()?e:n.target;z(r.isDeploymentNode());let a=I(i,r.internalModelRelationships());for(let e of a)t.get(n).add(e);continue}if(e.isDeploymentNode()&&r.isDeploymentNode()){let i=F(I(n.relations.model,e.internalModelRelationships()),I(n.relations.model,r.internalModelRelationships()));for(let e of i)t.get(n).add(e)}}return b(t.entries(),Se(([e,t])=>e.update({model:t,deployment:null})),A())}function xn(e){return _t(e,bn(e))}function Sn(e){return b(e,ct,y((t,n)=>{let{source:r,target:i,relations:a}=n;if(r.isInstance()&&i.isInstance())return t;let o=wt.empty();if(r.isDeploymentNode()&&i.isDeploymentNode()){let[e]=cn(i,r,`directed`);e&&(o=a.intersect(e.relations))}for(let t of e)ft(t,n)&&(o=o.union(a.intersect(t.relations)));return o.nonEmpty&&t.push(new ot(r,i,o)),t},[]))}function Cn(e){return _t(e,Sn(e))}var wn=class extends Ht{connectWithExisting(e,t=`both`){let n=this._connections.length,r=()=>this._connections.length>n;if(!P(e)){if(t===`in`||t===`both`)for(let t of this.memory.elements)this.addConnections(cn(t,e,`directed`));return(t===`out`||t===`both`)&&this.addConnections(U(e,this.memory.elements,`directed`)),r()}let i=[...e];if(t===`in`||t===`both`)for(let e of this.memory.elements)this.addConnections(U(e,i,`directed`));if(t===`out`||t===`both`)for(let e of i)this.addConnections(U(e,this.memory.elements,`directed`));return r()}processConnections(e){let t=b(e,xn,Cn);return b(t,r(({source:e,target:t,boundary:n})=>{b(fe([...A(e.ancestors()).reverse(),e],[...A(t.ancestors()).reverse(),t]),ee(([e,t])=>e===t),le(1),r(([r,i])=>{if(e===r&&t===i){this.addImplicit(n);return}r!==e&&r.isDeploymentNode()&&!r.onlyOneInstance()&&this.addImplicit(r),i!==t&&i.isDeploymentNode()&&!i.onlyOneInstance()&&this.addImplicit(i)}))})),t}},Tn=class e extends Bt{static empty(){return new e({elements:new Set,explicits:new Set,final:new Set,connections:[]})}stageInclude(e){return new wn(this,e)}stageExclude(e){return new Wt(this,e)}mutableState(){return{elements:new Set(this.state.elements),explicits:new Set(this.state.explicits),final:new Set(this.state.final),connections:[...this.state.connections]}}update(t){return new e({...this.state,...t})}equals(t){return t instanceof e&&_(this.state,t.state)}diff(e){return{added:{elements:A(T(e.elements,this.elements)),explicits:A(T(e.explicits,this.explicits)),final:A(T(e.final,this.final)),connections:A(_t(e.connections,this.connections))},removed:{elements:A(T(this.elements,e.elements)),explicits:A(T(this.explicits,e.explicits)),final:A(T(this.final,e.final)),connections:_t(this.connections,e.connections)}}}toString(){return[`final:`,...[...this.final].map(e=>` `+e.id),`connections:`,...this.connections.map(e=>` `+e.expression)].join(`
|
|
2
|
+
`)}[yt](e,t,n){return this.toString()}};const En={include:({expr:e,model:t,memory:n,stage:r})=>{let i=O(e.where.condition);return j(Rn(`include`,{expr:e.where.expr,model:t,stage:r,memory:n,where:i}))},exclude:({expr:e,model:t,memory:n,stage:r})=>{let i=O(e.where.condition);return j(Rn(`exclude`,{expr:e.where.expr,model:t,stage:r,memory:n,where:i}))}},Dn={include:({expr:e,model:t,memory:n,stage:r,where:i})=>{let a=[...n.elements];if(L.isWildcard(e.incoming)){for(let e of a){if(e.allOutgoing.isEmpty)continue;let t=K(U(e,[...Un(e)],`directed`),i);r.addConnections(t)}return r}z(L.isDeploymentRef(e.incoming),`Only deployment refs are supported in include`);let o=W(t,e.incoming);for(let e of a){let t=K(U(e,o,`directed`),i);r.addConnections(t)}return r},exclude:({expr:e,model:t,memory:n,stage:r,where:i})=>{if(L.isElementTagExpr(e.incoming)||L.isElementKindExpr(e.incoming))throw Error(`element kind and tag expressions are not supported in exclude`);if(L.isModelRef(e.incoming))return G(kn(t,e.incoming),{stage:r,memory:n},i);if(L.isWildcard(e.incoming))return r;let a=On(W(t,e.incoming)),o=b(n.connections,v(a),K(i));return r.excludeConnections(o),r}};function On(e){return S(e.map(e=>{let t=t=>t===e||R(e,t);return e=>!t(e.source)&&t(e.target)}))}function kn(e,t){let n=un(e,t);return new Set(n.flatMap(e=>[...e.allIncoming]))}const An={include:({expr:e,model:t,memory:n,stage:r,where:i})=>{let a=[...n.elements];if(L.isWildcard(e.outgoing)){for(let e of a)if(!e.allIncoming.isEmpty)for(let t of Un(e)){let n=K(cn(t,e,`directed`),i);r.addConnections(n)}return r}z(L.isDeploymentRef(e.outgoing),`Only deployment refs are supported in include`);let o=W(t,e.outgoing);for(let e of o){let t=K(U(e,a,`directed`),i);r.addConnections(t)}return r},exclude:({expr:e,model:t,memory:n,stage:r,where:i})=>{if(L.isElementTagExpr(e.outgoing)||L.isElementKindExpr(e.outgoing))throw Error(`element kind and tag expressions are not supported in exclude`);if(L.isModelRef(e.outgoing))return G(Mn(t,e.outgoing),{stage:r,memory:n},i);if(L.isWildcard(e.outgoing))return r;let a=jn(W(t,e.outgoing)),o=b(n.connections,v(a),K(i));return r.excludeConnections(o),r}};function jn(e){return S(e.map(e=>{let t=t=>t===e||R(e,t);return e=>t(e.source)&&!t(e.target)}))}function Mn(e,t){let n=un(e,t);return new Set(n.flatMap(e=>[...e.allOutgoing]))}const Nn={include:({expr:{source:e,target:t,isBidirectional:n=!1},model:r,stage:i,where:a})=>{if(L.isElementTagExpr(e)||L.isElementKindExpr(e)||L.isElementTagExpr(t)||L.isElementKindExpr(t))throw Error(`element kind and tag expressions are not supported in include`);z(!L.isModelRef(e),`Invalid source model ref in direct relation`),z(!L.isModelRef(t),`Invalid target model ref in direct relation`);let o=L.isWildcard(e),c=L.isWildcard(t),l=n?`both`:`directed`,u;switch(!0){case o&&c:u=b(ln(r.instances()),K(a),g(e=>(i.addImplicit(e.boundary),e)));break;case!o&&c:{let t=W(r,e),i=jn(t),o=i;if(n){let e=On(t);o=t=>i(t)!==e(t)}u=b(t,s(e=>U(e,Un(e),l)),v(o),K(a));break}case o&&!c:{let e=W(r,t),i=On(e),o=i;if(n){let t=jn(e);o=e=>t(e)!==i(e)}u=b(e,s(e=>[...Un(e)].flatMap(t=>cn(t,e,l))),v(o),K(a));break}default:{z(!o,`Inference failed - source should be a deployment ref`),z(!c,`Inference failed - target should be a deployment ref`);let n=W(r,e),i=W(r,t),d=jn(n),f=On(i);u=b(n,s(e=>U(e,i,l)),v(e=>d(e)&&f(e)),K(a))}}return i.addConnections(u),L.isDeploymentRef(e)&&f(e.selector)&&i.addImplicit(r.element(e.ref.deployment)),L.isDeploymentRef(t)&&f(t.selector)&&i.addImplicit(r.element(t.ref.deployment)),i},exclude:({expr:e,model:t,memory:n,stage:r,where:i})=>{let a=dn(e.target),o=dn(e.source),s;switch(!0){case L.isWildcard(e.source)&&L.isWildcard(e.target):return r.excludeConnections(K(n.connections,i)),r;case L.isModelRef(e.source)&&L.isModelRef(e.target):return s=Pn({source:e.source,target:e.target,expr:e,model:t}),G(s,{stage:r,memory:n},i);case L.isModelRef(e.source)&&L.isWildcard(e.target):return s=Mn(t,e.source),G(s,{stage:r,memory:n},i);case L.isModelRef(e.source):return s=Mn(t,e.source),G(s,{stage:r,memory:n},i,e=>a(e.target));case L.isModelRef(e.target):return s=kn(t,e.target),G(s,{stage:r,memory:n},i,e=>o(e.source));default:let c=t=>o(t.source)&&a(t.target)||e.isBidirectional===!0&&o(t.target)&&a(t.source),l=b(n.connections,v(c),K(i));return l.length===0||r.excludeConnections(l),r}}};function Pn({source:e,target:t,expr:n,model:r}){let i=un(r,e),a=un(r,t),o=n.isBidirectional?`both`:`directed`,s=[];for(let e of i)s.push(...gt(e,a,o));return new Set(s.flatMap(e=>[...e.relations]))}const Fn={include:({expr:e,model:t,memory:n,stage:r,where:i})=>{let a=[...n.elements];if(L.isWildcard(e.inout)){for(let e of a){let t=Bn(U(e,[...Un(e)],`both`),i);r.addConnections(t)}return r}z(L.isDeploymentRef(e.inout),`Only deployment refs are supported in include`);let o=W(t,e.inout);for(let e of a){let t=Bn(U(e,o,`both`),i);r.addConnections(t)}return r},exclude:({expr:e,model:t,memory:n,stage:r,where:i})=>{if(L.isElementTagExpr(e.inout)||L.isElementKindExpr(e.inout))throw Error(`element kind and tag expressions are not supported in exclude`);if(L.isModelRef(e.inout)){let a=un(t,e.inout);return a.length===0?r:G(F(new Set,...a.flatMap(e=>[e.allIncoming,e.allOutgoing])),{stage:r,memory:n},i)}if(L.isWildcard(e.inout))return r;let a=W(t,e.inout),o=On(a),s=jn(a),c=b(n.connections,v(e=>o(e)!==s(e)),K(i));return r.excludeConnections(c),r}},In={include:({expr:e,model:t,memory:n,stage:r})=>{let i=O(e.where.condition);return Rn(`include`,{expr:e.where.expr,model:t,stage:r,memory:n,where:i})},exclude:({expr:e,model:t,memory:n,stage:r})=>{let i=O(e.where.condition);return Rn(`exclude`,{expr:e.where.expr,model:t,stage:r,memory:n,where:i})}},Ln={include:({model:e,stage:t,where:n})=>{let r=[],i;return i=n?b([...e.elements()],q(n)):A(Se(e.roots(),e=>(e.onlyOneInstance()||r.push(...e.children()),e))),t.addExplicit(i),r.length>1?(t.addConnections(ln([...i,...r])),t.connectWithExisting(r)):t.addConnections(ln(i)),t.connectWithExisting(i),t},exclude:({stage:e,memory:t,where:n})=>{let r=b([...t.elements],q(n));return e.exclude(r),e}};function Rn(e,{expr:t,where:n,...r}){switch(!0){case L.isElementTagExpr(t):case L.isElementKindExpr(t):throw Error(`element kind and tag expressions are not supported in deployment view rules`);case Ce.isCustom(t):case L.isCustom(t):case L.isModelRef(t):return;case L.isWhere(t):return En[e]({...r,expr:t,where:n});case Ce.isWhere(t):return In[e]({...r,expr:t,where:n});case L.isDeploymentRef(t):return Wn[e]({...r,expr:t,where:n});case L.isWildcard(t):return Ln[e]({...r,expr:t,where:n});case Ce.isDirect(t):return Nn[e]({...r,expr:t,where:n});case Ce.isInOut(t):return Fn[e]({...r,expr:t,where:n});case Ce.isOutgoing(t):return An[e]({...r,expr:t,where:n});case Ce.isIncoming(t):return Dn[e]({...r,expr:t,where:n});default:w(t)}}function G(e,{stage:t,memory:n},r,i=()=>!0){if(e.size===0)return t;let a=b(n.connections,v(e=>i(e)),v(t=>Ee(t.relations.model,e)),g(t=>t.update({deployment:null,model:I(t.relations.model,e)})),K(r),v(e=>e.nonEmpty()));return a.length===0?t:t.excludeConnections(a)}function zn(e,t){return K(e,t).nonEmpty()}function K(...t){if(t.length===1)return e=>K(e,t[0]);let[n,r]=t;return r===null?n:e(n)?n.map(e=>K(e,r)).filter(e=>e.nonEmpty()):n.update({model:new Set([...n.relations.model.values()].filter(e=>r(Hn(n)(e)))),deployment:new Set([...n.relations.deployment.values()].filter(e=>r(Hn(n)(e))))})}function q(...t){if(t.length===1){let e=t[0];return e==null?e=>e:t=>t.filter(t=>e(Vn(t,t)))}let[n,r]=t;return e(n)?r==null?n:n.filter(e=>r(Vn(e,e))):r?.(Vn(n,n))??!0}function Bn(e,t){return t?b(e,v(e=>zn(e,t))):e}function Vn(e,t){if(St(e)){let n=xt(t)&&Et(t)?t:null;return{kind:e.kind,tags:[...e.tags,...n?.tags??[]],metadata:e.metadata}}if(mt(e))return te(e.element,[`tags`,`kind`,`metadata`]);if(Et(e))return{kind:e.element.kind,tags:[...e.tags,...e.element.tags],metadata:e.metadata};if(Tt(e))return te(e,[`tags`,`kind`,`metadata`]);w(e)}function Hn(e){return t=>({tags:t.tags,kind:t.kind,metadata:t.metadata,source:Vn(t.source,e.source),target:Vn(t.target,e.target)})}function Un(e){let t=new Set;for(let n of e.descendingSiblings())t.add(n);return t}const Wn={include:e=>{let{expr:t,where:n}=e,r=e.model.element(t.ref.deployment);if(Et(r))return q(r,n)&&(e.stage.addExplicit(r),e.stage.connectWithExisting(r)),e.stage;switch(!0){case t.selector===`expanded`:Kn(r,e);break;case t.selector===`children`:Gn(r,e);break;case t.selector===`descendants`:qn(r,e);break;default:q(r,n)&&(e.stage.addExplicit(r),e.stage.connectWithExisting(r))}return e.stage},exclude:({expr:e,stage:t,memory:n,where:r})=>{let i=dn(e),a=b([...n.elements],v(i),q(r));return t.exclude(a),t}};function Gn(e,{stage:t,where:n}){let r=q([...e.children()],n);r.length!==0&&(t.addImplicit(e),t.addConnections(ln(r)),t.connectWithExisting(r),t.addExplicit(r))}function Kn(e,{memory:t,stage:n,where:r}){n.addImplicit(e),n.connectWithExisting(e);let i=q([...e.children()],r),a=!1;for(let e of i)if(U(e,t.elements).length>0){a=!0;break}a&&(n.connectWithExisting(i,`in`),n.addConnections(ln(i)),n.connectWithExisting(i,`out`)),n.addImplicit(i),n.connections.length>0&&n.addExplicit(e)}function qn(e,{stage:t,where:n}){let i=e=>{let r=[];for(let t of e.children())t.isDeploymentNode()&&r.push(...i(t)),q(t,n)&&r.push(t);return t.connectWithExisting(r,`in`),t.addConnections(ln(r)),t.addImplicit(r),r},a=i(e);if(a.length===0)return;t.connectWithExisting(a,`out`);let o=Jn(t);b(a,v(e=>o.has(e)),r(e=>t.addExplicit(e)))}function Jn(e){return b(e.mergedConnections(),xn,Cn,y((e,t)=>(e.add(t.source),e.add(t.target),e),new Set))}var Yn=class e{static for(t){return new e(t)}constructor(e){this.memory=e}step1CleanConnections(e){if(e.connections.length<2)return e;let t=b(e.connections,xn,Cn),n=_t(e.connections,t);if(n.length===0)return e;let r=e.stageExclude({});return r.excludeConnections(n,!0),r.commit()}step2ProcessImplicits(e){let t=F(this.memory.elements,e.elements),n=F(e.final,this.memory.explicits),i=new at.default(()=>new Set);for(let t of e.connections)if(t.boundary)for(let e of t.relations.model)i.get(e).add(t.boundary);for(let[e,r]of i)if(!(r.size<2))for(let e of r)t.delete(e)&&n.add(e);let a=new Set(n),o=e=>{for(let t of a)if(e===t||R(e,t))return!0;return!1};return b(T(t,a),D(e=>e.isDeploymentNode()),A(),Le,r(e=>{let t=[...e.children()].filter(o).length;if(t>=2){n.add(e);return}t===1&&ye(e.siblings(),o)&&n.add(e)})),e.update({final:n})}step3ProcessBoundaries(e){let t=new Set;for(let n of e.connections)n.boundary&&t.add(n.boundary);let n=Ut(e,`final`),r=e.stageExclude({}),i=r=>!(t.has(r)||e.explicits.has(r)||n.hasInOut(r)||n.root.has(r)),a=C([...n.root]);a&&!e.explicits.has(a)&&r.exclude(a);for(let t of e.final){let e=C(n.children(t));e&&!n.hasInOut(e)&&i(t)&&r.exclude(t)}return r.isDirty()?r.commit():e}commit(){let e=this.step1CleanConnections(this.memory),t=this.step2ProcessImplicits(e);return this.step3ProcessBoundaries(t)}};function Xn(e,t){let n=Tn.empty();for(let r of t)if(rt(r)){let t=`include`in r?`include`:`exclude`,i=r.include??r.exclude;for(let r of i){let i=t===`include`?n.stageInclude(r):n.stageExclude(r);i=Rn(t,{expr:r,model:e,stage:i,memory:n,where:null})??i,n=i.commit()}}return Yn.for(n).commit()}function Zn(e,{docUri:t,rules:n,...r}){let i=Xn(e.deployment,n),a=_n(e,i),s=gn(i.connections);Ft(a,s);let c=Rt({nodes:a,edges:s}),l=vn(n,c.nodes),u=o(n,Ve),d=At(l);return zt({...r,[Ae]:`computed`,[nt]:`deployment`,autoLayout:{direction:u?.direction??`TB`,...u?.nodeSep&&{nodeSep:u.nodeSep},...u?.rankSep&&{rankSep:u.rankSep}},edges:c.edges,nodes:g(l,e=>(e.icon===`none`&&delete e.icon,e)),...d.length>0&&{notation:{nodes:d}}})}function Qn(e){return t=>Ge(t)?t.groupRules.flatMap(Qn(e)):rt(t)&&`include`in t?t.include.filter(e):[]}function $n(e,t){let n=e.flatMap(Qn(M.isCustom));if(n.length===0)return t;let r=[...t];for(let{custom:{expr:e,...t}}of n){let{border:n,opacity:i,multiple:o,iconColor:s,iconSize:c,iconPosition:u,padding:d,size:f,textSize:p,...m}=_e(t,l),h=k({border:n,opacity:i,multiple:o,iconColor:s,iconSize:c,iconPosition:u,padding:d,size:f,textSize:p}),g=!a(h),_=!a(m),v=H(e);r.forEach((e,t)=>{Fe(e)||!v(e)||(_&&(e={...e,...m,isCustomized:!0}),g&&(e={...e,isCustomized:!0,style:{...e.style,...h}}),r[t]=e)})}return r}function er(e,t){return e.reduce((e,n)=>{if(et(n)){let r=t.predicates[n.predicateId];return l(r)?e:e.concat(r)}if(Ne(n)){let r=t.styles[n.styleId];return l(r)?e:e.concat(r)}return e.push(n),e},[])}function tr(e,t){return e.reduce((e,n)=>{if(et(n)){let r=t.dynamicPredicates[n.predicateId];return l(r)?e:e.concat(r)}if(Ne(n)){let r=t.styles[n.styleId];return l(r)?e:e.concat(r)}return e.push(n),e},[])}function nr(e,t){let n=new Set;for(let r of t)if(rt(r))for(let t of r.include){let r=H(t);for(let t of e.elements())r(t)&&n.add(t)}return n}const rr=e=>{if(qe(e)){let t=[],n=[];for(let r of e.__parallel)if(Ze(r)){let[e,...i]=r.__series;t.push(e),n.push(...i)}else t.push(r);return[...t,...n]}return Ze(e)?[...e.__series]:e};function ir(e,t){let n=[],r=(...[e,t])=>{if(!n.includes(e)){let r=n.indexOf(t);if(r>0){n.splice(r,0,e);return}else n.push(e)}n.includes(t)||n.push(t)};for(let i of s(t,rr)){let t=e.element(i.source),a=e.element(i.target),o=n.indexOf(t),s=n.indexOf(a);o>=0&&s>=0||(i.isBackward?r(a,t):r(t,a))}return new Set(n)}function ar(e,t,n){let r=ht(e,t,`directed`).flatMap(e=>[...e.relations]).sort(Te);if(!De(r))return{};if(r.length===1){let e=r[0];return k({title:e.title??void 0,kind:e.kind??void 0,tags:e.tags,relations:[e.id],navigateTo:e.$relationship.navigateTo,color:e.$relationship.color,line:e.$relationship.line,technology:e.technology??void 0,description:e.$relationship.description??void 0})}let i=b(r,s(e=>e.tags),ie()),a=p(i,1)?i:void 0,o=g(r,e=>e.id),c=ue(r).$relationship.navigateTo;c===n&&(c=void 0),c||=b(r,s(e=>e.$relationship.navigateTo&&e.$relationship.navigateTo!==n?e.$relationship.navigateTo:[]),ie(),C());let l=b(r,y((e,{title:t,technology:n,$relationship:r})=>(d(t)&&e.title.add(t),d(r.color)&&e.color.add(r.color),d(r.line)&&e.line.add(r.line),d(r.kind)&&e.kind.add(r.kind),d(n)&&e.technology.add(n),d(r.description)&&!e.description.some(_(r.description))&&e.description.push(r.description),e),{kind:new Set,color:new Set,line:new Set,title:new Set,technology:new Set,description:[]}));return k({tags:a??void 0,relations:o,navigateTo:c,kind:C([...l.kind]),title:C([...l.title]),color:C([...l.color]),line:C([...l.line]),technology:C([...l.technology]),description:C(l.description)})}var or=class{steps=[];constructor(e,t){this.model=e,this.view=t}compute(){let{docUri:e,rules:t,steps:n,...r}=this.view,i=tr(t,this.model.globals),a=nr(this.model,i),s=ir(this.model,n),c=b(F(I(a,s),s,a),A(),We),l=c.reduce((e,t,n,r)=>{for(let i=n+1;i<r.length;i++){let n=r[i];if(R(t,n)){e.push(t);break}}return e},[]),u=(e,t,n)=>{if(Ze(e)){for(let r of e.__series)t=u(r,t,n);return t}let r=n?Be(n,t):Be(t),{source:i,target:a,title:o,isBackward:s,navigateTo:f,notation:p,...m}=e,h=this.model.element(i),g=c.indexOf(h);z(g>=0,`Source ${i} not found`);let _=this.model.element(a),v=c.indexOf(_);z(v>=0,`Target ${a} not found`),(l.includes(h)||l.includes(_))&&console.error(`Step ${h.id} -> ${_.id} because it involves a compound`);let{title:ee,relations:te,navigateTo:ne,...y}=ar(h,_,this.view.id),b=d(f)&&f!==this.view.id?f:ne,x=e.kind?this.model.specification.relationships[e.kind]:void 0;return this.steps.push(k({...y,...!e.technology&&!y.technology&&x?.technology&&{technology:x.technology},...!e.color&&!y.color&&x?.color&&{color:x.color},...!e.line&&!y.line&&x?.line&&{line:x.line},...!e.head&&x?.head&&{head:x.head},...!e.tail&&x?.tail&&{tail:x.tail},...m,id:r,source:h,target:_,navigateTo:b,title:o??ee,relations:te??[],isBackward:g>v})),t+1},f=1;for(let e of n){if(qe(e)){let t=1;for(let n of e.__parallel)t=u(n,t,f);f++;continue}f=u(e,f)}let p=an(this.model.$styles,c.map(rn)),m=this.model.$styles.defaults.relationship,h=this.steps.map(({id:e,source:t,target:n,relations:r,title:i,isBackward:a,tags:o,...s})=>{let c=j(p.get(t.id),`Source node ${t.id} not found`),l=j(p.get(n.id),`Target node ${n.id} not found`),u={id:e,parent:Ke(t.id,n.id),source:c.id,target:l.id,label:i??null,relations:r,color:m.color,line:m.line,head:m.arrow,tags:o??[],...s};for(a&&(u.dir=`back`);u.parent&&!p.has(u.parent);)u.parent=Pe(u.parent);c.outEdges.push(u.id),l.inEdges.push(u.id);for(let e of Qe(u.source)){if(e===u.parent)break;p.get(e)?.outEdges.push(u.id)}for(let e of Qe(u.target)){if(e===u.parent)break;p.get(e)?.inEdges.push(u.id)}return u}),_=$n(i,Kt(i,c.map(e=>j(p.get(e.id))))),v=o(i,Ve),ee=At(_);return zt({...r,[nt]:`dynamic`,[Ae]:`computed`,variant:r.variant??`diagram`,autoLayout:{direction:v?.direction??`LR`,...v?.nodeSep&&{nodeSep:v.nodeSep},...v?.rankSep&&{rankSep:v.rankSep}},nodes:g(_,e=>(e.icon===`none`&&delete e.icon,e)),edges:h,...ee.length>0&&{notation:{nodes:ee}}})}};function sr(e,t){return new or(e,t).compute()}function cr(e){switch(!0){case E.isCustom(e):return cr(e.customRelation.expr);case E.isWhere(e):{let t=cr(e.where.expr),n=O(e.where.condition);return e=>t(e)&&n({source:{tags:e.source.tags,kind:e.source.kind,metadata:e.source.metadata},target:{tags:e.target.tags,kind:e.target.kind,metadata:e.target.metadata},...e.tags&&{tags:e.tags},...e.kind&&{kind:e.kind},...e.metadata&&{metadata:e.metadata}})}case E.isDirect(e):{let t=H(e.source),n=H(e.target);return r=>t(r.source)&&n(r.target)||!!e.isBidirectional&&t(r.target)&&n(r.source)}case E.isInOut(e):{let t=H(e.inout);return e=>t(e.source)||t(e.target)}case E.isIncoming(e):{let t=H(e.incoming);return e=>t(e.target)}case E.isOutgoing(e):{let t=H(e.outgoing);return e=>t(e.source)}default:w(e)}}function lr(e,t,n){let r=e.flatMap(Qn(E.isCustom)),i=Array.from(n);if(r.length===0||i.length===0)return i;for(let{customRelation:{expr:e,title:n,description:a,notes:o,...s}}of r){let r=a?{description:$e(a)}:{},c=o?{notes:$e(o)}:{},u=_e(s,l),d=cr(e);i.forEach((e,a)=>{let o,s;for(let n of t)if(n.id===e.source&&(o=n),n.id===e.target&&(s=n),o&&s)break;!o||!s||d({source:o,target:s,...te(e,[`kind`,`tags`])})&&(i[a]={...e,...u,...r,...c,label:n??e.label,isCustomized:!0})})}return i}function ur(e){return b([...e],ct,y((e,t,n,r)=>{let i=kt(r,t),a=F(...i.map(oe(`relations`))),o=I(t.relations,a);if(i.length>0&&(o=F(o,t.directRelations)),Dt(r,t.reversed())&&(o=F(o,t.directRelations)),o.size<t.relations.size){let e=r.some(st(t.source)),n=r.some(st(t.target));e&&(o=F(o,B(D(t.relations,lt(t.source))))),n&&(o=F(o,B(D(t.relations,Ot(t.target)))))}return o.size>0&&e.push(t.update(o)),e},[]))}var dr=class e{static for(t){return new e(t)}constructor(e){this.memory=e}step1CleanConnections(e){if(e.connections.length<2)return e;let t=ur(e.connections);if(t.length===0)return e;let n=e.stageExclude({});return n.excludeConnections(t,!0),n.commit()}step2ProcessImplicits(e){let t=F(this.memory.elements,e.elements),n=F(e.final,this.memory.explicits),i=new Set(n),a=e=>{for(let t of i)if(e===t||R(e,t))return!0;return!1};return b(T(t,i),A(),Le,r(e=>{let t=[...e.children()].filter(a).length;if(t>=2){n.add(e);return}t===1&&ye(e.siblings(),a)&&n.add(e)})),e.update({final:n})}step3ProcessBoundaries(e){let t=new Set;for(let n of e.connections)n.boundary&&n.boundary!==n.source&&n.boundary!==n.target&&t.add(n.boundary);let n=Ut(e,`final`),r=e.stageExclude({}),i=r=>!(t.has(r)||e.explicits.has(r)||n.hasInOut(r)||n.root.has(r)),a=C([...n.root]);a&&!e.explicits.has(a)&&r.exclude(a);for(let t of e.final){let e=C(n.children(t));e&&!n.hasInOut(e)&&i(t)&&r.exclude(t)}return r.isDirty()?r.commit():e}commit(){let e=this.step1CleanConnections(this.memory),t=this.step2ProcessImplicits(e);return this.step3ProcessBoundaries(t)}};const{findConnection:fr,findConnectionsBetween:J,findConnectionsWithin:Y}=Ct;function X(e,t){switch(!0){case M.isElementKindExpr(t):return[...D(e.elements(),e=>t.isEqual===(e.kind===t.elementKind))];case M.isElementTagExpr(t):return[...D(e.elements(),e=>t.isEqual===e.tags.includes(t.elementTag))];case t.selector===`expanded`:{let n=e.element(N.flatten(t.ref));return[n,...n.children()]}case t.selector===`children`:case t.selector===`descendants`:{let n=e.element(N.flatten(t.ref)),r=t.selector===`children`?A(n.children()):A(n.descendants());return r&&r.length>0?r:[n]}case M.isModelRef(t):return[e.element(N.flatten(t.ref))];default:w(t)}}function pr(e,t){if(t.isEmpty()||e.length===0)return e;let n=S(e.map(e=>Me(e))),r=A(D(t.elements,t=>!e.includes(t)&&n(t)));return[...e,...r]}function mr(e,{memory:t,model:n}){let r=X(n,e);return M.isModelRef(e)?e.selector===`descendants`?r:pr(r,t):r}const hr={include:({expr:e,model:t,stage:n,where:r})=>{let i=t.element(N.flatten(e.ref));r(i)&&(n.addExplicit(i),n.connectWithExisting(i));let a=[...i.children()].filter(r),o=[];for(let e of a)n.addImplicit(e),n.connectWithExisting(e)&&o.push(e);return n.addConnections(Y(o)),n},exclude:({expr:e,model:t,stage:n,filterWhere:r})=>{let i=r(X(t,e));return n.exclude(i),n}},gr={include:({expr:e,model:t,stage:n,filterWhere:r})=>{let i=r(X(t,e));if(i.length!==0)return n.addExplicit(i),n.connectWithExisting(i),n.addConnections(Y(i)),n},exclude:({expr:e,model:t,stage:n,filterWhere:r})=>{let i=r(X(t,e));return n.exclude(i),n}},_r={include:({expr:e,model:t,stage:n,filterWhere:r})=>{let i=r(X(t,e));if(i.length!==0)return n.addExplicit(i),n.connectWithExisting(i),n.addConnections(Y(i)),n},exclude:({expr:e,model:t,stage:n,filterWhere:r})=>{let i=r(X(t,e));return n.exclude(i),n}},vr=()=>!0,yr=e=>e;function br(e){return e.reduce((e,t)=>{let n=[...t.relations];z(p(n,1),`Edge must have at least one relation`);let r=t.source.$model.$styles.defaults,i=t.source.id,a=t.target.id,{title:o,color:s=r.relationship.color,line:c=r.relationship.line,head:l=r.relationship.arrow,...u}=sn(n.map(e=>e.$relationship),C(v(n,e=>e.source.id===i&&e.target.id===a))?.$relationship),d=k({id:t.id,parent:t.boundary?.id??null,source:i,target:a,label:o??null,relations:n.map(e=>e.id),color:s,line:c,head:l,...u});return e.push(d),e},[])}function xr(e,t){return an(e.$styles,[...t.final].map(rn),t.groups)}const Z=M.isWildcard,Sr=(e,t)=>e.isAncestorOf(t)||e.isDescendantOf(t),Cr={include:({expr:{source:e,target:t,isBidirectional:n=!1},memory:r,model:i,stage:a,where:o,filterWhere:c})=>{let l=Z(e),u=Z(t),d=[];switch(!0){case l&&u&&r.isEmpty()&&o!==vr:{let e=b(i.relationships(),D(o),A(),g(e=>new vt(e.source,e.target,new Set([e]))));return a.addConnections(e),a}case l&&u&&!r.isEmpty()&&o!==vr:d.push(...Y(r.elements));break;case l&&u:d.push(...Y(i.roots()));break;case!l&&u&&o!==vr:{let t=b(X(i,e),s(e=>b(e,se(pe(n===!0),{onTrue:e=>F(e.allIncoming,e.allOutgoing),onFalse:e=>e.allOutgoing}),D(o),we(),A(),he(t=>t.source===e),([t,n])=>ce(b(t,v(t=>!Sr(e,t.target)),g(t=>new vt(e,t.target,new Set([t])))),b(n,v(t=>!Sr(e,t.source)),g(t=>new vt(t.source,e,new Set([t]))))))));return a.addConnections(t),a}case!l&&u:{let[t,a]=wr(e,{memory:r,model:i}),o=n?`both`:`directed`;for(let e of t)d.push(...J(e,a,o));break}case l&&!u&&o!==vr:{let e=b(X(i,t),s(e=>b(e,se(pe(n===!0),{onTrue:e=>F(e.allIncoming,e.allOutgoing),onFalse:e=>e.allIncoming}),D(o),A(),he(t=>t.target===e),([t,n])=>ce(b(n,v(t=>!Sr(e,t.target)),g(t=>new vt(e,t.target,new Set([t])))),b(t,v(t=>!Sr(e,t.source)),g(t=>new vt(t.source,e,new Set([t]))))))));return a.addConnections(e),a}case l&&!u:{let[e,a]=wr(t,{memory:r,model:i}),o=n?`both`:`directed`;for(let t of a)d.push(...J(t,e,o));break}default:{z(!Z(e),`Inference failed - source must be not a wildcard`),z(!Z(t),`Inference failed - target must be not a wildcard`);let a=mr(e,{memory:r,model:i}),o=mr(t,{memory:r,model:i}),s=n?`both`:`directed`;for(let e of a)d.push(...J(e,o,s))}}return a.addConnections(c(d)),a},exclude:({expr:{source:e,target:t,isBidirectional:n},model:r,memory:i,stage:a,where:o})=>{let c=Z(e),l=Z(t),u;switch(!0){case c&&l:u=b(i.connections,s(re(oe(`relations`),D(o),A())),B());break;case!c&&l:u=b(X(r,e),s(e=>b(e,se(pe(n===!0),{onTrue:e=>F(e.allIncoming,e.allOutgoing),onFalse:e=>e.allOutgoing}),D(o),A())),B());break;case c&&!l:u=b(X(r,t),s(e=>b(e,se(pe(n===!0),{onTrue:e=>F(e.allIncoming,e.allOutgoing),onFalse:e=>e.allIncoming}),D(o),A())),B());break;default:{z(!Z(e),`Inference failed - source must be not a wildcard`),z(!Z(t),`Inference failed - target must be not a wildcard`);let i=X(r,e),a=X(r,t),s=new Set;for(let e of i)for(let t of a)He(e,t)||(s=F(s,I(e.allOutgoing,t.allIncoming),n?I(t.allOutgoing,e.allIncoming):new Set));u=B(D(s,o))}}return a.excludeRelations(u),a}};function wr(e,{memory:t,model:n}){let r=X(n,e);if(!p(r,1))return[[],[]];if(M.isModelRef(e)){let i=A(n.element(N.flatten(e.ref)).ascendingSiblings());return[pr(r,t),pr(i,t)]}return[r,b(r,g(e=>e.ascendingSiblings()),xe(),we(),A(),e=>pr(e,t))]}const Tr={include:({expr:e,scope:t,model:n,memory:r,stage:i,filterWhere:a})=>{let o=e.incoming,s=[];if(M.isWildcard(o)){if(!t)return;for(let e of t.ascendingSiblings())s.push(...fr(e,t,`directed`))}else{let e=mr(o,{memory:r,model:n}),t=[...r.elements];t.length===0&&t.push(...ie(e.flatMap(e=>[...e.ascendingSiblings()])));let i=Er(n,o);for(let n of t)s.push(...J(n,e,`directed`).filter(i))}return i.addConnections(a(s)),i},exclude:({expr:{incoming:e},model:t,scope:n,stage:r,where:i})=>{let a=[];if(M.isWildcard(e)){if(!n)return;a.push(...n.allIncoming)}else{let n=X(t,e);a.push(...n.flatMap(e=>[...e.allIncoming]))}return r.excludeRelations(new Set(a.filter(i))),r}};function Er(e,t){switch(!0){case M.isElementKindExpr(t):case M.isElementTagExpr(t):{let e=H(t);return t=>e(t.target)}case M.isModelRef(t)&&t.selector===`children`:{let n=N.flatten(t.ref);return S([...e.children(n)].map(e=>V.isIncoming(e.id)))}case M.isModelRef(t)&&t.selector===`descendants`:{let n=N.flatten(t.ref);return S([V.isInside(n),...[...e.children(n)].map(e=>V.isIncoming(e.id))])}case M.isModelRef(t)&&t.selector===`expanded`:{let e=N.flatten(t.ref);return S([V.isIncoming(e),V.isInside(e)])}case M.isModelRef(t):{let e=N.flatten(t.ref);return V.isIncoming(e)}default:w(t)}}const Dr={include:({expr:{inout:e},scope:t,model:n,memory:r,stage:i,filterWhere:a})=>{let o=[];if(M.isWildcard(e)){if(!t)return;o.push(...J(t,t.ascendingSiblings()))}else{let t=mr(e,{memory:r,model:n}),i=[...r.elements];i.length===0&&(i=ie(t.flatMap(e=>A(e.ascendingSiblings()))));for(let e of t)o.push(...J(e,i))}return i.addConnections(a(o)),i},exclude:({expr:{inout:e},model:t,scope:n,stage:r,where:i})=>{let a=[];if(M.isWildcard(e)){if(!n)return;a.push(...n.allOutgoing),a.push(...n.allIncoming)}else{let n=X(t,e);a.push(...n.flatMap(e=>[...e.allOutgoing,...e.allIncoming]))}return r.excludeRelations(B(a.filter(i))),r}},Or={include:({expr:e,scope:t,model:n,memory:r,stage:i,filterWhere:a})=>{let o=e.outgoing,s=[];if(M.isWildcard(o)){if(!t)return;s.push(...J(t,t.ascendingSiblings(),`directed`))}else{let e=mr(o,{memory:r,model:n}),t=[...r.elements];t.length===0&&t.push(...ie(e.flatMap(e=>[...e.ascendingSiblings()])));let i=kr(n,o);for(let n of e)s.push(...J(n,t,`directed`).filter(i))}return i.addConnections(a(s)),i},exclude:({expr:{outgoing:e},model:t,scope:n,stage:r,where:i})=>{let a=[];if(M.isWildcard(e)){if(!n)return;a.push(...n.allOutgoing)}else{let n=X(t,e);a.push(...n.flatMap(e=>[...e.allOutgoing]))}return r.excludeRelations(B(a.filter(i))),r}};function kr(e,t){switch(!0){case M.isElementKindExpr(t):case M.isElementTagExpr(t):{let e=H(t);return t=>e(t.source)}case M.isModelRef(t)&&t.selector===`children`:{let n=N.flatten(t.ref);return S([...e.children(n)].map(e=>V.isOutgoing(e.id)))}case M.isModelRef(t)&&t.selector===`descendants`:{let n=N.flatten(t.ref);return S([V.isInside(n),...[...e.children(n)].map(e=>V.isOutgoing(e.id))])}case M.isModelRef(t)&&t.selector===`expanded`:{let e=N.flatten(t.ref);return S([V.isOutgoing(e),V.isInside(e)])}case M.isModelRef(t):{let e=N.flatten(t.ref);return V.isOutgoing(e)}default:w(t)}}const Ar={include:({scope:e,model:t,stage:n,memory:r,where:i})=>{if(!e){let e=i===vr?[...t.roots()]:A(D(t.elements(),i));if(e.length===0)return;let[r,a]=he(e,e=>!e.imported);return n.addExplicit(r),n.addImplicit(a),n.addConnections(Y(e)),n.connectWithExisting(e),n}let a=A(D(e.children(),i)),o=a.length>0;if(!o){let t=J(e,e.siblings()),r=e.parent;t.length===0&&r&&n.addExplicit(r),a.push(e)}n.addExplicit(e);let s=B([...r.elements,...e.descendingSiblings()]);for(let e of s)n.addConnections(J(e,a,`directed`));o&&(n.addConnections(Y(a)),n.addExplicit(a));for(let e of a)n.addConnections(J(e,s,`directed`));return n},exclude:({scope:e,memory:t,stage:n,where:r})=>r===vr?e?(n.exclude([e,...e.descendants()]),n):en.empty(t.scope).stageExclude(n.expression):(n.exclude(v([...t.elements],r)),n)};function jr(e,t,n){switch(!0){case M.isCustom(e):return t===`include`?jr(e.custom.expr,t,n):n.stage;case M.isWhere(e):{let r=O(e.where.condition),i=e=>v(e,r);return jr(e.where.expr,t,{...n,where:r,filterWhere:i})}case M.isModelRef(e)&&e.selector===`expanded`:return hr[t]({...n,expr:e})??n.stage;case M.isWildcard(e):return Ar[t]({...n,expr:e})??n.stage;case M.isElementKindExpr(e):case M.isElementTagExpr(e):return gr[t]({...n,expr:e})??n.stage;case M.isModelRef(e):return _r[t]({...n,expr:e})??n.stage;default:w(e)}}function Mr(e,t,n){switch(!0){case E.isCustom(e):return t===`include`?Mr(e.customRelation.expr,t,n):n.stage;case E.isWhere(e):{let r=O(e.where.condition),i=e=>new Set(v([...e],r)),a=e=>b(e,g(e=>new vt(e.source,e.target,i(e.relations))),v(e=>e.nonEmpty()));return Mr(e.where.expr,t,{...n,where:r,filterWhere:a})}case E.isInOut(e):return Dr[t]({...n,expr:e})??n.stage;case E.isDirect(e):return Cr[t]({...n,expr:e})??n.stage;case E.isOutgoing(e):return Or[t]({...n,expr:e})??n.stage;case E.isIncoming(e):return Tr[t]({...n,expr:e})??n.stage;default:w(e)}}function Nr(e,t,n){let r={model:e,scope:t.scope,where:vr,filterWhere:yr};for(let i of n){if(Ge(i)){t=Nr(e,tn.enter(t,i),i.groupRules),z(t instanceof tn,`processPredicates must return ActiveGroupMemory`),t=t.leave();continue}if(rt(i)){let e=`include`in i?`include`:`exclude`,n=i.include??i.exclude;for(let i of n){let n=e===`include`?t.stageInclude(i):t.stageExclude(i);switch(!0){case ke.isFqnExpr(i):n=jr(i,e,{...r,stage:n,memory:t})??n;break;case ke.isRelationExpr(i):n=Mr(i,e,{...r,stage:n,memory:t})??n;break;default:w(i)}t=n.commit()}}}return t}function Pr(e,t,n){return t=Nr(e,t,n),dr.for(t).commit()}function Fr(e,{docUri:t,rules:n,...r}){let i=er(n,e.globals),a=r.viewOf?e.asComputed.element(r.viewOf):null,s=Pr(e,en.empty(a),i);s.isEmpty()&&a&&(s=s.update({final:new Set([a])})),s=Lr(s);let c=xr(e,s),l=br(s.connections);Ft(c,l);let u=Rt({nodes:c,edges:l}),d=$n(i,Kt(i,u.nodes)),f=o(i,Ve),p=At(d),m=Ir(i,d);return zt({...r,_stage:`computed`,autoLayout:{direction:f?.direction??`TB`,...f?.nodeSep&&{nodeSep:f.nodeSep},...f?.rankSep&&{rankSep:f.rankSep}},edges:lr(i,d,u.edges),nodes:g(d,e=>(e.icon===`none`&&delete e.icon,e)),...p.length>0&&{notation:{nodes:p}},...m.length>0&&{ranks:m}})}function Ir(e,t){let n=[];for(let r of e){if(!Ye(r)||r.targets.length===0)continue;let e=b(t,v(S(r.targets.map(H))),g(e=>e.id));p(e,1)&&n.push({type:r.rank,nodes:e})}return n}function Lr(e){if(e.groups.length===0)return e;let t=new at.default(()=>new Set),n=new Map,i=e=>{for(let r of e.ancestors()){let i=n.get(r);if(i)return n.set(e,i),t.get(i).add(e),!0}return!1},a=e=>{for(let r of e.descendants(`asc`)){let i=n.get(r);if(i)return n.set(e,i),t.get(i).add(e),!0}return!1};if(b(We([...e.explicitFirstSeenIn.keys()]),r(r=>{if(!i(r)){let i=j(e.explicitFirstSeenIn.get(r));n.set(r,i),t.get(i).add(r)}})),b(We([...e.lastSeenIn.keys()]),v(e=>!n.has(e)),r(r=>{if(i(r)||a(r))return;let o=j(e.lastSeenIn.get(r));n.set(r,o),t.get(o).add(r)})),t.size===0)return e;let o=e.groups.map(e=>{let n=t.get(e.id);return n?e.update(n):e});return e.update({groups:o})}function Rr(e,t){switch(!0){case Re(e):return Fr(t,e);case Je(e):return Zn(t,e);case ze(e):return sr(t,e);default:w(e)}}function zr(e,t){try{return{isSuccess:!0,view:Rr(e,t)}}catch(e){return{isSuccess:!1,error:e instanceof Error?e:Error(`Unknown error: ${e}`),view:void 0}}}function Br(e){let n=ut.create(e),{views:r,_stage:i,...a}=e,o=t(r,e=>Rr(e,n));return{[Ae]:`computed`,...a,views:o}}function Vr(e){return ut.create(Br(e))}const Q=e=>e;function $(e){if(!ae(e))return e;if(e===`*`)return Q({wildcard:!0});if(e.startsWith(`->`))return e.endsWith(`->`)?Q({inout:$(e.replace(/->/g,``).trim())}):Q({incoming:$(e.replace(`-> `,``))});if(e.endsWith(` ->`))return Q({outgoing:$(e.replace(` ->`,``))});if(e.includes(` <-> `)){let[t,n]=e.split(` <-> `);return Q({source:$(t),target:$(n),isBidirectional:!0})}if(e.includes(` -> `)){let[t,n]=e.split(` -> `);return Q({source:$(t),target:$(n)})}return e.endsWith(`._`)?Q({ref:{model:e.replace(`._`,``)},selector:`expanded`}):e.endsWith(`.**`)?Q({ref:{model:e.replace(`.**`,``)},selector:`descendants`}):e.endsWith(`.*`)?Q({ref:{model:e.replace(`.*`,``)},selector:`children`}):Q({ref:{model:e}})}export{Rr as a,Ft as c,zr as i,Vr as n,Fr as o,Br as r,Rt as s,$ as t};
|
|
@@ -2,6 +2,7 @@ import { $r as RelationKind, Ai as RelationId, C as LayoutedView, Ci as GroupEle
|
|
|
2
2
|
import { i as BBox } from "./index2.mjs";
|
|
3
3
|
import { i as LikeC4Styles } from "./index3.mjs";
|
|
4
4
|
import { o as DefaultMap } from "./libs/mnemonist.mjs";
|
|
5
|
+
import "./mnemonist.mjs";
|
|
5
6
|
import { IsAny, SetRequired, Tagged } from "type-fest";
|
|
6
7
|
|
|
7
8
|
//#region src/model/RelationModel.d.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{O as e,T as t,X as n,et as r,l as i,m as a,nt as o,p as s}from"./libs/remeda.mjs";import{I as c
|
|
1
|
+
import{O as e,T as t,X as n,et as r,l as i,m as a,nt as o,p as s}from"./libs/remeda.mjs";import{I as c,Sn as l,hn as u}from"./types.mjs";function d(d){let f=[],p=[];for(let[t,r]of n(d))e(r.color)?f.push({tag:t,spec:{color:r.color}}):p.push(t);return r(p,i(u),t((e,t)=>({tag:e,spec:{color:l(c[t%c.length])}})),o(f),i((e,t)=>u(e.tag,t.tag)),s(a(`tag`),a(`spec`)))}export{d as t};
|
|
@@ -109,10 +109,10 @@ declare class LikeC4Styles {
|
|
|
109
109
|
readonly size?: ShapeSize;
|
|
110
110
|
readonly padding?: SpacingSize;
|
|
111
111
|
readonly textSize?: TextSize;
|
|
112
|
-
}, "size" | "
|
|
112
|
+
}, "size" | "padding" | "iconSize" | "textSize"> & Required<{
|
|
113
113
|
readonly size?: ShapeSize;
|
|
114
|
-
readonly iconSize?: IconSize;
|
|
115
114
|
readonly padding?: SpacingSize;
|
|
115
|
+
readonly iconSize?: IconSize;
|
|
116
116
|
readonly textSize?: TextSize;
|
|
117
117
|
}>;
|
|
118
118
|
values: {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { aa as NonEmptyArray, ca as ReorderedArray, ea as IterableContainer, ta as IteratorLike, xi as Fqn } from "./index.mjs";
|
|
2
|
+
import "./mnemonist.mjs";
|
|
2
3
|
|
|
3
4
|
//#region src/utils/invariant.d.ts
|
|
4
5
|
declare function nonNullable<T>(value: T, message?: string | (() => string)): NonNullable<T>;
|
|
@@ -21,6 +22,9 @@ declare function sortNatural<T extends IterableContainer<string>>(elements: T):
|
|
|
21
22
|
* Compares two strings lexicographically first, then hierarchically based on their depth.\
|
|
22
23
|
* From parent nodes to leaves
|
|
23
24
|
*
|
|
25
|
+
* @param separator - The separator to use for splitting the strings
|
|
26
|
+
* @param deepestFirst - If true, deeper paths come first (reverse order)
|
|
27
|
+
*
|
|
24
28
|
* @example
|
|
25
29
|
* const lines = [
|
|
26
30
|
* 'b.c',
|