4 lines
11 KiB
JavaScript
Raw Permalink Normal View History

2026-05-31 13:21:13 +02:00
import{a as X}from"./chunk-JQRUD6KW.mjs";import{a as K}from"./chunk-2T2R6R2M.mjs";import"./chunk-UP6H54XL.mjs";import"./chunk-UXSXWOXI.mjs";import"./chunk-C62D2QBJ.mjs";import"./chunk-CEXFNPSA.mjs";import"./chunk-RERM46MO.mjs";import"./chunk-J5EP6P6S.mjs";import"./chunk-RLI5ZMPA.mjs";import"./chunk-2UTLFMKG.mjs";import"./chunk-RKZBBQEN.mjs";import{i as y,l as L,o as V}from"./chunk-QA3QBVWF.mjs";import"./chunk-KNLZD3CH.mjs";import{A as v,S as A,T as $,U as O,V as W,W as H,X as N,Y as j,_ as F,ca as I,j as T,t as w}from"./chunk-67TQ5CYL.mjs";import{b as x,h as U}from"./chunk-7W6UQGC5.mjs";import"./chunk-KGYTTC2M.mjs";import{f as G}from"./chunk-4R4BOZG6.mjs";import{a}from"./chunk-AQ6EADP3.mjs";var S="position frame",B="frame positioned",P="position relation",M="relation positioned";var Z=a(function(e){x.debug("options str",e)},"setOptions"),ee=a(function(){return{}},"getOptions"),te=a(function(){ne(),A()},"clear");function ne(){R={}}a(ne,"reset");var ie=T.eventmodeling,oe=a(()=>V({...ie,...w().eventmodeling}),"getConfig"),R={};function re(){let e=se,{ast:n}=R,t=_();if(!n)throw new Error("No data for EventModel");return n.frames.forEach((i,o)=>{let r=xe(i,n.dataEntities,t);e=C(e,{$kind:S,index:o,frame:i,textProps:r});let m;we(i)?(x.debug("source frame",i.sourceFrames),m=n.frames.filter(d=>i.sourceFrames.some(l=>l.$refText===d.name)),m.forEach(d=>{e=C(e,{$kind:P,index:o,frame:i,sourceFrame:d})})):e=C(e,{$kind:P,index:o,frame:i})}),e={...e,sortedSwimlanesArray:z(e.swimlanes)},e}a(re,"getState");function ae(e){R.ast=e}a(ae,"setAst");var s={swimlaneMinHeight:70,swimlanePadding:15,swimlaneGap:10,boxPadding:10,boxOverlap:90,boxDefaultY:0,boxMinWidth:80,boxMaxWidth:450,boxMinHeight:80,boxMaxHeight:750,contentStartX:250,textMaxWidth:430,boxTextFontWeight:"bold",boxTextPadding:10,swimlaneTextFontWeight:"bold",labelUiAutomation:"UI/Automation",labelUiAutomationPrefix:"UI/A: ",labelCommandReadModel:"Command/Read Model",labelCommandReadModelPrefix:"C/RM: ",labelEvents:"Events",labelEventsPrefix:"Stream: "};function _(){return s}a(_,"getDiagramProps");var se={boxes:[],swimlanes:{},relations:[],maxR:0,sortedSwimlanesArray:[]};function me(e){let n=e.split(".");if(n.length===2)return n[0]}a(me,"extractNamespace");function de(e){let n=e.split(".");return n.length===2?n[1]:e}a(de,"extractName");function le(e,n){if(!(!n||n.length===0))return Object.values(e).find(t=>t.namespace===n)}a(le,"findSwimlaneByNamespace");function D(e,n,t){return Math.max(n,...Object.keys(e).filter(i=>{let o=Number.parseInt(i);return o>n&&o<t}).map(i=>Number.parseInt(i)))+1}a(D,"findNextAvailableIndex");function ce(e,n){let t=me(e.entityIdentifier),i=le(n,t);switch(e.modelEntityType){case"ui":case"pcr":case"processor":return i?{index:i.index,label:i.namespace||s.labelUiAutomation}:t?{index:D(n,0,100),label:s.labelUiAutomationPrefix+t}:{index:0,label:s.labelUiAutomation};case"rmo":case"readmodel":case"cmd":case"command":return i?{index:i.index,label:i.namespace||s.labelCommandReadModel}:t?{index:D(n,100,200),label:s.labelCommandReadModelPrefix+t}:{index:100,label:s.labelCommandReadModel};case"evt":case"event":default:return i?{index:i.index,label:i.namespace||s.labelEvents}:t?{index:D(n,200,300),label:s.labelEventsPrefix+t}:{index:200,label:s.labelEvents}}}a(ce,"calculateSwimlaneProps");function ue(e){let{themeVariables:n}=w();switch(e.modelEntityType){case"ui":return{fill:n.emUiFill??"white",stroke:n.emUiStroke??"#dbdada"};case"pcr":case"processor":return{fill:n.emProcessorFill??"#edb3f6",stroke:n.emProcessorStroke??"#b88cbf"};case"rmo":case"readmodel":return{fill:n.emReadModelFill??"#d3f1a2",stroke:n.emReadModelStroke??"#a3b732"};case"cmd":case"command":return{fill:n.emCommandFill??"#bcd6fe",stroke:n.emCommandStroke??"#679ac3"};case"evt":case"event":return{fill:n.emEventFill??"#ffb778",stroke:n.emEventStroke??"#c19a0f"};default:return{fill:"red",stroke:"black"}}}a(ue,"calculateEntityVisualProps");function xe(e,n,t){let i=w(),o=v(de(e.entityIdentifier)??"",i),r,m={fontSize:16,fontWeight:700,fontFamily:'"trebuchet ms", verdana, arial, sans-serif',joinWith:"<br/>"},l=`
`)+2),r=r.substring(0,r.lastIndexOf("}")-1),r=v(r,i),r=y(r,t.textMaxWidth,m),r=r.replaceAll(" ","&nbsp;"),r+="<br/>")}let c=r!==void 0;c&&(l+=`<br/><br/><code style="text-align: left; display: block;max-width:${t.textMaxWidth}px">${r}</code>`);let f={fontSize:m.fontSize,fontWeight:m.fontWeight,fontFamily:m.fontFamily},u=L(l,f),g=c?u.width/3:u.width,p={content:l,width:g,height:u.height};return x.debug(`[${e.name}] ${e.entityIdentifier} text`,p),p}a(xe,"calculateTextProps");function fe(e,n){let t=n,i=ue(t.frame),o={width:t.textProps.width+2*s.boxTextPadding,height:t.textProps.height+2*s.boxTextPadding};return[{$kind:B,frame:t.frame,index:t.index,visual:i,dimension:o,textProps:t.textProps}]}a(fe,"decidePositionFrame");function pe(e,n,t){return n===void 0?s.contentStartX:n.index===e.index&&e.r?e.r+s.boxPadding:t===void 0?s.contentStartX:t.r-s.boxOverlap+s.boxPadding}a(pe,"calculateX");function ge(e,n){let t=[...e.map(i=>i.r),n];return Math.max(...t)}a(ge,"calculateMaxRight");function z(e){return Object.values(e).sort((n,t)=>n.index-t.index)}a(z,"sortedSwimlanesArray");function be(e,n){let t=n,i=ce(t.frame,e.swimlanes),o;i.index in e.swimlanes?o=e.swimlanes[i.index]:o={index:i.index,label:i.label,r:0,y:i.index*s.swimlaneMinHeight+s.swimlaneGap,height:s.swimlaneMinHeight,maxHeight:s.swimlaneMinHeight};let r=e.boxes.length>0?e.boxes[e.boxes.length-1]:void 0,m=e.previousSwimlaneNumber!==void 0?e.swimlanes[e.previousSwimlaneNumber]:void 0,d={width:Math.max(s.boxMinWidth,Math.min(s.boxMaxWidth,t.dimension.width))+2*s.boxPadding,height:Math.max(s.boxMinHeight,Math.min(s.boxMaxHeight,t.dimension.height))+2*s.boxPadding},l=pe(o,m,r),c=l+d.width+s.boxPadding,f=ge(Object.values(e.swimlanes),c);o.r=l+d.width,o.maxHeight=Math.max(o.maxHeight,d.height),o.height=Math.max(s.swimlaneMinHeight,o.maxHeight)+2*s.swimlanePadding;let u={x:l,y:s.swimlanePadding+o.y,r:c,dimension:d,leftSibling:!1,swimlane:o,visual:t.visual,text:t.textProps.content,frame:t.frame,index:t.index},g={...e,boxes:[...e.boxes,u],swimlanes:{...e.swimlanes,[`${o.index}`]:o},previousSwimlaneNumber:i.index,previousFrame:t.frame,maxR:f},p=z(g.swimlanes);p.length>0&&(p[0].y=0);for(let b=1;b<p.length;b++){let E=p[b],k=p[b-1];E.y=k.y+k.height+s.swimlaneGap}return g}a(be,"evolveFramePositioned");function he(e,n){return e===0&&n.sourceFrames.length===0}a(he,"isFirstFrame");function we(e){return e.sourceFrames!==void 0&&e.sourceFrames!==null&&e.sourceFrames.length>0}a(we,"hasSourceFrame");function Y(e,n){if(n!=null)return e.find(t=>t.frame.name===n.name)}a(Y,"findBoxByFrame");function ve(e,n,t){if(!(t<0))for(let i=t;i>=0;i--){let o=e[i];if(o.swimlane.index!==n)return o}}a(ve,"findBoxByLineIndex");function ye(e,n){let t=n;if(G(t.frame)||he(t.index,t.frame))return[];let i=Y(e.boxes,t.frame);if(i===void 0)throw new Error(`Target box not found for frame ${t.frame.name}`);let o;return t.sourceFrame?o=Y(e.boxes,t.sourceFrame):o=ve(e.boxes,i.swimlane.index,t.index-1),o===void 0?[]:[{$kind:M,frame:t.frame,index:t.index,sourceBox:o,targetBox:i}]}a(ye,"decidePositionRelation");function Pe(e,n){let t=n,i={visual:{fill:"none",stroke:"#000"},source:{x:t.sourceBox.x,y:t.sourceBox.y},target:{x:t.targetBox.x,y:t.targetBox.y},sourceBox:t.sourceBox,targetBox:t.targetBox};return{...e,relations:[...e.relations,i]}}a(Pe,"evolveRelationPositioned");var Ee={[S]:fe,[P]:ye},Fe={[B]:be,[M]:Pe};function Se(e,n){let t=Ee[n.$kind];if(t==null)return[];let i=t(e,n);return x.debug("decided events",i),i}a(Se,"decide");function Be(e,n){let t=n.reduce((i,o)=>{let r=Fe[o.$kind];return r==null?i:r(i,o)},e);return x.debug("evolve events",{state:e,newState:t,events:n}),t}a(Be,"evolve");function C(e,n){let t=Se(e,n);return Be(e,t)}a(C,"dispatch");var h={getConfig:oe,setOptions:Z,getOptions:ee,clear:te,setAccTitle:$,getAccTitle:O,getAccDescription:H,setAccDescription:W,setDiagramTitle:N,getDiagramTitle:j,setAst:ae,getDiagramProps:_,getState:re};var q={parse:a(async e=>{let n=await K("eventmodeling",e);x.debug(n),h.setAst(n),X(n,h)},"parse")};var Me=F(),De=Me?.eventmodeling;function Ce(e,n){return t=>{let i=t.swimlane.y+n.s
`,"id:",n,t),!De)throw new Error("EventModeling config not found");let o=i.db,{themeVariables:r,eventmodeling:m}=F(),d=U(`[id="${n}"]`),l=o.getDiagramProps(),c=o.getState(),f=`em-arrowhead-${n}`,u=r.emArrowhead??"#000000";c.sortedSwimlanesArray.forEach(Te(d,c.maxR,l,r)),c.boxes.forEach(Ce(d,l)),c.relations.forEach(ke(d,l,f,r)),d.append("defs").append("marker").attr("id",f).attr("markerWidth","10").attr("markerHeight","7").attr("refX","10").attr("refY","3.5").attr("orient","auto").append("polygon").attr("points","0 0, 10 3.5, 0 7").attr("fill",u),I(void 0,d,m?.padding??30,m?.useMaxWidth)},"draw"),J={draw:Ae};var $e=a(e=>"","getStyles"),Q=$e;var lt={parser:q,db:h,renderer:J,styles:Q};export{lt as diagram};