lecom-modeler 0.35.0 → 0.36.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/lib/index.cjs CHANGED
@@ -39,7 +39,7 @@
39
39
  </mxGraphModel>`,kd=(e,t)=>{if(!e.length&&!t.length)return Er;let o=[...e.map(r=>r.id),...t.map(r=>r.id)];return Math.max(...o.map(r=>Number(r)))};var mh=e=>{let t=Object.values(yr),o=e.filter(i=>{var a;let s=(a=i._attributes)==null?void 0:a.style;return t.includes(s)}),n=e.filter(i=>{var a;let s=(a=i._attributes)==null?void 0:a.style;return["attribute-loop"].includes(s)}),r=[];for(let i of o){let{style:s}=i._attributes,a=vd[s],l=a==null?void 0:a(i,n);if(!l){console.warn(`Node ${s} not supported`);continue}r.push(l)}return r},gh=(e,t)=>{let o=e.filter(r=>{var i;return(i=r._attributes)==null?void 0:i.edge}),n=[];for(let r of o){let i=wd(r),s=t.find(c=>c.id===i.source),a=t.find(c=>c.id===i.target);((s==null?void 0:s.type)==="LANE"||(a==null?void 0:a.type)==="LANE")&&i.type!=="ANNOTATION_EDGE"||n.push(i)}return n},hh=(e,t)=>{let o=[];return e.forEach(n=>{var s,a;let r=(a=(s=Ad)[n.type])==null?void 0:a.call(s,n);if(!r){console.warn(`Node ${n.type} not supported`);return}if(o.push(r),n.type==="TASK"&&n.data.attribute==="LOOP"){let l=Cd(n,t);o.push(l)}}),o},yh=(e,t)=>{let o=[];return e.forEach(n=>{let r=Id(n,t);o.push(r)}),o},xh=(e=[],t=[],o)=>{let n=hh(e,o),r=yh(t,e);return{mxGraphModel:{root:{_attributes:{version:"1.1",lastId:o},mxCell:[{_attributes:{id:"0"}},{_attributes:{id:"1",parent:"0"}},...n,...r]}}}},Dd=(e=[],t=[],o)=>{let n=xh(e,t,o);return xd(JSON.stringify(n),{compact:!0,spaces:0})},Od=async e=>{var c,d,u,m,p;let t=await $i(e),o=((d=(c=t==null?void 0:t.mxGraphModel)==null?void 0:c.root)==null?void 0:d.mxCell)||[],n=Number(((p=(m=(u=t==null?void 0:t.mxGraphModel)==null?void 0:u.root)==null?void 0:m._attributes)==null?void 0:p.lastId)||Er),r=mh(o),i=gh(o,r),s=Pd(r),{nodes:a,edges:l}=Ga(s,i);return{lastElementId:n,edges:l,nodes:Bo(a)}};var gt=require("@xyflow/react"),ji=require("react");var br=require("@xyflow/react");var Js=require("react/jsx-runtime"),ne=i=>{var s=i,{type:e,position:t,className:o,nodeType:n}=s,r=Wt(s,["type","position","className","nodeType"]);let a=n==="TASK";return(0,Js.jsx)(br.Handle,b({type:e,position:t,className:G("size-2.5 border border-grey-400 bg-white relative",{"before:content-[''] before:absolute before:inset-[-16px] before:bg-transparent before:pointer-events-none":a,"before:content-[''] before:absolute before:inset-[-4px] before:bg-transparent before:pointer-events-none":!a},o)},r))},tt=a=>{var l=a,{nodeId:e,nodeType:t,gatewayVariant:o,type:n,position:r,className:i}=l,s=Wt(l,["nodeId","nodeType","gatewayVariant","type","position","className"]);let{getEdges:c,getNodes:d}=(0,br.useReactFlow)(),m=(()=>{if(n!=="source")return!1;let p=c();if(t==="TASK")return p.filter(E=>E.source===e).length>=2;if(t==="GATEWAY"&&o==="EXCLUSIVE")return p.filter(E=>E.source===e).length>=2;if(t==="START_EVENT"){let h=d();return p.filter(f=>{if(f.source!==e)return!1;let g=h.find(y=>y.id===f.target);return(g==null?void 0:g.type)!=="ANNOTATION"}).length>=1}return!1})();return(0,Js.jsx)(br.Handle,b({type:n,position:r,className:G("size-2.5 border border-grey-400 bg-white transition-all duration-200 relative",{"before:content-[''] before:absolute before:inset-[-16px] before:bg-transparent before:pointer-events-none":t==="TASK","before:content-[''] before:absolute before:inset-[-4px] before:bg-transparent before:pointer-events-none":t!=="TASK","opacity-50 cursor-not-allowed pointer-events-none":m,"hover:border-grey-500":!m},i),style:{pointerEvents:m?"none":"auto"}},s))};var Qs=require("react"),po=require("@xyflow/react");var Vd=require("@xyflow/react"),Ki=()=>{let e=(0,Vd.useStoreApi)();return{getInternalNodes:()=>{let{nodeLookup:o}=e.getState();return Array.from(o.values())}}};var qi=require("react/jsx-runtime"),js=require("react"),Eh=["top","right","bottom","left"],bh=["top-left","top-middle","top-right","right-middle","bottom-left","left-middle","bottom-right","bottom-middle"],Pt=r=>{var i=r,{nodeId:e,isVisible:t,offset:o=8}=i,n=Wt(i,["nodeId","isVisible","offset"]);let{getInternalNode:s,setNodes:a}=(0,po.useReactFlow)(),{getInternalNodes:l}=Ki(),{isMultipleSelection:c}=U(),d=(0,po.useStoreApi)(),u=(0,Qs.useRef)(0),m=(0,Qs.useRef)([]),p=({y:g,width:y,height:x})=>{cancelAnimationFrame(u.current),u.current=requestAnimationFrame(()=>{var K,te;if(!e)return;let{nodeLookup:w,onNodesChange:_}=d.getState(),N=w.get(e);if(!N||N.type!=="LANE")return;let T=!N.parentId,I=T?N.id:N.parentId;if(!I)return;let C=Array.from(w.values()).filter(z=>z.type==="LANE"&&z.parentId===I);if(!C.length)return;m.current.length===0&&(m.current=Wo(C).map(z=>z.id));let P=m.current.map(z=>C.find(M=>M.id===z)).filter(Boolean),R=[],S=0,L=P.findIndex(z=>z.id===N.id),$=!T&&L>0&&Math.abs(g-N.position.y)>.5;for(let z=0;z<P.length;z++){let M=P[z],H=M.id===N.id,D=z===P.length-1;if(H){S=$?g+x:S+x;continue}let A=(te=(K=M.measured)==null?void 0:K.height)!=null?te:0,Y=T?y-ae.HEADER_WIDTH:y,B=A;T&&D&&(B=Math.max(ae.MIN_HEIGHT,x-S)),$&&z===L-1&&(B=Math.max(ae.MIN_HEIGHT,g-S)),R.push({id:M.id,type:"dimensions",dimensions:{width:Y,height:B},setAttributes:!0}),R.push({id:M.id,type:"position",position:{x:ae.HEADER_WIDTH,y:S}}),S+=B}T?R.push({id:I,type:"dimensions",dimensions:{width:y,height:x},setAttributes:!0}):R.push({id:I,type:"dimensions",dimensions:{width:y+ae.HEADER_WIDTH,height:S},setAttributes:!0}),_==null||_(R)})},h=({y:g,width:y,height:x})=>{var N;if(cancelAnimationFrame(u.current),m.current=[],!e)return;let w=s(e);if(!w||w.type!=="LANE"&&!w.parentId)return;let _=[...l()];if(w.type!=="LANE"){_=_.map(T=>T.id===e?v(b({},T),{width:y,height:x,measured:{width:y,height:x}}):T),_=uo(_),a(_);return}_=Wa(w,y,x,_,g),_=uo(_),_=Yo((N=w.parentId)!=null?N:w.id,_),a(_)};if(!(!c&&t))return null;let f={"--resize-offset":`${o}px`};return(0,qi.jsxs)(qi.Fragment,{children:[Eh.map(g=>(0,js.createElement)(po.NodeResizeControl,v(b({},n),{key:g,nodeId:e,position:g,variant:po.ResizeControlVariant.Line,className:"border-blue-400/90 border-dashed",style:f,onResize:(y,x)=>p(x),onResizeEnd:(y,x)=>h(x)}))),bh.map(g=>(0,js.createElement)(po.NodeResizeControl,v(b({},n),{key:g,nodeId:e,position:g,className:"size-1.5 bg-blue-400 relative before:content-[''] before:absolute before:w-5 before:h-5 before:left-1/2 before:top-1/2 before:-translate-x-1/2 before:-translate-y-1/2 before:cursor-[inherit]",style:f,onResize:(y,x)=>p(x),onResizeEnd:(y,x)=>h(x)})))]})};var Qi=require("@xyflow/react"),Jt=require("@produto-lecom/lecom-ui"),mt=require("react");var Hd=require("zustand"),Hn=(0,Hd.create)(e=>({draggableNode:null,setDraggableNode:t=>{e({draggableNode:t})}}));var Zi=require("react"),Gd=(e,t=!1)=>{let[o,n]=(0,Zi.useState)({width:0,height:0});return(0,Zi.useEffect)(()=>{if(e.current&&t){let r=e.current.getBoundingClientRect();n({width:r.width,height:r.height})}},[t,e]),{dimensions:o}};var Po=require("@xyflow/react"),Bd=require("react"),_h=120,Th=12,zd=(e,t=!1,o)=>{let{getNode:n,getViewport:r}=(0,Po.useReactFlow)(),{instanceId:i}=U();return(0,Bd.useMemo)(()=>{var p,h;if(!t)return{position:Po.Position.Right,align:"start"};let s=n(e);if(!s)return{position:Po.Position.Right,align:"start"};let a=r(),l=s.position.x*a.zoom+a.x,c=(((p=s.measured)==null?void 0:p.width)||s.width||100)*a.zoom,d=(h=document.getElementById(`modeler-${i}`))==null?void 0:h.clientWidth;if(!d)return{position:Po.Position.Right,align:"start"};let u=(o==null?void 0:o.width)||_h;return{position:l+c+u+Th>d?Po.Position.Left:Po.Position.Right}},[i,e,t,o,n,r])};var Ji=require("@xyflow/react"),_e=require("@produto-lecom/lecom-ui"),Yd=require("lucide-react");var Pe=require("react/jsx-runtime"),Wd=({nodeId:e})=>{let{t}=(0,_e.useTranslation)(),{updateNodeData:o,getEdges:n,getNode:r}=(0,Ji.useReactFlow)(),i=(0,Ji.useNodesData)(e),a=n().filter(p=>p.source===e).some(p=>{let h=r(p.target);return(h==null?void 0:h.type)==="END_EVENT"}),l=(i==null?void 0:i.data.variant)==="SUBPROCESS",c=u=>{o(e,{variant:(i==null?void 0:i.data.variant)===u?"":u})},d=u=>{o(e,{attribute:(i==null?void 0:i.data.attribute)===u?"":u})};return(0,Pe.jsxs)(_e.DropdownMenu,{children:[(0,Pe.jsxs)(_e.Tooltip,{children:[(0,Pe.jsx)(_e.TooltipTrigger,{asChild:!0,children:(0,Pe.jsx)(_e.DropdownMenuTrigger,{asChild:!0,children:(0,Pe.jsx)(_e.Button,{variant:"ghost",color:"grey",size:"small",iconButton:!0,children:(0,Pe.jsx)(Yd.WrenchIcon,{})})})}),(0,Pe.jsx)(_e.TooltipContent,{color:"black",children:t("bpmn.task.menu.title")})]}),(0,Pe.jsxs)(_e.DropdownMenuContent,{align:"start",className:"w-60 bg-white text-grey-600",children:[(0,Pe.jsxs)(_e.DropdownMenuLabel,{className:"flex items-center gap-1",children:[(0,Pe.jsx)("div",{className:"flex-1 body-medium-500",children:t("bpmn.task.menu.title")}),(0,Pe.jsx)("div",{className:"flex items-center gap-1",children:Object.entries($r).map(([u,m])=>{let p=u==="LOOP"&&(a||l),E=(()=>{if(u==="LOOP"&&a)return t("editor.task_menu.loop_not_allowed_when_connected_to_end");if(u==="LOOP"&&l)return t("editor.task_menu.loop_not_allowed_when_subprocess");if(u==="LOOP")return t("editor.task_menu.loop")})();return(0,Pe.jsxs)(_e.Tooltip,{children:[(0,Pe.jsx)(_e.TooltipTrigger,{asChild:!0,children:(0,Pe.jsx)(_e.Button,{variant:"ghost",color:"grey",size:"small",iconButton:!0,disabled:p,className:G({"bg-grey-100 text-blue-500":(i==null?void 0:i.data.attribute)===u,"opacity-50 cursor-not-allowed":p}),onClick:p?void 0:()=>d(u),children:(0,Pe.jsx)(m.icon,{className:"stroke-inherit"})})}),E&&(0,Pe.jsx)(_e.TooltipContent,{color:"black",children:E})]},u)})})]}),(0,Pe.jsx)(_e.DropdownMenuGroup,{children:(0,Pe.jsxs)(_e.Tooltip,{children:[(0,Pe.jsx)(_e.TooltipTrigger,{asChild:!0,children:(0,Pe.jsx)("div",{className:G({"cursor-not-allowed":a}),children:(0,Pe.jsxs)(_e.DropdownMenuItem,{className:G({"bg-grey-100 text-blue-500":(i==null?void 0:i.data.variant)==="SCRIPT","opacity-50":a}),disabled:a,onClick:()=>c("SCRIPT"),children:[(0,Pe.jsx)(Ur.SCRIPT.icon,{className:"stroke-current"}),t(`bpmn.task.variant.${"SCRIPT".toLowerCase()}`)]})})}),a&&(0,Pe.jsx)(_e.TooltipContent,{color:"black",children:t("editor.task_menu.script_not_allowed_when_connected_to_end")})]})})]})]})};var Oe=require("react/jsx-runtime"),fo={START_EVENT:{type:"START_EVENT",icon:Jn,label:"bpmn.start_event.variant.default"},END_EVENT:{type:"END_EVENT",icon:dn,label:"bpmn.end_event.variant.default"},TASK:{type:"TASK",icon:Jn,label:"bpmn.task.variant.default"},ANNOTATION:{type:"ANNOTATION",icon:Yr,label:"bpmn.annotation.variant.default"}},Nh={EXCLUSIVE:{type:"GATEWAY",variant:"EXCLUSIVE",icon:fn,label:"bpmn.gateway.variant.exclusive"},PARALLEL:{type:"GATEWAY",variant:"PARALLEL",icon:gn,label:"bpmn.gateway.variant.parallel"},COMPLEX:{type:"GATEWAY",variant:"COMPLEX",icon:un,label:"bpmn.gateway.variant.complex"}},at=({nodeId:e,nodeType:t,nodeVariant:o,isChild:n})=>{let r=(0,mt.useRef)(null),i=(0,mt.useRef)(null),{t:s}=(0,Jt.useTranslation)(),{setDraggableNode:a}=Hn(),{getEdges:l,getNodes:c,getNode:d,setNodes:u}=(0,Qi.useReactFlow)(),{setIsDragging:m,mode:p,isConnecting:h,isDragging:E,isMultipleSelection:f}=U(),g=d(e),y=!!(g!=null&&g.selected)&&!g.dragging&&!h&&!E&&!f,{dimensions:x}=Gd(r,y),{position:w}=zd(e,y,x),[_,N]=(0,mt.useState)(void 0),T=c(),I=l(),C=o==="SUBPROCESS",P=(0,mt.useRef)(null),R=(0,mt.useRef)(!1),S=(0,mt.useCallback)(()=>{P.current!==null&&(clearTimeout(P.current),P.current=null),R.current=!1,m(!1),a(null),N(void 0),u(V=>V.map(F=>v(b({},F),{className:void 0})))},[m,a,u]);(0,mt.useEffect)(()=>{let V=F=>{R.current&&F.buttons===0&&S()};return document.addEventListener("dragend",S),document.addEventListener("mousemove",V),()=>{document.removeEventListener("dragend",S),document.removeEventListener("mousemove",V)}},[S]);let L=(0,mt.useCallback)((V,F)=>{R.current=!0,m(!1),a({type:F.type,variant:F.variant,attribute:F.attribute,icon:F.icon}),F.icon&&N((0,Oe.jsx)(F.icon,{})),V.dataTransfer.effectAllowed="move",V.dataTransfer.setData("sourceId",e),i.current&&V.dataTransfer.setDragImage(i.current,10,10),P.current=setTimeout(()=>{P.current=null,m(!0)},100)},[e,a,m]),$=(0,mt.useCallback)(()=>{S()},[S]),K=[{component:(0,Oe.jsx)(Oi,{elementId:e})}],te=()=>{if(p==="view")return[];let V=!I.some(F=>{var J;return F.source===e&&((J=T.find(X=>X.id===F.target))==null?void 0:J.type)!=="ANNOTATION"});return[{component:(0,Oe.jsx)(Sn,{nodeId:e,disabled:!V,tooltipMessage:V?void 0:s("editor.toolbar.start_event_limit_reached")})},fo.TASK,fo.ANNOTATION,...K]},z=()=>p==="view"?[{component:(0,Oe.jsx)(So,{elementId:e})}]:[{component:(0,Oe.jsx)(So,{elementId:e})},...C?[]:[{component:(0,Oe.jsx)(Wd,{nodeId:e})}],{component:(0,Oe.jsx)(Sn,{nodeId:e})},fo.TASK,{type:"TASK",variant:"SUBPROCESS",icon:Qn,label:"bpmn.task.variant.subprocess"},fo.ANNOTATION,...Object.values(Nh),...Zo(e,T,I)?[]:[fo.END_EVENT],...K],M=()=>p==="view"?[{component:(0,Oe.jsx)(So,{elementId:e,elementType:"gateway"})}]:[{component:(0,Oe.jsx)(So,{elementId:e,elementType:"gateway"})},{component:(0,Oe.jsx)(Sn,{nodeId:e})},fo.TASK,{type:"TASK",variant:"SUBPROCESS",icon:Qn,label:"bpmn.task.variant.subprocess"},fo.ANNOTATION,...K],H=()=>p==="view"?[]:[fo.ANNOTATION,...K],D=()=>p==="view"?[]:[...n?[]:[{component:(0,Oe.jsx)(Sn,{nodeId:e})}],fo.ANNOTATION,...K],A=()=>p==="view"?[]:[{component:(0,Oe.jsx)(Sn,{nodeId:e})},...K],Y=()=>p==="view"?[]:[...K],k=(V=>{switch(V){case"START_EVENT":return te();case"TASK":return z();case"GATEWAY":return M();case"END_EVENT":return H();case"LANE":return D();case"ANNOTATION":return A();case"UNSUPPORTED":return Y();default:return[]}})(t),O=k.length>6;if(!(k.length===0||p==="readonly"))return(0,Oe.jsxs)(Qi.NodeToolbar,{position:w,align:"start",className:O?"-top-[4.5rem]":"-top-8",isVisible:y,children:[(0,Oe.jsx)("div",{ref:r,className:`${O?"grid grid-cols-6":"flex"} gap-1 px-2 py-2 bg-white rounded-sm shadow-md`,children:k.map((V,F)=>{if(V.component)return(0,Oe.jsx)("div",{children:V.component},F);let J={sourceNodeType:t,targetNodeType:V.type,sourceNodeId:e,nodes:T,edges:I},X=Zc(J),Q={gateway_limit_reached:s("editor.toolbar.gateway_limit_reached"),start_event_limit_reached:s("editor.toolbar.start_event_limit_reached"),start_event_already_exists:s("editor.toolbar.start_event_already_exists"),script_to_end_not_allowed:s("editor.toolbar.script_to_end_not_allowed"),loop_to_end_not_allowed:s("editor.toolbar.loop_to_end_not_allowed"),initial_activity_to_end_not_allowed:s("editor.toolbar.initial_activity_to_end_not_allowed"),final_activity_cannot_connect:s("editor.toolbar.final_activity_cannot_connect"),activity_has_outgoing_connections:s("editor.toolbar.activity_has_outgoing_connections"),task_limit_reached:s("editor.toolbar.task_limit_reached")},ee=X.shouldDisable&&X.reason?Q[X.reason]||s(V.label):s(V.label)||"";return(0,Oe.jsxs)(Jt.Tooltip,{children:[(0,Oe.jsx)(Jt.TooltipTrigger,{asChild:!0,children:(0,Oe.jsx)(Jt.Button,{variant:"ghost",color:"grey",size:"small",iconButton:!0,draggable:!X.shouldDisable,disabled:X.shouldDisable,className:X.shouldDisable?"opacity-50 cursor-not-allowed":"",onDragStart:X.shouldDisable?void 0:ie=>L(ie,V),onDragEnd:X.shouldDisable?void 0:$,children:V.icon&&(0,Oe.jsx)(V.icon,{size:16})})}),(0,Oe.jsx)(Jt.TooltipContent,{color:"black",children:ee})]},F)})}),(0,Oe.jsx)("div",{ref:i,className:"absolute w-0 h-0 top-0 left-0 z-[-1] bg-transparent",children:_})]})};var Ke=require("react/jsx-runtime"),Fd=({id:e,data:t,selected:o,dragging:n})=>{let{updateNodeData:r,setNodes:i}=(0,gt.useReactFlow)(),{inProgress:s,fromNode:a}=(0,gt.useConnection)(),{mode:l,isReadOnly:c}=U(),d=s&&(a==null?void 0:a.id)!==e,u=(0,ji.useCallback)(h=>{let x=h.split(`
40
40
  `),w=x.reduce((I,C)=>Math.max(I,C.length),0),_=x.length,N=Math.max(bn.MIN_WIDTH,w*7+32),T=Math.max(bn.MIN_HEIGHT,_*20+24);i(I=>I.map(C=>C.id===e?v(b({},C),{width:N,height:T,style:v(b({},C.style),{width:N,height:T})}):C))},[e,i]),m=(0,ji.useCallback)(h=>{r(e,{label:h}),u(h)},[e,r,u]),p=(0,ji.useCallback)(h=>{u(h)},[u]);return(0,Ke.jsxs)("div",{className:G("relative w-full h-full min-w-44 min-h-16 flex text-grey-400 hover:text-grey-500 bg-white rounded-sm border-l-2 border-current before:absolute before:top-0 before:left-0 before:w-4 before:border-t-2 before:border-current after:absolute after:bottom-0 after:left-0 after:w-4 after:border-t-2 after:border-current hover:shadow-md transition-colors duration-75",{"pointer-events-none":c,"text-blue-500 hover:text-blue-600 shadow-md":o&&!c,"border-red-500 border-l-[3px] shadow-[0_0_5px_rgba(255,0,0,0.5)] before:absolute before:top-0 before:left-0 before:w-4 before:border-t-2 before:border-red-500 after:absolute after:bottom-0 after:left-0 after:w-4 after:border-t-2 after:border-red-500":t.hasError}),children:[(0,Ke.jsx)(Qe,{value:t.label,className:"m-1 text-grey-600 text-left",onChange:m,onInput:p,skipFirstCharValidation:!0}),(0,Ke.jsx)(at,{nodeId:e,nodeType:"ANNOTATION"}),l==="edit"&&(0,Ke.jsx)(Pt,{nodeId:e,minWidth:bn.MIN_WIDTH,minHeight:bn.MIN_HEIGHT,isVisible:!n&&o}),!s&&(0,Ke.jsxs)(Ke.Fragment,{children:[(0,Ke.jsx)(ne,{type:"source",position:gt.Position.Left,id:"left"}),(0,Ke.jsx)(ne,{type:"source",position:gt.Position.Right,id:"right"}),(0,Ke.jsx)(ne,{type:"source",position:gt.Position.Top,id:"top"}),(0,Ke.jsx)(ne,{type:"source",position:gt.Position.Bottom,id:"bottom"})]}),(!s||d)&&(0,Ke.jsxs)(Ke.Fragment,{children:[(0,Ke.jsx)(ne,{type:"target",position:gt.Position.Left,id:"left",className:G({"annotation-handle":d})}),(0,Ke.jsx)(ne,{type:"target",position:gt.Position.Right,id:"right",className:G({"annotation-handle":d})}),(0,Ke.jsx)(ne,{type:"target",position:gt.Position.Top,id:"top",className:G({"annotation-handle":d})}),(0,Ke.jsx)(ne,{type:"target",position:gt.Position.Bottom,id:"bottom",className:G({"annotation-handle":d})})]})]})};var ht=require("@xyflow/react"),Xd=require("react");var We=require("react/jsx-runtime"),Ud=({id:e,data:t,selected:o,dragging:n})=>{let{updateNodeData:r}=(0,ht.useReactFlow)(),{inProgress:i,fromNode:s}=(0,ht.useConnection)(),{mode:a,isReadOnly:l,reconnectingEdgeId:c}=U(),[d,u]=(0,Xd.useState)(!1),m=i&&(s==null?void 0:s.id)!==e||!!c,p=f=>{r(e,{label:f})},h=()=>{u(!0)},E=()=>{u(!1)};return(0,We.jsxs)("div",{className:"relative",onDoubleClick:h,children:[(0,We.jsx)(dn,{className:G("w-full h-full min-w-9 min-h-9 hover:stroke-[#d33b3b] transition-colors duration-75",{"pointer-events-none":l,"stroke-blue-500 hover:stroke-blue-600":o&&!l,"stroke-red-500 hover:stroke-red-600 drop-shadow-[0_0_3px_rgba(255,0,0,0.5)] fill-red-100":t.hasError})}),(0,We.jsx)("div",{className:"absolute mt-2 left-1/2 -translate-x-1/2 max-w-80 w-max",children:(0,We.jsx)(Qe,{value:t.label,isEditing:d,onBlur:E,onChange:p})}),(0,We.jsx)(at,{nodeId:e,nodeType:"END_EVENT"}),a==="edit"&&(0,We.jsx)(Pt,{nodeId:e,isVisible:!n&&o,minWidth:qr.MIN_WIDTH,minHeight:qr.MIN_HEIGHT,offset:4,keepAspectRatio:!0}),(!i||m)&&(0,We.jsxs)(We.Fragment,{children:[(0,We.jsx)(ne,{type:"target",position:ht.Position.Left,id:"left",className:G({"event-handle":m})}),(0,We.jsx)(ne,{type:"target",position:ht.Position.Right,id:"right",className:G({"event-handle":m})}),(0,We.jsx)(ne,{type:"target",position:ht.Position.Top,id:"top",className:G({"event-handle":m})}),(0,We.jsx)(ne,{type:"target",position:ht.Position.Bottom,id:"bottom",className:G({"event-handle":m})})]}),!i&&(0,We.jsxs)(We.Fragment,{children:[(0,We.jsx)(ne,{type:"source",position:ht.Position.Left,id:"left"}),(0,We.jsx)(ne,{type:"source",position:ht.Position.Right,id:"right"}),(0,We.jsx)(ne,{type:"source",position:ht.Position.Top,id:"top"}),(0,We.jsx)(ne,{type:"source",position:ht.Position.Bottom,id:"bottom"})]})]})};var yt=require("@xyflow/react"),es=require("react");var Fe=require("react/jsx-runtime"),$d=({id:e,data:t,width:o,height:n,selected:r,dragging:i})=>{let s=_s[t.variant].icon,{updateNodeData:a}=(0,yt.useReactFlow)(),{inProgress:l,fromNode:c}=(0,yt.useConnection)(),{mode:d,isReadOnly:u,reconnectingEdgeId:m}=U(),[p,h]=(0,es.useState)(!1),E=l&&(c==null?void 0:c.id)!==e||!!m,f=(0,es.useCallback)(x=>{a(e,{label:x})},[e,a]),g=()=>{h(!0)},y=()=>{h(!1)};return(0,Fe.jsxs)("div",{className:"relative",style:{width:o!=null?o:En.MIN_WIDTH,height:n!=null?n:En.MIN_HEIGHT},onDoubleClick:g,children:[(0,Fe.jsx)(s,{className:G("w-full h-full min-w-14 min-h-14 stroke-1 stroke-grey-400 hover:stroke-grey-500 transition-colors duration-75",{"pointer-events-none":u,"stroke-blue-500 hover:stroke-blue-600":r&&!u,"stroke-red-500 hover:stroke-red-600 drop-shadow-[0_0_3px_rgba(255,0,0,0.5)]":t.hasError})}),(0,Fe.jsx)("div",{className:"absolute mt-2 left-1/2 -translate-x-1/2 max-w-80 w-max",children:(0,Fe.jsx)(Qe,{value:t.label,isEditing:p,onBlur:y,onChange:f})}),(0,Fe.jsx)(at,{nodeId:e,nodeType:"GATEWAY",nodeVariant:t.variant}),d==="edit"&&(0,Fe.jsx)(Pt,{nodeId:e,isVisible:!i&&r,minWidth:En.MIN_WIDTH,minHeight:En.MIN_HEIGHT,offset:2,keepAspectRatio:!0}),(!l||E)&&(0,Fe.jsxs)(Fe.Fragment,{children:[(0,Fe.jsx)(ne,{type:"target",position:yt.Position.Left,id:"left",className:G({"gateway-handle":E})}),(0,Fe.jsx)(ne,{type:"target",position:yt.Position.Right,id:"right",className:G({"gateway-handle":E})}),(0,Fe.jsx)(ne,{type:"target",position:yt.Position.Top,id:"top",className:G({"gateway-handle":E})}),(0,Fe.jsx)(ne,{type:"target",position:yt.Position.Bottom,id:"bottom",className:G({"gateway-handle":E})})]}),!l&&(0,Fe.jsxs)(Fe.Fragment,{children:[(0,Fe.jsx)(tt,{type:"source",position:yt.Position.Left,id:"left",nodeId:e,nodeType:"GATEWAY",gatewayVariant:t.variant}),(0,Fe.jsx)(tt,{type:"source",position:yt.Position.Right,id:"right",nodeId:e,nodeType:"GATEWAY",gatewayVariant:t.variant}),(0,Fe.jsx)(tt,{type:"source",position:yt.Position.Top,id:"top",nodeId:e,nodeType:"GATEWAY",gatewayVariant:t.variant}),(0,Fe.jsx)(tt,{type:"source",position:yt.Position.Bottom,id:"bottom",nodeId:e,nodeType:"GATEWAY",gatewayVariant:t.variant})]})]})};var Kd=require("@xyflow/react"),Vt=require("@produto-lecom/lecom-ui"),vh=require("lucide-react");var qd=require("react/jsx-runtime");var xt=require("@xyflow/react"),Zd=require("react");var Xe=require("react/jsx-runtime"),Jd=({id:e,data:t,selected:o,dragging:n})=>{let{updateNodeData:r}=(0,xt.useReactFlow)(),{inProgress:i,fromNode:s}=(0,xt.useConnection)(),{mode:a,isReadOnly:l,reconnectingEdgeId:c}=U(),[d,u]=(0,Zd.useState)(!1),m=i&&(s==null?void 0:s.id)!==e||!!c,p=f=>{r(e,{label:f})},h=()=>{u(!0)},E=()=>{u(!1)};return(0,Xe.jsxs)("div",{className:"relative",onDoubleClick:h,children:[(0,Xe.jsx)(Xr,{className:G("w-full h-full min-w-9 min-h-9 hover:stroke-[#54890b] transition-colors duration-75",{"pointer-events-none":l,"stroke-blue-500 hover:stroke-blue-600":o&&!l,"stroke-red-500 hover:stroke-red-600 drop-shadow-[0_0_3px_rgba(255,0,0,0.5)] fill-red-100":t.hasError})}),(0,Xe.jsx)("div",{className:"absolute mt-2 left-1/2 -translate-x-1/2 max-w-80 w-max",children:(0,Xe.jsx)(Qe,{value:t.label,isEditing:d,onBlur:E,onChange:p})}),(0,Xe.jsx)(at,{nodeId:e,nodeType:"START_EVENT"}),a==="edit"&&(0,Xe.jsx)(Pt,{nodeId:e,isVisible:!n&&o,minWidth:Kr.MIN_WIDTH,minHeight:Kr.MIN_HEIGHT,offset:4,keepAspectRatio:!0}),(!i||m)&&(0,Xe.jsxs)(Xe.Fragment,{children:[(0,Xe.jsx)(ne,{type:"target",position:xt.Position.Left,id:"left",className:G({"event-handle":m})}),(0,Xe.jsx)(ne,{type:"target",position:xt.Position.Right,id:"right",className:G({"event-handle":m})}),(0,Xe.jsx)(ne,{type:"target",position:xt.Position.Top,id:"top",className:G({"event-handle":m})}),(0,Xe.jsx)(ne,{type:"target",position:xt.Position.Bottom,id:"bottom",className:G({"event-handle":m})})]}),!i&&(0,Xe.jsxs)(Xe.Fragment,{children:[(0,Xe.jsx)(tt,{type:"source",position:xt.Position.Left,id:"left",nodeId:e,nodeType:"START_EVENT"}),(0,Xe.jsx)(tt,{type:"source",position:xt.Position.Right,id:"right",nodeId:e,nodeType:"START_EVENT"}),(0,Xe.jsx)(tt,{type:"source",position:xt.Position.Top,id:"top",nodeId:e,nodeType:"START_EVENT"}),(0,Xe.jsx)(tt,{type:"source",position:xt.Position.Bottom,id:"bottom",nodeId:e,nodeType:"START_EVENT"})]})]})};var tu=require("@produto-lecom/lecom-ui"),Et=require("@xyflow/react"),vr=require("react");var _r=60,ts=(e,t)=>{var s;let o=[],n=`${t} `;for(let a of e){if(!(a.type==="TASK"))continue;let c=(s=a.data)==null?void 0:s.label;if(c&&c.startsWith(n)){let d=c.substring(n.length);/^\d{1,15}$/.test(d)&&o.push(parseInt(d,10))}}let r=o.length>0?Math.max(...o)+1:1,i=`${t} ${r}`;return i.length<=_r?i:i.substring(0,_r).trim()},Gn=(e,t)=>{var a;let o=new Set;for(let l of t)l.type==="TASK"&&((a=l.data)!=null&&a.label)&&o.add(l.data.label);let n=e;if(n.length>_r&&(n=n.substring(0,_r).trim()),!o.has(n))return n;let r=n.replace(/\s+\(\d+\)$/,""),i=2,s=o.size+2;for(;i<=s;){let l=` (${i})`,c=_r-l.length,u=`${r.substring(0,c).trim()}${l}`;if(!o.has(u))return u;i++}return n};var Tr=require("react/jsx-runtime"),Qd=e=>(0,Tr.jsxs)("svg",v(b({width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e),{children:[(0,Tr.jsx)("circle",{cx:"12",cy:"12",r:"10",fill:"#10B981"}),(0,Tr.jsx)("path",{d:"M7 12L10 15L17 8",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}));var ea=require("react/jsx-runtime"),jd=e=>(0,ea.jsx)("svg",v(b({width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e),{children:(0,ea.jsx)("path",{d:"M12 2C8.13 2 5 5.13 5 9C5 14.25 12 22 12 22C12 22 19 14.25 19 9C19 5.13 15.87 2 12 2ZM12 11.5C10.62 11.5 9.5 10.38 9.5 9C9.5 7.62 10.62 6.5 12 6.5C13.38 6.5 14.5 7.62 14.5 9C14.5 10.38 13.38 11.5 12 11.5Z",fill:"#38bdf8"})}));var Nr=require("react/jsx-runtime"),eu=e=>(0,Nr.jsxs)("svg",v(b({width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e),{children:[(0,Nr.jsx)("circle",{cx:"12",cy:"12",r:"10",fill:"#EF4444"}),(0,Nr.jsx)("path",{d:"M8 8L16 16M8 16L16 8",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}));var fe=require("react/jsx-runtime"),wh={APROVADO:Qd,EM_ANDAMENTO:jd,REJEITADO:eu},ta={APROVADO:"border-green-500 hover:border-green-500 border-[3px] border-solid",EM_ANDAMENTO:"border-turquoise-400 hover:border-turquoise-400 border-[3px] border-solid",REJEITADO:"border-red-500 hover:border-red-500 border-[3px] border-solid",default:"border-grey-400 border-2 border-solid",error:"border-red-500 border-[3px] shadow-[0_0_5px_rgba(255,0,0,0.5)]"},Ih={APROVADO:"bg-green-50",EM_ANDAMENTO:"bg-turquoise-50",REJEITADO:"bg-red-50"},ou=({id:e,data:t,width:o,height:n,selected:r,dragging:i})=>{let{t:s}=(0,tu.useTranslation)(),{toast:a}=st(),{updateNodeData:l,getNodes:c,setNodes:d}=(0,Et.useReactFlow)(),{inProgress:u,fromNode:m}=(0,Et.useConnection)(),{mode:p,isReadOnly:h,onSubprocessValidationClick:E,reconnectingEdgeId:f}=U(),{getTaskStatus:g}=Fo(),y=u&&(m==null?void 0:m.id)!==e||!!f,x=g(e),w=t.variant==="SUBPROCESS",_=!!t.variant&&!w||!!x,N=!!t.attribute||w,T=(0,vr.useCallback)(z=>{let A=_||N?80:40,Y=z.split(`
