livebook/static/assets/stateDiagram-v2-978d1189-5DTBHK2L.js
2023-05-27 07:05:48 +00:00

2 lines
4.8 KiB
JavaScript

import{a as V,b as Y,c as W,d as z,e as R,f as q,g as w,h as K}from"./chunk-I5V7KK6N.js";import{a as U}from"./chunk-DV6EV644.js";import"./chunk-DJBS3ZP5.js";import"./chunk-2VAHKEM3.js";import"./chunk-GT6PWSKZ.js";import{a as H}from"./chunk-N4T7OBQH.js";import"./chunk-I4NDSNS6.js";import{D as ct,Na as Q,g as it,ha as l,l as y,la as g,ra as h,sa as J}from"./chunk-CRHZHETQ.js";import"./chunk-HA3AQNT4.js";import{h as m}from"./chunk-2YVZDWG7.js";var mt=m(it(),1),Ht=m(ct(),1);var x="rect",G="rectWithTitle",rt="start",lt="end",at="divider",dt="roundedWithTitle",Et="note",pt="noteGroup",_="statediagram",St="state",Tt=`${_}-${St}`,Z="transition",_t="note",ut="note-edge",bt=`${Z} ${ut}`,ft=`${_}-${_t}`,Dt="cluster",ht=`${_}-${Dt}`,At="cluster-alt",yt=`${_}-${At}`,F="parent",j="note",gt="state",P="----",xt=`${P}${j}`,X=`${P}${F}`,I="fill:none",tt="fill: #333",et="c",ot="text",st="normal",$={},E=0,$t=function(t){let n=Object.keys(t);for(let e of n)t[e]},Ct=function(t,n){l.trace("Extracting classes"),n.db.clear();try{return n.parser.parse(t),n.db.extract(n.db.getRootDocV2()),n.db.getClasses()}catch(e){return e}};function Rt(t){return t==null?"":t.classes?t.classes.join(" "):""}function N(t="",n=0,e="",i=P){let c=e!==null&&e.length>0?`${i}${e}`:"";return`${gt}-${t}${c}-${n}`}var A=(t,n,e,i,c,r)=>{let o=e.id,u=Rt(i[o]);if(o!=="root"){let S=x;e.start===!0&&(S=rt),e.start===!1&&(S=lt),e.type!==R&&(S=e.type),$[o]||($[o]={id:o,shape:S,description:g.sanitizeText(o,h()),classes:`${u} ${Tt}`});let s=$[o];e.description&&(Array.isArray(s.description)?(s.shape=G,s.description.push(e.description)):s.description.length>0?(s.shape=G,s.description===o?s.description=[e.description]:s.description=[s.description,e.description]):(s.shape=x,s.description=e.description),s.description=g.sanitizeTextOrArray(s.description,h())),s.description.length===1&&s.shape===G&&(s.shape=x),!s.type&&e.doc&&(l.info("Setting cluster for ",o,L(e)),s.type="group",s.dir=L(e),s.shape=e.type===q?at:dt,s.classes=s.classes+" "+ht+" "+(r?yt:""));let T={labelStyle:"",shape:s.shape,labelText:s.description,classes:s.classes,style:"",id:o,dir:s.dir,domId:N(o,E),type:s.type,padding:15};if(T.centerLabel=!0,e.note){let a={labelStyle:"",shape:Et,labelText:e.note.text,classes:ft,style:"",id:o+xt+"-"+E,domId:N(o,E,j),type:s.type,padding:15},d={labelStyle:"",shape:pt,labelText:e.note.text,classes:s.classes,style:"",id:o+X,domId:N(o,E,F),type:"group",padding:0};E++;let b=o+X;t.setNode(b,d),t.setNode(a.id,a),t.setNode(o,T),t.setParent(o,b),t.setParent(a.id,b);let p=o,f=a.id;e.note.position==="left of"&&(p=a.id,f=o),t.setEdge(p,f,{arrowhead:"none",arrowType:"",style:I,labelStyle:"",classes:bt,arrowheadStyle:tt,labelpos:et,labelType:ot,thickness:st})}else t.setNode(o,T)}n&&n.id!=="root"&&(l.trace("Setting node ",o," to be child of its parent ",n.id),t.setParent(o,n.id)),e.doc&&(l.trace("Adding nodes children "),wt(t,e,e.doc,i,c,!r))},wt=(t,n,e,i,c,r)=>{l.trace("items",e),e.forEach(o=>{switch(o.stmt){case W:A(t,n,o,i,c,r);break;case R:A(t,n,o,i,c,r);break;case z:{A(t,n,o.state1,i,c,r),A(t,n,o.state2,i,c,r);let u={id:"edge"+E,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:I,labelStyle:"",label:g.sanitizeText(o.description,h()),arrowheadStyle:tt,labelpos:et,labelType:ot,thickness:st,classes:Z};t.setEdge(o.state1.id,o.state2.id,u,E),E++}break}})},L=(t,n=Y)=>{let e=n;if(t.doc)for(let i=0;i<t.doc.length;i++){let c=t.doc[i];c.stmt==="dir"&&(e=c.value)}return e},Gt=async function(t,n,e,i){l.info("Drawing state diagram (v2)",n),$={},i.db.getDirection();let{securityLevel:c,state:r}=h(),o=r.nodeSpacing||50,u=r.rankSpacing||50;l.info(i.db.getRootDocV2()),i.db.extract(i.db.getRootDocV2()),l.info(i.db.getRootDocV2());let S=i.db.getStates(),s=new H({multigraph:!0,compound:!0}).setGraph({rankdir:L(i.db.getRootDocV2()),nodesep:o,ranksep:u,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});A(s,void 0,i.db.getRootDocV2(),S,i.db,!0);let T;c==="sandbox"&&(T=y("#i"+n));let a=c==="sandbox"?y(T.nodes()[0].contentDocument.body):y("body"),d=a.select(`[id="${n}"]`),b=a.select("#"+n+" g");await U(b,s,["barb"],_,n);let p=8;Q.insertTitle(d,"statediagramTitleText",r.titleTopMargin,i.db.getDiagramTitle());let f=d.node().getBBox(),k=f.width+p*2,v=f.height+p*2;d.attr("class",_);let O=d.node().getBBox();J(d,v,k,r.useMaxWidth);let B=`${O.x-p} ${O.y-p} ${k} ${v}`;l.debug(`viewBox ${B}`),d.attr("viewBox",B);let nt=document.querySelectorAll('[id="'+n+'"] .edgeLabel .label');for(let C of nt){let M=C.getBBox(),D=document.createElementNS("http://www.w3.org/2000/svg",x);D.setAttribute("rx",0),D.setAttribute("ry",0),D.setAttribute("width",M.width),D.setAttribute("height",M.height),C.insertBefore(D,C.firstChild)}},Nt={setConf:$t,getClasses:Ct,draw:Gt},Yt={parser:V,db:w,renderer:Nt,styles:K,init:t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,w.clear()}};export{Yt as diagram};