@yiyi_zhang/reactflow-ui 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/components/ConfirmDialog.d.ts +1 -1
- package/dist/components/nodes/DynamicPlaceholderNode.d.ts +5 -0
- package/dist/components/nodes/PlusNode.d.ts +3 -0
- package/dist/config/taskTypes.d.ts +1 -1
- package/dist/hooks/useNodeExecution.d.ts +2 -1
- package/dist/parser/conductorGenerator.d.ts +8 -0
- package/dist/reactflow-ui.es.js +7424 -6763
- package/dist/reactflow-ui.umd.js +28 -17
- package/dist/sample-executions/fork-dynamic.json +138 -0
- package/dist/sample-executions/human-approval.json +119 -0
- package/dist/sample-executions/loop-iterations.json +169 -0
- package/dist/sample-executions/mixed-status.json +155 -0
- package/dist/sample-executions/retry-tasks.json +124 -0
- package/dist/sample-executions/switch-branches.json +136 -0
- package/dist/types/conductor.d.ts +20 -1
- package/dist/types/workflow.d.ts +5 -1
- package/dist/utils/validationRules.d.ts +25 -0
- package/package.json +1 -1
package/dist/reactflow-ui.umd.js
CHANGED
|
@@ -1,14 +1,25 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(Ee,M){typeof exports=="object"&&typeof module<"u"?M(exports,require("react"),require("reactflow"),require("react-dom")):typeof define=="function"&&define.amd?define(["exports","react","reactflow","react-dom"],M):(Ee=typeof globalThis<"u"?globalThis:Ee||self,M(Ee.ReactflowUI={},Ee.React,Ee.ReactFlow,Ee.ReactDOM))})(this,(function(Ee,M,j,Ph){"use strict";var vr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function qh(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var mr={exports:{}},er={};var Ps;function Ah(){if(Ps)return er;Ps=1;var e=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function t(r,a,i){var o=null;if(i!==void 0&&(o=""+i),a.key!==void 0&&(o=""+a.key),"key"in a){i={};for(var s in a)s!=="key"&&(i[s]=a[s])}else i=a;return a=i.ref,{$$typeof:e,type:r,key:o,ref:a!==void 0?a:null,props:i}}return er.Fragment=n,er.jsx=t,er.jsxs=t,er}var rr={};var qs;function Lh(){return qs||(qs=1,process.env.NODE_ENV!=="production"&&(function(){function e(O){if(O==null)return null;if(typeof O=="function")return O.$$typeof===D?null:O.displayName||O.name||null;if(typeof O=="string")return O;switch(O){case g:return"Fragment";case y:return"Profiler";case b:return"StrictMode";case T:return"Suspense";case N:return"SuspenseList";case P:return"Activity"}if(typeof O=="object")switch(typeof O.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),O.$$typeof){case m:return"Portal";case _:return O.displayName||"Context";case x:return(O._context.displayName||"Context")+".Consumer";case E:var V=O.render;return O=O.displayName,O||(O=V.displayName||V.name||"",O=O!==""?"ForwardRef("+O+")":"ForwardRef"),O;case C:return V=O.displayName||null,V!==null?V:e(O.type)||"Memo";case I:V=O._payload,O=O._init;try{return e(O(V))}catch{}}return null}function n(O){return""+O}function t(O){try{n(O);var V=!1}catch{V=!0}if(V){V=console;var Q=V.error,w=typeof Symbol=="function"&&Symbol.toStringTag&&O[Symbol.toStringTag]||O.constructor.name||"Object";return Q.call(V,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",w),n(O)}}function r(O){if(O===g)return"<>";if(typeof O=="object"&&O!==null&&O.$$typeof===I)return"<...>";try{var V=e(O);return V?"<"+V+">":"<...>"}catch{return"<...>"}}function a(){var O=F.A;return O===null?null:O.getOwner()}function i(){return Error("react-stack-top-frame")}function o(O){if(R.call(O,"key")){var V=Object.getOwnPropertyDescriptor(O,"key").get;if(V&&V.isReactWarning)return!1}return O.key!==void 0}function s(O,V){function Q(){z||(z=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",V))}Q.isReactWarning=!0,Object.defineProperty(O,"key",{get:Q,configurable:!0})}function l(){var O=e(this.type);return U[O]||(U[O]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),O=this.props.ref,O!==void 0?O:null}function c(O,V,Q,w,L,q){var A=Q.ref;return O={$$typeof:v,type:O,key:V,props:Q,_owner:w},(A!==void 0?A:null)!==null?Object.defineProperty(O,"ref",{enumerable:!1,get:l}):Object.defineProperty(O,"ref",{enumerable:!1,value:null}),O._store={},Object.defineProperty(O._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(O,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(O,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:L}),Object.defineProperty(O,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:q}),Object.freeze&&(Object.freeze(O.props),Object.freeze(O)),O}function u(O,V,Q,w,L,q){var A=V.children;if(A!==void 0)if(w)if(k(A)){for(w=0;w<A.length;w++)f(A[w]);Object.freeze&&Object.freeze(A)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else f(A);if(R.call(V,"key")){A=e(O);var B=Object.keys(V).filter(function(ee){return ee!=="key"});w=0<B.length?"{key: someKey, "+B.join(": ..., ")+": ...}":"{key: someKey}",J[A+w]||(B=0<B.length?"{"+B.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
|
|
2
2
|
let props = %s;
|
|
3
3
|
<%s {...props} />
|
|
4
4
|
React keys must be passed directly to JSX without using spread:
|
|
5
5
|
let props = %s;
|
|
6
|
-
<%s key={someKey} {...props} />`,k,O,H,O),K[O+k]=!0)}if(O=null,G!==void 0&&(r(G),O=""+G),o(F)&&(r(F.key),O=""+F.key),"key"in F){G={};for(var J in F)J!=="key"&&(G[J]=F[J])}else G=F;return O&&s(G,typeof j=="function"?j.displayName||j.name||"Unknown":j),u(j,O,G,a(),I,P)}function l(j){p(j)?j._store&&(j._store.validated=1):typeof j=="object"&&j!==null&&j.$$typeof===C&&(j._payload.status==="fulfilled"?p(j._payload.value)&&j._payload.value._store&&(j._payload.value._store.validated=1):j._store&&(j._store.validated=1))}function p(j){return typeof j=="object"&&j!==null&&j.$$typeof===m}var h=D,m=Symbol.for("react.transitional.element"),g=Symbol.for("react.portal"),v=Symbol.for("react.fragment"),x=Symbol.for("react.strict_mode"),b=Symbol.for("react.profiler"),_=Symbol.for("react.consumer"),y=Symbol.for("react.context"),S=Symbol.for("react.forward_ref"),w=Symbol.for("react.suspense"),E=Symbol.for("react.suspense_list"),T=Symbol.for("react.memo"),C=Symbol.for("react.lazy"),R=Symbol.for("react.activity"),A=Symbol.for("react.client.reference"),B=h.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,N=Object.prototype.hasOwnProperty,M=Array.isArray,L=console.createTask?console.createTask:function(){return null};h={react_stack_bottom_frame:function(j){return j()}};var $,U={},W=h.react_stack_bottom_frame.bind(h,i)(),z=L(n(i)),K={};Je.Fragment=v,Je.jsx=function(j,F,G){var k=1e4>B.recentlyCreatedOwnerStacks++;return d(j,F,G,!1,k?Error("react-stack-top-frame"):W,k?L(n(j)):z)},Je.jsxs=function(j,F,G){var k=1e4>B.recentlyCreatedOwnerStacks++;return d(j,F,G,!0,k?Error("react-stack-top-frame"):W,k?L(n(j)):z)}})()),Je}var ws;function Ih(){return ws||(ws=1,process.env.NODE_ENV==="production"?ur.exports=Nh():ur.exports=Rh()),ur.exports}var f=Ih();const Es=e=>{let t;const r=new Set,n=(u,d)=>{const l=typeof u=="function"?u(t):u;if(!Object.is(l,t)){const p=t;t=d??(typeof l!="object"||l===null)?l:Object.assign({},t,l),r.forEach(h=>h(t,p))}},a=()=>t,s={setState:n,getState:a,getInitialState:()=>c,subscribe:u=>(r.add(u),()=>r.delete(u))},c=t=e(n,a,s);return s},Ts=(e=>e?Es(e):Es),jh=e=>e;function jr(e,t=jh){const r=D.useSyncExternalStore(e.subscribe,D.useCallback(()=>t(e.getState()),[e,t]),D.useCallback(()=>t(e.getInitialState()),[e,t]));return D.useDebugValue(r),r}const Oh=e=>{const t=Ts(e),r=n=>jr(t,n);return Object.assign(r,t),r},qh=(e=>Oh);function Cs(e,t){let r;try{r=e()}catch{return}return{getItem:a=>{var i;const o=c=>c===null?null:JSON.parse(c,void 0),s=(i=r.getItem(a))!=null?i:null;return s instanceof Promise?s.then(o):o(s)},setItem:(a,i)=>r.setItem(a,JSON.stringify(i,void 0)),removeItem:a=>r.removeItem(a)}}const Or=e=>t=>{try{const r=e(t);return r instanceof Promise?r:{then(n){return Or(n)(r)},catch(n){return this}}}catch(r){return{then(n){return this},catch(n){return Or(n)(r)}}}},Ph=(e,t)=>(r,n,a)=>{let i={storage:Cs(()=>localStorage),partialize:g=>g,version:0,merge:(g,v)=>({...v,...g}),...t},o=!1;const s=new Set,c=new Set;let u=i.storage;if(!u)return e((...g)=>{console.warn(`[zustand persist middleware] Unable to update item '${i.name}', the given storage is currently unavailable.`),r(...g)},n,a);const d=()=>{const g=i.partialize({...n()});return u.setItem(i.name,{state:g,version:i.version})},l=a.setState;a.setState=(g,v)=>(l(g,v),d());const p=e((...g)=>(r(...g),d()),n,a);a.getInitialState=()=>p;let h;const m=()=>{var g,v;if(!u)return;o=!1,s.forEach(b=>{var _;return b((_=n())!=null?_:p)});const x=((v=i.onRehydrateStorage)==null?void 0:v.call(i,(g=n())!=null?g:p))||void 0;return Or(u.getItem.bind(u))(i.name).then(b=>{if(b)if(typeof b.version=="number"&&b.version!==i.version){if(i.migrate){const _=i.migrate(b.state,b.version);return _ instanceof Promise?_.then(y=>[!0,y]):[!0,_]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return[!1,b.state];return[!1,void 0]}).then(b=>{var _;const[y,S]=b;if(h=i.merge(S,(_=n())!=null?_:p),r(h,!0),y)return d()}).then(()=>{x?.(h,void 0),h=n(),o=!0,c.forEach(b=>b(h))}).catch(b=>{x?.(void 0,b)})};return a.persist={setOptions:g=>{i={...i,...g},g.storage&&(u=g.storage)},clearStorage:()=>{u?.removeItem(i.name)},getOptions:()=>i,rehydrate:()=>m(),hasHydrated:()=>o,onHydrate:g=>(s.add(g),()=>{s.delete(g)}),onFinishHydration:g=>(c.add(g),()=>{c.delete(g)})},i.skipHydration||m(),h||p};var Ns=(e,t,r)=>(a,i)=>({pastStates:r?.pastStates||[],futureStates:r?.futureStates||[],undo:(o=1)=>{if(i().pastStates.length){const s=r?.partialize?.(t())||t(),c=i().pastStates.splice(-o,o),u=c.shift();e(u),a({pastStates:i().pastStates,futureStates:i().futureStates.concat(r?.diff?.(s,u)||s,c.reverse())})}},redo:(o=1)=>{if(i().futureStates.length){const s=r?.partialize?.(t())||t(),c=i().futureStates.splice(-o,o),u=c.shift();e(u),a({pastStates:i().pastStates.concat(r?.diff?.(s,u)||s,c.reverse()),futureStates:i().futureStates})}},clear:()=>a({pastStates:[],futureStates:[]}),isTracking:!0,pause:()=>a({isTracking:!1}),resume:()=>a({isTracking:!0}),setOnSave:o=>a({_onSave:o}),_onSave:r?.onSave,_handleSet:(o,s,c,u)=>{r?.limit&&i().pastStates.length>=r?.limit&&i().pastStates.shift(),i()._onSave?.(o,c),a({pastStates:i().pastStates.concat(u||o),futureStates:[]})}}),Ah=(e,t)=>(n,a,i)=>{i.temporal=Ts(t?.wrapTemporal?.(Ns(n,a,t))||Ns(n,a,t));const o=t?.handleSet?.(i.temporal.getState()._handleSet)||i.temporal.getState()._handleSet,s=u=>{if(!i.temporal.getState().isTracking)return;const d=t?.partialize?.(a())||a(),l=t?.diff?.(u,d);l===null||t?.equality?.(u,d)||o(u,void 0,d,l)},c=i.setState;return i.setState=(...u)=>{const d=t?.partialize?.(a())||a();c(...u),s(d)},e((...u)=>{const d=t?.partialize?.(a())||a();n(...u),s(d)},a,i)};function Lh(e,t="TB",r){const n=r?.hideEmptyBranches??!1;if(!e||!e.tasks)return{nodes:[],edges:[],taskMap:{}};const a=[],i=[],o={};let s=0;const c={id:"start",type:"input",data:{label:"开始",layoutDirection:t,taskReferenceName:"start",taskType:"START"},position:{x:0,y:0},sourcePosition:t==="LR"?q.Position.Right:q.Position.Bottom,style:{background:"#4ade80",color:"#fff",border:"2px solid #22c55e",borderRadius:"50%",width:60,height:60,display:"flex",alignItems:"center",justifyContent:"center",fontSize:"12px",fontWeight:"bold"}};a.push(c);const u=e.tasks;for(let p=0;p<u.length;p++){const h=u[p],m=Rs(h,s,o,t,u,n);if(a.push(...m.nodes),i.push(...m.edges),s=m.nextId,p===0)i.push({id:`e-start-${h.taskReferenceName}`,source:"start",target:h.taskReferenceName,animated:!0});else{const g=u[p-1];Is(g,h,i)}Object.assign(o,m.taskMap)}const d=u[u.length-1],l={id:"end",type:"output",data:{label:"结束",layoutDirection:t,taskReferenceName:"end",taskType:"END"},position:{x:0,y:0},targetPosition:t==="LR"?q.Position.Left:q.Position.Top,style:{background:"#f87171",color:"#fff",border:"2px solid #ef4444",borderRadius:"50%",width:60,height:60,display:"flex",alignItems:"center",justifyContent:"center",fontSize:"12px",fontWeight:"bold"}};if(a.push(l),d){const p=Pr(d);i.push({id:`e-${p}-end`,source:p,target:"end",animated:!0})}else i.push({id:"e-start-end",source:"start",target:"end",type:"addableEdge",animated:!0});return{nodes:a,edges:i,taskMap:o}}function Rs(e,t,r,n="TB",a=[],i=!1){switch(e.type||"SIMPLE"){case"DECISION":case"SWITCH":return Mh(e,t,r,n,i);case"FORK_JOIN":case"FORK_JOIN_DYNAMIC":return Bh(e,t,r,n);case"JOIN":return $h(e,t,r,n,a,i);case"DO_WHILE":return Wh(e,t,r,n);case"SUB_WORKFLOW":return Fh(e,t,r,n);default:return Dh(e,t,r,n)}}function Dh(e,t,r,n="TB"){const a={id:e.taskReferenceName,type:"taskNode",data:{label:e.name,taskReferenceName:e.taskReferenceName,taskType:e.type||"SIMPLE",task:e,layoutDirection:n},position:{x:0,y:0},sourcePosition:n==="LR"?q.Position.Right:q.Position.Bottom,targetPosition:n==="LR"?q.Position.Left:q.Position.Top},i={[e.taskReferenceName]:e};return{nodes:[a],edges:[],taskMap:i,nextId:t+1}}function Mh(e,t,r,n="TB",a=!1){const i=[],o=[];let s=t;const c={},u={id:e.taskReferenceName,type:"decisionNode",data:{label:e.name,taskReferenceName:e.taskReferenceName,taskType:e.type,task:e,layoutDirection:n},position:{x:0,y:0},sourcePosition:n==="LR"?q.Position.Right:q.Position.Bottom,targetPosition:n==="LR"?q.Position.Left:q.Position.Top};i.push(u),c[e.taskReferenceName]=e;const d=`${e.taskReferenceName}_join`,l={id:d,type:"default",data:{label:"合并",layoutDirection:n,taskReferenceName:d,taskType:"DECISION_JOIN"},position:{x:0,y:0},sourcePosition:n==="LR"?q.Position.Right:q.Position.Bottom,targetPosition:n==="LR"?q.Position.Left:q.Position.Top,style:{background:"#a78bfa",color:"#fff",border:"2px solid #8b5cf6",borderRadius:"8px",padding:"10px",fontSize:"12px"}};i.push(l);const p=e.decisionCases||{},h=e.defaultCase||[],m=Object.keys(p),g=(v,x)=>{if(n==="TB"){if(v===0&&x>1)return"left";if(v===1&&x>2)return"right"}else{if(v===0&&x>1)return"top";if(v===1&&x>2)return"bottom"}return null};if(m.forEach((v,x)=>{const b=p[v],_=g(x,m.length+1);if(b&&b.length>0){const y=qr(b,s,{...r,...c},n);i.push(...y.nodes),o.push(...y.edges),Object.assign(c,y.taskMap),s=y.nextId;const S=b[0].taskReferenceName;o.push({id:`e-${e.taskReferenceName}-${S}`,source:e.taskReferenceName,sourceHandle:_||void 0,target:S,label:v,animated:!0,data:{branchCase:v},style:{stroke:"#3b82f6"}});const w=b[b.length-1].taskReferenceName;o.push({id:`e-${w}-${d}`,source:w,target:d,animated:!0})}else if(!a){const y=`${e.taskReferenceName}_empty_${v}`;i.push({id:y,type:"default",data:{label:`${v} (空)`,layoutDirection:n,taskReferenceName:y,taskType:"EMPTY_BRANCH"},position:{x:0,y:0},sourcePosition:n==="LR"?q.Position.Right:q.Position.Bottom,targetPosition:n==="LR"?q.Position.Left:q.Position.Top,style:{background:"transparent",border:"2px dashed var(--border-secondary, #64748b)",borderRadius:"8px",padding:"6px 12px",fontSize:"11px",color:"var(--text-tertiary, #94a3b8)",minWidth:"80px",textAlign:"center"}}),o.push({id:`e-${e.taskReferenceName}-${y}`,source:e.taskReferenceName,sourceHandle:_||void 0,target:y,label:v,animated:!0,data:{branchCase:v},style:{stroke:"#3b82f6",strokeDasharray:"5,5"}}),o.push({id:`e-${y}-${d}`,source:y,target:d,animated:!0,style:{strokeDasharray:"5,5"}})}}),h&&h.length>0){const v=qr(h,s,{...r,...c},n);i.push(...v.nodes),o.push(...v.edges),Object.assign(c,v.taskMap),s=v.nextId;const x=h[0].taskReferenceName;o.push({id:`e-${e.taskReferenceName}-${x}`,source:e.taskReferenceName,target:x,label:"default",animated:!0,data:{branchCase:"default"},style:{stroke:"#f59e0b"}});const b=h[h.length-1].taskReferenceName;o.push({id:`e-${b}-${d}`,source:b,target:d,animated:!0})}else if(!a){const v=`${e.taskReferenceName}_empty_default`;i.push({id:v,type:"default",data:{label:"default (空)",layoutDirection:n,taskReferenceName:v,taskType:"EMPTY_BRANCH"},position:{x:0,y:0},sourcePosition:n==="LR"?q.Position.Right:q.Position.Bottom,targetPosition:n==="LR"?q.Position.Left:q.Position.Top,style:{background:"transparent",border:"2px dashed var(--border-secondary, #64748b)",borderRadius:"8px",padding:"6px 12px",fontSize:"11px",color:"var(--text-tertiary, #94a3b8)",minWidth:"80px",textAlign:"center"}}),o.push({id:`e-${e.taskReferenceName}-${v}`,source:e.taskReferenceName,target:v,label:"default",animated:!0,data:{branchCase:"default"},style:{stroke:"#f59e0b",strokeDasharray:"5,5"}}),o.push({id:`e-${v}-${d}`,source:v,target:d,animated:!0,style:{strokeDasharray:"5,5"}})}return Object.keys(p).length===0&&(!h||h.length===0)&&o.push({id:`e-${e.taskReferenceName}-${d}`,source:e.taskReferenceName,target:d,animated:!0}),{nodes:i,edges:o,taskMap:c,nextId:s,joinNodeId:d}}function Bh(e,t,r,n="TB"){const a=[],i=[];let o=t;const s={},c=e.type==="FORK_JOIN_DYNAMIC",u={id:e.taskReferenceName,type:"forkNode",data:{label:e.name,taskReferenceName:e.taskReferenceName,taskType:e.type,task:e,isDynamic:c,layoutDirection:n},position:{x:0,y:0},sourcePosition:n==="LR"?q.Position.Right:q.Position.Bottom,targetPosition:n==="LR"?q.Position.Left:q.Position.Top};return a.push(u),s[e.taskReferenceName]=e,c||(e.forkTasks||[]).forEach((l,p)=>{if(l&&l.length>0){const h=qr(l,o,{...r,...s},n);a.push(...h.nodes),i.push(...h.edges),Object.assign(s,h.taskMap),o=h.nextId;const m=l[0].taskReferenceName;i.push({id:`e-${e.taskReferenceName}-${m}`,source:e.taskReferenceName,sourceHandle:`branch_${p}`,target:m,label:`分支 ${p+1}`,animated:!0,data:{forkIndex:p},style:{stroke:"#10b981"}})}}),{nodes:a,edges:i,taskMap:s,nextId:o}}function Wh(e,t,r,n="TB"){const a={},i={id:e.taskReferenceName,type:"loopNode",data:{label:e.name,taskReferenceName:e.taskReferenceName,taskType:e.type,task:e,layoutDirection:n},position:{x:0,y:0},sourcePosition:n==="LR"?q.Position.Right:q.Position.Bottom,targetPosition:n==="LR"?q.Position.Left:q.Position.Top};return a[e.taskReferenceName]=e,(e.loopOver||[]).forEach(s=>{a[s.taskReferenceName]=s}),{nodes:[i],edges:[],taskMap:a,nextId:t+1}}function Fh(e,t,r,n="TB"){const a={id:e.taskReferenceName,type:"subWorkflowNode",data:{label:e.name,taskReferenceName:e.taskReferenceName,taskType:e.type,task:e,layoutDirection:n},position:{x:0,y:0},sourcePosition:n==="LR"?q.Position.Right:q.Position.Bottom,targetPosition:n==="LR"?q.Position.Left:q.Position.Top},i={[e.taskReferenceName]:e};return{nodes:[a],edges:[],taskMap:i,nextId:t+1}}function $h(e,t,r,n="TB",a=[],i=!1){const o={id:e.taskReferenceName,type:"joinNode",data:{label:e.name||"JOIN",taskReferenceName:e.taskReferenceName,taskType:e.type,task:e,layoutDirection:n},position:{x:0,y:0},sourcePosition:n==="LR"?q.Position.Right:q.Position.Bottom,targetPosition:n==="LR"?q.Position.Left:q.Position.Top},s={[e.taskReferenceName]:e},c=[],u=[];(e.joinOn||[]).forEach(p=>{const h=a.find(m=>m.taskReferenceName===p)||r[p];if(h){const m=Pr(h);u.push({id:`e-${m}-${e.taskReferenceName}`,source:m,target:e.taskReferenceName,animated:!0})}});const l=a.findIndex(p=>p.taskReferenceName===e.taskReferenceName);if(l>0){const p=a[l-1];p.type==="FORK_JOIN_DYNAMIC"?u.push({id:`e-${p.taskReferenceName}-${e.taskReferenceName}-dynamic`,source:p.taskReferenceName,target:e.taskReferenceName,label:"动态分支",animated:!0,style:{stroke:"#10b981",strokeWidth:4,strokeDasharray:"5,5",opacity:.8}}):p.type==="FORK_JOIN"&&(p.forkTasks||[]).forEach((m,g)=>{if((!m||m.length===0)&&!i){const v=`${p.taskReferenceName}_empty_branch_${g}`;c.push({id:v,type:"default",data:{label:`分支 ${g+1} (空)`,layoutDirection:n,taskReferenceName:v,taskType:"EMPTY_BRANCH"},position:{x:0,y:0},sourcePosition:n==="LR"?q.Position.Right:q.Position.Bottom,targetPosition:n==="LR"?q.Position.Left:q.Position.Top,style:{background:"transparent",border:"2px dashed var(--border-secondary, #64748b)",borderRadius:"8px",padding:"6px 12px",fontSize:"11px",color:"var(--text-tertiary, #94a3b8)",minWidth:"80px",textAlign:"center"}}),u.push({id:`e-${p.taskReferenceName}-${v}`,source:p.taskReferenceName,sourceHandle:`branch_${g}`,target:v,label:`分支 ${g+1}`,animated:!0,data:{forkIndex:g},style:{stroke:"#10b981",strokeDasharray:"5,5"}}),u.push({id:`e-${v}-${e.taskReferenceName}`,source:v,target:e.taskReferenceName,animated:!0,style:{strokeDasharray:"5,5"}})}})}return{nodes:[o,...c],edges:u,taskMap:s,nextId:t+1}}function qr(e,t,r,n="TB"){const a=[],i=[];let o=t;const s={};for(let c=0;c<e.length;c++){const u=e[c],d={...r,...s},l=Rs(u,o,d,n,e);if(a.push(...l.nodes),i.push(...l.edges),Object.assign(s,l.taskMap),o=l.nextId,c>0){const p=e[c-1];Is(p,u,i)}}return{nodes:a,edges:i,taskMap:s,nextId:o}}function Is(e,t,r){if(e.type==="FORK_JOIN"||e.type==="FORK_JOIN_DYNAMIC")return;const n=Pr(e),a=t.taskReferenceName,i=`e-${n}-${a}`;r.find(o=>o.id===i)||r.push({id:i,source:n,target:a,animated:!0})}function Pr(e){const t=e.type||"SIMPLE";return t==="DECISION"||t==="SWITCH"?`${e.taskReferenceName}_join`:e.taskReferenceName}const ue=Lh;function Ar(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Lr,js;function zh(){if(js)return Lr;js=1;function e(){this.__data__=[],this.size=0}return Lr=e,Lr}var Dr,Os;function Pe(){if(Os)return Dr;Os=1;function e(t,r){return t===r||t!==t&&r!==r}return Dr=e,Dr}var Mr,qs;function cr(){if(qs)return Mr;qs=1;var e=Pe();function t(r,n){for(var a=r.length;a--;)if(e(r[a][0],n))return a;return-1}return Mr=t,Mr}var Br,Ps;function Hh(){if(Ps)return Br;Ps=1;var e=cr(),t=Array.prototype,r=t.splice;function n(a){var i=this.__data__,o=e(i,a);if(o<0)return!1;var s=i.length-1;return o==s?i.pop():r.call(i,o,1),--this.size,!0}return Br=n,Br}var Wr,As;function Gh(){if(As)return Wr;As=1;var e=cr();function t(r){var n=this.__data__,a=e(n,r);return a<0?void 0:n[a][1]}return Wr=t,Wr}var Fr,Ls;function Uh(){if(Ls)return Fr;Ls=1;var e=cr();function t(r){return e(this.__data__,r)>-1}return Fr=t,Fr}var $r,Ds;function Kh(){if(Ds)return $r;Ds=1;var e=cr();function t(r,n){var a=this.__data__,i=e(a,r);return i<0?(++this.size,a.push([r,n])):a[i][1]=n,this}return $r=t,$r}var zr,Ms;function dr(){if(Ms)return zr;Ms=1;var e=zh(),t=Hh(),r=Gh(),n=Uh(),a=Kh();function i(o){var s=-1,c=o==null?0:o.length;for(this.clear();++s<c;){var u=o[s];this.set(u[0],u[1])}}return i.prototype.clear=e,i.prototype.delete=t,i.prototype.get=r,i.prototype.has=n,i.prototype.set=a,zr=i,zr}var Hr,Bs;function Jh(){if(Bs)return Hr;Bs=1;var e=dr();function t(){this.__data__=new e,this.size=0}return Hr=t,Hr}var Gr,Ws;function Vh(){if(Ws)return Gr;Ws=1;function e(t){var r=this.__data__,n=r.delete(t);return this.size=r.size,n}return Gr=e,Gr}var Ur,Fs;function Yh(){if(Fs)return Ur;Fs=1;function e(t){return this.__data__.get(t)}return Ur=e,Ur}var Kr,$s;function Xh(){if($s)return Kr;$s=1;function e(t){return this.__data__.has(t)}return Kr=e,Kr}var Jr,zs;function Hs(){if(zs)return Jr;zs=1;var e=typeof sr=="object"&&sr&&sr.Object===Object&&sr;return Jr=e,Jr}var Vr,Gs;function he(){if(Gs)return Vr;Gs=1;var e=Hs(),t=typeof self=="object"&&self&&self.Object===Object&&self,r=e||t||Function("return this")();return Vr=r,Vr}var Yr,Us;function Ae(){if(Us)return Yr;Us=1;var e=he(),t=e.Symbol;return Yr=t,Yr}var Xr,Ks;function Zh(){if(Ks)return Xr;Ks=1;var e=Ae(),t=Object.prototype,r=t.hasOwnProperty,n=t.toString,a=e?e.toStringTag:void 0;function i(o){var s=r.call(o,a),c=o[a];try{o[a]=void 0;var u=!0}catch{}var d=n.call(o);return u&&(s?o[a]=c:delete o[a]),d}return Xr=i,Xr}var Zr,Js;function Qh(){if(Js)return Zr;Js=1;var e=Object.prototype,t=e.toString;function r(n){return t.call(n)}return Zr=r,Zr}var Qr,Vs;function Ne(){if(Vs)return Qr;Vs=1;var e=Ae(),t=Zh(),r=Qh(),n="[object Null]",a="[object Undefined]",i=e?e.toStringTag:void 0;function o(s){return s==null?s===void 0?a:n:i&&i in Object(s)?t(s):r(s)}return Qr=o,Qr}var et,Ys;function de(){if(Ys)return et;Ys=1;function e(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}return et=e,et}var rt,Xs;function Ve(){if(Xs)return rt;Xs=1;var e=Ne(),t=de(),r="[object AsyncFunction]",n="[object Function]",a="[object GeneratorFunction]",i="[object Proxy]";function o(s){if(!t(s))return!1;var c=e(s);return c==n||c==a||c==r||c==i}return rt=o,rt}var tt,Zs;function ev(){if(Zs)return tt;Zs=1;var e=he(),t=e["__core-js_shared__"];return tt=t,tt}var nt,Qs;function rv(){if(Qs)return nt;Qs=1;var e=ev(),t=(function(){var n=/[^.]+$/.exec(e&&e.keys&&e.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""})();function r(n){return!!t&&t in n}return nt=r,nt}var at,eu;function ru(){if(eu)return at;eu=1;var e=Function.prototype,t=e.toString;function r(n){if(n!=null){try{return t.call(n)}catch{}try{return n+""}catch{}}return""}return at=r,at}var it,tu;function tv(){if(tu)return it;tu=1;var e=Ve(),t=rv(),r=de(),n=ru(),a=/[\\^$.*+?()[\]{}|]/g,i=/^\[object .+?Constructor\]$/,o=Function.prototype,s=Object.prototype,c=o.toString,u=s.hasOwnProperty,d=RegExp("^"+c.call(u).replace(a,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function l(p){if(!r(p)||t(p))return!1;var h=e(p)?d:i;return h.test(n(p))}return it=l,it}var ot,nu;function nv(){if(nu)return ot;nu=1;function e(t,r){return t?.[r]}return ot=e,ot}var st,au;function Re(){if(au)return st;au=1;var e=tv(),t=nv();function r(n,a){var i=t(n,a);return e(i)?i:void 0}return st=r,st}var ut,iu;function ct(){if(iu)return ut;iu=1;var e=Re(),t=he(),r=e(t,"Map");return ut=r,ut}var dt,ou;function lr(){if(ou)return dt;ou=1;var e=Re(),t=e(Object,"create");return dt=t,dt}var lt,su;function av(){if(su)return lt;su=1;var e=lr();function t(){this.__data__=e?e(null):{},this.size=0}return lt=t,lt}var ft,uu;function iv(){if(uu)return ft;uu=1;function e(t){var r=this.has(t)&&delete this.__data__[t];return this.size-=r?1:0,r}return ft=e,ft}var pt,cu;function ov(){if(cu)return pt;cu=1;var e=lr(),t="__lodash_hash_undefined__",r=Object.prototype,n=r.hasOwnProperty;function a(i){var o=this.__data__;if(e){var s=o[i];return s===t?void 0:s}return n.call(o,i)?o[i]:void 0}return pt=a,pt}var ht,du;function sv(){if(du)return ht;du=1;var e=lr(),t=Object.prototype,r=t.hasOwnProperty;function n(a){var i=this.__data__;return e?i[a]!==void 0:r.call(i,a)}return ht=n,ht}var vt,lu;function uv(){if(lu)return vt;lu=1;var e=lr(),t="__lodash_hash_undefined__";function r(n,a){var i=this.__data__;return this.size+=this.has(n)?0:1,i[n]=e&&a===void 0?t:a,this}return vt=r,vt}var gt,fu;function cv(){if(fu)return gt;fu=1;var e=av(),t=iv(),r=ov(),n=sv(),a=uv();function i(o){var s=-1,c=o==null?0:o.length;for(this.clear();++s<c;){var u=o[s];this.set(u[0],u[1])}}return i.prototype.clear=e,i.prototype.delete=t,i.prototype.get=r,i.prototype.has=n,i.prototype.set=a,gt=i,gt}var mt,pu;function dv(){if(pu)return mt;pu=1;var e=cv(),t=dr(),r=ct();function n(){this.size=0,this.__data__={hash:new e,map:new(r||t),string:new e}}return mt=n,mt}var yt,hu;function lv(){if(hu)return yt;hu=1;function e(t){var r=typeof t;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?t!=="__proto__":t===null}return yt=e,yt}var bt,vu;function fr(){if(vu)return bt;vu=1;var e=lv();function t(r,n){var a=r.__data__;return e(n)?a[typeof n=="string"?"string":"hash"]:a.map}return bt=t,bt}var xt,gu;function fv(){if(gu)return xt;gu=1;var e=fr();function t(r){var n=e(this,r).delete(r);return this.size-=n?1:0,n}return xt=t,xt}var _t,mu;function pv(){if(mu)return _t;mu=1;var e=fr();function t(r){return e(this,r).get(r)}return _t=t,_t}var kt,yu;function hv(){if(yu)return kt;yu=1;var e=fr();function t(r){return e(this,r).has(r)}return kt=t,kt}var St,bu;function vv(){if(bu)return St;bu=1;var e=fr();function t(r,n){var a=e(this,r),i=a.size;return a.set(r,n),this.size+=a.size==i?0:1,this}return St=t,St}var wt,xu;function Et(){if(xu)return wt;xu=1;var e=dv(),t=fv(),r=pv(),n=hv(),a=vv();function i(o){var s=-1,c=o==null?0:o.length;for(this.clear();++s<c;){var u=o[s];this.set(u[0],u[1])}}return i.prototype.clear=e,i.prototype.delete=t,i.prototype.get=r,i.prototype.has=n,i.prototype.set=a,wt=i,wt}var Tt,_u;function gv(){if(_u)return Tt;_u=1;var e=dr(),t=ct(),r=Et(),n=200;function a(i,o){var s=this.__data__;if(s instanceof e){var c=s.__data__;if(!t||c.length<n-1)return c.push([i,o]),this.size=++s.size,this;s=this.__data__=new r(c)}return s.set(i,o),this.size=s.size,this}return Tt=a,Tt}var Ct,ku;function pr(){if(ku)return Ct;ku=1;var e=dr(),t=Jh(),r=Vh(),n=Yh(),a=Xh(),i=gv();function o(s){var c=this.__data__=new e(s);this.size=c.size}return o.prototype.clear=t,o.prototype.delete=r,o.prototype.get=n,o.prototype.has=a,o.prototype.set=i,Ct=o,Ct}var Nt,Su;function Rt(){if(Su)return Nt;Su=1;function e(t,r){for(var n=-1,a=t==null?0:t.length;++n<a&&r(t[n],n,t)!==!1;);return t}return Nt=e,Nt}var It,wu;function Eu(){if(wu)return It;wu=1;var e=Re(),t=(function(){try{var r=e(Object,"defineProperty");return r({},"",{}),r}catch{}})();return It=t,It}var jt,Tu;function hr(){if(Tu)return jt;Tu=1;var e=Eu();function t(r,n,a){n=="__proto__"&&e?e(r,n,{configurable:!0,enumerable:!0,value:a,writable:!0}):r[n]=a}return jt=t,jt}var Ot,Cu;function vr(){if(Cu)return Ot;Cu=1;var e=hr(),t=Pe(),r=Object.prototype,n=r.hasOwnProperty;function a(i,o,s){var c=i[o];(!(n.call(i,o)&&t(c,s))||s===void 0&&!(o in i))&&e(i,o,s)}return Ot=a,Ot}var qt,Nu;function Ye(){if(Nu)return qt;Nu=1;var e=vr(),t=hr();function r(n,a,i,o){var s=!i;i||(i={});for(var c=-1,u=a.length;++c<u;){var d=a[c],l=o?o(i[d],n[d],d,i,n):void 0;l===void 0&&(l=n[d]),s?t(i,d,l):e(i,d,l)}return i}return qt=r,qt}var Pt,Ru;function mv(){if(Ru)return Pt;Ru=1;function e(t,r){for(var n=-1,a=Array(t);++n<t;)a[n]=r(n);return a}return Pt=e,Pt}var At,Iu;function ye(){if(Iu)return At;Iu=1;function e(t){return t!=null&&typeof t=="object"}return At=e,At}var Lt,ju;function yv(){if(ju)return Lt;ju=1;var e=Ne(),t=ye(),r="[object Arguments]";function n(a){return t(a)&&e(a)==r}return Lt=n,Lt}var Dt,Ou;function Xe(){if(Ou)return Dt;Ou=1;var e=yv(),t=ye(),r=Object.prototype,n=r.hasOwnProperty,a=r.propertyIsEnumerable,i=e((function(){return arguments})())?e:function(o){return t(o)&&n.call(o,"callee")&&!a.call(o,"callee")};return Dt=i,Dt}var Mt,qu;function ne(){if(qu)return Mt;qu=1;var e=Array.isArray;return Mt=e,Mt}var Ze={exports:{}},Bt,Pu;function bv(){if(Pu)return Bt;Pu=1;function e(){return!1}return Bt=e,Bt}Ze.exports;var Au;function Le(){return Au||(Au=1,(function(e,t){var r=he(),n=bv(),a=t&&!t.nodeType&&t,i=a&&!0&&e&&!e.nodeType&&e,o=i&&i.exports===a,s=o?r.Buffer:void 0,c=s?s.isBuffer:void 0,u=c||n;e.exports=u})(Ze,Ze.exports)),Ze.exports}var Wt,Lu;function gr(){if(Lu)return Wt;Lu=1;var e=9007199254740991,t=/^(?:0|[1-9]\d*)$/;function r(n,a){var i=typeof n;return a=a??e,!!a&&(i=="number"||i!="symbol"&&t.test(n))&&n>-1&&n%1==0&&n<a}return Wt=r,Wt}var Ft,Du;function $t(){if(Du)return Ft;Du=1;var e=9007199254740991;function t(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=e}return Ft=t,Ft}var zt,Mu;function xv(){if(Mu)return zt;Mu=1;var e=Ne(),t=$t(),r=ye(),n="[object Arguments]",a="[object Array]",i="[object Boolean]",o="[object Date]",s="[object Error]",c="[object Function]",u="[object Map]",d="[object Number]",l="[object Object]",p="[object RegExp]",h="[object Set]",m="[object String]",g="[object WeakMap]",v="[object ArrayBuffer]",x="[object DataView]",b="[object Float32Array]",_="[object Float64Array]",y="[object Int8Array]",S="[object Int16Array]",w="[object Int32Array]",E="[object Uint8Array]",T="[object Uint8ClampedArray]",C="[object Uint16Array]",R="[object Uint32Array]",A={};A[b]=A[_]=A[y]=A[S]=A[w]=A[E]=A[T]=A[C]=A[R]=!0,A[n]=A[a]=A[v]=A[i]=A[x]=A[o]=A[s]=A[c]=A[u]=A[d]=A[l]=A[p]=A[h]=A[m]=A[g]=!1;function B(N){return r(N)&&t(N.length)&&!!A[e(N)]}return zt=B,zt}var Ht,Bu;function mr(){if(Bu)return Ht;Bu=1;function e(t){return function(r){return t(r)}}return Ht=e,Ht}var Qe={exports:{}};Qe.exports;var Wu;function Gt(){return Wu||(Wu=1,(function(e,t){var r=Hs(),n=t&&!t.nodeType&&t,a=n&&!0&&e&&!e.nodeType&&e,i=a&&a.exports===n,o=i&&r.process,s=(function(){try{var c=a&&a.require&&a.require("util").types;return c||o&&o.binding&&o.binding("util")}catch{}})();e.exports=s})(Qe,Qe.exports)),Qe.exports}var Ut,Fu;function er(){if(Fu)return Ut;Fu=1;var e=xv(),t=mr(),r=Gt(),n=r&&r.isTypedArray,a=n?t(n):e;return Ut=a,Ut}var Kt,$u;function zu(){if($u)return Kt;$u=1;var e=mv(),t=Xe(),r=ne(),n=Le(),a=gr(),i=er(),o=Object.prototype,s=o.hasOwnProperty;function c(u,d){var l=r(u),p=!l&&t(u),h=!l&&!p&&n(u),m=!l&&!p&&!h&&i(u),g=l||p||h||m,v=g?e(u.length,String):[],x=v.length;for(var b in u)(d||s.call(u,b))&&!(g&&(b=="length"||h&&(b=="offset"||b=="parent")||m&&(b=="buffer"||b=="byteLength"||b=="byteOffset")||a(b,x)))&&v.push(b);return v}return Kt=c,Kt}var Jt,Hu;function yr(){if(Hu)return Jt;Hu=1;var e=Object.prototype;function t(r){var n=r&&r.constructor,a=typeof n=="function"&&n.prototype||e;return r===a}return Jt=t,Jt}var Vt,Gu;function Uu(){if(Gu)return Vt;Gu=1;function e(t,r){return function(n){return t(r(n))}}return Vt=e,Vt}var Yt,Ku;function _v(){if(Ku)return Yt;Ku=1;var e=Uu(),t=e(Object.keys,Object);return Yt=t,Yt}var Xt,Ju;function Zt(){if(Ju)return Xt;Ju=1;var e=yr(),t=_v(),r=Object.prototype,n=r.hasOwnProperty;function a(i){if(!e(i))return t(i);var o=[];for(var s in Object(i))n.call(i,s)&&s!="constructor"&&o.push(s);return o}return Xt=a,Xt}var Qt,Vu;function xe(){if(Vu)return Qt;Vu=1;var e=Ve(),t=$t();function r(n){return n!=null&&t(n.length)&&!e(n)}return Qt=r,Qt}var en,Yu;function we(){if(Yu)return en;Yu=1;var e=zu(),t=Zt(),r=xe();function n(a){return r(a)?e(a):t(a)}return en=n,en}var rn,Xu;function kv(){if(Xu)return rn;Xu=1;var e=Ye(),t=we();function r(n,a){return n&&e(a,t(a),n)}return rn=r,rn}var tn,Zu;function Sv(){if(Zu)return tn;Zu=1;function e(t){var r=[];if(t!=null)for(var n in Object(t))r.push(n);return r}return tn=e,tn}var nn,Qu;function wv(){if(Qu)return nn;Qu=1;var e=de(),t=yr(),r=Sv(),n=Object.prototype,a=n.hasOwnProperty;function i(o){if(!e(o))return r(o);var s=t(o),c=[];for(var u in o)u=="constructor"&&(s||!a.call(o,u))||c.push(u);return c}return nn=i,nn}var an,ec;function Ie(){if(ec)return an;ec=1;var e=zu(),t=wv(),r=xe();function n(a){return r(a)?e(a,!0):t(a)}return an=n,an}var on,rc;function Ev(){if(rc)return on;rc=1;var e=Ye(),t=Ie();function r(n,a){return n&&e(a,t(a),n)}return on=r,on}var rr={exports:{}};rr.exports;var tc;function nc(){return tc||(tc=1,(function(e,t){var r=he(),n=t&&!t.nodeType&&t,a=n&&!0&&e&&!e.nodeType&&e,i=a&&a.exports===n,o=i?r.Buffer:void 0,s=o?o.allocUnsafe:void 0;function c(u,d){if(d)return u.slice();var l=u.length,p=s?s(l):new u.constructor(l);return u.copy(p),p}e.exports=c})(rr,rr.exports)),rr.exports}var sn,ac;function ic(){if(ac)return sn;ac=1;function e(t,r){var n=-1,a=t.length;for(r||(r=Array(a));++n<a;)r[n]=t[n];return r}return sn=e,sn}var un,oc;function sc(){if(oc)return un;oc=1;function e(t,r){for(var n=-1,a=t==null?0:t.length,i=0,o=[];++n<a;){var s=t[n];r(s,n,t)&&(o[i++]=s)}return o}return un=e,un}var cn,uc;function cc(){if(uc)return cn;uc=1;function e(){return[]}return cn=e,cn}var dn,dc;function ln(){if(dc)return dn;dc=1;var e=sc(),t=cc(),r=Object.prototype,n=r.propertyIsEnumerable,a=Object.getOwnPropertySymbols,i=a?function(o){return o==null?[]:(o=Object(o),e(a(o),function(s){return n.call(o,s)}))}:t;return dn=i,dn}var fn,lc;function Tv(){if(lc)return fn;lc=1;var e=Ye(),t=ln();function r(n,a){return e(n,t(n),a)}return fn=r,fn}var pn,fc;function hn(){if(fc)return pn;fc=1;function e(t,r){for(var n=-1,a=r.length,i=t.length;++n<a;)t[i+n]=r[n];return t}return pn=e,pn}var vn,pc;function br(){if(pc)return vn;pc=1;var e=Uu(),t=e(Object.getPrototypeOf,Object);return vn=t,vn}var gn,hc;function vc(){if(hc)return gn;hc=1;var e=hn(),t=br(),r=ln(),n=cc(),a=Object.getOwnPropertySymbols,i=a?function(o){for(var s=[];o;)e(s,r(o)),o=t(o);return s}:n;return gn=i,gn}var mn,gc;function Cv(){if(gc)return mn;gc=1;var e=Ye(),t=vc();function r(n,a){return e(n,t(n),a)}return mn=r,mn}var yn,mc;function yc(){if(mc)return yn;mc=1;var e=hn(),t=ne();function r(n,a,i){var o=a(n);return t(n)?o:e(o,i(n))}return yn=r,yn}var bn,bc;function xc(){if(bc)return bn;bc=1;var e=yc(),t=ln(),r=we();function n(a){return e(a,r,t)}return bn=n,bn}var xn,_c;function Nv(){if(_c)return xn;_c=1;var e=yc(),t=vc(),r=Ie();function n(a){return e(a,r,t)}return xn=n,xn}var _n,kc;function Rv(){if(kc)return _n;kc=1;var e=Re(),t=he(),r=e(t,"DataView");return _n=r,_n}var kn,Sc;function Iv(){if(Sc)return kn;Sc=1;var e=Re(),t=he(),r=e(t,"Promise");return kn=r,kn}var Sn,wc;function Ec(){if(wc)return Sn;wc=1;var e=Re(),t=he(),r=e(t,"Set");return Sn=r,Sn}var wn,Tc;function jv(){if(Tc)return wn;Tc=1;var e=Re(),t=he(),r=e(t,"WeakMap");return wn=r,wn}var En,Cc;function De(){if(Cc)return En;Cc=1;var e=Rv(),t=ct(),r=Iv(),n=Ec(),a=jv(),i=Ne(),o=ru(),s="[object Map]",c="[object Object]",u="[object Promise]",d="[object Set]",l="[object WeakMap]",p="[object DataView]",h=o(e),m=o(t),g=o(r),v=o(n),x=o(a),b=i;return(e&&b(new e(new ArrayBuffer(1)))!=p||t&&b(new t)!=s||r&&b(r.resolve())!=u||n&&b(new n)!=d||a&&b(new a)!=l)&&(b=function(_){var y=i(_),S=y==c?_.constructor:void 0,w=S?o(S):"";if(w)switch(w){case h:return p;case m:return s;case g:return u;case v:return d;case x:return l}return y}),En=b,En}var Tn,Nc;function Ov(){if(Nc)return Tn;Nc=1;var e=Object.prototype,t=e.hasOwnProperty;function r(n){var a=n.length,i=new n.constructor(a);return a&&typeof n[0]=="string"&&t.call(n,"index")&&(i.index=n.index,i.input=n.input),i}return Tn=r,Tn}var Cn,Rc;function Ic(){if(Rc)return Cn;Rc=1;var e=he(),t=e.Uint8Array;return Cn=t,Cn}var Nn,jc;function Rn(){if(jc)return Nn;jc=1;var e=Ic();function t(r){var n=new r.constructor(r.byteLength);return new e(n).set(new e(r)),n}return Nn=t,Nn}var In,Oc;function qv(){if(Oc)return In;Oc=1;var e=Rn();function t(r,n){var a=n?e(r.buffer):r.buffer;return new r.constructor(a,r.byteOffset,r.byteLength)}return In=t,In}var jn,qc;function Pv(){if(qc)return jn;qc=1;var e=/\w*$/;function t(r){var n=new r.constructor(r.source,e.exec(r));return n.lastIndex=r.lastIndex,n}return jn=t,jn}var On,Pc;function Av(){if(Pc)return On;Pc=1;var e=Ae(),t=e?e.prototype:void 0,r=t?t.valueOf:void 0;function n(a){return r?Object(r.call(a)):{}}return On=n,On}var qn,Ac;function Lc(){if(Ac)return qn;Ac=1;var e=Rn();function t(r,n){var a=n?e(r.buffer):r.buffer;return new r.constructor(a,r.byteOffset,r.length)}return qn=t,qn}var Pn,Dc;function Lv(){if(Dc)return Pn;Dc=1;var e=Rn(),t=qv(),r=Pv(),n=Av(),a=Lc(),i="[object Boolean]",o="[object Date]",s="[object Map]",c="[object Number]",u="[object RegExp]",d="[object Set]",l="[object String]",p="[object Symbol]",h="[object ArrayBuffer]",m="[object DataView]",g="[object Float32Array]",v="[object Float64Array]",x="[object Int8Array]",b="[object Int16Array]",_="[object Int32Array]",y="[object Uint8Array]",S="[object Uint8ClampedArray]",w="[object Uint16Array]",E="[object Uint32Array]";function T(C,R,A){var B=C.constructor;switch(R){case h:return e(C);case i:case o:return new B(+C);case m:return t(C,A);case g:case v:case x:case b:case _:case y:case S:case w:case E:return a(C,A);case s:return new B;case c:case l:return new B(C);case u:return r(C);case d:return new B;case p:return n(C)}}return Pn=T,Pn}var An,Mc;function Bc(){if(Mc)return An;Mc=1;var e=de(),t=Object.create,r=(function(){function n(){}return function(a){if(!e(a))return{};if(t)return t(a);n.prototype=a;var i=new n;return n.prototype=void 0,i}})();return An=r,An}var Ln,Wc;function Fc(){if(Wc)return Ln;Wc=1;var e=Bc(),t=br(),r=yr();function n(a){return typeof a.constructor=="function"&&!r(a)?e(t(a)):{}}return Ln=n,Ln}var Dn,$c;function Dv(){if($c)return Dn;$c=1;var e=De(),t=ye(),r="[object Map]";function n(a){return t(a)&&e(a)==r}return Dn=n,Dn}var Mn,zc;function Mv(){if(zc)return Mn;zc=1;var e=Dv(),t=mr(),r=Gt(),n=r&&r.isMap,a=n?t(n):e;return Mn=a,Mn}var Bn,Hc;function Bv(){if(Hc)return Bn;Hc=1;var e=De(),t=ye(),r="[object Set]";function n(a){return t(a)&&e(a)==r}return Bn=n,Bn}var Wn,Gc;function Wv(){if(Gc)return Wn;Gc=1;var e=Bv(),t=mr(),r=Gt(),n=r&&r.isSet,a=n?t(n):e;return Wn=a,Wn}var Fn,Uc;function Kc(){if(Uc)return Fn;Uc=1;var e=pr(),t=Rt(),r=vr(),n=kv(),a=Ev(),i=nc(),o=ic(),s=Tv(),c=Cv(),u=xc(),d=Nv(),l=De(),p=Ov(),h=Lv(),m=Fc(),g=ne(),v=Le(),x=Mv(),b=de(),_=Wv(),y=we(),S=Ie(),w=1,E=2,T=4,C="[object Arguments]",R="[object Array]",A="[object Boolean]",B="[object Date]",N="[object Error]",M="[object Function]",L="[object GeneratorFunction]",$="[object Map]",U="[object Number]",W="[object Object]",z="[object RegExp]",K="[object Set]",j="[object String]",F="[object Symbol]",G="[object WeakMap]",k="[object ArrayBuffer]",I="[object DataView]",P="[object Float32Array]",O="[object Float64Array]",H="[object Int8Array]",J="[object Int16Array]",Z="[object Int32Array]",ee="[object Uint8Array]",ce="[object Uint8ClampedArray]",te="[object Uint16Array]",re="[object Uint32Array]",Y={};Y[C]=Y[R]=Y[k]=Y[I]=Y[A]=Y[B]=Y[P]=Y[O]=Y[H]=Y[J]=Y[Z]=Y[$]=Y[U]=Y[W]=Y[z]=Y[K]=Y[j]=Y[F]=Y[ee]=Y[ce]=Y[te]=Y[re]=!0,Y[N]=Y[M]=Y[G]=!1;function Oe(X,He,Ge,wb,Nr,Te){var se,Rr=He&w,Ir=He&E,Eb=He&T;if(Ge&&(se=Nr?Ge(X,wb,Nr,Te):Ge(X)),se!==void 0)return se;if(!b(X))return X;var Sh=g(X);if(Sh){if(se=p(X),!Rr)return o(X,se)}else{var Ue=l(X),wh=Ue==M||Ue==L;if(v(X))return i(X,Rr);if(Ue==W||Ue==C||wh&&!Nr){if(se=Ir||wh?{}:m(X),!Rr)return Ir?c(X,a(se,X)):s(X,n(se,X))}else{if(!Y[Ue])return Nr?X:{};se=h(X,Ue,Rr)}}Te||(Te=new e);var Eh=Te.get(X);if(Eh)return Eh;Te.set(X,se),_(X)?X.forEach(function(Ce){se.add(Oe(Ce,He,Ge,Ce,X,Te))}):x(X)&&X.forEach(function(Ce,qe){se.set(qe,Oe(Ce,He,Ge,qe,X,Te))});var Tb=Eb?Ir?d:u:Ir?S:y,Th=Sh?void 0:Tb(X);return t(Th||X,function(Ce,qe){Th&&(qe=Ce,Ce=X[qe]),r(se,qe,Oe(Ce,He,Ge,qe,X,Te))}),se}return Fn=Oe,Fn}var $n,Jc;function Fv(){if(Jc)return $n;Jc=1;var e=Kc(),t=4;function r(n){return e(n,t)}return $n=r,$n}var zn,Vc;function Hn(){if(Vc)return zn;Vc=1;function e(t){return function(){return t}}return zn=e,zn}var Gn,Yc;function $v(){if(Yc)return Gn;Yc=1;function e(t){return function(r,n,a){for(var i=-1,o=Object(r),s=a(r),c=s.length;c--;){var u=s[t?c:++i];if(n(o[u],u,o)===!1)break}return r}}return Gn=e,Gn}var Un,Xc;function Kn(){if(Xc)return Un;Xc=1;var e=$v(),t=e();return Un=t,Un}var Jn,Zc;function Vn(){if(Zc)return Jn;Zc=1;var e=Kn(),t=we();function r(n,a){return n&&e(n,a,t)}return Jn=r,Jn}var Yn,Qc;function zv(){if(Qc)return Yn;Qc=1;var e=xe();function t(r,n){return function(a,i){if(a==null)return a;if(!e(a))return r(a,i);for(var o=a.length,s=n?o:-1,c=Object(a);(n?s--:++s<o)&&i(c[s],s,c)!==!1;);return a}}return Yn=t,Yn}var Xn,ed;function xr(){if(ed)return Xn;ed=1;var e=Vn(),t=zv(),r=t(e);return Xn=r,Xn}var Zn,rd;function je(){if(rd)return Zn;rd=1;function e(t){return t}return Zn=e,Zn}var Qn,td;function nd(){if(td)return Qn;td=1;var e=je();function t(r){return typeof r=="function"?r:e}return Qn=t,Qn}var ea,ad;function id(){if(ad)return ea;ad=1;var e=Rt(),t=xr(),r=nd(),n=ne();function a(i,o){var s=n(i)?e:t;return s(i,r(o))}return ea=a,ea}var ra,od;function sd(){return od||(od=1,ra=id()),ra}var ta,ud;function Hv(){if(ud)return ta;ud=1;var e=xr();function t(r,n){var a=[];return e(r,function(i,o,s){n(i,o,s)&&a.push(i)}),a}return ta=t,ta}var na,cd;function Gv(){if(cd)return na;cd=1;var e="__lodash_hash_undefined__";function t(r){return this.__data__.set(r,e),this}return na=t,na}var aa,dd;function Uv(){if(dd)return aa;dd=1;function e(t){return this.__data__.has(t)}return aa=e,aa}var ia,ld;function fd(){if(ld)return ia;ld=1;var e=Et(),t=Gv(),r=Uv();function n(a){var i=-1,o=a==null?0:a.length;for(this.__data__=new e;++i<o;)this.add(a[i])}return n.prototype.add=n.prototype.push=t,n.prototype.has=r,ia=n,ia}var oa,pd;function Kv(){if(pd)return oa;pd=1;function e(t,r){for(var n=-1,a=t==null?0:t.length;++n<a;)if(r(t[n],n,t))return!0;return!1}return oa=e,oa}var sa,hd;function vd(){if(hd)return sa;hd=1;function e(t,r){return t.has(r)}return sa=e,sa}var ua,gd;function md(){if(gd)return ua;gd=1;var e=fd(),t=Kv(),r=vd(),n=1,a=2;function i(o,s,c,u,d,l){var p=c&n,h=o.length,m=s.length;if(h!=m&&!(p&&m>h))return!1;var g=l.get(o),v=l.get(s);if(g&&v)return g==s&&v==o;var x=-1,b=!0,_=c&a?new e:void 0;for(l.set(o,s),l.set(s,o);++x<h;){var y=o[x],S=s[x];if(u)var w=p?u(S,y,x,s,o,l):u(y,S,x,o,s,l);if(w!==void 0){if(w)continue;b=!1;break}if(_){if(!t(s,function(E,T){if(!r(_,T)&&(y===E||d(y,E,c,u,l)))return _.push(T)})){b=!1;break}}else if(!(y===S||d(y,S,c,u,l))){b=!1;break}}return l.delete(o),l.delete(s),b}return ua=i,ua}var ca,yd;function Jv(){if(yd)return ca;yd=1;function e(t){var r=-1,n=Array(t.size);return t.forEach(function(a,i){n[++r]=[i,a]}),n}return ca=e,ca}var da,bd;function la(){if(bd)return da;bd=1;function e(t){var r=-1,n=Array(t.size);return t.forEach(function(a){n[++r]=a}),n}return da=e,da}var fa,xd;function Vv(){if(xd)return fa;xd=1;var e=Ae(),t=Ic(),r=Pe(),n=md(),a=Jv(),i=la(),o=1,s=2,c="[object Boolean]",u="[object Date]",d="[object Error]",l="[object Map]",p="[object Number]",h="[object RegExp]",m="[object Set]",g="[object String]",v="[object Symbol]",x="[object ArrayBuffer]",b="[object DataView]",_=e?e.prototype:void 0,y=_?_.valueOf:void 0;function S(w,E,T,C,R,A,B){switch(T){case b:if(w.byteLength!=E.byteLength||w.byteOffset!=E.byteOffset)return!1;w=w.buffer,E=E.buffer;case x:return!(w.byteLength!=E.byteLength||!A(new t(w),new t(E)));case c:case u:case p:return r(+w,+E);case d:return w.name==E.name&&w.message==E.message;case h:case g:return w==E+"";case l:var N=a;case m:var M=C&o;if(N||(N=i),w.size!=E.size&&!M)return!1;var L=B.get(w);if(L)return L==E;C|=s,B.set(w,E);var $=n(N(w),N(E),C,R,A,B);return B.delete(w),$;case v:if(y)return y.call(w)==y.call(E)}return!1}return fa=S,fa}var pa,_d;function Yv(){if(_d)return pa;_d=1;var e=xc(),t=1,r=Object.prototype,n=r.hasOwnProperty;function a(i,o,s,c,u,d){var l=s&t,p=e(i),h=p.length,m=e(o),g=m.length;if(h!=g&&!l)return!1;for(var v=h;v--;){var x=p[v];if(!(l?x in o:n.call(o,x)))return!1}var b=d.get(i),_=d.get(o);if(b&&_)return b==o&&_==i;var y=!0;d.set(i,o),d.set(o,i);for(var S=l;++v<h;){x=p[v];var w=i[x],E=o[x];if(c)var T=l?c(E,w,x,o,i,d):c(w,E,x,i,o,d);if(!(T===void 0?w===E||u(w,E,s,c,d):T)){y=!1;break}S||(S=x=="constructor")}if(y&&!S){var C=i.constructor,R=o.constructor;C!=R&&"constructor"in i&&"constructor"in o&&!(typeof C=="function"&&C instanceof C&&typeof R=="function"&&R instanceof R)&&(y=!1)}return d.delete(i),d.delete(o),y}return pa=a,pa}var ha,kd;function Xv(){if(kd)return ha;kd=1;var e=pr(),t=md(),r=Vv(),n=Yv(),a=De(),i=ne(),o=Le(),s=er(),c=1,u="[object Arguments]",d="[object Array]",l="[object Object]",p=Object.prototype,h=p.hasOwnProperty;function m(g,v,x,b,_,y){var S=i(g),w=i(v),E=S?d:a(g),T=w?d:a(v);E=E==u?l:E,T=T==u?l:T;var C=E==l,R=T==l,A=E==T;if(A&&o(g)){if(!o(v))return!1;S=!0,C=!1}if(A&&!C)return y||(y=new e),S||s(g)?t(g,v,x,b,_,y):r(g,v,E,x,b,_,y);if(!(x&c)){var B=C&&h.call(g,"__wrapped__"),N=R&&h.call(v,"__wrapped__");if(B||N){var M=B?g.value():g,L=N?v.value():v;return y||(y=new e),_(M,L,x,b,y)}}return A?(y||(y=new e),n(g,v,x,b,_,y)):!1}return ha=m,ha}var va,Sd;function wd(){if(Sd)return va;Sd=1;var e=Xv(),t=ye();function r(n,a,i,o,s){return n===a?!0:n==null||a==null||!t(n)&&!t(a)?n!==n&&a!==a:e(n,a,i,o,r,s)}return va=r,va}var ga,Ed;function Zv(){if(Ed)return ga;Ed=1;var e=pr(),t=wd(),r=1,n=2;function a(i,o,s,c){var u=s.length,d=u,l=!c;if(i==null)return!d;for(i=Object(i);u--;){var p=s[u];if(l&&p[2]?p[1]!==i[p[0]]:!(p[0]in i))return!1}for(;++u<d;){p=s[u];var h=p[0],m=i[h],g=p[1];if(l&&p[2]){if(m===void 0&&!(h in i))return!1}else{var v=new e;if(c)var x=c(m,g,h,i,o,v);if(!(x===void 0?t(g,m,r|n,c,v):x))return!1}}return!0}return ga=a,ga}var ma,Td;function Cd(){if(Td)return ma;Td=1;var e=de();function t(r){return r===r&&!e(r)}return ma=t,ma}var ya,Nd;function Qv(){if(Nd)return ya;Nd=1;var e=Cd(),t=we();function r(n){for(var a=t(n),i=a.length;i--;){var o=a[i],s=n[o];a[i]=[o,s,e(s)]}return a}return ya=r,ya}var ba,Rd;function Id(){if(Rd)return ba;Rd=1;function e(t,r){return function(n){return n==null?!1:n[t]===r&&(r!==void 0||t in Object(n))}}return ba=e,ba}var xa,jd;function eg(){if(jd)return xa;jd=1;var e=Zv(),t=Qv(),r=Id();function n(a){var i=t(a);return i.length==1&&i[0][2]?r(i[0][0],i[0][1]):function(o){return o===a||e(o,a,i)}}return xa=n,xa}var _a,Od;function Me(){if(Od)return _a;Od=1;var e=Ne(),t=ye(),r="[object Symbol]";function n(a){return typeof a=="symbol"||t(a)&&e(a)==r}return _a=n,_a}var ka,qd;function Sa(){if(qd)return ka;qd=1;var e=ne(),t=Me(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n=/^\w*$/;function a(i,o){if(e(i))return!1;var s=typeof i;return s=="number"||s=="symbol"||s=="boolean"||i==null||t(i)?!0:n.test(i)||!r.test(i)||o!=null&&i in Object(o)}return ka=a,ka}var wa,Pd;function rg(){if(Pd)return wa;Pd=1;var e=Et(),t="Expected a function";function r(n,a){if(typeof n!="function"||a!=null&&typeof a!="function")throw new TypeError(t);var i=function(){var o=arguments,s=a?a.apply(this,o):o[0],c=i.cache;if(c.has(s))return c.get(s);var u=n.apply(this,o);return i.cache=c.set(s,u)||c,u};return i.cache=new(r.Cache||e),i}return r.Cache=e,wa=r,wa}var Ea,Ad;function tg(){if(Ad)return Ea;Ad=1;var e=rg(),t=500;function r(n){var a=e(n,function(o){return i.size===t&&i.clear(),o}),i=a.cache;return a}return Ea=r,Ea}var Ta,Ld;function ng(){if(Ld)return Ta;Ld=1;var e=tg(),t=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,r=/\\(\\)?/g,n=e(function(a){var i=[];return a.charCodeAt(0)===46&&i.push(""),a.replace(t,function(o,s,c,u){i.push(c?u.replace(r,"$1"):s||o)}),i});return Ta=n,Ta}var Ca,Dd;function _r(){if(Dd)return Ca;Dd=1;function e(t,r){for(var n=-1,a=t==null?0:t.length,i=Array(a);++n<a;)i[n]=r(t[n],n,t);return i}return Ca=e,Ca}var Na,Md;function ag(){if(Md)return Na;Md=1;var e=Ae(),t=_r(),r=ne(),n=Me(),a=e?e.prototype:void 0,i=a?a.toString:void 0;function o(s){if(typeof s=="string")return s;if(r(s))return t(s,o)+"";if(n(s))return i?i.call(s):"";var c=s+"";return c=="0"&&1/s==-1/0?"-0":c}return Na=o,Na}var Ra,Bd;function Wd(){if(Bd)return Ra;Bd=1;var e=ag();function t(r){return r==null?"":e(r)}return Ra=t,Ra}var Ia,Fd;function kr(){if(Fd)return Ia;Fd=1;var e=ne(),t=Sa(),r=ng(),n=Wd();function a(i,o){return e(i)?i:t(i,o)?[i]:r(n(i))}return Ia=a,Ia}var ja,$d;function tr(){if($d)return ja;$d=1;var e=Me();function t(r){if(typeof r=="string"||e(r))return r;var n=r+"";return n=="0"&&1/r==-1/0?"-0":n}return ja=t,ja}var Oa,zd;function Sr(){if(zd)return Oa;zd=1;var e=kr(),t=tr();function r(n,a){a=e(a,n);for(var i=0,o=a.length;n!=null&&i<o;)n=n[t(a[i++])];return i&&i==o?n:void 0}return Oa=r,Oa}var qa,Hd;function ig(){if(Hd)return qa;Hd=1;var e=Sr();function t(r,n,a){var i=r==null?void 0:e(r,n);return i===void 0?a:i}return qa=t,qa}var Pa,Gd;function og(){if(Gd)return Pa;Gd=1;function e(t,r){return t!=null&&r in Object(t)}return Pa=e,Pa}var Aa,Ud;function Kd(){if(Ud)return Aa;Ud=1;var e=kr(),t=Xe(),r=ne(),n=gr(),a=$t(),i=tr();function o(s,c,u){c=e(c,s);for(var d=-1,l=c.length,p=!1;++d<l;){var h=i(c[d]);if(!(p=s!=null&&u(s,h)))break;s=s[h]}return p||++d!=l?p:(l=s==null?0:s.length,!!l&&a(l)&&n(h,l)&&(r(s)||t(s)))}return Aa=o,Aa}var La,Jd;function Vd(){if(Jd)return La;Jd=1;var e=og(),t=Kd();function r(n,a){return n!=null&&t(n,a,e)}return La=r,La}var Da,Yd;function sg(){if(Yd)return Da;Yd=1;var e=wd(),t=ig(),r=Vd(),n=Sa(),a=Cd(),i=Id(),o=tr(),s=1,c=2;function u(d,l){return n(d)&&a(l)?i(o(d),l):function(p){var h=t(p,d);return h===void 0&&h===l?r(p,d):e(l,h,s|c)}}return Da=u,Da}var Ma,Xd;function Zd(){if(Xd)return Ma;Xd=1;function e(t){return function(r){return r?.[t]}}return Ma=e,Ma}var Ba,Qd;function ug(){if(Qd)return Ba;Qd=1;var e=Sr();function t(r){return function(n){return e(n,r)}}return Ba=t,Ba}var Wa,el;function cg(){if(el)return Wa;el=1;var e=Zd(),t=ug(),r=Sa(),n=tr();function a(i){return r(i)?e(n(i)):t(i)}return Wa=a,Wa}var Fa,rl;function _e(){if(rl)return Fa;rl=1;var e=eg(),t=sg(),r=je(),n=ne(),a=cg();function i(o){return typeof o=="function"?o:o==null?r:typeof o=="object"?n(o)?t(o[0],o[1]):e(o):a(o)}return Fa=i,Fa}var $a,tl;function nl(){if(tl)return $a;tl=1;var e=sc(),t=Hv(),r=_e(),n=ne();function a(i,o){var s=n(i)?e:t;return s(i,r(o,3))}return $a=a,$a}var za,al;function dg(){if(al)return za;al=1;var e=Object.prototype,t=e.hasOwnProperty;function r(n,a){return n!=null&&t.call(n,a)}return za=r,za}var Ha,il;function ol(){if(il)return Ha;il=1;var e=dg(),t=Kd();function r(n,a){return n!=null&&t(n,a,e)}return Ha=r,Ha}var Ga,sl;function lg(){if(sl)return Ga;sl=1;var e=Zt(),t=De(),r=Xe(),n=ne(),a=xe(),i=Le(),o=yr(),s=er(),c="[object Map]",u="[object Set]",d=Object.prototype,l=d.hasOwnProperty;function p(h){if(h==null)return!0;if(a(h)&&(n(h)||typeof h=="string"||typeof h.splice=="function"||i(h)||s(h)||r(h)))return!h.length;var m=t(h);if(m==c||m==u)return!h.size;if(o(h))return!e(h).length;for(var g in h)if(l.call(h,g))return!1;return!0}return Ga=p,Ga}var Ua,ul;function cl(){if(ul)return Ua;ul=1;function e(t){return t===void 0}return Ua=e,Ua}var Ka,dl;function ll(){if(dl)return Ka;dl=1;var e=xr(),t=xe();function r(n,a){var i=-1,o=t(n)?Array(n.length):[];return e(n,function(s,c,u){o[++i]=a(s,c,u)}),o}return Ka=r,Ka}var Ja,fl;function pl(){if(fl)return Ja;fl=1;var e=_r(),t=_e(),r=ll(),n=ne();function a(i,o){var s=n(i)?e:r;return s(i,t(o,3))}return Ja=a,Ja}var Va,hl;function fg(){if(hl)return Va;hl=1;function e(t,r,n,a){var i=-1,o=t==null?0:t.length;for(a&&o&&(n=t[++i]);++i<o;)n=r(n,t[i],i,t);return n}return Va=e,Va}var Ya,vl;function pg(){if(vl)return Ya;vl=1;function e(t,r,n,a,i){return i(t,function(o,s,c){n=a?(a=!1,o):r(n,o,s,c)}),n}return Ya=e,Ya}var Xa,gl;function ml(){if(gl)return Xa;gl=1;var e=fg(),t=xr(),r=_e(),n=pg(),a=ne();function i(o,s,c){var u=a(o)?e:n,d=arguments.length<3;return u(o,r(s,4),c,d,t)}return Xa=i,Xa}var Za,yl;function hg(){if(yl)return Za;yl=1;var e=Ne(),t=ne(),r=ye(),n="[object String]";function a(i){return typeof i=="string"||!t(i)&&r(i)&&e(i)==n}return Za=a,Za}var Qa,bl;function vg(){if(bl)return Qa;bl=1;var e=Zd(),t=e("length");return Qa=t,Qa}var ei,xl;function gg(){if(xl)return ei;xl=1;var e="\\ud800-\\udfff",t="\\u0300-\\u036f",r="\\ufe20-\\ufe2f",n="\\u20d0-\\u20ff",a=t+r+n,i="\\ufe0e\\ufe0f",o="\\u200d",s=RegExp("["+o+e+a+i+"]");function c(u){return s.test(u)}return ei=c,ei}var ri,_l;function mg(){if(_l)return ri;_l=1;var e="\\ud800-\\udfff",t="\\u0300-\\u036f",r="\\ufe20-\\ufe2f",n="\\u20d0-\\u20ff",a=t+r+n,i="\\ufe0e\\ufe0f",o="["+e+"]",s="["+a+"]",c="\\ud83c[\\udffb-\\udfff]",u="(?:"+s+"|"+c+")",d="[^"+e+"]",l="(?:\\ud83c[\\udde6-\\uddff]){2}",p="[\\ud800-\\udbff][\\udc00-\\udfff]",h="\\u200d",m=u+"?",g="["+i+"]?",v="(?:"+h+"(?:"+[d,l,p].join("|")+")"+g+m+")*",x=g+m+v,b="(?:"+[d+s+"?",s,l,p,o].join("|")+")",_=RegExp(c+"(?="+c+")|"+b+x,"g");function y(S){for(var w=_.lastIndex=0;_.test(S);)++w;return w}return ri=y,ri}var ti,kl;function yg(){if(kl)return ti;kl=1;var e=vg(),t=gg(),r=mg();function n(a){return t(a)?r(a):e(a)}return ti=n,ti}var ni,Sl;function bg(){if(Sl)return ni;Sl=1;var e=Zt(),t=De(),r=xe(),n=hg(),a=yg(),i="[object Map]",o="[object Set]";function s(c){if(c==null)return 0;if(r(c))return n(c)?a(c):c.length;var u=t(c);return u==i||u==o?c.size:e(c).length}return ni=s,ni}var ai,wl;function xg(){if(wl)return ai;wl=1;var e=Rt(),t=Bc(),r=Vn(),n=_e(),a=br(),i=ne(),o=Le(),s=Ve(),c=de(),u=er();function d(l,p,h){var m=i(l),g=m||o(l)||u(l);if(p=n(p,4),h==null){var v=l&&l.constructor;g?h=m?new v:[]:c(l)?h=s(v)?t(a(l)):{}:h={}}return(g?e:r)(l,function(x,b,_){return p(h,x,b,_)}),h}return ai=d,ai}var ii,El;function _g(){if(El)return ii;El=1;var e=Ae(),t=Xe(),r=ne(),n=e?e.isConcatSpreadable:void 0;function a(i){return r(i)||t(i)||!!(n&&i&&i[n])}return ii=a,ii}var oi,Tl;function si(){if(Tl)return oi;Tl=1;var e=hn(),t=_g();function r(n,a,i,o,s){var c=-1,u=n.length;for(i||(i=t),s||(s=[]);++c<u;){var d=n[c];a>0&&i(d)?a>1?r(d,a-1,i,o,s):e(s,d):o||(s[s.length]=d)}return s}return oi=r,oi}var ui,Cl;function kg(){if(Cl)return ui;Cl=1;function e(t,r,n){switch(n.length){case 0:return t.call(r);case 1:return t.call(r,n[0]);case 2:return t.call(r,n[0],n[1]);case 3:return t.call(r,n[0],n[1],n[2])}return t.apply(r,n)}return ui=e,ui}var ci,Nl;function Rl(){if(Nl)return ci;Nl=1;var e=kg(),t=Math.max;function r(n,a,i){return a=t(a===void 0?n.length-1:a,0),function(){for(var o=arguments,s=-1,c=t(o.length-a,0),u=Array(c);++s<c;)u[s]=o[a+s];s=-1;for(var d=Array(a+1);++s<a;)d[s]=o[s];return d[a]=i(u),e(n,this,d)}}return ci=r,ci}var di,Il;function Sg(){if(Il)return di;Il=1;var e=Hn(),t=Eu(),r=je(),n=t?function(a,i){return t(a,"toString",{configurable:!0,enumerable:!1,value:e(i),writable:!0})}:r;return di=n,di}var li,jl;function wg(){if(jl)return li;jl=1;var e=800,t=16,r=Date.now;function n(a){var i=0,o=0;return function(){var s=r(),c=t-(s-o);if(o=s,c>0){if(++i>=e)return arguments[0]}else i=0;return a.apply(void 0,arguments)}}return li=n,li}var fi,Ol;function ql(){if(Ol)return fi;Ol=1;var e=Sg(),t=wg(),r=t(e);return fi=r,fi}var pi,Pl;function wr(){if(Pl)return pi;Pl=1;var e=je(),t=Rl(),r=ql();function n(a,i){return r(t(a,i,e),a+"")}return pi=n,pi}var hi,Al;function Ll(){if(Al)return hi;Al=1;function e(t,r,n,a){for(var i=t.length,o=n+(a?1:-1);a?o--:++o<i;)if(r(t[o],o,t))return o;return-1}return hi=e,hi}var vi,Dl;function Eg(){if(Dl)return vi;Dl=1;function e(t){return t!==t}return vi=e,vi}var gi,Ml;function Tg(){if(Ml)return gi;Ml=1;function e(t,r,n){for(var a=n-1,i=t.length;++a<i;)if(t[a]===r)return a;return-1}return gi=e,gi}var mi,Bl;function Cg(){if(Bl)return mi;Bl=1;var e=Ll(),t=Eg(),r=Tg();function n(a,i,o){return i===i?r(a,i,o):e(a,t,o)}return mi=n,mi}var yi,Wl;function Ng(){if(Wl)return yi;Wl=1;var e=Cg();function t(r,n){var a=r==null?0:r.length;return!!a&&e(r,n,0)>-1}return yi=t,yi}var bi,Fl;function Rg(){if(Fl)return bi;Fl=1;function e(t,r,n){for(var a=-1,i=t==null?0:t.length;++a<i;)if(n(r,t[a]))return!0;return!1}return bi=e,bi}var xi,$l;function Ig(){if($l)return xi;$l=1;function e(){}return xi=e,xi}var _i,zl;function jg(){if(zl)return _i;zl=1;var e=Ec(),t=Ig(),r=la(),n=1/0,a=e&&1/r(new e([,-0]))[1]==n?function(i){return new e(i)}:t;return _i=a,_i}var ki,Hl;function Og(){if(Hl)return ki;Hl=1;var e=fd(),t=Ng(),r=Rg(),n=vd(),a=jg(),i=la(),o=200;function s(c,u,d){var l=-1,p=t,h=c.length,m=!0,g=[],v=g;if(d)m=!1,p=r;else if(h>=o){var x=u?null:a(c);if(x)return i(x);m=!1,p=n,v=new e}else v=u?[]:g;e:for(;++l<h;){var b=c[l],_=u?u(b):b;if(b=d||b!==0?b:0,m&&_===_){for(var y=v.length;y--;)if(v[y]===_)continue e;u&&v.push(_),g.push(b)}else p(v,_,d)||(v!==g&&v.push(_),g.push(b))}return g}return ki=s,ki}var Si,Gl;function Ul(){if(Gl)return Si;Gl=1;var e=xe(),t=ye();function r(n){return t(n)&&e(n)}return Si=r,Si}var wi,Kl;function qg(){if(Kl)return wi;Kl=1;var e=si(),t=wr(),r=Og(),n=Ul(),a=t(function(i){return r(e(i,1,n,!0))});return wi=a,wi}var Ei,Jl;function Pg(){if(Jl)return Ei;Jl=1;var e=_r();function t(r,n){return e(n,function(a){return r[a]})}return Ei=t,Ei}var Ti,Vl;function Yl(){if(Vl)return Ti;Vl=1;var e=Pg(),t=we();function r(n){return n==null?[]:e(n,t(n))}return Ti=r,Ti}var Ci,Xl;function le(){if(Xl)return Ci;Xl=1;var e;if(typeof Ar=="function")try{e={clone:Fv(),constant:Hn(),each:sd(),filter:nl(),has:ol(),isArray:ne(),isEmpty:lg(),isFunction:Ve(),isUndefined:cl(),keys:we(),map:pl(),reduce:ml(),size:bg(),transform:xg(),union:qg(),values:Yl()}}catch{}return e||(e=window._),Ci=e,Ci}var Ni,Zl;function Ri(){if(Zl)return Ni;Zl=1;var e=le();Ni=a;var t="\0",r="\0",n="";function a(d){this._isDirected=e.has(d,"directed")?d.directed:!0,this._isMultigraph=e.has(d,"multigraph")?d.multigraph:!1,this._isCompound=e.has(d,"compound")?d.compound:!1,this._label=void 0,this._defaultNodeLabelFn=e.constant(void 0),this._defaultEdgeLabelFn=e.constant(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[r]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}a.prototype._nodeCount=0,a.prototype._edgeCount=0,a.prototype.isDirected=function(){return this._isDirected},a.prototype.isMultigraph=function(){return this._isMultigraph},a.prototype.isCompound=function(){return this._isCompound},a.prototype.setGraph=function(d){return this._label=d,this},a.prototype.graph=function(){return this._label},a.prototype.setDefaultNodeLabel=function(d){return e.isFunction(d)||(d=e.constant(d)),this._defaultNodeLabelFn=d,this},a.prototype.nodeCount=function(){return this._nodeCount},a.prototype.nodes=function(){return e.keys(this._nodes)},a.prototype.sources=function(){var d=this;return e.filter(this.nodes(),function(l){return e.isEmpty(d._in[l])})},a.prototype.sinks=function(){var d=this;return e.filter(this.nodes(),function(l){return e.isEmpty(d._out[l])})},a.prototype.setNodes=function(d,l){var p=arguments,h=this;return e.each(d,function(m){p.length>1?h.setNode(m,l):h.setNode(m)}),this},a.prototype.setNode=function(d,l){return e.has(this._nodes,d)?(arguments.length>1&&(this._nodes[d]=l),this):(this._nodes[d]=arguments.length>1?l:this._defaultNodeLabelFn(d),this._isCompound&&(this._parent[d]=r,this._children[d]={},this._children[r][d]=!0),this._in[d]={},this._preds[d]={},this._out[d]={},this._sucs[d]={},++this._nodeCount,this)},a.prototype.node=function(d){return this._nodes[d]},a.prototype.hasNode=function(d){return e.has(this._nodes,d)},a.prototype.removeNode=function(d){var l=this;if(e.has(this._nodes,d)){var p=function(h){l.removeEdge(l._edgeObjs[h])};delete this._nodes[d],this._isCompound&&(this._removeFromParentsChildList(d),delete this._parent[d],e.each(this.children(d),function(h){l.setParent(h)}),delete this._children[d]),e.each(e.keys(this._in[d]),p),delete this._in[d],delete this._preds[d],e.each(e.keys(this._out[d]),p),delete this._out[d],delete this._sucs[d],--this._nodeCount}return this},a.prototype.setParent=function(d,l){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(e.isUndefined(l))l=r;else{l+="";for(var p=l;!e.isUndefined(p);p=this.parent(p))if(p===d)throw new Error("Setting "+l+" as parent of "+d+" would create a cycle");this.setNode(l)}return this.setNode(d),this._removeFromParentsChildList(d),this._parent[d]=l,this._children[l][d]=!0,this},a.prototype._removeFromParentsChildList=function(d){delete this._children[this._parent[d]][d]},a.prototype.parent=function(d){if(this._isCompound){var l=this._parent[d];if(l!==r)return l}},a.prototype.children=function(d){if(e.isUndefined(d)&&(d=r),this._isCompound){var l=this._children[d];if(l)return e.keys(l)}else{if(d===r)return this.nodes();if(this.hasNode(d))return[]}},a.prototype.predecessors=function(d){var l=this._preds[d];if(l)return e.keys(l)},a.prototype.successors=function(d){var l=this._sucs[d];if(l)return e.keys(l)},a.prototype.neighbors=function(d){var l=this.predecessors(d);if(l)return e.union(l,this.successors(d))},a.prototype.isLeaf=function(d){var l;return this.isDirected()?l=this.successors(d):l=this.neighbors(d),l.length===0},a.prototype.filterNodes=function(d){var l=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});l.setGraph(this.graph());var p=this;e.each(this._nodes,function(g,v){d(v)&&l.setNode(v,g)}),e.each(this._edgeObjs,function(g){l.hasNode(g.v)&&l.hasNode(g.w)&&l.setEdge(g,p.edge(g))});var h={};function m(g){var v=p.parent(g);return v===void 0||l.hasNode(v)?(h[g]=v,v):v in h?h[v]:m(v)}return this._isCompound&&e.each(l.nodes(),function(g){l.setParent(g,m(g))}),l},a.prototype.setDefaultEdgeLabel=function(d){return e.isFunction(d)||(d=e.constant(d)),this._defaultEdgeLabelFn=d,this},a.prototype.edgeCount=function(){return this._edgeCount},a.prototype.edges=function(){return e.values(this._edgeObjs)},a.prototype.setPath=function(d,l){var p=this,h=arguments;return e.reduce(d,function(m,g){return h.length>1?p.setEdge(m,g,l):p.setEdge(m,g),g}),this},a.prototype.setEdge=function(){var d,l,p,h,m=!1,g=arguments[0];typeof g=="object"&&g!==null&&"v"in g?(d=g.v,l=g.w,p=g.name,arguments.length===2&&(h=arguments[1],m=!0)):(d=g,l=arguments[1],p=arguments[3],arguments.length>2&&(h=arguments[2],m=!0)),d=""+d,l=""+l,e.isUndefined(p)||(p=""+p);var v=s(this._isDirected,d,l,p);if(e.has(this._edgeLabels,v))return m&&(this._edgeLabels[v]=h),this;if(!e.isUndefined(p)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(d),this.setNode(l),this._edgeLabels[v]=m?h:this._defaultEdgeLabelFn(d,l,p);var x=c(this._isDirected,d,l,p);return d=x.v,l=x.w,Object.freeze(x),this._edgeObjs[v]=x,i(this._preds[l],d),i(this._sucs[d],l),this._in[l][v]=x,this._out[d][v]=x,this._edgeCount++,this},a.prototype.edge=function(d,l,p){var h=arguments.length===1?u(this._isDirected,arguments[0]):s(this._isDirected,d,l,p);return this._edgeLabels[h]},a.prototype.hasEdge=function(d,l,p){var h=arguments.length===1?u(this._isDirected,arguments[0]):s(this._isDirected,d,l,p);return e.has(this._edgeLabels,h)},a.prototype.removeEdge=function(d,l,p){var h=arguments.length===1?u(this._isDirected,arguments[0]):s(this._isDirected,d,l,p),m=this._edgeObjs[h];return m&&(d=m.v,l=m.w,delete this._edgeLabels[h],delete this._edgeObjs[h],o(this._preds[l],d),o(this._sucs[d],l),delete this._in[l][h],delete this._out[d][h],this._edgeCount--),this},a.prototype.inEdges=function(d,l){var p=this._in[d];if(p){var h=e.values(p);return l?e.filter(h,function(m){return m.v===l}):h}},a.prototype.outEdges=function(d,l){var p=this._out[d];if(p){var h=e.values(p);return l?e.filter(h,function(m){return m.w===l}):h}},a.prototype.nodeEdges=function(d,l){var p=this.inEdges(d,l);if(p)return p.concat(this.outEdges(d,l))};function i(d,l){d[l]?d[l]++:d[l]=1}function o(d,l){--d[l]||delete d[l]}function s(d,l,p,h){var m=""+l,g=""+p;if(!d&&m>g){var v=m;m=g,g=v}return m+n+g+n+(e.isUndefined(h)?t:h)}function c(d,l,p,h){var m=""+l,g=""+p;if(!d&&m>g){var v=m;m=g,g=v}var x={v:m,w:g};return h&&(x.name=h),x}function u(d,l){return s(d,l.v,l.w,l.name)}return Ni}var Ii,Ql;function Ag(){return Ql||(Ql=1,Ii="2.1.8"),Ii}var ji,ef;function Lg(){return ef||(ef=1,ji={Graph:Ri(),version:Ag()}),ji}var Oi,rf;function Dg(){if(rf)return Oi;rf=1;var e=le(),t=Ri();Oi={write:r,read:i};function r(o){var s={options:{directed:o.isDirected(),multigraph:o.isMultigraph(),compound:o.isCompound()},nodes:n(o),edges:a(o)};return e.isUndefined(o.graph())||(s.value=e.clone(o.graph())),s}function n(o){return e.map(o.nodes(),function(s){var c=o.node(s),u=o.parent(s),d={v:s};return e.isUndefined(c)||(d.value=c),e.isUndefined(u)||(d.parent=u),d})}function a(o){return e.map(o.edges(),function(s){var c=o.edge(s),u={v:s.v,w:s.w};return e.isUndefined(s.name)||(u.name=s.name),e.isUndefined(c)||(u.value=c),u})}function i(o){var s=new t(o.options).setGraph(o.value);return e.each(o.nodes,function(c){s.setNode(c.v,c.value),c.parent&&s.setParent(c.v,c.parent)}),e.each(o.edges,function(c){s.setEdge({v:c.v,w:c.w,name:c.name},c.value)}),s}return Oi}var qi,tf;function Mg(){if(tf)return qi;tf=1;var e=le();qi=t;function t(r){var n={},a=[],i;function o(s){e.has(n,s)||(n[s]=!0,i.push(s),e.each(r.successors(s),o),e.each(r.predecessors(s),o))}return e.each(r.nodes(),function(s){i=[],o(s),i.length&&a.push(i)}),a}return qi}var Pi,nf;function af(){if(nf)return Pi;nf=1;var e=le();Pi=t;function t(){this._arr=[],this._keyIndices={}}return t.prototype.size=function(){return this._arr.length},t.prototype.keys=function(){return this._arr.map(function(r){return r.key})},t.prototype.has=function(r){return e.has(this._keyIndices,r)},t.prototype.priority=function(r){var n=this._keyIndices[r];if(n!==void 0)return this._arr[n].priority},t.prototype.min=function(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key},t.prototype.add=function(r,n){var a=this._keyIndices;if(r=String(r),!e.has(a,r)){var i=this._arr,o=i.length;return a[r]=o,i.push({key:r,priority:n}),this._decrease(o),!0}return!1},t.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var r=this._arr.pop();return delete this._keyIndices[r.key],this._heapify(0),r.key},t.prototype.decrease=function(r,n){var a=this._keyIndices[r];if(n>this._arr[a].priority)throw new Error("New priority is greater than current priority. Key: "+r+" Old: "+this._arr[a].priority+" New: "+n);this._arr[a].priority=n,this._decrease(a)},t.prototype._heapify=function(r){var n=this._arr,a=2*r,i=a+1,o=r;a<n.length&&(o=n[a].priority<n[o].priority?a:o,i<n.length&&(o=n[i].priority<n[o].priority?i:o),o!==r&&(this._swap(r,o),this._heapify(o)))},t.prototype._decrease=function(r){for(var n=this._arr,a=n[r].priority,i;r!==0&&(i=r>>1,!(n[i].priority<a));)this._swap(r,i),r=i},t.prototype._swap=function(r,n){var a=this._arr,i=this._keyIndices,o=a[r],s=a[n];a[r]=s,a[n]=o,i[s.key]=r,i[o.key]=n},Pi}var Ai,of;function sf(){if(of)return Ai;of=1;var e=le(),t=af();Ai=n;var r=e.constant(1);function n(i,o,s,c){return a(i,String(o),s||r,c||function(u){return i.outEdges(u)})}function a(i,o,s,c){var u={},d=new t,l,p,h=function(m){var g=m.v!==l?m.v:m.w,v=u[g],x=s(m),b=p.distance+x;if(x<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+m+" Weight: "+x);b<v.distance&&(v.distance=b,v.predecessor=l,d.decrease(g,b))};for(i.nodes().forEach(function(m){var g=m===o?0:Number.POSITIVE_INFINITY;u[m]={distance:g},d.add(m,g)});d.size()>0&&(l=d.removeMin(),p=u[l],p.distance!==Number.POSITIVE_INFINITY);)c(l).forEach(h);return u}return Ai}var Li,uf;function Bg(){if(uf)return Li;uf=1;var e=sf(),t=le();Li=r;function r(n,a,i){return t.transform(n.nodes(),function(o,s){o[s]=e(n,s,a,i)},{})}return Li}var Di,cf;function df(){if(cf)return Di;cf=1;var e=le();Di=t;function t(r){var n=0,a=[],i={},o=[];function s(c){var u=i[c]={onStack:!0,lowlink:n,index:n++};if(a.push(c),r.successors(c).forEach(function(p){e.has(i,p)?i[p].onStack&&(u.lowlink=Math.min(u.lowlink,i[p].index)):(s(p),u.lowlink=Math.min(u.lowlink,i[p].lowlink))}),u.lowlink===u.index){var d=[],l;do l=a.pop(),i[l].onStack=!1,d.push(l);while(c!==l);o.push(d)}}return r.nodes().forEach(function(c){e.has(i,c)||s(c)}),o}return Di}var Mi,lf;function Wg(){if(lf)return Mi;lf=1;var e=le(),t=df();Mi=r;function r(n){return e.filter(t(n),function(a){return a.length>1||a.length===1&&n.hasEdge(a[0],a[0])})}return Mi}var Bi,ff;function Fg(){if(ff)return Bi;ff=1;var e=le();Bi=r;var t=e.constant(1);function r(a,i,o){return n(a,i||t,o||function(s){return a.outEdges(s)})}function n(a,i,o){var s={},c=a.nodes();return c.forEach(function(u){s[u]={},s[u][u]={distance:0},c.forEach(function(d){u!==d&&(s[u][d]={distance:Number.POSITIVE_INFINITY})}),o(u).forEach(function(d){var l=d.v===u?d.w:d.v,p=i(d);s[u][l]={distance:p,predecessor:u}})}),c.forEach(function(u){var d=s[u];c.forEach(function(l){var p=s[l];c.forEach(function(h){var m=p[u],g=d[h],v=p[h],x=m.distance+g.distance;x<v.distance&&(v.distance=x,v.predecessor=g.predecessor)})})}),s}return Bi}var Wi,pf;function hf(){if(pf)return Wi;pf=1;var e=le();Wi=t,t.CycleException=r;function t(n){var a={},i={},o=[];function s(c){if(e.has(i,c))throw new r;e.has(a,c)||(i[c]=!0,a[c]=!0,e.each(n.predecessors(c),s),delete i[c],o.push(c))}if(e.each(n.sinks(),s),e.size(a)!==n.nodeCount())throw new r;return o}function r(){}return r.prototype=new Error,Wi}var Fi,vf;function $g(){if(vf)return Fi;vf=1;var e=hf();Fi=t;function t(r){try{e(r)}catch(n){if(n instanceof e.CycleException)return!1;throw n}return!0}return Fi}var $i,gf;function mf(){if(gf)return $i;gf=1;var e=le();$i=t;function t(n,a,i){e.isArray(a)||(a=[a]);var o=(n.isDirected()?n.successors:n.neighbors).bind(n),s=[],c={};return e.each(a,function(u){if(!n.hasNode(u))throw new Error("Graph does not have node: "+u);r(n,u,i==="post",c,o,s)}),s}function r(n,a,i,o,s,c){e.has(o,a)||(o[a]=!0,i||c.push(a),e.each(s(a),function(u){r(n,u,i,o,s,c)}),i&&c.push(a))}return $i}var zi,yf;function zg(){if(yf)return zi;yf=1;var e=mf();zi=t;function t(r,n){return e(r,n,"post")}return zi}var Hi,bf;function Hg(){if(bf)return Hi;bf=1;var e=mf();Hi=t;function t(r,n){return e(r,n,"pre")}return Hi}var Gi,xf;function Gg(){if(xf)return Gi;xf=1;var e=le(),t=Ri(),r=af();Gi=n;function n(a,i){var o=new t,s={},c=new r,u;function d(p){var h=p.v===u?p.w:p.v,m=c.priority(h);if(m!==void 0){var g=i(p);g<m&&(s[h]=u,c.decrease(h,g))}}if(a.nodeCount()===0)return o;e.each(a.nodes(),function(p){c.add(p,Number.POSITIVE_INFINITY),o.setNode(p)}),c.decrease(a.nodes()[0],0);for(var l=!1;c.size()>0;){if(u=c.removeMin(),e.has(s,u))o.setEdge(u,s[u]);else{if(l)throw new Error("Input graph is not connected: "+a);l=!0}a.nodeEdges(u).forEach(d)}return o}return Gi}var Ui,_f;function Ug(){return _f||(_f=1,Ui={components:Mg(),dijkstra:sf(),dijkstraAll:Bg(),findCycles:Wg(),floydWarshall:Fg(),isAcyclic:$g(),postorder:zg(),preorder:Hg(),prim:Gg(),tarjan:df(),topsort:hf()}),Ui}var Ki,kf;function Kg(){if(kf)return Ki;kf=1;var e=Lg();return Ki={Graph:e.Graph,json:Dg(),alg:Ug(),version:e.version},Ki}var Ji,Sf;function ve(){if(Sf)return Ji;Sf=1;var e;if(typeof Ar=="function")try{e=Kg()}catch{}return e||(e=window.graphlib),Ji=e,Ji}var Vi,wf;function Jg(){if(wf)return Vi;wf=1;var e=Kc(),t=1,r=4;function n(a){return e(a,t|r)}return Vi=n,Vi}var Yi,Ef;function Er(){if(Ef)return Yi;Ef=1;var e=Pe(),t=xe(),r=gr(),n=de();function a(i,o,s){if(!n(s))return!1;var c=typeof o;return(c=="number"?t(s)&&r(o,s.length):c=="string"&&o in s)?e(s[o],i):!1}return Yi=a,Yi}var Xi,Tf;function Vg(){if(Tf)return Xi;Tf=1;var e=wr(),t=Pe(),r=Er(),n=Ie(),a=Object.prototype,i=a.hasOwnProperty,o=e(function(s,c){s=Object(s);var u=-1,d=c.length,l=d>2?c[2]:void 0;for(l&&r(c[0],c[1],l)&&(d=1);++u<d;)for(var p=c[u],h=n(p),m=-1,g=h.length;++m<g;){var v=h[m],x=s[v];(x===void 0||t(x,a[v])&&!i.call(s,v))&&(s[v]=p[v])}return s});return Xi=o,Xi}var Zi,Cf;function Yg(){if(Cf)return Zi;Cf=1;var e=_e(),t=xe(),r=we();function n(a){return function(i,o,s){var c=Object(i);if(!t(i)){var u=e(o,3);i=r(i),o=function(l){return u(c[l],l,c)}}var d=a(i,o,s);return d>-1?c[u?i[d]:d]:void 0}}return Zi=n,Zi}var Qi,Nf;function Xg(){if(Nf)return Qi;Nf=1;var e=/\s/;function t(r){for(var n=r.length;n--&&e.test(r.charAt(n)););return n}return Qi=t,Qi}var eo,Rf;function Zg(){if(Rf)return eo;Rf=1;var e=Xg(),t=/^\s+/;function r(n){return n&&n.slice(0,e(n)+1).replace(t,"")}return eo=r,eo}var ro,If;function Qg(){if(If)return ro;If=1;var e=Zg(),t=de(),r=Me(),n=NaN,a=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,o=/^0o[0-7]+$/i,s=parseInt;function c(u){if(typeof u=="number")return u;if(r(u))return n;if(t(u)){var d=typeof u.valueOf=="function"?u.valueOf():u;u=t(d)?d+"":d}if(typeof u!="string")return u===0?u:+u;u=e(u);var l=i.test(u);return l||o.test(u)?s(u.slice(2),l?2:8):a.test(u)?n:+u}return ro=c,ro}var to,jf;function Of(){if(jf)return to;jf=1;var e=Qg(),t=1/0,r=17976931348623157e292;function n(a){if(!a)return a===0?a:0;if(a=e(a),a===t||a===-t){var i=a<0?-1:1;return i*r}return a===a?a:0}return to=n,to}var no,qf;function em(){if(qf)return no;qf=1;var e=Of();function t(r){var n=e(r),a=n%1;return n===n?a?n-a:n:0}return no=t,no}var ao,Pf;function rm(){if(Pf)return ao;Pf=1;var e=Ll(),t=_e(),r=em(),n=Math.max;function a(i,o,s){var c=i==null?0:i.length;if(!c)return-1;var u=s==null?0:r(s);return u<0&&(u=n(c+u,0)),e(i,t(o,3),u)}return ao=a,ao}var io,Af;function tm(){if(Af)return io;Af=1;var e=Yg(),t=rm(),r=e(t);return io=r,io}var oo,Lf;function Df(){if(Lf)return oo;Lf=1;var e=si();function t(r){var n=r==null?0:r.length;return n?e(r,1):[]}return oo=t,oo}var so,Mf;function nm(){if(Mf)return so;Mf=1;var e=Kn(),t=nd(),r=Ie();function n(a,i){return a==null?a:e(a,t(i),r)}return so=n,so}var uo,Bf;function am(){if(Bf)return uo;Bf=1;function e(t){var r=t==null?0:t.length;return r?t[r-1]:void 0}return uo=e,uo}var co,Wf;function im(){if(Wf)return co;Wf=1;var e=hr(),t=Vn(),r=_e();function n(a,i){var o={};return i=r(i,3),t(a,function(s,c,u){e(o,c,i(s,c,u))}),o}return co=n,co}var lo,Ff;function fo(){if(Ff)return lo;Ff=1;var e=Me();function t(r,n,a){for(var i=-1,o=r.length;++i<o;){var s=r[i],c=n(s);if(c!=null&&(u===void 0?c===c&&!e(c):a(c,u)))var u=c,d=s}return d}return lo=t,lo}var po,$f;function om(){if($f)return po;$f=1;function e(t,r){return t>r}return po=e,po}var ho,zf;function sm(){if(zf)return ho;zf=1;var e=fo(),t=om(),r=je();function n(a){return a&&a.length?e(a,r,t):void 0}return ho=n,ho}var vo,Hf;function Gf(){if(Hf)return vo;Hf=1;var e=hr(),t=Pe();function r(n,a,i){(i!==void 0&&!t(n[a],i)||i===void 0&&!(a in n))&&e(n,a,i)}return vo=r,vo}var go,Uf;function um(){if(Uf)return go;Uf=1;var e=Ne(),t=br(),r=ye(),n="[object Object]",a=Function.prototype,i=Object.prototype,o=a.toString,s=i.hasOwnProperty,c=o.call(Object);function u(d){if(!r(d)||e(d)!=n)return!1;var l=t(d);if(l===null)return!0;var p=s.call(l,"constructor")&&l.constructor;return typeof p=="function"&&p instanceof p&&o.call(p)==c}return go=u,go}var mo,Kf;function Jf(){if(Kf)return mo;Kf=1;function e(t,r){if(!(r==="constructor"&&typeof t[r]=="function")&&r!="__proto__")return t[r]}return mo=e,mo}var yo,Vf;function cm(){if(Vf)return yo;Vf=1;var e=Ye(),t=Ie();function r(n){return e(n,t(n))}return yo=r,yo}var bo,Yf;function dm(){if(Yf)return bo;Yf=1;var e=Gf(),t=nc(),r=Lc(),n=ic(),a=Fc(),i=Xe(),o=ne(),s=Ul(),c=Le(),u=Ve(),d=de(),l=um(),p=er(),h=Jf(),m=cm();function g(v,x,b,_,y,S,w){var E=h(v,b),T=h(x,b),C=w.get(T);if(C){e(v,b,C);return}var R=S?S(E,T,b+"",v,x,w):void 0,A=R===void 0;if(A){var B=o(T),N=!B&&c(T),M=!B&&!N&&p(T);R=T,B||N||M?o(E)?R=E:s(E)?R=n(E):N?(A=!1,R=t(T,!0)):M?(A=!1,R=r(T,!0)):R=[]:l(T)||i(T)?(R=E,i(E)?R=m(E):(!d(E)||u(E))&&(R=a(T))):A=!1}A&&(w.set(T,R),y(R,T,_,S,w),w.delete(T)),e(v,b,R)}return bo=g,bo}var xo,Xf;function lm(){if(Xf)return xo;Xf=1;var e=pr(),t=Gf(),r=Kn(),n=dm(),a=de(),i=Ie(),o=Jf();function s(c,u,d,l,p){c!==u&&r(u,function(h,m){if(p||(p=new e),a(h))n(c,u,m,d,s,l,p);else{var g=l?l(o(c,m),h,m+"",c,u,p):void 0;g===void 0&&(g=h),t(c,m,g)}},i)}return xo=s,xo}var _o,Zf;function fm(){if(Zf)return _o;Zf=1;var e=wr(),t=Er();function r(n){return e(function(a,i){var o=-1,s=i.length,c=s>1?i[s-1]:void 0,u=s>2?i[2]:void 0;for(c=n.length>3&&typeof c=="function"?(s--,c):void 0,u&&t(i[0],i[1],u)&&(c=s<3?void 0:c,s=1),a=Object(a);++o<s;){var d=i[o];d&&n(a,d,o,c)}return a})}return _o=r,_o}var ko,Qf;function pm(){if(Qf)return ko;Qf=1;var e=lm(),t=fm(),r=t(function(n,a,i){e(n,a,i)});return ko=r,ko}var So,ep;function rp(){if(ep)return So;ep=1;function e(t,r){return t<r}return So=e,So}var wo,tp;function hm(){if(tp)return wo;tp=1;var e=fo(),t=rp(),r=je();function n(a){return a&&a.length?e(a,r,t):void 0}return wo=n,wo}var Eo,np;function vm(){if(np)return Eo;np=1;var e=fo(),t=_e(),r=rp();function n(a,i){return a&&a.length?e(a,t(i,2),r):void 0}return Eo=n,Eo}var To,ap;function gm(){if(ap)return To;ap=1;var e=he(),t=function(){return e.Date.now()};return To=t,To}var Co,ip;function mm(){if(ip)return Co;ip=1;var e=vr(),t=kr(),r=gr(),n=de(),a=tr();function i(o,s,c,u){if(!n(o))return o;s=t(s,o);for(var d=-1,l=s.length,p=l-1,h=o;h!=null&&++d<l;){var m=a(s[d]),g=c;if(m==="__proto__"||m==="constructor"||m==="prototype")return o;if(d!=p){var v=h[m];g=u?u(v,m,h):void 0,g===void 0&&(g=n(v)?v:r(s[d+1])?[]:{})}e(h,m,g),h=h[m]}return o}return Co=i,Co}var No,op;function ym(){if(op)return No;op=1;var e=Sr(),t=mm(),r=kr();function n(a,i,o){for(var s=-1,c=i.length,u={};++s<c;){var d=i[s],l=e(a,d);o(l,d)&&t(u,r(d,a),l)}return u}return No=n,No}var Ro,sp;function bm(){if(sp)return Ro;sp=1;var e=ym(),t=Vd();function r(n,a){return e(n,a,function(i,o){return t(n,o)})}return Ro=r,Ro}var Io,up;function xm(){if(up)return Io;up=1;var e=Df(),t=Rl(),r=ql();function n(a){return r(t(a,void 0,e),a+"")}return Io=n,Io}var jo,cp;function _m(){if(cp)return jo;cp=1;var e=bm(),t=xm(),r=t(function(n,a){return n==null?{}:e(n,a)});return jo=r,jo}var Oo,dp;function km(){if(dp)return Oo;dp=1;var e=Math.ceil,t=Math.max;function r(n,a,i,o){for(var s=-1,c=t(e((a-n)/(i||1)),0),u=Array(c);c--;)u[o?c:++s]=n,n+=i;return u}return Oo=r,Oo}var qo,lp;function Sm(){if(lp)return qo;lp=1;var e=km(),t=Er(),r=Of();function n(a){return function(i,o,s){return s&&typeof s!="number"&&t(i,o,s)&&(o=s=void 0),i=r(i),o===void 0?(o=i,i=0):o=r(o),s=s===void 0?i<o?1:-1:r(s),e(i,o,s,a)}}return qo=n,qo}var Po,fp;function wm(){if(fp)return Po;fp=1;var e=Sm(),t=e();return Po=t,Po}var Ao,pp;function Em(){if(pp)return Ao;pp=1;function e(t,r){var n=t.length;for(t.sort(r);n--;)t[n]=t[n].value;return t}return Ao=e,Ao}var Lo,hp;function Tm(){if(hp)return Lo;hp=1;var e=Me();function t(r,n){if(r!==n){var a=r!==void 0,i=r===null,o=r===r,s=e(r),c=n!==void 0,u=n===null,d=n===n,l=e(n);if(!u&&!l&&!s&&r>n||s&&c&&d&&!u&&!l||i&&c&&d||!a&&d||!o)return 1;if(!i&&!s&&!l&&r<n||l&&a&&o&&!i&&!s||u&&a&&o||!c&&o||!d)return-1}return 0}return Lo=t,Lo}var Do,vp;function Cm(){if(vp)return Do;vp=1;var e=Tm();function t(r,n,a){for(var i=-1,o=r.criteria,s=n.criteria,c=o.length,u=a.length;++i<c;){var d=e(o[i],s[i]);if(d){if(i>=u)return d;var l=a[i];return d*(l=="desc"?-1:1)}}return r.index-n.index}return Do=t,Do}var Mo,gp;function Nm(){if(gp)return Mo;gp=1;var e=_r(),t=Sr(),r=_e(),n=ll(),a=Em(),i=mr(),o=Cm(),s=je(),c=ne();function u(d,l,p){l.length?l=e(l,function(g){return c(g)?function(v){return t(v,g.length===1?g[0]:g)}:g}):l=[s];var h=-1;l=e(l,i(r));var m=n(d,function(g,v,x){var b=e(l,function(_){return _(g)});return{criteria:b,index:++h,value:g}});return a(m,function(g,v){return o(g,v,p)})}return Mo=u,Mo}var Bo,mp;function Rm(){if(mp)return Bo;mp=1;var e=si(),t=Nm(),r=wr(),n=Er(),a=r(function(i,o){if(i==null)return[];var s=o.length;return s>1&&n(i,o[0],o[1])?o=[]:s>2&&n(o[0],o[1],o[2])&&(o=[o[0]]),t(i,e(o,1),[])});return Bo=a,Bo}var Wo,yp;function Im(){if(yp)return Wo;yp=1;var e=Wd(),t=0;function r(n){var a=++t;return e(n)+a}return Wo=r,Wo}var Fo,bp;function jm(){if(bp)return Fo;bp=1;function e(t,r,n){for(var a=-1,i=t.length,o=r.length,s={};++a<i;){var c=a<o?r[a]:void 0;n(s,t[a],c)}return s}return Fo=e,Fo}var $o,xp;function Om(){if(xp)return $o;xp=1;var e=vr(),t=jm();function r(n,a){return t(n||[],a||[],e)}return $o=r,$o}var zo,_p;function Q(){if(_p)return zo;_p=1;var e;if(typeof Ar=="function")try{e={cloneDeep:Jg(),constant:Hn(),defaults:Vg(),each:sd(),filter:nl(),find:tm(),flatten:Df(),forEach:id(),forIn:nm(),has:ol(),isUndefined:cl(),last:am(),map:pl(),mapValues:im(),max:sm(),merge:pm(),min:hm(),minBy:vm(),now:gm(),pick:_m(),range:wm(),reduce:ml(),sortBy:Rm(),uniqueId:Im(),values:Yl(),zipObject:Om()}}catch{}return e||(e=window._),zo=e,zo}var Ho,kp;function qm(){if(kp)return Ho;kp=1,Ho=e;function e(){var n={};n._next=n._prev=n,this._sentinel=n}e.prototype.dequeue=function(){var n=this._sentinel,a=n._prev;if(a!==n)return t(a),a},e.prototype.enqueue=function(n){var a=this._sentinel;n._prev&&n._next&&t(n),n._next=a._next,a._next._prev=n,a._next=n,n._prev=a},e.prototype.toString=function(){for(var n=[],a=this._sentinel,i=a._prev;i!==a;)n.push(JSON.stringify(i,r)),i=i._prev;return"["+n.join(", ")+"]"};function t(n){n._prev._next=n._next,n._next._prev=n._prev,delete n._next,delete n._prev}function r(n,a){if(n!=="_next"&&n!=="_prev")return a}return Ho}var Go,Sp;function Pm(){if(Sp)return Go;Sp=1;var e=Q(),t=ve().Graph,r=qm();Go=a;var n=e.constant(1);function a(u,d){if(u.nodeCount()<=1)return[];var l=s(u,d||n),p=i(l.graph,l.buckets,l.zeroIdx);return e.flatten(e.map(p,function(h){return u.outEdges(h.v,h.w)}),!0)}function i(u,d,l){for(var p=[],h=d[d.length-1],m=d[0],g;u.nodeCount();){for(;g=m.dequeue();)o(u,d,l,g);for(;g=h.dequeue();)o(u,d,l,g);if(u.nodeCount()){for(var v=d.length-2;v>0;--v)if(g=d[v].dequeue(),g){p=p.concat(o(u,d,l,g,!0));break}}}return p}function o(u,d,l,p,h){var m=h?[]:void 0;return e.forEach(u.inEdges(p.v),function(g){var v=u.edge(g),x=u.node(g.v);h&&m.push({v:g.v,w:g.w}),x.out-=v,c(d,l,x)}),e.forEach(u.outEdges(p.v),function(g){var v=u.edge(g),x=g.w,b=u.node(x);b.in-=v,c(d,l,b)}),u.removeNode(p.v),m}function s(u,d){var l=new t,p=0,h=0;e.forEach(u.nodes(),function(v){l.setNode(v,{v,in:0,out:0})}),e.forEach(u.edges(),function(v){var x=l.edge(v.v,v.w)||0,b=d(v),_=x+b;l.setEdge(v.v,v.w,_),h=Math.max(h,l.node(v.v).out+=b),p=Math.max(p,l.node(v.w).in+=b)});var m=e.range(h+p+3).map(function(){return new r}),g=p+1;return e.forEach(l.nodes(),function(v){c(m,g,l.node(v))}),{graph:l,buckets:m,zeroIdx:g}}function c(u,d,l){l.out?l.in?u[l.out-l.in+d].enqueue(l):u[u.length-1].enqueue(l):u[0].enqueue(l)}return Go}var Uo,wp;function Am(){if(wp)return Uo;wp=1;var e=Q(),t=Pm();Uo={run:r,undo:a};function r(i){var o=i.graph().acyclicer==="greedy"?t(i,s(i)):n(i);e.forEach(o,function(c){var u=i.edge(c);i.removeEdge(c),u.forwardName=c.name,u.reversed=!0,i.setEdge(c.w,c.v,u,e.uniqueId("rev"))});function s(c){return function(u){return c.edge(u).weight}}}function n(i){var o=[],s={},c={};function u(d){e.has(c,d)||(c[d]=!0,s[d]=!0,e.forEach(i.outEdges(d),function(l){e.has(s,l.w)?o.push(l):u(l.w)}),delete s[d])}return e.forEach(i.nodes(),u),o}function a(i){e.forEach(i.edges(),function(o){var s=i.edge(o);if(s.reversed){i.removeEdge(o);var c=s.forwardName;delete s.reversed,delete s.forwardName,i.setEdge(o.w,o.v,s,c)}})}return Uo}var Ko,Ep;function oe(){if(Ep)return Ko;Ep=1;var e=Q(),t=ve().Graph;Ko={addDummyNode:r,simplify:n,asNonCompoundGraph:a,successorWeights:i,predecessorWeights:o,intersectRect:s,buildLayerMatrix:c,normalizeRanks:u,removeEmptyRanks:d,addBorderNode:l,maxRank:p,partition:h,time:m,notime:g};function r(v,x,b,_){var y;do y=e.uniqueId(_);while(v.hasNode(y));return b.dummy=x,v.setNode(y,b),y}function n(v){var x=new t().setGraph(v.graph());return e.forEach(v.nodes(),function(b){x.setNode(b,v.node(b))}),e.forEach(v.edges(),function(b){var _=x.edge(b.v,b.w)||{weight:0,minlen:1},y=v.edge(b);x.setEdge(b.v,b.w,{weight:_.weight+y.weight,minlen:Math.max(_.minlen,y.minlen)})}),x}function a(v){var x=new t({multigraph:v.isMultigraph()}).setGraph(v.graph());return e.forEach(v.nodes(),function(b){v.children(b).length||x.setNode(b,v.node(b))}),e.forEach(v.edges(),function(b){x.setEdge(b,v.edge(b))}),x}function i(v){var x=e.map(v.nodes(),function(b){var _={};return e.forEach(v.outEdges(b),function(y){_[y.w]=(_[y.w]||0)+v.edge(y).weight}),_});return e.zipObject(v.nodes(),x)}function o(v){var x=e.map(v.nodes(),function(b){var _={};return e.forEach(v.inEdges(b),function(y){_[y.v]=(_[y.v]||0)+v.edge(y).weight}),_});return e.zipObject(v.nodes(),x)}function s(v,x){var b=v.x,_=v.y,y=x.x-b,S=x.y-_,w=v.width/2,E=v.height/2;if(!y&&!S)throw new Error("Not possible to find intersection inside of the rectangle");var T,C;return Math.abs(S)*w>Math.abs(y)*E?(S<0&&(E=-E),T=E*y/S,C=E):(y<0&&(w=-w),T=w,C=w*S/y),{x:b+T,y:_+C}}function c(v){var x=e.map(e.range(p(v)+1),function(){return[]});return e.forEach(v.nodes(),function(b){var _=v.node(b),y=_.rank;e.isUndefined(y)||(x[y][_.order]=b)}),x}function u(v){var x=e.min(e.map(v.nodes(),function(b){return v.node(b).rank}));e.forEach(v.nodes(),function(b){var _=v.node(b);e.has(_,"rank")&&(_.rank-=x)})}function d(v){var x=e.min(e.map(v.nodes(),function(S){return v.node(S).rank})),b=[];e.forEach(v.nodes(),function(S){var w=v.node(S).rank-x;b[w]||(b[w]=[]),b[w].push(S)});var _=0,y=v.graph().nodeRankFactor;e.forEach(b,function(S,w){e.isUndefined(S)&&w%y!==0?--_:_&&e.forEach(S,function(E){v.node(E).rank+=_})})}function l(v,x,b,_){var y={width:0,height:0};return arguments.length>=4&&(y.rank=b,y.order=_),r(v,"border",y,x)}function p(v){return e.max(e.map(v.nodes(),function(x){var b=v.node(x).rank;if(!e.isUndefined(b))return b}))}function h(v,x){var b={lhs:[],rhs:[]};return e.forEach(v,function(_){x(_)?b.lhs.push(_):b.rhs.push(_)}),b}function m(v,x){var b=e.now();try{return x()}finally{console.log(v+" time: "+(e.now()-b)+"ms")}}function g(v,x){return x()}return Ko}var Jo,Tp;function Lm(){if(Tp)return Jo;Tp=1;var e=Q(),t=oe();Jo={run:r,undo:a};function r(i){i.graph().dummyChains=[],e.forEach(i.edges(),function(o){n(i,o)})}function n(i,o){var s=o.v,c=i.node(s).rank,u=o.w,d=i.node(u).rank,l=o.name,p=i.edge(o),h=p.labelRank;if(d!==c+1){i.removeEdge(o);var m,g,v;for(v=0,++c;c<d;++v,++c)p.points=[],g={width:0,height:0,edgeLabel:p,edgeObj:o,rank:c},m=t.addDummyNode(i,"edge",g,"_d"),c===h&&(g.width=p.width,g.height=p.height,g.dummy="edge-label",g.labelpos=p.labelpos),i.setEdge(s,m,{weight:p.weight},l),v===0&&i.graph().dummyChains.push(m),s=m;i.setEdge(s,u,{weight:p.weight},l)}}function a(i){e.forEach(i.graph().dummyChains,function(o){var s=i.node(o),c=s.edgeLabel,u;for(i.setEdge(s.edgeObj,c);s.dummy;)u=i.successors(o)[0],i.removeNode(o),c.points.push({x:s.x,y:s.y}),s.dummy==="edge-label"&&(c.x=s.x,c.y=s.y,c.width=s.width,c.height=s.height),o=u,s=i.node(o)})}return Jo}var Vo,Cp;function Tr(){if(Cp)return Vo;Cp=1;var e=Q();Vo={longestPath:t,slack:r};function t(n){var a={};function i(o){var s=n.node(o);if(e.has(a,o))return s.rank;a[o]=!0;var c=e.min(e.map(n.outEdges(o),function(u){return i(u.w)-n.edge(u).minlen}));return(c===Number.POSITIVE_INFINITY||c===void 0||c===null)&&(c=0),s.rank=c}e.forEach(n.sources(),i)}function r(n,a){return n.node(a.w).rank-n.node(a.v).rank-n.edge(a).minlen}return Vo}var Yo,Np;function Rp(){if(Np)return Yo;Np=1;var e=Q(),t=ve().Graph,r=Tr().slack;Yo=n;function n(s){var c=new t({directed:!1}),u=s.nodes()[0],d=s.nodeCount();c.setNode(u,{});for(var l,p;a(c,s)<d;)l=i(c,s),p=c.hasNode(l.v)?r(s,l):-r(s,l),o(c,s,p);return c}function a(s,c){function u(d){e.forEach(c.nodeEdges(d),function(l){var p=l.v,h=d===p?l.w:p;!s.hasNode(h)&&!r(c,l)&&(s.setNode(h,{}),s.setEdge(d,h,{}),u(h))})}return e.forEach(s.nodes(),u),s.nodeCount()}function i(s,c){return e.minBy(c.edges(),function(u){if(s.hasNode(u.v)!==s.hasNode(u.w))return r(c,u)})}function o(s,c,u){e.forEach(s.nodes(),function(d){c.node(d).rank+=u})}return Yo}var Xo,Ip;function Dm(){if(Ip)return Xo;Ip=1;var e=Q(),t=Rp(),r=Tr().slack,n=Tr().longestPath,a=ve().alg.preorder,i=ve().alg.postorder,o=oe().simplify;Xo=s,s.initLowLimValues=l,s.initCutValues=c,s.calcCutValue=d,s.leaveEdge=h,s.enterEdge=m,s.exchangeEdges=g;function s(_){_=o(_),n(_);var y=t(_);l(y),c(y,_);for(var S,w;S=h(y);)w=m(y,_,S),g(y,_,S,w)}function c(_,y){var S=i(_,_.nodes());S=S.slice(0,S.length-1),e.forEach(S,function(w){u(_,y,w)})}function u(_,y,S){var w=_.node(S),E=w.parent;_.edge(S,E).cutvalue=d(_,y,S)}function d(_,y,S){var w=_.node(S),E=w.parent,T=!0,C=y.edge(S,E),R=0;return C||(T=!1,C=y.edge(E,S)),R=C.weight,e.forEach(y.nodeEdges(S),function(A){var B=A.v===S,N=B?A.w:A.v;if(N!==E){var M=B===T,L=y.edge(A).weight;if(R+=M?L:-L,x(_,S,N)){var $=_.edge(S,N).cutvalue;R+=M?-$:$}}}),R}function l(_,y){arguments.length<2&&(y=_.nodes()[0]),p(_,{},1,y)}function p(_,y,S,w,E){var T=S,C=_.node(w);return y[w]=!0,e.forEach(_.neighbors(w),function(R){e.has(y,R)||(S=p(_,y,S,R,w))}),C.low=T,C.lim=S++,E?C.parent=E:delete C.parent,S}function h(_){return e.find(_.edges(),function(y){return _.edge(y).cutvalue<0})}function m(_,y,S){var w=S.v,E=S.w;y.hasEdge(w,E)||(w=S.w,E=S.v);var T=_.node(w),C=_.node(E),R=T,A=!1;T.lim>C.lim&&(R=C,A=!0);var B=e.filter(y.edges(),function(N){return A===b(_,_.node(N.v),R)&&A!==b(_,_.node(N.w),R)});return e.minBy(B,function(N){return r(y,N)})}function g(_,y,S,w){var E=S.v,T=S.w;_.removeEdge(E,T),_.setEdge(w.v,w.w,{}),l(_),c(_,y),v(_,y)}function v(_,y){var S=e.find(_.nodes(),function(E){return!y.node(E).parent}),w=a(_,S);w=w.slice(1),e.forEach(w,function(E){var T=_.node(E).parent,C=y.edge(E,T),R=!1;C||(C=y.edge(T,E),R=!0),y.node(E).rank=y.node(T).rank+(R?C.minlen:-C.minlen)})}function x(_,y,S){return _.hasEdge(y,S)}function b(_,y,S){return S.low<=y.lim&&y.lim<=S.lim}return Xo}var Zo,jp;function Mm(){if(jp)return Zo;jp=1;var e=Tr(),t=e.longestPath,r=Rp(),n=Dm();Zo=a;function a(c){switch(c.graph().ranker){case"network-simplex":s(c);break;case"tight-tree":o(c);break;case"longest-path":i(c);break;default:s(c)}}var i=t;function o(c){t(c),r(c)}function s(c){n(c)}return Zo}var Qo,Op;function Bm(){if(Op)return Qo;Op=1;var e=Q();Qo=t;function t(a){var i=n(a);e.forEach(a.graph().dummyChains,function(o){for(var s=a.node(o),c=s.edgeObj,u=r(a,i,c.v,c.w),d=u.path,l=u.lca,p=0,h=d[p],m=!0;o!==c.w;){if(s=a.node(o),m){for(;(h=d[p])!==l&&a.node(h).maxRank<s.rank;)p++;h===l&&(m=!1)}if(!m){for(;p<d.length-1&&a.node(h=d[p+1]).minRank<=s.rank;)p++;h=d[p]}a.setParent(o,h),o=a.successors(o)[0]}})}function r(a,i,o,s){var c=[],u=[],d=Math.min(i[o].low,i[s].low),l=Math.max(i[o].lim,i[s].lim),p,h;p=o;do p=a.parent(p),c.push(p);while(p&&(i[p].low>d||l>i[p].lim));for(h=p,p=s;(p=a.parent(p))!==h;)u.push(p);return{path:c.concat(u.reverse()),lca:h}}function n(a){var i={},o=0;function s(c){var u=o;e.forEach(a.children(c),s),i[c]={low:u,lim:o++}}return e.forEach(a.children(),s),i}return Qo}var es,qp;function Wm(){if(qp)return es;qp=1;var e=Q(),t=oe();es={run:r,cleanup:o};function r(s){var c=t.addDummyNode(s,"root",{},"_root"),u=a(s),d=e.max(e.values(u))-1,l=2*d+1;s.graph().nestingRoot=c,e.forEach(s.edges(),function(h){s.edge(h).minlen*=l});var p=i(s)+1;e.forEach(s.children(),function(h){n(s,c,l,p,d,u,h)}),s.graph().nodeRankFactor=l}function n(s,c,u,d,l,p,h){var m=s.children(h);if(!m.length){h!==c&&s.setEdge(c,h,{weight:0,minlen:u});return}var g=t.addBorderNode(s,"_bt"),v=t.addBorderNode(s,"_bb"),x=s.node(h);s.setParent(g,h),x.borderTop=g,s.setParent(v,h),x.borderBottom=v,e.forEach(m,function(b){n(s,c,u,d,l,p,b);var _=s.node(b),y=_.borderTop?_.borderTop:b,S=_.borderBottom?_.borderBottom:b,w=_.borderTop?d:2*d,E=y!==S?1:l-p[h]+1;s.setEdge(g,y,{weight:w,minlen:E,nestingEdge:!0}),s.setEdge(S,v,{weight:w,minlen:E,nestingEdge:!0})}),s.parent(h)||s.setEdge(c,g,{weight:0,minlen:l+p[h]})}function a(s){var c={};function u(d,l){var p=s.children(d);p&&p.length&&e.forEach(p,function(h){u(h,l+1)}),c[d]=l}return e.forEach(s.children(),function(d){u(d,1)}),c}function i(s){return e.reduce(s.edges(),function(c,u){return c+s.edge(u).weight},0)}function o(s){var c=s.graph();s.removeNode(c.nestingRoot),delete c.nestingRoot,e.forEach(s.edges(),function(u){var d=s.edge(u);d.nestingEdge&&s.removeEdge(u)})}return es}var rs,Pp;function Fm(){if(Pp)return rs;Pp=1;var e=Q(),t=oe();rs=r;function r(a){function i(o){var s=a.children(o),c=a.node(o);if(s.length&&e.forEach(s,i),e.has(c,"minRank")){c.borderLeft=[],c.borderRight=[];for(var u=c.minRank,d=c.maxRank+1;u<d;++u)n(a,"borderLeft","_bl",o,c,u),n(a,"borderRight","_br",o,c,u)}}e.forEach(a.children(),i)}function n(a,i,o,s,c,u){var d={width:0,height:0,rank:u,borderType:i},l=c[i][u-1],p=t.addDummyNode(a,"border",d,o);c[i][u]=p,a.setParent(p,s),l&&a.setEdge(l,p,{weight:1})}return rs}var ts,Ap;function $m(){if(Ap)return ts;Ap=1;var e=Q();ts={adjust:t,undo:r};function t(u){var d=u.graph().rankdir.toLowerCase();(d==="lr"||d==="rl")&&n(u)}function r(u){var d=u.graph().rankdir.toLowerCase();(d==="bt"||d==="rl")&&i(u),(d==="lr"||d==="rl")&&(s(u),n(u))}function n(u){e.forEach(u.nodes(),function(d){a(u.node(d))}),e.forEach(u.edges(),function(d){a(u.edge(d))})}function a(u){var d=u.width;u.width=u.height,u.height=d}function i(u){e.forEach(u.nodes(),function(d){o(u.node(d))}),e.forEach(u.edges(),function(d){var l=u.edge(d);e.forEach(l.points,o),e.has(l,"y")&&o(l)})}function o(u){u.y=-u.y}function s(u){e.forEach(u.nodes(),function(d){c(u.node(d))}),e.forEach(u.edges(),function(d){var l=u.edge(d);e.forEach(l.points,c),e.has(l,"x")&&c(l)})}function c(u){var d=u.x;u.x=u.y,u.y=d}return ts}var ns,Lp;function zm(){if(Lp)return ns;Lp=1;var e=Q();ns=t;function t(r){var n={},a=e.filter(r.nodes(),function(u){return!r.children(u).length}),i=e.max(e.map(a,function(u){return r.node(u).rank})),o=e.map(e.range(i+1),function(){return[]});function s(u){if(!e.has(n,u)){n[u]=!0;var d=r.node(u);o[d.rank].push(u),e.forEach(r.successors(u),s)}}var c=e.sortBy(a,function(u){return r.node(u).rank});return e.forEach(c,s),o}return ns}var as,Dp;function Hm(){if(Dp)return as;Dp=1;var e=Q();as=t;function t(n,a){for(var i=0,o=1;o<a.length;++o)i+=r(n,a[o-1],a[o]);return i}function r(n,a,i){for(var o=e.zipObject(i,e.map(i,function(p,h){return h})),s=e.flatten(e.map(a,function(p){return e.sortBy(e.map(n.outEdges(p),function(h){return{pos:o[h.w],weight:n.edge(h).weight}}),"pos")}),!0),c=1;c<i.length;)c<<=1;var u=2*c-1;c-=1;var d=e.map(new Array(u),function(){return 0}),l=0;return e.forEach(s.forEach(function(p){var h=p.pos+c;d[h]+=p.weight;for(var m=0;h>0;)h%2&&(m+=d[h+1]),h=h-1>>1,d[h]+=p.weight;l+=p.weight*m})),l}return as}var is,Mp;function Gm(){if(Mp)return is;Mp=1;var e=Q();is=t;function t(r,n){return e.map(n,function(a){var i=r.inEdges(a);if(i.length){var o=e.reduce(i,function(s,c){var u=r.edge(c),d=r.node(c.v);return{sum:s.sum+u.weight*d.order,weight:s.weight+u.weight}},{sum:0,weight:0});return{v:a,barycenter:o.sum/o.weight,weight:o.weight}}else return{v:a}})}return is}var os,Bp;function Um(){if(Bp)return os;Bp=1;var e=Q();os=t;function t(a,i){var o={};e.forEach(a,function(c,u){var d=o[c.v]={indegree:0,in:[],out:[],vs:[c.v],i:u};e.isUndefined(c.barycenter)||(d.barycenter=c.barycenter,d.weight=c.weight)}),e.forEach(i.edges(),function(c){var u=o[c.v],d=o[c.w];!e.isUndefined(u)&&!e.isUndefined(d)&&(d.indegree++,u.out.push(o[c.w]))});var s=e.filter(o,function(c){return!c.indegree});return r(s)}function r(a){var i=[];function o(u){return function(d){d.merged||(e.isUndefined(d.barycenter)||e.isUndefined(u.barycenter)||d.barycenter>=u.barycenter)&&n(u,d)}}function s(u){return function(d){d.in.push(u),--d.indegree===0&&a.push(d)}}for(;a.length;){var c=a.pop();i.push(c),e.forEach(c.in.reverse(),o(c)),e.forEach(c.out,s(c))}return e.map(e.filter(i,function(u){return!u.merged}),function(u){return e.pick(u,["vs","i","barycenter","weight"])})}function n(a,i){var o=0,s=0;a.weight&&(o+=a.barycenter*a.weight,s+=a.weight),i.weight&&(o+=i.barycenter*i.weight,s+=i.weight),a.vs=i.vs.concat(a.vs),a.barycenter=o/s,a.weight=s,a.i=Math.min(i.i,a.i),i.merged=!0}return os}var ss,Wp;function Km(){if(Wp)return ss;Wp=1;var e=Q(),t=oe();ss=r;function r(i,o){var s=t.partition(i,function(g){return e.has(g,"barycenter")}),c=s.lhs,u=e.sortBy(s.rhs,function(g){return-g.i}),d=[],l=0,p=0,h=0;c.sort(a(!!o)),h=n(d,u,h),e.forEach(c,function(g){h+=g.vs.length,d.push(g.vs),l+=g.barycenter*g.weight,p+=g.weight,h=n(d,u,h)});var m={vs:e.flatten(d,!0)};return p&&(m.barycenter=l/p,m.weight=p),m}function n(i,o,s){for(var c;o.length&&(c=e.last(o)).i<=s;)o.pop(),i.push(c.vs),s++;return s}function a(i){return function(o,s){return o.barycenter<s.barycenter?-1:o.barycenter>s.barycenter?1:i?s.i-o.i:o.i-s.i}}return ss}var us,Fp;function Jm(){if(Fp)return us;Fp=1;var e=Q(),t=Gm(),r=Um(),n=Km();us=a;function a(s,c,u,d){var l=s.children(c),p=s.node(c),h=p?p.borderLeft:void 0,m=p?p.borderRight:void 0,g={};h&&(l=e.filter(l,function(S){return S!==h&&S!==m}));var v=t(s,l);e.forEach(v,function(S){if(s.children(S.v).length){var w=a(s,S.v,u,d);g[S.v]=w,e.has(w,"barycenter")&&o(S,w)}});var x=r(v,u);i(x,g);var b=n(x,d);if(h&&(b.vs=e.flatten([h,b.vs,m],!0),s.predecessors(h).length)){var _=s.node(s.predecessors(h)[0]),y=s.node(s.predecessors(m)[0]);e.has(b,"barycenter")||(b.barycenter=0,b.weight=0),b.barycenter=(b.barycenter*b.weight+_.order+y.order)/(b.weight+2),b.weight+=2}return b}function i(s,c){e.forEach(s,function(u){u.vs=e.flatten(u.vs.map(function(d){return c[d]?c[d].vs:d}),!0)})}function o(s,c){e.isUndefined(s.barycenter)?(s.barycenter=c.barycenter,s.weight=c.weight):(s.barycenter=(s.barycenter*s.weight+c.barycenter*c.weight)/(s.weight+c.weight),s.weight+=c.weight)}return us}var cs,$p;function Vm(){if($p)return cs;$p=1;var e=Q(),t=ve().Graph;cs=r;function r(a,i,o){var s=n(a),c=new t({compound:!0}).setGraph({root:s}).setDefaultNodeLabel(function(u){return a.node(u)});return e.forEach(a.nodes(),function(u){var d=a.node(u),l=a.parent(u);(d.rank===i||d.minRank<=i&&i<=d.maxRank)&&(c.setNode(u),c.setParent(u,l||s),e.forEach(a[o](u),function(p){var h=p.v===u?p.w:p.v,m=c.edge(h,u),g=e.isUndefined(m)?0:m.weight;c.setEdge(h,u,{weight:a.edge(p).weight+g})}),e.has(d,"minRank")&&c.setNode(u,{borderLeft:d.borderLeft[i],borderRight:d.borderRight[i]}))}),c}function n(a){for(var i;a.hasNode(i=e.uniqueId("_root")););return i}return cs}var ds,zp;function Ym(){if(zp)return ds;zp=1;var e=Q();ds=t;function t(r,n,a){var i={},o;e.forEach(a,function(s){for(var c=r.parent(s),u,d;c;){if(u=r.parent(c),u?(d=i[u],i[u]=c):(d=o,o=c),d&&d!==c){n.setEdge(d,c);return}c=u}})}return ds}var ls,Hp;function Xm(){if(Hp)return ls;Hp=1;var e=Q(),t=zm(),r=Hm(),n=Jm(),a=Vm(),i=Ym(),o=ve().Graph,s=oe();ls=c;function c(p){var h=s.maxRank(p),m=u(p,e.range(1,h+1),"inEdges"),g=u(p,e.range(h-1,-1,-1),"outEdges"),v=t(p);l(p,v);for(var x=Number.POSITIVE_INFINITY,b,_=0,y=0;y<4;++_,++y){d(_%2?m:g,_%4>=2),v=s.buildLayerMatrix(p);var S=r(p,v);S<x&&(y=0,b=e.cloneDeep(v),x=S)}l(p,b)}function u(p,h,m){return e.map(h,function(g){return a(p,g,m)})}function d(p,h){var m=new o;e.forEach(p,function(g){var v=g.graph().root,x=n(g,v,m,h);e.forEach(x.vs,function(b,_){g.node(b).order=_}),i(g,m,x.vs)})}function l(p,h){e.forEach(h,function(m){e.forEach(m,function(g,v){p.node(g).order=v})})}return ls}var fs,Gp;function Zm(){if(Gp)return fs;Gp=1;var e=Q(),t=ve().Graph,r=oe();fs={positionX:m,findType1Conflicts:n,findType2Conflicts:a,addConflict:o,hasConflict:s,verticalAlignment:c,horizontalCompaction:u,alignCoordinates:p,findSmallestWidthAlignment:l,balance:h};function n(x,b){var _={};function y(S,w){var E=0,T=0,C=S.length,R=e.last(w);return e.forEach(w,function(A,B){var N=i(x,A),M=N?x.node(N).order:C;(N||A===R)&&(e.forEach(w.slice(T,B+1),function(L){e.forEach(x.predecessors(L),function($){var U=x.node($),W=U.order;(W<E||M<W)&&!(U.dummy&&x.node(L).dummy)&&o(_,$,L)})}),T=B+1,E=M)}),w}return e.reduce(b,y),_}function a(x,b){var _={};function y(w,E,T,C,R){var A;e.forEach(e.range(E,T),function(B){A=w[B],x.node(A).dummy&&e.forEach(x.predecessors(A),function(N){var M=x.node(N);M.dummy&&(M.order<C||M.order>R)&&o(_,N,A)})})}function S(w,E){var T=-1,C,R=0;return e.forEach(E,function(A,B){if(x.node(A).dummy==="border"){var N=x.predecessors(A);N.length&&(C=x.node(N[0]).order,y(E,R,B,T,C),R=B,T=C)}y(E,R,E.length,C,w.length)}),E}return e.reduce(b,S),_}function i(x,b){if(x.node(b).dummy)return e.find(x.predecessors(b),function(_){return x.node(_).dummy})}function o(x,b,_){if(b>_){var y=b;b=_,_=y}var S=x[b];S||(x[b]=S={}),S[_]=!0}function s(x,b,_){if(b>_){var y=b;b=_,_=y}return e.has(x[b],_)}function c(x,b,_,y){var S={},w={},E={};return e.forEach(b,function(T){e.forEach(T,function(C,R){S[C]=C,w[C]=C,E[C]=R})}),e.forEach(b,function(T){var C=-1;e.forEach(T,function(R){var A=y(R);if(A.length){A=e.sortBy(A,function($){return E[$]});for(var B=(A.length-1)/2,N=Math.floor(B),M=Math.ceil(B);N<=M;++N){var L=A[N];w[R]===R&&C<E[L]&&!s(_,R,L)&&(w[L]=R,w[R]=S[R]=S[L],C=E[L])}}})}),{root:S,align:w}}function u(x,b,_,y,S){var w={},E=d(x,b,_,S),T=S?"borderLeft":"borderRight";function C(B,N){for(var M=E.nodes(),L=M.pop(),$={};L;)$[L]?B(L):($[L]=!0,M.push(L),M=M.concat(N(L))),L=M.pop()}function R(B){w[B]=E.inEdges(B).reduce(function(N,M){return Math.max(N,w[M.v]+E.edge(M))},0)}function A(B){var N=E.outEdges(B).reduce(function(L,$){return Math.min(L,w[$.w]-E.edge($))},Number.POSITIVE_INFINITY),M=x.node(B);N!==Number.POSITIVE_INFINITY&&M.borderType!==T&&(w[B]=Math.max(w[B],N))}return C(R,E.predecessors.bind(E)),C(A,E.successors.bind(E)),e.forEach(y,function(B){w[B]=w[_[B]]}),w}function d(x,b,_,y){var S=new t,w=x.graph(),E=g(w.nodesep,w.edgesep,y);return e.forEach(b,function(T){var C;e.forEach(T,function(R){var A=_[R];if(S.setNode(A),C){var B=_[C],N=S.edge(B,A);S.setEdge(B,A,Math.max(E(x,R,C),N||0))}C=R})}),S}function l(x,b){return e.minBy(e.values(b),function(_){var y=Number.NEGATIVE_INFINITY,S=Number.POSITIVE_INFINITY;return e.forIn(_,function(w,E){var T=v(x,E)/2;y=Math.max(w+T,y),S=Math.min(w-T,S)}),y-S})}function p(x,b){var _=e.values(b),y=e.min(_),S=e.max(_);e.forEach(["u","d"],function(w){e.forEach(["l","r"],function(E){var T=w+E,C=x[T],R;if(C!==b){var A=e.values(C);R=E==="l"?y-e.min(A):S-e.max(A),R&&(x[T]=e.mapValues(C,function(B){return B+R}))}})})}function h(x,b){return e.mapValues(x.ul,function(_,y){if(b)return x[b.toLowerCase()][y];var S=e.sortBy(e.map(x,y));return(S[1]+S[2])/2})}function m(x){var b=r.buildLayerMatrix(x),_=e.merge(n(x,b),a(x,b)),y={},S;e.forEach(["u","d"],function(E){S=E==="u"?b:e.values(b).reverse(),e.forEach(["l","r"],function(T){T==="r"&&(S=e.map(S,function(B){return e.values(B).reverse()}));var C=(E==="u"?x.predecessors:x.successors).bind(x),R=c(x,S,_,C),A=u(x,S,R.root,R.align,T==="r");T==="r"&&(A=e.mapValues(A,function(B){return-B})),y[E+T]=A})});var w=l(x,y);return p(y,w),h(y,x.graph().align)}function g(x,b,_){return function(y,S,w){var E=y.node(S),T=y.node(w),C=0,R;if(C+=E.width/2,e.has(E,"labelpos"))switch(E.labelpos.toLowerCase()){case"l":R=-E.width/2;break;case"r":R=E.width/2;break}if(R&&(C+=_?R:-R),R=0,C+=(E.dummy?b:x)/2,C+=(T.dummy?b:x)/2,C+=T.width/2,e.has(T,"labelpos"))switch(T.labelpos.toLowerCase()){case"l":R=T.width/2;break;case"r":R=-T.width/2;break}return R&&(C+=_?R:-R),R=0,C}}function v(x,b){return x.node(b).width}return fs}var ps,Up;function Qm(){if(Up)return ps;Up=1;var e=Q(),t=oe(),r=Zm().positionX;ps=n;function n(i){i=t.asNonCompoundGraph(i),a(i),e.forEach(r(i),function(o,s){i.node(s).x=o})}function a(i){var o=t.buildLayerMatrix(i),s=i.graph().ranksep,c=0;e.forEach(o,function(u){var d=e.max(e.map(u,function(l){return i.node(l).height}));e.forEach(u,function(l){i.node(l).y=c+d/2}),c+=d+s})}return ps}var hs,Kp;function ey(){if(Kp)return hs;Kp=1;var e=Q(),t=Am(),r=Lm(),n=Mm(),a=oe().normalizeRanks,i=Bm(),o=oe().removeEmptyRanks,s=Wm(),c=Fm(),u=$m(),d=Xm(),l=Qm(),p=oe(),h=ve().Graph;hs=m;function m(k,I){var P=I&&I.debugTiming?p.time:p.notime;P("layout",function(){var O=P(" buildLayoutGraph",function(){return C(k)});P(" runLayout",function(){g(O,P)}),P(" updateInputGraph",function(){v(k,O)})})}function g(k,I){I(" makeSpaceForEdgeLabels",function(){R(k)}),I(" removeSelfEdges",function(){z(k)}),I(" acyclic",function(){t.run(k)}),I(" nestingGraph.run",function(){s.run(k)}),I(" rank",function(){n(p.asNonCompoundGraph(k))}),I(" injectEdgeLabelProxies",function(){A(k)}),I(" removeEmptyRanks",function(){o(k)}),I(" nestingGraph.cleanup",function(){s.cleanup(k)}),I(" normalizeRanks",function(){a(k)}),I(" assignRankMinMax",function(){B(k)}),I(" removeEdgeLabelProxies",function(){N(k)}),I(" normalize.run",function(){r.run(k)}),I(" parentDummyChains",function(){i(k)}),I(" addBorderSegments",function(){c(k)}),I(" order",function(){d(k)}),I(" insertSelfEdges",function(){K(k)}),I(" adjustCoordinateSystem",function(){u.adjust(k)}),I(" position",function(){l(k)}),I(" positionSelfEdges",function(){j(k)}),I(" removeBorderNodes",function(){W(k)}),I(" normalize.undo",function(){r.undo(k)}),I(" fixupEdgeLabelCoords",function(){$(k)}),I(" undoCoordinateSystem",function(){u.undo(k)}),I(" translateGraph",function(){M(k)}),I(" assignNodeIntersects",function(){L(k)}),I(" reversePoints",function(){U(k)}),I(" acyclic.undo",function(){t.undo(k)})}function v(k,I){e.forEach(k.nodes(),function(P){var O=k.node(P),H=I.node(P);O&&(O.x=H.x,O.y=H.y,I.children(P).length&&(O.width=H.width,O.height=H.height))}),e.forEach(k.edges(),function(P){var O=k.edge(P),H=I.edge(P);O.points=H.points,e.has(H,"x")&&(O.x=H.x,O.y=H.y)}),k.graph().width=I.graph().width,k.graph().height=I.graph().height}var x=["nodesep","edgesep","ranksep","marginx","marginy"],b={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},_=["acyclicer","ranker","rankdir","align"],y=["width","height"],S={width:0,height:0},w=["minlen","weight","width","height","labeloffset"],E={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},T=["labelpos"];function C(k){var I=new h({multigraph:!0,compound:!0}),P=G(k.graph());return I.setGraph(e.merge({},b,F(P,x),e.pick(P,_))),e.forEach(k.nodes(),function(O){var H=G(k.node(O));I.setNode(O,e.defaults(F(H,y),S)),I.setParent(O,k.parent(O))}),e.forEach(k.edges(),function(O){var H=G(k.edge(O));I.setEdge(O,e.merge({},E,F(H,w),e.pick(H,T)))}),I}function R(k){var I=k.graph();I.ranksep/=2,e.forEach(k.edges(),function(P){var O=k.edge(P);O.minlen*=2,O.labelpos.toLowerCase()!=="c"&&(I.rankdir==="TB"||I.rankdir==="BT"?O.width+=O.labeloffset:O.height+=O.labeloffset)})}function A(k){e.forEach(k.edges(),function(I){var P=k.edge(I);if(P.width&&P.height){var O=k.node(I.v),H=k.node(I.w),J={rank:(H.rank-O.rank)/2+O.rank,e:I};p.addDummyNode(k,"edge-proxy",J,"_ep")}})}function B(k){var I=0;e.forEach(k.nodes(),function(P){var O=k.node(P);O.borderTop&&(O.minRank=k.node(O.borderTop).rank,O.maxRank=k.node(O.borderBottom).rank,I=e.max(I,O.maxRank))}),k.graph().maxRank=I}function N(k){e.forEach(k.nodes(),function(I){var P=k.node(I);P.dummy==="edge-proxy"&&(k.edge(P.e).labelRank=P.rank,k.removeNode(I))})}function M(k){var I=Number.POSITIVE_INFINITY,P=0,O=Number.POSITIVE_INFINITY,H=0,J=k.graph(),Z=J.marginx||0,ee=J.marginy||0;function ce(te){var re=te.x,Y=te.y,Oe=te.width,X=te.height;I=Math.min(I,re-Oe/2),P=Math.max(P,re+Oe/2),O=Math.min(O,Y-X/2),H=Math.max(H,Y+X/2)}e.forEach(k.nodes(),function(te){ce(k.node(te))}),e.forEach(k.edges(),function(te){var re=k.edge(te);e.has(re,"x")&&ce(re)}),I-=Z,O-=ee,e.forEach(k.nodes(),function(te){var re=k.node(te);re.x-=I,re.y-=O}),e.forEach(k.edges(),function(te){var re=k.edge(te);e.forEach(re.points,function(Y){Y.x-=I,Y.y-=O}),e.has(re,"x")&&(re.x-=I),e.has(re,"y")&&(re.y-=O)}),J.width=P-I+Z,J.height=H-O+ee}function L(k){e.forEach(k.edges(),function(I){var P=k.edge(I),O=k.node(I.v),H=k.node(I.w),J,Z;P.points?(J=P.points[0],Z=P.points[P.points.length-1]):(P.points=[],J=H,Z=O),P.points.unshift(p.intersectRect(O,J)),P.points.push(p.intersectRect(H,Z))})}function $(k){e.forEach(k.edges(),function(I){var P=k.edge(I);if(e.has(P,"x"))switch((P.labelpos==="l"||P.labelpos==="r")&&(P.width-=P.labeloffset),P.labelpos){case"l":P.x-=P.width/2+P.labeloffset;break;case"r":P.x+=P.width/2+P.labeloffset;break}})}function U(k){e.forEach(k.edges(),function(I){var P=k.edge(I);P.reversed&&P.points.reverse()})}function W(k){e.forEach(k.nodes(),function(I){if(k.children(I).length){var P=k.node(I),O=k.node(P.borderTop),H=k.node(P.borderBottom),J=k.node(e.last(P.borderLeft)),Z=k.node(e.last(P.borderRight));P.width=Math.abs(Z.x-J.x),P.height=Math.abs(H.y-O.y),P.x=J.x+P.width/2,P.y=O.y+P.height/2}}),e.forEach(k.nodes(),function(I){k.node(I).dummy==="border"&&k.removeNode(I)})}function z(k){e.forEach(k.edges(),function(I){if(I.v===I.w){var P=k.node(I.v);P.selfEdges||(P.selfEdges=[]),P.selfEdges.push({e:I,label:k.edge(I)}),k.removeEdge(I)}})}function K(k){var I=p.buildLayerMatrix(k);e.forEach(I,function(P){var O=0;e.forEach(P,function(H,J){var Z=k.node(H);Z.order=J+O,e.forEach(Z.selfEdges,function(ee){p.addDummyNode(k,"selfedge",{width:ee.label.width,height:ee.label.height,rank:Z.rank,order:J+ ++O,e:ee.e,label:ee.label},"_se")}),delete Z.selfEdges})})}function j(k){e.forEach(k.nodes(),function(I){var P=k.node(I);if(P.dummy==="selfedge"){var O=k.node(P.e.v),H=O.x+O.width/2,J=O.y,Z=P.x-H,ee=O.height/2;k.setEdge(P.e,P.label),k.removeNode(I),P.label.points=[{x:H+2*Z/3,y:J-ee},{x:H+5*Z/6,y:J-ee},{x:H+Z,y:J},{x:H+5*Z/6,y:J+ee},{x:H+2*Z/3,y:J+ee}],P.label.x=P.x,P.label.y=P.y}})}function F(k,I){return e.mapValues(e.pick(k,I),Number)}function G(k){var I={};return e.forEach(k,function(P,O){I[O.toLowerCase()]=P}),I}return hs}var vs,Jp;function ry(){if(Jp)return vs;Jp=1;var e=Q(),t=oe(),r=ve().Graph;vs={debugOrdering:n};function n(a){var i=t.buildLayerMatrix(a),o=new r({compound:!0,multigraph:!0}).setGraph({});return e.forEach(a.nodes(),function(s){o.setNode(s,{label:s}),o.setParent(s,"layer"+a.node(s).rank)}),e.forEach(a.edges(),function(s){o.setEdge(s.v,s.w,{},s.name)}),e.forEach(i,function(s,c){var u="layer"+c;o.setNode(u,{rank:"same"}),e.reduce(s,function(d,l){return o.setEdge(d,l,{style:"invis"}),l})}),o}return vs}var gs,Vp;function ty(){return Vp||(Vp=1,gs="0.8.5"),gs}var ms,Yp;function ny(){return Yp||(Yp=1,ms={graphlib:ve(),layout:ey(),debug:ry(),util:{time:oe().time,notime:oe().notime},version:ty()}),ms}var ay=ny();const Xp=Ch(ay);function nr(e,t="TB"){let r=240,n=80;switch(e.type){case"input":case"output":r=60,n=60;break;case"decisionNode":r=212,n=160;break;case"forkNode":r=240,n=95;break;case"joinNode":r=240,n=95;break;case"loopNode":const i=(e.data.loopOver||e.data.task?.loopOver||[]).length,o=!!(e.data.loopCondition||e.data.task?.loopCondition);t==="LR"?(r=320+i*50,r=Math.min(r,600),n=145+(o?20:0)):(r=320,n=120+i*40+(o?30:0),n=Math.min(n,400));break;case"subWorkflowNode":r=240,n=95;break;case"eventNode":r=240,n=85;break;case"default":r=240,n=40;break;default:r=240,n=95;break}return{width:r,height:n}}function iy(e,t,r=8){const n=[];if(e.length<r)return n;const a=new Map,i={},o={};e.forEach(l=>{a.set(l.id,l),i[l.id]=[],o[l.id]=[]}),t.forEach(l=>{i[l.source]&&i[l.source].push(l.target),o[l.target]&&o[l.target].push(l.source)});const s=new Set,c=new Set(["input","output","decisionNode","forkNode","joinNode","loopNode","default"]),u=l=>l.id!=="start"&&l.id!=="end"&&!c.has(l.type||""),d=[...e].sort((l,p)=>l.position.y-p.position.y);for(const l of d){if(s.has(l.id)||!u(l))continue;const p=[l.id];let h=l,m=i[h.id];for(;m&&m.length===1;){const g=m[0],v=a.get(g);if(!v||s.has(g)||!u(v)||o[g].length!==1)break;p.push(g),h=v,m=i[h.id]}p.length>=r&&(n.push(p),p.forEach(g=>s.add(g)))}return n}function oy(e,t,r,n,a,i=5,o="view"){const s=t.find(b=>b.id===e[0]),{width:c,height:u}=nr(s||t[0],r),d=Math.max(.7,1-(e.length-10)/80),l=o==="edit"||o==="run"?1.15:1,p=Math.min(n,Math.round(60*d*l)),h=Math.min(a,Math.round(80*d*l)),m=c+p,g=u+h;let v=0,x=0;if(r==="TB"){const b=Math.ceil(e.length/i);v=i*m-p,x=b*g-h}else v=Math.ceil(e.length/i)*m-p,x=i*g-h;return v+=40,x+=40,{width:v,height:x,gridKW:m,gridKH:g,cols:i}}function ae(e,t,r={}){const{direction:n="TB",mode:a="view",enableSnakeLayout:i=!0,snakeColumns:o=5,snakeMinChainLength:s=8,snakeMinNodeCount:c=10}=r,u=e.length;let d=n==="LR"?150:120,l=n==="LR"?120:100,p=d,h=l;if(u>15){let T=Math.max(.5,1-(u-15)/50),C=Math.max(.4,1-(u-15)/40);(a==="edit"||a==="run")&&(T=1-(1-T)*.5,C=1-(1-C)*.5),p=Math.round(d*T),h=Math.round(l*C)}const m=i&&u>c?iy(e,t,s):[],g={};m.forEach((T,C)=>{T.forEach(R=>{g[R]=C})});const v=new Xp.graphlib.Graph;v.setDefaultEdgeLabel(()=>({})),v.setGraph({rankdir:n,ranker:"network-simplex",ranksep:p,nodesep:h,edgesep:50,marginx:50,marginy:50});const x=new Set,b={};e.forEach(T=>{const C=g[T.id];if(C!==void 0){if(!x.has(C)){x.add(C);const R=oy(m[C],e,n,h,p,o,a);b[C]=R,v.setNode(`__CHAIN_${C}`,{width:R.width,height:R.height})}}else{const{width:R,height:A}=nr(T,n);v.setNode(T.id,{width:R,height:A})}}),t.forEach(T=>{const C=g[T.source],R=g[T.target];let A=T.source,B=T.target;C!==void 0&&(A=`__CHAIN_${C}`),R!==void 0&&(B=`__CHAIN_${R}`),A!==B&&v.setEdge(A,B)}),Xp.layout(v);const _={};for(const T of e)_[T.id]={...T};const y=[],S=new Set;e.forEach(T=>{if(g[T.id]===void 0){const C=v.node(T.id),R=_[T.id],{width:A,height:B}=nr(R,n);R.position={x:C.x-A/2,y:C.y-B/2},R.data={...R.data,sourcePosition:void 0,targetPosition:void 0},R.sourcePosition=n==="LR"?q.Position.Right:q.Position.Bottom,R.targetPosition=n==="LR"?q.Position.Left:q.Position.Top,y.push(R)}else S.add(T.id)}),m.forEach((T,C)=>{const R=`__CHAIN_${C}`,A=v.node(R),B=b[C],N=A.x-B.width/2+20,M=A.y-B.height/2+20,L=B.cols,$=B.gridKW,U=B.gridKH;T.forEach((W,z)=>{const K=_[W];let j=0,F=0,G,k;if(n==="TB"){const I=Math.floor(z/L),P=z%L,O=I%2===0,H=Math.ceil(T.length/L),J=I===H-1,Z=T.length%L||L,ee=J?(L-Z)*$/2:0;let ce;O?ce=P*$+ee:ce=(L-1-P)*$-ee;const te=I*U;j=N+ce,F=M+te;const re=J?Z:L;O?(k=q.Position.Left,G=q.Position.Right,P===re-1&&z!==T.length-1&&(G=q.Position.Bottom),P===0&&z!==0&&(k=q.Position.Top)):(k=q.Position.Right,G=q.Position.Left,P===re-1&&z!==T.length-1&&(G=q.Position.Bottom),P===0&&z!==0&&(k=q.Position.Top)),z===0&&(k=q.Position.Top),z===T.length-1&&(G=q.Position.Bottom)}else{const I=Math.floor(z/L),P=z%L,O=I%2===0,H=Math.ceil(T.length/L),J=I===H-1,Z=T.length%L||L,ee=J?(L-Z)*U/2:0,ce=I*$;let te;O?te=P*U+ee:te=(L-1-P)*U-ee,j=N+ce,F=M+te;const re=J?Z:L;O?(k=q.Position.Top,G=q.Position.Bottom,P===re-1&&z!==T.length-1&&(G=q.Position.Right),P===0&&z!==0&&(k=q.Position.Left)):(k=q.Position.Bottom,G=q.Position.Top,P===re-1&&z!==T.length-1&&(G=q.Position.Right),P===0&&z!==0&&(k=q.Position.Left)),z===0&&(k=q.Position.Left),z===T.length-1&&(G=q.Position.Right)}K.position={x:j,y:F},K.data={...K.data,sourcePosition:G,targetPosition:k},K.sourcePosition=G,K.targetPosition=k,y.push(K)})});const w=y.reduce((T,C)=>({...T,[C.id]:C}),{}),E=t.map(T=>{const C=w[T.source],R=w[T.target];if(!C||!R||S.has(C.id)||C.type!=="decisionNode")return T;const{width:A,height:B}=nr(C,n),{width:N,height:M}=nr(R,n),L={x:C.position.x+A/2,y:C.position.y+B/2},$={x:R.position.x+N/2,y:R.position.y+M/2};let U=null;if(n==="TB"){const W=A*.25;$.x<L.x-W?U="left":$.x>L.x+W&&(U="right")}else{const W=B*.25;$.y<L.y-W?U="top":$.y>L.y+W&&(U="bottom")}return{...T,sourceHandle:U}});return{nodes:y,edges:E}}function be(e,t){if(!e)return null;for(const r of e){if(r.taskReferenceName===t)return r;if(r.decisionCases){for(const a of Object.keys(r.decisionCases)){const i=be(r.decisionCases[a],t);if(i)return i}const n=be(r.defaultCase,t);if(n)return n}if(r.forkTasks)for(const n of r.forkTasks){const a=be(n,t);if(a)return a}if(r.loopOver){const n=be(r.loopOver,t);if(n)return n}}return null}function ar(e,t){if(!e)return!1;const r=e.findIndex(n=>n.taskReferenceName===t);if(r!==-1)return e.splice(r,1),!0;for(const n of e){if(n.decisionCases){for(const a of Object.keys(n.decisionCases))if(ar(n.decisionCases[a],t))return!0;if(ar(n.defaultCase,t))return!0}if(n.forkTasks){for(const a of n.forkTasks)if(ar(a,t))return!0}if(n.loopOver&&ar(n.loopOver,t))return!0}return!1}function ge(e,t,r){if(!e)return!1;const n=e.findIndex(a=>a.taskReferenceName===t);if(n!==-1)return e.splice(n+1,0,r),!0;if(t==="start")return e.unshift(r),!0;for(const a of e){if(a.decisionCases){for(const i of Object.keys(a.decisionCases))if(ge(a.decisionCases[i],t,r))return!0;if(ge(a.defaultCase,t,r))return!0}if(a.forkTasks){for(const i of a.forkTasks)if(ge(i,t,r))return!0}if(a.loopOver&&ge(a.loopOver,t,r))return!0}return!1}function ir(e,t,r,n){for(const a of e||[]){if(a.taskReferenceName===t){if(r.branchCase==="default")return a.defaultCase||(a.defaultCase=[]),a.defaultCase.unshift(n),!0;if(r.branchCase!==void 0)return a.decisionCases||(a.decisionCases={}),a.decisionCases[r.branchCase]||(a.decisionCases[r.branchCase]=[]),a.decisionCases[r.branchCase].unshift(n),!0;if(r.forkIndex!==void 0)return a.forkTasks||(a.forkTasks=[]),a.forkTasks[r.forkIndex].unshift(n),!0;if(r.isLoopAdd)return a.loopOver||(a.loopOver=[]),a.loopOver.unshift(n),!0}if(a.decisionCases){for(const i of Object.keys(a.decisionCases))if(ir(a.decisionCases[i],t,r,n))return!0;if(ir(a.defaultCase,t,r,n))return!0}if(a.forkTasks){for(const i of a.forkTasks)if(ir(i,t,r,n))return!0}}return!1}function ie(e){if(e)for(let t=0;t<e.length;t++){const r=e[t];if(r.type==="FORK_JOIN"&&t+1<e.length){const n=e[t+1];if(n.type==="JOIN"){const a=[];(r.forkTasks||[]).forEach(i=>{i&&i.length>0&&a.push(i[i.length-1].taskReferenceName)}),n.joinOn=a}}r.decisionCases&&(Object.values(r.decisionCases).forEach(n=>ie(n)),r.defaultCase&&ie(r.defaultCase)),r.forkTasks&&r.forkTasks.forEach(n=>ie(n)),r.loopOver&&ie(r.loopOver)}}const sy=[{field:"name",type:"required",message:"工作流名称 (name) 必填"},{field:"version",type:"required",message:"工作流版本 (version) 必填"},{field:"tasks",type:"min_length",value:1,message:"工作流必须包含至少一个任务"}],Zp={common:[{field:"name",type:"required",message:"任务类型名称 (name) 必填"},{field:"taskReferenceName",type:"required",message:"引用名 (taskReferenceName) 必填"},{field:"taskReferenceName",type:"pattern",value:/^[a-zA-Z0-9_]+$/,message:"引用名仅允许字母、数字和下划线"},{field:"taskReferenceName",type:"unique",message:"引用名在工作流中必须唯一"}],types:{HTTP:[{field:"inputParameters.http_request.uri",type:"required",message:"HTTP 任务缺少请求地址 (uri) 配置"},{field:"inputParameters.http_request.method",type:"required",level:"warning",message:"HTTP 任务未指定 Method,建议配置"}],LAMBDA:[{field:"inputParameters.scriptExpression",type:"required",message:"LAMBDA 任务缺少脚本表达式 (scriptExpression)"}],JSON_JQ_TRANSFORM:[{field:"inputParameters.queryExpression",type:"required",message:"JQ 任务缺少查询表达式 (queryExpression)"}],SUB_WORKFLOW:[{field:"subWorkflowParam.name",type:"required",message:"子工作流任务缺少子流程名称 (name)"}],TERMINATE:[{field:"inputParameters.terminationStatus",type:"required",level:"warning",message:"终止任务未指定状态 (terminationStatus)"},{field:"inputParameters.terminationStatus",type:"enum",value:["COMPLETED","FAILED"],message:"终止状态必须为 COMPLETED 或 FAILED"}],DO_WHILE:[{field:"loopCondition",type:"required",message:"循环任务缺少退出条件 (loopCondition)"}],DECISION:[{field:"decisionCases",type:"custom",validate:e=>Object.keys(e||{}).length>0,message:"决策任务必须至少包含一个分支 (decisionCases)"},{field:"decisionCases",type:"custom",validate:e=>{const t=Object.keys(e||{});return new Set(t).size===t.length},message:"决策分支条件不能重复"}],SWITCH:[{field:"decisionCases",type:"custom",validate:e=>Object.keys(e||{}).length>0,message:"Switch 任务必须至少包含一个分支"}]}},uy=(e,t)=>t.split(".").reduce((r,n)=>r&&r[n]!==void 0?r[n]:void 0,e),ys=(e,t,r,n)=>{const{errors:a,warnings:i}=n,o=e.taskReferenceName||"GLOBAL";t.forEach(s=>{const c=uy(e,s.field);let u=!0;switch(s.type){case"required":u=c!=null&&c!=="";break;case"min_length":u=Array.isArray(c)&&c.length>=s.value;break;case"pattern":u=s.value.test(c);break;case"enum":u=s.value.includes(c);break;case"unique":s.field==="taskReferenceName"&&c&&(r.taskRefs.has(c)?u=!1:r.taskRefs.add(c));break;case"custom":typeof s.validate=="function"&&(u=s.validate(c,e,r));break}if(!u){const d={type:e.taskReferenceName?"TASK":"GLOBAL",ref:o,message:s.message};s.level==="warning"?i.push(d):a.push(d)}})},me=e=>{const t=[],r=[],n={taskRefs:new Set,taskMap:{}};if(!e)return{isValid:!1,errors:[{type:"GLOBAL",ref:"",message:"工作流定义为空"}],warnings:[]};if(ys(e,sy,n,{errors:t,warnings:r}),!e.tasks||e.tasks.length===0)return{isValid:!1,errors:t,warnings:r};const a=o=>{o.forEach(s=>{ys(s,Zp.common,n,{errors:t,warnings:r});const c=Zp.types[s.type];c&&ys(s,c,n,{errors:t,warnings:r}),s.decisionCases&&Object.keys(s.decisionCases).forEach(u=>{a(s.decisionCases[u])}),s.defaultCase&&a(s.defaultCase),s.forkTasks&&s.forkTasks.forEach(u=>a(u)),s.loopOver&&a(s.loopOver)})};a(e.tasks);const i=cy(e.tasks);return t.push(...i),{isValid:t.length===0,errors:t,warnings:r}},cy=e=>{const t=[],r=new Map,n=new Set,a=d=>{for(let l=0;l<d.length;l++){const p=d[l],h=p.taskReferenceName;if(n.add(h),r.has(h)||r.set(h,[]),l<d.length-1){const m=d[l+1].taskReferenceName;p.type!=="FORK_JOIN"&&p.type!=="FORK_JOIN_DYNAMIC"&&r.get(h).push(m)}if(p.decisionCases)for(const m of Object.values(p.decisionCases))m.length>0&&(r.get(h).push(m[0].taskReferenceName),a(m));if(p.defaultCase&&p.defaultCase.length>0&&(r.get(h).push(p.defaultCase[0].taskReferenceName),a(p.defaultCase)),p.forkTasks)for(const m of p.forkTasks)m.length>0&&(r.get(h).push(m[0].taskReferenceName),a(m));if(p.loopOver)for(const m of p.loopOver)n.add(m.taskReferenceName);if(p.joinOn)for(const m of p.joinOn)r.has(m)||r.set(m,[]),r.get(m).push(h)}};a(e);const i=0,o=1,s=2,c=new Map;for(const d of n)c.set(d,i);const u=d=>{c.set(d,o);const l=r.get(d)||[];for(const p of l)if(c.has(p)){if(c.get(p)===o)return t.push({type:"GLOBAL",ref:p,message:`检测到环路:任务 "${d}" → "${p}" 形成了循环依赖`}),!0;if(c.get(p)===i&&u(p))return!0}return c.set(d,s),!1};for(const d of n)c.get(d)===i&&u(d);return t},V=qh()(Ph(Ah((e,t)=>({mode:"view",workflowDef:null,workflowInstance:null,nodes:[],edges:[],taskMap:{},layoutDirection:"TB",selectedTask:null,selectedTaskInstance:null,isDetailPanelOpen:!1,executionData:null,validationResults:{isValid:!0,errors:[],warnings:[]},theme:"dark",themeColor:"blue",edgeType:"smoothstep",nodesLocked:!0,copiedTask:null,setWorkflow:(r,n)=>{const a=n||t().layoutDirection,i=JSON.parse(JSON.stringify(r));ie(i.tasks);const{nodes:o,edges:s,taskMap:c}=ue(i,a,{hideEmptyBranches:t().mode!=="edit"}),{nodes:u,edges:d}=ae(o,s,{direction:a,mode:t().mode}),l=me(i);e({workflowDef:i,nodes:u,edges:d,taskMap:c,validationResults:l,layoutDirection:a})},setMode:r=>{t().mode==="run"&&r!=="run"&&e({executionData:null,workflowInstance:null}),e({mode:r});const{workflowDef:a,layoutDirection:i}=t();if(a){const{nodes:o,edges:s,taskMap:c}=ue(a,i,{hideEmptyBranches:r!=="edit"}),{nodes:u,edges:d}=ae(o,s,{direction:i,mode:r});e({nodes:u,edges:d,taskMap:c})}},setExecutionData:r=>e({executionData:r}),updateTaskStatus:(r,n)=>{const{executionData:a}=t();if(!a)return;const i={...a};i[r]&&(i[r]={...i[r],status:n},e({executionData:i}))},loadSampleExecution:async()=>{try{const n=await(await fetch("/sample-workflows/sample-execution.json")).json();t().importExecutionJSON(n)}catch(r){console.error("Failed to load sample execution:",r),alert("加载示例运行数据失败")}},importExecutionJSON:r=>{if(!r)return;let n=[],a=null,i=t().workflowDef;if(Array.isArray(r.tasks)?(n=r.tasks,r.workflowId&&r.status&&(a=r,r.workflowDefinition&&(i=r.workflowDefinition))):Array.isArray(r)&&(n=r),n.length===0)return;const o={};n.forEach(s=>{const c=s.referenceTaskName;c&&(o[c]||(o[c]={taskReferenceName:c,status:s.status,attempts:[],startTime:s.startTime,endTime:s.endTime,output:s.outputData,input:s.inputData,reasonForIncompletion:s.reasonForIncompletion,iteration:s.iteration}),o[c].attempts.push(s),o[c].status=s.status,o[c].startTime=s.startTime,o[c].endTime=s.endTime,o[c].output=s.outputData,o[c].input=s.inputData,o[c].reasonForIncompletion=s.reasonForIncompletion,o[c].iteration=s.iteration)}),i&&JSON.stringify(i)!==JSON.stringify(t().workflowDef)&&t().setWorkflow(i),e({executionData:o,workflowInstance:a,mode:"run"})},setSelectedTask:r=>e({selectedTask:r?{...r}:null}),setIsDetailPanelOpen:r=>e({isDetailPanelOpen:r}),selectTaskAction:(r,n=!0)=>{e({selectedTask:r?{...r}:null,isDetailPanelOpen:r?n:!1,selectedTaskInstance:null})},setSelectedTaskInstance:r=>e({selectedTaskInstance:r}),setLayoutDirection:r=>{const{workflowDef:n}=t();if(n){const{nodes:a,edges:i,taskMap:o}=ue(n,r,{hideEmptyBranches:t().mode!=="edit"}),{nodes:s,edges:c}=ae(a,i,{direction:r,mode:t().mode});e({nodes:s,edges:c,taskMap:o,layoutDirection:r})}else e({layoutDirection:r})},onNodesChange:r=>{const n=t().nodes,a=q.applyNodeChanges(r,n);a!==n&&e({nodes:a})},onEdgesChange:r=>{const n=t().edges,a=q.applyEdgeChanges(r,n);a!==n&&e({edges:a})},onConnect:r=>{const{edges:n,layoutDirection:a}=t(),i=q.addEdge(r,n),{nodes:o,edges:s}=ae(t().nodes,i,{direction:a,mode:t().mode});e({edges:s,nodes:o})},checkTaskRefUniqueness:(r,n)=>{if(r===n)return!0;const{taskMap:a}=t();return!a[r]},updateTask:(r,n,a)=>{const{workflowDef:i,layoutDirection:o}=t();if(!i)return;const s=JSON.parse(JSON.stringify(i)),c=be(s.tasks,r);if(c){typeof n=="object"?Object.assign(c,n):c[n]=a,ie(s.tasks);const{nodes:u,edges:d,taskMap:l}=ue(s,o,{hideEmptyBranches:t().mode!=="edit"}),{nodes:p,edges:h}=ae(u,d,{direction:o,mode:t().mode}),m=me(s);e({workflowDef:s,nodes:p,edges:h,taskMap:l,validationResults:m})}},updateWorkflowProperties:r=>{const{workflowDef:n,layoutDirection:a}=t();if(!n)return;const i=JSON.parse(JSON.stringify(n));Object.assign(i,r),ie(i.tasks);const{nodes:o,edges:s,taskMap:c}=ue(i,a,{hideEmptyBranches:t().mode!=="edit"}),{nodes:u,edges:d}=ae(o,s,{direction:a,mode:t().mode}),l=me(i);e({workflowDef:i,nodes:u,edges:d,taskMap:c,validationResults:l})},addNode:(r,n,a,i,o={})=>{const{workflowDef:s,layoutDirection:c}=t();if(!s)return;const u=JSON.parse(JSON.stringify(s)),d={name:r.data.label,taskReferenceName:r.data.taskReferenceName,type:r.data.taskType||"SIMPLE",inputParameters:{}};switch(d.type){case"HTTP":d.httpRequest={method:"GET",uri:"https://example.com/api",headers:{"Content-Type":"application/json"},body:{}};break;case"KAFKA_PUBLISH":d.inputParameters={topic:"my_topic",value:"${workflow.input.value}",bootStrapServers:"localhost:9092",headers:{},key:"msg_key"};break;case"JSON_JQ_TRANSFORM":d.inputParameters={queryExpression:".name",input:{}};break;case"SET_VARIABLE":d.inputParameters={variableName:"variableValue"};break;case"SUB_WORKFLOW":d.subWorkflowParam={name:"execution_workflow",version:1};break;case"EVENT":d.sink="conductor";break;case"WAIT":d.inputParameters={duration:"30s"};break;case"TERMINATE":d.inputParameters={terminationStatus:"COMPLETED",workflowOutput:{}};break}if(d.type==="FORK_JOIN"||d.type==="FORK_JOIN_DYNAMIC"){d.type==="FORK_JOIN"?d.forkTasks=[[],[]]:(d.dynamicForkTasksParam="dynamic_tasks",d.dynamicForkTasksInputParamName="input");const x={name:`${d.name}_join`,taskReferenceName:`${d.taskReferenceName}_join`,type:"JOIN",joinOn:[]};o.branchCase!==void 0||o.forkIndex!==void 0||o.isLoopAdd?(ir(u.tasks,n,o,d),ge(u.tasks,d.taskReferenceName,x)):n==="start"&&u.tasks.length===0?u.tasks.push(d,x):(ge(u.tasks,n,d),ge(u.tasks,d.taskReferenceName,x))}else d.type==="DECISION"?(d.caseValueParam="case_param",d.decisionCases={case1:[]},d.defaultCase=[]):d.type==="DO_WHILE"&&(d.loopCondition="$.taskReferenceName.output.value < 10",d.loopOver=[]),o.branchCase!==void 0||o.forkIndex!==void 0||o.isLoopAdd?ir(u.tasks,n,o,d):n==="start"&&u.tasks.length===0?u.tasks.push(d):ge(u.tasks,n,d);ie(u.tasks);const{nodes:l,edges:p,taskMap:h}=ue(u,c,{hideEmptyBranches:t().mode!=="edit"}),{nodes:m,edges:g}=ae(l,p,{direction:c,mode:t().mode}),v=me(u);e({workflowDef:u,nodes:m,edges:g,taskMap:h,validationResults:v})},removeNode:r=>{const{workflowDef:n,layoutDirection:a}=t();if(!n||r==="start"||r==="end")return;const i=JSON.parse(JSON.stringify(n));ar(i.tasks,r),ie(i.tasks);const{nodes:o,edges:s,taskMap:c}=ue(i,a,{hideEmptyBranches:t().mode!=="edit"}),{nodes:u,edges:d}=ae(o,s,{direction:a,mode:t().mode}),l=me(i);e({workflowDef:i,nodes:u,edges:d,taskMap:c,validationResults:l})},addLoopTask:(r,n)=>{const{workflowDef:a,layoutDirection:i}=t();if(!a)return;const o=JSON.parse(JSON.stringify(a)),s=be(o.tasks,r);if(s&&s.type==="DO_WHILE"){s.loopOver||(s.loopOver=[]);const c={name:`new_${n.toLowerCase()}`,taskReferenceName:`${r}_sub_${Date.now()}`,type:n,inputParameters:{}};s.loopOver.push(c),ie(o.tasks);const{nodes:u,edges:d,taskMap:l}=ue(o,i,{hideEmptyBranches:t().mode!=="edit"}),{nodes:p,edges:h}=ae(u,d,{direction:i,mode:t().mode}),m=me(o);e({workflowDef:o,nodes:p,edges:h,taskMap:l,validationResults:m})}},removeLoopTask:(r,n)=>{const{workflowDef:a,layoutDirection:i}=t();if(!a)return;const o=JSON.parse(JSON.stringify(a)),s=be(o.tasks,r);if(s&&s.type==="DO_WHILE"&&s.loopOver){s.loopOver=s.loopOver.filter(m=>m.taskReferenceName!==n),ie(o.tasks);const{nodes:c,edges:u,taskMap:d}=ue(o,i,{hideEmptyBranches:t().mode!=="edit"}),{nodes:l,edges:p}=ae(c,u,{direction:i,mode:t().mode}),h=me(o);e({workflowDef:o,nodes:l,edges:p,taskMap:d,validationResults:h})}},addDecisionBranch:(r,n)=>{const{workflowDef:a,layoutDirection:i}=t();if(!a)return;const o=JSON.parse(JSON.stringify(a)),s=be(o.tasks,r);if(s&&(s.type==="DECISION"||s.type==="SWITCH")){n==="default"?s.defaultCase||(s.defaultCase=[]):(s.decisionCases||(s.decisionCases={}),s.decisionCases[n]||(s.decisionCases[n]=[])),ie(o.tasks);const{nodes:c,edges:u,taskMap:d}=ue(o,i,{hideEmptyBranches:t().mode!=="edit"}),{nodes:l,edges:p}=ae(c,u,{direction:i,mode:t().mode}),h=me(o);e({workflowDef:o,nodes:l,edges:p,taskMap:d,validationResults:h})}},removeDecisionBranch:(r,n)=>{const{workflowDef:a,layoutDirection:i}=t();if(!a)return;const o=JSON.parse(JSON.stringify(a)),s=be(o.tasks,r);if(s&&(s.type==="DECISION"||s.type==="SWITCH")){n==="default"?s.defaultCase=[]:s.decisionCases&&delete s.decisionCases[n],ie(o.tasks);const{nodes:c,edges:u,taskMap:d}=ue(o,i,{hideEmptyBranches:t().mode!=="edit"}),{nodes:l,edges:p}=ae(c,u,{direction:i,mode:t().mode}),h=me(o);e({workflowDef:o,nodes:l,edges:p,taskMap:d,validationResults:h})}},addForkBranch:r=>{const{workflowDef:n,layoutDirection:a}=t();if(!n)return;const i=JSON.parse(JSON.stringify(n)),o=be(i.tasks,r);if(o&&o.type==="FORK_JOIN"){o.forkTasks||(o.forkTasks=[]),o.forkTasks.push([]),ie(i.tasks);const{nodes:s,edges:c,taskMap:u}=ue(i,a,{hideEmptyBranches:t().mode!=="edit"}),{nodes:d,edges:l}=ae(s,c,{direction:a,mode:t().mode}),p=me(i);e({workflowDef:i,nodes:d,edges:l,taskMap:u,validationResults:p})}},copyTask:r=>e({copiedTask:r}),pasteTask:r=>{const{workflowDef:n,layoutDirection:a,selectedTask:i}=t();if(!n)return;const o=JSON.parse(JSON.stringify(n)),c=`_copy_${Date.now()}`,u=JSON.parse(JSON.stringify(r)),d=b=>{b.taskReferenceName=`${b.taskReferenceName}${c}`,b.decisionCases&&Object.values(b.decisionCases).forEach(_=>_.forEach(d)),b.defaultCase&&b.defaultCase.forEach(d),b.forkTasks&&b.forkTasks.forEach(_=>_.forEach(d)),b.loopOver&&b.loopOver.forEach(d)};d(u);const l=i?i.taskReferenceName:o.tasks.length>0?o.tasks[o.tasks.length-1].taskReferenceName:"start";if(u.type==="FORK_JOIN"){u.forkTasks||(u.forkTasks=[[],[]]);const b={name:`${u.name}_join`,taskReferenceName:`${u.taskReferenceName}_join`,type:"JOIN",joinOn:[]};l==="start"&&o.tasks.length===0?o.tasks.push(u,b):(ge(o.tasks,l,u),ge(o.tasks,u.taskReferenceName,b))}else l==="start"&&o.tasks.length===0?o.tasks.push(u):ge(o.tasks,l,u);ie(o.tasks);const{nodes:p,edges:h,taskMap:m}=ue(o,a,{hideEmptyBranches:t().mode!=="edit"}),{nodes:g,edges:v}=ae(p,h,{direction:a,mode:t().mode}),x=me(o);e({workflowDef:o,nodes:g,edges:v,taskMap:m,validationResults:x})},setTheme:r=>e({theme:r}),setThemeColor:r=>e({themeColor:r}),setEdgeType:r=>e({edgeType:r}),setNodesLocked:r=>e({nodesLocked:r}),createBlankWorkflow:r=>{const n={name:r||"new_workflow",description:"",tasks:[],version:1,schemaVersion:2};t().setWorkflow(n),e({mode:"edit"})},applyAIGeneratedWorkflow:r=>{const{tasks:n,...a}=r,i={...a,name:r.name||"AI_Generated_Workflow",tasks:n||[],version:r.version||1,schemaVersion:2};t().setWorkflow(i)}}),{partialize:e=>({workflowDef:e.workflowDef,layoutDirection:e.layoutDirection,nodes:e.nodes,edges:e.edges,taskMap:e.taskMap,theme:e.theme,themeColor:e.themeColor,mode:e.mode,edgeType:e.edgeType,nodesLocked:e.nodesLocked,copiedTask:e.copiedTask}),equality:(e,t)=>JSON.stringify(e.workflowDef)===JSON.stringify(t.workflowDef)}),{name:"conductor-ui-prefs",version:1,storage:Cs(()=>localStorage),migrate:(e,t)=>(t===0&&e.edgeType==="default"&&(e.edgeType="smoothstep"),e),partialize:e=>({theme:e.theme,themeColor:e.themeColor,layoutDirection:e.layoutDirection,edgeType:e.edgeType,nodesLocked:e.nodesLocked,copiedTask:e.copiedTask})})),Qp=({message:e,onConfirm:t,onCancel:r})=>{const n=D.useRef(null);return D.useEffect(()=>{n.current?.focus();const a=i=>{i.key==="Escape"&&r()};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[r]),f.jsx("div",{role:"dialog","aria-modal":"true","aria-label":"确认操作",style:{position:"fixed",top:0,left:0,width:"100vw",height:"100vh",backgroundColor:"rgba(0,0,0,0.5)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:2e3,backdropFilter:"blur(4px)",animation:"fadeIn 0.15s ease-out"},onClick:r,children:f.jsxs("div",{style:{backgroundColor:"var(--bg-secondary)",border:"1px solid var(--border-secondary)",borderRadius:"12px",padding:"24px",maxWidth:"400px",width:"90%",boxShadow:"0 16px 40px rgba(0,0,0,0.3)",animation:"popIn 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275)"},onClick:a=>a.stopPropagation(),children:[f.jsx("div",{style:{fontSize:"14px",color:"var(--text-primary)",marginBottom:"20px",lineHeight:"1.5"},children:e}),f.jsxs("div",{style:{display:"flex",justifyContent:"flex-end",gap:"8px"},children:[f.jsx("button",{ref:n,onClick:r,style:{padding:"8px 16px",backgroundColor:"var(--bg-tertiary)",border:"1px solid var(--border-primary)",borderRadius:"6px",color:"var(--text-primary)",cursor:"pointer",fontSize:"13px"},children:"取消"}),f.jsx("button",{onClick:t,style:{padding:"8px 16px",backgroundColor:"#ef4444",border:"none",borderRadius:"6px",color:"#fff",cursor:"pointer",fontSize:"13px",fontWeight:600},children:"确定"})]})]})})},Be=({children:e,nodeId:t,selected:r=!1,isStartOrEnd:n=!1,isError:a=!1,hasWarning:i=!1,isDecision:o=!1,isHighlighted:s=!1,executionStatus:c})=>{const{mode:u,removeNode:d}=V(),[l,p]=D.useState(!1),h=x=>{x.stopPropagation(),p(!0)},m=u==="edit"&&!n,g=o?`decision-node-wrapper ${r?"node-wrapper-selected":""} ${s?"node-wrapper-highlighted":""}`:`node-wrapper-glass ${r?"node-wrapper-selected":""} ${s?"node-wrapper-highlighted":""}`,v=D.useMemo(()=>{if(u!=="run")return{};if(!c)return{opacity:.4};switch(c){case"FAILED":case"FAILED_WITH_TERMINAL_ERROR":return{borderColor:"var(--status-failed)",boxShadow:"0 0 12px rgba(239, 68, 68, 0.5), 0 0 24px rgba(239, 68, 68, 0.2)"};case"TIMED_OUT":return{borderColor:"var(--status-timed-out)",boxShadow:"0 0 8px rgba(249, 115, 22, 0.4)"};case"IN_PROGRESS":case"SCHEDULED":return{borderColor:"var(--status-in-progress)",animation:"status-pulse 1.5s ease-in-out infinite"};case"COMPLETED":return{borderColor:"var(--status-completed)",opacity:.85};case"COMPLETED_WITH_ERRORS":return{borderColor:"var(--status-completed-with-errors)"};case"SKIPPED":case"CANCELED":return{opacity:.5};default:return{}}},[u,c]);return f.jsxs("div",{className:g,style:{position:"relative",...v},children:[m&&f.jsx("button",{onClick:h,"aria-label":"删除任务",style:{position:"absolute",top:"-10px",right:"-10px",width:"24px",height:"24px",borderRadius:"50%",backgroundColor:"#ef4444",color:"white",border:"2px solid white",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"14px",zIndex:100,boxShadow:"0 2px 8px rgba(0,0,0,0.2)",animation:"popIn 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275)",padding:0},title:"删除任务",children:"×"}),a&&f.jsx("div",{style:{position:"absolute",top:"-10px",left:"-10px",width:"24px",height:"24px",borderRadius:"50%",backgroundColor:"#ef4444",color:"white",border:"2px solid white",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"14px",zIndex:101,boxShadow:"0 2px 8px rgba(0,0,0,0.2)"},title:"此节点配置有误",children:"❗"}),!a&&i&&f.jsx("div",{style:{position:"absolute",top:"-10px",left:"-10px",width:"24px",height:"24px",borderRadius:"50%",backgroundColor:"#f59e0b",color:"white",border:"2px solid white",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"14px",zIndex:101,boxShadow:"0 2px 8px rgba(0,0,0,0.2)"},title:"此节点有警告信息",children:"⚠️"}),e,l&&f.jsx(Qp,{message:"确定要删除此任务吗?",onConfirm:()=>{d(t),p(!1)},onCancel:()=>p(!1)})]})},dy=({status:e})=>{const t=()=>{switch(e){case"SCHEDULED":return{icon:"○",className:"scheduled"};case"IN_PROGRESS":return{icon:"◐",className:"in-progress"};case"COMPLETED":return{icon:"✓",className:"completed"};case"COMPLETED_WITH_ERRORS":return{icon:"⚠",className:"completed-with-errors"};case"FAILED":case"FAILED_WITH_TERMINAL_ERROR":return{icon:"✗",className:"failed"};case"TIMED_OUT":return{icon:"⏱",className:"timed-out"};case"SKIPPED":return{icon:"⤳",className:"skipped"};case"CANCELED":return{icon:"⊘",className:"canceled"};default:return{icon:"?",className:"unknown"}}},{icon:r,className:n}=t();return f.jsx("div",{className:`execution-status-badge ${n}`,title:e,children:f.jsx("span",{className:"badge-icon",children:r})})},eh=D.memo(dy),ly=({icon:e,header:t,title:r,meta:n,color:a,status:i,isRunning:o,children:s,width:c="240px",border:u=!0})=>f.jsxs("div",{style:{display:"flex",flexDirection:"row",width:c,height:"100%",position:"relative",overflow:"hidden",border:u?"4px solid var(--border-primary)":"none",borderRadius:"8px"},children:[f.jsx("div",{style:{width:"48px",display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"rgba(205, 74, 74, 0.03)",borderRight:"1px solid var(--color-accent)",color:a},children:f.jsx(e,{size:20,strokeWidth:1.5})}),f.jsxs("div",{style:{flex:1,padding:"10px 14px",display:"flex",flexDirection:"column",justifyContent:"center",overflow:"hidden"},children:[f.jsx("div",{style:{fontSize:"14px",fontWeight:700,textTransform:"uppercase",letterSpacing:"0.5px",opacity:.7,marginBottom:"4px",color:a},children:t}),f.jsx("div",{style:{fontSize:"18px",fontWeight:600,color:"var(--text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginBottom:"2px"},title:r,children:r}),n&&f.jsx("div",{style:{fontSize:"11px",color:"var(--text-secondary)",fontStyle:"italic",lineHeight:"1.4",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:n,children:n}),s&&f.jsx("div",{style:{marginTop:"8px"},children:s})]}),o&&i&&f.jsx("div",{style:{position:"absolute",top:"8px",right:"8px"},children:f.jsx(eh,{status:i})})]}),or=D.memo(ly),We=e=>{const t=e.layoutDirection||"TB",r=e.sourcePosition||(t==="LR"?q.Position.Right:q.Position.Bottom),n=e.targetPosition||(t==="LR"?q.Position.Left:q.Position.Top);return{layoutDirection:t,sourcePosition:r,targetPosition:n}},Fe=e=>{const{mode:t,executionData:r}=V(),n=t==="run"?r?.[e]:null;return{mode:t,execution:n,isRunning:t==="run"}};const fy=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),py=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,r,n)=>n?n.toUpperCase():r.toLowerCase()),rh=e=>{const t=py(e);return t.charAt(0).toUpperCase()+t.slice(1)},th=(...e)=>e.filter((t,r,n)=>!!t&&t.trim()!==""&&n.indexOf(t)===r).join(" ").trim(),hy=e=>{for(const t in e)if(t.startsWith("aria-")||t==="role"||t==="title")return!0};var vy={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const gy=D.forwardRef(({color:e="currentColor",size:t=24,strokeWidth:r=2,absoluteStrokeWidth:n,className:a="",children:i,iconNode:o,...s},c)=>D.createElement("svg",{ref:c,...vy,width:t,height:t,stroke:e,strokeWidth:n?Number(r)*24/Number(t):r,className:th("lucide",a),...!i&&!hy(s)&&{"aria-hidden":"true"},...s},[...o.map(([u,d])=>D.createElement(u,d)),...Array.isArray(i)?i:[i]]));const fe=(e,t)=>{const r=D.forwardRef(({className:n,...a},i)=>D.createElement(gy,{ref:i,iconNode:t,className:th(`lucide-${fy(rh(e))}`,`lucide-${e}`,n),...a}));return r.displayName=rh(e),r};const nh=fe("activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);const my=fe("circle-stop",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["rect",{x:"9",y:"9",width:"6",height:"6",rx:"1",key:"1ssd4o"}]]);const yy=fe("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);const by=fe("database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);const ah=fe("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);const Cr=fe("git-merge",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M6 21V9a9 9 0 0 0 9 9",key:"7kw0sc"}]]);const xy=fe("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);const _y=fe("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]);const ih=fe("repeat",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]]);const ky=fe("shuffle",[["path",{d:"m18 14 4 4-4 4",key:"10pe0f"}],["path",{d:"m18 2 4 4-4 4",key:"pucp1d"}],["path",{d:"M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22",key:"1ailkh"}],["path",{d:"M2 6h1.972a4 4 0 0 1 3.6 2.2",key:"km57vx"}],["path",{d:"M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45",key:"os18l9"}]]);const Sy=fe("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);const wy=fe("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),$e=[{type:"SIMPLE",label:"任务节点 (Worker)",description:"在远程 Worker 上执行的任务",category:"CORE",icon:nh},{type:"SUB_WORKFLOW",label:"子工作流 (Sub Workflow)",description:"调用并执行另一个工作流",category:"CORE",icon:Cr},{type:"HTTP",label:"HTTP 请求",description:"发起 REST/HTTP 调用",category:"SYSTEM",icon:xy},{type:"JSON_JQ_TRANSFORM",label:"JSON 转换 (JQ)",description:"使用 JQ 表达式转换 JSON 数据",category:"SYSTEM",icon:Sy},{type:"KAFKA_PUBLISH",label:"Kafka 推送",description:"向 Kafka 主题推送消息",category:"SYSTEM",icon:_y},{type:"EVENT",label:"事件 (Event)",description:"向外部队列系统发布事件",category:"SYSTEM",icon:wy},{type:"WAIT",label:"等待 (Wait)",description:"暂停流程,直到特定时间或时长",category:"SYSTEM",icon:yy},{type:"SET_VARIABLE",label:"设置变量 (Set Variable)",description:"设置工作流上下文变量",category:"SYSTEM",icon:by},{type:"TERMINATE",label:"终止 (Terminate)",description:"提前结束工作流执行",category:"SYSTEM",icon:my},{type:"DECISION",label:"判断 (Switch)",description:"基于条件的逻辑分支 (Switch/Case)",category:"FLOW",icon:ky},{type:"FORK_JOIN",label:"并行分支 (Fork)",description:"并行执行多个任务分支",category:"FLOW",icon:ah},{type:"DO_WHILE",label:"循环 (Do-While)",description:"循环执行直到满足条件",category:"FLOW",icon:ih},{type:"JOIN",label:"汇聚 (Join)",description:"等待并行分支执行完成",category:"FLOW",icon:Cr}],Ey=[{key:"CORE",label:"基础任务"},{key:"FLOW",label:"逻辑控制"},{key:"SYSTEM",label:"系统集成"}],Ty=({id:e,data:t,selected:r})=>{const n=t.taskType||"SIMPLE",{sourcePosition:a,targetPosition:i}=We(t),{execution:o,isRunning:s}=Fe(t.taskReferenceName),c=D.useMemo(()=>$e.find(p=>p.type===n),[n]),u=c?.icon||nh,d="var(--color-accent)",l=D.useMemo(()=>n==="SIMPLE"?t.label==="Worker Task"?"Execute on Worker":"Worker Task":n==="HTTP"?"REST API Call":n==="JSON_JQ_TRANSFORM"?"JQ Expression":c?.label||n,[n,c,t.label]);return f.jsx(Be,{nodeId:e,selected:r,isError:t.isError,hasWarning:t.hasWarning,isHighlighted:t.isHighlighted,executionStatus:o?.status,children:f.jsxs("div",{style:{borderRadius:"8px",background:"var(--bg-secondary)"},children:[f.jsx(or,{icon:u,header:n,title:t.taskReferenceName,meta:l,color:d,status:o?.status,isRunning:s}),f.jsx(q.Handle,{type:"target",position:i,style:{background:"#fff"}}),f.jsx(q.Handle,{type:"source",position:a,style:{background:"#fff"}})]})})},Cy=D.memo(Ty),Ny=({id:e,data:t,selected:r})=>{const{layoutDirection:n}=We(t),{mode:a,execution:i,isRunning:o}=Fe(t.taskReferenceName),{addDecisionBranch:s,removeDecisionBranch:c}=V(),[u,d]=D.useState(!1),l=n==="LR"?q.Position.Left:q.Position.Top,p=Object.keys(t.decisionCases||t.task?.decisionCases||{}),h=()=>{const x=window.prompt("请输入新分支的名称 (case value):",`case_${p.length+1}`);x&&s(e,x),d(!1)},m=(x,b)=>{x.stopPropagation(),window.confirm(`确定要删除分支 "${b}" 及其下的所有任务吗?`)&&c(e,b)},v=o?(x=>x&&{SCHEDULED:"execution-node-scheduled",IN_PROGRESS:"execution-node-in-progress",COMPLETED:"execution-node-completed",COMPLETED_WITH_ERRORS:"execution-node-completed-with-errors",FAILED:"execution-node-failed",FAILED_WITH_TERMINAL_ERROR:"execution-node-failed-terminal",TIMED_OUT:"execution-node-timed-out",SKIPPED:"execution-node-skipped",CANCELED:"execution-node-canceled"}[x]||"")(i?.status):"";return f.jsx(Be,{nodeId:e,selected:r,isError:t.isError,hasWarning:t.hasWarning,isDecision:!0,isHighlighted:t.isHighlighted,executionStatus:i?.status,children:f.jsxs("div",{style:{position:"relative"},children:[f.jsx(q.Handle,{type:"target",position:l,style:{background:"#fff",[n==="LR"?"left":"top"]:"-5px"}}),o&&i?.status&&f.jsx("div",{style:{position:"absolute",top:0,right:0,zIndex:20},children:f.jsx(eh,{status:i.status})}),f.jsx("div",{className:v,style:{width:"150px",height:"150px",background:o&&i?.status?void 0:"var(--bg-secondary)",border:r?"4px solid #fbbf24":o&&i?.status?void 0:"4px solid var(--border-primary)",transform:"rotate(45deg)",display:"flex",alignItems:"center",justifyContent:"center",boxShadow:r?"0 10px 30px rgba(0,0,0,0.3), 0 0 0 4px rgba(251, 191, 36, 0.3)":o&&i?.status?void 0:"0 4px 12px rgba(0,0,0,0.15)",transition:"all 0.3s ease",cursor:"pointer"},onClick:()=>a==="edit"&&d(!u),children:f.jsxs("div",{style:{transform:"rotate(-45deg)",color:"#fff",textAlign:"center",padding:"10px",width:"100%",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},children:[f.jsx("div",{style:{fontSize:"14px",fontWeight:700,textTransform:"uppercase",letterSpacing:"0.5px",opacity:.7,marginBottom:"4px",color:"var(--color-accent)"},children:t.taskType}),f.jsx("div",{style:{fontSize:"18px",fontWeight:600,color:"var(--text-primary)",lineHeight:"1.2",wordBreak:"break-word",maxHeight:"60px",overflow:"hidden",marginBottom:"4px"},children:t.label}),a==="edit"&&f.jsx("div",{style:{marginTop:"4px",width:"24px",height:"24px",fontSize:"16px",background:"rgba(255,255,255,0.1)",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",margin:"4px auto 0",color:"var(--text-secondary)"},children:"+"}),o&&i?.startTime&&f.jsx("div",{style:{fontSize:"9px",opacity:.7,marginTop:"8px"},children:i.endTime?`${((i.endTime-i.startTime)/1e3).toFixed(1)}s`:"◌"})]})}),a==="edit"&&u&&f.jsxs("div",{className:"glass-panel",style:{position:"absolute",top:"160px",left:"50%",transform:"translateX(-50%)",backgroundColor:"var(--glass-surface)",border:"1px solid var(--glass-border)",borderRadius:"8px",padding:"8px",zIndex:1e3,minWidth:"180px",boxShadow:"0 10px 25px rgba(0,0,0,0.5)",animation:"popIn 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275)",backdropFilter:"blur(12px)"},children:[f.jsx("div",{style:{padding:"4px 8px",fontSize:"11px",color:"var(--text-secondary)",borderBottom:"1px solid var(--glass-border)",marginBottom:"4px"},children:"分支管理"}),p.map(x=>f.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"6px 8px",fontSize:"12px",color:"var(--text-primary)"},children:[f.jsx("span",{children:x}),f.jsx("button",{onClick:b=>m(b,x),style:{width:"20px",height:"20px",borderRadius:"50%",backgroundColor:"#ef4444",color:"white",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"12px",padding:0},children:"×"})]},x)),f.jsx("button",{onClick:h,style:{width:"100%",marginTop:"4px",padding:"8px",backgroundColor:"var(--color-accent)",border:"none",borderRadius:"4px",color:"#fff",cursor:"pointer",fontSize:"12px",fontWeight:"bold"},children:"+ 添加新分支"})]}),n==="TB"?f.jsxs(f.Fragment,{children:[f.jsx(q.Handle,{type:"source",position:q.Position.Bottom,style:{background:"#fff",bottom:"-5px"}}),f.jsx(q.Handle,{type:"source",position:q.Position.Left,id:"left",style:{background:"#fff",left:"-5px"}}),f.jsx(q.Handle,{type:"source",position:q.Position.Right,id:"right",style:{background:"#fff",right:"-5px"}})]}):f.jsxs(f.Fragment,{children:[f.jsx(q.Handle,{type:"source",position:q.Position.Right,style:{background:"#fff",right:"-5px"}}),f.jsx(q.Handle,{type:"source",position:q.Position.Top,id:"top",style:{background:"#fff",top:"-5px"}}),f.jsx(q.Handle,{type:"source",position:q.Position.Bottom,id:"bottom",style:{background:"#fff",bottom:"-5px"}})]})]})})},Ry=D.memo(Ny),oh="var(--color-accent)",sh=D.memo(({id:e,data:t,selected:r})=>{const{layoutDirection:n,sourcePosition:a,targetPosition:i}=We(t),{mode:o,execution:s,isRunning:c}=Fe(t.taskReferenceName),{addForkBranch:u}=V(),d=q.useUpdateNodeInternals(),l=t.task?.forkTasks?.length||0;D.useEffect(()=>{d(e)},[l,e,d]);const p=t.isDynamic||t.taskType==="FORK_JOIN_DYNAMIC",m=D.useMemo(()=>$e.find(g=>g.type==="FORK_JOIN"),[])?.icon||ah;return f.jsx(Be,{isHighlighted:t.isHighlighted,nodeId:e,selected:r,isError:t.isError,hasWarning:t.hasWarning,executionStatus:s?.status,children:f.jsxs("div",{className:`fork-node ${p?"dynamic":"static"}`,style:{borderRadius:"8px",background:"var(--bg-secondary)",position:"relative"},children:[f.jsx(or,{icon:m,header:p?"DYNAMIC FORK":"FORK",title:t.taskReferenceName,meta:p?"Dynamic Parallel Execution":"Parallel Execution",color:oh,status:s?.status,isRunning:c}),o==="edit"&&!p&&f.jsx("div",{style:{position:"absolute",...n==="LR"?{top:"50%",right:-12,transform:"translateY(-50%)"}:{bottom:-12,left:"50%",transform:"translateX(-50%)"},width:20,height:20,background:"var(--color-accent)",borderRadius:"50%",color:"#fff",fontSize:"14px",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",zIndex:1e3,boxShadow:"0 2px 5px rgba(0,0,0,0.2)",border:"2px solid var(--bg-primary)"},onClick:g=>{g.stopPropagation(),u(e)},title:"添加分支",children:"+"}),f.jsx(q.Handle,{type:"target",position:i,style:{background:"#fff"}}),!p&&(t.task?.forkTasks||[]).map((g,v,x)=>{if(o!=="edit"&&(!g||g.length===0))return null;const b=o!=="edit"?x.filter(w=>w&&w.length>0):x,_=b.length,S=(b.indexOf(g)+1)/(_+1)*100;return f.jsx(q.Handle,{id:`branch_${v}`,type:"source",position:a,style:{background:"#fff",[n==="LR"?"top":"left"]:`${S}%`,[n==="LR"?"left":"top"]:void 0,[n==="LR"?"right":"bottom"]:"-4px",zIndex:10}},`branch_${v}`)}),!p&&(!t.task?.forkTasks||t.task.forkTasks.length===0)&&f.jsx(q.Handle,{type:"source",position:a,style:{background:"#fff"}})]})})});sh.displayName="ForkNode";const uh=D.memo(({id:e,data:t,selected:r})=>{const{layoutDirection:n,sourcePosition:a,targetPosition:i}=We(t),{execution:o,isRunning:s}=Fe(t.taskReferenceName),u=D.useMemo(()=>$e.find(d=>d.type==="JOIN"),[])?.icon||Cr;return f.jsx(Be,{isHighlighted:t.isHighlighted,nodeId:e,selected:r,isError:t.isError,hasWarning:t.hasWarning,executionStatus:o?.status,children:f.jsxs("div",{style:{borderRadius:"8px",background:"var(--bg-secondary)",position:"relative"},children:[f.jsx(or,{icon:u,header:"JOIN",title:t.taskReferenceName,meta:"Wait for tasks",color:oh,status:o?.status,isRunning:s}),f.jsx(q.Handle,{type:"target",position:i,style:{background:"#fff"}}),n==="TB"&&f.jsxs(f.Fragment,{children:[f.jsx(q.Handle,{type:"target",position:q.Position.Left,id:"left",style:{background:"#fff"}}),f.jsx(q.Handle,{type:"target",position:q.Position.Right,id:"right",style:{background:"#fff"}})]}),n==="LR"&&f.jsxs(f.Fragment,{children:[f.jsx(q.Handle,{type:"target",position:q.Position.Top,id:"top",style:{background:"#fff"}}),f.jsx(q.Handle,{type:"target",position:q.Position.Bottom,id:"bottom",style:{background:"#fff"}})]}),f.jsx(q.Handle,{type:"source",position:a,style:{background:"#fff"}})]})})});uh.displayName="JoinNode";const ch={ForkNode:sh,JoinNode:uh},Iy="var(--color-accent)",jy=({id:e,data:t,selected:r})=>{const{layoutDirection:n,sourcePosition:a,targetPosition:i}=We(t),{mode:o,execution:s,isRunning:c}=Fe(t.taskReferenceName),{removeLoopTask:u}=V(),d=t.loopOver||t.task?.loopOver||[],l=d.length,p=D.useCallback((_,y)=>{y.stopPropagation();const S=new CustomEvent("miniTaskClick",{detail:{task:_},bubbles:!0});document.dispatchEvent(S)},[]),h=(_,y)=>{_.stopPropagation(),window.confirm("确定要从循环中删除此任务吗?")&&u(e,y)},g=D.useMemo(()=>$e.find(_=>_.type==="DO_WHILE"),[])?.icon||ih,v=(_,y)=>{const S=n==="LR";return f.jsxs("div",{style:{position:"relative",marginBottom:!S&&(y<l-1||o==="edit")?"8px":"0",marginRight:S&&(y<l-1||o==="edit")?"8px":"0",display:S?"inline-block":"block"},children:[f.jsxs("div",{onClick:C=>p(_,C),style:{background:"var(--bg-tertiary)",borderRadius:"6px",padding:"6px 10px",fontSize:"10px",color:"var(--text-primary)",border:"1px solid var(--border-secondary)",cursor:"pointer",transition:"all 0.2s ease",minWidth:S?"80px":"auto",textAlign:"center",position:"relative"},children:[o==="edit"&&f.jsx("div",{onClick:C=>h(C,_.taskReferenceName),style:{position:"absolute",top:"-6px",right:"-6px",width:"16px",height:"16px",borderRadius:"50%",backgroundColor:"#ef4444",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"10px",border:"1px solid white"},children:"×"}),f.jsx("div",{style:{fontWeight:"600",marginBottom:"2px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"100px"},children:_.name||_.taskReferenceName})]}),y<l-1&&(S?f.jsx("div",{style:{position:"absolute",right:"-8px",top:"50%",transform:"translateY(-50%)",width:"8px",height:"2px",background:"var(--border-secondary)",pointerEvents:"none"}}):f.jsx("div",{style:{position:"absolute",left:"50%",bottom:"-8px",transform:"translateX(-50%)",width:"2px",height:"8px",background:"var(--border-secondary)",pointerEvents:"none"}}))]},y)},x=n==="LR",b=c&&s?.iteration!==void 0?`Condition: ${t.loopCondition||"None"} | Iteration: ${s.iteration}`:`Condition: ${t.loopCondition||"None"}`;return f.jsx(Be,{nodeId:e,selected:r,isError:t.isError,hasWarning:t.hasWarning,isHighlighted:t.isHighlighted,executionStatus:s?.status,children:f.jsxs("div",{style:{borderRadius:"8px",background:"var(--bg-secondary)",minWidth:x&&n==="LR"?"320px":"240px",position:"relative",overflow:"visible"},children:[f.jsx(or,{icon:g,header:"DO WHILE",title:t.taskReferenceName,meta:b,color:Iy,status:s?.status,isRunning:c,width:"100%",children:(l>0||o==="edit")&&f.jsxs("div",{style:{background:"var(--bg-primary)",borderRadius:"6px",padding:"12px",marginTop:"8px",border:"1px dashed var(--border-secondary)",display:"flex",flexDirection:x?"row":"column",alignItems:x?"center":"stretch",flexWrap:"nowrap",gap:"8px",justifyContent:"flex-start"},children:[d.map((_,y)=>v(_,y)),o==="edit"&&f.jsx("div",{onClick:()=>{const _=new CustomEvent("loopAddNodeRequested",{detail:{loopId:e}});document.dispatchEvent(_)},style:{background:"var(--color-accent)",color:"#fff",borderRadius:"50%",width:"24px",height:"24px",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",fontSize:"16px",fontWeight:"bold",marginLeft:"0",marginRight:"0",flexShrink:0},children:"+"})]})}),f.jsx(q.Handle,{type:"target",position:i,style:{background:"#fff"}}),f.jsx(q.Handle,{type:"source",position:a,style:{background:"#fff"}})]})})},Oy=D.memo(jy),qy="var(--color-accent)",Py=({id:e,data:t,selected:r})=>{const{sourcePosition:n,targetPosition:a}=We(t),{execution:i,isRunning:o}=Fe(t.taskReferenceName),c=D.useMemo(()=>$e.find(l=>l.type==="SUB_WORKFLOW"),[])?.icon||Cr,u=t.task?.subWorkflowParam?.name||t.subWorkflowName||"Unknown",d=t.task?.subWorkflowParam?.version;return f.jsx(Be,{nodeId:e,selected:r,isError:t.isError,hasWarning:t.hasWarning,isHighlighted:t.isHighlighted,executionStatus:i?.status,children:f.jsxs("div",{style:{borderRadius:"8px",background:"var(--bg-secondary)",position:"relative"},children:[f.jsx(or,{icon:c,header:"SUB WORKFLOW",title:t.taskReferenceName,meta:`Flow: ${u} (v${d})`,color:qy,status:i?.status,isRunning:o}),f.jsx(q.Handle,{type:"target",position:a,style:{background:"#fff"}}),f.jsx(q.Handle,{type:"source",position:n,style:{background:"#fff"}})]})})},Ay=D.memo(Py),Ly=({onSelect:e,onCancel:t})=>{const[r,n]=D.useState("CORE");D.useEffect(()=>{const i=o=>{o.key==="Escape"&&t()};return window.addEventListener("keydown",i),()=>window.removeEventListener("keydown",i)},[t]);const a=$e.filter(i=>i.category===r);return f.jsxs("div",{style:{position:"fixed",top:0,left:0,width:"100vw",height:"100vh",backgroundColor:"rgba(0,0,0,0.6)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:2e3,backdropFilter:"blur(4px)",animation:"fadeIn 0.2s ease-out"},onClick:t,children:[f.jsxs("div",{className:"glass-panel",style:{backgroundColor:"var(--glass-surface)",borderRadius:"16px",padding:"0",width:"600px",height:"500px",boxShadow:"0 20px 50px rgba(0,0,0,0.4)",border:"1px solid var(--glass-border)",display:"flex",flexDirection:"column",overflow:"hidden"},onClick:i=>i.stopPropagation(),children:[f.jsxs("div",{style:{padding:"20px 24px 0",borderBottom:"1px solid var(--border-primary)",backgroundColor:"var(--bg-secondary)"},children:[f.jsx("h3",{style:{marginTop:0,marginBottom:"16px",color:"var(--text-primary)",fontSize:"18px",fontWeight:"600"},children:"添加任务"}),f.jsx("div",{style:{display:"flex",gap:"24px"},children:Ey.map(i=>f.jsx("button",{onClick:()=>n(i.key),style:{background:"none",border:"none",padding:"0 0 12px 0",fontSize:"14px",fontWeight:r===i.key?"600":"500",color:r===i.key?"var(--color-accent)":"var(--text-secondary)",borderBottom:r===i.key?"2px solid var(--color-accent)":"2px solid transparent",cursor:"pointer",transition:"all 0.2s"},children:i.label},i.key))})]}),f.jsx("div",{style:{flex:1,overflowY:"auto",padding:"24px",backgroundColor:"var(--bg-primary)"},children:f.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, 1fr)",gap:"12px"},children:a.map(i=>{const o=i.icon;return f.jsxs("button",{onClick:()=>e(i.type),style:{display:"flex",alignItems:"flex-start",gap:"16px",padding:"16px",backgroundColor:"var(--bg-tertiary)",border:"1px solid var(--border-primary)",borderRadius:"12px",cursor:"pointer",textAlign:"left",transition:"all 0.2s",color:"var(--text-primary)",position:"relative",overflow:"hidden"},onMouseEnter:s=>{s.currentTarget.style.borderColor="var(--color-accent)",s.currentTarget.style.backgroundColor="var(--bg-highlight)",s.currentTarget.style.transform="translateY(-2px)",s.currentTarget.style.boxShadow="0 4px 12px rgba(0,0,0,0.1)"},onMouseLeave:s=>{s.currentTarget.style.borderColor="var(--border-primary)",s.currentTarget.style.backgroundColor="var(--bg-tertiary)",s.currentTarget.style.transform="translateY(0)",s.currentTarget.style.boxShadow="none"},children:[f.jsx("div",{style:{padding:"10px",borderRadius:"8px",backgroundColor:"var(--bg-secondary)",color:"var(--color-accent)",display:"flex",alignItems:"center",justifyContent:"center"},children:f.jsx(o,{size:24,strokeWidth:1.5})}),f.jsxs("div",{children:[f.jsx("div",{style:{fontWeight:"600",fontSize:"14px",marginBottom:"4px"},children:i.label}),f.jsx("div",{style:{fontSize:"12px",color:"var(--text-secondary)",lineHeight:"1.4"},children:i.description})]})]},i.type)})})}),f.jsx("div",{style:{padding:"16px 24px",borderTop:"1px solid var(--border-primary)",backgroundColor:"var(--bg-secondary)",display:"flex",justifyContent:"flex-end"},children:f.jsx("button",{onClick:t,style:{padding:"8px 24px",backgroundColor:"transparent",border:"1px solid var(--border-primary)",borderRadius:"6px",color:"var(--text-primary)",cursor:"pointer",fontSize:"13px",fontWeight:"500",transition:"all 0.2s"},onMouseEnter:i=>i.currentTarget.style.backgroundColor="var(--bg-tertiary)",onMouseLeave:i=>i.currentTarget.style.backgroundColor="transparent",children:"取消"})})]}),f.jsx("style",{children:`
|
|
6
|
+
<%s key={someKey} {...props} />`,w,A,B,A),J[A+w]=!0)}if(A=null,Q!==void 0&&(t(Q),A=""+Q),o(V)&&(t(V.key),A=""+V.key),"key"in V){Q={};for(var X in V)X!=="key"&&(Q[X]=V[X])}else Q=V;return A&&s(Q,typeof O=="function"?O.displayName||O.name||"Unknown":O),c(O,A,Q,a(),L,q)}function f(O){p(O)?O._store&&(O._store.validated=1):typeof O=="object"&&O!==null&&O.$$typeof===I&&(O._payload.status==="fulfilled"?p(O._payload.value)&&O._payload.value._store&&(O._payload.value._store.validated=1):O._store&&(O._store.validated=1))}function p(O){return typeof O=="object"&&O!==null&&O.$$typeof===v}var h=M,v=Symbol.for("react.transitional.element"),m=Symbol.for("react.portal"),g=Symbol.for("react.fragment"),b=Symbol.for("react.strict_mode"),y=Symbol.for("react.profiler"),x=Symbol.for("react.consumer"),_=Symbol.for("react.context"),E=Symbol.for("react.forward_ref"),T=Symbol.for("react.suspense"),N=Symbol.for("react.suspense_list"),C=Symbol.for("react.memo"),I=Symbol.for("react.lazy"),P=Symbol.for("react.activity"),D=Symbol.for("react.client.reference"),F=h.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,R=Object.prototype.hasOwnProperty,k=Array.isArray,W=console.createTask?console.createTask:function(){return null};h={react_stack_bottom_frame:function(O){return O()}};var z,U={},K=h.react_stack_bottom_frame.bind(h,i)(),Y=W(r(i)),J={};rr.Fragment=g,rr.jsx=function(O,V,Q){var w=1e4>F.recentlyCreatedOwnerStacks++;return u(O,V,Q,!1,w?Error("react-stack-top-frame"):K,w?W(r(O)):Y)},rr.jsxs=function(O,V,Q){var w=1e4>F.recentlyCreatedOwnerStacks++;return u(O,V,Q,!0,w?Error("react-stack-top-frame"):K,w?W(r(O)):Y)}})()),rr}var As;function Dh(){return As||(As=1,process.env.NODE_ENV==="production"?mr.exports=Ah():mr.exports=Lh()),mr.exports}var d=Dh();const Ls=e=>{let n;const t=new Set,r=(c,u)=>{const f=typeof c=="function"?c(n):c;if(!Object.is(f,n)){const p=n;n=u??(typeof f!="object"||f===null)?f:Object.assign({},n,f),t.forEach(h=>h(n,p))}},a=()=>n,s={setState:r,getState:a,getInitialState:()=>l,subscribe:c=>(t.add(c),()=>t.delete(c))},l=n=e(r,a,s);return s},Ds=(e=>e?Ls(e):Ls),Mh=e=>e;function Br(e,n=Mh){const t=M.useSyncExternalStore(e.subscribe,M.useCallback(()=>n(e.getState()),[e,n]),M.useCallback(()=>n(e.getInitialState()),[e,n]));return M.useDebugValue(t),t}const Bh=e=>{const n=Ds(e),t=r=>Br(n,r);return Object.assign(t,n),t},Wh=(e=>Bh);function Ms(e,n){let t;try{t=e()}catch{return}return{getItem:a=>{var i;const o=l=>l===null?null:JSON.parse(l,void 0),s=(i=t.getItem(a))!=null?i:null;return s instanceof Promise?s.then(o):o(s)},setItem:(a,i)=>t.setItem(a,JSON.stringify(i,void 0)),removeItem:a=>t.removeItem(a)}}const Wr=e=>n=>{try{const t=e(n);return t instanceof Promise?t:{then(r){return Wr(r)(t)},catch(r){return this}}}catch(t){return{then(r){return this},catch(r){return Wr(r)(t)}}}},Fh=(e,n)=>(t,r,a)=>{let i={storage:Ms(()=>localStorage),partialize:m=>m,version:0,merge:(m,g)=>({...g,...m}),...n},o=!1;const s=new Set,l=new Set;let c=i.storage;if(!c)return e((...m)=>{console.warn(`[zustand persist middleware] Unable to update item '${i.name}', the given storage is currently unavailable.`),t(...m)},r,a);const u=()=>{const m=i.partialize({...r()});return c.setItem(i.name,{state:m,version:i.version})},f=a.setState;a.setState=(m,g)=>(f(m,g),u());const p=e((...m)=>(t(...m),u()),r,a);a.getInitialState=()=>p;let h;const v=()=>{var m,g;if(!c)return;o=!1,s.forEach(y=>{var x;return y((x=r())!=null?x:p)});const b=((g=i.onRehydrateStorage)==null?void 0:g.call(i,(m=r())!=null?m:p))||void 0;return Wr(c.getItem.bind(c))(i.name).then(y=>{if(y)if(typeof y.version=="number"&&y.version!==i.version){if(i.migrate){const x=i.migrate(y.state,y.version);return x instanceof Promise?x.then(_=>[!0,_]):[!0,x]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return[!1,y.state];return[!1,void 0]}).then(y=>{var x;const[_,E]=y;if(h=i.merge(E,(x=r())!=null?x:p),t(h,!0),_)return u()}).then(()=>{b?.(h,void 0),h=r(),o=!0,l.forEach(y=>y(h))}).catch(y=>{b?.(void 0,y)})};return a.persist={setOptions:m=>{i={...i,...m},m.storage&&(c=m.storage)},clearStorage:()=>{c?.removeItem(i.name)},getOptions:()=>i,rehydrate:()=>v(),hasHydrated:()=>o,onHydrate:m=>(s.add(m),()=>{s.delete(m)}),onFinishHydration:m=>(l.add(m),()=>{l.delete(m)})},i.skipHydration||v(),h||p};var Bs=(e,n,t)=>(a,i)=>({pastStates:t?.pastStates||[],futureStates:t?.futureStates||[],undo:(o=1)=>{if(i().pastStates.length){const s=t?.partialize?.(n())||n(),l=i().pastStates.splice(-o,o),c=l.shift();e(c),a({pastStates:i().pastStates,futureStates:i().futureStates.concat(t?.diff?.(s,c)||s,l.reverse())})}},redo:(o=1)=>{if(i().futureStates.length){const s=t?.partialize?.(n())||n(),l=i().futureStates.splice(-o,o),c=l.shift();e(c),a({pastStates:i().pastStates.concat(t?.diff?.(s,c)||s,l.reverse()),futureStates:i().futureStates})}},clear:()=>a({pastStates:[],futureStates:[]}),isTracking:!0,pause:()=>a({isTracking:!1}),resume:()=>a({isTracking:!0}),setOnSave:o=>a({_onSave:o}),_onSave:t?.onSave,_handleSet:(o,s,l,c)=>{t?.limit&&i().pastStates.length>=t?.limit&&i().pastStates.shift(),i()._onSave?.(o,l),a({pastStates:i().pastStates.concat(c||o),futureStates:[]})}}),zh=(e,n)=>(r,a,i)=>{i.temporal=Ds(n?.wrapTemporal?.(Bs(r,a,n))||Bs(r,a,n));const o=n?.handleSet?.(i.temporal.getState()._handleSet)||i.temporal.getState()._handleSet,s=c=>{if(!i.temporal.getState().isTracking)return;const u=n?.partialize?.(a())||a(),f=n?.diff?.(c,u);f===null||n?.equality?.(c,u)||o(c,void 0,u,f)},l=i.setState;return i.setState=(...c)=>{const u=n?.partialize?.(a())||a();l(...c),s(u)},e((...c)=>{const u=n?.partialize?.(a())||a();r(...c),s(u)},a,i)};function $h(e,n="TB",t){const r=t?.hideEmptyBranches??!1;if(!e||!e.tasks)return{nodes:[],edges:[],taskMap:{}};const a=[],i=[],o={};let s=0;const l=e.tasks;for(let c=0;c<l.length;c++){const u=l[c],f=Ws(u,s,o,n,l,r);if(a.push(...f.nodes),i.push(...f.edges),s=f.nextId,c>0){const p=l[c-1];zr(p,u,i,r)}Object.assign(o,f.taskMap)}if(!r&&l.length>0){const c=l[l.length-1],u="__workflow_end__";a.push({id:u,type:"plusNode",data:{label:"+",taskReferenceName:u,taskType:"PLUS",parentRef:c.taskReferenceName,layoutDirection:n},position:{x:0,y:0},sourcePosition:n==="LR"?j.Position.Right:j.Position.Bottom,targetPosition:n==="LR"?j.Position.Left:j.Position.Top}),zr(c,{taskReferenceName:u},i,r)}return{nodes:a,edges:i,taskMap:o}}function Ws(e,n,t,r="TB",a=[],i=!1){switch(e.type||"SIMPLE"){case"DECISION":case"SWITCH":return Kh(e,n,t,r,i);case"FORK_JOIN":case"FORK_JOIN_DYNAMIC":return Uh(e,n,t,r);case"JOIN":case"EXCLUSIVE_JOIN":return Vh(e,n,t,r,a,i);case"DO_WHILE":return Jh(e,n,t,r);case"SUB_WORKFLOW":return Gh(e,n,t,r);default:return Hh(e,n,t,r)}}function Hh(e,n,t,r="TB"){const a={id:e.taskReferenceName,type:"taskNode",data:{label:e.name,taskReferenceName:e.taskReferenceName,taskType:e.type||"SIMPLE",task:e,layoutDirection:r},position:{x:0,y:0},sourcePosition:r==="LR"?j.Position.Right:j.Position.Bottom,targetPosition:r==="LR"?j.Position.Left:j.Position.Top},i={[e.taskReferenceName]:e};return{nodes:[a],edges:[],taskMap:i,nextId:n+1}}function Kh(e,n,t,r="TB",a=!1){const i=[],o=[];let s=n;const l={},c={id:e.taskReferenceName,type:"decisionNode",data:{label:e.name,taskReferenceName:e.taskReferenceName,taskType:e.type,task:e,layoutDirection:r},position:{x:0,y:0},sourcePosition:r==="LR"?j.Position.Right:j.Position.Bottom,targetPosition:r==="LR"?j.Position.Left:j.Position.Top};i.push(c),l[e.taskReferenceName]=e;const u=e.decisionCases||{},f=e.defaultCase||[],p=Object.keys(u),h=(v,m)=>{if(r==="TB"){if(v===0&&m>1)return"left";if(v===1&&m>2)return"right"}else{if(v===0&&m>1)return"top";if(v===1&&m>2)return"bottom"}return null};if(p.forEach((v,m)=>{const g=u[v],b=h(m,p.length+1);if(g&&g.length>0){const y=Fr(g,s,{...t,...l},r);i.push(...y.nodes),o.push(...y.edges),Object.assign(l,y.taskMap),s=y.nextId;const x=g[0].taskReferenceName;o.push({id:`e-${e.taskReferenceName}-${x}`,source:e.taskReferenceName,sourceHandle:b||void 0,target:x,label:v,animated:!0,data:{branchCase:v},style:{stroke:"#3b82f6"}})}else if(!a){const y=`${e.taskReferenceName}_empty_${v}`;i.push({id:y,type:"plusNode",data:{label:`${v} (空)`,parentRef:e.taskReferenceName,edgeData:{branchCase:v},layoutDirection:r,taskReferenceName:y,taskType:"EMPTY_BRANCH"},position:{x:0,y:0},sourcePosition:r==="LR"?j.Position.Right:j.Position.Bottom,targetPosition:r==="LR"?j.Position.Left:j.Position.Top,style:{background:"transparent",border:"2px dashed var(--border-secondary, #64748b)",borderRadius:"8px",padding:"6px 12px",fontSize:"11px",color:"var(--text-tertiary, #94a3b8)",minWidth:"80px",textAlign:"center"}}),o.push({id:`e-${e.taskReferenceName}-${y}`,source:e.taskReferenceName,sourceHandle:b||void 0,target:y,label:v,animated:!0,data:{branchCase:v},style:{stroke:"#3b82f6",strokeDasharray:"5,5"}})}}),f&&f.length>0){const v=Fr(f,s,{...t,...l},r);i.push(...v.nodes),o.push(...v.edges),Object.assign(l,v.taskMap),s=v.nextId;const m=f[0].taskReferenceName;o.push({id:`e-${e.taskReferenceName}-${m}`,source:e.taskReferenceName,target:m,label:"default",animated:!0,data:{branchCase:"default"},style:{stroke:"#f59e0b"}})}else if(!a){const v=`${e.taskReferenceName}_empty_default`;i.push({id:v,type:"plusNode",data:{label:"default (空)",parentRef:e.taskReferenceName,edgeData:{branchCase:"default"},layoutDirection:r,taskReferenceName:v,taskType:"EMPTY_BRANCH"},position:{x:0,y:0},sourcePosition:r==="LR"?j.Position.Right:j.Position.Bottom,targetPosition:r==="LR"?j.Position.Left:j.Position.Top,style:{background:"transparent",border:"2px dashed var(--border-secondary, #64748b)",borderRadius:"8px",padding:"6px 12px",fontSize:"11px",color:"var(--text-tertiary, #94a3b8)",minWidth:"80px",textAlign:"center"}}),o.push({id:`e-${e.taskReferenceName}-${v}`,source:e.taskReferenceName,target:v,label:"default",animated:!0,data:{branchCase:"default"},style:{stroke:"#f59e0b",strokeDasharray:"5,5"}})}return{nodes:i,edges:o,taskMap:l,nextId:s}}function Uh(e,n,t,r="TB"){const a=[],i=[];let o=n;const s={},l=e.type==="FORK_JOIN_DYNAMIC",c={id:e.taskReferenceName,type:"forkNode",data:{label:e.name,taskReferenceName:e.taskReferenceName,taskType:e.type,task:e,isDynamic:l,layoutDirection:r},position:{x:0,y:0},sourcePosition:r==="LR"?j.Position.Right:j.Position.Bottom,targetPosition:r==="LR"?j.Position.Left:j.Position.Top};if(a.push(c),s[e.taskReferenceName]=e,l){const u=`${e.taskReferenceName}_dynamic_placeholder`;a.push({id:u,type:"dynamicPlaceholderNode",data:{label:"动态分支",taskReferenceName:u,taskType:"DYNAMIC_PLACEHOLDER",layoutDirection:r},position:{x:0,y:0},sourcePosition:r==="LR"?j.Position.Right:j.Position.Bottom,targetPosition:r==="LR"?j.Position.Left:j.Position.Top}),i.push({id:`e-${e.taskReferenceName}-${u}`,source:e.taskReferenceName,target:u,animated:!0,style:{stroke:"#10b981",strokeDasharray:"5,5",strokeWidth:2}}),s[u]={taskReferenceName:u,type:"DYNAMIC_PLACEHOLDER"}}return l||(e.forkTasks||[]).forEach((f,p)=>{if(f&&f.length>0){const h=Fr(f,o,{...t,...s},r);a.push(...h.nodes),i.push(...h.edges),Object.assign(s,h.taskMap),o=h.nextId;const v=f[0].taskReferenceName;i.push({id:`e-${e.taskReferenceName}-${v}`,source:e.taskReferenceName,sourceHandle:`branch_${p}`,target:v,label:`分支 ${p+1}`,animated:!0,data:{forkIndex:p},style:{stroke:"#10b981"}})}}),{nodes:a,edges:i,taskMap:s,nextId:o}}function Jh(e,n,t,r="TB"){const a={},i={id:e.taskReferenceName,type:"loopNode",data:{label:e.name,taskReferenceName:e.taskReferenceName,taskType:e.type,task:e,layoutDirection:r},position:{x:0,y:0},sourcePosition:r==="LR"?j.Position.Right:j.Position.Bottom,targetPosition:r==="LR"?j.Position.Left:j.Position.Top};return a[e.taskReferenceName]=e,(e.loopOver||[]).forEach(s=>{a[s.taskReferenceName]=s}),{nodes:[i],edges:[],taskMap:a,nextId:n+1}}function Gh(e,n,t,r="TB"){const a={id:e.taskReferenceName,type:"subWorkflowNode",data:{label:e.name,taskReferenceName:e.taskReferenceName,taskType:e.type,task:e,layoutDirection:r},position:{x:0,y:0},sourcePosition:r==="LR"?j.Position.Right:j.Position.Bottom,targetPosition:r==="LR"?j.Position.Left:j.Position.Top},i={[e.taskReferenceName]:e};return{nodes:[a],edges:[],taskMap:i,nextId:n+1}}function Vh(e,n,t,r="TB",a=[],i=!1){const o={id:e.taskReferenceName,type:"joinNode",data:{label:e.name||"JOIN",taskReferenceName:e.taskReferenceName,taskType:e.type,task:e,layoutDirection:r},position:{x:0,y:0},sourcePosition:r==="LR"?j.Position.Right:j.Position.Bottom,targetPosition:r==="LR"?j.Position.Left:j.Position.Top},s={[e.taskReferenceName]:e},l=[],c=[];(e.joinOn||[]).forEach(p=>{const h=a.find(v=>v.taskReferenceName===p)||t[p];h&&gr(h,i).forEach(m=>{c.push({id:`e-${m}-${e.taskReferenceName}`,source:m,target:e.taskReferenceName,animated:!0})})});const f=a.findIndex(p=>p.taskReferenceName===e.taskReferenceName);if(f>0){const p=a[f-1];if(p.type==="FORK_JOIN_DYNAMIC"){const h=`${p.taskReferenceName}_dynamic_placeholder`;c.push({id:`e-${h}-${e.taskReferenceName}-dynamic`,source:h,target:e.taskReferenceName,animated:!0,style:{stroke:"#10b981",strokeWidth:2,strokeDasharray:"5,5",opacity:.8}})}else p.type==="FORK_JOIN"&&(p.forkTasks||[]).forEach((v,m)=>{if((!v||v.length===0)&&!i){const g=`${p.taskReferenceName}_empty_branch_${m}`;l.push({id:g,type:"default",data:{label:`分支 ${m+1} (空)`,layoutDirection:r,taskReferenceName:g,taskType:"EMPTY_BRANCH"},position:{x:0,y:0},sourcePosition:r==="LR"?j.Position.Right:j.Position.Bottom,targetPosition:r==="LR"?j.Position.Left:j.Position.Top,style:{background:"transparent",border:"2px dashed var(--border-secondary, #64748b)",borderRadius:"8px",padding:"6px 12px",fontSize:"11px",color:"var(--text-tertiary, #94a3b8)",minWidth:"80px",textAlign:"center"}}),c.push({id:`e-${p.taskReferenceName}-${g}`,source:p.taskReferenceName,sourceHandle:`branch_${m}`,target:g,label:`分支 ${m+1}`,animated:!0,data:{forkIndex:m},style:{stroke:"#10b981",strokeDasharray:"5,5"}}),c.push({id:`e-${g}-${e.taskReferenceName}`,source:g,target:e.taskReferenceName,animated:!0,style:{strokeDasharray:"5,5"}})}})}return{nodes:[o,...l],edges:c,taskMap:s,nextId:n+1}}function Fr(e,n,t,r="TB"){const a=[],i=[];let o=n;const s={};for(let l=0;l<e.length;l++){const c=e[l],u={...t,...s},f=Ws(c,o,u,r,e);if(a.push(...f.nodes),i.push(...f.edges),Object.assign(s,f.taskMap),o=f.nextId,l>0){const p=e[l-1];zr(p,c,i)}}return{nodes:a,edges:i,taskMap:s,nextId:o}}function zr(e,n,t,r=!1){if(e.type==="FORK_JOIN"||e.type==="FORK_JOIN_DYNAMIC")return;const a=gr(e,r),i=n.taskReferenceName;a.forEach(o=>{const s=`e-${o}-${i}`;t.find(l=>l.id===s)||t.push({id:s,source:o,target:i,animated:!0})})}function gr(e,n=!1){const t=e.type||"SIMPLE";if(t==="DECISION"||t==="SWITCH"){const r=[],a=e.decisionCases||{},i=e.defaultCase||[];if(Object.entries(a).forEach(([o,s])=>{if(s&&s.length>0){const l=s[s.length-1];r.push(...gr(l,n))}else n||r.push(`${e.taskReferenceName}_empty_${o}`)}),i.length>0){const o=i[i.length-1];r.push(...gr(o,n))}else n||r.push(`${e.taskReferenceName}_empty_default`);return r.length>0?r:[e.taskReferenceName]}return[e.taskReferenceName]}const me=$h;function $r(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Hr,Fs;function Yh(){if(Fs)return Hr;Fs=1;function e(){this.__data__=[],this.size=0}return Hr=e,Hr}var Kr,zs;function Ke(){if(zs)return Kr;zs=1;function e(n,t){return n===t||n!==n&&t!==t}return Kr=e,Kr}var Ur,$s;function yr(){if($s)return Ur;$s=1;var e=Ke();function n(t,r){for(var a=t.length;a--;)if(e(t[a][0],r))return a;return-1}return Ur=n,Ur}var Jr,Hs;function Xh(){if(Hs)return Jr;Hs=1;var e=yr(),n=Array.prototype,t=n.splice;function r(a){var i=this.__data__,o=e(i,a);if(o<0)return!1;var s=i.length-1;return o==s?i.pop():t.call(i,o,1),--this.size,!0}return Jr=r,Jr}var Gr,Ks;function Zh(){if(Ks)return Gr;Ks=1;var e=yr();function n(t){var r=this.__data__,a=e(r,t);return a<0?void 0:r[a][1]}return Gr=n,Gr}var Vr,Us;function Qh(){if(Us)return Vr;Us=1;var e=yr();function n(t){return e(this.__data__,t)>-1}return Vr=n,Vr}var Yr,Js;function ev(){if(Js)return Yr;Js=1;var e=yr();function n(t,r){var a=this.__data__,i=e(a,t);return i<0?(++this.size,a.push([t,r])):a[i][1]=r,this}return Yr=n,Yr}var Xr,Gs;function br(){if(Gs)return Xr;Gs=1;var e=Yh(),n=Xh(),t=Zh(),r=Qh(),a=ev();function i(o){var s=-1,l=o==null?0:o.length;for(this.clear();++s<l;){var c=o[s];this.set(c[0],c[1])}}return i.prototype.clear=e,i.prototype.delete=n,i.prototype.get=t,i.prototype.has=r,i.prototype.set=a,Xr=i,Xr}var Zr,Vs;function rv(){if(Vs)return Zr;Vs=1;var e=br();function n(){this.__data__=new e,this.size=0}return Zr=n,Zr}var Qr,Ys;function tv(){if(Ys)return Qr;Ys=1;function e(n){var t=this.__data__,r=t.delete(n);return this.size=t.size,r}return Qr=e,Qr}var et,Xs;function nv(){if(Xs)return et;Xs=1;function e(n){return this.__data__.get(n)}return et=e,et}var rt,Zs;function av(){if(Zs)return rt;Zs=1;function e(n){return this.__data__.has(n)}return rt=e,rt}var tt,Qs;function eu(){if(Qs)return tt;Qs=1;var e=typeof vr=="object"&&vr&&vr.Object===Object&&vr;return tt=e,tt}var nt,ru;function _e(){if(ru)return nt;ru=1;var e=eu(),n=typeof self=="object"&&self&&self.Object===Object&&self,t=e||n||Function("return this")();return nt=t,nt}var at,tu;function Ue(){if(tu)return at;tu=1;var e=_e(),n=e.Symbol;return at=n,at}var it,nu;function iv(){if(nu)return it;nu=1;var e=Ue(),n=Object.prototype,t=n.hasOwnProperty,r=n.toString,a=e?e.toStringTag:void 0;function i(o){var s=t.call(o,a),l=o[a];try{o[a]=void 0;var c=!0}catch{}var u=r.call(o);return c&&(s?o[a]=l:delete o[a]),u}return it=i,it}var ot,au;function ov(){if(au)return ot;au=1;var e=Object.prototype,n=e.toString;function t(r){return n.call(r)}return ot=t,ot}var st,iu;function Le(){if(iu)return st;iu=1;var e=Ue(),n=iv(),t=ov(),r="[object Null]",a="[object Undefined]",i=e?e.toStringTag:void 0;function o(s){return s==null?s===void 0?a:r:i&&i in Object(s)?n(s):t(s)}return st=o,st}var ut,ou;function ge(){if(ou)return ut;ou=1;function e(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}return ut=e,ut}var ct,su;function tr(){if(su)return ct;su=1;var e=Le(),n=ge(),t="[object AsyncFunction]",r="[object Function]",a="[object GeneratorFunction]",i="[object Proxy]";function o(s){if(!n(s))return!1;var l=e(s);return l==r||l==a||l==t||l==i}return ct=o,ct}var lt,uu;function sv(){if(uu)return lt;uu=1;var e=_e(),n=e["__core-js_shared__"];return lt=n,lt}var dt,cu;function uv(){if(cu)return dt;cu=1;var e=sv(),n=(function(){var r=/[^.]+$/.exec(e&&e.keys&&e.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""})();function t(r){return!!n&&n in r}return dt=t,dt}var ft,lu;function du(){if(lu)return ft;lu=1;var e=Function.prototype,n=e.toString;function t(r){if(r!=null){try{return n.call(r)}catch{}try{return r+""}catch{}}return""}return ft=t,ft}var pt,fu;function cv(){if(fu)return pt;fu=1;var e=tr(),n=uv(),t=ge(),r=du(),a=/[\\^$.*+?()[\]{}|]/g,i=/^\[object .+?Constructor\]$/,o=Function.prototype,s=Object.prototype,l=o.toString,c=s.hasOwnProperty,u=RegExp("^"+l.call(c).replace(a,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function f(p){if(!t(p)||n(p))return!1;var h=e(p)?u:i;return h.test(r(p))}return pt=f,pt}var ht,pu;function lv(){if(pu)return ht;pu=1;function e(n,t){return n?.[t]}return ht=e,ht}var vt,hu;function De(){if(hu)return vt;hu=1;var e=cv(),n=lv();function t(r,a){var i=n(r,a);return e(i)?i:void 0}return vt=t,vt}var mt,vu;function gt(){if(vu)return mt;vu=1;var e=De(),n=_e(),t=e(n,"Map");return mt=t,mt}var yt,mu;function xr(){if(mu)return yt;mu=1;var e=De(),n=e(Object,"create");return yt=n,yt}var bt,gu;function dv(){if(gu)return bt;gu=1;var e=xr();function n(){this.__data__=e?e(null):{},this.size=0}return bt=n,bt}var xt,yu;function fv(){if(yu)return xt;yu=1;function e(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}return xt=e,xt}var _t,bu;function pv(){if(bu)return _t;bu=1;var e=xr(),n="__lodash_hash_undefined__",t=Object.prototype,r=t.hasOwnProperty;function a(i){var o=this.__data__;if(e){var s=o[i];return s===n?void 0:s}return r.call(o,i)?o[i]:void 0}return _t=a,_t}var kt,xu;function hv(){if(xu)return kt;xu=1;var e=xr(),n=Object.prototype,t=n.hasOwnProperty;function r(a){var i=this.__data__;return e?i[a]!==void 0:t.call(i,a)}return kt=r,kt}var St,_u;function vv(){if(_u)return St;_u=1;var e=xr(),n="__lodash_hash_undefined__";function t(r,a){var i=this.__data__;return this.size+=this.has(r)?0:1,i[r]=e&&a===void 0?n:a,this}return St=t,St}var Tt,ku;function mv(){if(ku)return Tt;ku=1;var e=dv(),n=fv(),t=pv(),r=hv(),a=vv();function i(o){var s=-1,l=o==null?0:o.length;for(this.clear();++s<l;){var c=o[s];this.set(c[0],c[1])}}return i.prototype.clear=e,i.prototype.delete=n,i.prototype.get=t,i.prototype.has=r,i.prototype.set=a,Tt=i,Tt}var wt,Su;function gv(){if(Su)return wt;Su=1;var e=mv(),n=br(),t=gt();function r(){this.size=0,this.__data__={hash:new e,map:new(t||n),string:new e}}return wt=r,wt}var Nt,Tu;function yv(){if(Tu)return Nt;Tu=1;function e(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}return Nt=e,Nt}var Et,wu;function _r(){if(wu)return Et;wu=1;var e=yv();function n(t,r){var a=t.__data__;return e(r)?a[typeof r=="string"?"string":"hash"]:a.map}return Et=n,Et}var Ct,Nu;function bv(){if(Nu)return Ct;Nu=1;var e=_r();function n(t){var r=e(this,t).delete(t);return this.size-=r?1:0,r}return Ct=n,Ct}var It,Eu;function xv(){if(Eu)return It;Eu=1;var e=_r();function n(t){return e(this,t).get(t)}return It=n,It}var Rt,Cu;function _v(){if(Cu)return Rt;Cu=1;var e=_r();function n(t){return e(this,t).has(t)}return Rt=n,Rt}var Ot,Iu;function kv(){if(Iu)return Ot;Iu=1;var e=_r();function n(t,r){var a=e(this,t),i=a.size;return a.set(t,r),this.size+=a.size==i?0:1,this}return Ot=n,Ot}var jt,Ru;function Pt(){if(Ru)return jt;Ru=1;var e=gv(),n=bv(),t=xv(),r=_v(),a=kv();function i(o){var s=-1,l=o==null?0:o.length;for(this.clear();++s<l;){var c=o[s];this.set(c[0],c[1])}}return i.prototype.clear=e,i.prototype.delete=n,i.prototype.get=t,i.prototype.has=r,i.prototype.set=a,jt=i,jt}var qt,Ou;function Sv(){if(Ou)return qt;Ou=1;var e=br(),n=gt(),t=Pt(),r=200;function a(i,o){var s=this.__data__;if(s instanceof e){var l=s.__data__;if(!n||l.length<r-1)return l.push([i,o]),this.size=++s.size,this;s=this.__data__=new t(l)}return s.set(i,o),this.size=s.size,this}return qt=a,qt}var At,ju;function kr(){if(ju)return At;ju=1;var e=br(),n=rv(),t=tv(),r=nv(),a=av(),i=Sv();function o(s){var l=this.__data__=new e(s);this.size=l.size}return o.prototype.clear=n,o.prototype.delete=t,o.prototype.get=r,o.prototype.has=a,o.prototype.set=i,At=o,At}var Lt,Pu;function Dt(){if(Pu)return Lt;Pu=1;function e(n,t){for(var r=-1,a=n==null?0:n.length;++r<a&&t(n[r],r,n)!==!1;);return n}return Lt=e,Lt}var Mt,qu;function Au(){if(qu)return Mt;qu=1;var e=De(),n=(function(){try{var t=e(Object,"defineProperty");return t({},"",{}),t}catch{}})();return Mt=n,Mt}var Bt,Lu;function Sr(){if(Lu)return Bt;Lu=1;var e=Au();function n(t,r,a){r=="__proto__"&&e?e(t,r,{configurable:!0,enumerable:!0,value:a,writable:!0}):t[r]=a}return Bt=n,Bt}var Wt,Du;function Tr(){if(Du)return Wt;Du=1;var e=Sr(),n=Ke(),t=Object.prototype,r=t.hasOwnProperty;function a(i,o,s){var l=i[o];(!(r.call(i,o)&&n(l,s))||s===void 0&&!(o in i))&&e(i,o,s)}return Wt=a,Wt}var Ft,Mu;function nr(){if(Mu)return Ft;Mu=1;var e=Tr(),n=Sr();function t(r,a,i,o){var s=!i;i||(i={});for(var l=-1,c=a.length;++l<c;){var u=a[l],f=o?o(i[u],r[u],u,i,r):void 0;f===void 0&&(f=r[u]),s?n(i,u,f):e(i,u,f)}return i}return Ft=t,Ft}var zt,Bu;function Tv(){if(Bu)return zt;Bu=1;function e(n,t){for(var r=-1,a=Array(n);++r<n;)a[r]=t(r);return a}return zt=e,zt}var $t,Wu;function we(){if(Wu)return $t;Wu=1;function e(n){return n!=null&&typeof n=="object"}return $t=e,$t}var Ht,Fu;function wv(){if(Fu)return Ht;Fu=1;var e=Le(),n=we(),t="[object Arguments]";function r(a){return n(a)&&e(a)==t}return Ht=r,Ht}var Kt,zu;function ar(){if(zu)return Kt;zu=1;var e=wv(),n=we(),t=Object.prototype,r=t.hasOwnProperty,a=t.propertyIsEnumerable,i=e((function(){return arguments})())?e:function(o){return n(o)&&r.call(o,"callee")&&!a.call(o,"callee")};return Kt=i,Kt}var Ut,$u;function ce(){if($u)return Ut;$u=1;var e=Array.isArray;return Ut=e,Ut}var ir={exports:{}},Jt,Hu;function Nv(){if(Hu)return Jt;Hu=1;function e(){return!1}return Jt=e,Jt}ir.exports;var Ku;function Je(){return Ku||(Ku=1,(function(e,n){var t=_e(),r=Nv(),a=n&&!n.nodeType&&n,i=a&&!0&&e&&!e.nodeType&&e,o=i&&i.exports===a,s=o?t.Buffer:void 0,l=s?s.isBuffer:void 0,c=l||r;e.exports=c})(ir,ir.exports)),ir.exports}var Gt,Uu;function wr(){if(Uu)return Gt;Uu=1;var e=9007199254740991,n=/^(?:0|[1-9]\d*)$/;function t(r,a){var i=typeof r;return a=a??e,!!a&&(i=="number"||i!="symbol"&&n.test(r))&&r>-1&&r%1==0&&r<a}return Gt=t,Gt}var Vt,Ju;function Yt(){if(Ju)return Vt;Ju=1;var e=9007199254740991;function n(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=e}return Vt=n,Vt}var Xt,Gu;function Ev(){if(Gu)return Xt;Gu=1;var e=Le(),n=Yt(),t=we(),r="[object Arguments]",a="[object Array]",i="[object Boolean]",o="[object Date]",s="[object Error]",l="[object Function]",c="[object Map]",u="[object Number]",f="[object Object]",p="[object RegExp]",h="[object Set]",v="[object String]",m="[object WeakMap]",g="[object ArrayBuffer]",b="[object DataView]",y="[object Float32Array]",x="[object Float64Array]",_="[object Int8Array]",E="[object Int16Array]",T="[object Int32Array]",N="[object Uint8Array]",C="[object Uint8ClampedArray]",I="[object Uint16Array]",P="[object Uint32Array]",D={};D[y]=D[x]=D[_]=D[E]=D[T]=D[N]=D[C]=D[I]=D[P]=!0,D[r]=D[a]=D[g]=D[i]=D[b]=D[o]=D[s]=D[l]=D[c]=D[u]=D[f]=D[p]=D[h]=D[v]=D[m]=!1;function F(R){return t(R)&&n(R.length)&&!!D[e(R)]}return Xt=F,Xt}var Zt,Vu;function Nr(){if(Vu)return Zt;Vu=1;function e(n){return function(t){return n(t)}}return Zt=e,Zt}var or={exports:{}};or.exports;var Yu;function Qt(){return Yu||(Yu=1,(function(e,n){var t=eu(),r=n&&!n.nodeType&&n,a=r&&!0&&e&&!e.nodeType&&e,i=a&&a.exports===r,o=i&&t.process,s=(function(){try{var l=a&&a.require&&a.require("util").types;return l||o&&o.binding&&o.binding("util")}catch{}})();e.exports=s})(or,or.exports)),or.exports}var en,Xu;function sr(){if(Xu)return en;Xu=1;var e=Ev(),n=Nr(),t=Qt(),r=t&&t.isTypedArray,a=r?n(r):e;return en=a,en}var rn,Zu;function Qu(){if(Zu)return rn;Zu=1;var e=Tv(),n=ar(),t=ce(),r=Je(),a=wr(),i=sr(),o=Object.prototype,s=o.hasOwnProperty;function l(c,u){var f=t(c),p=!f&&n(c),h=!f&&!p&&r(c),v=!f&&!p&&!h&&i(c),m=f||p||h||v,g=m?e(c.length,String):[],b=g.length;for(var y in c)(u||s.call(c,y))&&!(m&&(y=="length"||h&&(y=="offset"||y=="parent")||v&&(y=="buffer"||y=="byteLength"||y=="byteOffset")||a(y,b)))&&g.push(y);return g}return rn=l,rn}var tn,ec;function Er(){if(ec)return tn;ec=1;var e=Object.prototype;function n(t){var r=t&&t.constructor,a=typeof r=="function"&&r.prototype||e;return t===a}return tn=n,tn}var nn,rc;function tc(){if(rc)return nn;rc=1;function e(n,t){return function(r){return n(t(r))}}return nn=e,nn}var an,nc;function Cv(){if(nc)return an;nc=1;var e=tc(),n=e(Object.keys,Object);return an=n,an}var on,ac;function sn(){if(ac)return on;ac=1;var e=Er(),n=Cv(),t=Object.prototype,r=t.hasOwnProperty;function a(i){if(!e(i))return n(i);var o=[];for(var s in Object(i))r.call(i,s)&&s!="constructor"&&o.push(s);return o}return on=a,on}var un,ic;function Ce(){if(ic)return un;ic=1;var e=tr(),n=Yt();function t(r){return r!=null&&n(r.length)&&!e(r)}return un=t,un}var cn,oc;function je(){if(oc)return cn;oc=1;var e=Qu(),n=sn(),t=Ce();function r(a){return t(a)?e(a):n(a)}return cn=r,cn}var ln,sc;function Iv(){if(sc)return ln;sc=1;var e=nr(),n=je();function t(r,a){return r&&e(a,n(a),r)}return ln=t,ln}var dn,uc;function Rv(){if(uc)return dn;uc=1;function e(n){var t=[];if(n!=null)for(var r in Object(n))t.push(r);return t}return dn=e,dn}var fn,cc;function Ov(){if(cc)return fn;cc=1;var e=ge(),n=Er(),t=Rv(),r=Object.prototype,a=r.hasOwnProperty;function i(o){if(!e(o))return t(o);var s=n(o),l=[];for(var c in o)c=="constructor"&&(s||!a.call(o,c))||l.push(c);return l}return fn=i,fn}var pn,lc;function Me(){if(lc)return pn;lc=1;var e=Qu(),n=Ov(),t=Ce();function r(a){return t(a)?e(a,!0):n(a)}return pn=r,pn}var hn,dc;function jv(){if(dc)return hn;dc=1;var e=nr(),n=Me();function t(r,a){return r&&e(a,n(a),r)}return hn=t,hn}var ur={exports:{}};ur.exports;var fc;function pc(){return fc||(fc=1,(function(e,n){var t=_e(),r=n&&!n.nodeType&&n,a=r&&!0&&e&&!e.nodeType&&e,i=a&&a.exports===r,o=i?t.Buffer:void 0,s=o?o.allocUnsafe:void 0;function l(c,u){if(u)return c.slice();var f=c.length,p=s?s(f):new c.constructor(f);return c.copy(p),p}e.exports=l})(ur,ur.exports)),ur.exports}var vn,hc;function vc(){if(hc)return vn;hc=1;function e(n,t){var r=-1,a=n.length;for(t||(t=Array(a));++r<a;)t[r]=n[r];return t}return vn=e,vn}var mn,mc;function gc(){if(mc)return mn;mc=1;function e(n,t){for(var r=-1,a=n==null?0:n.length,i=0,o=[];++r<a;){var s=n[r];t(s,r,n)&&(o[i++]=s)}return o}return mn=e,mn}var gn,yc;function bc(){if(yc)return gn;yc=1;function e(){return[]}return gn=e,gn}var yn,xc;function bn(){if(xc)return yn;xc=1;var e=gc(),n=bc(),t=Object.prototype,r=t.propertyIsEnumerable,a=Object.getOwnPropertySymbols,i=a?function(o){return o==null?[]:(o=Object(o),e(a(o),function(s){return r.call(o,s)}))}:n;return yn=i,yn}var xn,_c;function Pv(){if(_c)return xn;_c=1;var e=nr(),n=bn();function t(r,a){return e(r,n(r),a)}return xn=t,xn}var _n,kc;function kn(){if(kc)return _n;kc=1;function e(n,t){for(var r=-1,a=t.length,i=n.length;++r<a;)n[i+r]=t[r];return n}return _n=e,_n}var Sn,Sc;function Cr(){if(Sc)return Sn;Sc=1;var e=tc(),n=e(Object.getPrototypeOf,Object);return Sn=n,Sn}var Tn,Tc;function wc(){if(Tc)return Tn;Tc=1;var e=kn(),n=Cr(),t=bn(),r=bc(),a=Object.getOwnPropertySymbols,i=a?function(o){for(var s=[];o;)e(s,t(o)),o=n(o);return s}:r;return Tn=i,Tn}var wn,Nc;function qv(){if(Nc)return wn;Nc=1;var e=nr(),n=wc();function t(r,a){return e(r,n(r),a)}return wn=t,wn}var Nn,Ec;function Cc(){if(Ec)return Nn;Ec=1;var e=kn(),n=ce();function t(r,a,i){var o=a(r);return n(r)?o:e(o,i(r))}return Nn=t,Nn}var En,Ic;function Rc(){if(Ic)return En;Ic=1;var e=Cc(),n=bn(),t=je();function r(a){return e(a,t,n)}return En=r,En}var Cn,Oc;function Av(){if(Oc)return Cn;Oc=1;var e=Cc(),n=wc(),t=Me();function r(a){return e(a,t,n)}return Cn=r,Cn}var In,jc;function Lv(){if(jc)return In;jc=1;var e=De(),n=_e(),t=e(n,"DataView");return In=t,In}var Rn,Pc;function Dv(){if(Pc)return Rn;Pc=1;var e=De(),n=_e(),t=e(n,"Promise");return Rn=t,Rn}var On,qc;function Ac(){if(qc)return On;qc=1;var e=De(),n=_e(),t=e(n,"Set");return On=t,On}var jn,Lc;function Mv(){if(Lc)return jn;Lc=1;var e=De(),n=_e(),t=e(n,"WeakMap");return jn=t,jn}var Pn,Dc;function Ge(){if(Dc)return Pn;Dc=1;var e=Lv(),n=gt(),t=Dv(),r=Ac(),a=Mv(),i=Le(),o=du(),s="[object Map]",l="[object Object]",c="[object Promise]",u="[object Set]",f="[object WeakMap]",p="[object DataView]",h=o(e),v=o(n),m=o(t),g=o(r),b=o(a),y=i;return(e&&y(new e(new ArrayBuffer(1)))!=p||n&&y(new n)!=s||t&&y(t.resolve())!=c||r&&y(new r)!=u||a&&y(new a)!=f)&&(y=function(x){var _=i(x),E=_==l?x.constructor:void 0,T=E?o(E):"";if(T)switch(T){case h:return p;case v:return s;case m:return c;case g:return u;case b:return f}return _}),Pn=y,Pn}var qn,Mc;function Bv(){if(Mc)return qn;Mc=1;var e=Object.prototype,n=e.hasOwnProperty;function t(r){var a=r.length,i=new r.constructor(a);return a&&typeof r[0]=="string"&&n.call(r,"index")&&(i.index=r.index,i.input=r.input),i}return qn=t,qn}var An,Bc;function Wc(){if(Bc)return An;Bc=1;var e=_e(),n=e.Uint8Array;return An=n,An}var Ln,Fc;function Dn(){if(Fc)return Ln;Fc=1;var e=Wc();function n(t){var r=new t.constructor(t.byteLength);return new e(r).set(new e(t)),r}return Ln=n,Ln}var Mn,zc;function Wv(){if(zc)return Mn;zc=1;var e=Dn();function n(t,r){var a=r?e(t.buffer):t.buffer;return new t.constructor(a,t.byteOffset,t.byteLength)}return Mn=n,Mn}var Bn,$c;function Fv(){if($c)return Bn;$c=1;var e=/\w*$/;function n(t){var r=new t.constructor(t.source,e.exec(t));return r.lastIndex=t.lastIndex,r}return Bn=n,Bn}var Wn,Hc;function zv(){if(Hc)return Wn;Hc=1;var e=Ue(),n=e?e.prototype:void 0,t=n?n.valueOf:void 0;function r(a){return t?Object(t.call(a)):{}}return Wn=r,Wn}var Fn,Kc;function Uc(){if(Kc)return Fn;Kc=1;var e=Dn();function n(t,r){var a=r?e(t.buffer):t.buffer;return new t.constructor(a,t.byteOffset,t.length)}return Fn=n,Fn}var zn,Jc;function $v(){if(Jc)return zn;Jc=1;var e=Dn(),n=Wv(),t=Fv(),r=zv(),a=Uc(),i="[object Boolean]",o="[object Date]",s="[object Map]",l="[object Number]",c="[object RegExp]",u="[object Set]",f="[object String]",p="[object Symbol]",h="[object ArrayBuffer]",v="[object DataView]",m="[object Float32Array]",g="[object Float64Array]",b="[object Int8Array]",y="[object Int16Array]",x="[object Int32Array]",_="[object Uint8Array]",E="[object Uint8ClampedArray]",T="[object Uint16Array]",N="[object Uint32Array]";function C(I,P,D){var F=I.constructor;switch(P){case h:return e(I);case i:case o:return new F(+I);case v:return n(I,D);case m:case g:case b:case y:case x:case _:case E:case T:case N:return a(I,D);case s:return new F;case l:case f:return new F(I);case c:return t(I);case u:return new F;case p:return r(I)}}return zn=C,zn}var $n,Gc;function Vc(){if(Gc)return $n;Gc=1;var e=ge(),n=Object.create,t=(function(){function r(){}return function(a){if(!e(a))return{};if(n)return n(a);r.prototype=a;var i=new r;return r.prototype=void 0,i}})();return $n=t,$n}var Hn,Yc;function Xc(){if(Yc)return Hn;Yc=1;var e=Vc(),n=Cr(),t=Er();function r(a){return typeof a.constructor=="function"&&!t(a)?e(n(a)):{}}return Hn=r,Hn}var Kn,Zc;function Hv(){if(Zc)return Kn;Zc=1;var e=Ge(),n=we(),t="[object Map]";function r(a){return n(a)&&e(a)==t}return Kn=r,Kn}var Un,Qc;function Kv(){if(Qc)return Un;Qc=1;var e=Hv(),n=Nr(),t=Qt(),r=t&&t.isMap,a=r?n(r):e;return Un=a,Un}var Jn,el;function Uv(){if(el)return Jn;el=1;var e=Ge(),n=we(),t="[object Set]";function r(a){return n(a)&&e(a)==t}return Jn=r,Jn}var Gn,rl;function Jv(){if(rl)return Gn;rl=1;var e=Uv(),n=Nr(),t=Qt(),r=t&&t.isSet,a=r?n(r):e;return Gn=a,Gn}var Vn,tl;function nl(){if(tl)return Vn;tl=1;var e=kr(),n=Dt(),t=Tr(),r=Iv(),a=jv(),i=pc(),o=vc(),s=Pv(),l=qv(),c=Rc(),u=Av(),f=Ge(),p=Bv(),h=$v(),v=Xc(),m=ce(),g=Je(),b=Kv(),y=ge(),x=Jv(),_=je(),E=Me(),T=1,N=2,C=4,I="[object Arguments]",P="[object Array]",D="[object Boolean]",F="[object Date]",R="[object Error]",k="[object Function]",W="[object GeneratorFunction]",z="[object Map]",U="[object Number]",K="[object Object]",Y="[object RegExp]",J="[object Set]",O="[object String]",V="[object Symbol]",Q="[object WeakMap]",w="[object ArrayBuffer]",L="[object DataView]",q="[object Float32Array]",A="[object Float64Array]",B="[object Int8Array]",X="[object Int16Array]",ee="[object Int32Array]",Z="[object Uint8Array]",ne="[object Uint8ClampedArray]",S="[object Uint16Array]",$="[object Uint32Array]",G={};G[I]=G[P]=G[w]=G[L]=G[D]=G[F]=G[q]=G[A]=G[B]=G[X]=G[ee]=G[z]=G[U]=G[K]=G[Y]=G[J]=G[O]=G[V]=G[Z]=G[ne]=G[S]=G[$]=!0,G[R]=G[k]=G[Q]=!1;function re(H,ae,ie,xe,Oe,he){var ue,ve=ae&T,ze=ae&N,Os=ae&C;if(ie&&(ue=Oe?ie(H,xe,Oe,he):ie(H)),ue!==void 0)return ue;if(!y(H))return H;var hr=m(H);if(hr){if(ue=p(H),!ve)return o(H,ue)}else{var se=f(H),$e=se==k||se==W;if(g(H))return i(H,ve);if(se==K||se==I||$e&&!Oe){if(ue=ze||$e?{}:v(H),!ve)return ze?l(H,a(ue,H)):s(H,r(ue,H))}else{if(!G[se])return Oe?H:{};ue=h(H,se,ve)}}he||(he=new e);var qe=he.get(H);if(qe)return qe;he.set(H,ue),x(H)?H.forEach(function(Ae){ue.add(re(Ae,ae,ie,Ae,H,he))}):b(H)&&H.forEach(function(Ae,He){ue.set(He,re(Ae,ae,ie,He,H,he))});var js=Os?ze?u:c:ze?E:_,Mr=hr?void 0:js(H);return n(Mr||H,function(Ae,He){Mr&&(He=Ae,Ae=H[He]),t(ue,He,re(Ae,ae,ie,He,H,he))}),ue}return Vn=re,Vn}var Yn,al;function Gv(){if(al)return Yn;al=1;var e=nl(),n=4;function t(r){return e(r,n)}return Yn=t,Yn}var Xn,il;function Zn(){if(il)return Xn;il=1;function e(n){return function(){return n}}return Xn=e,Xn}var Qn,ol;function Vv(){if(ol)return Qn;ol=1;function e(n){return function(t,r,a){for(var i=-1,o=Object(t),s=a(t),l=s.length;l--;){var c=s[n?l:++i];if(r(o[c],c,o)===!1)break}return t}}return Qn=e,Qn}var ea,sl;function ra(){if(sl)return ea;sl=1;var e=Vv(),n=e();return ea=n,ea}var ta,ul;function na(){if(ul)return ta;ul=1;var e=ra(),n=je();function t(r,a){return r&&e(r,a,n)}return ta=t,ta}var aa,cl;function Yv(){if(cl)return aa;cl=1;var e=Ce();function n(t,r){return function(a,i){if(a==null)return a;if(!e(a))return t(a,i);for(var o=a.length,s=r?o:-1,l=Object(a);(r?s--:++s<o)&&i(l[s],s,l)!==!1;);return a}}return aa=n,aa}var ia,ll;function Ir(){if(ll)return ia;ll=1;var e=na(),n=Yv(),t=n(e);return ia=t,ia}var oa,dl;function Be(){if(dl)return oa;dl=1;function e(n){return n}return oa=e,oa}var sa,fl;function pl(){if(fl)return sa;fl=1;var e=Be();function n(t){return typeof t=="function"?t:e}return sa=n,sa}var ua,hl;function vl(){if(hl)return ua;hl=1;var e=Dt(),n=Ir(),t=pl(),r=ce();function a(i,o){var s=r(i)?e:n;return s(i,t(o))}return ua=a,ua}var ca,ml;function gl(){return ml||(ml=1,ca=vl()),ca}var la,yl;function Xv(){if(yl)return la;yl=1;var e=Ir();function n(t,r){var a=[];return e(t,function(i,o,s){r(i,o,s)&&a.push(i)}),a}return la=n,la}var da,bl;function Zv(){if(bl)return da;bl=1;var e="__lodash_hash_undefined__";function n(t){return this.__data__.set(t,e),this}return da=n,da}var fa,xl;function Qv(){if(xl)return fa;xl=1;function e(n){return this.__data__.has(n)}return fa=e,fa}var pa,_l;function kl(){if(_l)return pa;_l=1;var e=Pt(),n=Zv(),t=Qv();function r(a){var i=-1,o=a==null?0:a.length;for(this.__data__=new e;++i<o;)this.add(a[i])}return r.prototype.add=r.prototype.push=n,r.prototype.has=t,pa=r,pa}var ha,Sl;function em(){if(Sl)return ha;Sl=1;function e(n,t){for(var r=-1,a=n==null?0:n.length;++r<a;)if(t(n[r],r,n))return!0;return!1}return ha=e,ha}var va,Tl;function wl(){if(Tl)return va;Tl=1;function e(n,t){return n.has(t)}return va=e,va}var ma,Nl;function El(){if(Nl)return ma;Nl=1;var e=kl(),n=em(),t=wl(),r=1,a=2;function i(o,s,l,c,u,f){var p=l&r,h=o.length,v=s.length;if(h!=v&&!(p&&v>h))return!1;var m=f.get(o),g=f.get(s);if(m&&g)return m==s&&g==o;var b=-1,y=!0,x=l&a?new e:void 0;for(f.set(o,s),f.set(s,o);++b<h;){var _=o[b],E=s[b];if(c)var T=p?c(E,_,b,s,o,f):c(_,E,b,o,s,f);if(T!==void 0){if(T)continue;y=!1;break}if(x){if(!n(s,function(N,C){if(!t(x,C)&&(_===N||u(_,N,l,c,f)))return x.push(C)})){y=!1;break}}else if(!(_===E||u(_,E,l,c,f))){y=!1;break}}return f.delete(o),f.delete(s),y}return ma=i,ma}var ga,Cl;function rm(){if(Cl)return ga;Cl=1;function e(n){var t=-1,r=Array(n.size);return n.forEach(function(a,i){r[++t]=[i,a]}),r}return ga=e,ga}var ya,Il;function ba(){if(Il)return ya;Il=1;function e(n){var t=-1,r=Array(n.size);return n.forEach(function(a){r[++t]=a}),r}return ya=e,ya}var xa,Rl;function tm(){if(Rl)return xa;Rl=1;var e=Ue(),n=Wc(),t=Ke(),r=El(),a=rm(),i=ba(),o=1,s=2,l="[object Boolean]",c="[object Date]",u="[object Error]",f="[object Map]",p="[object Number]",h="[object RegExp]",v="[object Set]",m="[object String]",g="[object Symbol]",b="[object ArrayBuffer]",y="[object DataView]",x=e?e.prototype:void 0,_=x?x.valueOf:void 0;function E(T,N,C,I,P,D,F){switch(C){case y:if(T.byteLength!=N.byteLength||T.byteOffset!=N.byteOffset)return!1;T=T.buffer,N=N.buffer;case b:return!(T.byteLength!=N.byteLength||!D(new n(T),new n(N)));case l:case c:case p:return t(+T,+N);case u:return T.name==N.name&&T.message==N.message;case h:case m:return T==N+"";case f:var R=a;case v:var k=I&o;if(R||(R=i),T.size!=N.size&&!k)return!1;var W=F.get(T);if(W)return W==N;I|=s,F.set(T,N);var z=r(R(T),R(N),I,P,D,F);return F.delete(T),z;case g:if(_)return _.call(T)==_.call(N)}return!1}return xa=E,xa}var _a,Ol;function nm(){if(Ol)return _a;Ol=1;var e=Rc(),n=1,t=Object.prototype,r=t.hasOwnProperty;function a(i,o,s,l,c,u){var f=s&n,p=e(i),h=p.length,v=e(o),m=v.length;if(h!=m&&!f)return!1;for(var g=h;g--;){var b=p[g];if(!(f?b in o:r.call(o,b)))return!1}var y=u.get(i),x=u.get(o);if(y&&x)return y==o&&x==i;var _=!0;u.set(i,o),u.set(o,i);for(var E=f;++g<h;){b=p[g];var T=i[b],N=o[b];if(l)var C=f?l(N,T,b,o,i,u):l(T,N,b,i,o,u);if(!(C===void 0?T===N||c(T,N,s,l,u):C)){_=!1;break}E||(E=b=="constructor")}if(_&&!E){var I=i.constructor,P=o.constructor;I!=P&&"constructor"in i&&"constructor"in o&&!(typeof I=="function"&&I instanceof I&&typeof P=="function"&&P instanceof P)&&(_=!1)}return u.delete(i),u.delete(o),_}return _a=a,_a}var ka,jl;function am(){if(jl)return ka;jl=1;var e=kr(),n=El(),t=tm(),r=nm(),a=Ge(),i=ce(),o=Je(),s=sr(),l=1,c="[object Arguments]",u="[object Array]",f="[object Object]",p=Object.prototype,h=p.hasOwnProperty;function v(m,g,b,y,x,_){var E=i(m),T=i(g),N=E?u:a(m),C=T?u:a(g);N=N==c?f:N,C=C==c?f:C;var I=N==f,P=C==f,D=N==C;if(D&&o(m)){if(!o(g))return!1;E=!0,I=!1}if(D&&!I)return _||(_=new e),E||s(m)?n(m,g,b,y,x,_):t(m,g,N,b,y,x,_);if(!(b&l)){var F=I&&h.call(m,"__wrapped__"),R=P&&h.call(g,"__wrapped__");if(F||R){var k=F?m.value():m,W=R?g.value():g;return _||(_=new e),x(k,W,b,y,_)}}return D?(_||(_=new e),r(m,g,b,y,x,_)):!1}return ka=v,ka}var Sa,Pl;function ql(){if(Pl)return Sa;Pl=1;var e=am(),n=we();function t(r,a,i,o,s){return r===a?!0:r==null||a==null||!n(r)&&!n(a)?r!==r&&a!==a:e(r,a,i,o,t,s)}return Sa=t,Sa}var Ta,Al;function im(){if(Al)return Ta;Al=1;var e=kr(),n=ql(),t=1,r=2;function a(i,o,s,l){var c=s.length,u=c,f=!l;if(i==null)return!u;for(i=Object(i);c--;){var p=s[c];if(f&&p[2]?p[1]!==i[p[0]]:!(p[0]in i))return!1}for(;++c<u;){p=s[c];var h=p[0],v=i[h],m=p[1];if(f&&p[2]){if(v===void 0&&!(h in i))return!1}else{var g=new e;if(l)var b=l(v,m,h,i,o,g);if(!(b===void 0?n(m,v,t|r,l,g):b))return!1}}return!0}return Ta=a,Ta}var wa,Ll;function Dl(){if(Ll)return wa;Ll=1;var e=ge();function n(t){return t===t&&!e(t)}return wa=n,wa}var Na,Ml;function om(){if(Ml)return Na;Ml=1;var e=Dl(),n=je();function t(r){for(var a=n(r),i=a.length;i--;){var o=a[i],s=r[o];a[i]=[o,s,e(s)]}return a}return Na=t,Na}var Ea,Bl;function Wl(){if(Bl)return Ea;Bl=1;function e(n,t){return function(r){return r==null?!1:r[n]===t&&(t!==void 0||n in Object(r))}}return Ea=e,Ea}var Ca,Fl;function sm(){if(Fl)return Ca;Fl=1;var e=im(),n=om(),t=Wl();function r(a){var i=n(a);return i.length==1&&i[0][2]?t(i[0][0],i[0][1]):function(o){return o===a||e(o,a,i)}}return Ca=r,Ca}var Ia,zl;function Ve(){if(zl)return Ia;zl=1;var e=Le(),n=we(),t="[object Symbol]";function r(a){return typeof a=="symbol"||n(a)&&e(a)==t}return Ia=r,Ia}var Ra,$l;function Oa(){if($l)return Ra;$l=1;var e=ce(),n=Ve(),t=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,r=/^\w*$/;function a(i,o){if(e(i))return!1;var s=typeof i;return s=="number"||s=="symbol"||s=="boolean"||i==null||n(i)?!0:r.test(i)||!t.test(i)||o!=null&&i in Object(o)}return Ra=a,Ra}var ja,Hl;function um(){if(Hl)return ja;Hl=1;var e=Pt(),n="Expected a function";function t(r,a){if(typeof r!="function"||a!=null&&typeof a!="function")throw new TypeError(n);var i=function(){var o=arguments,s=a?a.apply(this,o):o[0],l=i.cache;if(l.has(s))return l.get(s);var c=r.apply(this,o);return i.cache=l.set(s,c)||l,c};return i.cache=new(t.Cache||e),i}return t.Cache=e,ja=t,ja}var Pa,Kl;function cm(){if(Kl)return Pa;Kl=1;var e=um(),n=500;function t(r){var a=e(r,function(o){return i.size===n&&i.clear(),o}),i=a.cache;return a}return Pa=t,Pa}var qa,Ul;function lm(){if(Ul)return qa;Ul=1;var e=cm(),n=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,t=/\\(\\)?/g,r=e(function(a){var i=[];return a.charCodeAt(0)===46&&i.push(""),a.replace(n,function(o,s,l,c){i.push(l?c.replace(t,"$1"):s||o)}),i});return qa=r,qa}var Aa,Jl;function Rr(){if(Jl)return Aa;Jl=1;function e(n,t){for(var r=-1,a=n==null?0:n.length,i=Array(a);++r<a;)i[r]=t(n[r],r,n);return i}return Aa=e,Aa}var La,Gl;function dm(){if(Gl)return La;Gl=1;var e=Ue(),n=Rr(),t=ce(),r=Ve(),a=e?e.prototype:void 0,i=a?a.toString:void 0;function o(s){if(typeof s=="string")return s;if(t(s))return n(s,o)+"";if(r(s))return i?i.call(s):"";var l=s+"";return l=="0"&&1/s==-1/0?"-0":l}return La=o,La}var Da,Vl;function Yl(){if(Vl)return Da;Vl=1;var e=dm();function n(t){return t==null?"":e(t)}return Da=n,Da}var Ma,Xl;function Or(){if(Xl)return Ma;Xl=1;var e=ce(),n=Oa(),t=lm(),r=Yl();function a(i,o){return e(i)?i:n(i,o)?[i]:t(r(i))}return Ma=a,Ma}var Ba,Zl;function cr(){if(Zl)return Ba;Zl=1;var e=Ve();function n(t){if(typeof t=="string"||e(t))return t;var r=t+"";return r=="0"&&1/t==-1/0?"-0":r}return Ba=n,Ba}var Wa,Ql;function jr(){if(Ql)return Wa;Ql=1;var e=Or(),n=cr();function t(r,a){a=e(a,r);for(var i=0,o=a.length;r!=null&&i<o;)r=r[n(a[i++])];return i&&i==o?r:void 0}return Wa=t,Wa}var Fa,ed;function fm(){if(ed)return Fa;ed=1;var e=jr();function n(t,r,a){var i=t==null?void 0:e(t,r);return i===void 0?a:i}return Fa=n,Fa}var za,rd;function pm(){if(rd)return za;rd=1;function e(n,t){return n!=null&&t in Object(n)}return za=e,za}var $a,td;function nd(){if(td)return $a;td=1;var e=Or(),n=ar(),t=ce(),r=wr(),a=Yt(),i=cr();function o(s,l,c){l=e(l,s);for(var u=-1,f=l.length,p=!1;++u<f;){var h=i(l[u]);if(!(p=s!=null&&c(s,h)))break;s=s[h]}return p||++u!=f?p:(f=s==null?0:s.length,!!f&&a(f)&&r(h,f)&&(t(s)||n(s)))}return $a=o,$a}var Ha,ad;function id(){if(ad)return Ha;ad=1;var e=pm(),n=nd();function t(r,a){return r!=null&&n(r,a,e)}return Ha=t,Ha}var Ka,od;function hm(){if(od)return Ka;od=1;var e=ql(),n=fm(),t=id(),r=Oa(),a=Dl(),i=Wl(),o=cr(),s=1,l=2;function c(u,f){return r(u)&&a(f)?i(o(u),f):function(p){var h=n(p,u);return h===void 0&&h===f?t(p,u):e(f,h,s|l)}}return Ka=c,Ka}var Ua,sd;function ud(){if(sd)return Ua;sd=1;function e(n){return function(t){return t?.[n]}}return Ua=e,Ua}var Ja,cd;function vm(){if(cd)return Ja;cd=1;var e=jr();function n(t){return function(r){return e(r,t)}}return Ja=n,Ja}var Ga,ld;function mm(){if(ld)return Ga;ld=1;var e=ud(),n=vm(),t=Oa(),r=cr();function a(i){return t(i)?e(r(i)):n(i)}return Ga=a,Ga}var Va,dd;function Ie(){if(dd)return Va;dd=1;var e=sm(),n=hm(),t=Be(),r=ce(),a=mm();function i(o){return typeof o=="function"?o:o==null?t:typeof o=="object"?r(o)?n(o[0],o[1]):e(o):a(o)}return Va=i,Va}var Ya,fd;function pd(){if(fd)return Ya;fd=1;var e=gc(),n=Xv(),t=Ie(),r=ce();function a(i,o){var s=r(i)?e:n;return s(i,t(o,3))}return Ya=a,Ya}var Xa,hd;function gm(){if(hd)return Xa;hd=1;var e=Object.prototype,n=e.hasOwnProperty;function t(r,a){return r!=null&&n.call(r,a)}return Xa=t,Xa}var Za,vd;function md(){if(vd)return Za;vd=1;var e=gm(),n=nd();function t(r,a){return r!=null&&n(r,a,e)}return Za=t,Za}var Qa,gd;function ym(){if(gd)return Qa;gd=1;var e=sn(),n=Ge(),t=ar(),r=ce(),a=Ce(),i=Je(),o=Er(),s=sr(),l="[object Map]",c="[object Set]",u=Object.prototype,f=u.hasOwnProperty;function p(h){if(h==null)return!0;if(a(h)&&(r(h)||typeof h=="string"||typeof h.splice=="function"||i(h)||s(h)||t(h)))return!h.length;var v=n(h);if(v==l||v==c)return!h.size;if(o(h))return!e(h).length;for(var m in h)if(f.call(h,m))return!1;return!0}return Qa=p,Qa}var ei,yd;function bd(){if(yd)return ei;yd=1;function e(n){return n===void 0}return ei=e,ei}var ri,xd;function _d(){if(xd)return ri;xd=1;var e=Ir(),n=Ce();function t(r,a){var i=-1,o=n(r)?Array(r.length):[];return e(r,function(s,l,c){o[++i]=a(s,l,c)}),o}return ri=t,ri}var ti,kd;function Sd(){if(kd)return ti;kd=1;var e=Rr(),n=Ie(),t=_d(),r=ce();function a(i,o){var s=r(i)?e:t;return s(i,n(o,3))}return ti=a,ti}var ni,Td;function bm(){if(Td)return ni;Td=1;function e(n,t,r,a){var i=-1,o=n==null?0:n.length;for(a&&o&&(r=n[++i]);++i<o;)r=t(r,n[i],i,n);return r}return ni=e,ni}var ai,wd;function xm(){if(wd)return ai;wd=1;function e(n,t,r,a,i){return i(n,function(o,s,l){r=a?(a=!1,o):t(r,o,s,l)}),r}return ai=e,ai}var ii,Nd;function Ed(){if(Nd)return ii;Nd=1;var e=bm(),n=Ir(),t=Ie(),r=xm(),a=ce();function i(o,s,l){var c=a(o)?e:r,u=arguments.length<3;return c(o,t(s,4),l,u,n)}return ii=i,ii}var oi,Cd;function _m(){if(Cd)return oi;Cd=1;var e=Le(),n=ce(),t=we(),r="[object String]";function a(i){return typeof i=="string"||!n(i)&&t(i)&&e(i)==r}return oi=a,oi}var si,Id;function km(){if(Id)return si;Id=1;var e=ud(),n=e("length");return si=n,si}var ui,Rd;function Sm(){if(Rd)return ui;Rd=1;var e="\\ud800-\\udfff",n="\\u0300-\\u036f",t="\\ufe20-\\ufe2f",r="\\u20d0-\\u20ff",a=n+t+r,i="\\ufe0e\\ufe0f",o="\\u200d",s=RegExp("["+o+e+a+i+"]");function l(c){return s.test(c)}return ui=l,ui}var ci,Od;function Tm(){if(Od)return ci;Od=1;var e="\\ud800-\\udfff",n="\\u0300-\\u036f",t="\\ufe20-\\ufe2f",r="\\u20d0-\\u20ff",a=n+t+r,i="\\ufe0e\\ufe0f",o="["+e+"]",s="["+a+"]",l="\\ud83c[\\udffb-\\udfff]",c="(?:"+s+"|"+l+")",u="[^"+e+"]",f="(?:\\ud83c[\\udde6-\\uddff]){2}",p="[\\ud800-\\udbff][\\udc00-\\udfff]",h="\\u200d",v=c+"?",m="["+i+"]?",g="(?:"+h+"(?:"+[u,f,p].join("|")+")"+m+v+")*",b=m+v+g,y="(?:"+[u+s+"?",s,f,p,o].join("|")+")",x=RegExp(l+"(?="+l+")|"+y+b,"g");function _(E){for(var T=x.lastIndex=0;x.test(E);)++T;return T}return ci=_,ci}var li,jd;function wm(){if(jd)return li;jd=1;var e=km(),n=Sm(),t=Tm();function r(a){return n(a)?t(a):e(a)}return li=r,li}var di,Pd;function Nm(){if(Pd)return di;Pd=1;var e=sn(),n=Ge(),t=Ce(),r=_m(),a=wm(),i="[object Map]",o="[object Set]";function s(l){if(l==null)return 0;if(t(l))return r(l)?a(l):l.length;var c=n(l);return c==i||c==o?l.size:e(l).length}return di=s,di}var fi,qd;function Em(){if(qd)return fi;qd=1;var e=Dt(),n=Vc(),t=na(),r=Ie(),a=Cr(),i=ce(),o=Je(),s=tr(),l=ge(),c=sr();function u(f,p,h){var v=i(f),m=v||o(f)||c(f);if(p=r(p,4),h==null){var g=f&&f.constructor;m?h=v?new g:[]:l(f)?h=s(g)?n(a(f)):{}:h={}}return(m?e:t)(f,function(b,y,x){return p(h,b,y,x)}),h}return fi=u,fi}var pi,Ad;function Cm(){if(Ad)return pi;Ad=1;var e=Ue(),n=ar(),t=ce(),r=e?e.isConcatSpreadable:void 0;function a(i){return t(i)||n(i)||!!(r&&i&&i[r])}return pi=a,pi}var hi,Ld;function vi(){if(Ld)return hi;Ld=1;var e=kn(),n=Cm();function t(r,a,i,o,s){var l=-1,c=r.length;for(i||(i=n),s||(s=[]);++l<c;){var u=r[l];a>0&&i(u)?a>1?t(u,a-1,i,o,s):e(s,u):o||(s[s.length]=u)}return s}return hi=t,hi}var mi,Dd;function Im(){if(Dd)return mi;Dd=1;function e(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}return mi=e,mi}var gi,Md;function Bd(){if(Md)return gi;Md=1;var e=Im(),n=Math.max;function t(r,a,i){return a=n(a===void 0?r.length-1:a,0),function(){for(var o=arguments,s=-1,l=n(o.length-a,0),c=Array(l);++s<l;)c[s]=o[a+s];s=-1;for(var u=Array(a+1);++s<a;)u[s]=o[s];return u[a]=i(c),e(r,this,u)}}return gi=t,gi}var yi,Wd;function Rm(){if(Wd)return yi;Wd=1;var e=Zn(),n=Au(),t=Be(),r=n?function(a,i){return n(a,"toString",{configurable:!0,enumerable:!1,value:e(i),writable:!0})}:t;return yi=r,yi}var bi,Fd;function Om(){if(Fd)return bi;Fd=1;var e=800,n=16,t=Date.now;function r(a){var i=0,o=0;return function(){var s=t(),l=n-(s-o);if(o=s,l>0){if(++i>=e)return arguments[0]}else i=0;return a.apply(void 0,arguments)}}return bi=r,bi}var xi,zd;function $d(){if(zd)return xi;zd=1;var e=Rm(),n=Om(),t=n(e);return xi=t,xi}var _i,Hd;function Pr(){if(Hd)return _i;Hd=1;var e=Be(),n=Bd(),t=$d();function r(a,i){return t(n(a,i,e),a+"")}return _i=r,_i}var ki,Kd;function Ud(){if(Kd)return ki;Kd=1;function e(n,t,r,a){for(var i=n.length,o=r+(a?1:-1);a?o--:++o<i;)if(t(n[o],o,n))return o;return-1}return ki=e,ki}var Si,Jd;function jm(){if(Jd)return Si;Jd=1;function e(n){return n!==n}return Si=e,Si}var Ti,Gd;function Pm(){if(Gd)return Ti;Gd=1;function e(n,t,r){for(var a=r-1,i=n.length;++a<i;)if(n[a]===t)return a;return-1}return Ti=e,Ti}var wi,Vd;function qm(){if(Vd)return wi;Vd=1;var e=Ud(),n=jm(),t=Pm();function r(a,i,o){return i===i?t(a,i,o):e(a,n,o)}return wi=r,wi}var Ni,Yd;function Am(){if(Yd)return Ni;Yd=1;var e=qm();function n(t,r){var a=t==null?0:t.length;return!!a&&e(t,r,0)>-1}return Ni=n,Ni}var Ei,Xd;function Lm(){if(Xd)return Ei;Xd=1;function e(n,t,r){for(var a=-1,i=n==null?0:n.length;++a<i;)if(r(t,n[a]))return!0;return!1}return Ei=e,Ei}var Ci,Zd;function Dm(){if(Zd)return Ci;Zd=1;function e(){}return Ci=e,Ci}var Ii,Qd;function Mm(){if(Qd)return Ii;Qd=1;var e=Ac(),n=Dm(),t=ba(),r=1/0,a=e&&1/t(new e([,-0]))[1]==r?function(i){return new e(i)}:n;return Ii=a,Ii}var Ri,ef;function Bm(){if(ef)return Ri;ef=1;var e=kl(),n=Am(),t=Lm(),r=wl(),a=Mm(),i=ba(),o=200;function s(l,c,u){var f=-1,p=n,h=l.length,v=!0,m=[],g=m;if(u)v=!1,p=t;else if(h>=o){var b=c?null:a(l);if(b)return i(b);v=!1,p=r,g=new e}else g=c?[]:m;e:for(;++f<h;){var y=l[f],x=c?c(y):y;if(y=u||y!==0?y:0,v&&x===x){for(var _=g.length;_--;)if(g[_]===x)continue e;c&&g.push(x),m.push(y)}else p(g,x,u)||(g!==m&&g.push(x),m.push(y))}return m}return Ri=s,Ri}var Oi,rf;function tf(){if(rf)return Oi;rf=1;var e=Ce(),n=we();function t(r){return n(r)&&e(r)}return Oi=t,Oi}var ji,nf;function Wm(){if(nf)return ji;nf=1;var e=vi(),n=Pr(),t=Bm(),r=tf(),a=n(function(i){return t(e(i,1,r,!0))});return ji=a,ji}var Pi,af;function Fm(){if(af)return Pi;af=1;var e=Rr();function n(t,r){return e(r,function(a){return t[a]})}return Pi=n,Pi}var qi,of;function sf(){if(of)return qi;of=1;var e=Fm(),n=je();function t(r){return r==null?[]:e(r,n(r))}return qi=t,qi}var Ai,uf;function ye(){if(uf)return Ai;uf=1;var e;if(typeof $r=="function")try{e={clone:Gv(),constant:Zn(),each:gl(),filter:pd(),has:md(),isArray:ce(),isEmpty:ym(),isFunction:tr(),isUndefined:bd(),keys:je(),map:Sd(),reduce:Ed(),size:Nm(),transform:Em(),union:Wm(),values:sf()}}catch{}return e||(e=window._),Ai=e,Ai}var Li,cf;function Di(){if(cf)return Li;cf=1;var e=ye();Li=a;var n="\0",t="\0",r="";function a(u){this._isDirected=e.has(u,"directed")?u.directed:!0,this._isMultigraph=e.has(u,"multigraph")?u.multigraph:!1,this._isCompound=e.has(u,"compound")?u.compound:!1,this._label=void 0,this._defaultNodeLabelFn=e.constant(void 0),this._defaultEdgeLabelFn=e.constant(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[t]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}a.prototype._nodeCount=0,a.prototype._edgeCount=0,a.prototype.isDirected=function(){return this._isDirected},a.prototype.isMultigraph=function(){return this._isMultigraph},a.prototype.isCompound=function(){return this._isCompound},a.prototype.setGraph=function(u){return this._label=u,this},a.prototype.graph=function(){return this._label},a.prototype.setDefaultNodeLabel=function(u){return e.isFunction(u)||(u=e.constant(u)),this._defaultNodeLabelFn=u,this},a.prototype.nodeCount=function(){return this._nodeCount},a.prototype.nodes=function(){return e.keys(this._nodes)},a.prototype.sources=function(){var u=this;return e.filter(this.nodes(),function(f){return e.isEmpty(u._in[f])})},a.prototype.sinks=function(){var u=this;return e.filter(this.nodes(),function(f){return e.isEmpty(u._out[f])})},a.prototype.setNodes=function(u,f){var p=arguments,h=this;return e.each(u,function(v){p.length>1?h.setNode(v,f):h.setNode(v)}),this},a.prototype.setNode=function(u,f){return e.has(this._nodes,u)?(arguments.length>1&&(this._nodes[u]=f),this):(this._nodes[u]=arguments.length>1?f:this._defaultNodeLabelFn(u),this._isCompound&&(this._parent[u]=t,this._children[u]={},this._children[t][u]=!0),this._in[u]={},this._preds[u]={},this._out[u]={},this._sucs[u]={},++this._nodeCount,this)},a.prototype.node=function(u){return this._nodes[u]},a.prototype.hasNode=function(u){return e.has(this._nodes,u)},a.prototype.removeNode=function(u){var f=this;if(e.has(this._nodes,u)){var p=function(h){f.removeEdge(f._edgeObjs[h])};delete this._nodes[u],this._isCompound&&(this._removeFromParentsChildList(u),delete this._parent[u],e.each(this.children(u),function(h){f.setParent(h)}),delete this._children[u]),e.each(e.keys(this._in[u]),p),delete this._in[u],delete this._preds[u],e.each(e.keys(this._out[u]),p),delete this._out[u],delete this._sucs[u],--this._nodeCount}return this},a.prototype.setParent=function(u,f){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(e.isUndefined(f))f=t;else{f+="";for(var p=f;!e.isUndefined(p);p=this.parent(p))if(p===u)throw new Error("Setting "+f+" as parent of "+u+" would create a cycle");this.setNode(f)}return this.setNode(u),this._removeFromParentsChildList(u),this._parent[u]=f,this._children[f][u]=!0,this},a.prototype._removeFromParentsChildList=function(u){delete this._children[this._parent[u]][u]},a.prototype.parent=function(u){if(this._isCompound){var f=this._parent[u];if(f!==t)return f}},a.prototype.children=function(u){if(e.isUndefined(u)&&(u=t),this._isCompound){var f=this._children[u];if(f)return e.keys(f)}else{if(u===t)return this.nodes();if(this.hasNode(u))return[]}},a.prototype.predecessors=function(u){var f=this._preds[u];if(f)return e.keys(f)},a.prototype.successors=function(u){var f=this._sucs[u];if(f)return e.keys(f)},a.prototype.neighbors=function(u){var f=this.predecessors(u);if(f)return e.union(f,this.successors(u))},a.prototype.isLeaf=function(u){var f;return this.isDirected()?f=this.successors(u):f=this.neighbors(u),f.length===0},a.prototype.filterNodes=function(u){var f=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});f.setGraph(this.graph());var p=this;e.each(this._nodes,function(m,g){u(g)&&f.setNode(g,m)}),e.each(this._edgeObjs,function(m){f.hasNode(m.v)&&f.hasNode(m.w)&&f.setEdge(m,p.edge(m))});var h={};function v(m){var g=p.parent(m);return g===void 0||f.hasNode(g)?(h[m]=g,g):g in h?h[g]:v(g)}return this._isCompound&&e.each(f.nodes(),function(m){f.setParent(m,v(m))}),f},a.prototype.setDefaultEdgeLabel=function(u){return e.isFunction(u)||(u=e.constant(u)),this._defaultEdgeLabelFn=u,this},a.prototype.edgeCount=function(){return this._edgeCount},a.prototype.edges=function(){return e.values(this._edgeObjs)},a.prototype.setPath=function(u,f){var p=this,h=arguments;return e.reduce(u,function(v,m){return h.length>1?p.setEdge(v,m,f):p.setEdge(v,m),m}),this},a.prototype.setEdge=function(){var u,f,p,h,v=!1,m=arguments[0];typeof m=="object"&&m!==null&&"v"in m?(u=m.v,f=m.w,p=m.name,arguments.length===2&&(h=arguments[1],v=!0)):(u=m,f=arguments[1],p=arguments[3],arguments.length>2&&(h=arguments[2],v=!0)),u=""+u,f=""+f,e.isUndefined(p)||(p=""+p);var g=s(this._isDirected,u,f,p);if(e.has(this._edgeLabels,g))return v&&(this._edgeLabels[g]=h),this;if(!e.isUndefined(p)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(u),this.setNode(f),this._edgeLabels[g]=v?h:this._defaultEdgeLabelFn(u,f,p);var b=l(this._isDirected,u,f,p);return u=b.v,f=b.w,Object.freeze(b),this._edgeObjs[g]=b,i(this._preds[f],u),i(this._sucs[u],f),this._in[f][g]=b,this._out[u][g]=b,this._edgeCount++,this},a.prototype.edge=function(u,f,p){var h=arguments.length===1?c(this._isDirected,arguments[0]):s(this._isDirected,u,f,p);return this._edgeLabels[h]},a.prototype.hasEdge=function(u,f,p){var h=arguments.length===1?c(this._isDirected,arguments[0]):s(this._isDirected,u,f,p);return e.has(this._edgeLabels,h)},a.prototype.removeEdge=function(u,f,p){var h=arguments.length===1?c(this._isDirected,arguments[0]):s(this._isDirected,u,f,p),v=this._edgeObjs[h];return v&&(u=v.v,f=v.w,delete this._edgeLabels[h],delete this._edgeObjs[h],o(this._preds[f],u),o(this._sucs[u],f),delete this._in[f][h],delete this._out[u][h],this._edgeCount--),this},a.prototype.inEdges=function(u,f){var p=this._in[u];if(p){var h=e.values(p);return f?e.filter(h,function(v){return v.v===f}):h}},a.prototype.outEdges=function(u,f){var p=this._out[u];if(p){var h=e.values(p);return f?e.filter(h,function(v){return v.w===f}):h}},a.prototype.nodeEdges=function(u,f){var p=this.inEdges(u,f);if(p)return p.concat(this.outEdges(u,f))};function i(u,f){u[f]?u[f]++:u[f]=1}function o(u,f){--u[f]||delete u[f]}function s(u,f,p,h){var v=""+f,m=""+p;if(!u&&v>m){var g=v;v=m,m=g}return v+r+m+r+(e.isUndefined(h)?n:h)}function l(u,f,p,h){var v=""+f,m=""+p;if(!u&&v>m){var g=v;v=m,m=g}var b={v,w:m};return h&&(b.name=h),b}function c(u,f){return s(u,f.v,f.w,f.name)}return Li}var Mi,lf;function zm(){return lf||(lf=1,Mi="2.1.8"),Mi}var Bi,df;function $m(){return df||(df=1,Bi={Graph:Di(),version:zm()}),Bi}var Wi,ff;function Hm(){if(ff)return Wi;ff=1;var e=ye(),n=Di();Wi={write:t,read:i};function t(o){var s={options:{directed:o.isDirected(),multigraph:o.isMultigraph(),compound:o.isCompound()},nodes:r(o),edges:a(o)};return e.isUndefined(o.graph())||(s.value=e.clone(o.graph())),s}function r(o){return e.map(o.nodes(),function(s){var l=o.node(s),c=o.parent(s),u={v:s};return e.isUndefined(l)||(u.value=l),e.isUndefined(c)||(u.parent=c),u})}function a(o){return e.map(o.edges(),function(s){var l=o.edge(s),c={v:s.v,w:s.w};return e.isUndefined(s.name)||(c.name=s.name),e.isUndefined(l)||(c.value=l),c})}function i(o){var s=new n(o.options).setGraph(o.value);return e.each(o.nodes,function(l){s.setNode(l.v,l.value),l.parent&&s.setParent(l.v,l.parent)}),e.each(o.edges,function(l){s.setEdge({v:l.v,w:l.w,name:l.name},l.value)}),s}return Wi}var Fi,pf;function Km(){if(pf)return Fi;pf=1;var e=ye();Fi=n;function n(t){var r={},a=[],i;function o(s){e.has(r,s)||(r[s]=!0,i.push(s),e.each(t.successors(s),o),e.each(t.predecessors(s),o))}return e.each(t.nodes(),function(s){i=[],o(s),i.length&&a.push(i)}),a}return Fi}var zi,hf;function vf(){if(hf)return zi;hf=1;var e=ye();zi=n;function n(){this._arr=[],this._keyIndices={}}return n.prototype.size=function(){return this._arr.length},n.prototype.keys=function(){return this._arr.map(function(t){return t.key})},n.prototype.has=function(t){return e.has(this._keyIndices,t)},n.prototype.priority=function(t){var r=this._keyIndices[t];if(r!==void 0)return this._arr[r].priority},n.prototype.min=function(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key},n.prototype.add=function(t,r){var a=this._keyIndices;if(t=String(t),!e.has(a,t)){var i=this._arr,o=i.length;return a[t]=o,i.push({key:t,priority:r}),this._decrease(o),!0}return!1},n.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var t=this._arr.pop();return delete this._keyIndices[t.key],this._heapify(0),t.key},n.prototype.decrease=function(t,r){var a=this._keyIndices[t];if(r>this._arr[a].priority)throw new Error("New priority is greater than current priority. Key: "+t+" Old: "+this._arr[a].priority+" New: "+r);this._arr[a].priority=r,this._decrease(a)},n.prototype._heapify=function(t){var r=this._arr,a=2*t,i=a+1,o=t;a<r.length&&(o=r[a].priority<r[o].priority?a:o,i<r.length&&(o=r[i].priority<r[o].priority?i:o),o!==t&&(this._swap(t,o),this._heapify(o)))},n.prototype._decrease=function(t){for(var r=this._arr,a=r[t].priority,i;t!==0&&(i=t>>1,!(r[i].priority<a));)this._swap(t,i),t=i},n.prototype._swap=function(t,r){var a=this._arr,i=this._keyIndices,o=a[t],s=a[r];a[t]=s,a[r]=o,i[s.key]=t,i[o.key]=r},zi}var $i,mf;function gf(){if(mf)return $i;mf=1;var e=ye(),n=vf();$i=r;var t=e.constant(1);function r(i,o,s,l){return a(i,String(o),s||t,l||function(c){return i.outEdges(c)})}function a(i,o,s,l){var c={},u=new n,f,p,h=function(v){var m=v.v!==f?v.v:v.w,g=c[m],b=s(v),y=p.distance+b;if(b<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+v+" Weight: "+b);y<g.distance&&(g.distance=y,g.predecessor=f,u.decrease(m,y))};for(i.nodes().forEach(function(v){var m=v===o?0:Number.POSITIVE_INFINITY;c[v]={distance:m},u.add(v,m)});u.size()>0&&(f=u.removeMin(),p=c[f],p.distance!==Number.POSITIVE_INFINITY);)l(f).forEach(h);return c}return $i}var Hi,yf;function Um(){if(yf)return Hi;yf=1;var e=gf(),n=ye();Hi=t;function t(r,a,i){return n.transform(r.nodes(),function(o,s){o[s]=e(r,s,a,i)},{})}return Hi}var Ki,bf;function xf(){if(bf)return Ki;bf=1;var e=ye();Ki=n;function n(t){var r=0,a=[],i={},o=[];function s(l){var c=i[l]={onStack:!0,lowlink:r,index:r++};if(a.push(l),t.successors(l).forEach(function(p){e.has(i,p)?i[p].onStack&&(c.lowlink=Math.min(c.lowlink,i[p].index)):(s(p),c.lowlink=Math.min(c.lowlink,i[p].lowlink))}),c.lowlink===c.index){var u=[],f;do f=a.pop(),i[f].onStack=!1,u.push(f);while(l!==f);o.push(u)}}return t.nodes().forEach(function(l){e.has(i,l)||s(l)}),o}return Ki}var Ui,_f;function Jm(){if(_f)return Ui;_f=1;var e=ye(),n=xf();Ui=t;function t(r){return e.filter(n(r),function(a){return a.length>1||a.length===1&&r.hasEdge(a[0],a[0])})}return Ui}var Ji,kf;function Gm(){if(kf)return Ji;kf=1;var e=ye();Ji=t;var n=e.constant(1);function t(a,i,o){return r(a,i||n,o||function(s){return a.outEdges(s)})}function r(a,i,o){var s={},l=a.nodes();return l.forEach(function(c){s[c]={},s[c][c]={distance:0},l.forEach(function(u){c!==u&&(s[c][u]={distance:Number.POSITIVE_INFINITY})}),o(c).forEach(function(u){var f=u.v===c?u.w:u.v,p=i(u);s[c][f]={distance:p,predecessor:c}})}),l.forEach(function(c){var u=s[c];l.forEach(function(f){var p=s[f];l.forEach(function(h){var v=p[c],m=u[h],g=p[h],b=v.distance+m.distance;b<g.distance&&(g.distance=b,g.predecessor=m.predecessor)})})}),s}return Ji}var Gi,Sf;function Tf(){if(Sf)return Gi;Sf=1;var e=ye();Gi=n,n.CycleException=t;function n(r){var a={},i={},o=[];function s(l){if(e.has(i,l))throw new t;e.has(a,l)||(i[l]=!0,a[l]=!0,e.each(r.predecessors(l),s),delete i[l],o.push(l))}if(e.each(r.sinks(),s),e.size(a)!==r.nodeCount())throw new t;return o}function t(){}return t.prototype=new Error,Gi}var Vi,wf;function Vm(){if(wf)return Vi;wf=1;var e=Tf();Vi=n;function n(t){try{e(t)}catch(r){if(r instanceof e.CycleException)return!1;throw r}return!0}return Vi}var Yi,Nf;function Ef(){if(Nf)return Yi;Nf=1;var e=ye();Yi=n;function n(r,a,i){e.isArray(a)||(a=[a]);var o=(r.isDirected()?r.successors:r.neighbors).bind(r),s=[],l={};return e.each(a,function(c){if(!r.hasNode(c))throw new Error("Graph does not have node: "+c);t(r,c,i==="post",l,o,s)}),s}function t(r,a,i,o,s,l){e.has(o,a)||(o[a]=!0,i||l.push(a),e.each(s(a),function(c){t(r,c,i,o,s,l)}),i&&l.push(a))}return Yi}var Xi,Cf;function Ym(){if(Cf)return Xi;Cf=1;var e=Ef();Xi=n;function n(t,r){return e(t,r,"post")}return Xi}var Zi,If;function Xm(){if(If)return Zi;If=1;var e=Ef();Zi=n;function n(t,r){return e(t,r,"pre")}return Zi}var Qi,Rf;function Zm(){if(Rf)return Qi;Rf=1;var e=ye(),n=Di(),t=vf();Qi=r;function r(a,i){var o=new n,s={},l=new t,c;function u(p){var h=p.v===c?p.w:p.v,v=l.priority(h);if(v!==void 0){var m=i(p);m<v&&(s[h]=c,l.decrease(h,m))}}if(a.nodeCount()===0)return o;e.each(a.nodes(),function(p){l.add(p,Number.POSITIVE_INFINITY),o.setNode(p)}),l.decrease(a.nodes()[0],0);for(var f=!1;l.size()>0;){if(c=l.removeMin(),e.has(s,c))o.setEdge(c,s[c]);else{if(f)throw new Error("Input graph is not connected: "+a);f=!0}a.nodeEdges(c).forEach(u)}return o}return Qi}var eo,Of;function Qm(){return Of||(Of=1,eo={components:Km(),dijkstra:gf(),dijkstraAll:Um(),findCycles:Jm(),floydWarshall:Gm(),isAcyclic:Vm(),postorder:Ym(),preorder:Xm(),prim:Zm(),tarjan:xf(),topsort:Tf()}),eo}var ro,jf;function eg(){if(jf)return ro;jf=1;var e=$m();return ro={Graph:e.Graph,json:Hm(),alg:Qm(),version:e.version},ro}var to,Pf;function ke(){if(Pf)return to;Pf=1;var e;if(typeof $r=="function")try{e=eg()}catch{}return e||(e=window.graphlib),to=e,to}var no,qf;function rg(){if(qf)return no;qf=1;var e=nl(),n=1,t=4;function r(a){return e(a,n|t)}return no=r,no}var ao,Af;function qr(){if(Af)return ao;Af=1;var e=Ke(),n=Ce(),t=wr(),r=ge();function a(i,o,s){if(!r(s))return!1;var l=typeof o;return(l=="number"?n(s)&&t(o,s.length):l=="string"&&o in s)?e(s[o],i):!1}return ao=a,ao}var io,Lf;function tg(){if(Lf)return io;Lf=1;var e=Pr(),n=Ke(),t=qr(),r=Me(),a=Object.prototype,i=a.hasOwnProperty,o=e(function(s,l){s=Object(s);var c=-1,u=l.length,f=u>2?l[2]:void 0;for(f&&t(l[0],l[1],f)&&(u=1);++c<u;)for(var p=l[c],h=r(p),v=-1,m=h.length;++v<m;){var g=h[v],b=s[g];(b===void 0||n(b,a[g])&&!i.call(s,g))&&(s[g]=p[g])}return s});return io=o,io}var oo,Df;function ng(){if(Df)return oo;Df=1;var e=Ie(),n=Ce(),t=je();function r(a){return function(i,o,s){var l=Object(i);if(!n(i)){var c=e(o,3);i=t(i),o=function(f){return c(l[f],f,l)}}var u=a(i,o,s);return u>-1?l[c?i[u]:u]:void 0}}return oo=r,oo}var so,Mf;function ag(){if(Mf)return so;Mf=1;var e=/\s/;function n(t){for(var r=t.length;r--&&e.test(t.charAt(r)););return r}return so=n,so}var uo,Bf;function ig(){if(Bf)return uo;Bf=1;var e=ag(),n=/^\s+/;function t(r){return r&&r.slice(0,e(r)+1).replace(n,"")}return uo=t,uo}var co,Wf;function og(){if(Wf)return co;Wf=1;var e=ig(),n=ge(),t=Ve(),r=NaN,a=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,o=/^0o[0-7]+$/i,s=parseInt;function l(c){if(typeof c=="number")return c;if(t(c))return r;if(n(c)){var u=typeof c.valueOf=="function"?c.valueOf():c;c=n(u)?u+"":u}if(typeof c!="string")return c===0?c:+c;c=e(c);var f=i.test(c);return f||o.test(c)?s(c.slice(2),f?2:8):a.test(c)?r:+c}return co=l,co}var lo,Ff;function zf(){if(Ff)return lo;Ff=1;var e=og(),n=1/0,t=17976931348623157e292;function r(a){if(!a)return a===0?a:0;if(a=e(a),a===n||a===-n){var i=a<0?-1:1;return i*t}return a===a?a:0}return lo=r,lo}var fo,$f;function sg(){if($f)return fo;$f=1;var e=zf();function n(t){var r=e(t),a=r%1;return r===r?a?r-a:r:0}return fo=n,fo}var po,Hf;function ug(){if(Hf)return po;Hf=1;var e=Ud(),n=Ie(),t=sg(),r=Math.max;function a(i,o,s){var l=i==null?0:i.length;if(!l)return-1;var c=s==null?0:t(s);return c<0&&(c=r(l+c,0)),e(i,n(o,3),c)}return po=a,po}var ho,Kf;function cg(){if(Kf)return ho;Kf=1;var e=ng(),n=ug(),t=e(n);return ho=t,ho}var vo,Uf;function Jf(){if(Uf)return vo;Uf=1;var e=vi();function n(t){var r=t==null?0:t.length;return r?e(t,1):[]}return vo=n,vo}var mo,Gf;function lg(){if(Gf)return mo;Gf=1;var e=ra(),n=pl(),t=Me();function r(a,i){return a==null?a:e(a,n(i),t)}return mo=r,mo}var go,Vf;function dg(){if(Vf)return go;Vf=1;function e(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}return go=e,go}var yo,Yf;function fg(){if(Yf)return yo;Yf=1;var e=Sr(),n=na(),t=Ie();function r(a,i){var o={};return i=t(i,3),n(a,function(s,l,c){e(o,l,i(s,l,c))}),o}return yo=r,yo}var bo,Xf;function xo(){if(Xf)return bo;Xf=1;var e=Ve();function n(t,r,a){for(var i=-1,o=t.length;++i<o;){var s=t[i],l=r(s);if(l!=null&&(c===void 0?l===l&&!e(l):a(l,c)))var c=l,u=s}return u}return bo=n,bo}var _o,Zf;function pg(){if(Zf)return _o;Zf=1;function e(n,t){return n>t}return _o=e,_o}var ko,Qf;function hg(){if(Qf)return ko;Qf=1;var e=xo(),n=pg(),t=Be();function r(a){return a&&a.length?e(a,t,n):void 0}return ko=r,ko}var So,ep;function rp(){if(ep)return So;ep=1;var e=Sr(),n=Ke();function t(r,a,i){(i!==void 0&&!n(r[a],i)||i===void 0&&!(a in r))&&e(r,a,i)}return So=t,So}var To,tp;function vg(){if(tp)return To;tp=1;var e=Le(),n=Cr(),t=we(),r="[object Object]",a=Function.prototype,i=Object.prototype,o=a.toString,s=i.hasOwnProperty,l=o.call(Object);function c(u){if(!t(u)||e(u)!=r)return!1;var f=n(u);if(f===null)return!0;var p=s.call(f,"constructor")&&f.constructor;return typeof p=="function"&&p instanceof p&&o.call(p)==l}return To=c,To}var wo,np;function ap(){if(np)return wo;np=1;function e(n,t){if(!(t==="constructor"&&typeof n[t]=="function")&&t!="__proto__")return n[t]}return wo=e,wo}var No,ip;function mg(){if(ip)return No;ip=1;var e=nr(),n=Me();function t(r){return e(r,n(r))}return No=t,No}var Eo,op;function gg(){if(op)return Eo;op=1;var e=rp(),n=pc(),t=Uc(),r=vc(),a=Xc(),i=ar(),o=ce(),s=tf(),l=Je(),c=tr(),u=ge(),f=vg(),p=sr(),h=ap(),v=mg();function m(g,b,y,x,_,E,T){var N=h(g,y),C=h(b,y),I=T.get(C);if(I){e(g,y,I);return}var P=E?E(N,C,y+"",g,b,T):void 0,D=P===void 0;if(D){var F=o(C),R=!F&&l(C),k=!F&&!R&&p(C);P=C,F||R||k?o(N)?P=N:s(N)?P=r(N):R?(D=!1,P=n(C,!0)):k?(D=!1,P=t(C,!0)):P=[]:f(C)||i(C)?(P=N,i(N)?P=v(N):(!u(N)||c(N))&&(P=a(C))):D=!1}D&&(T.set(C,P),_(P,C,x,E,T),T.delete(C)),e(g,y,P)}return Eo=m,Eo}var Co,sp;function yg(){if(sp)return Co;sp=1;var e=kr(),n=rp(),t=ra(),r=gg(),a=ge(),i=Me(),o=ap();function s(l,c,u,f,p){l!==c&&t(c,function(h,v){if(p||(p=new e),a(h))r(l,c,v,u,s,f,p);else{var m=f?f(o(l,v),h,v+"",l,c,p):void 0;m===void 0&&(m=h),n(l,v,m)}},i)}return Co=s,Co}var Io,up;function bg(){if(up)return Io;up=1;var e=Pr(),n=qr();function t(r){return e(function(a,i){var o=-1,s=i.length,l=s>1?i[s-1]:void 0,c=s>2?i[2]:void 0;for(l=r.length>3&&typeof l=="function"?(s--,l):void 0,c&&n(i[0],i[1],c)&&(l=s<3?void 0:l,s=1),a=Object(a);++o<s;){var u=i[o];u&&r(a,u,o,l)}return a})}return Io=t,Io}var Ro,cp;function xg(){if(cp)return Ro;cp=1;var e=yg(),n=bg(),t=n(function(r,a,i){e(r,a,i)});return Ro=t,Ro}var Oo,lp;function dp(){if(lp)return Oo;lp=1;function e(n,t){return n<t}return Oo=e,Oo}var jo,fp;function _g(){if(fp)return jo;fp=1;var e=xo(),n=dp(),t=Be();function r(a){return a&&a.length?e(a,t,n):void 0}return jo=r,jo}var Po,pp;function kg(){if(pp)return Po;pp=1;var e=xo(),n=Ie(),t=dp();function r(a,i){return a&&a.length?e(a,n(i,2),t):void 0}return Po=r,Po}var qo,hp;function Sg(){if(hp)return qo;hp=1;var e=_e(),n=function(){return e.Date.now()};return qo=n,qo}var Ao,vp;function Tg(){if(vp)return Ao;vp=1;var e=Tr(),n=Or(),t=wr(),r=ge(),a=cr();function i(o,s,l,c){if(!r(o))return o;s=n(s,o);for(var u=-1,f=s.length,p=f-1,h=o;h!=null&&++u<f;){var v=a(s[u]),m=l;if(v==="__proto__"||v==="constructor"||v==="prototype")return o;if(u!=p){var g=h[v];m=c?c(g,v,h):void 0,m===void 0&&(m=r(g)?g:t(s[u+1])?[]:{})}e(h,v,m),h=h[v]}return o}return Ao=i,Ao}var Lo,mp;function wg(){if(mp)return Lo;mp=1;var e=jr(),n=Tg(),t=Or();function r(a,i,o){for(var s=-1,l=i.length,c={};++s<l;){var u=i[s],f=e(a,u);o(f,u)&&n(c,t(u,a),f)}return c}return Lo=r,Lo}var Do,gp;function Ng(){if(gp)return Do;gp=1;var e=wg(),n=id();function t(r,a){return e(r,a,function(i,o){return n(r,o)})}return Do=t,Do}var Mo,yp;function Eg(){if(yp)return Mo;yp=1;var e=Jf(),n=Bd(),t=$d();function r(a){return t(n(a,void 0,e),a+"")}return Mo=r,Mo}var Bo,bp;function Cg(){if(bp)return Bo;bp=1;var e=Ng(),n=Eg(),t=n(function(r,a){return r==null?{}:e(r,a)});return Bo=t,Bo}var Wo,xp;function Ig(){if(xp)return Wo;xp=1;var e=Math.ceil,n=Math.max;function t(r,a,i,o){for(var s=-1,l=n(e((a-r)/(i||1)),0),c=Array(l);l--;)c[o?l:++s]=r,r+=i;return c}return Wo=t,Wo}var Fo,_p;function Rg(){if(_p)return Fo;_p=1;var e=Ig(),n=qr(),t=zf();function r(a){return function(i,o,s){return s&&typeof s!="number"&&n(i,o,s)&&(o=s=void 0),i=t(i),o===void 0?(o=i,i=0):o=t(o),s=s===void 0?i<o?1:-1:t(s),e(i,o,s,a)}}return Fo=r,Fo}var zo,kp;function Og(){if(kp)return zo;kp=1;var e=Rg(),n=e();return zo=n,zo}var $o,Sp;function jg(){if(Sp)return $o;Sp=1;function e(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].value;return n}return $o=e,$o}var Ho,Tp;function Pg(){if(Tp)return Ho;Tp=1;var e=Ve();function n(t,r){if(t!==r){var a=t!==void 0,i=t===null,o=t===t,s=e(t),l=r!==void 0,c=r===null,u=r===r,f=e(r);if(!c&&!f&&!s&&t>r||s&&l&&u&&!c&&!f||i&&l&&u||!a&&u||!o)return 1;if(!i&&!s&&!f&&t<r||f&&a&&o&&!i&&!s||c&&a&&o||!l&&o||!u)return-1}return 0}return Ho=n,Ho}var Ko,wp;function qg(){if(wp)return Ko;wp=1;var e=Pg();function n(t,r,a){for(var i=-1,o=t.criteria,s=r.criteria,l=o.length,c=a.length;++i<l;){var u=e(o[i],s[i]);if(u){if(i>=c)return u;var f=a[i];return u*(f=="desc"?-1:1)}}return t.index-r.index}return Ko=n,Ko}var Uo,Np;function Ag(){if(Np)return Uo;Np=1;var e=Rr(),n=jr(),t=Ie(),r=_d(),a=jg(),i=Nr(),o=qg(),s=Be(),l=ce();function c(u,f,p){f.length?f=e(f,function(m){return l(m)?function(g){return n(g,m.length===1?m[0]:m)}:m}):f=[s];var h=-1;f=e(f,i(t));var v=r(u,function(m,g,b){var y=e(f,function(x){return x(m)});return{criteria:y,index:++h,value:m}});return a(v,function(m,g){return o(m,g,p)})}return Uo=c,Uo}var Jo,Ep;function Lg(){if(Ep)return Jo;Ep=1;var e=vi(),n=Ag(),t=Pr(),r=qr(),a=t(function(i,o){if(i==null)return[];var s=o.length;return s>1&&r(i,o[0],o[1])?o=[]:s>2&&r(o[0],o[1],o[2])&&(o=[o[0]]),n(i,e(o,1),[])});return Jo=a,Jo}var Go,Cp;function Dg(){if(Cp)return Go;Cp=1;var e=Yl(),n=0;function t(r){var a=++n;return e(r)+a}return Go=t,Go}var Vo,Ip;function Mg(){if(Ip)return Vo;Ip=1;function e(n,t,r){for(var a=-1,i=n.length,o=t.length,s={};++a<i;){var l=a<o?t[a]:void 0;r(s,n[a],l)}return s}return Vo=e,Vo}var Yo,Rp;function Bg(){if(Rp)return Yo;Rp=1;var e=Tr(),n=Mg();function t(r,a){return n(r||[],a||[],e)}return Yo=t,Yo}var Xo,Op;function oe(){if(Op)return Xo;Op=1;var e;if(typeof $r=="function")try{e={cloneDeep:rg(),constant:Zn(),defaults:tg(),each:gl(),filter:pd(),find:cg(),flatten:Jf(),forEach:vl(),forIn:lg(),has:md(),isUndefined:bd(),last:dg(),map:Sd(),mapValues:fg(),max:hg(),merge:xg(),min:_g(),minBy:kg(),now:Sg(),pick:Cg(),range:Og(),reduce:Ed(),sortBy:Lg(),uniqueId:Dg(),values:sf(),zipObject:Bg()}}catch{}return e||(e=window._),Xo=e,Xo}var Zo,jp;function Wg(){if(jp)return Zo;jp=1,Zo=e;function e(){var r={};r._next=r._prev=r,this._sentinel=r}e.prototype.dequeue=function(){var r=this._sentinel,a=r._prev;if(a!==r)return n(a),a},e.prototype.enqueue=function(r){var a=this._sentinel;r._prev&&r._next&&n(r),r._next=a._next,a._next._prev=r,a._next=r,r._prev=a},e.prototype.toString=function(){for(var r=[],a=this._sentinel,i=a._prev;i!==a;)r.push(JSON.stringify(i,t)),i=i._prev;return"["+r.join(", ")+"]"};function n(r){r._prev._next=r._next,r._next._prev=r._prev,delete r._next,delete r._prev}function t(r,a){if(r!=="_next"&&r!=="_prev")return a}return Zo}var Qo,Pp;function Fg(){if(Pp)return Qo;Pp=1;var e=oe(),n=ke().Graph,t=Wg();Qo=a;var r=e.constant(1);function a(c,u){if(c.nodeCount()<=1)return[];var f=s(c,u||r),p=i(f.graph,f.buckets,f.zeroIdx);return e.flatten(e.map(p,function(h){return c.outEdges(h.v,h.w)}),!0)}function i(c,u,f){for(var p=[],h=u[u.length-1],v=u[0],m;c.nodeCount();){for(;m=v.dequeue();)o(c,u,f,m);for(;m=h.dequeue();)o(c,u,f,m);if(c.nodeCount()){for(var g=u.length-2;g>0;--g)if(m=u[g].dequeue(),m){p=p.concat(o(c,u,f,m,!0));break}}}return p}function o(c,u,f,p,h){var v=h?[]:void 0;return e.forEach(c.inEdges(p.v),function(m){var g=c.edge(m),b=c.node(m.v);h&&v.push({v:m.v,w:m.w}),b.out-=g,l(u,f,b)}),e.forEach(c.outEdges(p.v),function(m){var g=c.edge(m),b=m.w,y=c.node(b);y.in-=g,l(u,f,y)}),c.removeNode(p.v),v}function s(c,u){var f=new n,p=0,h=0;e.forEach(c.nodes(),function(g){f.setNode(g,{v:g,in:0,out:0})}),e.forEach(c.edges(),function(g){var b=f.edge(g.v,g.w)||0,y=u(g),x=b+y;f.setEdge(g.v,g.w,x),h=Math.max(h,f.node(g.v).out+=y),p=Math.max(p,f.node(g.w).in+=y)});var v=e.range(h+p+3).map(function(){return new t}),m=p+1;return e.forEach(f.nodes(),function(g){l(v,m,f.node(g))}),{graph:f,buckets:v,zeroIdx:m}}function l(c,u,f){f.out?f.in?c[f.out-f.in+u].enqueue(f):c[c.length-1].enqueue(f):c[0].enqueue(f)}return Qo}var es,qp;function zg(){if(qp)return es;qp=1;var e=oe(),n=Fg();es={run:t,undo:a};function t(i){var o=i.graph().acyclicer==="greedy"?n(i,s(i)):r(i);e.forEach(o,function(l){var c=i.edge(l);i.removeEdge(l),c.forwardName=l.name,c.reversed=!0,i.setEdge(l.w,l.v,c,e.uniqueId("rev"))});function s(l){return function(c){return l.edge(c).weight}}}function r(i){var o=[],s={},l={};function c(u){e.has(l,u)||(l[u]=!0,s[u]=!0,e.forEach(i.outEdges(u),function(f){e.has(s,f.w)?o.push(f):c(f.w)}),delete s[u])}return e.forEach(i.nodes(),c),o}function a(i){e.forEach(i.edges(),function(o){var s=i.edge(o);if(s.reversed){i.removeEdge(o);var l=s.forwardName;delete s.reversed,delete s.forwardName,i.setEdge(o.w,o.v,s,l)}})}return es}var rs,Ap;function pe(){if(Ap)return rs;Ap=1;var e=oe(),n=ke().Graph;rs={addDummyNode:t,simplify:r,asNonCompoundGraph:a,successorWeights:i,predecessorWeights:o,intersectRect:s,buildLayerMatrix:l,normalizeRanks:c,removeEmptyRanks:u,addBorderNode:f,maxRank:p,partition:h,time:v,notime:m};function t(g,b,y,x){var _;do _=e.uniqueId(x);while(g.hasNode(_));return y.dummy=b,g.setNode(_,y),_}function r(g){var b=new n().setGraph(g.graph());return e.forEach(g.nodes(),function(y){b.setNode(y,g.node(y))}),e.forEach(g.edges(),function(y){var x=b.edge(y.v,y.w)||{weight:0,minlen:1},_=g.edge(y);b.setEdge(y.v,y.w,{weight:x.weight+_.weight,minlen:Math.max(x.minlen,_.minlen)})}),b}function a(g){var b=new n({multigraph:g.isMultigraph()}).setGraph(g.graph());return e.forEach(g.nodes(),function(y){g.children(y).length||b.setNode(y,g.node(y))}),e.forEach(g.edges(),function(y){b.setEdge(y,g.edge(y))}),b}function i(g){var b=e.map(g.nodes(),function(y){var x={};return e.forEach(g.outEdges(y),function(_){x[_.w]=(x[_.w]||0)+g.edge(_).weight}),x});return e.zipObject(g.nodes(),b)}function o(g){var b=e.map(g.nodes(),function(y){var x={};return e.forEach(g.inEdges(y),function(_){x[_.v]=(x[_.v]||0)+g.edge(_).weight}),x});return e.zipObject(g.nodes(),b)}function s(g,b){var y=g.x,x=g.y,_=b.x-y,E=b.y-x,T=g.width/2,N=g.height/2;if(!_&&!E)throw new Error("Not possible to find intersection inside of the rectangle");var C,I;return Math.abs(E)*T>Math.abs(_)*N?(E<0&&(N=-N),C=N*_/E,I=N):(_<0&&(T=-T),C=T,I=T*E/_),{x:y+C,y:x+I}}function l(g){var b=e.map(e.range(p(g)+1),function(){return[]});return e.forEach(g.nodes(),function(y){var x=g.node(y),_=x.rank;e.isUndefined(_)||(b[_][x.order]=y)}),b}function c(g){var b=e.min(e.map(g.nodes(),function(y){return g.node(y).rank}));e.forEach(g.nodes(),function(y){var x=g.node(y);e.has(x,"rank")&&(x.rank-=b)})}function u(g){var b=e.min(e.map(g.nodes(),function(E){return g.node(E).rank})),y=[];e.forEach(g.nodes(),function(E){var T=g.node(E).rank-b;y[T]||(y[T]=[]),y[T].push(E)});var x=0,_=g.graph().nodeRankFactor;e.forEach(y,function(E,T){e.isUndefined(E)&&T%_!==0?--x:x&&e.forEach(E,function(N){g.node(N).rank+=x})})}function f(g,b,y,x){var _={width:0,height:0};return arguments.length>=4&&(_.rank=y,_.order=x),t(g,"border",_,b)}function p(g){return e.max(e.map(g.nodes(),function(b){var y=g.node(b).rank;if(!e.isUndefined(y))return y}))}function h(g,b){var y={lhs:[],rhs:[]};return e.forEach(g,function(x){b(x)?y.lhs.push(x):y.rhs.push(x)}),y}function v(g,b){var y=e.now();try{return b()}finally{console.log(g+" time: "+(e.now()-y)+"ms")}}function m(g,b){return b()}return rs}var ts,Lp;function $g(){if(Lp)return ts;Lp=1;var e=oe(),n=pe();ts={run:t,undo:a};function t(i){i.graph().dummyChains=[],e.forEach(i.edges(),function(o){r(i,o)})}function r(i,o){var s=o.v,l=i.node(s).rank,c=o.w,u=i.node(c).rank,f=o.name,p=i.edge(o),h=p.labelRank;if(u!==l+1){i.removeEdge(o);var v,m,g;for(g=0,++l;l<u;++g,++l)p.points=[],m={width:0,height:0,edgeLabel:p,edgeObj:o,rank:l},v=n.addDummyNode(i,"edge",m,"_d"),l===h&&(m.width=p.width,m.height=p.height,m.dummy="edge-label",m.labelpos=p.labelpos),i.setEdge(s,v,{weight:p.weight},f),g===0&&i.graph().dummyChains.push(v),s=v;i.setEdge(s,c,{weight:p.weight},f)}}function a(i){e.forEach(i.graph().dummyChains,function(o){var s=i.node(o),l=s.edgeLabel,c;for(i.setEdge(s.edgeObj,l);s.dummy;)c=i.successors(o)[0],i.removeNode(o),l.points.push({x:s.x,y:s.y}),s.dummy==="edge-label"&&(l.x=s.x,l.y=s.y,l.width=s.width,l.height=s.height),o=c,s=i.node(o)})}return ts}var ns,Dp;function Ar(){if(Dp)return ns;Dp=1;var e=oe();ns={longestPath:n,slack:t};function n(r){var a={};function i(o){var s=r.node(o);if(e.has(a,o))return s.rank;a[o]=!0;var l=e.min(e.map(r.outEdges(o),function(c){return i(c.w)-r.edge(c).minlen}));return(l===Number.POSITIVE_INFINITY||l===void 0||l===null)&&(l=0),s.rank=l}e.forEach(r.sources(),i)}function t(r,a){return r.node(a.w).rank-r.node(a.v).rank-r.edge(a).minlen}return ns}var as,Mp;function Bp(){if(Mp)return as;Mp=1;var e=oe(),n=ke().Graph,t=Ar().slack;as=r;function r(s){var l=new n({directed:!1}),c=s.nodes()[0],u=s.nodeCount();l.setNode(c,{});for(var f,p;a(l,s)<u;)f=i(l,s),p=l.hasNode(f.v)?t(s,f):-t(s,f),o(l,s,p);return l}function a(s,l){function c(u){e.forEach(l.nodeEdges(u),function(f){var p=f.v,h=u===p?f.w:p;!s.hasNode(h)&&!t(l,f)&&(s.setNode(h,{}),s.setEdge(u,h,{}),c(h))})}return e.forEach(s.nodes(),c),s.nodeCount()}function i(s,l){return e.minBy(l.edges(),function(c){if(s.hasNode(c.v)!==s.hasNode(c.w))return t(l,c)})}function o(s,l,c){e.forEach(s.nodes(),function(u){l.node(u).rank+=c})}return as}var is,Wp;function Hg(){if(Wp)return is;Wp=1;var e=oe(),n=Bp(),t=Ar().slack,r=Ar().longestPath,a=ke().alg.preorder,i=ke().alg.postorder,o=pe().simplify;is=s,s.initLowLimValues=f,s.initCutValues=l,s.calcCutValue=u,s.leaveEdge=h,s.enterEdge=v,s.exchangeEdges=m;function s(x){x=o(x),r(x);var _=n(x);f(_),l(_,x);for(var E,T;E=h(_);)T=v(_,x,E),m(_,x,E,T)}function l(x,_){var E=i(x,x.nodes());E=E.slice(0,E.length-1),e.forEach(E,function(T){c(x,_,T)})}function c(x,_,E){var T=x.node(E),N=T.parent;x.edge(E,N).cutvalue=u(x,_,E)}function u(x,_,E){var T=x.node(E),N=T.parent,C=!0,I=_.edge(E,N),P=0;return I||(C=!1,I=_.edge(N,E)),P=I.weight,e.forEach(_.nodeEdges(E),function(D){var F=D.v===E,R=F?D.w:D.v;if(R!==N){var k=F===C,W=_.edge(D).weight;if(P+=k?W:-W,b(x,E,R)){var z=x.edge(E,R).cutvalue;P+=k?-z:z}}}),P}function f(x,_){arguments.length<2&&(_=x.nodes()[0]),p(x,{},1,_)}function p(x,_,E,T,N){var C=E,I=x.node(T);return _[T]=!0,e.forEach(x.neighbors(T),function(P){e.has(_,P)||(E=p(x,_,E,P,T))}),I.low=C,I.lim=E++,N?I.parent=N:delete I.parent,E}function h(x){return e.find(x.edges(),function(_){return x.edge(_).cutvalue<0})}function v(x,_,E){var T=E.v,N=E.w;_.hasEdge(T,N)||(T=E.w,N=E.v);var C=x.node(T),I=x.node(N),P=C,D=!1;C.lim>I.lim&&(P=I,D=!0);var F=e.filter(_.edges(),function(R){return D===y(x,x.node(R.v),P)&&D!==y(x,x.node(R.w),P)});return e.minBy(F,function(R){return t(_,R)})}function m(x,_,E,T){var N=E.v,C=E.w;x.removeEdge(N,C),x.setEdge(T.v,T.w,{}),f(x),l(x,_),g(x,_)}function g(x,_){var E=e.find(x.nodes(),function(N){return!_.node(N).parent}),T=a(x,E);T=T.slice(1),e.forEach(T,function(N){var C=x.node(N).parent,I=_.edge(N,C),P=!1;I||(I=_.edge(C,N),P=!0),_.node(N).rank=_.node(C).rank+(P?I.minlen:-I.minlen)})}function b(x,_,E){return x.hasEdge(_,E)}function y(x,_,E){return E.low<=_.lim&&_.lim<=E.lim}return is}var os,Fp;function Kg(){if(Fp)return os;Fp=1;var e=Ar(),n=e.longestPath,t=Bp(),r=Hg();os=a;function a(l){switch(l.graph().ranker){case"network-simplex":s(l);break;case"tight-tree":o(l);break;case"longest-path":i(l);break;default:s(l)}}var i=n;function o(l){n(l),t(l)}function s(l){r(l)}return os}var ss,zp;function Ug(){if(zp)return ss;zp=1;var e=oe();ss=n;function n(a){var i=r(a);e.forEach(a.graph().dummyChains,function(o){for(var s=a.node(o),l=s.edgeObj,c=t(a,i,l.v,l.w),u=c.path,f=c.lca,p=0,h=u[p],v=!0;o!==l.w;){if(s=a.node(o),v){for(;(h=u[p])!==f&&a.node(h).maxRank<s.rank;)p++;h===f&&(v=!1)}if(!v){for(;p<u.length-1&&a.node(h=u[p+1]).minRank<=s.rank;)p++;h=u[p]}a.setParent(o,h),o=a.successors(o)[0]}})}function t(a,i,o,s){var l=[],c=[],u=Math.min(i[o].low,i[s].low),f=Math.max(i[o].lim,i[s].lim),p,h;p=o;do p=a.parent(p),l.push(p);while(p&&(i[p].low>u||f>i[p].lim));for(h=p,p=s;(p=a.parent(p))!==h;)c.push(p);return{path:l.concat(c.reverse()),lca:h}}function r(a){var i={},o=0;function s(l){var c=o;e.forEach(a.children(l),s),i[l]={low:c,lim:o++}}return e.forEach(a.children(),s),i}return ss}var us,$p;function Jg(){if($p)return us;$p=1;var e=oe(),n=pe();us={run:t,cleanup:o};function t(s){var l=n.addDummyNode(s,"root",{},"_root"),c=a(s),u=e.max(e.values(c))-1,f=2*u+1;s.graph().nestingRoot=l,e.forEach(s.edges(),function(h){s.edge(h).minlen*=f});var p=i(s)+1;e.forEach(s.children(),function(h){r(s,l,f,p,u,c,h)}),s.graph().nodeRankFactor=f}function r(s,l,c,u,f,p,h){var v=s.children(h);if(!v.length){h!==l&&s.setEdge(l,h,{weight:0,minlen:c});return}var m=n.addBorderNode(s,"_bt"),g=n.addBorderNode(s,"_bb"),b=s.node(h);s.setParent(m,h),b.borderTop=m,s.setParent(g,h),b.borderBottom=g,e.forEach(v,function(y){r(s,l,c,u,f,p,y);var x=s.node(y),_=x.borderTop?x.borderTop:y,E=x.borderBottom?x.borderBottom:y,T=x.borderTop?u:2*u,N=_!==E?1:f-p[h]+1;s.setEdge(m,_,{weight:T,minlen:N,nestingEdge:!0}),s.setEdge(E,g,{weight:T,minlen:N,nestingEdge:!0})}),s.parent(h)||s.setEdge(l,m,{weight:0,minlen:f+p[h]})}function a(s){var l={};function c(u,f){var p=s.children(u);p&&p.length&&e.forEach(p,function(h){c(h,f+1)}),l[u]=f}return e.forEach(s.children(),function(u){c(u,1)}),l}function i(s){return e.reduce(s.edges(),function(l,c){return l+s.edge(c).weight},0)}function o(s){var l=s.graph();s.removeNode(l.nestingRoot),delete l.nestingRoot,e.forEach(s.edges(),function(c){var u=s.edge(c);u.nestingEdge&&s.removeEdge(c)})}return us}var cs,Hp;function Gg(){if(Hp)return cs;Hp=1;var e=oe(),n=pe();cs=t;function t(a){function i(o){var s=a.children(o),l=a.node(o);if(s.length&&e.forEach(s,i),e.has(l,"minRank")){l.borderLeft=[],l.borderRight=[];for(var c=l.minRank,u=l.maxRank+1;c<u;++c)r(a,"borderLeft","_bl",o,l,c),r(a,"borderRight","_br",o,l,c)}}e.forEach(a.children(),i)}function r(a,i,o,s,l,c){var u={width:0,height:0,rank:c,borderType:i},f=l[i][c-1],p=n.addDummyNode(a,"border",u,o);l[i][c]=p,a.setParent(p,s),f&&a.setEdge(f,p,{weight:1})}return cs}var ls,Kp;function Vg(){if(Kp)return ls;Kp=1;var e=oe();ls={adjust:n,undo:t};function n(c){var u=c.graph().rankdir.toLowerCase();(u==="lr"||u==="rl")&&r(c)}function t(c){var u=c.graph().rankdir.toLowerCase();(u==="bt"||u==="rl")&&i(c),(u==="lr"||u==="rl")&&(s(c),r(c))}function r(c){e.forEach(c.nodes(),function(u){a(c.node(u))}),e.forEach(c.edges(),function(u){a(c.edge(u))})}function a(c){var u=c.width;c.width=c.height,c.height=u}function i(c){e.forEach(c.nodes(),function(u){o(c.node(u))}),e.forEach(c.edges(),function(u){var f=c.edge(u);e.forEach(f.points,o),e.has(f,"y")&&o(f)})}function o(c){c.y=-c.y}function s(c){e.forEach(c.nodes(),function(u){l(c.node(u))}),e.forEach(c.edges(),function(u){var f=c.edge(u);e.forEach(f.points,l),e.has(f,"x")&&l(f)})}function l(c){var u=c.x;c.x=c.y,c.y=u}return ls}var ds,Up;function Yg(){if(Up)return ds;Up=1;var e=oe();ds=n;function n(t){var r={},a=e.filter(t.nodes(),function(c){return!t.children(c).length}),i=e.max(e.map(a,function(c){return t.node(c).rank})),o=e.map(e.range(i+1),function(){return[]});function s(c){if(!e.has(r,c)){r[c]=!0;var u=t.node(c);o[u.rank].push(c),e.forEach(t.successors(c),s)}}var l=e.sortBy(a,function(c){return t.node(c).rank});return e.forEach(l,s),o}return ds}var fs,Jp;function Xg(){if(Jp)return fs;Jp=1;var e=oe();fs=n;function n(r,a){for(var i=0,o=1;o<a.length;++o)i+=t(r,a[o-1],a[o]);return i}function t(r,a,i){for(var o=e.zipObject(i,e.map(i,function(p,h){return h})),s=e.flatten(e.map(a,function(p){return e.sortBy(e.map(r.outEdges(p),function(h){return{pos:o[h.w],weight:r.edge(h).weight}}),"pos")}),!0),l=1;l<i.length;)l<<=1;var c=2*l-1;l-=1;var u=e.map(new Array(c),function(){return 0}),f=0;return e.forEach(s.forEach(function(p){var h=p.pos+l;u[h]+=p.weight;for(var v=0;h>0;)h%2&&(v+=u[h+1]),h=h-1>>1,u[h]+=p.weight;f+=p.weight*v})),f}return fs}var ps,Gp;function Zg(){if(Gp)return ps;Gp=1;var e=oe();ps=n;function n(t,r){return e.map(r,function(a){var i=t.inEdges(a);if(i.length){var o=e.reduce(i,function(s,l){var c=t.edge(l),u=t.node(l.v);return{sum:s.sum+c.weight*u.order,weight:s.weight+c.weight}},{sum:0,weight:0});return{v:a,barycenter:o.sum/o.weight,weight:o.weight}}else return{v:a}})}return ps}var hs,Vp;function Qg(){if(Vp)return hs;Vp=1;var e=oe();hs=n;function n(a,i){var o={};e.forEach(a,function(l,c){var u=o[l.v]={indegree:0,in:[],out:[],vs:[l.v],i:c};e.isUndefined(l.barycenter)||(u.barycenter=l.barycenter,u.weight=l.weight)}),e.forEach(i.edges(),function(l){var c=o[l.v],u=o[l.w];!e.isUndefined(c)&&!e.isUndefined(u)&&(u.indegree++,c.out.push(o[l.w]))});var s=e.filter(o,function(l){return!l.indegree});return t(s)}function t(a){var i=[];function o(c){return function(u){u.merged||(e.isUndefined(u.barycenter)||e.isUndefined(c.barycenter)||u.barycenter>=c.barycenter)&&r(c,u)}}function s(c){return function(u){u.in.push(c),--u.indegree===0&&a.push(u)}}for(;a.length;){var l=a.pop();i.push(l),e.forEach(l.in.reverse(),o(l)),e.forEach(l.out,s(l))}return e.map(e.filter(i,function(c){return!c.merged}),function(c){return e.pick(c,["vs","i","barycenter","weight"])})}function r(a,i){var o=0,s=0;a.weight&&(o+=a.barycenter*a.weight,s+=a.weight),i.weight&&(o+=i.barycenter*i.weight,s+=i.weight),a.vs=i.vs.concat(a.vs),a.barycenter=o/s,a.weight=s,a.i=Math.min(i.i,a.i),i.merged=!0}return hs}var vs,Yp;function ey(){if(Yp)return vs;Yp=1;var e=oe(),n=pe();vs=t;function t(i,o){var s=n.partition(i,function(m){return e.has(m,"barycenter")}),l=s.lhs,c=e.sortBy(s.rhs,function(m){return-m.i}),u=[],f=0,p=0,h=0;l.sort(a(!!o)),h=r(u,c,h),e.forEach(l,function(m){h+=m.vs.length,u.push(m.vs),f+=m.barycenter*m.weight,p+=m.weight,h=r(u,c,h)});var v={vs:e.flatten(u,!0)};return p&&(v.barycenter=f/p,v.weight=p),v}function r(i,o,s){for(var l;o.length&&(l=e.last(o)).i<=s;)o.pop(),i.push(l.vs),s++;return s}function a(i){return function(o,s){return o.barycenter<s.barycenter?-1:o.barycenter>s.barycenter?1:i?s.i-o.i:o.i-s.i}}return vs}var ms,Xp;function ry(){if(Xp)return ms;Xp=1;var e=oe(),n=Zg(),t=Qg(),r=ey();ms=a;function a(s,l,c,u){var f=s.children(l),p=s.node(l),h=p?p.borderLeft:void 0,v=p?p.borderRight:void 0,m={};h&&(f=e.filter(f,function(E){return E!==h&&E!==v}));var g=n(s,f);e.forEach(g,function(E){if(s.children(E.v).length){var T=a(s,E.v,c,u);m[E.v]=T,e.has(T,"barycenter")&&o(E,T)}});var b=t(g,c);i(b,m);var y=r(b,u);if(h&&(y.vs=e.flatten([h,y.vs,v],!0),s.predecessors(h).length)){var x=s.node(s.predecessors(h)[0]),_=s.node(s.predecessors(v)[0]);e.has(y,"barycenter")||(y.barycenter=0,y.weight=0),y.barycenter=(y.barycenter*y.weight+x.order+_.order)/(y.weight+2),y.weight+=2}return y}function i(s,l){e.forEach(s,function(c){c.vs=e.flatten(c.vs.map(function(u){return l[u]?l[u].vs:u}),!0)})}function o(s,l){e.isUndefined(s.barycenter)?(s.barycenter=l.barycenter,s.weight=l.weight):(s.barycenter=(s.barycenter*s.weight+l.barycenter*l.weight)/(s.weight+l.weight),s.weight+=l.weight)}return ms}var gs,Zp;function ty(){if(Zp)return gs;Zp=1;var e=oe(),n=ke().Graph;gs=t;function t(a,i,o){var s=r(a),l=new n({compound:!0}).setGraph({root:s}).setDefaultNodeLabel(function(c){return a.node(c)});return e.forEach(a.nodes(),function(c){var u=a.node(c),f=a.parent(c);(u.rank===i||u.minRank<=i&&i<=u.maxRank)&&(l.setNode(c),l.setParent(c,f||s),e.forEach(a[o](c),function(p){var h=p.v===c?p.w:p.v,v=l.edge(h,c),m=e.isUndefined(v)?0:v.weight;l.setEdge(h,c,{weight:a.edge(p).weight+m})}),e.has(u,"minRank")&&l.setNode(c,{borderLeft:u.borderLeft[i],borderRight:u.borderRight[i]}))}),l}function r(a){for(var i;a.hasNode(i=e.uniqueId("_root")););return i}return gs}var ys,Qp;function ny(){if(Qp)return ys;Qp=1;var e=oe();ys=n;function n(t,r,a){var i={},o;e.forEach(a,function(s){for(var l=t.parent(s),c,u;l;){if(c=t.parent(l),c?(u=i[c],i[c]=l):(u=o,o=l),u&&u!==l){r.setEdge(u,l);return}l=c}})}return ys}var bs,eh;function ay(){if(eh)return bs;eh=1;var e=oe(),n=Yg(),t=Xg(),r=ry(),a=ty(),i=ny(),o=ke().Graph,s=pe();bs=l;function l(p){var h=s.maxRank(p),v=c(p,e.range(1,h+1),"inEdges"),m=c(p,e.range(h-1,-1,-1),"outEdges"),g=n(p);f(p,g);for(var b=Number.POSITIVE_INFINITY,y,x=0,_=0;_<4;++x,++_){u(x%2?v:m,x%4>=2),g=s.buildLayerMatrix(p);var E=t(p,g);E<b&&(_=0,y=e.cloneDeep(g),b=E)}f(p,y)}function c(p,h,v){return e.map(h,function(m){return a(p,m,v)})}function u(p,h){var v=new o;e.forEach(p,function(m){var g=m.graph().root,b=r(m,g,v,h);e.forEach(b.vs,function(y,x){m.node(y).order=x}),i(m,v,b.vs)})}function f(p,h){e.forEach(h,function(v){e.forEach(v,function(m,g){p.node(m).order=g})})}return bs}var xs,rh;function iy(){if(rh)return xs;rh=1;var e=oe(),n=ke().Graph,t=pe();xs={positionX:v,findType1Conflicts:r,findType2Conflicts:a,addConflict:o,hasConflict:s,verticalAlignment:l,horizontalCompaction:c,alignCoordinates:p,findSmallestWidthAlignment:f,balance:h};function r(b,y){var x={};function _(E,T){var N=0,C=0,I=E.length,P=e.last(T);return e.forEach(T,function(D,F){var R=i(b,D),k=R?b.node(R).order:I;(R||D===P)&&(e.forEach(T.slice(C,F+1),function(W){e.forEach(b.predecessors(W),function(z){var U=b.node(z),K=U.order;(K<N||k<K)&&!(U.dummy&&b.node(W).dummy)&&o(x,z,W)})}),C=F+1,N=k)}),T}return e.reduce(y,_),x}function a(b,y){var x={};function _(T,N,C,I,P){var D;e.forEach(e.range(N,C),function(F){D=T[F],b.node(D).dummy&&e.forEach(b.predecessors(D),function(R){var k=b.node(R);k.dummy&&(k.order<I||k.order>P)&&o(x,R,D)})})}function E(T,N){var C=-1,I,P=0;return e.forEach(N,function(D,F){if(b.node(D).dummy==="border"){var R=b.predecessors(D);R.length&&(I=b.node(R[0]).order,_(N,P,F,C,I),P=F,C=I)}_(N,P,N.length,I,T.length)}),N}return e.reduce(y,E),x}function i(b,y){if(b.node(y).dummy)return e.find(b.predecessors(y),function(x){return b.node(x).dummy})}function o(b,y,x){if(y>x){var _=y;y=x,x=_}var E=b[y];E||(b[y]=E={}),E[x]=!0}function s(b,y,x){if(y>x){var _=y;y=x,x=_}return e.has(b[y],x)}function l(b,y,x,_){var E={},T={},N={};return e.forEach(y,function(C){e.forEach(C,function(I,P){E[I]=I,T[I]=I,N[I]=P})}),e.forEach(y,function(C){var I=-1;e.forEach(C,function(P){var D=_(P);if(D.length){D=e.sortBy(D,function(z){return N[z]});for(var F=(D.length-1)/2,R=Math.floor(F),k=Math.ceil(F);R<=k;++R){var W=D[R];T[P]===P&&I<N[W]&&!s(x,P,W)&&(T[W]=P,T[P]=E[P]=E[W],I=N[W])}}})}),{root:E,align:T}}function c(b,y,x,_,E){var T={},N=u(b,y,x,E),C=E?"borderLeft":"borderRight";function I(F,R){for(var k=N.nodes(),W=k.pop(),z={};W;)z[W]?F(W):(z[W]=!0,k.push(W),k=k.concat(R(W))),W=k.pop()}function P(F){T[F]=N.inEdges(F).reduce(function(R,k){return Math.max(R,T[k.v]+N.edge(k))},0)}function D(F){var R=N.outEdges(F).reduce(function(W,z){return Math.min(W,T[z.w]-N.edge(z))},Number.POSITIVE_INFINITY),k=b.node(F);R!==Number.POSITIVE_INFINITY&&k.borderType!==C&&(T[F]=Math.max(T[F],R))}return I(P,N.predecessors.bind(N)),I(D,N.successors.bind(N)),e.forEach(_,function(F){T[F]=T[x[F]]}),T}function u(b,y,x,_){var E=new n,T=b.graph(),N=m(T.nodesep,T.edgesep,_);return e.forEach(y,function(C){var I;e.forEach(C,function(P){var D=x[P];if(E.setNode(D),I){var F=x[I],R=E.edge(F,D);E.setEdge(F,D,Math.max(N(b,P,I),R||0))}I=P})}),E}function f(b,y){return e.minBy(e.values(y),function(x){var _=Number.NEGATIVE_INFINITY,E=Number.POSITIVE_INFINITY;return e.forIn(x,function(T,N){var C=g(b,N)/2;_=Math.max(T+C,_),E=Math.min(T-C,E)}),_-E})}function p(b,y){var x=e.values(y),_=e.min(x),E=e.max(x);e.forEach(["u","d"],function(T){e.forEach(["l","r"],function(N){var C=T+N,I=b[C],P;if(I!==y){var D=e.values(I);P=N==="l"?_-e.min(D):E-e.max(D),P&&(b[C]=e.mapValues(I,function(F){return F+P}))}})})}function h(b,y){return e.mapValues(b.ul,function(x,_){if(y)return b[y.toLowerCase()][_];var E=e.sortBy(e.map(b,_));return(E[1]+E[2])/2})}function v(b){var y=t.buildLayerMatrix(b),x=e.merge(r(b,y),a(b,y)),_={},E;e.forEach(["u","d"],function(N){E=N==="u"?y:e.values(y).reverse(),e.forEach(["l","r"],function(C){C==="r"&&(E=e.map(E,function(F){return e.values(F).reverse()}));var I=(N==="u"?b.predecessors:b.successors).bind(b),P=l(b,E,x,I),D=c(b,E,P.root,P.align,C==="r");C==="r"&&(D=e.mapValues(D,function(F){return-F})),_[N+C]=D})});var T=f(b,_);return p(_,T),h(_,b.graph().align)}function m(b,y,x){return function(_,E,T){var N=_.node(E),C=_.node(T),I=0,P;if(I+=N.width/2,e.has(N,"labelpos"))switch(N.labelpos.toLowerCase()){case"l":P=-N.width/2;break;case"r":P=N.width/2;break}if(P&&(I+=x?P:-P),P=0,I+=(N.dummy?y:b)/2,I+=(C.dummy?y:b)/2,I+=C.width/2,e.has(C,"labelpos"))switch(C.labelpos.toLowerCase()){case"l":P=C.width/2;break;case"r":P=-C.width/2;break}return P&&(I+=x?P:-P),P=0,I}}function g(b,y){return b.node(y).width}return xs}var _s,th;function oy(){if(th)return _s;th=1;var e=oe(),n=pe(),t=iy().positionX;_s=r;function r(i){i=n.asNonCompoundGraph(i),a(i),e.forEach(t(i),function(o,s){i.node(s).x=o})}function a(i){var o=n.buildLayerMatrix(i),s=i.graph().ranksep,l=0;e.forEach(o,function(c){var u=e.max(e.map(c,function(f){return i.node(f).height}));e.forEach(c,function(f){i.node(f).y=l+u/2}),l+=u+s})}return _s}var ks,nh;function sy(){if(nh)return ks;nh=1;var e=oe(),n=zg(),t=$g(),r=Kg(),a=pe().normalizeRanks,i=Ug(),o=pe().removeEmptyRanks,s=Jg(),l=Gg(),c=Vg(),u=ay(),f=oy(),p=pe(),h=ke().Graph;ks=v;function v(w,L){var q=L&&L.debugTiming?p.time:p.notime;q("layout",function(){var A=q(" buildLayoutGraph",function(){return I(w)});q(" runLayout",function(){m(A,q)}),q(" updateInputGraph",function(){g(w,A)})})}function m(w,L){L(" makeSpaceForEdgeLabels",function(){P(w)}),L(" removeSelfEdges",function(){Y(w)}),L(" acyclic",function(){n.run(w)}),L(" nestingGraph.run",function(){s.run(w)}),L(" rank",function(){r(p.asNonCompoundGraph(w))}),L(" injectEdgeLabelProxies",function(){D(w)}),L(" removeEmptyRanks",function(){o(w)}),L(" nestingGraph.cleanup",function(){s.cleanup(w)}),L(" normalizeRanks",function(){a(w)}),L(" assignRankMinMax",function(){F(w)}),L(" removeEdgeLabelProxies",function(){R(w)}),L(" normalize.run",function(){t.run(w)}),L(" parentDummyChains",function(){i(w)}),L(" addBorderSegments",function(){l(w)}),L(" order",function(){u(w)}),L(" insertSelfEdges",function(){J(w)}),L(" adjustCoordinateSystem",function(){c.adjust(w)}),L(" position",function(){f(w)}),L(" positionSelfEdges",function(){O(w)}),L(" removeBorderNodes",function(){K(w)}),L(" normalize.undo",function(){t.undo(w)}),L(" fixupEdgeLabelCoords",function(){z(w)}),L(" undoCoordinateSystem",function(){c.undo(w)}),L(" translateGraph",function(){k(w)}),L(" assignNodeIntersects",function(){W(w)}),L(" reversePoints",function(){U(w)}),L(" acyclic.undo",function(){n.undo(w)})}function g(w,L){e.forEach(w.nodes(),function(q){var A=w.node(q),B=L.node(q);A&&(A.x=B.x,A.y=B.y,L.children(q).length&&(A.width=B.width,A.height=B.height))}),e.forEach(w.edges(),function(q){var A=w.edge(q),B=L.edge(q);A.points=B.points,e.has(B,"x")&&(A.x=B.x,A.y=B.y)}),w.graph().width=L.graph().width,w.graph().height=L.graph().height}var b=["nodesep","edgesep","ranksep","marginx","marginy"],y={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},x=["acyclicer","ranker","rankdir","align"],_=["width","height"],E={width:0,height:0},T=["minlen","weight","width","height","labeloffset"],N={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},C=["labelpos"];function I(w){var L=new h({multigraph:!0,compound:!0}),q=Q(w.graph());return L.setGraph(e.merge({},y,V(q,b),e.pick(q,x))),e.forEach(w.nodes(),function(A){var B=Q(w.node(A));L.setNode(A,e.defaults(V(B,_),E)),L.setParent(A,w.parent(A))}),e.forEach(w.edges(),function(A){var B=Q(w.edge(A));L.setEdge(A,e.merge({},N,V(B,T),e.pick(B,C)))}),L}function P(w){var L=w.graph();L.ranksep/=2,e.forEach(w.edges(),function(q){var A=w.edge(q);A.minlen*=2,A.labelpos.toLowerCase()!=="c"&&(L.rankdir==="TB"||L.rankdir==="BT"?A.width+=A.labeloffset:A.height+=A.labeloffset)})}function D(w){e.forEach(w.edges(),function(L){var q=w.edge(L);if(q.width&&q.height){var A=w.node(L.v),B=w.node(L.w),X={rank:(B.rank-A.rank)/2+A.rank,e:L};p.addDummyNode(w,"edge-proxy",X,"_ep")}})}function F(w){var L=0;e.forEach(w.nodes(),function(q){var A=w.node(q);A.borderTop&&(A.minRank=w.node(A.borderTop).rank,A.maxRank=w.node(A.borderBottom).rank,L=e.max(L,A.maxRank))}),w.graph().maxRank=L}function R(w){e.forEach(w.nodes(),function(L){var q=w.node(L);q.dummy==="edge-proxy"&&(w.edge(q.e).labelRank=q.rank,w.removeNode(L))})}function k(w){var L=Number.POSITIVE_INFINITY,q=0,A=Number.POSITIVE_INFINITY,B=0,X=w.graph(),ee=X.marginx||0,Z=X.marginy||0;function ne(S){var $=S.x,G=S.y,re=S.width,H=S.height;L=Math.min(L,$-re/2),q=Math.max(q,$+re/2),A=Math.min(A,G-H/2),B=Math.max(B,G+H/2)}e.forEach(w.nodes(),function(S){ne(w.node(S))}),e.forEach(w.edges(),function(S){var $=w.edge(S);e.has($,"x")&&ne($)}),L-=ee,A-=Z,e.forEach(w.nodes(),function(S){var $=w.node(S);$.x-=L,$.y-=A}),e.forEach(w.edges(),function(S){var $=w.edge(S);e.forEach($.points,function(G){G.x-=L,G.y-=A}),e.has($,"x")&&($.x-=L),e.has($,"y")&&($.y-=A)}),X.width=q-L+ee,X.height=B-A+Z}function W(w){e.forEach(w.edges(),function(L){var q=w.edge(L),A=w.node(L.v),B=w.node(L.w),X,ee;q.points?(X=q.points[0],ee=q.points[q.points.length-1]):(q.points=[],X=B,ee=A),q.points.unshift(p.intersectRect(A,X)),q.points.push(p.intersectRect(B,ee))})}function z(w){e.forEach(w.edges(),function(L){var q=w.edge(L);if(e.has(q,"x"))switch((q.labelpos==="l"||q.labelpos==="r")&&(q.width-=q.labeloffset),q.labelpos){case"l":q.x-=q.width/2+q.labeloffset;break;case"r":q.x+=q.width/2+q.labeloffset;break}})}function U(w){e.forEach(w.edges(),function(L){var q=w.edge(L);q.reversed&&q.points.reverse()})}function K(w){e.forEach(w.nodes(),function(L){if(w.children(L).length){var q=w.node(L),A=w.node(q.borderTop),B=w.node(q.borderBottom),X=w.node(e.last(q.borderLeft)),ee=w.node(e.last(q.borderRight));q.width=Math.abs(ee.x-X.x),q.height=Math.abs(B.y-A.y),q.x=X.x+q.width/2,q.y=A.y+q.height/2}}),e.forEach(w.nodes(),function(L){w.node(L).dummy==="border"&&w.removeNode(L)})}function Y(w){e.forEach(w.edges(),function(L){if(L.v===L.w){var q=w.node(L.v);q.selfEdges||(q.selfEdges=[]),q.selfEdges.push({e:L,label:w.edge(L)}),w.removeEdge(L)}})}function J(w){var L=p.buildLayerMatrix(w);e.forEach(L,function(q){var A=0;e.forEach(q,function(B,X){var ee=w.node(B);ee.order=X+A,e.forEach(ee.selfEdges,function(Z){p.addDummyNode(w,"selfedge",{width:Z.label.width,height:Z.label.height,rank:ee.rank,order:X+ ++A,e:Z.e,label:Z.label},"_se")}),delete ee.selfEdges})})}function O(w){e.forEach(w.nodes(),function(L){var q=w.node(L);if(q.dummy==="selfedge"){var A=w.node(q.e.v),B=A.x+A.width/2,X=A.y,ee=q.x-B,Z=A.height/2;w.setEdge(q.e,q.label),w.removeNode(L),q.label.points=[{x:B+2*ee/3,y:X-Z},{x:B+5*ee/6,y:X-Z},{x:B+ee,y:X},{x:B+5*ee/6,y:X+Z},{x:B+2*ee/3,y:X+Z}],q.label.x=q.x,q.label.y=q.y}})}function V(w,L){return e.mapValues(e.pick(w,L),Number)}function Q(w){var L={};return e.forEach(w,function(q,A){L[A.toLowerCase()]=q}),L}return ks}var Ss,ah;function uy(){if(ah)return Ss;ah=1;var e=oe(),n=pe(),t=ke().Graph;Ss={debugOrdering:r};function r(a){var i=n.buildLayerMatrix(a),o=new t({compound:!0,multigraph:!0}).setGraph({});return e.forEach(a.nodes(),function(s){o.setNode(s,{label:s}),o.setParent(s,"layer"+a.node(s).rank)}),e.forEach(a.edges(),function(s){o.setEdge(s.v,s.w,{},s.name)}),e.forEach(i,function(s,l){var c="layer"+l;o.setNode(c,{rank:"same"}),e.reduce(s,function(u,f){return o.setEdge(u,f,{style:"invis"}),f})}),o}return Ss}var Ts,ih;function cy(){return ih||(ih=1,Ts="0.8.5"),Ts}var ws,oh;function ly(){return oh||(oh=1,ws={graphlib:ke(),layout:sy(),debug:uy(),util:{time:pe().time,notime:pe().notime},version:cy()}),ws}var dy=ly();const sh=qh(dy);function lr(e,n="TB"){let t=240,r=80;switch(e.type){case"decisionNode":t=212,r=160;break;case"forkNode":t=240,r=95;break;case"joinNode":t=240,r=95;break;case"dynamicPlaceholderNode":t=220,r=70;break;case"loopNode":const i=(e.data.loopOver||e.data.task?.loopOver||[]).length,o=!!(e.data.loopCondition||e.data.task?.loopCondition);n==="LR"?(t=320+i*50,t=Math.min(t,600),r=145+(o?20:0)):(t=320,r=120+i*40+(o?30:0),r=Math.min(r,400));break;case"subWorkflowNode":t=240,r=95;break;case"eventNode":t=240,r=85;break;case"default":t=240,r=40;break;case"plusNode":t=e.data.label&&e.data.label!=="+"?120:32,r=32;break;default:t=240,r=95;break}return{width:t,height:r}}function fy(e,n,t=8){const r=[];if(e.length<t)return r;const a=new Map,i={},o={};e.forEach(f=>{a.set(f.id,f),i[f.id]=[],o[f.id]=[]}),n.forEach(f=>{i[f.source]&&i[f.source].push(f.target),o[f.target]&&o[f.target].push(f.source)});const s=new Set,l=new Set(["input","output","decisionNode","forkNode","joinNode","loopNode","default"]),c=f=>!l.has(f.type||""),u=[...e].sort((f,p)=>f.position.y-p.position.y);for(const f of u){if(s.has(f.id)||!c(f)||i[f.id].length>1)continue;const p=[f.id];let h=f,v=i[h.id];for(;v&&v.length===1;){const m=v[0],g=a.get(m);if(!g||s.has(m)||!c(g)||o[m].length!==1)break;p.push(m),h=g,v=i[h.id]}p.length>=t&&(r.push(p),p.forEach(m=>s.add(m)))}return r}function py(e,n,t,r,a,i=5,o="view"){const s=n.find(y=>y.id===e[0]),{width:l,height:c}=lr(s||n[0],t),u=Math.max(.7,1-(e.length-10)/80),f=o==="edit"||o==="run"?1.15:1,p=Math.min(r,Math.round(60*u*f)),h=Math.min(a,Math.round(80*u*f)),v=l+p,m=c+h;let g=0,b=0;if(t==="TB"){const y=Math.ceil(e.length/i);g=i*v-p,b=y*m-h}else g=Math.ceil(e.length/i)*v-p,b=i*m-h;return g+=40,b+=40,{width:g,height:b,gridKW:v,gridKH:m,cols:i}}function de(e,n,t={}){const{direction:r="TB",mode:a="view",enableSnakeLayout:i=!0,snakeColumns:o=5,snakeMinChainLength:s=8,snakeMinNodeCount:l=10}=t,c=e.length;let u=r==="LR"?150:120,f=r==="LR"?120:100,p=u,h=f;if(c>15){let C=Math.max(.5,1-(c-15)/50),I=Math.max(.4,1-(c-15)/40);(a==="edit"||a==="run")&&(C=1-(1-C)*.5,I=1-(1-I)*.5),p=Math.round(u*C),h=Math.round(f*I)}const v=i&&c>l?fy(e,n,s):[],m={};v.forEach((C,I)=>{C.forEach(P=>{m[P]=I})});const g=new sh.graphlib.Graph;g.setDefaultEdgeLabel(()=>({})),g.setGraph({rankdir:r,ranker:"network-simplex",ranksep:p,nodesep:h,edgesep:50,marginx:50,marginy:50});const b=new Set,y={};e.forEach(C=>{const I=m[C.id];if(I!==void 0){if(!b.has(I)){b.add(I);const P=py(v[I],e,r,h,p,o,a);y[I]=P,g.setNode(`__CHAIN_${I}`,{width:P.width,height:P.height})}}else{const{width:P,height:D}=lr(C,r);g.setNode(C.id,{width:P,height:D})}}),n.forEach(C=>{const I=m[C.source],P=m[C.target];let D=C.source,F=C.target;I!==void 0&&(D=`__CHAIN_${I}`),P!==void 0&&(F=`__CHAIN_${P}`),D!==F&&g.setEdge(D,F)}),sh.layout(g);const x={};for(const C of e)x[C.id]={...C};const _=[],E=new Set;e.forEach(C=>{if(m[C.id]===void 0){const I=g.node(C.id),P=x[C.id],{width:D,height:F}=lr(P,r);P.position={x:I.x-D/2,y:I.y-F/2},P.data={...P.data,sourcePosition:void 0,targetPosition:void 0},P.sourcePosition=r==="LR"?j.Position.Right:j.Position.Bottom,P.targetPosition=r==="LR"?j.Position.Left:j.Position.Top,_.push(P)}else E.add(C.id)}),v.forEach((C,I)=>{const P=`__CHAIN_${I}`,D=g.node(P),F=y[I],R=D.x-F.width/2+20,k=D.y-F.height/2+20,W=F.cols,z=F.gridKW,U=F.gridKH;C.forEach((K,Y)=>{const J=x[K];let O=0,V=0,Q,w;if(r==="TB"){const L=Math.floor(Y/W),q=Y%W,A=L%2===0,B=Math.ceil(C.length/W),X=L===B-1,ee=C.length%W||W,Z=X?(W-ee)*z/2:0;let ne;A?ne=q*z+Z:ne=(W-1-q)*z-Z;const S=L*U;O=R+ne,V=k+S;const $=X?ee:W;A?(w=j.Position.Left,Q=j.Position.Right,q===$-1&&Y!==C.length-1&&(Q=j.Position.Bottom),q===0&&Y!==0&&(w=j.Position.Top)):(w=j.Position.Right,Q=j.Position.Left,q===$-1&&Y!==C.length-1&&(Q=j.Position.Bottom),q===0&&Y!==0&&(w=j.Position.Top)),Y===0&&(w=j.Position.Top),Y===C.length-1&&(Q=j.Position.Bottom)}else{const L=Math.floor(Y/W),q=Y%W,A=L%2===0,B=Math.ceil(C.length/W),X=L===B-1,ee=C.length%W||W,Z=X?Math.max(0,(W-ee)*U)/2:0,ne=L*z;let S;A?S=q*U+Z:S=(W-1-q)*U-Z,O=R+ne,V=k+S;const $=X?ee:W;A?(w=j.Position.Top,Q=j.Position.Bottom,q===$-1&&Y!==C.length-1&&(Q=j.Position.Right),q===0&&Y!==0&&(w=j.Position.Left)):(w=j.Position.Bottom,Q=j.Position.Top,q===$-1&&Y!==C.length-1&&(Q=j.Position.Right),q===0&&Y!==0&&(w=j.Position.Left)),Y===0&&(w=j.Position.Left),Y===C.length-1&&(Q=j.Position.Right)}J.position={x:O,y:V},J.data={...J.data,sourcePosition:Q,targetPosition:w},J.sourcePosition=Q,J.targetPosition=w,_.push(J)})});const T=_.reduce((C,I)=>({...C,[I.id]:I}),{}),N=n.map(C=>{const I=T[C.source],P=T[C.target];if(!I||!P||E.has(I.id)||I.type!=="decisionNode")return C;const{width:D,height:F}=lr(I,r),{width:R,height:k}=lr(P,r),W={x:I.position.x+D/2,y:I.position.y+F/2},z={x:P.position.x+R/2,y:P.position.y+k/2};let U=null;if(r==="TB"){const K=D*.25;z.x<W.x-K?U="left":z.x>W.x+K&&(U="right")}else{const K=F*.25;z.y<W.y-K?U="top":z.y>W.y+K&&(U="bottom")}return{...C,sourceHandle:U}});return{nodes:_,edges:N}}function Ne(e,n){if(!e)return null;for(const t of e){if(t.taskReferenceName===n)return t;if(t.decisionCases){for(const a of Object.keys(t.decisionCases)){const i=Ne(t.decisionCases[a],n);if(i)return i}const r=Ne(t.defaultCase,n);if(r)return r}if(t.forkTasks)for(const r of t.forkTasks){const a=Ne(r,n);if(a)return a}if(t.loopOver){const r=Ne(t.loopOver,n);if(r)return r}}return null}function We(e,n){if(!e)return!1;const t=e.findIndex(r=>r.taskReferenceName===n);if(t!==-1)return e.splice(t,1),!0;for(const r of e){if(r.decisionCases){for(const a of Object.keys(r.decisionCases))if(We(r.decisionCases[a],n))return!0;if(We(r.defaultCase,n))return!0}if(r.forkTasks){for(const a of r.forkTasks)if(We(a,n))return!0}if(r.loopOver&&We(r.loopOver,n))return!0}return!1}function dr(e,n){if(!e)return null;if(e.some(t=>t.taskReferenceName===n))return e;for(const t of e){if(t.decisionCases){for(const a of Object.values(t.decisionCases)){const i=dr(a,n);if(i)return i}const r=dr(t.defaultCase,n);if(r)return r}if(t.forkTasks)for(const r of t.forkTasks){const a=dr(r,n);if(a)return a}if(t.loopOver){const r=dr(t.loopOver,n);if(r)return r}}return null}function hy(e,n){const t=e.findIndex(r=>r.taskReferenceName===n);if(t<0)return null;for(let r=t+1;r<e.length;r++)if(e[r].type==="JOIN"||e[r].type==="EXCLUSIVE_JOIN")return e[r].taskReferenceName;return null}function vy(e,n){const t=e.findIndex(r=>r.taskReferenceName===n);if(t<0)return null;for(let r=t-1;r>=0;r--)if(e[r].type==="FORK_JOIN"||e[r].type==="FORK_JOIN_DYNAMIC")return e[r].taskReferenceName;return null}function Se(e,n,t){if(!e)return!1;const r=e.findIndex(a=>a.taskReferenceName===n);if(r!==-1)return e.splice(r+1,0,t),!0;for(const a of e){if(a.decisionCases){for(const i of Object.keys(a.decisionCases))if(Se(a.decisionCases[i],n,t))return!0;if(Se(a.defaultCase,n,t))return!0}if(a.forkTasks){for(const i of a.forkTasks)if(Se(i,n,t))return!0}if(a.loopOver&&Se(a.loopOver,n,t))return!0}return!1}function fr(e,n,t,r){for(const a of e||[]){if(a.taskReferenceName===n){if(t.branchCase==="default")return a.defaultCase||(a.defaultCase=[]),a.defaultCase.unshift(r),!0;if(t.branchCase!==void 0)return a.decisionCases||(a.decisionCases={}),a.decisionCases[t.branchCase]||(a.decisionCases[t.branchCase]=[]),a.decisionCases[t.branchCase].unshift(r),!0;if(t.forkIndex!==void 0)return a.forkTasks||(a.forkTasks=[]),a.forkTasks[t.forkIndex].unshift(r),!0;if(t.isLoopAdd)return a.loopOver||(a.loopOver=[]),a.loopOver.unshift(r),!0}if(a.decisionCases){for(const i of Object.keys(a.decisionCases))if(fr(a.decisionCases[i],n,t,r))return!0;if(fr(a.defaultCase,n,t,r))return!0}if(a.forkTasks){for(const i of a.forkTasks)if(fr(i,n,t,r))return!0}}return!1}function fe(e){if(e)for(let n=0;n<e.length;n++){const t=e[n];if(t.type==="FORK_JOIN"&&n+1<e.length){const r=e[n+1];if(r.type==="JOIN"){const a=[];(t.forkTasks||[]).forEach(i=>{i&&i.length>0&&a.push(i[i.length-1].taskReferenceName)}),r.joinOn=a}}t.decisionCases&&(Object.values(t.decisionCases).forEach(r=>fe(r)),t.defaultCase&&fe(t.defaultCase)),t.forkTasks&&t.forkTasks.forEach(r=>fe(r)),t.loopOver&&fe(t.loopOver)}}const my=[{field:"name",type:"required",message:"工作流名称 (name) 必填"},{field:"version",type:"required",message:"工作流版本 (version) 必填"},{field:"tasks",type:"min_length",value:1,message:"工作流必须包含至少一个任务"}],uh={common:[{field:"name",type:"required",message:"任务类型名称 (name) 必填"},{field:"taskReferenceName",type:"required",message:"引用名 (taskReferenceName) 必填"},{field:"taskReferenceName",type:"pattern",value:/^[a-zA-Z0-9_]+$/,message:"引用名仅允许字母、数字和下划线"},{field:"taskReferenceName",type:"unique",message:"引用名在工作流中必须唯一"}],types:{HTTP:[{field:"inputParameters.http_request.uri",type:"required",message:"HTTP 任务缺少请求地址 (uri) 配置"},{field:"inputParameters.http_request.method",type:"required",level:"warning",message:"HTTP 任务未指定 Method,建议配置"}],INLINE:[{field:"inputParameters.expression",type:"custom",validate:(e,n)=>!!(n?.inputParameters?.expression||n?.inputParameters?.scriptExpression),message:"INLINE 任务缺少脚本表达式 (expression)"}],LAMBDA:[{field:"inputParameters.scriptExpression",type:"required",message:"LAMBDA 任务缺少脚本表达式 (scriptExpression)"}],JSON_JQ_TRANSFORM:[{field:"inputParameters.queryExpression",type:"required",message:"JQ 任务缺少查询表达式 (queryExpression)"}],SUB_WORKFLOW:[{field:"subWorkflowParam.name",type:"required",message:"子工作流任务缺少子流程名称 (name)"}],START_WORKFLOW:[{field:"inputParameters.startWorkflow.name",type:"custom",validate:(e,n)=>!!n?.inputParameters?.startWorkflow?.name,message:"START_WORKFLOW 任务缺少目标工作流名称"}],DYNAMIC:[{field:"dynamicTaskNameParam",type:"required",message:"DYNAMIC 任务缺少 dynamicTaskNameParam 配置"}],TERMINATE:[{field:"inputParameters.terminationStatus",type:"required",level:"warning",message:"终止任务未指定状态 (terminationStatus)"},{field:"inputParameters.terminationStatus",type:"enum",value:["COMPLETED","FAILED"],message:"终止状态必须为 COMPLETED 或 FAILED"}],DO_WHILE:[{field:"loopCondition",type:"custom",validate:(e,n)=>!!(n?.loopCondition||n?.inputParameters?.items),message:"循环任务需要配置退出条件 (loopCondition) 或列表 (items)"}],DECISION:[{field:"decisionCases",type:"custom",validate:e=>Object.keys(e||{}).length>0,message:"决策任务必须至少包含一个分支 (decisionCases)"},{field:"decisionCases",type:"custom",validate:e=>{const n=Object.keys(e||{});return new Set(n).size===n.length},message:"决策分支条件不能重复"}],SWITCH:[{field:"decisionCases",type:"custom",validate:e=>Object.keys(e||{}).length>0,message:"Switch 任务必须至少包含一个分支"}],FORK_JOIN_DYNAMIC:[{field:"dynamicForkTasksParam",type:"custom",validate:(e,n)=>!!(n?.dynamicForkTasksParam||n?.forkTaskType||n?.forkTaskWorkflow),message:"FORK_JOIN_DYNAMIC 任务需要配置 dynamicForkTasksParam 或 forkTaskType 或 forkTaskWorkflow",level:"warning"}]}},gy=(e,n)=>n.split(".").reduce((t,r)=>t&&t[r]!==void 0?t[r]:void 0,e),Ns=(e,n,t,r)=>{const{errors:a,warnings:i}=r,o=e.taskReferenceName||"GLOBAL";n.forEach(s=>{const l=gy(e,s.field);let c=!0;switch(s.type){case"required":c=l!=null&&l!=="";break;case"min_length":c=Array.isArray(l)&&l.length>=s.value;break;case"pattern":c=s.value.test(l);break;case"enum":c=s.value.includes(l);break;case"unique":s.field==="taskReferenceName"&&l&&(t.taskRefs.has(l)?c=!1:t.taskRefs.add(l));break;case"custom":typeof s.validate=="function"&&(c=s.validate(l,e,t));break}if(!c){const u={type:e.taskReferenceName?"TASK":"GLOBAL",ref:o,message:s.message};s.level==="warning"?i.push(u):a.push(u)}})},Te=e=>{const n=[],t=[],r={taskRefs:new Set,taskMap:{}};if(!e)return{isValid:!1,errors:[{type:"GLOBAL",ref:"",message:"工作流定义为空"}],warnings:[]};if(Ns(e,my,r,{errors:n,warnings:t}),!e.tasks||e.tasks.length===0)return{isValid:!1,errors:n,warnings:t};const a=o=>{o.forEach(s=>{Ns(s,uh.common,r,{errors:n,warnings:t});const l=uh.types[s.type];l&&Ns(s,l,r,{errors:n,warnings:t}),s.decisionCases&&Object.keys(s.decisionCases).forEach(c=>{a(s.decisionCases[c])}),s.defaultCase&&a(s.defaultCase),s.forkTasks&&s.forkTasks.forEach(c=>a(c)),s.loopOver&&a(s.loopOver)})};a(e.tasks);const i=yy(e.tasks);return n.push(...i),{isValid:n.length===0,errors:n,warnings:t}},yy=e=>{const n=[],t=new Map,r=new Set,a=u=>{for(let f=0;f<u.length;f++){const p=u[f],h=p.taskReferenceName;if(r.add(h),t.has(h)||t.set(h,[]),f<u.length-1){const v=u[f+1].taskReferenceName;p.type!=="FORK_JOIN"&&p.type!=="FORK_JOIN_DYNAMIC"&&t.get(h).push(v)}if(p.decisionCases)for(const v of Object.values(p.decisionCases))v.length>0&&(t.get(h).push(v[0].taskReferenceName),a(v));if(p.defaultCase&&p.defaultCase.length>0&&(t.get(h).push(p.defaultCase[0].taskReferenceName),a(p.defaultCase)),p.forkTasks)for(const v of p.forkTasks)v.length>0&&(t.get(h).push(v[0].taskReferenceName),a(v));if(p.loopOver)for(const v of p.loopOver)r.add(v.taskReferenceName);if(p.joinOn)for(const v of p.joinOn)t.has(v)||t.set(v,[]),t.get(v).push(h)}};a(e);const i=0,o=1,s=2,l=new Map;for(const u of r)l.set(u,i);const c=u=>{l.set(u,o);const f=t.get(u)||[];for(const p of f)if(l.has(p)){if(l.get(p)===o)return n.push({type:"GLOBAL",ref:p,message:`检测到环路:任务 "${u}" → "${p}" 形成了循环依赖`}),!0;if(l.get(p)===i&&c(p))return!0}return l.set(u,s),!1};for(const u of r)l.get(u)===i&&c(u);return n},te=Wh()(Fh(zh((e,n)=>({mode:"view",workflowDef:null,workflowInstance:null,nodes:[],edges:[],taskMap:{},layoutDirection:"TB",selectedTask:null,selectedTaskInstance:null,isDetailPanelOpen:!1,executionData:null,dynamicRuntimeTasksByFork:{},validationResults:{isValid:!0,errors:[],warnings:[]},theme:"dark",themeColor:"blue",edgeType:"smoothstep",nodesLocked:!0,copiedTask:null,setWorkflow:(t,r)=>{const a=r||n().layoutDirection,i=JSON.parse(JSON.stringify(t));fe(i.tasks);const{nodes:o,edges:s,taskMap:l}=me(i,a,{hideEmptyBranches:n().mode!=="edit"}),{nodes:c,edges:u}=de(o,s,{direction:a,mode:n().mode}),f=Te(i);e({workflowDef:i,nodes:c,edges:u,taskMap:l,validationResults:f,layoutDirection:a})},setMode:t=>{n().mode==="run"&&t!=="run"&&e({executionData:null,workflowInstance:null,dynamicRuntimeTasksByFork:{}}),e({mode:t});const{workflowDef:a,layoutDirection:i}=n();if(a){const{nodes:o,edges:s,taskMap:l}=me(a,i,{hideEmptyBranches:t!=="edit"}),{nodes:c,edges:u}=de(o,s,{direction:i,mode:t});e({nodes:c,edges:u,taskMap:l})}},setExecutionData:t=>e({executionData:t,dynamicRuntimeTasksByFork:t===null?{}:n().dynamicRuntimeTasksByFork}),updateTaskStatus:(t,r)=>{const{executionData:a}=n();if(!a)return;const i={...a};i[t]&&(i[t]={...i[t],status:r},e({executionData:i}))},loadSampleExecution:async()=>{try{const r=await(await fetch("/sample-workflows/sample-execution.json")).json();n().importExecutionJSON(r)}catch(t){console.error("Failed to load sample execution:",t),alert("加载示例运行数据失败")}},importExecutionJSON:t=>{if(!t)return;let r=[],a=null,i=n().workflowDef;if(Array.isArray(t.tasks)?(r=t.tasks,t.workflowId&&t.status&&(a=t,t.workflowDefinition&&(i=t.workflowDefinition))):Array.isArray(t)&&(r=t),r.length===0)return;const o={};r.forEach(p=>{const h=p.referenceTaskName;h&&(o[h]||(o[h]={taskReferenceName:h,status:p.status,attempts:[],startTime:p.startTime,endTime:p.endTime,output:p.outputData,input:p.inputData,reasonForIncompletion:p.reasonForIncompletion,iteration:p.iteration}),o[h].attempts.push(p))}),Object.values(o).forEach(p=>{p.attempts.some(m=>m.iteration!==void 0&&m.iteration>0)?(p.attempts.sort((m,g)=>(m.iteration??0)-(g.iteration??0)),p.totalIterations=p.attempts.reduce((m,g)=>Math.max(m,g.iteration??0),0),p.startTime=p.attempts[0]?.startTime):p.attempts.sort((m,g)=>(m.retryCount??0)-(g.retryCount??0));const v=p.attempts[p.attempts.length-1];v&&(p.status=v.status,p.endTime=v.endTime,p.output=v.outputData,p.input=v.inputData,p.reasonForIncompletion=v.reasonForIncompletion,p.iteration=v.iteration)}),i&&JSON.stringify(i)!==JSON.stringify(n().workflowDef)&&n().setWorkflow(i);const s=n().taskMap,c=n().workflowDef?.tasks||[],u=[];c.forEach((p,h)=>{if(p.type==="FORK_JOIN_DYNAMIC"){for(let v=h+1;v<c.length;v++)if(c[v].type==="JOIN"||c[v].type==="EXCLUSIVE_JOIN"){u.push({forkRef:p.taskReferenceName,joinRef:c[v].taskReferenceName});break}}});const f={};u.forEach(({forkRef:p,joinRef:h})=>{const v=r.findIndex(b=>b.referenceTaskName===p),m=r.findIndex(b=>b.referenceTaskName===h);if(v<0||m<0)return;const g=new Set;f[p]=r.slice(v+1,m).filter(b=>!b.referenceTaskName||!b.taskId||s[b.referenceTaskName]||g.has(b.referenceTaskName)?!1:(g.add(b.referenceTaskName),!0)).map(b=>b)}),e({executionData:o,dynamicRuntimeTasksByFork:f,workflowInstance:a,mode:"run"})},setSelectedTask:t=>e({selectedTask:t?{...t}:null}),setIsDetailPanelOpen:t=>e({isDetailPanelOpen:t}),selectTaskAction:(t,r=!0)=>{e({selectedTask:t?{...t}:null,isDetailPanelOpen:t?r:!1,selectedTaskInstance:null})},setSelectedTaskInstance:t=>e({selectedTaskInstance:t}),setLayoutDirection:t=>{const{workflowDef:r}=n();if(r){const{nodes:a,edges:i,taskMap:o}=me(r,t,{hideEmptyBranches:n().mode!=="edit"}),{nodes:s,edges:l}=de(a,i,{direction:t,mode:n().mode});e({nodes:s,edges:l,taskMap:o,layoutDirection:t})}else e({layoutDirection:t})},onNodesChange:t=>{const r=n().nodes,a=new Set(r.map(o=>o.id)),i=t.filter(o=>"id"in o&&a.has(o.id));i.length!==0&&e({nodes:j.applyNodeChanges(i,r)})},onEdgesChange:t=>{const r=n().edges,a=j.applyEdgeChanges(t,r);a!==r&&e({edges:a})},onConnect:t=>{const{edges:r,layoutDirection:a}=n(),i=j.addEdge(t,r),{nodes:o,edges:s}=de(n().nodes,i,{direction:a,mode:n().mode});e({edges:s,nodes:o})},checkTaskRefUniqueness:(t,r)=>{if(t===r)return!0;const{taskMap:a}=n();return!a[t]},updateTask:(t,r,a)=>{const{workflowDef:i,layoutDirection:o}=n();if(!i)return;const s=JSON.parse(JSON.stringify(i)),l=Ne(s.tasks,t);if(l){typeof r=="object"?Object.assign(l,r):l[r]=a,fe(s.tasks);const{nodes:c,edges:u,taskMap:f}=me(s,o,{hideEmptyBranches:n().mode!=="edit"}),{nodes:p,edges:h}=de(c,u,{direction:o,mode:n().mode}),v=Te(s);e({workflowDef:s,nodes:p,edges:h,taskMap:f,validationResults:v})}},updateWorkflowProperties:t=>{const{workflowDef:r,layoutDirection:a}=n();if(!r)return;const i=JSON.parse(JSON.stringify(r));Object.assign(i,t),fe(i.tasks);const{nodes:o,edges:s,taskMap:l}=me(i,a,{hideEmptyBranches:n().mode!=="edit"}),{nodes:c,edges:u}=de(o,s,{direction:a,mode:n().mode}),f=Te(i);e({workflowDef:i,nodes:c,edges:u,taskMap:l,validationResults:f})},addNode:(t,r,a,i,o={})=>{const{workflowDef:s,layoutDirection:l}=n();if(!s)return;const c=JSON.parse(JSON.stringify(s)),u={name:t.data.label,taskReferenceName:t.data.taskReferenceName,type:t.data.taskType||"SIMPLE",inputParameters:{}};switch(u.type){case"HTTP":u.httpRequest={method:"GET",uri:"https://example.com/api",headers:{"Content-Type":"application/json"},body:{}};break;case"KAFKA_PUBLISH":u.inputParameters={topic:"my_topic",value:"${workflow.input.value}",bootStrapServers:"localhost:9092",headers:{},key:"msg_key"};break;case"JSON_JQ_TRANSFORM":u.inputParameters={queryExpression:".name",input:{}};break;case"SET_VARIABLE":u.inputParameters={variableName:"variableValue"};break;case"SUB_WORKFLOW":u.subWorkflowParam={name:"execution_workflow",version:1};break;case"EVENT":u.sink="conductor";break;case"WAIT":u.inputParameters={duration:"30s"};break;case"TERMINATE":u.inputParameters={terminationStatus:"COMPLETED",workflowOutput:{}};break}if(u.type==="FORK_JOIN"||u.type==="FORK_JOIN_DYNAMIC"){u.type==="FORK_JOIN"?u.forkTasks=[[],[]]:(u.dynamicForkTasksParam="dynamic_tasks",u.dynamicForkTasksInputParamName="input");const b={name:`${u.name}_join`,taskReferenceName:`${u.taskReferenceName}_join`,type:"JOIN",joinOn:[]};o.branchCase!==void 0||o.forkIndex!==void 0||o.isLoopAdd?(fr(c.tasks,r,o,u),Se(c.tasks,u.taskReferenceName,b)):c.tasks.length===0?c.tasks.push(u,b):(Se(c.tasks,r,u),Se(c.tasks,u.taskReferenceName,b))}else u.type==="DECISION"||u.type==="SWITCH"?(u.evaluatorType="value-param",u.caseValueParam="case_param",u.decisionCases={case1:[]},u.defaultCase=[]):u.type==="DO_WHILE"?(u.loopCondition="$.taskReferenceName.output.value < 10",u.loopOver=[]):u.type==="INLINE"?(u.evaluatorType="graaljs",u.inputParameters={expression:`function execute(input) {
|
|
7
|
+
return { result: input };
|
|
8
|
+
}
|
|
9
|
+
execute($.input);`}):u.type==="DYNAMIC"?(u.dynamicTaskNameParam="taskToExecute",u.inputParameters={taskToExecute:"${workflow.input.taskName}"}):u.type==="HUMAN"?u.humanTaskDef={userFormTemplate:"",assignmentCompletionStrategy:"LEAVE_OPEN"}:u.type==="START_WORKFLOW"?u.inputParameters={startWorkflow:{name:"",version:1,input:{},correlationId:""}}:u.type==="NOOP"&&(u.inputParameters={}),o.branchCase!==void 0||o.forkIndex!==void 0||o.isLoopAdd?fr(c.tasks,r,o,u):c.tasks.length===0?c.tasks.push(u):Se(c.tasks,r,u);fe(c.tasks);const{nodes:f,edges:p,taskMap:h}=me(c,l,{hideEmptyBranches:n().mode!=="edit"}),{nodes:v,edges:m}=de(f,p,{direction:l,mode:n().mode}),g=Te(c);e({workflowDef:c,nodes:v,edges:m,taskMap:h,validationResults:g})},removeNode:t=>{const{workflowDef:r,layoutDirection:a,nodes:i}=n();if(!r)return;const o=JSON.parse(JSON.stringify(r)),s=dr(o.tasks,t);if(s){const v=i.find(m=>m.id===t)?.data?.taskType;if(v==="FORK_JOIN"||v==="FORK_JOIN_DYNAMIC"){const m=hy(s,t);m&&We(o.tasks,m)}else if(v==="JOIN"||v==="EXCLUSIVE_JOIN"){const m=vy(s,t);m&&We(o.tasks,m)}}We(o.tasks,t),fe(o.tasks);const{nodes:l,edges:c,taskMap:u}=me(o,a,{hideEmptyBranches:n().mode!=="edit"}),{nodes:f,edges:p}=de(l,c,{direction:a,mode:n().mode}),h=Te(o);e({workflowDef:o,nodes:f,edges:p,taskMap:u,validationResults:h})},addLoopTask:(t,r)=>{const{workflowDef:a,layoutDirection:i}=n();if(!a)return;const o=JSON.parse(JSON.stringify(a)),s=Ne(o.tasks,t);if(s&&s.type==="DO_WHILE"){s.loopOver||(s.loopOver=[]);const l={name:`new_${r.toLowerCase()}`,taskReferenceName:`${t}_sub_${Date.now()}`,type:r,inputParameters:{}};s.loopOver.push(l),fe(o.tasks);const{nodes:c,edges:u,taskMap:f}=me(o,i,{hideEmptyBranches:n().mode!=="edit"}),{nodes:p,edges:h}=de(c,u,{direction:i,mode:n().mode}),v=Te(o);e({workflowDef:o,nodes:p,edges:h,taskMap:f,validationResults:v})}},removeLoopTask:(t,r)=>{const{workflowDef:a,layoutDirection:i}=n();if(!a)return;const o=JSON.parse(JSON.stringify(a)),s=Ne(o.tasks,t);if(s&&s.type==="DO_WHILE"&&s.loopOver){s.loopOver=s.loopOver.filter(v=>v.taskReferenceName!==r),fe(o.tasks);const{nodes:l,edges:c,taskMap:u}=me(o,i,{hideEmptyBranches:n().mode!=="edit"}),{nodes:f,edges:p}=de(l,c,{direction:i,mode:n().mode}),h=Te(o);e({workflowDef:o,nodes:f,edges:p,taskMap:u,validationResults:h})}},addDecisionBranch:(t,r)=>{const{workflowDef:a,layoutDirection:i}=n();if(!a)return;const o=JSON.parse(JSON.stringify(a)),s=Ne(o.tasks,t);if(s&&(s.type==="DECISION"||s.type==="SWITCH")){r==="default"?s.defaultCase||(s.defaultCase=[]):(s.decisionCases||(s.decisionCases={}),s.decisionCases[r]||(s.decisionCases[r]=[])),fe(o.tasks);const{nodes:l,edges:c,taskMap:u}=me(o,i,{hideEmptyBranches:n().mode!=="edit"}),{nodes:f,edges:p}=de(l,c,{direction:i,mode:n().mode}),h=Te(o);e({workflowDef:o,nodes:f,edges:p,taskMap:u,validationResults:h})}},removeDecisionBranch:(t,r)=>{const{workflowDef:a,layoutDirection:i}=n();if(!a)return;const o=JSON.parse(JSON.stringify(a)),s=Ne(o.tasks,t);if(s&&(s.type==="DECISION"||s.type==="SWITCH")){r==="default"?s.defaultCase=[]:s.decisionCases&&delete s.decisionCases[r],fe(o.tasks);const{nodes:l,edges:c,taskMap:u}=me(o,i,{hideEmptyBranches:n().mode!=="edit"}),{nodes:f,edges:p}=de(l,c,{direction:i,mode:n().mode}),h=Te(o);e({workflowDef:o,nodes:f,edges:p,taskMap:u,validationResults:h})}},addForkBranch:t=>{const{workflowDef:r,layoutDirection:a}=n();if(!r)return;const i=JSON.parse(JSON.stringify(r)),o=Ne(i.tasks,t);if(o&&o.type==="FORK_JOIN"){o.forkTasks||(o.forkTasks=[]),o.forkTasks.push([]),fe(i.tasks);const{nodes:s,edges:l,taskMap:c}=me(i,a,{hideEmptyBranches:n().mode!=="edit"}),{nodes:u,edges:f}=de(s,l,{direction:a,mode:n().mode}),p=Te(i);e({workflowDef:i,nodes:u,edges:f,taskMap:c,validationResults:p})}},copyTask:t=>e({copiedTask:t}),pasteTask:t=>{const{workflowDef:r,layoutDirection:a,selectedTask:i}=n();if(!r)return;const o=JSON.parse(JSON.stringify(r)),l=`_copy_${Date.now()}`,c=JSON.parse(JSON.stringify(t)),u=y=>{y.taskReferenceName=`${y.taskReferenceName}${l}`,y.decisionCases&&Object.values(y.decisionCases).forEach(x=>x.forEach(u)),y.defaultCase&&y.defaultCase.forEach(u),y.forkTasks&&y.forkTasks.forEach(x=>x.forEach(u)),y.loopOver&&y.loopOver.forEach(u)};u(c);const f=i?i.taskReferenceName:o.tasks.length>0?o.tasks[o.tasks.length-1].taskReferenceName:"start";if(c.type==="FORK_JOIN"){c.forkTasks||(c.forkTasks=[[],[]]);const y={name:`${c.name}_join`,taskReferenceName:`${c.taskReferenceName}_join`,type:"JOIN",joinOn:[]};o.tasks.length===0?o.tasks.push(c,y):(Se(o.tasks,f,c),Se(o.tasks,c.taskReferenceName,y))}else o.tasks.length===0?o.tasks.push(c):Se(o.tasks,f,c);fe(o.tasks);const{nodes:p,edges:h,taskMap:v}=me(o,a,{hideEmptyBranches:n().mode!=="edit"}),{nodes:m,edges:g}=de(p,h,{direction:a,mode:n().mode}),b=Te(o);e({workflowDef:o,nodes:m,edges:g,taskMap:v,validationResults:b})},setTheme:t=>e({theme:t}),setThemeColor:t=>e({themeColor:t}),setEdgeType:t=>e({edgeType:t}),setNodesLocked:t=>e({nodesLocked:t}),createBlankWorkflow:t=>{const r={name:t||"new_workflow",description:"",tasks:[],version:1,schemaVersion:2};n().setWorkflow(r),e({mode:"edit"})},applyAIGeneratedWorkflow:t=>{const{tasks:r,...a}=t,i={...a,name:t.name||"AI_Generated_Workflow",tasks:r||[],version:t.version||1,schemaVersion:2};n().setWorkflow(i)}}),{partialize:e=>({workflowDef:e.workflowDef,layoutDirection:e.layoutDirection,nodes:e.nodes,edges:e.edges,taskMap:e.taskMap,theme:e.theme,themeColor:e.themeColor,mode:e.mode,edgeType:e.edgeType,nodesLocked:e.nodesLocked,copiedTask:e.copiedTask}),equality:(e,n)=>JSON.stringify(e.workflowDef)===JSON.stringify(n.workflowDef)}),{name:"conductor-ui-prefs",version:1,storage:Ms(()=>localStorage),migrate:(e,n)=>(n===0&&e.edgeType==="default"&&(e.edgeType="smoothstep"),e),partialize:e=>({theme:e.theme,themeColor:e.themeColor,layoutDirection:e.layoutDirection,edgeType:e.edgeType,nodesLocked:e.nodesLocked,copiedTask:e.copiedTask})})),ch=({message:e,onConfirm:n,onCancel:t})=>{const r=M.useRef(null),{theme:a,themeColor:i}=te();return M.useEffect(()=>{r.current?.focus({preventScroll:!0});const o=s=>{s.key==="Escape"&&t()};return window.addEventListener("keydown",o),()=>window.removeEventListener("keydown",o)},[t]),Ph.createPortal(d.jsx("div",{"data-mode":a,"data-brand":i,onClick:t,style:{position:"fixed",top:0,left:0,width:"100vw",height:"100vh",backgroundColor:"rgba(0, 0, 0, 0.45)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:2e3},children:d.jsxs("div",{role:"dialog","aria-modal":"true","aria-label":"确认操作",onClick:o=>o.stopPropagation(),style:{backgroundColor:"var(--bg-secondary)",border:"1px solid var(--border-primary)",borderRadius:"8px",padding:"24px 28px",maxWidth:"380px",width:"90%",boxShadow:"0 8px 32px rgba(0, 0, 0, 0.18)"},children:[d.jsx("div",{style:{fontSize:"14px",color:"var(--text-primary)",marginBottom:"24px",lineHeight:"1.6"},children:e}),d.jsxs("div",{style:{display:"flex",justifyContent:"flex-end",gap:"10px"},children:[d.jsx("button",{ref:r,onClick:t,style:{padding:"7px 18px",backgroundColor:"var(--bg-tertiary)",border:"1px solid var(--border-primary)",borderRadius:"6px",color:"var(--text-primary)",cursor:"pointer",fontSize:"13px",fontWeight:500},children:"取消"}),d.jsx("button",{onClick:n,style:{padding:"7px 18px",backgroundColor:"var(--color-accent)",border:"none",borderRadius:"6px",color:"#ffffff",cursor:"pointer",fontSize:"13px",fontWeight:600},children:"确定"})]})]})}),document.body)},Ye=({children:e,nodeId:n,selected:t=!1,isStartOrEnd:r=!1,isError:a=!1,hasWarning:i=!1,isDecision:o=!1,isHighlighted:s=!1,executionStatus:l})=>{const{mode:c,removeNode:u}=te(),[f,p]=M.useState(!1),h=b=>{b.stopPropagation(),p(!0)},v=c==="edit"&&!r,m=o?`decision-node-wrapper ${t?"node-wrapper-selected":""} ${s?"node-wrapper-highlighted":""}`:`node-wrapper-glass ${t?"node-wrapper-selected":""} ${s?"node-wrapper-highlighted":""}`,g=M.useMemo(()=>{if(c!=="run")return{};if(!l)return{opacity:.4};switch(l){case"FAILED":case"FAILED_WITH_TERMINAL_ERROR":return{borderColor:"var(--status-failed)",boxShadow:"0 0 12px rgba(239, 68, 68, 0.5), 0 0 24px rgba(239, 68, 68, 0.2)"};case"TIMED_OUT":return{borderColor:"var(--status-timed-out)",boxShadow:"0 0 8px rgba(249, 115, 22, 0.4)"};case"IN_PROGRESS":case"SCHEDULED":return{borderColor:"var(--status-in-progress)",animation:"status-pulse 1.5s ease-in-out infinite"};case"COMPLETED":return{borderColor:"var(--status-completed)",opacity:.85};case"COMPLETED_WITH_ERRORS":return{borderColor:"var(--status-completed-with-errors)"};case"SKIPPED":case"CANCELED":return{opacity:.5};default:return{}}},[c,l]);return d.jsxs("div",{className:m,style:{position:"relative",...g},children:[v&&d.jsx("button",{onClick:h,"aria-label":"删除任务",style:{position:"absolute",top:"-10px",right:"-10px",width:"24px",height:"24px",borderRadius:"50%",backgroundColor:"#ef4444",color:"white",border:"2px solid white",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"14px",zIndex:100,boxShadow:"0 2px 8px rgba(0,0,0,0.2)",animation:"popIn 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275)",padding:0},title:"删除任务",children:"×"}),a&&d.jsx("div",{style:{position:"absolute",top:"-10px",left:"-10px",width:"24px",height:"24px",borderRadius:"50%",backgroundColor:"#ef4444",color:"white",border:"2px solid white",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"14px",zIndex:101,boxShadow:"0 2px 8px rgba(0,0,0,0.2)"},title:"此节点配置有误",children:"❗"}),!a&&i&&d.jsx("div",{style:{position:"absolute",top:"-10px",left:"-10px",width:"24px",height:"24px",borderRadius:"50%",backgroundColor:"#f59e0b",color:"white",border:"2px solid white",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"14px",zIndex:101,boxShadow:"0 2px 8px rgba(0,0,0,0.2)"},title:"此节点有警告信息",children:"⚠️"}),e,f&&d.jsx(ch,{message:"确定要删除此任务吗?",onConfirm:()=>{u(n),p(!1)},onCancel:()=>p(!1)})]})},by=({status:e})=>{const n=()=>{switch(e){case"SCHEDULED":return{icon:"○",className:"scheduled"};case"IN_PROGRESS":return{icon:"◐",className:"in-progress"};case"COMPLETED":return{icon:"✓",className:"completed"};case"COMPLETED_WITH_ERRORS":return{icon:"⚠",className:"completed-with-errors"};case"FAILED":case"FAILED_WITH_TERMINAL_ERROR":return{icon:"✗",className:"failed"};case"TIMED_OUT":return{icon:"⏱",className:"timed-out"};case"SKIPPED":return{icon:"⤳",className:"skipped"};case"CANCELED":return{icon:"⊘",className:"canceled"};default:return{icon:"?",className:"unknown"}}},{icon:t,className:r}=n();return d.jsx("div",{className:`execution-status-badge ${r}`,title:e,children:d.jsx("span",{className:"badge-icon",children:t})})},lh=M.memo(by),xy=({icon:e,header:n,title:t,meta:r,color:a,status:i,isRunning:o,children:s,width:l="240px",border:c=!0})=>d.jsxs("div",{style:{display:"flex",flexDirection:"row",width:l,height:"100%",position:"relative",overflow:"hidden",border:c?"4px solid var(--border-primary)":"none",borderRadius:"8px"},children:[d.jsx("div",{style:{width:"48px",display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"rgba(205, 74, 74, 0.03)",borderRight:"1px solid var(--color-accent)",color:a},children:d.jsx(e,{size:20,strokeWidth:1.5})}),d.jsxs("div",{style:{flex:1,padding:"10px 14px",display:"flex",flexDirection:"column",justifyContent:"center",overflow:"hidden"},children:[d.jsx("div",{style:{fontSize:"14px",fontWeight:700,textTransform:"uppercase",letterSpacing:"0.5px",opacity:.7,marginBottom:"4px",color:a},children:n}),d.jsx("div",{style:{fontSize:"18px",fontWeight:600,color:"var(--text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginBottom:"2px"},title:t,children:t}),r&&d.jsx("div",{style:{fontSize:"11px",color:"var(--text-secondary)",fontStyle:"italic",lineHeight:"1.4",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:r,children:r}),s&&d.jsx("div",{style:{marginTop:"8px"},children:s})]}),o&&i&&d.jsx("div",{style:{position:"absolute",top:"8px",right:"8px"},children:d.jsx(lh,{status:i})})]}),pr=M.memo(xy),Fe=e=>{const n=e.layoutDirection||"TB",t=e.sourcePosition||(n==="LR"?j.Position.Right:j.Position.Bottom),r=e.targetPosition||(n==="LR"?j.Position.Left:j.Position.Top);return{layoutDirection:n,sourcePosition:t,targetPosition:r}},Xe=e=>{const{mode:n,executionData:t}=te(),r=n==="run"?t?.[e]:null,a=n==="run",i=r?.attempts.some(l=>l.iteration!==void 0&&l.iteration>1)??!1,o=r?.attempts[r.attempts.length-1],s=i?0:o?.retryCount??0;return{mode:n,execution:r,isRunning:a,retryCount:s}};const _y=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),ky=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(n,t,r)=>r?r.toUpperCase():t.toLowerCase()),dh=e=>{const n=ky(e);return n.charAt(0).toUpperCase()+n.slice(1)},fh=(...e)=>e.filter((n,t,r)=>!!n&&n.trim()!==""&&r.indexOf(n)===t).join(" ").trim(),Sy=e=>{for(const n in e)if(n.startsWith("aria-")||n==="role"||n==="title")return!0};var Ty={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const wy=M.forwardRef(({color:e="currentColor",size:n=24,strokeWidth:t=2,absoluteStrokeWidth:r,className:a="",children:i,iconNode:o,...s},l)=>M.createElement("svg",{ref:l,...Ty,width:n,height:n,stroke:e,strokeWidth:r?Number(t)*24/Number(n):t,className:fh("lucide",a),...!i&&!Sy(s)&&{"aria-hidden":"true"},...s},[...o.map(([c,u])=>M.createElement(c,u)),...Array.isArray(i)?i:[i]]));const le=(e,n)=>{const t=M.forwardRef(({className:r,...a},i)=>M.createElement(wy,{ref:i,iconNode:n,className:fh(`lucide-${_y(dh(e))}`,`lucide-${e}`,r),...a}));return t.displayName=dh(e),t};const ph=le("activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);const Ny=le("circle-stop",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["rect",{x:"9",y:"9",width:"6",height:"6",rx:"1",key:"1ssd4o"}]]);const Ey=le("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);const hh=le("code-xml",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]]);const Cy=le("database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);const Lr=le("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);const Dr=le("git-merge",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M6 21V9a9 9 0 0 0 9 9",key:"7kw0sc"}]]);const Iy=le("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);const Ry=le("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]);const Oy=le("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);const jy=le("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);const Py=le("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);const vh=le("repeat",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]]);const Es=le("shuffle",[["path",{d:"m18 14 4 4-4 4",key:"10pe0f"}],["path",{d:"m18 2 4 4-4 4",key:"pucp1d"}],["path",{d:"M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22",key:"1ailkh"}],["path",{d:"M2 6h1.972a4 4 0 0 1 3.6 2.2",key:"km57vx"}],["path",{d:"M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45",key:"os18l9"}]]);const qy=le("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);const Ay=le("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);const Ly=le("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),Ze=[{type:"SIMPLE",label:"任务节点 (Worker)",description:"在远程 Worker 上执行的任务",category:"CORE",icon:ph},{type:"SUB_WORKFLOW",label:"子工作流 (Sub Workflow)",description:"调用并执行另一个工作流",category:"CORE",icon:Dr},{type:"START_WORKFLOW",label:"启动工作流 (Start Workflow)",description:"启动另一个工作流(不等待结果)",category:"SYSTEM",icon:jy},{type:"HTTP",label:"HTTP 请求",description:"发起 REST/HTTP 调用",category:"SYSTEM",icon:Iy},{type:"INLINE",label:"内联脚本 (Inline)",description:"执行内联脚本(JS/Python/GraalJS)",category:"SYSTEM",icon:hh},{type:"JSON_JQ_TRANSFORM",label:"JSON 转换 (JQ)",description:"使用 JQ 表达式转换 JSON 数据",category:"SYSTEM",icon:qy},{type:"KAFKA_PUBLISH",label:"Kafka 推送",description:"向 Kafka 主题推送消息",category:"SYSTEM",icon:Ry},{type:"EVENT",label:"事件 (Event)",description:"向外部队列系统发布事件",category:"SYSTEM",icon:Ly},{type:"WAIT",label:"等待 (Wait)",description:"暂停流程,直到特定时间或时长",category:"SYSTEM",icon:Ey},{type:"SET_VARIABLE",label:"设置变量 (Set Variable)",description:"设置工作流上下文变量",category:"SYSTEM",icon:Cy},{type:"TERMINATE",label:"终止 (Terminate)",description:"提前结束工作流执行",category:"SYSTEM",icon:Ny},{type:"HUMAN",label:"人工审批 (Human)",description:"等待人工审核或表单提交",category:"SYSTEM",icon:Ay},{type:"DYNAMIC",label:"动态任务 (Dynamic)",description:"运行时动态决定任务类型",category:"SYSTEM",icon:Es},{type:"NOOP",label:"空操作 (Noop)",description:"占位符任务,无实际操作",category:"SYSTEM",icon:Oy},{type:"LAMBDA",label:"Lambda 脚本 (旧)",description:"已被 INLINE 取代",category:"SYSTEM",icon:hh,hidden:!0},{type:"SWITCH",label:"条件分支 (Switch)",description:"基于条件的逻辑分支 (Switch/Case)",category:"FLOW",icon:Es},{type:"DECISION",label:"判断 (Decision,旧)",description:"基于条件的逻辑分支(旧版,推荐改用 Switch)",category:"FLOW",icon:Es,hidden:!0},{type:"FORK_JOIN",label:"静态并行 (Fork)",description:"并行执行多个预定义任务分支",category:"FLOW",icon:Lr},{type:"FORK_JOIN_DYNAMIC",label:"动态并行 (Dynamic Fork)",description:"运行时动态生成并行分支",category:"FLOW",icon:Lr},{type:"DO_WHILE",label:"循环 (Do-While)",description:"循环执行直到满足条件",category:"FLOW",icon:vh},{type:"JOIN",label:"汇聚 (Join)",description:"等待所有并行分支执行完成",category:"FLOW",icon:Dr}],Dy=[{key:"CORE",label:"基础任务"},{key:"FLOW",label:"逻辑控制"},{key:"SYSTEM",label:"系统集成"}],My=({id:e,data:n,selected:t})=>{const r=n.taskType||"SIMPLE",{sourcePosition:a,targetPosition:i}=Fe(n),{execution:o,isRunning:s,retryCount:l}=Xe(n.taskReferenceName),c=M.useMemo(()=>Ze.find(m=>m.type===r),[r]),u=c?.icon||ph,f=r==="NOOP",p=n.isDynamicRuntime===!0,h=f?"var(--text-secondary)":"var(--color-accent)",v=M.useMemo(()=>p?`Dynamic (${r})`:r==="SIMPLE"?n.label==="Worker Task"?"Execute on Worker":"Worker Task":r==="HTTP"?"REST API Call":r==="JSON_JQ_TRANSFORM"?"JQ Expression":r==="INLINE"||r==="LAMBDA"?"Inline Script":r==="START_WORKFLOW"?"Launch Workflow (no wait)":r==="DYNAMIC"?"Dynamic Task Type":r==="HUMAN"?"Human Approval":r==="NOOP"?"No Operation":c?.label||r,[r,c,n.label,p]);return d.jsx(Ye,{nodeId:e,selected:t,isError:n.isError,hasWarning:n.hasWarning,isHighlighted:n.isHighlighted,executionStatus:o?.status,children:d.jsxs("div",{style:{borderRadius:"8px",background:f?"var(--bg-tertiary)":"var(--bg-secondary)",opacity:f?.7:1,position:"relative",outline:p?"2px dashed var(--color-accent)":"none",outlineOffset:"-2px"},children:[d.jsx(pr,{icon:u,header:r,title:n.taskReferenceName,meta:v,color:h,status:o?.status,isRunning:s}),s&&l>0&&d.jsxs("div",{style:{position:"absolute",bottom:"4px",right:"4px",background:"var(--status-failed, #ef4444)",color:"#fff",borderRadius:"10px",fontSize:"10px",fontWeight:"700",padding:"1px 6px",zIndex:10,lineHeight:"1.4",pointerEvents:"none"},children:["×",l]}),p&&d.jsx("div",{style:{position:"absolute",top:"4px",right:"4px",background:"var(--color-accent)",color:"#fff",borderRadius:"4px",fontSize:"9px",fontWeight:"700",padding:"1px 5px",zIndex:10,pointerEvents:"none",opacity:.9},children:"动态"}),d.jsx(j.Handle,{type:"target",position:i,style:{background:"#fff"}}),d.jsx(j.Handle,{type:"source",position:a,style:{background:"#fff"}})]})})},By=M.memo(My),Wy=({id:e,data:n,selected:t})=>{const{layoutDirection:r}=Fe(n),{mode:a,execution:i,isRunning:o}=Xe(n.taskReferenceName),{addDecisionBranch:s,removeDecisionBranch:l}=te(),[c,u]=M.useState(!1),f=r==="LR"?j.Position.Left:j.Position.Top,p=Object.keys(n.decisionCases||n.task?.decisionCases||{}),h=()=>{const b=window.prompt("请输入新分支的名称 (case value):",`case_${p.length+1}`);b&&s(e,b),u(!1)},v=(b,y)=>{b.stopPropagation(),window.confirm(`确定要删除分支 "${y}" 及其下的所有任务吗?`)&&l(e,y)},g=o?(b=>b&&{SCHEDULED:"execution-node-scheduled",IN_PROGRESS:"execution-node-in-progress",COMPLETED:"execution-node-completed",COMPLETED_WITH_ERRORS:"execution-node-completed-with-errors",FAILED:"execution-node-failed",FAILED_WITH_TERMINAL_ERROR:"execution-node-failed-terminal",TIMED_OUT:"execution-node-timed-out",SKIPPED:"execution-node-skipped",CANCELED:"execution-node-canceled"}[b]||"")(i?.status):"";return d.jsx(Ye,{nodeId:e,selected:t,isError:n.isError,hasWarning:n.hasWarning,isDecision:!0,isHighlighted:n.isHighlighted,executionStatus:i?.status,children:d.jsxs("div",{style:{position:"relative"},children:[d.jsx(j.Handle,{type:"target",position:f,style:{background:"#fff",[r==="LR"?"left":"top"]:"-5px"}}),o&&i?.status&&d.jsx("div",{style:{position:"absolute",top:0,right:0,zIndex:20},children:d.jsx(lh,{status:i.status})}),d.jsx("div",{className:g,style:{width:"150px",height:"150px",background:o&&i?.status?void 0:"var(--bg-secondary)",border:t?"4px solid #fbbf24":o&&i?.status?void 0:"4px solid var(--border-primary)",transform:"rotate(45deg)",display:"flex",alignItems:"center",justifyContent:"center",boxShadow:t?"0 10px 30px rgba(0,0,0,0.3), 0 0 0 4px rgba(251, 191, 36, 0.3)":o&&i?.status?void 0:"0 4px 12px rgba(0,0,0,0.15)",transition:"all 0.3s ease",cursor:"pointer"},onClick:()=>a==="edit"&&u(!c),children:d.jsxs("div",{style:{transform:"rotate(-45deg)",color:"#fff",textAlign:"center",padding:"10px",width:"100%",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},children:[d.jsx("div",{style:{fontSize:"14px",fontWeight:700,textTransform:"uppercase",letterSpacing:"0.5px",opacity:.7,marginBottom:"4px",color:"var(--color-accent)"},children:n.taskType}),d.jsx("div",{style:{fontSize:"18px",fontWeight:600,color:"var(--text-primary)",lineHeight:"1.2",wordBreak:"break-word",maxHeight:"60px",overflow:"hidden",marginBottom:"4px"},children:n.label}),a==="edit"&&d.jsx("div",{style:{marginTop:"4px",width:"24px",height:"24px",fontSize:"16px",background:"rgba(255,255,255,0.1)",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",margin:"4px auto 0",color:"var(--text-secondary)"},children:"+"}),o&&i?.startTime&&d.jsx("div",{style:{fontSize:"9px",opacity:.7,marginTop:"8px"},children:i.endTime?`${((i.endTime-i.startTime)/1e3).toFixed(1)}s`:"◌"})]})}),a==="edit"&&c&&d.jsxs("div",{className:"glass-panel",style:{position:"absolute",top:"160px",left:"50%",transform:"translateX(-50%)",backgroundColor:"var(--glass-surface)",border:"1px solid var(--glass-border)",borderRadius:"8px",padding:"8px",zIndex:1e3,minWidth:"180px",boxShadow:"0 10px 25px rgba(0,0,0,0.5)",animation:"popIn 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275)",backdropFilter:"blur(12px)"},children:[d.jsx("div",{style:{padding:"4px 8px",fontSize:"11px",color:"var(--text-secondary)",borderBottom:"1px solid var(--glass-border)",marginBottom:"4px"},children:"分支管理"}),p.map(b=>d.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"6px 8px",fontSize:"12px",color:"var(--text-primary)"},children:[d.jsx("span",{children:b}),d.jsx("button",{onClick:y=>v(y,b),style:{width:"20px",height:"20px",borderRadius:"50%",backgroundColor:"#ef4444",color:"white",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"12px",padding:0},children:"×"})]},b)),d.jsx("button",{onClick:h,style:{width:"100%",marginTop:"4px",padding:"8px",backgroundColor:"var(--color-accent)",border:"none",borderRadius:"4px",color:"#fff",cursor:"pointer",fontSize:"12px",fontWeight:"bold"},children:"+ 添加新分支"})]}),r==="TB"?d.jsxs(d.Fragment,{children:[d.jsx(j.Handle,{type:"source",position:j.Position.Bottom,style:{background:"#fff",bottom:"-5px"}}),d.jsx(j.Handle,{type:"source",position:j.Position.Left,id:"left",style:{background:"#fff",left:"-5px"}}),d.jsx(j.Handle,{type:"source",position:j.Position.Right,id:"right",style:{background:"#fff",right:"-5px"}})]}):d.jsxs(d.Fragment,{children:[d.jsx(j.Handle,{type:"source",position:j.Position.Right,style:{background:"#fff",right:"-5px"}}),d.jsx(j.Handle,{type:"source",position:j.Position.Top,id:"top",style:{background:"#fff",top:"-5px"}}),d.jsx(j.Handle,{type:"source",position:j.Position.Bottom,id:"bottom",style:{background:"#fff",bottom:"-5px"}})]})]})})},Fy=M.memo(Wy),mh="var(--color-accent)",gh=M.memo(({id:e,data:n,selected:t})=>{const{layoutDirection:r,sourcePosition:a,targetPosition:i}=Fe(n),{mode:o,execution:s,isRunning:l}=Xe(n.taskReferenceName),{addForkBranch:c}=te(),u=j.useUpdateNodeInternals(),f=n.task?.forkTasks?.length||0;M.useEffect(()=>{u(e)},[f,e,u]);const p=n.isDynamic||n.taskType==="FORK_JOIN_DYNAMIC",v=M.useMemo(()=>Ze.find(m=>m.type==="FORK_JOIN"),[])?.icon||Lr;return d.jsx(Ye,{isHighlighted:n.isHighlighted,nodeId:e,selected:t,isError:n.isError,hasWarning:n.hasWarning,executionStatus:s?.status,children:d.jsxs("div",{className:`fork-node ${p?"dynamic":"static"}`,style:{borderRadius:"8px",background:"var(--bg-secondary)",position:"relative"},children:[d.jsx(pr,{icon:v,header:p?"DYNAMIC FORK":"FORK",title:n.taskReferenceName,meta:p?"Dynamic Parallel Execution":"Parallel Execution",color:mh,status:s?.status,isRunning:l}),o==="edit"&&!p&&d.jsx("div",{style:{position:"absolute",...r==="LR"?{top:"50%",right:-12,transform:"translateY(-50%)"}:{bottom:-12,left:"50%",transform:"translateX(-50%)"},width:20,height:20,background:"var(--color-accent)",borderRadius:"50%",color:"#fff",fontSize:"14px",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",zIndex:1e3,boxShadow:"0 2px 5px rgba(0,0,0,0.2)",border:"2px solid var(--bg-primary)"},onClick:m=>{m.stopPropagation(),c(e)},title:"添加分支",children:"+"}),d.jsx(j.Handle,{type:"target",position:i,style:{background:"#fff"}}),!p&&(n.task?.forkTasks||[]).map((m,g,b)=>{if(o!=="edit"&&(!m||m.length===0))return null;const y=o!=="edit"?b.filter(T=>T&&T.length>0):b,x=y.length,E=(y.indexOf(m)+1)/(x+1)*100;return d.jsx(j.Handle,{id:`branch_${g}`,type:"source",position:a,style:{background:"#fff",[r==="LR"?"top":"left"]:`${E}%`,[r==="LR"?"left":"top"]:void 0,[r==="LR"?"right":"bottom"]:"-4px",zIndex:10}},`branch_${g}`)}),!p&&(!n.task?.forkTasks||n.task.forkTasks.length===0)&&d.jsx(j.Handle,{type:"source",position:a,style:{background:"#fff"}}),p&&d.jsx(j.Handle,{type:"source",position:a,style:{background:"#fff"}})]})})});gh.displayName="ForkNode";const yh=M.memo(({id:e,data:n,selected:t})=>{const{layoutDirection:r,sourcePosition:a,targetPosition:i}=Fe(n),{execution:o,isRunning:s}=Xe(n.taskReferenceName),c=M.useMemo(()=>Ze.find(u=>u.type==="JOIN"),[])?.icon||Dr;return d.jsx(Ye,{isHighlighted:n.isHighlighted,nodeId:e,selected:t,isError:n.isError,hasWarning:n.hasWarning,executionStatus:o?.status,children:d.jsxs("div",{style:{borderRadius:"8px",background:"var(--bg-secondary)",position:"relative"},children:[d.jsx(pr,{icon:c,header:n.taskType==="EXCLUSIVE_JOIN"?"EXCLUSIVE JOIN":"JOIN",title:n.taskReferenceName,meta:n.taskType==="EXCLUSIVE_JOIN"?"Wait for any task":"Wait for tasks",color:mh,status:o?.status,isRunning:s}),d.jsx(j.Handle,{type:"target",position:i,style:{background:"#fff"}}),r==="TB"&&d.jsxs(d.Fragment,{children:[d.jsx(j.Handle,{type:"target",position:j.Position.Left,id:"left",style:{background:"#fff"}}),d.jsx(j.Handle,{type:"target",position:j.Position.Right,id:"right",style:{background:"#fff"}})]}),r==="LR"&&d.jsxs(d.Fragment,{children:[d.jsx(j.Handle,{type:"target",position:j.Position.Top,id:"top",style:{background:"#fff"}}),d.jsx(j.Handle,{type:"target",position:j.Position.Bottom,id:"bottom",style:{background:"#fff"}})]}),d.jsx(j.Handle,{type:"source",position:a,style:{background:"#fff"}})]})})});yh.displayName="JoinNode";const bh={ForkNode:gh,JoinNode:yh},zy="var(--color-accent)",$y=({id:e,data:n,selected:t})=>{const{layoutDirection:r,sourcePosition:a,targetPosition:i}=Fe(n),{mode:o,execution:s,isRunning:l}=Xe(n.taskReferenceName),{removeLoopTask:c,executionData:u,selectTaskAction:f}=te(),p=n.loopOver||n.task?.loopOver||[],h=p.length,v=M.useCallback((T,N)=>{N.stopPropagation();const C=new CustomEvent("miniTaskClick",{detail:{task:T},bubbles:!0});document.dispatchEvent(C)},[]),m=(T,N)=>{T.stopPropagation(),window.confirm("确定要从循环中删除此任务吗?")&&c(e,N)},b=M.useMemo(()=>Ze.find(T=>T.type==="DO_WHILE"),[])?.icon||vh,y=(T,N)=>{const C=r==="LR";return d.jsxs("div",{style:{position:"relative",marginBottom:!C&&(N<h-1||o==="edit")?"8px":"0",marginRight:C&&(N<h-1||o==="edit")?"8px":"0",display:C?"inline-block":"block"},children:[d.jsxs("div",{onClick:F=>v(T,F),style:{background:"var(--bg-tertiary)",borderRadius:"6px",padding:"6px 10px",fontSize:"10px",color:"var(--text-primary)",border:"1px solid var(--border-secondary)",cursor:"pointer",transition:"all 0.2s ease",minWidth:C?"80px":"auto",textAlign:"center",position:"relative"},children:[o==="edit"&&d.jsx("div",{onClick:F=>m(F,T.taskReferenceName),style:{position:"absolute",top:"-6px",right:"-6px",width:"16px",height:"16px",borderRadius:"50%",backgroundColor:"#ef4444",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"10px",border:"1px solid white"},children:"×"}),d.jsx("div",{style:{fontWeight:"600",marginBottom:"2px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"100px"},children:T.name||T.taskReferenceName})]}),N<h-1&&(C?d.jsx("div",{style:{position:"absolute",right:"-8px",top:"50%",transform:"translateY(-50%)",width:"8px",height:"2px",background:"var(--border-secondary)",pointerEvents:"none"}}):d.jsx("div",{style:{position:"absolute",left:"50%",bottom:"-8px",transform:"translateX(-50%)",width:"2px",height:"8px",background:"var(--border-secondary)",pointerEvents:"none"}}))]},N)},x=r==="LR",_=M.useMemo(()=>{if(!l||!u||p.length===0)return 0;let T=0;return p.forEach(N=>{const C=u[N.taskReferenceName];C?.totalIterations?T=Math.max(T,C.totalIterations):C?.attempts.some(I=>I.iteration!==void 0&&I.iteration>0)&&(T=Math.max(T,C.attempts.length))}),T},[l,u,p]),E=`Condition: ${n.loopCondition||"None"}`;return d.jsx(Ye,{nodeId:e,selected:t,isError:n.isError,hasWarning:n.hasWarning,isHighlighted:n.isHighlighted,executionStatus:s?.status,children:d.jsxs("div",{style:{borderRadius:"8px",background:"var(--bg-secondary)",minWidth:x&&r==="LR"?"320px":"240px",position:"relative",overflow:"visible"},children:[d.jsxs(pr,{icon:b,header:"DO WHILE",title:n.taskReferenceName,meta:E,color:zy,status:s?.status,isRunning:l,width:"100%",children:[(h>0||o==="edit")&&d.jsxs("div",{style:{background:"var(--bg-primary)",borderRadius:"6px",padding:"12px",marginTop:"8px",border:"1px dashed var(--border-secondary)",display:"flex",flexDirection:x?"row":"column",alignItems:x?"center":"stretch",flexWrap:"nowrap",gap:"8px",justifyContent:"flex-start"},children:[p.map((T,N)=>y(T,N)),o==="edit"&&d.jsx("div",{onClick:()=>{const T=new CustomEvent("loopAddNodeRequested",{detail:{loopId:e}});document.dispatchEvent(T)},style:{background:"var(--color-accent)",color:"#fff",borderRadius:"50%",width:"24px",height:"24px",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",fontSize:"16px",fontWeight:"bold",marginLeft:"0",marginRight:"0",flexShrink:0},children:"+"})]}),l&&_>0&&d.jsxs("div",{onClick:()=>f(n.task||null),style:{marginTop:"8px",padding:"4px 10px",background:"var(--bg-primary)",borderRadius:"6px",fontSize:"11px",color:"var(--color-accent)",textAlign:"center",cursor:"pointer",border:"1px solid var(--border-secondary)",fontWeight:"600"},children:["已完成 ",_," 次迭代"]})]}),d.jsx(j.Handle,{type:"target",position:i,style:{background:"#fff"}}),d.jsx(j.Handle,{type:"source",position:a,style:{background:"#fff"}})]})})},Hy=M.memo($y),Ky="var(--color-accent)",Uy=({id:e,data:n,selected:t})=>{const{sourcePosition:r,targetPosition:a}=Fe(n),{execution:i,isRunning:o}=Xe(n.taskReferenceName),l=M.useMemo(()=>Ze.find(f=>f.type==="SUB_WORKFLOW"),[])?.icon||Dr,c=n.task?.subWorkflowParam?.name||n.subWorkflowName||"Unknown",u=n.task?.subWorkflowParam?.version;return d.jsx(Ye,{nodeId:e,selected:t,isError:n.isError,hasWarning:n.hasWarning,isHighlighted:n.isHighlighted,executionStatus:i?.status,children:d.jsxs("div",{style:{borderRadius:"8px",background:"var(--bg-secondary)",position:"relative"},children:[d.jsx(pr,{icon:l,header:"SUB WORKFLOW",title:n.taskReferenceName,meta:`Flow: ${c} (v${u})`,color:Ky,status:i?.status,isRunning:o}),d.jsx(j.Handle,{type:"target",position:a,style:{background:"#fff"}}),d.jsx(j.Handle,{type:"source",position:r,style:{background:"#fff"}})]})})},Jy=M.memo(Uy),Gy=({data:e})=>{const t=(e.layoutDirection||"TB")==="LR";return d.jsxs("div",{className:"plus-node-container",style:{width:"32px",height:"32px",display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"50%",background:"var(--bg-secondary, #1e293b)",border:"2px dashed var(--color-accent, #3b82f6)",color:"var(--color-accent, #3b82f6)",cursor:"pointer",transition:"all 0.2s ease",padding:e.label&&e.label!=="+"?"0 12px":"0",minWidth:e.label&&e.label!=="+"?"80px":"32px",gap:"4px"},children:[d.jsx(Py,{size:16}),e.label&&e.label!=="+"&&d.jsx("span",{style:{fontSize:"12px",fontWeight:500},children:e.label}),d.jsx(j.Handle,{type:"target",position:t?j.Position.Left:j.Position.Top,style:{opacity:0}}),d.jsx("style",{dangerouslySetInnerHTML:{__html:`
|
|
10
|
+
.plus-node-container:hover {
|
|
11
|
+
transform: scale(1.1);
|
|
12
|
+
background: var(--color-accent);
|
|
13
|
+
color: #fff;
|
|
14
|
+
border-style: solid;
|
|
15
|
+
box-shadow: 0 0 10px var(--color-accent);
|
|
16
|
+
}
|
|
17
|
+
`}})]})},Vy=M.memo(Gy),Yy=({data:e})=>{const{sourcePosition:n,targetPosition:t}=Fe(e);return d.jsxs("div",{style:{width:"220px",height:"70px",border:"2px dashed var(--color-accent)",borderRadius:"8px",background:"var(--bg-secondary)",opacity:.75,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"4px",cursor:"default",userSelect:"none"},children:[d.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[d.jsx(Lr,{size:14,style:{color:"var(--color-accent)"}}),d.jsx("span",{style:{fontSize:"13px",fontWeight:600,color:"var(--color-accent)"},children:"动态分支"})]}),d.jsx("span",{style:{fontSize:"11px",color:"var(--text-secondary)"},children:"运行时生成"}),d.jsx(j.Handle,{type:"target",position:t,style:{background:"var(--color-accent)",width:8,height:8}}),d.jsx(j.Handle,{type:"source",position:n,style:{background:"var(--color-accent)",width:8,height:8}})]})},Xy=M.memo(Yy),Zy=({onSelect:e,onCancel:n})=>{const[t,r]=M.useState("CORE");M.useEffect(()=>{const i=o=>{o.key==="Escape"&&n()};return window.addEventListener("keydown",i),()=>window.removeEventListener("keydown",i)},[n]);const a=Ze.filter(i=>i.category===t&&!i.hidden);return d.jsxs("div",{style:{position:"fixed",top:0,left:0,width:"100vw",height:"100vh",backgroundColor:"rgba(0,0,0,0.6)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:2e3,backdropFilter:"blur(4px)",animation:"fadeIn 0.2s ease-out"},onClick:n,children:[d.jsxs("div",{className:"glass-panel",style:{backgroundColor:"var(--glass-surface)",borderRadius:"16px",padding:"0",width:"600px",height:"500px",boxShadow:"0 20px 50px rgba(0,0,0,0.4)",border:"1px solid var(--glass-border)",display:"flex",flexDirection:"column",overflow:"hidden"},onClick:i=>i.stopPropagation(),children:[d.jsxs("div",{style:{padding:"20px 24px 0",borderBottom:"1px solid var(--border-primary)",backgroundColor:"var(--bg-secondary)"},children:[d.jsx("h3",{style:{marginTop:0,marginBottom:"16px",color:"var(--text-primary)",fontSize:"18px",fontWeight:"600"},children:"添加任务"}),d.jsx("div",{style:{display:"flex",gap:"24px"},children:Dy.map(i=>d.jsx("button",{onClick:()=>r(i.key),style:{background:"none",border:"none",padding:"0 0 12px 0",fontSize:"14px",fontWeight:t===i.key?"600":"500",color:t===i.key?"var(--color-accent)":"var(--text-secondary)",borderBottom:t===i.key?"2px solid var(--color-accent)":"2px solid transparent",cursor:"pointer",transition:"all 0.2s"},children:i.label},i.key))})]}),d.jsx("div",{style:{flex:1,overflowY:"auto",padding:"24px",backgroundColor:"var(--bg-primary)"},children:d.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, 1fr)",gap:"12px"},children:a.map(i=>{const o=i.icon;return d.jsxs("button",{onClick:()=>e(i.type),style:{display:"flex",alignItems:"flex-start",gap:"16px",padding:"16px",backgroundColor:"var(--bg-tertiary)",border:"1px solid var(--border-primary)",borderRadius:"12px",cursor:"pointer",textAlign:"left",transition:"all 0.2s",color:"var(--text-primary)",position:"relative",overflow:"hidden"},onMouseEnter:s=>{s.currentTarget.style.borderColor="var(--color-accent)",s.currentTarget.style.backgroundColor="var(--bg-highlight)",s.currentTarget.style.transform="translateY(-2px)",s.currentTarget.style.boxShadow="0 4px 12px rgba(0,0,0,0.1)"},onMouseLeave:s=>{s.currentTarget.style.borderColor="var(--border-primary)",s.currentTarget.style.backgroundColor="var(--bg-tertiary)",s.currentTarget.style.transform="translateY(0)",s.currentTarget.style.boxShadow="none"},children:[d.jsx("div",{style:{padding:"10px",borderRadius:"8px",backgroundColor:"var(--bg-secondary)",color:"var(--color-accent)",display:"flex",alignItems:"center",justifyContent:"center"},children:d.jsx(o,{size:24,strokeWidth:1.5})}),d.jsxs("div",{children:[d.jsx("div",{style:{fontWeight:"600",fontSize:"14px",marginBottom:"4px"},children:i.label}),d.jsx("div",{style:{fontSize:"12px",color:"var(--text-secondary)",lineHeight:"1.4"},children:i.description})]})]},i.type)})})}),d.jsx("div",{style:{padding:"16px 24px",borderTop:"1px solid var(--border-primary)",backgroundColor:"var(--bg-secondary)",display:"flex",justifyContent:"flex-end"},children:d.jsx("button",{onClick:n,style:{padding:"8px 24px",backgroundColor:"transparent",border:"1px solid var(--border-primary)",borderRadius:"6px",color:"var(--text-primary)",cursor:"pointer",fontSize:"13px",fontWeight:"500",transition:"all 0.2s"},onMouseEnter:i=>i.currentTarget.style.backgroundColor="var(--bg-tertiary)",onMouseLeave:i=>i.currentTarget.style.backgroundColor="transparent",children:"取消"})})]}),d.jsx("style",{children:`
|
|
7
18
|
@keyframes fadeIn {
|
|
8
19
|
from { opacity: 0; }
|
|
9
20
|
to { opacity: 1; }
|
|
10
21
|
}
|
|
11
|
-
`})]})},
|
|
22
|
+
`})]})},xh=()=>{const{selectedTask:e,selectedTaskInstance:n,setSelectedTask:t,setSelectedTaskInstance:r,executionData:a,workflowInstance:i}=te(),[o,s]=M.useState("summary"),l=M.useRef(null),c=b=>{s(b)};M.useEffect(()=>{l.current?.scrollTo({top:0})},[o]);const u=e?.taskReferenceName==="__workflow_global__",f=e?a?.[e.taskReferenceName]:null;if(!e||!f&&!u)return null;const p=f?.attempts||[],h=n||p[p.length-1],v=()=>{t(null),r(null)},m=(b,y)=>{if(!b)return"-";const _=(y||Date.now())-b;return _<1e3?`${_}ms`:`${(_/1e3).toFixed(2)}s`},g=b=>({COMPLETED:"var(--status-completed)",FAILED:"var(--status-failed)",IN_PROGRESS:"var(--status-in-progress)",SCHEDULED:"var(--status-scheduled)",TIMED_OUT:"var(--status-timed-out)",CANCELED:"var(--status-canceled)"})[b]||"var(--text-secondary)";return d.jsxs("div",{className:"execution-details-panel",children:[d.jsx("style",{children:`
|
|
12
23
|
.execution-details-panel {
|
|
13
24
|
position: fixed;
|
|
14
25
|
right: 20px;
|
|
@@ -65,6 +76,7 @@ React keys must be passed directly to JSX without using spread:
|
|
|
65
76
|
|
|
66
77
|
.panel-content {
|
|
67
78
|
flex: 1;
|
|
79
|
+
min-height: 0;
|
|
68
80
|
overflow-y: auto;
|
|
69
81
|
padding: 20px;
|
|
70
82
|
}
|
|
@@ -170,9 +182,8 @@ React keys must be passed directly to JSX without using spread:
|
|
|
170
182
|
font-family: 'Fira Code', monospace;
|
|
171
183
|
font-size: 12px;
|
|
172
184
|
line-height: 1.5;
|
|
173
|
-
overflow: auto;
|
|
174
|
-
max-height: 300px;
|
|
175
185
|
color: var(--text-primary);
|
|
186
|
+
word-break: break-all;
|
|
176
187
|
}
|
|
177
188
|
|
|
178
189
|
.error-message {
|
|
@@ -184,16 +195,16 @@ React keys must be passed directly to JSX without using spread:
|
|
|
184
195
|
font-size: 12px;
|
|
185
196
|
color: var(--status-failed);
|
|
186
197
|
}
|
|
187
|
-
`}),
|
|
198
|
+
`}),d.jsxs("div",{className:"panel-header",children:[d.jsxs("div",{children:[d.jsx("h3",{className:"task-title",children:e.name}),d.jsx("div",{className:"task-ref",children:e.taskReferenceName})]}),d.jsx("button",{className:"close-btn",onClick:v,children:"✕"})]}),d.jsxs("div",{className:"panel-content",ref:l,children:[p.length>1&&d.jsxs("div",{className:"attempt-selector",children:[d.jsxs("label",{className:"selector-label",children:["执行记录 (",p.length," 次尝试",p.some(b=>b.iteration)?" / 迭代":"",")"]}),d.jsx("div",{className:"attempt-list",children:p.map((b,y)=>d.jsx("div",{className:`attempt-pill ${h?.taskId===b.taskId?"active":""}`,onClick:()=>r(b),children:b.iteration?`迭代 ${b.iteration}`:`尝试 ${y+1}`},b.taskId))})]}),d.jsxs("div",{className:"tabs",children:[d.jsx("button",{className:`tab-btn ${o==="summary"?"active":""}`,onClick:()=>c("summary"),children:"概览"}),d.jsx("button",{className:`tab-btn ${o==="input"?"active":""}`,onClick:()=>c("input"),children:"输入 (JSON)"}),d.jsx("button",{className:`tab-btn ${o==="output"?"active":""}`,onClick:()=>c("output"),children:"输出 (JSON)"})]}),d.jsxs("div",{children:[o==="summary"&&d.jsxs(d.Fragment,{children:[d.jsxs("div",{className:"info-grid",children:[d.jsxs("div",{className:"info-item",children:[d.jsx("label",{children:"执行状态"}),d.jsxs("div",{className:"status-badge",style:{background:`${g(u?i?.status:h?.status)}20`,color:g(u?i?.status:h?.status)},children:["● ",u?i?.status:h?.status]})]}),d.jsxs("div",{className:"info-item",children:[d.jsx("label",{children:"总耗时"}),d.jsx("span",{children:u?m(i?.startTime,i?.endTime):m(h?.startTime,h?.endTime)})]}),d.jsxs("div",{className:"info-item",children:[d.jsx("label",{children:"开始时间"}),d.jsx("span",{style:{fontSize:"12px"},children:(u?i?.startTime:h?.startTime)?new Date((u?i?.startTime:h?.startTime)||0).toLocaleTimeString():"-"})]}),d.jsxs("div",{className:"info-item",children:[d.jsx("label",{children:"结束时间"}),d.jsx("span",{style:{fontSize:"12px"},children:(u?i?.endTime:h?.endTime)?new Date((u?i?.endTime:h?.endTime)||0).toLocaleTimeString():"-"})]})]}),(u?i?.reasonForIncompletion:h?.reasonForIncompletion)&&d.jsxs("div",{className:"error-message",children:[d.jsx("strong",{children:"异常信息:"}),d.jsx("div",{style:{marginTop:"4px"},children:u?i?.reasonForIncompletion:h?.reasonForIncompletion})]}),d.jsxs("div",{className:"info-item",style:{marginTop:"20px"},children:[d.jsx("label",{children:u?"Workflow ID":"Task ID"}),d.jsx("span",{style:{fontSize:"11px",fontFamily:"monospace",opacity:.7},children:u?i?.workflowId:h?.taskId})]})]}),o==="input"&&d.jsx("div",{className:"json-block",children:d.jsx("pre",{children:JSON.stringify(u?i?.input:h?.inputData||{},null,2)})}),o==="output"&&d.jsx("div",{className:"json-block",children:d.jsx("pre",{children:JSON.stringify(u?i?.output:h?.outputData||{},null,2)})})]})]})]})},Qy=()=>{const{executionData:e,loadSampleExecution:n,importExecutionJSON:t,workflowInstance:r,setSelectedTask:a,nodes:i}=te(),{fitView:o}=j.useReactFlow(),s=v=>{const m=v.target.files?.[0];if(m){const g=new FileReader;g.onload=b=>{try{const y=JSON.parse(b.target?.result);t(y)}catch(y){console.error("Failed to parse execution JSON:",y)}},g.readAsText(m)}};if(!e)return d.jsxs("div",{className:"execution-status-bar",children:[d.jsx("input",{type:"file",id:"execution-json-upload",accept:".json",onChange:s,style:{display:"none"}}),d.jsx("div",{className:"status-item",children:d.jsx("span",{className:"status-label",children:"准备就绪"})}),d.jsxs("div",{style:{display:"flex",gap:"8px"},children:[d.jsx("button",{onClick:n,style:{background:"var(--color-accent)",color:"#fff",border:"none",padding:"6px 14px",borderRadius:"8px",cursor:"pointer",fontSize:"13px",fontWeight:"600",boxShadow:"0 4px 12px rgba(0,0,0,0.2)",transition:"all 0.2s ease"},children:"🚀 加载示例运行"}),d.jsx("button",{onClick:()=>document.getElementById("execution-json-upload")?.click(),title:"上传 Conductor 运行态 JSON",style:{background:"rgba(255,255,255,0.1)",color:"var(--text-primary)",border:"1px solid var(--border-primary)",padding:"6px 14px",borderRadius:"8px",cursor:"pointer",fontSize:"13px",fontWeight:"500",transition:"all 0.2s ease"},children:"📁 导入执行 JSON"})]})]});const l=Object.values(e),c=l.filter(v=>v.status==="COMPLETED").length,u=l.filter(v=>v.status==="FAILED"||v.status==="FAILED_WITH_TERMINAL_ERROR"||v.status==="TIMED_OUT"),f=u.length,p=l.filter(v=>v.status==="IN_PROGRESS"||v.status==="SCHEDULED").length,h=M.useCallback(()=>{if(f===0)return;const v=new Set(u.map(g=>g.taskReferenceName)),m=i.filter(g=>v.has(g.data?.taskReferenceName)).map(g=>g.id);m.length>0&&o({nodes:m.map(g=>({id:g})),duration:500,padding:.3})},[u,i,o,f]);return d.jsxs("div",{className:"execution-status-bar",children:[r&&d.jsxs(d.Fragment,{children:[d.jsxs("div",{className:"status-item",children:[d.jsx("span",{className:"status-label",children:" Workflow ID:"}),d.jsx("span",{className:"status-value highlight",style:{color:"var(--text-primary)",opacity:.8},children:r.workflowId})]}),d.jsx("div",{className:"status-divider"})]}),d.jsxs("div",{className:"status-item",children:[d.jsx("span",{className:"status-label",children:"状态:"}),d.jsx("span",{className:"status-value highlight",style:{color:r?.status==="COMPLETED"?"var(--status-completed)":"var(--status-in-progress)"},children:r?.status||"运行中"})]}),d.jsx("div",{className:"status-divider"}),d.jsxs("div",{className:"status-item",children:[d.jsx("span",{className:"status-label",children:"已完成:"}),d.jsx("span",{className:"status-value",children:c})]}),d.jsxs("div",{className:"status-item",onClick:f>0?h:void 0,style:{cursor:f>0?"pointer":"default",borderRadius:"4px",padding:"2px 6px",transition:"background 0.2s",...f>0?{background:"rgba(239, 68, 68, 0.1)"}:{}},title:f>0?"点击聚焦失败节点":void 0,children:[d.jsx("span",{className:"status-label",style:{color:"var(--status-failed)"},children:"失败:"}),d.jsx("span",{className:"status-value",style:{color:"var(--status-failed)"},children:f})]}),d.jsxs("div",{className:"status-item",children:[d.jsx("span",{className:"status-label",style:{color:"var(--status-in-progress)"},children:"处理中:"}),d.jsx("span",{className:"status-value",style:{color:"var(--status-in-progress)"},children:p})]}),d.jsx("div",{className:"status-divider"}),d.jsx("div",{style:{display:"flex",gap:"8px"},children:d.jsx("button",{onClick:()=>{a({name:"Workflow Global Data",taskReferenceName:"__workflow_global__",type:"SIMPLE"})},style:{background:"rgba(255,255,255,0.05)",color:"var(--text-primary)",border:"1px solid var(--border-primary)",padding:"4px 10px",borderRadius:"6px",cursor:"pointer",fontSize:"11px",fontWeight:"600"},children:"🔍 全局 I/O"})})]})},_h=({isOpen:e,onClose:n,theme:t="dark",onTaskSelect:r})=>{const{validationResults:a,setSelectedTask:i,taskMap:o}=te(),{errors:s,warnings:l}=a||{errors:[],warnings:[]},c=v=>{if(v&&v!=="UNKNOWN"){const m=o[v];m&&(r?r(m):i(m))}},u="var(--glass-surface)",f="var(--text-primary)",p="var(--glass-border)",h="var(--text-secondary)";return e?d.jsxs("div",{style:{position:"absolute",top:"80px",right:"24px",width:"320px",maxHeight:"500px",backgroundColor:u,border:`1px solid ${p}`,borderRadius:"12px",boxShadow:"0 10px 25px rgba(0,0,0,0.2)",zIndex:1100,display:"flex",flexDirection:"column",overflow:"hidden",animation:"fadeInSlide 0.2s ease-out"},children:[d.jsx("style",{children:`
|
|
188
199
|
@keyframes fadeInSlide {
|
|
189
200
|
from { opacity: 0; transform: translateY(-10px); }
|
|
190
201
|
to { opacity: 1; transform: translateY(0); }
|
|
191
202
|
}
|
|
192
203
|
.health-item:hover {
|
|
193
|
-
background-color: ${
|
|
204
|
+
background-color: ${t==="light"?"#f1f5f9":"rgba(255,255,255,0.05)"};
|
|
194
205
|
}
|
|
195
|
-
`}),f.jsxs("div",{style:{padding:"16px",borderBottom:`1px solid ${p}`,display:"flex",justifyContent:"space-between",alignItems:"center",backgroundColor:"rgba(0,0,0,0.02)"},children:[f.jsxs("div",{style:{fontWeight:"bold",fontSize:"14px",display:"flex",alignItems:"center",gap:"8px"},children:[f.jsx("span",{children:"🩺"})," 工作流体检报告"]}),f.jsx("button",{onClick:t,style:{background:"none",border:"none",color:h,cursor:"pointer",fontSize:"18px"},children:"✕"})]}),f.jsx("div",{style:{flex:1,overflowY:"auto",padding:"8px"},children:s.length===0&&c.length===0?f.jsxs("div",{style:{padding:"32px 16px",textAlign:"center",color:"#10b981"},children:[f.jsx("div",{style:{fontSize:"32px",marginBottom:"12px"},children:"✅"}),f.jsx("div",{style:{fontWeight:"bold"},children:"未发现问题"}),f.jsx("div",{style:{fontSize:"12px",opacity:.7,marginTop:"4px"},children:"工作流逻辑看起来很完美"})]}):f.jsxs(f.Fragment,{children:[s.map((m,g)=>f.jsxs("div",{className:"health-item",role:"button",tabIndex:m.ref?0:void 0,onKeyDown:v=>{(v.key==="Enter"||v.key===" ")&&u(m.ref)},onClick:()=>u(m.ref),style:{padding:"12px",borderRadius:"8px",marginBottom:"4px",cursor:m.ref?"pointer":"default",borderLeft:"4px solid #ef4444",transition:"background 0.2s"},children:[f.jsxs("div",{style:{fontSize:"12px",color:"#ef4444",fontWeight:"bold",marginBottom:"2px"},children:["ERROR ",m.ref!=="UNKNOWN"&&`[${m.ref}]`]}),f.jsx("div",{style:{fontSize:"13px",color:l},children:m.message})]},`err-${g}`)),c.map((m,g)=>f.jsxs("div",{className:"health-item",role:"button",tabIndex:m.ref?0:void 0,onKeyDown:v=>{(v.key==="Enter"||v.key===" ")&&u(m.ref)},onClick:()=>u(m.ref),style:{padding:"12px",borderRadius:"8px",marginBottom:"4px",cursor:m.ref?"pointer":"default",borderLeft:"4px solid #f59e0b",transition:"background 0.2s"},children:[f.jsxs("div",{style:{fontSize:"12px",color:"#f59e0b",fontWeight:"bold",marginBottom:"2px"},children:["WARNING ",m.ref!=="UNKNOWN"&&`[${m.ref}]`]}),f.jsx("div",{style:{fontSize:"13px",color:l},children:m.message})]},`warn-${g}`))]})}),f.jsxs("div",{style:{padding:"12px 16px",fontSize:"11px",color:h,borderTop:`1px solid ${p}`,backgroundColor:"rgba(0,0,0,0.02)",display:"flex",justifyContent:"space-between"},children:[f.jsxs("span",{children:["共 ",s.length," 个错误, ",c.length," 个警告"]}),s.length>0&&f.jsx("span",{style:{color:"#ef4444"},children:"无法保存/导出"})]})]}):null},My=({id:e,source:t,target:r,sourceX:n,sourceY:a,targetX:i,targetY:o,sourcePosition:s,targetPosition:c,style:u={},markerEnd:d,data:l})=>{const[p,h]=D.useState(!1),m=D.useRef(null),g=()=>{const E=l?.edgeType||"default",T={sourceX:n,sourceY:a,sourcePosition:s,targetX:i,targetY:o,targetPosition:c};switch(E){case"step":case"smoothstep":return q.getSmoothStepPath(T);case"straight":return q.getStraightPath(T);default:return q.getBezierPath(T)}},[v,x,b]=g(),_=E=>{E.stopPropagation(),E.preventDefault();const T=new CustomEvent("edgeAddNode",{detail:{id:e,source:t,target:r,edgeData:l}});window.dispatchEvent(T)},y=()=>{m.current&&clearTimeout(m.current),h(!0)},S=()=>{m.current=setTimeout(()=>{h(!1)},100)},w=l?.mode==="edit";return f.jsxs(f.Fragment,{children:[f.jsx(q.BaseEdge,{path:v,markerEnd:d,style:{...u,strokeWidth:p?4:2,stroke:p?"#fbbf24":u?.stroke,transition:"stroke 0.2s, stroke-width 0.2s",pointerEvents:"none"}}),f.jsx("path",{d:v,fill:"none",stroke:"transparent",strokeWidth:20,style:{cursor:w?"pointer":"default",pointerEvents:"all"},onMouseEnter:y,onMouseLeave:S}),w&&p&&f.jsx(q.EdgeLabelRenderer,{children:f.jsxs("div",{style:{position:"absolute",transform:`translate(-50%, -50%) translate(${x}px,${b}px)`,fontSize:12,pointerEvents:"all",zIndex:2e3,display:"flex",flexDirection:"column",alignItems:"center"},className:"nodrag nopan",onMouseEnter:y,onMouseLeave:S,children:[l?.label&&f.jsx("div",{style:{background:"var(--glass-bg-accent)",backdropFilter:"var(--glass-blur)",color:"var(--color-accent)",padding:"4px 10px",borderRadius:"6px",fontSize:"11px",fontWeight:"700",marginBottom:"8px",border:"1px solid var(--color-accent)",boxShadow:"0 4px 12px rgba(0,0,0,0.3)",whiteSpace:"nowrap",letterSpacing:"0.5px"},children:l.label}),f.jsx("button",{style:{width:"32px",height:"32px",backgroundColor:"var(--color-accent)",color:"#fff",border:"2px solid rgba(255,255,255,0.8)",borderRadius:"50%",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",fontWeight:"700",fontSize:"20px",boxShadow:"0 4px 15px rgba(var(--color-accent-rgb), 0.5)",transition:"all 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275)",padding:0},className:"edge-add-button",onClick:_,onMouseDown:E=>E.stopPropagation(),title:"在此处添加任务",children:"+"})]})})]})},pe=({onClick:e,icon:t,label:r,title:n,disabled:a=!1,active:i=!1,variant:o="default",style:s})=>{let c="var(--bg-tertiary)",u="var(--text-primary)",d="1px solid var(--border-primary)";return o==="primary"?(c="var(--color-accent)",u="#fff",d="none"):o==="danger"?(c=a?"rgba(239, 68, 68, 0.1)":"var(--status-failed)",u=a?"var(--text-secondary)":"#fff",d="none"):i&&(c="var(--bg-secondary)",u="var(--color-accent)",d="1px solid var(--color-accent)"),f.jsxs("button",{onClick:e,disabled:a,title:n,"aria-label":n||r,"aria-pressed":i,"aria-disabled":a,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:r?"6px":"0",background:c,color:u,border:d,borderRadius:"6px",padding:r?"6px 12px":"8px",cursor:a?"not-allowed":"pointer",opacity:a?.5:1,fontSize:"13px",fontWeight:500,transition:"all 0.2s",minWidth:r?"auto":"32px",height:"32px",boxShadow:o==="default"?"0 1px 2px rgba(0,0,0,0.05)":"none",...s},children:[t&&f.jsx("span",{style:{fontSize:"14px",display:"flex"},children:t}),r&&f.jsx("span",{children:r})]})},By=()=>{const{zoomIn:e,zoomOut:t,fitView:r}=q.useReactFlow();return f.jsx("div",{style:{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"10px"},children:f.jsxs("div",{style:{display:"flex",background:"var(--bg-tertiary)",padding:"4px",borderRadius:"8px",border:"1px solid var(--border-primary)",gap:"4px",boxShadow:"0 2px 5px rgba(0,0,0,0.05)"},children:[f.jsx(pe,{icon:"➕",title:"放大",onClick:()=>e()}),f.jsx(pe,{icon:"➖",title:"缩小",onClick:()=>t()}),f.jsx(pe,{icon:"⤢",title:"适应屏幕",onClick:()=>r({duration:600})})]})})},Wy=({onShowHealthCheck:e,showHealthCheck:t,onShowSettings:r,executionActions:n})=>{const{mode:a,validationResults:i,workflowInstance:o,workflowDef:s}=V(),c=V.temporal,{undo:u,redo:d,pastStates:l,futureStates:p}=jr(c,v=>v),h=(i?.errors?.length||0)>0,m=o?.status,g=o?.workflowId??"";return f.jsxs("div",{className:"action-bar",style:{display:"flex",gap:"8px"},children:[a==="edit"&&f.jsxs(f.Fragment,{children:[f.jsx(pe,{icon:"↺",title:"撤销 (Cmd+Z)",onClick:()=>u(),disabled:l.length===0}),f.jsx(pe,{icon:"↻",title:"重做 (Cmd+Shift+Z)",onClick:()=>d(),disabled:p.length===0}),f.jsx("div",{style:{width:"1px",height:"20px",background:"var(--border-primary)",margin:"0 4px",alignSelf:"center"}}),f.jsx(pe,{icon:"🩺",label:h?`错误 (${i.errors.length})`:"诊断",title:"流程健康检查",onClick:e,active:t,variant:h?"danger":"secondary"}),f.jsx(pe,{icon:"⚙️",label:"配置",title:"工作流全局配置",onClick:()=>r?.()})]}),a==="run"&&o&&n&&f.jsx(f.Fragment,{children:m==="PAUSED"?n.onResume&&f.jsx(pe,{icon:"▶️",label:"恢复",title:"恢复执行",onClick:()=>n.onResume(g),variant:"primary"}):f.jsxs(f.Fragment,{children:[n.onPause&&m==="RUNNING"&&f.jsx(pe,{icon:"⏸️",label:"暂停",title:"暂停执行",onClick:()=>n.onPause(g)}),n.onTerminate&&m==="RUNNING"&&f.jsx(pe,{icon:"⏹️",label:"停止",title:"终止执行",onClick:()=>n.onTerminate(g),variant:"danger"}),n.onRetry&&(m==="FAILED"||m==="TIMED_OUT"||m==="TERMINATED")&&f.jsx(pe,{icon:"🔄",label:"重试",title:"重试执行",onClick:()=>n.onRetry(g),variant:"primary"}),n.onRestart&&s?.restartable===!0&&f.jsx(pe,{icon:"◀️",label:"重启",title:"重启执行",onClick:()=>n.onRestart(g)})]})})]})},Fy=[{id:"basic",label:"基本信息"},{id:"timeout",label:"超时与容错"},{id:"params",label:"参数配置"},{id:"advanced",label:"高级设置"}],$y=({isOpen:e,onClose:t})=>{const{workflowDef:r,updateWorkflowProperties:n,mode:a}=V(),[i,o]=D.useState(r),[s,c]=D.useState("basic"),u=a!=="edit";D.useEffect(()=>{r&&o(r)},[r,e]);const d=D.useCallback(N=>{N.key==="Escape"&&t()},[t]);if(D.useEffect(()=>{if(e)return document.addEventListener("keydown",d),()=>document.removeEventListener("keydown",d)},[e,d]),!e||!i)return null;const l="var(--text-primary)",p="var(--glass-border)",h="var(--bg-tertiary)",m="var(--text-secondary)",g=(N,M)=>{if(!i||u)return;const L={...i,[N]:M};o(L),n({[N]:M})},v=(N,M,L)=>{if(!i||u)return;const U={...i[N]||{},[M]:L};o(W=>({...W,[N]:U})),n({[N]:U})},x=(N,M)=>{if(!(!i||u))try{const L=JSON.parse(M),$={...i,[N]:L};o($),n({[N]:L})}catch{o(L=>({...L,[`_${N}_str`]:M}))}},b={width:"100%",padding:"10px 14px",borderRadius:"8px",border:`1px solid ${p}`,background:h,color:l,fontSize:"14px",outline:"none",boxSizing:"border-box"},_={display:"block",fontSize:"11px",color:m,marginBottom:"8px",fontWeight:600},y=(N,M,L="text",$)=>f.jsxs("div",{style:{marginBottom:"20px"},children:[f.jsx("label",{style:_,children:N.toUpperCase()}),f.jsx("input",{className:"wsp-input",type:L,value:i?.[M]??"",onChange:U=>g(M,L==="number"?U.target.value===""?0:parseInt(U.target.value):U.target.value),disabled:u||$?.readOnly,placeholder:$?.placeholder,style:{...b,opacity:u||$?.readOnly?.6:1}})]}),S=(N,M,L=!1,$=6)=>{const U=i?.[`_${M}_str`]!==void 0?i[`_${M}_str`]:typeof i?.[M]=="object"?JSON.stringify(i[M],null,2):i?.[M];return f.jsxs("div",{style:{marginBottom:"20px"},children:[f.jsxs("label",{style:_,children:[N.toUpperCase()," ",L&&"(JSON)"]}),f.jsx("textarea",{className:"wsp-input",value:U||"",onChange:W=>L?x(M,W.target.value):g(M,W.target.value),rows:$,disabled:u,style:{...b,fontSize:"13px",fontFamily:L?"var(--font-mono)":"inherit",resize:"vertical",opacity:u?.6:1}})]})},w=(N,M,L)=>f.jsxs("div",{style:{marginBottom:"20px"},children:[f.jsx("label",{style:_,children:N.toUpperCase()}),f.jsx("select",{className:"wsp-input",value:i?.[M]??L[0]?.value,onChange:$=>g(M,$.target.value),disabled:u,style:{...b,opacity:u?.6:1,cursor:u?"not-allowed":"pointer"},children:L.map($=>f.jsx("option",{value:$.value,children:$.label},$.value))})]}),E=(N,M)=>{const L=!!i?.[M];return f.jsxs("div",{style:{marginBottom:"20px",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[f.jsx("label",{style:{fontSize:"13px",color:l},children:N}),f.jsx("button",{type:"button",role:"switch","aria-checked":L,onClick:()=>!u&&g(M,!L),disabled:u,style:{width:"44px",height:"24px",borderRadius:"12px",border:"none",background:L?"var(--color-accent)":"var(--border-primary)",position:"relative",cursor:u?"not-allowed":"pointer",transition:"background 0.2s",opacity:u?.6:1,flexShrink:0},children:f.jsx("span",{style:{position:"absolute",top:"2px",left:L?"22px":"2px",width:"20px",height:"20px",borderRadius:"50%",background:"var(--text-inverse)",transition:"left 0.2s",boxShadow:"0 1px 3px rgba(0,0,0,0.2)"}})})]})},T=()=>f.jsxs(f.Fragment,{children:[f.jsxs("div",{style:{display:"grid",gridTemplateColumns:"3fr 1fr",gap:"20px"},children:[y("工作流名称","name"),y("版本号","version","number")]}),S("描述信息","description",!1,3),y("负责人邮箱","ownerEmail","text",{placeholder:"owner@example.com"}),y("Schema 版本","schemaVersion","number",{readOnly:!0})]}),C=()=>f.jsxs(f.Fragment,{children:[w("超时策略","timeoutPolicy",[{value:"ALERT_ONLY",label:"ALERT_ONLY — 仅告警"},{value:"TIME_OUT_WF",label:"TIME_OUT_WF — 超时终止"}]),f.jsxs("div",{children:[y("超时秒数","timeoutSeconds","number",{placeholder:"0 表示不超时"}),i?.timeoutPolicy==="ALERT_ONLY"&&f.jsx("p",{style:{fontSize:"11px",color:m,marginTop:"-12px",marginBottom:"20px"},children:"当前策略为 ALERT_ONLY,超时仅触发告警,不会终止工作流。"})]}),y("失败补偿工作流","failureWorkflow","text",{placeholder:"输入补偿工作流名称"}),E("允许重启 (restartable)","restartable")]}),R=()=>f.jsxs(f.Fragment,{children:[S("输入参数声明 (inputParameters)","inputParameters",!0),S("输出参数映射 (outputParameters)","outputParameters",!0),S("默认输入模板 (inputTemplate)","inputTemplate",!0),S("工作流级变量 (variables)","variables",!0)]}),A=()=>f.jsxs(f.Fragment,{children:[E("启用状态监听 (workflowStatusListenerEnabled)","workflowStatusListenerEnabled"),i?.workflowStatusListenerEnabled&&y("状态事件目标 (Listener Sink)","workflowStatusListenerSink","text",{placeholder:"conductor:workflow_status_event"}),f.jsxs("div",{style:{borderTop:`1px solid ${p}`,marginTop:"8px",paddingTop:"20px"},children:[E("强制 Schema 校验 (enforceSchema)","enforceSchema"),i?.enforceSchema&&f.jsxs(f.Fragment,{children:[S("输入 Schema (inputSchema)","inputSchema",!0,4),S("输出 Schema (outputSchema)","outputSchema",!0,4)]})]}),f.jsxs("div",{style:{borderTop:`1px solid ${p}`,marginTop:"8px",paddingTop:"20px"},children:[f.jsx("label",{style:{..._,marginBottom:"16px"},children:"并发限流 (RATE LIMIT)"}),f.jsxs("div",{style:{display:"grid",gridTemplateColumns:"2fr 1fr",gap:"20px"},children:[f.jsxs("div",{children:[f.jsx("label",{style:_,children:"RATE LIMIT KEY"}),f.jsx("input",{className:"wsp-input",type:"text",value:i?.rateLimitConfig?.rateLimitKey??"",onChange:N=>v("rateLimitConfig","rateLimitKey",N.target.value),disabled:u,placeholder:"限流键",style:{...b,opacity:u?.6:1}})]}),f.jsxs("div",{children:[f.jsx("label",{style:_,children:"并发上限"}),f.jsx("input",{className:"wsp-input",type:"number",value:i?.rateLimitConfig?.concurrentExecLimit??"",onChange:N=>v("rateLimitConfig","concurrentExecLimit",N.target.value===""?0:parseInt(N.target.value)),disabled:u,placeholder:"0",style:{...b,opacity:u?.6:1}})]})]})]})]}),B=()=>{switch(s){case"basic":return T();case"timeout":return C();case"params":return R();case"advanced":return A()}};return f.jsx("div",{role:"dialog","aria-modal":"true","aria-label":"工作流全局配置",onClick:t,style:{position:"fixed",left:0,top:0,width:"100vw",height:"100vh",backgroundColor:"rgba(0,0,0,0.5)",zIndex:1300,display:"flex",justifyContent:"center",alignItems:"center",backdropFilter:"blur(4px)",animation:"fadeIn 0.2s ease"},children:f.jsxs("div",{onClick:N=>N.stopPropagation(),style:{width:"680px",maxHeight:"85vh",background:"var(--glass-surface)",borderRadius:"16px",boxShadow:"0 25px 50px -12px rgba(0, 0, 0, 0.5)",display:"flex",flexDirection:"column",overflow:"hidden",animation:"slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1)",border:`1px solid ${p}`,backdropFilter:"blur(20px)"},children:[f.jsxs("div",{style:{padding:"24px 32px 0 32px",background:"var(--bg-highlight)"},children:[f.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"20px"},children:[f.jsxs("div",{children:[f.jsx("h2",{style:{margin:0,fontSize:"20px",color:l},children:"工作流全局配置"}),f.jsx("p",{style:{margin:"4px 0 0 0",fontSize:"12px",color:m},children:u?"当前为只读模式":"配置工作流级属性,所有更改将实时保存"})]}),f.jsx("button",{className:"wsp-close",onClick:t,"aria-label":"关闭",style:{background:"none",border:"none",color:l,fontSize:"24px",cursor:"pointer",opacity:.6},children:"✕"})]}),f.jsx("div",{style:{display:"flex",borderBottom:`1px solid ${p}`},children:Fy.map(N=>f.jsx("button",{className:"wsp-tab",onClick:()=>c(N.id),style:{padding:"10px 20px",fontSize:"13px",fontWeight:s===N.id?600:400,color:s===N.id?"var(--color-accent)":m,background:"none",border:"none",borderBottom:s===N.id?"2px solid var(--color-accent)":"2px solid transparent",cursor:"pointer",transition:"all 0.2s",marginBottom:"-1px"},children:N.label},N.id))})]}),f.jsx("div",{style:{flex:1,overflowY:"auto",padding:"28px 32px"},children:B()}),f.jsx("div",{style:{padding:"20px 32px",borderTop:`1px solid ${p}`,background:"var(--bg-highlight)",display:"flex",justifyContent:"flex-end"},children:f.jsx("button",{className:"wsp-footer-btn",onClick:t,style:{padding:"12px 32px",background:"var(--color-accent)",color:"var(--text-inverse)",border:"none",borderRadius:"12px",fontWeight:"bold",cursor:"pointer",boxShadow:"0 4px 12px var(--color-accent-bg)"},children:"完成并关闭"})})]})})},zy=({onRequestImport:e})=>{const{createBlankWorkflow:t}=V(),[r,n]=D.useState(""),a=()=>{t(r||void 0),V.temporal.getState().clear()},i=()=>{t(r||void 0),V.temporal.getState().clear(),window.dispatchEvent(new CustomEvent("open-ai-chat"))};return f.jsxs("div",{className:"empty-state-panel",children:[f.jsx("h2",{className:"empty-state-title",children:"创建新工作流"}),f.jsx("p",{className:"empty-state-subtitle",children:"从空白画布开始设计,或让 AI 帮你生成完整流程"}),f.jsx("input",{className:"empty-state-name-input",type:"text",placeholder:"工作流名称(可选)",value:r,onChange:o=>n(o.target.value),onKeyDown:o=>{o.key==="Enter"&&a()}}),f.jsxs("div",{className:"empty-state-actions",children:[f.jsxs("button",{className:"empty-state-btn primary",onClick:a,children:[f.jsx("span",{className:"empty-state-btn-icon",children:"📄"}),"空白工作流"]}),f.jsxs("button",{className:"empty-state-btn",onClick:i,children:[f.jsx("span",{className:"empty-state-btn-icon",children:"✨"}),"AI 生成"]}),e&&f.jsxs("button",{className:"empty-state-btn",onClick:e,children:[f.jsx("span",{className:"empty-state-btn-icon",children:"📤"}),"导入 JSON"]})]})]})},Hy={success:{bg:"#10b981",text:"#fff"},error:{bg:"#ef4444",text:"#fff"},info:{bg:"var(--color-accent)",text:"#fff"}},Gy=({messages:e,onDismiss:t})=>e.length===0?null:f.jsx("div",{style:{position:"fixed",bottom:"24px",left:"50%",transform:"translateX(-50%)",zIndex:3e3,display:"flex",flexDirection:"column",gap:"8px",pointerEvents:"none"},children:e.map(r=>f.jsx(Uy,{message:r,onDismiss:t},r.id))}),Uy=({message:e,onDismiss:t})=>{const r=Hy[e.type||"info"];return D.useEffect(()=>{const n=setTimeout(()=>t(e.id),2500);return()=>clearTimeout(n)},[e.id,t]),f.jsx("div",{role:"status","aria-live":"polite",style:{backgroundColor:r.bg,color:r.text,padding:"10px 20px",borderRadius:"8px",fontSize:"13px",fontWeight:500,boxShadow:"0 4px 16px rgba(0,0,0,0.2)",animation:"toastSlideUp 0.3s ease-out",pointerEvents:"auto",cursor:"pointer",whiteSpace:"nowrap"},onClick:()=>t(e.id),children:e.text})},fh=["shift","alt","meta","mod","ctrl","control"],Ky={esc:"escape",return:"enter",left:"arrowleft",right:"arrowright",up:"arrowup",down:"arrowdown",ShiftLeft:"shift",ShiftRight:"shift",AltLeft:"alt",AltRight:"alt",MetaLeft:"meta",MetaRight:"meta",OSLeft:"meta",OSRight:"meta",ControlLeft:"ctrl",ControlRight:"ctrl"};function Ee(e){return(Ky[e.trim()]||e.trim()).toLowerCase().replace(/key|digit|numpad/,"")}function ph(e){return fh.includes(e)}function bs(e,t=","){return e.toLowerCase().split(t)}function xs(e,t="+",r=">",n=!1,a){let i=[],o=!1;e=e.trim(),e.includes(r)?(o=!0,i=e.toLocaleLowerCase().split(r).map(u=>Ee(u))):i=e.toLocaleLowerCase().split(t).map(u=>Ee(u));const s={alt:i.includes("alt"),ctrl:i.includes("ctrl")||i.includes("control"),shift:i.includes("shift"),meta:i.includes("meta"),mod:i.includes("mod"),useKey:n},c=i.filter(u=>!fh.includes(u));return{...s,keys:c,description:a,isSequence:o,hotkey:e}}typeof document<"u"&&(document.addEventListener("keydown",e=>{e.code!==void 0&&hh([Ee(e.code)])}),document.addEventListener("keyup",e=>{e.code!==void 0&&vh([Ee(e.code)])})),typeof window<"u"&&(window.addEventListener("blur",()=>{ke.clear()}),window.addEventListener("contextmenu",()=>{setTimeout(()=>{ke.clear()},0)}));const ke=new Set;function _s(e){return Array.isArray(e)}function Jy(e,t=","){return(_s(e)?e:e.split(t)).every(r=>ke.has(r.trim().toLowerCase()))}function hh(e){const t=Array.isArray(e)?e:[e];ke.has("meta")&&ke.forEach(r=>!ph(r)&&ke.delete(r.toLowerCase())),t.forEach(r=>ke.add(r.toLowerCase()))}function vh(e){const t=Array.isArray(e)?e:[e];e==="meta"?ke.clear():t.forEach(r=>ke.delete(r.toLowerCase()))}function Vy(e,t,r){(typeof r=="function"&&r(e,t)||r===!0)&&e.preventDefault()}function Yy(e,t,r){return typeof r=="function"?r(e,t):r===!0||r===void 0}const Xy=["input","textarea","select","searchbox","slider","spinbutton","menuitem","menuitemcheckbox","menuitemradio","option","radio","textbox"];function Zy(e){return gh(e,Xy)}function gh(e,t=!1){const{target:r,composed:n}=e;let a,i;return Qy(r)&&n?(a=e.composedPath()[0]&&e.composedPath()[0].tagName,i=e.composedPath()[0]&&e.composedPath()[0].role):(a=r&&r.tagName,i=r&&r.role),_s(t)?!!(a&&t&&t.some(o=>o.toLowerCase()===a.toLowerCase()||o===i)):!!(a&&t&&t)}function Qy(e){return!!e.tagName&&!e.tagName.startsWith("-")&&e.tagName.includes("-")}function eb(e,t){return e.length===0&&t?(console.warn('A hotkey has the "scopes" option set, however no active scopes were found. If you want to use the global scopes feature, you need to wrap your app in a <HotkeysProvider>'),!0):t?e.some(r=>t.includes(r))||e.includes("*"):!0}const rb=(e,t,r=!1)=>{const{alt:n,meta:a,mod:i,shift:o,ctrl:s,keys:c,useKey:u}=t,{code:d,key:l,ctrlKey:p,metaKey:h,shiftKey:m,altKey:g}=e,v=Ee(d);if(u&&c?.length===1&&c.includes(l))return!0;if(!c?.includes(v)&&!["ctrl","control","unknown","meta","alt","shift","os"].includes(v))return!1;if(!r){if(n!==g&&v!=="alt"||o!==m&&v!=="shift")return!1;if(i){if(!h&&!p)return!1}else if(a!==h&&v!=="meta"&&v!=="os"||s!==p&&v!=="ctrl"&&v!=="control")return!1}return c&&c.length===1&&c.includes(v)?!0:c?Jy(c):!c},tb=D.createContext(void 0),nb=()=>D.useContext(tb);function mh(e,t){return e&&t&&typeof e=="object"&&typeof t=="object"?Object.keys(e).length===Object.keys(t).length&&Object.keys(e).reduce((r,n)=>r&&mh(e[n],t[n]),!0):e===t}const ab=D.createContext({hotkeys:[],activeScopes:[],toggleScope:()=>{},enableScope:()=>{},disableScope:()=>{}}),ib=()=>D.useContext(ab);function ob(e){const t=D.useRef(void 0);return mh(t.current,e)||(t.current=e),t.current}const yh=e=>{e.stopPropagation(),e.preventDefault(),e.stopImmediatePropagation()},sb=typeof window<"u"?D.useLayoutEffect:D.useEffect;function ze(e,t,r,n){const a=D.useRef(null),i=D.useRef(!1),o=Array.isArray(r)?Array.isArray(n)?void 0:n:r,s=_s(e)?e.join(o?.delimiter):e,c=Array.isArray(r)?r:Array.isArray(n)?n:void 0,u=D.useCallback(t,c??[]),d=D.useRef(u);c?d.current=u:d.current=t;const l=ob(o),{activeScopes:p}=ib(),h=nb();return sb(()=>{if(l?.enabled===!1||!eb(p,l?.scopes))return;let m=[],g;const v=(y,S=!1)=>{if(!(Zy(y)&&!gh(y,l?.enableOnFormTags))){if(a.current!==null){const w=a.current.getRootNode();if((w instanceof Document||w instanceof ShadowRoot)&&w.activeElement!==a.current&&!a.current.contains(w.activeElement)){yh(y);return}}y.target?.isContentEditable&&!l?.enableOnContentEditable||bs(s,l?.delimiter).forEach(w=>{if(w.includes(l?.splitKey??"+")&&w.includes(l?.sequenceSplitKey??">")){console.warn(`Hotkey ${w} contains both ${l?.splitKey??"+"} and ${l?.sequenceSplitKey??">"} which is not supported.`);return}const E=xs(w,l?.splitKey,l?.sequenceSplitKey,l?.useKey,l?.description);if(E.isSequence){g=setTimeout(()=>{m=[]},l?.sequenceTimeoutMs??1e3);const T=E.useKey?y.key:Ee(y.code);if(ph(T.toLowerCase()))return;m.push(T);const C=E.keys?.[m.length-1];if(T!==C){m=[],g&&clearTimeout(g);return}m.length===E.keys?.length&&(d.current(y,E),g&&clearTimeout(g),m=[])}else if(rb(y,E,l?.ignoreModifiers)||E.keys?.includes("*")){if(l?.ignoreEventWhen?.(y)||S&&i.current)return;if(Vy(y,E,l?.preventDefault),!Yy(y,E,l?.enabled)){yh(y);return}d.current(y,E),S||(i.current=!0)}})}},x=y=>{y.code!==void 0&&(hh(Ee(y.code)),(l?.keydown===void 0&&l?.keyup!==!0||l?.keydown)&&v(y))},b=y=>{y.code!==void 0&&(vh(Ee(y.code)),i.current=!1,l?.keyup&&v(y,!0))},_=a.current||o?.document||document;return _.addEventListener("keyup",b,o?.eventListenerOptions),_.addEventListener("keydown",x,o?.eventListenerOptions),h&&bs(s,l?.delimiter).forEach(y=>h.addHotkey(xs(y,l?.splitKey,l?.sequenceSplitKey,l?.useKey,l?.description))),()=>{_.removeEventListener("keyup",b,o?.eventListenerOptions),_.removeEventListener("keydown",x,o?.eventListenerOptions),h&&bs(s,l?.delimiter).forEach(y=>h.removeHotkey(xs(y,l?.splitKey,l?.sequenceSplitKey,l?.useKey,l?.description))),m=[],g&&clearTimeout(g)}},[s,l,p]),a}const ub=e=>{const{mode:t,removeNode:r,selectedTask:n,pasteTask:a}=V(),i=V.temporal,{undo:o,redo:s}=jr(i,p=>p),c=e?.confirm||(p=>Promise.resolve(window.confirm(p))),u=e?.showToast,d=p=>{const h=p.target;return h.tagName==="INPUT"||h.tagName==="TEXTAREA"||h.isContentEditable},l=()=>{requestAnimationFrame(()=>{const p=V.getState(),{nodes:h,edges:m}=ae(p.nodes,p.edges,{direction:p.layoutDirection,mode:p.mode});V.setState({nodes:h,edges:m})})};return ze("mod+z",p=>{t==="edit"&&(d(p)||(p.preventDefault(),o(),l()))},[t,o]),ze(["mod+shift+z","mod+y"],p=>{t==="edit"&&(d(p)||(p.preventDefault(),s(),l()))},[t,s]),ze("delete, backspace",p=>{t!=="edit"||!n||d(p)||(p.preventDefault(),c("确定要删除此任务吗?").then(h=>{h&&r(n.taskReferenceName)}))},[t,n,r,c]),ze("mod+c",p=>{if(!(t!=="edit"||!n)&&!d(p)){if(n.type==="JOIN"){u?.("JOIN 任务不能独立复制","error");return}p.preventDefault();try{localStorage.setItem("conductor-clipboard",JSON.stringify(n)),u?.("任务已复制","success")}catch{u?.("复制失败","error")}}},[t,n,u]),ze("mod+v",p=>{if(t==="edit"&&!d(p)){p.preventDefault();try{const h=localStorage.getItem("conductor-clipboard");if(h){const m=JSON.parse(h);a(m),u?.("任务已粘贴","success")}}catch{u?.("粘贴失败","error")}}},[t,a,u]),ze("mod+s",p=>{p.preventDefault();const h=V.getState().workflowDef;h&&e?.onSave&&e.onSave(h)},[e?.onSave]),{}},cb=()=>{const[e,t]=D.useState(null),r=D.useCallback(i=>new Promise(o=>{t({message:i,resolve:o})}),[]),n=D.useCallback(()=>{e?.resolve(!0),t(null)},[e]),a=D.useCallback(()=>{e?.resolve(!1),t(null)},[e]);return{confirm:r,confirmState:e,handleConfirm:n,handleCancel:a}},db=()=>{const[e,t]=D.useState([]),r=D.useCallback((a,i="info")=>{const o=Date.now().toString();t(s=>[...s,{id:o,text:a,type:i}])},[]),n=D.useCallback(a=>{t(i=>i.filter(o=>o.id!==a))},[]);return{toasts:e,showToast:r,dismissToast:n}},lb={taskNode:Cy,decisionNode:Ry,forkNode:ch.ForkNode,joinNode:ch.JoinNode,loopNode:Oy,subWorkflowNode:Ay},fb={addableEdge:My},pb=({onNodeClick:e,searchQuery:t="",onSave:r,onRequestImport:n,executionActions:a})=>{const{nodes:i,edges:o,onNodesChange:s,onEdgesChange:c,onConnect:u,mode:d,selectedTask:l,setSelectedTask:p,theme:h,edgeType:m,addNode:g,nodesLocked:v,executionData:x,validationResults:b,setIsDetailPanelOpen:_,workflowDef:y}=V(),{fitView:S}=q.useReactFlow(),[w,E]=D.useState(!1),[T,C]=D.useState(null),[R,A]=D.useState(!1),[B,N]=D.useState(!1),{confirm:M,confirmState:L,handleConfirm:$,handleCancel:U}=cb(),{toasts:W,showToast:z,dismissToast:K}=db();ub({confirm:M,showToast:z,onSave:r}),D.useEffect(()=>{if(l){const k=i.find(I=>I.data.taskReferenceName===l.taskReferenceName);k&&S({nodes:[k],duration:800,padding:.5})}},[l?.taskReferenceName,S]),D.useEffect(()=>{const k=()=>{S({duration:800})};return window.addEventListener("workflow-zoom-to-fit",k),()=>window.removeEventListener("workflow-zoom-to-fit",k)},[S]),D.useEffect(()=>{const k=O=>{e&&O.detail&&O.detail.task&&e(O.detail.task)},I=O=>{d==="edit"&&(C({sourceId:O.detail.loopId,edgeData:{isLoopAdd:!0}}),E(!0))},P=O=>{d==="edit"&&(C({sourceId:O.detail.source,targetId:O.detail.target,edgeId:O.detail.id,edgeData:O.detail.edgeData}),E(!0))};return document.addEventListener("miniTaskClick",k),document.addEventListener("loopAddNodeRequested",I),window.addEventListener("edgeAddNode",P),()=>{document.removeEventListener("miniTaskClick",k),document.removeEventListener("loopAddNodeRequested",I),window.removeEventListener("edgeAddNode",P)}},[d,e]);const j=D.useCallback(k=>{if(T){const{sourceId:I,targetId:P,edgeId:O,edgeData:H}=T;g({data:{label:`New ${k}`,taskReferenceName:`${k.toLowerCase()}_${Date.now()}`,taskType:k}},I,P,O,H)}E(!1),C(null)},[T,g]),F=D.useMemo(()=>o.map(k=>{const I=k.id.includes("loop-back");let O={...{...k.style,stroke:h==="light"?"#475569":"#64748b",strokeWidth:2,strokeDasharray:I?"5,5":void 0}},H=!I;if(d==="run"&&x){const Z=x[k.source]?.status,ee=x[k.target]?.status,ce=Z==="COMPLETED"||k.source==="start";ce&&ee==="COMPLETED"?(O={...O,stroke:"var(--status-completed)",strokeWidth:4},H=!1):ce&&ee==="IN_PROGRESS"&&(O={...O,stroke:"var(--status-in-progress)",strokeWidth:4},H=!0)}return{...k,type:d==="edit"&&!I?"addableEdge":m,data:{...k.data,mode:d,edgeType:m,label:k.label},markerEnd:{type:q.MarkerType.ArrowClosed,width:20,height:20,color:O.stroke},style:O,animated:H}}),[o,m,h,d,x]);return f.jsxs("div",{style:{width:"100%",height:"100%",position:"relative",background:"var(--bg-secondary)"},children:[f.jsxs(q,{nodes:D.useMemo(()=>{const k=new Set(b.errors.filter(O=>O.type==="TASK").map(O=>O.ref)),I=new Set(b.warnings.filter(O=>O.type==="TASK").map(O=>O.ref)),P=t.toLowerCase();return i.map(O=>{const H=O.data.taskReferenceName;return{...O,selected:l?.taskReferenceName===H,data:{...O.data,isError:k.has(H),hasWarning:I.has(H),isHighlighted:t?O.data.label.toLowerCase().includes(P)||O.data.taskReferenceName.toLowerCase().includes(P):!1}}})},[i,b,t,l]),edges:F,onNodesChange:s,onEdgesChange:c,onConnect:u,nodeTypes:lb,edgeTypes:fb,onNodeClick:(k,I)=>{const P=I.data.task||null;p(P),e&&e(P)},onPaneClick:()=>{p(null),d!=="run"&&_(!1)},fitView:!0,nodesDraggable:!v,nodesConnectable:!v,elementsSelectable:!0,minZoom:.2,maxZoom:2,children:[f.jsx(q.Background,{color:"var(--border-primary)",gap:20}),f.jsx(q.Panel,{position:"bottom-left",style:{marginBottom:"20px",marginLeft:"20px",zIndex:1e3},children:f.jsx(By,{})}),d==="run"&&f.jsx(q.Panel,{position:"bottom-center",children:f.jsx(Dy,{})}),d==="run"&&f.jsx(dh,{}),f.jsx(lh,{isOpen:R,onClose:()=>A(!1),theme:h,onTaskSelect:k=>{p(k)}}),f.jsx("div",{style:{position:"absolute",top:20,right:20,zIndex:1e3},children:f.jsx(Wy,{onShowHealthCheck:()=>A(!R),showHealthCheck:R,onShowSettings:()=>N(!0),executionActions:a})})]}),!y&&f.jsx(zy,{onRequestImport:n}),w&&f.jsx(Ly,{theme:h,onSelect:j,onCancel:()=>E(!1)}),f.jsx($y,{isOpen:B,onClose:()=>N(!1)}),L&&f.jsx(Qp,{message:L.message,onConfirm:$,onCancel:U}),f.jsx(Gy,{messages:W,onDismiss:K})]})},bh={apiKey:"",baseUrl:"https://api.openai.com/v1",model:"gpt-4o"},hb=async(e,t={},r)=>{const n={...bh,...t};if(!n.apiKey)throw new Error("Please configure AI API Key in settings.");const a=await fetch(`${n.baseUrl}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${n.apiKey}`},body:JSON.stringify({model:n.model,messages:e,temperature:.7,stream:!1}),signal:r});if(!a.ok){const o=await a.json();throw new Error(o.error?.message||"AI request failed")}return(await a.json()).choices[0].message.content},vb=async(e,t={},r,n,a)=>{const i={...bh,...t};if(!i.apiKey)throw new Error("Please configure AI API Key in settings.");const o=await fetch(`${i.baseUrl}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${i.apiKey}`},body:JSON.stringify({model:i.model,messages:e,temperature:.7,stream:!0}),signal:a});if(!o.ok){const d=await o.json();throw new Error(d.error?.message||"AI request failed")}const s=o.body?.getReader();if(!s)throw new Error("ReadableStream not supported");const c=new TextDecoder;let u="";for(;;){const{done:d,value:l}=await s.read();if(d)break;const h=c.decode(l,{stream:!0}).split(`
|
|
196
|
-
`).filter(
|
|
206
|
+
`}),d.jsxs("div",{style:{padding:"16px",borderBottom:`1px solid ${p}`,display:"flex",justifyContent:"space-between",alignItems:"center",backgroundColor:"rgba(0,0,0,0.02)"},children:[d.jsxs("div",{style:{fontWeight:"bold",fontSize:"14px",display:"flex",alignItems:"center",gap:"8px"},children:[d.jsx("span",{children:"🩺"})," 工作流体检报告"]}),d.jsx("button",{onClick:n,style:{background:"none",border:"none",color:h,cursor:"pointer",fontSize:"18px"},children:"✕"})]}),d.jsx("div",{style:{flex:1,overflowY:"auto",padding:"8px"},children:s.length===0&&l.length===0?d.jsxs("div",{style:{padding:"32px 16px",textAlign:"center",color:"#10b981"},children:[d.jsx("div",{style:{fontSize:"32px",marginBottom:"12px"},children:"✅"}),d.jsx("div",{style:{fontWeight:"bold"},children:"未发现问题"}),d.jsx("div",{style:{fontSize:"12px",opacity:.7,marginTop:"4px"},children:"工作流逻辑看起来很完美"})]}):d.jsxs(d.Fragment,{children:[s.map((v,m)=>d.jsxs("div",{className:"health-item",role:"button",tabIndex:v.ref?0:void 0,onKeyDown:g=>{(g.key==="Enter"||g.key===" ")&&c(v.ref)},onClick:()=>c(v.ref),style:{padding:"12px",borderRadius:"8px",marginBottom:"4px",cursor:v.ref?"pointer":"default",borderLeft:"4px solid #ef4444",transition:"background 0.2s"},children:[d.jsxs("div",{style:{fontSize:"12px",color:"#ef4444",fontWeight:"bold",marginBottom:"2px"},children:["ERROR ",v.ref!=="UNKNOWN"&&`[${v.ref}]`]}),d.jsx("div",{style:{fontSize:"13px",color:f},children:v.message})]},`err-${m}`)),l.map((v,m)=>d.jsxs("div",{className:"health-item",role:"button",tabIndex:v.ref?0:void 0,onKeyDown:g=>{(g.key==="Enter"||g.key===" ")&&c(v.ref)},onClick:()=>c(v.ref),style:{padding:"12px",borderRadius:"8px",marginBottom:"4px",cursor:v.ref?"pointer":"default",borderLeft:"4px solid #f59e0b",transition:"background 0.2s"},children:[d.jsxs("div",{style:{fontSize:"12px",color:"#f59e0b",fontWeight:"bold",marginBottom:"2px"},children:["WARNING ",v.ref!=="UNKNOWN"&&`[${v.ref}]`]}),d.jsx("div",{style:{fontSize:"13px",color:f},children:v.message})]},`warn-${m}`))]})}),d.jsxs("div",{style:{padding:"12px 16px",fontSize:"11px",color:h,borderTop:`1px solid ${p}`,backgroundColor:"rgba(0,0,0,0.02)",display:"flex",justifyContent:"space-between"},children:[d.jsxs("span",{children:["共 ",s.length," 个错误, ",l.length," 个警告"]}),s.length>0&&d.jsx("span",{style:{color:"#ef4444"},children:"无法保存/导出"})]})]}):null},eb=({id:e,source:n,target:t,sourceX:r,sourceY:a,targetX:i,targetY:o,sourcePosition:s,targetPosition:l,style:c={},markerEnd:u,data:f})=>{const[p,h]=M.useState(!1),v=M.useRef(null),m=()=>{const N=f?.edgeType||"default",C={sourceX:r,sourceY:a,sourcePosition:s,targetX:i,targetY:o,targetPosition:l};switch(N){case"step":case"smoothstep":return j.getSmoothStepPath(C);case"straight":return j.getStraightPath(C);default:return j.getBezierPath(C)}},[g,b,y]=m(),x=N=>{N.stopPropagation(),N.preventDefault();const C=new CustomEvent("edgeAddNode",{detail:{id:e,source:n,target:t,edgeData:f}});window.dispatchEvent(C)},_=()=>{v.current&&clearTimeout(v.current),h(!0)},E=()=>{v.current=setTimeout(()=>{h(!1)},100)},T=f?.mode==="edit";return d.jsxs(d.Fragment,{children:[d.jsx(j.BaseEdge,{path:g,markerEnd:u,style:{...c,strokeWidth:p?4:2,stroke:p?"#fbbf24":c?.stroke,transition:"stroke 0.2s, stroke-width 0.2s",pointerEvents:"none"}}),d.jsx("path",{d:g,fill:"none",stroke:"transparent",strokeWidth:20,style:{cursor:T?"pointer":"default",pointerEvents:"all"},onMouseEnter:_,onMouseLeave:E}),T&&p&&d.jsx(j.EdgeLabelRenderer,{children:d.jsxs("div",{style:{position:"absolute",transform:`translate(-50%, -50%) translate(${b}px,${y}px)`,fontSize:12,pointerEvents:"all",zIndex:2e3,display:"flex",flexDirection:"column",alignItems:"center"},className:"nodrag nopan",onMouseEnter:_,onMouseLeave:E,children:[f?.label&&d.jsx("div",{style:{background:"var(--glass-bg-accent)",backdropFilter:"var(--glass-blur)",color:"var(--color-accent)",padding:"4px 10px",borderRadius:"6px",fontSize:"11px",fontWeight:"700",marginBottom:"8px",border:"1px solid var(--color-accent)",boxShadow:"0 4px 12px rgba(0,0,0,0.3)",whiteSpace:"nowrap",letterSpacing:"0.5px"},children:f.label}),d.jsx("button",{style:{width:"32px",height:"32px",backgroundColor:"var(--color-accent)",color:"#fff",border:"2px solid rgba(255,255,255,0.8)",borderRadius:"50%",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",fontWeight:"700",fontSize:"20px",boxShadow:"0 4px 15px rgba(var(--color-accent-rgb), 0.5)",transition:"all 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275)",padding:0},className:"edge-add-button",onClick:x,onMouseDown:N=>N.stopPropagation(),title:"在此处添加任务",children:"+"})]})})]})},be=({onClick:e,icon:n,label:t,title:r,disabled:a=!1,active:i=!1,variant:o="default",style:s})=>{let l="var(--bg-tertiary)",c="var(--text-primary)",u="1px solid var(--border-primary)";return o==="primary"?(l="var(--color-accent)",c="#fff",u="none"):o==="danger"?(l=a?"rgba(239, 68, 68, 0.1)":"var(--status-failed)",c=a?"var(--text-secondary)":"#fff",u="none"):i&&(l="var(--bg-secondary)",c="var(--color-accent)",u="1px solid var(--color-accent)"),d.jsxs("button",{onClick:e,disabled:a,title:r,"aria-label":r||t,"aria-pressed":i,"aria-disabled":a,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:t?"6px":"0",background:l,color:c,border:u,borderRadius:"6px",padding:t?"6px 12px":"8px",cursor:a?"not-allowed":"pointer",opacity:a?.5:1,fontSize:"13px",fontWeight:500,transition:"all 0.2s",minWidth:t?"auto":"32px",height:"32px",boxShadow:o==="default"?"0 1px 2px rgba(0,0,0,0.05)":"none",...s},children:[n&&d.jsx("span",{style:{fontSize:"14px",display:"flex"},children:n}),t&&d.jsx("span",{children:t})]})},rb=()=>{const{zoomIn:e,zoomOut:n,fitView:t}=j.useReactFlow();return d.jsx("div",{style:{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"10px"},children:d.jsxs("div",{style:{display:"flex",background:"var(--bg-tertiary)",padding:"4px",borderRadius:"8px",border:"1px solid var(--border-primary)",gap:"4px",boxShadow:"0 2px 5px rgba(0,0,0,0.05)"},children:[d.jsx(be,{icon:"➕",title:"放大",onClick:()=>e()}),d.jsx(be,{icon:"➖",title:"缩小",onClick:()=>n()}),d.jsx(be,{icon:"⤢",title:"适应屏幕",onClick:()=>t({duration:600})})]})})},tb=({onShowHealthCheck:e,showHealthCheck:n,onShowSettings:t,executionActions:r})=>{const{mode:a,validationResults:i,workflowInstance:o,workflowDef:s}=te(),l=te.temporal,{undo:c,redo:u,pastStates:f,futureStates:p}=Br(l,g=>g),h=(i?.errors?.length||0)>0,v=o?.status,m=o?.workflowId??"";return d.jsxs("div",{className:"action-bar",style:{display:"flex",gap:"8px"},children:[a==="edit"&&d.jsxs(d.Fragment,{children:[d.jsx(be,{icon:"↺",title:"撤销 (Cmd+Z)",onClick:()=>c(),disabled:f.length===0}),d.jsx(be,{icon:"↻",title:"重做 (Cmd+Shift+Z)",onClick:()=>u(),disabled:p.length===0}),d.jsx("div",{style:{width:"1px",height:"20px",background:"var(--border-primary)",margin:"0 4px",alignSelf:"center"}}),d.jsx(be,{icon:"🩺",label:h?`错误 (${i.errors.length})`:"诊断",title:"流程健康检查",onClick:e,active:n,variant:h?"danger":"secondary"}),d.jsx(be,{icon:"⚙️",label:"配置",title:"工作流全局配置",onClick:()=>t?.()})]}),a==="run"&&o&&r&&d.jsx(d.Fragment,{children:v==="PAUSED"?r.onResume&&d.jsx(be,{icon:"▶️",label:"恢复",title:"恢复执行",onClick:()=>r.onResume(m),variant:"primary"}):d.jsxs(d.Fragment,{children:[r.onPause&&v==="RUNNING"&&d.jsx(be,{icon:"⏸️",label:"暂停",title:"暂停执行",onClick:()=>r.onPause(m)}),r.onTerminate&&v==="RUNNING"&&d.jsx(be,{icon:"⏹️",label:"停止",title:"终止执行",onClick:()=>r.onTerminate(m),variant:"danger"}),r.onRetry&&(v==="FAILED"||v==="TIMED_OUT"||v==="TERMINATED")&&d.jsx(be,{icon:"🔄",label:"重试",title:"重试执行",onClick:()=>r.onRetry(m),variant:"primary"}),r.onRestart&&s?.restartable===!0&&d.jsx(be,{icon:"◀️",label:"重启",title:"重启执行",onClick:()=>r.onRestart(m)})]})})]})},nb=[{id:"basic",label:"基本信息"},{id:"timeout",label:"超时与容错"},{id:"params",label:"参数配置"},{id:"advanced",label:"高级设置"}],ab=({isOpen:e,onClose:n})=>{const{workflowDef:t,updateWorkflowProperties:r,mode:a}=te(),[i,o]=M.useState(t),[s,l]=M.useState("basic"),c=a!=="edit";M.useEffect(()=>{t&&o(t)},[t,e]);const u=M.useCallback(R=>{R.key==="Escape"&&n()},[n]);if(M.useEffect(()=>{if(e)return document.addEventListener("keydown",u),()=>document.removeEventListener("keydown",u)},[e,u]),!e||!i)return null;const f="var(--text-primary)",p="var(--glass-border)",h="var(--bg-tertiary)",v="var(--text-secondary)",m=(R,k)=>{if(!i||c)return;const W={...i,[R]:k};o(W),r({[R]:k})},g=(R,k,W)=>{if(!i||c)return;const U={...i[R]||{},[k]:W};o(K=>({...K,[R]:U})),r({[R]:U})},b=(R,k)=>{if(!(!i||c))try{const W=JSON.parse(k),z={...i,[R]:W};o(z),r({[R]:W})}catch{o(W=>({...W,[`_${R}_str`]:k}))}},y={width:"100%",padding:"10px 14px",borderRadius:"8px",border:`1px solid ${p}`,background:h,color:f,fontSize:"14px",outline:"none",boxSizing:"border-box"},x={display:"block",fontSize:"11px",color:v,marginBottom:"8px",fontWeight:600},_=(R,k,W="text",z)=>d.jsxs("div",{style:{marginBottom:"20px"},children:[d.jsx("label",{style:x,children:R.toUpperCase()}),d.jsx("input",{className:"wsp-input",type:W,value:i?.[k]??"",onChange:U=>m(k,W==="number"?U.target.value===""?0:parseInt(U.target.value):U.target.value),disabled:c||z?.readOnly,placeholder:z?.placeholder,style:{...y,opacity:c||z?.readOnly?.6:1}})]}),E=(R,k,W=!1,z=6)=>{const U=i?.[`_${k}_str`]!==void 0?i[`_${k}_str`]:typeof i?.[k]=="object"?JSON.stringify(i[k],null,2):i?.[k];return d.jsxs("div",{style:{marginBottom:"20px"},children:[d.jsxs("label",{style:x,children:[R.toUpperCase()," ",W&&"(JSON)"]}),d.jsx("textarea",{className:"wsp-input",value:U||"",onChange:K=>W?b(k,K.target.value):m(k,K.target.value),rows:z,disabled:c,style:{...y,fontSize:"13px",fontFamily:W?"var(--font-mono)":"inherit",resize:"vertical",opacity:c?.6:1}})]})},T=(R,k,W)=>d.jsxs("div",{style:{marginBottom:"20px"},children:[d.jsx("label",{style:x,children:R.toUpperCase()}),d.jsx("select",{className:"wsp-input",value:i?.[k]??W[0]?.value,onChange:z=>m(k,z.target.value),disabled:c,style:{...y,opacity:c?.6:1,cursor:c?"not-allowed":"pointer"},children:W.map(z=>d.jsx("option",{value:z.value,children:z.label},z.value))})]}),N=(R,k)=>{const W=!!i?.[k];return d.jsxs("div",{style:{marginBottom:"20px",display:"flex",alignItems:"center",justifyContent:"space-between"},children:[d.jsx("label",{style:{fontSize:"13px",color:f},children:R}),d.jsx("button",{type:"button",role:"switch","aria-checked":W,onClick:()=>!c&&m(k,!W),disabled:c,style:{width:"44px",height:"24px",borderRadius:"12px",border:"none",background:W?"var(--color-accent)":"var(--border-primary)",position:"relative",cursor:c?"not-allowed":"pointer",transition:"background 0.2s",opacity:c?.6:1,flexShrink:0},children:d.jsx("span",{style:{position:"absolute",top:"2px",left:W?"22px":"2px",width:"20px",height:"20px",borderRadius:"50%",background:"var(--text-inverse)",transition:"left 0.2s",boxShadow:"0 1px 3px rgba(0,0,0,0.2)"}})})]})},C=()=>d.jsxs(d.Fragment,{children:[d.jsxs("div",{style:{display:"grid",gridTemplateColumns:"3fr 1fr",gap:"20px"},children:[_("工作流名称","name"),_("版本号","version","number")]}),E("描述信息","description",!1,3),_("负责人邮箱","ownerEmail","text",{placeholder:"owner@example.com"}),_("Schema 版本","schemaVersion","number",{readOnly:!0})]}),I=()=>d.jsxs(d.Fragment,{children:[T("超时策略","timeoutPolicy",[{value:"ALERT_ONLY",label:"ALERT_ONLY — 仅告警"},{value:"TIME_OUT_WF",label:"TIME_OUT_WF — 超时终止"}]),d.jsxs("div",{children:[_("超时秒数","timeoutSeconds","number",{placeholder:"0 表示不超时"}),i?.timeoutPolicy==="ALERT_ONLY"&&d.jsx("p",{style:{fontSize:"11px",color:v,marginTop:"-12px",marginBottom:"20px"},children:"当前策略为 ALERT_ONLY,超时仅触发告警,不会终止工作流。"})]}),_("失败补偿工作流","failureWorkflow","text",{placeholder:"输入补偿工作流名称"}),N("允许重启 (restartable)","restartable")]}),P=()=>d.jsxs(d.Fragment,{children:[E("输入参数声明 (inputParameters)","inputParameters",!0),E("输出参数映射 (outputParameters)","outputParameters",!0),E("默认输入模板 (inputTemplate)","inputTemplate",!0),E("工作流级变量 (variables)","variables",!0)]}),D=()=>d.jsxs(d.Fragment,{children:[N("启用状态监听 (workflowStatusListenerEnabled)","workflowStatusListenerEnabled"),i?.workflowStatusListenerEnabled&&_("状态事件目标 (Listener Sink)","workflowStatusListenerSink","text",{placeholder:"conductor:workflow_status_event"}),d.jsxs("div",{style:{borderTop:`1px solid ${p}`,marginTop:"8px",paddingTop:"20px"},children:[N("强制 Schema 校验 (enforceSchema)","enforceSchema"),i?.enforceSchema&&d.jsxs(d.Fragment,{children:[E("输入 Schema (inputSchema)","inputSchema",!0,4),E("输出 Schema (outputSchema)","outputSchema",!0,4)]})]}),d.jsxs("div",{style:{borderTop:`1px solid ${p}`,marginTop:"8px",paddingTop:"20px"},children:[d.jsx("label",{style:{...x,marginBottom:"16px"},children:"并发限流 (RATE LIMIT)"}),d.jsxs("div",{style:{display:"grid",gridTemplateColumns:"2fr 1fr",gap:"20px"},children:[d.jsxs("div",{children:[d.jsx("label",{style:x,children:"RATE LIMIT KEY"}),d.jsx("input",{className:"wsp-input",type:"text",value:i?.rateLimitConfig?.rateLimitKey??"",onChange:R=>g("rateLimitConfig","rateLimitKey",R.target.value),disabled:c,placeholder:"限流键",style:{...y,opacity:c?.6:1}})]}),d.jsxs("div",{children:[d.jsx("label",{style:x,children:"并发上限"}),d.jsx("input",{className:"wsp-input",type:"number",value:i?.rateLimitConfig?.concurrentExecLimit??"",onChange:R=>g("rateLimitConfig","concurrentExecLimit",R.target.value===""?0:parseInt(R.target.value)),disabled:c,placeholder:"0",style:{...y,opacity:c?.6:1}})]})]})]})]}),F=()=>{switch(s){case"basic":return C();case"timeout":return I();case"params":return P();case"advanced":return D()}};return d.jsx("div",{role:"dialog","aria-modal":"true","aria-label":"工作流全局配置",onClick:n,style:{position:"fixed",left:0,top:0,width:"100vw",height:"100vh",backgroundColor:"rgba(0,0,0,0.5)",zIndex:1300,display:"flex",justifyContent:"center",alignItems:"center",backdropFilter:"blur(4px)",animation:"fadeIn 0.2s ease"},children:d.jsxs("div",{onClick:R=>R.stopPropagation(),style:{width:"680px",maxHeight:"85vh",background:"var(--glass-surface)",borderRadius:"16px",boxShadow:"0 25px 50px -12px rgba(0, 0, 0, 0.5)",display:"flex",flexDirection:"column",overflow:"hidden",animation:"slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1)",border:`1px solid ${p}`,backdropFilter:"blur(20px)"},children:[d.jsxs("div",{style:{padding:"24px 32px 0 32px",background:"var(--bg-highlight)"},children:[d.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"20px"},children:[d.jsxs("div",{children:[d.jsx("h2",{style:{margin:0,fontSize:"20px",color:f},children:"工作流全局配置"}),d.jsx("p",{style:{margin:"4px 0 0 0",fontSize:"12px",color:v},children:c?"当前为只读模式":"配置工作流级属性,所有更改将实时保存"})]}),d.jsx("button",{className:"wsp-close",onClick:n,"aria-label":"关闭",style:{background:"none",border:"none",color:f,fontSize:"24px",cursor:"pointer",opacity:.6},children:"✕"})]}),d.jsx("div",{style:{display:"flex",borderBottom:`1px solid ${p}`},children:nb.map(R=>d.jsx("button",{className:"wsp-tab",onClick:()=>l(R.id),style:{padding:"10px 20px",fontSize:"13px",fontWeight:s===R.id?600:400,color:s===R.id?"var(--color-accent)":v,background:"none",border:"none",borderBottom:s===R.id?"2px solid var(--color-accent)":"2px solid transparent",cursor:"pointer",transition:"all 0.2s",marginBottom:"-1px"},children:R.label},R.id))})]}),d.jsx("div",{style:{flex:1,overflowY:"auto",padding:"28px 32px"},children:F()}),d.jsx("div",{style:{padding:"20px 32px",borderTop:`1px solid ${p}`,background:"var(--bg-highlight)",display:"flex",justifyContent:"flex-end"},children:d.jsx("button",{className:"wsp-footer-btn",onClick:n,style:{padding:"12px 32px",background:"var(--color-accent)",color:"var(--text-inverse)",border:"none",borderRadius:"12px",fontWeight:"bold",cursor:"pointer",boxShadow:"0 4px 12px var(--color-accent-bg)"},children:"完成并关闭"})})]})})},ib=({onRequestImport:e})=>{const{createBlankWorkflow:n}=te(),[t,r]=M.useState(""),a=()=>{n(t||void 0),te.temporal.getState().clear()},i=()=>{n(t||void 0),te.temporal.getState().clear(),window.dispatchEvent(new CustomEvent("open-ai-chat"))};return d.jsxs("div",{className:"empty-state-panel",children:[d.jsx("h2",{className:"empty-state-title",children:"创建新工作流"}),d.jsx("p",{className:"empty-state-subtitle",children:"从空白画布开始设计,或让 AI 帮你生成完整流程"}),d.jsx("input",{className:"empty-state-name-input",type:"text",placeholder:"工作流名称(可选)",value:t,onChange:o=>r(o.target.value),onKeyDown:o=>{o.key==="Enter"&&a()}}),d.jsxs("div",{className:"empty-state-actions",children:[d.jsxs("button",{className:"empty-state-btn primary",onClick:a,children:[d.jsx("span",{className:"empty-state-btn-icon",children:"📄"}),"空白工作流"]}),d.jsxs("button",{className:"empty-state-btn",onClick:i,children:[d.jsx("span",{className:"empty-state-btn-icon",children:"✨"}),"AI 生成"]}),e&&d.jsxs("button",{className:"empty-state-btn",onClick:e,children:[d.jsx("span",{className:"empty-state-btn-icon",children:"📤"}),"导入 JSON"]})]})]})},ob={success:{bg:"#10b981",text:"#fff"},error:{bg:"#ef4444",text:"#fff"},info:{bg:"var(--color-accent)",text:"#fff"}},sb=({messages:e,onDismiss:n})=>e.length===0?null:d.jsx("div",{style:{position:"fixed",bottom:"24px",left:"50%",transform:"translateX(-50%)",zIndex:3e3,display:"flex",flexDirection:"column",gap:"8px",pointerEvents:"none"},children:e.map(t=>d.jsx(ub,{message:t,onDismiss:n},t.id))}),ub=({message:e,onDismiss:n})=>{const t=ob[e.type||"info"];return M.useEffect(()=>{const r=setTimeout(()=>n(e.id),2500);return()=>clearTimeout(r)},[e.id,n]),d.jsx("div",{role:"status","aria-live":"polite",style:{backgroundColor:t.bg,color:t.text,padding:"10px 20px",borderRadius:"8px",fontSize:"13px",fontWeight:500,boxShadow:"0 4px 16px rgba(0,0,0,0.2)",animation:"toastSlideUp 0.3s ease-out",pointerEvents:"auto",cursor:"pointer",whiteSpace:"nowrap"},onClick:()=>n(e.id),children:e.text})},kh=["shift","alt","meta","mod","ctrl","control"],cb={esc:"escape",return:"enter",left:"arrowleft",right:"arrowright",up:"arrowup",down:"arrowdown",ShiftLeft:"shift",ShiftRight:"shift",AltLeft:"alt",AltRight:"alt",MetaLeft:"meta",MetaRight:"meta",OSLeft:"meta",OSRight:"meta",ControlLeft:"ctrl",ControlRight:"ctrl"};function Pe(e){return(cb[e.trim()]||e.trim()).toLowerCase().replace(/key|digit|numpad/,"")}function Sh(e){return kh.includes(e)}function Cs(e,n=","){return e.toLowerCase().split(n)}function Is(e,n="+",t=">",r=!1,a){let i=[],o=!1;e=e.trim(),e.includes(t)?(o=!0,i=e.toLocaleLowerCase().split(t).map(c=>Pe(c))):i=e.toLocaleLowerCase().split(n).map(c=>Pe(c));const s={alt:i.includes("alt"),ctrl:i.includes("ctrl")||i.includes("control"),shift:i.includes("shift"),meta:i.includes("meta"),mod:i.includes("mod"),useKey:r},l=i.filter(c=>!kh.includes(c));return{...s,keys:l,description:a,isSequence:o,hotkey:e}}typeof document<"u"&&(document.addEventListener("keydown",e=>{e.code!==void 0&&Th([Pe(e.code)])}),document.addEventListener("keyup",e=>{e.code!==void 0&&wh([Pe(e.code)])})),typeof window<"u"&&(window.addEventListener("blur",()=>{Re.clear()}),window.addEventListener("contextmenu",()=>{setTimeout(()=>{Re.clear()},0)}));const Re=new Set;function Rs(e){return Array.isArray(e)}function lb(e,n=","){return(Rs(e)?e:e.split(n)).every(t=>Re.has(t.trim().toLowerCase()))}function Th(e){const n=Array.isArray(e)?e:[e];Re.has("meta")&&Re.forEach(t=>!Sh(t)&&Re.delete(t.toLowerCase())),n.forEach(t=>Re.add(t.toLowerCase()))}function wh(e){const n=Array.isArray(e)?e:[e];e==="meta"?Re.clear():n.forEach(t=>Re.delete(t.toLowerCase()))}function db(e,n,t){(typeof t=="function"&&t(e,n)||t===!0)&&e.preventDefault()}function fb(e,n,t){return typeof t=="function"?t(e,n):t===!0||t===void 0}const pb=["input","textarea","select","searchbox","slider","spinbutton","menuitem","menuitemcheckbox","menuitemradio","option","radio","textbox"];function hb(e){return Nh(e,pb)}function Nh(e,n=!1){const{target:t,composed:r}=e;let a,i;return vb(t)&&r?(a=e.composedPath()[0]&&e.composedPath()[0].tagName,i=e.composedPath()[0]&&e.composedPath()[0].role):(a=t&&t.tagName,i=t&&t.role),Rs(n)?!!(a&&n&&n.some(o=>o.toLowerCase()===a.toLowerCase()||o===i)):!!(a&&n&&n)}function vb(e){return!!e.tagName&&!e.tagName.startsWith("-")&&e.tagName.includes("-")}function mb(e,n){return e.length===0&&n?(console.warn('A hotkey has the "scopes" option set, however no active scopes were found. If you want to use the global scopes feature, you need to wrap your app in a <HotkeysProvider>'),!0):n?e.some(t=>n.includes(t))||e.includes("*"):!0}const gb=(e,n,t=!1)=>{const{alt:r,meta:a,mod:i,shift:o,ctrl:s,keys:l,useKey:c}=n,{code:u,key:f,ctrlKey:p,metaKey:h,shiftKey:v,altKey:m}=e,g=Pe(u);if(c&&l?.length===1&&l.includes(f))return!0;if(!l?.includes(g)&&!["ctrl","control","unknown","meta","alt","shift","os"].includes(g))return!1;if(!t){if(r!==m&&g!=="alt"||o!==v&&g!=="shift")return!1;if(i){if(!h&&!p)return!1}else if(a!==h&&g!=="meta"&&g!=="os"||s!==p&&g!=="ctrl"&&g!=="control")return!1}return l&&l.length===1&&l.includes(g)?!0:l?lb(l):!l},yb=M.createContext(void 0),bb=()=>M.useContext(yb);function Eh(e,n){return e&&n&&typeof e=="object"&&typeof n=="object"?Object.keys(e).length===Object.keys(n).length&&Object.keys(e).reduce((t,r)=>t&&Eh(e[r],n[r]),!0):e===n}const xb=M.createContext({hotkeys:[],activeScopes:[],toggleScope:()=>{},enableScope:()=>{},disableScope:()=>{}}),_b=()=>M.useContext(xb);function kb(e){const n=M.useRef(void 0);return Eh(n.current,e)||(n.current=e),n.current}const Ch=e=>{e.stopPropagation(),e.preventDefault(),e.stopImmediatePropagation()},Sb=typeof window<"u"?M.useLayoutEffect:M.useEffect;function Qe(e,n,t,r){const a=M.useRef(null),i=M.useRef(!1),o=Array.isArray(t)?Array.isArray(r)?void 0:r:t,s=Rs(e)?e.join(o?.delimiter):e,l=Array.isArray(t)?t:Array.isArray(r)?r:void 0,c=M.useCallback(n,l??[]),u=M.useRef(c);l?u.current=c:u.current=n;const f=kb(o),{activeScopes:p}=_b(),h=bb();return Sb(()=>{if(f?.enabled===!1||!mb(p,f?.scopes))return;let v=[],m;const g=(_,E=!1)=>{if(!(hb(_)&&!Nh(_,f?.enableOnFormTags))){if(a.current!==null){const T=a.current.getRootNode();if((T instanceof Document||T instanceof ShadowRoot)&&T.activeElement!==a.current&&!a.current.contains(T.activeElement)){Ch(_);return}}_.target?.isContentEditable&&!f?.enableOnContentEditable||Cs(s,f?.delimiter).forEach(T=>{if(T.includes(f?.splitKey??"+")&&T.includes(f?.sequenceSplitKey??">")){console.warn(`Hotkey ${T} contains both ${f?.splitKey??"+"} and ${f?.sequenceSplitKey??">"} which is not supported.`);return}const N=Is(T,f?.splitKey,f?.sequenceSplitKey,f?.useKey,f?.description);if(N.isSequence){m=setTimeout(()=>{v=[]},f?.sequenceTimeoutMs??1e3);const C=N.useKey?_.key:Pe(_.code);if(Sh(C.toLowerCase()))return;v.push(C);const I=N.keys?.[v.length-1];if(C!==I){v=[],m&&clearTimeout(m);return}v.length===N.keys?.length&&(u.current(_,N),m&&clearTimeout(m),v=[])}else if(gb(_,N,f?.ignoreModifiers)||N.keys?.includes("*")){if(f?.ignoreEventWhen?.(_)||E&&i.current)return;if(db(_,N,f?.preventDefault),!fb(_,N,f?.enabled)){Ch(_);return}u.current(_,N),E||(i.current=!0)}})}},b=_=>{_.code!==void 0&&(Th(Pe(_.code)),(f?.keydown===void 0&&f?.keyup!==!0||f?.keydown)&&g(_))},y=_=>{_.code!==void 0&&(wh(Pe(_.code)),i.current=!1,f?.keyup&&g(_,!0))},x=a.current||o?.document||document;return x.addEventListener("keyup",y,o?.eventListenerOptions),x.addEventListener("keydown",b,o?.eventListenerOptions),h&&Cs(s,f?.delimiter).forEach(_=>h.addHotkey(Is(_,f?.splitKey,f?.sequenceSplitKey,f?.useKey,f?.description))),()=>{x.removeEventListener("keyup",y,o?.eventListenerOptions),x.removeEventListener("keydown",b,o?.eventListenerOptions),h&&Cs(s,f?.delimiter).forEach(_=>h.removeHotkey(Is(_,f?.splitKey,f?.sequenceSplitKey,f?.useKey,f?.description))),v=[],m&&clearTimeout(m)}},[s,f,p]),a}const Tb=e=>{const{mode:n,removeNode:t,selectedTask:r,pasteTask:a}=te(),i=te.temporal,{undo:o,redo:s}=Br(i,p=>p),l=e?.confirm||(p=>Promise.resolve(window.confirm(p))),c=e?.showToast,u=p=>{const h=p.target;return h.tagName==="INPUT"||h.tagName==="TEXTAREA"||h.isContentEditable},f=()=>{requestAnimationFrame(()=>{const p=te.getState(),{nodes:h,edges:v}=de(p.nodes,p.edges,{direction:p.layoutDirection,mode:p.mode});te.setState({nodes:h,edges:v})})};return Qe("mod+z",p=>{n==="edit"&&(u(p)||(p.preventDefault(),o(),f()))},[n,o]),Qe(["mod+shift+z","mod+y"],p=>{n==="edit"&&(u(p)||(p.preventDefault(),s(),f()))},[n,s]),Qe("delete, backspace",p=>{n!=="edit"||!r||u(p)||(p.preventDefault(),l("确定要删除此任务吗?").then(h=>{h&&t(r.taskReferenceName)}))},[n,r,t,l]),Qe("mod+c",p=>{if(!(n!=="edit"||!r)&&!u(p)){if(r.type==="JOIN"){c?.("JOIN 任务不能独立复制","error");return}p.preventDefault();try{localStorage.setItem("conductor-clipboard",JSON.stringify(r)),c?.("任务已复制","success")}catch{c?.("复制失败","error")}}},[n,r,c]),Qe("mod+v",p=>{if(n==="edit"&&!u(p)){p.preventDefault();try{const h=localStorage.getItem("conductor-clipboard");if(h){const v=JSON.parse(h);a(v),c?.("任务已粘贴","success")}}catch{c?.("粘贴失败","error")}}},[n,a,c]),Qe("mod+s",p=>{p.preventDefault();const h=te.getState().workflowDef;h&&e?.onSave&&e.onSave(h)},[e?.onSave]),{}},wb=()=>{const[e,n]=M.useState(null),t=M.useCallback(i=>new Promise(o=>{n({message:i,resolve:o})}),[]),r=M.useCallback(()=>{e?.resolve(!0),n(null)},[e]),a=M.useCallback(()=>{e?.resolve(!1),n(null)},[e]);return{confirm:t,confirmState:e,handleConfirm:r,handleCancel:a}},Nb=()=>{const[e,n]=M.useState([]),t=M.useCallback((a,i="info")=>{const o=Date.now().toString();n(s=>[...s,{id:o,text:a,type:i}])},[]),r=M.useCallback(a=>{n(i=>i.filter(o=>o.id!==a))},[]);return{toasts:e,showToast:t,dismissToast:r}},Eb={taskNode:By,decisionNode:Fy,forkNode:bh.ForkNode,joinNode:bh.JoinNode,loopNode:Hy,subWorkflowNode:Jy,plusNode:Vy,dynamicPlaceholderNode:Xy},Cb={addableEdge:eb},Ib=({onNodeClick:e,searchQuery:n="",onSave:t,onRequestImport:r,executionActions:a})=>{const{nodes:i,edges:o,onNodesChange:s,onEdgesChange:l,onConnect:c,mode:u,selectedTask:f,setSelectedTask:p,theme:h,edgeType:v,addNode:m,nodesLocked:g,executionData:b,validationResults:y,setIsDetailPanelOpen:x,workflowDef:_,dynamicRuntimeTasksByFork:E,layoutDirection:T}=te(),{fitView:N}=j.useReactFlow(),[C,I]=M.useState(!1),[P,D]=M.useState(null),[F,R]=M.useState(!1),[k,W]=M.useState(!1),{confirm:z,confirmState:U,handleConfirm:K,handleCancel:Y}=wb(),{toasts:J,showToast:O,dismissToast:V}=Nb();Tb({confirm:z,showToast:O,onSave:t}),M.useEffect(()=>{if(f){const A=i.find(B=>B.data.taskReferenceName===f.taskReferenceName);A&&N({nodes:[A],duration:800,padding:.5})}},[f?.taskReferenceName,N]),M.useEffect(()=>{const A=()=>{N({duration:800})};return window.addEventListener("workflow-zoom-to-fit",A),()=>window.removeEventListener("workflow-zoom-to-fit",A)},[N]),M.useEffect(()=>{const A=ee=>{e&&ee.detail&&ee.detail.task&&e(ee.detail.task)},B=ee=>{u==="edit"&&(D({sourceId:ee.detail.loopId,edgeData:{isLoopAdd:!0}}),I(!0))},X=ee=>{u==="edit"&&(D({sourceId:ee.detail.source,targetId:ee.detail.target,edgeId:ee.detail.id,edgeData:ee.detail.edgeData}),I(!0))};return document.addEventListener("miniTaskClick",A),document.addEventListener("loopAddNodeRequested",B),window.addEventListener("edgeAddNode",X),()=>{document.removeEventListener("miniTaskClick",A),document.removeEventListener("loopAddNodeRequested",B),window.removeEventListener("edgeAddNode",X)}},[u,e]);const Q=M.useCallback(A=>{if(P){const{sourceId:B,targetId:X,edgeId:ee,edgeData:Z}=P;m({data:{label:`New ${A}`,taskReferenceName:`${A.toLowerCase()}_${Date.now()}`,taskType:A}},B,X,ee,Z)}I(!1),D(null)},[P,m]),w=M.useMemo(()=>{const A={extraNodes:[],extraEdges:[],removedEdgeIds:new Set,removedNodeIds:new Set};if(u!=="run")return A;const B=i.filter(H=>H.type==="forkNode"&&H.data.taskType==="FORK_JOIN_DYNAMIC");if(!B.length)return A;const X=[],ee=[],Z=new Set,ne=new Set,S=T==="LR",$=47,G=120,re={animated:!0,style:{stroke:"#10b981",strokeDasharray:"4,4"},markerEnd:{type:j.MarkerType.ArrowClosed,color:"#10b981"}};for(const H of B){const ae=E[H.id]||[],ie=`${H.id}_dynamic_placeholder`,xe=i.find(se=>se.id===ie),Oe=o.find(se=>se.target===ie),he=o.find(se=>se.source===ie);let ue,ve;if(he)ue=he.target,ve=i.find(se=>se.id===ue);else{const se=i.indexOf(H);if(ve=i.slice(se).find($e=>$e.type==="joinNode"),!ve)continue;ue=ve.id}if(!ve||(he&&Z.add(he.id),Oe&&Z.add(Oe.id),ne.add(ie),!ae.length))continue;const ze=ae.length,Os=xe?xe.position.x+110:(H.position.x+ve.position.x)/2,hr=xe?xe.position.y+35:(H.position.y+ve.position.y)/2;ae.forEach((se,$e)=>{const qe=`dynamic_rt_${se.referenceTaskName}`,js=S?Os-G:H.position.x+($e-(ze-1)/2)*280,Mr=S?hr-$+($e-(ze-1)/2)*110:hr-$;X.push({id:qe,type:"taskNode",data:{label:se.referenceTaskName,task:{name:se.referenceTaskName,taskReferenceName:se.referenceTaskName,type:se.taskType||"SIMPLE"},taskReferenceName:se.referenceTaskName,taskType:se.taskType||"SIMPLE",isDynamicRuntime:!0,layoutDirection:T},position:{x:js,y:Mr}}),ee.push({id:`e-${H.id}-${qe}`,source:H.id,target:qe,...re}),ee.push({id:`e-${qe}-${ue}`,source:qe,target:ue,...re})})}return{extraNodes:X,extraEdges:ee,removedEdgeIds:Z,removedNodeIds:ne}},[u,E,i,o,T]),L=M.useMemo(()=>[...o.filter(B=>!w.removedEdgeIds.has(B.id)).map(B=>{const X=B.id.includes("loop-back");let Z={...{...B.style,stroke:h==="light"?"#475569":"#64748b",strokeWidth:2,strokeDasharray:X?"5,5":void 0}},ne=!X;if(u==="run"&&b){const G=b[B.source]?.status,re=b[B.target]?.status,H=G==="COMPLETED";H&&re==="COMPLETED"?(Z={...Z,stroke:"var(--status-completed)",strokeWidth:4},ne=!1):H&&re==="IN_PROGRESS"&&(Z={...Z,stroke:"var(--status-in-progress)",strokeWidth:4},ne=!0)}const S=B.source.endsWith("_dynamic_placeholder")||B.target.endsWith("_dynamic_placeholder");return{...B,type:u==="edit"&&!X&&!S?"addableEdge":v,data:{...B.data,mode:u,edgeType:v,label:B.label},markerEnd:{type:j.MarkerType.ArrowClosed,width:20,height:20,color:Z.stroke},style:Z,animated:ne}}),...w.extraEdges],[o,v,h,u,b,w]);return d.jsxs("div",{style:{width:"100%",height:"100%",position:"relative",background:"var(--bg-secondary)"},children:[d.jsxs(j,{nodes:M.useMemo(()=>{const A=new Set(y.errors.filter(Z=>Z.type==="TASK").map(Z=>Z.ref)),B=new Set(y.warnings.filter(Z=>Z.type==="TASK").map(Z=>Z.ref)),X=n.toLowerCase();return i.filter(Z=>!w.removedNodeIds.has(Z.id)).map(Z=>{const ne=Z.data.taskReferenceName;return{...Z,selected:f?.taskReferenceName===ne,data:{...Z.data,isError:A.has(ne),hasWarning:B.has(ne),isHighlighted:n?Z.data.label.toLowerCase().includes(X)||Z.data.taskReferenceName.toLowerCase().includes(X):!1}}}).concat(w.extraNodes.map(Z=>({...Z,data:{...Z.data,isError:!1,hasWarning:!1,isHighlighted:!1}})))},[i,y,n,f,w]),edges:L,onNodesChange:s,onEdgesChange:l,onConnect:c,nodeTypes:Eb,edgeTypes:Cb,onNodeClick:(A,B)=>{if(B.type==="plusNode"){D({sourceId:B.data.parentRef,edgeData:B.data.edgeData||{}}),I(!0);return}const X=B.data.task||null;p(X),e&&e(X)},onPaneClick:()=>{p(null),u!=="run"&&x(!1)},fitView:!0,nodesDraggable:!g,nodesConnectable:!g,elementsSelectable:!0,minZoom:.2,maxZoom:2,children:[d.jsx(j.Background,{color:"var(--border-primary)",gap:20}),d.jsx(j.Panel,{position:"bottom-left",style:{marginBottom:"20px",marginLeft:"20px",zIndex:1e3},children:d.jsx(rb,{})}),u==="run"&&d.jsx(j.Panel,{position:"bottom-center",children:d.jsx(Qy,{})}),u==="run"&&d.jsx(xh,{}),d.jsx(_h,{isOpen:F,onClose:()=>R(!1),theme:h,onTaskSelect:A=>{p(A)}}),d.jsx("div",{style:{position:"absolute",top:20,right:20,zIndex:1e3},children:d.jsx(tb,{onShowHealthCheck:()=>R(!F),showHealthCheck:F,onShowSettings:()=>W(!0),executionActions:a})})]}),!_&&d.jsx(ib,{onRequestImport:r}),_&&i.length===0&&u==="edit"&&d.jsx("div",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",zIndex:10,display:"flex",flexDirection:"column",alignItems:"center",gap:"12px"},children:d.jsxs("button",{className:"empty-state-btn primary",style:{padding:"12px 24px",borderRadius:"8px",cursor:"pointer",display:"flex",alignItems:"center",gap:"8px",fontSize:"16px",fontWeight:500,boxShadow:"0 4px 6px -1px rgba(0, 0, 0, 0.1)"},onClick:()=>{D({sourceId:"start",targetId:"end",edgeId:"new",edgeData:{}}),I(!0)},children:[d.jsx("span",{style:{fontSize:"20px",lineHeight:1},children:"+"}),"添加第一个任务"]})}),C&&d.jsx(Zy,{theme:h,onSelect:Q,onCancel:()=>I(!1)}),d.jsx(ab,{isOpen:k,onClose:()=>W(!1)}),U&&d.jsx(ch,{message:U.message,onConfirm:K,onCancel:Y}),d.jsx(sb,{messages:J,onDismiss:V})]})},Ih={apiKey:"",baseUrl:"https://api.openai.com/v1",model:"gpt-4o"},Rb=async(e,n={},t)=>{const r={...Ih,...n};if(!r.apiKey)throw new Error("Please configure AI API Key in settings.");const a=await fetch(`${r.baseUrl}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r.apiKey}`},body:JSON.stringify({model:r.model,messages:e,temperature:.7,stream:!1}),signal:t});if(!a.ok){const o=await a.json();throw new Error(o.error?.message||"AI request failed")}return(await a.json()).choices[0].message.content},Ob=async(e,n={},t,r,a)=>{const i={...Ih,...n};if(!i.apiKey)throw new Error("Please configure AI API Key in settings.");const o=await fetch(`${i.baseUrl}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${i.apiKey}`},body:JSON.stringify({model:i.model,messages:e,temperature:.7,stream:!0}),signal:a});if(!o.ok){const u=await o.json();throw new Error(u.error?.message||"AI request failed")}const s=o.body?.getReader();if(!s)throw new Error("ReadableStream not supported");const l=new TextDecoder;let c="";for(;;){const{done:u,value:f}=await s.read();if(u)break;const h=l.decode(f,{stream:!0}).split(`
|
|
207
|
+
`).filter(v=>v.trim()!=="");for(const v of h)if(v.startsWith("data: ")){const m=v.slice(6);if(m==="[DONE]")return c;try{const b=JSON.parse(m).choices?.[0]?.delta?.content;b&&(c+=b,t(b))}catch{console.warn("[AI SSE] malformed chunk:",m)}}}return c},jb=`
|
|
197
208
|
You are an expert in Netflix Conductor Workflow modeling.
|
|
198
209
|
Your goal is to help users design JSON-based workflows.
|
|
199
210
|
|
|
@@ -205,25 +216,25 @@ CONSTRANTS:
|
|
|
205
216
|
5. For FORK_JOIN, ensure a corresponding JOIN task follows.
|
|
206
217
|
|
|
207
218
|
Provide clear, enterprise-grade logic with proper error handling paths.
|
|
208
|
-
`,
|
|
209
|
-
${JSON.stringify(
|
|
219
|
+
`,Pb=(e,n)=>{const t=n?`Current Workflow State:
|
|
220
|
+
${JSON.stringify(n,null,2)}`:"Initial state: No workflow defined yet.";return`
|
|
210
221
|
User Request: ${e}
|
|
211
222
|
|
|
212
|
-
${
|
|
223
|
+
${t}
|
|
213
224
|
|
|
214
225
|
Please provide a JSON suggestion that fulfills the user's request.
|
|
215
226
|
If modifying the current workflow, return the ENTIRE updated JSON.
|
|
216
227
|
Wrap the JSON in triple backticks with 'json' label.
|
|
217
|
-
`},
|
|
228
|
+
`},qb=(e,n)=>`
|
|
218
229
|
Context: I am configuring a Conductor task in a workflow.
|
|
219
230
|
Task Reference Name: ${e.taskReferenceName}
|
|
220
231
|
Task Type: ${e.type}
|
|
221
232
|
|
|
222
233
|
Full Workflow Structure for reference:
|
|
223
|
-
${JSON.stringify(
|
|
234
|
+
${JSON.stringify(n,null,2)}
|
|
224
235
|
|
|
225
236
|
Requirement: Suggest 3 meaningful 'inputParameters' or JSONPath expressions for this task based on the workflow context.
|
|
226
237
|
Return the suggestions as a JSON array of objects with { label, value, description }.
|
|
227
|
-
`,bb=({isOpen:e,onClose:t,onSelect:r,suggestions:n,anchorRect:a})=>{if(!e||!a)return null;const i={position:"fixed",top:a.bottom+8,left:Math.max(a.left-200,20),width:"280px",zIndex:3e3};return f.jsxs(f.Fragment,{children:[f.jsx("div",{className:"suggester-overlay",onClick:t}),f.jsxs("div",{className:"parameter-suggester-popover glass-panel",style:i,children:[f.jsxs("div",{className:"suggester-header",children:[f.jsx("span",{className:"sparkle-icon",children:"✨"}),"AI Suggestions"]}),f.jsx("div",{className:"suggester-list",children:n.length===0?f.jsxs("div",{className:"suggester-loading",children:[f.jsx("div",{className:"suggester-skeleton-line",style:{width:"85%"}}),f.jsx("div",{className:"suggester-skeleton-line",style:{width:"65%"}}),f.jsx("div",{className:"suggester-skeleton-line",style:{width:"75%"}})]}):n.map((o,s)=>f.jsxs("div",{className:"suggestion-item",onClick:()=>{r(o.value),t()},children:[f.jsx("div",{className:"suggestion-label",children:o.label}),f.jsx("div",{className:"suggestion-value",children:o.value}),f.jsx("div",{className:"suggestion-desc",children:o.description})]},s))})]})]})},xb=({task:e,isOpen:t=!0,onClose:r,aiConfig:n})=>{const{mode:a,updateTask:i,checkTaskRefUniqueness:o}=V(),[s,c]=D.useState(e),[u,d]=D.useState(!1),[l,p]=D.useState(),[h,m]=D.useState([]),[g,v]=D.useState(()=>()=>{}),x=[{label:"引用工作流输入",value:"${workflow.input.data}",description:"引用工作流启动时传入的原始数据"},{label:"引用前序任务输出",value:"${previous_task.output.result}",description:"引用上一个节点的计算结果"},{label:"环境变量",value:"${workflow.variables.api_key}",description:"引用工作流定义的全局变量"}],b=async(W,z)=>{const K=W.currentTarget.getBoundingClientRect();p(K),v(()=>z),m([]),d(!0);const j=n?.apiKey||localStorage.getItem("AI_API_KEY")||"";if(!j){m(x);return}try{const F=n?.baseUrl||localStorage.getItem("AI_BASE_URL")||"",G=n?.model||localStorage.getItem("AI_MODEL")||"",k={apiKey:j};F&&(k.baseUrl=F),G&&(k.model=G);const{workflowDef:I}=V.getState(),P=yb(_,I),H=(await hb([{role:"system",content:"You are a Conductor workflow expert. Return only valid JSON."},{role:"user",content:P}],k)).match(/\[[\s\S]*\]/);if(H){const J=JSON.parse(H[0]);m(J)}else m(x)}catch(F){console.warn("[AI ParameterSuggester] fallback to mock:",F),m(x)}};if(D.useEffect(()=>{e&&c(e)},[e]),!e&&!s)return null;const _=e||s,y=s&&e&&s.taskReferenceName===e.taskReferenceName?s:_,S=t&&e?"panel-enter-active":"panel-exit",w=a==="edit",E="var(--text-primary)",T="var(--glass-border)",C="var(--bg-tertiary)",R="var(--text-secondary)",A=(W,z)=>{const K={...y,[W]:z};c(K),i(y.taskReferenceName,{[W]:z})},B=(W,z,K)=>{const F={...y[W]||{},[z]:K},G={...y,[W]:F};c(G),i(y.taskReferenceName,{[W]:F})},N=(W,z)=>{const K=y.inputParameters||{},F={...K.http_request||y.httpRequest||{},[W]:z},k={inputParameters:{...K,http_request:F}};y.httpRequest&&(k.httpRequest=F);const I={...y,...k};c(I),i(y.taskReferenceName,k)},M=(W,z)=>{const j={inputParameters:{...y.inputParameters,[W]:z}},F={...y,...j};c(F),i(y.taskReferenceName,j)},L=(W,z,K,j)=>f.jsxs("div",{style:{marginBottom:"24px",padding:"16px",borderRadius:"12px",background:`${K}10`,border:`1px solid ${K}30`,boxShadow:"0 4px 12px rgba(0,0,0,0.05)"},children:[f.jsxs("div",{style:{fontSize:"12px",fontWeight:"bold",marginBottom:"16px",color:K,display:"flex",alignItems:"center",gap:"8px"},children:[f.jsx("span",{children:z})," ",W]}),j]}),$=(W,z,K="text")=>{const j=z==="taskReferenceName",F=j&&!o(y[z],y.taskReferenceName);return f.jsxs("div",{style:{marginBottom:"16px"},children:[f.jsxs("label",{style:{display:"block",fontSize:"11px",color:R,marginBottom:"6px",fontWeight:"600",textTransform:"uppercase"},children:[W,j&&F&&f.jsx("span",{style:{color:"#ef4444",marginLeft:"8px",textTransform:"none"},children:"⚠️ 已存在相同引用名"})]}),f.jsxs("div",{style:{position:"relative",display:"flex",alignItems:"center"},children:[f.jsx("input",{type:K,value:y[z]||"",onChange:G=>A(z,G.target.value),disabled:!w||j&&!w,style:{width:"100%",padding:`8px ${w&&!j?"32px":"12px"} 8px 12px`,borderRadius:"6px",border:`1px solid ${F?"#ef4444":T}`,background:C,color:E,fontSize:"13px",outline:"none",opacity:w?1:.8,fontFamily:j?"monospace":"inherit"}}),w&&!j&&f.jsx("button",{className:"ai-hint-trigger",onClick:G=>b(G,k=>A(z,k)),title:"AI 智能提示",style:{position:"absolute",right:"8px",background:"none",border:"none",cursor:"pointer",fontSize:"14px",padding:"4px",opacity:.6,display:"flex",alignItems:"center",justifyContent:"center"},children:"✨"})]})]})},U=(W,z,K=!1)=>{const j=typeof y[z]=="object"?JSON.stringify(y[z],null,2):y[z];return f.jsxs("div",{style:{marginBottom:"16px"},children:[f.jsxs("label",{style:{display:"block",fontSize:"11px",color:R,marginBottom:"6px",fontWeight:"600",textTransform:"uppercase"},children:[W," ",K&&f.jsx("span",{style:{opacity:.5,fontWeight:"normal"},children:"(JSON)"})]}),f.jsx("textarea",{value:j||"",onChange:F=>{let G=F.target.value;if(K)try{G=JSON.parse(F.target.value)}catch{c(I=>({...I,[z]:F.target.value}));return}A(z,G)},disabled:!w,rows:z==="description"?3:5,style:{width:"100%",padding:"8px 12px",borderRadius:"6px",border:`1px solid ${T}`,background:C,color:E,fontSize:"12px",fontFamily:"monospace",outline:"none",resize:"vertical"}})]})};return f.jsxs("div",{className:`detail-panel-container ${S}`,style:{position:"absolute",right:0,top:0,bottom:0,width:"450px",zIndex:1200,display:"flex",flexDirection:"column",background:"var(--bg-primary)",borderLeft:`1px solid ${T}`,boxShadow:"-10px 0 30px rgba(0, 0, 0, 0.2)",overflowY:"hidden"},children:[f.jsxs("div",{style:{padding:"24px",borderBottom:`1px solid ${T}`,background:"var(--bg-secondary)",flexShrink:0},children:[f.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"12px"},children:[f.jsx("div",{style:{background:"var(--color-accent)",color:"#fff",padding:"2px 8px",borderRadius:"4px",fontSize:"10px",fontWeight:"bold",letterSpacing:"1px"},children:y.type||"TASK"}),f.jsx("button",{onClick:r,style:{background:"none",border:"none",color:E,cursor:"pointer",fontSize:"20px"},children:"✕"})]}),w?f.jsx("input",{value:y.name||"",onChange:W=>A("name",W.target.value),placeholder:"任务名称",style:{display:"block",width:"100%",fontSize:"22px",fontWeight:"bold",background:"transparent",border:"none",color:E,outline:"none",borderBottom:"2px dashed var(--color-accent)"}}):f.jsx("div",{style:{fontSize:"22px",fontWeight:"bold"},children:y.name}),f.jsxs("div",{style:{fontSize:"12px",color:R,marginTop:"8px",fontFamily:"monospace",opacity:.8},children:["REF: ",y.taskReferenceName]})]}),f.jsxs("div",{style:{flex:1,overflowY:"auto",padding:"24px",background:"var(--bg-primary)"},children:[y.type==="HTTP"&&L("HTTP 请求配置","🌐","var(--color-accent)",f.jsxs(f.Fragment,{children:[f.jsxs("div",{style:{display:"flex",gap:"8px",marginBottom:"12px"},children:[f.jsx("select",{value:y.inputParameters?.http_request?.method||y.httpRequest?.method||"GET",onChange:W=>N("method",W.target.value),disabled:!w,style:{width:"90px",padding:"10px",borderRadius:"8px",background:C,color:E,border:`1px solid ${T}`,cursor:"pointer"},children:["GET","POST","PUT","DELETE","PATCH"].map(W=>f.jsx("option",{value:W,children:W},W))}),f.jsx("input",{placeholder:"URI (支持 ${workflow.input.uri})",value:y.inputParameters?.http_request?.uri||y.httpRequest?.uri||"",onChange:W=>N("uri",W.target.value),disabled:!w,style:{flex:1,padding:"10px",borderRadius:"8px",background:C,color:E,border:`1px solid ${T}`}})]}),f.jsxs("div",{style:{marginBottom:"12px"},children:[f.jsx("label",{style:{display:"block",fontSize:"10px",color:R,marginBottom:"4px"},children:"HEADERS (JSON)"}),f.jsx("textarea",{value:typeof(y.inputParameters?.http_request?.headers||y.httpRequest?.headers)=="object"?JSON.stringify(y.inputParameters?.http_request?.headers||y.httpRequest?.headers,null,2):"{}",onChange:W=>{try{N("headers",JSON.parse(W.target.value))}catch{}},disabled:!w,rows:3,style:{width:"100%",padding:"8px",borderRadius:"8px",background:C,color:E,border:`1px solid ${T}`,fontSize:"11px",fontFamily:"monospace"}})]}),f.jsx("label",{style:{display:"block",fontSize:"10px",color:R,marginBottom:"4px"},children:"BODY (RAW/JSON)"}),f.jsx("textarea",{value:typeof(y.inputParameters?.http_request?.body||y.httpRequest?.body)=="object"?JSON.stringify(y.inputParameters?.http_request?.body||y.httpRequest?.body,null,2):y.inputParameters?.http_request?.body||y.httpRequest?.body||"",onChange:W=>{let z=W.target.value;try{z=JSON.parse(W.target.value)}catch{}N("body",z)},disabled:!w,rows:4,style:{width:"100%",padding:"8px",borderRadius:"8px",background:C,color:E,border:`1px solid ${T}`,fontSize:"11px",fontFamily:"monospace"}})]})),y.type==="LAMBDA"&&L("Lambda 脚本配置","📜","var(--color-accent)",f.jsxs(f.Fragment,{children:[f.jsx("label",{style:{display:"block",fontSize:"10px",color:R,marginBottom:"4px"},children:"SCRIPT EXPRESSION (JS)"}),f.jsx("textarea",{value:y.inputParameters?.scriptExpression||"",onChange:W=>M("scriptExpression",W.target.value),disabled:!w,rows:10,style:{width:"100%",padding:"12px",borderRadius:"8px",background:"#000",color:"var(--color-accent)",border:"1px solid var(--color-accent)",fontSize:"12px",fontFamily:"monospace",lineHeight:"1.5"}}),f.jsx("div",{style:{marginTop:"8px",fontSize:"10px",color:R,fontStyle:"italic"},children:"提示: 使用 `$.input.key` 访问参数,返回值为节点输出。"})]})),y.type==="JSON_JQ_TRANSFORM"&&L("JQ 数据转换","🔍","var(--color-accent)",f.jsxs(f.Fragment,{children:[f.jsx("label",{style:{display:"block",fontSize:"10px",color:R,marginBottom:"4px"},children:"JQ QUERY"}),f.jsx("textarea",{value:y.inputParameters?.queryExpression||"",onChange:W=>M("queryExpression",W.target.value),disabled:!w,rows:6,style:{width:"100%",padding:"12px",borderRadius:"8px",background:C,color:"var(--color-accent)",border:`1px solid ${T}`,fontSize:"12px",fontFamily:"monospace",lineHeight:"1.5"}})]})),y.type==="SUB_WORKFLOW"&&L("子工作流配置","🏗️","var(--color-accent)",f.jsxs(f.Fragment,{children:[f.jsxs("div",{style:{marginBottom:"12px"},children:[f.jsx("label",{style:{display:"block",fontSize:"10px",color:R,marginBottom:"4px"},children:"WORKFLOW NAME"}),f.jsx("input",{value:y.subWorkflowParam?.name||"",onChange:W=>B("subWorkflowParam","name",W.target.value),disabled:!w,style:{width:"100%",padding:"10px",borderRadius:"8px",background:C,color:E,border:`1px solid ${T}`}})]}),f.jsx("label",{style:{display:"block",fontSize:"10px",color:R,marginBottom:"4px"},children:"VERSION"}),f.jsx("input",{type:"number",value:y.subWorkflowParam?.version||1,onChange:W=>B("subWorkflowParam","version",parseInt(W.target.value)),disabled:!w,style:{width:"100px",padding:"10px",borderRadius:"8px",background:C,color:E,border:`1px solid ${T}`}})]})),y.type==="TERMINATE"&&L("终止状态配置","⏹️","var(--color-accent)",f.jsxs(f.Fragment,{children:[f.jsx("label",{style:{display:"block",fontSize:"10px",color:R,marginBottom:"4px"},children:"TERMINATION STATUS"}),f.jsx("div",{style:{display:"flex",gap:"8px",marginBottom:"16px"},children:["COMPLETED","FAILED"].map(W=>f.jsx("button",{onClick:()=>M("terminationStatus",W),disabled:!w,style:{flex:1,padding:"8px",borderRadius:"6px",cursor:"pointer",background:(y.inputParameters?.terminationStatus||"COMPLETED")===W?"var(--color-accent)":C,color:(y.inputParameters?.terminationStatus||"COMPLETED")===W?"#fff":E,border:`1px solid ${T}`,fontWeight:"bold",fontSize:"11px"},children:W},W))}),f.jsx("label",{style:{display:"block",fontSize:"10px",color:R,marginBottom:"4px"},children:"TERMINATION REASON"}),f.jsx("input",{placeholder:"终止原因...",value:y.inputParameters?.terminationReason||"",onChange:W=>M("terminationReason",W.target.value),disabled:!w,style:{width:"100%",padding:"10px",borderRadius:"8px",background:C,color:E,border:`1px solid ${T}`}})]})),y.type==="EVENT"&&L("事件发送配置","✉️","var(--color-accent)",f.jsxs(f.Fragment,{children:[f.jsx("label",{style:{display:"block",fontSize:"10px",color:R,marginBottom:"4px"},children:"EVENT SINK (地址/队列名)"}),f.jsx("input",{placeholder:"e.g. sqs:queue_name or conductor",value:y.sink||"",onChange:W=>A("sink",W.target.value),disabled:!w,style:{width:"100%",padding:"10px",borderRadius:"8px",background:C,color:E,border:`1px solid ${T}`}})]})),y.type==="WAIT"&&L("等待状态配置","⏳","var(--color-accent)",f.jsxs("div",{style:{fontSize:"12px",color:R,lineHeight:"1.6"},children:["此任务将使工作流进入 ",f.jsx("b",{children:"IN_PROGRESS"})," 状态,直到外部信号触发更新或达到超时时间。",f.jsx("br",{}),f.jsx("br",{}),"您可以在下方设置超时限制。"]})),(y.type==="DECISION"||y.type==="SWITCH")&&L("决策条件配置","⚖️","var(--color-accent)",f.jsxs(f.Fragment,{children:[$("判断参数名","caseValueParam"),U("JS 表达式","caseExpression")]})),y.type==="DO_WHILE"&&L("循环逻辑配置","🔄","var(--color-accent)",f.jsx(f.Fragment,{children:U("循环结束条件 (JS)","loopCondition")})),f.jsxs("div",{style:{marginTop:"32px",borderTop:`1px solid ${T}`,paddingTop:"24px"},children:[f.jsx("div",{style:{fontSize:"11px",fontWeight:"bold",marginBottom:"16px",opacity:.6,textTransform:"uppercase",letterSpacing:"1px"},children:"通用参数与属性"}),$("任务唯一引用名 (Reference Name)","taskReferenceName"),$("任务描述","description"),U("输入参数 (inputParameters)","inputParameters",!0),f.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"12px",marginTop:"16px"},children:[$("重试次数","retryCount","number"),$("超时限制 (秒)","timeoutSeconds","number")]})]}),f.jsx("div",{style:{marginTop:"48px",opacity:.6},children:f.jsxs("details",{children:[f.jsx("summary",{style:{fontSize:"11px",cursor:"pointer",marginBottom:"8px"},children:"查看完整 JSON (只读)"}),f.jsx("pre",{style:{background:"rgba(0,0,0,0.2)",padding:"16px",borderRadius:"8px",fontSize:"10px",overflow:"auto",border:`1px solid ${T}`,color:R},children:JSON.stringify(y,null,2)})]})})]}),w&&f.jsxs("div",{style:{padding:"24px",borderTop:`1px solid ${T}`,background:"var(--bg-secondary)",display:"flex",gap:"12px",flexShrink:0},children:[f.jsx("div",{style:{flex:1,fontSize:"11px",color:R,display:"flex",alignItems:"center"},children:"✅ 所有修改已实时同步"}),f.jsx("button",{onClick:r,style:{padding:"10px 24px",background:"var(--color-accent)",color:"#fff",border:"none",borderRadius:"8px",fontWeight:"bold",cursor:"pointer",boxShadow:"0 4px 12px var(--color-accent-bg)"},children:"完成退出"})]}),f.jsx(bb,{isOpen:u,onClose:()=>d(!1),onSelect:g,suggestions:h,anchorRect:l})]})},_b=D.memo(xb),xh={id:"1",role:"ai",content:"你好!我是您的流程助手。我可以帮你生成工作流框架、优化逻辑或提供参数配置建议。你想实现什么样的流程?",type:"text"},_h=e=>e.split(/(```[\s\S]*?```)/).map((r,n)=>{if(r.startsWith("```")&&r.endsWith("```")){const a=r.slice(3,-3),i=a.indexOf(`
|
|
228
|
-
`),o=i>=0?a.slice(i+1):a;return
|
|
229
|
-
`&&
|
|
238
|
+
`,Ab=({isOpen:e,onClose:n,onSelect:t,suggestions:r,anchorRect:a})=>{if(!e||!a)return null;const i={position:"fixed",top:a.bottom+8,left:Math.max(a.left-200,20),width:"280px",zIndex:3e3};return d.jsxs(d.Fragment,{children:[d.jsx("div",{className:"suggester-overlay",onClick:n}),d.jsxs("div",{className:"parameter-suggester-popover glass-panel",style:i,children:[d.jsxs("div",{className:"suggester-header",children:[d.jsx("span",{className:"sparkle-icon",children:"✨"}),"AI Suggestions"]}),d.jsx("div",{className:"suggester-list",children:r.length===0?d.jsxs("div",{className:"suggester-loading",children:[d.jsx("div",{className:"suggester-skeleton-line",style:{width:"85%"}}),d.jsx("div",{className:"suggester-skeleton-line",style:{width:"65%"}}),d.jsx("div",{className:"suggester-skeleton-line",style:{width:"75%"}})]}):r.map((o,s)=>d.jsxs("div",{className:"suggestion-item",onClick:()=>{t(o.value),n()},children:[d.jsx("div",{className:"suggestion-label",children:o.label}),d.jsx("div",{className:"suggestion-value",children:o.value}),d.jsx("div",{className:"suggestion-desc",children:o.description})]},s))})]})]})},Lb=[{label:"工作流输入",value:"${workflow.input.fieldName}",desc:"引用工作流启动时传入的参数"},{label:"上游任务输出",value:"${taskRef.output.result}",desc:"引用上游任务的输出字段"},{label:"工作流变量",value:"${workflow.variables.varName}",desc:"引用 SET_VARIABLE 设置的变量"},{label:"工作流 ID",value:"${workflow.workflowId}",desc:"当前工作流实例 ID"},{label:"关联 ID",value:"${workflow.correlationId}",desc:"工作流关联 ID"},{label:"工作流状态",value:"${workflow.status}",desc:"当前工作流状态"}],Db=({task:e,isOpen:n=!0,onClose:t,aiConfig:r})=>{const{mode:a,updateTask:i,checkTaskRefUniqueness:o}=te(),[s,l]=M.useState(e),[c,u]=M.useState(!1),[f,p]=M.useState(null),[h,v]=M.useState(()=>e?.type==="WAIT"&&e.inputParameters?.until?"until":"duration"),[m,g]=M.useState(()=>e?.type==="DO_WHILE"&&e.inputParameters?.items?"items":"condition"),[b,y]=M.useState(()=>!e||e.type!=="FORK_JOIN_DYNAMIC"?"classic":e.forkTaskWorkflow?"workflow":e.forkTaskType?"task":"classic"),[x,_]=M.useState(!1),[E,T]=M.useState(),[N,C]=M.useState([]),[I,P]=M.useState(()=>()=>{}),D=[{label:"引用工作流输入",value:"${workflow.input.data}",description:"引用工作流启动时传入的原始数据"},{label:"引用前序任务输出",value:"${previous_task.output.result}",description:"引用上一个节点的计算结果"},{label:"环境变量",value:"${workflow.variables.api_key}",description:"引用工作流定义的全局变量"}],F=async(S,$)=>{const G=S.currentTarget.getBoundingClientRect();T(G),P(()=>$),C([]),_(!0);const re=r?.apiKey||localStorage.getItem("AI_API_KEY")||"";if(!re){C(D);return}try{const H=r?.baseUrl||localStorage.getItem("AI_BASE_URL")||"",ae=r?.model||localStorage.getItem("AI_MODEL")||"",ie={apiKey:re};H&&(ie.baseUrl=H),ae&&(ie.model=ae);const{workflowDef:xe}=te.getState(),Oe=qb(R,xe),ue=(await Rb([{role:"system",content:"You are a Conductor workflow expert. Return only valid JSON."},{role:"user",content:Oe}],ie)).match(/\[[\s\S]*\]/);if(ue){const ve=JSON.parse(ue[0]);C(ve)}else C(D)}catch{C(D)}};if(M.useEffect(()=>{e&&(l(e),e.type==="WAIT"&&v(e.inputParameters?.until?"until":"duration"),e.type==="DO_WHILE"&&g(e.inputParameters?.items?"items":"condition"),e.type==="FORK_JOIN_DYNAMIC"&&(e.forkTaskWorkflow?y("workflow"):e.forkTaskType?y("task"):y("classic")))},[e]),!e&&!s)return null;const R=e||s,k=s&&e&&s.taskReferenceName===e.taskReferenceName?s:R,W=n&&e?"panel-enter-active":"panel-exit",z=a==="edit",U="var(--text-primary)",K="var(--glass-border)",Y="var(--bg-tertiary)",J="var(--text-secondary)",O=(S,$)=>{const G={...k,[S]:$};l(G),i(k.taskReferenceName,{[S]:$})},V=(S,$,G)=>{const H={...k[S]||{},[$]:G},ae={...k,[S]:H};l(ae),i(k.taskReferenceName,{[S]:H})},Q=(S,$)=>{const G=k.inputParameters||{},H={...G.http_request||k.httpRequest||{},[S]:$},ie={inputParameters:{...G,http_request:H}};k.httpRequest&&(ie.httpRequest=H);const xe={...k,...ie};l(xe),i(k.taskReferenceName,ie)},w=(S,$)=>{const re={inputParameters:{...k.inputParameters,[S]:$}},H={...k,...re};l(H),i(k.taskReferenceName,re)},L=S=>{if(!f)return;const $=f.selectionStart??0,G=f.selectionEnd??0,re=f.value,H=re.substring(0,$)+S+re.substring(G),ae=f.getAttribute("data-field");ae&&O(ae,H),u(!1)},q=(S,$,G,re)=>d.jsxs("div",{style:{marginBottom:"24px",padding:"16px",borderRadius:"12px",background:`${G}10`,border:`1px solid ${G}30`,boxShadow:"0 4px 12px rgba(0,0,0,0.05)"},children:[d.jsxs("div",{style:{fontSize:"12px",fontWeight:"bold",marginBottom:"16px",color:G,display:"flex",alignItems:"center",gap:"8px"},children:[d.jsx("span",{children:$})," ",S]}),re]}),A=(S,$,G="text",re)=>{const H=$==="taskReferenceName",ae=H&&!o(k[$],k.taskReferenceName);return d.jsxs("div",{style:{marginBottom:"16px"},children:[d.jsxs("label",{style:{display:"block",fontSize:"11px",color:J,marginBottom:"6px",fontWeight:"600",textTransform:"uppercase"},children:[S,H&&ae&&d.jsx("span",{style:{color:"#ef4444",marginLeft:"8px",textTransform:"none"},children:"⚠️ 已存在相同引用名"})]}),d.jsxs("div",{style:{position:"relative",display:"flex",alignItems:"center"},children:[d.jsx("input",{type:G,value:k[$]??"",placeholder:re,onChange:ie=>O($,G==="number"?ie.target.value===""?void 0:Number(ie.target.value):ie.target.value),disabled:!z,style:{width:"100%",padding:`8px ${z&&!H?"32px":"12px"} 8px 12px`,borderRadius:"6px",border:`1px solid ${ae?"#ef4444":K}`,background:Y,color:U,fontSize:"13px",outline:"none",opacity:z?1:.8,fontFamily:H?"monospace":"inherit"}}),z&&!H&&d.jsx("button",{className:"ai-hint-trigger",onClick:ie=>F(ie,xe=>O($,xe)),title:"AI 智能提示",style:{position:"absolute",right:"8px",background:"none",border:"none",cursor:"pointer",fontSize:"14px",padding:"4px",opacity:.6,display:"flex",alignItems:"center",justifyContent:"center"},children:"✨"})]})]})},B=(S,$,G,re="text",H)=>d.jsxs("div",{style:{marginBottom:"12px"},children:[d.jsx("label",{style:{display:"block",fontSize:"10px",color:J,marginBottom:"4px"},children:S}),d.jsx("input",{type:re,value:$??"",placeholder:H,onChange:ae=>G(re==="number"?ae.target.value===""?void 0:Number(ae.target.value):ae.target.value),disabled:!z,style:{width:"100%",padding:"8px 10px",borderRadius:"6px",border:`1px solid ${K}`,background:Y,color:U,fontSize:"12px",outline:"none"}})]}),X=(S,$,G,re)=>d.jsxs("div",{style:{marginBottom:"12px"},children:[d.jsx("label",{style:{display:"block",fontSize:"10px",color:J,marginBottom:"4px"},children:S}),d.jsx("select",{value:G,onChange:H=>re(H.target.value),disabled:!z,style:{width:"100%",padding:"8px 10px",borderRadius:"6px",border:`1px solid ${K}`,background:Y,color:U,fontSize:"12px",outline:"none",cursor:"pointer"},children:$.map(H=>d.jsx("option",{value:H,children:H},H))})]}),ee=(S,$,G)=>d.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"12px"},children:[d.jsx("span",{style:{fontSize:"11px",color:J},children:S}),d.jsx("button",{onClick:()=>G(!$),disabled:!z,style:{width:"36px",height:"20px",borderRadius:"10px",border:"none",cursor:"pointer",background:$?"var(--color-accent)":K,position:"relative",transition:"background 0.2s"},children:d.jsx("span",{style:{position:"absolute",top:"2px",left:$?"18px":"2px",width:"16px",height:"16px",borderRadius:"50%",background:"#fff",transition:"left 0.2s"}})})]}),Z=(S,$,G)=>d.jsx("div",{style:{display:"flex",gap:"6px",marginBottom:"12px"},children:S.map(re=>d.jsx("button",{onClick:()=>G(re.key),disabled:!z,style:{flex:1,padding:"6px",borderRadius:"6px",border:`1px solid ${K}`,cursor:"pointer",fontSize:"11px",fontWeight:$===re.key?"bold":"normal",background:$===re.key?"var(--color-accent)":Y,color:$===re.key?"#fff":U},children:re.label},re.key))}),ne=k.inputParameters?.http_request||k.httpRequest||{};return d.jsxs("div",{className:`detail-panel-container ${W}`,style:{position:"absolute",right:0,top:0,bottom:0,width:"450px",zIndex:1200,display:"flex",flexDirection:"column",background:"var(--bg-primary)",borderLeft:`1px solid ${K}`,boxShadow:"-10px 0 30px rgba(0, 0, 0, 0.2)",overflowY:"hidden"},children:[d.jsxs("div",{style:{padding:"24px",borderBottom:`1px solid ${K}`,background:"var(--bg-secondary)",flexShrink:0},children:[d.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"12px"},children:[d.jsx("div",{style:{background:"var(--color-accent)",color:"#fff",padding:"2px 8px",borderRadius:"4px",fontSize:"10px",fontWeight:"bold",letterSpacing:"1px"},children:k.type||"TASK"}),d.jsx("button",{onClick:t,style:{background:"none",border:"none",color:U,cursor:"pointer",fontSize:"20px"},children:"✕"})]}),z?d.jsx("input",{value:k.name||"",onChange:S=>O("name",S.target.value),placeholder:"任务名称",style:{display:"block",width:"100%",fontSize:"22px",fontWeight:"bold",background:"transparent",border:"none",color:U,outline:"none",borderBottom:"2px dashed var(--color-accent)"}}):d.jsx("div",{style:{fontSize:"22px",fontWeight:"bold"},children:k.name}),d.jsxs("div",{style:{fontSize:"12px",color:J,marginTop:"8px",fontFamily:"monospace",opacity:.8},children:["REF: ",k.taskReferenceName]})]}),d.jsxs("div",{style:{flex:1,overflowY:"auto",padding:"24px",background:"var(--bg-primary)"},children:[k.type==="HTTP"&&q("HTTP 请求配置","🌐","var(--color-accent)",d.jsxs(d.Fragment,{children:[d.jsxs("div",{style:{display:"flex",gap:"8px",marginBottom:"12px"},children:[d.jsx("select",{value:ne.method||"GET",onChange:S=>Q("method",S.target.value),disabled:!z,style:{width:"90px",padding:"10px",borderRadius:"8px",background:Y,color:U,border:`1px solid ${K}`,cursor:"pointer"},children:["GET","POST","PUT","DELETE","PATCH","HEAD","OPTIONS"].map(S=>d.jsx("option",{value:S,children:S},S))}),d.jsx("input",{placeholder:"URI (支持 ${workflow.input.uri})",value:ne.uri||"",onChange:S=>Q("uri",S.target.value),disabled:!z,style:{flex:1,padding:"10px",borderRadius:"8px",background:Y,color:U,border:`1px solid ${K}`}})]}),d.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"8px",marginBottom:"12px"},children:[d.jsxs("div",{children:[d.jsx("label",{style:{display:"block",fontSize:"10px",color:J,marginBottom:"4px"},children:"CONTENT-TYPE"}),d.jsx("input",{placeholder:"application/json",value:ne.contentType||"",onChange:S=>Q("contentType",S.target.value),disabled:!z,style:{width:"100%",padding:"8px",borderRadius:"6px",background:Y,color:U,border:`1px solid ${K}`,fontSize:"12px"}})]}),d.jsxs("div",{children:[d.jsx("label",{style:{display:"block",fontSize:"10px",color:J,marginBottom:"4px"},children:"ACCEPT"}),d.jsx("input",{placeholder:"application/json",value:ne.accept||"",onChange:S=>Q("accept",S.target.value),disabled:!z,style:{width:"100%",padding:"8px",borderRadius:"6px",background:Y,color:U,border:`1px solid ${K}`,fontSize:"12px"}})]})]}),d.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"8px",marginBottom:"12px"},children:[d.jsxs("div",{children:[d.jsx("label",{style:{display:"block",fontSize:"10px",color:J,marginBottom:"4px"},children:"连接超时 (ms)"}),d.jsx("input",{type:"number",placeholder:"3000",value:ne.connectionTimeOut??"",onChange:S=>Q("connectionTimeOut",S.target.value===""?void 0:Number(S.target.value)),disabled:!z,style:{width:"100%",padding:"8px",borderRadius:"6px",background:Y,color:U,border:`1px solid ${K}`,fontSize:"12px"}})]}),d.jsxs("div",{children:[d.jsx("label",{style:{display:"block",fontSize:"10px",color:J,marginBottom:"4px"},children:"读取超时 (ms)"}),d.jsx("input",{type:"number",placeholder:"3000",value:ne.readTimeOut??"",onChange:S=>Q("readTimeOut",S.target.value===""?void 0:Number(S.target.value)),disabled:!z,style:{width:"100%",padding:"8px",borderRadius:"6px",background:Y,color:U,border:`1px solid ${K}`,fontSize:"12px"}})]})]}),d.jsxs("div",{style:{marginBottom:"12px"},children:[d.jsx("label",{style:{display:"block",fontSize:"10px",color:J,marginBottom:"4px"},children:"HEADERS (JSON)"}),d.jsx("textarea",{value:typeof ne.headers=="object"?JSON.stringify(ne.headers,null,2):"{}",onChange:S=>{try{Q("headers",JSON.parse(S.target.value))}catch{}},disabled:!z,rows:3,style:{width:"100%",padding:"8px",borderRadius:"8px",background:Y,color:U,border:`1px solid ${K}`,fontSize:"11px",fontFamily:"monospace"}})]}),d.jsx("label",{style:{display:"block",fontSize:"10px",color:J,marginBottom:"4px"},children:"BODY (RAW/JSON)"}),d.jsx("textarea",{value:typeof ne.body=="object"?JSON.stringify(ne.body,null,2):ne.body||"",onChange:S=>{let $=S.target.value;try{$=JSON.parse(S.target.value)}catch{}Q("body",$)},disabled:!z,rows:4,style:{width:"100%",padding:"8px",borderRadius:"8px",background:Y,color:U,border:`1px solid ${K}`,fontSize:"11px",fontFamily:"monospace"}})]})),(k.type==="INLINE"||k.type==="LAMBDA")&&q("内联脚本配置 (Inline)","📜","var(--color-accent)",d.jsxs(d.Fragment,{children:[X("脚本引擎",["graaljs","javascript","value-param","python"],k.evaluatorType||"graaljs",S=>O("evaluatorType",S)),d.jsxs("label",{style:{display:"block",fontSize:"10px",color:J,marginBottom:"4px"},children:["EXPRESSION ",k.evaluatorType==="value-param"?"(值引用)":"(脚本)"]}),d.jsx("textarea",{value:k.inputParameters?.expression||k.inputParameters?.scriptExpression||"",onChange:S=>{const $=k.inputParameters?.scriptExpression!==void 0?"scriptExpression":"expression";w($,S.target.value)},disabled:!z,rows:10,style:{width:"100%",padding:"12px",borderRadius:"8px",background:"#000",color:"var(--color-accent)",border:"1px solid var(--color-accent)",fontSize:"12px",fontFamily:"monospace",lineHeight:"1.5"}}),d.jsx("div",{style:{marginTop:"8px",fontSize:"10px",color:J,fontStyle:"italic"},children:"提示: 使用 $.input.key 访问输入参数,返回值作为任务输出。"})]})),k.type==="JSON_JQ_TRANSFORM"&&q("JQ 数据转换","🔍","var(--color-accent)",d.jsxs(d.Fragment,{children:[d.jsx("label",{style:{display:"block",fontSize:"10px",color:J,marginBottom:"4px"},children:"JQ QUERY EXPRESSION"}),d.jsx("textarea",{value:k.inputParameters?.queryExpression||"",onChange:S=>w("queryExpression",S.target.value),disabled:!z,rows:6,style:{width:"100%",padding:"12px",borderRadius:"8px",background:Y,color:"var(--color-accent)",border:`1px solid ${K}`,fontSize:"12px",fontFamily:"monospace",lineHeight:"1.5"}}),d.jsx("div",{style:{marginTop:"8px",fontSize:"10px",color:J},children:"输出字段: result(首个结果)、resultList(完整列表)"})]})),k.type==="SUB_WORKFLOW"&&q("子工作流配置","🏗️","var(--color-accent)",d.jsxs(d.Fragment,{children:[B("WORKFLOW NAME *",k.subWorkflowParam?.name||"",S=>V("subWorkflowParam","name",S),"text","e.g. my_workflow"),B("VERSION",k.subWorkflowParam?.version??"",S=>V("subWorkflowParam","version",S?parseInt(S):void 0),"number","1"),d.jsx("label",{style:{display:"block",fontSize:"10px",color:J,marginBottom:"4px"},children:"INPUT PARAMETERS MAPPING (JSON)"}),d.jsx("textarea",{value:typeof k.inputParameters=="object"&&k.inputParameters!==null?JSON.stringify(k.inputParameters,null,2):"{}",onChange:S=>{try{O("inputParameters",JSON.parse(S.target.value))}catch{}},disabled:!z,rows:5,style:{width:"100%",padding:"8px",borderRadius:"8px",background:Y,color:U,border:`1px solid ${K}`,fontSize:"11px",fontFamily:"monospace"}}),d.jsxs("div",{style:{fontSize:"10px",color:J,marginTop:"4px"},children:["传递给子工作流的参数,支持 ","${workflow.input.xxx}"," 表达式"]})]})),k.type==="START_WORKFLOW"&&q("启动工作流配置","▶️","var(--color-accent)",d.jsxs(d.Fragment,{children:[d.jsxs("div",{style:{fontSize:"11px",color:J,marginBottom:"12px",padding:"8px",borderRadius:"6px",background:"rgba(255,165,0,0.1)",border:"1px solid rgba(255,165,0,0.3)"},children:["⚡ 注意:此任务启动目标工作流后立即继续,",d.jsx("b",{children:"不等待"}),"目标工作流完成。"]}),B("WORKFLOW NAME *",k.inputParameters?.startWorkflow?.name||"",S=>{const $={...k.inputParameters?.startWorkflow||{},name:S};w("startWorkflow",$)},"text","e.g. target_workflow"),B("VERSION",k.inputParameters?.startWorkflow?.version??"",S=>{const $={...k.inputParameters?.startWorkflow||{},version:S?parseInt(S):void 0};w("startWorkflow",$)},"number","1"),B("CORRELATION ID",k.inputParameters?.startWorkflow?.correlationId||"",S=>{const $={...k.inputParameters?.startWorkflow||{},correlationId:S};w("startWorkflow",$)},"text","${workflow.correlationId}"),d.jsx("label",{style:{display:"block",fontSize:"10px",color:J,marginBottom:"4px"},children:"WORKFLOW INPUT (JSON)"}),d.jsx("textarea",{value:typeof k.inputParameters?.startWorkflow?.input=="object"?JSON.stringify(k.inputParameters.startWorkflow.input,null,2):"{}",onChange:S=>{try{const $={...k.inputParameters?.startWorkflow||{},input:JSON.parse(S.target.value)};w("startWorkflow",$)}catch{}},disabled:!z,rows:4,style:{width:"100%",padding:"8px",borderRadius:"8px",background:Y,color:U,border:`1px solid ${K}`,fontSize:"11px",fontFamily:"monospace"}})]})),k.type==="TERMINATE"&&q("终止状态配置","⏹️","var(--color-accent)",d.jsxs(d.Fragment,{children:[d.jsx("label",{style:{display:"block",fontSize:"10px",color:J,marginBottom:"4px"},children:"TERMINATION STATUS"}),d.jsx("div",{style:{display:"flex",gap:"8px",marginBottom:"16px"},children:["COMPLETED","FAILED"].map(S=>d.jsx("button",{onClick:()=>w("terminationStatus",S),disabled:!z,style:{flex:1,padding:"8px",borderRadius:"6px",cursor:"pointer",background:(k.inputParameters?.terminationStatus||"COMPLETED")===S?"var(--color-accent)":Y,color:(k.inputParameters?.terminationStatus||"COMPLETED")===S?"#fff":U,border:`1px solid ${K}`,fontWeight:"bold",fontSize:"11px"},children:S},S))}),B("TERMINATION REASON",k.inputParameters?.terminationReason||"",S=>w("terminationReason",S),"text","终止原因..."),d.jsx("label",{style:{display:"block",fontSize:"10px",color:J,marginBottom:"4px"},children:"WORKFLOW OUTPUT (JSON)"}),d.jsx("textarea",{value:typeof k.inputParameters?.workflowOutput=="object"?JSON.stringify(k.inputParameters.workflowOutput,null,2):"{}",onChange:S=>{try{w("workflowOutput",JSON.parse(S.target.value))}catch{}},disabled:!z,rows:3,style:{width:"100%",padding:"8px",borderRadius:"8px",background:Y,color:U,border:`1px solid ${K}`,fontSize:"11px",fontFamily:"monospace"}})]})),k.type==="EVENT"&&q("事件发送配置","✉️","var(--color-accent)",d.jsxs(d.Fragment,{children:[B("EVENT SINK *",k.sink||"",S=>O("sink",S),"text","e.g. sqs:queue_name 或 conductor"),d.jsx("div",{style:{fontSize:"10px",color:J,marginTop:"4px",marginBottom:"8px"},children:"支持前缀: conductor | sqs | kafka | amqp | nats"}),ee("异步完成 (asyncComplete)",!!k.asyncComplete,S=>O("asyncComplete",S))]})),k.type==="WAIT"&&q("等待状态配置","⏳","var(--color-accent)",d.jsxs(d.Fragment,{children:[Z([{key:"duration",label:"等待时长"},{key:"until",label:"等待到指定时间"}],h,S=>v(S)),h==="duration"?B("DURATION",k.inputParameters?.duration||"",S=>w("duration",S),"text","e.g. 30s, 10m, 2 hours"):B("UNTIL (时间点)",k.inputParameters?.until||"",S=>w("until",S),"text","e.g. 2025-06-15 09:00 GMT+00:00"),d.jsxs("div",{style:{fontSize:"11px",color:J,lineHeight:"1.6",marginTop:"8px"},children:["此任务会使工作流进入 ",d.jsx("b",{children:"IN_PROGRESS"})," 状态,直到时间满足或外部 API 触发完成。"]})]})),(k.type==="DECISION"||k.type==="SWITCH")&&q("条件分支配置","⚖️","var(--color-accent)",d.jsxs(d.Fragment,{children:[X("评估模式 (evaluatorType)",["value-param","javascript"],k.evaluatorType||"value-param",S=>O("evaluatorType",S)),(k.evaluatorType||"value-param")==="value-param"?B("CASE VALUE PARAM (参数名)",k.caseValueParam||"",S=>O("caseValueParam",S),"text","e.g. status"):d.jsxs(d.Fragment,{children:[d.jsx("label",{style:{display:"block",fontSize:"10px",color:J,marginBottom:"4px"},children:"CASE EXPRESSION (JS)"}),d.jsx("textarea",{value:k.caseExpression||"",onChange:S=>O("caseExpression",S.target.value),disabled:!z,rows:4,style:{width:"100%",padding:"8px",borderRadius:"8px",background:Y,color:"var(--color-accent)",border:`1px solid ${K}`,fontSize:"12px",fontFamily:"monospace"}})]}),d.jsx("div",{style:{fontSize:"10px",color:J,marginTop:"8px"},children:'分支可在图中通过右键节点→"添加分支"进行管理'})]})),k.type==="DO_WHILE"&&q("循环逻辑配置","🔄","var(--color-accent)",d.jsxs(d.Fragment,{children:[Z([{key:"condition",label:"条件循环"},{key:"items",label:"列表迭代"}],m,S=>g(S)),m==="condition"?d.jsxs(d.Fragment,{children:[d.jsx("label",{style:{display:"block",fontSize:"10px",color:J,marginBottom:"4px"},children:"LOOP CONDITION (JS) *"}),d.jsx("textarea",{value:k.loopCondition||"",onChange:S=>O("loopCondition",S.target.value),disabled:!z,rows:4,style:{width:"100%",padding:"8px",borderRadius:"8px",background:Y,color:"var(--color-accent)",border:`1px solid ${K}`,fontSize:"12px",fontFamily:"monospace"}}),d.jsx("div",{style:{fontSize:"10px",color:J,marginTop:"4px"},children:"条件为 true 时继续循环,false 时退出"})]}):d.jsxs(d.Fragment,{children:[d.jsx("label",{style:{display:"block",fontSize:"10px",color:J,marginBottom:"4px"},children:"ITEMS (列表表达式)"}),d.jsx("input",{value:k.inputParameters?.items||"",onChange:S=>w("items",S.target.value),disabled:!z,placeholder:"${workflow.input.myList}",style:{width:"100%",padding:"8px",borderRadius:"6px",border:`1px solid ${K}`,background:Y,color:U,fontSize:"12px",outline:"none"}}),d.jsx("div",{style:{fontSize:"10px",color:J,marginTop:"4px"},children:"引用一个数组,对每个元素执行一次循环体"})]}),d.jsx("div",{style:{marginTop:"12px"},children:B("KEEP LAST N 次迭代",k.keepLastN??"",S=>O("keepLastN",S?parseInt(S):void 0),"number","0 = 保留全部")})]})),k.type==="FORK_JOIN_DYNAMIC"&&q("动态并行配置","⚡","var(--color-accent)",d.jsxs(d.Fragment,{children:[Z([{key:"classic",label:"经典模式"},{key:"task",label:"任务简化"},{key:"workflow",label:"工作流简化"}],b,S=>y(S)),b==="classic"&&d.jsxs(d.Fragment,{children:[B("DYNAMIC_FORK_TASKS_PARAM",k.dynamicForkTasksParam||"",S=>O("dynamicForkTasksParam",S),"text","e.g. dynamic_tasks"),B("DYNAMIC_FORK_TASKS_INPUT_PARAM",k.dynamicForkTasksInputParamName||"",S=>O("dynamicForkTasksInputParamName",S),"text","e.g. input"),d.jsx("div",{style:{fontSize:"10px",color:J},children:"经典模式:通过 inputParameters 传入 dynamicTasks 数组和 dynamicTasksInput 映射"})]}),b==="task"&&d.jsxs(d.Fragment,{children:[B("FORK TASK TYPE *",k.forkTaskType||"",S=>O("forkTaskType",S),"text","e.g. HTTP"),B("FORK TASK NAME (仅 SIMPLE 任务)",k.forkTaskName||"",S=>O("forkTaskName",S),"text","e.g. my_task"),B("FORK TASK INPUTS PARAM",k.forkTaskInputs||"",S=>O("forkTaskInputs",S),"text","e.g. inputs"),d.jsx("div",{style:{fontSize:"10px",color:J},children:"所有分支执行相同任务类型,每个元素作为一个分支输入"})]}),b==="workflow"&&d.jsxs(d.Fragment,{children:[B("FORK WORKFLOW NAME *",k.forkTaskWorkflow||"",S=>O("forkTaskWorkflow",S),"text","e.g. sub_workflow"),B("WORKFLOW VERSION",k.forkTaskWorkflowVersion||"",S=>O("forkTaskWorkflowVersion",S),"text","1"),B("FORK TASK INPUTS PARAM",k.forkTaskInputs||"",S=>O("forkTaskInputs",S),"text","e.g. inputs"),d.jsx("div",{style:{fontSize:"10px",color:J},children:"所有分支执行相同子工作流,每个元素作为一个子工作流输入"})]})]})),k.type==="DYNAMIC"&&q("动态任务配置","🎯","var(--color-accent)",d.jsxs(d.Fragment,{children:[B("DYNAMIC TASK NAME PARAM *",k.dynamicTaskNameParam||"",S=>O("dynamicTaskNameParam",S),"text","e.g. taskToExecute"),d.jsx("div",{style:{fontSize:"10px",color:J,marginTop:"4px"},children:'运行时从 inputParameters 的指定键中读取实际任务类型名(如 "HTTP"、"SIMPLE")'})]})),k.type==="HUMAN"&&q("人工审批配置","👤","var(--color-accent)",d.jsxs(d.Fragment,{children:[B("表单模板名 (userFormTemplate)",k.humanTaskDef?.userFormTemplate||"",S=>V("humanTaskDef","userFormTemplate",S),"text","e.g. approval_form"),X("分配策略 (assignmentCompletionStrategy)",["LEAVE_OPEN","TERMINATE"],k.humanTaskDef?.assignmentCompletionStrategy||"LEAVE_OPEN",S=>V("humanTaskDef","assignmentCompletionStrategy",S)),B("显示名称 (displayName)",k.humanTaskDef?.displayName||"",S=>V("humanTaskDef","displayName",S),"text","审批任务")]})),k.type==="KAFKA_PUBLISH"&&q("Kafka 推送配置","📨","var(--color-accent)",d.jsxs(d.Fragment,{children:[B("BOOTSTRAP SERVERS *",k.inputParameters?.bootStrapServers||"",S=>w("bootStrapServers",S),"text","localhost:9092"),B("TOPIC *",k.inputParameters?.topic||"",S=>w("topic",S),"text","my_topic"),B("KEY (消息分区键)",k.inputParameters?.key||"",S=>w("key",S),"text",""),d.jsx("label",{style:{display:"block",fontSize:"10px",color:J,marginBottom:"4px"},children:"VALUE (消息内容)"}),d.jsx("textarea",{value:typeof k.inputParameters?.value=="object"?JSON.stringify(k.inputParameters.value,null,2):k.inputParameters?.value||"",onChange:S=>{let $=S.target.value;try{$=JSON.parse(S.target.value)}catch{}w("value",$)},disabled:!z,rows:4,style:{width:"100%",padding:"8px",borderRadius:"8px",background:Y,color:U,border:`1px solid ${K}`,fontSize:"11px",fontFamily:"monospace",marginBottom:"12px"}}),d.jsx("label",{style:{display:"block",fontSize:"10px",color:J,marginBottom:"4px"},children:"HEADERS (JSON)"}),d.jsx("textarea",{value:typeof k.inputParameters?.headers=="object"?JSON.stringify(k.inputParameters.headers,null,2):"{}",onChange:S=>{try{w("headers",JSON.parse(S.target.value))}catch{}},disabled:!z,rows:3,style:{width:"100%",padding:"8px",borderRadius:"8px",background:Y,color:U,border:`1px solid ${K}`,fontSize:"11px",fontFamily:"monospace"}})]})),k.type==="SET_VARIABLE"&&q("变量配置","📦","var(--color-accent)",d.jsxs(d.Fragment,{children:[d.jsxs("div",{style:{fontSize:"11px",color:J,marginBottom:"12px"},children:["在 inputParameters 中定义要设置的变量名和值,后续任务通过 ","${workflow.variables.varName}"," 访问。"]}),d.jsx("label",{style:{display:"block",fontSize:"10px",color:J,marginBottom:"4px"},children:"VARIABLES (JSON)"}),d.jsx("textarea",{value:typeof k.inputParameters=="object"&&k.inputParameters!==null?JSON.stringify(k.inputParameters,null,2):"{}",onChange:S=>{try{O("inputParameters",JSON.parse(S.target.value))}catch{}},disabled:!z,rows:6,style:{width:"100%",padding:"8px",borderRadius:"8px",background:Y,color:U,border:`1px solid ${K}`,fontSize:"11px",fontFamily:"monospace"}})]})),d.jsxs("div",{style:{marginTop:"32px",borderTop:`1px solid ${K}`,paddingTop:"24px"},children:[d.jsx("div",{style:{fontSize:"11px",fontWeight:"bold",marginBottom:"16px",opacity:.6,textTransform:"uppercase",letterSpacing:"1px"},children:"通用参数与属性"}),A("任务唯一引用名 (Reference Name)","taskReferenceName"),A("任务描述","description"),d.jsxs("div",{style:{marginBottom:"16px"},children:[d.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"6px"},children:[d.jsxs("label",{style:{fontSize:"11px",color:J,fontWeight:"600",textTransform:"uppercase"},children:["输入参数 (inputParameters) ",d.jsx("span",{style:{opacity:.5,fontWeight:"normal"},children:"(JSON)"})]}),z&&d.jsxs("button",{onClick:()=>u(!c),title:"快捷表达式",style:{fontSize:"11px",background:c?"var(--color-accent)":"none",border:`1px solid ${K}`,borderRadius:"4px",padding:"2px 6px",cursor:"pointer",color:c?"#fff":J},children:["{}"," 快捷片段"]})]}),c&&d.jsx("div",{style:{marginBottom:"8px",padding:"8px",borderRadius:"6px",border:`1px solid ${K}`,background:"var(--bg-secondary)",display:"flex",flexWrap:"wrap",gap:"6px"},children:Lb.map(S=>d.jsx("button",{onClick:()=>L(S.value),title:S.desc,style:{fontSize:"10px",padding:"3px 8px",borderRadius:"4px",border:`1px solid ${K}`,background:Y,color:U,cursor:"pointer",fontFamily:"monospace"},children:S.label},S.value))}),d.jsx("textarea",{value:typeof k.inputParameters=="object"&&k.inputParameters!==null?JSON.stringify(k.inputParameters,null,2):k.inputParameters??"","data-field":"inputParameters",onFocus:S=>p(S.target),onChange:S=>{try{O("inputParameters",JSON.parse(S.target.value))}catch{l($=>({...$,inputParameters:S.target.value}))}},disabled:!z,rows:5,style:{width:"100%",padding:"8px 12px",borderRadius:"6px",border:`1px solid ${K}`,background:Y,color:U,fontSize:"12px",fontFamily:"monospace",outline:"none",resize:"vertical"}})]}),d.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"12px"},children:[A("重试次数","retryCount","number"),A("超时限制 (秒)","timeoutSeconds","number")]}),d.jsxs("details",{style:{marginTop:"16px"},children:[d.jsx("summary",{style:{fontSize:"11px",cursor:"pointer",color:J,userSelect:"none",fontWeight:"600"},children:"▸ 执行控制(高级)"}),d.jsxs("div",{style:{marginTop:"12px"},children:[X("重试策略 (retryLogic)",["FIXED","EXPONENTIAL_BACKOFF","LINEAR_BACKOFF"],k.retryLogic||"FIXED",S=>O("retryLogic",S)),B("重试延迟 (秒)",k.retryDelaySeconds??"",S=>O("retryDelaySeconds",S?parseInt(S):void 0),"number","0"),X("超时策略 (timeoutPolicy)",["TIME_OUT_WF","ALERT_ONLY","RETRY","FAIL_WORKFLOW"],k.timeoutPolicy||"TIME_OUT_WF",S=>O("timeoutPolicy",S)),B("启动延迟 (秒)",k.startDelay??"",S=>O("startDelay",S?parseInt(S):void 0),"number","0"),ee("可选任务 (optional) — 失败不影响工作流",!!k.optional,S=>O("optional",S)),ee("异步完成 (asyncComplete)",!!k.asyncComplete,S=>O("asyncComplete",S))]})]})]}),d.jsx("div",{style:{marginTop:"48px",opacity:.6},children:d.jsxs("details",{children:[d.jsx("summary",{style:{fontSize:"11px",cursor:"pointer",marginBottom:"8px"},children:"查看完整 JSON (只读)"}),d.jsx("pre",{style:{background:"rgba(0,0,0,0.2)",padding:"16px",borderRadius:"8px",fontSize:"10px",overflow:"auto",border:`1px solid ${K}`,color:J},children:JSON.stringify(k,null,2)})]})})]}),z&&d.jsxs("div",{style:{padding:"24px",borderTop:`1px solid ${K}`,background:"var(--bg-secondary)",display:"flex",gap:"12px",flexShrink:0},children:[d.jsx("div",{style:{flex:1,fontSize:"11px",color:J,display:"flex",alignItems:"center"},children:"✅ 所有修改已实时同步"}),d.jsx("button",{onClick:t,style:{padding:"10px 24px",background:"var(--color-accent)",color:"#fff",border:"none",borderRadius:"8px",fontWeight:"bold",cursor:"pointer",boxShadow:"0 4px 12px var(--color-accent-bg)"},children:"完成退出"})]}),d.jsx(Ab,{isOpen:x,onClose:()=>_(!1),onSelect:I,suggestions:N,anchorRect:E})]})},Mb=M.memo(Db),Rh={id:"1",role:"ai",content:"你好!我是您的流程助手。我可以帮你生成工作流框架、优化逻辑或提供参数配置建议。你想实现什么样的流程?",type:"text"},Oh=e=>e.split(/(```[\s\S]*?```)/).map((t,r)=>{if(t.startsWith("```")&&t.endsWith("```")){const a=t.slice(3,-3),i=a.indexOf(`
|
|
239
|
+
`),o=i>=0?a.slice(i+1):a;return d.jsx("pre",{children:d.jsx("code",{children:o})},r)}return d.jsx("span",{children:Bb(t)},r)}),Bb=e=>{const n=[],t=/(\*\*[^*]+\*\*|`[^`]+`|\n)/g;let r=0,a;for(;(a=t.exec(e))!==null;){a.index>r&&n.push(e.slice(r,a.index));const i=a[0];i.startsWith("**")&&i.endsWith("**")?n.push(d.jsx("strong",{children:i.slice(2,-2)},a.index)):i.startsWith("`")&&i.endsWith("`")?n.push(d.jsx("code",{children:i.slice(1,-1)},a.index)):i===`
|
|
240
|
+
`&&n.push(d.jsx("br",{},a.index)),r=a.index+i.length}return r<e.length&&n.push(e.slice(r)),n},Wb=({aiConfig:e})=>{const{workflowDef:n,applyAIGeneratedWorkflow:t}=te(),[r,a]=M.useState(!1),[i,o]=M.useState(""),[s,l]=M.useState(!1),[c,u]=M.useState([Rh]),[f,p]=M.useState(""),[h,v]=M.useState(null),m=M.useRef(null),g=M.useRef(null),b=M.useRef(null),y=()=>{const R=g.current;R&&(R.style.height="auto",R.style.height=Math.min(R.scrollHeight,120)+"px")},x=()=>{const R=g.current;R&&(R.style.height="auto")};M.useEffect(()=>()=>{b.current?.abort()},[]),M.useEffect(()=>{const R=()=>a(!0);return window.addEventListener("open-ai-chat",R),()=>window.removeEventListener("open-ai-chat",R)},[]);const _=()=>{m.current?.scrollIntoView({behavior:"smooth"})};M.useEffect(()=>{r&&_()},[c,r,f]);const E=M.useCallback(R=>{const k=[{role:"system",content:jb}];for(const z of c)z.role==="user"?k.push({role:"user",content:z.content}):z.role==="ai"&&!z.error&&k.push({role:"assistant",content:z.content});const W=Pb(R,n);return k.push({role:"user",content:W}),k},[c,n]),T=async R=>{const k=R||i.trim();if(!k||s)return;b.current?.abort();const W=new AbortController;b.current=W;const z={id:Date.now().toString(),role:"user",content:k,type:"text"};R||(u(U=>[...U,z]),o(""),x()),l(!0),p("");try{const U=e?.apiKey||localStorage.getItem("AI_API_KEY")||"",K=e?.baseUrl||localStorage.getItem("AI_BASE_URL")||"",Y=e?.model||localStorage.getItem("AI_MODEL")||"";if(!U){setTimeout(()=>{if(W.signal.aborted)return;const q={id:(Date.now()+1).toString(),role:"ai",content:"由于未检测到 API Key,我为您模拟了一个简单的审批流程:",type:"change_suggestion",payload:{name:"demo_approval",tasks:[{name:"submit_request",taskReferenceName:"submit_1",type:"SIMPLE"},{name:"manager_approve",taskReferenceName:"approve_1",type:"SIMPLE"}]}};u(A=>[...A,q]),l(!1)},1e3);return}const J={apiKey:U};K&&(J.baseUrl=K),Y&&(J.model=Y);const O=E(k),V=await Ob(O,J,q=>{p(A=>A+q)},()=>{},W.signal),Q=V.match(/```json\n([\s\S]*?)\n```/),w=Q?JSON.parse(Q[1]):null,L={id:(Date.now()+1).toString(),role:"ai",content:V,type:w?"change_suggestion":"text",payload:w};u(q=>[...q,L]),p("")}catch(U){if(U.name==="AbortError")p(K=>{if(K){const Y={id:(Date.now()+1).toString(),role:"ai",content:K,type:"text"};u(J=>[...J,Y])}return""});else{const K={id:Date.now().toString(),role:"ai",content:`抱歉,目前无法连接到 AI 服务: ${U.message}`,error:!0};u(Y=>[...Y,K]),p("")}}finally{l(!1)}},N=()=>{b.current?.abort()},C=()=>{b.current?.abort(),u([Rh]),p(""),l(!1)},I=R=>{navigator.clipboard.writeText(R.content),v(R.id),setTimeout(()=>v(null),1500)},P=()=>{const R=[...c].reverse().find(k=>k.role==="user");R&&(u(k=>k[k.length-1]?.error?k.slice(0,-1):k),T(R.content))},D=R=>{t(R)},F=R=>{R.nativeEvent.isComposing||R.keyCode===229||R.key==="Enter"&&!R.shiftKey&&(R.preventDefault(),T())};return r?d.jsxs("div",{className:"ai-chat-panel",children:[d.jsxs("div",{className:"ai-header",children:[d.jsxs("div",{className:"ai-title",children:[d.jsx("span",{className:"ai-sparkles",children:"✨"}),"AI 助手"]}),d.jsxs("div",{style:{display:"flex",gap:"4px",alignItems:"center"},children:[d.jsx("button",{className:"ai-close",onClick:C,title:"清空对话",children:"🗑"}),d.jsx("button",{className:"ai-close",onClick:()=>a(!1),children:"×"})]})]}),d.jsxs("div",{className:"ai-messages",children:[c.map(R=>d.jsxs("div",{className:`message ${R.role}${R.error?" error":""}`,children:[d.jsx("div",{className:"message-content",children:R.role==="ai"?Oh(R.content):R.content}),R.type==="change_suggestion"&&R.payload&&d.jsxs("div",{className:"change-card",children:[d.jsx("div",{className:"card-header",children:"工作流修改建议"}),d.jsxs("div",{className:"card-actions",children:[d.jsx("button",{className:"card-btn",children:"预览"}),d.jsx("button",{className:"card-btn apply",onClick:()=>D(R.payload),children:"应用"})]})]}),R.role==="ai"&&!R.error&&d.jsx("button",{className:"copy-btn",onClick:()=>I(R),title:"复制",children:h===R.id?"✓":"📋"}),R.error&&d.jsx("button",{className:"retry-btn",onClick:P,children:"重试"})]},R.id)),s&&f&&d.jsxs("div",{className:"message ai",style:{opacity:.9},children:[d.jsx("div",{className:"message-content",children:Oh(f)}),d.jsx("span",{className:"streaming-cursor",children:"▊"})]}),s&&!f&&d.jsxs("div",{className:"message ai thinking-skeleton",children:[d.jsx("div",{className:"skeleton-line",style:{width:"80%"}}),d.jsx("div",{className:"skeleton-line",style:{width:"60%"}}),d.jsx("div",{className:"skeleton-line",style:{width:"70%"}})]}),d.jsx("div",{ref:m})]}),d.jsx("div",{className:"ai-input-area",children:d.jsxs("div",{className:"ai-input-container",children:[d.jsx("textarea",{ref:g,className:"ai-input",placeholder:s?"AI 正在响应...":"描述您的需求…(Shift+Enter 换行)",value:i,onChange:R=>o(R.target.value),onInput:y,onKeyDown:F,disabled:s,rows:2}),s?d.jsx("button",{className:"ai-send stop",onClick:N,title:"停止生成",children:"⏹"}):d.jsx("button",{className:"ai-send",onClick:()=>T(),title:"发送",children:"🚀"})]})})]}):d.jsx("div",{className:"ai-chat-panel collapsed",onClick:()=>a(!0),children:d.jsx("div",{className:"ai-header",style:{borderBottom:"none"},children:d.jsxs("div",{className:"ai-title",children:[d.jsx("span",{className:"ai-sparkles",children:"✨"}),"AI 助手"]})})})},jh=M.forwardRef(({workflowDef:e,readOnly:n=!1,theme:t="dark",themeColor:r="blue",layoutDirection:a="LR",searchQuery:i="",workflowExecution:o,onRequestImport:s,executionActions:l,aiConfig:c,onSave:u,onWorkflowChange:f,height:p="100%"},h)=>{const{setWorkflow:v,setTheme:m,setThemeColor:g,setLayoutDirection:b,setNodesLocked:y,selectedTask:x,setSelectedTask:_,edgeType:E,importExecutionJSON:T,setMode:N,isDetailPanelOpen:C,setIsDetailPanelOpen:I,selectTaskAction:P}=te(),[D,F]=M.useState(!1);M.useEffect(()=>{m(t),g(r),b(a),y(n||!!o)},[t,r,a,n,o,m,g,b,y]),M.useEffect(()=>{e&&(v(e,a),te.temporal.getState().clear())},[e,v,a]),M.useEffect(()=>{o?T(o):N(n?"view":"edit")},[o,T,N,n]),M.useImperativeHandle(h,()=>({getWorkflowDef:()=>te.getState().workflowDef,getValidationResults:()=>te.getState().validationResults,save:()=>{const k=te.getState().workflowDef;k&&u&&u(k)},createBlankWorkflow:k=>{te.getState().createBlankWorkflow(k),te.temporal.getState().clear()}}),[u]),M.useEffect(()=>{if(!f)return;let k=!0,W=te.getState().workflowDef;return te.subscribe(U=>{const K=U.workflowDef;if(K!==W){if(W=K,k){k=!1;return}K&&f(K)}})},[f]);const R=k=>{o?_(k):P(k,!0)};return d.jsxs("div",{className:`workflow-ide ${t==="light"?"light-theme":""}`,"data-mode":t,"data-brand":r,style:{width:"100%",height:p,display:"flex",position:"relative",overflow:"hidden"},children:[d.jsxs("div",{className:"workflow-viewer",style:{flex:1,position:"relative"},children:[d.jsx(j.ReactFlowProvider,{children:d.jsx(Ib,{onNodeClick:R,edgeType:E,theme:t,nodesLocked:n||!!o,searchQuery:i,onSave:u,onRequestImport:s,executionActions:l})}),d.jsx("div",{style:{position:"absolute",top:10,right:10,zIndex:10,display:"flex",gap:8}})]}),d.jsx(Mb,{task:x,isOpen:C,onClose:()=>I(!1),theme:t,aiConfig:c}),d.jsx(_h,{isOpen:D,onClose:()=>F(!1),theme:t,onTaskSelect:k=>{P(k,!0)}}),o&&d.jsx(xh,{}),d.jsx(Wb,{aiConfig:c})]})});jh.displayName="WorkflowIDE",Ee.WorkflowIDE=jh,Object.defineProperty(Ee,Symbol.toStringTag,{value:"Module"})}));
|