41
41
  `),B=Y.reduce((F,J)=>Math.max(F,J.length),0),k=Y.length,O=Math.max(To.MIN_WIDTH,B*7+64),V=Math.max(To.MIN_HEIGHT,k*24+A);d(F=>F.map(J=>J.id===e?v(b({},J),{width:O,height:V,style:v(b({},J.style),{width:O,height:V})}):J))},[e,d,_,N]),I=(0,vr.useCallback)(z=>{let M=z.trim(),H=t.label||"";if(M===H)return;let D=M,A=c();if(!(M&&M!=="")){D=ts(A,s("bpmn.task.label.prefix")),l(e,{label:D}),T(D),a({variant:"warning",content:(0,fe.jsxs)(fe.Fragment,{children:[s("bpmn.task.feedback.label_empty.prefix")," ",(0,fe.jsx)("strong",{children:D})]})});return}let B=Gn(D,A);B===H||(l(e,{label:B}),T(B),B!==D&&a({variant:"warning",content:(0,fe.jsxs)(fe.Fragment,{children:[s("bpmn.task.feedback.label_already_exists.prefix")," ",(0,fe.jsx)("strong",{children:M})," ",s("bpmn.task.feedback.label_already_exists.middle")," ",(0,fe.jsx)("strong",{children:B})]})}))},[t.label,c,e,s,l,T,a]),C=(0,vr.useCallback)(z=>{T(z)},[T]),P=(0,vr.useCallback)(()=>{a({variant:"error",content:s("bpmn.task.feedback.invalid_first_character")})},[s,a]),R=x?wh[x]:null,S=t.variant?Ur[t.variant].icon:null,L=t.attribute?$r[t.attribute].icon:null,$=()=>t.hasError?ta.error:x?ta[x]:h?ta.default:"",K=()=>{var z;return r&&(z=Ih[x])!=null?z:""},te=()=>{E==null||E({id:e,type:"sub_process",label:t.label})};return(0,fe.jsxs)("div",{className:G("relative w-full h-full min-w-44 min-h-24 flex flex-col items-stretch justify-stretch bg-white border-2 border-grey-400 hover:border-grey-500 rounded-md hover:shadow-md transition-colors duration-75",$(),{"cursor-pointer":h,"border-blue-500 hover:border-blue-600 shadow-md":r&&!h&&!x,"border-red-500 hover:border-red-600 shadow-[0_0_5px_rgba(255,0,0,0.5)]":t.hasError}),style:{width:o!=null?o:To.MIN_WIDTH,height:n!=null?n:To.MIN_HEIGHT},children:[(0,fe.jsx)("div",{className:"flex-1 flex items-stretch justify-stretch overflow-hidden",children:(0,fe.jsx)(Qe,{value:t.label,maxLength:60,className:G(K(),{"py-10 px-8":_||N}),onChange:I,onInput:C,onInvalidFirstCharacter:P})}),S&&(0,fe.jsx)("div",{className:G("absolute flex items-center p-1",w?"bottom-0 left-1/2 -translate-x-1/2":"top-0 left-0"),children:(0,fe.jsx)(S,{size:16,className:G(t.hasError?"text-red-500":"text-grey-500",w&&"cursor-pointer"),onClick:w?te:void 0})}),L&&(0,fe.jsx)("div",{className:"absolute bottom-0 left-0 w-full flex items-center justify-center",children:(0,fe.jsx)("div",{className:G("flex items-center w-16 p-1",w?"justify-between":"justify-center"),children:(0,fe.jsx)(L,{size:16,className:G(t.hasError?"text-red-500":"text-grey-500")})})}),R&&(0,fe.jsx)("div",{className:"absolute top-0 right-0 flex items-center p-1",children:(0,fe.jsx)(R,{})}),(0,fe.jsx)(at,{nodeId:e,nodeType:"TASK",nodeVariant:t.variant}),p==="edit"&&(0,fe.jsx)(Pt,{nodeId:e,isVisible:!i&&r,minWidth:To.MIN_WIDTH,minHeight:To.MIN_HEIGHT}),(!u||y)&&(0,fe.jsxs)(fe.Fragment,{children:[(0,fe.jsx)(ne,{type:"target",position:Et.Position.Left,id:"left",className:G({"task-handle":y})}),(0,fe.jsx)(ne,{type:"target",position:Et.Position.Right,id:"right",className:G({"task-handle":y})}),(0,fe.jsx)(ne,{type:"target",position:Et.Position.Top,id:"top",className:G({"task-handle":y})}),(0,fe.jsx)(ne,{type:"target",position:Et.Position.Bottom,id:"bottom",className:G({"task-handle":y})})]}),!u&&(0,fe.jsxs)(fe.Fragment,{children:[(0,fe.jsx)(tt,{type:"source",position:Et.Position.Left,id:"left",nodeId:e,nodeType:"TASK"}),(0,fe.jsx)(tt,{type:"source",position:Et.Position.Right,id:"right",nodeId:e,nodeType:"TASK"}),(0,fe.jsx)(tt,{type:"source",position:Et.Position.Top,id:"top",nodeId:e,nodeType:"TASK"}),(0,fe.jsx)(tt,{type:"source",position:Et.Position.Bottom,id:"bottom",nodeId:e,nodeType:"TASK"})]})]})};var oa=require("@xyflow/react");var mo=require("react/jsx-runtime"),nu=({id:e,data:t})=>(0,mo.jsxs)(mo.Fragment,{children:[(0,mo.jsx)("div",{className:"relative w-full h-full min-w-32 min-h-16 flex items-center justify-center bg-white border-2 border-red-400 rounded-sm overflow-hidden",children:t.label}),(0,mo.jsx)(at,{nodeId:e,nodeType:"UNSUPPORTED"}),(0,mo.jsx)(ne,{type:"source",position:oa.Position.Right}),(0,mo.jsx)(ne,{type:"target",position:oa.Position.Left})]});var Ge=require("@xyflow/react"),os=require("react");var ve=require("react/jsx-runtime"),fI={type:"MESSAGE_EDGE",reconnectable:!0,markerEnd:{type:Ge.MarkerType.Arrow},data:{label:""}},ru=({id:e,source:t,target:o,data:n,selected:r,sourcePosition:i,targetPosition:s,sourceHandleId:a,targetHandleId:l})=>{var B;let{zoom:c}=(0,Ge.useViewport)(),{updateEdgeData:d}=(0,Ge.useReactFlow)(),{isMultipleSelection:u,mode:m,instanceId:p}=U(),h=m!=="edit",[E,f]=(0,os.useState)(!1),{reconnectingHandle:g,cursorPosition:y,hoveredNodeId:x,reconnectingSide:w,isValidReconnection:_,handleReconnectStart:N}=Wi({edgeId:e,source:t,target:o,instanceId:p,isReadOnly:h}),T=(0,Ge.useInternalNode)(t),I=(0,Ge.useInternalNode)(o),{sx:C,sy:P,tx:R,ty:S,sourcePos:L,targetPos:$}=(0,os.useMemo)(()=>{var oe,le;if(!T||!I)return{sx:0,sy:0,tx:0,ty:0,sourcePos:Ge.Position.Left,targetPos:Ge.Position.Right};let k=Tn(T,I),O=a?i:k.sourcePos,V=l?s:k.targetPos,F=(q,Ne,ye)=>{var j,xe,Ce,ke,qe,vt;let{x:Ae,y:Z}=q.internals.positionAbsolute,de=(Ce=(xe=(j=q.measured)==null?void 0:j.width)!=null?xe:q.width)!=null?Ce:0,re=(vt=(qe=(ke=q.measured)==null?void 0:ke.height)!=null?qe:q.height)!=null?vt:0;switch(Ne){case Ge.Position.Top:return{x:Ae+de*ye,y:Z};case Ge.Position.Bottom:return{x:Ae+de*ye,y:Z+re};case Ge.Position.Left:return{x:Ae,y:Z+re*ye};case Ge.Position.Right:return{x:Ae+de,y:Z+re*ye};default:return{x:Ae+de/2,y:Z+re/2}}},J=(oe=n==null?void 0:n.sourceOffset)!=null?oe:.5,X=(le=n==null?void 0:n.targetOffset)!=null?le:.5,Q=T?F(T,O,J).x:k.sx,ee=T?F(T,O,J).y:k.sy,ie=I?F(I,V,X).x:k.tx,W=I?F(I,V,X).y:k.ty;return g==="source"&&y?(Q=y.x,ee=y.y,w&&(O=w)):g==="target"&&y&&(ie=y.x,W=y.y,w&&(V=w)),{sx:Q,sy:ee,tx:ie,ty:W,sourcePos:O,targetPos:V}},[T,I,a,l,i,s,g,y,w,n==null?void 0:n.sourceOffset,n==null?void 0:n.targetOffset]);if(!T||!I)return null;let[K,te,z]=(0,Ge.getSmoothStepPath)({sourceX:C,sourceY:P,targetX:R,targetY:S,sourcePosition:L,targetPosition:$}),M=r||(T==null?void 0:T.selected)||(I==null?void 0:I.selected),H=M?"sequence-edge-marker-highlighted":"sequence-edge-marker",D=E||(n==null?void 0:n.label.trim().length)>0,A=()=>{f(!1)},Y=k=>{d(e,{label:k.trim()})};return(0,ve.jsx)(ve.Fragment,{children:(0,ve.jsxs)("g",{className:G("group bpmn-arrow-edge",{"is-highlighted":M}),onDoubleClick:()=>!h&&f(!0),children:[(0,ve.jsx)("path",{d:K,fill:"none",stroke:"transparent",strokeWidth:Math.max(12,12/c),style:{pointerEvents:"stroke",cursor:"pointer"}}),(0,ve.jsxs)("g",{className:G("text-grey-500 transition-colors duration-75 group-hover:text-grey-800",{"text-blue-500 group-hover:text-blue-600":M}),children:[(0,ve.jsx)(Ge.BaseEdge,{id:e,path:K,interactionWidth:0,markerEnd:`url(#${H})`,strokeDasharray:4,className:G("stroke-2 stroke-current transition-[stroke,filter] duration-75 group-hover:drop-shadow-[0_0_3px_rgba(0,0,0,0.2)]",{"stroke-red-500 hover:stroke-red-600":(n==null?void 0:n.hasError)||g&&x&&!_,"stroke-green-500":g&&x&&_,"stroke-blue-500 hover:stroke-blue-600 drop-shadow-[0_0_3px_rgba(59,130,246,0.5)]":M&&!(n!=null&&n.hasError)&&!g})}),(0,ve.jsxs)(Ge.EdgeLabelRenderer,{children:[(0,ve.jsxs)("div",{className:"absolute z-[3000] pointer-events-auto flex flex-col items-center gap-1",style:{transform:`translate(-50%, -50%) translate(${te}px, ${z}px)`},children:[r&&!u&&(0,ve.jsx)(Ln,{sx:C,sy:P,tx:R,ty:S,hasLabel:!!((B=n==null?void 0:n.label)!=null&&B.trim()),children:(0,ve.jsx)(Pn,{edgeId:e,edgeType:"MESSAGE_EDGE"})}),D&&(0,ve.jsx)(Qe,{value:n==null?void 0:n.label,className:"min-w-8 max-w-56 bg-white rounded-md px-2 py-1 text-xs",isEditing:E,onBlur:A,onChange:Y})]}),r&&!u&&!h&&(0,ve.jsxs)(ve.Fragment,{children:[(0,ve.jsx)("div",{className:"absolute z-[1000] pointer-events-none",style:{transform:`translate(-50%, -50%) translate(${C}px, ${P}px)`},children:(0,ve.jsxs)("svg",{width:12/c,height:12/c,style:{overflow:"visible",position:"absolute",left:"50%",top:"50%",transform:"translate(-50%, -50%)"},children:[(0,ve.jsx)("circle",{cx:6/c,cy:6/c,r:4/c,fill:g==="source"?"#3b82f6":"#fff",stroke:"#3b82f6",strokeWidth:2/c,className:"pointer-events-none"}),(0,ve.jsx)("circle",{cx:6/c,cy:6/c,r:6/c,fill:"none",stroke:"#3b82f6",strokeWidth:1/c,opacity:g==="source"?.6:.3,className:"pointer-events-none"}),(0,ve.jsx)("circle",{cx:6/c,cy:6/c,r:8/c,fill:"transparent",className:G("pointer-events-auto",{"cursor-move":!g||g!=="source","cursor-not-allowed":g==="source"&&x&&!_,"cursor-grabbing":g==="source"&&(!x||_)}),onMouseDown:k=>N("source",k.nativeEvent)})]})}),(0,ve.jsx)("div",{className:"absolute z-[1000] pointer-events-none",style:{transform:`translate(-50%, -50%) translate(${R}px, ${S}px)`},children:(0,ve.jsxs)("svg",{width:12/c,height:12/c,style:{overflow:"visible",position:"absolute",left:"50%",top:"50%",transform:"translate(-50%, -50%)"},children:[(0,ve.jsx)("circle",{cx:6/c,cy:6/c,r:4/c,fill:g==="target"?"#3b82f6":"#fff",stroke:"#3b82f6",strokeWidth:2/c,className:"pointer-events-none"}),(0,ve.jsx)("circle",{cx:6/c,cy:6/c,r:6/c,fill:"none",stroke:"#3b82f6",strokeWidth:1/c,opacity:g==="target"?.6:.3,className:"pointer-events-none"}),(0,ve.jsx)("circle",{cx:6/c,cy:6/c,r:8/c,fill:"transparent",className:G("pointer-events-auto",{"cursor-move":!g||g!=="target","cursor-not-allowed":g==="target"&&x&&!_,"cursor-grabbing":g==="target"&&(!x||_)}),onMouseDown:k=>N("target",k.nativeEvent)})]})})]})]})]})]})})};var tn=require("@xyflow/react"),wr=require("react/jsx-runtime"),iu=({toX:e,toY:t,fromNode:o})=>{var u,m;if(!o)return null;let{internals:{positionAbsolute:{x:n,y:r}},measured:i}=o,s=(u=i.width)!=null?u:0,a=(m=i.height)!=null?m:0,c=[{x:n,y:r+a/2,pos:tn.Position.Left},{x:n+s,y:r+a/2,pos:tn.Position.Right},{x:n+s/2,y:r,pos:tn.Position.Top},{x:n+s/2,y:r+a,pos:tn.Position.Bottom}].reduce((p,h)=>{let E=Math.hypot(e-p.x,t-p.y);return Math.hypot(e-h.x,t-h.y)<E?h:p}),[d]=(0,tn.getStraightPath)({sourceX:c.x,sourceY:c.y,targetX:e,targetY:t});return(0,wr.jsxs)("g",{className:"group",children:[(0,wr.jsx)("path",{fill:"none",className:"stroke-2 stroke-grey-500 animated transition-[stroke,filter] duration-75",d}),(0,wr.jsx)("circle",{cx:e,cy:t,fill:"none",r:4,className:"stroke-2 stroke-grey-600"})]})};var bt=require("@xyflow/react"),su=require("lodash"),Ir=require("react");var Re=require("react/jsx-runtime"),au=({id:e,data:t,selected:o,dragging:n,parentId:r})=>{var T;let{updateNodeData:i,getNodes:s}=(0,bt.useReactFlow)(),{mode:a,isReadOnly:l}=U(),{inProgress:c,fromNode:d}=(0,bt.useConnection)(),u=c&&(d==null?void 0:d.id)!==e,[m,p]=(0,Ir.useState)(!1),h=s(),E=!r,f=!E&&((T=h.find(I=>I.id===r))==null?void 0:T.selected),g=(0,Ir.useMemo)(()=>(0,su.orderBy)([...h.filter(I=>I.parentId===e&&I.type==="LANE")],"position.y","asc"),[h,e]),y=E?Pa.MIN_WIDTH:ae.MIN_WIDTH,x=(0,Ir.useMemo)(()=>{if(E&&g.length>1){let I=[...g];return I.pop(),I.reduce((P,R)=>{var S,L;return P+((L=(S=R.measured)==null?void 0:S.height)!=null?L:0)},0)+ae.MIN_HEIGHT}return ae.MIN_HEIGHT},[E,g]),w=I=>{i(e,{label:I})},_=()=>{p(!0)},N=()=>{p(!1)};return(0,Re.jsxs)(Re.Fragment,{children:[(0,Re.jsxs)("div",{className:G("flex h-full min-h-64 w-full min-w-[50rem] hover:shadow-md bg-white outline outline-2 outline-grey-400",{"pointer-events-none":l,"outline-offset-0 outline-blue-500 shadow-sm":(o||f)&&!l}),children:[(0,Re.jsx)("div",{className:G("flex align-items justify-center w-10 border-r-2 border-grey-400",{"border-blue-500":(o||f)&&!l}),onDoubleClick:_,children:(0,Re.jsx)("div",{className:"relative flex-1 [writing-mode:vertical-rl] [text-orientation:sideways] transform rotate-180",children:(0,Re.jsx)(Qe,{value:t.label,className:"w-full h-full self-auto",contentClassName:G({"whitespace-nowrap":m}),isEditing:m,onBlur:N,onChange:w})})}),(0,Re.jsx)("div",{className:"flex-1"})]}),(0,Re.jsx)(at,{nodeId:e,nodeType:"LANE",isChild:!E}),a==="edit"&&(0,Re.jsx)(Pt,{nodeId:e,isVisible:!n&&o,minWidth:y,minHeight:x,offset:10}),!c&&(0,Re.jsxs)(Re.Fragment,{children:[(0,Re.jsx)(ne,{type:"source",position:bt.Position.Left,id:"left"}),(0,Re.jsx)(ne,{type:"source",position:bt.Position.Right,id:"right"}),(0,Re.jsx)(ne,{type:"source",position:bt.Position.Top,id:"top"}),(0,Re.jsx)(ne,{type:"source",position:bt.Position.Bottom,id:"bottom"})]}),(!c||u)&&(0,Re.jsxs)(Re.Fragment,{children:[(0,Re.jsx)(ne,{type:"target",position:bt.Position.Left,id:"left",className:G({"annotation-handle":u})}),(0,Re.jsx)(ne,{type:"target",position:bt.Position.Right,id:"right",className:G({"annotation-handle":u})}),(0,Re.jsx)(ne,{type:"target",position:bt.Position.Top,id:"top",className:G({"annotation-handle":u})}),(0,Re.jsx)(ne,{type:"target",position:bt.Position.Bottom,id:"bottom",className:G({"annotation-handle":u})})]})]})};var lu={START_EVENT:Jd,END_EVENT:Ud,TASK:ou,GATEWAY:$d,ANNOTATION:Fd,LANE:au,UNSUPPORTED:nu},cu={SEQUENCE_EDGE:gd,MESSAGE_EDGE:ru,ANNOTATION_EDGE:sd},du="#fafafa",uu="#bebebe",pu=1,fu=10,mu="bottom-left",na=.05,gu=5,Bn=.5,zn=na,Yn=1,hu={x:0,y:0,zoom:.75},yu=1,xu=2,Ah={[yu]:4,[xu]:2},Ar=[yu,xu],ra=Ar.reduce((e,t)=>e|Ah[t],0);var Eu=require("@xyflow/react");var Lt=()=>{let{getEdges:e,getNodes:t}=(0,Eu.useReactFlow)(),{lastElementId:o}=U(),n=()=>{let i=t(),s=e(),a=kd(i,s);return Math.max(a,o)};return{getLastId:n,getNextId:()=>n()+1}};var Fn=()=>{let{getNodes:e,getEdges:t,setNodes:o,setEdges:n,setViewport:r}=(0,Wn.useReactFlow)(),{getLastId:i}=Lt(),s=(0,Wn.useStoreApi)(),{setLastElementId:a}=U(),l=(0,ia.useCallback)(async(d="")=>{let{nodes:u,edges:m,lastElementId:p}=await Od(d),{width:h,height:E}=s.getState();if(h>0&&E>0){let f=Ba(u);f&&r((0,Wn.getViewportForBounds)(f,h,E,zn,Yn,Bn))}o(u),n(m),a(p)},[o,n,a,s,r]),c=(0,ia.useCallback)(()=>{let d=e(),u=t(),m=i();return Dd(d,u,m)},[e,t,i]);return{importFromMxGraph:l,exportToMxGraph:c}};var sa=require("react"),Ch=500,ns=()=>{let{isInitialized:e,onElementChanges:t}=U(),{exportToMxGraph:o}=Fn(),n=(0,bu.useDebouncedCallback)(()=>{if(!e)return;let s=o();t==null||t(s)},Ch),r=(0,sa.useCallback)(s=>{s.every(c=>c.type==="select")||s.some(c=>c.type==="position"&&c.dragging)||n()},[n]),i=(0,sa.useCallback)(s=>{s.some(l=>l.type==="select")||n()},[n]);return{emitElementChanges:n,handleNodeChanges:r,handleEdgeChanges:i}};var _u=({setEdges:e,saveHistory:t})=>{let{getNode:o,getEdges:n,getNodes:r,getInternalNode:i}=(0,rs.useReactFlow)(),{emitElementChanges:s}=ns(),a=(0,Qt.useRef)(null),{getNextId:l}=Lt(),c=(0,Qt.useCallback)(f=>{var _;let g=o(f.source),y=o(f.target);if(!g||!y)return!1;let x={sourceNodeId:g.id,targetNodeId:y.id,sourceNodeType:g.type,targetNodeType:y.type,nodes:r(),edges:n(),reconnectingEdgeId:(_=a.current)!=null?_:void 0};return Ys(x).isValid},[o,n,r]),d=(0,Qt.useCallback)(f=>{var x,w;let g=l(),y=i(f.source);if(y){let _=i(f.target),N=_?_.internals.positionAbsolute.x+((x=_.measured.width)!=null?x:0)/2:0,T=_?_.internals.positionAbsolute.y+((w=_.measured.height)!=null?w:0)/2:0,I=hd(y,N,T),C=(_==null?void 0:_.type)==="ANNOTATION"||(y==null?void 0:y.type)==="ANNOTATION",P=C?Rn:Mt,R;if(!C&&_&&f.targetHandle){let $=Xi(I),K=Xi(f.targetHandle),{x:te,y:z}=Us(y,I),{x:M,y:H}=Us(_,f.targetHandle),A=zi(te,z,M,H,$,K).slice(1,-1);A.length>0&&(R=A)}let S=v(b(b({},f),P),{id:String(g),sourceHandle:I,data:b(b({},C?{}:Mt.data),R?{points:R}:{})}),L=n().concat(S);e(L),t("forceSave",{nodes:r(),edges:L}),s()}},[l,e,s,i,n,r,t]),u=(0,Qt.useCallback)((f,g)=>{a.current=g.id},[]),m=(0,Qt.useCallback)(()=>{a.current=null},[]),p=(0,Qt.useCallback)((f,g)=>{let y=o(g.source),x=o(g.target);if(!y||!x){a.current=null;return}let w={sourceNodeId:y.id,targetNodeId:x.id,sourceNodeType:y.type,targetNodeType:x.type,nodes:r(),edges:n(),reconnectingEdgeId:f.id};if(!Ys(w).isValid){a.current=null;return}let N=(0,rs.reconnectEdge)(f,g,n()).map(T=>T.id===f.id?v(b({},T),{data:v(b({},T.data),{points:void 0})}):T);e(N),t("forceSave",{nodes:r(),edges:N}),a.current=null,s()},[o,r,n,e,s,t]),h=(0,Qt.useCallback)(f=>{a.current=f},[]),E=(0,Qt.useCallback)(()=>{a.current=null},[]);return{isValidConnection:c,onConnect:d,onReconnect:p,onReconnectStart:u,onReconnectEnd:m,setReconnectingEdge:h,clearReconnectingEdge:E}};var Mu=require("@produto-lecom/lecom-ui"),Pu=require("@xyflow/react"),Ht=require("react");var Cr=(e=[])=>e.filter(t=>t.type==="START_EVENT"),on=(e=[])=>e.filter(t=>t.type==="END_EVENT"),Lo=(e=[])=>e.filter(t=>t.type==="TASK")||[],Tu=(e=[])=>e.filter(t=>{var o;return t.type==="TASK"&&((o=t.properties)==null?void 0:o.variant)==="SCRIPT"});var is=(e=[])=>e.filter(t=>t.type==="GATEWAY"),Nu=(e=[])=>e.filter(t=>{var o;return t.type==="GATEWAY"&&((o=t.properties)==null?void 0:o.variant)==="EXCLUSIVE"}),_t=(e,t=[])=>t.filter(o=>o.source===e),Sr=(e,t=[])=>t.filter(o=>o.target===e),vu=(e,t)=>{var n,r;let o=(n=t.nodes)==null?void 0:n.find(i=>i.id===e);return((r=o==null?void 0:o.properties)==null?void 0:r.attribute)==="LOOP"},wu=(e,t)=>{let o=_t(e,t.edges||[]);for(let n of o){let r=(t.nodes||[]).find(i=>i.id===n.target);if(r&&r.type==="END_EVENT")return!0}return!1},Iu=e=>e?/[^\s]/.test(e.trim()):!1,we=e=>{let{isValid:t,nodeIds:o,edgeIds:n}=e;return{isValid:t,nodeIds:!t&&o&&o.length>0?o:[],edgeIds:!t&&n&&n.length>0?n:[]}},go=(e=[],t)=>{if(!e||e.length===0)return{isValid:!0,invalidIds:[]};let o=e.filter(n=>!t(n));return{isValid:o.length===0,invalidIds:o.map(n=>n.id)}},Au=(e=[],t=[])=>({nodes:e.map(o=>{var n;return{id:o.id,type:o.type||"",label:typeof((n=o.data)==null?void 0:n.label)=="string"?o.data.label:void 0,properties:o.data}}),edges:t.map(o=>({id:o.id,source:o.source,target:o.target,type:o.type||"default"}))});var Mr=[{id:"start_event_not_found",validate:e=>{let t=Cr(e.nodes);return we({isValid:t.length>=1})}},{id:"end_event_not_found",validate:e=>{let t=on(e.nodes);return we({isValid:t.length>=1})}},{id:"multiple_start_event_not_allowed",validate:e=>{let t=Cr(e.nodes),o=t.length===1;if(t.length===0)return we({isValid:!0});if(!o)return we({isValid:!1,nodeIds:t.map(i=>i.id)});let n=_t(t[0].id,e.edges);if(!(n.length<=1)){let i=[...t.map(s=>s.id),...n.map(s=>s.target)];return we({isValid:!1,nodeIds:[...new Set(i)]})}return we({isValid:!0})}},{id:"task_flows_limit_exceeds",validate:e=>{let t=Lo(e.nodes),o=go(t,n=>_t(n.id,e.edges).length<=2);return we({isValid:o.isValid,nodeIds:o.invalidIds})}},{id:"task_label_empty",highlightRelatedEdges:!1,validate:e=>{let t=Lo(e.nodes),o=go(t,n=>!!n.label&&n.label.trim()!=="");return we({isValid:o.isValid,nodeIds:o.invalidIds})}},{id:"task_label_length",highlightRelatedEdges:!1,validate:e=>{let o=Lo(e.nodes),n=go(o,r=>!r.label||r.label.length<=60);return we({isValid:n.isValid,nodeIds:n.invalidIds})}},{id:"duplicate_task_name",highlightRelatedEdges:!1,validate:e=>{let t=Lo(e.nodes),o=new Map;for(let r of t){if(!r.label)continue;let i=r.label.trim();i&&(o.has(i)||o.set(i,[]),o.get(i).push(r))}let n=[];for(let[,r]of o.entries())r.length>1&&r.forEach(i=>n.push(i.id));return we({isValid:n.length===0,nodeIds:n})}},{id:"nested_gateway",validate:e=>{let t=is(e.nodes),o=[],n=[];for(let r of t){let i=_t(r.id,e.edges);for(let s of i){let a=e.nodes.find(l=>l.id===s.target);a&&a.type==="GATEWAY"&&(o.push(r.id,a.id),n.push(s.id))}}return we({isValid:o.length===0,nodeIds:o.length>0?[...new Set(o)]:[],edgeIds:n})}},{id:"events_nested",validate:e=>{let t=[...Cr(e.nodes),...on(e.nodes)],o=[],n=[];for(let r of t){let i=_t(r.id,e.edges);for(let s of i){let a=e.nodes.find(l=>l.id===s.target);a&&(a.type==="START_EVENT"||a.type==="END_EVENT")&&(o.push(r.id,a.id),n.push(s.id))}}return we({isValid:o.length===0,nodeIds:o.length>0?[...new Set(o)]:[],edgeIds:n})}},{id:"flows_on_end_tasks_not_allowed",validate:e=>{let t=on(e.nodes),o=[],n=[];for(let r of t){let i=Sr(r.id,e.edges);for(let s of i){let a=e.nodes.find(l=>l.id===s.source);if(a&&a.type==="TASK"){let l=_t(a.id,e.edges);l.length>1&&(o.push(a.id),l.forEach(c=>n.push(c.id)))}}}return we({isValid:o.length===0,nodeIds:o,edgeIds:n})}},{id:"conditions_flows_limit_exceeds",validate:e=>{let t=Nu(e.nodes),o=go(t,r=>_t(r.id,e.edges).length<=2),n=o.invalidIds.flatMap(r=>_t(r,e.edges).map(i=>i.id));return we({isValid:o.isValid,nodeIds:o.invalidIds,edgeIds:n})}},{id:"activity_name_invalid",validate:e=>{let t=Lo(e.nodes),o=go(t,n=>!n.label||Iu(n.label));return we({isValid:o.isValid,nodeIds:o.invalidIds})}},{id:"final_activity_has_loop",validate:e=>{var s,a;if(!((s=e==null?void 0:e.nodes)!=null&&s.length)||!((a=e==null?void 0:e.edges)!=null&&a.length))return we({isValid:!0});let t=on(e.nodes)[0];if(!t)return we({isValid:!0});let o=Sr(t.id,e.edges);if(!o.length)return we({isValid:!0});let r=Lo(e.nodes).filter(l=>o.some(c=>c.source===l.id)),i=go(r,l=>!vu(l.id,e));return we({isValid:i.isValid,nodeIds:i.isValid?[]:[t.id,...i.invalidIds]})}},{id:"concurrent_initial_and_final_event",validate:e=>{let t=Lo(e.nodes),o=on(e.nodes)[0];if(!o)return we({isValid:!0});let n=t.filter(l=>{let c=Sr(l.id,e.edges),d=_t(l.id,e.edges),u=c.some(p=>{var h;return((h=e.nodes.find(E=>E.id===p.source))==null?void 0:h.type)==="START_EVENT"}),m=d.some(p=>{var h;return((h=e.nodes.find(E=>E.id===p.target))==null?void 0:h.type)==="END_EVENT"});return u&&m}),r=Sr(o.id,e.edges),i=r.length>1,s=r.map(l=>l.source),a={isValid:n.length===0&&!i,nodeIds:[...n.map(l=>l.id),...i?s:[]]};return we(a)}},{id:"gateway_flow_to_event",validate:e=>{let t=is(e.nodes),o=[],n=[];for(let r of t){let i=_t(r.id,e.edges);for(let s of i){let a=e.nodes.find(l=>l.id===s.target);a&&a.type==="END_EVENT"&&(o.push(r.id,a.id),n.push(s.id))}}return we({isValid:o.length===0,nodeIds:o.length>0?[...new Set(o)]:[],edgeIds:n})}},{id:"gateway_missing_output_streams",validate:e=>{let t=is(e.nodes),o=go(t,n=>_t(n.id,e.edges).length>=1);return we({isValid:o.isValid,nodeIds:o.invalidIds})}},{id:"event_to_condition",validate:e=>{let t=[...Cr(e.nodes),...on(e.nodes)],o=[],n=[];for(let r of t){let i=_t(r.id,e.edges);for(let s of i){let a=e.nodes.find(l=>l.id===s.target);a&&a.type==="GATEWAY"&&(o.push(r.id,a.id),n.push(s.id))}}return we({isValid:o.length===0,nodeIds:o.length>0?[...new Set(o)]:[],edgeIds:n})}},{id:"script_in_final_activity",validate:e=>{let t=Tu(e.nodes),o=go(t,n=>!wu(n.id,e));return we({isValid:o.isValid,nodeIds:o.invalidIds})}}];var Cu=e=>{e=e||{nodes:[],edges:[]},e.nodes=e.nodes||[],e.edges=e.edges||[];let t=[];for(let n of Mr){let r=n.validate(e);r.isValid||t.push({id:n.id,message:n.id,nodeIds:r.nodeIds||[],edgeIds:r.edgeIds||[]})}return{isValid:t.length===0,errors:t}},Su=async(e,t)=>{var n;let o=[];try{let r=await e(),i=(n=r==null?void 0:r.filter(s=>s.area==="DIAGRAM"))!=null?n:[];return i.length===0?{isValid:!0,errors:[]}:(i.forEach(s=>{var l,c;let a=(c=(l=s==null?void 0:s.detail)==null?void 0:l.phases)==null?void 0:c.map(d=>d.diagramCellId);o.push({id:s.code,message:s.code,nodeIds:a,edgeIds:[]})}),{isValid:!1,errors:o})}catch(r){return{isValid:!1,errors:[{id:"cannot_validate_subprocess_reference",message:"cannot_validate_subprocess_reference",nodeIds:t.map(i=>i.id)||[],edgeIds:[]}]}}};var nn=require("react/jsx-runtime"),Lu=()=>{let{t:e}=(0,Mu.useTranslation)(),{toast:t}=st(),{setNodes:o,setEdges:n,getNodes:r,getEdges:i}=(0,Pu.useReactFlow)(),{validateCustomDiagram:s}=U(),[a,l]=(0,Ht.useState)(!1),c=(0,Ht.useRef)(!1),d=(0,Ht.useRef)(!1),u=(0,Ht.useCallback)(async f=>{let g=Au(f.nodes,f.edges),y=Cu(g),x=f.nodes.filter(({type:_,data:N})=>_==="TASK"&&(N==null?void 0:N.variant)==="SUBPROCESS");if(s&&x.length>0){let _=await Su(s,x);y={isValid:y.isValid&&_.isValid,errors:[...y.errors,..._.errors]}}let w=y.errors.map(_=>v(b({},_),{message:e(`validation.errors.${_.id}`)}));return a||l(!0),{isValid:y.isValid,errors:w}},[a,e,s]),m=(0,Ht.useCallback)((f,g=!0)=>{if(g&&f&&t({variant:f.isValid?"success":"error",duration:5e3,title:f.isValid?e("validation.success.title"):e("validation.errors.title"),content:(0,nn.jsxs)("div",{className:"flex flex-col gap-1",children:[!f.isValid&&(0,nn.jsx)("span",{className:"body-small-500",children:e("validation.errors.subtitle")}),(0,nn.jsx)("ul",{className:"list-disc list-inside max-h-40 overflow-y-auto",children:f.isValid?(0,nn.jsx)("li",{children:e("validation.success.message")}):f.errors.map(S=>(0,nn.jsx)("li",{className:"text-xs",children:S.message},S.id))})]})}),!f)return;c.current=!0,d.current=!0;let y=[],x=[];f.errors.forEach(S=>{S.nodeIds&&S.nodeIds.length>0&&S.nodeIds.forEach(L=>y.push(L)),S.edgeIds&&S.edgeIds.length>0&&S.edgeIds.forEach(L=>x.push(L))});let w=[...new Set(y)];o(S=>S.map(L=>v(b({},L),{data:v(b({},L.data),{hasError:!1})}))),n(S=>S.map(L=>v(b({},L),{data:v(b({},L.data),{hasError:!1})})));let _=r(),N=i(),T=new Set(w),I=new Set;f.errors.forEach(S=>{var K,te;let L=Mr.find(z=>z.id===S.id);(L==null?void 0:L.highlightRelatedEdges)!==!1&&((K=S.edgeIds)==null||K.forEach(z=>I.add(z)),(te=S.nodeIds)==null||te.forEach(z=>{N.forEach(M=>{(M.source===z||M.target===z)&&I.add(M.id)})}))});let C=new Set,P=new Set,R=new Set;_.forEach(S=>{S.type==="START_EVENT"?C.add(S.id):S.type==="END_EVENT"&&P.add(S.id)}),N.forEach(S=>{C.has(S.source)&&R.add(S.target),P.has(S.target)&&R.add(S.source)}),R.forEach(S=>{var L,$;if(T.has(S)){let K=(L=f.errors.find(z=>{var M;return(M=z.nodeIds)==null?void 0:M.includes(S)}))==null?void 0:L.id;(($=Mr.find(z=>z.id===K))==null?void 0:$.highlightRelatedEdges)!==!1&&N.forEach(z=>{z.source===S&&P.has(z.target)&&(T.add(z.target),I.add(z.id)),z.target===S&&C.has(z.source)&&(T.add(z.source),I.add(z.id))})}}),T.size>0&&o(S=>S.map(L=>v(b({},L),{data:v(b({},L.data),{hasError:T.has(L.id)})}))),I.size>0&&n(S=>S.map(L=>v(b({},L),{data:v(b({},L.data),{hasError:I.has(L.id)})}))),setTimeout(()=>{c.current=!1},0)},[e,i,r,n,o,t]),p=(0,Ht.useCallback)(()=>{l(!1),d.current=!1,o(f=>f.map(g=>v(b({},g),{data:v(b({},g.data),{hasError:!1})}))),n(f=>f.map(g=>v(b({},g),{data:v(b({},g.data),{hasError:!1})})))},[n,o]),h=(0,Ht.useCallback)(()=>{d.current&&(c.current=!0,d.current=!1,o(f=>f.map(g=>v(b({},g),{data:v(b({},g.data),{hasError:!1})}))),n(f=>f.map(g=>v(b({},g),{data:v(b({},g.data),{hasError:!1})}))),setTimeout(()=>{c.current=!1},0))},[n,o]),E=(0,Ht.useCallback)(()=>c.current,[]);return{validateDiagram:u,handleValidationComplete:m,clearValidation:p,dismissValidationPanel:h,isAutoValidationEnabled:a,getIsClearingValidation:E}};var Du=require("@xyflow/react"),Ou=require("@produto-lecom/lecom-ui"),Vu=require("react");var Sh=15,Ru="bpmn:selection",Mh=e=>{if(!e||!(e instanceof HTMLElement))return!1;let t=e.tagName.toLowerCase(),o=t==="input"||t==="textarea",n=e.isContentEditable,r=t==="select",i=e.closest('[contenteditable="true"], input, textarea, select')!==null;return o||n||r||i},ku=e=>{if(!Mh(e.target))return!0;let t=window.getSelection(),o=t&&t.toString().length>0;if(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement){let n=e.target;return n.selectionStart===n.selectionEnd&&!o}return!o},Hu=({offset:e=Sh,saveHistory:t})=>{let{t:o}=(0,Ou.useTranslation)(),{getNodes:n,setNodes:r,getEdges:i,setEdges:s}=(0,Du.useReactFlow)(),{getNextId:a}=Lt(),{mode:l,containerRef:c}=U();(0,Vu.useEffect)(()=>{if(l!=="edit")return;let d=c.current;if(!d)return;let u=p=>{var _,N;if(!ku(p)||!d.contains(document.activeElement))return;let E=n(),f=i(),g=E.filter(T=>T.selected);if(!g.length)return;p.preventDefault(),p.stopPropagation();let y=f.filter(T=>g.some(I=>I.id===T.source)&&g.some(I=>I.id===T.target)),w=JSON.stringify({nodes:g,edges:y});(_=p.clipboardData)==null||_.setData(Ru,w),(N=p.clipboardData)==null||N.setData("text/plain",`BPMN Selection: ${g.length} nodes`)},m=p=>{var R,S;if(!ku(p)||!d.contains(document.activeElement))return;let E=(R=p.clipboardData)==null?void 0:R.getData(Ru);if(!E)return;p.preventDefault(),p.stopPropagation();let f;try{f=JSON.parse(E)}catch(L){return}if(!((S=f.nodes)!=null&&S.length))return;let g=new Map,y=n(),x=[],w=f.nodes.filter(L=>Ao(L.type,y));if(w.length===0)return;let _=a(),N=w.map(L=>{var te;let $=String(_++);g.set(L.id,$);let K=v(b({},L),{id:$,selected:!0,position:{x:L.position.x+e,y:L.position.y+e}});if(L.type==="TASK"){let z=(te=L.data)==null?void 0:te.label,M=Gn(z||o("bpmn.task.label.prefix"),[...y,...x]);K.data=v(b({},L.data),{label:M})}return x.push(K),K}),T=f.edges.map(L=>v(b({},L),{id:String(_++),selected:!0,source:g.get(L.source)||L.source,target:g.get(L.target)||L.target})),I=[...y.map(L=>v(b({},L),{selected:!1})),...N],P=[...i().map(L=>v(b({},L),{selected:!1})),...T];r(I),s(P),t("forceSave",{nodes:I,edges:P})};return d.addEventListener("copy",u,!0),d.addEventListener("paste",m,!0),()=>{d.removeEventListener("copy",u,!0),d.removeEventListener("paste",m,!0)}},[n,r,i,s,a,e,o,t,l,c])};var Gu=require("@produto-lecom/lecom-ui"),Bu=require("@xyflow/react");var zu=require("react");var Ph=50,Yu=({nodes:e,setNodes:t,setEdges:o,saveHistory:n})=>{let{draggableNode:r,setDraggableNode:i}=Hn(),{t:s}=(0,Gu.useTranslation)(),{getInternalNode:a,getNodes:l,getEdges:c,screenToFlowPosition:d}=(0,Bu.useReactFlow)(),{getNextId:u}=Lt(),{setIsDragging:m}=U(),{getInternalNodes:p}=Ki(),{rebuildIndex:h,forceRebuildIndex:E}=Si(),[f,g]=(0,zu.useState)(null),y=(M,H,D)=>{var k;if(M.parentId!==H)return null;let A=D.filter(O=>O.id!==M.id&&O.parentId===H&&O.type==="LANE").sort((O,V)=>O.position.y-V.position.y);if(A.length===0)return null;let Y=(k=D.find(O=>O.id===M.id))!=null?k:M,B=A.find(O=>Y.position.y<O.position.y);return B?{draggedLaneId:M.id,beforeLaneId:B.id}:{draggedLaneId:M.id,afterLaneId:A[A.length-1].id}},x=(M,H=!1,D)=>{let A=H?"node-drop-target-error":"node-drop-target",Y=H?"node-drop-target-lane-error":"node-drop-target-lane";t(B=>{var O;let k=(O=D==null?void 0:D(B))!=null?O:null;return B.map(V=>{let F=[];return V.id===M&&F.push(A),M!==void 0&&V.parentId===M&&V.type==="LANE"&&V.id!==(k==null?void 0:k.draggedLaneId)&&F.push(Y),V.id===(k==null?void 0:k.draggedLaneId)&&F.push("lane-reorder-dragging"),V.id===(k==null?void 0:k.beforeLaneId)&&F.push("lane-reorder-before"),V.id===(k==null?void 0:k.afterLaneId)&&F.push("lane-reorder-after"),v(b({},V),{className:F.join(" ")})})})},w=(M,H)=>{let D=p();if(M.type==="LANE"){if(H){x();return}let O=D.filter(J=>J.id!==M.id&&J.type==="LANE"&&!J.parentId),V=jn(M,O);if(!V){x();return}if(zo({parentId:V.id,nodes:e,excludeTypes:["LANE"]})){x(V.id,!0);return}x(V.id,!1,J=>y(M,V.id,J));return}let Y=D.filter(O=>O.id!==M.id&&O.type==="LANE"),B=jn(M,Y);if(!B){x();return}if(zo({parentId:B.id,nodes:e,includeTypes:["LANE"]})){x();return}x(B.id)},_=M=>{let H=a(M.id),D=M.type==="LANE"&&zo({parentId:M.id,nodes:e,includeTypes:["LANE"]});w(H,D)},N=M=>M.map(H=>v(b({},H),{className:void 0})),T=M=>M.some(D=>D.dragging)?M.map(D=>D.dragging?v(b({},D),{dragging:!1}):D):M,I=(M,H)=>{let D=0;for(let A of H){if(A.id===M||A.parentId||A.type==="LANE")continue;let Y=At(A),B=Y.y+Y.h;D=Math.max(D,B)}return D+Ph},C=(M,H)=>{if(!Ts(M,H))return H;let D=I(M,H);return H.map(A=>A.id===M?v(b({},A),{position:v(b({},A.position),{y:D})}):A)},P=M=>{if(M.preventDefault(),M.dataTransfer.dropEffect="move",!(r!=null&&r.type))return;let H=d({x:M.clientX,y:M.clientY}),D={id:"__sidebar_drag__",type:r.type,position:H,measured:{width:1,height:1},internals:{positionAbsolute:H}};w(D,!1)},R=M=>{let H=M.relatedTarget;(!H||!M.currentTarget.contains(H))&&x()},S=(M,H)=>{M.preventDefault(),_(H)},L=(M,H,D)=>{var F,J;let A=[...D],Y=H.parentId?H.parentId:H.id;if(M.parentId===H.id)return A=vs(M,H,A),A=uo(A),A=Yo(Y,A),N(A);if(M.type==="LANE"){if(zo({parentId:H.id,nodes:A,excludeTypes:["LANE"]})){let W=Ii(H),oe=50,le=50;return A.map(q=>{var Ne,ye;return q.id===M.id?v(b({},q),{position:{x:(Ne=f==null?void 0:f.x)!=null?Ne:W.x+oe,y:(ye=f==null?void 0:f.y)!=null?ye:W.y2+le}}):q})}let ee=A.filter(W=>W.parentId===H.id).reduce((W,oe)=>{var le,q;return W+((q=(le=oe.measured)==null?void 0:le.height)!=null?q:0)},0),ie={x:ae.HEADER_WIDTH,y:ee};return A=A.map(W=>W.id===M.id?v(b({},W),{parentId:H.id,position:ie,className:void 0}):v(b({},W),{className:void 0})),A=uo(A),A=C(Y,A),A}if(zo({parentId:H.id,nodes:A,includeTypes:["LANE"]})){let X;if(M.parentId){let Q=a(M.parentId),{x:ee,y:ie}=At(Q);X={x:ee+((F=M.position.x)!=null?F:0),y:ie+((J=M.position.y)!=null?J:0)}}return A=A.map(Q=>Q.id===M.id?v(b({},Q),{position:X!=null?X:Q.position,parentId:void 0,className:void 0}):v(b({},Q),{className:void 0})),A=Yo(Y,A),A}let O=Va(M,H);A=A.map(X=>X.id===M.id?v(b({},X),{parentId:H.id,position:O,className:void 0}):v(b({},X),{className:void 0}));let V=A.find(X=>X.id===M.id);return A=vs(V,H,A),A=uo(A),A=Yo(Y,A),A},$=M=>{if(M.preventDefault(),!(r!=null&&r.type))return;if(!Ao(r.type,l())){m(!1),i(null);return}let H=d({x:M.clientX,y:M.clientY}),D={width:ue[r.type].MIN_WIDTH,height:ue[r.type].MIN_HEIGHT},A=u(),Y={id:String(A),type:r.type,position:H,measured:D,data:{label:r.type==="TASK"?ts(e,s("bpmn.task.label.prefix")):"",variant:r.variant,attribute:r.attribute},selected:!0},B=v(b({},Y),{internals:{positionAbsolute:H}}),k=v(b({},B),{measured:{width:1,height:1}}),O=p(),V=r.type==="LANE",F=O.filter(W=>V?W.type==="LANE"&&!W.parentId:W.type==="LANE"),J=jn(k,F),X=[...O.map(W=>v(b({},W),{selected:!1})),B];J&&(X=L(B,J,X)),X=Bo(X),V&&!J&&(X=C(B.id,X)),X=N(X),t(X),E();let Q=M.dataTransfer.getData("sourceId"),ee=c(),ie=ee;if(Q){let W={id:String(A+1),source:Q,target:Y.id},oe=r.type==="ANNOTATION"?b(b({},W),Rn):b(b({},W),Mt);ie=ee.concat(oe),o(ie)}n("forceSave",{nodes:X,edges:ie}),m(!1),i(null)},K=async(M,H,D)=>{let A=[...p()],Y=new Set;D.forEach(O=>{let V=a(O.id),F=O.type==="LANE",J=A.filter(Q=>Q.id!==O.id&&(F?Q.type==="LANE"&&!Q.parentId:Q.type==="LANE")),X=jn(V,J);if(X){if(F&&zo({parentId:O.id,nodes:A,includeTypes:["LANE"]})){O.parentId&&(A=z(O,A),Y.add(O.id));return}A=L(V,X,A);return}O.parentId&&(A=z(O,A),O.type==="LANE"&&Y.add(O.id))}),A=T(A);let B=D.filter(O=>O.type==="LANE"&&!O.parentId).map(O=>O.id);for(let O of B)Ts(O,A)&&f&&(A=A.map(V=>V.id===O?v(b({},V),{position:b({},f)}):V));for(let O of Y)A=C(O,A);if(D.some(O=>O.type!=="LANE"&&!O.parentId)){let O=A.filter(V=>V.type==="LANE"&&!V.parentId).map(V=>V.id);for(let V of O)A=Yo(V,A)}A=Bo(A),A=N(A),t(A),h(A),g(null)},te=(M,H)=>{g({x:H.position.x,y:H.position.y})},z=(M,H)=>{var J,X,Q,ee,ie,W,oe,le;let D=a(M.parentId);if(!D)return H;let A=M.type==="LANE",Y=H.filter(q=>q.parentId===D.id&&q.id!==M.id),B=Y.filter(q=>q.type==="LANE"),k;if(A&&B.length===0)k=ae.MIN_HEIGHT;else if(A){let q=(X=(J=M.measured)==null?void 0:J.height)!=null?X:ae.MIN_HEIGHT;k=((ee=(Q=D.measured)==null?void 0:Q.height)!=null?ee:ae.MIN_HEIGHT)-q,k=Math.max(ae.MIN_HEIGHT,k)}else k=Y.length>0?Y.reduce((q,Ne)=>{var ye,Ae;return q+((Ae=(ye=Ne.measured)==null?void 0:ye.height)!=null?Ae:0)},0)+He:Math.max(ae.MIN_HEIGHT,(W=(ie=D.measured)==null?void 0:ie.height)!=null?W:0);let{x:O,y:V}=At(D),F={x:O+((oe=M.position.x)!=null?oe:0),y:V+((le=M.position.y)!=null?le:0)};return H=H.map(q=>q.id===M.id?v(b({},q),{position:F,parentId:void 0}):q.id===D.id?v(b({},q),{height:k,measured:v(b({},q.measured),{height:k})}):q),H=uo(H),H};return{onDragOver:P,onDragLeave:R,onDrop:$,onNodeDrag:S,onNodeDragStart:te,onNodeDragStop:K}};var Wu=require("@xyflow/react"),Fu=require("@produto-lecom/lecom-ui"),Xu=require("react");var Lh=30,Rh=e=>{if(!e||!(e instanceof HTMLElement))return!1;let t=e.tagName.toLowerCase(),o=t==="input"||t==="textarea",n=e.isContentEditable,r=t==="select",i=e.closest('[contenteditable="true"], input, textarea, select')!==null;return o||n||r||i},kh=e=>!Rh(e.target),Uu=({offset:e=Lh,saveHistory:t})=>{let{t:o}=(0,Fu.useTranslation)(),{getNodes:n,setNodes:r,getEdges:i,setEdges:s}=(0,Wu.useReactFlow)(),{getNextId:a}=Lt(),{mode:l,containerRef:c}=U();(0,Xu.useEffect)(()=>{if(l!=="edit")return;let d=c.current;if(!d)return;let u=m=>{if(d.contains(document.activeElement)&&m.ctrlKey&&m.key.toLowerCase()==="d"&&kh(m)){m.preventDefault(),m.stopPropagation();let h=n(),E=i(),f=h.filter(P=>P.selected);if(!f.length)return;let g=new Map,y=[],x=f.filter(P=>Ao(P.type,h));if(x.length===0)return;let w=E.filter(P=>x.some(R=>R.id===P.source)&&x.some(R=>R.id===P.target)),_=a(),N=x.map(P=>{var L;let R=String(_++);g.set(P.id,R);let S=v(b({},P),{id:R,selected:!0,position:{x:P.position.x+e,y:P.position.y+e}});if(P.type==="TASK"){let $=(L=P.data)==null?void 0:L.label,K=Gn($||o("bpmn.task.label.prefix"),[...h,...y]);S.data=v(b({},P.data),{label:K})}return y.push(S),S}),T=w.map(P=>v(b({},P),{id:String(_++),selected:!0,source:g.get(P.source)||P.source,target:g.get(P.target)||P.target})),I=[...h.map(P=>v(b({},P),{selected:!1})),...N],C=[...E.map(P=>v(b({},P),{selected:!1})),...T];r(I),s(C),t("forceSave",{nodes:I,edges:C})}};return d.addEventListener("keydown",u,!0),()=>{d.removeEventListener("keydown",u,!0)}},[n,r,i,s,a,e,o,t,l,c])};var Lr=require("react"),$u=require("@xyflow/react");var Dh=20,Oh=50,Pr={UP:"ArrowUp",DOWN:"ArrowDown",LEFT:"ArrowLeft",RIGHT:"ArrowRight"},Vh=e=>{if(!e||!(e instanceof HTMLElement))return!1;let t=e.tagName.toLowerCase(),o=t==="input"||t==="textarea",n=e.isContentEditable,r=t==="select",i=e.closest('[contenteditable="true"], input, textarea, select')!==null;return o||n||r||i},Ku=e=>{let{getNodes:t}=(0,$u.useReactFlow)(),{mode:o,isMoveTool:n}=U(),r=(0,Lr.useRef)(0),i=(0,Lr.useRef)(new Map);(0,Lr.useEffect)(()=>{let s=a=>{if(o!=="edit"||!n||Vh(a.target)||!Object.values(Pr).includes(a.key))return;let u=t().filter(y=>y.selected);if(u.length===0){i.current.clear();return}a.preventDefault();let m=Date.now(),p=m-r.current<500;r.current=m;let h=a.shiftKey?Oh:Dh,E=0,f=0;switch(a.key){case Pr.UP:f=-h;break;case Pr.DOWN:f=h;break;case Pr.LEFT:E=-h;break;case Pr.RIGHT:E=h;break}let g=u.map(y=>{let x=i.current.get(y.id);(!p||!x)&&(x={x:y.position.x,y:y.position.y});let w={x:x.x+E,y:x.y+f};return i.current.set(y.id,w),{id:y.id,dragging:!0,type:"position",position:w}});e&&e(g)};return window.addEventListener("keydown",s),()=>{window.removeEventListener("keydown",s)}},[t,e,o,n])};var ju=require("@xyflow/react");var Zu={"start-event":"START_EVENT","end-event":"END_EVENT",task:"TASK","gateway-exclusive":"GATEWAY"},Ju={"start-event":"","end-event":"",task:"","gateway-exclusive":"EXCLUSIVE"},qu=(e,t)=>{if(!e){console.warn("Step not found");return}e=e.trim();let o=e.match(/(\<.*?\>)/)||[],n=e.match(/(\[.*?\])/)||[],r=e.match(/(\{.*?\})/)||[],i=e.match(/(--.*|\|.*?\|)/i)||[],s="",a="",l="";if(o.length){switch(o[1]){case"<start>":s="start-event";break;case"<end>":s="end-event";break}e=e.replace(o[1],"")}return n.length&&(s="task",a=n[1].replace(/\[|\]/g,""),e=e.replace(n[1],"")),r.length&&(s="gateway-exclusive",a=r[1].replace(/\{|\}/g,""),e=e.replace(r[1],"")),s||(s="task",a=e),i.length&&(l=i[1].replace(/(\||--)/g,""),e=e.replace(i[1],"")),e=e.trim(),t[e]||(t[e]={type:s,label:a}),{step:e,type:s,label:a,edgeLabel:l}},Hh=e=>{e=e||"";let t=e.trim().split(`
42
- `),o={},n=[];return t.forEach(r=>{r=r||"";let i=r.trim().split("-->");if(i.length!==2){console.warn("Invalid number of steps");return}let s=qu(i[0],o),a=qu(i[1],o);s&&a&&n.push({sourceId:s.step,targetId:a.step,label:s.edgeLabel||a.edgeLabel||""})}),{components:o,connections:n}},Qu=e=>{let{components:t,connections:o}=Hh(e);return{nodes:t,edges:o}};var ep=()=>{let{setNodes:e,setEdges:t,fitView:o}=(0,ju.useReactFlow)(),{getNextId:n}=Lt();return{importFromLia:i=>{let s=typeof i=="string"?i:i.diagramXml||"",{nodes:a,edges:l}=Qu(s),c=[],d=new Map,u=!1,m=n();for(let[f,g]of Object.entries(a)){let y=String(m++),x=Zu[g.type],w=Ju[g.type];x==="START_EVENT"&&(u=!0),d.set(f,y);let _=ue[x].MIN_WIDTH,N=ue[x].MIN_HEIGHT;c.push({id:y,type:x,data:{label:g.label||"",variant:w,attribute:""},position:{x:0,y:0},width:_,height:N,measured:{width:_,height:N}})}let p=[];for(let f of l){let g=v(b({},Mt),{id:String(m++),source:d.get(f.sourceId)||f.sourceId,target:d.get(f.targetId)||f.targetId});p.push(g)}if(!u&&c.length>0){let f=String(m++),g={id:f,type:"START_EVENT",data:{label:"",variant:"",attribute:""},position:{x:0,y:0},width:ue.START_EVENT.MIN_WIDTH,height:ue.START_EVENT.MIN_HEIGHT,measured:{width:ue.START_EVENT.MIN_WIDTH,height:ue.START_EVENT.MIN_HEIGHT}};c.unshift(g);let y=c[1];if(y){let x=v(b({},Mt),{id:String(m++),source:f,target:y.id});p.unshift(x)}}let{nodes:h,edges:E}=Md(c,p);e(h),t(E),o({padding:Bn,minZoom:zn,maxZoom:Yn})}}};var ss=require("react"),Gh={origin:"*",debug:!1};function as(e,t=Gh){let{origin:o,debug:n}=t,r=(0,ss.useCallback)((i,s)=>{let a={event:i,data:s};window.parent.postMessage(a,o||"*")},[o]);return(0,ss.useEffect)(()=>{if(!e)return;let i=s=>{let a=s.data;if(!(a!=null&&a.event)||(a==null?void 0:a.data)===void 0)return;let{event:l,data:c}=a,d;if(Array.isArray(c)){let[,u]=c;d=u.data}else d=c;n&&(console.debug("[postMessage] received:",a),console.debug("[postMessage] eventData:",d)),l&&e[l]&&e[l](d)};return window.addEventListener("message",i),()=>window.removeEventListener("message",i)},[e,n]),{sendMessage:r}}var tp=require("@xyflow/react"),ho=require("react");var op=()=>{let e=(0,tp.useNodesInitialized)(),{initialDiagram:t,isNewDiagram:o,setIsInitialized:n,onElementChanges:r}=U(),{importFromMxGraph:i,exportToMxGraph:s}=Fn(),{sendMessage:a}=as(),l=(0,ho.useRef)(t),c=(0,ho.useRef)(r),d=(0,ho.useRef)(s);(0,ho.useEffect)(()=>{c.current=r},[r]),(0,ho.useEffect)(()=>{d.current=s},[s]),(0,ho.useEffect)(()=>{t&&(i(t),l.current=t)},[t,i]),(0,ho.useEffect)(()=>{if(!e)return;(async()=>{var m;if(await Wr(),n(!0),a("INIT_MODELER",l.current),!o){let p=d.current();(m=c.current)==null||m.call(c,p)}})()},[e,o,n,a])};var aa=require("react"),np=require("@xyflow/react");function rp(){let{setTaskStatuses:e,clearTaskStatuses:t,calculateFlowPath:o}=Fo(),{getEdges:n}=(0,np.useReactFlow)(),r=Jr(),i=(0,aa.useCallback)(a=>{if(!(a!=null&&a.activities))return;e(a.activities);let l=a.activities.map(d=>d.diagramId),c=n();o(c,l),setTimeout(()=>{r()},0)},[e,o,n,r]),s=(0,aa.useCallback)(()=>{t(),setTimeout(()=>{r()},0)},[t,r]);return{handleTasksStatus:i,handleClearTaskStatus:s}}var sp=require("@xyflow/react"),ot=require("react"),ap=require("use-debounce");var zh=500,ip=100,lp=(e=!1)=>{let{getNodes:t,getEdges:o,setNodes:n,setEdges:r}=(0,sp.useReactFlow)(),{mode:i,containerRef:s}=U(),[a,l]=(0,ot.useState)({history:[],currentStep:0}),{history:c,currentStep:d}=a,u=d>0,m=d<c.length-1,p=(0,ot.useCallback)((T,I)=>{n(T[I].nodes),r(T[I].edges)},[n,r]),h=(0,ot.useCallback)(()=>{if(d>0){let T=d-1;l(I=>v(b({},I),{currentStep:T})),p(c,T)}},[d,c,p]),E=(0,ot.useCallback)(()=>{if(d<c.length-1){let T=d+1;l(I=>v(b({},I),{currentStep:T})),p(c,T)}},[c,d,p]),f=(0,ot.useCallback)(T=>{l(I=>{let C=I.history[I.currentStep];if(C&&JSON.stringify(C)===JSON.stringify(T))return I;let S=[...I.history.slice(0,I.currentStep+1),T],L=S.length>ip?S.slice(S.length-ip):S;return{history:L,currentStep:L.length-1}})},[]),g=(0,ot.useCallback)((T,I)=>{let C=T.map(R=>v(b({},R),{selected:!1,className:"",data:v(b({},R.data),{hasError:!1})})),P=I.map(R=>v(b({},R),{data:v(b({},R.data),{hasError:!1})}));return{nodes:Bo(C),edges:P}},[]),y=(0,ot.useCallback)(()=>g(t(),o()),[t,o,g]),x=(0,ap.useDebouncedCallback)(()=>{let T=y();f(T)},zh),w=(0,ot.useCallback)((T,I)=>{if(!e)return;if(c.length===0){let R=y();l({history:[R],currentStep:0})}if(T==="forceSave"){if(I){f(g(I.nodes,I.edges));return}x();return}T.some(R=>R.type==="select")||T.some(R=>R.type==="position"&&R.dragging)||x()},[e,x,c.length,y,f,g]);(0,ot.useEffect)(()=>{if(e&&c.length===0){let T=y();l({history:[T],currentStep:0})}},[e,c.length,y]);let _=(0,ot.useCallback)(T=>{l({history:T||[],currentStep:0})},[]),N=(0,ot.useCallback)(()=>{l({history:[],currentStep:0})},[]);return(0,ot.useEffect)(()=>{if(i!=="edit")return;let T=s.current;if(!T)return;let I=C=>{if(!T.contains(document.activeElement)||!(C.ctrlKey||C.metaKey))return;let S=C.key.toLowerCase();if(C.shiftKey&&S==="z"){C.preventDefault(),E();return}S==="z"&&(C.preventDefault(),h())};return T.addEventListener("keydown",I),()=>{T.removeEventListener("keydown",I)}},[h,E,i,s]),{history:c,undo:h,redo:E,canUndo:u,canRedo:m,saveHistory:w,resetHistory:_,clearHistory:N}};var dp=()=>{let{t:e}=(0,cp.useTranslation)(),[t,o,n]=(0,jt.useNodesState)([]),[r,i,s]=(0,jt.useEdgesState)([]),{getNodes:a,getNode:l}=(0,jt.useReactFlow)(),{toast:c}=st(),d=(0,jt.useStoreApi)(),{instanceId:u,isInitialized:m,setIsConnecting:p,setIsMultipleSelection:h,onElementClick:E}=U(),{updateHelperLines:f,HelperLines:g}=Si(),{undo:y,redo:x,canUndo:w,canRedo:_,saveHistory:N}=lp(m),{onNodeDrag:T,onDrop:I,onDragOver:C,onDragLeave:P,onNodeDragStop:R,onNodeDragStart:S}=Yu({nodes:t,setNodes:o,setEdges:i,saveHistory:N}),{isValidConnection:L,onConnect:$,onReconnect:K,onReconnectStart:te,onReconnectEnd:z,setReconnectingEdge:M,clearReconnectingEdge:H}=_u({setEdges:i,saveHistory:N}),{handleValidationComplete:D,clearValidation:A,dismissValidationPanel:Y,validateDiagram:B,getIsClearingValidation:k}=Lu(),{importFromLia:O}=ep(),{handleTasksStatus:V,handleClearTaskStatus:F}=rp(),{clearPathEdges:J}=Fo(),{emitElementChanges:X,handleNodeChanges:Q,handleEdgeChanges:ee}=ns(),ie=Jr();Hu({saveHistory:N}),Uu({saveHistory:N}),op();let W=(0,Tt.useCallback)(()=>{o([]),i([]),J(),setTimeout(ie,0)},[o,i,J,ie]),{selectElements:oe,clearSelection:le}=Co(),{importFromMxGraph:q,exportToMxGraph:Ne}=Fn(),{configureElement:ye,getConfigureElement:Ae}=Di(),Z=(0,Tt.useCallback)(Ee=>{Ee!=null&&Ee.id&&oe([Ee.id])},[oe]),{sendMessage:de}=as({LIA_CREATE_DIAGRAM:O,CLEAR_DIAGRAM:W,TASKS_STATUS:V,CLEAR_TASKS_STATUS:F,EXTERNAL_TASK_SELECT:Z}),re=(0,Tt.useCallback)(()=>t.length+r.length,[t,r]);(0,Tt.useEffect)(()=>(qt.set(u,{importFromMxGraph:q,exportToMxGraph:Ne,selectElements:oe,clearSelection:le,configureElement:ye,getConfigureElement:Ae,getElementsCount:re,setReconnectingEdge:M,clearReconnectingEdge:H}),()=>{qt.delete(u)}),[u,q,Ne,oe,le,ye,Ae,re,M,H]);let j=(0,Tt.useCallback)((Ee,he)=>{if(he.type!=="TASK"&&he.type!=="GATEWAY")return;let pe=Ae(he.id);pe&&(E==null||E(pe)),he.type==="TASK"&&de("SELECT_TASK",{id:he.id})},[Ae,E,de]),xe=(0,Tt.useCallback)((Ee,he)=>{if(he.type!=="SEQUENCE_EDGE")return;let pe=l(he.source),De=l(he.target),{isFromStartEvent:dt,isGatewayToGateway:wt,isActiviyToAndGateway:nt,isToEndEvent:Yt}=Zr(pe,De);if(!(!dt&&!wt&&!nt&&!Yt))return;let ro=Ae(he.id);ro&&(E==null||E(ro))},[Ae,l,E]),Ce=(0,Tt.useCallback)(Ee=>{let he=f(Ee,t);n(he),N(Ee),k()||Y(),Q(Ee)},[t,n,N,k,Y,f,Q]),ke=(0,Tt.useCallback)(Ee=>{s(Ee),N(Ee),k()||Y(),ee(Ee)},[s,N,k,Y,ee]);Ku(Ce);let qe=(0,Tt.useCallback)(({nodes:Ee,edges:he})=>{h(Ee.length+he.length>=2)},[h]);(0,jt.useOnSelectionChange)({onChange:qe});let vt=(0,Tt.useCallback)(async({nodes:Ee})=>Ee.some(pe=>pe.type==="LANE"&&t.some(De=>De.parentId===pe.id))?(c({variant:"error",title:e("validation.errors.title"),content:e("editor.toolbar.delete_pool_lane_error")}),!1):!0,[t,e,c]),no=()=>{N("forceSave"),X(),Y()},Bt=()=>{p(!0)},zt=()=>{p(!1),Y()},ct=(0,Tt.useCallback)(Ee=>{let he=new Set(Ee.filter(pe=>pe.type==="LANE"&&!!pe.parentId).map(pe=>pe.parentId));he.size!==0&&setTimeout(()=>{var dt,wt;let pe=a(),De=new Map(pe.map(nt=>[nt.id,nt]));for(let nt of he){let Yt=Wo(pe.filter(io=>io.type==="LANE"&&io.parentId===nt));if(Yt.length===0)continue;let xo=0;for(let io of Yt)De.set(io.id,v(b({},io),{position:{x:ae.HEADER_WIDTH,y:xo}})),xo+=(wt=(dt=io.measured)==null?void 0:dt.height)!=null?wt:0;let ro=De.get(nt);ro&&De.set(nt,v(b({},ro),{height:xo,measured:v(b({},ro.measured),{height:xo})}))}o(pe.map(nt=>{var Yt;return(Yt=De.get(nt.id))!=null?Yt:nt}))},0)},[a,o]);return{nodes:t,setNodes:o,edges:r,setEdges:i,events:{isValidConnection:L,onConnect:$,onReconnect:K,onReconnectStart:te,onReconnectEnd:z,onDrop:I,onDragOver:C,onDragLeave:P,onNodeDrag:T,onNodeDragStop:R,onNodeDragStart:S,onNodeClick:j,onEdgeClick:xe,onDropCapture:no,onConnectStart:Bt,onConnectEnd:zt,onSelectionEnd:()=>setTimeout(()=>d.setState({nodesSelectionActive:!1}),0),onNodesChange:Ce,onEdgesChange:ke,onBeforeDelete:vt,onNodesDelete:ct},ui:{handleCloseValidationPanel:A},controls:{undo:y,redo:x,canUndo:w,canRedo:_},components:{HelperLines:g},actions:{saveHistory:N,selectElements:oe,clearSelection:le,exportToMxGraph:Ne,validateDiagram:B,handleValidationComplete:D,setReconnectingEdge:M,clearReconnectingEdge:H}}};var up=require("@xyflow/react"),Ro=require("react");var Yh=".react-flow__node, .react-flow__edge, .react-flow__node-toolbar";function pp(e,t,o){let[n,r]=(0,Ro.useState)(!1),i=(0,Ro.useRef)(null),{getViewport:s,setViewport:a}=(0,up.useReactFlow)(),l=(0,Ro.useCallback)(()=>{i.current=null,r(!1)},[]);return(0,Ro.useEffect)(()=>{let c=e.current;if(!c)return;let d=p=>{if(!Ar.some(E=>E===p.button)||t.current||o.current||(r(!0),!(p.target instanceof Element))||!p.target.closest(Yh))return;p.preventDefault(),p.stopPropagation();let h=s();i.current={pointerX:p.clientX,pointerY:p.clientY,viewportX:h.x,viewportY:h.y,zoom:h.zoom}},u=p=>{let h=i.current;if(h){if((p.buttons&ra)===0){l();return}a({x:h.viewportX+(p.clientX-h.pointerX),y:h.viewportY+(p.clientY-h.pointerY),zoom:h.zoom})}},m=p=>{(p.buttons&ra)===0&&l()};return c.addEventListener("pointerdown",d,!0),window.addEventListener("pointermove",u),window.addEventListener("pointerup",m),window.addEventListener("pointercancel",l),window.addEventListener("blur",l),()=>{c.removeEventListener("pointerdown",d,!0),window.removeEventListener("pointermove",u),window.removeEventListener("pointerup",m),window.removeEventListener("pointercancel",l),window.removeEventListener("blur",l)}},[e,t,o,s,a,l]),n}var la=require("react/jsx-runtime"),ls=({id:e,className:t})=>(0,la.jsx)("marker",{id:e,className:G("react-flow__arrowhead",t),viewBox:"0 0 10 10",refX:"9",refY:"5",markerWidth:"7",markerHeight:"7",orient:"auto",markerUnits:"userSpaceOnUse",fill:"currentColor",stroke:"currentColor",children:(0,la.jsx)("path",{d:"M 0 0 L 10 5 L 0 10 Z"})});var rn=require("react/jsx-runtime"),fp=()=>(0,rn.jsx)("svg",{style:{position:"absolute",top:0,left:0},children:(0,rn.jsxs)("defs",{children:[(0,rn.jsx)(ls,{id:"sequence-edge-marker",className:"text-grey-500"}),(0,rn.jsx)(ls,{id:"sequence-edge-marker-hovered",className:"text-grey-800"}),(0,rn.jsx)(ls,{id:"sequence-edge-marker-highlighted",className:"text-blue-500"})]})});var Oo=require("@produto-lecom/lecom-ui");var Dr=require("@xyflow/react"),Be=require("@produto-lecom/lecom-ui"),eo=require("lucide-react"),yo=require("react");var ko=require("@produto-lecom/lecom-ui");var Rr=(x=>(x.START_EVENT="START_EVENT",x.END_EVENT="END_EVENT",x.TASK="TASK",x.SUBPROCESS="SUBPROCESS",x.GATEWAY="GATEWAY",x.LANE="LANE",x.ANNOTATION="ANNOTATION",x.CONNECTION="CONNECTION",x.INTERMEDIATE_EVENT="INTERMEDIATE_EVENT",x.ACTIVITY="ACTIVITY",x.PROCESS_INTERFACE="PROCESS_INTERFACE",x.WORKFLOW_INTERFACE="WORKFLOW_INTERFACE",x.VARIANT_ACTIVITY="VARIANT_ACTIVITY",x.AUTO_ACTIVITY="AUTO_ACTIVITY",x.DATA_STORE="DATA_STORE",x.DATA_OBJECT="DATA_OBJECT",x.DATA_OUTPUT="DATA_OUTPUT",x.DATA_INPUT="DATA_INPUT",x.MARKER="MARKER",x))(Rr||{});var ds=require("@produto-lecom/lecom-ui"),vp=require("@xyflow/react");var mp=async e=>new Promise((t,o)=>{let n=new FileReader;n.onload=r=>{var i;t((i=r.target)==null?void 0:i.result)},n.onerror=r=>{var i;o((i=r.target)==null?void 0:i.error)},n.readAsText(e)});function gp({columns:e=[],rows:t=[],fileName:o="report"}){if(!e.length||!t.length)return;let r="data:text/csv;charset=utf-8,"+[e,...t].map(s=>s.join(",")).join(`
42
+ `),o={},n=[];return t.forEach(r=>{r=r||"";let i=r.trim().split("-->");if(i.length!==2){console.warn("Invalid number of steps");return}let s=qu(i[0],o),a=qu(i[1],o);s&&a&&n.push({sourceId:s.step,targetId:a.step,label:s.edgeLabel||a.edgeLabel||""})}),{components:o,connections:n}},Qu=e=>{let{components:t,connections:o}=Hh(e);return{nodes:t,edges:o}};var ep=()=>{let{setNodes:e,setEdges:t,fitView:o}=(0,ju.useReactFlow)(),{getNextId:n}=Lt();return{importFromLia:i=>{let s=typeof i=="string"?i:i.diagramXml||"",{nodes:a,edges:l}=Qu(s),c=[],d=new Map,u=!1,m=n();for(let[f,g]of Object.entries(a)){let y=String(m++),x=Zu[g.type],w=Ju[g.type];x==="START_EVENT"&&(u=!0),d.set(f,y);let _=ue[x].MIN_WIDTH,N=ue[x].MIN_HEIGHT;c.push({id:y,type:x,data:{label:g.label||"",variant:w,attribute:""},position:{x:0,y:0},width:_,height:N,measured:{width:_,height:N}})}let p=[];for(let f of l){let g=v(b({},Mt),{id:String(m++),source:d.get(f.sourceId)||f.sourceId,target:d.get(f.targetId)||f.targetId});p.push(g)}if(!u&&c.length>0){let f=String(m++),g={id:f,type:"START_EVENT",data:{label:"",variant:"",attribute:""},position:{x:0,y:0},width:ue.START_EVENT.MIN_WIDTH,height:ue.START_EVENT.MIN_HEIGHT,measured:{width:ue.START_EVENT.MIN_WIDTH,height:ue.START_EVENT.MIN_HEIGHT}};c.unshift(g);let y=c[1];if(y){let x=v(b({},Mt),{id:String(m++),source:f,target:y.id});p.unshift(x)}}let{nodes:h,edges:E}=Md(c,p);e(h),t(E),o({padding:Bn,minZoom:zn,maxZoom:Yn})}}};var ss=require("react"),Gh={origin:"*",debug:!1};function as(e,t=Gh){let{origin:o,debug:n}=t,r=(0,ss.useCallback)((i,s)=>{let a={event:i,data:s};window.parent.postMessage(a,o||"*")},[o]);return(0,ss.useEffect)(()=>{if(!e)return;let i=s=>{let a=s.data;if(!(a!=null&&a.event)||(a==null?void 0:a.data)===void 0)return;let{event:l,data:c}=a,d;if(Array.isArray(c)){let[,u]=c;d=u.data}else d=c;n&&(console.debug("[postMessage] received:",a),console.debug("[postMessage] eventData:",d)),l&&e[l]&&e[l](d)};return window.addEventListener("message",i),()=>window.removeEventListener("message",i)},[e,n]),{sendMessage:r}}var tp=require("@xyflow/react"),ho=require("react");var op=()=>{let e=(0,tp.useNodesInitialized)(),{initialDiagram:t,isNewDiagram:o,setIsInitialized:n,onElementChanges:r}=U(),{importFromMxGraph:i,exportToMxGraph:s}=Fn(),{sendMessage:a}=as(),l=(0,ho.useRef)(t),c=(0,ho.useRef)(r),d=(0,ho.useRef)(s);(0,ho.useEffect)(()=>{c.current=r},[r]),(0,ho.useEffect)(()=>{d.current=s},[s]),(0,ho.useEffect)(()=>{t&&(i(t),l.current=t)},[t,i]),(0,ho.useEffect)(()=>{if(!e)return;(async()=>{var m;if(await Wr(),n(!0),a("INIT_MODELER",l.current),!o){let p=d.current();(m=c.current)==null||m.call(c,p)}})()},[e,o,n,a])};var aa=require("react"),np=require("@xyflow/react");function rp(){let{setTaskStatuses:e,clearTaskStatuses:t,calculateFlowPath:o}=Fo(),{getEdges:n}=(0,np.useReactFlow)(),r=Jr(),i=(0,aa.useCallback)(a=>{if(!(a!=null&&a.activities))return;e(a.activities);let l=a.activities.map(d=>d.diagramId),c=n();o(c,l),setTimeout(()=>{r()},0)},[e,o,n,r]),s=(0,aa.useCallback)(()=>{t(),setTimeout(()=>{r()},0)},[t,r]);return{handleTasksStatus:i,handleClearTaskStatus:s}}var sp=require("@xyflow/react"),ot=require("react"),ap=require("use-debounce");var zh=500,ip=100,lp=(e=!1)=>{let{getNodes:t,getEdges:o,setNodes:n,setEdges:r}=(0,sp.useReactFlow)(),{mode:i,containerRef:s}=U(),[a,l]=(0,ot.useState)({history:[],currentStep:0}),{history:c,currentStep:d}=a,u=d>0,m=d<c.length-1,p=(0,ot.useCallback)((T,I)=>{n(T[I].nodes),r(T[I].edges)},[n,r]),h=(0,ot.useCallback)(()=>{if(d>0){let T=d-1;l(I=>v(b({},I),{currentStep:T})),p(c,T)}},[d,c,p]),E=(0,ot.useCallback)(()=>{if(d<c.length-1){let T=d+1;l(I=>v(b({},I),{currentStep:T})),p(c,T)}},[c,d,p]),f=(0,ot.useCallback)(T=>{l(I=>{let C=I.history[I.currentStep];if(C&&JSON.stringify(C)===JSON.stringify(T))return I;let S=[...I.history.slice(0,I.currentStep+1),T],L=S.length>ip?S.slice(S.length-ip):S;return{history:L,currentStep:L.length-1}})},[]),g=(0,ot.useCallback)((T,I)=>{let C=T.map(R=>v(b({},R),{selected:!1,className:"",data:v(b({},R.data),{hasError:!1})})),P=I.map(R=>v(b({},R),{data:v(b({},R.data),{hasError:!1})}));return{nodes:Bo(C),edges:P}},[]),y=(0,ot.useCallback)(()=>g(t(),o()),[t,o,g]),x=(0,ap.useDebouncedCallback)(()=>{let T=y();f(T)},zh),w=(0,ot.useCallback)((T,I)=>{if(!e)return;if(c.length===0){let R=y();l({history:[R],currentStep:0})}if(T==="forceSave"){if(I){f(g(I.nodes,I.edges));return}x();return}T.some(R=>R.type==="select")||T.some(R=>R.type==="position"&&R.dragging)||x()},[e,x,c.length,y,f,g]);(0,ot.useEffect)(()=>{if(e&&c.length===0){let T=y();l({history:[T],currentStep:0})}},[e,c.length,y]);let _=(0,ot.useCallback)(T=>{l({history:T||[],currentStep:0})},[]),N=(0,ot.useCallback)(()=>{l({history:[],currentStep:0})},[]);return(0,ot.useEffect)(()=>{if(i!=="edit")return;let T=s.current;if(!T)return;let I=C=>{if(!T.contains(document.activeElement)||!(C.ctrlKey||C.metaKey))return;let S=C.key.toLowerCase();if(S==="y"||C.shiftKey&&S==="z"){C.preventDefault(),E();return}S==="z"&&(C.preventDefault(),h())};return T.addEventListener("keydown",I),()=>{T.removeEventListener("keydown",I)}},[h,E,i,s]),{history:c,undo:h,redo:E,canUndo:u,canRedo:m,saveHistory:w,resetHistory:_,clearHistory:N}};var dp=()=>{let{t:e}=(0,cp.useTranslation)(),[t,o,n]=(0,jt.useNodesState)([]),[r,i,s]=(0,jt.useEdgesState)([]),{getNodes:a,getNode:l}=(0,jt.useReactFlow)(),{toast:c}=st(),d=(0,jt.useStoreApi)(),{instanceId:u,isInitialized:m,setIsConnecting:p,setIsMultipleSelection:h,onElementClick:E}=U(),{updateHelperLines:f,HelperLines:g}=Si(),{undo:y,redo:x,canUndo:w,canRedo:_,saveHistory:N}=lp(m),{onNodeDrag:T,onDrop:I,onDragOver:C,onDragLeave:P,onNodeDragStop:R,onNodeDragStart:S}=Yu({nodes:t,setNodes:o,setEdges:i,saveHistory:N}),{isValidConnection:L,onConnect:$,onReconnect:K,onReconnectStart:te,onReconnectEnd:z,setReconnectingEdge:M,clearReconnectingEdge:H}=_u({setEdges:i,saveHistory:N}),{handleValidationComplete:D,clearValidation:A,dismissValidationPanel:Y,validateDiagram:B,getIsClearingValidation:k}=Lu(),{importFromLia:O}=ep(),{handleTasksStatus:V,handleClearTaskStatus:F}=rp(),{clearPathEdges:J}=Fo(),{emitElementChanges:X,handleNodeChanges:Q,handleEdgeChanges:ee}=ns(),ie=Jr();Hu({saveHistory:N}),Uu({saveHistory:N}),op();let W=(0,Tt.useCallback)(()=>{o([]),i([]),J(),setTimeout(ie,0)},[o,i,J,ie]),{selectElements:oe,clearSelection:le}=Co(),{importFromMxGraph:q,exportToMxGraph:Ne}=Fn(),{configureElement:ye,getConfigureElement:Ae}=Di(),Z=(0,Tt.useCallback)(Ee=>{Ee!=null&&Ee.id&&oe([Ee.id])},[oe]),{sendMessage:de}=as({LIA_CREATE_DIAGRAM:O,CLEAR_DIAGRAM:W,TASKS_STATUS:V,CLEAR_TASKS_STATUS:F,EXTERNAL_TASK_SELECT:Z}),re=(0,Tt.useCallback)(()=>t.length+r.length,[t,r]);(0,Tt.useEffect)(()=>(qt.set(u,{importFromMxGraph:q,exportToMxGraph:Ne,selectElements:oe,clearSelection:le,configureElement:ye,getConfigureElement:Ae,getElementsCount:re,setReconnectingEdge:M,clearReconnectingEdge:H}),()=>{qt.delete(u)}),[u,q,Ne,oe,le,ye,Ae,re,M,H]);let j=(0,Tt.useCallback)((Ee,he)=>{if(he.type!=="TASK"&&he.type!=="GATEWAY")return;let pe=Ae(he.id);pe&&(E==null||E(pe)),he.type==="TASK"&&de("SELECT_TASK",{id:he.id})},[Ae,E,de]),xe=(0,Tt.useCallback)((Ee,he)=>{if(he.type!=="SEQUENCE_EDGE")return;let pe=l(he.source),De=l(he.target),{isFromStartEvent:dt,isGatewayToGateway:wt,isActiviyToAndGateway:nt,isToEndEvent:Yt}=Zr(pe,De);if(!(!dt&&!wt&&!nt&&!Yt))return;let ro=Ae(he.id);ro&&(E==null||E(ro))},[Ae,l,E]),Ce=(0,Tt.useCallback)(Ee=>{let he=f(Ee,t);n(he),N(Ee),k()||Y(),Q(Ee)},[t,n,N,k,Y,f,Q]),ke=(0,Tt.useCallback)(Ee=>{s(Ee),N(Ee),k()||Y(),ee(Ee)},[s,N,k,Y,ee]);Ku(Ce);let qe=(0,Tt.useCallback)(({nodes:Ee,edges:he})=>{h(Ee.length+he.length>=2)},[h]);(0,jt.useOnSelectionChange)({onChange:qe});let vt=(0,Tt.useCallback)(async({nodes:Ee})=>Ee.some(pe=>pe.type==="LANE"&&t.some(De=>De.parentId===pe.id))?(c({variant:"error",title:e("validation.errors.title"),content:e("editor.toolbar.delete_pool_lane_error")}),!1):!0,[t,e,c]),no=()=>{N("forceSave"),X(),Y()},Bt=()=>{p(!0)},zt=()=>{p(!1),Y()},ct=(0,Tt.useCallback)(Ee=>{let he=new Set(Ee.filter(pe=>pe.type==="LANE"&&!!pe.parentId).map(pe=>pe.parentId));he.size!==0&&setTimeout(()=>{var dt,wt;let pe=a(),De=new Map(pe.map(nt=>[nt.id,nt]));for(let nt of he){let Yt=Wo(pe.filter(io=>io.type==="LANE"&&io.parentId===nt));if(Yt.length===0)continue;let xo=0;for(let io of Yt)De.set(io.id,v(b({},io),{position:{x:ae.HEADER_WIDTH,y:xo}})),xo+=(wt=(dt=io.measured)==null?void 0:dt.height)!=null?wt:0;let ro=De.get(nt);ro&&De.set(nt,v(b({},ro),{height:xo,measured:v(b({},ro.measured),{height:xo})}))}o(pe.map(nt=>{var Yt;return(Yt=De.get(nt.id))!=null?Yt:nt}))},0)},[a,o]);return{nodes:t,setNodes:o,edges:r,setEdges:i,events:{isValidConnection:L,onConnect:$,onReconnect:K,onReconnectStart:te,onReconnectEnd:z,onDrop:I,onDragOver:C,onDragLeave:P,onNodeDrag:T,onNodeDragStop:R,onNodeDragStart:S,onNodeClick:j,onEdgeClick:xe,onDropCapture:no,onConnectStart:Bt,onConnectEnd:zt,onSelectionEnd:()=>setTimeout(()=>d.setState({nodesSelectionActive:!1}),0),onNodesChange:Ce,onEdgesChange:ke,onBeforeDelete:vt,onNodesDelete:ct},ui:{handleCloseValidationPanel:A},controls:{undo:y,redo:x,canUndo:w,canRedo:_},components:{HelperLines:g},actions:{saveHistory:N,selectElements:oe,clearSelection:le,exportToMxGraph:Ne,validateDiagram:B,handleValidationComplete:D,setReconnectingEdge:M,clearReconnectingEdge:H}}};var up=require("@xyflow/react"),Ro=require("react");var Yh=".react-flow__node, .react-flow__edge, .react-flow__node-toolbar";function pp(e,t,o){let[n,r]=(0,Ro.useState)(!1),i=(0,Ro.useRef)(null),{getViewport:s,setViewport:a}=(0,up.useReactFlow)(),l=(0,Ro.useCallback)(()=>{i.current=null,r(!1)},[]);return(0,Ro.useEffect)(()=>{let c=e.current;if(!c)return;let d=p=>{if(!Ar.some(E=>E===p.button)||t.current||o.current||(r(!0),!(p.target instanceof Element))||!p.target.closest(Yh))return;p.preventDefault(),p.stopPropagation();let h=s();i.current={pointerX:p.clientX,pointerY:p.clientY,viewportX:h.x,viewportY:h.y,zoom:h.zoom}},u=p=>{let h=i.current;if(h){if((p.buttons&ra)===0){l();return}a({x:h.viewportX+(p.clientX-h.pointerX),y:h.viewportY+(p.clientY-h.pointerY),zoom:h.zoom})}},m=p=>{(p.buttons&ra)===0&&l()};return c.addEventListener("pointerdown",d,!0),window.addEventListener("pointermove",u),window.addEventListener("pointerup",m),window.addEventListener("pointercancel",l),window.addEventListener("blur",l),()=>{c.removeEventListener("pointerdown",d,!0),window.removeEventListener("pointermove",u),window.removeEventListener("pointerup",m),window.removeEventListener("pointercancel",l),window.removeEventListener("blur",l)}},[e,t,o,s,a,l]),n}var la=require("react/jsx-runtime"),ls=({id:e,className:t})=>(0,la.jsx)("marker",{id:e,className:G("react-flow__arrowhead",t),viewBox:"0 0 10 10",refX:"9",refY:"5",markerWidth:"7",markerHeight:"7",orient:"auto",markerUnits:"userSpaceOnUse",fill:"currentColor",stroke:"currentColor",children:(0,la.jsx)("path",{d:"M 0 0 L 10 5 L 0 10 Z"})});var rn=require("react/jsx-runtime"),fp=()=>(0,rn.jsx)("svg",{style:{position:"absolute",top:0,left:0},children:(0,rn.jsxs)("defs",{children:[(0,rn.jsx)(ls,{id:"sequence-edge-marker",className:"text-grey-500"}),(0,rn.jsx)(ls,{id:"sequence-edge-marker-hovered",className:"text-grey-800"}),(0,rn.jsx)(ls,{id:"sequence-edge-marker-highlighted",className:"text-blue-500"})]})});var Oo=require("@produto-lecom/lecom-ui");var Dr=require("@xyflow/react"),Be=require("@produto-lecom/lecom-ui"),eo=require("lucide-react"),yo=require("react");var ko=require("@produto-lecom/lecom-ui");var Rr=(x=>(x.START_EVENT="START_EVENT",x.END_EVENT="END_EVENT",x.TASK="TASK",x.SUBPROCESS="SUBPROCESS",x.GATEWAY="GATEWAY",x.LANE="LANE",x.ANNOTATION="ANNOTATION",x.CONNECTION="CONNECTION",x.INTERMEDIATE_EVENT="INTERMEDIATE_EVENT",x.ACTIVITY="ACTIVITY",x.PROCESS_INTERFACE="PROCESS_INTERFACE",x.WORKFLOW_INTERFACE="WORKFLOW_INTERFACE",x.VARIANT_ACTIVITY="VARIANT_ACTIVITY",x.AUTO_ACTIVITY="AUTO_ACTIVITY",x.DATA_STORE="DATA_STORE",x.DATA_OBJECT="DATA_OBJECT",x.DATA_OUTPUT="DATA_OUTPUT",x.DATA_INPUT="DATA_INPUT",x.MARKER="MARKER",x))(Rr||{});var ds=require("@produto-lecom/lecom-ui"),vp=require("@xyflow/react");var mp=async e=>new Promise((t,o)=>{let n=new FileReader;n.onload=r=>{var i;t((i=r.target)==null?void 0:i.result)},n.onerror=r=>{var i;o((i=r.target)==null?void 0:i.error)},n.readAsText(e)});function gp({columns:e=[],rows:t=[],fileName:o="report"}){if(!e.length||!t.length)return;let r="data:text/csv;charset=utf-8,"+[e,...t].map(s=>s.join(",")).join(`
43
43
  `),i=encodeURI(r);cs(i,`${o}.csv`)}var cs=(e,t)=>{let o=document.createElement("a");o.setAttribute("download",t),o.setAttribute("href",e),document.body.appendChild(o),o.click(),document.body.removeChild(o)};function hp(e){return e==null?void 0:e.replaceAll("&#xA;"," ")}var GS={START_EVENT:"START_EVENT",END_EVENT:"END_EVENT",TASK:"TASK",GATEWAY:"GATEWAY",ANNOTATION:"ANNOTATION"},yp={script:"SCRIPT",subprocess:"SUBPROCESS"},xp={"marker-loop":"LOOP"},Ep={complex:"COMPLEX",none:"EXCLUSIVE",exclusive:"EXCLUSIVE",parallel:"PARALLEL",inclusive:"EXCLUSIVE"};var sn=({cell:e,type:t,variant:o="",attribute:n=""})=>{let{_attributes:r,mxGeometry:i}=e,{value:s,parent:a}=r,l=Number(i._attributes.width),c=Number(i._attributes.height),d=a==="1"?void 0:a;return{id:r.id,parentId:d,type:t,data:{label:s||"",variant:o,attribute:n},position:{x:Number(i._attributes.x)||0,y:Number(i._attributes.y)||0},width:l,height:c,measured:{width:l,height:c}}},Fh=e=>{let{subType:t,style:o}=e._attributes,n="imported";return["none"].includes(t)||(n="adapted"),e.mxGeometry._attributes.width=ue.START_EVENT.MIN_WIDTH,e.mxGeometry._attributes.height=ue.START_EVENT.MIN_HEIGHT,{node:sn({cell:e,type:"START_EVENT"}),status:n,originalType:o}},Xh=e=>{let{subType:t,style:o}=e==null?void 0:e._attributes,n="imported";return["none"].includes(t)||(n="adapted"),e.mxGeometry._attributes.width=ue.END_EVENT.MIN_WIDTH,e.mxGeometry._attributes.height=ue.END_EVENT.MIN_HEIGHT,{node:sn({cell:e,type:"END_EVENT"}),status:n,originalType:o}},Uh=(e,t)=>{let{id:o,subType:n,style:r}=e==null?void 0:e._attributes,i=yp[n],s=t.get(o)||"",a=xp[s]||"",l=a==="LOOP",c="imported";return!["script","none"].includes(n)&&!l&&(c="adapted"),e.mxGeometry._attributes.width=bo(e.mxGeometry._attributes.width||0,ue.TASK.MIN_WIDTH),e.mxGeometry._attributes.height=bo(e.mxGeometry._attributes.height||0,ue.TASK.MIN_HEIGHT),{node:sn({cell:e,type:"TASK",variant:i,attribute:a}),status:c,originalType:r}},$h=e=>{let{style:t,subType:o}=e==null?void 0:e._attributes,n=Ep[o],r=["none","inclusive","event-based"],i="imported";return r.includes(o)&&(i="adapted"),e.mxGeometry._attributes.width=ue.GATEWAY.MIN_WIDTH,e.mxGeometry._attributes.height=ue.GATEWAY.MIN_HEIGHT,{node:sn({cell:e,type:"GATEWAY",variant:n}),status:i,originalType:t}},Kh=e=>{let{style:t}=e==null?void 0:e._attributes;return{node:sn({cell:e,type:"LANE"}),status:"imported",originalType:t}},qh=e=>{let{style:t}=e==null?void 0:e._attributes;return e.mxGeometry._attributes.width=bo(e.mxGeometry._attributes.width||0,ue.ANNOTATION.MIN_WIDTH),e.mxGeometry._attributes.height=bo(e.mxGeometry._attributes.height||0,ue.ANNOTATION.MIN_HEIGHT),{node:sn({cell:e,type:"ANNOTATION"}),status:"imported",originalType:t}},bp=e=>{let{style:t}=e==null?void 0:e._attributes;return e.mxGeometry._attributes.width=ue.UNSUPPORTED.MIN_WIDTH,e.mxGeometry._attributes.height=ue.UNSUPPORTED.MIN_HEIGHT,{node:sn({cell:e,type:"UNSUPPORTED"}),status:"unsupported",originalType:t}},_p=(e,t)=>{let{id:o,source:n,target:r,value:i}=e._attributes;return v(b({},Mt),{id:o,source:t.get(n)||n,target:t.get(r)||r,data:{label:i||""}})},Tp={TASK:Uh,GATEWAY:$h,START_EVENT:Fh,END_EVENT:Xh,LANE:Kh,ANNOTATION:qh};var Zh=e=>{let t=new Map,o=Object.values(Rr),n=[],r=new Map;e.forEach(a=>{var c;let l=(c=a._attributes)==null?void 0:c.type;if(l==="MARKER"){r.set(a._attributes.parent,a._attributes.style);return}if(o.includes(l)){n.push(a);return}});let i=[],s=[];for(let a of n){let{type:l}=a._attributes,c=Tp[l]||bp,{node:d,status:u,originalType:m}=c(a,r);s.push(d),i.push({originalType:m,type:d.type,variant:d.data.variant,value:hp(d.data.label),status:u})}return{nodes:s,governanceIdToNodeIdMap:t,summary:i}},Jh=(e,t)=>e.filter(r=>{var i;return(i=r._attributes)==null?void 0:i.edge}).map(r=>_p(r,t)),Qh=e=>{let{mxGraphModel:t}=e,{nodes:o,governanceIdToNodeIdMap:n,summary:r}=Zh(t.root.mxCell),i=Jh(t.root.mxCell,n);return{nodes:o,edges:i,summary:r}},jh=async e=>{let t=await mp(e),o=$i(t);if(!o)throw new Error("EMPTY_FILE");let{metadata:n,mxGraphModel:r}=o.modeler||{},i=(n==null?void 0:n.app)&&(n==null?void 0:n.diagramType)&&(n==null?void 0:n.version),s=r==null?void 0:r.root;if(!i||!s)throw new Error("INVALID_FILE");if(!Object.keys(r.root.mxCell||{}).length)throw new Error("CONTAIN_NO_CELLS");return{metadata:n,mxGraphModel:r}},Np=async e=>{try{let t=await jh(e),{nodes:o,edges:n,summary:r}=Qh(t)||{};return{nodes:o,edges:n,summary:r}}catch(t){throw t}};var Ip=require("react/jsx-runtime"),wp=()=>{let{t:e}=(0,ds.useTranslation)(),{toast:t}=st(),{setNodes:o,setEdges:n,fitView:r}=(0,vp.useReactFlow)(),i=a=>{let l=[e("adapter.governance.report.columns.type"),e("adapter.governance.report.columns.value"),e("adapter.governance.report.columns.status")],c=a.map(d=>[d.originalType,d.value,e(`adapter.governance.report.status.${d.status.toLowerCase()}`)]);t({variant:"warning",content:e("adapter.governance.success.incompatible_cells"),duration:1e3*60*1,action:(0,Ip.jsx)(ds.Button,{size:"small",variant:"ghost",onClick:()=>gp({columns:l,rows:c,fileName:"governance-imported-cells"}),children:e("adapter.governance.action.download")})})};return{importFromGovernance:async a=>{try{let{nodes:l,edges:c,summary:d}=await Np(a);if(o(m=>m.concat(l)),n(m=>m.concat(c)),r({padding:Bn,minZoom:zn,maxZoom:Yn}),d.some(m=>m.status==="unsupported")){i(d);return}t({variant:"success",content:e("adapter.governance.success.default")})}catch(l){let c=l instanceof Error?l.message:"DEFAULT";t({variant:"error",content:e(`adapter.governance.error.${c}`)})}}}};var Ap=require("@produto-lecom/lecom-ui"),Cp=require("react");var an=require("react/jsx-runtime"),Sp=a=>{var l=a,{children:e,accept:t="*",multiple:o=!1,disabled:n=!1,onClick:r,onFilesSelected:i}=l,s=Wt(l,["children","accept","multiple","disabled","onClick","onFilesSelected"]);let c=(0,Cp.useRef)(null),d=m=>{let p=m.target.files;p!=null&&p.length&&i(p),c.current&&(c.current.value="")};return(0,an.jsxs)(an.Fragment,{children:[(0,an.jsx)(Ap.Button,v(b({disabled:n,onClick:m=>{var p;(p=c.current)==null||p.click(),r==null||r(m)}},s),{children:e})),(0,an.jsx)("input",{type:"file",ref:c,className:"sr-only",accept:t,multiple:o,disabled:n,onChange:d})]})};var ln=require("react/jsx-runtime"),Mp=({disabled:e=!1})=>{let{t}=(0,ko.useTranslation)(),{toast:o}=st(),{importFromGovernance:n}=wp(),r=()=>{if(e){o({variant:"error",content:t("adapter.governance.error.ALREADY_INITIALIZED")});return}},i=s=>{let a=s[0];if(!a){o({variant:"error",content:t("adapter.governance.error.NO_FILE")});return}n(a)};return(0,ln.jsxs)(ko.Tooltip,{children:[(0,ln.jsx)(ko.TooltipTrigger,{asChild:!0,children:(0,ln.jsx)(Sp,{className:"[&>svg]:size-7 p-0",variant:"ghost",size:"small",color:"grey",iconButton:!0,accept:".mdr",disabled:e,onClick:r,onFilesSelected:i,children:(0,ln.jsx)(va,{})})}),(0,ln.jsx)(ko.TooltipContent,{color:"black",children:t("editor.controls.actions.import_governance")})]})};var Pp=require("react/jsx-runtime"),ca=({shortcut:e})=>(0,Pp.jsx)("span",{className:"min-h-7.5 inline-flex justify-center items-center py-0.5 px-1.5 bg-grey-100 border border-grey-300 font-mono text-gray-800 shadow-lg rounded-md text-grey-900",children:e});var Te=require("@produto-lecom/lecom-ui"),Do=require("lucide-react"),Vp=require("react");var Rp=require("@produto-lecom/lecom-ui"),kp=require("@xyflow/react"),kr=require("html-to-image"),Dp=require("react");var ey=3,da="diagram",us=50,ty=96,oy=25.4,ny="sequence-edge-marker",Lp=e=>e*oy/ty,ry=e=>{let t=document.getElementById(ny);if(!(t instanceof SVGElement)||!t.ownerSVGElement)return null;let n=t.ownerSVGElement.cloneNode(!0);return n.style.position="absolute",n.style.width="0",n.style.height="0",n.style.overflow="hidden",n.setAttribute("aria-hidden","true"),n.setAttribute("data-export-marker-defs","true"),e.prepend(n),n},Op=()=>{let{t:e}=(0,Rp.useTranslation)(),{toast:t}=st(),{getEdges:o,getNodes:n,getNodesBounds:r}=(0,kp.useReactFlow)(),{clearSelection:i}=Co(),[s,a]=(0,Dp.useState)({png:!1,html:!1,print:!1}),l=()=>{let p=Zs(n(),o()),h=r(p),E=h.width+us*2,f=h.height+us*2,g=us-h.x,y=us-h.y;return{width:E,height:f,style:{width:`${E}px`,height:`${f}px`,transform:`translate(${g}px, ${y}px)`,transformOrigin:"top left"}}},c=async(p,h)=>{a(E=>v(b({},E),{[h]:!0})),await i();try{if(Zs(n(),o()).length===0){t({content:e("editor.controls.actions.export.feedback.empty"),variant:"warning"});return}let f=Ld();if(!f)throw new Error("Flow element not found");let g=l(),y=ry(f);try{return await p(f,g)}finally{y==null||y.remove()}}catch(E){console.error("Diagram export failed",E),t({content:e("editor.controls.actions.export.feedback.error"),variant:"error"})}finally{a(E=>v(b({},E),{[h]:!1}))}};return{exportAsPng:async(p=da)=>{await c(async(h,E)=>{let f=await(0,kr.toPng)(h,v(b({},E),{backgroundColor:"#fcfcfc",skipFonts:!0}));cs(f,`${p}.png`)},"png")},exportAsHtml:async(p=da)=>{await c(async(h,E)=>{let f=await(0,kr.toSvg)(h,v(b({},E),{backgroundColor:"#fcfcfc",skipFonts:!0})),g=`
44
44
  <!DOCTYPE html>
45
45
  <html>
package/lib/index.js CHANGED
@@ -39,7 +39,7 @@ var dp=Object.defineProperty,up=Object.defineProperties;var pp=Object.getOwnProp
39
39
  </mxGraphModel>`,ed=(e,t)=>{if(!e.length&&!t.length)return vn;let o=[...e.map(r=>r.id),...t.map(r=>r.id)];return Math.max(...o.map(r=>Number(r)))};var Hh=e=>{let t=Object.values(Nn),o=e.filter(i=>{var a;let s=(a=i._attributes)==null?void 0:a.style;return t.includes(s)}),n=e.filter(i=>{var a;let s=(a=i._attributes)==null?void 0:a.style;return["attribute-loop"].includes(s)}),r=[];for(let i of o){let{style:s}=i._attributes,a=Wc[s],l=a==null?void 0:a(i,n);if(!l){console.warn(`Node ${s} not supported`);continue}r.push(l)}return r},Gh=(e,t)=>{let o=e.filter(r=>{var i;return(i=r._attributes)==null?void 0:i.edge}),n=[];for(let r of o){let i=Fc(r),s=t.find(c=>c.id===i.source),a=t.find(c=>c.id===i.target);((s==null?void 0:s.type)==="LANE"||(a==null?void 0:a.type)==="LANE")&&i.type!=="ANNOTATION_EDGE"||n.push(i)}return n},Bh=(e,t)=>{let o=[];return e.forEach(n=>{var s,a;let r=(a=(s=Uc)[n.type])==null?void 0:a.call(s,n);if(!r){console.warn(`Node ${n.type} not supported`);return}if(o.push(r),n.type==="TASK"&&n.data.attribute==="LOOP"){let l=$c(n,t);o.push(l)}}),o},zh=(e,t)=>{let o=[];return e.forEach(n=>{let r=Xc(n,t);o.push(r)}),o},Yh=(e=[],t=[],o)=>{let n=Bh(e,o),r=zh(t,e);return{mxGraphModel:{root:{_attributes:{version:"1.1",lastId:o},mxCell:[{_attributes:{id:"0"}},{_attributes:{id:"1",parent:"0"}},...n,...r]}}}},td=(e=[],t=[],o)=>{let n=Yh(e,t,o);return Vc(JSON.stringify(n),{compact:!0,spaces:0})},od=async e=>{var c,d,u,m,p;let t=await qr(e),o=((d=(c=t==null?void 0:t.mxGraphModel)==null?void 0:c.root)==null?void 0:d.mxCell)||[],n=Number(((p=(m=(u=t==null?void 0:t.mxGraphModel)==null?void 0:u.root)==null?void 0:m._attributes)==null?void 0:p.lastId)||vn),r=Hh(o),i=Gh(o,r),s=Jc(r),{nodes:a,edges:l}=aa(s,i);return{lastElementId:n,edges:l,nodes:eo(a)}};import{Position as Ut,useConnection as wy,useReactFlow as Iy}from"@xyflow/react";import{useCallback as hs}from"react";import{Handle as nd,useReactFlow as Wh}from"@xyflow/react";import{jsx as rd}from"react/jsx-runtime";var ne=i=>{var s=i,{type:e,position:t,className:o,nodeType:n}=s,r=gt(s,["type","position","className","nodeType"]);let a=n==="TASK";return rd(nd,b({type:e,position:t,className:G("size-2.5 border border-grey-400 bg-white relative",{"before:content-[''] before:absolute before:inset-[-16px] before:bg-transparent before:pointer-events-none":a,"before:content-[''] before:absolute before:inset-[-4px] before:bg-transparent before:pointer-events-none":!a},o)},r))},Ge=a=>{var l=a,{nodeId:e,nodeType:t,gatewayVariant:o,type:n,position:r,className:i}=l,s=gt(l,["nodeId","nodeType","gatewayVariant","type","position","className"]);let{getEdges:c,getNodes:d}=Wh(),m=(()=>{if(n!=="source")return!1;let p=c();if(t==="TASK")return p.filter(E=>E.source===e).length>=2;if(t==="GATEWAY"&&o==="EXCLUSIVE")return p.filter(E=>E.source===e).length>=2;if(t==="START_EVENT"){let h=d();return p.filter(f=>{if(f.source!==e)return!1;let g=h.find(y=>y.id===f.target);return(g==null?void 0:g.type)!=="ANNOTATION"}).length>=1}return!1})();return rd(nd,b({type:n,position:r,className:G("size-2.5 border border-grey-400 bg-white transition-all duration-200 relative",{"before:content-[''] before:absolute before:inset-[-16px] before:bg-transparent before:pointer-events-none":t==="TASK","before:content-[''] before:absolute before:inset-[-4px] before:bg-transparent before:pointer-events-none":t!=="TASK","opacity-50 cursor-not-allowed pointer-events-none":m,"hover:border-grey-500":!m},i),style:{pointerEvents:m?"none":"auto"}},s))};import{useRef as id}from"react";import{NodeResizeControl as sd,ResizeControlVariant as Xh,useReactFlow as Uh,useStoreApi as $h}from"@xyflow/react";import{useStoreApi as Fh}from"@xyflow/react";var Jr=()=>{let e=Fh();return{getInternalNodes:()=>{let{nodeLookup:o}=e.getState();return Array.from(o.values())}}};import{Fragment as Zh,jsxs as Jh}from"react/jsx-runtime";import{createElement as ad}from"react";var Kh=["top","right","bottom","left"],qh=["top-left","top-middle","top-right","right-middle","bottom-left","left-middle","bottom-right","bottom-middle"],it=r=>{var i=r,{nodeId:e,isVisible:t,offset:o=8}=i,n=gt(i,["nodeId","isVisible","offset"]);let{getInternalNode:s,setNodes:a}=Uh(),{getInternalNodes:l}=Jr(),{isMultipleSelection:c}=U(),d=$h(),u=id(0),m=id([]),p=({y:g,width:y,height:x})=>{cancelAnimationFrame(u.current),u.current=requestAnimationFrame(()=>{var K,te;if(!e)return;let{nodeLookup:w,onNodesChange:_}=d.getState(),N=w.get(e);if(!N||N.type!=="LANE")return;let T=!N.parentId,I=T?N.id:N.parentId;if(!I)return;let C=Array.from(w.values()).filter(z=>z.type==="LANE"&&z.parentId===I);if(!C.length)return;m.current.length===0&&(m.current=no(C).map(z=>z.id));let P=m.current.map(z=>C.find(M=>M.id===z)).filter(Boolean),R=[],S=0,L=P.findIndex(z=>z.id===N.id),$=!T&&L>0&&Math.abs(g-N.position.y)>.5;for(let z=0;z<P.length;z++){let M=P[z],H=M.id===N.id,D=z===P.length-1;if(H){S=$?g+x:S+x;continue}let A=(te=(K=M.measured)==null?void 0:K.height)!=null?te:0,Y=T?y-se.HEADER_WIDTH:y,B=A;T&&D&&(B=Math.max(se.MIN_HEIGHT,x-S)),$&&z===L-1&&(B=Math.max(se.MIN_HEIGHT,g-S)),R.push({id:M.id,type:"dimensions",dimensions:{width:Y,height:B},setAttributes:!0}),R.push({id:M.id,type:"position",position:{x:se.HEADER_WIDTH,y:S}}),S+=B}T?R.push({id:I,type:"dimensions",dimensions:{width:y,height:x},setAttributes:!0}):R.push({id:I,type:"dimensions",dimensions:{width:y+se.HEADER_WIDTH,height:S},setAttributes:!0}),_==null||_(R)})},h=({y:g,width:y,height:x})=>{var N;if(cancelAnimationFrame(u.current),m.current=[],!e)return;let w=s(e);if(!w||w.type!=="LANE"&&!w.parentId)return;let _=[...l()];if(w.type!=="LANE"){_=_.map(T=>T.id===e?v(b({},T),{width:y,height:x,measured:{width:y,height:x}}):T),_=St(_),a(_);return}_=ua(w,y,x,_,g),_=St(_),_=oo((N=w.parentId)!=null?N:w.id,_),a(_)};if(!(!c&&t))return null;let f={"--resize-offset":`${o}px`};return Jh(Zh,{children:[Kh.map(g=>ad(sd,v(b({},n),{key:g,nodeId:e,position:g,variant:Xh.Line,className:"border-blue-400/90 border-dashed",style:f,onResize:(y,x)=>p(x),onResizeEnd:(y,x)=>h(x)}))),qh.map(g=>ad(sd,v(b({},n),{key:g,nodeId:e,position:g,className:"size-1.5 bg-blue-400 relative before:content-[''] before:absolute before:w-5 before:h-5 before:left-1/2 before:top-1/2 before:-translate-x-1/2 before:-translate-y-1/2 before:cursor-[inherit]",style:f,onResize:(y,x)=>p(x),onResizeEnd:(y,x)=>h(x)})))]})};import{NodeToolbar as gy,useReactFlow as hy}from"@xyflow/react";import{Button as yy,Tooltip as xy,TooltipContent as Ey,TooltipTrigger as by,useTranslation as _y}from"@produto-lecom/lecom-ui";import{useCallback as gs,useEffect as Ty,useRef as Qr,useState as Ny}from"react";import{create as Qh}from"zustand";var Yo=Qh(e=>({draggableNode:null,setDraggableNode:t=>{e({draggableNode:t})}}));import{useEffect as jh,useState as ey}from"react";var ld=(e,t=!1)=>{let[o,n]=ey({width:0,height:0});return jh(()=>{if(e.current&&t){let r=e.current.getBoundingClientRect();n({width:r.width,height:r.height})}},[t,e]),{dimensions:o}};import{Position as wn,useReactFlow as ty}from"@xyflow/react";import{useMemo as oy}from"react";var ny=120,ry=12,cd=(e,t=!1,o)=>{let{getNode:n,getViewport:r}=ty(),{instanceId:i}=U();return oy(()=>{var p,h;if(!t)return{position:wn.Right,align:"start"};let s=n(e);if(!s)return{position:wn.Right,align:"start"};let a=r(),l=s.position.x*a.zoom+a.x,c=(((p=s.measured)==null?void 0:p.width)||s.width||100)*a.zoom,d=(h=document.getElementById(`modeler-${i}`))==null?void 0:h.clientWidth;if(!d)return{position:wn.Right,align:"start"};let u=(o==null?void 0:o.width)||ny;return{position:l+c+u+ry>d?wn.Left:wn.Right}},[i,e,t,o,n,r])};import{useNodesData as iy,useReactFlow as sy}from"@xyflow/react";import{Button as dd,DropdownMenu as ay,DropdownMenuContent as ly,DropdownMenuGroup as cy,DropdownMenuItem as dy,DropdownMenuLabel as uy,DropdownMenuTrigger as py,Tooltip as ps,TooltipContent as fs,TooltipTrigger as ms,useTranslation as fy}from"@produto-lecom/lecom-ui";import{WrenchIcon as my}from"lucide-react";import{jsx as Oe,jsxs as mo}from"react/jsx-runtime";var ud=({nodeId:e})=>{let{t}=fy(),{updateNodeData:o,getEdges:n,getNode:r}=sy(),i=iy(e),a=n().filter(p=>p.source===e).some(p=>{let h=r(p.target);return(h==null?void 0:h.type)==="END_EVENT"}),l=(i==null?void 0:i.data.variant)==="SUBPROCESS",c=u=>{o(e,{variant:(i==null?void 0:i.data.variant)===u?"":u})},d=u=>{o(e,{attribute:(i==null?void 0:i.data.attribute)===u?"":u})};return mo(ay,{children:[mo(ps,{children:[Oe(ms,{asChild:!0,children:Oe(py,{asChild:!0,children:Oe(dd,{variant:"ghost",color:"grey",size:"small",iconButton:!0,children:Oe(my,{})})})}),Oe(fs,{color:"black",children:t("bpmn.task.menu.title")})]}),mo(ly,{align:"start",className:"w-60 bg-white text-grey-600",children:[mo(uy,{className:"flex items-center gap-1",children:[Oe("div",{className:"flex-1 body-medium-500",children:t("bpmn.task.menu.title")}),Oe("div",{className:"flex items-center gap-1",children:Object.entries(Fn).map(([u,m])=>{let p=u==="LOOP"&&(a||l),E=(()=>{if(u==="LOOP"&&a)return t("editor.task_menu.loop_not_allowed_when_connected_to_end");if(u==="LOOP"&&l)return t("editor.task_menu.loop_not_allowed_when_subprocess");if(u==="LOOP")return t("editor.task_menu.loop")})();return mo(ps,{children:[Oe(ms,{asChild:!0,children:Oe(dd,{variant:"ghost",color:"grey",size:"small",iconButton:!0,disabled:p,className:G({"bg-grey-100 text-blue-500":(i==null?void 0:i.data.attribute)===u,"opacity-50 cursor-not-allowed":p}),onClick:p?void 0:()=>d(u),children:Oe(m.icon,{className:"stroke-inherit"})})}),E&&Oe(fs,{color:"black",children:E})]},u)})})]}),Oe(cy,{children:mo(ps,{children:[Oe(ms,{asChild:!0,children:Oe("div",{className:G({"cursor-not-allowed":a}),children:mo(dy,{className:G({"bg-grey-100 text-blue-500":(i==null?void 0:i.data.variant)==="SCRIPT","opacity-50":a}),disabled:a,onClick:()=>c("SCRIPT"),children:[Oe(Wn.SCRIPT.icon,{className:"stroke-current"}),t(`bpmn.task.variant.${"SCRIPT".toLowerCase()}`)]})})}),a&&Oe(fs,{color:"black",children:t("editor.task_menu.script_not_allowed_when_connected_to_end")})]})})]})]})};import{jsx as Me,jsxs as pd}from"react/jsx-runtime";var Mt={START_EVENT:{type:"START_EVENT",icon:Jo,label:"bpmn.start_event.variant.default"},END_EVENT:{type:"END_EVENT",icon:bo,label:"bpmn.end_event.variant.default"},TASK:{type:"TASK",icon:Jo,label:"bpmn.task.variant.default"},ANNOTATION:{type:"ANNOTATION",icon:Gn,label:"bpmn.annotation.variant.default"}},vy={EXCLUSIVE:{type:"GATEWAY",variant:"EXCLUSIVE",icon:To,label:"bpmn.gateway.variant.exclusive"},PARALLEL:{type:"GATEWAY",variant:"PARALLEL",icon:No,label:"bpmn.gateway.variant.parallel"},COMPLEX:{type:"GATEWAY",variant:"COMPLEX",icon:_o,label:"bpmn.gateway.variant.complex"}},Fe=({nodeId:e,nodeType:t,nodeVariant:o,isChild:n})=>{let r=Qr(null),i=Qr(null),{t:s}=_y(),{setDraggableNode:a}=Yo(),{getEdges:l,getNodes:c,getNode:d,setNodes:u}=hy(),{setIsDragging:m,mode:p,isConnecting:h,isDragging:E,isMultipleSelection:f}=U(),g=d(e),y=!!(g!=null&&g.selected)&&!g.dragging&&!h&&!E&&!f,{dimensions:x}=ld(r,y),{position:w}=cd(e,y,x),[_,N]=Ny(void 0),T=c(),I=l(),C=o==="SUBPROCESS",P=Qr(null),R=Qr(!1),S=gs(()=>{P.current!==null&&(clearTimeout(P.current),P.current=null),R.current=!1,m(!1),a(null),N(void 0),u(V=>V.map(F=>v(b({},F),{className:void 0})))},[m,a,u]);Ty(()=>{let V=F=>{R.current&&F.buttons===0&&S()};return document.addEventListener("dragend",S),document.addEventListener("mousemove",V),()=>{document.removeEventListener("dragend",S),document.removeEventListener("mousemove",V)}},[S]);let L=gs((V,F)=>{R.current=!0,m(!1),a({type:F.type,variant:F.variant,attribute:F.attribute,icon:F.icon}),F.icon&&N(Me(F.icon,{})),V.dataTransfer.effectAllowed="move",V.dataTransfer.setData("sourceId",e),i.current&&V.dataTransfer.setDragImage(i.current,10,10),P.current=setTimeout(()=>{P.current=null,m(!0)},100)},[e,a,m]),$=gs(()=>{S()},[S]),K=[{component:Me(Vr,{elementId:e})}],te=()=>{if(p==="view")return[];let V=!I.some(F=>{var J;return F.source===e&&((J=T.find(X=>X.id===F.target))==null?void 0:J.type)!=="ANNOTATION"});return[{component:Me(Po,{nodeId:e,disabled:!V,tooltipMessage:V?void 0:s("editor.toolbar.start_event_limit_reached")})},Mt.TASK,Mt.ANNOTATION,...K]},z=()=>p==="view"?[{component:Me(Wt,{elementId:e})}]:[{component:Me(Wt,{elementId:e})},...C?[]:[{component:Me(ud,{nodeId:e})}],{component:Me(Po,{nodeId:e})},Mt.TASK,{type:"TASK",variant:"SUBPROCESS",icon:jo,label:"bpmn.task.variant.subprocess"},Mt.ANNOTATION,...Object.values(vy),...uo(e,T,I)?[]:[Mt.END_EVENT],...K],M=()=>p==="view"?[{component:Me(Wt,{elementId:e,elementType:"gateway"})}]:[{component:Me(Wt,{elementId:e,elementType:"gateway"})},{component:Me(Po,{nodeId:e})},Mt.TASK,{type:"TASK",variant:"SUBPROCESS",icon:jo,label:"bpmn.task.variant.subprocess"},Mt.ANNOTATION,...K],H=()=>p==="view"?[]:[Mt.ANNOTATION,...K],D=()=>p==="view"?[]:[...n?[]:[{component:Me(Po,{nodeId:e})}],Mt.ANNOTATION,...K],A=()=>p==="view"?[]:[{component:Me(Po,{nodeId:e})},...K],Y=()=>p==="view"?[]:[...K],k=(V=>{switch(V){case"START_EVENT":return te();case"TASK":return z();case"GATEWAY":return M();case"END_EVENT":return H();case"LANE":return D();case"ANNOTATION":return A();case"UNSUPPORTED":return Y();default:return[]}})(t),O=k.length>6;if(!(k.length===0||p==="readonly"))return pd(gy,{position:w,align:"start",className:O?"-top-[4.5rem]":"-top-8",isVisible:y,children:[Me("div",{ref:r,className:`${O?"grid grid-cols-6":"flex"} gap-1 px-2 py-2 bg-white rounded-sm shadow-md`,children:k.map((V,F)=>{if(V.component)return Me("div",{children:V.component},F);let J={sourceNodeType:t,targetNodeType:V.type,sourceNodeId:e,nodes:T,edges:I},X=mc(J),Q={gateway_limit_reached:s("editor.toolbar.gateway_limit_reached"),start_event_limit_reached:s("editor.toolbar.start_event_limit_reached"),start_event_already_exists:s("editor.toolbar.start_event_already_exists"),script_to_end_not_allowed:s("editor.toolbar.script_to_end_not_allowed"),loop_to_end_not_allowed:s("editor.toolbar.loop_to_end_not_allowed"),initial_activity_to_end_not_allowed:s("editor.toolbar.initial_activity_to_end_not_allowed"),final_activity_cannot_connect:s("editor.toolbar.final_activity_cannot_connect"),activity_has_outgoing_connections:s("editor.toolbar.activity_has_outgoing_connections"),task_limit_reached:s("editor.toolbar.task_limit_reached")},ee=X.shouldDisable&&X.reason?Q[X.reason]||s(V.label):s(V.label)||"";return pd(xy,{children:[Me(by,{asChild:!0,children:Me(yy,{variant:"ghost",color:"grey",size:"small",iconButton:!0,draggable:!X.shouldDisable,disabled:X.shouldDisable,className:X.shouldDisable?"opacity-50 cursor-not-allowed":"",onDragStart:X.shouldDisable?void 0:ie=>L(ie,V),onDragEnd:X.shouldDisable?void 0:$,children:V.icon&&Me(V.icon,{size:16})})}),Me(Ey,{color:"black",children:ee})]},F)})}),Me("div",{ref:i,className:"absolute w-0 h-0 top-0 left-0 z-[-1] bg-transparent",children:_})]})};import{Fragment as fd,jsx as ct,jsxs as ys}from"react/jsx-runtime";var md=({id:e,data:t,selected:o,dragging:n})=>{let{updateNodeData:r,setNodes:i}=Iy(),{inProgress:s,fromNode:a}=wy(),{mode:l,isReadOnly:c}=U(),d=s&&(a==null?void 0:a.id)!==e,u=hs(h=>{let x=h.split(`
40
40
  `),w=x.reduce((I,C)=>Math.max(I,C.length),0),_=x.length,N=Math.max(wo.MIN_WIDTH,w*7+32),T=Math.max(wo.MIN_HEIGHT,_*20+24);i(I=>I.map(C=>C.id===e?v(b({},C),{width:N,height:T,style:v(b({},C.style),{width:N,height:T})}):C))},[e,i]),m=hs(h=>{r(e,{label:h}),u(h)},[e,r,u]),p=hs(h=>{u(h)},[u]);return ys("div",{className:G("relative w-full h-full min-w-44 min-h-16 flex text-grey-400 hover:text-grey-500 bg-white rounded-sm border-l-2 border-current before:absolute before:top-0 before:left-0 before:w-4 before:border-t-2 before:border-current after:absolute after:bottom-0 after:left-0 after:w-4 after:border-t-2 after:border-current hover:shadow-md transition-colors duration-75",{"pointer-events-none":c,"text-blue-500 hover:text-blue-600 shadow-md":o&&!c,"border-red-500 border-l-[3px] shadow-[0_0_5px_rgba(255,0,0,0.5)] before:absolute before:top-0 before:left-0 before:w-4 before:border-t-2 before:border-red-500 after:absolute after:bottom-0 after:left-0 after:w-4 after:border-t-2 after:border-red-500":t.hasError}),children:[ct(De,{value:t.label,className:"m-1 text-grey-600 text-left",onChange:m,onInput:p,skipFirstCharValidation:!0}),ct(Fe,{nodeId:e,nodeType:"ANNOTATION"}),l==="edit"&&ct(it,{nodeId:e,minWidth:wo.MIN_WIDTH,minHeight:wo.MIN_HEIGHT,isVisible:!n&&o}),!s&&ys(fd,{children:[ct(ne,{type:"source",position:Ut.Left,id:"left"}),ct(ne,{type:"source",position:Ut.Right,id:"right"}),ct(ne,{type:"source",position:Ut.Top,id:"top"}),ct(ne,{type:"source",position:Ut.Bottom,id:"bottom"})]}),(!s||d)&&ys(fd,{children:[ct(ne,{type:"target",position:Ut.Left,id:"left",className:G({"annotation-handle":d})}),ct(ne,{type:"target",position:Ut.Right,id:"right",className:G({"annotation-handle":d})}),ct(ne,{type:"target",position:Ut.Top,id:"top",className:G({"annotation-handle":d})}),ct(ne,{type:"target",position:Ut.Bottom,id:"bottom",className:G({"annotation-handle":d})})]})]})};import{Position as $t,useConnection as Ay,useReactFlow as Cy}from"@xyflow/react";import{useState as Sy}from"react";import{Fragment as gd,jsx as qe,jsxs as xs}from"react/jsx-runtime";var hd=({id:e,data:t,selected:o,dragging:n})=>{let{updateNodeData:r}=Cy(),{inProgress:i,fromNode:s}=Ay(),{mode:a,isReadOnly:l,reconnectingEdgeId:c}=U(),[d,u]=Sy(!1),m=i&&(s==null?void 0:s.id)!==e||!!c,p=f=>{r(e,{label:f})},h=()=>{u(!0)},E=()=>{u(!1)};return xs("div",{className:"relative",onDoubleClick:h,children:[qe(bo,{className:G("w-full h-full min-w-9 min-h-9 hover:stroke-[#d33b3b] transition-colors duration-75",{"pointer-events-none":l,"stroke-blue-500 hover:stroke-blue-600":o&&!l,"stroke-red-500 hover:stroke-red-600 drop-shadow-[0_0_3px_rgba(255,0,0,0.5)] fill-red-100":t.hasError})}),qe("div",{className:"absolute mt-2 left-1/2 -translate-x-1/2 max-w-80 w-max",children:qe(De,{value:t.label,isEditing:d,onBlur:E,onChange:p})}),qe(Fe,{nodeId:e,nodeType:"END_EVENT"}),a==="edit"&&qe(it,{nodeId:e,isVisible:!n&&o,minWidth:Un.MIN_WIDTH,minHeight:Un.MIN_HEIGHT,offset:4,keepAspectRatio:!0}),(!i||m)&&xs(gd,{children:[qe(ne,{type:"target",position:$t.Left,id:"left",className:G({"event-handle":m})}),qe(ne,{type:"target",position:$t.Right,id:"right",className:G({"event-handle":m})}),qe(ne,{type:"target",position:$t.Top,id:"top",className:G({"event-handle":m})}),qe(ne,{type:"target",position:$t.Bottom,id:"bottom",className:G({"event-handle":m})})]}),!i&&xs(gd,{children:[qe(ne,{type:"source",position:$t.Left,id:"left"}),qe(ne,{type:"source",position:$t.Right,id:"right"}),qe(ne,{type:"source",position:$t.Top,id:"top"}),qe(ne,{type:"source",position:$t.Bottom,id:"bottom"})]})]})};import{Position as Kt,useConnection as My,useReactFlow as Py}from"@xyflow/react";import{useCallback as Ly,useState as Ry}from"react";import{Fragment as yd,jsx as Ze,jsxs as Es}from"react/jsx-runtime";var xd=({id:e,data:t,width:o,height:n,selected:r,dragging:i})=>{let s=Oi[t.variant].icon,{updateNodeData:a}=Py(),{inProgress:l,fromNode:c}=My(),{mode:d,isReadOnly:u,reconnectingEdgeId:m}=U(),[p,h]=Ry(!1),E=l&&(c==null?void 0:c.id)!==e||!!m,f=Ly(x=>{a(e,{label:x})},[e,a]),g=()=>{h(!0)},y=()=>{h(!1)};return Es("div",{className:"relative",style:{width:o!=null?o:vo.MIN_WIDTH,height:n!=null?n:vo.MIN_HEIGHT},onDoubleClick:g,children:[Ze(s,{className:G("w-full h-full min-w-14 min-h-14 stroke-1 stroke-grey-400 hover:stroke-grey-500 transition-colors duration-75",{"pointer-events-none":u,"stroke-blue-500 hover:stroke-blue-600":r&&!u,"stroke-red-500 hover:stroke-red-600 drop-shadow-[0_0_3px_rgba(255,0,0,0.5)]":t.hasError})}),Ze("div",{className:"absolute mt-2 left-1/2 -translate-x-1/2 max-w-80 w-max",children:Ze(De,{value:t.label,isEditing:p,onBlur:y,onChange:f})}),Ze(Fe,{nodeId:e,nodeType:"GATEWAY",nodeVariant:t.variant}),d==="edit"&&Ze(it,{nodeId:e,isVisible:!i&&r,minWidth:vo.MIN_WIDTH,minHeight:vo.MIN_HEIGHT,offset:2,keepAspectRatio:!0}),(!l||E)&&Es(yd,{children:[Ze(ne,{type:"target",position:Kt.Left,id:"left",className:G({"gateway-handle":E})}),Ze(ne,{type:"target",position:Kt.Right,id:"right",className:G({"gateway-handle":E})}),Ze(ne,{type:"target",position:Kt.Top,id:"top",className:G({"gateway-handle":E})}),Ze(ne,{type:"target",position:Kt.Bottom,id:"bottom",className:G({"gateway-handle":E})})]}),!l&&Es(yd,{children:[Ze(Ge,{type:"source",position:Kt.Left,id:"left",nodeId:e,nodeType:"GATEWAY",gatewayVariant:t.variant}),Ze(Ge,{type:"source",position:Kt.Right,id:"right",nodeId:e,nodeType:"GATEWAY",gatewayVariant:t.variant}),Ze(Ge,{type:"source",position:Kt.Top,id:"top",nodeId:e,nodeType:"GATEWAY",gatewayVariant:t.variant}),Ze(Ge,{type:"source",position:Kt.Bottom,id:"bottom",nodeId:e,nodeType:"GATEWAY",gatewayVariant:t.variant})]})]})};import{useNodesData as NM,useReactFlow as vM}from"@xyflow/react";import{Button as IM,DropdownMenu as AM,DropdownMenuContent as CM,DropdownMenuGroup as SM,DropdownMenuItem as MM,DropdownMenuLabel as PM,DropdownMenuTrigger as LM,Tooltip as RM,TooltipContent as kM,TooltipTrigger as DM,useTranslation as OM}from"@produto-lecom/lecom-ui";import{WrenchIcon as HM}from"lucide-react";import{jsx as YM,jsxs as WM}from"react/jsx-runtime";import{Position as qt,useConnection as ky,useReactFlow as Dy}from"@xyflow/react";import{useState as Oy}from"react";import{Fragment as Ed,jsx as Je,jsxs as bs}from"react/jsx-runtime";var bd=({id:e,data:t,selected:o,dragging:n})=>{let{updateNodeData:r}=Dy(),{inProgress:i,fromNode:s}=ky(),{mode:a,isReadOnly:l,reconnectingEdgeId:c}=U(),[d,u]=Oy(!1),m=i&&(s==null?void 0:s.id)!==e||!!c,p=f=>{r(e,{label:f})},h=()=>{u(!0)},E=()=>{u(!1)};return bs("div",{className:"relative",onDoubleClick:h,children:[Je(zn,{className:G("w-full h-full min-w-9 min-h-9 hover:stroke-[#54890b] transition-colors duration-75",{"pointer-events-none":l,"stroke-blue-500 hover:stroke-blue-600":o&&!l,"stroke-red-500 hover:stroke-red-600 drop-shadow-[0_0_3px_rgba(255,0,0,0.5)] fill-red-100":t.hasError})}),Je("div",{className:"absolute mt-2 left-1/2 -translate-x-1/2 max-w-80 w-max",children:Je(De,{value:t.label,isEditing:d,onBlur:E,onChange:p})}),Je(Fe,{nodeId:e,nodeType:"START_EVENT"}),a==="edit"&&Je(it,{nodeId:e,isVisible:!n&&o,minWidth:Xn.MIN_WIDTH,minHeight:Xn.MIN_HEIGHT,offset:4,keepAspectRatio:!0}),(!i||m)&&bs(Ed,{children:[Je(ne,{type:"target",position:qt.Left,id:"left",className:G({"event-handle":m})}),Je(ne,{type:"target",position:qt.Right,id:"right",className:G({"event-handle":m})}),Je(ne,{type:"target",position:qt.Top,id:"top",className:G({"event-handle":m})}),Je(ne,{type:"target",position:qt.Bottom,id:"bottom",className:G({"event-handle":m})})]}),!i&&bs(Ed,{children:[Je(Ge,{type:"source",position:qt.Left,id:"left",nodeId:e,nodeType:"START_EVENT"}),Je(Ge,{type:"source",position:qt.Right,id:"right",nodeId:e,nodeType:"START_EVENT"}),Je(Ge,{type:"source",position:qt.Top,id:"top",nodeId:e,nodeType:"START_EVENT"}),Je(Ge,{type:"source",position:qt.Bottom,id:"bottom",nodeId:e,nodeType:"START_EVENT"})]})]})};import{useTranslation as Gy}from"@produto-lecom/lecom-ui";import{Position as Zt,useConnection as By,useReactFlow as zy}from"@xyflow/react";import{useCallback as ei}from"react";var In=60,jr=(e,t)=>{var s;let o=[],n=`${t} `;for(let a of e){if(!(a.type==="TASK"))continue;let c=(s=a.data)==null?void 0:s.label;if(c&&c.startsWith(n)){let d=c.substring(n.length);/^\d{1,15}$/.test(d)&&o.push(parseInt(d,10))}}let r=o.length>0?Math.max(...o)+1:1,i=`${t} ${r}`;return i.length<=In?i:i.substring(0,In).trim()},Wo=(e,t)=>{var a;let o=new Set;for(let l of t)l.type==="TASK"&&((a=l.data)!=null&&a.label)&&o.add(l.data.label);let n=e;if(n.length>In&&(n=n.substring(0,In).trim()),!o.has(n))return n;let r=n.replace(/\s+\(\d+\)$/,""),i=2,s=o.size+2;for(;i<=s;){let l=` (${i})`,c=In-l.length,u=`${r.substring(0,c).trim()}${l}`;if(!o.has(u))return u;i++}return n};import{jsx as _d,jsxs as Vy}from"react/jsx-runtime";var Td=e=>Vy("svg",v(b({width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e),{children:[_d("circle",{cx:"12",cy:"12",r:"10",fill:"#10B981"}),_d("path",{d:"M7 12L10 15L17 8",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}));import{jsx as Nd}from"react/jsx-runtime";var vd=e=>Nd("svg",v(b({width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e),{children:Nd("path",{d:"M12 2C8.13 2 5 5.13 5 9C5 14.25 12 22 12 22C12 22 19 14.25 19 9C19 5.13 15.87 2 12 2ZM12 11.5C10.62 11.5 9.5 10.38 9.5 9C9.5 7.62 10.62 6.5 12 6.5C13.38 6.5 14.5 7.62 14.5 9C14.5 10.38 13.38 11.5 12 11.5Z",fill:"#38bdf8"})}));import{jsx as wd,jsxs as Hy}from"react/jsx-runtime";var Id=e=>Hy("svg",v(b({width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e),{children:[wd("circle",{cx:"12",cy:"12",r:"10",fill:"#EF4444"}),wd("path",{d:"M8 8L16 16M8 16L16 8",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}));import{Fragment as ti,jsx as we,jsxs as An}from"react/jsx-runtime";var Yy={APROVADO:Td,EM_ANDAMENTO:vd,REJEITADO:Id},_s={APROVADO:"border-green-500 hover:border-green-500 border-[3px] border-solid",EM_ANDAMENTO:"border-turquoise-400 hover:border-turquoise-400 border-[3px] border-solid",REJEITADO:"border-red-500 hover:border-red-500 border-[3px] border-solid",default:"border-grey-400 border-2 border-solid",error:"border-red-500 border-[3px] shadow-[0_0_5px_rgba(255,0,0,0.5)]"},Wy={APROVADO:"bg-green-50",EM_ANDAMENTO:"bg-turquoise-50",REJEITADO:"bg-red-50"},Ad=({id:e,data:t,width:o,height:n,selected:r,dragging:i})=>{let{t:s}=Gy(),{toast:a}=We(),{updateNodeData:l,getNodes:c,setNodes:d}=zy(),{inProgress:u,fromNode:m}=By(),{mode:p,isReadOnly:h,onSubprocessValidationClick:E,reconnectingEdgeId:f}=U(),{getTaskStatus:g}=ro(),y=u&&(m==null?void 0:m.id)!==e||!!f,x=g(e),w=t.variant==="SUBPROCESS",_=!!t.variant&&!w||!!x,N=!!t.attribute||w,T=ei(z=>{let A=_||N?80:40,Y=z.split(`
41
41
  `),B=Y.reduce((F,J)=>Math.max(F,J.length),0),k=Y.length,O=Math.max(Ot.MIN_WIDTH,B*7+64),V=Math.max(Ot.MIN_HEIGHT,k*24+A);d(F=>F.map(J=>J.id===e?v(b({},J),{width:O,height:V,style:v(b({},J.style),{width:O,height:V})}):J))},[e,d,_,N]),I=ei(z=>{let M=z.trim(),H=t.label||"";if(M===H)return;let D=M,A=c();if(!(M&&M!=="")){D=jr(A,s("bpmn.task.label.prefix")),l(e,{label:D}),T(D),a({variant:"warning",content:An(ti,{children:[s("bpmn.task.feedback.label_empty.prefix")," ",we("strong",{children:D})]})});return}let B=Wo(D,A);B===H||(l(e,{label:B}),T(B),B!==D&&a({variant:"warning",content:An(ti,{children:[s("bpmn.task.feedback.label_already_exists.prefix")," ",we("strong",{children:M})," ",s("bpmn.task.feedback.label_already_exists.middle")," ",we("strong",{children:B})]})}))},[t.label,c,e,s,l,T,a]),C=ei(z=>{T(z)},[T]),P=ei(()=>{a({variant:"error",content:s("bpmn.task.feedback.invalid_first_character")})},[s,a]),R=x?Yy[x]:null,S=t.variant?Wn[t.variant].icon:null,L=t.attribute?Fn[t.attribute].icon:null,$=()=>t.hasError?_s.error:x?_s[x]:h?_s.default:"",K=()=>{var z;return r&&(z=Wy[x])!=null?z:""},te=()=>{E==null||E({id:e,type:"sub_process",label:t.label})};return An("div",{className:G("relative w-full h-full min-w-44 min-h-24 flex flex-col items-stretch justify-stretch bg-white border-2 border-grey-400 hover:border-grey-500 rounded-md hover:shadow-md transition-colors duration-75",$(),{"cursor-pointer":h,"border-blue-500 hover:border-blue-600 shadow-md":r&&!h&&!x,"border-red-500 hover:border-red-600 shadow-[0_0_5px_rgba(255,0,0,0.5)]":t.hasError}),style:{width:o!=null?o:Ot.MIN_WIDTH,height:n!=null?n:Ot.MIN_HEIGHT},children:[we("div",{className:"flex-1 flex items-stretch justify-stretch overflow-hidden",children:we(De,{value:t.label,maxLength:60,className:G(K(),{"py-10 px-8":_||N}),onChange:I,onInput:C,onInvalidFirstCharacter:P})}),S&&we("div",{className:G("absolute flex items-center p-1",w?"bottom-0 left-1/2 -translate-x-1/2":"top-0 left-0"),children:we(S,{size:16,className:G(t.hasError?"text-red-500":"text-grey-500",w&&"cursor-pointer"),onClick:w?te:void 0})}),L&&we("div",{className:"absolute bottom-0 left-0 w-full flex items-center justify-center",children:we("div",{className:G("flex items-center w-16 p-1",w?"justify-between":"justify-center"),children:we(L,{size:16,className:G(t.hasError?"text-red-500":"text-grey-500")})})}),R&&we("div",{className:"absolute top-0 right-0 flex items-center p-1",children:we(R,{})}),we(Fe,{nodeId:e,nodeType:"TASK",nodeVariant:t.variant}),p==="edit"&&we(it,{nodeId:e,isVisible:!i&&r,minWidth:Ot.MIN_WIDTH,minHeight:Ot.MIN_HEIGHT}),(!u||y)&&An(ti,{children:[we(ne,{type:"target",position:Zt.Left,id:"left",className:G({"task-handle":y})}),we(ne,{type:"target",position:Zt.Right,id:"right",className:G({"task-handle":y})}),we(ne,{type:"target",position:Zt.Top,id:"top",className:G({"task-handle":y})}),we(ne,{type:"target",position:Zt.Bottom,id:"bottom",className:G({"task-handle":y})})]}),!u&&An(ti,{children:[we(Ge,{type:"source",position:Zt.Left,id:"left",nodeId:e,nodeType:"TASK"}),we(Ge,{type:"source",position:Zt.Right,id:"right",nodeId:e,nodeType:"TASK"}),we(Ge,{type:"source",position:Zt.Top,id:"top",nodeId:e,nodeType:"TASK"}),we(Ge,{type:"source",position:Zt.Bottom,id:"bottom",nodeId:e,nodeType:"TASK"})]})]})};import{Position as Cd}from"@xyflow/react";import{Fragment as Fy,jsx as oi,jsxs as Xy}from"react/jsx-runtime";var Sd=({id:e,data:t})=>Xy(Fy,{children:[oi("div",{className:"relative w-full h-full min-w-32 min-h-16 flex items-center justify-center bg-white border-2 border-red-400 rounded-sm overflow-hidden",children:t.label}),oi(Fe,{nodeId:e,nodeType:"UNSUPPORTED"}),oi(ne,{type:"source",position:Cd.Right}),oi(ne,{type:"target",position:Cd.Left})]});import{BaseEdge as Uy,EdgeLabelRenderer as $y,getSmoothStepPath as Ky,MarkerType as qy,useInternalNode as Md,useReactFlow as Zy,useViewport as Jy,Position as Fo}from"@xyflow/react";import{useState as Qy,useMemo as jy}from"react";import{Fragment as Pd,jsx as Xe,jsxs as go}from"react/jsx-runtime";var A5={type:"MESSAGE_EDGE",reconnectable:!0,markerEnd:{type:qy.Arrow},data:{label:""}},Ld=({id:e,source:t,target:o,data:n,selected:r,sourcePosition:i,targetPosition:s,sourceHandleId:a,targetHandleId:l})=>{var B;let{zoom:c}=Jy(),{updateEdgeData:d}=Zy(),{isMultipleSelection:u,mode:m,instanceId:p}=U(),h=m!=="edit",[E,f]=Qy(!1),{reconnectingHandle:g,cursorPosition:y,hoveredNodeId:x,reconnectingSide:w,isValidReconnection:_,handleReconnectStart:N}=Ur({edgeId:e,source:t,target:o,instanceId:p,isReadOnly:h}),T=Md(t),I=Md(o),{sx:C,sy:P,tx:R,ty:S,sourcePos:L,targetPos:$}=jy(()=>{var oe,le;if(!T||!I)return{sx:0,sy:0,tx:0,ty:0,sourcePos:Fo.Left,targetPos:Fo.Right};let k=Io(T,I),O=a?i:k.sourcePos,V=l?s:k.targetPos,F=(q,xe,me)=>{var j,ge,_e,Te,Re,je;let{x:be,y:Z}=q.internals.positionAbsolute,de=(_e=(ge=(j=q.measured)==null?void 0:j.width)!=null?ge:q.width)!=null?_e:0,re=(je=(Re=(Te=q.measured)==null?void 0:Te.height)!=null?Re:q.height)!=null?je:0;switch(xe){case Fo.Top:return{x:be+de*me,y:Z};case Fo.Bottom:return{x:be+de*me,y:Z+re};case Fo.Left:return{x:be,y:Z+re*me};case Fo.Right:return{x:be+de,y:Z+re*me};default:return{x:be+de/2,y:Z+re/2}}},J=(oe=n==null?void 0:n.sourceOffset)!=null?oe:.5,X=(le=n==null?void 0:n.targetOffset)!=null?le:.5,Q=T?F(T,O,J).x:k.sx,ee=T?F(T,O,J).y:k.sy,ie=I?F(I,V,X).x:k.tx,W=I?F(I,V,X).y:k.ty;return g==="source"&&y?(Q=y.x,ee=y.y,w&&(O=w)):g==="target"&&y&&(ie=y.x,W=y.y,w&&(V=w)),{sx:Q,sy:ee,tx:ie,ty:W,sourcePos:O,targetPos:V}},[T,I,a,l,i,s,g,y,w,n==null?void 0:n.sourceOffset,n==null?void 0:n.targetOffset]);if(!T||!I)return null;let[K,te,z]=Ky({sourceX:C,sourceY:P,targetX:R,targetY:S,sourcePosition:L,targetPosition:$}),M=r||(T==null?void 0:T.selected)||(I==null?void 0:I.selected),H=M?"sequence-edge-marker-highlighted":"sequence-edge-marker",D=E||(n==null?void 0:n.label.trim().length)>0,A=()=>{f(!1)},Y=k=>{d(e,{label:k.trim()})};return Xe(Pd,{children:go("g",{className:G("group bpmn-arrow-edge",{"is-highlighted":M}),onDoubleClick:()=>!h&&f(!0),children:[Xe("path",{d:K,fill:"none",stroke:"transparent",strokeWidth:Math.max(12,12/c),style:{pointerEvents:"stroke",cursor:"pointer"}}),go("g",{className:G("text-grey-500 transition-colors duration-75 group-hover:text-grey-800",{"text-blue-500 group-hover:text-blue-600":M}),children:[Xe(Uy,{id:e,path:K,interactionWidth:0,markerEnd:`url(#${H})`,strokeDasharray:4,className:G("stroke-2 stroke-current transition-[stroke,filter] duration-75 group-hover:drop-shadow-[0_0_3px_rgba(0,0,0,0.2)]",{"stroke-red-500 hover:stroke-red-600":(n==null?void 0:n.hasError)||g&&x&&!_,"stroke-green-500":g&&x&&_,"stroke-blue-500 hover:stroke-blue-600 drop-shadow-[0_0_3px_rgba(59,130,246,0.5)]":M&&!(n!=null&&n.hasError)&&!g})}),go($y,{children:[go("div",{className:"absolute z-[3000] pointer-events-auto flex flex-col items-center gap-1",style:{transform:`translate(-50%, -50%) translate(${te}px, ${z}px)`},children:[r&&!u&&Xe(Ro,{sx:C,sy:P,tx:R,ty:S,hasLabel:!!((B=n==null?void 0:n.label)!=null&&B.trim()),children:Xe(Lo,{edgeId:e,edgeType:"MESSAGE_EDGE"})}),D&&Xe(De,{value:n==null?void 0:n.label,className:"min-w-8 max-w-56 bg-white rounded-md px-2 py-1 text-xs",isEditing:E,onBlur:A,onChange:Y})]}),r&&!u&&!h&&go(Pd,{children:[Xe("div",{className:"absolute z-[1000] pointer-events-none",style:{transform:`translate(-50%, -50%) translate(${C}px, ${P}px)`},children:go("svg",{width:12/c,height:12/c,style:{overflow:"visible",position:"absolute",left:"50%",top:"50%",transform:"translate(-50%, -50%)"},children:[Xe("circle",{cx:6/c,cy:6/c,r:4/c,fill:g==="source"?"#3b82f6":"#fff",stroke:"#3b82f6",strokeWidth:2/c,className:"pointer-events-none"}),Xe("circle",{cx:6/c,cy:6/c,r:6/c,fill:"none",stroke:"#3b82f6",strokeWidth:1/c,opacity:g==="source"?.6:.3,className:"pointer-events-none"}),Xe("circle",{cx:6/c,cy:6/c,r:8/c,fill:"transparent",className:G("pointer-events-auto",{"cursor-move":!g||g!=="source","cursor-not-allowed":g==="source"&&x&&!_,"cursor-grabbing":g==="source"&&(!x||_)}),onMouseDown:k=>N("source",k.nativeEvent)})]})}),Xe("div",{className:"absolute z-[1000] pointer-events-none",style:{transform:`translate(-50%, -50%) translate(${R}px, ${S}px)`},children:go("svg",{width:12/c,height:12/c,style:{overflow:"visible",position:"absolute",left:"50%",top:"50%",transform:"translate(-50%, -50%)"},children:[Xe("circle",{cx:6/c,cy:6/c,r:4/c,fill:g==="target"?"#3b82f6":"#fff",stroke:"#3b82f6",strokeWidth:2/c,className:"pointer-events-none"}),Xe("circle",{cx:6/c,cy:6/c,r:6/c,fill:"none",stroke:"#3b82f6",strokeWidth:1/c,opacity:g==="target"?.6:.3,className:"pointer-events-none"}),Xe("circle",{cx:6/c,cy:6/c,r:8/c,fill:"transparent",className:G("pointer-events-auto",{"cursor-move":!g||g!=="target","cursor-not-allowed":g==="target"&&x&&!_,"cursor-grabbing":g==="target"&&(!x||_)}),onMouseDown:k=>N("target",k.nativeEvent)})]})})]})]})]})]})})};import{getStraightPath as e0,Position as ni}from"@xyflow/react";import{jsx as Rd,jsxs as t0}from"react/jsx-runtime";var kd=({toX:e,toY:t,fromNode:o})=>{var u,m;if(!o)return null;let{internals:{positionAbsolute:{x:n,y:r}},measured:i}=o,s=(u=i.width)!=null?u:0,a=(m=i.height)!=null?m:0,c=[{x:n,y:r+a/2,pos:ni.Left},{x:n+s,y:r+a/2,pos:ni.Right},{x:n+s/2,y:r,pos:ni.Top},{x:n+s/2,y:r+a,pos:ni.Bottom}].reduce((p,h)=>{let E=Math.hypot(e-p.x,t-p.y);return Math.hypot(e-h.x,t-h.y)<E?h:p}),[d]=e0({sourceX:c.x,sourceY:c.y,targetX:e,targetY:t});return t0("g",{className:"group",children:[Rd("path",{fill:"none",className:"stroke-2 stroke-grey-500 animated transition-[stroke,filter] duration-75",d}),Rd("circle",{cx:e,cy:t,fill:"none",r:4,className:"stroke-2 stroke-grey-600"})]})};import{Position as Jt,useConnection as o0,useReactFlow as n0}from"@xyflow/react";import{orderBy as r0}from"lodash";import{useMemo as Dd,useState as i0}from"react";import{Fragment as Ts,jsx as Ue,jsxs as ri}from"react/jsx-runtime";var Od=({id:e,data:t,selected:o,dragging:n,parentId:r})=>{var T;let{updateNodeData:i,getNodes:s}=n0(),{mode:a,isReadOnly:l}=U(),{inProgress:c,fromNode:d}=o0(),u=c&&(d==null?void 0:d.id)!==e,[m,p]=i0(!1),h=s(),E=!r,f=!E&&((T=h.find(I=>I.id===r))==null?void 0:T.selected),g=Dd(()=>r0([...h.filter(I=>I.parentId===e&&I.type==="LANE")],"position.y","asc"),[h,e]),y=E?ea.MIN_WIDTH:se.MIN_WIDTH,x=Dd(()=>{if(E&&g.length>1){let I=[...g];return I.pop(),I.reduce((P,R)=>{var S,L;return P+((L=(S=R.measured)==null?void 0:S.height)!=null?L:0)},0)+se.MIN_HEIGHT}return se.MIN_HEIGHT},[E,g]),w=I=>{i(e,{label:I})},_=()=>{p(!0)},N=()=>{p(!1)};return ri(Ts,{children:[ri("div",{className:G("flex h-full min-h-64 w-full min-w-[50rem] hover:shadow-md bg-white outline outline-2 outline-grey-400",{"pointer-events-none":l,"outline-offset-0 outline-blue-500 shadow-sm":(o||f)&&!l}),children:[Ue("div",{className:G("flex align-items justify-center w-10 border-r-2 border-grey-400",{"border-blue-500":(o||f)&&!l}),onDoubleClick:_,children:Ue("div",{className:"relative flex-1 [writing-mode:vertical-rl] [text-orientation:sideways] transform rotate-180",children:Ue(De,{value:t.label,className:"w-full h-full self-auto",contentClassName:G({"whitespace-nowrap":m}),isEditing:m,onBlur:N,onChange:w})})}),Ue("div",{className:"flex-1"})]}),Ue(Fe,{nodeId:e,nodeType:"LANE",isChild:!E}),a==="edit"&&Ue(it,{nodeId:e,isVisible:!n&&o,minWidth:y,minHeight:x,offset:10}),!c&&ri(Ts,{children:[Ue(ne,{type:"source",position:Jt.Left,id:"left"}),Ue(ne,{type:"source",position:Jt.Right,id:"right"}),Ue(ne,{type:"source",position:Jt.Top,id:"top"}),Ue(ne,{type:"source",position:Jt.Bottom,id:"bottom"})]}),(!c||u)&&ri(Ts,{children:[Ue(ne,{type:"target",position:Jt.Left,id:"left",className:G({"annotation-handle":u})}),Ue(ne,{type:"target",position:Jt.Right,id:"right",className:G({"annotation-handle":u})}),Ue(ne,{type:"target",position:Jt.Top,id:"top",className:G({"annotation-handle":u})}),Ue(ne,{type:"target",position:Jt.Bottom,id:"bottom",className:G({"annotation-handle":u})})]})]})};var Vd={START_EVENT:bd,END_EVENT:hd,TASK:Ad,GATEWAY:xd,ANNOTATION:md,LANE:Od,UNSUPPORTED:Sd},Hd={SEQUENCE_EDGE:kc,MESSAGE_EDGE:Ld,ANNOTATION_EDGE:xc},Gd="#fafafa",Bd="#bebebe",zd=1,Yd=10,Wd="bottom-left",Ns=.05,Fd=5,Xo=.5,Uo=Ns,$o=1,Xd={x:0,y:0,zoom:.75},Ud=1,$d=2,s0={[Ud]:4,[$d]:2},Cn=[Ud,$d],vs=Cn.reduce((e,t)=>e|s0[t],0);import{useReactFlow as a0}from"@xyflow/react";var st=()=>{let{getEdges:e,getNodes:t}=a0(),{lastElementId:o}=U(),n=()=>{let i=t(),s=e(),a=ed(i,s);return Math.max(a,o)};return{getLastId:n,getNextId:()=>n()+1}};var Ko=()=>{let{getNodes:e,getEdges:t,setNodes:o,setEdges:n,setViewport:r}=c0(),{getLastId:i}=st(),s=d0(),{setLastElementId:a}=U(),l=Kd(async(d="")=>{let{nodes:u,edges:m,lastElementId:p}=await od(d),{width:h,height:E}=s.getState();if(h>0&&E>0){let f=la(u);f&&r(l0(f,h,E,Uo,$o,Xo))}o(u),n(m),a(p)},[o,n,a,s,r]),c=Kd(()=>{let d=e(),u=t(),m=i();return td(d,u,m)},[e,t,i]);return{importFromMxGraph:l,exportToMxGraph:c}};import{useCallback as qd}from"react";var p0=500,ii=()=>{let{isInitialized:e,onElementChanges:t}=U(),{exportToMxGraph:o}=Ko(),n=u0(()=>{if(!e)return;let s=o();t==null||t(s)},p0),r=qd(s=>{s.every(c=>c.type==="select")||s.some(c=>c.type==="position"&&c.dragging)||n()},[n]),i=qd(s=>{s.some(l=>l.type==="select")||n()},[n]);return{emitElementChanges:n,handleNodeChanges:r,handleEdgeChanges:i}};var Zd=({setEdges:e,saveHistory:t})=>{let{getNode:o,getEdges:n,getNodes:r,getInternalNode:i}=m0(),{emitElementChanges:s}=ii(),a=g0(null),{getNextId:l}=st(),c=ho(f=>{var _;let g=o(f.source),y=o(f.target);if(!g||!y)return!1;let x={sourceNodeId:g.id,targetNodeId:y.id,sourceNodeType:g.type,targetNodeType:y.type,nodes:r(),edges:n(),reconnectingEdgeId:(_=a.current)!=null?_:void 0};return ns(x).isValid},[o,n,r]),d=ho(f=>{var x,w;let g=l(),y=i(f.source);if(y){let _=i(f.target),N=_?_.internals.positionAbsolute.x+((x=_.measured.width)!=null?x:0)/2:0,T=_?_.internals.positionAbsolute.y+((w=_.measured.height)!=null?w:0)/2:0,I=Dc(y,N,T),C=(_==null?void 0:_.type)==="ANNOTATION"||(y==null?void 0:y.type)==="ANNOTATION",P=C?ko:rt,R;if(!C&&_&&f.targetHandle){let $=Kr(I),K=Kr(f.targetHandle),{x:te,y:z}=ls(y,I),{x:M,y:H}=ls(_,f.targetHandle),A=Fr(te,z,M,H,$,K).slice(1,-1);A.length>0&&(R=A)}let S=v(b(b({},f),P),{id:String(g),sourceHandle:I,data:b(b({},C?{}:rt.data),R?{points:R}:{})}),L=n().concat(S);e(L),t("forceSave",{nodes:r(),edges:L}),s()}},[l,e,s,i,n,r,t]),u=ho((f,g)=>{a.current=g.id},[]),m=ho(()=>{a.current=null},[]),p=ho((f,g)=>{let y=o(g.source),x=o(g.target);if(!y||!x){a.current=null;return}let w={sourceNodeId:y.id,targetNodeId:x.id,sourceNodeType:y.type,targetNodeType:x.type,nodes:r(),edges:n(),reconnectingEdgeId:f.id};if(!ns(w).isValid){a.current=null;return}let N=f0(f,g,n()).map(T=>T.id===f.id?v(b({},T),{data:v(b({},T.data),{points:void 0})}):T);e(N),t("forceSave",{nodes:r(),edges:N}),a.current=null,s()},[o,r,n,e,s,t]),h=ho(f=>{a.current=f},[]),E=ho(()=>{a.current=null},[]);return{isValidConnection:c,onConnect:d,onReconnect:p,onReconnectStart:u,onReconnectEnd:m,setReconnectingEdge:h,clearReconnectingEdge:E}};import{useTranslation as h0}from"@produto-lecom/lecom-ui";import{useReactFlow as y0}from"@xyflow/react";import{useCallback as Ln,useRef as iu,useState as x0}from"react";var Sn=(e=[])=>e.filter(t=>t.type==="START_EVENT"),yo=(e=[])=>e.filter(t=>t.type==="END_EVENT"),Qt=(e=[])=>e.filter(t=>t.type==="TASK")||[],Jd=(e=[])=>e.filter(t=>{var o;return t.type==="TASK"&&((o=t.properties)==null?void 0:o.variant)==="SCRIPT"});var si=(e=[])=>e.filter(t=>t.type==="GATEWAY"),Qd=(e=[])=>e.filter(t=>{var o;return t.type==="GATEWAY"&&((o=t.properties)==null?void 0:o.variant)==="EXCLUSIVE"}),Qe=(e,t=[])=>t.filter(o=>o.source===e),Mn=(e,t=[])=>t.filter(o=>o.target===e),jd=(e,t)=>{var n,r;let o=(n=t.nodes)==null?void 0:n.find(i=>i.id===e);return((r=o==null?void 0:o.properties)==null?void 0:r.attribute)==="LOOP"},eu=(e,t)=>{let o=Qe(e,t.edges||[]);for(let n of o){let r=(t.nodes||[]).find(i=>i.id===n.target);if(r&&r.type==="END_EVENT")return!0}return!1},tu=e=>e?/[^\s]/.test(e.trim()):!1,Ee=e=>{let{isValid:t,nodeIds:o,edgeIds:n}=e;return{isValid:t,nodeIds:!t&&o&&o.length>0?o:[],edgeIds:!t&&n&&n.length>0?n:[]}},Pt=(e=[],t)=>{if(!e||e.length===0)return{isValid:!0,invalidIds:[]};let o=e.filter(n=>!t(n));return{isValid:o.length===0,invalidIds:o.map(n=>n.id)}},ou=(e=[],t=[])=>({nodes:e.map(o=>{var n;return{id:o.id,type:o.type||"",label:typeof((n=o.data)==null?void 0:n.label)=="string"?o.data.label:void 0,properties:o.data}}),edges:t.map(o=>({id:o.id,source:o.source,target:o.target,type:o.type||"default"}))});var Pn=[{id:"start_event_not_found",validate:e=>{let t=Sn(e.nodes);return Ee({isValid:t.length>=1})}},{id:"end_event_not_found",validate:e=>{let t=yo(e.nodes);return Ee({isValid:t.length>=1})}},{id:"multiple_start_event_not_allowed",validate:e=>{let t=Sn(e.nodes),o=t.length===1;if(t.length===0)return Ee({isValid:!0});if(!o)return Ee({isValid:!1,nodeIds:t.map(i=>i.id)});let n=Qe(t[0].id,e.edges);if(!(n.length<=1)){let i=[...t.map(s=>s.id),...n.map(s=>s.target)];return Ee({isValid:!1,nodeIds:[...new Set(i)]})}return Ee({isValid:!0})}},{id:"task_flows_limit_exceeds",validate:e=>{let t=Qt(e.nodes),o=Pt(t,n=>Qe(n.id,e.edges).length<=2);return Ee({isValid:o.isValid,nodeIds:o.invalidIds})}},{id:"task_label_empty",highlightRelatedEdges:!1,validate:e=>{let t=Qt(e.nodes),o=Pt(t,n=>!!n.label&&n.label.trim()!=="");return Ee({isValid:o.isValid,nodeIds:o.invalidIds})}},{id:"task_label_length",highlightRelatedEdges:!1,validate:e=>{let o=Qt(e.nodes),n=Pt(o,r=>!r.label||r.label.length<=60);return Ee({isValid:n.isValid,nodeIds:n.invalidIds})}},{id:"duplicate_task_name",highlightRelatedEdges:!1,validate:e=>{let t=Qt(e.nodes),o=new Map;for(let r of t){if(!r.label)continue;let i=r.label.trim();i&&(o.has(i)||o.set(i,[]),o.get(i).push(r))}let n=[];for(let[,r]of o.entries())r.length>1&&r.forEach(i=>n.push(i.id));return Ee({isValid:n.length===0,nodeIds:n})}},{id:"nested_gateway",validate:e=>{let t=si(e.nodes),o=[],n=[];for(let r of t){let i=Qe(r.id,e.edges);for(let s of i){let a=e.nodes.find(l=>l.id===s.target);a&&a.type==="GATEWAY"&&(o.push(r.id,a.id),n.push(s.id))}}return Ee({isValid:o.length===0,nodeIds:o.length>0?[...new Set(o)]:[],edgeIds:n})}},{id:"events_nested",validate:e=>{let t=[...Sn(e.nodes),...yo(e.nodes)],o=[],n=[];for(let r of t){let i=Qe(r.id,e.edges);for(let s of i){let a=e.nodes.find(l=>l.id===s.target);a&&(a.type==="START_EVENT"||a.type==="END_EVENT")&&(o.push(r.id,a.id),n.push(s.id))}}return Ee({isValid:o.length===0,nodeIds:o.length>0?[...new Set(o)]:[],edgeIds:n})}},{id:"flows_on_end_tasks_not_allowed",validate:e=>{let t=yo(e.nodes),o=[],n=[];for(let r of t){let i=Mn(r.id,e.edges);for(let s of i){let a=e.nodes.find(l=>l.id===s.source);if(a&&a.type==="TASK"){let l=Qe(a.id,e.edges);l.length>1&&(o.push(a.id),l.forEach(c=>n.push(c.id)))}}}return Ee({isValid:o.length===0,nodeIds:o,edgeIds:n})}},{id:"conditions_flows_limit_exceeds",validate:e=>{let t=Qd(e.nodes),o=Pt(t,r=>Qe(r.id,e.edges).length<=2),n=o.invalidIds.flatMap(r=>Qe(r,e.edges).map(i=>i.id));return Ee({isValid:o.isValid,nodeIds:o.invalidIds,edgeIds:n})}},{id:"activity_name_invalid",validate:e=>{let t=Qt(e.nodes),o=Pt(t,n=>!n.label||tu(n.label));return Ee({isValid:o.isValid,nodeIds:o.invalidIds})}},{id:"final_activity_has_loop",validate:e=>{var s,a;if(!((s=e==null?void 0:e.nodes)!=null&&s.length)||!((a=e==null?void 0:e.edges)!=null&&a.length))return Ee({isValid:!0});let t=yo(e.nodes)[0];if(!t)return Ee({isValid:!0});let o=Mn(t.id,e.edges);if(!o.length)return Ee({isValid:!0});let r=Qt(e.nodes).filter(l=>o.some(c=>c.source===l.id)),i=Pt(r,l=>!jd(l.id,e));return Ee({isValid:i.isValid,nodeIds:i.isValid?[]:[t.id,...i.invalidIds]})}},{id:"concurrent_initial_and_final_event",validate:e=>{let t=Qt(e.nodes),o=yo(e.nodes)[0];if(!o)return Ee({isValid:!0});let n=t.filter(l=>{let c=Mn(l.id,e.edges),d=Qe(l.id,e.edges),u=c.some(p=>{var h;return((h=e.nodes.find(E=>E.id===p.source))==null?void 0:h.type)==="START_EVENT"}),m=d.some(p=>{var h;return((h=e.nodes.find(E=>E.id===p.target))==null?void 0:h.type)==="END_EVENT"});return u&&m}),r=Mn(o.id,e.edges),i=r.length>1,s=r.map(l=>l.source),a={isValid:n.length===0&&!i,nodeIds:[...n.map(l=>l.id),...i?s:[]]};return Ee(a)}},{id:"gateway_flow_to_event",validate:e=>{let t=si(e.nodes),o=[],n=[];for(let r of t){let i=Qe(r.id,e.edges);for(let s of i){let a=e.nodes.find(l=>l.id===s.target);a&&a.type==="END_EVENT"&&(o.push(r.id,a.id),n.push(s.id))}}return Ee({isValid:o.length===0,nodeIds:o.length>0?[...new Set(o)]:[],edgeIds:n})}},{id:"gateway_missing_output_streams",validate:e=>{let t=si(e.nodes),o=Pt(t,n=>Qe(n.id,e.edges).length>=1);return Ee({isValid:o.isValid,nodeIds:o.invalidIds})}},{id:"event_to_condition",validate:e=>{let t=[...Sn(e.nodes),...yo(e.nodes)],o=[],n=[];for(let r of t){let i=Qe(r.id,e.edges);for(let s of i){let a=e.nodes.find(l=>l.id===s.target);a&&a.type==="GATEWAY"&&(o.push(r.id,a.id),n.push(s.id))}}return Ee({isValid:o.length===0,nodeIds:o.length>0?[...new Set(o)]:[],edgeIds:n})}},{id:"script_in_final_activity",validate:e=>{let t=Jd(e.nodes),o=Pt(t,n=>!eu(n.id,e));return Ee({isValid:o.isValid,nodeIds:o.invalidIds})}}];var nu=e=>{e=e||{nodes:[],edges:[]},e.nodes=e.nodes||[],e.edges=e.edges||[];let t=[];for(let n of Pn){let r=n.validate(e);r.isValid||t.push({id:n.id,message:n.id,nodeIds:r.nodeIds||[],edgeIds:r.edgeIds||[]})}return{isValid:t.length===0,errors:t}},ru=async(e,t)=>{var n;let o=[];try{let r=await e(),i=(n=r==null?void 0:r.filter(s=>s.area==="DIAGRAM"))!=null?n:[];return i.length===0?{isValid:!0,errors:[]}:(i.forEach(s=>{var l,c;let a=(c=(l=s==null?void 0:s.detail)==null?void 0:l.phases)==null?void 0:c.map(d=>d.diagramCellId);o.push({id:s.code,message:s.code,nodeIds:a,edgeIds:[]})}),{isValid:!1,errors:o})}catch(r){return{isValid:!1,errors:[{id:"cannot_validate_subprocess_reference",message:"cannot_validate_subprocess_reference",nodeIds:t.map(i=>i.id)||[],edgeIds:[]}]}}};import{jsx as ai,jsxs as E0}from"react/jsx-runtime";var su=()=>{let{t:e}=h0(),{toast:t}=We(),{setNodes:o,setEdges:n,getNodes:r,getEdges:i}=y0(),{validateCustomDiagram:s}=U(),[a,l]=x0(!1),c=iu(!1),d=iu(!1),u=Ln(async f=>{let g=ou(f.nodes,f.edges),y=nu(g),x=f.nodes.filter(({type:_,data:N})=>_==="TASK"&&(N==null?void 0:N.variant)==="SUBPROCESS");if(s&&x.length>0){let _=await ru(s,x);y={isValid:y.isValid&&_.isValid,errors:[...y.errors,..._.errors]}}let w=y.errors.map(_=>v(b({},_),{message:e(`validation.errors.${_.id}`)}));return a||l(!0),{isValid:y.isValid,errors:w}},[a,e,s]),m=Ln((f,g=!0)=>{if(g&&f&&t({variant:f.isValid?"success":"error",duration:5e3,title:f.isValid?e("validation.success.title"):e("validation.errors.title"),content:E0("div",{className:"flex flex-col gap-1",children:[!f.isValid&&ai("span",{className:"body-small-500",children:e("validation.errors.subtitle")}),ai("ul",{className:"list-disc list-inside max-h-40 overflow-y-auto",children:f.isValid?ai("li",{children:e("validation.success.message")}):f.errors.map(S=>ai("li",{className:"text-xs",children:S.message},S.id))})]})}),!f)return;c.current=!0,d.current=!0;let y=[],x=[];f.errors.forEach(S=>{S.nodeIds&&S.nodeIds.length>0&&S.nodeIds.forEach(L=>y.push(L)),S.edgeIds&&S.edgeIds.length>0&&S.edgeIds.forEach(L=>x.push(L))});let w=[...new Set(y)];o(S=>S.map(L=>v(b({},L),{data:v(b({},L.data),{hasError:!1})}))),n(S=>S.map(L=>v(b({},L),{data:v(b({},L.data),{hasError:!1})})));let _=r(),N=i(),T=new Set(w),I=new Set;f.errors.forEach(S=>{var K,te;let L=Pn.find(z=>z.id===S.id);(L==null?void 0:L.highlightRelatedEdges)!==!1&&((K=S.edgeIds)==null||K.forEach(z=>I.add(z)),(te=S.nodeIds)==null||te.forEach(z=>{N.forEach(M=>{(M.source===z||M.target===z)&&I.add(M.id)})}))});let C=new Set,P=new Set,R=new Set;_.forEach(S=>{S.type==="START_EVENT"?C.add(S.id):S.type==="END_EVENT"&&P.add(S.id)}),N.forEach(S=>{C.has(S.source)&&R.add(S.target),P.has(S.target)&&R.add(S.source)}),R.forEach(S=>{var L,$;if(T.has(S)){let K=(L=f.errors.find(z=>{var M;return(M=z.nodeIds)==null?void 0:M.includes(S)}))==null?void 0:L.id;(($=Pn.find(z=>z.id===K))==null?void 0:$.highlightRelatedEdges)!==!1&&N.forEach(z=>{z.source===S&&P.has(z.target)&&(T.add(z.target),I.add(z.id)),z.target===S&&C.has(z.source)&&(T.add(z.source),I.add(z.id))})}}),T.size>0&&o(S=>S.map(L=>v(b({},L),{data:v(b({},L.data),{hasError:T.has(L.id)})}))),I.size>0&&n(S=>S.map(L=>v(b({},L),{data:v(b({},L.data),{hasError:I.has(L.id)})}))),setTimeout(()=>{c.current=!1},0)},[e,i,r,n,o,t]),p=Ln(()=>{l(!1),d.current=!1,o(f=>f.map(g=>v(b({},g),{data:v(b({},g.data),{hasError:!1})}))),n(f=>f.map(g=>v(b({},g),{data:v(b({},g.data),{hasError:!1})})))},[n,o]),h=Ln(()=>{d.current&&(c.current=!0,d.current=!1,o(f=>f.map(g=>v(b({},g),{data:v(b({},g.data),{hasError:!1})}))),n(f=>f.map(g=>v(b({},g),{data:v(b({},g.data),{hasError:!1})}))),setTimeout(()=>{c.current=!1},0))},[n,o]),E=Ln(()=>c.current,[]);return{validateDiagram:u,handleValidationComplete:m,clearValidation:p,dismissValidationPanel:h,isAutoValidationEnabled:a,getIsClearingValidation:E}};import{useReactFlow as b0}from"@xyflow/react";import{useTranslation as _0}from"@produto-lecom/lecom-ui";import{useEffect as T0}from"react";var N0=15,au="bpmn:selection",v0=e=>{if(!e||!(e instanceof HTMLElement))return!1;let t=e.tagName.toLowerCase(),o=t==="input"||t==="textarea",n=e.isContentEditable,r=t==="select",i=e.closest('[contenteditable="true"], input, textarea, select')!==null;return o||n||r||i},lu=e=>{if(!v0(e.target))return!0;let t=window.getSelection(),o=t&&t.toString().length>0;if(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement){let n=e.target;return n.selectionStart===n.selectionEnd&&!o}return!o},cu=({offset:e=N0,saveHistory:t})=>{let{t:o}=_0(),{getNodes:n,setNodes:r,getEdges:i,setEdges:s}=b0(),{getNextId:a}=st(),{mode:l,containerRef:c}=U();T0(()=>{if(l!=="edit")return;let d=c.current;if(!d)return;let u=p=>{var _,N;if(!lu(p)||!d.contains(document.activeElement))return;let E=n(),f=i(),g=E.filter(T=>T.selected);if(!g.length)return;p.preventDefault(),p.stopPropagation();let y=f.filter(T=>g.some(I=>I.id===T.source)&&g.some(I=>I.id===T.target)),w=JSON.stringify({nodes:g,edges:y});(_=p.clipboardData)==null||_.setData(au,w),(N=p.clipboardData)==null||N.setData("text/plain",`BPMN Selection: ${g.length} nodes`)},m=p=>{var R,S;if(!lu(p)||!d.contains(document.activeElement))return;let E=(R=p.clipboardData)==null?void 0:R.getData(au);if(!E)return;p.preventDefault(),p.stopPropagation();let f;try{f=JSON.parse(E)}catch(L){return}if(!((S=f.nodes)!=null&&S.length))return;let g=new Map,y=n(),x=[],w=f.nodes.filter(L=>zt(L.type,y));if(w.length===0)return;let _=a(),N=w.map(L=>{var te;let $=String(_++);g.set(L.id,$);let K=v(b({},L),{id:$,selected:!0,position:{x:L.position.x+e,y:L.position.y+e}});if(L.type==="TASK"){let z=(te=L.data)==null?void 0:te.label,M=Wo(z||o("bpmn.task.label.prefix"),[...y,...x]);K.data=v(b({},L.data),{label:M})}return x.push(K),K}),T=f.edges.map(L=>v(b({},L),{id:String(_++),selected:!0,source:g.get(L.source)||L.source,target:g.get(L.target)||L.target})),I=[...y.map(L=>v(b({},L),{selected:!1})),...N],P=[...i().map(L=>v(b({},L),{selected:!1})),...T];r(I),s(P),t("forceSave",{nodes:I,edges:P})};return d.addEventListener("copy",u,!0),d.addEventListener("paste",m,!0),()=>{d.removeEventListener("copy",u,!0),d.removeEventListener("paste",m,!0)}},[n,r,i,s,a,e,o,t,l,c])};import{useTranslation as w0}from"@produto-lecom/lecom-ui";import{useReactFlow as I0}from"@xyflow/react";import{useState as A0}from"react";var C0=50,du=({nodes:e,setNodes:t,setEdges:o,saveHistory:n})=>{let{draggableNode:r,setDraggableNode:i}=Yo(),{t:s}=w0(),{getInternalNode:a,getNodes:l,getEdges:c,screenToFlowPosition:d}=I0(),{getNextId:u}=st(),{setIsDragging:m}=U(),{getInternalNodes:p}=Jr(),{rebuildIndex:h,forceRebuildIndex:E}=Ir(),[f,g]=A0(null),y=(M,H,D)=>{var k;if(M.parentId!==H)return null;let A=D.filter(O=>O.id!==M.id&&O.parentId===H&&O.type==="LANE").sort((O,V)=>O.position.y-V.position.y);if(A.length===0)return null;let Y=(k=D.find(O=>O.id===M.id))!=null?k:M,B=A.find(O=>Y.position.y<O.position.y);return B?{draggedLaneId:M.id,beforeLaneId:B.id}:{draggedLaneId:M.id,afterLaneId:A[A.length-1].id}},x=(M,H=!1,D)=>{let A=H?"node-drop-target-error":"node-drop-target",Y=H?"node-drop-target-lane-error":"node-drop-target-lane";t(B=>{var O;let k=(O=D==null?void 0:D(B))!=null?O:null;return B.map(V=>{let F=[];return V.id===M&&F.push(A),M!==void 0&&V.parentId===M&&V.type==="LANE"&&V.id!==(k==null?void 0:k.draggedLaneId)&&F.push(Y),V.id===(k==null?void 0:k.draggedLaneId)&&F.push("lane-reorder-dragging"),V.id===(k==null?void 0:k.beforeLaneId)&&F.push("lane-reorder-before"),V.id===(k==null?void 0:k.afterLaneId)&&F.push("lane-reorder-after"),v(b({},V),{className:F.join(" ")})})})},w=(M,H)=>{let D=p();if(M.type==="LANE"){if(H){x();return}let O=D.filter(J=>J.id!==M.id&&J.type==="LANE"&&!J.parentId),V=tn(M,O);if(!V){x();return}if(to({parentId:V.id,nodes:e,excludeTypes:["LANE"]})){x(V.id,!0);return}x(V.id,!1,J=>y(M,V.id,J));return}let Y=D.filter(O=>O.id!==M.id&&O.type==="LANE"),B=tn(M,Y);if(!B){x();return}if(to({parentId:B.id,nodes:e,includeTypes:["LANE"]})){x();return}x(B.id)},_=M=>{let H=a(M.id),D=M.type==="LANE"&&to({parentId:M.id,nodes:e,includeTypes:["LANE"]});w(H,D)},N=M=>M.map(H=>v(b({},H),{className:void 0})),T=M=>M.some(D=>D.dragging)?M.map(D=>D.dragging?v(b({},D),{dragging:!1}):D):M,I=(M,H)=>{let D=0;for(let A of H){if(A.id===M||A.parentId||A.type==="LANE")continue;let Y=ot(A),B=Y.y+Y.h;D=Math.max(D,B)}return D+C0},C=(M,H)=>{if(!Vi(M,H))return H;let D=I(M,H);return H.map(A=>A.id===M?v(b({},A),{position:v(b({},A.position),{y:D})}):A)},P=M=>{if(M.preventDefault(),M.dataTransfer.dropEffect="move",!(r!=null&&r.type))return;let H=d({x:M.clientX,y:M.clientY}),D={id:"__sidebar_drag__",type:r.type,position:H,measured:{width:1,height:1},internals:{positionAbsolute:H}};w(D,!1)},R=M=>{let H=M.relatedTarget;(!H||!M.currentTarget.contains(H))&&x()},S=(M,H)=>{M.preventDefault(),_(H)},L=(M,H,D)=>{var F,J;let A=[...D],Y=H.parentId?H.parentId:H.id;if(M.parentId===H.id)return A=Gi(M,H,A),A=St(A),A=oo(Y,A),N(A);if(M.type==="LANE"){if(to({parentId:H.id,nodes:A,excludeTypes:["LANE"]})){let W=Nr(H),oe=50,le=50;return A.map(q=>{var xe,me;return q.id===M.id?v(b({},q),{position:{x:(xe=f==null?void 0:f.x)!=null?xe:W.x+oe,y:(me=f==null?void 0:f.y)!=null?me:W.y2+le}}):q})}let ee=A.filter(W=>W.parentId===H.id).reduce((W,oe)=>{var le,q;return W+((q=(le=oe.measured)==null?void 0:le.height)!=null?q:0)},0),ie={x:se.HEADER_WIDTH,y:ee};return A=A.map(W=>W.id===M.id?v(b({},W),{parentId:H.id,position:ie,className:void 0}):v(b({},W),{className:void 0})),A=St(A),A=C(Y,A),A}if(to({parentId:H.id,nodes:A,includeTypes:["LANE"]})){let X;if(M.parentId){let Q=a(M.parentId),{x:ee,y:ie}=ot(Q);X={x:ee+((F=M.position.x)!=null?F:0),y:ie+((J=M.position.y)!=null?J:0)}}return A=A.map(Q=>Q.id===M.id?v(b({},Q),{position:X!=null?X:Q.position,parentId:void 0,className:void 0}):v(b({},Q),{className:void 0})),A=oo(Y,A),A}let O=ia(M,H);A=A.map(X=>X.id===M.id?v(b({},X),{parentId:H.id,position:O,className:void 0}):v(b({},X),{className:void 0}));let V=A.find(X=>X.id===M.id);return A=Gi(V,H,A),A=St(A),A=oo(Y,A),A},$=M=>{if(M.preventDefault(),!(r!=null&&r.type))return;if(!zt(r.type,l())){m(!1),i(null);return}let H=d({x:M.clientX,y:M.clientY}),D={width:ue[r.type].MIN_WIDTH,height:ue[r.type].MIN_HEIGHT},A=u(),Y={id:String(A),type:r.type,position:H,measured:D,data:{label:r.type==="TASK"?jr(e,s("bpmn.task.label.prefix")):"",variant:r.variant,attribute:r.attribute},selected:!0},B=v(b({},Y),{internals:{positionAbsolute:H}}),k=v(b({},B),{measured:{width:1,height:1}}),O=p(),V=r.type==="LANE",F=O.filter(W=>V?W.type==="LANE"&&!W.parentId:W.type==="LANE"),J=tn(k,F),X=[...O.map(W=>v(b({},W),{selected:!1})),B];J&&(X=L(B,J,X)),X=eo(X),V&&!J&&(X=C(B.id,X)),X=N(X),t(X),E();let Q=M.dataTransfer.getData("sourceId"),ee=c(),ie=ee;if(Q){let W={id:String(A+1),source:Q,target:Y.id},oe=r.type==="ANNOTATION"?b(b({},W),ko):b(b({},W),rt);ie=ee.concat(oe),o(ie)}n("forceSave",{nodes:X,edges:ie}),m(!1),i(null)},K=async(M,H,D)=>{let A=[...p()],Y=new Set;D.forEach(O=>{let V=a(O.id),F=O.type==="LANE",J=A.filter(Q=>Q.id!==O.id&&(F?Q.type==="LANE"&&!Q.parentId:Q.type==="LANE")),X=tn(V,J);if(X){if(F&&to({parentId:O.id,nodes:A,includeTypes:["LANE"]})){O.parentId&&(A=z(O,A),Y.add(O.id));return}A=L(V,X,A);return}O.parentId&&(A=z(O,A),O.type==="LANE"&&Y.add(O.id))}),A=T(A);let B=D.filter(O=>O.type==="LANE"&&!O.parentId).map(O=>O.id);for(let O of B)Vi(O,A)&&f&&(A=A.map(V=>V.id===O?v(b({},V),{position:b({},f)}):V));for(let O of Y)A=C(O,A);if(D.some(O=>O.type!=="LANE"&&!O.parentId)){let O=A.filter(V=>V.type==="LANE"&&!V.parentId).map(V=>V.id);for(let V of O)A=oo(V,A)}A=eo(A),A=N(A),t(A),h(A),g(null)},te=(M,H)=>{g({x:H.position.x,y:H.position.y})},z=(M,H)=>{var J,X,Q,ee,ie,W,oe,le;let D=a(M.parentId);if(!D)return H;let A=M.type==="LANE",Y=H.filter(q=>q.parentId===D.id&&q.id!==M.id),B=Y.filter(q=>q.type==="LANE"),k;if(A&&B.length===0)k=se.MIN_HEIGHT;else if(A){let q=(X=(J=M.measured)==null?void 0:J.height)!=null?X:se.MIN_HEIGHT;k=((ee=(Q=D.measured)==null?void 0:Q.height)!=null?ee:se.MIN_HEIGHT)-q,k=Math.max(se.MIN_HEIGHT,k)}else k=Y.length>0?Y.reduce((q,xe)=>{var me,be;return q+((be=(me=xe.measured)==null?void 0:me.height)!=null?be:0)},0)+ve:Math.max(se.MIN_HEIGHT,(W=(ie=D.measured)==null?void 0:ie.height)!=null?W:0);let{x:O,y:V}=ot(D),F={x:O+((oe=M.position.x)!=null?oe:0),y:V+((le=M.position.y)!=null?le:0)};return H=H.map(q=>q.id===M.id?v(b({},q),{position:F,parentId:void 0}):q.id===D.id?v(b({},q),{height:k,measured:v(b({},q.measured),{height:k})}):q),H=St(H),H};return{onDragOver:P,onDragLeave:R,onDrop:$,onNodeDrag:S,onNodeDragStart:te,onNodeDragStop:K}};import{useReactFlow as S0}from"@xyflow/react";import{useTranslation as M0}from"@produto-lecom/lecom-ui";import{useEffect as P0}from"react";var L0=30,R0=e=>{if(!e||!(e instanceof HTMLElement))return!1;let t=e.tagName.toLowerCase(),o=t==="input"||t==="textarea",n=e.isContentEditable,r=t==="select",i=e.closest('[contenteditable="true"], input, textarea, select')!==null;return o||n||r||i},k0=e=>!R0(e.target),uu=({offset:e=L0,saveHistory:t})=>{let{t:o}=M0(),{getNodes:n,setNodes:r,getEdges:i,setEdges:s}=S0(),{getNextId:a}=st(),{mode:l,containerRef:c}=U();P0(()=>{if(l!=="edit")return;let d=c.current;if(!d)return;let u=m=>{if(d.contains(document.activeElement)&&m.ctrlKey&&m.key.toLowerCase()==="d"&&k0(m)){m.preventDefault(),m.stopPropagation();let h=n(),E=i(),f=h.filter(P=>P.selected);if(!f.length)return;let g=new Map,y=[],x=f.filter(P=>zt(P.type,h));if(x.length===0)return;let w=E.filter(P=>x.some(R=>R.id===P.source)&&x.some(R=>R.id===P.target)),_=a(),N=x.map(P=>{var L;let R=String(_++);g.set(P.id,R);let S=v(b({},P),{id:R,selected:!0,position:{x:P.position.x+e,y:P.position.y+e}});if(P.type==="TASK"){let $=(L=P.data)==null?void 0:L.label,K=Wo($||o("bpmn.task.label.prefix"),[...h,...y]);S.data=v(b({},P.data),{label:K})}return y.push(S),S}),T=w.map(P=>v(b({},P),{id:String(_++),selected:!0,source:g.get(P.source)||P.source,target:g.get(P.target)||P.target})),I=[...h.map(P=>v(b({},P),{selected:!1})),...N],C=[...E.map(P=>v(b({},P),{selected:!1})),...T];r(I),s(C),t("forceSave",{nodes:I,edges:C})}};return d.addEventListener("keydown",u,!0),()=>{d.removeEventListener("keydown",u,!0)}},[n,r,i,s,a,e,o,t,l,c])};import{useEffect as D0,useRef as pu}from"react";import{useReactFlow as O0}from"@xyflow/react";var V0=20,H0=50,Rn={UP:"ArrowUp",DOWN:"ArrowDown",LEFT:"ArrowLeft",RIGHT:"ArrowRight"},G0=e=>{if(!e||!(e instanceof HTMLElement))return!1;let t=e.tagName.toLowerCase(),o=t==="input"||t==="textarea",n=e.isContentEditable,r=t==="select",i=e.closest('[contenteditable="true"], input, textarea, select')!==null;return o||n||r||i},fu=e=>{let{getNodes:t}=O0(),{mode:o,isMoveTool:n}=U(),r=pu(0),i=pu(new Map);D0(()=>{let s=a=>{if(o!=="edit"||!n||G0(a.target)||!Object.values(Rn).includes(a.key))return;let u=t().filter(y=>y.selected);if(u.length===0){i.current.clear();return}a.preventDefault();let m=Date.now(),p=m-r.current<500;r.current=m;let h=a.shiftKey?H0:V0,E=0,f=0;switch(a.key){case Rn.UP:f=-h;break;case Rn.DOWN:f=h;break;case Rn.LEFT:E=-h;break;case Rn.RIGHT:E=h;break}let g=u.map(y=>{let x=i.current.get(y.id);(!p||!x)&&(x={x:y.position.x,y:y.position.y});let w={x:x.x+E,y:x.y+f};return i.current.set(y.id,w),{id:y.id,dragging:!0,type:"position",position:w}});e&&e(g)};return window.addEventListener("keydown",s),()=>{window.removeEventListener("keydown",s)}},[t,e,o,n])};import{useReactFlow as z0}from"@xyflow/react";var gu={"start-event":"START_EVENT","end-event":"END_EVENT",task:"TASK","gateway-exclusive":"GATEWAY"},hu={"start-event":"","end-event":"",task:"","gateway-exclusive":"EXCLUSIVE"},mu=(e,t)=>{if(!e){console.warn("Step not found");return}e=e.trim();let o=e.match(/(\<.*?\>)/)||[],n=e.match(/(\[.*?\])/)||[],r=e.match(/(\{.*?\})/)||[],i=e.match(/(--.*|\|.*?\|)/i)||[],s="",a="",l="";if(o.length){switch(o[1]){case"<start>":s="start-event";break;case"<end>":s="end-event";break}e=e.replace(o[1],"")}return n.length&&(s="task",a=n[1].replace(/\[|\]/g,""),e=e.replace(n[1],"")),r.length&&(s="gateway-exclusive",a=r[1].replace(/\{|\}/g,""),e=e.replace(r[1],"")),s||(s="task",a=e),i.length&&(l=i[1].replace(/(\||--)/g,""),e=e.replace(i[1],"")),e=e.trim(),t[e]||(t[e]={type:s,label:a}),{step:e,type:s,label:a,edgeLabel:l}},B0=e=>{e=e||"";let t=e.trim().split(`
42
- `),o={},n=[];return t.forEach(r=>{r=r||"";let i=r.trim().split("-->");if(i.length!==2){console.warn("Invalid number of steps");return}let s=mu(i[0],o),a=mu(i[1],o);s&&a&&n.push({sourceId:s.step,targetId:a.step,label:s.edgeLabel||a.edgeLabel||""})}),{components:o,connections:n}},yu=e=>{let{components:t,connections:o}=B0(e);return{nodes:t,edges:o}};var xu=()=>{let{setNodes:e,setEdges:t,fitView:o}=z0(),{getNextId:n}=st();return{importFromLia:i=>{let s=typeof i=="string"?i:i.diagramXml||"",{nodes:a,edges:l}=yu(s),c=[],d=new Map,u=!1,m=n();for(let[f,g]of Object.entries(a)){let y=String(m++),x=gu[g.type],w=hu[g.type];x==="START_EVENT"&&(u=!0),d.set(f,y);let _=ue[x].MIN_WIDTH,N=ue[x].MIN_HEIGHT;c.push({id:y,type:x,data:{label:g.label||"",variant:w,attribute:""},position:{x:0,y:0},width:_,height:N,measured:{width:_,height:N}})}let p=[];for(let f of l){let g=v(b({},rt),{id:String(m++),source:d.get(f.sourceId)||f.sourceId,target:d.get(f.targetId)||f.targetId});p.push(g)}if(!u&&c.length>0){let f=String(m++),g={id:f,type:"START_EVENT",data:{label:"",variant:"",attribute:""},position:{x:0,y:0},width:ue.START_EVENT.MIN_WIDTH,height:ue.START_EVENT.MIN_HEIGHT,measured:{width:ue.START_EVENT.MIN_WIDTH,height:ue.START_EVENT.MIN_HEIGHT}};c.unshift(g);let y=c[1];if(y){let x=v(b({},rt),{id:String(m++),source:f,target:y.id});p.unshift(x)}}let{nodes:h,edges:E}=Zc(c,p);e(h),t(E),o({padding:Xo,minZoom:Uo,maxZoom:$o})}}};import{useCallback as Y0,useEffect as W0}from"react";var F0={origin:"*",debug:!1};function li(e,t=F0){let{origin:o,debug:n}=t,r=Y0((i,s)=>{let a={event:i,data:s};window.parent.postMessage(a,o||"*")},[o]);return W0(()=>{if(!e)return;let i=s=>{let a=s.data;if(!(a!=null&&a.event)||(a==null?void 0:a.data)===void 0)return;let{event:l,data:c}=a,d;if(Array.isArray(c)){let[,u]=c;d=u.data}else d=c;n&&(console.debug("[postMessage] received:",a),console.debug("[postMessage] eventData:",d)),l&&e[l]&&e[l](d)};return window.addEventListener("message",i),()=>window.removeEventListener("message",i)},[e,n]),{sendMessage:r}}import{useNodesInitialized as U0}from"@xyflow/react";import{useEffect as ci,useRef as ws}from"react";var Eu=()=>{let e=U0(),{initialDiagram:t,isNewDiagram:o,setIsInitialized:n,onElementChanges:r}=U(),{importFromMxGraph:i,exportToMxGraph:s}=Ko(),{sendMessage:a}=li(),l=ws(t),c=ws(r),d=ws(s);ci(()=>{c.current=r},[r]),ci(()=>{d.current=s},[s]),ci(()=>{t&&(i(t),l.current=t)},[t,i]),ci(()=>{if(!e)return;(async()=>{var m;if(await Bn(),n(!0),a("INIT_MODELER",l.current),!o){let p=d.current();(m=c.current)==null||m.call(c,p)}})()},[e,o,n,a])};import{useCallback as bu}from"react";import{useReactFlow as $0}from"@xyflow/react";function _u(){let{setTaskStatuses:e,clearTaskStatuses:t,calculateFlowPath:o}=ro(),{getEdges:n}=$0(),r=Kn(),i=bu(a=>{if(!(a!=null&&a.activities))return;e(a.activities);let l=a.activities.map(d=>d.diagramId),c=n();o(c,l),setTimeout(()=>{r()},0)},[e,o,n,r]),s=bu(()=>{t(),setTimeout(()=>{r()},0)},[t,r]);return{handleTasksStatus:i,handleClearTaskStatus:s}}import{useReactFlow as K0}from"@xyflow/react";import{useCallback as Lt,useState as q0,useEffect as Tu}from"react";import{useDebouncedCallback as Z0}from"use-debounce";var J0=500,Nu=100,vu=(e=!1)=>{let{getNodes:t,getEdges:o,setNodes:n,setEdges:r}=K0(),{mode:i,containerRef:s}=U(),[a,l]=q0({history:[],currentStep:0}),{history:c,currentStep:d}=a,u=d>0,m=d<c.length-1,p=Lt((T,I)=>{n(T[I].nodes),r(T[I].edges)},[n,r]),h=Lt(()=>{if(d>0){let T=d-1;l(I=>v(b({},I),{currentStep:T})),p(c,T)}},[d,c,p]),E=Lt(()=>{if(d<c.length-1){let T=d+1;l(I=>v(b({},I),{currentStep:T})),p(c,T)}},[c,d,p]),f=Lt(T=>{l(I=>{let C=I.history[I.currentStep];if(C&&JSON.stringify(C)===JSON.stringify(T))return I;let S=[...I.history.slice(0,I.currentStep+1),T],L=S.length>Nu?S.slice(S.length-Nu):S;return{history:L,currentStep:L.length-1}})},[]),g=Lt((T,I)=>{let C=T.map(R=>v(b({},R),{selected:!1,className:"",data:v(b({},R.data),{hasError:!1})})),P=I.map(R=>v(b({},R),{data:v(b({},R.data),{hasError:!1})}));return{nodes:eo(C),edges:P}},[]),y=Lt(()=>g(t(),o()),[t,o,g]),x=Z0(()=>{let T=y();f(T)},J0),w=Lt((T,I)=>{if(!e)return;if(c.length===0){let R=y();l({history:[R],currentStep:0})}if(T==="forceSave"){if(I){f(g(I.nodes,I.edges));return}x();return}T.some(R=>R.type==="select")||T.some(R=>R.type==="position"&&R.dragging)||x()},[e,x,c.length,y,f,g]);Tu(()=>{if(e&&c.length===0){let T=y();l({history:[T],currentStep:0})}},[e,c.length,y]);let _=Lt(T=>{l({history:T||[],currentStep:0})},[]),N=Lt(()=>{l({history:[],currentStep:0})},[]);return Tu(()=>{if(i!=="edit")return;let T=s.current;if(!T)return;let I=C=>{if(!T.contains(document.activeElement)||!(C.ctrlKey||C.metaKey))return;let S=C.key.toLowerCase();if(C.shiftKey&&S==="z"){C.preventDefault(),E();return}S==="z"&&(C.preventDefault(),h())};return T.addEventListener("keydown",I),()=>{T.removeEventListener("keydown",I)}},[h,E,i,s]),{history:c,undo:h,redo:E,canUndo:u,canRedo:m,saveHistory:w,resetHistory:_,clearHistory:N}};var wu=()=>{let{t:e}=Q0(),[t,o,n]=ex([]),[r,i,s]=j0([]),{getNodes:a,getNode:l}=ox(),{toast:c}=We(),d=nx(),{instanceId:u,isInitialized:m,setIsConnecting:p,setIsMultipleSelection:h,onElementClick:E}=U(),{updateHelperLines:f,HelperLines:g}=Ir(),{undo:y,redo:x,canUndo:w,canRedo:_,saveHistory:N}=vu(m),{onNodeDrag:T,onDrop:I,onDragOver:C,onDragLeave:P,onNodeDragStop:R,onNodeDragStart:S}=du({nodes:t,setNodes:o,setEdges:i,saveHistory:N}),{isValidConnection:L,onConnect:$,onReconnect:K,onReconnectStart:te,onReconnectEnd:z,setReconnectingEdge:M,clearReconnectingEdge:H}=Zd({setEdges:i,saveHistory:N}),{handleValidationComplete:D,clearValidation:A,dismissValidationPanel:Y,validateDiagram:B,getIsClearingValidation:k}=su(),{importFromLia:O}=xu(),{handleTasksStatus:V,handleClearTaskStatus:F}=_u(),{clearPathEdges:J}=ro(),{emitElementChanges:X,handleNodeChanges:Q,handleEdgeChanges:ee}=ii(),ie=Kn();cu({saveHistory:N}),uu({saveHistory:N}),Eu();let W=bt(()=>{o([]),i([]),J(),setTimeout(ie,0)},[o,i,J,ie]),{selectElements:oe,clearSelection:le}=Yt(),{importFromMxGraph:q,exportToMxGraph:xe}=Ko(),{configureElement:me,getConfigureElement:be}=kr(),Z=bt(he=>{he!=null&&he.id&&oe([he.id])},[oe]),{sendMessage:de}=li({LIA_CREATE_DIAGRAM:O,CLEAR_DIAGRAM:W,TASKS_STATUS:V,CLEAR_TASKS_STATUS:F,EXTERNAL_TASK_SELECT:Z}),re=bt(()=>t.length+r.length,[t,r]);rx(()=>(Et.set(u,{importFromMxGraph:q,exportToMxGraph:xe,selectElements:oe,clearSelection:le,configureElement:me,getConfigureElement:be,getElementsCount:re,setReconnectingEdge:M,clearReconnectingEdge:H}),()=>{Et.delete(u)}),[u,q,xe,oe,le,me,be,re,M,H]);let j=bt((he,fe)=>{if(fe.type!=="TASK"&&fe.type!=="GATEWAY")return;let pe=be(fe.id);pe&&(E==null||E(pe)),fe.type==="TASK"&&de("SELECT_TASK",{id:fe.id})},[be,E,de]),ge=bt((he,fe)=>{if(fe.type!=="SEQUENCE_EDGE")return;let pe=l(fe.source),Ne=l(fe.target),{isFromStartEvent:Ke,isGatewayToGateway:et,isActiviyToAndGateway:Be,isToEndEvent:mt}=$n(pe,Ne);if(!(!Ke&&!et&&!Be&&!mt))return;let Tt=be(fe.id);Tt&&(E==null||E(Tt))},[be,l,E]),_e=bt(he=>{let fe=f(he,t);n(fe),N(he),k()||Y(),Q(he)},[t,n,N,k,Y,f,Q]),Te=bt(he=>{s(he),N(he),k()||Y(),ee(he)},[s,N,k,Y,ee]);fu(_e);let Re=bt(({nodes:he,edges:fe})=>{h(he.length+fe.length>=2)},[h]);tx({onChange:Re});let je=bt(async({nodes:he})=>he.some(pe=>pe.type==="LANE"&&t.some(Ne=>Ne.parentId===pe.id))?(c({variant:"error",title:e("validation.errors.title"),content:e("editor.toolbar.delete_pool_lane_error")}),!1):!0,[t,e,c]),_t=()=>{N("forceSave"),X(),Y()},pt=()=>{p(!0)},ft=()=>{p(!1),Y()},$e=bt(he=>{let fe=new Set(he.filter(pe=>pe.type==="LANE"&&!!pe.parentId).map(pe=>pe.parentId));fe.size!==0&&setTimeout(()=>{var Ke,et;let pe=a(),Ne=new Map(pe.map(Be=>[Be.id,Be]));for(let Be of fe){let mt=no(pe.filter(Nt=>Nt.type==="LANE"&&Nt.parentId===Be));if(mt.length===0)continue;let kt=0;for(let Nt of mt)Ne.set(Nt.id,v(b({},Nt),{position:{x:se.HEADER_WIDTH,y:kt}})),kt+=(et=(Ke=Nt.measured)==null?void 0:Ke.height)!=null?et:0;let Tt=Ne.get(Be);Tt&&Ne.set(Be,v(b({},Tt),{height:kt,measured:v(b({},Tt.measured),{height:kt})}))}o(pe.map(Be=>{var mt;return(mt=Ne.get(Be.id))!=null?mt:Be}))},0)},[a,o]);return{nodes:t,setNodes:o,edges:r,setEdges:i,events:{isValidConnection:L,onConnect:$,onReconnect:K,onReconnectStart:te,onReconnectEnd:z,onDrop:I,onDragOver:C,onDragLeave:P,onNodeDrag:T,onNodeDragStop:R,onNodeDragStart:S,onNodeClick:j,onEdgeClick:ge,onDropCapture:_t,onConnectStart:pt,onConnectEnd:ft,onSelectionEnd:()=>setTimeout(()=>d.setState({nodesSelectionActive:!1}),0),onNodesChange:_e,onEdgesChange:Te,onBeforeDelete:je,onNodesDelete:$e},ui:{handleCloseValidationPanel:A},controls:{undo:y,redo:x,canUndo:w,canRedo:_},components:{HelperLines:g},actions:{saveHistory:N,selectElements:oe,clearSelection:le,exportToMxGraph:xe,validateDiagram:B,handleValidationComplete:D,setReconnectingEdge:M,clearReconnectingEdge:H}}};import{useReactFlow as ix}from"@xyflow/react";import{useCallback as sx,useEffect as ax,useRef as lx,useState as cx}from"react";var dx=".react-flow__node, .react-flow__edge, .react-flow__node-toolbar";function Iu(e,t,o){let[n,r]=cx(!1),i=lx(null),{getViewport:s,setViewport:a}=ix(),l=sx(()=>{i.current=null,r(!1)},[]);return ax(()=>{let c=e.current;if(!c)return;let d=p=>{if(!Cn.some(E=>E===p.button)||t.current||o.current||(r(!0),!(p.target instanceof Element))||!p.target.closest(dx))return;p.preventDefault(),p.stopPropagation();let h=s();i.current={pointerX:p.clientX,pointerY:p.clientY,viewportX:h.x,viewportY:h.y,zoom:h.zoom}},u=p=>{let h=i.current;if(h){if((p.buttons&vs)===0){l();return}a({x:h.viewportX+(p.clientX-h.pointerX),y:h.viewportY+(p.clientY-h.pointerY),zoom:h.zoom})}},m=p=>{(p.buttons&vs)===0&&l()};return c.addEventListener("pointerdown",d,!0),window.addEventListener("pointermove",u),window.addEventListener("pointerup",m),window.addEventListener("pointercancel",l),window.addEventListener("blur",l),()=>{c.removeEventListener("pointerdown",d,!0),window.removeEventListener("pointermove",u),window.removeEventListener("pointerup",m),window.removeEventListener("pointercancel",l),window.removeEventListener("blur",l)}},[e,t,o,s,a,l]),n}import{jsx as Au}from"react/jsx-runtime";var di=({id:e,className:t})=>Au("marker",{id:e,className:G("react-flow__arrowhead",t),viewBox:"0 0 10 10",refX:"9",refY:"5",markerWidth:"7",markerHeight:"7",orient:"auto",markerUnits:"userSpaceOnUse",fill:"currentColor",stroke:"currentColor",children:Au("path",{d:"M 0 0 L 10 5 L 0 10 Z"})});import{jsx as ui,jsxs as ux}from"react/jsx-runtime";var Cu=()=>ui("svg",{style:{position:"absolute",top:0,left:0},children:ux("defs",{children:[ui(di,{id:"sequence-edge-marker",className:"text-grey-500"}),ui(di,{id:"sequence-edge-marker-hovered",className:"text-grey-800"}),ui(di,{id:"sequence-edge-marker-highlighted",className:"text-blue-500"})]})});import{Tooltip as DE,TooltipContent as OE,TooltipTrigger as VE,useTranslation as HE}from"@produto-lecom/lecom-ui";import{useKeyPress as $u,useReactFlow as oE}from"@xyflow/react";import{Button as xi,Tooltip as Ei,TooltipContent as bi,TooltipTrigger as _i,useTranslation as nE}from"@produto-lecom/lecom-ui";import{HandIcon as rE,ListCheckIcon as iE,Loader2Icon as sE,MapIcon as aE,MousePointerIcon as lE}from"lucide-react";import{useCallback as Ss,useEffect as Ku,useState as cE}from"react";import{Tooltip as Px,TooltipContent as Lx,TooltipTrigger as Rx,useTranslation as kx}from"@produto-lecom/lecom-ui";var kn=(x=>(x.START_EVENT="START_EVENT",x.END_EVENT="END_EVENT",x.TASK="TASK",x.SUBPROCESS="SUBPROCESS",x.GATEWAY="GATEWAY",x.LANE="LANE",x.ANNOTATION="ANNOTATION",x.CONNECTION="CONNECTION",x.INTERMEDIATE_EVENT="INTERMEDIATE_EVENT",x.ACTIVITY="ACTIVITY",x.PROCESS_INTERFACE="PROCESS_INTERFACE",x.WORKFLOW_INTERFACE="WORKFLOW_INTERFACE",x.VARIANT_ACTIVITY="VARIANT_ACTIVITY",x.AUTO_ACTIVITY="AUTO_ACTIVITY",x.DATA_STORE="DATA_STORE",x.DATA_OBJECT="DATA_OBJECT",x.DATA_OUTPUT="DATA_OUTPUT",x.DATA_INPUT="DATA_INPUT",x.MARKER="MARKER",x))(kn||{});import{Button as Nx,useTranslation as vx}from"@produto-lecom/lecom-ui";import{useReactFlow as wx}from"@xyflow/react";var Su=async e=>new Promise((t,o)=>{let n=new FileReader;n.onload=r=>{var i;t((i=r.target)==null?void 0:i.result)},n.onerror=r=>{var i;o((i=r.target)==null?void 0:i.error)},n.readAsText(e)});function Mu({columns:e=[],rows:t=[],fileName:o="report"}){if(!e.length||!t.length)return;let r="data:text/csv;charset=utf-8,"+[e,...t].map(s=>s.join(",")).join(`
42
+ `),o={},n=[];return t.forEach(r=>{r=r||"";let i=r.trim().split("-->");if(i.length!==2){console.warn("Invalid number of steps");return}let s=mu(i[0],o),a=mu(i[1],o);s&&a&&n.push({sourceId:s.step,targetId:a.step,label:s.edgeLabel||a.edgeLabel||""})}),{components:o,connections:n}},yu=e=>{let{components:t,connections:o}=B0(e);return{nodes:t,edges:o}};var xu=()=>{let{setNodes:e,setEdges:t,fitView:o}=z0(),{getNextId:n}=st();return{importFromLia:i=>{let s=typeof i=="string"?i:i.diagramXml||"",{nodes:a,edges:l}=yu(s),c=[],d=new Map,u=!1,m=n();for(let[f,g]of Object.entries(a)){let y=String(m++),x=gu[g.type],w=hu[g.type];x==="START_EVENT"&&(u=!0),d.set(f,y);let _=ue[x].MIN_WIDTH,N=ue[x].MIN_HEIGHT;c.push({id:y,type:x,data:{label:g.label||"",variant:w,attribute:""},position:{x:0,y:0},width:_,height:N,measured:{width:_,height:N}})}let p=[];for(let f of l){let g=v(b({},rt),{id:String(m++),source:d.get(f.sourceId)||f.sourceId,target:d.get(f.targetId)||f.targetId});p.push(g)}if(!u&&c.length>0){let f=String(m++),g={id:f,type:"START_EVENT",data:{label:"",variant:"",attribute:""},position:{x:0,y:0},width:ue.START_EVENT.MIN_WIDTH,height:ue.START_EVENT.MIN_HEIGHT,measured:{width:ue.START_EVENT.MIN_WIDTH,height:ue.START_EVENT.MIN_HEIGHT}};c.unshift(g);let y=c[1];if(y){let x=v(b({},rt),{id:String(m++),source:f,target:y.id});p.unshift(x)}}let{nodes:h,edges:E}=Zc(c,p);e(h),t(E),o({padding:Xo,minZoom:Uo,maxZoom:$o})}}};import{useCallback as Y0,useEffect as W0}from"react";var F0={origin:"*",debug:!1};function li(e,t=F0){let{origin:o,debug:n}=t,r=Y0((i,s)=>{let a={event:i,data:s};window.parent.postMessage(a,o||"*")},[o]);return W0(()=>{if(!e)return;let i=s=>{let a=s.data;if(!(a!=null&&a.event)||(a==null?void 0:a.data)===void 0)return;let{event:l,data:c}=a,d;if(Array.isArray(c)){let[,u]=c;d=u.data}else d=c;n&&(console.debug("[postMessage] received:",a),console.debug("[postMessage] eventData:",d)),l&&e[l]&&e[l](d)};return window.addEventListener("message",i),()=>window.removeEventListener("message",i)},[e,n]),{sendMessage:r}}import{useNodesInitialized as U0}from"@xyflow/react";import{useEffect as ci,useRef as ws}from"react";var Eu=()=>{let e=U0(),{initialDiagram:t,isNewDiagram:o,setIsInitialized:n,onElementChanges:r}=U(),{importFromMxGraph:i,exportToMxGraph:s}=Ko(),{sendMessage:a}=li(),l=ws(t),c=ws(r),d=ws(s);ci(()=>{c.current=r},[r]),ci(()=>{d.current=s},[s]),ci(()=>{t&&(i(t),l.current=t)},[t,i]),ci(()=>{if(!e)return;(async()=>{var m;if(await Bn(),n(!0),a("INIT_MODELER",l.current),!o){let p=d.current();(m=c.current)==null||m.call(c,p)}})()},[e,o,n,a])};import{useCallback as bu}from"react";import{useReactFlow as $0}from"@xyflow/react";function _u(){let{setTaskStatuses:e,clearTaskStatuses:t,calculateFlowPath:o}=ro(),{getEdges:n}=$0(),r=Kn(),i=bu(a=>{if(!(a!=null&&a.activities))return;e(a.activities);let l=a.activities.map(d=>d.diagramId),c=n();o(c,l),setTimeout(()=>{r()},0)},[e,o,n,r]),s=bu(()=>{t(),setTimeout(()=>{r()},0)},[t,r]);return{handleTasksStatus:i,handleClearTaskStatus:s}}import{useReactFlow as K0}from"@xyflow/react";import{useCallback as Lt,useState as q0,useEffect as Tu}from"react";import{useDebouncedCallback as Z0}from"use-debounce";var J0=500,Nu=100,vu=(e=!1)=>{let{getNodes:t,getEdges:o,setNodes:n,setEdges:r}=K0(),{mode:i,containerRef:s}=U(),[a,l]=q0({history:[],currentStep:0}),{history:c,currentStep:d}=a,u=d>0,m=d<c.length-1,p=Lt((T,I)=>{n(T[I].nodes),r(T[I].edges)},[n,r]),h=Lt(()=>{if(d>0){let T=d-1;l(I=>v(b({},I),{currentStep:T})),p(c,T)}},[d,c,p]),E=Lt(()=>{if(d<c.length-1){let T=d+1;l(I=>v(b({},I),{currentStep:T})),p(c,T)}},[c,d,p]),f=Lt(T=>{l(I=>{let C=I.history[I.currentStep];if(C&&JSON.stringify(C)===JSON.stringify(T))return I;let S=[...I.history.slice(0,I.currentStep+1),T],L=S.length>Nu?S.slice(S.length-Nu):S;return{history:L,currentStep:L.length-1}})},[]),g=Lt((T,I)=>{let C=T.map(R=>v(b({},R),{selected:!1,className:"",data:v(b({},R.data),{hasError:!1})})),P=I.map(R=>v(b({},R),{data:v(b({},R.data),{hasError:!1})}));return{nodes:eo(C),edges:P}},[]),y=Lt(()=>g(t(),o()),[t,o,g]),x=Z0(()=>{let T=y();f(T)},J0),w=Lt((T,I)=>{if(!e)return;if(c.length===0){let R=y();l({history:[R],currentStep:0})}if(T==="forceSave"){if(I){f(g(I.nodes,I.edges));return}x();return}T.some(R=>R.type==="select")||T.some(R=>R.type==="position"&&R.dragging)||x()},[e,x,c.length,y,f,g]);Tu(()=>{if(e&&c.length===0){let T=y();l({history:[T],currentStep:0})}},[e,c.length,y]);let _=Lt(T=>{l({history:T||[],currentStep:0})},[]),N=Lt(()=>{l({history:[],currentStep:0})},[]);return Tu(()=>{if(i!=="edit")return;let T=s.current;if(!T)return;let I=C=>{if(!T.contains(document.activeElement)||!(C.ctrlKey||C.metaKey))return;let S=C.key.toLowerCase();if(S==="y"||C.shiftKey&&S==="z"){C.preventDefault(),E();return}S==="z"&&(C.preventDefault(),h())};return T.addEventListener("keydown",I),()=>{T.removeEventListener("keydown",I)}},[h,E,i,s]),{history:c,undo:h,redo:E,canUndo:u,canRedo:m,saveHistory:w,resetHistory:_,clearHistory:N}};var wu=()=>{let{t:e}=Q0(),[t,o,n]=ex([]),[r,i,s]=j0([]),{getNodes:a,getNode:l}=ox(),{toast:c}=We(),d=nx(),{instanceId:u,isInitialized:m,setIsConnecting:p,setIsMultipleSelection:h,onElementClick:E}=U(),{updateHelperLines:f,HelperLines:g}=Ir(),{undo:y,redo:x,canUndo:w,canRedo:_,saveHistory:N}=vu(m),{onNodeDrag:T,onDrop:I,onDragOver:C,onDragLeave:P,onNodeDragStop:R,onNodeDragStart:S}=du({nodes:t,setNodes:o,setEdges:i,saveHistory:N}),{isValidConnection:L,onConnect:$,onReconnect:K,onReconnectStart:te,onReconnectEnd:z,setReconnectingEdge:M,clearReconnectingEdge:H}=Zd({setEdges:i,saveHistory:N}),{handleValidationComplete:D,clearValidation:A,dismissValidationPanel:Y,validateDiagram:B,getIsClearingValidation:k}=su(),{importFromLia:O}=xu(),{handleTasksStatus:V,handleClearTaskStatus:F}=_u(),{clearPathEdges:J}=ro(),{emitElementChanges:X,handleNodeChanges:Q,handleEdgeChanges:ee}=ii(),ie=Kn();cu({saveHistory:N}),uu({saveHistory:N}),Eu();let W=bt(()=>{o([]),i([]),J(),setTimeout(ie,0)},[o,i,J,ie]),{selectElements:oe,clearSelection:le}=Yt(),{importFromMxGraph:q,exportToMxGraph:xe}=Ko(),{configureElement:me,getConfigureElement:be}=kr(),Z=bt(he=>{he!=null&&he.id&&oe([he.id])},[oe]),{sendMessage:de}=li({LIA_CREATE_DIAGRAM:O,CLEAR_DIAGRAM:W,TASKS_STATUS:V,CLEAR_TASKS_STATUS:F,EXTERNAL_TASK_SELECT:Z}),re=bt(()=>t.length+r.length,[t,r]);rx(()=>(Et.set(u,{importFromMxGraph:q,exportToMxGraph:xe,selectElements:oe,clearSelection:le,configureElement:me,getConfigureElement:be,getElementsCount:re,setReconnectingEdge:M,clearReconnectingEdge:H}),()=>{Et.delete(u)}),[u,q,xe,oe,le,me,be,re,M,H]);let j=bt((he,fe)=>{if(fe.type!=="TASK"&&fe.type!=="GATEWAY")return;let pe=be(fe.id);pe&&(E==null||E(pe)),fe.type==="TASK"&&de("SELECT_TASK",{id:fe.id})},[be,E,de]),ge=bt((he,fe)=>{if(fe.type!=="SEQUENCE_EDGE")return;let pe=l(fe.source),Ne=l(fe.target),{isFromStartEvent:Ke,isGatewayToGateway:et,isActiviyToAndGateway:Be,isToEndEvent:mt}=$n(pe,Ne);if(!(!Ke&&!et&&!Be&&!mt))return;let Tt=be(fe.id);Tt&&(E==null||E(Tt))},[be,l,E]),_e=bt(he=>{let fe=f(he,t);n(fe),N(he),k()||Y(),Q(he)},[t,n,N,k,Y,f,Q]),Te=bt(he=>{s(he),N(he),k()||Y(),ee(he)},[s,N,k,Y,ee]);fu(_e);let Re=bt(({nodes:he,edges:fe})=>{h(he.length+fe.length>=2)},[h]);tx({onChange:Re});let je=bt(async({nodes:he})=>he.some(pe=>pe.type==="LANE"&&t.some(Ne=>Ne.parentId===pe.id))?(c({variant:"error",title:e("validation.errors.title"),content:e("editor.toolbar.delete_pool_lane_error")}),!1):!0,[t,e,c]),_t=()=>{N("forceSave"),X(),Y()},pt=()=>{p(!0)},ft=()=>{p(!1),Y()},$e=bt(he=>{let fe=new Set(he.filter(pe=>pe.type==="LANE"&&!!pe.parentId).map(pe=>pe.parentId));fe.size!==0&&setTimeout(()=>{var Ke,et;let pe=a(),Ne=new Map(pe.map(Be=>[Be.id,Be]));for(let Be of fe){let mt=no(pe.filter(Nt=>Nt.type==="LANE"&&Nt.parentId===Be));if(mt.length===0)continue;let kt=0;for(let Nt of mt)Ne.set(Nt.id,v(b({},Nt),{position:{x:se.HEADER_WIDTH,y:kt}})),kt+=(et=(Ke=Nt.measured)==null?void 0:Ke.height)!=null?et:0;let Tt=Ne.get(Be);Tt&&Ne.set(Be,v(b({},Tt),{height:kt,measured:v(b({},Tt.measured),{height:kt})}))}o(pe.map(Be=>{var mt;return(mt=Ne.get(Be.id))!=null?mt:Be}))},0)},[a,o]);return{nodes:t,setNodes:o,edges:r,setEdges:i,events:{isValidConnection:L,onConnect:$,onReconnect:K,onReconnectStart:te,onReconnectEnd:z,onDrop:I,onDragOver:C,onDragLeave:P,onNodeDrag:T,onNodeDragStop:R,onNodeDragStart:S,onNodeClick:j,onEdgeClick:ge,onDropCapture:_t,onConnectStart:pt,onConnectEnd:ft,onSelectionEnd:()=>setTimeout(()=>d.setState({nodesSelectionActive:!1}),0),onNodesChange:_e,onEdgesChange:Te,onBeforeDelete:je,onNodesDelete:$e},ui:{handleCloseValidationPanel:A},controls:{undo:y,redo:x,canUndo:w,canRedo:_},components:{HelperLines:g},actions:{saveHistory:N,selectElements:oe,clearSelection:le,exportToMxGraph:xe,validateDiagram:B,handleValidationComplete:D,setReconnectingEdge:M,clearReconnectingEdge:H}}};import{useReactFlow as ix}from"@xyflow/react";import{useCallback as sx,useEffect as ax,useRef as lx,useState as cx}from"react";var dx=".react-flow__node, .react-flow__edge, .react-flow__node-toolbar";function Iu(e,t,o){let[n,r]=cx(!1),i=lx(null),{getViewport:s,setViewport:a}=ix(),l=sx(()=>{i.current=null,r(!1)},[]);return ax(()=>{let c=e.current;if(!c)return;let d=p=>{if(!Cn.some(E=>E===p.button)||t.current||o.current||(r(!0),!(p.target instanceof Element))||!p.target.closest(dx))return;p.preventDefault(),p.stopPropagation();let h=s();i.current={pointerX:p.clientX,pointerY:p.clientY,viewportX:h.x,viewportY:h.y,zoom:h.zoom}},u=p=>{let h=i.current;if(h){if((p.buttons&vs)===0){l();return}a({x:h.viewportX+(p.clientX-h.pointerX),y:h.viewportY+(p.clientY-h.pointerY),zoom:h.zoom})}},m=p=>{(p.buttons&vs)===0&&l()};return c.addEventListener("pointerdown",d,!0),window.addEventListener("pointermove",u),window.addEventListener("pointerup",m),window.addEventListener("pointercancel",l),window.addEventListener("blur",l),()=>{c.removeEventListener("pointerdown",d,!0),window.removeEventListener("pointermove",u),window.removeEventListener("pointerup",m),window.removeEventListener("pointercancel",l),window.removeEventListener("blur",l)}},[e,t,o,s,a,l]),n}import{jsx as Au}from"react/jsx-runtime";var di=({id:e,className:t})=>Au("marker",{id:e,className:G("react-flow__arrowhead",t),viewBox:"0 0 10 10",refX:"9",refY:"5",markerWidth:"7",markerHeight:"7",orient:"auto",markerUnits:"userSpaceOnUse",fill:"currentColor",stroke:"currentColor",children:Au("path",{d:"M 0 0 L 10 5 L 0 10 Z"})});import{jsx as ui,jsxs as ux}from"react/jsx-runtime";var Cu=()=>ui("svg",{style:{position:"absolute",top:0,left:0},children:ux("defs",{children:[ui(di,{id:"sequence-edge-marker",className:"text-grey-500"}),ui(di,{id:"sequence-edge-marker-hovered",className:"text-grey-800"}),ui(di,{id:"sequence-edge-marker-highlighted",className:"text-blue-500"})]})});import{Tooltip as DE,TooltipContent as OE,TooltipTrigger as VE,useTranslation as HE}from"@produto-lecom/lecom-ui";import{useKeyPress as $u,useReactFlow as oE}from"@xyflow/react";import{Button as xi,Tooltip as Ei,TooltipContent as bi,TooltipTrigger as _i,useTranslation as nE}from"@produto-lecom/lecom-ui";import{HandIcon as rE,ListCheckIcon as iE,Loader2Icon as sE,MapIcon as aE,MousePointerIcon as lE}from"lucide-react";import{useCallback as Ss,useEffect as Ku,useState as cE}from"react";import{Tooltip as Px,TooltipContent as Lx,TooltipTrigger as Rx,useTranslation as kx}from"@produto-lecom/lecom-ui";var kn=(x=>(x.START_EVENT="START_EVENT",x.END_EVENT="END_EVENT",x.TASK="TASK",x.SUBPROCESS="SUBPROCESS",x.GATEWAY="GATEWAY",x.LANE="LANE",x.ANNOTATION="ANNOTATION",x.CONNECTION="CONNECTION",x.INTERMEDIATE_EVENT="INTERMEDIATE_EVENT",x.ACTIVITY="ACTIVITY",x.PROCESS_INTERFACE="PROCESS_INTERFACE",x.WORKFLOW_INTERFACE="WORKFLOW_INTERFACE",x.VARIANT_ACTIVITY="VARIANT_ACTIVITY",x.AUTO_ACTIVITY="AUTO_ACTIVITY",x.DATA_STORE="DATA_STORE",x.DATA_OBJECT="DATA_OBJECT",x.DATA_OUTPUT="DATA_OUTPUT",x.DATA_INPUT="DATA_INPUT",x.MARKER="MARKER",x))(kn||{});import{Button as Nx,useTranslation as vx}from"@produto-lecom/lecom-ui";import{useReactFlow as wx}from"@xyflow/react";var Su=async e=>new Promise((t,o)=>{let n=new FileReader;n.onload=r=>{var i;t((i=r.target)==null?void 0:i.result)},n.onerror=r=>{var i;o((i=r.target)==null?void 0:i.error)},n.readAsText(e)});function Mu({columns:e=[],rows:t=[],fileName:o="report"}){if(!e.length||!t.length)return;let r="data:text/csv;charset=utf-8,"+[e,...t].map(s=>s.join(",")).join(`
43
43
  `),i=encodeURI(r);pi(i,`${o}.csv`)}var pi=(e,t)=>{let o=document.createElement("a");o.setAttribute("download",t),o.setAttribute("href",e),document.body.appendChild(o),o.click(),document.body.removeChild(o)};function Pu(e){return e==null?void 0:e.replaceAll("&#xA;"," ")}var Fk={START_EVENT:"START_EVENT",END_EVENT:"END_EVENT",TASK:"TASK",GATEWAY:"GATEWAY",ANNOTATION:"ANNOTATION"},Lu={script:"SCRIPT",subprocess:"SUBPROCESS"},Ru={"marker-loop":"LOOP"},ku={complex:"COMPLEX",none:"EXCLUSIVE",exclusive:"EXCLUSIVE",parallel:"PARALLEL",inclusive:"EXCLUSIVE"};var xo=({cell:e,type:t,variant:o="",attribute:n=""})=>{let{_attributes:r,mxGeometry:i}=e,{value:s,parent:a}=r,l=Number(i._attributes.width),c=Number(i._attributes.height),d=a==="1"?void 0:a;return{id:r.id,parentId:d,type:t,data:{label:s||"",variant:o,attribute:n},position:{x:Number(i._attributes.x)||0,y:Number(i._attributes.y)||0},width:l,height:c,measured:{width:l,height:c}}},fx=e=>{let{subType:t,style:o}=e._attributes,n="imported";return["none"].includes(t)||(n="adapted"),e.mxGeometry._attributes.width=ue.START_EVENT.MIN_WIDTH,e.mxGeometry._attributes.height=ue.START_EVENT.MIN_HEIGHT,{node:xo({cell:e,type:"START_EVENT"}),status:n,originalType:o}},mx=e=>{let{subType:t,style:o}=e==null?void 0:e._attributes,n="imported";return["none"].includes(t)||(n="adapted"),e.mxGeometry._attributes.width=ue.END_EVENT.MIN_WIDTH,e.mxGeometry._attributes.height=ue.END_EVENT.MIN_HEIGHT,{node:xo({cell:e,type:"END_EVENT"}),status:n,originalType:o}},gx=(e,t)=>{let{id:o,subType:n,style:r}=e==null?void 0:e._attributes,i=Lu[n],s=t.get(o)||"",a=Ru[s]||"",l=a==="LOOP",c="imported";return!["script","none"].includes(n)&&!l&&(c="adapted"),e.mxGeometry._attributes.width=Dt(e.mxGeometry._attributes.width||0,ue.TASK.MIN_WIDTH),e.mxGeometry._attributes.height=Dt(e.mxGeometry._attributes.height||0,ue.TASK.MIN_HEIGHT),{node:xo({cell:e,type:"TASK",variant:i,attribute:a}),status:c,originalType:r}},hx=e=>{let{style:t,subType:o}=e==null?void 0:e._attributes,n=ku[o],r=["none","inclusive","event-based"],i="imported";return r.includes(o)&&(i="adapted"),e.mxGeometry._attributes.width=ue.GATEWAY.MIN_WIDTH,e.mxGeometry._attributes.height=ue.GATEWAY.MIN_HEIGHT,{node:xo({cell:e,type:"GATEWAY",variant:n}),status:i,originalType:t}},yx=e=>{let{style:t}=e==null?void 0:e._attributes;return{node:xo({cell:e,type:"LANE"}),status:"imported",originalType:t}},xx=e=>{let{style:t}=e==null?void 0:e._attributes;return e.mxGeometry._attributes.width=Dt(e.mxGeometry._attributes.width||0,ue.ANNOTATION.MIN_WIDTH),e.mxGeometry._attributes.height=Dt(e.mxGeometry._attributes.height||0,ue.ANNOTATION.MIN_HEIGHT),{node:xo({cell:e,type:"ANNOTATION"}),status:"imported",originalType:t}},Du=e=>{let{style:t}=e==null?void 0:e._attributes;return e.mxGeometry._attributes.width=ue.UNSUPPORTED.MIN_WIDTH,e.mxGeometry._attributes.height=ue.UNSUPPORTED.MIN_HEIGHT,{node:xo({cell:e,type:"UNSUPPORTED"}),status:"unsupported",originalType:t}},Ou=(e,t)=>{let{id:o,source:n,target:r,value:i}=e._attributes;return v(b({},rt),{id:o,source:t.get(n)||n,target:t.get(r)||r,data:{label:i||""}})},Vu={TASK:gx,GATEWAY:hx,START_EVENT:fx,END_EVENT:mx,LANE:yx,ANNOTATION:xx};var Ex=e=>{let t=new Map,o=Object.values(kn),n=[],r=new Map;e.forEach(a=>{var c;let l=(c=a._attributes)==null?void 0:c.type;if(l==="MARKER"){r.set(a._attributes.parent,a._attributes.style);return}if(o.includes(l)){n.push(a);return}});let i=[],s=[];for(let a of n){let{type:l}=a._attributes,c=Vu[l]||Du,{node:d,status:u,originalType:m}=c(a,r);s.push(d),i.push({originalType:m,type:d.type,variant:d.data.variant,value:Pu(d.data.label),status:u})}return{nodes:s,governanceIdToNodeIdMap:t,summary:i}},bx=(e,t)=>e.filter(r=>{var i;return(i=r._attributes)==null?void 0:i.edge}).map(r=>Ou(r,t)),_x=e=>{let{mxGraphModel:t}=e,{nodes:o,governanceIdToNodeIdMap:n,summary:r}=Ex(t.root.mxCell),i=bx(t.root.mxCell,n);return{nodes:o,edges:i,summary:r}},Tx=async e=>{let t=await Su(e),o=qr(t);if(!o)throw new Error("EMPTY_FILE");let{metadata:n,mxGraphModel:r}=o.modeler||{},i=(n==null?void 0:n.app)&&(n==null?void 0:n.diagramType)&&(n==null?void 0:n.version),s=r==null?void 0:r.root;if(!i||!s)throw new Error("INVALID_FILE");if(!Object.keys(r.root.mxCell||{}).length)throw new Error("CONTAIN_NO_CELLS");return{metadata:n,mxGraphModel:r}},Hu=async e=>{try{let t=await Tx(e),{nodes:o,edges:n,summary:r}=_x(t)||{};return{nodes:o,edges:n,summary:r}}catch(t){throw t}};import{jsx as Ix}from"react/jsx-runtime";var Gu=()=>{let{t:e}=vx(),{toast:t}=We(),{setNodes:o,setEdges:n,fitView:r}=wx(),i=a=>{let l=[e("adapter.governance.report.columns.type"),e("adapter.governance.report.columns.value"),e("adapter.governance.report.columns.status")],c=a.map(d=>[d.originalType,d.value,e(`adapter.governance.report.status.${d.status.toLowerCase()}`)]);t({variant:"warning",content:e("adapter.governance.success.incompatible_cells"),duration:1e3*60*1,action:Ix(Nx,{size:"small",variant:"ghost",onClick:()=>Mu({columns:l,rows:c,fileName:"governance-imported-cells"}),children:e("adapter.governance.action.download")})})};return{importFromGovernance:async a=>{try{let{nodes:l,edges:c,summary:d}=await Hu(a);if(o(m=>m.concat(l)),n(m=>m.concat(c)),r({padding:Xo,minZoom:Uo,maxZoom:$o}),d.some(m=>m.status==="unsupported")){i(d);return}t({variant:"success",content:e("adapter.governance.success.default")})}catch(l){let c=l instanceof Error?l.message:"DEFAULT";t({variant:"error",content:e(`adapter.governance.error.${c}`)})}}}};import{Button as Ax}from"@produto-lecom/lecom-ui";import{useRef as Cx}from"react";import{Fragment as Sx,jsx as Bu,jsxs as Mx}from"react/jsx-runtime";var zu=a=>{var l=a,{children:e,accept:t="*",multiple:o=!1,disabled:n=!1,onClick:r,onFilesSelected:i}=l,s=gt(l,["children","accept","multiple","disabled","onClick","onFilesSelected"]);let c=Cx(null),d=m=>{let p=m.target.files;p!=null&&p.length&&i(p),c.current&&(c.current.value="")};return Mx(Sx,{children:[Bu(Ax,v(b({disabled:n,onClick:m=>{var p;(p=c.current)==null||p.click(),r==null||r(m)}},s),{children:e})),Bu("input",{type:"file",ref:c,className:"sr-only",accept:t,multiple:o,disabled:n,onChange:d})]})};import{jsx as fi,jsxs as Dx}from"react/jsx-runtime";var Yu=({disabled:e=!1})=>{let{t}=kx(),{toast:o}=We(),{importFromGovernance:n}=Gu(),r=()=>{if(e){o({variant:"error",content:t("adapter.governance.error.ALREADY_INITIALIZED")});return}},i=s=>{let a=s[0];if(!a){o({variant:"error",content:t("adapter.governance.error.NO_FILE")});return}n(a)};return Dx(Px,{children:[fi(Rx,{asChild:!0,children:fi(zu,{className:"[&>svg]:size-7 p-0",variant:"ghost",size:"small",color:"grey",iconButton:!0,accept:".mdr",disabled:e,onClick:r,onFilesSelected:i,children:fi(Us,{})})}),fi(Lx,{color:"black",children:t("editor.controls.actions.import_governance")})]})};import{jsx as Ox}from"react/jsx-runtime";var Is=({shortcut:e})=>Ox("span",{className:"min-h-7.5 inline-flex justify-center items-center py-0.5 px-1.5 bg-grey-100 border border-grey-300 font-mono text-gray-800 shadow-lg rounded-md text-grey-900",children:e});import{Button as Ux,DropdownMenu as $x,DropdownMenuContent as Kx,DropdownMenuItem as Cs,DropdownMenuTrigger as qx,Tooltip as gi,TooltipContent as hi,TooltipTrigger as yi,useTranslation as Zx}from"@produto-lecom/lecom-ui";import{FileCodeIcon as Jx,FileImageIcon as Qx,FolderOutputIcon as jx,PrinterIcon as eE}from"lucide-react";import{useState as tE}from"react";import{useTranslation as Vx}from"@produto-lecom/lecom-ui";import{useReactFlow as Hx}from"@xyflow/react";import{toPng as Wu,toSvg as Gx}from"html-to-image";import{useState as Bx}from"react";var zx=3,As="diagram",mi=50,Yx=96,Wx=25.4,Fx="sequence-edge-marker",Fu=e=>e*Wx/Yx,Xx=e=>{let t=document.getElementById(Fx);if(!(t instanceof SVGElement)||!t.ownerSVGElement)return null;let n=t.ownerSVGElement.cloneNode(!0);return n.style.position="absolute",n.style.width="0",n.style.height="0",n.style.overflow="hidden",n.setAttribute("aria-hidden","true"),n.setAttribute("data-export-marker-defs","true"),e.prepend(n),n},Xu=()=>{let{t:e}=Vx(),{toast:t}=We(),{getEdges:o,getNodes:n,getNodesBounds:r}=Hx(),{clearSelection:i}=Yt(),[s,a]=Bx({png:!1,html:!1,print:!1}),l=()=>{let p=us(n(),o()),h=r(p),E=h.width+mi*2,f=h.height+mi*2,g=mi-h.x,y=mi-h.y;return{width:E,height:f,style:{width:`${E}px`,height:`${f}px`,transform:`translate(${g}px, ${y}px)`,transformOrigin:"top left"}}},c=async(p,h)=>{a(E=>v(b({},E),{[h]:!0})),await i();try{if(us(n(),o()).length===0){t({content:e("editor.controls.actions.export.feedback.empty"),variant:"warning"});return}let f=Qc();if(!f)throw new Error("Flow element not found");let g=l(),y=Xx(f);try{return await p(f,g)}finally{y==null||y.remove()}}catch(E){console.error("Diagram export failed",E),t({content:e("editor.controls.actions.export.feedback.error"),variant:"error"})}finally{a(E=>v(b({},E),{[h]:!1}))}};return{exportAsPng:async(p=As)=>{await c(async(h,E)=>{let f=await Wu(h,v(b({},E),{backgroundColor:"#fcfcfc",skipFonts:!0}));pi(f,`${p}.png`)},"png")},exportAsHtml:async(p=As)=>{await c(async(h,E)=>{let f=await Gx(h,v(b({},E),{backgroundColor:"#fcfcfc",skipFonts:!0})),g=`
44
44
  <!DOCTYPE html>
45
45
  <html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lecom-modeler",
3
- "version": "0.35.0",
3
+ "version": "0.36.0",
4
4
  "type": "module",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/index.js",