@notmrabhi/flowforge 0.1.37 → 0.1.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/GatewayBranchEdge-CYoEUE5g.js +2 -0
- package/dist/GatewayBranchEdge-CYoEUE5g.js.map +1 -0
- package/dist/{GatewayBranchEdge-Diid9GtB.js → GatewayBranchEdge-DffZFc99.js} +473 -407
- package/dist/GatewayBranchEdge-DffZFc99.js.map +1 -0
- package/dist/canvas.cjs +1 -1
- package/dist/canvas.d.ts +46 -1
- package/dist/canvas.js +22 -21
- package/dist/defaultUi.cjs +1 -1
- package/dist/defaultUi.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +46 -1
- package/dist/index.js +33 -32
- package/dist/{templateSkeletons-BB6jQ9r5.js → templateSkeletons-CEqw1Djn.js} +1168 -987
- package/dist/templateSkeletons-CEqw1Djn.js.map +1 -0
- package/dist/templateSkeletons-Sd2FDF9w.js +2 -0
- package/dist/templateSkeletons-Sd2FDF9w.js.map +1 -0
- package/package.json +1 -1
- package/dist/GatewayBranchEdge-DNSPjIZw.js +0 -2
- package/dist/GatewayBranchEdge-DNSPjIZw.js.map +0 -1
- package/dist/GatewayBranchEdge-Diid9GtB.js.map +0 -1
- package/dist/templateSkeletons-BB6jQ9r5.js.map +0 -1
- package/dist/templateSkeletons-BkdRPbV0.js +0 -2
- package/dist/templateSkeletons-BkdRPbV0.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateSkeletons-CEqw1Djn.js","sources":["../node_modules/@dagrejs/dagre/dist/dagre.esm.js","../src/WorkflowCanvas/LayoutUpdater.tsx","../src/WorkflowCanvas/FlowForgeHeader.tsx","../src/WorkflowCanvas/BaseDrawer.tsx","../src/WorkflowCanvas/TriggerSelectorDrawer.tsx","../src/WorkflowCanvas/NodePickerDrawer.tsx","../src/WorkflowCanvas/NodeConfigDrawer.tsx","../src/WorkflowCanvas/SubWorkflowPreviewDrawer.tsx","../src/WorkflowCanvas/WorkflowCanvas.tsx","../src/WorkflowCanvas/WorkflowTemplateLibrary.tsx","../src/WorkflowCanvas/WorkflowExecutionHistory.tsx","../src/WorkflowCanvas/templateSkeletons.ts"],"sourcesContent":["var ge=Object.defineProperty;var hn=(e,n,t)=>n in e?ge(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;var fn=(e,n)=>{for(var t in n)ge(e,t,{get:n[t],enumerable:!0})};var pe=(e,n,t)=>hn(e,typeof n!=\"symbol\"?n+\"\":n,t);var z={};fn(z,{Graph:()=>p,alg:()=>R,json:()=>ye,version:()=>pn});var bn=Object.defineProperty,Le=(e,n)=>{for(var t in n)bn(e,t,{get:n[t],enumerable:!0})},p=class{constructor(e){this._isDirected=!0,this._isMultigraph=!1,this._isCompound=!1,this._nodes={},this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={},this._nodeCount=0,this._edgeCount=0,this._defaultNodeLabelFn=()=>{},this._defaultEdgeLabelFn=()=>{},e&&(this._isDirected=\"directed\"in e?e.directed:!0,this._isMultigraph=\"multigraph\"in e?e.multigraph:!1,this._isCompound=\"compound\"in e?e.compound:!1),this._isCompound&&(this._parent={},this._children={},this._children[\"\\0\"]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return typeof e!=\"function\"?this._defaultNodeLabelFn=()=>e:this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){return this.nodes().filter(e=>Object.keys(this._in[e]).length===0)}sinks(){return this.nodes().filter(e=>Object.keys(this._out[e]).length===0)}setNodes(e,n){return e.forEach(t=>{n!==void 0?this.setNode(t,n):this.setNode(t)}),this}setNode(e,n){return e in this._nodes?(arguments.length>1&&(this._nodes[e]=n),this):(this._nodes[e]=arguments.length>1?n:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=\"\\0\",this._children[e]={},this._children[\"\\0\"][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return e in this._nodes}removeNode(e){if(e in this._nodes){let n=t=>this.removeEdge(this._edgeObjs[t]);delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],this.children(e).forEach(t=>{this.setParent(t)}),delete this._children[e]),Object.keys(this._in[e]).forEach(n),delete this._in[e],delete this._preds[e],Object.keys(this._out[e]).forEach(n),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,n){if(!this._isCompound)throw new Error(\"Cannot set parent in a non-compound graph\");if(n===void 0)n=\"\\0\";else{n+=\"\";for(let t=n;t!==void 0;t=this.parent(t))if(t===e)throw new Error(\"Setting \"+n+\" as parent of \"+e+\" would create a cycle\");this.setNode(n)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=n,this._children[n][e]=!0,this}parent(e){if(this._isCompound){let n=this._parent[e];if(n!==\"\\0\")return n}}children(e=\"\\0\"){if(this._isCompound){let n=this._children[e];if(n)return Object.keys(n)}else{if(e===\"\\0\")return this.nodes();if(this.hasNode(e))return[]}return[]}predecessors(e){let n=this._preds[e];if(n)return Object.keys(n)}successors(e){let n=this._sucs[e];if(n)return Object.keys(n)}neighbors(e){let n=this.predecessors(e);if(n){let t=new Set(n);for(let r of this.successors(e))t.add(r);return Array.from(t.values())}}isLeaf(e){let n;return this.isDirected()?n=this.successors(e):n=this.neighbors(e),n.length===0}filterNodes(e){let n=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});n.setGraph(this.graph()),Object.entries(this._nodes).forEach(([o,i])=>{e(o)&&n.setNode(o,i)}),Object.values(this._edgeObjs).forEach(o=>{n.hasNode(o.v)&&n.hasNode(o.w)&&n.setEdge(o,this.edge(o))});let t={},r=o=>{let i=this.parent(o);return!i||n.hasNode(i)?(t[o]=i!=null?i:void 0,i!=null?i:void 0):i in t?t[i]:r(i)};return this._isCompound&&n.nodes().forEach(o=>n.setParent(o,r(o))),n}setDefaultEdgeLabel(e){return typeof e!=\"function\"?this._defaultEdgeLabelFn=()=>e:this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(e,n){return e.reduce((t,r)=>(n!==void 0?this.setEdge(t,r,n):this.setEdge(t,r),r)),this}setEdge(e,n,t,r){let o,i,s,a,d=!1;typeof e==\"object\"&&e!==null&&\"v\"in e?(o=e.v,i=e.w,s=e.name,arguments.length===2&&(a=n,d=!0)):(o=e,i=n,s=r,arguments.length>2&&(a=t,d=!0)),o=\"\"+o,i=\"\"+i,s!==void 0&&(s=\"\"+s);let l=C(this._isDirected,o,i,s);if(l in this._edgeLabels)return d&&(this._edgeLabels[l]=a),this;if(s!==void 0&&!this._isMultigraph)throw new Error(\"Cannot set a named edge when isMultigraph = false\");this.setNode(o),this.setNode(i),this._edgeLabels[l]=d?a:this._defaultEdgeLabelFn(o,i,s);let u=gn(this._isDirected,o,i,s);return o=u.v,i=u.w,Object.freeze(u),this._edgeObjs[l]=u,me(this._preds[i],o),me(this._sucs[o],i),this._in[i][l]=u,this._out[o][l]=u,this._edgeCount++,this}edge(e,n,t){let r=arguments.length===1?Y(this._isDirected,e):C(this._isDirected,e,n,t);return this._edgeLabels[r]}edgeAsObj(e,n,t){let r=arguments.length===1?this.edge(e):this.edge(e,n,t);return typeof r!=\"object\"?{label:r}:r}hasEdge(e,n,t){return(arguments.length===1?Y(this._isDirected,e):C(this._isDirected,e,n,t))in this._edgeLabels}removeEdge(e,n,t){let r=arguments.length===1?Y(this._isDirected,e):C(this._isDirected,e,n,t),o=this._edgeObjs[r];if(o){let i=o.v,s=o.w;delete this._edgeLabels[r],delete this._edgeObjs[r],Ee(this._preds[s],i),Ee(this._sucs[i],s),delete this._in[s][r],delete this._out[i][r],this._edgeCount--}return this}inEdges(e,n){return this.isDirected()?this.filterEdges(this._in[e],e,n):this.nodeEdges(e,n)}outEdges(e,n){return this.isDirected()?this.filterEdges(this._out[e],e,n):this.nodeEdges(e,n)}nodeEdges(e,n){if(e in this._nodes)return this.filterEdges({...this._in[e],...this._out[e]},e,n)}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}filterEdges(e,n,t){if(!e)return;let r=Object.values(e);return t?r.filter(o=>o.v===n&&o.w===t||o.v===t&&o.w===n):r}};function me(e,n){e[n]?e[n]++:e[n]=1}function Ee(e,n){e[n]!==void 0&&!--e[n]&&delete e[n]}function C(e,n,t,r){let o=\"\"+n,i=\"\"+t;if(!e&&o>i){let s=o;o=i,i=s}return o+\"\u0001\"+i+\"\u0001\"+(r===void 0?\"\\0\":r)}function gn(e,n,t,r){let o=\"\"+n,i=\"\"+t;if(!e&&o>i){let a=o;o=i,i=a}let s={v:o,w:i};return r&&(s.name=r),s}function Y(e,n){return C(e,n.v,n.w,n.name)}var pn=\"4.0.1\",ye={};Le(ye,{read:()=>yn,write:()=>mn});function mn(e){let n={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:En(e),edges:Ln(e)},t=e.graph();return t!==void 0&&(n.value=structuredClone(t)),n}function En(e){return e.nodes().map(n=>{let t=e.node(n),r=e.parent(n),o={v:n};return t!==void 0&&(o.value=t),r!==void 0&&(o.parent=r),o})}function Ln(e){return e.edges().map(n=>{let t=e.edge(n),r={v:n.v,w:n.w};return n.name!==void 0&&(r.name=n.name),t!==void 0&&(r.value=t),r})}function yn(e){let n=new p(e.options);return e.value!==void 0&&n.setGraph(e.value),e.nodes.forEach(t=>{n.setNode(t.v,t.value),t.parent&&n.setParent(t.v,t.parent)}),e.edges.forEach(t=>{n.setEdge({v:t.v,w:t.w,name:t.name},t.value)}),n}var R={};Le(R,{CycleException:()=>D,bellmanFord:()=>we,components:()=>Gn,dijkstra:()=>F,dijkstraAll:()=>_n,findCycles:()=>xn,floydWarshall:()=>On,isAcyclic:()=>Cn,postorder:()=>Pn,preorder:()=>Mn,prim:()=>jn,shortestPaths:()=>Sn,tarjan:()=>Ge,topsort:()=>ke});var wn=()=>1;function we(e,n,t,r){return Nn(e,String(n),t||wn,r||function(o){return e.outEdges(o)})}function Nn(e,n,t,r){let o={},i,s=0,a=e.nodes(),d=function(c){let h=t(c);o[c.v].distance+h<o[c.w].distance&&(o[c.w]={distance:o[c.v].distance+h,predecessor:c.v},i=!0)},l=function(){a.forEach(function(c){r(c).forEach(function(h){let f=h.v===c?h.v:h.w,g=f===h.v?h.w:h.v;d({v:f,w:g})})})};a.forEach(function(c){let h=c===n?0:Number.POSITIVE_INFINITY;o[c]={distance:h,predecessor:\"\"}});let u=a.length;for(let c=1;c<u&&(i=!1,s++,l(),!!i);c++);if(s===u-1&&(i=!1,l(),i))throw new Error(\"The graph contains a negative weight cycle\");return o}function Gn(e){let n={},t=[],r;function o(i){i in n||(n[i]=!0,r.push(i),e.successors(i).forEach(o),e.predecessors(i).forEach(o))}return e.nodes().forEach(function(i){r=[],o(i),r.length&&t.push(r)}),t}var Ne=class{constructor(){this._arr=[],this._keyIndices={}}size(){return this._arr.length}keys(){return this._arr.map(e=>e.key)}has(e){return e in this._keyIndices}priority(e){let n=this._keyIndices[e];if(n!==void 0)return this._arr[n].priority}min(){if(this.size()===0)throw new Error(\"Queue underflow\");return this._arr[0].key}add(e,n){let t=this._keyIndices,r=String(e);if(!(r in t)){let o=this._arr,i=o.length;return t[r]=i,o.push({key:r,priority:n}),this._decrease(i),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);let e=this._arr.pop();return delete this._keyIndices[e.key],this._heapify(0),e.key}decrease(e,n){let t=this._keyIndices[e];if(t===void 0)throw new Error(`Key not found: ${e}`);let r=this._arr[t].priority;if(n>r)throw new Error(`New priority is greater than current priority. Key: ${e} Old: ${r} New: ${n}`);this._arr[t].priority=n,this._decrease(t)}_heapify(e){let n=this._arr,t=2*e,r=t+1,o=e;t<n.length&&(o=n[t].priority<n[o].priority?t:o,r<n.length&&(o=n[r].priority<n[o].priority?r:o),o!==e&&(this._swap(e,o),this._heapify(o)))}_decrease(e){let n=this._arr,t=n[e].priority,r;for(;e!==0&&(r=e>>1,!(n[r].priority<t));)this._swap(e,r),e=r}_swap(e,n){let t=this._arr,r=this._keyIndices,o=t[e],i=t[n];t[e]=i,t[n]=o,r[i.key]=e,r[o.key]=n}},kn=()=>1;function F(e,n,t,r){let o=function(i){return e.outEdges(i)};return vn(e,String(n),t||kn,r||o)}function vn(e,n,t,r){let o={},i=new Ne,s,a,d=function(l){let u=l.v!==s?l.v:l.w,c=o[u],h=t(l),f=a.distance+h;if(h<0)throw new Error(\"dijkstra does not allow negative edge weights. Bad edge: \"+l+\" Weight: \"+h);f<c.distance&&(c.distance=f,c.predecessor=s,i.decrease(u,f))};for(e.nodes().forEach(function(l){let u=l===n?0:Number.POSITIVE_INFINITY;o[l]={distance:u,predecessor:\"\"},i.add(l,u)});i.size()>0&&(s=i.removeMin(),a=o[s],a.distance!==Number.POSITIVE_INFINITY);)r(s).forEach(d);return o}function _n(e,n,t){return e.nodes().reduce(function(r,o){return r[o]=F(e,o,n,t),r},{})}function Ge(e){let n=0,t=[],r={},o=[];function i(s){let a=r[s]={onStack:!0,lowlink:n,index:n++};if(t.push(s),e.successors(s).forEach(function(d){d in r?r[d].onStack&&(a.lowlink=Math.min(a.lowlink,r[d].index)):(i(d),a.lowlink=Math.min(a.lowlink,r[d].lowlink))}),a.lowlink===a.index){let d=[],l;do l=t.pop(),r[l].onStack=!1,d.push(l);while(s!==l);o.push(d)}}return e.nodes().forEach(function(s){s in r||i(s)}),o}function xn(e){return Ge(e).filter(function(n){return n.length>1||n.length===1&&e.hasEdge(n[0],n[0])})}var Tn=()=>1;function On(e,n,t){return In(e,n||Tn,t||function(r){return e.outEdges(r)})}function In(e,n,t){let r={},o=e.nodes();return o.forEach(function(i){r[i]={},r[i][i]={distance:0,predecessor:\"\"},o.forEach(function(s){i!==s&&(r[i][s]={distance:Number.POSITIVE_INFINITY,predecessor:\"\"})}),t(i).forEach(function(s){let a=s.v===i?s.w:s.v,d=n(s);r[i][a]={distance:d,predecessor:i}})}),o.forEach(function(i){let s=r[i];o.forEach(function(a){let d=r[a];o.forEach(function(l){let u=d[i],c=s[l],h=d[l],f=u.distance+c.distance;f<h.distance&&(h.distance=f,h.predecessor=c.predecessor)})})}),r}var D=class extends Error{constructor(...e){super(...e)}};function ke(e){let n={},t={},r=[];function o(i){if(i in t)throw new D;i in n||(t[i]=!0,n[i]=!0,e.predecessors(i).forEach(o),delete t[i],r.push(i))}if(e.sinks().forEach(o),Object.keys(n).length!==e.nodeCount())throw new D;return r}function Cn(e){try{ke(e)}catch(n){if(n instanceof D)return!1;throw n}return!0}function Rn(e,n,t,r,o){Array.isArray(n)||(n=[n]);let i=(a=>{var d;return(d=e.isDirected()?e.successors(a):e.neighbors(a))!=null?d:[]}),s={};return n.forEach(function(a){if(!e.hasNode(a))throw new Error(\"Graph does not have node: \"+a);o=ve(e,a,t===\"post\",s,i,r,o)}),o}function ve(e,n,t,r,o,i,s){return n in r||(r[n]=!0,t||(s=i(s,n)),o(n).forEach(function(a){s=ve(e,a,t,r,o,i,s)}),t&&(s=i(s,n))),s}function _e(e,n,t){return Rn(e,n,t,function(r,o){return r.push(o),r},[])}function Pn(e,n){return _e(e,n,\"post\")}function Mn(e,n){return _e(e,n,\"pre\")}function jn(e,n){let t=new p,r={},o=new Ne,i;function s(d){let l=d.v===i?d.w:d.v,u=o.priority(l);if(u!==void 0){let c=n(d);c<u&&(r[l]=i,o.decrease(l,c))}}if(e.nodeCount()===0)return t;e.nodes().forEach(function(d){o.add(d,Number.POSITIVE_INFINITY),t.setNode(d)}),o.decrease(e.nodes()[0],0);let a=!1;for(;o.size()>0;){if(i=o.removeMin(),i in r)t.setEdge(i,r[i]);else{if(a)throw new Error(\"Input graph is not connected: \"+e);a=!0}e.nodeEdges(i).forEach(s)}return t}function Sn(e,n,t,r){return Fn(e,n,t,r!=null?r:(o=>{let i=e.outEdges(o);return i!=null?i:[]}))}function Fn(e,n,t,r){if(t===void 0)return F(e,n,t,r);let o=!1,i=e.nodes();for(let s=0;s<i.length;s++){let a=r(i[s]);for(let d=0;d<a.length;d++){let l=a[d],u=l.v===i[s]?l.v:l.w,c=u===l.v?l.w:l.v;t({v:u,w:c})<0&&(o=!0)}if(o)return we(e,n,t,r)}return F(e,n,t,r)}function w(e,n,t,r){let o=r;for(;e.hasNode(o);)o=j(r);return t.dummy=n,e.setNode(o,t),o}function xe(e){let n=new p().setGraph(e.graph());return e.nodes().forEach(t=>n.setNode(t,e.node(t))),e.edges().forEach(t=>{let r=n.edge(t.v,t.w)||{weight:0,minlen:1},o=e.edge(t);n.setEdge(t.v,t.w,{weight:r.weight+o.weight,minlen:Math.max(r.minlen,o.minlen)})}),n}function A(e){let n=new p({multigraph:e.isMultigraph()}).setGraph(e.graph());return e.nodes().forEach(t=>{e.children(t).length||n.setNode(t,e.node(t))}),e.edges().forEach(t=>{n.setEdge(t,e.edge(t))}),n}function H(e,n){let t=e.x,r=e.y,o=n.x-t,i=n.y-r,s=e.width/2,a=e.height/2;if(!o&&!i)throw new Error(\"Not possible to find intersection inside of the rectangle\");let d,l;return Math.abs(i)*s>Math.abs(o)*a?(i<0&&(a=-a),d=a*o/i,l=a):(o<0&&(s=-s),d=s,l=s*i/o),{x:t+d,y:r+l}}function N(e){let n=k(X(e)+1).map(()=>[]);return e.nodes().forEach(t=>{let r=e.node(t),o=r.rank;o!==void 0&&(n[o]||(n[o]=[]),n[o][r.order]=t)}),n}function Te(e){let n=e.nodes().map(r=>{let o=e.node(r).rank;return o===void 0?Number.MAX_VALUE:o}),t=L(Math.min,n);e.nodes().forEach(r=>{let o=e.node(r);Object.hasOwn(o,\"rank\")&&(o.rank-=t)})}function Oe(e){let n=e.nodes().map(s=>e.node(s).rank).filter(s=>s!==void 0),t=L(Math.min,n),r=[];e.nodes().forEach(s=>{let a=e.node(s).rank-t;r[a]||(r[a]=[]),r[a].push(s)});let o=0,i=e.graph().nodeRankFactor;Array.from(r).forEach((s,a)=>{s===void 0&&a%i!==0?--o:s!==void 0&&o&&s.forEach(d=>e.node(d).rank+=o)})}function q(e,n,t,r){let o={width:0,height:0};return arguments.length>=4&&(o.rank=t,o.order=r),w(e,\"border\",o,n)}function Dn(e,n=Ie){let t=[];for(let r=0;r<e.length;r+=n){let o=e.slice(r,r+n);t.push(o)}return t}var Ie=65535;function L(e,n){if(n.length>Ie){let t=Dn(n);return e(...t.map(r=>e(...r)))}else return e(...n)}function X(e){let t=e.nodes().map(r=>{let o=e.node(r).rank;return o===void 0?Number.MIN_VALUE:o});return L(Math.max,t)}function Ce(e,n){let t={lhs:[],rhs:[]};return e.forEach(r=>{n(r)?t.lhs.push(r):t.rhs.push(r)}),t}function P(e,n){let t=Date.now();try{return n()}finally{console.log(e+\" time: \"+(Date.now()-t)+\"ms\")}}function M(e,n){return n()}var An=0;function j(e){let n=++An;return e+(\"\"+n)}function k(e,n,t=1){n==null&&(n=e,e=0);let r=i=>i<n;t<0&&(r=i=>n<i);let o=[];for(let i=e;r(i);i+=t)o.push(i);return o}function T(e,n){let t={};for(let r of n)e[r]!==void 0&&(t[r]=e[r]);return t}function O(e,n){let t;return typeof n==\"string\"?t=r=>r[n]:t=n,Object.entries(e).reduce((r,[o,i])=>(r[o]=t(i,o),r),{})}function Re(e,n){return e.reduce((t,r,o)=>(t[r]=n[o],t),{})}var _=\"\\0\";var U=\"3.0.0\";var K=class{constructor(){pe(this,\"_sentinel\");let n={};n._next=n._prev=n,this._sentinel=n}dequeue(){let n=this._sentinel,t=n._prev;if(t!==n)return Pe(t),t}enqueue(n){let t=this._sentinel;n._prev&&n._next&&Pe(n),n._next=t._next,t._next._prev=n,t._next=n,n._prev=t}toString(){let n=[],t=this._sentinel,r=t._prev;for(;r!==t;)n.push(JSON.stringify(r,Vn)),r=r._prev;return\"[\"+n.join(\", \")+\"]\"}};function Pe(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function Vn(e,n){if(e!==\"_next\"&&e!==\"_prev\")return n}var Me=K;var Wn=()=>1;function Q(e,n){if(e.nodeCount()<=1)return[];let t=Yn(e,n||Wn);return Bn(t.graph,t.buckets,t.zeroIdx).flatMap(o=>e.outEdges(o.v,o.w)||[])}function Bn(e,n,t){var a;let r=[],o=n[n.length-1],i=n[0],s;for(;e.nodeCount();){for(;s=i.dequeue();)$(e,n,t,s);for(;s=o.dequeue();)$(e,n,t,s);if(e.nodeCount()){for(let d=n.length-2;d>0;--d)if(s=(a=n[d])==null?void 0:a.dequeue(),s){r=r.concat($(e,n,t,s,!0)||[]);break}}}return r}function $(e,n,t,r,o){let i=[],s=o?i:void 0;return(e.inEdges(r.v)||[]).forEach(a=>{let d=e.edge(a),l=e.node(a.v);o&&i.push({v:a.v,w:a.w}),l.out-=d,J(n,t,l)}),(e.outEdges(r.v)||[]).forEach(a=>{let d=e.edge(a),l=a.w,u=e.node(l);u.in-=d,J(n,t,u)}),e.removeNode(r.v),s}function Yn(e,n){let t=new p,r=0,o=0;e.nodes().forEach(a=>{t.setNode(a,{v:a,in:0,out:0})}),e.edges().forEach(a=>{let d=t.edge(a.v,a.w)||0,l=n(a),u=d+l;t.setEdge(a.v,a.w,u);let c=t.node(a.v),h=t.node(a.w);o=Math.max(o,c.out+=l),r=Math.max(r,h.in+=l)});let i=zn(o+r+3).map(()=>new Me),s=r+1;return t.nodes().forEach(a=>{J(i,s,t.node(a))}),{graph:t,buckets:i,zeroIdx:s}}function J(e,n,t){var r,o,i;t.out?t.in?(i=e[t.out-t.in+n])==null||i.enqueue(t):(o=e[e.length-1])==null||o.enqueue(t):(r=e[0])==null||r.enqueue(t)}function zn(e){let n=[];for(let t=0;t<e;t++)n.push(t);return n}function je(e){(e.graph().acyclicer===\"greedy\"?Q(e,t(e)):Hn(e)).forEach(r=>{let o=e.edge(r);e.removeEdge(r),o.forwardName=r.name,o.reversed=!0,e.setEdge(r.w,r.v,o,j(\"rev\"))});function t(r){return o=>r.edge(o).weight}}function Hn(e){let n=[],t={},r={};function o(i){Object.hasOwn(r,i)||(r[i]=!0,t[i]=!0,e.outEdges(i).forEach(s=>{Object.hasOwn(t,s.w)?n.push(s):o(s.w)}),delete t[i])}return e.nodes().forEach(o),n}function Se(e){e.edges().forEach(n=>{let t=e.edge(n);if(t.reversed){e.removeEdge(n);let r=t.forwardName;delete t.reversed,delete t.forwardName,e.setEdge(n.w,n.v,t,r)}})}function Fe(e){e.graph().dummyChains=[],e.edges().forEach(n=>Xn(e,n))}function Xn(e,n){let t=n.v,r=e.node(t).rank,o=n.w,i=e.node(o).rank,s=n.name,a=e.edge(n),d=a.labelRank;if(i===r+1)return;e.removeEdge(n);let l,u,c;for(c=0,++r;r<i;++c,++r)a.points=[],u={width:0,height:0,edgeLabel:a,edgeObj:n,rank:r},l=w(e,\"edge\",u,\"_d\"),r===d&&(u.width=a.width,u.height=a.height,u.dummy=\"edge-label\",u.labelpos=a.labelpos),e.setEdge(t,l,{weight:a.weight},s),c===0&&e.graph().dummyChains.push(l),t=l;e.setEdge(t,o,{weight:a.weight},s)}function De(e){e.graph().dummyChains.forEach(n=>{let t=e.node(n),r=t.edgeLabel,o;for(e.setEdge(t.edgeObj,r);t.dummy;)o=e.successors(n)[0],e.removeNode(n),r.points.push({x:t.x,y:t.y}),t.dummy===\"edge-label\"&&(r.x=t.x,r.y=t.y,r.width=t.width,r.height=t.height),n=o,t=e.node(n)})}function S(e){let n={};function t(r){let o=e.node(r);if(Object.hasOwn(n,r))return o.rank;n[r]=!0;let i=e.outEdges(r),s=i?i.map(d=>d==null?Number.POSITIVE_INFINITY:t(d.w)-e.edge(d).minlen):[],a=L(Math.min,s);return a===Number.POSITIVE_INFINITY&&(a=0),o.rank=a}e.sources().forEach(t)}function v(e,n){return e.node(n.w).rank-e.node(n.v).rank-e.edge(n).minlen}var V=Kn;function Kn(e){let n=new p({directed:!1}),t=e.nodes();if(t.length===0)throw new Error(\"Graph must have at least one node\");let r=t[0],o=e.nodeCount();n.setNode(r,{});let i,s;for(;$n(n,e)<o&&(i=Jn(n,e),!!i);)s=n.hasNode(i.v)?v(e,i):-v(e,i),Qn(n,e,s);return n}function $n(e,n){function t(r){let o=n.nodeEdges(r);o&&o.forEach(i=>{let s=i.v,a=r===s?i.w:s;!e.hasNode(a)&&!v(n,i)&&(e.setNode(a,{}),e.setEdge(r,a,{}),t(a))})}return e.nodes().forEach(t),e.nodeCount()}function Jn(e,n){return n.edges().reduce((r,o)=>{let i=Number.POSITIVE_INFINITY;return e.hasNode(o.v)!==e.hasNode(o.w)&&(i=v(n,o)),i<r[0]?[i,o]:r},[Number.POSITIVE_INFINITY,null])[1]}function Qn(e,n,t){e.nodes().forEach(r=>n.node(r).rank+=t)}var{preorder:Zn,postorder:et}=R,Ve=x;x.initLowLimValues=ee;x.initCutValues=Z;x.calcCutValue=We;x.leaveEdge=Ye;x.enterEdge=ze;x.exchangeEdges=He;function x(e){e=xe(e),S(e);let n=V(e);ee(n),Z(n,e);let t,r;for(;t=Ye(n);)r=ze(n,e,t),He(n,e,t,r)}function Z(e,n){let t=et(e,e.nodes());t=t.slice(0,t.length-1),t.forEach(r=>nt(e,n,r))}function nt(e,n,t){let o=e.node(t).parent,i=e.edge(t,o);i.cutvalue=We(e,n,t)}function We(e,n,t){let o=e.node(t).parent,i=!0,s=n.edge(t,o),a=0;s||(i=!1,s=n.edge(o,t)),a=s.weight;let d=n.nodeEdges(t);return d&&d.forEach(l=>{let u=l.v===t,c=u?l.w:l.v;if(c!==o){let h=u===i,f=n.edge(l).weight;if(a+=h?f:-f,rt(e,t,c)){let b=e.edge(t,c).cutvalue;a+=h?-b:b}}}),a}function ee(e,n){arguments.length<2&&(n=e.nodes()[0]),Be(e,{},1,n)}function Be(e,n,t,r,o){let i=t,s=e.node(r);n[r]=!0;let a=e.neighbors(r);return a&&a.forEach(d=>{Object.hasOwn(n,d)||(t=Be(e,n,t,d,r))}),s.low=i,s.lim=t++,o?s.parent=o:delete s.parent,t}function Ye(e){return e.edges().find(n=>e.edge(n).cutvalue<0)}function ze(e,n,t){let r=t.v,o=t.w;n.hasEdge(r,o)||(r=t.w,o=t.v);let i=e.node(r),s=e.node(o),a=i,d=!1;return i.lim>s.lim&&(a=s,d=!0),n.edges().filter(u=>d===Ae(e,e.node(u.v),a)&&d!==Ae(e,e.node(u.w),a)).reduce((u,c)=>v(n,c)<v(n,u)?c:u)}function He(e,n,t,r){let o=t.v,i=t.w;e.removeEdge(o,i),e.setEdge(r.v,r.w,{}),ee(e),Z(e,n),tt(e,n)}function tt(e,n){let t=e.nodes().find(o=>!e.node(o).parent);if(!t)return;let r=Zn(e,[t]);r=r.slice(1),r.forEach(o=>{let s=e.node(o).parent,a=n.edge(o,s),d=!1;a||(a=n.edge(s,o),d=!0),n.node(o).rank=n.node(s).rank+(d?a.minlen:-a.minlen)})}function rt(e,n,t){return e.hasEdge(n,t)}function Ae(e,n,t){return t.low<=n.lim&&n.lim<=t.lim}var Xe=ot;function ot(e){let n=e.graph().ranker;if(typeof n==\"function\")return n(e);switch(n){case\"network-simplex\":qe(e);break;case\"tight-tree\":st(e);break;case\"longest-path\":it(e);break;case\"none\":break;default:qe(e)}}var it=S;function st(e){S(e),V(e)}function qe(e){Ve(e)}var Ue=at;function at(e){let n=lt(e);e.graph().dummyChains.forEach(t=>{let r=e.node(t),o=r.edgeObj,i=dt(e,n,o.v,o.w),s=i.path,a=i.lca,d=0,l=s[d],u=!0;for(;t!==o.w;){if(r=e.node(t),u){for(;(l=s[d])!==a&&e.node(l).maxRank<r.rank;)d++;l===a&&(u=!1)}if(!u){for(;d<s.length-1&&e.node(s[d+1]).minRank<=r.rank;)d++;l=s[d]}l!==void 0&&e.setParent(t,l),t=e.successors(t)[0]}})}function dt(e,n,t,r){let o=[],i=[],s=Math.min(n[t].low,n[r].low),a=Math.max(n[t].lim,n[r].lim),d;d=t;do d=e.parent(d),o.push(d);while(d&&(n[d].low>s||a>n[d].lim));let l=d,u=r;for(;(u=e.parent(u))!==l;)i.push(u);return{path:o.concat(i.reverse()),lca:l}}function lt(e){let n={},t=0;function r(o){let i=t;e.children(o).forEach(r),n[o]={low:i,lim:t++}}return e.children(_).forEach(r),n}function Ke(e){let n=w(e,\"root\",{},\"_root\"),t=ut(e),r=Object.values(t),o=L(Math.max,r)-1,i=2*o+1;e.graph().nestingRoot=n,e.edges().forEach(a=>e.edge(a).minlen*=i);let s=ct(e)+1;e.children(_).forEach(a=>$e(e,n,i,s,o,t,a)),e.graph().nodeRankFactor=i}function $e(e,n,t,r,o,i,s){var c;let a=e.children(s);if(!a.length){s!==n&&e.setEdge(n,s,{weight:0,minlen:t});return}let d=q(e,\"_bt\"),l=q(e,\"_bb\"),u=e.node(s);e.setParent(d,s),u.borderTop=d,e.setParent(l,s),u.borderBottom=l,a.forEach(h=>{var y;$e(e,n,t,r,o,i,h);let f=e.node(h),g=f.borderTop?f.borderTop:h,b=f.borderBottom?f.borderBottom:h,m=f.borderTop?r:2*r,E=g!==b?1:o-((y=i[s])!=null?y:0)+1;e.setEdge(d,g,{weight:m,minlen:E,nestingEdge:!0}),e.setEdge(b,l,{weight:m,minlen:E,nestingEdge:!0})}),e.parent(s)||e.setEdge(n,d,{weight:0,minlen:o+((c=i[s])!=null?c:0)})}function ut(e){let n={};function t(r,o){let i=e.children(r);i&&i.length&&i.forEach(s=>t(s,o+1)),n[r]=o}return e.children(_).forEach(r=>t(r,1)),n}function ct(e){return e.edges().reduce((n,t)=>n+e.edge(t).weight,0)}function Je(e){let n=e.graph();e.removeNode(n.nestingRoot),delete n.nestingRoot,e.edges().forEach(t=>{e.edge(t).nestingEdge&&e.removeEdge(t)})}var Ze=ft;function ft(e){function n(t){let r=e.children(t),o=e.node(t);if(r.length&&r.forEach(n),Object.hasOwn(o,\"minRank\")){o.borderLeft=[],o.borderRight=[];for(let i=o.minRank,s=o.maxRank+1;i<s;++i)Qe(e,\"borderLeft\",\"_bl\",t,o,i),Qe(e,\"borderRight\",\"_br\",t,o,i)}}e.children(_).forEach(n)}function Qe(e,n,t,r,o,i){let s={width:0,height:0,rank:i,borderType:n},a=o[n][i-1],d=w(e,\"border\",s,t);o[n][i]=d,e.setParent(d,r),a&&e.setEdge(a,d,{weight:1})}function nn(e){var t;let n=(t=e.graph().rankdir)==null?void 0:t.toLowerCase();(n===\"lr\"||n===\"rl\")&&rn(e)}function tn(e){var t;let n=(t=e.graph().rankdir)==null?void 0:t.toLowerCase();(n===\"bt\"||n===\"rl\")&&bt(e),(n===\"lr\"||n===\"rl\")&&(gt(e),rn(e))}function rn(e){e.nodes().forEach(n=>en(e.node(n))),e.edges().forEach(n=>en(e.edge(n)))}function en(e){let n=e.width;e.width=e.height,e.height=n}function bt(e){e.nodes().forEach(n=>ne(e.node(n))),e.edges().forEach(n=>{var r;let t=e.edge(n);(r=t.points)==null||r.forEach(ne),Object.hasOwn(t,\"y\")&&ne(t)})}function ne(e){e.y=-e.y}function gt(e){e.nodes().forEach(n=>te(e.node(n))),e.edges().forEach(n=>{var r;let t=e.edge(n);(r=t.points)==null||r.forEach(te),Object.hasOwn(t,\"x\")&&te(t)})}function te(e){let n=e.x;e.x=e.y,e.y=n}function re(e){let n={},t=e.nodes().filter(d=>!e.children(d).length),r=t.map(d=>e.node(d).rank),o=L(Math.max,r),i=k(o+1).map(()=>[]);function s(d){if(n[d])return;n[d]=!0;let l=e.node(d);i[l.rank].push(d);let u=e.successors(d);u&&u.forEach(s)}return t.sort((d,l)=>e.node(d).rank-e.node(l).rank).forEach(s),i}function oe(e,n){let t=0;for(let r=1;r<n.length;++r)t+=mt(e,n[r-1],n[r]);return t}function mt(e,n,t){let r=Re(t,t.map((l,u)=>u)),o=n.flatMap(l=>{let u=e.outEdges(l);return u?u.map(c=>({pos:r[c.w],weight:e.edge(c).weight})).sort((c,h)=>c.pos-h.pos):[]}),i=1;for(;i<t.length;)i<<=1;let s=2*i-1;i-=1;let a=new Array(s).fill(0),d=0;return o.forEach(l=>{let u=l.pos+i;a[u]+=l.weight;let c=0;for(;u>0;)u%2&&(c+=a[u+1]),u=u-1>>1,a[u]+=l.weight;d+=l.weight*c}),d}function ie(e,n=[]){return n.map(t=>{let r=e.inEdges(t);if(!r||!r.length)return{v:t};{let o=r.reduce((i,s)=>{let a=e.edge(s),d=e.node(s.v);return{sum:i.sum+a.weight*d.order,weight:i.weight+a.weight}},{sum:0,weight:0});return{v:t,barycenter:o.sum/o.weight,weight:o.weight}}})}function se(e,n){let t={};e.forEach((o,i)=>{let s={indegree:0,in:[],out:[],vs:[o.v],i};o.barycenter!==void 0&&(s.barycenter=o.barycenter,s.weight=o.weight),t[o.v]=s}),n.edges().forEach(o=>{let i=t[o.v],s=t[o.w];i!==void 0&&s!==void 0&&(s.indegree++,i.out.push(s))});let r=Object.values(t).filter(o=>!o.indegree);return Et(r)}function Et(e){let n=[];function t(o){return i=>{i.merged||(i.barycenter===void 0||o.barycenter===void 0||i.barycenter>=o.barycenter)&&Lt(o,i)}}function r(o){return i=>{i.in.push(o),--i.indegree===0&&e.push(i)}}for(;e.length;){let o=e.pop();n.push(o),o.in.reverse().forEach(t(o)),o.out.forEach(r(o))}return n.filter(o=>!o.merged).map(o=>T(o,[\"vs\",\"i\",\"barycenter\",\"weight\"]))}function Lt(e,n){let t=0,r=0;e.weight&&(t+=e.barycenter*e.weight,r+=e.weight),n.weight&&(t+=n.barycenter*n.weight,r+=n.weight),e.vs=n.vs.concat(e.vs),e.barycenter=t/r,e.weight=r,e.i=Math.min(n.i,e.i),n.merged=!0}function ae(e,n){let t=Ce(e,u=>Object.hasOwn(u,\"barycenter\")),r=t.lhs,o=t.rhs.sort((u,c)=>c.i-u.i),i=[],s=0,a=0,d=0;r.sort(yt(!!n)),d=on(i,o,d),r.forEach(u=>{d+=u.vs.length,i.push(u.vs),s+=u.barycenter*u.weight,a+=u.weight,d=on(i,o,d)});let l={vs:i.flat(1)};return a&&(l.barycenter=s/a,l.weight=a),l}function on(e,n,t){let r;for(;n.length&&(r=n[n.length-1]).i<=t;)n.pop(),e.push(r.vs),t++;return t}function yt(e){return(n,t)=>n.barycenter<t.barycenter?-1:n.barycenter>t.barycenter?1:e?t.i-n.i:n.i-t.i}function W(e,n,t,r){let o=e.children(n),i=e.node(n),s=i?i.borderLeft:void 0,a=i?i.borderRight:void 0,d={};s&&(o=o.filter(h=>h!==s&&h!==a));let l=ie(e,o);l.forEach(h=>{if(e.children(h.v).length){let f=W(e,h.v,t,r);d[h.v]=f,Object.hasOwn(f,\"barycenter\")&&Nt(h,f)}});let u=se(l,t);wt(u,d);let c=ae(u,r);if(s&&a){c.vs=[s,c.vs,a].flat(1);let h=e.predecessors(s);if(h&&h.length){let f=e.node(h[0]),g=e.predecessors(a),b=e.node(g[0]);Object.hasOwn(c,\"barycenter\")||(c.barycenter=0,c.weight=0),c.barycenter=(c.barycenter*c.weight+f.order+b.order)/(c.weight+2),c.weight+=2}}return c}function wt(e,n){e.forEach(t=>{t.vs=t.vs.flatMap(r=>n[r]?n[r].vs:r)})}function Nt(e,n){e.barycenter!==void 0?(e.barycenter=(e.barycenter*e.weight+n.barycenter*n.weight)/(e.weight+n.weight),e.weight+=n.weight):(e.barycenter=n.barycenter,e.weight=n.weight)}function de(e,n,t,r){r||(r=e.nodes());let o=Gt(e),i=new p({compound:!0}).setGraph({root:o}).setDefaultNodeLabel(s=>e.node(s));return r.forEach(s=>{let a=e.node(s),d=e.parent(s);if(a.rank===n||a.minRank<=n&&n<=a.maxRank){i.setNode(s),i.setParent(s,d||o);let l=e[t](s);l&&l.forEach(u=>{let c=u.v===s?u.w:u.v,h=i.edge(c,s),f=h!==void 0?h.weight:0;i.setEdge(c,s,{weight:e.edge(u).weight+f})}),Object.hasOwn(a,\"minRank\")&&i.setNode(s,{borderLeft:a.borderLeft[n],borderRight:a.borderRight[n]})}}),i}function Gt(e){let n;for(;e.hasNode(n=j(\"_root\")););return n}function le(e,n,t){let r={},o;t.forEach(i=>{let s=e.parent(i),a,d;for(;s;){if(a=e.parent(s),a?(d=r[a],r[a]=s):(d=o,o=s),d&&d!==s){n.setEdge(d,s);return}s=a}})}function B(e,n={}){if(typeof n.customOrder==\"function\"){n.customOrder(e,B);return}let t=X(e),r=sn(e,k(1,t+1),\"inEdges\"),o=sn(e,k(t-1,-1,-1),\"outEdges\"),i=re(e);if(an(e,i),n.disableOptimalOrderHeuristic)return;let s=Number.POSITIVE_INFINITY,a,d=n.constraints||[];for(let l=0,u=0;u<4;++l,++u){kt(l%2?r:o,l%4>=2,d),i=N(e);let c=oe(e,i);c<s?(u=0,a=Object.assign({},i),s=c):c===s&&(a=structuredClone(i))}an(e,a)}function sn(e,n,t){let r=new Map,o=(i,s)=>{r.has(i)||r.set(i,[]),r.get(i).push(s)};for(let i of e.nodes()){let s=e.node(i);if(typeof s.rank==\"number\"&&o(s.rank,i),typeof s.minRank==\"number\"&&typeof s.maxRank==\"number\")for(let a=s.minRank;a<=s.maxRank;a++)a!==s.rank&&o(a,i)}return n.map(function(i){return de(e,i,t,r.get(i)||[])})}function kt(e,n,t){let r=new p;e.forEach(function(o){t.forEach(a=>r.setEdge(a.left,a.right));let i=o.graph().root,s=W(o,i,r,n);s.vs.forEach((a,d)=>o.node(a).order=d),le(o,r,s.vs)})}function an(e,n){Object.values(n).forEach(t=>t.forEach((r,o)=>e.node(r).order=o))}function vt(e,n){let t={};function r(o,i){let s=0,a=0,d=o.length,l=i[i.length-1];return i.forEach((u,c)=>{let h=xt(e,u),f=h?e.node(h).order:d;(h||u===l)&&(i.slice(a,c+1).forEach(g=>{let b=e.predecessors(g);b&&b.forEach(m=>{let E=e.node(m),y=E.order;(y<s||f<y)&&!(E.dummy&&e.node(g).dummy)&&dn(t,m,g)})}),a=c+1,s=f)}),i}return n.length&&n.reduce(r),t}function _t(e,n){let t={};function r(i,s,a,d,l){k(s,a).forEach(u=>{let c=i[u];if(c!==void 0&&e.node(c).dummy){let h=e.predecessors(c);h&&h.forEach(f=>{if(f===void 0)return;let g=e.node(f);g.dummy&&(g.order<d||g.order>l)&&dn(t,f,c)})}})}function o(i,s){let a=-1,d=-1,l=0;return s.forEach((u,c)=>{if(e.node(u).dummy===\"border\"){let h=e.predecessors(u);if(h&&h.length){let f=h[0];if(f===void 0)return;d=e.node(f).order,r(s,l,c,a,d),l=c,a=d}}r(s,l,s.length,d,i.length)}),s}return n.length&&n.reduce(o),t}function xt(e,n){if(e.node(n).dummy){let t=e.predecessors(n);if(t)return t.find(r=>e.node(r).dummy)}}function dn(e,n,t){if(n>t){let o=n;n=t,t=o}let r=e[n];r||(e[n]=r={}),r[t]=!0}function Tt(e,n,t){if(n>t){let o=n;n=t,t=o}let r=e[n];return r!==void 0&&Object.hasOwn(r,t)}function Ot(e,n,t,r){let o={},i={},s={};return n.forEach(a=>{a.forEach((d,l)=>{o[d]=d,i[d]=d,s[d]=l})}),n.forEach(a=>{let d=-1;a.forEach(l=>{let u=r(l);if(u&&u.length){let c=u.sort((f,g)=>{let b=s[f],m=s[g];return(b!==void 0?b:0)-(m!==void 0?m:0)}),h=(c.length-1)/2;for(let f=Math.floor(h),g=Math.ceil(h);f<=g;++f){let b=c[f];if(b===void 0)continue;let m=s[b];if(m!==void 0&&i[l]===l&&d<m&&!Tt(t,l,b)){let E=o[b];E!==void 0&&(i[b]=l,i[l]=o[l]=E,d=m)}}}})}),{root:o,align:i}}function It(e,n,t,r,o=!1){let i={},s=Ct(e,n,t,o),a=o?\"borderLeft\":\"borderRight\";function d(f,g){let b=s.nodes().slice(),m={},E=b.pop();for(;E;){if(m[E])f(E);else{m[E]=!0,b.push(E);for(let y of g(E))b.push(y)}E=b.pop()}}function l(f){let g=s.inEdges(f);g?i[f]=g.reduce((b,m)=>{var I;let E=(I=i[m.v])!=null?I:0,y=s.edge(m);return Math.max(b,E+(y!==void 0?y:0))},0):i[f]=0}function u(f){let g=s.outEdges(f),b=Number.POSITIVE_INFINITY;g&&(b=g.reduce((E,y)=>{let I=i[y.w],be=s.edge(y);return Math.min(E,(I!==void 0?I:0)-(be!==void 0?be:0))},Number.POSITIVE_INFINITY));let m=e.node(f);b!==Number.POSITIVE_INFINITY&&m.borderType!==a&&(i[f]=Math.max(i[f]!==void 0?i[f]:0,b))}function c(f){return s.predecessors(f)||[]}function h(f){return s.successors(f)||[]}return d(l,c),d(u,h),Object.keys(r).forEach(f=>{var b;let g=t[f];g!==void 0&&(i[f]=(b=i[g])!=null?b:0)}),i}function Ct(e,n,t,r){let o=new p,i=e.graph(),s=jt(i.nodesep,i.edgesep,r);return n.forEach(a=>{let d;a.forEach(l=>{let u=t[l];if(u!==void 0){if(o.setNode(u),d!==void 0){let c=t[d];if(c!==void 0){let h=o.edge(c,u);o.setEdge(c,u,Math.max(s(e,l,d),h||0))}}d=l}})}),o}function Rt(e,n){return Object.values(n).reduce((t,r)=>{let o=Number.NEGATIVE_INFINITY,i=Number.POSITIVE_INFINITY;Object.entries(r).forEach(([a,d])=>{let l=St(e,a)/2;o=Math.max(d+l,o),i=Math.min(d-l,i)});let s=o-i;return s<t[0]&&(t=[s,r]),t},[Number.POSITIVE_INFINITY,null])[1]}function Pt(e,n){let t=Object.values(n),r=L(Math.min,t),o=L(Math.max,t);[\"u\",\"d\"].forEach(i=>{[\"l\",\"r\"].forEach(s=>{let a=i+s,d=e[a];if(!d||d===n)return;let l=Object.values(d),u=r-L(Math.min,l);s!==\"l\"&&(u=o-L(Math.max,l)),u&&(e[a]=O(d,c=>c+u))})})}function Mt(e,n=void 0){let t=e.ul;return t?O(t,(r,o)=>{var s,a;if(n){let d=n.toLowerCase(),l=e[d];if(l&&l[o]!==void 0)return l[o]}let i=Object.values(e).map(d=>{let l=d[o];return l!==void 0?l:0}).sort((d,l)=>d-l);return(((s=i[1])!=null?s:0)+((a=i[2])!=null?a:0))/2}):{}}function ln(e){let n=N(e),t=Object.assign(vt(e,n),_t(e,n)),r={},o;[\"u\",\"d\"].forEach(s=>{o=s===\"u\"?n:Object.values(n).reverse(),[\"l\",\"r\"].forEach(a=>{a===\"r\"&&(o=o.map(c=>Object.values(c).reverse()));let l=Ot(e,o,t,c=>(s===\"u\"?e.predecessors(c):e.successors(c))||[]),u=It(e,o,l.root,l.align,a===\"r\");a===\"r\"&&(u=O(u,c=>-c)),r[s+a]=u})});let i=Rt(e,r);return Pt(r,i),Mt(r,e.graph().align)}function jt(e,n,t){return(r,o,i)=>{let s=r.node(o),a=r.node(i),d=0,l;if(d+=s.width/2,Object.hasOwn(s,\"labelpos\"))switch(s.labelpos.toLowerCase()){case\"l\":l=-s.width/2;break;case\"r\":l=s.width/2;break}if(l&&(d+=t?l:-l),l=void 0,d+=(s.dummy?n:e)/2,d+=(a.dummy?n:e)/2,d+=a.width/2,Object.hasOwn(a,\"labelpos\"))switch(a.labelpos.toLowerCase()){case\"l\":l=a.width/2;break;case\"r\":l=-a.width/2;break}return l&&(d+=t?l:-l),d}}function St(e,n){return e.node(n).width}function un(e){e=A(e),Ft(e),Object.entries(ln(e)).forEach(([n,t])=>e.node(n).x=t)}function Ft(e){let n=N(e),t=e.graph(),r=t.ranksep,o=t.rankalign,i=0;n.forEach(s=>{let a=s.reduce((d,l)=>{var c;let u=(c=e.node(l).height)!=null?c:0;return d>u?d:u},0);s.forEach(d=>{let l=e.node(d);o===\"top\"?l.y=i+l.height/2:o===\"bottom\"?l.y=i+a-l.height/2:l.y=i+a/2}),i+=a+r})}function he(e,n={}){let t=n.debugTiming?P:M;return t(\"layout\",()=>{let r=t(\" buildLayoutGraph\",()=>Xt(e));return t(\" runLayout\",()=>Dt(r,t,n)),t(\" updateInputGraph\",()=>At(e,r)),r})}function Dt(e,n,t){n(\" makeSpaceForEdgeLabels\",()=>Ut(e)),n(\" removeSelfEdges\",()=>rr(e)),n(\" acyclic\",()=>je(e)),n(\" nestingGraph.run\",()=>Ke(e)),n(\" rank\",()=>Xe(A(e))),n(\" injectEdgeLabelProxies\",()=>Kt(e)),n(\" removeEmptyRanks\",()=>Oe(e)),n(\" nestingGraph.cleanup\",()=>Je(e)),n(\" normalizeRanks\",()=>Te(e)),n(\" assignRankMinMax\",()=>$t(e)),n(\" removeEdgeLabelProxies\",()=>Jt(e)),n(\" normalize.run\",()=>Fe(e)),n(\" parentDummyChains\",()=>Ue(e)),n(\" addBorderSegments\",()=>Ze(e)),n(\" order\",()=>B(e,t)),n(\" insertSelfEdges\",()=>or(e)),n(\" adjustCoordinateSystem\",()=>nn(e)),n(\" position\",()=>un(e)),n(\" positionSelfEdges\",()=>ir(e)),n(\" removeBorderNodes\",()=>tr(e)),n(\" normalize.undo\",()=>De(e)),n(\" fixupEdgeLabelCoords\",()=>er(e)),n(\" undoCoordinateSystem\",()=>tn(e)),n(\" translateGraph\",()=>Qt(e)),n(\" assignNodeIntersects\",()=>Zt(e)),n(\" reversePoints\",()=>nr(e)),n(\" acyclic.undo\",()=>Se(e))}function At(e,n){e.nodes().forEach(t=>{let r=e.node(t),o=n.node(t);r&&(r.x=o.x,r.y=o.y,r.order=o.order,r.rank=o.rank,n.children(t).length&&(r.width=o.width,r.height=o.height))}),e.edges().forEach(t=>{let r=e.edge(t),o=n.edge(t);r.points=o.points,Object.hasOwn(o,\"x\")&&(r.x=o.x,r.y=o.y)}),e.graph().width=n.graph().width,e.graph().height=n.graph().height}var Vt=[\"nodesep\",\"edgesep\",\"ranksep\",\"marginx\",\"marginy\"],Wt={ranksep:50,edgesep:20,nodesep:50,rankdir:\"TB\",rankalign:\"center\"},Bt=[\"acyclicer\",\"ranker\",\"rankdir\",\"align\",\"rankalign\"],Yt=[\"width\",\"height\",\"rank\"],cn={width:0,height:0},zt=[\"minlen\",\"weight\",\"width\",\"height\",\"labeloffset\"],Ht={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:\"r\"},qt=[\"labelpos\"];function Xt(e){let n=new p({multigraph:!0,compound:!0}),t=ce(e.graph());return n.setGraph(Object.assign({},Wt,ue(t,Vt),T(t,Bt))),e.nodes().forEach(r=>{let o=ce(e.node(r)),i=ue(o,Yt);Object.keys(cn).forEach(a=>{i[a]===void 0&&(i[a]=cn[a])}),n.setNode(r,i);let s=e.parent(r);s!==void 0&&n.setParent(r,s)}),e.edges().forEach(r=>{let o=ce(e.edge(r));n.setEdge(r,Object.assign({},Ht,ue(o,zt),T(o,qt)))}),n}function Ut(e){let n=e.graph();n.ranksep/=2,e.edges().forEach(t=>{let r=e.edge(t);r.minlen*=2,r.labelpos.toLowerCase()!==\"c\"&&(n.rankdir===\"TB\"||n.rankdir===\"BT\"?r.width+=r.labeloffset:r.height+=r.labeloffset)})}function Kt(e){e.edges().forEach(n=>{let t=e.edge(n);if(t.width&&t.height){let r=e.node(n.v),i={rank:(e.node(n.w).rank-r.rank)/2+r.rank,e:n};w(e,\"edge-proxy\",i,\"_ep\")}})}function $t(e){let n=0;e.nodes().forEach(t=>{let r=e.node(t);r.borderTop&&(r.minRank=e.node(r.borderTop).rank,r.maxRank=e.node(r.borderBottom).rank,n=Math.max(n,r.maxRank))}),e.graph().maxRank=n}function Jt(e){e.nodes().forEach(n=>{let t=e.node(n);if(t.dummy===\"edge-proxy\"){let r=t;e.edge(r.e).labelRank=t.rank,e.removeNode(n)}})}function Qt(e){let n=Number.POSITIVE_INFINITY,t=0,r=Number.POSITIVE_INFINITY,o=0,i=e.graph(),s=i.marginx||0,a=i.marginy||0;function d(l){let u=l.x,c=l.y,h=l.width,f=l.height;n=Math.min(n,u-h/2),t=Math.max(t,u+h/2),r=Math.min(r,c-f/2),o=Math.max(o,c+f/2)}e.nodes().forEach(l=>d(e.node(l))),e.edges().forEach(l=>{let u=e.edge(l);Object.hasOwn(u,\"x\")&&d(u)}),n-=s,r-=a,e.nodes().forEach(l=>{let u=e.node(l);u.x-=n,u.y-=r}),e.edges().forEach(l=>{let u=e.edge(l);u.points.forEach(c=>{c.x-=n,c.y-=r}),Object.hasOwn(u,\"x\")&&(u.x-=n),Object.hasOwn(u,\"y\")&&(u.y-=r)}),i.width=t-n+s,i.height=o-r+a}function Zt(e){e.edges().forEach(n=>{let t=e.edge(n),r=e.node(n.v),o=e.node(n.w),i,s;t.points?(i=t.points[0],s=t.points[t.points.length-1]):(t.points=[],i=o,s=r),t.points.unshift(H(r,i)),t.points.push(H(o,s))})}function er(e){e.edges().forEach(n=>{let t=e.edge(n);if(Object.hasOwn(t,\"x\"))switch((t.labelpos===\"l\"||t.labelpos===\"r\")&&(t.width-=t.labeloffset),t.labelpos){case\"l\":t.x-=t.width/2+t.labeloffset;break;case\"r\":t.x+=t.width/2+t.labeloffset;break}})}function nr(e){e.edges().forEach(n=>{let t=e.edge(n);t.reversed&&t.points.reverse()})}function tr(e){e.nodes().forEach(n=>{if(e.children(n).length){let t=e.node(n),r=e.node(t.borderTop),o=e.node(t.borderBottom),i=e.node(t.borderLeft[t.borderLeft.length-1]),s=e.node(t.borderRight[t.borderRight.length-1]);t.width=Math.abs(s.x-i.x),t.height=Math.abs(o.y-r.y),t.x=i.x+t.width/2,t.y=r.y+t.height/2}}),e.nodes().forEach(n=>{e.node(n).dummy===\"border\"&&e.removeNode(n)})}function rr(e){e.edges().forEach(n=>{if(n.v===n.w){let t=e.node(n.v);t.selfEdges||(t.selfEdges=[]),t.selfEdges.push({e:n,label:e.edge(n)}),e.removeEdge(n)}})}function or(e){N(e).forEach(t=>{let r=0;t.forEach((o,i)=>{let s=e.node(o);s.order=i+r,(s.selfEdges||[]).forEach(a=>{w(e,\"selfedge\",{width:a.label.width,height:a.label.height,rank:s.rank,order:i+ ++r,e:a.e,label:a.label},\"_se\")}),delete s.selfEdges})})}function ir(e){e.nodes().forEach(n=>{let t=e.node(n);if(t.dummy===\"selfedge\"){let r=t,o=e.node(r.e.v),i=o.x+o.width/2,s=o.y,a=t.x-i,d=o.height/2;e.setEdge(r.e,r.label),e.removeNode(n),r.label.points=[{x:i+2*a/3,y:s-d},{x:i+5*a/6,y:s-d},{x:i+a,y:s},{x:i+5*a/6,y:s+d},{x:i+2*a/3,y:s+d}],r.label.x=t.x,r.label.y=t.y}})}function ue(e,n){return O(T(e,n),Number)}function ce(e){let n={};return e&&Object.entries(e).forEach(([t,r])=>{typeof t==\"string\"&&(t=t.toLowerCase()),n[t]=r}),n}function fe(e){let n=N(e),t=new p({compound:!0,multigraph:!0}).setGraph({});return e.nodes().forEach(r=>{t.setNode(r,{label:r}),t.setParent(r,\"layer\"+e.node(r).rank)}),e.edges().forEach(r=>t.setEdge(r.v,r.w,{},r.name)),n.forEach((r,o)=>{let i=\"layer\"+o;t.setNode(i,{rank:\"same\"}),r.reduce((s,a)=>(t.setEdge(s,a,{style:\"invis\"}),a))}),t}var xo={time:P,notime:M},sr={graphlib:z,version:U,layout:he,debug:fe,util:{time:P,notime:M}},To=sr;export{p as Graph,fe as debug,To as default,z as graphlib,he as layout,xo as util,U as version};\n/*! For license information please see dagre.esm.js.LEGAL.txt */\n//# sourceMappingURL=dagre.esm.js.map\n","import { useEffect, useRef } from 'react';\r\nimport { useStore, useReactFlow, ReactFlowState } from 'reactflow';\r\n\r\ninterface Props {\r\n onHeightsReady: (heights: Record<string, number>) => void;\r\n nodeCount: number;\r\n}\r\n\r\n// Returns a stable string — only changes when a node height actually changes\r\nconst fingerprintSelector = (state: ReactFlowState): string => {\r\n const parts: string[] = [];\r\n state.nodeInternals.forEach((node, id) => parts.push(`${id}:${node.height ?? 0}`));\r\n return parts.join(',');\r\n};\r\n\r\nconst LayoutUpdater = ({ onHeightsReady, nodeCount }: Props) => {\r\n const fingerprint = useStore(fingerprintSelector);\r\n const prevRef = useRef('');\r\n const prevNodeCount = useRef(0);\r\n const { fitView } = useReactFlow();\r\n\r\n useEffect(() => {\r\n if (!fingerprint || fingerprint === prevRef.current) return;\r\n\r\n // Parse heights back from the fingerprint — avoids a second store subscription\r\n const heights: Record<string, number> = {};\r\n for (const part of fingerprint.split(',')) {\r\n const [id, h] = part.split(':');\r\n const height = Number(h);\r\n if (id && height > 0) heights[id] = height;\r\n }\r\n\r\n if (Object.keys(heights).length === 0) return;\r\n prevRef.current = fingerprint;\r\n onHeightsReady(heights);\r\n }, [fingerprint]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n return null;\r\n};\r\n\r\nexport default LayoutUpdater;\r\n","import React from 'react';\n\n/**\n * FlowForgeHeader — top bar that ships with FlowForgeCanvas by default.\n *\n * Renders the workflow name, a status pill, Cancel, and primary Save\n * button. Calls back via `onSave` / `onCancel`. The canvas itself wires\n * `onSave` to the latest WorkflowState behind the scenes — consumers\n * only provide a callback that receives that state.\n *\n * Opt out of the built-in header by passing `hideHeader={true}` on\n * FlowForgeCanvas; you can still mount this component standalone.\n */\nexport interface FlowForgeHeaderProps {\n /** Workflow display name shown on the left. */\n workflowName?: string;\n /** Optional editable callback — when provided, name becomes click-to-edit. */\n onWorkflowNameChange?: (name: string) => void;\n /** Status pill text (e.g. 'Draft', 'Published', 'Unsaved'). */\n status?: string;\n /** Status pill color — one of these or a custom hex. */\n statusColor?: 'gray' | 'green' | 'amber' | 'red' | string;\n /** Click handler for the primary Save button. Async-aware: spinner shows during await. */\n onSave?: () => void | Promise<void>;\n /** Click handler for Cancel. Button hidden when not provided. */\n onCancel?: () => void;\n /** Custom label for the Save button. Defaults to \"Save\". */\n saveLabel?: string;\n /** Disable Save button (e.g. while there are no unsaved changes). */\n saveDisabled?: boolean;\n}\n\nconst STATUS_PALETTE: Record<string, { bg: string; fg: string }> = {\n gray: { bg: '#f1f5f9', fg: '#475569' },\n green: { bg: '#dcfce7', fg: '#166534' },\n amber: { bg: '#fef3c7', fg: '#92400e' },\n red: { bg: '#fee2e2', fg: '#991b1b' },\n};\n\nexport function FlowForgeHeader({\n workflowName,\n onWorkflowNameChange,\n status,\n statusColor = 'gray',\n onSave,\n onCancel,\n saveLabel = 'Save',\n saveDisabled = false,\n}: FlowForgeHeaderProps) {\n const [saving, setSaving] = React.useState(false);\n const [editingName, setEditingName] = React.useState(false);\n const [nameDraft, setNameDraft] = React.useState(workflowName ?? '');\n\n React.useEffect(() => { setNameDraft(workflowName ?? ''); }, [workflowName]);\n\n const handleSave = async () => {\n if (!onSave || saving || saveDisabled) return;\n setSaving(true);\n try {\n await onSave();\n } finally {\n setSaving(false);\n }\n };\n\n const statusPalette = STATUS_PALETTE[statusColor] ?? {\n bg: statusColor,\n fg: '#fff',\n };\n\n return (\n <div\n style={{\n display: 'flex', alignItems: 'center', gap: 12,\n padding: '10px 20px',\n background: '#fff',\n borderBottom: '1px solid #e2e8f0',\n flexShrink: 0,\n }}\n >\n {/* ── Left: name + status ─────────────────────────────────────────── */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 10, minWidth: 0 }}>\n {editingName && onWorkflowNameChange ? (\n <input\n value={nameDraft}\n onChange={(e) => setNameDraft(e.target.value)}\n onBlur={() => {\n setEditingName(false);\n if (nameDraft !== workflowName) onWorkflowNameChange(nameDraft);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') (e.target as HTMLInputElement).blur();\n if (e.key === 'Escape') { setNameDraft(workflowName ?? ''); setEditingName(false); }\n }}\n autoFocus\n style={{\n fontSize: 15, fontWeight: 600, color: '#0f172a',\n border: '1px solid #cbd5e1', borderRadius: 4,\n padding: '2px 6px', minWidth: 200,\n }}\n />\n ) : (\n <span\n onClick={() => onWorkflowNameChange && setEditingName(true)}\n style={{\n fontSize: 15, fontWeight: 600, color: '#0f172a',\n cursor: onWorkflowNameChange ? 'text' : 'default',\n whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis',\n maxWidth: 360,\n }}\n title={workflowName}\n >\n {workflowName || 'Untitled workflow'}\n </span>\n )}\n\n {status && (\n <span\n style={{\n fontSize: 11, fontWeight: 600,\n padding: '3px 8px', borderRadius: 999,\n background: statusPalette.bg, color: statusPalette.fg,\n textTransform: 'uppercase', letterSpacing: 0.4,\n flexShrink: 0,\n }}\n >\n {status}\n </span>\n )}\n </div>\n\n {/* ── Right: action buttons ───────────────────────────────────────── */}\n <div style={{ marginLeft: 'auto', display: 'flex', alignItems: 'center', gap: 8 }}>\n {onCancel && (\n <button\n type=\"button\"\n onClick={onCancel}\n disabled={saving}\n style={{\n padding: '6px 14px', fontSize: 13, fontWeight: 500,\n border: '1px solid #cbd5e1', background: '#fff',\n color: '#475569', borderRadius: 6,\n cursor: saving ? 'not-allowed' : 'pointer',\n opacity: saving ? 0.6 : 1,\n }}\n >\n Cancel\n </button>\n )}\n {onSave && (\n <button\n type=\"button\"\n onClick={handleSave}\n disabled={saving || saveDisabled}\n style={{\n padding: '6px 16px', fontSize: 13, fontWeight: 600,\n border: 'none',\n background: saveDisabled ? '#94a3b8' : 'var(--ff-primary, #1dbf60)',\n color: '#fff', borderRadius: 6,\n cursor: saving || saveDisabled ? 'not-allowed' : 'pointer',\n display: 'inline-flex', alignItems: 'center', gap: 6,\n minWidth: 80, justifyContent: 'center',\n }}\n >\n {saving ? 'Saving…' : saveLabel}\n </button>\n )}\n </div>\n </div>\n );\n}\n\nexport default FlowForgeHeader;\n","import React, { ReactNode, useState } from 'react';\r\nimport { Drawer, Box, IconButton, Dialog } from '@mui/material';\r\nimport { MdClose } from 'react-icons/md';\r\nimport { BiExpand, BiCollapse } from 'react-icons/bi';\r\n\r\ninterface BaseDrawerProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n title: string;\r\n icon?: ReactNode;\r\n children: ReactNode;\r\n footer?: ReactNode;\r\n width?: number;\r\n}\r\n\r\nconst BaseDrawer = ({ isOpen, onClose, title, icon, children, footer, width = 600 }: BaseDrawerProps) => {\r\n const [isModal, setIsModal] = useState(false);\r\n\r\n const toggleModal = () => setIsModal((v) => !v);\r\n\r\n const Header = () => (\r\n <Box sx={{ display: 'flex', alignItems: 'center', p: 2, pt: 3, borderBottom: '1px solid #e0e0e0', mb: 0, flexShrink: 0 }}>\r\n {icon && (\r\n <Box sx={{ mr: 1.5, display: 'flex', alignItems: 'center', fontSize: '1.25rem', color: '#1DBF60' }}>\r\n {icon}\r\n </Box>\r\n )}\r\n {/* Plain span instead of MUI Typography variant=\"h6\" — variant pulls a heavier\r\n fontWeight from the theme that overrides our sx prop in some apps.\r\n Matches Bootstrap's `text-14 fw-semibold` (14px / 600), inline so we don't\r\n drag in a Bootstrap dependency. */}\r\n <span style={{ flexGrow: 1, fontSize: 14, fontWeight: 500, color: '#212121' }}>\r\n {title}\r\n </span>\r\n <IconButton onClick={toggleModal} size=\"small\" sx={{ mr: 1 }} title={isModal ? 'Collapse' : 'Expand'} data-testid=\"expand-collapse-base-drawer-btn\">\r\n {isModal ? <BiCollapse /> : <BiExpand />}\r\n </IconButton>\r\n <IconButton onClick={onClose} size=\"small\" data-testid=\"close-drawer-button\">\r\n <MdClose />\r\n </IconButton>\r\n </Box>\r\n );\r\n\r\n const Footer = () =>\r\n footer ? (\r\n <Box sx={{ flexShrink: 0, p: 2, borderTop: '1px solid #e0e0e0', display: 'flex', justifyContent: 'flex-end', gap: 2 }}>\r\n {footer}\r\n </Box>\r\n ) : null;\r\n\r\n if (isModal) {\r\n return (\r\n <Dialog open={isOpen} onClose={onClose} maxWidth={false} fullWidth PaperProps={{ sx: { display: 'flex', flexDirection: 'column', height: '80vh', boxShadow: 24, width: '750px', maxWidth: '100%' } }}>\r\n <Header />\r\n <Box sx={{ flexGrow: 1, overflowY: 'auto', p: 0 }}>{children}</Box>\r\n <Footer />\r\n </Dialog>\r\n );\r\n }\r\n\r\n return (\r\n <Drawer\r\n anchor=\"right\"\r\n open={isOpen}\r\n onClose={onClose}\r\n variant=\"persistent\"\r\n sx={{ zIndex: 900 }}\r\n ModalProps={{ keepMounted: false }}\r\n PaperProps={{\r\n sx: {\r\n width,\r\n position: 'fixed',\r\n top: '64px',\r\n height: 'calc(100% - 74px)',\r\n right: '10px',\r\n borderRadius: '8px',\r\n border: '1px solid #bdbdbd',\r\n boxShadow: 'none',\r\n zIndex: 900,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n }}\r\n >\r\n <Header />\r\n <Box sx={{ flexGrow: 1, overflowY: 'auto', p: 0 }}>{children}</Box>\r\n <Footer />\r\n </Drawer>\r\n );\r\n};\r\n\r\nexport default BaseDrawer;\r\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { Box, Button, CircularProgress } from '@mui/material';\nimport ReactSelect from 'react-select';\nimport { MdBolt, MdCalendarToday, MdArrowBack } from 'react-icons/md';\nimport { GrTrigger } from 'react-icons/gr';\nimport BaseDrawer from './BaseDrawer';\nimport { FlowForgeMessages, WorkflowTemplate } from './types';\nimport { buildSelectStyles } from '../FlowForm/fieldTokens';\n\n/**\n * Option shape consumed by the source picker — matches what FlowForm fields use,\n * so a host's existing `getGroups`-style functions can be reused without adapters.\n */\nexport interface TriggerSourceOption {\n label: string;\n value: string;\n}\n\ninterface TriggerSelectorDrawerProps {\n open: boolean;\n templates: WorkflowTemplate[];\n messages: FlowForgeMessages;\n /** Called when the user finalises picking a trigger (and its sources, if any). */\n onSelect: (template: WorkflowTemplate, sources?: TriggerSourceOption[]) => void;\n onClose: () => void;\n /**\n * Optional async loader for trigger sources. When provided, the drawer goes to\n * stage 2 after a trigger is picked — if the loader returns a non-empty list,\n * the user picks one or more sources before the canvas is seeded.\n *\n * Returns an empty array for triggers that have no sources (the drawer skips\n * stage 2 in that case and seeds the canvas immediately).\n */\n loadTriggerSources?: (triggerKey: string) => Promise<TriggerSourceOption[]>;\n}\n\nconst TriggerSelectorDrawer = ({\n open, templates, messages,\n onSelect, onClose,\n loadTriggerSources,\n}: TriggerSelectorDrawerProps) => {\n // ── Two-stage state machine ─────────────────────────────────────────────────\n const [stage, setStage] = useState<'trigger' | 'sources'>('trigger');\n const [pickedTemplate, setPickedTemplate] = useState<WorkflowTemplate | null>(null);\n const [sourceOptions, setSourceOptions] = useState<TriggerSourceOption[]>([]);\n const [selectedSources, setSelectedSources] = useState<TriggerSourceOption[]>([]);\n const [loadingSources, setLoadingSources] = useState(false);\n const [sourcesError, setSourcesError] = useState<string | null>(null);\n\n // Reset on drawer close so reopening always starts at stage 1.\n useEffect(() => {\n if (!open) {\n setStage('trigger');\n setPickedTemplate(null);\n setSourceOptions([]);\n setSelectedSources([]);\n setLoadingSources(false);\n setSourcesError(null);\n }\n }, [open]);\n\n // Stage 1 → either skip to canvas (no loader / no sources) or advance to stage 2.\n const handleTriggerPick = useCallback(async (template: WorkflowTemplate) => {\n if (!loadTriggerSources) {\n onSelect(template);\n return;\n }\n setPickedTemplate(template);\n setLoadingSources(true);\n setSourcesError(null);\n try {\n const sources = await loadTriggerSources(template.triggerKey);\n if (!sources || sources.length === 0) {\n // Trigger has no sources — seed canvas straight away.\n onSelect(template);\n return;\n }\n setSourceOptions(sources);\n setStage('sources');\n } catch (e) {\n setSourcesError(e instanceof Error ? e.message : 'Failed to load sources.');\n } finally {\n setLoadingSources(false);\n }\n }, [loadTriggerSources, onSelect]);\n\n const handleBack = () => {\n setStage('trigger');\n setPickedTemplate(null);\n setSourceOptions([]);\n setSelectedSources([]);\n setSourcesError(null);\n };\n\n const handleContinue = () => {\n if (!pickedTemplate) return;\n onSelect(pickedTemplate, selectedSources);\n };\n\n // ── Render ──────────────────────────────────────────────────────────────────\n const showingSources = stage === 'sources' && pickedTemplate;\n\n const footer = showingSources ? (\n <>\n <Button type=\"button\" variant=\"outlined\" size=\"small\" onClick={handleBack}>\n {messages.cancel ?? 'Back'}\n </Button>\n <Button\n type=\"button\"\n variant=\"contained\"\n size=\"small\"\n onClick={handleContinue}\n disabled={selectedSources.length === 0}\n >\n {messages.save ?? 'Continue'}\n </Button>\n </>\n ) : null;\n\n return (\n <BaseDrawer\n isOpen={open}\n onClose={onClose}\n title={showingSources ? pickedTemplate.label : messages.addTriggerTitle}\n icon={<GrTrigger />}\n width={500}\n footer={footer}\n >\n <Box sx={{ p: 2 }}>\n {/* ── Stage 1 — trigger list ─────────────────────────────────────── */}\n {!showingSources && (\n <>\n <p className=\"ff-text-muted ff-mb-3\" style={{ fontSize: 13 }}>\n {messages.chooseTrigger}\n </p>\n <div className=\"ff-d-flex ff-flex-column ff-gap-2\">\n {templates.map((t) => (\n <div\n key={t.triggerKey}\n className=\"ff-p-3 ff-rounded ff-border ff-d-flex ff-align-items-start ff-gap-3\"\n style={{ cursor: loadingSources ? 'wait' : 'pointer', transition: 'background 0.15s', opacity: loadingSources ? 0.6 : 1 }}\n onClick={() => !loadingSources && handleTriggerPick(t)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => { if (e.key === 'Enter' && !loadingSources) handleTriggerPick(t); }}\n onMouseEnter={(e) => { if (!loadingSources) e.currentTarget.style.background = '#f5f5f5'; }}\n onMouseLeave={(e) => { e.currentTarget.style.background = ''; }}\n >\n <div style={{ color: t.triggerCategory === 'scheduler' ? '#1976d2' : '#f57c00', marginTop: 2, flexShrink: 0 }}>\n {t.triggerCategory === 'scheduler' ? <MdCalendarToday size={18} /> : <MdBolt size={18} />}\n </div>\n <div>\n <div style={{ fontSize: 14, fontWeight: 500, color: '#212121' }}>{t.label}</div>\n {t.description && <div style={{ fontSize: 12, color: '#757575', marginTop: 2 }}>{t.description}</div>}\n </div>\n </div>\n ))}\n {templates.length === 0 && (\n <p className=\"ff-text-muted ff-text-center\" style={{ fontSize: 13 }}>\n {messages.noTriggers}\n </p>\n )}\n </div>\n\n {loadingSources && (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, mt: 2, fontSize: 12, color: '#64748b' }}>\n <CircularProgress size={14} />\n <span>Loading sources for the selected trigger…</span>\n </Box>\n )}\n {sourcesError && (\n <p style={{ fontSize: 12, color: '#d32f2f', marginTop: 12 }}>{sourcesError}</p>\n )}\n </>\n )}\n\n {/* ── Stage 2 — source picker (only when sources exist) ──────────── */}\n {showingSources && (\n <>\n <div\n role=\"button\"\n tabIndex={0}\n onClick={handleBack}\n onKeyDown={(e) => { if (e.key === 'Enter') handleBack(); }}\n className=\"ff-d-flex ff-align-items-center ff-gap-1 ff-mb-3\"\n style={{ cursor: 'pointer', color: '#0066cc', fontSize: 13, fontWeight: 500, width: 'fit-content' }}\n >\n <MdArrowBack size={16} />\n <span>{messages.addTriggerTitle}</span>\n </div>\n\n <p className=\"ff-text-muted ff-mb-2\" style={{ fontSize: 13 }}>\n Pick one or more sources for <strong>{pickedTemplate.label}</strong>:\n </p>\n\n <ReactSelect\n isMulti\n options={sourceOptions}\n value={selectedSources}\n onChange={(v) => setSelectedSources((v as TriggerSourceOption[]) ?? [])}\n placeholder=\"Select sources…\"\n menuPosition=\"fixed\"\n menuPortalTarget={typeof document !== 'undefined' ? document.body : undefined}\n styles={buildSelectStyles(false, true)}\n />\n </>\n )}\n </Box>\n </BaseDrawer>\n );\n};\n\nexport default TriggerSelectorDrawer;\n","import React, { ReactNode, useMemo, useState, useEffect } from 'react';\nimport { Box } from '@mui/material';\nimport { MdAddCircleOutline, MdArrowBack, MdChevronRight, MdApps } from 'react-icons/md';\nimport BaseDrawer from './BaseDrawer';\nimport { FlowForgeMessages, NodeDescriptor } from './types';\n\ninterface NodePickerDrawerProps {\n open: boolean;\n availableDescriptors: NodeDescriptor[];\n messages: FlowForgeMessages;\n onSelect: (descriptor: NodeDescriptor) => void;\n onClose: () => void;\n}\n\ninterface AppGroup {\n key: string;\n label: string;\n icon?: ReactNode;\n description?: string;\n descriptors: NodeDescriptor[];\n}\n\nconst cardStyle: React.CSSProperties = {\n cursor: 'pointer',\n transition: 'background 0.15s',\n};\n\nconst cardClass = 'ff-p-3 ff-rounded ff-border ff-d-flex ff-align-items-center ff-gap-3';\n\n/**\n * Workato-style drill-down picker:\n * Stage 1: list of apps (descriptors with `app`) + ungrouped descriptors\n * Stage 2: actions of the selected app, plus a \"Back\" affordance\n *\n * Descriptors without an `app` field appear directly at stage 1 — backward\n * compatible with the old flat-list behaviour.\n */\nconst NodePickerDrawer = ({ open, availableDescriptors, messages, onSelect, onClose }: NodePickerDrawerProps) => {\n // Group descriptors by app.key; descriptors without `app` go in `ungrouped`.\n const { apps, ungrouped } = useMemo(() => {\n const appMap = new Map<string, AppGroup>();\n const flat: NodeDescriptor[] = [];\n for (const d of availableDescriptors) {\n if (d.app) {\n const existing = appMap.get(d.app.key);\n if (existing) {\n existing.descriptors.push(d);\n } else {\n appMap.set(d.app.key, {\n key: d.app.key,\n label: d.app.label,\n icon: d.app.icon,\n description: d.app.description,\n descriptors: [d],\n });\n }\n } else {\n flat.push(d);\n }\n }\n return { apps: [...appMap.values()], ungrouped: flat };\n }, [availableDescriptors]);\n\n const [activeAppKey, setActiveAppKey] = useState<string | null>(null);\n const activeApp = activeAppKey ? apps.find((a) => a.key === activeAppKey) ?? null : null;\n\n // Reset to stage 1 whenever the drawer closes/reopens or descriptors change.\n useEffect(() => {\n if (!open) setActiveAppKey(null);\n }, [open]);\n useEffect(() => { setActiveAppKey(null); }, [availableDescriptors]);\n\n const stage1 = !activeApp;\n\n return (\n <BaseDrawer\n isOpen={open}\n onClose={onClose}\n title={stage1 ? messages.addStepTitle : activeApp.label}\n icon={stage1 ? <MdAddCircleOutline /> : (activeApp.icon as React.ReactNode) ?? <MdApps />}\n width={500}\n >\n <Box sx={{ p: 2 }}>\n {/* Back affordance for stage 2 */}\n {!stage1 && (\n <div\n role=\"button\"\n tabIndex={0}\n onClick={() => setActiveAppKey(null)}\n onKeyDown={(e) => { if (e.key === 'Enter') setActiveAppKey(null); }}\n className=\"ff-d-flex ff-align-items-center ff-gap-1 ff-mb-3\"\n style={{ cursor: 'pointer', color: '#0066cc', fontSize: 13, fontWeight: 500, width: 'fit-content' }}\n >\n <MdArrowBack size={16} />\n <span>{messages.addStepTitle}</span>\n </div>\n )}\n\n <p className=\"ff-text-muted ff-mb-3\" style={{ fontSize: 13 }}>\n {stage1 ? messages.chooseAction : `Pick an action from ${activeApp.label}`}\n </p>\n\n <div className=\"ff-d-flex ff-flex-column ff-gap-2\">\n {stage1 ? (\n <>\n {/* App cards — drill into stage 2 */}\n {apps.map((a) => (\n <div\n key={`app-${a.key}`}\n className={cardClass}\n style={cardStyle}\n onClick={() => setActiveAppKey(a.key)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => { if (e.key === 'Enter') setActiveAppKey(a.key); }}\n onMouseEnter={(e) => { e.currentTarget.style.background = '#f5f5f5'; }}\n onMouseLeave={(e) => { e.currentTarget.style.background = ''; }}\n >\n {a.icon && <div style={{ flexShrink: 0 }}>{a.icon as ReactNode}</div>}\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontSize: 14, fontWeight: 500, color: '#212121' }}>{a.label}</div>\n <div style={{ fontSize: 12, color: '#757575', marginTop: 2 }}>\n {a.description ?? `${a.descriptors.length} action${a.descriptors.length === 1 ? '' : 's'}`}\n </div>\n </div>\n <MdChevronRight size={18} color=\"#9e9e9e\" />\n </div>\n ))}\n\n {/* Ungrouped descriptors — render inline at stage 1 */}\n {ungrouped.map((d) => (\n <div\n key={d.type}\n className={cardClass}\n style={cardStyle}\n onClick={() => onSelect(d)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => { if (e.key === 'Enter') onSelect(d); }}\n onMouseEnter={(e) => { e.currentTarget.style.background = '#f5f5f5'; }}\n onMouseLeave={(e) => { e.currentTarget.style.background = ''; }}\n >\n {d.icon && <div style={{ flexShrink: 0 }}>{d.icon as ReactNode}</div>}\n <span style={{ fontSize: 14, fontWeight: 500, color: '#212121' }}>{d.label}</span>\n </div>\n ))}\n\n {apps.length === 0 && ungrouped.length === 0 && (\n <p className=\"ff-text-muted ff-text-center\" style={{ fontSize: 13 }}>{messages.noActions}</p>\n )}\n </>\n ) : (\n /* Stage 2 — actions for the selected app */\n activeApp.descriptors.map((d) => (\n <div\n key={d.type}\n className={cardClass}\n style={cardStyle}\n onClick={() => onSelect(d)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => { if (e.key === 'Enter') onSelect(d); }}\n onMouseEnter={(e) => { e.currentTarget.style.background = '#f5f5f5'; }}\n onMouseLeave={(e) => { e.currentTarget.style.background = ''; }}\n >\n {d.icon && <div style={{ flexShrink: 0 }}>{d.icon as ReactNode}</div>}\n <span style={{ fontSize: 14, fontWeight: 500, color: '#212121' }}>{d.label}</span>\n </div>\n ))\n )}\n </div>\n </Box>\n </BaseDrawer>\n );\n};\n\nexport default NodePickerDrawer;\n","import React, { useEffect, useState } from 'react';\r\nimport { Box, Button } from '@mui/material';\r\nimport { FlowForm } from '../FlowForm/DynamicFormRenderer';\r\nimport { FieldDescriptor } from '../FlowForm/types';\r\nimport type { ConditionConfig } from '../FlowForm/types/formula';\r\nimport { FlowForgeMessages, NodeDescriptor } from './types';\r\nimport BaseDrawer from './BaseDrawer';\r\n\r\n/** Key under which a node's condition-builder data is stored in its nodeData. */\r\nexport const CONDITION_CONFIG_KEY = '_conditionConfig';\r\n\r\ninterface NodeConfigDrawerProps {\r\n open: boolean;\r\n nodeId: string | null;\r\n descriptor: NodeDescriptor | null;\r\n initialValues?: Record<string, unknown>;\r\n messages: FlowForgeMessages;\r\n onSave: (nodeId: string, values: Record<string, unknown>) => void;\r\n onClose: () => void;\r\n}\r\n\r\nconst NodeConfigDrawer = ({ open, nodeId, descriptor, initialValues, messages, onSave, onClose }: NodeConfigDrawerProps) => {\r\n const [schema, setSchema] = useState<FieldDescriptor[]>([]);\r\n const [loading, setLoading] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n // Condition-builder data lives outside form `values`; seed it from the saved node.\r\n const [conditionConfig, setConditionConfig] = useState<ConditionConfig>({});\r\n\r\n useEffect(() => {\r\n setConditionConfig((initialValues?.[CONDITION_CONFIG_KEY] as ConditionConfig) ?? {});\r\n }, [initialValues, nodeId]);\r\n\r\n useEffect(() => {\r\n let cancelled = false;\r\n setError(null);\r\n if (!descriptor || !nodeId) { setSchema([]); setLoading(false); return; }\r\n const fs = descriptor.formSchema;\r\n if (typeof fs === 'function') {\r\n setLoading(true);\r\n fs(nodeId)\r\n .then((s) => {\r\n if (cancelled) return;\r\n setSchema(s);\r\n setLoading(false);\r\n })\r\n .catch((err) => {\r\n if (cancelled) return;\r\n setSchema([]);\r\n setError(err instanceof Error ? err.message : 'Unable to load configuration.');\r\n setLoading(false);\r\n });\r\n } else {\r\n setSchema(fs);\r\n setLoading(false);\r\n }\r\n return () => { cancelled = true; };\r\n }, [descriptor, nodeId]);\r\n\r\n // Stable id so a Save button outside the form can submit it via the HTML5\r\n // `form` attribute. Each open instance gets its own id to avoid collisions\r\n // when multiple drawers are mounted.\r\n const formId = nodeId ? `node-config-form-${nodeId}` : 'node-config-form';\r\n\r\n const hasForm = !loading && !error && schema.length > 0;\r\n\r\n const footer = hasForm ? (\r\n <>\r\n <Button type=\"button\" variant=\"outlined\" size=\"small\" onClick={onClose}>{messages.cancel}</Button>\r\n <Button type=\"submit\" form={formId} variant=\"contained\" size=\"small\">{messages.save}</Button>\r\n </>\r\n ) : null;\r\n\r\n return (\r\n <BaseDrawer\r\n isOpen={open}\r\n onClose={onClose}\r\n title={descriptor?.label ?? messages.configureStep}\r\n icon={descriptor?.icon as React.ReactNode}\r\n width={500}\r\n footer={footer}\r\n >\r\n <Box sx={{ p: 2 }}>\r\n {loading && <p className=\"ff-text-muted\" style={{ fontSize: 13 }}>{messages.loadingConfiguration}</p>}\r\n\r\n {!loading && error && (\r\n <p style={{ fontSize: 13, color: '#d32f2f' }}>{error}</p>\r\n )}\r\n\r\n {!loading && !error && schema.length === 0 && (\r\n <p className=\"ff-text-muted\" style={{ fontSize: 13 }}>{messages.noConfigurationNeeded}</p>\r\n )}\r\n\r\n {hasForm && (\r\n <FlowForm\r\n schema={{ layout: 'flat', fields: schema }}\r\n initialValues={initialValues ?? {}}\r\n formId={formId}\r\n conditionConfig={conditionConfig}\r\n onConditionConfigChange={setConditionConfig}\r\n onSubmit={(values) => {\r\n if (!nodeId) return;\r\n const hasConditions = Object.keys(conditionConfig).length > 0;\r\n onSave(nodeId, { ...values, [CONDITION_CONFIG_KEY]: hasConditions ? conditionConfig : undefined });\r\n onClose();\r\n }}\r\n />\r\n )}\r\n </Box>\r\n </BaseDrawer>\r\n );\r\n};\r\n\r\nexport default NodeConfigDrawer;\r\n","import React, { useEffect, useState } from 'react';\nimport { MdAccountTree, MdErrorOutline } from 'react-icons/md';\nimport BaseDrawer from './BaseDrawer';\nimport { WorkflowState } from './types';\nimport { NodeTypeRegistry } from '../nodeRegistry';\nimport { TemplateRegistry } from '../templateRegistry';\n\ninterface SubWorkflowPreviewDrawerProps {\n isOpen: boolean;\n onClose: () => void;\n workflowId: string | null;\n workflowLabel?: string;\n /** Host-provided async loader — returns the WorkflowState for the given ID */\n onFetchWorkflow: (workflowId: string) => Promise<WorkflowState>;\n}\n\ntype LoadState = { status: 'idle' } | { status: 'loading' } | { status: 'loaded'; state: WorkflowState } | { status: 'error'; message: string };\n\nconst SubWorkflowPreviewDrawer: React.FC<SubWorkflowPreviewDrawerProps> = ({\n isOpen,\n onClose,\n workflowId,\n workflowLabel,\n onFetchWorkflow,\n}) => {\n const [loadState, setLoadState] = useState<LoadState>({ status: 'idle' });\n\n useEffect(() => {\n if (!isOpen || !workflowId) {\n setLoadState({ status: 'idle' });\n return;\n }\n setLoadState({ status: 'loading' });\n onFetchWorkflow(workflowId)\n .then((state) => setLoadState({ status: 'loaded', state }))\n .catch((err) => setLoadState({ status: 'error', message: err?.message ?? 'Failed to load workflow' }));\n }, [isOpen, workflowId, onFetchWorkflow]);\n\n return (\n <BaseDrawer\n isOpen={isOpen}\n onClose={onClose}\n title={workflowLabel ? `Preview: ${workflowLabel}` : 'Sub-Workflow Preview'}\n icon={<MdAccountTree size={18} color=\"#00695c\" />}\n width={700}\n >\n <div style={{ height: '100%', display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', padding: 24 }}>\n {loadState.status === 'idle' && (\n <span style={{ color: '#9e9e9e', fontSize: 14 }}>Select a workflow to preview</span>\n )}\n\n {loadState.status === 'loading' && (\n <div style={{ textAlign: 'center', color: '#9e9e9e' }}>\n <div style={{ width: 32, height: 32, borderRadius: '50%', border: '3px solid #e0e0e0', borderTopColor: '#00897b', animation: 'spin 0.8s linear infinite', margin: '0 auto 12px' }} />\n <span style={{ fontSize: 14 }}>Loading workflow…</span>\n <style>{`@keyframes spin { to { transform: rotate(360deg); } }`}</style>\n </div>\n )}\n\n {loadState.status === 'error' && (\n <div style={{ textAlign: 'center', color: '#c62828' }}>\n <MdErrorOutline size={32} style={{ marginBottom: 8 }} />\n <p style={{ margin: 0, fontSize: 14 }}>{loadState.message}</p>\n </div>\n )}\n\n {loadState.status === 'loaded' && (\n <div style={{ width: '100%', flex: 1 }}>\n {/* Lazy-import FlowForgeCanvas to avoid circular deps at module level */}\n <SubWorkflowCanvasRenderer state={loadState.state} />\n </div>\n )}\n </div>\n </BaseDrawer>\n );\n};\n\n/**\n * Renders a loaded WorkflowState as a read-only canvas.\n * Uses dynamic import to avoid circular dependency with WorkflowCanvas.tsx.\n */\nconst SubWorkflowCanvasRenderer: React.FC<{ state: WorkflowState }> = ({ state }) => {\n const [Canvas, setCanvas] = useState<React.ComponentType<{ nodeRegistry: NodeTypeRegistry; templateRegistry: TemplateRegistry; initialValue?: WorkflowState; readOnly?: boolean }> | null>(null);\n const [Registries, setRegistries] = useState<{ nodeTypeRegistry: NodeTypeRegistry; templateRegistry: TemplateRegistry } | null>(null);\n\n useEffect(() => {\n Promise.all([\n import('./WorkflowCanvas').then((m) => m.default),\n import('../nodeRegistry').then((m) => m.nodeTypeRegistry),\n import('../templateRegistry').then((m) => m.templateRegistry),\n ]).then(([CanvasComp, nReg, tReg]) => {\n setCanvas(() => CanvasComp);\n setRegistries({ nodeTypeRegistry: nReg, templateRegistry: tReg });\n });\n }, []);\n\n if (!Canvas || !Registries) {\n return <div style={{ color: '#9e9e9e', fontSize: 13, textAlign: 'center' }}>Loading canvas…</div>;\n }\n\n // Fixed height: drawer body has no intrinsic height; ReactFlow requires an explicit container size\n return (\n <div style={{ width: '100%', height: 480, border: '1px solid #e0e0e0', borderRadius: 8, overflow: 'hidden' }}>\n <Canvas\n nodeRegistry={Registries.nodeTypeRegistry}\n templateRegistry={Registries.templateRegistry}\n initialValue={state}\n readOnly\n />\n </div>\n );\n};\n\nexport default SubWorkflowPreviewDrawer;\n","import React, { useCallback, useMemo, useState } from 'react';\r\nimport dagre from '@dagrejs/dagre';\r\nimport ReactFlow, { Background, BackgroundVariant, Controls, Edge, EdgeTypes, MiniMap, Node, NodeTypes } from 'reactflow';\r\nimport LayoutUpdater from './LayoutUpdater';\r\nimport { FlowForgeHeader } from './FlowForgeHeader';\r\nimport 'reactflow/dist/style.css';\r\nimport './WorkflowCanvas.css';\r\nimport { NodeTypeRegistry } from '../nodeRegistry';\r\nimport { TemplateRegistry } from '../templateRegistry';\r\nimport { BranchMap, CanvasSlot, ExecutionRecord, FlowForgeMessages, NodeDescriptor, WorkflowState, WorkflowTemplate } from './types';\r\nimport { WorkflowCanvasContext } from './WorkflowCanvasContext';\r\nimport { builtInNodeTypes } from './nodes';\r\nimport type { BranchRailSpec, BranchRailEntry } from './nodes/BranchRailDecoration';\r\nimport EdgeWithPlusLabel from './edges/EdgeWithPlusLabel';\r\nimport { AddStepContext } from './edges/EdgeWithPlusLabel';\r\nimport PlusEdge from './edges/PlusEdge';\r\nimport PlainEdge from './edges/PlainEdge';\r\nimport LabelPlusEdge from './edges/LabelPlusEdge';\r\nimport GatewayBranchEdge from './edges/GatewayBranchEdge';\r\nimport TriggerSelectorDrawer from './TriggerSelectorDrawer';\r\nimport NodePickerDrawer from './NodePickerDrawer';\r\nimport NodeConfigDrawer from './NodeConfigDrawer';\r\nimport SubWorkflowPreviewDrawer from './SubWorkflowPreviewDrawer';\r\nimport { mergeMessages } from './messages';\r\n\r\nconst NODE_WIDTH = 350;\r\nconst EDGE_GAP = 70;\r\nconst CANVAS_START_Y = 60;\r\n\r\n// Fallback heights keyed by reactFlowType — used only on first render before DOM measurement\r\nconst FALLBACK_NODE_HEIGHT: Record<string, number> = {\r\n startNode: 40,\r\n endNode: 40,\r\n addTriggerNode: 56,\r\n triggerNode: 110,\r\n actionNode: 90,\r\n filterNode: 90,\r\n approvalNode: 90,\r\n delayNode: 80,\r\n notificationNode: 80,\r\n};\r\n\r\ntype DrawerMode = 'triggerSelect' | 'nodePicker' | 'nodeConfig' | null;\r\n\r\nconst defaultEdgeTypes: EdgeTypes = {\r\n plusEdge: PlusEdge,\r\n labelPlusEdge: LabelPlusEdge,\r\n plainEdge: PlainEdge,\r\n edgeWithPlusLabel: EdgeWithPlusLabel,\r\n gatewayBranchEdge: GatewayBranchEdge,\r\n};\r\n\r\n\r\nfunction buildInitialSlots(): CanvasSlot[] {\r\n return [\r\n { id: 'start', kind: 'start', reactFlowType: 'startNode' },\r\n { id: 'addTrigger', kind: 'addTrigger', reactFlowType: 'addTriggerNode' },\r\n { id: 'end', kind: 'end', reactFlowType: 'endNode' },\r\n ];\r\n}\r\n\r\nfunction applyDagreLayout(\r\n nodes: Node[],\r\n edges: Edge[],\r\n nodeSizes: Record<string, { width: number; height: number }>,\r\n layoutDirection: 'TB' | 'LR' = 'TB',\r\n): Node[] {\r\n const g = new dagre.graphlib.Graph();\r\n g.setGraph({ rankdir: layoutDirection, ranksep: 70, nodesep: 50 });\r\n g.setDefaultEdgeLabel(() => ({}));\r\n\r\n nodes.forEach((node) => {\r\n const size = nodeSizes[node.id] ?? { width: NODE_WIDTH, height: FALLBACK_NODE_HEIGHT[node.type ?? ''] ?? 80 };\r\n g.setNode(node.id, { width: size.width, height: size.height });\r\n });\r\n\r\n edges.forEach((edge) => g.setEdge(edge.source, edge.target));\r\n\r\n dagre.layout(g);\r\n\r\n return nodes.map((node) => {\r\n const pos = g.node(node.id);\r\n const w = nodeSizes[node.id]?.width ?? NODE_WIDTH;\r\n const h = nodeSizes[node.id]?.height ?? (FALLBACK_NODE_HEIGHT[node.type ?? ''] ?? 80);\r\n return { ...node, position: { x: pos.x - w / 2, y: pos.y - h / 2 } };\r\n });\r\n}\r\n\r\nconst isBranchingKind = (kind: string) => kind === 'filter' || kind === 'approval';\r\n\r\n// Vertical (Workato-style) branch layout: branches stack top-to-bottom under their\r\n// gateway. Each gateway gets a rail spec describing the Y positions of its branches'\r\n// bullets, which the gateway node renders as a vertical rail with labelled bullets.\r\nfunction applyVerticalBranchLayout(\r\n slots: CanvasSlot[],\r\n branches: BranchMap,\r\n nodes: Node[],\r\n nodeSizes: Record<string, { width: number; height: number }>,\r\n): { nodes: Node[]; railSpecs: Record<string, BranchRailSpec> } {\r\n const CENTER_X = 400;\r\n const INDENT = 180; // wide enough that rail + label sit between gateway card and step\r\n const STEP_GAP = EDGE_GAP;\r\n const BRANCH_GAP = 30;\r\n // Vertical gap between a branch's rail bullet/label and the top of its first step.\r\n // Must match VERTICAL_BULLET_OFFSET in GatewayBranchEdge so the L-routed edge\r\n // (horizontal at bullet Y, then down into step top) lines up with the rail bullet.\r\n const BULLET_TO_STEP_GAP = 30;\r\n\r\n const positions: Record<string, { x: number; y: number }> = {};\r\n const railSpecs: Record<string, BranchRailSpec> = {};\r\n\r\n // Slot lookup for branchLabels\r\n const slotById = new Map<string, CanvasSlot>();\r\n for (const s of slots) slotById.set(s.id, s);\r\n for (const branchMap of Object.values(branches)) {\r\n for (const chain of Object.values(branchMap)) {\r\n for (const s of chain) slotById.set(s.id, s);\r\n }\r\n }\r\n\r\n const placeNode = (id: string, centerX: number, y: number): number => {\r\n const size = nodeSizes[id] ?? { width: NODE_WIDTH, height: 80 };\r\n positions[id] = { x: centerX - size.width / 2, y };\r\n return y + size.height;\r\n };\r\n\r\n const placeChain = (chain: CanvasSlot[], centerX: number, startY: number): number => {\r\n let y = startY;\r\n for (const slot of chain) {\r\n const bottom = placeNode(slot.id, centerX, y);\r\n y = bottom + STEP_GAP;\r\n if (isBranchingKind(slot.kind) && branches[slot.id]) {\r\n y = placeNestedBranches(slot.id, centerX, y);\r\n }\r\n }\r\n return y;\r\n };\r\n\r\n const placeNestedBranches = (parentId: string, parentCenterX: number, startY: number): number => {\r\n const childCenterX = parentCenterX + INDENT;\r\n const branchMap = branches[parentId];\r\n const keys = Object.keys(branchMap);\r\n const parentSlot = slotById.get(parentId);\r\n const labels = parentSlot?.branchLabels ?? { pass: 'Pass', fail: 'Fail' };\r\n const parentPos = positions[parentId];\r\n const parentSize = nodeSizes[parentId] ?? { width: NODE_WIDTH, height: 80 };\r\n const parentBottomY = parentPos.y + parentSize.height;\r\n\r\n const railBranches: BranchRailEntry[] = [];\r\n let y = startY;\r\n keys.forEach((key, idx) => {\r\n const chain = branchMap[key];\r\n // Bullet sits above the first node (step or End); the node top is offset down\r\n // by BULLET_TO_STEP_GAP so the edge L-routes (90° elbow) through the gap.\r\n const bulletY = y;\r\n railBranches.push({\r\n y: bulletY - parentBottomY,\r\n label: labels[key] ?? key,\r\n isPass: idx === 0,\r\n });\r\n y = placeChain(chain, childCenterX, y + BULLET_TO_STEP_GAP);\r\n if (idx < keys.length - 1) y += BRANCH_GAP;\r\n });\r\n\r\n railSpecs[parentId] = {\r\n branches: railBranches,\r\n height: y - parentBottomY,\r\n indent: INDENT,\r\n };\r\n return y;\r\n };\r\n\r\n let cursorY = CANVAS_START_Y;\r\n for (const slot of slots) {\r\n const bottom = placeNode(slot.id, CENTER_X, cursorY);\r\n cursorY = bottom + STEP_GAP;\r\n if (isBranchingKind(slot.kind) && branches[slot.id]) {\r\n cursorY = placeNestedBranches(slot.id, CENTER_X, cursorY);\r\n }\r\n }\r\n\r\n return {\r\n nodes: nodes.map((n) => positions[n.id] ? { ...n, position: positions[n.id] } : n),\r\n railSpecs,\r\n };\r\n}\r\n\r\nfunction makeNode(slot: CanvasSlot): Node {\r\n return {\r\n id: slot.id,\r\n type: slot.reactFlowType,\r\n position: { x: 0, y: 0 },\r\n data: { ...slot.nodeData, ...slot.formData, descriptorType: slot.descriptorType },\r\n draggable: false,\r\n selectable: false,\r\n };\r\n}\r\n\r\nfunction makePlusEdge(\r\n prev: CanvasSlot,\r\n curr: CanvasSlot,\r\n edgeColor: string,\r\n onAddStepClick: ((sourceNodeId: string, ctx: AddStepContext) => void) | null,\r\n branchCtx?: { filterId: string; branch: string },\r\n): Edge {\r\n return {\r\n id: `e-${prev.id}-${curr.id}`,\r\n source: prev.id,\r\n target: curr.id,\r\n type: 'plusEdge',\r\n style: { stroke: edgeColor },\r\n data: {\r\n onAddStepClick,\r\n referenceNodeType: prev.reactFlowType,\r\n ...(branchCtx ?? {}),\r\n },\r\n };\r\n}\r\n\r\nfunction slotsToFlow(\r\n slots: CanvasSlot[],\r\n branches: BranchMap,\r\n onAddStepClick: ((sourceNodeId: string, context: AddStepContext) => void) | null,\r\n nodeMeasurements: Record<string, number>,\r\n theme: FlowForgeTheme = {},\r\n layoutDirection: 'TB' | 'LR' = 'TB',\r\n branchLayout: 'horizontal' | 'vertical' = 'horizontal',\r\n): { nodes: Node[]; edges: Edge[] } {\r\n const edgeColor = theme.edgeColor ?? '#b0bec5';\r\n const nodes: Node[] = [];\r\n const edges: Edge[] = [];\r\n\r\n\r\n // Recursively emit nodes + edges for a branching node's chains\r\n const emitFilterBranches = (filterId: string, branchLabels?: Record<string, string>) => {\r\n const b = branches[filterId];\r\n if (!b) return;\r\n const defaultLabels: Record<string, string> = { pass: 'Pass', fail: 'Fail' };\r\n const labels = branchLabels ?? defaultLabels;\r\n const branchKeys = Object.keys(b);\r\n\r\n const emitChain = (chain: CanvasSlot[], branchKey: string, branchLabel: string, branchIndex: number) => {\r\n if (chain.length === 0) return;\r\n chain.forEach((s) => nodes.push(makeNode(s)));\r\n edges.push({\r\n id: `e-${filterId}-${branchKey}-start`,\r\n source: filterId,\r\n target: chain[0].id,\r\n type: 'gatewayBranchEdge',\r\n style: { stroke: edgeColor },\r\n data: { branch: branchKey, filterId, label: branchLabel, isFirst: branchIndex === 0, onAddStepClick, verticalRouting: branchLayout === 'vertical' },\r\n });\r\n for (let j = 1; j < chain.length; j++) {\r\n if (isBranchingKind(chain[j - 1].kind)) continue;\r\n edges.push(makePlusEdge(chain[j - 1], chain[j], edgeColor, onAddStepClick, { filterId, branch: branchKey }));\r\n }\r\n for (const s of chain) {\r\n if (isBranchingKind(s.kind) && branches[s.id]) emitFilterBranches(s.id, s.branchLabels);\r\n }\r\n };\r\n\r\n branchKeys.forEach((key, idx) => {\r\n emitChain(b[key], key, labels[key] ?? key, idx);\r\n });\r\n };\r\n\r\n for (let i = 0; i < slots.length; i++) {\r\n const slot = slots[i];\r\n nodes.push(makeNode(slot));\r\n\r\n if (i > 0) {\r\n const prev = slots[i - 1];\r\n const isPlain = prev.kind === 'start' || prev.kind === 'addTrigger';\r\n\r\n // Branching nodes connect to branches, not to the next spine slot\r\n if (prev.kind === 'filter' || prev.kind === 'approval') continue;\r\n\r\n edges.push({\r\n id: `e-${prev.id}-${slot.id}`,\r\n source: prev.id,\r\n target: slot.id,\r\n type: isPlain ? 'plainEdge' : 'plusEdge',\r\n style: { stroke: edgeColor },\r\n data: isPlain ? {} : {\r\n onAddStepClick,\r\n referenceNodeType: prev.reactFlowType,\r\n },\r\n });\r\n }\r\n\r\n // If this is a branching node, emit its two branch chains\r\n if ((slot.kind === 'filter' || slot.kind === 'approval') && branches[slot.id]) {\r\n emitFilterBranches(slot.id, slot.branchLabels);\r\n }\r\n }\r\n\r\n const nodeSizes: Record<string, { width: number; height: number }> = {};\r\n nodes.forEach((node) => {\r\n nodeSizes[node.id] = {\r\n width: NODE_WIDTH,\r\n height: nodeMeasurements[node.id] ?? FALLBACK_NODE_HEIGHT[node.type ?? ''] ?? 80,\r\n };\r\n });\r\n\r\n const hasBranches = Object.keys(branches).length > 0;\r\n\r\n if (!hasBranches) {\r\n // Linear flow — manual positioning gives constant gaps regardless of node height\r\n if (layoutDirection === 'LR') {\r\n const centerY = 300;\r\n let x = CANVAS_START_Y;\r\n const layoutedNodes = nodes.map((node) => {\r\n const w = nodeSizes[node.id].width;\r\n const h = nodeSizes[node.id].height;\r\n const positioned = { ...node, position: { x, y: centerY - h / 2 } };\r\n x += w + EDGE_GAP;\r\n return positioned;\r\n });\r\n return { nodes: layoutedNodes, edges };\r\n }\r\n const centerX = 400;\r\n let y = CANVAS_START_Y;\r\n const layoutedNodes = nodes.map((node) => {\r\n const h = nodeSizes[node.id].height;\r\n const positioned = { ...node, position: { x: centerX - NODE_WIDTH / 2, y } };\r\n y += h + EDGE_GAP;\r\n return positioned;\r\n });\r\n return { nodes: layoutedNodes, edges };\r\n }\r\n\r\n // Branching flow\r\n if (branchLayout === 'vertical') {\r\n const { nodes: layoutedNodes, railSpecs } = applyVerticalBranchLayout(slots, branches, nodes, nodeSizes);\r\n // Inject rail spec into each gateway node's data so the node renders its own rail.\r\n const withRails = layoutedNodes.map((n) =>\r\n railSpecs[n.id] ? { ...n, data: { ...n.data, _branchRail: railSpecs[n.id] } } : n\r\n );\r\n return { nodes: withRails, edges };\r\n }\r\n const layoutedNodes = applyDagreLayout(nodes, edges, nodeSizes, layoutDirection);\r\n return { nodes: layoutedNodes, edges };\r\n}\r\n\r\nexport interface FlowForgeTheme {\r\n primaryColor?: string;\r\n edgeColor?: string;\r\n textColor?: string;\r\n mutedTextColor?: string;\r\n surfaceColor?: string;\r\n borderColor?: string;\r\n dangerColor?: string;\r\n borderRadius?: number;\r\n fontFamily?: string;\r\n /** ReactFlow canvas background style. 'none' hides the background entirely. Default: 'dots' */\r\n background?: 'dots' | 'lines' | 'cross' | 'none';\r\n /** Background dot/line color. Default: '#e0e0e0' */\r\n backgroundColor?: string;\r\n}\r\n\r\n/** All ReactFlow behaviour settings — serialisable as JSON config */\r\nexport interface FlowForgeCanvasOptions {\r\n /** Fit the whole graph into view on mount. Default: true */\r\n fitView?: boolean;\r\n fitViewPadding?: number;\r\n /** Show the zoom-in / zoom-out / fit controls. Default: true */\r\n showControls?: boolean;\r\n /** Show the mini-map overview. Default: false */\r\n showMiniMap?: boolean;\r\n /** Pan the canvas by scrolling (no Ctrl needed). Default: true */\r\n panOnScroll?: boolean;\r\n /** Zoom with the scroll wheel. Default: false */\r\n zoomOnScroll?: boolean;\r\n minZoom?: number;\r\n maxZoom?: number;\r\n /** Snap nodes to a grid while dragging. Default: false */\r\n snapToGrid?: boolean;\r\n snapGrid?: [number, number];\r\n /**\r\n * How branches under a conditional/gateway node are arranged.\r\n * 'horizontal' (default): branches spread side-by-side (Dagre).\r\n * 'vertical': branches stack top-to-bottom, indented right under their parent (Workato style).\r\n */\r\n branchLayout?: 'horizontal' | 'vertical';\r\n /**\r\n * How much of a node's data to show on its card.\r\n * 'full' (default): show configured value badges / the descriptor's custom body.\r\n * 'title-only': show just the node title — for teams that want minimal cards.\r\n */\r\n nodeBody?: 'full' | 'title-only';\r\n}\r\n\r\n/** @deprecated Use FlowForgeCanvasProps */\r\nexport type WorkflowCanvasProps = FlowForgeCanvasProps;\r\n\r\nexport interface FlowForgeCanvasProps {\r\n nodeRegistry: NodeTypeRegistry;\r\n templateRegistry: TemplateRegistry;\r\n /** Pre-populate the canvas from a previously saved WorkflowState. */\r\n initialValue?: WorkflowState;\r\n nodeTypes?: NodeTypes;\r\n edgeTypes?: EdgeTypes;\r\n onSave?: (workflow: WorkflowState) => void;\r\n /** Disables all editing — no add/delete/config, edges have no \"+\" button */\r\n readOnly?: boolean;\r\n /** Brand colors applied across edges, plus button, and node accents */\r\n theme?: FlowForgeTheme;\r\n /** Built-in UI labels for i18n/white-label copy. */\r\n messages?: Partial<FlowForgeMessages>;\r\n /** ReactFlow behaviour settings — all serialisable as plain JSON */\r\n canvasOptions?: FlowForgeCanvasOptions;\r\n /** Replace the trigger selector UI entirely */\r\n renderTriggerSelector?: (templates: WorkflowTemplate[], onSelect: (t: WorkflowTemplate) => void, onClose: () => void) => React.ReactNode;\r\n /**\r\n * Optional async loader for trigger sources. When provided, the default\r\n * trigger selector goes to a second stage after the user picks a trigger:\r\n * the loader is called with the trigger's key, and if it returns a non-empty\r\n * list, the user picks one or more sources before the canvas is seeded.\r\n * Picked sources are merged into the trigger node's `nodeData.sources` so\r\n * TriggerNode can render the \"via [chip] [chip]\" line.\r\n *\r\n * Return `[]` for triggers that have no sources — stage 2 is skipped.\r\n */\r\n loadTriggerSources?: (triggerKey: string) => Promise<Array<{ label: string; value: string }>>;\r\n /** Replace the node picker UI entirely */\r\n renderNodePicker?: (descriptors: NodeDescriptor[], onSelect: (d: NodeDescriptor) => void, onClose: () => void) => React.ReactNode;\r\n /** Replace the node config drawer entirely */\r\n renderNodeConfig?: (descriptor: NodeDescriptor | undefined, slot: CanvasSlot | null, onSave: (id: string, values: Record<string, unknown>) => void, onClose: () => void) => React.ReactNode;\r\n /** Intercept node click — return true to suppress default behaviour */\r\n onNodeClick?: (slot: CanvasSlot) => boolean | void;\r\n /** Global cap on total user task nodes */\r\n maxNodes?: number;\r\n /** Flow layout direction. 'TB' = top-to-bottom (default), 'LR' = left-to-right */\r\n layoutDirection?: 'TB' | 'LR';\r\n /**\r\n * When provided, renders an execution overlay on the canvas nodes:\r\n * green = success, red = failed, grey = skipped/pending.\r\n * Combine with readOnly=true to show a past run without editing.\r\n */\r\n executionRecord?: ExecutionRecord;\r\n /**\r\n * Called when a SubWorkflowNode's \"Preview\" button is clicked.\r\n * Return the WorkflowState for the given workflowId to render it in a drawer.\r\n */\r\n onFetchWorkflow?: (workflowId: string) => Promise<WorkflowState>;\r\n\r\n // ── Built-in header chrome ───────────────────────────────────────────────\r\n /** Hide the built-in top bar (Save / Cancel / name). Default false. */\r\n hideHeader?: boolean;\r\n /** Display name in the header. */\r\n workflowName?: string;\r\n /** Make the header name click-to-edit. */\r\n onWorkflowNameChange?: (name: string) => void;\r\n /** Cancel button shows only when this handler is provided. */\r\n onCancel?: () => void;\r\n /** Status pill text + color (e.g. 'Draft' / 'amber'). */\r\n workflowStatus?: string;\r\n workflowStatusColor?: 'gray' | 'green' | 'amber' | 'red' | string;\r\n /** Override the Save button label. */\r\n saveLabel?: string;\r\n}\r\n\r\nconst FlowForgeCanvas = ({\r\n nodeRegistry,\r\n templateRegistry,\r\n initialValue,\r\n nodeTypes: consumerNodeTypes,\r\n edgeTypes: consumerEdgeTypes,\r\n onSave,\r\n readOnly = false,\r\n theme = {},\r\n messages: messageOverrides,\r\n canvasOptions = {},\r\n renderTriggerSelector,\r\n loadTriggerSources,\r\n renderNodePicker,\r\n renderNodeConfig,\r\n onNodeClick: onNodeClickProp,\r\n maxNodes,\r\n layoutDirection = 'TB',\r\n executionRecord,\r\n onFetchWorkflow,\r\n hideHeader = false,\r\n workflowName,\r\n onWorkflowNameChange,\r\n onCancel,\r\n workflowStatus,\r\n workflowStatusColor,\r\n saveLabel,\r\n}: FlowForgeCanvasProps) => {\r\n const {\r\n fitView: optFitView = true,\r\n fitViewPadding = 0.3,\r\n showControls = true,\r\n showMiniMap = false,\r\n panOnScroll: optPanOnScroll = true,\r\n zoomOnScroll: optZoomOnScroll = false,\r\n minZoom = 0.25,\r\n maxZoom = 2,\r\n snapToGrid = false,\r\n snapGrid = [15, 15] as [number, number],\r\n branchLayout = 'horizontal',\r\n nodeBody = 'full',\r\n } = canvasOptions;\r\n const messages = useMemo(() => mergeMessages(messageOverrides), [messageOverrides]);\r\n const [slots, setSlots] = useState<CanvasSlot[]>(() => initialValue?.slots ?? buildInitialSlots());\r\n const [branches, setBranches] = useState<BranchMap>(() => initialValue?.branches ?? {});\r\n const [drawerMode, setDrawerMode] = useState<DrawerMode>(null);\r\n const [activeSlotId, setActiveSlotId] = useState<string | null>(null);\r\n const [insertAfterSourceId, setInsertAfterSourceId] = useState<string | null>(null);\r\n const [insertBranchCtx, setInsertBranchCtx] = useState<{ filterId: string; branch: string } | null>(null);\r\n const [subWorkflowPreview, setSubWorkflowPreview] = useState<{ workflowId: string; workflowLabel?: string } | null>(null);\r\n const [selectedTemplate, setSelectedTemplate] = useState<WorkflowTemplate | null>(() => {\r\n const triggerSlot = initialValue?.slots.find((slot) => slot.kind === 'triggerFixed');\r\n const triggerKey = triggerSlot?.id.startsWith('trigger-') ? triggerSlot.id.slice('trigger-'.length) : undefined;\r\n return triggerKey ? templateRegistry.lookup(triggerKey) ?? null : null;\r\n });\r\n const [nodeMeasurements, setNodeMeasurements] = useState<Record<string, number>>({});\r\n\r\n const handleHeightsReady = useCallback((heights: Record<string, number>) => {\r\n setNodeMeasurements(heights);\r\n }, []);\r\n\r\n const mergedNodeTypes = useMemo<NodeTypes>(() => ({ ...builtInNodeTypes, ...consumerNodeTypes }), [consumerNodeTypes]);\r\n const mergedEdgeTypes = useMemo<EdgeTypes>(() => ({ ...defaultEdgeTypes, ...consumerEdgeTypes }), [consumerEdgeTypes]);\r\n\r\n // count tasks across main spine + all branch chains\r\n const userTaskCount = useMemo(() => {\r\n const spineCount = slots.filter((s) => s.kind === 'userTask').length;\r\n const branchCount = Object.values(branches).flatMap((b) => Object.values(b).flat()).filter((s) => s.kind === 'userTask').length;\r\n return spineCount + branchCount;\r\n }, [slots, branches]);\r\n const effectiveMaxNodes = maxNodes ?? selectedTemplate?.maxTasks;\r\n const atMaxNodes = effectiveMaxNodes !== undefined && userTaskCount >= effectiveMaxNodes;\r\n\r\n // find a slot in spine or any branch\r\n const findSlot = useCallback((slotId: string): CanvasSlot | null => {\r\n const spineSlot = slots.find((s) => s.id === slotId);\r\n if (spineSlot) return spineSlot;\r\n for (const b of Object.values(branches)) {\r\n const found = Object.values(b).flat().find((s) => s.id === slotId);\r\n if (found) return found;\r\n }\r\n return null;\r\n }, [slots, branches]);\r\n\r\n const onEditNode = useCallback((slotId: string) => {\r\n if (readOnly) return;\r\n setActiveSlotId(slotId);\r\n setDrawerMode('nodeConfig');\r\n }, [readOnly]);\r\n\r\n const onDeleteNode = useCallback((slotId: string) => {\r\n if (readOnly) return;\r\n // check spine first\r\n if (slots.some((s) => s.id === slotId)) {\r\n const removed = slots.find((s) => s.id === slotId);\r\n // deleting the trigger resets the canvas to initial state\r\n if (removed?.kind === 'triggerFixed') {\r\n setSlots(buildInitialSlots());\r\n setBranches({});\r\n setSelectedTemplate(null);\r\n return;\r\n }\r\n setSlots((prev) => {\r\n const next = prev.filter((s) => s.id !== slotId);\r\n if (isBranchingKind(removed?.kind ?? '') && !next.some((s) => s.kind === 'end')) {\r\n return [...next, { id: 'end', kind: 'end', reactFlowType: 'endNode' }];\r\n }\r\n return next;\r\n });\r\n setBranches((prev) => {\r\n const next = { ...prev };\r\n const collectAll = (id: string) => {\r\n if (!next[id]) return;\r\n Object.values(next[id]).flat().filter((s) => isBranchingKind(s.kind)).forEach((s) => collectAll(s.id));\r\n delete next[id];\r\n };\r\n collectAll(slotId);\r\n return next;\r\n });\r\n return;\r\n }\r\n // else it's in a branch chain\r\n setBranches((prev) => {\r\n // collect all nested filter IDs under a chain recursively\r\n const collectNestedFilterIds = (chain: CanvasSlot[], map: BranchMap): string[] => {\r\n const ids: string[] = [];\r\n for (const s of chain) {\r\n if (isBranchingKind(s.kind) && map[s.id]) {\r\n ids.push(s.id);\r\n Object.values(map[s.id]).forEach((c) => ids.push(...collectNestedFilterIds(c, map)));\r\n }\r\n }\r\n return ids;\r\n };\r\n\r\n const next = { ...prev };\r\n for (const filterId of Object.keys(next)) {\r\n for (const branch of Object.keys(next[filterId])) {\r\n const chain = next[filterId][branch];\r\n const idx = chain.findIndex((s) => s.id === slotId);\r\n if (idx === -1 || chain[idx].kind === 'end') continue;\r\n\r\n const deleted = chain[idx];\r\n let newChain = chain.filter((s) => s.id !== slotId);\r\n\r\n // if deleted node was a filter, restore End to this chain and remove its sub-branches\r\n if (deleted.kind === 'filter') {\r\n const nestedIds = deleted.id in next ? collectNestedFilterIds([deleted], next) : [];\r\n nestedIds.forEach((id) => delete next[id]);\r\n delete next[deleted.id];\r\n // restore End if chain has none\r\n if (!newChain.some((s) => s.kind === 'end')) {\r\n newChain = [...newChain, { id: `end-${filterId}-${branch}`, kind: 'end', reactFlowType: 'endNode' }];\r\n }\r\n }\r\n\r\n next[filterId] = { ...next[filterId], [branch]: newChain };\r\n return next;\r\n }\r\n }\r\n return next;\r\n });\r\n }, [readOnly, slots]);\r\n\r\n const onClickAddTrigger = useCallback(() => {\r\n if (readOnly) return;\r\n setDrawerMode('triggerSelect');\r\n }, [readOnly]);\r\n\r\n const handleAddStepClick = useCallback((sourceNodeId: string, context: AddStepContext) => {\r\n if (readOnly || atMaxNodes) return;\r\n setInsertAfterSourceId(sourceNodeId);\r\n setInsertBranchCtx(context.filterId && context.branch ? { filterId: context.filterId, branch: context.branch } : null);\r\n setDrawerMode('nodePicker');\r\n }, [readOnly, atMaxNodes]);\r\n\r\n const handleTriggerSelect = useCallback((template: WorkflowTemplate, pickedSources?: Array<{ label: string; value: string }>) => {\r\n setSelectedTemplate(template);\r\n setDrawerMode(null);\r\n\r\n // If the template declares a skeletonState, use it verbatim — that lets\r\n // templates pre-seed fixed steps (e.g. \"User Created\" event) alongside the\r\n // trigger. If the user picked sources (stage 2 of the trigger drawer),\r\n // merge them into the trigger slot's nodeData so TriggerNode shows the\r\n // \"via [chip] [chip]\" line.\r\n if (template.skeletonState) {\r\n const hasPickedSources = Array.isArray(pickedSources) && pickedSources.length > 0;\r\n const skeletonSlots = (template.skeletonState.slots ?? []).map((s) => {\r\n if (s.kind !== 'triggerFixed') return s;\r\n // Always merge the template's label into the trigger slot's nodeData\r\n // (unless the skeleton already provided one). This guarantees the\r\n // TriggerNode body shows the human-curated title (e.g. \"PAM Access\r\n // Request\") instead of an all-caps fallback from the eventType code.\r\n return {\r\n ...s,\r\n nodeData: {\r\n label: template.label,\r\n ...(s.nodeData ?? {}),\r\n ...(hasPickedSources && { sources: pickedSources }),\r\n },\r\n };\r\n });\r\n setBranches(template.skeletonState.branches ?? {});\r\n setSlots(skeletonSlots);\r\n return;\r\n }\r\n\r\n setBranches({});\r\n const hasPickedSources = Array.isArray(pickedSources) && pickedSources.length > 0;\r\n setSlots([\r\n { id: 'start', kind: 'start', reactFlowType: 'startNode' },\r\n {\r\n id: `trigger-${template.triggerKey}`,\r\n kind: 'triggerFixed',\r\n reactFlowType: 'triggerNode',\r\n nodeData: {\r\n label: template.label,\r\n source: template.source,\r\n eventType: template.triggerKey,\r\n type: template.triggerCategory === 'scheduler' ? 'scheduler' : 'event',\r\n ...(hasPickedSources && { sources: pickedSources }),\r\n },\r\n deletable: false,\r\n },\r\n { id: 'end', kind: 'end', reactFlowType: 'endNode' },\r\n ]);\r\n }, []);\r\n\r\n /**\r\n * Compute the InsertContext for the current pending insertion point —\r\n * upstream/downstream slots, branch info, active template. Used by\r\n * descriptors' position-aware `canInsert` / `insertAfter` / `insertBefore`.\r\n */\r\n const buildInsertContext = useCallback((): import('./types').InsertContext => {\r\n const ctx: import('./types').InsertContext = {\r\n insertAfterSlot: null,\r\n upstreamSlots: [],\r\n downstreamSlots: [],\r\n branch: insertBranchCtx,\r\n template: selectedTemplate,\r\n };\r\n if (!insertAfterSourceId) return ctx;\r\n\r\n if (insertBranchCtx) {\r\n // Inside a branch — upstream = spine up to (and including) the filter +\r\n // branch slots up to the click site; downstream = remaining branch slots.\r\n const { filterId, branch } = insertBranchCtx;\r\n const spineIdx = slots.findIndex((s) => s.id === filterId);\r\n const spineUp = spineIdx >= 0 ? slots.slice(0, spineIdx + 1) : [];\r\n const branchChain = branches[filterId]?.[branch] ?? [];\r\n const branchIdx = branchChain.findIndex((s) => s.id === insertAfterSourceId);\r\n const branchUp = branchIdx >= 0 ? branchChain.slice(0, branchIdx + 1) : [];\r\n ctx.upstreamSlots = [...spineUp, ...branchUp];\r\n ctx.downstreamSlots = branchIdx >= 0 ? branchChain.slice(branchIdx + 1) : branchChain;\r\n ctx.insertAfterSlot = branchUp[branchUp.length - 1] ?? null;\r\n return ctx;\r\n }\r\n\r\n // Spine\r\n const idx = slots.findIndex((s) => s.id === insertAfterSourceId);\r\n ctx.upstreamSlots = idx >= 0 ? slots.slice(0, idx + 1) : [];\r\n ctx.downstreamSlots = idx >= 0 ? slots.slice(idx + 1) : [];\r\n ctx.insertAfterSlot = ctx.upstreamSlots[ctx.upstreamSlots.length - 1] ?? null;\r\n return ctx;\r\n }, [slots, branches, insertAfterSourceId, insertBranchCtx, selectedTemplate]);\r\n\r\n /** Token match against descriptorType / id / kind — used by insertAfter / insertBefore. */\r\n const slotMatchesToken = (slot: CanvasSlot, token: string): boolean =>\r\n slot.descriptorType === token || slot.id === token || slot.kind === token;\r\n\r\n const getAvailableDescriptors = useCallback((): NodeDescriptor[] => {\r\n const all = nodeRegistry.list();\r\n const allowed = selectedTemplate?.availableTasks\r\n ? all.filter((d) => selectedTemplate.availableTasks!.includes(d.type))\r\n : all;\r\n const ctx = buildInsertContext();\r\n return allowed.filter((descriptor) => {\r\n // maxPerWorkflow filter (existing)\r\n if (descriptor.maxPerWorkflow !== undefined) {\r\n const currentCount = slots.filter((s) => s.descriptorType === descriptor.type).length\r\n + Object.values(branches)\r\n .flatMap((branchMap) => Object.values(branchMap).flat())\r\n .filter((s) => s.descriptorType === descriptor.type)\r\n .length;\r\n if (currentCount >= descriptor.maxPerWorkflow) return false;\r\n }\r\n\r\n // Position-aware filters\r\n if (descriptor.canInsert) {\r\n // Full custom rule — overrides insertAfter / insertBefore.\r\n return descriptor.canInsert(ctx);\r\n }\r\n if (descriptor.insertAfter && descriptor.insertAfter.length > 0) {\r\n const ok = ctx.upstreamSlots.some((s) =>\r\n descriptor.insertAfter!.some((t) => slotMatchesToken(s, t)),\r\n );\r\n if (!ok) return false;\r\n }\r\n if (descriptor.insertBefore && descriptor.insertBefore.length > 0) {\r\n const ok = ctx.downstreamSlots.some((s) =>\r\n descriptor.insertBefore!.some((t) => slotMatchesToken(s, t)),\r\n );\r\n if (!ok) return false;\r\n }\r\n return true;\r\n });\r\n }, [nodeRegistry, selectedTemplate, slots, branches, buildInsertContext]);\r\n\r\n const handleNodeTypeSelect = useCallback((descriptor: NodeDescriptor) => {\r\n if (!insertAfterSourceId) return;\r\n const newTaskId = `${descriptor.type}-${Date.now()}`;\r\n const isBranching = descriptor.reactFlowType === 'filterNode' || descriptor.reactFlowType === 'approvalNode' || descriptor.reactFlowType === 'conditionBranchNode';\r\n const branchLabels: Record<string, string> = descriptor.branchLabels ?? { pass: 'Pass', fail: 'Fail' };\r\n\r\n const taskSlot: CanvasSlot = {\r\n id: newTaskId,\r\n kind: isBranching ? (descriptor.reactFlowType === 'approvalNode' ? 'approval' : 'filter') : 'userTask',\r\n reactFlowType: descriptor.reactFlowType,\r\n descriptorType: descriptor.type,\r\n formData: {},\r\n nodeData: { title: descriptor.label },\r\n deletable: true,\r\n branchLabels,\r\n };\r\n\r\n if (insertBranchCtx) {\r\n // inserting into a branch chain\r\n const { filterId, branch } = insertBranchCtx;\r\n setBranches((prev) => {\r\n const chain = [...prev[filterId][branch]];\r\n if (isBranching) {\r\n // filter takes over termination — remove End from parent chain, init new filter's branches\r\n const chainWithoutEnd = chain.filter((s) => s.kind !== 'end');\r\n const insertIdx = chainWithoutEnd.findIndex((s) => s.id === insertAfterSourceId);\r\n const at = insertIdx === -1 ? chainWithoutEnd.length : insertIdx + 1;\r\n chainWithoutEnd.splice(at, 0, taskSlot);\r\n return {\r\n ...prev,\r\n [filterId]: { ...prev[filterId], [branch]: chainWithoutEnd },\r\n [newTaskId]: Object.fromEntries(\r\n Object.keys(branchLabels).map((k) => [k, [{ id: `end-${newTaskId}-${k}`, kind: 'end', reactFlowType: 'endNode' }]])\r\n ),\r\n };\r\n }\r\n // regular node — insert before End\r\n const sourceIdx = chain.findIndex((s) => s.id === insertAfterSourceId);\r\n const endIdx = chain.findIndex((s) => s.kind === 'end');\r\n const at = sourceIdx === -1\r\n ? (endIdx === -1 ? chain.length : endIdx)\r\n : sourceIdx + 1;\r\n chain.splice(at, 0, taskSlot);\r\n return { ...prev, [filterId]: { ...prev[filterId], [branch]: chain } };\r\n });\r\n } else {\r\n // inserting into main spine\r\n if (isBranching) {\r\n // filter takes over from here — remove end from spine, add branch ends\r\n setSlots((prev) => {\r\n const idx = prev.findIndex((s) => s.id === insertAfterSourceId);\r\n const spineWithoutEnd = prev.filter((s) => s.kind !== 'end');\r\n return [...spineWithoutEnd.slice(0, idx + 1), taskSlot];\r\n });\r\n setBranches((prev) => ({\r\n ...prev,\r\n [newTaskId]: Object.fromEntries(\r\n Object.keys(branchLabels).map((k) => [k, [{ id: `end-${newTaskId}-${k}`, kind: 'end', reactFlowType: 'endNode' }]])\r\n ),\r\n }));\r\n } else {\r\n setSlots((prev) => {\r\n const idx = prev.findIndex((s) => s.id === insertAfterSourceId);\r\n if (idx === -1) return prev;\r\n return [...prev.slice(0, idx + 1), taskSlot, ...prev.slice(idx + 1)];\r\n });\r\n }\r\n }\r\n\r\n setInsertAfterSourceId(null);\r\n setInsertBranchCtx(null);\r\n setActiveSlotId(newTaskId);\r\n setDrawerMode('nodeConfig');\r\n }, [insertAfterSourceId, insertBranchCtx]);\r\n\r\n const handleNodeSave = useCallback((nodeId: string, values: Record<string, unknown>) => {\r\n /**\r\n * Format a branch label with the IF / ELSE IF / ELSE prefix based on the\r\n * config's `kind` field. Backward-compatible: if `kind` is missing, the\r\n * label is rendered unchanged (legacy \"Branch N\" / \"Default\" style).\r\n */\r\n const formatBranchLabel = (cfg: { kind?: string; key: string; label?: string }): string => {\r\n const base = cfg.label || cfg.key;\r\n switch (cfg.kind) {\r\n case 'if': return `IF · ${base}`;\r\n case 'elseif': return `ELSE IF · ${base}`;\r\n case 'else': return base.toUpperCase() === 'ELSE' ? base : `ELSE · ${base}`;\r\n default: return base;\r\n }\r\n };\r\n\r\n // For conditionBranch nodes: sync the BranchMap keys to match formData.branchConfigs\r\n const syncConditionBranchKeys = (prevBranches: BranchMap): BranchMap => {\r\n const slot = findSlot(nodeId);\r\n if (slot?.descriptorType !== 'conditionBranch') return prevBranches;\r\n const configs = (values.branchConfigs as Array<{ kind?: string; key: string; label?: string }> | undefined) ?? [];\r\n const newKeys = configs.map((c) => c.key).filter(Boolean);\r\n if (newKeys.length === 0) return prevBranches;\r\n const existing = prevBranches[nodeId] ?? {};\r\n const synced: BranchMap[string] = {};\r\n newKeys.forEach((k) => {\r\n synced[k] = existing[k] ?? [{ id: `end-${nodeId}-${k}`, kind: 'end', reactFlowType: 'endNode' }];\r\n });\r\n return { ...prevBranches, [nodeId]: synced };\r\n };\r\n\r\n const patchSlotBranchLabels = (slot: CanvasSlot, values: Record<string, unknown>): CanvasSlot => {\r\n if (slot.descriptorType !== 'conditionBranch') return { ...slot, formData: values };\r\n const configs = (values.branchConfigs as Array<{ kind?: string; key: string; label?: string }> | undefined) ?? [];\r\n const labelMap: Record<string, string> = {};\r\n configs.forEach((c) => { if (c.key) labelMap[c.key] = formatBranchLabel(c); });\r\n return { ...slot, formData: values, branchLabels: labelMap };\r\n };\r\n\r\n // try spine first\r\n if (slots.some((s) => s.id === nodeId)) {\r\n setBranches((prevBranches) => {\r\n const synced = syncConditionBranchKeys(prevBranches);\r\n setSlots((prev) => {\r\n const next = prev.map((s) => s.id === nodeId ? patchSlotBranchLabels(s, values) : s);\r\n onSave?.({ slots: next, branches: synced });\r\n return next;\r\n });\r\n return synced;\r\n });\r\n return;\r\n }\r\n // else update in branch\r\n setBranches((prev) => {\r\n const syncedOuter = syncConditionBranchKeys(prev);\r\n const next = { ...syncedOuter };\r\n for (const filterId of Object.keys(next)) {\r\n const updateChain = (chain: CanvasSlot[]) => chain.map((s) => s.id === nodeId ? patchSlotBranchLabels(s, values) : s);\r\n for (const branchKey of Object.keys(next[filterId])) {\r\n if (!next[filterId][branchKey].some((s) => s.id === nodeId)) continue;\r\n next[filterId] = { ...next[filterId], [branchKey]: updateChain(next[filterId][branchKey]) };\r\n onSave?.({ slots, branches: next });\r\n return next;\r\n }\r\n }\r\n return next;\r\n });\r\n }, [slots, branches, findSlot, onSave]);\r\n\r\n const activeSlot = useMemo(() => findSlot(activeSlotId ?? ''), [findSlot, activeSlotId]);\r\n const activeDescriptor = useMemo(() => {\r\n if (!activeSlot?.descriptorType) return null;\r\n return nodeRegistry.forType(activeSlot.descriptorType) ?? null;\r\n }, [activeSlot, nodeRegistry]);\r\n\r\n const { nodes: rawNodes, edges } = useMemo(\r\n () => slotsToFlow(slots, branches, readOnly ? null : handleAddStepClick, nodeMeasurements, theme, layoutDirection, branchLayout),\r\n [slots, branches, readOnly, handleAddStepClick, nodeMeasurements, theme, layoutDirection, branchLayout],\r\n );\r\n\r\n const nodes = useMemo(() => {\r\n const stepByNodeId = executionRecord\r\n ? new Map(executionRecord.steps.map((s) => [s.nodeId, s]))\r\n : null;\r\n\r\n return rawNodes.map((n) => {\r\n let extra: Record<string, unknown> = {};\r\n\r\n if (stepByNodeId) {\r\n const step = stepByNodeId.get(n.id);\r\n if (step) extra = { _executionStatus: step.status, _executionError: step.error };\r\n }\r\n\r\n // Inject preview callback for sub-workflow nodes\r\n if (n.type === 'subWorkflowNode' && onFetchWorkflow) {\r\n extra.onPreview = (workflowId: string) => {\r\n const slot = findSlot(n.id);\r\n setSubWorkflowPreview({ workflowId, workflowLabel: (slot?.formData?.workflowLabel as string) ?? undefined });\r\n };\r\n }\r\n\r\n return Object.keys(extra).length > 0 ? { ...n, data: { ...n.data, ...extra } } : n;\r\n });\r\n }, [rawNodes, executionRecord, onFetchWorkflow, findSlot]);\r\n\r\n const handlers = useMemo(() => ({ onEditNode, onDeleteNode, onAddStep: () => {}, onClickAddTrigger, messages, nodeRegistry, nodeBody }), [onEditNode, onDeleteNode, onClickAddTrigger, messages, nodeRegistry, nodeBody]);\r\n\r\n // Header Save click → fire onSave with the current canvas state. Built-in\r\n // so consumers don't write Save chrome per integration. Opt out via\r\n // `hideHeader` if you want to render your own.\r\n const handleHeaderSave = useCallback(async () => {\r\n if (onSave) await onSave({ slots, branches });\r\n }, [onSave, slots, branches]);\r\n\r\n return (\r\n <WorkflowCanvasContext.Provider value={handlers}>\r\n <div\r\n className=\"flowforge-canvas\"\r\n style={{\r\n width: '100%', height: '100%', position: 'relative',\r\n display: 'flex', flexDirection: 'column',\r\n // CSS variable consumed by edge SCSS for primary/hover color\r\n ['--ff-primary' as string]: theme.primaryColor ?? '#1dbf60',\r\n ['--ff-edge-color' as string]: theme.edgeColor ?? '#b0bec5',\r\n ['--ff-text' as string]: theme.textColor ?? '#212121',\r\n ['--ff-muted' as string]: theme.mutedTextColor ?? '#9ca3af',\r\n ['--ff-surface' as string]: theme.surfaceColor ?? '#fff',\r\n ['--ff-border' as string]: theme.borderColor ?? '#dee2e6',\r\n ['--ff-danger' as string]: theme.dangerColor ?? '#d32f2f',\r\n ['--ff-radius' as string]: `${theme.borderRadius ?? 6}px`,\r\n ['--ff-font-family' as string]: theme.fontFamily,\r\n }}\r\n >\r\n {!hideHeader && (onSave || onCancel || workflowName) && (\r\n <FlowForgeHeader\r\n workflowName={workflowName}\r\n onWorkflowNameChange={onWorkflowNameChange}\r\n status={workflowStatus}\r\n statusColor={workflowStatusColor}\r\n onSave={onSave ? handleHeaderSave : undefined}\r\n onCancel={onCancel}\r\n saveLabel={saveLabel}\r\n />\r\n )}\r\n <div style={{ flex: 1, minHeight: 0, position: 'relative' }}>\r\n <ReactFlow\r\n nodes={nodes}\r\n edges={edges}\r\n nodeTypes={mergedNodeTypes}\r\n edgeTypes={mergedEdgeTypes}\r\n fitView={optFitView}\r\n fitViewOptions={{ padding: fitViewPadding }}\r\n nodesDraggable={false}\r\n nodesConnectable={false}\r\n panOnScroll={optPanOnScroll}\r\n zoomOnScroll={optZoomOnScroll}\r\n minZoom={minZoom}\r\n maxZoom={maxZoom}\r\n snapToGrid={snapToGrid}\r\n snapGrid={snapGrid}\r\n proOptions={{ hideAttribution: true }}\r\n onNodeClick={(_event, node) => {\r\n const slot = findSlot(node.id);\r\n if (!slot) return;\r\n if (onNodeClickProp?.(slot)) return;\r\n if (slot.kind === 'addTrigger' || slot.kind === 'triggerFixed') onClickAddTrigger();\r\n else if (slot.kind === 'userTask' || slot.kind === 'filter' || slot.kind === 'approval') onEditNode(node.id);\r\n }}\r\n >\r\n {theme.background !== 'none' && (\r\n <Background\r\n variant={theme.background as unknown as BackgroundVariant | undefined}\r\n color={theme.backgroundColor ?? '#e0e0e0'}\r\n gap={20}\r\n />\r\n )}\r\n {showControls && <Controls showInteractive={false} />}\r\n {showMiniMap && <MiniMap zoomable pannable />}\r\n <LayoutUpdater onHeightsReady={handleHeightsReady} nodeCount={nodes.length} />\r\n </ReactFlow>\r\n\r\n {renderTriggerSelector\r\n ? drawerMode === 'triggerSelect' && renderTriggerSelector(templateRegistry.list(), handleTriggerSelect, () => setDrawerMode(null))\r\n : <TriggerSelectorDrawer open={drawerMode === 'triggerSelect'} templates={templateRegistry.list()} messages={messages} onSelect={handleTriggerSelect} onClose={() => setDrawerMode(null)} loadTriggerSources={loadTriggerSources} />\r\n }\r\n\r\n {renderNodePicker\r\n ? drawerMode === 'nodePicker' && renderNodePicker(getAvailableDescriptors(), handleNodeTypeSelect, () => { setDrawerMode(null); setInsertAfterSourceId(null); })\r\n : <NodePickerDrawer open={drawerMode === 'nodePicker'} availableDescriptors={getAvailableDescriptors()} messages={messages} onSelect={handleNodeTypeSelect} onClose={() => { setDrawerMode(null); setInsertAfterSourceId(null); }} />\r\n }\r\n\r\n {renderNodeConfig\r\n ? drawerMode === 'nodeConfig' && renderNodeConfig(activeDescriptor ?? undefined, activeSlot, handleNodeSave, () => setDrawerMode(null))\r\n : <NodeConfigDrawer open={drawerMode === 'nodeConfig'} nodeId={activeSlotId} descriptor={activeDescriptor} initialValues={activeSlot?.formData} messages={messages} onSave={handleNodeSave} onClose={() => setDrawerMode(null)} />\r\n }\r\n {onFetchWorkflow && subWorkflowPreview && (\r\n <SubWorkflowPreviewDrawer\r\n isOpen={!!subWorkflowPreview}\r\n onClose={() => setSubWorkflowPreview(null)}\r\n workflowId={subWorkflowPreview.workflowId}\r\n workflowLabel={subWorkflowPreview.workflowLabel}\r\n onFetchWorkflow={onFetchWorkflow}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </WorkflowCanvasContext.Provider>\r\n );\r\n};\r\n\r\nexport { FlowForgeCanvas as WorkflowCanvas };\r\nexport default FlowForgeCanvas;\r\n","import React, { useState, useMemo } from 'react';\nimport { MdSearch, MdAdd, MdCategory } from 'react-icons/md';\nimport { WorkflowTemplate } from './types';\nimport { TRIGGER_CATEGORY_STYLE } from './canvasTokens';\n\ninterface WorkflowTemplateLibraryProps {\n templates: WorkflowTemplate[];\n onSelectTemplate: (template: WorkflowTemplate) => void;\n onStartFromScratch?: () => void;\n}\n\nconst CATEGORY_ALL = 'All';\n\nfunction TemplateCard({ template, onSelect }: { template: WorkflowTemplate; onSelect: () => void }) {\n const badge = template.triggerCategory ? TRIGGER_CATEGORY_STYLE[template.triggerCategory] : null;\n const nodeCount = template.skeletonState?.slots.filter((s) => s.kind === 'userTask').length ?? 0;\n\n return (\n <div\n role=\"button\"\n tabIndex={0}\n onClick={onSelect}\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') onSelect(); }}\n style={{\n border: '1.5px solid #e0e0e0',\n borderRadius: 10,\n padding: '16px',\n background: '#fff',\n cursor: 'pointer',\n transition: 'border-color 0.15s, box-shadow 0.15s',\n display: 'flex',\n flexDirection: 'column',\n gap: 8,\n outline: 'none',\n }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLDivElement).style.borderColor = '#1976d2';\n (e.currentTarget as HTMLDivElement).style.boxShadow = '0 2px 8px rgba(25,118,210,0.12)';\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLDivElement).style.borderColor = '#e0e0e0';\n (e.currentTarget as HTMLDivElement).style.boxShadow = 'none';\n }}\n >\n {/* Header */}\n <div style={{ display: 'flex', alignItems: 'flex-start', gap: 10 }}>\n {template.icon && (\n <div style={{ flexShrink: 0, width: 36, height: 36, borderRadius: 8, background: '#f5f5f5', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\n {template.icon as React.ReactNode}\n </div>\n )}\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontWeight: 600, fontSize: 14, color: '#212121', marginBottom: 2 }}>{template.label}</div>\n {template.description && (\n <div style={{ fontSize: 12, color: '#757575', lineHeight: 1.4, display: '-webkit-box', WebkitLineClamp: 2, WebkitBoxOrient: 'vertical', overflow: 'hidden' }}>\n {template.description}\n </div>\n )}\n </div>\n </div>\n\n {/* Tags + meta row */}\n <div style={{ display: 'flex', alignItems: 'center', flexWrap: 'wrap', gap: 4 }}>\n {badge && (\n <span style={{ fontSize: 10, fontWeight: 600, padding: '2px 7px', borderRadius: 10, background: badge.bg, color: badge.color }}>\n {badge.label}\n </span>\n )}\n {template.tags?.map((tag) => (\n <span key={tag} style={{ fontSize: 10, padding: '2px 7px', borderRadius: 10, background: '#f5f5f5', color: '#616161' }}>\n {tag}\n </span>\n ))}\n {nodeCount > 0 && (\n <span style={{ fontSize: 10, color: '#9e9e9e', marginLeft: 'auto' }}>\n {nodeCount} step{nodeCount !== 1 ? 's' : ''}\n </span>\n )}\n </div>\n\n {template.author && (\n <div style={{ fontSize: 11, color: '#bdbdbd' }}>by {template.author}</div>\n )}\n </div>\n );\n}\n\nconst WorkflowTemplateLibrary: React.FC<WorkflowTemplateLibraryProps> = ({\n templates,\n onSelectTemplate,\n onStartFromScratch,\n}) => {\n const [search, setSearch] = useState('');\n const [activeCategory, setActiveCategory] = useState<string>(CATEGORY_ALL);\n\n const categories = useMemo(() => {\n const cats = new Set<string>();\n templates.forEach((t) => { if (t.category) cats.add(t.category); });\n return [CATEGORY_ALL, ...Array.from(cats)];\n }, [templates]);\n\n const filtered = useMemo(() => {\n let list = templates;\n if (activeCategory !== CATEGORY_ALL) {\n list = list.filter((t) => t.category === activeCategory);\n }\n if (search.trim()) {\n const q = search.toLowerCase();\n list = list.filter(\n (t) =>\n t.label.toLowerCase().includes(q) ||\n t.description?.toLowerCase().includes(q) ||\n t.tags?.some((tag) => tag.toLowerCase().includes(q)),\n );\n }\n return [...list].sort((a, b) => (b.popularity ?? 0) - (a.popularity ?? 0));\n }, [templates, activeCategory, search]);\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', height: '100%', fontFamily: 'inherit' }}>\n {/* Header */}\n <div style={{ padding: '24px 24px 0', borderBottom: '1px solid #f0f0f0', paddingBottom: 16 }}>\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: 16 }}>\n <div>\n <h2 style={{ margin: 0, fontSize: 20, fontWeight: 700, color: '#212121' }}>Workflow Templates</h2>\n <p style={{ margin: '4px 0 0', fontSize: 13, color: '#757575' }}>\n Choose a pre-built template or start from scratch\n </p>\n </div>\n {onStartFromScratch && (\n <button\n onClick={onStartFromScratch}\n style={{ display: 'flex', alignItems: 'center', gap: 6, padding: '8px 16px', border: '1.5px solid #1976d2', borderRadius: 6, background: '#fff', color: '#1976d2', fontSize: 13, fontWeight: 600, cursor: 'pointer' }}\n >\n <MdAdd size={16} />\n Start from Scratch\n </button>\n )}\n </div>\n\n {/* Search */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, background: '#f5f5f5', borderRadius: 8, padding: '8px 12px', marginBottom: 12 }}>\n <MdSearch size={18} color=\"#9e9e9e\" />\n <input\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder=\"Search templates...\"\n style={{ border: 'none', background: 'transparent', outline: 'none', fontSize: 14, color: '#212121', flex: 1 }}\n />\n </div>\n\n {/* Category tabs */}\n {categories.length > 1 && (\n <div style={{ display: 'flex', gap: 4, flexWrap: 'wrap' }}>\n {categories.map((cat) => (\n <button\n key={cat}\n onClick={() => setActiveCategory(cat)}\n style={{\n padding: '4px 12px',\n borderRadius: 20,\n border: '1.5px solid',\n borderColor: activeCategory === cat ? '#1976d2' : '#e0e0e0',\n background: activeCategory === cat ? '#e3f2fd' : '#fff',\n color: activeCategory === cat ? '#1565c0' : '#616161',\n fontSize: 12,\n fontWeight: activeCategory === cat ? 600 : 400,\n cursor: 'pointer',\n }}\n >\n {cat}\n </button>\n ))}\n </div>\n )}\n </div>\n\n {/* Grid */}\n <div style={{ flex: 1, overflowY: 'auto', padding: 24 }}>\n {filtered.length === 0 ? (\n <div style={{ textAlign: 'center', padding: '40px 0', color: '#9e9e9e' }}>\n <MdCategory size={36} style={{ marginBottom: 8 }} />\n <p style={{ margin: 0, fontSize: 14 }}>No templates found</p>\n </div>\n ) : (\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fill, minmax(280px, 1fr))', gap: 16 }}>\n {filtered.map((t) => (\n <TemplateCard key={t.triggerKey} template={t} onSelect={() => onSelectTemplate(t)} />\n ))}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default WorkflowTemplateLibrary;\n","import React, { useState } from 'react';\nimport { MdCheckCircle, MdCancel, MdError, MdHourglassEmpty, MdPlayArrow, MdChevronRight, MdPerson, MdSchedule, MdExpandMore, MdExpandLess } from 'react-icons/md';\nimport { ExecutionRecord, ExecutionStep, ExecutionStatus, StepStatus } from './types';\nimport { EXECUTION_STATUS_COLOR } from './canvasTokens';\n\n// ── Status helpers ──────────────────────────────────────────────────────────\n\nconst STATUS_META: Record<ExecutionStatus, { label: string; color: string; icon: React.ReactElement }> = {\n running: { label: 'Running', color: EXECUTION_STATUS_COLOR.running, icon: React.createElement(MdPlayArrow, { size: 14 }) },\n success: { label: 'Success', color: EXECUTION_STATUS_COLOR.success, icon: React.createElement(MdCheckCircle, { size: 14 }) },\n failed: { label: 'Failed', color: EXECUTION_STATUS_COLOR.failed, icon: React.createElement(MdError, { size: 14 }) },\n cancelled: { label: 'Cancelled', color: EXECUTION_STATUS_COLOR.cancelled, icon: React.createElement(MdCancel, { size: 14 }) },\n};\n\nconst STEP_META: Record<StepStatus, { color: string; icon: React.ReactElement }> = {\n pending: { color: EXECUTION_STATUS_COLOR.pending, icon: React.createElement(MdHourglassEmpty, { size: 14 }) },\n running: { color: EXECUTION_STATUS_COLOR.running, icon: React.createElement(MdPlayArrow, { size: 14 }) },\n success: { color: EXECUTION_STATUS_COLOR.success, icon: React.createElement(MdCheckCircle, { size: 14 }) },\n failed: { color: EXECUTION_STATUS_COLOR.failed, icon: React.createElement(MdError, { size: 14 }) },\n skipped: { color: EXECUTION_STATUS_COLOR.skipped, icon: React.createElement(MdCancel, { size: 14 }) },\n};\n\nfunction formatDate(iso: string): string {\n try {\n return new Date(iso).toLocaleString();\n } catch {\n return iso;\n }\n}\n\nfunction duration(start: string, end?: string): string {\n try {\n const ms = new Date(end ?? new Date().toISOString()).getTime() - new Date(start).getTime();\n if (ms < 1000) return `${ms}ms`;\n if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`;\n return `${Math.floor(ms / 60000)}m ${Math.floor((ms % 60000) / 1000)}s`;\n } catch {\n return '—';\n }\n}\n\n// ── Step detail row ──────────────────────────────────────────────────────────\n\nfunction StepRow({ step }: { step: ExecutionStep }) {\n const [expanded, setExpanded] = useState(false);\n const meta = STEP_META[step.status];\n const hasDetail = !!(step.inputs || step.outputs || step.error);\n\n return (\n <div style={{ borderBottom: '1px solid #f5f5f5' }}>\n <div\n style={{ display: 'flex', alignItems: 'center', gap: 8, padding: '8px 12px', cursor: hasDetail ? 'pointer' : 'default' }}\n onClick={() => { if (hasDetail) setExpanded((v) => !v); }}\n role={hasDetail ? 'button' : undefined}\n tabIndex={hasDetail ? 0 : undefined}\n onKeyDown={(e) => { if (hasDetail && (e.key === 'Enter' || e.key === ' ')) setExpanded((v) => !v); }}\n >\n <span style={{ color: meta.color, flexShrink: 0 }}>\n {React.cloneElement(meta.icon, { color: meta.color })}\n </span>\n <span style={{ flex: 1, fontSize: 13, color: '#212121' }}>{step.label || step.nodeId}</span>\n {step.branchTaken && (\n <span style={{ fontSize: 10, padding: '1px 6px', borderRadius: 10, background: '#e3f2fd', color: '#1565c0', fontWeight: 600 }}>\n {step.branchTaken}\n </span>\n )}\n <span style={{ fontSize: 11, color: '#9e9e9e', flexShrink: 0 }}>\n {step.startedAt ? duration(step.startedAt, step.completedAt) : '—'}\n </span>\n {hasDetail && (\n <span style={{ color: '#9e9e9e', flexShrink: 0 }}>\n {expanded ? React.createElement(MdExpandLess, { size: 16 }) : React.createElement(MdExpandMore, { size: 16 })}\n </span>\n )}\n </div>\n\n {expanded && hasDetail && (\n <div style={{ padding: '0 12px 10px 32px', fontSize: 12 }}>\n {step.error && (\n <div style={{ padding: '6px 10px', borderRadius: 6, background: '#ffebee', color: '#c62828', marginBottom: 6 }}>\n {step.error}\n </div>\n )}\n {step.inputs && Object.keys(step.inputs).length > 0 && (\n <details style={{ marginBottom: 4 }}>\n <summary style={{ cursor: 'pointer', color: '#616161', marginBottom: 4 }}>Inputs</summary>\n <pre style={{ margin: 0, fontSize: 11, background: '#f5f5f5', padding: 8, borderRadius: 4, overflowX: 'auto' }}>\n {JSON.stringify(step.inputs, null, 2)}\n </pre>\n </details>\n )}\n {step.outputs && Object.keys(step.outputs).length > 0 && (\n <details>\n <summary style={{ cursor: 'pointer', color: '#616161', marginBottom: 4 }}>Outputs</summary>\n <pre style={{ margin: 0, fontSize: 11, background: '#f5f5f5', padding: 8, borderRadius: 4, overflowX: 'auto' }}>\n {JSON.stringify(step.outputs, null, 2)}\n </pre>\n </details>\n )}\n </div>\n )}\n </div>\n );\n}\n\n// ── Run list item ─────────────────────────────────────────────────────────────\n\nfunction RunListItem({ record, selected, onSelect }: { record: ExecutionRecord; selected: boolean; onSelect: () => void }) {\n const meta = STATUS_META[record.status];\n\n return (\n <div\n role=\"button\"\n tabIndex={0}\n onClick={onSelect}\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') onSelect(); }}\n style={{\n padding: '10px 14px',\n borderBottom: '1px solid #f0f0f0',\n cursor: 'pointer',\n background: selected ? '#e3f2fd' : '#fff',\n display: 'flex',\n alignItems: 'center',\n gap: 10,\n outline: 'none',\n }}\n >\n <span style={{ color: meta.color, flexShrink: 0 }}>\n {React.cloneElement(meta.icon, { color: meta.color, size: 16 })}\n </span>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontSize: 12, color: '#212121', fontWeight: selected ? 600 : 400, whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }}>\n {formatDate(record.triggeredAt)}\n </div>\n <div style={{ fontSize: 11, color: '#9e9e9e' }}>\n {record.triggeredBy ? `by ${record.triggeredBy}` : 'System'} · {record.steps.length} step{record.steps.length !== 1 ? 's' : ''}\n </div>\n </div>\n <span style={{ fontSize: 11, fontWeight: 600, color: meta.color, flexShrink: 0 }}>{meta.label}</span>\n <MdChevronRight size={14} color=\"#bdbdbd\" />\n </div>\n );\n}\n\n// ── Main component ────────────────────────────────────────────────────────────\n\ninterface WorkflowExecutionHistoryProps {\n records: ExecutionRecord[];\n /** Called when the \"view on canvas\" button is clicked for a record */\n onViewOnCanvas?: (record: ExecutionRecord) => void;\n}\n\nconst WorkflowExecutionHistory: React.FC<WorkflowExecutionHistoryProps> = ({ records, onViewOnCanvas }) => {\n const [selectedId, setSelectedId] = useState<string | null>(records[0]?.id ?? null);\n const selected = records.find((r) => r.id === selectedId) ?? null;\n const sorted = [...records].sort((a, b) => new Date(b.triggeredAt).getTime() - new Date(a.triggeredAt).getTime());\n\n if (records.length === 0) {\n return (\n <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', height: 300, color: '#9e9e9e', gap: 8 }}>\n <MdSchedule size={36} />\n <p style={{ margin: 0, fontSize: 14 }}>No executions yet</p>\n <p style={{ margin: 0, fontSize: 12 }}>Run history will appear here</p>\n </div>\n );\n }\n\n return (\n <div style={{ display: 'flex', height: '100%', fontFamily: 'inherit', border: '1px solid #e0e0e0', borderRadius: 8, overflow: 'hidden' }}>\n {/* Left: run list */}\n <div style={{ width: 260, flexShrink: 0, borderRight: '1px solid #e0e0e0', overflowY: 'auto', background: '#fafafa' }}>\n <div style={{ padding: '12px 14px', borderBottom: '1px solid #e0e0e0', fontWeight: 600, fontSize: 13, color: '#212121' }}>\n Run History ({records.length})\n </div>\n {sorted.map((r) => (\n <RunListItem key={r.id} record={r} selected={r.id === selectedId} onSelect={() => setSelectedId(r.id)} />\n ))}\n </div>\n\n {/* Right: detail */}\n <div style={{ flex: 1, overflowY: 'auto' }}>\n {selected ? (\n <div>\n {/* Detail header */}\n <div style={{ padding: '16px 20px', borderBottom: '1px solid #f0f0f0', display: 'flex', alignItems: 'flex-start', justifyContent: 'space-between', gap: 12 }}>\n <div>\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, marginBottom: 4 }}>\n {React.cloneElement(STATUS_META[selected.status].icon, { color: STATUS_META[selected.status].color, size: 18 })}\n <span style={{ fontWeight: 700, fontSize: 15, color: '#212121' }}>{STATUS_META[selected.status].label}</span>\n </div>\n <div style={{ fontSize: 12, color: '#757575', display: 'flex', flexDirection: 'column', gap: 2 }}>\n <span style={{ display: 'flex', alignItems: 'center', gap: 4 }}>\n <MdSchedule size={13} /> {formatDate(selected.triggeredAt)}\n {selected.completedAt && ` → ${formatDate(selected.completedAt)} (${duration(selected.triggeredAt, selected.completedAt)})`}\n </span>\n {selected.triggeredBy && (\n <span style={{ display: 'flex', alignItems: 'center', gap: 4 }}>\n <MdPerson size={13} /> {selected.triggeredBy}\n </span>\n )}\n </div>\n </div>\n {onViewOnCanvas && (\n <button\n onClick={() => onViewOnCanvas(selected)}\n style={{ padding: '6px 12px', border: '1.5px solid #1976d2', borderRadius: 6, background: '#fff', color: '#1976d2', fontSize: 12, fontWeight: 600, cursor: 'pointer', flexShrink: 0 }}\n >\n View on Canvas\n </button>\n )}\n </div>\n\n {/* Error banner */}\n {selected.error && (\n <div style={{ margin: '12px 16px', padding: '10px 14px', borderRadius: 6, background: '#ffebee', color: '#c62828', fontSize: 13 }}>\n {selected.error}\n </div>\n )}\n\n {/* Step timeline */}\n <div>\n <div style={{ padding: '10px 12px', fontSize: 12, fontWeight: 600, color: '#757575', borderBottom: '1px solid #f0f0f0' }}>\n STEPS ({selected.steps.length})\n </div>\n {selected.steps.map((step, i) => (\n <StepRow key={`${step.nodeId}-${i}`} step={step} />\n ))}\n </div>\n\n {/* Inputs */}\n {selected.inputs && Object.keys(selected.inputs).length > 0 && (\n <div style={{ padding: '10px 16px' }}>\n <details>\n <summary style={{ cursor: 'pointer', fontSize: 12, fontWeight: 600, color: '#757575', marginBottom: 6 }}>TRIGGER INPUTS</summary>\n <pre style={{ margin: 0, fontSize: 11, background: '#f5f5f5', padding: 10, borderRadius: 4, overflowX: 'auto' }}>\n {JSON.stringify(selected.inputs, null, 2)}\n </pre>\n </details>\n </div>\n )}\n </div>\n ) : (\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', height: '100%', color: '#9e9e9e', fontSize: 14 }}>\n Select a run to see details\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default WorkflowExecutionHistory;\n","import { WorkflowState } from './types';\n\n// Each skeleton is a standalone WorkflowState loaded into a fresh canvas via initialValue.\n// IDs only need to be unique within a single skeleton — no cross-skeleton collision risk.\n\nexport const userOnboardingSkeleton: WorkflowState = {\n slots: [\n { id: 'start', kind: 'start', reactFlowType: 'startNode', deletable: false },\n { id: 'trigger-END_USER_CREATION', kind: 'triggerFixed', reactFlowType: 'triggerNode', deletable: true, label: 'New User Registration', nodeData: { label: 'New User Registration' } },\n { id: 'notification-1', kind: 'userTask', reactFlowType: 'notificationNode', descriptorType: 'notification', deletable: true, label: 'Welcome Email', nodeData: { title: 'Welcome Email' } },\n { id: 'approval-1', kind: 'approval', reactFlowType: 'approvalNode', descriptorType: 'approval', deletable: true, label: 'Manager Approval', branchLabels: { pass: 'Approved', fail: 'Rejected' } },\n { id: 'end', kind: 'end', reactFlowType: 'endNode', deletable: false },\n ],\n branches: {\n 'approval-1': {\n pass: [{ id: 'notification-pass-1', kind: 'userTask', reactFlowType: 'notificationNode', descriptorType: 'notification', deletable: true, label: 'Approval Confirmed', nodeData: { title: 'Approval Confirmed' } }],\n fail: [{ id: 'notification-fail-1', kind: 'userTask', reactFlowType: 'notificationNode', descriptorType: 'notification', deletable: true, label: 'Rejection Notice', nodeData: { title: 'Rejection Notice' } }],\n },\n },\n};\n\nexport const accessRequestSkeleton: WorkflowState = {\n slots: [\n { id: 'start', kind: 'start', reactFlowType: 'startNode', deletable: false },\n { id: 'trigger-ACCESS_REQUEST', kind: 'triggerFixed', reactFlowType: 'triggerNode', deletable: true, label: 'Access Request Submitted', nodeData: { label: 'Access Request Submitted' } },\n { id: 'approval-1', kind: 'approval', reactFlowType: 'approvalNode', descriptorType: 'approval', deletable: true, label: 'Access Approval', branchLabels: { pass: 'Approved', fail: 'Denied' } },\n { id: 'end', kind: 'end', reactFlowType: 'endNode', deletable: false },\n ],\n branches: {\n 'approval-1': {\n pass: [\n { id: 'restApi-1', kind: 'userTask', reactFlowType: 'restApiNode', descriptorType: 'restApi', deletable: true, label: 'Provision Access', nodeData: { title: 'Provision Access' } },\n { id: 'notification-pass-1', kind: 'userTask', reactFlowType: 'notificationNode', descriptorType: 'notification', deletable: true, label: 'Access Granted Email', nodeData: { title: 'Access Granted Email' } },\n ],\n fail: [\n { id: 'notification-fail-1', kind: 'userTask', reactFlowType: 'notificationNode', descriptorType: 'notification', deletable: true, label: 'Access Denied Email', nodeData: { title: 'Access Denied Email' } },\n ],\n },\n },\n};\n\nexport const offboardingSkeleton: WorkflowState = {\n slots: [\n { id: 'start', kind: 'start', reactFlowType: 'startNode', deletable: false },\n { id: 'trigger-USER_DEACTIVATION', kind: 'triggerFixed', reactFlowType: 'triggerNode', deletable: true, label: 'User Deactivation', nodeData: { label: 'User Deactivation' } },\n { id: 'delay-1', kind: 'userTask', reactFlowType: 'delayNode', descriptorType: 'delay', deletable: true, label: 'Grace Period', nodeData: { title: 'Grace Period', duration: 7, unit: 'days' }, formData: { duration: 7, unit: 'days' } },\n { id: 'notification-1', kind: 'userTask', reactFlowType: 'notificationNode', descriptorType: 'notification', deletable: true, label: 'Notify IT Team', nodeData: { title: 'Notify IT Team' } },\n { id: 'end', kind: 'end', reactFlowType: 'endNode', deletable: false },\n ],\n branches: {},\n};\n\nexport const webhookIntegrationSkeleton: WorkflowState = {\n slots: [\n { id: 'start', kind: 'start', reactFlowType: 'startNode', deletable: false },\n { id: 'trigger-WEBHOOK_TRIGGER', kind: 'triggerFixed', reactFlowType: 'webhookTriggerNode', deletable: true, label: 'Incoming Webhook', nodeData: { label: 'Incoming Webhook' } },\n { id: 'restApi-1', kind: 'userTask', reactFlowType: 'restApiNode', descriptorType: 'restApi', deletable: true, label: 'Call External API', nodeData: { title: 'Call External API' } },\n { id: 'notification-1', kind: 'userTask', reactFlowType: 'notificationNode', descriptorType: 'notification', deletable: true, label: 'Notify on Completion', nodeData: { title: 'Notify on Completion' } },\n { id: 'end', kind: 'end', reactFlowType: 'endNode', deletable: false },\n ],\n branches: {},\n};\n"],"names":["ge","hn","n","t","fn","pe","z","p","R","ye","pn","bn","Le","a","l","C","u","gn","me","Y","Ee","yn","mn","En","Ln","D","we","Gn","F","_n","xn","On","Cn","Pn","Mn","jn","Sn","Ge","ke","wn","Nn","c","f","g","Ne","kn","vn","Tn","In","Rn","ve","_e","Fn","w","j","xe","A","H","N","k","X","Te","L","Oe","q","Dn","Ie","r","o","Ce","P","M","An","T","O","Re","_","U","K","Pe","Vn","Me","Wn","Q","Yn","Bn","i","s","$","J","zn","je","Hn","Se","Fe","Xn","De","S","v","V","Kn","$n","Jn","Qn","Zn","et","Ve","x","ee","Z","We","Ye","ze","He","nt","d","h","rt","b","Be","Ae","tt","Xe","ot","qe","st","it","Ue","at","lt","dt","Ke","ut","ct","$e","y","m","E","Je","Ze","ft","Qe","nn","rn","tn","bt","gt","en","ne","te","re","oe","mt","ie","se","Et","Lt","ae","yt","on","W","Nt","wt","de","Gt","le","B","sn","an","kt","vt","xt","dn","_t","Tt","Ot","It","Ct","I","be","jt","Rt","St","Pt","Mt","ln","un","Ft","he","Xt","Dt","At","Ut","rr","Kt","$t","Jt","or","ir","tr","er","Qt","Zt","nr","Vt","Wt","Bt","Yt","cn","zt","Ht","qt","ce","ue","fe","sr","To","fingerprintSelector","state","parts","node","id","LayoutUpdater","onHeightsReady","nodeCount","fingerprint","useStore","prevRef","useRef","fitView","useReactFlow","useEffect","heights","part","height","STATUS_PALETTE","FlowForgeHeader","workflowName","onWorkflowNameChange","status","statusColor","onSave","onCancel","saveLabel","saveDisabled","saving","setSaving","React","editingName","setEditingName","nameDraft","setNameDraft","handleSave","statusPalette","jsxs","jsx","e","BaseDrawer","isOpen","onClose","title","icon","children","footer","width","isModal","setIsModal","useState","toggleModal","Header","Box","IconButton","BiCollapse","BiExpand","MdClose","Footer","Dialog","Drawer","TriggerSelectorDrawer","open","templates","messages","onSelect","loadTriggerSources","stage","setStage","pickedTemplate","setPickedTemplate","sourceOptions","setSourceOptions","selectedSources","setSelectedSources","loadingSources","setLoadingSources","sourcesError","setSourcesError","handleTriggerPick","useCallback","template","sources","handleBack","handleContinue","showingSources","Fragment","Button","GrTrigger","MdCalendarToday","MdBolt","CircularProgress","MdArrowBack","ReactSelect","buildSelectStyles","cardStyle","cardClass","NodePickerDrawer","availableDescriptors","apps","ungrouped","useMemo","appMap","flat","existing","activeAppKey","setActiveAppKey","activeApp","stage1","MdAddCircleOutline","MdApps","MdChevronRight","CONDITION_CONFIG_KEY","NodeConfigDrawer","nodeId","descriptor","initialValues","schema","setSchema","loading","setLoading","error","setError","conditionConfig","setConditionConfig","cancelled","fs","err","formId","hasForm","FlowForm","values","hasConditions","SubWorkflowPreviewDrawer","workflowId","workflowLabel","onFetchWorkflow","loadState","setLoadState","MdAccountTree","MdErrorOutline","SubWorkflowCanvasRenderer","Canvas","setCanvas","Registries","setRegistries","WorkflowCanvas","CanvasComp","nReg","tReg","NODE_WIDTH","EDGE_GAP","CANVAS_START_Y","FALLBACK_NODE_HEIGHT","defaultEdgeTypes","PlusEdge","LabelPlusEdge","PlainEdge","EdgeWithPlusLabel","GatewayBranchEdge","buildInitialSlots","applyDagreLayout","nodes","edges","nodeSizes","layoutDirection","dagre","size","edge","pos","_a","_b","isBranchingKind","kind","applyVerticalBranchLayout","slots","branches","STEP_GAP","BRANCH_GAP","BULLET_TO_STEP_GAP","positions","railSpecs","slotById","branchMap","chain","placeNode","centerX","placeChain","startY","slot","placeNestedBranches","parentId","parentCenterX","childCenterX","keys","parentSlot","labels","parentPos","parentSize","parentBottomY","railBranches","key","idx","bulletY","cursorY","makeNode","makePlusEdge","prev","curr","edgeColor","onAddStepClick","branchCtx","slotsToFlow","nodeMeasurements","theme","branchLayout","emitFilterBranches","filterId","branchLabels","branchKeys","emitChain","branchKey","branchLabel","branchIndex","isPlain","positioned","layoutedNodes","FlowForgeCanvas","nodeRegistry","templateRegistry","initialValue","consumerNodeTypes","consumerEdgeTypes","readOnly","messageOverrides","canvasOptions","renderTriggerSelector","renderNodePicker","renderNodeConfig","onNodeClickProp","maxNodes","executionRecord","hideHeader","workflowStatus","workflowStatusColor","optFitView","fitViewPadding","showControls","showMiniMap","optPanOnScroll","optZoomOnScroll","minZoom","maxZoom","snapToGrid","snapGrid","nodeBody","mergeMessages","setSlots","setBranches","drawerMode","setDrawerMode","activeSlotId","setActiveSlotId","insertAfterSourceId","setInsertAfterSourceId","insertBranchCtx","setInsertBranchCtx","subWorkflowPreview","setSubWorkflowPreview","selectedTemplate","setSelectedTemplate","triggerSlot","triggerKey","setNodeMeasurements","handleHeightsReady","mergedNodeTypes","builtInNodeTypes","mergedEdgeTypes","userTaskCount","spineCount","branchCount","effectiveMaxNodes","atMaxNodes","findSlot","slotId","spineSlot","found","onEditNode","onDeleteNode","removed","next","collectAll","collectNestedFilterIds","map","ids","branch","deleted","newChain","onClickAddTrigger","handleAddStepClick","sourceNodeId","context","handleTriggerSelect","pickedSources","hasPickedSources","skeletonSlots","buildInsertContext","ctx","spineIdx","spineUp","branchChain","branchIdx","branchUp","slotMatchesToken","token","getAvailableDescriptors","all","allowed","handleNodeTypeSelect","newTaskId","isBranching","taskSlot","chainWithoutEnd","insertIdx","sourceIdx","endIdx","handleNodeSave","formatBranchLabel","cfg","base","syncConditionBranchKeys","prevBranches","newKeys","synced","patchSlotBranchLabels","configs","labelMap","updateChain","activeSlot","activeDescriptor","rawNodes","stepByNodeId","extra","step","handlers","handleHeaderSave","WorkflowCanvasContext","ReactFlow","_event","Background","Controls","MiniMap","CATEGORY_ALL","TemplateCard","badge","TRIGGER_CATEGORY_STYLE","tag","WorkflowTemplateLibrary","onSelectTemplate","onStartFromScratch","search","setSearch","activeCategory","setActiveCategory","categories","cats","filtered","list","MdAdd","MdSearch","cat","MdCategory","STATUS_META","EXECUTION_STATUS_COLOR","MdPlayArrow","MdCheckCircle","MdError","MdCancel","STEP_META","MdHourglassEmpty","formatDate","iso","duration","start","end","ms","StepRow","expanded","setExpanded","meta","hasDetail","MdExpandLess","MdExpandMore","RunListItem","record","selected","WorkflowExecutionHistory","records","onViewOnCanvas","selectedId","setSelectedId","sorted","MdSchedule","MdPerson","userOnboardingSkeleton","accessRequestSkeleton","offboardingSkeleton","webhookIntegrationSkeleton"],"mappings":"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","x_google_ignoreList":[0]}
|