livebook/static/js/964.js
2023-04-18 12:27:59 +00:00

1 line
No EOL
4.5 KiB
JavaScript

"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[964],{6964:(e,t,s)=>{s.r(t),s.d(t,{diagram:()=>D});var a=s(1341),o=s(45625),r=s(74309),i=s(53110),n=s(12566),d=s(81188);s(27856),s(27484),s(29451),s(69368),s(31898),s(17967);const l="rect",c="rectWithTitle",p="statediagram",g="----parent",b="fill:none",h="fill: #333",u="text",y="normal";let f={},m=0;function w(e="",t=0,s="",a="----"){return`state-${e}${null!==s&&s.length>0?`${a}${s}`:""}-${t}`}const x=(e,t,s,o,r,n)=>{const d=s.id,p=null==(x=o[d])?"":x.classes?x.classes.join(" "):"";var x;if("root"!==d){let t=l;!0===s.start&&(t="start"),!1===s.start&&(t="end"),s.type!==a.a&&(t=s.type),f[d]||(f[d]={id:d,shape:t,description:i.e.sanitizeText(d,(0,i.g)()),classes:`${p} statediagram-state`});const o=f[d];s.description&&(Array.isArray(o.description)?(o.shape=c,o.description.push(s.description)):o.description.length>0?(o.shape=c,o.description===d?o.description=[s.description]:o.description=[o.description,s.description]):(o.shape=l,o.description=s.description),o.description=i.e.sanitizeTextOrArray(o.description,(0,i.g)())),1===o.description.length&&o.shape===c&&(o.shape=l),!o.type&&s.doc&&(i.l.info("Setting cluster for ",d,k(s)),o.type="group",o.dir=k(s),o.shape=s.type===a.b?"divider":"roundedWithTitle",o.classes=o.classes+" statediagram-cluster "+(n?"statediagram-cluster-alt":""));const r={labelStyle:"",shape:o.shape,labelText:o.description,classes:o.classes,style:"",id:d,dir:o.dir,domId:w(d,m),type:o.type,padding:15,centerLabel:!0};if(s.note){const t={labelStyle:"",shape:"note",labelText:s.note.text,classes:"statediagram-note",style:"",id:d+"----note-"+m,domId:w(d,m,"note"),type:o.type,padding:15},a={labelStyle:"",shape:"noteGroup",labelText:s.note.text,classes:o.classes,style:"",id:d+g,domId:w(d,m,"parent"),type:"group",padding:0};m++;const i=d+g;e.setNode(i,a),e.setNode(t.id,t),e.setNode(d,r),e.setParent(d,i),e.setParent(t.id,i);let n=d,l=t.id;"left of"===s.note.position&&(n=t.id,l=d),e.setEdge(n,l,{arrowhead:"none",arrowType:"",style:b,labelStyle:"",classes:"transition note-edge",arrowheadStyle:h,labelpos:"c",labelType:u,thickness:y})}else e.setNode(d,r)}t&&"root"!==t.id&&(i.l.trace("Setting node ",d," to be child of its parent ",t.id),e.setParent(d,t.id)),s.doc&&(i.l.trace("Adding nodes children "),T(e,s,s.doc,o,r,!n))},T=(e,t,s,o,r,n)=>{i.l.trace("items",s),s.forEach((s=>{switch(s.stmt){case a.c:case a.a:x(e,t,s,o,r,n);break;case a.S:{x(e,t,s.state1,o,r,n),x(e,t,s.state2,o,r,n);const a={id:"edge"+m,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:b,labelStyle:"",label:i.e.sanitizeText(s.description,(0,i.g)()),arrowheadStyle:h,labelpos:"c",labelType:u,thickness:y,classes:"transition"};e.setEdge(s.state1.id,s.state2.id,a,m),m++}}}))},k=(e,t=a.e)=>{let s=t;if(e.doc)for(let t=0;t<e.doc.length;t++){const a=e.doc[t];"dir"===a.stmt&&(s=a.value)}return s},S={setConf:function(e){const t=Object.keys(e);for(const s of t)e[s]},getClasses:function(e,t){i.l.trace("Extracting classes"),t.db.clear();try{return t.parser.parse(e),t.db.extract(t.db.getRootDocV2()),t.db.getClasses()}catch(e){return e}},draw:function(e,t,s,c){i.l.info("Drawing state diagram (v2)",t),f={};let g=c.db.getDirection();void 0===g&&(g=a.D);const{securityLevel:b,state:h}=(0,i.g)(),u=h.nodeSpacing||50,y=h.rankSpacing||50;i.l.info(c.db.getRootDocV2()),c.db.extract(c.db.getRootDocV2()),i.l.info(c.db.getRootDocV2());const m=c.db.getStates(),w=new o.k({multigraph:!0,compound:!0}).setGraph({rankdir:k(c.db.getRootDocV2()),nodesep:u,ranksep:y,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}}));let T;x(w,void 0,c.db.getRootDocV2(),m,c.db,!0),"sandbox"===b&&(T=(0,r.Ys)("#i"+t));const S="sandbox"===b?(0,r.Ys)(T.nodes()[0].contentDocument.body):(0,r.Ys)("body"),D=S.select(`[id="${t}"]`),$=S.select("#"+t+" g");(0,n.r)($,w,["barb"],p,t),d.u.insertTitle(D,"statediagramTitleText",h.titleTopMargin,c.db.getDiagramTitle());const v=D.node().getBBox(),A=v.width+16,B=v.height+16;D.attr("class",p);const E=D.node().getBBox();(0,d.k)(D,B,A,h.useMaxWidth);const C=`${E.x-8} ${E.y-8} ${A} ${B}`;i.l.debug(`viewBox ${C}`),D.attr("viewBox",C);const R=document.querySelectorAll('[id="'+t+'"] .edgeLabel .label');for(const e of R){const t=e.getBBox(),s=document.createElementNS("http://www.w3.org/2000/svg",l);s.setAttribute("rx",0),s.setAttribute("ry",0),s.setAttribute("width",t.width),s.setAttribute("height",t.height),e.insertBefore(s,e.firstChild)}}},D={parser:a.p,db:a.d,renderer:S,styles:a.s,init:e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute,a.d.clear()}}}}]);