@next-bricks/diagram 0.42.12 → 0.43.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.
Files changed (68) hide show
  1. package/dist/bricks.json +3 -3
  2. package/dist/chunks/3025.6d94cc70.js +3 -0
  3. package/dist/chunks/3025.6d94cc70.js.map +1 -0
  4. package/dist/chunks/3233.70157b34.js +3 -0
  5. package/dist/chunks/3233.70157b34.js.map +1 -0
  6. package/dist/chunks/3252.0a5098f4.js +2 -0
  7. package/dist/chunks/3252.0a5098f4.js.map +1 -0
  8. package/dist/chunks/9711.d7bd00df.js +2 -0
  9. package/dist/chunks/9711.d7bd00df.js.map +1 -0
  10. package/dist/chunks/eo-diagram.1934f2b2.js +2 -0
  11. package/dist/chunks/eo-diagram.1934f2b2.js.map +1 -0
  12. package/dist/chunks/eo-display-canvas.f874fb2f.js +2 -0
  13. package/dist/chunks/eo-display-canvas.f874fb2f.js.map +1 -0
  14. package/dist/chunks/eo-draw-canvas.84ade234.js +2 -0
  15. package/dist/chunks/eo-draw-canvas.84ade234.js.map +1 -0
  16. package/dist/chunks/experimental-node.7441f68a.js +2 -0
  17. package/dist/chunks/{experimental-node.ff43315f.js.map → experimental-node.7441f68a.js.map} +1 -1
  18. package/dist/chunks/{main.5cfa7eee.js → main.9e233da7.js} +2 -2
  19. package/dist/chunks/{main.5cfa7eee.js.map → main.9e233da7.js.map} +1 -1
  20. package/dist/examples.json +3 -3
  21. package/dist/index.d6687c6f.js +2 -0
  22. package/dist/index.d6687c6f.js.map +1 -0
  23. package/dist/manifest.json +157 -150
  24. package/dist/types.json +3693 -3147
  25. package/dist-types/diagram/lines/getPolyLinePoints.d.ts +2 -2
  26. package/dist-types/draw-canvas/CellComponent.d.ts +3 -2
  27. package/dist-types/draw-canvas/HoverStateContext.d.ts +27 -0
  28. package/dist-types/draw-canvas/LineConnectorComponent.d.ts +9 -0
  29. package/dist-types/draw-canvas/SmartConnectLineComponent.d.ts +8 -0
  30. package/dist-types/draw-canvas/constants.d.ts +2 -0
  31. package/dist-types/draw-canvas/decorators/DecoratorArea.d.ts +1 -1
  32. package/dist-types/draw-canvas/decorators/index.d.ts +1 -1
  33. package/dist-types/draw-canvas/index.d.ts +4 -2
  34. package/dist-types/draw-canvas/interfaces.d.ts +56 -16
  35. package/dist-types/draw-canvas/processors/handleMouseDown.d.ts +3 -2
  36. package/dist-types/draw-canvas/processors/normalizeSnapOptions.d.ts +6 -0
  37. package/dist-types/draw-canvas/processors/normalizeSnapOptions.spec.d.ts +1 -0
  38. package/dist-types/draw-canvas/reducers/interfaces.d.ts +3 -1
  39. package/dist-types/shared/canvas/processors/getConnectLinePoints.d.ts +4 -0
  40. package/dist-types/shared/canvas/processors/getConnectLinePoints.spec.d.ts +1 -0
  41. package/dist-types/shared/canvas/processors/getSmartLinePoints.d.ts +3 -0
  42. package/dist-types/shared/canvas/processors/nodeViewToNodeRect.d.ts +3 -0
  43. package/dist-types/shared/canvas/shapes/Rectangle.d.ts +2 -0
  44. package/dist-types/shared/canvas/useLineMarkers.d.ts +7 -5
  45. package/docs/eo-draw-canvas.md +15 -5
  46. package/package.json +2 -2
  47. package/dist/chunks/1371.226b7bfe.js +0 -2
  48. package/dist/chunks/1371.226b7bfe.js.map +0 -1
  49. package/dist/chunks/2416.f25f772b.js +0 -2
  50. package/dist/chunks/2416.f25f772b.js.map +0 -1
  51. package/dist/chunks/3489.c2223b1c.js +0 -3
  52. package/dist/chunks/3489.c2223b1c.js.map +0 -1
  53. package/dist/chunks/3790.093a51f1.js +0 -3
  54. package/dist/chunks/3790.093a51f1.js.map +0 -1
  55. package/dist/chunks/4017.c7b74992.js +0 -3
  56. package/dist/chunks/4017.c7b74992.js.LICENSE.txt +0 -5
  57. package/dist/chunks/4017.c7b74992.js.map +0 -1
  58. package/dist/chunks/eo-diagram.e353ce7a.js +0 -2
  59. package/dist/chunks/eo-diagram.e353ce7a.js.map +0 -1
  60. package/dist/chunks/eo-display-canvas.ccd2cce0.js +0 -2
  61. package/dist/chunks/eo-display-canvas.ccd2cce0.js.map +0 -1
  62. package/dist/chunks/eo-draw-canvas.5d50938b.js +0 -2
  63. package/dist/chunks/eo-draw-canvas.5d50938b.js.map +0 -1
  64. package/dist/chunks/experimental-node.ff43315f.js +0 -2
  65. package/dist/index.820bfcb6.js +0 -2
  66. package/dist/index.820bfcb6.js.map +0 -1
  67. /package/dist/chunks/{3489.c2223b1c.js.LICENSE.txt → 3025.6d94cc70.js.LICENSE.txt} +0 -0
  68. /package/dist/chunks/{3790.093a51f1.js.LICENSE.txt → 3233.70157b34.js.LICENSE.txt} +0 -0
@@ -0,0 +1,3 @@
1
+ /*! For license information please see 3233.70157b34.js.LICENSE.txt */
2
+ "use strict";(globalThis.webpackChunk_next_bricks_diagram=globalThis.webpackChunk_next_bricks_diagram||[]).push([[3233],{6671:(e,t,n)=>{n.d(t,{w:()=>s});var o=n(8769),a=n.n(o),i=n(3373),r=n.n(i),l=n(3739);function s(e){let{connectLineState:t,connectLineTo:n,markerPrefix:o}=e;return a().createElement("svg",{width:"100%",height:"100%",className:r()("connect-line",{connecting:!!t&&(n[0]-t.from[0])**2+(n[1]-t.from[1])**2>25})},a().createElement("defs",null,a().createElement(l.c,{type:"arrow",id:`${o}connect-line`,strokeColor:null==t?void 0:t.options.strokeColor})),a().createElement("path",{d:t?`M${t.from.join(" ")}L${n.join(" ")}`:"",fill:"none",stroke:null==t?void 0:t.options.strokeColor,strokeWidth:null==t?void 0:t.options.strokeWidth,markerEnd:null!=t&&t.options.arrow?`url(#${o}connect-line)`:void 0}))}},1803:(e,t,n)=>{n.d(t,{m:()=>l});var o=n(8769),a=n.n(o),i=n(3373),r=n.n(i);function l(e){var t,n;let{line:{line:o,edge:i,d:l,markers:s},linePaths:d,lineMaskRects:c,maskPrefix:u,markerPrefix:f,activeLineMarkerPrefix:p,active:m,activeRelated:h,onLineClick:g,onLineDoubleClick:v}=e;const y=c.has(o.$id)?`url(#${u}${o.$id})`:void 0,{strokeColor:k,strokeWidth:b,interactStrokeWidth:w}={...o,...m?null===(t=o.overrides)||void 0===t?void 0:t.active:h?null===(n=o.overrides)||void 0===n?void 0:n.activeRelated:null},x=m?"active":h?"active-related":"default";let M,R;for(const e of s)e.variant===x&&("start"===e.placement?M=`url(#${f}${e.index})`:R=`url(#${f}${e.index})`);return a().createElement("g",{className:r()("line",{interactable:o.interactable,active:m,"active-related":h}),onClick:o.interactable?()=>{null==g||g({id:o.$id,edge:i})}:void 0,onDoubleClick:o.interactable?e=>{e.preventDefault(),e.stopPropagation(),null==v||v({id:o.$id,edge:i})}:void 0,style:{cursor:o.cursor}},o.interactable&&a().createElement("path",{d:l,fill:"none",stroke:"transparent",strokeWidth:w}),a().createElement("path",{ref:e=>d.set(o.$id,e),stroke:k,strokeWidth:b,d:l,fill:"none",markerStart:M,markerEnd:R,mask:y}),a().createElement("path",{stroke:"var(--palette-blue-3)",strokeWidth:b,d:l,fill:"none",className:"active-bg",markerStart:`url(#${p}start)`,markerEnd:`url(#${p}end)`,mask:y}))}},2547:(e,t,n)=>{n.d(t,{d2:()=>l});var o=n(8769),a=n.n(o),i=n(8426),r=n(8566);function l(e){let{labels:t,onRendered:n}=e;const[i,r]=(0,o.useState)(!1),[l,c]=(0,o.useState)([]),u=(0,o.useMemo)((()=>new Map),[]),f=(0,o.useCallback)(((e,t)=>{t&&u.set(e,t),c((t=>t.includes(e)?t:t.concat(e)))}),[u]),p=(0,o.useCallback)((e=>{c((t=>{const n=t.indexOf(e);return-1===n?t:t.slice(0,n).concat(t.slice(n+1))})),u.delete(e)}),[u]);return(0,o.useEffect)((()=>{r(!(null!=t&&t.some((e=>!l.includes(e.id)))))}),[t,l]),(0,o.useEffect)((()=>{null==n||n(i?u:null)}),[u,i]),a().createElement(a().Fragment,null,null==t?void 0:t.map((e=>{let{text:t,label:n,id:o,edge:i}=e;return n?a().createElement("div",{key:o,className:"line-label"},a().createElement(d,{id:o,edge:i,label:n,onRendered:f,onUnmount:p})):a().createElement(s,{key:o,id:o,text:t,onRendered:f})})))}function s(e){let{id:t,text:n,onRendered:i}=e;const r=(0,o.useCallback)((e=>{null==i||i(t,e)}),[t,i]);return a().createElement("div",{className:"line-label",ref:r,style:n.style},n.content)}function d(e){let{id:t,edge:n,label:l,onRendered:s,onUnmount:d}=e;const c=(0,o.useMemo)((()=>(0,r.checkIfByTransform)(l,{edge:n})?l.useBrick:null),[n,l]),u=(0,o.useMemo)((()=>({edge:n})),[n]);(0,o.useEffect)((()=>{c||setTimeout((()=>{null==s||s(t,null)}))}),[t,s,c]),(0,o.useEffect)((()=>()=>{null==d||d(t)}),[]);const f=(0,o.useCallback)((e=>{e&&setTimeout((()=>{null==s||s(t,e.parentElement)}))}),[t,s]),p=(0,o.useCallback)((()=>{setTimeout((()=>{null==s||s(t,null)}))}),[t,s]);return c?a().createElement(i.ReactUseBrick,{refCallback:f,ignoredCallback:p,useBrick:c,data:u}):null}},9191:(e,t,n)=>{n.d(t,{y:()=>i});var o=n(8769),a=n.n(o);function i(e){let{lineId:t,rects:n,maskPrefix:o,renderedLineLabels:i}=e;const r=i.find((e=>e.lineId===t&&"center"===e.placement));if(!r)return null;const{lineRect:l}=r,s=(c=1e3,{left:(d=l).left-c,top:d.top-c,width:d.width+2e3,height:d.height+2e3});var d,c;return a().createElement("mask",{id:`${o}${t}`,x:s.left,y:s.top,width:s.width,height:s.height},a().createElement("rect",{x:s.left,y:s.top,width:s.width,height:s.height,fill:"white"}),n.map(((e,t)=>a().createElement("rect",{key:t,x:e.left,y:e.top,width:e.width,height:e.height,fill:"black"}))))}},8892:(e,t,n)=>{n.d(t,{p:()=>l});var o=n(8769),a=n.n(o),i=n(8426),r=n(8566);function l(e){let{nodes:t,nodeBricks:n,onRendered:i}=e;const[r,l]=(0,o.useState)(!1),[d,c]=(0,o.useState)([]),u=(0,o.useMemo)((()=>new Map),[]),f=(0,o.useCallback)(((e,t)=>{t&&u.set(e,t),c((t=>t.includes(e)?t:t.concat(e)))}),[u]),p=(0,o.useCallback)((e=>{c((t=>{const n=t.indexOf(e);return-1===n?t:t.slice(0,n).concat(t.slice(n+1))})),u.delete(e)}),[u]);return(0,o.useEffect)((()=>{l(!(null!=t&&t.some((e=>!d.includes(e.id)))))}),[t,d]),(0,o.useEffect)((()=>{null==i||i(r?u:null)}),[u,r]),a().createElement(a().Fragment,null,null==t?void 0:t.map((e=>a().createElement("div",{key:e.id,className:"node"},a().createElement(s,{nodeBricks:n,node:e,onRendered:f,onUnmount:p})))))}function s(e){let{node:t,nodeBricks:n,onRendered:l,onUnmount:s}=e;const d=(0,o.useMemo)((()=>{var e;return null===(e=function(e,t){return null==t?void 0:t.find((t=>t.nodeType?[].concat(t.nodeType).includes(e.type):(0,r.checkIfByTransform)(t,{node:e})))}(t,n))||void 0===e?void 0:e.useBrick}),[t,n]),c=(0,o.useMemo)((()=>({node:t})),[t]);(0,o.useEffect)((()=>{d||setTimeout((()=>{null==l||l(t.id,null)}))}),[t.id,l,d]),(0,o.useEffect)((()=>()=>{null==s||s(t.id)}),[]);const u=(0,o.useCallback)((e=>{e&&setTimeout((()=>{null==l||l(t.id,e)}))}),[t.id,l]),f=(0,o.useCallback)((()=>{setTimeout((()=>{null==l||l(t.id,null)}))}),[t.id,l]);return d?a().createElement(i.ReactUseBrick,{refCallback:u,ignoredCallback:f,useBrick:d,data:c}):null}},8657:(e,t,n)=>{n.d(t,{Ie:()=>r,KP:()=>i,VO:()=>a,Yt:()=>s,mF:()=>o,sS:()=>l});const o="var(--palette-gray-5)",a=1,i="curveBasis",r=20,l=.5,s=2},8069:(e,t,n)=>{n.d(t,{o:()=>k});var o=n(8769),a=n(7586),i=n.n(a),r=n(1030);function l(e,t,n){for(const o of e){const e=t.get(o.id);o.width=Math.max((null==e?void 0:e.offsetWidth)??0,10)+n[1]+n[3],o.height=Math.max((null==e?void 0:e.offsetHeight)??0,10)+n[0]+n[2]}}function s(e,t,n){for(const a of e){var o;const e=a.x-a.width/2+n[3],i=a.y-a.height/2+n[0],r=null===(o=t.get(a.id))||void 0===o?void 0:o.parentElement;r&&(r.style.left=`${e}px`,r.style.top=`${i}px`,r.style.visibility="visible")}}var d=n(8802),c=n(6149),u=n(4842),f=n(1945),p=n(9418),m=n(3854),h=n(7931);function g(e,t){let{normalizedLinesMap:n,lineLabelsRefRepository:o}=t;return(null==e?void 0:e.map((e=>{const t=n.get(e),a={};if(t)for(const e of["start","end"]){const n=o.get(`${t}-${e}`);n&&(a[e]=[n.offsetWidth,n.offsetHeight])}return{data:e,labelSize:a}})))??[]}function v(e,t){return new Array(t).fill(null).map(((t,n)=>({dummy:!0,id:`$dummy-${e.source}-${e.target}-${n}`})))}function y(e,t){return new Array(t+1).fill(null).map(((n,o)=>({dummy:!0,source:0===o?e.source:`$dummy-${e.source}-${e.target}-${o-1}`,target:o===t?e.target:`$dummy-${e.source}-${e.target}-${o}`})))}function k(e){let{layout:t,nodes:n,edges:a,manualLayoutStatus:k,userViewReady:b,userViewNodesMap:w,nodeMovement:x,nodesRefRepository:M,lineLabelsRefRepository:R,normalizedLinesMap:E,nodesRenderId:L,lineLabelsRenderId:$,layoutOptions:C}=e;const P="initial"===k?t:"manual",[S,I]=(0,o.useState)(null),[T,N]=(0,o.useState)({nodes:[],edges:[]});return(0,o.useEffect)((()=>{b&&I((e=>"dagre"===P?function(e,t,n,o){const{nodePadding:a,...c}={nodePadding:0,rankdir:"TB",ranksep:50,edgesep:10,nodesep:50,...(0,r.pick)(o,["nodePadding","rankdir","ranksep","edgesep","nodesep","align"])},u=(0,d.D)(a),f=new(i().graphlib.Graph);f.setGraph(c),f.setDefaultEdgeLabel((function(){return{}}));for(const n of t??[]){const t=null==e?void 0:e.getNode(n.id);f.setNode(n.id,(null==t?void 0:t.data)===n?t:{id:n.id,data:n})}for(const e of n??[])f.setEdge(e.source,e.target,{data:e});return{layout:"dagre",getNode:e=>f.node(e),applyLayout(e){let{nodesRefRepository:t,lineLabelsRefRepository:n,normalizedLinesMap:o}=e;const a=[];for(const e of f.nodes()){const t=f.node(e);t?a.push(t):console.error("Diagram node not found: %s",e)}if(0===a.length)return null;l(a,t,u);const r=f.edges().map((e=>f.edge(e)));for(const e of r){const t=o.get(e.data);if(t)for(const o of["center","start","end"]){const a=n.get(`${t}-${o}`);if(a){const{offsetWidth:t,offsetHeight:n}=a;"center"===o&&(e.labelpos="c",e.width=t,e.height=n),e.labelSize??(e.labelSize={}),e.labelSize[o]=[t,n]}}}return i().layout(f),s(a,t,u),{nodes:a,edges:r}}}}(e,n,a,C):"force"===P?function(e,t,n,o,a){const{nodePadding:i,dummyNodesOnEdges:k,collide:b}={nodePadding:0,dummyNodesOnEdges:0,...(0,r.pick)(a,["nodePadding","dummyNodesOnEdges"]),collide:!1!==(null==a?void 0:a.collide)&&{dummyRadius:1,radiusDiff:5,strength:1,iterations:1,...!0===(null==a?void 0:a.collide)?null:null==a?void 0:a.collide}},w=(0,d.D)(i),x=[];for(const n of t??[]){const t=null==e?void 0:e.getNode(n.id);if((null==t?void 0:t.data)===n)x.push(t);else{const e={id:n.id,data:n},t=null==o?void 0:o.get(n.id);t&&(e.fx=t.x,e.fy=t.y),x.push(e)}}return{layout:"force",getNode:function(e){return x.find((t=>t.data.id===e))},applyLayout(e){let{nodesRefRepository:t,lineLabelsRefRepository:o,normalizedLinesMap:a}=e;if(0===x.length)return null;l(x,t,w);const i=x.slice(),r=[];for(const e of n??[])r.push({...e}),k>0&&(i.push(...v(e,k)),r.push(...y(e,k)));const d=(0,c.A)(r).id((e=>e.id));k>0&&d.distance((e=>e.dummy?30/(k+1):30)).strength((e=>e.dummy?.5:1));const M=(0,u.A)(i).force("link",d).force("x",(0,f.A)()).force("y",(0,p.A)()).force("charge",(0,m.A)());b&&M.force("collide",(0,h.A)().radius((e=>e.dummy?b.dummyRadius:Math.sqrt(e.width**2+e.height**2)/2+b.radiusDiff)).strength(b.strength).iterations(b.iterations)),M.stop(),function(e){e.tick(Math.ceil(Math.log(e.alphaMin())/Math.log(1-e.alphaDecay())))}(M),s(x,t,w);const R=g(n,{normalizedLinesMap:a,lineLabelsRefRepository:o});return{nodes:x,edges:R}}}}(e,n,a,w,C):"manual"===P?function(e,t,n,o){const{nodePadding:a}={nodePadding:0,...(0,r.pick)(o,["nodePadding"])},i=(0,d.D)(a),c=[];for(const n of t??[]){const t=null==e?void 0:e.getNode(n.id);(null==t?void 0:t.data)===n?(c.push(t),t.x0=t.x,t.y0=t.y):c.push({id:n.id,data:n})}let u;return{layout:"manual",getNode:function(e){return c.find((t=>t.data.id===e))},applyLayout(e){let{manualLayoutStatus:t,nodesRefRepository:o,lineLabelsRefRepository:a,normalizedLinesMap:r,nodeMovement:d}=e;if(0===c.length)return null;l(c,o,i),d&&(u=c.find((e=>e.id===d.id)),u&&(u.x=(u.x0??0)+d.move[0],u.y=(u.y0??0)+d.move[1])),"finished"===t&&u&&(u.x0=u.x,u.y0=u.y),s(c,o,i);const f=g(n,{normalizedLinesMap:r,lineLabelsRefRepository:a});return{nodes:c,edges:f}}}}(e,n,a,C):null))}),[a,n,P,C,b,w]),(0,o.useEffect)((()=>{if(!M||!R||P!==(null==S?void 0:S.layout))return;const e=null==S?void 0:S.applyLayout({manualLayoutStatus:k,nodesRefRepository:M,lineLabelsRefRepository:R,normalizedLinesMap:E,nodeMovement:x});e&&N(e)}),[P,k,S,x,M,R,L,$,E]),T}},6753:(e,t,n)=>{n.d(t,{_:()=>u});var o=n(8769),a=n(8566),i=n(6330),r=n(3496),l=function(){var e=(0,i.A)((function*(e,t,n){return(yield r.http.post("api/gateway/cmdb.instance.PostSearchV3/v3/object/".concat(e,"/instance/_search"),t,n)).data}));return function(t,n,o){return e.apply(this,arguments)}}(),s=function(){var e=(0,i.A)((function*(e,t,n,o){return(yield r.http.put("api/gateway/cmdb.instance.UpdateInstanceV2/v2/object/".concat(e,"/instance/").concat(t),n,o)).data}));return function(t,n,o,a){return e.apply(this,arguments)}}(),d=function(){var e=(0,i.A)((function*(e,t,n){return(yield r.http.post("api/gateway/cmdb.instance.CreateInstance/v2/object/".concat(e,"/instance"),t,n)).data}));return function(t,n,o){return e.apply(this,arguments)}}();const c="GRAPH_USER_VIEW@EASYOPS";function u(e){const[t,n]=(0,o.useState)(!e),i=(0,o.useRef)(),[r,u]=(0,o.useState)(null),f=(0,o.useMemo)((()=>function(){let e=!1;const t=[];return async function(n){if(t.push(n),!e){let n;for(e=!0;n=t.shift();)try{await n()}catch(e){console.error(e)}e=!1}}}()),[]);return(0,o.useEffect)((()=>{!async function(){if(!e)return void n(!0);const{namespace:t,key:o}=e;if(!t||!o)return console.error("Namespace and key are required to save graph user view"),void n(!0);try{const e=(await l(c,{fields:["nodes"],query:{namespace:{$eq:t},key:{$eq:o}},page:1,page_size:30})).list;if(e.length>0){var r;const t=e[0],n=new Map(null===(r=t.nodes)||void 0===r?void 0:r.map((e=>[e.id,e])));i.current=t.instanceId,u(n)}else u(null)}catch(e){(0,a.handleHttpError)(e)}finally{n(!0)}}()}),[e]),{userViewReady:t,userViewNodesMap:r,saveUserView:(0,o.useCallback)((t=>{const{namespace:n,key:o}=e??{};n&&o&&f((async()=>{const e={namespace:n,key:o,nodes:t};try{if(i.current)await s(c,i.current,e,{interceptorParams:{ignoreLoadingBar:!0}});else{const t=await d(c,e,{interceptorParams:{ignoreLoadingBar:!0}});i.current=t.instanceId}}catch(e){(0,a.handleHttpError)(e)}}))}),[e,f])}}},1324:(e,t,n)=>{function o(e,t){for(const{id:n,position:o,placement:a,angle:i,size:r}of e){const e=t.get(n);if(e&&(e.style.left=`${o[0]}px`,e.style.top=`${o[1]}px`,e.style.visibility="visible","center"!==a&&void 0!==i)){const[t,n]=r??[0,0],o=Math.floor((i<0?2*Math.PI+i:i)/Math.PI*4),l="start"===a?o:(o+4)%8,s=Math.tan(i),d=i+("start"===a?1:-1)*Math.PI/2,c=2,u=Math.sin(d)*c,f=Math.cos(d)*c;let p;switch(l){case 0:p=`translate(0,${t*s+u}px)`;break;case 1:p=`translate(${n/s-f}px,0)`;break;case 2:p=`translate(calc(${n/s+f}px - 100%),0)`;break;case 3:p=`translate(-100%,${-t*s-u}px)`;break;case 4:p=`translate(-100%,calc(${-t*s+u}px - 100%))`;break;case 5:p=`translate(calc(${-n/s-f}px - 100%),-100%)`;break;case 6:p=`translate(${-n/s+f}px,-100%)`;break;default:p=`translate(0,calc(${t*s-u}px - 100%))`}e.style.transform=p}}}n.d(t,{F:()=>o})},5987:(e,t,n)=>{function o(e,t){const n=new Map;for(const{id:o,lineId:a,placement:i}of e){if(!t||"center"!==i)continue;const e=t.get(o);if(!e)continue;const{offsetWidth:r,offsetHeight:l}=e;if(0===r||0===l)continue;const s=3;n.set(a,[{left:e.offsetLeft-r/2-s,top:e.offsetTop-l/2-s,width:r+2*s,height:l+2*s}])}return n}n.d(t,{G:()=>o})},8060:(e,t,n)=>{function o(e,t,n){return 0===e.length&&0===t.length?e:t.flatMap((e=>{let{line:{text:t,label:o,$id:a},edge:i,labelSize:r,angle:l}=e;const s=n.get(a);if(!t&&!o||!s||!s.getAttribute("d"))return[];let d,c;o?(d="label",c=[].concat(o)):(d="text",c=[].concat(t));const{x:u,y:f,width:p,height:m}=s.getBBox(),h=s.getTotalLength();return c.map((e=>{const t=e.placement??"center",n=s.getPointAtLength("start"===t?Math.min(0,h/2):"end"===t?Math.max(h-0,h/2):h/2);return{[d]:e,edge:i,position:[n.x,n.y],lineRect:{left:u,top:f,width:p,height:m},id:`${a}-${t}`,lineId:a,placement:t,angle:l,size:null==r?void 0:r[t]}}))}))}n.d(t,{z:()=>o})},1518:(e,t,n)=>{n.d(t,{R:()=>l});var o=n(8653),a=n(3188),i=n(4059),r=n(733);function l(e,t,n){const l=new WeakMap,c=new Map,u=new Map;for(const e of t)c.set(e.id,e);for(const t of e){const{data:e}=t;l.set(e,t)}let f=!1;return n.map((t=>{var n,p;let{line:m,edge:h,markers:g,...v}=t;const y=l.get(h);if(!y)return;const k=(null===(n=g.find((e=>"default"===e.variant&&"start"===e.placement)))||void 0===n?void 0:n.offset)??0,b=(null===(p=g.find((e=>"default"===e.variant&&"end"===e.placement)))||void 0===p?void 0:p.offset)??0;let w,{points:x}=y;if(!x){const t=c.get(h.source),n=c.get(h.target);if(t&&n&&t!==n){if("polyline"===m.type){if(!(0,r.w)(t,n,k,b)){(()=>{if(f)return;f=!0;const t=(e,t)=>{let n=u.get(e);n||u.set(e,n=new Set);const o=c.get(t);o&&n.add(o)};for(const{data:{source:n,target:o}}of e)n!==o&&(t(n,o),t(o,n))})();const o=s(t,n,k),a=s(n,t,b),r=d(u.get(h.source)??[],t,o,k),l=d(u.get(h.target)??[],n,a,b),p=(r.indexOf(n)+1)/(r.length+1),m=(l.indexOf(t)+1)/(l.length+1);x=(0,i.o)(t,n,o,a,p,m)}}else x=(0,a.h)(t,n);if(x){const e=x[0],t=x[x.length-1];w=Math.atan2(t.y-e.y,t.x-e.x)}}}return{...v,markers:g,line:m,edge:h,d:(0,o.S)(x,m.curveType,k,b),angle:w,labelSize:y.labelSize}})).filter(Boolean)}function s(e,t,n){const o=Math.atan2(e.height+2*n,e.width+2*n),{x:a,y:i}=e,{x:r,y:l}=t,s=Math.atan2(l-i,r-a),d=s<0?2*Math.PI+s:s;switch(Math.floor(d/Math.PI*2)){case 0:return d<o?"right":"bottom";case 1:return d<Math.PI-o?"bottom":"left";case 2:return d<Math.PI+o?"left":"top";default:return d<2*Math.PI-o?"top":"right"}}function d(e,t,n,o){return[...e].filter((e=>s(t,e,o)===n)).sort(((e,t)=>{const{x:o,y:a}=e,{x:i,y:r}=t;return"top"===n||"bottom"===n?o-i:a-r}))}},5157:(e,t,n)=>{n.d(t,{a:()=>a});var o=n(1030);function a(e,t){let{renderedNodes:n,activeTarget:o}=t;const a="node"===(null==o?void 0:o.type)?n.find((e=>e.id===o.nodeId)):void 0,r="edge"===(null==o?void 0:o.type)?o.edge:void 0;if(!a&&!r)return;const l=e.key||e.keyCode||e.which;let s,d,c;switch(l){case"Backspace":case 8:case"Delete":case 46:a?(s="delete-node",d=a):(s="delete-edge",c=r);break;default:if(!a)return;switch(l){case"ArrowLeft":case 37:d=i("x",n,a,-1),s="switch-active-node";break;case"ArrowUp":case 38:d=i("y",n,a,-1),s="switch-active-node";break;case"ArrowRight":case 39:d=i("x",n,a,1),s="switch-active-node";break;case"ArrowDown":case 40:d=i("y",n,a,1),s="switch-active-node"}}var u;return s?(e.preventDefault(),e.stopPropagation(),{action:s,node:null===(u=d)||void 0===u?void 0:u.data,edge:c}):void 0}function i(e,t,n,a){const i="x"===e?"y":"x";let r;const l=t.filter((t=>t!==n&&(r=(t[e]-n[e])*a,r>0)&&r>Math.abs(n[i]-t[i])));return(0,o.minBy)(l,(t=>(n[i]-t[i])**2+(n[e]-t[e])**2))}},2448:(e,t,n)=>{n.d(t,{P:()=>i});var o=n(8566),a=n(8657);function i(e,t){let{nodes:n,nodesRefRepository:i,connectNodes:r,dragNodes:l,scale:s,setConnectLineState:d,setConnectLineTo:c,setManualLayoutStatus:u,setNodeMovement:f,onSwitchActiveTarget:p,onNodesConnect:m}=t;function h(e){if(i)for(const[t,o]of i)if(e(o))return null==n?void 0:n.find((e=>e.id===t))}if(!r&&!l)return;const g=h((t=>t.contains(e.target)));if(!g)return;if(!function(e,t){return e.sourceType?[].concat(e.sourceType).includes(t.type):(0,o.checkIfByTransform)(e,{source:t})}(r||l,g))return;e.stopPropagation();const v=[e.clientX,e.clientY];if(r){d({from:v,options:{strokeColor:a.mF,strokeWidth:a.VO,...o.__secret_internals.legacyDoTransform({source:g},r)}}),c(v),null==p||p({type:"node",nodeId:g.id});const e=e=>{c([e.clientX,e.clientY])},t=n=>{document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",t),d(null);const o=n.composedPath(),a=h((e=>o.includes(e)));a&&g!==a&&(null==m||m({source:g,target:a}))};return document.addEventListener("mousemove",e),void document.addEventListener("mouseup",t)}null==p||p({type:"node",nodeId:g.id});let y=!1;const k=e=>{const t=[(e.clientX-v[0])/s,(e.clientY-v[1])/s];y||(y=t[0]**2+t[1]**2>=9,y&&u("started")),y&&f({id:g.id,move:t})},b=()=>{y=!1,document.removeEventListener("mousemove",k),document.removeEventListener("mouseup",b),f(null),u("finished")};document.addEventListener("mousemove",k),document.addEventListener("mouseup",b)}},9137:(e,t,n)=>{n.d(t,{t:()=>l});var o=n(1030),a=n(8566);function i(e,t){return!!t&&(t.edgeType?[].concat(t.edgeType).includes(e.type):(0,a.checkIfByTransform)(t,{edge:e}))}var r=n(8657);function l(e,t){const n=[],l=new WeakMap,d=[];for(const f of e??[]){const{label:e,...p}=(null==t?void 0:t.find((e=>i(f,e))))??{},m=a.__secret_internals.legacyDoTransform({edge:f},p);if(!1===(null==m?void 0:m.draw))continue;const h=(0,o.uniqueId)("line-"),g={strokeColor:r.mF,strokeWidth:r.VO,curveType:"polyline"===(null==m?void 0:m.type)?"curveLinear":r.KP,interactStrokeWidth:r.Ie,type:"auto",...m,label:e,$id:h};l.set(f,h);const v=[],y=g.markers??(g.arrow?[{placement:"end",type:"arrow"}]:[]);for(const e of y){var c,u;const{placement:t,type:n}=e,o=t??"end";let a,i;switch(n){case"0..1":case"0..N":i=21,a=n;break;default:i=1,a="arrow"}const r=i*g.strokeWidth,l=s({type:a,strokeColor:g.strokeColor},d);v.push({index:l,placement:o,type:a,variant:"default",offset:r});const f=s({type:a,strokeColor:(null===(c=g.overrides)||void 0===c||null===(c=c.active)||void 0===c?void 0:c.strokeColor)??g.strokeColor},d);v.push({index:f,placement:o,type:a,variant:"active",offset:r});const p=s({type:a,strokeColor:(null===(u=g.overrides)||void 0===u||null===(u=u.activeRelated)||void 0===u?void 0:u.strokeColor)??g.strokeColor},d);v.push({index:p,placement:o,type:a,variant:"active-related",offset:r})}n.push({line:g,markers:v,edge:f})}return{normalizedLines:n,normalizedLinesMap:l,markers:d}}function s(e,t){let n=(0,o.findIndex)(t,e);return-1===n&&(n=t.push(e)-1),n}},2673:(e,t,n)=>{function o(e,t){return e?!!t&&e.type===t.type&&("node"===e.type?e.nodeId===t.nodeId:e.edge.source===t.edge.source&&e.edge.target===t.edge.target):!t}n.d(t,{c:()=>o})},8308:(e,t,n)=>{function o(e,t){let{canvasWidth:n,canvasHeight:o,scaleRange:a}=t,i=1/0,r=1/0,l=-1/0,s=-1/0;for(const t of e){const e=t.width/2,n=t.height/2,o=t.x-e,a=t.x+e,d=t.y-n,c=t.y+n;o<i&&(i=o),a>l&&(l=a),d<r&&(r=d),c>s&&(s=c)}const d=l-i,c=s-r,u=a&&(d>n||c>o)?Math.max(Math.min(n/d,o/c,a[1]),a[0]):1;return{x:(n-d*u)/2-i*u,y:(o-c*u)/2-r*u,k:u}}n.d(t,{r:()=>o})},821:(e,t,n)=>{n.d(t,{A:()=>l});var o=n(6758),a=n.n(o),i=n(935),r=n.n(i)()(a());r.push([e.id,":host{display:block;width:100%;height:100%;overflow:hidden}:host([hidden]){display:none}*{box-sizing:border-box}.diagram{width:100%;height:100%;position:relative;opacity:0}.diagram:focus{outline:none}.lines,\n.line-labels,\n.nodes{position:absolute;top:0;left:0}.line-labels{opacity:0}.ready{opacity:1}.diagram.ready.pannable{cursor:grab}.diagram.pannable.grabbing{cursor:grabbing}.nodes,\n.lines{transform-origin:0 0}.node,\n.line-label{position:absolute;visibility:hidden}.line-label{transform:translate(-50%,-50%);white-space:pre-line;width:max-content;text-align:center;line-height:1}.lines{pointer-events:none}.line.interactable{pointer-events:auto;cursor:default}.connect-line{position:fixed;top:0;left:0;right:0;bottom:0;pointer-events:none}.connect-line:not(.connecting){display:none}.line:not(.active) .active-bg{display:none}",""]);const l=r.toString()}}]);
3
+ //# sourceMappingURL=3233.70157b34.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunks/3233.70157b34.js","mappings":";6MAWO,SAASA,EAAoBC,GAIO,IAJN,iBACnCC,EAAgB,cAChBC,EAAa,aACbC,GAC0BH,EAC1B,OACEI,IAAAA,cAAA,OACEC,MAAM,OACNC,OAAO,OACPC,UAAWC,IAAW,eAAgB,CACpCC,aACIR,IAEDC,EAAc,GAAKD,EAAiBS,KAAK,KAAO,GAC9CR,EAAc,GAAKD,EAAiBS,KAAK,KAAO,EACjD,MAGNN,IAAAA,cAAA,YACEA,IAAAA,cAACO,EAAAA,EAAe,CACdC,KAAK,QACLC,GAAI,GAAGV,gBACPW,YAAab,aAAgB,EAAhBA,EAAkBc,QAAQD,eAG3CV,IAAAA,cAAA,QACEY,EACEf,EACI,IAAIA,EAAiBS,KAAKO,KAAK,QAAQf,EAAce,KAAK,OAC1D,GAENC,KAAK,OACLC,OAAQlB,aAAgB,EAAhBA,EAAkBc,QAAQD,YAClCM,YAAanB,aAAgB,EAAhBA,EAAkBc,QAAQK,YACvCC,UACEpB,SAAAA,EAAkBc,QAAQO,MACtB,QAAQnB,sBACRoB,IAKd,6ECpCO,SAASC,EAAaxB,GAWO,IAAAyB,EAAAC,EAAA,IAVlCC,MAAM,KAAEA,EAAI,KAAEC,EAAI,EAAEZ,EAAC,QAAEa,GAAS,UAChCC,EAAS,cACTC,EAAa,WACbC,EAAU,aACV7B,EAAY,uBACZ8B,EAAsB,OACtBC,EAAM,cACNC,EAAa,YACbC,EAAW,kBACXC,GACmBrC,EACnB,MAAMsC,EAAOP,EAAcQ,IAAIZ,EAAKa,KAChC,QAAQR,IAAaL,EAAKa,YAC1BjB,GAEE,YAAET,EAAW,YAAEM,EAAW,oBAAEqB,GAAwB,IACrDd,KACCO,EACc,QADRT,EACNE,EAAKe,iBAAS,IAAAjB,OAAA,EAAdA,EAAgBS,OAChBC,EACgB,QADHT,EACXC,EAAKe,iBAAS,IAAAhB,OAAA,EAAdA,EAAgBS,cAChB,MAGFQ,EAAgBT,EAClB,SACAC,EACE,iBACA,UAEN,IAAIS,EACAvB,EAEJ,IAAK,MAAMwB,KAAUhB,EACfgB,EAAOC,UAAYH,IACI,UAArBE,EAAOE,UACTH,EAAc,QAAQzC,IAAe0C,EAAOG,SAE5C3B,EAAY,QAAQlB,IAAe0C,EAAOG,UAKhD,OACE5C,IAAAA,cAAA,KACEG,UAAWC,IAAW,OAAQ,CAC5ByC,aAActB,EAAKsB,aACnBf,SACA,iBAAkBC,IAEpBe,QACEvB,EAAKsB,aACD,KACEb,SAAAA,EAAc,CAAEvB,GAAIc,EAAKa,IAAKZ,QAAO,OAEvCL,EAEN4B,cACExB,EAAKsB,aACAG,IACCA,EAAEC,iBACFD,EAAEE,kBACFjB,SAAAA,EAAoB,CAAExB,GAAIc,EAAKa,IAAKZ,QAAO,OAE7CL,EAENgC,MAAO,CAAEC,OAAQ7B,EAAK6B,SAErB7B,EAAKsB,cACJ7C,IAAAA,cAAA,QAEEY,EAAGA,EACHE,KAAK,OACLC,OAAO,cACPC,YAAaqB,IAGjBrC,IAAAA,cAAA,QACEqD,IAAMC,GAAY5B,EAAU6B,IAAIhC,EAAKa,IAAKkB,GAC1CvC,OAAQL,EACRM,YAAaA,EACbJ,EAAGA,EACHE,KAAK,OACL0B,YAAaA,EACbvB,UAAWA,EACXiB,KAAMA,IAERlC,IAAAA,cAAA,QACEe,OAAO,wBACPC,YAAaA,EACbJ,EAAGA,EACHE,KAAK,OACLX,UAAU,YACVqC,YAAa,QAAQX,UACrBZ,UAAW,QAAQY,QACnBK,KAAMA,IAId,+ECpGO,SAASsB,EAAuB5D,GAGO,IAHN,OACtC6D,EAAM,WACNC,GAC6B9D,EAC7B,MAAO+D,EAAUC,IAAeC,EAAAA,EAAAA,WAAS,IAClCC,EAAaC,IAAkBF,EAAAA,EAAAA,UAAmB,IACnDG,GAAgBC,EAAAA,EAAAA,UAAuB,IAAM,IAAIC,KAAO,IAExDC,GAAiBC,EAAAA,EAAAA,cACrB,CAAC3D,EAAY6C,KACPA,GACFU,EAAcT,IAAI9C,EAAI6C,GAExBS,GAAgBM,GACdA,EAASC,SAAS7D,GAAM4D,EAAWA,EAASE,OAAO9D,IACpD,GAEH,CAACuD,IAGGQ,GAAgBJ,EAAAA,EAAAA,cACnB3D,IACCsD,GAAgBM,IACd,MAAMzB,EAAQyB,EAASI,QAAQhE,GAC/B,OAAkB,IAAXmC,EACHyB,EACAA,EAASK,MAAM,EAAG9B,GAAO2B,OAAOF,EAASK,MAAM9B,EAAQ,GAAG,IAEhEoB,EAAcW,OAAOlE,EAAG,GAE1B,CAACuD,IAiBH,OAdAY,EAAAA,EAAAA,YAAU,KAERhB,IAAaH,SAAAA,EAAQoB,MAAMC,IAAWhB,EAAYQ,SAASQ,EAAMrE,OAAK,GACrE,CAACgD,EAAQK,KAEZc,EAAAA,EAAAA,YACE,KACElB,SAAAA,EAAaC,EAAWK,EAAgB,KAAK,GAI/C,CAAmBA,EAAeL,IAIlC3D,IAAAA,cAACA,IAAAA,SAAc,KACZyD,aAAM,EAANA,EAAQsB,KAAIC,IAAA,IAAC,KAAEC,EAAI,MAAEH,EAAK,GAAkBrE,EAAE,KAAEe,GAAMwD,EAAA,OACrDF,EACE9E,IAAAA,cAAA,OACEkF,IAAKzE,EACLN,UAAU,cAMVH,IAAAA,cAACmF,EAAkB,CACjB1E,GAAIA,EACJe,KAAMA,EACNsD,MAAOA,EACPpB,WAAYS,EACZiB,UAAWZ,KAIfxE,IAAAA,cAACqF,EAAiB,CAChBH,IAAKzE,EACLA,GAAIA,EACJwE,KAAMA,EAENvB,WAAYS,GAEf,IAIT,CAUO,SAASkB,EAAiBC,GAKO,IALN,GAChC7E,EAAE,KACFwE,EAAI,WAEJvB,GACuB4B,EACvB,MAAMC,GAAcnB,EAAAA,EAAAA,cACjBd,IACCI,SAAAA,EAAajD,EAAI6C,EAAQ,GAE3B,CAAC7C,EAAIiD,IAGP,OACE1D,IAAAA,cAAA,OACEG,UAAU,aACVkD,IAAKkC,EAMLpC,MAAO8B,EAAK9B,OAEX8B,EAAMO,QAGb,CAYO,SAASL,EAAkBM,GAMc,IANb,GACjChF,EAAE,KACFe,EAAI,MACJsD,EAAK,WACLpB,EAAU,UACV0B,GACwBK,EACxB,MAAMC,GAAWzB,EAAAA,EAAAA,UACf,KAAO0B,EAAAA,EAAAA,oBAAmBb,EAAO,CAAEtD,SAAUsD,EAAMY,SAAW,MAC9D,CAAClE,EAAMsD,IAGHc,GAAe3B,EAAAA,EAAAA,UAAQ,KAAM,CAAGzC,UAAS,CAACA,KAEhDoD,EAAAA,EAAAA,YAAU,KACHc,GAEHG,YAAW,KACTnC,SAAAA,EAAajD,EAAI,KAAK,GAE1B,GACC,CAACA,EAAIiD,EAAYgC,KAEpBd,EAAAA,EAAAA,YACE,IACS,KACLQ,SAAAA,EAAY3E,EAAG,GAKnB,IAGF,MAAM8E,GAAcnB,EAAAA,EAAAA,cACjBd,IACKA,GAGFuC,YAAW,KACTnC,SAAAA,EAAajD,EAAI6C,EAAQwC,cAAc,GAE3C,GAEF,CAACrF,EAAIiD,IAGDqC,GAAkB3B,EAAAA,EAAAA,cAAY,KAClCyB,YAAW,KACTnC,SAAAA,EAAajD,EAAI,KAAK,GACtB,GACD,CAACA,EAAIiD,IAER,OAAKgC,EAKH1F,IAAAA,cAACgG,EAAAA,cAAa,CACZT,YAAaA,EAGbQ,gBAAiBA,EACjBL,SAAUA,EACVO,KAAML,IAVD,IAaX,0DC1MO,SAASM,EAAiBtG,GAKc,IALb,OAChCuG,EAAM,MACNC,EAAK,WACLxE,EAAU,mBACVyE,GACuBzG,EACvB,MAAM0G,EAAWD,EAAmBE,MACjCC,GAASA,EAAKL,SAAWA,GAA6B,WAAnBK,EAAK7D,YAG3C,IAAK2D,EACH,OAAO,KAET,MAAM,SAAEG,GAAaH,EACfI,GAgCsCC,EAhCA,IAiCrC,CACLC,MAFwBC,EAhCQJ,GAkCrBG,KAAOD,EAClBG,IAAKD,EAAKC,IAAMH,EAChB1G,MAAO4G,EAAK5G,MAAQ0G,IACpBzG,OAAQ2G,EAAK3G,OAASyG,MAL1B,IAA4BE,EAAkBF,EA/B5C,OACE3G,IAAAA,cAAA,QACES,GAAI,GAAGmB,IAAauE,IACpBY,EAAGL,EAAOE,KACVI,EAAGN,EAAOI,IACV7G,MAAOyG,EAAOzG,MACdC,OAAQwG,EAAOxG,QAEfF,IAAAA,cAAA,QACE+G,EAAGL,EAAOE,KACVI,EAAGN,EAAOI,IACV7G,MAAOyG,EAAOzG,MACdC,OAAQwG,EAAOxG,OAEfY,KAAK,UAENsF,EAAMrB,KAAI,CAAC8B,EAAMjE,IAChB5C,IAAAA,cAAA,QACEkF,IAAKtC,EACLmE,EAAGF,EAAKD,KACRI,EAAGH,EAAKC,IACR7G,MAAO4G,EAAK5G,MACZC,OAAQ2G,EAAK3G,OAEbY,KAAK,YAKf,8ECtCO,SAASmG,EAAkBrH,GAIO,IAJN,MACjCsH,EAAK,WACLC,EAAU,WACVzD,GACwB9D,EACxB,MAAO+D,EAAUC,IAAeC,EAAAA,EAAAA,WAAS,IAClCC,EAAaC,IAAkBF,EAAAA,EAAAA,UAA0B,IAC1DG,GAAgBC,EAAAA,EAAAA,UAAuB,IAAM,IAAIC,KAAO,IAExDC,GAAiBC,EAAAA,EAAAA,cACrB,CAAC3D,EAAmB6C,KACdA,GACFU,EAAcT,IAAI9C,EAAI6C,GAExBS,GAAgBM,GACdA,EAASC,SAAS7D,GAAM4D,EAAWA,EAASE,OAAO9D,IACpD,GAEH,CAACuD,IAGGQ,GAAgBJ,EAAAA,EAAAA,cACnB3D,IACCsD,GAAgBM,IACd,MAAMzB,EAAQyB,EAASI,QAAQhE,GAC/B,OAAkB,IAAXmC,EACHyB,EACAA,EAASK,MAAM,EAAG9B,GAAO2B,OAAOF,EAASK,MAAM9B,EAAQ,GAAG,IAEhEoB,EAAcW,OAAOlE,EAAG,GAE1B,CAACuD,IAiBH,OAdAY,EAAAA,EAAAA,YAAU,KAERhB,IAAasD,SAAAA,EAAOrC,MAAMuC,IAAUtD,EAAYQ,SAAS8C,EAAK3G,OAAK,GAClE,CAACyG,EAAOpD,KAEXc,EAAAA,EAAAA,YACE,KACElB,SAAAA,EAAaC,EAAWK,EAAgB,KAAK,GAI/C,CAAmBA,EAAeL,IAIlC3D,IAAAA,cAACA,IAAAA,SAAc,KACZkH,aAAK,EAALA,EAAOnC,KAAKqC,GACXpH,IAAAA,cAAA,OAAKkF,IAAKkC,EAAK3G,GAAIN,UAAU,QAC3BH,IAAAA,cAACqH,EAAa,CACZF,WAAYA,EACZC,KAAMA,EACN1D,WAAYS,EACZiB,UAAWZ,OAMvB,CASO,SAAS6C,EAAarC,GAKc,IALb,KAC5BoC,EAAI,WACJD,EAAU,WACVzD,EAAU,UACV0B,GACmBJ,EACnB,MAAMU,GAAWzB,EAAAA,EAAAA,UACf,SAAAqD,EAAA,OAAqC,QAArCA,EC3FG,SACLF,EACAD,GAEA,OAAOA,aAAU,EAAVA,EAAYZ,MAAMC,GACnBA,EAAKe,SACC,GAAiBhD,OAAOiC,EAAKe,UAAUjD,SAAS8C,EAAK5G,OAExDmF,EAAAA,EAAAA,oBAAmBa,EAAM,CAAEY,UAEtC,CDiFUI,CAAcJ,EAAMD,UAAW,IAAAG,OAAA,EAA/BA,EAAiC5B,QAAQ,GAC/C,CAAC0B,EAAMD,IAEHvB,GAAe3B,EAAAA,EAAAA,UAAQ,KAAM,CAAGmD,UAAS,CAACA,KAEhDxC,EAAAA,EAAAA,YAAU,KACHc,GAEHG,YAAW,KACTnC,SAAAA,EAAa0D,EAAK3G,GAAI,KAAK,GAE/B,GACC,CAAC2G,EAAK3G,GAAIiD,EAAYgC,KAEzBd,EAAAA,EAAAA,YACE,IACS,KACLQ,SAAAA,EAAYgC,EAAK3G,GAAG,GAKxB,IAGF,MAAM8E,GAAcnB,EAAAA,EAAAA,cACjBd,IACKA,GAGFuC,YAAW,KACTnC,SAAAA,EAAa0D,EAAK3G,GAAI6C,EAAQ,GAElC,GAEF,CAAC8D,EAAK3G,GAAIiD,IAGNqC,GAAkB3B,EAAAA,EAAAA,cAAY,KAClCyB,YAAW,KACTnC,SAAAA,EAAa0D,EAAK3G,GAAI,KAAK,GAC3B,GACD,CAAC2G,EAAK3G,GAAIiD,IAEb,OAAKgC,EAKH1F,IAAAA,cAACgG,EAAAA,cAAa,CACZT,YAAaA,EAGbQ,gBAAiBA,EACjBL,SAAUA,EACVO,KAAML,IAVD,IAaX,iFExJO,MAAM6B,EAA4B,wBAC5BC,EAA4B,EAC5BC,EAA0B,aAC1BC,EAAqC,GACrCC,EAA0B,GAC1BC,EAA0B,8ECHhC,SAASC,EACdb,EACAc,EACAC,GAEA,IAAK,MAAMb,KAAQF,EAAO,CACxB,MAAM5D,EAAU0E,EAAmBE,IAAId,EAAK3G,IAC5C2G,EAAKnH,MACHkI,KAAKC,KAAI9E,aAAO,EAAPA,EAAS+E,cAAe,EAAG,IACpCJ,EAAa,GACbA,EAAa,GACfb,EAAKlH,OACHiI,KAAKC,KAAI9E,aAAO,EAAPA,EAASgF,eAAgB,EAAG,IACrCL,EAAa,GACbA,EAAa,EACjB,CACF,CChBO,SAASM,EACdrB,EACAc,EACAC,GAEA,IAAK,MAAMb,KAAQF,EAAO,KAAAsB,EACxB,MAAMzB,EAAIK,EAAKL,EAAIK,EAAKnH,MAAQ,EAAIgI,EAAa,GAC3CjB,EAAII,EAAKJ,EAAII,EAAKlH,OAAS,EAAI+H,EAAa,GAE5CQ,EAA+C,QAAlCD,EAAGR,EAAmBE,IAAId,EAAK3G,WAAG,IAAA+H,OAAA,EAA/BA,EAAiC1C,cACnD2C,IACFA,EAActF,MAAMyD,KAAO,GAAGG,MAC9B0B,EAActF,MAAM2D,IAAM,GAAGE,MAC7ByB,EAActF,MAAMuF,WAAa,UAErC,CACF,2ECVO,SAASC,EACdC,EAAgChJ,GAQhC,IAPA,mBACEiJ,EAAkB,wBAClBC,GAIDlJ,EAED,OACEgJ,aAAK,EAALA,EAAO7D,KAAmBvD,IACxB,MAAM2E,EAAS0C,EAAmBX,IAAI1G,GAChCuH,EAAuB,CAAC,EAC9B,GAAI5C,EACF,IAAK,MAAMxD,IAAa,CAAiB,QAAS,OAAiB,CACjE,MAAMW,EAAUwF,EAAwBZ,IAAI,GAAG/B,KAAUxD,KACrDW,IACFyF,EAAUpG,GAAa,CAACW,EAAQ+E,YAAa/E,EAAQgF,cAEzD,CAGF,MAAO,CACLrC,KAAMzE,EACNuH,YACD,MACG,EAEV,CCiJA,SAASC,EAAcxH,EAAmByH,GACxC,OAAO,IAAIC,MAAMD,GAAOnI,KAAK,MAAMiE,KAAe,CAACoE,EAAGC,KAAM,CAC1DC,OAAO,EACP5I,GAAI,UAAUe,EAAK8H,UAAU9H,EAAK+H,UAAUH,OAEhD,CAEA,SAASI,EAAchI,EAAmByH,GACxC,OAAO,IAAIC,MAAMD,EAAQ,GAAGnI,KAAK,MAAMiE,KAAe,CAACoE,EAAGC,KAAM,CAC9DC,OAAO,EACPC,OACQ,IAANF,EAAU5H,EAAK8H,OAAS,UAAU9H,EAAK8H,UAAU9H,EAAK+H,UAAUH,EAAI,IACtEG,OACEH,IAAMH,EAAQzH,EAAK+H,OAAS,UAAU/H,EAAK8H,UAAU9H,EAAK+H,UAAUH,OAE1E,CCnLO,SAASK,EAAkB7J,GA4B/B,IA3BD8J,OAAQC,EAAc,MACtBzC,EAAK,MACL0B,EAAK,mBACLgB,EAAkB,cAClBC,EAAa,iBACbC,EAAgB,aAChBC,EAAY,mBACZ/B,EAAkB,wBAClBc,EAAuB,mBACvBD,EAAkB,cAClBmB,EAAa,mBACbC,EAAkB,cAClBC,GAeDtK,EACC,MAAM8J,EAAgC,YAAvBE,EAAmCD,EAAiB,UAC5DQ,EAAOC,IAAYvG,EAAAA,EAAAA,UAA8B,OAEjDwG,EAAiBC,IAAsBzG,EAAAA,EAAAA,UAA0B,CACtEqD,MAAO,GACP0B,MAAO,KA2DT,OAxDAhE,EAAAA,EAAAA,YAAU,KACHiF,GAGLO,GAAUG,GACG,UAAXb,EC9CC,SACLa,EACArD,EACA0B,EACA4B,GAEA,MAAM,YAAEC,KAAgBC,GAAsB,CAC5CD,YAAa,EACbE,QAAS,KACTC,QAAS,GACTC,QAAS,GACTC,QAAS,OAENC,EAAAA,EAAAA,MAAKP,EAAoB,CAC1B,cACA,UACA,UACA,UACA,UACA,WAGEvC,GAAe+C,EAAAA,EAAAA,GAAwBP,GAGvCN,EAAQ,IAAIc,IAAAA,SAAeC,OAGjCf,EAAMC,SAASM,GAGfP,EAAMgB,qBAAoB,WACxB,MAAO,CAAC,CACV,IAEA,IAAK,MAAM/D,KAAQF,GAAS,GAAI,CAC9B,MAAMkE,EAAeb,aAAa,EAAbA,EAAec,QAAQjE,EAAK3G,IACjD0J,EAAMmB,QACJlE,EAAK3G,IACL2K,aAAY,EAAZA,EAAcnF,QAASmB,EACnBgE,EACA,CACE3K,GAAI2G,EAAK3G,GACTwF,KAAMmB,GAGhB,CAEA,IAAK,MAAM5F,KAAQoH,GAAS,GAC1BuB,EAAMoB,QAAQ/J,EAAK8H,OAAQ9H,EAAK+H,OAAQ,CAAEtD,KAAMzE,IAGlD,MAAO,CACLkI,OAAQ,QACR2B,QAAQ5K,GACC0J,EAAM/C,KAAK3G,GAEpB+K,WAAAA,CAAW5L,GAIR,IAJS,mBACVoI,EAAkB,wBAClBc,EAAuB,mBACvBD,GACDjJ,EACC,MAAM6L,EAAgC,GACtC,IAAK,MAAMhL,KAAM0J,EAAMjD,QAAS,CAC9B,MAAME,EAAO+C,EAAM/C,KAAK3G,GACpB2G,EACFqE,EAAcC,KAAKtE,GAGnBuE,QAAQC,MAAM,6BAA8BnL,EAEhD,CAEA,GAA6B,IAAzBgL,EAAcI,OAChB,OAAO,KAGT9D,EAAgB0D,EAAezD,EAAoBC,GAEnD,MAAM6D,EAAgB3B,EACnBvB,QACA7D,KAAK/B,GAAMmH,EAAM3I,KAAKwB,KACzB,IAAK,MAAMxB,KAAQsK,EAAe,CAChC,MAAM3F,EAAS0C,EAAmBX,IAAI1G,EAAKyE,MAC3C,GAAIE,EACF,IAAK,MAAMxD,IAAa,CAAC,SAAU,QAAS,OAAiB,CAC3D,MAAMW,EAAUwF,EAAwBZ,IACtC,GAAG/B,KAAUxD,KAEf,GAAIW,EAAS,CACX,MAAM,YAAE+E,EAAW,aAAEC,GAAiBhF,EACpB,WAAdX,IACFnB,EAAKuK,SAAW,IAChBvK,EAAKvB,MAAQoI,EACb7G,EAAKtB,OAASoI,GAEhB9G,EAAKuH,YAALvH,EAAKuH,UAAc,CAAC,GACpBvH,EAAKuH,UAAUpG,GAAa,CAAC0F,EAAaC,EAC5C,CACF,CAEJ,CAKA,OAJA2C,IAAAA,OAAad,GAEb5B,EAAoBkD,EAAezD,EAAoBC,GAEhD,CACLf,MAAOuE,EACP7C,MAAOkD,EAEX,EAEJ,CDjEUE,CACEzB,EACArD,EACA0B,EACAsB,GAES,UAAXR,EDrBH,SACLa,EACArD,EACA0B,EACAkB,EACAmC,GAEA,MAAM,YAAExB,EAAW,kBAAEyB,EAAiB,QAAEC,GAAY,CAClD1B,YAAa,EACbyB,kBAAmB,MAChBnB,EAAAA,EAAAA,MAAKkB,EAAoB,CAAC,cAAe,sBAC5CE,SACkC,KAAhCF,aAAkB,EAAlBA,EAAoBE,UACf,CACCC,YAAa,EACbC,WAAY,EACZC,SAAU,EACVC,WAAY,MACwB,KAAhCN,aAAkB,EAAlBA,EAAoBE,SACpB,KACCF,aAAkB,EAAlBA,EAAoBE,UAI7BlE,GAAe+C,EAAAA,EAAAA,GAAwBP,GAEvCgB,EAAgC,GACtC,IAAK,MAAMrE,KAAQF,GAAS,GAAI,CAC9B,MAAMkE,EAAeb,aAAa,EAAbA,EAAec,QAAQjE,EAAK3G,IACjD,IAAI2K,aAAY,EAAZA,EAAcnF,QAASmB,EACzBqE,EAAcC,KAAKN,OACd,CACL,MAAMoB,EAAe,CACnB/L,GAAI2G,EAAK3G,GACTwF,KAAMmB,GAEFqF,EAAe3C,aAAgB,EAAhBA,EAAkB5B,IAAId,EAAK3G,IAC5CgM,IACFD,EAAaE,GAAKD,EAAa1F,EAC/ByF,EAAaG,GAAKF,EAAazF,GAEjCyE,EAAcC,KAAKc,EACrB,CACF,CAMA,MAAO,CACL9C,OAAQ,QACR2B,QANF,SAAiB5K,GACf,OAAOgL,EAAclF,MAAMa,GAASA,EAAKnB,KAAKxF,KAAOA,GACvD,EAKE+K,WAAAA,CAAW5L,GAIR,IAJS,mBACVoI,EAAkB,wBAClBc,EAAuB,mBACvBD,GACDjJ,EACC,GAA6B,IAAzB6L,EAAcI,OAChB,OAAO,KAGT9D,EAAgB0D,EAAezD,EAAoBC,GAEnD,MAAM2E,EAAanB,EAAc/G,QAC3BmI,EAA0B,GAEhC,IAAK,MAAMrL,KAAQoH,GAAS,GAC1BiE,EAAWnB,KAAK,IAAKlK,IACjB0K,EAAoB,IACtBU,EAAWlB,QACL1C,EACFxH,EACA0K,IAGJW,EAAWnB,QAAQlC,EAAchI,EAAM0K,KAI3C,MAAMY,GAAiBC,EAAAA,EAAAA,GAAgCF,GAAYpM,IAChEG,GAAMA,EAAEH,KAGPyL,EAAoB,GACtBY,EACGE,UAAUC,GAAOA,EAAE5D,MAAQ,IAAM6C,EAAoB,GAAK,KAC1DI,UAAUW,GAAOA,EAAE5D,MAAQ,GAAM,IAGtC,MAAM6D,GAAaC,EAAAA,EAAAA,GAA2BP,GAC3CQ,MAAM,OAAQN,GACdM,MAAM,KAAKC,EAAAA,EAAAA,MACXD,MAAM,KAAKE,EAAAA,EAAAA,MACXF,MAAM,UAAUG,EAAAA,EAAAA,MAEfpB,GACFe,EAAWE,MACT,WACAI,EAAAA,EAAAA,KACGC,QAAQ7M,GACPA,EAAEyI,MACE8C,EAAQC,YACRjE,KAAKuF,KAAK9M,EAAEX,OAAS,EAAIW,EAAEV,QAAU,GAAK,EAC1CiM,EAAQE,aAEbC,SAASH,EAAQG,UACjBC,WAAWJ,EAAQI,aAI1BW,EAAWS,OAejB,SACET,GAGAA,EAAWU,KACTzF,KAAK0F,KACH1F,KAAK2F,IAAIZ,EAAWa,YAAc5F,KAAK2F,IAAI,EAAIZ,EAAWc,eAGhE,CAvBMC,CAAqBf,GAErB3E,EAAoBkD,EAAezD,EAAoBC,GAEvD,MAAM6D,EAAgBnD,EAAiBC,EAAO,CAC5CC,qBACAC,4BAGF,MAAO,CAAE5B,MAAOuE,EAAe7C,MAAOkD,EACxC,EAEJ,CCrGYoC,CACE3D,EACArD,EACA0B,EACAkB,EACAI,GAES,WAAXR,EE7DL,SACLa,EACArD,EACA0B,EACAsB,GAEA,MAAM,YAAEO,GAAgB,CACtBA,YAAa,MACVM,EAAAA,EAAAA,MAAKb,EAAe,CAAC,iBAEpBjC,GAAe+C,EAAAA,EAAAA,GAAwBP,GAEvCgB,EAAgC,GACtC,IAAK,MAAMrE,KAAQF,GAAS,GAAI,CAC9B,MAAMkE,EAAeb,aAAa,EAAbA,EAAec,QAAQjE,EAAK3G,KAC7C2K,aAAY,EAAZA,EAAcnF,QAASmB,GACzBqE,EAAcC,KAAKN,GACnBA,EAAa+C,GAAK/C,EAAarE,EAC/BqE,EAAagD,GAAKhD,EAAapE,GAE/ByE,EAAcC,KAAK,CACjBjL,GAAI2G,EAAK3G,GACTwF,KAAMmB,GAGZ,CAMA,IAAIiH,EAEJ,MAAO,CACL3E,OAAQ,SACR2B,QARF,SAAiB5K,GACf,OAAOgL,EAAclF,MAAMa,GAASA,EAAKnB,KAAKxF,KAAOA,GACvD,EAOE+K,WAAAA,CAAW5L,GAMR,IANS,mBACVgK,EAAkB,mBAClB5B,EAAkB,wBAClBc,EAAuB,mBACvBD,EAAkB,aAClBkB,GACDnK,EACC,GAA6B,IAAzB6L,EAAcI,OAChB,OAAO,KAGT9D,EAAgB0D,EAAezD,EAAoBC,GAE/C8B,IACFsE,EAAY5C,EAAclF,MAAMa,GAASA,EAAK3G,KAAOsJ,EAAatJ,KAC9D4N,IACFA,EAAUtH,GAAKsH,EAAUF,IAAM,GAAKpE,EAAauE,KAAK,GACtDD,EAAUrH,GAAKqH,EAAUD,IAAM,GAAKrE,EAAauE,KAAK,KAI/B,aAAvB1E,GAAqCyE,IAEvCA,EAAUF,GAAKE,EAAUtH,EACzBsH,EAAUD,GAAKC,EAAUrH,GAG3BuB,EAAoBkD,EAAezD,EAAoBC,GAEvD,MAAM6D,EAAgBnD,EAAiBC,EAAO,CAC5CC,qBACAC,4BAGF,MAAO,CAAE5B,MAAOuE,EAAe7C,MAAOkD,EACxC,EAEJ,CFXcyC,CAAehE,EAAerD,EAAO0B,EAAOsB,GAC5C,MACT,GACA,CAACtB,EAAO1B,EAAOwC,EAAQQ,EAAeL,EAAeC,KAExDlF,EAAAA,EAAAA,YAAU,KACR,IACGoD,IACAc,GACDY,KAAWS,aAAK,EAALA,EAAOT,QAElB,OAEF,MAAMW,EAAkBF,aAAK,EAALA,EAAOqB,YAAY,CACzC5B,qBACA5B,qBACAc,0BACAD,qBACAkB,iBAEEM,GACFC,EAAmBD,EACrB,GACC,CACDX,EACAE,EACAO,EACAJ,EACA/B,EACAc,EACAkB,EACAC,EACApB,IAGKwB,CACT,+EG1GWmE,EAAwC,WACjD,IAAI5O,GAAO,QAAkB,UAAW6O,EAAUxI,EAAMtF,GACtD,aAA6E,EAAA+N,KAAKC,KAAK,oDAAoDpK,OAAOkK,EAAU,qBAAsBxI,EAAMtF,IACxL,IACF,IACA,OAAO,SAAkCiO,EAAIC,EAAKC,GAChD,OAAOlP,EAAKmP,MAAMC,KAAMC,UAC1B,CACF,CARmD,GCGxCC,EAA4C,WACrD,IAAItP,GAAO,QAAkB,UAAW6O,EAAUU,EAAYlJ,EAAMtF,GAClE,aAAiF,EAAA+N,KAAKU,IAAI,wDAAwD7K,OAAOkK,EAAU,cAAclK,OAAO4K,GAAalJ,EAAMtF,IAC3M,IACF,IACA,OAAO,SAAsCiO,EAAIC,EAAKC,EAAKO,GACzD,OAAOzP,EAAKmP,MAAMC,KAAMC,UAC1B,CACF,CARuD,GCA5CK,EAA0C,WACnD,IAAI1P,GAAO,QAAkB,UAAW6O,EAAUxI,EAAMtF,GACtD,aAA+E,EAAA+N,KAAKC,KAAK,sDAAsDpK,OAAOkK,EAAU,aAAcxI,EAAMtF,IACpL,IACF,IACA,OAAO,SAAoCiO,EAAIC,EAAKC,GAClD,OAAOlP,EAAKmP,MAAMC,KAAMC,UAC1B,CACF,CARqD,GCMrD,MAAMM,EAAqB,0BAQpB,SAASC,EAAYC,GAC1B,MAAO5F,EAAe6F,IAAoB7L,EAAAA,EAAAA,WAAU4L,GAC9CE,GAAgBC,EAAAA,EAAAA,WACf9F,EAAkB+F,IACvBhM,EAAAA,EAAAA,UAAkC,MAC9BiM,GAAQ7L,EAAAA,EAAAA,UAAQ,ICzBjB,WACL,IAAI8L,GAAU,EACd,MAAMC,EAAuB,GAC7B,OAAOC,eAAqBC,GAE1B,GADAF,EAAatE,KAAKwE,IACbH,EAAS,CAEZ,IAAII,EACJ,IAFAJ,GAAU,EAEFI,EAAWH,EAAaI,SAC9B,UACQD,GACR,CAAE,MAAOvE,GAEPD,QAAQC,MAAMA,EAChB,CAEFmE,GAAU,CACZ,CACF,CACF,CDM8BM,IAAoB,IA8FhD,OA5FAzL,EAAAA,EAAAA,YAAU,MACRqL,iBACE,IAAKR,EAEH,YADAC,GAAiB,GAGnB,MAAM,UAAEY,EAAS,IAAEpL,GAAQuK,EAC3B,IAAMa,IAAapL,EAIjB,OAFAyG,QAAQC,MAAM,+DACd8D,GAAiB,GAGnB,IACE,MAAMa,SACE/B,EAAyBe,EAAoB,CACjDiB,OAAQ,CAAC,SACTf,MAAO,CACLa,UAAW,CACTG,IAAKH,GAEPpL,IAAK,CACHuL,IAAKvL,IAGTwL,KAAM,EACNC,UAAW,MAEbJ,KACF,GAAIA,EAAK1E,OAAS,EAAG,KAAA+E,EACnB,MAAMC,EAAWN,EAAK,GAChBzG,EAAmB,IAAI5F,IACb,QADgB0M,EAC9BC,EAAS3J,aAAK,IAAA0J,OAAA,EAAdA,EAAgB7L,KAAKqC,GAAS,CAACA,EAAK3G,GAAI2G,MAE1CuI,EAAcmB,QAAUD,EAAS1B,WACjCU,EAAoB/F,EACtB,MACE+F,EAAoB,KAExB,CAAE,MAAOjE,IACPmF,EAAAA,EAAAA,iBAAgBnF,EAClB,CAAE,QACA8D,GAAiB,EACnB,CACF,CACAsB,EAAa,GACZ,CAACvB,IA8CG,CACL5F,gBACAC,mBACAmH,cA/CmB7M,EAAAA,EAAAA,cAClB8C,IACC,MAAM,UAAEoJ,EAAS,IAAEpL,GAAQuK,GAAS,CAAC,EAC/Ba,GAAapL,GAGnB4K,GAAMG,UACJ,MAAMiB,EAAe,CACnBZ,YACApL,MACAgC,SAEF,IACE,GAAIyI,EAAcmB,cACV5B,EACJK,EACAI,EAAcmB,QACdI,EACA,CACEC,kBAAmB,CACjBC,kBAAkB,SAInB,CACL,MAAMP,QAAiBvB,EACrBC,EACA2B,EACA,CACEC,kBAAmB,CACjBC,kBAAkB,KAIxBzB,EAAcmB,QAAUD,EAAS1B,UACnC,CACF,CAAE,MAAOvD,IACPmF,EAAAA,EAAAA,iBAAgBnF,EAClB,IACA,GAEJ,CAAC6D,EAAOK,IAQZ,kBE7HO,SAASuB,EACdhL,EACAyC,GAEA,IAAK,MAAM,GACTrI,EAAE,SACF6Q,EAAQ,UACR3O,EAAS,MACT4O,EACAC,KAAMC,KACHpL,EAAoB,CACvB,MAAMvB,EAAQgE,EAAwBZ,IAAIzH,GAC1C,GAAIqE,IACFA,EAAM3B,MAAMyD,KAAO,GAAG0K,EAAS,OAC/BxM,EAAM3B,MAAM2D,IAAM,GAAGwK,EAAS,OAC9BxM,EAAM3B,MAAMuF,WAAa,UAEP,WAAd/F,QAAoCxB,IAAVoQ,GAAqB,CACjD,MAAOtR,EAAOC,GAAUuR,GAAS,CAAC,EAAG,GAU/BC,EAAgBvJ,KAAKwJ,OACvBJ,EAAQ,EAAc,EAAVpJ,KAAKyJ,GAASL,EAAQA,GAASpJ,KAAKyJ,GAAM,GAGpDC,EACU,UAAdlP,EAAwB+O,GAAiBA,EAAgB,GAAK,EAC1DI,EAAU3J,KAAK4J,IAAIR,GACnBS,EACJT,GAAwB,UAAd5O,EAAwB,GAAK,GAAKwF,KAAKyJ,GAAM,EACnDK,EAAS,EACTC,EAAY/J,KAAKgK,IAAIH,GAAeC,EACpCG,EAAYjK,KAAKkK,IAAIL,GAAeC,EAC1C,IAAIK,EACJ,OAAQT,GACN,KAAK,EACHS,EAAY,eAAerS,EAAQ6R,EAAUI,OAC7C,MACF,KAAK,EACHI,EAAY,aAAapS,EAAS4R,EAAUM,SAC5C,MACF,KAAK,EACHE,EAAY,kBACVpS,EAAS4R,EAAUM,iBAErB,MACF,KAAK,EACHE,EAAY,oBAAoBrS,EAAQ6R,EAAUI,OAClD,MACF,KAAK,EACHI,EAAY,yBACTrS,EAAQ6R,EAAUI,eAErB,MACF,KAAK,EACHI,EAAY,mBACTpS,EAAS4R,EAAUM,qBAEtB,MACF,KAAK,EACHE,EAAY,cAAcpS,EAAS4R,EAAUM,aAC7C,MACF,QACEE,EAAY,oBACVrS,EAAQ6R,EAAUI,eAGxBpN,EAAM3B,MAAMmP,UAAYA,CAC1B,CAEJ,CACF,kCC1EO,SAASC,EACdlM,EACAyC,GAEA,MAAM/D,EAAqB,IAAIb,IAE/B,IAAK,MAAM,GAAEzD,EAAE,OAAE0F,EAAM,UAAExD,KAAe0D,EAAoB,CAC1D,IAAKyC,GAAyC,WAAdnG,EAC9B,SAEF,MAAMW,EAAUwF,EAAwBZ,IAAIzH,GAC5C,IAAK6C,EACH,SAEF,MAAM,YAAE+E,EAAW,aAAEC,GAAiBhF,EAGtC,GAEmB,IAAhB+E,GAAsC,IAAjBC,EAEtB,SAEF,MAAM3B,EAAU,EAEhB5B,EAAIxB,IAAI4C,EAAQ,CACd,CACES,KAAMtD,EAAQkP,WAAanK,EAAc,EAAI1B,EAC7CG,IAAKxD,EAAQmP,UAAYnK,EAAe,EAAI3B,EAC5C1G,MAAOoI,EAAwB,EAAV1B,EACrBzG,OAAQoI,EAAyB,EAAV3B,IAG7B,CAEA,OAAO5B,CACT,kCCnCO,SAAS2N,EACdrO,EACAsO,EACAjR,GAEA,OAAwB,IAApB2C,EAASwH,QAAyC,IAAzB8G,EAAc9G,OAClCxH,EAEFsO,EAAcC,SACnBhT,IAA4D,IAAzD2B,MAAM,KAAE0D,EAAI,MAAEH,EAAK,IAAE1C,GAAK,KAAEZ,EAAI,UAAEuH,EAAS,MAAEwI,GAAO3R,EACrD,MAAMiT,EAAOnR,EAAUwG,IAAI9F,GAC3B,IAAM6C,IAASH,IAAW+N,IAASA,EAAKC,aAAa,KACnD,MAAO,GAGT,IAAI5N,EACAqL,EACAzL,GACFI,EAAM,QACNqL,EAAQ,GAAuBhM,OAAOO,KAEtCI,EAAM,OACNqL,EAAQ,GAAqBhM,OAAOU,IAItC,MACE8B,EAAGH,EACHI,EAAGF,EAAG,MACN7G,EAAK,OACLC,GAGE2S,EAAKE,UAGHC,EACmCH,EAAKI,iBAE9C,OAAO1C,EAAKxL,KAAwByB,IAClC,MAAM7D,EAAY6D,EAAK7D,WAAa,SAG9BuQ,EAGAL,EAAKM,iBACW,UAAdxQ,EACIwF,KAAKiL,IAPF,EAOcJ,EAAa,GAChB,QAAdrQ,EACEwF,KAAKC,IAAI4K,EATR,EAS6BA,EAAa,GAC3CA,EAAa,GAG3B,MAAO,CACL,CAAC9N,GAAiBsB,EAClBhF,OACA8P,SAAU,CAAC4B,EAAMnM,EAAGmM,EAAMlM,GAC1BP,SAAU,CAAEG,OAAME,MAAK7G,QAAOC,UAC9BO,GAAI,GAAG2B,KAAOO,IACdwD,OAAQ/D,EACRO,YACA4O,QACAC,KAAMzI,aAAS,EAATA,EAAYpG,GACnB,GACD,GAGR,8FC7DO,SAAS0Q,EACdvH,EACAL,EACA6H,GAEA,MAAMC,EAAkB,IAAIC,QACtBC,EAAkB,IAAIvP,IACtBwP,EAAe,IAAIxP,IAEzB,IAAK,MAAMsI,KAAgBf,EACzBgI,EAAgBlQ,IAAIiJ,EAAa/L,GAAI+L,GAGvC,IAAK,MAAMmH,KAAgB7H,EAAe,CACxC,MAAQ7F,KAAMzE,GAASmS,EACvBJ,EAAgBhQ,IAAI/B,EAAMmS,EAC5B,CAEA,IAAIC,GAAW,EA4Bf,OAAON,EACJvO,KAA8BnF,IAAsC,IAAAiU,EAAAC,EAAA,IAArC,KAAEvS,EAAI,KAAEC,EAAI,QAAEC,KAAYsS,GAAMnU,EAC9D,MAAM+T,EAAeJ,EAAgBrL,IAAI1G,GACzC,IAAKmS,EACH,OAEF,MAAMK,GAIH,QAHDH,EAAApS,EAAQ8E,MACL9D,GACoB,YAAnBA,EAAOC,SAA8C,UAArBD,EAAOE,mBAC1C,IAAAkR,OAAA,EAHDA,EAGG5B,SAAU,EACTgC,GAGH,QAFDH,EAAArS,EAAQ8E,MACL9D,GAA8B,YAAnBA,EAAOC,SAA8C,QAArBD,EAAOE,mBACpD,IAAAmR,OAAA,EAFDA,EAEG7B,SAAU,EACf,IAAIV,GAEA,OAAE2C,GAAWP,EAEjB,IAAKO,EAAQ,CACX,MAAM5K,EAASmK,EAAgBvL,IAAI1G,EAAK8H,QAClCC,EAASkK,EAAgBvL,IAAI1G,EAAK+H,QAExC,GAAID,GAAUC,GAAUD,IAAWC,EAAQ,CACzC,GAAkB,aAAdhI,EAAKf,MACP,KACG2T,EAAAA,EAAAA,GACC7K,EACAC,EACAyK,EACAC,GAEF,CA3DgBG,MAC1B,GAAIR,EACF,OAEFA,GAAW,EAEX,MAAMS,EAAkBA,CAAC/T,EAAcgU,KACrC,IAAIC,EAAUb,EAAaxL,IAAI5H,GAC1BiU,GACHb,EAAanQ,IAAIjD,EAAOiU,EAAU,IAAIC,KAExC,MAAMC,EAAShB,EAAgBvL,IAAIoM,GAC/BG,GACFF,EAAQG,IAAID,EACd,EAGF,IAAK,MACHxO,MAAM,OAAEqD,EAAM,OAAEC,MACbuC,EACCxC,IAAWC,IACb8K,EAAgB/K,EAAQC,GACxB8K,EAAgB9K,EAAQD,GAE5B,EAoCU8K,GACA,MAAMO,EAAkBC,EACtBtL,EACAC,EACAyK,GAEIa,EAAkBD,EACtBrL,EACAD,EACA2K,GAEIa,EAAgBC,EACpBrB,EAAaxL,IAAI1G,EAAK8H,SAAW,GACjCA,EACAqL,EACAX,GAEIgB,EAAgBD,EACpBrB,EAAaxL,IAAI1G,EAAK+H,SAAW,GACjCA,EACAsL,EACAZ,GAGIgB,GACHH,EAAcrQ,QAAQ8E,GAAU,IAChCuL,EAAcjJ,OAAS,GACpBqJ,GACHF,EAAcvQ,QAAQ6E,GAAU,IAChC0L,EAAcnJ,OAAS,GAE1BqI,GAASiB,EAAAA,EAAAA,GACP7L,EACAC,EACAoL,EACAE,EACAI,EACAC,EAEJ,OAEAhB,GAASkB,EAAAA,EAAAA,GAAoB9L,EAAQC,GAGvC,GAAI2K,EAAQ,CACV,MAAMmB,EAAQnB,EAAO,GACfoB,EAAMpB,EAAOA,EAAOrI,OAAS,GACnC0F,EAAQpJ,KAAKoN,MAAMD,EAAItO,EAAIqO,EAAMrO,EAAGsO,EAAIvO,EAAIsO,EAAMtO,EACpD,CACF,CACF,CAQA,MAAO,IACFgN,EACHtS,UACAF,OACAC,OACAZ,GAXQ4U,EAAAA,EAAAA,GACRtB,EACA3S,EAAKkU,UACLzB,EACAC,GAQA1C,QACAxI,UAAW4K,EAAa5K,UACzB,IAEF2M,OAAOC,QACZ,CAEA,SAASf,EACPtL,EACAC,EACA5C,GAGA,MAAMiP,EAAczN,KAAKoN,MACvBjM,EAAOpJ,OAAmB,EAAVyG,EAChB2C,EAAOrJ,MAAkB,EAAV0G,IAETI,EAAG8O,EAAI7O,EAAG8O,GAAOxM,GACjBvC,EAAGgP,EAAI/O,EAAGgP,GAAOzM,EACnBgI,EAAQpJ,KAAKoN,MAAMS,EAAKF,EAAIC,EAAKF,GACjCI,EAAa1E,EAAQ,EAAc,EAAVpJ,KAAKyJ,GAASL,EAAQA,EAErD,OADkBpJ,KAAKwJ,MAAOsE,EAAa9N,KAAKyJ,GAAM,IAEpD,KAAK,EACH,OAAOqE,EAAaL,EAAc,QAAU,SAC9C,KAAK,EACH,OAAOK,EAAa9N,KAAKyJ,GAAKgE,EAAc,SAAW,OACzD,KAAK,EACH,OAAOK,EAAa9N,KAAKyJ,GAAKgE,EAAc,OAAS,MACvD,QACE,OAAOK,EAAuB,EAAV9N,KAAKyJ,GAASgE,EAAc,MAAQ,QAE9D,CAEA,SAASb,EACPR,EACAjU,EACAuR,EACAlL,GAEA,MAAO,IAAI4N,GACRmB,QAAQtO,GAASwN,EAAatU,EAAM8G,EAAMT,KAAakL,IACvDqE,MAAK,CAACC,EAAGC,KACR,MAAQrP,EAAGsP,EAAIrP,EAAGsP,GAAOH,GACjBpP,EAAGwP,EAAIvP,EAAGwP,GAAOJ,EACzB,MAAqB,QAAdvE,GAAqC,WAAdA,EAAyBwE,EAAKE,EAAKD,EAAKE,CAAE,GAE9E,iDChLO,SAASC,EACdC,EAAoB9W,GAQQ,IAP5B,cACE6L,EAAa,aACbkL,GAID/W,EAED,MAAMgX,EACmB,UAAvBD,aAAY,EAAZA,EAAcnW,MACViL,EAAclF,MAAMa,GAASA,EAAK3G,KAAOkW,EAAaE,cACtD1V,EACA2V,EACmB,UAAvBH,aAAY,EAAZA,EAAcnW,MAAkBmW,EAAanV,UAAOL,EAEtD,IAAKyV,IAAeE,EAClB,OAGF,MAAM5R,EACJwR,EAAMxR,KACoCwR,EAAMK,SACNL,EAAMM,MAClD,IAAIC,EACA7P,EACA5F,EAEJ,OAAQ0D,GACN,IAAK,YACL,KAAK,EACL,IAAK,SACL,KAAK,GACC0R,GACFK,EAAS,cACT7P,EAAOwP,IAEPK,EAAS,cACTzV,EAAOsV,GAET,MAEF,QACE,IAAKF,EACH,OAEF,OAAQ1R,GACN,IAAK,YACL,KAAK,GACHkC,EAAO8P,EAAW,IAAKzL,EAAemL,GAAa,GACnDK,EAAS,qBACT,MAEF,IAAK,UACL,KAAK,GACH7P,EAAO8P,EAAW,IAAKzL,EAAemL,GAAa,GACnDK,EAAS,qBACT,MAEF,IAAK,aACL,KAAK,GACH7P,EAAO8P,EAAW,IAAKzL,EAAemL,EAAY,GAClDK,EAAS,qBACT,MAEF,IAAK,YACL,KAAK,GACH7P,EAAO8P,EAAW,IAAKzL,EAAemL,EAAY,GAClDK,EAAS,sBAKL,IAAAE,EAAZ,OAAIF,GACFP,EAAMzT,iBACNyT,EAAMxT,kBACC,CAAE+T,SAAQ7P,KAAU,QAAN+P,EAAE/P,SAAI,IAAA+P,OAAA,EAAJA,EAAMlR,KAAMzE,cAHrC,CAKF,CAEA,SAAS0V,EACPE,EACA3L,EACAmL,EACA/E,GAEA,MAAMwF,EAAwB,MAATD,EAAe,IAAM,IAC1C,IAAIE,EACJ,MAAMC,EAAa9L,EAAciK,QAC9BtO,GACCA,IAASwP,IACPU,GAAQlQ,EAAKgQ,GAAQR,EAAWQ,IAASvF,EAAYyF,EAAO,IAC9DA,EAAOnP,KAAKqP,IAAIZ,EAAWS,GAAgBjQ,EAAKiQ,MAEpD,OAAOI,EAAAA,EAAAA,OACLF,GACCnQ,IACEwP,EAAWS,GAAgBjQ,EAAKiQ,KAAkB,GAClDT,EAAWQ,GAAQhQ,EAAKgQ,KAAU,GAEzC,2DC7GO,SAASM,EACdhB,EAAiB9W,GA8BjB,IA7BA,MACEsH,EAAK,mBACLc,EAAkB,aAClB2P,EAAY,UACZC,EAAS,MACTC,EAAK,oBACLC,EAAmB,iBACnBC,EAAgB,sBAChBC,EAAqB,gBACrBC,EAAe,qBACfC,EAAoB,eACpBC,GAiBDvY,EAED,SAASwY,EAASC,GAChB,GAAIrQ,EACF,IAAK,MAAOvH,EAAI6C,KAAY0E,EAC1B,GAAIqQ,EAAM/U,GACR,OAAO4D,aAAK,EAALA,EAAOX,MAAMa,GAASA,EAAK3G,KAAOA,GAIjD,CAEA,IAAKkX,IAAiBC,EACpB,OAGF,MAAMtO,EAAS8O,GAAU9U,GACvBA,EAAQgV,SAAS5B,EAAMnN,UAGzB,IAAKD,EACH,OAGF,IAwEF,SACE3I,EACA2I,GAEA,OAAO3I,EAAQ4X,WACV,GAAiBhU,OAAO5D,EAAQ4X,YAAYjU,SAASgF,EAAO9I,OAC7DmF,EAAAA,EAAAA,oBAAmBhF,EAAS,CAAE2I,UACpC,CA/EOkP,CAAYb,GAAgBC,EAAYtO,GAC3C,OAGFoN,EAAMxT,kBACN,MAAM5C,EAAsB,CAACoW,EAAM+B,QAAS/B,EAAMgC,SAElD,GAAIf,EAAc,CAChBG,EAAoB,CAClBxX,OACAK,QAAS,CACPD,YAAa+G,EAAAA,GACbzG,YAAa0G,EAAAA,MACTiR,EAAAA,mBAAmBC,kBACrB,CAAEtP,UACFqO,MAINI,EAAiBzX,GAEjB4X,SAAAA,EAAuB,CAAE1X,KAAM,OAAQqW,OAAQvN,EAAO7I,KAEtD,MAAMoY,EAAe7V,IACnB+U,EAAiB,CAAC/U,EAAEyV,QAASzV,EAAE0V,SAAS,EAEpCI,EAAa9V,IACjB+V,SAASC,oBAAoB,YAAaH,GAC1CE,SAASC,oBAAoB,UAAWF,GACxChB,EAAoB,MACpB,MAAMmB,EAAejW,EAAEkW,eACjB3P,EAAS6O,GAAU9U,GAAY2V,EAAa3U,SAAShB,KACvDiG,GAAUD,IAAWC,IACvB4O,SAAAA,EAAiB,CAAE7O,SAAQC,WAC7B,EAIF,OAFAwP,SAASI,iBAAiB,YAAaN,QACvCE,SAASI,iBAAiB,UAAWL,EAEvC,CAGAZ,SAAAA,EAAuB,CAAE1X,KAAM,OAAQqW,OAAQvN,EAAO7I,KAEtD,IAAI2Y,GAAQ,EACZ,MAAMP,EAAe7V,IAEnB,MAAMqW,EAA0B,EAC7BrW,EAAEyV,QAAUnY,EAAK,IAAMuX,GACvB7U,EAAE0V,QAAUpY,EAAK,IAAMuX,GAErBuB,IACHA,EAAQC,EAAS,IAAM,EAAIA,EAAS,IAAM,GAAK,EAC3CD,GACFpB,EAAsB,YAGtBoB,GACFnB,EAAgB,CAAExX,GAAI6I,EAAO7I,GAAI6N,KAAM+K,GACzC,EAEIP,EAAYA,KAChBM,GAAQ,EACRL,SAASC,oBAAoB,YAAaH,GAC1CE,SAASC,oBAAoB,UAAWF,GACxCb,EAAgB,MAChBD,EAAsB,WAAW,EAEnCe,SAASI,iBAAiB,YAAaN,GACvCE,SAASI,iBAAiB,UAAWL,EACvC,2DC7IO,SAASQ,EACd9X,EACAkU,GAEA,QAAKA,IAGDA,EAAO6D,SACD,GAAgBhV,OAAOmR,EAAO6D,UAAUjV,SAAS9C,EAAKhB,OAEzDmF,EAAAA,EAAAA,oBAAmB+P,EAAQ,CAAElU,SACtC,eCKO,SAASgY,EACd5Q,EACA6Q,GAEA,MAAMnG,EAAoC,GACpCzK,EAAqB,IAAI2K,QACzB/R,EAAwB,GAC9B,IAAK,MAAMD,KAAQoH,GAAS,GAAI,CAC9B,MAAM,MAAE9D,KAAU4U,IAChBD,aAAK,EAALA,EAAOlT,MAAMhF,GAAS+X,EAAkB9X,EAAMD,OAAU,CAAC,EAErDoY,EAAmBhB,EAAAA,mBAAmBC,kBAC1C,CAAEpX,QACFkY,GAEF,IAA+B,KAA3BC,aAAgB,EAAhBA,EAAkBC,MACpB,SAEF,MAAMnZ,GAAKoZ,EAAAA,EAAAA,UAAS,SACdtY,EAA+B,CACnCb,YAAa+G,EAAAA,GACbzG,YAAa0G,EAAAA,GACb+N,UAC6B,cAA3BkE,aAAgB,EAAhBA,EAAkBnZ,MACd,cACAmH,EAAAA,GACNtF,oBAAqBuF,EAAAA,GACrBpH,KAAM,UACHmZ,EACH7U,QACA1C,IAAK3B,GAEPoI,EAAmBtF,IAAI/B,EAAMf,GAE7B,MAAMqZ,EAA4C,GAE5CC,EACJxY,EAAKE,UAAYF,EAAKL,MAAQ,CAAC,CAAEyB,UAAW,MAAOnC,KAAM,UAAa,IACxE,IAAK,MAAMiC,KAAUsX,EAAa,KAAA1Y,EAAAC,EAChC,MAAQqB,UAAWqX,EAAYxZ,KAAMyZ,GAAUxX,EACzCE,EAAYqX,GAAc,MAEhC,IAAIxZ,EACA0Z,EAEJ,OAAQD,GACN,IAAK,OACL,IAAK,OACHC,EAAa,GACb1Z,EAAOyZ,EACP,MACF,QACEC,EAAa,EACb1Z,EAAO,QAEX,MAAMyR,EAASiI,EAAa3Y,EAAKP,YAE3B4B,EAAQuX,EAAU,CAAE3Z,OAAME,YAAaa,EAAKb,aAAee,GACjEqY,EAAkBpO,KAAK,CACrB9I,QACAD,YACAnC,OACAkC,QAAS,UACTuP,WAGF,MAEMmI,EAAoBD,EACxB,CAAE3Z,OAAME,aAFM,QAAdW,EAAAE,EAAKe,iBAAS,IAAAjB,GAAQ,QAARA,EAAdA,EAAgBS,cAAM,IAAAT,OAAA,EAAtBA,EAAwBX,cAAea,EAAKb,aAG5Ce,GAEFqY,EAAkBpO,KAAK,CACrB9I,MAAOwX,EACPzX,YACAnC,OACAkC,QAAS,SACTuP,WAEF,MAEMoI,EAA2BF,EAC/B,CAAE3Z,OAAME,aAFM,QAAdY,EAAAC,EAAKe,iBAAS,IAAAhB,GAAe,QAAfA,EAAdA,EAAgBS,qBAAa,IAAAT,OAAA,EAA7BA,EAA+BZ,cAAea,EAAKb,aAGnDe,GAEFqY,EAAkBpO,KAAK,CACrB9I,MAAOyX,EACP1X,YACAnC,OACAkC,QAAS,iBACTuP,UAEJ,CAEAqB,EAAgB5H,KAAK,CACnBnK,OACAE,QAASqY,EACTtY,QAEJ,CACA,MAAO,CACL8R,kBACAzK,qBACApH,UAEJ,CAEA,SAAS0Y,EAAU1X,EAAoBhB,GACrC,IAAI6Y,GAAcC,EAAAA,EAAAA,WAAU9Y,EAASgB,GAIrC,OAHqB,IAAjB6X,IACFA,EAAc7Y,EAAQiK,KAAKjJ,GAAU,GAEhC6X,CACT,kBC9HO,SAASE,EACdrE,EACAC,GAEA,OAAOD,IACDC,GACAD,EAAE3V,OAAS4V,EAAE5V,OACD,SAAX2V,EAAE3V,KACC2V,EAAEU,SAAYT,EAAyBS,OACvCV,EAAE3U,KAAK8H,SAAY8M,EAAyB5U,KAAK8H,QACjD6M,EAAE3U,KAAK+H,SAAY6M,EAAyB5U,KAAK+H,SACtD6M,CACP,kCCVO,SAASqE,EACdhP,EAA6B7L,GAEX,IADlB,YAAE8a,EAAW,aAAEC,EAAY,WAAEC,GAAsChb,EAE/DgH,EAAOiU,IACP/T,EAAM+T,IACNC,GAAQ,IACRC,GAAS,IACb,IAAK,MAAM3T,KAAQqE,EAAe,CAChC,MAAMuP,EAAK5T,EAAKnH,MAAQ,EAClBgb,EAAK7T,EAAKlH,OAAS,EACnB+M,EAAI7F,EAAKL,EAAIiU,EACbE,EAAI9T,EAAKL,EAAIiU,EACbG,EAAI/T,EAAKJ,EAAIiU,EACb7E,EAAIhP,EAAKJ,EAAIiU,EACfhO,EAAIrG,IACNA,EAAOqG,GAELiO,EAAIJ,IACNA,EAAQI,GAENC,EAAIrU,IACNA,EAAMqU,GAEJ/E,EAAI2E,IACNA,EAAS3E,EAEb,CAEA,MAAMnW,EAAQ6a,EAAQlU,EAChB1G,EAAS6a,EAASjU,EAElB+Q,EACJ+C,IAAe3a,EAAQya,GAAexa,EAASya,GAC3CxS,KAAKC,IACHD,KAAKiL,IAAIsH,EAAcza,EAAO0a,EAAeza,EAAQ0a,EAAW,IAChEA,EAAW,IAEb,EAKN,MAAO,CAAE7T,GAHE2T,EAAcza,EAAQ4X,GAAS,EAAIjR,EAAOiR,EAGzC7Q,GAFD2T,EAAeza,EAAS2X,GAAS,EAAI/Q,EAAM+Q,EAEvCuD,EAAGvD,EACpB,kFCjDIwD,QAA0B,GAA4B,KAE1DA,EAAwB3P,KAAK,CAAC4P,EAAO7a,GAAI,s0BAImX,KAE5Z,QAAe4a,EAAwBE","sources":["webpack:///./src/diagram/ConnectLineComponent.tsx","webpack:///./src/diagram/LineComponent.tsx","webpack:///./src/diagram/LineLabelComponent.tsx","webpack:///./src/diagram/LineMaskComponent.tsx","webpack:///./src/diagram/NodeComponent.tsx","webpack:///./src/diagram/processors/findNodeBrick.ts","webpack:///./src/diagram/constants.ts","webpack:///./src/diagram/processors/adjustNodesSize.ts","webpack:///./src/diagram/processors/adjustNodesPosition.ts","webpack:///./src/diagram/processors/getRenderedEdges.ts","webpack:///./src/diagram/processors/getForceGraph.ts","webpack:///./src/diagram/hooks/useRenderedDiagram.ts","webpack:///./src/diagram/processors/getDagreGraph.ts","webpack:///./src/diagram/processors/getManualGraph.ts","webpack:///../../node_modules/@next-api-sdk/cmdb-sdk/dist/esm/api/cmdb/instance/postSearchV3.js","webpack:///../../node_modules/@next-api-sdk/cmdb-sdk/dist/esm/api/cmdb/instance/updateInstanceV2.js","webpack:///../../node_modules/@next-api-sdk/cmdb-sdk/dist/esm/api/cmdb/instance/createInstance.js","webpack:///./src/diagram/hooks/useUserView.ts","webpack:///./src/diagram/processors/createAsyncQueue.ts","webpack:///./src/diagram/processors/adjustLineLabels.ts","webpack:///./src/diagram/processors/getLineMaskRects.ts","webpack:///./src/diagram/processors/getRenderedLineLabels.ts","webpack:///./src/diagram/processors/getRenderedLines.ts","webpack:///./src/diagram/processors/handleKeyboard.ts","webpack:///./src/diagram/processors/handleNodesMouseDown.ts","webpack:///./src/diagram/processors/matchEdgeByFilter.ts","webpack:///./src/diagram/processors/normalizeLinesAndMarkers.ts","webpack:///./src/diagram/processors/sameTarget.ts","webpack:///./src/diagram/processors/transformToCenter.ts","webpack:///./src/diagram/styles.shadow.css"],"sourcesContent":["import React from \"react\";\nimport classNames from \"classnames\";\nimport type { ConnectLineState, PositionTuple } from \"./interfaces\";\nimport { MarkerComponent } from \"./MarkerComponent\";\n\nexport interface ConnectLineComponentProps {\n connectLineState: ConnectLineState | null;\n connectLineTo: PositionTuple;\n markerPrefix: string;\n}\n\nexport function ConnectLineComponent({\n connectLineState,\n connectLineTo,\n markerPrefix,\n}: ConnectLineComponentProps): JSX.Element {\n return (\n <svg\n width=\"100%\"\n height=\"100%\"\n className={classNames(\"connect-line\", {\n connecting:\n !!connectLineState &&\n // Do not show when the distance of mouse move is less than 5px\n (connectLineTo[0] - connectLineState.from[0]) ** 2 +\n (connectLineTo[1] - connectLineState.from[1]) ** 2 >\n 25,\n })}\n >\n <defs>\n <MarkerComponent\n type=\"arrow\"\n id={`${markerPrefix}connect-line`}\n strokeColor={connectLineState?.options.strokeColor}\n />\n </defs>\n <path\n d={\n connectLineState\n ? `M${connectLineState.from.join(\" \")}L${connectLineTo.join(\" \")}`\n : \"\"\n }\n fill=\"none\"\n stroke={connectLineState?.options.strokeColor}\n strokeWidth={connectLineState?.options.strokeWidth}\n markerEnd={\n connectLineState?.options.arrow\n ? `url(#${markerPrefix}connect-line)`\n : undefined\n }\n />\n </svg>\n );\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport type { LineTarget, RenderedLine, LineMaskRects } from \"./interfaces\";\n\nexport interface LineComponentProps {\n line: RenderedLine;\n linePaths: Map<string, SVGPathElement | null>;\n lineMaskRects: LineMaskRects;\n maskPrefix: string;\n markerPrefix: string;\n activeLineMarkerPrefix: string;\n active?: boolean;\n activeRelated?: boolean;\n onLineClick?(line: LineTarget): void;\n onLineDoubleClick?(line: LineTarget): void;\n}\n\nexport function LineComponent({\n line: { line, edge, d, markers },\n linePaths,\n lineMaskRects,\n maskPrefix,\n markerPrefix,\n activeLineMarkerPrefix,\n active,\n activeRelated,\n onLineClick,\n onLineDoubleClick,\n}: LineComponentProps): JSX.Element {\n const mask = lineMaskRects.has(line.$id)\n ? `url(#${maskPrefix}${line.$id})`\n : undefined;\n\n const { strokeColor, strokeWidth, interactStrokeWidth } = {\n ...line,\n ...(active\n ? line.overrides?.active\n : activeRelated\n ? line.overrides?.activeRelated\n : null),\n };\n\n const expectVariant = active\n ? \"active\"\n : activeRelated\n ? \"active-related\"\n : \"default\";\n\n let markerStart: string | undefined;\n let markerEnd: string | undefined;\n\n for (const marker of markers) {\n if (marker.variant === expectVariant) {\n if (marker.placement === \"start\") {\n markerStart = `url(#${markerPrefix}${marker.index})`;\n } else {\n markerEnd = `url(#${markerPrefix}${marker.index})`;\n }\n }\n }\n\n return (\n <g\n className={classNames(\"line\", {\n interactable: line.interactable,\n active,\n \"active-related\": activeRelated,\n })}\n onClick={\n line.interactable\n ? () => {\n onLineClick?.({ id: line.$id, edge });\n }\n : undefined\n }\n onDoubleClick={\n line.interactable\n ? (e) => {\n e.preventDefault();\n e.stopPropagation();\n onLineDoubleClick?.({ id: line.$id, edge });\n }\n : undefined\n }\n style={{ cursor: line.cursor }}\n >\n {line.interactable && (\n <path\n // This `path` is made for expanding interaction area of graph lines.\n d={d}\n fill=\"none\"\n stroke=\"transparent\"\n strokeWidth={interactStrokeWidth}\n />\n )}\n <path\n ref={(element) => linePaths.set(line.$id, element)}\n stroke={strokeColor}\n strokeWidth={strokeWidth}\n d={d}\n fill=\"none\"\n markerStart={markerStart}\n markerEnd={markerEnd}\n mask={mask}\n />\n <path\n stroke=\"var(--palette-blue-3)\"\n strokeWidth={strokeWidth}\n d={d}\n fill=\"none\"\n className=\"active-bg\"\n markerStart={`url(#${activeLineMarkerPrefix}start)`}\n markerEnd={`url(#${activeLineMarkerPrefix}end)`}\n mask={mask}\n />\n </g>\n );\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ReactUseBrick } from \"@next-core/react-runtime\";\nimport { checkIfByTransform } from \"@next-core/runtime\";\nimport type {\n DiagramEdge,\n LineLabelConf,\n // PositionTuple,\n RefRepository,\n LineLabel,\n TextOptions,\n} from \"./interfaces\";\n\nexport interface LineLabelComponentGroupProps {\n labels?: LineLabel[];\n onRendered?: (refRepository: RefRepository | null) => void;\n}\n\nexport function LineLabelComponentGroup({\n labels,\n onRendered,\n}: LineLabelComponentGroupProps): JSX.Element {\n const [rendered, setRendered] = useState(false);\n const [renderedIds, setRenderedIds] = useState<string[]>([]);\n const refRepository = useMemo<RefRepository>(() => new Map(), []);\n\n const handleRenderer = useCallback(\n (id: string, element: HTMLElement | null) => {\n if (element) {\n refRepository.set(id, element);\n }\n setRenderedIds((previous) =>\n previous.includes(id) ? previous : previous.concat(id)\n );\n },\n [refRepository]\n );\n\n const handleUnmount = useCallback(\n (id: string) => {\n setRenderedIds((previous) => {\n const index = previous.indexOf(id);\n return index === -1\n ? previous\n : previous.slice(0, index).concat(previous.slice(index + 1));\n });\n refRepository.delete(id);\n },\n [refRepository]\n );\n\n useEffect(() => {\n // All nodes have been rendered.\n setRendered(!labels?.some((label) => !renderedIds.includes(label.id)));\n }, [labels, renderedIds]);\n\n useEffect(\n () => {\n onRendered?.(rendered ? refRepository : null);\n },\n // Dot not re-run effect when `onRendered` changed.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [/* onRendered, */ refRepository, rendered]\n );\n\n return (\n <React.Fragment>\n {labels?.map(({ text, label, /* position, */ id, edge }) =>\n label ? (\n <div\n key={id}\n className=\"line-label\"\n // style={{\n // left: position[0],\n // top: position[1],\n // }}\n >\n <LineLabelComponent\n id={id}\n edge={edge}\n label={label}\n onRendered={handleRenderer}\n onUnmount={handleUnmount}\n />\n </div>\n ) : (\n <LineTextComponent\n key={id}\n id={id}\n text={text!}\n // position={position}\n onRendered={handleRenderer}\n />\n )\n )}\n </React.Fragment>\n );\n}\n\nexport interface LineTextComponentProps {\n id: string;\n text: TextOptions;\n // position: PositionTuple;\n onRendered?: (id: string, element: HTMLElement | null) => void;\n // onUnmount?: (id: string) => void;\n}\n\nexport function LineTextComponent({\n id,\n text,\n // position,\n onRendered /* , onUnmount */,\n}: LineTextComponentProps): JSX.Element {\n const refCallback = useCallback(\n (element: HTMLDivElement) => {\n onRendered?.(id, element);\n },\n [id, onRendered]\n );\n\n return (\n <div\n className=\"line-label\"\n ref={refCallback}\n // style={{\n // left: position[0],\n // top: position[1],\n // ...text!.style,\n // }}\n style={text.style}\n >\n {text!.content}\n </div>\n );\n}\n\n// export const LineLabelComponentGroup = React.memo(LegacyLineLabelComponentGroup);\n\nexport interface LineLabelComponentProps {\n id: string;\n edge: DiagramEdge;\n label: LineLabelConf;\n onRendered?: (id: string, element: HTMLElement | null) => void;\n onUnmount?: (id: string) => void;\n}\n\nexport function LineLabelComponent({\n id,\n edge,\n label,\n onRendered,\n onUnmount,\n}: LineLabelComponentProps): JSX.Element | null {\n const useBrick = useMemo(\n () => (checkIfByTransform(label, { edge }) ? label.useBrick : null),\n [edge, label]\n );\n\n const memoizedData = useMemo(() => ({ edge }), [edge]);\n\n useEffect(() => {\n if (!useBrick) {\n // Keep the same time delay for reporting rendered.\n setTimeout(() => {\n onRendered?.(id, null);\n });\n }\n }, [id, onRendered, useBrick]);\n\n useEffect(\n () => {\n return () => {\n onUnmount?.(id);\n };\n },\n // Only unmount once\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n const refCallback = useCallback(\n (element: HTMLElement | null) => {\n if (element) {\n // Todo: correctly wait for `useBrick` in v3 to be rendered (after layout)\n // Wait a macro task to let `useBrick` to be rendered.\n setTimeout(() => {\n onRendered?.(id, element.parentElement);\n });\n }\n },\n [id, onRendered]\n );\n\n const ignoredCallback = useCallback(() => {\n setTimeout(() => {\n onRendered?.(id, null);\n });\n }, [id, onRendered]);\n\n if (!useBrick) {\n return null;\n }\n\n return (\n <ReactUseBrick\n refCallback={refCallback}\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore For v3 only\n ignoredCallback={ignoredCallback}\n useBrick={useBrick}\n data={memoizedData}\n />\n );\n}\n","import React from \"react\";\nimport type { RenderedLineLabel, SimpleRect } from \"./interfaces\";\n\nexport interface LineMaskComponentProps {\n maskPrefix: string;\n lineId: string;\n rects: SimpleRect[];\n renderedLineLabels: RenderedLineLabel[];\n}\n\nexport function LineMaskComponent({\n lineId,\n rects,\n maskPrefix,\n renderedLineLabels,\n}: LineMaskComponentProps): JSX.Element | null {\n const lineText = renderedLineLabels.find(\n (item) => item.lineId === lineId && item.placement === \"center\"\n );\n // istanbul ignore next\n if (!lineText) {\n return null;\n }\n const { lineRect } = lineText;\n const bgRect = getRectWithPadding(lineRect, 1000);\n return (\n <mask\n id={`${maskPrefix}${lineId}`}\n x={bgRect.left}\n y={bgRect.top}\n width={bgRect.width}\n height={bgRect.height}\n >\n <rect\n x={bgRect.left}\n y={bgRect.top}\n width={bgRect.width}\n height={bgRect.height}\n // Everything under a white pixel will be visible\n fill=\"white\"\n />\n {rects.map((rect, index) => (\n <rect\n key={index}\n x={rect.left}\n y={rect.top}\n width={rect.width}\n height={rect.height}\n // Everything under a black pixel will be invisible\n fill=\"black\"\n />\n ))}\n </mask>\n );\n}\n\nfunction getRectWithPadding(rect: SimpleRect, padding: number): SimpleRect {\n return {\n left: rect.left - padding,\n top: rect.top - padding,\n width: rect.width + padding * 2,\n height: rect.height + padding * 2,\n };\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ReactUseBrick } from \"@next-core/react-runtime\";\nimport type {\n DiagramNode,\n DiagramNodeId,\n NodeBrickConf,\n RefRepository,\n} from \"./interfaces\";\nimport { findNodeBrick } from \"./processors/findNodeBrick\";\n\nexport interface NodeComponentGroupProps {\n nodes?: DiagramNode[];\n nodeBricks?: NodeBrickConf[];\n onRendered?: (refRepository: RefRepository | null) => void;\n}\n\nexport function NodeComponentGroup({\n nodes,\n nodeBricks,\n onRendered,\n}: NodeComponentGroupProps): JSX.Element {\n const [rendered, setRendered] = useState(false);\n const [renderedIds, setRenderedIds] = useState<DiagramNodeId[]>([]);\n const refRepository = useMemo<RefRepository>(() => new Map(), []);\n\n const handleRenderer = useCallback(\n (id: DiagramNodeId, element: HTMLElement | null) => {\n if (element) {\n refRepository.set(id, element);\n }\n setRenderedIds((previous) =>\n previous.includes(id) ? previous : previous.concat(id)\n );\n },\n [refRepository]\n );\n\n const handleUnmount = useCallback(\n (id: DiagramNodeId) => {\n setRenderedIds((previous) => {\n const index = previous.indexOf(id);\n return index === -1\n ? previous\n : previous.slice(0, index).concat(previous.slice(index + 1));\n });\n refRepository.delete(id);\n },\n [refRepository]\n );\n\n useEffect(() => {\n // All nodes have been rendered.\n setRendered(!nodes?.some((node) => !renderedIds.includes(node.id)));\n }, [nodes, renderedIds]);\n\n useEffect(\n () => {\n onRendered?.(rendered ? refRepository : null);\n },\n // Dot not re-run effect when `onRendered` changed.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [/* onRendered, */ refRepository, rendered]\n );\n\n return (\n <React.Fragment>\n {nodes?.map((node) => (\n <div key={node.id} className=\"node\">\n <NodeComponent\n nodeBricks={nodeBricks}\n node={node}\n onRendered={handleRenderer}\n onUnmount={handleUnmount}\n />\n </div>\n ))}\n </React.Fragment>\n );\n}\n\nexport interface NodeComponentProps {\n node: DiagramNode;\n nodeBricks?: NodeBrickConf[];\n onRendered?: (id: DiagramNodeId, element: HTMLElement | null) => void;\n onUnmount?: (id: DiagramNodeId) => void;\n}\n\nexport function NodeComponent({\n node,\n nodeBricks,\n onRendered,\n onUnmount,\n}: NodeComponentProps): JSX.Element | null {\n const useBrick = useMemo(\n () => findNodeBrick(node, nodeBricks)?.useBrick,\n [node, nodeBricks]\n );\n const memoizedData = useMemo(() => ({ node }), [node]);\n\n useEffect(() => {\n if (!useBrick) {\n // Keep the same time delay for reporting rendered.\n setTimeout(() => {\n onRendered?.(node.id, null);\n });\n }\n }, [node.id, onRendered, useBrick]);\n\n useEffect(\n () => {\n return () => {\n onUnmount?.(node.id);\n };\n },\n // Only unmount once\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n const refCallback = useCallback(\n (element: HTMLElement | null) => {\n if (element) {\n // Todo: correctly wait for `useBrick` in v3 to be rendered (after layout)\n // Wait a macro task to let `useBrick` to be rendered.\n setTimeout(() => {\n onRendered?.(node.id, element);\n });\n }\n },\n [node.id, onRendered]\n );\n\n const ignoredCallback = useCallback(() => {\n setTimeout(() => {\n onRendered?.(node.id, null);\n });\n }, [node.id, onRendered]);\n\n if (!useBrick) {\n return null;\n }\n\n return (\n <ReactUseBrick\n refCallback={refCallback}\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore For v3 only\n ignoredCallback={ignoredCallback}\n useBrick={useBrick}\n data={memoizedData}\n />\n );\n}\n","import { checkIfByTransform } from \"@next-core/runtime\";\nimport { NodeBrickConf, DiagramNode } from \"../interfaces\";\n\nexport function findNodeBrick(\n node: DiagramNode,\n nodeBricks: NodeBrickConf[] | undefined\n): NodeBrickConf | undefined {\n return nodeBricks?.find((item) => {\n if (item.nodeType) {\n return ([] as unknown[]).concat(item.nodeType).includes(node.type);\n }\n return checkIfByTransform(item, { node });\n });\n}\n","export const DEFAULT_LINE_STROKE_COLOR = \"var(--palette-gray-5)\";\nexport const DEFAULT_LINE_STROKE_WIDTH = 1;\nexport const DEFAULT_LINE_CURVE_TYPE = \"curveBasis\";\nexport const DEFAULT_LINE_INTERACT_STROKE_WIDTH = 20;\nexport const DEFAULT_SCALE_RANGE_MIN = 0.5;\nexport const DEFAULT_SCALE_RANGE_MAX = 2;\n","import type { FullRectTuple, RefRepository, RenderedNode } from \"../interfaces\";\n\nexport function adjustNodesSize(\n nodes: RenderedNode[],\n nodesRefRepository: RefRepository,\n nodePaddings: FullRectTuple\n) {\n for (const node of nodes) {\n const element = nodesRefRepository.get(node.id);\n node.width =\n Math.max(element?.offsetWidth ?? 0, 10) +\n nodePaddings[1] +\n nodePaddings[3];\n node.height =\n Math.max(element?.offsetHeight ?? 0, 10) +\n nodePaddings[0] +\n nodePaddings[2];\n }\n}\n","import type { FullRectTuple, RefRepository, RenderedNode } from \"../interfaces\";\n\nexport function adjustNodesPosition(\n nodes: RenderedNode[],\n nodesRefRepository: RefRepository,\n nodePaddings: FullRectTuple\n) {\n for (const node of nodes) {\n const x = node.x - node.width / 2 + nodePaddings[3];\n const y = node.y - node.height / 2 + nodePaddings[0];\n\n const nodeContainer = nodesRefRepository.get(node.id)?.parentElement;\n if (nodeContainer) {\n nodeContainer.style.left = `${x}px`;\n nodeContainer.style.top = `${y}px`;\n nodeContainer.style.visibility = \"visible\";\n }\n }\n}\n","// istanbul ignore file: experimental\nimport type {\n DiagramEdge,\n LabelSize,\n RefRepository,\n RenderedEdge,\n} from \"../interfaces\";\n\nexport function getRenderedEdges(\n edges: DiagramEdge[] | undefined,\n {\n normalizedLinesMap,\n lineLabelsRefRepository,\n }: {\n normalizedLinesMap: WeakMap<DiagramEdge, string>;\n lineLabelsRefRepository: RefRepository;\n }\n) {\n return (\n edges?.map<RenderedEdge>((edge) => {\n const lineId = normalizedLinesMap.get(edge);\n const labelSize: LabelSize = {};\n if (lineId) {\n for (const placement of [/* \"center\", */ \"start\", \"end\"] as const) {\n const element = lineLabelsRefRepository.get(`${lineId}-${placement}`);\n if (element) {\n labelSize[placement] = [element.offsetWidth, element.offsetHeight];\n }\n }\n }\n\n return {\n data: edge,\n labelSize,\n };\n }) ?? []\n );\n}\n","// istanbul ignore file: experimental\nimport {\n forceSimulation,\n forceLink,\n forceCollide,\n forceManyBody,\n forceX,\n forceY,\n type Simulation,\n type SimulationNodeDatum,\n type SimulationLinkDatum,\n} from \"d3-force\";\nimport { pick } from \"lodash\";\nimport type {\n DiagramEdge,\n DiagramNode,\n ForceCollideOptions,\n LayoutOptionsForce,\n RenderedNode,\n UnifiedGraph,\n UserViewNodesMap,\n} from \"../interfaces\";\nimport { adjustNodesSize } from \"./adjustNodesSize\";\nimport { adjustNodesPosition } from \"./adjustNodesPosition\";\nimport { extractPartialRectTuple } from \"./extractPartialRectTuple\";\nimport { getRenderedEdges } from \"./getRenderedEdges\";\n\ninterface NormalNode extends SimulationNodeDatum {\n dummy?: false;\n id: string;\n data: DiagramNode;\n width: number;\n height: number;\n}\n\ninterface DummyNode extends SimulationNodeDatum {\n dummy: true;\n id: string;\n}\n\ntype ForceNode = NormalNode | DummyNode;\n\ntype ForceLink = SimulationLinkDatum<ForceNode> & {\n dummy?: boolean;\n};\n\nexport function getForceGraph(\n previousGraph: UnifiedGraph | null,\n nodes: DiagramNode[] | undefined,\n edges: DiagramEdge[] | undefined,\n userViewNodesMap: UserViewNodesMap | null,\n forceLayoutOptions: LayoutOptionsForce | undefined\n): UnifiedGraph {\n const { nodePadding, dummyNodesOnEdges, collide } = {\n nodePadding: 0,\n dummyNodesOnEdges: 0,\n ...pick(forceLayoutOptions, [\"nodePadding\", \"dummyNodesOnEdges\"]),\n collide:\n forceLayoutOptions?.collide !== false\n ? ({\n dummyRadius: 1,\n radiusDiff: 5,\n strength: 1,\n iterations: 1,\n ...(forceLayoutOptions?.collide === true\n ? null\n : (forceLayoutOptions?.collide as ForceCollideOptions)),\n } as Required<ForceCollideOptions>)\n : (false as const),\n };\n const nodePaddings = extractPartialRectTuple(nodePadding);\n\n const renderedNodes: RenderedNode[] = [];\n for (const node of nodes ?? []) {\n const previousNode = previousGraph?.getNode(node.id);\n if (previousNode?.data === node) {\n renderedNodes.push(previousNode);\n } else {\n const renderedNode = {\n id: node.id,\n data: node,\n } as RenderedNode & { fx?: number; fy?: number };\n const userViewNode = userViewNodesMap?.get(node.id);\n if (userViewNode) {\n renderedNode.fx = userViewNode.x;\n renderedNode.fy = userViewNode.y;\n }\n renderedNodes.push(renderedNode);\n }\n }\n\n function getNode(id: string) {\n return renderedNodes.find((node) => node.data.id === id);\n }\n\n return {\n layout: \"force\",\n getNode,\n applyLayout({\n nodesRefRepository,\n lineLabelsRefRepository,\n normalizedLinesMap,\n }) {\n if (renderedNodes.length === 0) {\n return null;\n }\n\n adjustNodesSize(renderedNodes, nodesRefRepository, nodePaddings);\n\n const forceNodes = renderedNodes.slice();\n const forceLinks: ForceLink[] = [];\n\n for (const edge of edges ?? []) {\n forceLinks.push({ ...edge });\n if (dummyNodesOnEdges > 0) {\n forceNodes.push(\n ...(getDummyNodes(\n edge,\n dummyNodesOnEdges\n ) as Partial<RenderedNode>[] as RenderedNode[])\n );\n forceLinks.push(...getDummyEdges(edge, dummyNodesOnEdges));\n }\n }\n\n const linkSimulation = forceLink<ForceNode, ForceLink>(forceLinks).id(\n (d) => d.id\n );\n\n if (dummyNodesOnEdges > 0) {\n linkSimulation\n .distance((l) => (l.dummy ? 30 / (dummyNodesOnEdges + 1) : 30))\n .strength((l) => (l.dummy ? 0.5 : 1));\n }\n\n const simulation = forceSimulation<ForceNode>(forceNodes)\n .force(\"link\", linkSimulation)\n .force(\"x\", forceX())\n .force(\"y\", forceY())\n .force(\"charge\", forceManyBody());\n\n if (collide) {\n simulation.force(\n \"collide\",\n forceCollide<ForceNode>()\n .radius((d) =>\n d.dummy\n ? collide.dummyRadius\n : Math.sqrt(d.width ** 2 + d.height ** 2) / 2 +\n collide.radiusDiff\n )\n .strength(collide.strength)\n .iterations(collide.iterations)\n );\n }\n\n simulation.stop();\n manuallyTickToTheEnd(simulation);\n\n adjustNodesPosition(renderedNodes, nodesRefRepository, nodePaddings);\n\n const renderedEdges = getRenderedEdges(edges, {\n normalizedLinesMap,\n lineLabelsRefRepository,\n });\n\n return { nodes: renderedNodes, edges: renderedEdges };\n },\n };\n}\n\nfunction manuallyTickToTheEnd(\n simulation: Simulation<ForceNode, ForceLink>\n): void {\n // Manually tick to the end.\n simulation.tick(\n Math.ceil(\n Math.log(simulation.alphaMin()) / Math.log(1 - simulation.alphaDecay())\n )\n );\n}\n\nfunction getDummyNodes(edge: DiagramEdge, count: number): DummyNode[] {\n return new Array(count).fill(null).map<DummyNode>((v, i) => ({\n dummy: true,\n id: `$dummy-${edge.source}-${edge.target}-${i}`,\n }));\n}\n\nfunction getDummyEdges(edge: DiagramEdge, count: number): ForceLink[] {\n return new Array(count + 1).fill(null).map<ForceLink>((v, i) => ({\n dummy: true,\n source:\n i === 0 ? edge.source : `$dummy-${edge.source}-${edge.target}-${i - 1}`,\n target:\n i === count ? edge.target : `$dummy-${edge.source}-${edge.target}-${i}`,\n }));\n}\n","import { useEffect, useState } from \"react\";\nimport type {\n DiagramEdge,\n DiagramNode,\n LayoutOptions,\n LayoutOptionsDagre,\n LayoutOptionsForce,\n ManualLayoutStatus,\n NodeMovement,\n RefRepository,\n RenderedDiagram,\n UnifiedGraph,\n UserViewNodesMap,\n} from \"../interfaces\";\nimport { getDagreGraph } from \"../processors/getDagreGraph\";\nimport { getForceGraph } from \"../processors/getForceGraph\";\nimport { getManualGraph } from \"../processors/getManualGraph\";\n\nexport function useRenderedDiagram({\n layout: originalLayout,\n nodes,\n edges,\n manualLayoutStatus,\n userViewReady,\n userViewNodesMap,\n nodeMovement,\n nodesRefRepository,\n lineLabelsRefRepository,\n normalizedLinesMap,\n nodesRenderId,\n lineLabelsRenderId,\n layoutOptions,\n}: {\n layout: \"dagre\" | \"force\" | undefined;\n nodes: DiagramNode[] | undefined;\n edges: DiagramEdge[] | undefined;\n manualLayoutStatus: ManualLayoutStatus;\n userViewReady: boolean;\n userViewNodesMap: UserViewNodesMap | null;\n nodeMovement: NodeMovement | null;\n nodesRefRepository: RefRepository | null;\n lineLabelsRefRepository: RefRepository | null;\n normalizedLinesMap: WeakMap<DiagramEdge, string>;\n nodesRenderId: number;\n lineLabelsRenderId: number;\n layoutOptions?: LayoutOptions;\n}) {\n const layout = manualLayoutStatus === \"initial\" ? originalLayout : \"manual\";\n const [graph, setGraph] = useState<UnifiedGraph | null>(null);\n\n const [renderedDiagram, setRenderedDiagram] = useState<RenderedDiagram>({\n nodes: [],\n edges: [],\n });\n\n useEffect(() => {\n if (!userViewReady) {\n return;\n }\n setGraph((previousGraph) =>\n layout === \"dagre\"\n ? getDagreGraph(\n previousGraph,\n nodes,\n edges,\n layoutOptions as LayoutOptionsDagre\n )\n : layout === \"force\"\n ? getForceGraph(\n previousGraph,\n nodes,\n edges,\n userViewNodesMap,\n layoutOptions as LayoutOptionsForce\n )\n : layout === \"manual\"\n ? getManualGraph(previousGraph, nodes, edges, layoutOptions)\n : null\n );\n }, [edges, nodes, layout, layoutOptions, userViewReady, userViewNodesMap]);\n\n useEffect(() => {\n if (\n !nodesRefRepository ||\n !lineLabelsRefRepository ||\n layout !== graph?.layout\n ) {\n return;\n }\n const renderedDiagram = graph?.applyLayout({\n manualLayoutStatus,\n nodesRefRepository,\n lineLabelsRefRepository,\n normalizedLinesMap,\n nodeMovement,\n });\n if (renderedDiagram) {\n setRenderedDiagram(renderedDiagram);\n }\n }, [\n layout,\n manualLayoutStatus,\n graph,\n nodeMovement,\n nodesRefRepository,\n lineLabelsRefRepository,\n nodesRenderId,\n lineLabelsRenderId,\n normalizedLinesMap,\n ]);\n\n return renderedDiagram;\n}\n","import dagre from \"@dagrejs/dagre\";\nimport { pick } from \"lodash\";\nimport type {\n DiagramEdge,\n DiagramNode,\n LayoutOptionsDagre,\n RenderedEdge,\n RenderedNode,\n UnifiedGraph,\n} from \"../interfaces\";\nimport { adjustNodesSize } from \"./adjustNodesSize\";\nimport { adjustNodesPosition } from \"./adjustNodesPosition\";\nimport { extractPartialRectTuple } from \"./extractPartialRectTuple\";\n\nexport function getDagreGraph(\n previousGraph: UnifiedGraph | null,\n nodes: DiagramNode[] | undefined,\n edges: DiagramEdge[] | undefined,\n dagreLayoutOptions: LayoutOptionsDagre | undefined\n): UnifiedGraph {\n const { nodePadding, ...dagreGraphOptions } = {\n nodePadding: 0,\n rankdir: \"TB\",\n ranksep: 50,\n edgesep: 10,\n nodesep: 50,\n // align: undefined,\n ...pick(dagreLayoutOptions, [\n \"nodePadding\",\n \"rankdir\",\n \"ranksep\",\n \"edgesep\",\n \"nodesep\",\n \"align\",\n ]),\n };\n const nodePaddings = extractPartialRectTuple(nodePadding);\n\n // Create a new directed graph\n const graph = new dagre.graphlib.Graph<RenderedNode>();\n\n // Set an object for the graph label\n graph.setGraph(dagreGraphOptions);\n\n // Default to assigning a new object as a label for each new edge.\n graph.setDefaultEdgeLabel(function () {\n return {};\n });\n\n for (const node of nodes ?? []) {\n const previousNode = previousGraph?.getNode(node.id);\n graph.setNode(\n node.id,\n previousNode?.data === node\n ? previousNode\n : {\n id: node.id,\n data: node,\n }\n );\n }\n\n for (const edge of edges ?? []) {\n graph.setEdge(edge.source, edge.target, { data: edge });\n }\n\n return {\n layout: \"dagre\",\n getNode(id) {\n return graph.node(id);\n },\n applyLayout({\n nodesRefRepository,\n lineLabelsRefRepository,\n normalizedLinesMap,\n }) {\n const renderedNodes: RenderedNode[] = [];\n for (const id of graph.nodes()) {\n const node = graph.node(id);\n if (node) {\n renderedNodes.push(node);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Diagram node not found: %s\", id);\n }\n }\n\n if (renderedNodes.length === 0) {\n return null;\n }\n\n adjustNodesSize(renderedNodes, nodesRefRepository, nodePaddings);\n\n const renderedEdges = graph\n .edges()\n .map((e) => graph.edge(e) as RenderedEdge);\n for (const edge of renderedEdges) {\n const lineId = normalizedLinesMap.get(edge.data);\n if (lineId) {\n for (const placement of [\"center\", \"start\", \"end\"] as const) {\n const element = lineLabelsRefRepository.get(\n `${lineId}-${placement}`\n );\n if (element) {\n const { offsetWidth, offsetHeight } = element;\n if (placement === \"center\") {\n edge.labelpos = \"c\";\n edge.width = offsetWidth;\n edge.height = offsetHeight;\n }\n edge.labelSize ??= {};\n edge.labelSize[placement] = [offsetWidth, offsetHeight];\n }\n }\n }\n }\n dagre.layout(graph);\n\n adjustNodesPosition(renderedNodes, nodesRefRepository, nodePaddings);\n\n return {\n nodes: renderedNodes,\n edges: renderedEdges,\n };\n },\n };\n}\n","// istanbul ignore file: experimental\nimport { pick } from \"lodash\";\nimport type {\n DiagramEdge,\n DiagramNode,\n BaseLayoutOptions,\n RenderedNode,\n UnifiedGraph,\n} from \"../interfaces\";\nimport { extractPartialRectTuple } from \"./extractPartialRectTuple\";\nimport { adjustNodesSize } from \"./adjustNodesSize\";\nimport { adjustNodesPosition } from \"./adjustNodesPosition\";\nimport { getRenderedEdges } from \"./getRenderedEdges\";\n\nexport function getManualGraph(\n previousGraph: UnifiedGraph | null,\n nodes: DiagramNode[] | undefined,\n edges: DiagramEdge[] | undefined,\n layoutOptions: BaseLayoutOptions | undefined\n): UnifiedGraph {\n const { nodePadding } = {\n nodePadding: 0,\n ...pick(layoutOptions, [\"nodePadding\"]),\n };\n const nodePaddings = extractPartialRectTuple(nodePadding);\n\n const renderedNodes: RenderedNode[] = [];\n for (const node of nodes ?? []) {\n const previousNode = previousGraph?.getNode(node.id);\n if (previousNode?.data === node) {\n renderedNodes.push(previousNode);\n previousNode.x0 = previousNode.x;\n previousNode.y0 = previousNode.y;\n } else {\n renderedNodes.push({\n id: node.id,\n data: node,\n } as RenderedNode);\n }\n }\n\n function getNode(id: string) {\n return renderedNodes.find((node) => node.data.id === id);\n }\n\n let movedNode: RenderedNode | undefined;\n\n return {\n layout: \"manual\",\n getNode,\n applyLayout({\n manualLayoutStatus,\n nodesRefRepository,\n lineLabelsRefRepository,\n normalizedLinesMap,\n nodeMovement,\n }) {\n if (renderedNodes.length === 0) {\n return null;\n }\n\n adjustNodesSize(renderedNodes, nodesRefRepository, nodePaddings);\n\n if (nodeMovement) {\n movedNode = renderedNodes.find((node) => node.id === nodeMovement.id);\n if (movedNode) {\n movedNode.x = (movedNode.x0 ?? 0) + nodeMovement.move[0];\n movedNode.y = (movedNode.y0 ?? 0) + nodeMovement.move[1];\n }\n }\n\n if (manualLayoutStatus === \"finished\" && movedNode) {\n // Set x0/y0 after finished manual layout\n movedNode.x0 = movedNode.x;\n movedNode.y0 = movedNode.y;\n }\n\n adjustNodesPosition(renderedNodes, nodesRefRepository, nodePaddings);\n\n const renderedEdges = getRenderedEdges(edges, {\n normalizedLinesMap,\n lineLabelsRefRepository,\n });\n\n return { nodes: renderedNodes, edges: renderedEdges };\n },\n };\n}\n","import _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport { http } from \"@next-core/http\";\n/**\n * @description 搜索实例V3 (支持多属性排序)\n * @endpoint POST /v3/object/:objectId/instance/_search\n */\nexport var InstanceApi_postSearchV3 = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (objectId, data, options) {\n return (/**! @contract easyops.api.cmdb.instance.PostSearchV3@1.1.0 */(yield http.post(\"api/gateway/cmdb.instance.PostSearchV3/v3/object/\".concat(objectId, \"/instance/_search\"), data, options)).data\n );\n });\n return function InstanceApi_postSearchV3(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n };\n}();\n//# sourceMappingURL=postSearchV3.js.map","import _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport { http } from \"@next-core/http\";\n\n/** 要更新的实例 */\n\n/**\n * @description 更新实例V2 (支持关系更新)\n * @endpoint PUT /v2/object/:objectId/instance/:instanceId\n */\nexport var InstanceApi_updateInstanceV2 = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (objectId, instanceId, data, options) {\n return (/**! @contract easyops.api.cmdb.instance.UpdateInstanceV2@1.0.0 */(yield http.put(\"api/gateway/cmdb.instance.UpdateInstanceV2/v2/object/\".concat(objectId, \"/instance/\").concat(instanceId), data, options)).data\n );\n });\n return function InstanceApi_updateInstanceV2(_x, _x2, _x3, _x4) {\n return _ref.apply(this, arguments);\n };\n}();\n//# sourceMappingURL=updateInstanceV2.js.map","import _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport { http } from \"@next-core/http\";\n\n/** 创建实例 */\n\n/**\n * @description 创建实例 (body为实例信息,字段限制参考模型定义,支持关系创建)\n * @endpoint POST /v2/object/:objectId/instance\n */\nexport var InstanceApi_createInstance = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (objectId, data, options) {\n return (/**! @contract easyops.api.cmdb.instance.CreateInstance@1.1.0 */(yield http.post(\"api/gateway/cmdb.instance.CreateInstance/v2/object/\".concat(objectId, \"/instance\"), data, options)).data\n );\n });\n return function InstanceApi_createInstance(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n };\n}();\n//# sourceMappingURL=createInstance.js.map","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { handleHttpError } from \"@next-core/runtime\";\nimport {\n InstanceApi_postSearchV3,\n InstanceApi_updateInstanceV2,\n InstanceApi_createInstance,\n} from \"@next-api-sdk/cmdb-sdk\";\nimport { createAsyncQueue } from \"../processors/createAsyncQueue\";\nimport {\n NodeUserView,\n UserView,\n UserViewNodesMap,\n UserViewQuery,\n} from \"../interfaces\";\n\nconst USER_VIEW_MODEL_ID = \"GRAPH_USER_VIEW@EASYOPS\";\n\nexport interface UserViewHook {\n userViewReady: boolean;\n userViewNodesMap: UserViewNodesMap | null;\n saveUserView: (nodes: NodeUserView[]) => void;\n}\n\nexport function useUserView(query: UserViewQuery | undefined): UserViewHook {\n const [userViewReady, setUserViewReady] = useState(!query);\n const userViewIdRef = useRef<string>();\n const [userViewNodesMap, setUserViewNodesMap] =\n useState<UserViewNodesMap | null>(null);\n const queue = useMemo(() => createAsyncQueue(), []);\n\n useEffect(() => {\n async function getUserView(): Promise<void> {\n if (!query) {\n setUserViewReady(true);\n return;\n }\n const { namespace, key } = query;\n if (!(namespace && key)) {\n // eslint-disable-next-line no-console\n console.error(\"Namespace and key are required to save graph user view\");\n setUserViewReady(true);\n return;\n }\n try {\n const list = (\n await InstanceApi_postSearchV3(USER_VIEW_MODEL_ID, {\n fields: [\"nodes\"],\n query: {\n namespace: {\n $eq: namespace,\n },\n key: {\n $eq: key,\n },\n },\n page: 1,\n page_size: 30,\n })\n ).list as UserView[];\n if (list.length > 0) {\n const userView = list[0];\n const userViewNodesMap = new Map(\n userView.nodes?.map((node) => [node.id, node])\n );\n userViewIdRef.current = userView.instanceId;\n setUserViewNodesMap(userViewNodesMap);\n } else {\n setUserViewNodesMap(null);\n }\n } catch (error) {\n handleHttpError(error as Error);\n } finally {\n setUserViewReady(true);\n }\n }\n getUserView();\n }, [query]);\n\n const saveUserView = useCallback(\n (nodes: NodeUserView[]) => {\n const { namespace, key } = query ?? {};\n if (!(namespace && key)) {\n return;\n }\n queue(async () => {\n const userViewData = {\n namespace,\n key,\n nodes,\n };\n try {\n if (userViewIdRef.current) {\n await InstanceApi_updateInstanceV2(\n USER_VIEW_MODEL_ID,\n userViewIdRef.current,\n userViewData,\n {\n interceptorParams: {\n ignoreLoadingBar: true,\n },\n }\n );\n } else {\n const userView = await InstanceApi_createInstance(\n USER_VIEW_MODEL_ID,\n userViewData,\n {\n interceptorParams: {\n ignoreLoadingBar: true,\n },\n }\n );\n userViewIdRef.current = userView.instanceId;\n }\n } catch (error) {\n handleHttpError(error);\n }\n });\n },\n [query, queue]\n );\n\n return {\n userViewReady,\n userViewNodesMap,\n saveUserView,\n };\n}\n","type Task = (...args: unknown[]) => unknown;\ntype Queue = (task: Task) => Promise<void>;\n\nexport function createAsyncQueue(): Queue {\n let working = false;\n const waitingTasks: Task[] = [];\n return async function queue(task: Task) {\n waitingTasks.push(task);\n if (!working) {\n working = true;\n let nextTask: Task | undefined;\n while ((nextTask = waitingTasks.shift())) {\n try {\n await nextTask();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n }\n working = false;\n }\n };\n}\n","import type { RefRepository, RenderedLineLabel } from \"../interfaces\";\n\nexport function adjustLineLabels(\n renderedLineLabels: RenderedLineLabel[],\n lineLabelsRefRepository: RefRepository\n) {\n for (const {\n id,\n position,\n placement,\n angle,\n size: _size,\n } of renderedLineLabels) {\n const label = lineLabelsRefRepository.get(id);\n if (label) {\n label.style.left = `${position[0]}px`;\n label.style.top = `${position[1]}px`;\n label.style.visibility = \"visible\";\n // label.classList.add(placement);\n if (placement !== \"center\" && angle !== undefined) {\n const [width, height] = _size ?? [0, 0];\n // Get the numbered direction of the line\n //\n // \\ | /\n // \\ 5 | 6 /\n // 4 \\ | / 7\n // -----x-----\n // 3 / | \\ 0\n // / 2 | 1 \\\n // / | \\\n const tempDirection = Math.floor(\n ((angle < 0 ? Math.PI * 2 + angle : angle) / Math.PI) * 4\n );\n // Swap direction for end labels.\n const direction =\n placement === \"start\" ? tempDirection : (tempDirection + 4) % 8;\n const tangent = Math.tan(angle);\n const offsetAngle =\n angle + ((placement === \"start\" ? 1 : -1) * Math.PI) / 2;\n const offset = 2;\n const offsetSin = Math.sin(offsetAngle) * offset;\n const offsetCos = Math.cos(offsetAngle) * offset;\n let transform: string;\n switch (direction) {\n case 0:\n transform = `translate(0,${width * tangent + offsetSin}px)`;\n break;\n case 1:\n transform = `translate(${height / tangent - offsetCos}px,0)`;\n break;\n case 2:\n transform = `translate(calc(${\n height / tangent + offsetCos\n }px - 100%),0)`;\n break;\n case 3:\n transform = `translate(-100%,${-width * tangent - offsetSin}px)`;\n break;\n case 4:\n transform = `translate(-100%,calc(${\n -width * tangent + offsetSin\n }px - 100%))`;\n break;\n case 5:\n transform = `translate(calc(${\n -height / tangent - offsetCos\n }px - 100%),-100%)`;\n break;\n case 6:\n transform = `translate(${-height / tangent + offsetCos}px,-100%)`;\n break;\n default:\n transform = `translate(0,calc(${\n width * tangent - offsetSin\n }px - 100%))`;\n }\n label.style.transform = transform;\n }\n }\n }\n}\n","import type {\n LineMaskRects,\n RefRepository,\n RenderedLineLabel,\n} from \"../interfaces\";\n\nexport function getLineMaskRects(\n renderedLineLabels: RenderedLineLabel[],\n lineLabelsRefRepository: RefRepository\n) {\n const map: LineMaskRects = new Map();\n\n for (const { id, lineId, placement } of renderedLineLabels) {\n if (!lineLabelsRefRepository || placement !== \"center\") {\n continue;\n }\n const element = lineLabelsRefRepository.get(id);\n if (!element) {\n continue;\n }\n const { offsetWidth, offsetHeight } = element;\n // Do not mask out when the label takes no space.\n // istanbul ignore next\n if (\n process.env.NODE_ENV !== \"test\" &&\n (offsetWidth === 0 || offsetHeight === 0)\n ) {\n continue;\n }\n const padding = 3;\n // Currently no other rects\n map.set(lineId, [\n {\n left: element.offsetLeft - offsetWidth / 2 - padding,\n top: element.offsetTop - offsetHeight / 2 - padding,\n width: offsetWidth + padding * 2,\n height: offsetHeight + padding * 2,\n },\n ]);\n }\n\n return map;\n}\n","import type {\n LineLabelConf,\n RenderedLine,\n RenderedLineLabel,\n TextOptions,\n} from \"../interfaces\";\n\nexport function getRenderedLineLabels(\n previous: RenderedLineLabel[],\n renderedLines: RenderedLine[],\n linePaths: Map<string, SVGPathElement | null>\n) {\n if (previous.length === 0 && renderedLines.length === 0) {\n return previous;\n }\n return renderedLines.flatMap(\n ({ line: { text, label, $id }, edge, labelSize, angle }) => {\n const path = linePaths.get($id);\n if ((!text && !label) || !path || !path.getAttribute(\"d\")) {\n return [] as RenderedLineLabel[];\n }\n\n let key: \"label\" | \"text\";\n let list: LineLabelConf[] | TextOptions[];\n if (label) {\n key = \"label\";\n list = ([] as LineLabelConf[]).concat(label);\n } else {\n key = \"text\";\n list = ([] as TextOptions[]).concat(text!);\n }\n\n // istanbul ignore next\n const {\n x: left,\n y: top,\n width,\n height,\n } = process.env.NODE_ENV === \"test\"\n ? { x: 10, y: 20, width: 300, height: 400 }\n : path.getBBox();\n\n // istanbul ignore next\n const pathLength =\n process.env.NODE_ENV === \"test\" ? 50 : path.getTotalLength();\n\n return list.map<RenderedLineLabel>((item) => {\n const placement = item.placement ?? \"center\";\n const offset = 0;\n // istanbul ignore next\n const point =\n process.env.NODE_ENV === \"test\"\n ? { x: 50, y: 50 }\n : path.getPointAtLength(\n placement === \"start\"\n ? Math.min(offset, pathLength / 2)\n : placement === \"end\"\n ? Math.max(pathLength - offset, pathLength / 2)\n : pathLength / 2\n );\n\n return {\n [key as \"label\"]: item as LineLabelConf,\n edge,\n position: [point.x, point.y],\n lineRect: { left, top, width, height },\n id: `${$id}-${placement}`,\n lineId: $id,\n placement,\n angle,\n size: labelSize?.[placement],\n };\n });\n }\n );\n}\n","// istanbul ignore file: experimental\nimport type {\n DiagramEdge,\n Direction,\n NormalizedLine,\n RenderedEdge,\n RenderedLine,\n RenderedNode,\n} from \"../interfaces\";\nimport { curveLine } from \"../lines/curveLine\";\nimport { getDirectLinePoints } from \"../lines/getDirectLinePoints\";\nimport { getPolyLinePoints } from \"../lines/getPolyLinePoints\";\nimport { doTwoNodesOverlap } from \"./doTwoNodesOverlap\";\n\nexport function getRenderedLines(\n renderedEdges: RenderedEdge[],\n renderedNodes: RenderedNode[],\n normalizedLines: NormalizedLine[]\n): RenderedLine[] {\n const renderedEdgeMap = new WeakMap<DiagramEdge, RenderedEdge>();\n const renderedNodeMap = new Map<string, RenderedNode>();\n const relatedNodes = new Map<string, Set<RenderedNode>>();\n\n for (const renderedNode of renderedNodes) {\n renderedNodeMap.set(renderedNode.id, renderedNode);\n }\n\n for (const renderedEdge of renderedEdges) {\n const { data: edge } = renderedEdge;\n renderedEdgeMap.set(edge, renderedEdge);\n }\n\n let prepared = false;\n const prepareRelatedNodes = () => {\n if (prepared) {\n return;\n }\n prepared = true;\n\n const addRelatedNodes = (from: string, to: string) => {\n let relates = relatedNodes.get(from);\n if (!relates) {\n relatedNodes.set(from, (relates = new Set()));\n }\n const toNode = renderedNodeMap.get(to);\n if (toNode) {\n relates.add(toNode);\n }\n };\n\n for (const {\n data: { source, target },\n } of renderedEdges) {\n if (source !== target) {\n addRelatedNodes(source, target);\n addRelatedNodes(target, source);\n }\n }\n };\n\n return normalizedLines\n .map<RenderedLine | undefined>(({ line, edge, markers, ...rest }) => {\n const renderedEdge = renderedEdgeMap.get(edge);\n if (!renderedEdge) {\n return;\n }\n const startMarkerOffset =\n markers.find(\n (marker) =>\n marker.variant === \"default\" && marker.placement === \"start\"\n )?.offset ?? 0;\n const endMarkerOffset =\n markers.find(\n (marker) => marker.variant === \"default\" && marker.placement === \"end\"\n )?.offset ?? 0;\n let angle: number | undefined;\n\n let { points } = renderedEdge;\n // Only dagre graph will have pre-calculated line points\n if (!points) {\n const source = renderedNodeMap.get(edge.source);\n const target = renderedNodeMap.get(edge.target);\n\n if (source && target && source !== target) {\n if (line.type === \"polyline\") {\n if (\n !doTwoNodesOverlap(\n source,\n target,\n startMarkerOffset,\n endMarkerOffset\n )\n ) {\n prepareRelatedNodes();\n const sourceDirection = getDirection(\n source,\n target,\n startMarkerOffset\n );\n const targetDirection = getDirection(\n target,\n source,\n endMarkerOffset\n );\n const sourceRelates = getOrderedRelates(\n relatedNodes.get(edge.source) ?? [],\n source,\n sourceDirection,\n startMarkerOffset\n );\n const targetRelates = getOrderedRelates(\n relatedNodes.get(edge.target) ?? [],\n target,\n targetDirection,\n endMarkerOffset\n );\n\n const sourcePosition =\n (sourceRelates.indexOf(target) + 1) /\n (sourceRelates.length + 1);\n const targetPosition =\n (targetRelates.indexOf(source) + 1) /\n (targetRelates.length + 1);\n\n points = getPolyLinePoints(\n source,\n target,\n sourceDirection,\n targetDirection,\n sourcePosition,\n targetPosition\n );\n }\n } else {\n points = getDirectLinePoints(source, target);\n }\n\n if (points) {\n const start = points[0];\n const end = points[points.length - 1];\n angle = Math.atan2(end.y - start.y, end.x - start.x);\n }\n }\n }\n\n const d = curveLine(\n points,\n line.curveType,\n startMarkerOffset,\n endMarkerOffset\n );\n return {\n ...rest,\n markers,\n line,\n edge,\n d,\n angle,\n labelSize: renderedEdge.labelSize,\n };\n })\n .filter(Boolean) as RenderedLine[];\n}\n\nfunction getDirection(\n source: RenderedNode,\n target: RenderedNode,\n padding: number\n): Direction {\n // Add a padding to the source node to avoid the markers being warped.\n const sourceAngle = Math.atan2(\n source.height + padding * 2,\n source.width + padding * 2\n );\n const { x: sx, y: sy } = source;\n const { x: tx, y: ty } = target;\n const angle = Math.atan2(ty - sy, tx - sx);\n const fixedAngle = angle < 0 ? Math.PI * 2 + angle : angle;\n const direction = Math.floor((fixedAngle / Math.PI) * 2);\n switch (direction) {\n case 0:\n return fixedAngle < sourceAngle ? \"right\" : \"bottom\";\n case 1:\n return fixedAngle < Math.PI - sourceAngle ? \"bottom\" : \"left\";\n case 2:\n return fixedAngle < Math.PI + sourceAngle ? \"left\" : \"top\";\n default:\n return fixedAngle < Math.PI * 2 - sourceAngle ? \"top\" : \"right\";\n }\n}\n\nfunction getOrderedRelates(\n relates: Iterable<RenderedNode>,\n from: RenderedNode,\n direction: Direction,\n padding: number\n): RenderedNode[] {\n return [...relates]\n .filter((node) => getDirection(from, node, padding) === direction)\n .sort((a, b) => {\n const { x: ax, y: ay } = a;\n const { x: bx, y: by } = b;\n return direction === \"top\" || direction === \"bottom\" ? ax - bx : ay - by;\n });\n}\n","import { minBy } from \"lodash\";\nimport type {\n ActiveTarget,\n DiagramEdge,\n DiagramNode,\n RenderedNode,\n} from \"../interfaces\";\n\nexport type KeyboardAction =\n | KeyboardActionSwitchActiveNode\n | KeyboardActionDeleteNode\n | KeyboardActionDeleteEdge;\n\nexport interface KeyboardActionSwitchActiveNode {\n action: \"switch-active-node\";\n node?: DiagramNode;\n}\n\nexport interface KeyboardActionDeleteNode {\n action: \"delete-node\";\n node: DiagramNode;\n}\n\nexport interface KeyboardActionDeleteEdge {\n action: \"delete-edge\";\n edge: DiagramEdge;\n}\n\nexport function handleKeyboard(\n event: KeyboardEvent,\n {\n renderedNodes,\n activeTarget,\n }: {\n renderedNodes: RenderedNode[];\n activeTarget: ActiveTarget | null | undefined;\n }\n): KeyboardAction | undefined {\n const activeNode =\n activeTarget?.type === \"node\"\n ? renderedNodes.find((node) => node.id === activeTarget.nodeId)\n : undefined;\n const activeEdge =\n activeTarget?.type === \"edge\" ? activeTarget.edge : undefined;\n\n if (!activeNode && !activeEdge) {\n return;\n }\n\n const key =\n event.key ||\n /* istanbul ignore next: compatibility */ event.keyCode ||\n /* istanbul ignore next: compatibility */ event.which;\n let action: KeyboardAction[\"action\"] | undefined;\n let node: RenderedNode | undefined;\n let edge: DiagramEdge | undefined;\n\n switch (key) {\n case \"Backspace\":\n case 8:\n case \"Delete\":\n case 46: {\n if (activeNode) {\n action = \"delete-node\";\n node = activeNode;\n } else {\n action = \"delete-edge\";\n edge = activeEdge;\n }\n break;\n }\n default:\n if (!activeNode) {\n return;\n }\n switch (key) {\n case \"ArrowLeft\":\n case 37: {\n node = moveOnAxis(\"x\", renderedNodes, activeNode, -1);\n action = \"switch-active-node\";\n break;\n }\n case \"ArrowUp\":\n case 38: {\n node = moveOnAxis(\"y\", renderedNodes, activeNode, -1);\n action = \"switch-active-node\";\n break;\n }\n case \"ArrowRight\":\n case 39: {\n node = moveOnAxis(\"x\", renderedNodes, activeNode, 1);\n action = \"switch-active-node\";\n break;\n }\n case \"ArrowDown\":\n case 40: {\n node = moveOnAxis(\"y\", renderedNodes, activeNode, 1);\n action = \"switch-active-node\";\n break;\n }\n }\n }\n if (action) {\n event.preventDefault();\n event.stopPropagation();\n return { action, node: node?.data, edge } as KeyboardAction;\n }\n}\n\nfunction moveOnAxis(\n axis: \"x\" | \"y\",\n renderedNodes: RenderedNode[],\n activeNode: RenderedNode,\n direction: 1 | -1\n) {\n const oppositeAxis = axis === \"x\" ? \"y\" : \"x\";\n let diff: number;\n const candidates = renderedNodes.filter(\n (node) =>\n node !== activeNode &&\n ((diff = (node[axis] - activeNode[axis]) * direction), diff > 0) &&\n diff > Math.abs(activeNode[oppositeAxis] - node[oppositeAxis])\n );\n return minBy(\n candidates,\n (node) =>\n (activeNode[oppositeAxis] - node[oppositeAxis]) ** 2 +\n (activeNode[axis] - node[axis]) ** 2\n );\n}\n","import { checkIfByTransform, __secret_internals } from \"@next-core/runtime\";\nimport type React from \"react\";\nimport {\n DEFAULT_LINE_STROKE_COLOR,\n DEFAULT_LINE_STROKE_WIDTH,\n} from \"../constants\";\nimport type {\n ConnectLineState,\n DiagramNode,\n ConnectLineDetail,\n ConnectNodesOptions,\n PositionTuple,\n RefRepository,\n ActiveTarget,\n DragNodesOptions,\n NodesFilterOptions,\n NodeMovement,\n ManualLayoutStatus,\n} from \"../interfaces\";\n\nexport function handleNodesMouseDown(\n event: MouseEvent,\n {\n nodes,\n nodesRefRepository,\n connectNodes,\n dragNodes,\n scale,\n setConnectLineState,\n setConnectLineTo,\n setManualLayoutStatus,\n setNodeMovement,\n onSwitchActiveTarget,\n onNodesConnect,\n }: {\n nodes: DiagramNode[] | undefined;\n connectNodes: ConnectNodesOptions | undefined;\n dragNodes: DragNodesOptions | undefined;\n nodesRefRepository: RefRepository | null;\n scale: number;\n setConnectLineState: (\n value: React.SetStateAction<ConnectLineState | null>\n ) => void;\n setConnectLineTo: (value: React.SetStateAction<PositionTuple>) => void;\n setManualLayoutStatus: (\n value: React.SetStateAction<ManualLayoutStatus>\n ) => void;\n setNodeMovement: (value: React.SetStateAction<NodeMovement | null>) => void;\n onSwitchActiveTarget?(target: ActiveTarget | null): void;\n onNodesConnect?(detail: ConnectLineDetail): void;\n }\n) {\n function findNode(match: (element: HTMLElement) => boolean) {\n if (nodesRefRepository) {\n for (const [id, element] of nodesRefRepository) {\n if (match(element)) {\n return nodes?.find((node) => node.id === id);\n }\n }\n }\n }\n\n if (!connectNodes && !dragNodes) {\n return;\n }\n\n const source = findNode((element) =>\n element.contains(event.target as Node | null)\n );\n\n if (!source) {\n return;\n }\n\n if (!nodeMatched(connectNodes || dragNodes!, source)) {\n return;\n }\n\n event.stopPropagation();\n const from: PositionTuple = [event.clientX, event.clientY];\n\n if (connectNodes) {\n setConnectLineState({\n from,\n options: {\n strokeColor: DEFAULT_LINE_STROKE_COLOR,\n strokeWidth: DEFAULT_LINE_STROKE_WIDTH,\n ...(__secret_internals.legacyDoTransform(\n { source },\n connectNodes\n ) as ConnectNodesOptions),\n },\n });\n setConnectLineTo(from);\n\n onSwitchActiveTarget?.({ type: \"node\", nodeId: source.id });\n\n const onMouseMove = (e: MouseEvent) => {\n setConnectLineTo([e.clientX, e.clientY]);\n };\n const onMouseUp = (e: MouseEvent) => {\n document.removeEventListener(\"mousemove\", onMouseMove);\n document.removeEventListener(\"mouseup\", onMouseUp);\n setConnectLineState(null);\n const eventTargets = e.composedPath();\n const target = findNode((element) => eventTargets.includes(element));\n if (target && source !== target) {\n onNodesConnect?.({ source, target });\n }\n };\n document.addEventListener(\"mousemove\", onMouseMove);\n document.addEventListener(\"mouseup\", onMouseUp);\n return;\n }\n\n // Drag node\n onSwitchActiveTarget?.({ type: \"node\", nodeId: source.id });\n\n let moved = false;\n const onMouseMove = (e: MouseEvent) => {\n // Respect the scale\n const movement: PositionTuple = [\n (e.clientX - from[0]) / scale,\n (e.clientY - from[1]) / scale,\n ];\n if (!moved) {\n moved = movement[0] ** 2 + movement[1] ** 2 >= 9;\n if (moved) {\n setManualLayoutStatus(\"started\");\n }\n }\n if (moved) {\n setNodeMovement({ id: source.id, move: movement });\n }\n };\n const onMouseUp = () => {\n moved = false;\n document.removeEventListener(\"mousemove\", onMouseMove);\n document.removeEventListener(\"mouseup\", onMouseUp);\n setNodeMovement(null);\n setManualLayoutStatus(\"finished\");\n };\n document.addEventListener(\"mousemove\", onMouseMove);\n document.addEventListener(\"mouseup\", onMouseUp);\n}\n\nfunction nodeMatched(\n options: NodesFilterOptions,\n source: DiagramNode\n): boolean {\n return options.sourceType\n ? ([] as unknown[]).concat(options.sourceType).includes(source.type)\n : checkIfByTransform(options, { source });\n}\n","import { checkIfByTransform } from \"@next-core/runtime\";\nimport type { DiagramEdge, LineConf } from \"../interfaces\";\n\nexport function matchEdgeByFilter(\n edge: DiagramEdge,\n filter: LineConf\n): boolean {\n if (!filter) {\n return false;\n }\n if (filter.edgeType) {\n return ([] as string[]).concat(filter.edgeType).includes(edge.type!);\n }\n return checkIfByTransform(filter, { edge });\n}\n","import { findIndex, uniqueId } from \"lodash\";\nimport { __secret_internals } from \"@next-core/runtime\";\nimport type {\n DiagramEdge,\n LineConf,\n LineMarker,\n LineMarkerConf,\n LineMarkerType,\n NormalizedLine,\n NormalizedLineMarker,\n} from \"../interfaces\";\nimport { matchEdgeByFilter } from \"./matchEdgeByFilter\";\nimport {\n DEFAULT_LINE_CURVE_TYPE,\n DEFAULT_LINE_INTERACT_STROKE_WIDTH,\n DEFAULT_LINE_STROKE_COLOR,\n DEFAULT_LINE_STROKE_WIDTH,\n} from \"../constants\";\n\nexport function normalizeLinesAndMarkers(\n edges: DiagramEdge[] | undefined,\n lines: LineConf[] | undefined\n) {\n const normalizedLines: NormalizedLine[] = [];\n const normalizedLinesMap = new WeakMap<DiagramEdge, string>();\n const markers: LineMarker[] = [];\n for (const edge of edges ?? []) {\n const { label, ...restLineConf } =\n lines?.find((line) => matchEdgeByFilter(edge, line)) ?? {};\n\n const computedLineConf = __secret_internals.legacyDoTransform(\n { edge },\n restLineConf\n ) as LineConf | undefined;\n if (computedLineConf?.draw === false) {\n continue;\n }\n const id = uniqueId(\"line-\");\n const line: NormalizedLine[\"line\"] = {\n strokeColor: DEFAULT_LINE_STROKE_COLOR,\n strokeWidth: DEFAULT_LINE_STROKE_WIDTH,\n curveType:\n computedLineConf?.type === \"polyline\"\n ? \"curveLinear\"\n : DEFAULT_LINE_CURVE_TYPE,\n interactStrokeWidth: DEFAULT_LINE_INTERACT_STROKE_WIDTH,\n type: \"auto\",\n ...computedLineConf,\n label,\n $id: id,\n };\n normalizedLinesMap.set(edge, id);\n\n const normalizedMarkers: NormalizedLineMarker[] = [];\n\n const lineMarkers: LineMarkerConf[] =\n line.markers ?? (line.arrow ? [{ placement: \"end\", type: \"arrow\" }] : []);\n for (const marker of lineMarkers) {\n const { placement: _placement, type: _type } = marker;\n const placement = _placement ?? \"end\";\n\n let type: LineMarkerType;\n let offsetUnit: number;\n\n switch (_type) {\n case \"0..1\":\n case \"0..N\":\n offsetUnit = 21;\n type = _type;\n break;\n default:\n offsetUnit = 1;\n type = \"arrow\";\n }\n const offset = offsetUnit * line.strokeWidth;\n\n const index = addMarker({ type, strokeColor: line.strokeColor }, markers);\n normalizedMarkers.push({\n index,\n placement,\n type,\n variant: \"default\",\n offset,\n });\n\n const activeStrokeColor =\n line.overrides?.active?.strokeColor ?? line.strokeColor;\n const activeMarkerIndex = addMarker(\n { type, strokeColor: activeStrokeColor },\n markers\n );\n normalizedMarkers.push({\n index: activeMarkerIndex,\n placement,\n type,\n variant: \"active\",\n offset,\n });\n const activeRelatedStrokeColor =\n line.overrides?.activeRelated?.strokeColor ?? line.strokeColor;\n const activeRelatedMarkerIndex = addMarker(\n { type, strokeColor: activeRelatedStrokeColor },\n markers\n );\n normalizedMarkers.push({\n index: activeRelatedMarkerIndex,\n placement,\n type,\n variant: \"active-related\",\n offset,\n });\n }\n\n normalizedLines.push({\n line,\n markers: normalizedMarkers,\n edge,\n });\n }\n return {\n normalizedLines,\n normalizedLinesMap,\n markers,\n };\n}\n\nfunction addMarker(marker: LineMarker, markers: LineMarker[]): number {\n let markerIndex = findIndex(markers, marker);\n if (markerIndex === -1) {\n markerIndex = markers.push(marker) - 1;\n }\n return markerIndex;\n}\n","import type {\n ActiveTarget,\n ActiveTargetOfEdge,\n ActiveTargetOfNode,\n} from \"../interfaces\";\n\nexport function sameTarget(\n a: ActiveTarget | null | undefined,\n b: ActiveTarget | null | undefined\n): boolean {\n return a\n ? !!b &&\n a.type === b.type &&\n (a.type === \"node\"\n ? a.nodeId === (b as ActiveTargetOfNode).nodeId\n : a.edge.source === (b as ActiveTargetOfEdge).edge.source &&\n a.edge.target === (b as ActiveTargetOfEdge).edge.target)\n : !b;\n}\n","import type { RenderedNode, TransformLiteral } from \"../interfaces\";\n\nexport interface TransformToCenterOptions {\n canvasWidth: number;\n canvasHeight: number;\n scaleRange?: [min: number, max: number];\n}\n\nexport function transformToCenter(\n renderedNodes: RenderedNode[],\n { canvasWidth, canvasHeight, scaleRange }: TransformToCenterOptions\n): TransformLiteral {\n let left = Infinity;\n let top = Infinity;\n let right = -Infinity;\n let bottom = -Infinity;\n for (const node of renderedNodes) {\n const hw = node.width / 2;\n const hh = node.height / 2;\n const l = node.x - hw;\n const r = node.x + hw;\n const t = node.y - hh;\n const b = node.y + hh;\n if (l < left) {\n left = l;\n }\n if (r > right) {\n right = r;\n }\n if (t < top) {\n top = t;\n }\n if (b > bottom) {\n bottom = b;\n }\n }\n\n const width = right - left;\n const height = bottom - top;\n\n const scale =\n scaleRange && (width > canvasWidth || height > canvasHeight)\n ? Math.max(\n Math.min(canvasWidth / width, canvasHeight / height, scaleRange[1]),\n scaleRange[0]\n )\n : 1;\n\n const x = (canvasWidth - width * scale) / 2 - left * scale;\n const y = (canvasHeight - height * scale) / 2 - top * scale;\n\n return { x, y, k: scale };\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;width:100%;height:100%;overflow:hidden}:host([hidden]){display:none}*{box-sizing:border-box}.diagram{width:100%;height:100%;position:relative;opacity:0}.diagram:focus{outline:none}.lines,\n.line-labels,\n.nodes{position:absolute;top:0;left:0}.line-labels{opacity:0}.ready{opacity:1}.diagram.ready.pannable{cursor:grab}.diagram.pannable.grabbing{cursor:grabbing}.nodes,\n.lines{transform-origin:0 0}.node,\n.line-label{position:absolute;visibility:hidden}.line-label{transform:translate(-50%,-50%);white-space:pre-line;width:max-content;text-align:center;line-height:1}.lines{pointer-events:none}.line.interactable{pointer-events:auto;cursor:default}.connect-line{position:fixed;top:0;left:0;right:0;bottom:0;pointer-events:none}.connect-line:not(.connecting){display:none}.line:not(.active) .active-bg{display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n"],"names":["ConnectLineComponent","_ref","connectLineState","connectLineTo","markerPrefix","React","width","height","className","classNames","connecting","from","MarkerComponent","type","id","strokeColor","options","d","join","fill","stroke","strokeWidth","markerEnd","arrow","undefined","LineComponent","_line$overrides","_line$overrides2","line","edge","markers","linePaths","lineMaskRects","maskPrefix","activeLineMarkerPrefix","active","activeRelated","onLineClick","onLineDoubleClick","mask","has","$id","interactStrokeWidth","overrides","expectVariant","markerStart","marker","variant","placement","index","interactable","onClick","onDoubleClick","e","preventDefault","stopPropagation","style","cursor","ref","element","set","LineLabelComponentGroup","labels","onRendered","rendered","setRendered","useState","renderedIds","setRenderedIds","refRepository","useMemo","Map","handleRenderer","useCallback","previous","includes","concat","handleUnmount","indexOf","slice","delete","useEffect","some","label","map","_ref2","text","key","LineLabelComponent","onUnmount","LineTextComponent","_ref3","refCallback","content","_ref4","useBrick","checkIfByTransform","memoizedData","setTimeout","parentElement","ignoredCallback","ReactUseBrick","data","LineMaskComponent","lineId","rects","renderedLineLabels","lineText","find","item","lineRect","bgRect","padding","left","rect","top","x","y","NodeComponentGroup","nodes","nodeBricks","node","NodeComponent","_findNodeBrick","nodeType","findNodeBrick","DEFAULT_LINE_STROKE_COLOR","DEFAULT_LINE_STROKE_WIDTH","DEFAULT_LINE_CURVE_TYPE","DEFAULT_LINE_INTERACT_STROKE_WIDTH","DEFAULT_SCALE_RANGE_MIN","DEFAULT_SCALE_RANGE_MAX","adjustNodesSize","nodesRefRepository","nodePaddings","get","Math","max","offsetWidth","offsetHeight","adjustNodesPosition","_nodesRefRepository$g","nodeContainer","visibility","getRenderedEdges","edges","normalizedLinesMap","lineLabelsRefRepository","labelSize","getDummyNodes","count","Array","v","i","dummy","source","target","getDummyEdges","useRenderedDiagram","layout","originalLayout","manualLayoutStatus","userViewReady","userViewNodesMap","nodeMovement","nodesRenderId","lineLabelsRenderId","layoutOptions","graph","setGraph","renderedDiagram","setRenderedDiagram","previousGraph","dagreLayoutOptions","nodePadding","dagreGraphOptions","rankdir","ranksep","edgesep","nodesep","pick","extractPartialRectTuple","dagre","Graph","setDefaultEdgeLabel","previousNode","getNode","setNode","setEdge","applyLayout","renderedNodes","push","console","error","length","renderedEdges","labelpos","getDagreGraph","forceLayoutOptions","dummyNodesOnEdges","collide","dummyRadius","radiusDiff","strength","iterations","renderedNode","userViewNode","fx","fy","forceNodes","forceLinks","linkSimulation","forceLink","distance","l","simulation","forceSimulation","force","forceX","forceY","forceManyBody","forceCollide","radius","sqrt","stop","tick","ceil","log","alphaMin","alphaDecay","manuallyTickToTheEnd","getForceGraph","x0","y0","movedNode","move","getManualGraph","InstanceApi_postSearchV3","objectId","http","post","_x","_x2","_x3","apply","this","arguments","InstanceApi_updateInstanceV2","instanceId","put","_x4","InstanceApi_createInstance","USER_VIEW_MODEL_ID","useUserView","query","setUserViewReady","userViewIdRef","useRef","setUserViewNodesMap","queue","working","waitingTasks","async","task","nextTask","shift","createAsyncQueue","namespace","list","fields","$eq","page","page_size","_userView$nodes","userView","current","handleHttpError","getUserView","saveUserView","userViewData","interceptorParams","ignoreLoadingBar","adjustLineLabels","position","angle","size","_size","tempDirection","floor","PI","direction","tangent","tan","offsetAngle","offset","offsetSin","sin","offsetCos","cos","transform","getLineMaskRects","offsetLeft","offsetTop","getRenderedLineLabels","renderedLines","flatMap","path","getAttribute","getBBox","pathLength","getTotalLength","point","getPointAtLength","min","getRenderedLines","normalizedLines","renderedEdgeMap","WeakMap","renderedNodeMap","relatedNodes","renderedEdge","prepared","_markers$find","_markers$find2","rest","startMarkerOffset","endMarkerOffset","points","doTwoNodesOverlap","prepareRelatedNodes","addRelatedNodes","to","relates","Set","toNode","add","sourceDirection","getDirection","targetDirection","sourceRelates","getOrderedRelates","targetRelates","sourcePosition","targetPosition","getPolyLinePoints","getDirectLinePoints","start","end","atan2","curveLine","curveType","filter","Boolean","sourceAngle","sx","sy","tx","ty","fixedAngle","sort","a","b","ax","ay","bx","by","handleKeyboard","event","activeTarget","activeNode","nodeId","activeEdge","keyCode","which","action","moveOnAxis","_node","axis","oppositeAxis","diff","candidates","abs","minBy","handleNodesMouseDown","connectNodes","dragNodes","scale","setConnectLineState","setConnectLineTo","setManualLayoutStatus","setNodeMovement","onSwitchActiveTarget","onNodesConnect","findNode","match","contains","sourceType","nodeMatched","clientX","clientY","__secret_internals","legacyDoTransform","onMouseMove","onMouseUp","document","removeEventListener","eventTargets","composedPath","addEventListener","moved","movement","matchEdgeByFilter","edgeType","normalizeLinesAndMarkers","lines","restLineConf","computedLineConf","draw","uniqueId","normalizedMarkers","lineMarkers","_placement","_type","offsetUnit","addMarker","activeMarkerIndex","activeRelatedMarkerIndex","markerIndex","findIndex","sameTarget","transformToCenter","canvasWidth","canvasHeight","scaleRange","Infinity","right","bottom","hw","hh","r","t","k","___CSS_LOADER_EXPORT___","module","toString"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(globalThis.webpackChunk_next_bricks_diagram=globalThis.webpackChunk_next_bricks_diagram||[]).push([[3252],{3739:(e,t,n)=>{n.d(t,{c:()=>i});var o=n(8769),r=n.n(o);function i(e){let t,{id:n,type:o,strokeColor:i}=e;switch(o){case"0..1":t=l;break;case"0..N":t=c;break;default:t=a}return r().createElement(t,{id:n,strokeColor:i})}function a(e){let{id:t,strokeColor:n}=e;return r().createElement("marker",{id:t,viewBox:"0 0 6 6",refX:5,refY:3,markerWidth:6,markerHeight:6,orient:"auto-start-reverse",strokeLinejoin:"round"},r().createElement("path",{d:"M 0.5 0.5 L 5.5 3 L 0.5 5.5 z",stroke:n,strokeWidth:1,fill:n}))}function l(e){let{id:t,strokeColor:n}=e;return r().createElement("marker",{id:t,viewBox:"0 0 21 11",refX:.5,refY:5.5,markerWidth:21,markerHeight:11,orient:"auto-start-reverse"},r().createElement("path",{d:"M 5.5 5.5 m 5 0 a 5 5 0 1 0 -10 0 a 5 5 0 1 0 10 0 M 15.5 0.5 V 10.5 M 10.5 5.5 H 20.5",stroke:n,strokeWidth:1,fill:"none"}))}function c(e){let{id:t,strokeColor:n}=e;return r().createElement("marker",{id:t,viewBox:"0 0 21 11",refX:.5,refY:5.5,markerWidth:21,markerHeight:11,orient:"auto-start-reverse"},r().createElement("path",{d:"M 5.5 5.5 m 5 0 a 5 5 0 1 0 -10 0 a 5 5 0 1 0 10 0 M 20.5 0.5 L 10.5 5.5 L 20.5 10.5 M 10.5 5.5 H 20.5",stroke:n,strokeWidth:1,fill:"none"}))}},8653:(e,t,n)=>{n.d(t,{S:()=>s});var o=n(482),r=n(4643),i=n(3488),a=n(6066),l=n(4993),c=n(3269);function s(e,t,n,s){if(!Array.isArray(e))return"";let u;switch(t){case"curveLinear":u=o.A;break;case"curveBumpX":u=r.dJ;break;case"curveBumpY":u=r.kl;break;case"curveMonotoneX":u=i.G;break;case"curveMonotoneY":u=i.N;break;case"curveNatural":u=a.A;break;default:u=l.Ay}const h=d(e[1],e[0],n),v=d(e[e.length-2],e[e.length-1],s);return(0,c.A)().x(((t,n)=>t.x-(0===n?h.x:n===e.length-1?v.x:0))).y(((t,n)=>t.y-(0===n?h.y:n===e.length-1?v.y:0))).curve(u)(e)}function d(e,t,n){if(!n)return{x:0,y:0};const{x:o,y:r}=e,{x:i,y:a}=t,l=n/Math.sqrt(Math.pow(i-o,2)+Math.pow(a-r,2));return{x:(i-o)*l,y:(a-r)*l}}},3188:(e,t,n)=>{n.d(t,{h:()=>r});var o=n(733);function r(e,t,n){if(e===t||(0,o.w)(e,t,0,0))return null;let r,a,l=0,c=0;if(n){const o=t.x-e.x,r=t.y-e.y,i=Math.atan2(r,o);l=n/2*Math.cos(i+Math.PI/2),c=n/2*Math.sin(i+Math.PI/2)}const s=[[e.x+l,e.y+c],[t.x+l,t.y+c]],d=i(e,s),u=i(t,s);return r=d.length>0?d[0]:[e.x,e.y],a=u.length>0?u[0]:[t.x,t.y],[{x:r[0],y:r[1]},{x:a[0],y:a[1]}]}function i(e,t){const n=[[e.x-e.width/2,e.y-e.height/2],[e.x+e.width/2,e.y-e.height/2],[e.x+e.width/2,e.y+e.height/2],[e.x-e.width/2,e.y+e.height/2]],o=[];for(let e=0;e<4;e++)o.push([n[e],n[(e+1)%4]]);const r=[];for(const e of o){const n=a(t[0],t[1],e[0],e[1]);n&&r.push(n)}return r}function a(e,t,n,o){let[r,i]=e,[a,l]=t,[c,s]=n,[d,u]=o;if(r===a&&i===l||c===d&&s===u)return null;const h=(u-s)*(a-r)-(d-c)*(l-i);if(0===h)return null;const v=((d-c)*(i-s)-(u-s)*(r-c))/h,f=((a-r)*(i-s)-(l-i)*(r-c))/h;return v<0||v>1||f<0||f>1?null:[r+v*(a-r),i+v*(l-i)]}},4059:(e,t,n)=>{function o(e,t,n,o,i,a){const l=r(e,n,i),c=r(t,o,a);let s,d;switch(n){case"top":case"bottom":switch(o){case"left":case"right":s={x:l.x,y:c.y};break;default:s={x:l.x,y:(l.y+c.y)/2},d={x:c.x,y:s.y}}break;default:switch(o){case"top":case"bottom":s={x:c.x,y:l.y};break;default:s={x:(l.x+c.x)/2,y:l.y},d={x:s.x,y:c.y}}}return[l,s,d,c].filter(Boolean)}function r(e,t,n){const{x:o,y:r,width:i,height:a}=e;switch(t){case"top":return{x:o-i/2+i*n,y:r-a/2};case"bottom":return{x:o-i/2+i*n,y:r+a/2};case"left":return{x:o-i/2,y:r-a/2+a*n};case"right":return{x:o+i/2,y:r-a/2+a*n}}}n.d(t,{o:()=>o})},733:(e,t,n)=>{function o(e,t,n,o){const i=n?r(e,n):e,a=o?r(t,o):t,l=Math.min(i.x-i.width/2,a.x-a.width/2),c=Math.max(i.x+i.width/2,a.x+a.width/2),s=Math.min(i.y-i.height/2,a.y-a.height/2),d=Math.max(i.y+i.height/2,a.y+a.height/2);return c-l<i.width+a.width&&d-s<i.height+a.height}function r(e,t){return{x:e.x-e.width/2-t,y:e.y-e.height/2-t,width:e.width+2*t,height:e.height+2*t}}n.d(t,{w:()=>o})},8802:(e,t,n)=>{function o(e){if(Array.isArray(e)){const t=e[0],n=e.length>1?e[1]:t;return[t,n,e.length>2?e[2]:t,e.length>3?e[3]:n]}return new Array(4).fill(e)}n.d(t,{D:()=>o})},4932:(e,t,n)=>{n.d(t,{m:()=>T});var o=n(8769),r=n.n(o),i=n(3373),a=n.n(i),l=n(531),c=n(1030),s=n(3188),d=n(3033),u=n(8653),h=n(3239),v=n(693);function f(e,t){return e.find((e=>(0,l.o6)(e)&&e.id===t))}function m(e){var t,n;let{edge:i,cells:m,lineConfMap:g}=e;const p=(0,o.useRef)(null),w=(0,o.useMemo)((()=>f(m,i.source)),[m,i.source]),y=(0,o.useMemo)((()=>f(m,i.target)),[m,i.target]),x=(0,o.useMemo)((()=>({...g.get(i),...(0,c.omitBy)(i.view,((e,t)=>void 0===e||"$markerUrl"===t))})),[i,g]),k=(0,o.useMemo)((()=>m.some((e=>{var t;return(0,l.WW)(e)&&e.source===i.target&&e.target===i.source&&!(null!==(t=i.view)&&void 0!==t&&t.exitPosition&&i.view.entryPosition)}))?x.parallelGap:0),[m,i,x.parallelGap]),E=(0,o.useMemo)((()=>{var e;const t=w&&y&&null!=w.view.x&&null!=y.view.x?null!==(e=i.view)&&void 0!==e&&e.exitPosition&&i.view.entryPosition?(0,v.V)(w.view,y.view,i.view):(0,s.h)((0,h.T)(w.view,5),(0,h.T)(y.view,5),k):null,n="auto"===x.type?"polyline":x.type;return(0,u.S)(t,"curve"===n?x.curveType:"curveLinear",0,1)}),[i.view,x,k,w,y]);return E?r().createElement(r().Fragment,null,r().createElement("path",{d:E,fill:"none",stroke:"transparent",strokeWidth:x.interactStrokeWidth}),r().createElement("path",{ref:p,className:a()("line",{dashed:x.dashed,[(x.dashed?"dashed":"solid")+"-animation"]:x.animate.useAnimate}),style:{"--time":`${x.animate.duration??d.Be}s`,"--solid-length":null===(t=p.current)||void 0===t||null===(n=t.getTotalLength)||void 0===n?void 0:n.call(t)},d:E,fill:"none",stroke:x.strokeColor,strokeWidth:x.strokeWidth,markerStart:x.showStartArrow?x.$markerUrl:"",markerEnd:x.showEndArrow?x.$markerUrl:""}),r().createElement("path",{className:"line-active-bg",d:E,fill:"none"})):null}var g=n(8426),p=n(8566),w=n(9126);function y(e){let{node:t,degraded:n,degradedNodeLabel:i,defaultNodeBricks:a,onResize:l}=e;const s=function(e){const[t,n]=(0,o.useState)(e);return(0,o.useEffect)((()=>{n((t=>(0,c.isEqual)(t,e)?t:e))}),[e]),t}({node:{id:t.id,data:t.data}}),d=t.useBrick,u=(0,o.useRef)(null),h=(0,o.useMemo)((()=>{var e;return n?null:d??(null==a||null===(e=a.find((e=>(0,p.checkIfByTransform)(e,s))))||void 0===e?void 0:e.useBrick)}),[n,d,a,s]),v=(0,o.useMemo)((()=>n?String(p.__secret_internals.legacyDoTransform(s,i??"<% DATA.node.id %>")):""),[n,i,s]),f=(0,o.useCallback)((e=>{const n=u.current;n&&(n.disconnect(),u.current=null),e?setTimeout((()=>{const n=new w.A((()=>{l(t.id,[e.offsetWidth,e.offsetHeight])}));n.observe(e),u.current=n})):l(t.id,null)}),[t.id,l]),m=(0,o.useCallback)((e=>{if(e){const n=e.getBBox();l(t.id,[n.width,n.height])}else l(t.id,null)}),[t.id,l]);return h?r().createElement("foreignObject",{width:9999,height:9999,className:"node"},h&&r().createElement(g.ReactUseBrick,{useBrick:h,data:s,refCallback:f})):n?r().createElement("g",{className:"degraded",ref:m},r().createElement("circle",{cx:8,cy:8,r:8}),r().createElement("text",{x:8,y:32},v)):null}var x=n(9386),k=n(4197);function E(e,t){let{action:n,cell:o,scale:r,layout:i,layoutOptions:a,activeTarget:c,cells:s,onCellsMoving:u,onCellsMoved:h,onCellResizing:v,onCellResized:f,onSwitchActiveTarget:m}=t;e.stopPropagation(),"resize"!==n&&(0,k.Q)(o,c)||null==m||m((0,x.P)(o));const g="force"===i||"dagre"===i;if((0,l.WW)(o))return;const p=[],w="multi"===(null==c?void 0:c.type)&&"move"===n?s.filter((e=>(0,k.Q)(e,c))):[o];w.forEach((e=>{p.push(e),"move"===n&&(0,l.t2)(e)&&p.push(...s.filter((t=>(0,l.N)(t)&&t.containerId===e.id&&!w.includes(t))))}));const y=p.filter((e=>(0,l.N)(e)&&!g||(0,l.mH)(e)));if(0===y.length)return;const E=function(e){const t=e?!0===e?{grid:!0,object:!0}:e:null,n=null!=t&&t.grid?!0===t.grid?{}:t.grid:null,o=null!=t&&t.object?!0===t.object?{}:t.object:null;return{grid:n?{size:n.size??d.gx}:null,object:o?{distance:o.distance??d.ld}:null}}(null==a?void 0:a.snap),C=[e.clientX,e.clientY],z=y.map((e=>({cell:e,position:"move"===n?[e.view.x,e.view.y]:[e.view.width,e.view.height],center:"move"!==n||(0,l.WW)(e)?null:b(e.view)}))),M=z[0].position;let L=z.map((e=>{let{position:t}=e;return t})),A=[];if("move"===n&&E.object){const e=s.filter((e=>!(0,l.WW)(e)&&!p.includes(e)));A=e.map((e=>({cell:e,center:b(e.view)})))}let S=!1;const N=(e,t)=>{const i=function(e){return[(e.clientX-C[0])/r,(e.clientY-C[1])/r]}(e);let a,c,s,d,m;if(!E.grid&&!E.object||e.altKey)a=z.map((e=>{let{position:t}=e;return[t[0]+i[0],t[1]+i[1]]})),S||(S=i[0]**2+i[1]**2>=9);else{let e=1/0,t=1/0;const n=[...i];if(E.object){const o=E.object.distance;let r,a,l,u,h=0,v=0;for(const{cell:c,center:[s,f]}of A)for(const{cell:g,center:p}of z){const[w,y]=p,x=Math.abs(w+i[0]-s),k=Math.abs(y+i[1]-f),E=k<o&&k<t;x<o&&x<e&&(e=x,n[0]=s-w,d=g,l=c,r=[s,f],h=y),E&&(t=k,n[1]=f-y,m=g,u=c,a=[s,f],v=w)}if(l&&l===u){const e=l.view.height/2,t=l.view.width/2;c=[[r[0],r[1]-e],[r[0],r[1]+e]],s=[[a[0]-t,a[1]],[a[0]+t,a[1]]]}else r&&(c=[r,[r[0],h+n[1]]]),a&&(s=[a,[v+n[0],a[1]]])}if(E.grid){const o=E.grid.size,r=[Math.round((M[0]+i[0])/o)*o,Math.round((M[1]+i[1])/o)*o],a=[r[0]-M[0],r[1]-M[1]],l=Math.abs(a[0]-i[0]),u=Math.abs(a[1]-i[1]);l<e&&(e=l,n[0]=a[0],c=void 0,d=void 0),u<t&&(t=u,n[1]=a[1],s=void 0,m=void 0)}a=z.map((e=>{let{position:t}=e;return[Math.round(t[0]+n[0]),Math.round(t[1]+n[1])]})),(a[0][0]!==L[0][0]||a[0][1]!==L[0][1])&&(L=a,S=!0)}if(S)if("move"===n){var g;const e=z.map(((e,n)=>{let{cell:o}=e;return{type:o.type,id:o.id,x:a[n][0],y:a[n][1],width:o.view.width,height:o.view.height,decorator:(0,l.mH)(o)?o.decorator:void 0,guideLines:t?void 0:[...d===o?[c]:[],...m===o?[s]:[]]}}));null===(g=t?h:u)||void 0===g||g(e)}else{var p;null===(p=t?f:v)||void 0===p||p({type:o.type,id:o.id,width:a[0][0],height:a[0][1]})}},P=e=>{N(e)},T=e=>{N(e,!0),S=!1,document.removeEventListener("mousemove",P),document.removeEventListener("mouseup",T)};document.addEventListener("mousemove",P),document.addEventListener("mouseup",T)}function b(e){return[e.x+e.width/2,e.y+e.height/2]}function C(e){let{cell:t,transform:n,readOnly:i,layoutOptions:a,activeTarget:l,cells:c,onCellResizing:s,onCellResized:d,onSwitchActiveTarget:u}=e;const h=r().useRef(null);return(0,o.useEffect)((()=>{const e=h.current;if(!e||i)return;const o=e=>{E(e,{action:"resize",cell:t,scale:n.k,layoutOptions:a,activeTarget:l,cells:c,onCellResizing:s,onCellResized:d,onSwitchActiveTarget:u})};return e.addEventListener("mousedown",o),()=>{e.removeEventListener("mousedown",o)}}),[l,t,c,a,d,s,u,i,n.k]),r().createElement("g",{className:"decorator-area"},r().createElement("rect",{width:t.view.width,height:t.view.height,className:"area"}),!i&&r().createElement("g",{ref:h,className:"resize-handle",transform:`translate(${t.view.width-20} ${t.view.height-20})`},r().createElement("rect",{width:20,height:20}),r().createElement("path",{d:"M10 18L18 10 M15 18L18 15"})))}function z(e){let{cell:t,readOnly:n,onDecoratorTextEditing:i,onDecoratorTextChange:l}=e;const c=t.view.text??"",[s,d]=(0,o.useState)(c),[u,h]=(0,o.useState)(!1),v=(0,o.useRef)(!1),[f,m]=(0,o.useState)(!1),g=(0,o.useRef)(null),p=(0,o.useCallback)((e=>{n||(e.preventDefault(),e.stopPropagation(),h(!0))}),[n]);(0,o.useEffect)((()=>{const e=g.current;e&&e.textContent!==s&&(e.textContent=s)}),[s]),(0,o.useEffect)((()=>{var e;const n=null===(e=g.current)||void 0===e?void 0:e.parentElement;n&&(t.view.width=n.clientWidth,t.view.height=n.clientHeight)}),[s,t.id]),(0,o.useEffect)((()=>{u&&g.current&&(g.current.focus(),M(g.current)),null==i||i({id:t.id,editing:u})}),[t.id,u,i]),(0,o.useEffect)((()=>{v.current?null==i||i({id:t.id,editing:u}):v.current=!0}),[t.id,u,i]);const w=(0,o.useCallback)((e=>{n||d(e.target.textContent)}),[n]),y=(0,o.useCallback)((()=>{n||(h(!1),m(!0))}),[n]);return(0,o.useEffect)((()=>{f&&(null==l||l({id:t.id,view:{...t.view,text:s}}),m(!1))}),[t,s,l,f]),r().createElement("foreignObject",{className:"decorator-text"},r().createElement("div",{className:a()("text-container",{editing:u}),onDoubleClick:p},r().createElement("div",{className:"text",contentEditable:u,ref:g,onInput:w,onBlur:y})))}function M(e){const t=document.createRange();t.selectNodeContents(e);const n=window.getSelection();n.removeAllRanges(),n.addRange(t)}var L=n(9068);function A(e){let{cell:t,transform:n,readOnly:i,layout:s,view:d,activeTarget:u,cells:h,onCellResizing:v,onCellResized:f,onSwitchActiveTarget:m,onDecoratorTextEditing:g,onDecoratorTextChange:p}=e;const w=(0,c.get)(t.view,"text",""),y=(0,c.get)(t.view,"direction","top"),x=(0,o.useRef)(null),k=r().useRef(null),[b,C]=(0,o.useState)(!1),[z,A]=(0,o.useState)(w),[S,N]=(0,o.useState)(!1),[P,T]=(0,o.useState)(),[R,I]=(0,o.useState)({x:0,y:0,width:t.view.width,height:t.view.height}),W=(0,o.useCallback)((e=>{i||(e.preventDefault(),e.stopPropagation(),C(!0))}),[i]),H=(0,o.useCallback)((e=>{i||A(e.target.textContent)}),[i]),D=(0,o.useCallback)((()=>{i||(C(!1),N(!0),T((0,L.uuidV4)()))}),[i]);return(0,o.useEffect)((()=>{A(w)}),[w]),(0,o.useEffect)((()=>{const e=x.current;e&&e.textContent!==z&&(e.textContent=z)}),[z]),(0,o.useEffect)((()=>{var e;const t=null===(e=x.current)||void 0===e?void 0:e.parentElement;if(t){const{clientWidth:e,clientHeight:n}=t;if(["left","right"].includes(y)){const t={width:e,height:d.height,x:"left"===y?-e:d.width,y:0};I(t)}else{const e={width:d.width,height:n,x:0,y:"top"===y?-n:d.height};I(e)}}}),[d,z,y,P]),(0,o.useEffect)((()=>{b&&x.current&&(x.current.focus(),M(x.current)),null==g||g({id:t.id,editing:b})}),[t.id,b,g]),(0,o.useEffect)((()=>{S&&(null==p||p({id:t.id,view:{...d,text:z}}),N(!1))}),[t,d,z,p,S]),(0,o.useEffect)((()=>{const e=k.current;if(!e||i)return;const o=e=>{E(e,{action:"resize",cell:t,scale:n.k,activeTarget:u,cells:h,onCellResizing:v,onCellResized:f,onSwitchActiveTarget:m})};return e.addEventListener("mousedown",o),()=>{e.removeEventListener("mousedown",o)}}),[u,t,h,f,v,m,i,n.k]),r().createElement("g",{className:"decorator-container"},r().createElement("foreignObject",R,r().createElement("div",{className:a()("text-container",{editing:b,[["left","right"].includes(y)?"vertical":"horizontal"]:!0}),onDoubleClick:W},r().createElement("div",{className:"text",contentEditable:b,ref:x,onInput:H,onBlur:D}))),r().createElement("rect",{width:d.width,height:d.height,className:"container"}),!i&&!(0,l.OD)(s)&&r().createElement("g",{ref:k,className:"resize-handle",transform:`translate(${d.width-20} ${d.height-20})`},r().createElement("rect",{width:20,height:20}),r().createElement("path",{d:"M10 18L18 10 M15 18L18 15"})))}function S(e){let t,{cell:n,view:o,transform:i,readOnly:a,layout:l,layoutOptions:c,activeTarget:s,cells:d,onCellResizing:u,onCellResized:h,onSwitchActiveTarget:v,onDecoratorTextEditing:f,onDecoratorTextChange:m}=e;switch(n.decorator){case"container":t=A;break;case"area":t=C;break;case"text":t=z;break;default:return console.error(`Unknown decorator: ${n.decorator}`),null}return r().createElement(t,{cell:n,view:o,transform:i,readOnly:a,layout:l,layoutOptions:c,activeTarget:s,cells:d,onCellResizing:u,onCellResized:h,onSwitchActiveTarget:v,onDecoratorTextEditing:f,onDecoratorTextChange:m})}var N=n(8185);function P(e){let t=1/0,n=1/0,o=-1/0,r=-1/0;return e.forEach((e=>{const{x:i,y:a,width:l,height:c}=e.view;i<t&&(t=i),a<n&&(n=a),i+l>o&&(o=i+l),a+c>r&&(r=a+c)})),[t,o,n,r].some((e=>isFinite(e)))?{x:t-20,y:n-20,width:o-t+40,height:r-n+40}:{}}function T(e){let{layout:t,layoutOptions:n,cell:i,cells:s,degraded:d,degradedNodeLabel:u,defaultNodeBricks:h,lineConfMap:v,activeTarget:f,dragNodeToContainerActive:g,readOnly:p,transform:w,unrelatedCells:b,onCellsMoving:C,onCellsMoved:z,onCellResizing:M,onCellResized:L,onSwitchActiveTarget:A,onCellContextMenu:T,onCellClick:R,onDecoratorTextEditing:I,onDecoratorTextChange:W,onNodeBrickResize:H,onCellMouseEnter:D,onCellMouseLeave:B}=e;const O=(0,o.useRef)(null),V=(0,o.useMemo)((()=>b.some((e=>(0,N.c)(e,i)))),[i,b]),j=(0,o.useMemo)((()=>{if((0,l.t2)(i)&&(0,l.OD)(t)){const e=s.filter((e=>(0,l.N)(e)&&e.containerId===i.id)),t={...i.view,...P(e)};return i.view=t,t}return(0,l.WW)(i)?void 0:(0,c.get)(i,"view",{x:0,y:0,width:0,height:0})}),[t,i,s]);(0,o.useEffect)((()=>{const e=O.current;if(!e)return;const o=e=>{p||(0,l.t2)(i)&&(0,l.OD)(t)?e.stopPropagation():E(e,{layout:t,layoutOptions:n,action:"move",cell:i,scale:w.k,activeTarget:f,cells:s,onCellsMoving:C,onCellsMoved:z,onSwitchActiveTarget:A})};return e.addEventListener("mousedown",o),()=>{e.removeEventListener("mousedown",o)}}),[t,n,i,f,s,z,C,A,p,w.k]);const Y=(0,o.useCallback)((e=>{p&&"decorator"===i.type||(e.preventDefault(),A((0,x.P)(i)),T({cell:i,clientX:e.clientX,clientY:e.clientY}))}),[i,T,A,p]),X=(0,o.useCallback)((e=>{R&&"decorator"!==i.type&&R({cell:i,clientX:e.clientX,clientY:e.clientY})}),[i,R]),$=(0,o.useCallback)((()=>{null==D||D(i)}),[i,D]),U=(0,o.useCallback)((()=>{null==B||B(i)}),[i,B]);return r().createElement("g",{className:a()("cell",{active:(0,k.Q)(i,f),faded:V,"read-only":p,"container-active":g}),ref:O,transform:"edge"===i.type||null==i.view.x?void 0:`translate(${j.x} ${j.y})`,onContextMenu:Y,onClick:X,onMouseEnter:$,onMouseLeave:U},(0,l.N)(i)?r().createElement(y,{node:i,degraded:d,degradedNodeLabel:u,defaultNodeBricks:h,onResize:H}):(0,l.WW)(i)?r().createElement(m,{edge:i,cells:s,lineConfMap:v}):(0,l.mH)(i)?r().createElement(S,{cell:i,view:j,transform:w,readOnly:p,layout:t,layoutOptions:n,activeTarget:f,cells:s,onCellResizing:M,onCellResized:L,onSwitchActiveTarget:A,onDecoratorTextEditing:I,onDecoratorTextChange:W}):null)}},3639:(e,t,n)=>{n.d(t,{w:()=>l});var o=n(8769),r=n.n(o),i=n(3373),a=n.n(i);function l(e){let{connectLineState:t,transform:n,markerEnd:i,onConnect:l}=e;const[c,s]=(0,o.useState)(null);return(0,o.useEffect)((()=>{t&&s(t.from)}),[t]),(0,o.useEffect)((()=>{if(t){const e=e=>{s([(e.clientX-n.x-t.offset[0])/n.k,(e.clientY-n.y-t.offset[1])/n.k])},o=e=>{e.stopPropagation()},r=e=>{e.stopPropagation(),i(),l(t,[(e.clientX-n.x-t.offset[0])/n.k,(e.clientY-n.y-t.offset[1])/n.k])},i=()=>{document.removeEventListener("mousemove",e),document.removeEventListener("mousedown",o,{capture:!0}),document.removeEventListener("click",r,{capture:!0}),s(null)};return document.addEventListener("mousemove",e),document.addEventListener("mousedown",o,{capture:!0}),document.addEventListener("click",r,{capture:!0}),i}}),[t,l,n]),r().createElement("path",{className:a()("connect-line",{connecting:!!t&&c&&(c[0]-t.from[0])**2+(c[1]-t.from[1])**2>25}),d:t&&c?`M${t.from.join(" ")}L${c.join(" ")}`:"",fill:"none",stroke:"gray",strokeWidth:1,markerEnd:`url(#${i})`})}},9978:(e,t,n)=>{n.d(t,{H:()=>i,s:()=>a});var o=n(8769),r=n.n(o);const i=r().createContext({rootRef:{current:null},smartConnectLineState:null,unsetHoverStateTimeoutRef:{current:null},hoverState:null,setHoverState:()=>{},setSmartConnectLineState:()=>{}});function a(){return r().useContext(i)}},2722:(e,t,n)=>{n.d(t,{T:()=>u});var o=n(8769),r=n.n(o),i=n(9978),a=n(4197);const l="data:image/svg+xml;base64,PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSI1cHgiIGhlaWdodD0iNXB4IiB2ZXJzaW9uPSIxLjEiPjxwYXRoIGQ9Im0gMCAwIEwgNSA1IE0gMCA1IEwgNSAwIiBzdHJva2Utd2lkdGg9IjIiIHN0eWxlPSJzdHJva2Utb3BhY2l0eTowLjQiIHN0cm9rZT0iI2ZmZmZmZiIvPjxwYXRoIGQ9Im0gMCAwIEwgNSA1IE0gMCA1IEwgNSAwIiBzdHJva2U9IiMyOWI2ZjIiLz48L3N2Zz4=",c=5,s=8,d=c/2;function u(e){let{activeTarget:t,transform:n,smartConnectLineState:l,disabled:c}=e;const{unsetHoverStateTimeoutRef:d,hoverState:u,setHoverState:v}=(0,i.s)(),f=(0,o.useCallback)((()=>{null!==d.current&&(clearTimeout(d.current),d.current=null)}),[d]),m=(0,o.useCallback)((()=>{f(),v((e=>void 0===(null==e?void 0:e.activePointIndex)?e:{...u,activePointIndex:void 0}))}),[u,v,f]),g=(0,o.useCallback)((()=>{d.current=setTimeout((()=>{v(null)}))}),[v,d]),p=!c&&u&&(!!l||!(0,a.Q)(u.cell,t)),w=(0,o.useMemo)((()=>p?u.points.map((e=>({x:e.x*n.k+n.x,y:e.y*n.k+n.y}))):null),[p,null==u?void 0:u.points,n]);return r().createElement("g",{onMouseEnter:m,onMouseLeave:g},p&&r().createElement(r().Fragment,null,r().createElement("rect",{x:u.cell.view.x,y:u.cell.view.y,width:u.cell.view.width,height:u.cell.view.height,fill:"none",stroke:"transparent",strokeWidth:2*s,pointerEvents:"stroke"}),r().createElement("rect",{x:u.cell.view.x,y:u.cell.view.y,width:u.cell.view.width,height:u.cell.view.height,fill:"none",stroke:"transparent"}),void 0!==(null==u?void 0:u.activePointIndex)&&r().createElement("circle",{cx:w[u.activePointIndex].x,cy:w[u.activePointIndex].y,r:s,fill:"lightgreen",fillOpacity:.5,pointerEvents:"none"}),w.map(((e,t)=>r().createElement(h,{key:t,index:t,point:e,unsetTimeout:f,unsetActivePointIndex:m})))))}function h(e){let{index:t,point:n,unsetTimeout:a,unsetActivePointIndex:u}=e;const{rootRef:h,smartConnectLineState:v,hoverState:f,setHoverState:m,setSmartConnectLineState:g,onConnect:p}=(0,i.s)(),w=(0,o.useRef)(null);return(0,o.useEffect)((()=>{const e=()=>{a(),m({...f,activePointIndex:t})},n=w.current;return null==n||n.addEventListener("mouseenter",e),()=>{null==n||n.removeEventListener("mouseenter",e)}}),[f,t,m,a]),(0,o.useEffect)((()=>{const e=e=>{e.preventDefault(),e.stopPropagation();const n=h.current.getBoundingClientRect(),o=f.points[t];g({source:f.cell,from:[o.x,o.y],offset:[n.left,n.top],exitPosition:f.relativePoints[t]})},n=w.current;return null==n||n.addEventListener("mousedown",e),()=>{null==n||n.removeEventListener("mousedown",e)}}),[f,t,h,g]),(0,o.useEffect)((()=>{const e=e=>{e.preventDefault(),e.stopPropagation(),v&&(v.source!==(null==f?void 0:f.cell)&&(null==p||p(v.source,f.cell,v.exitPosition,f.relativePoints[f.activePointIndex])),g(null))},t=w.current;return null==t||t.addEventListener("mouseup",e),()=>{null==t||t.removeEventListener("mouseup",e)}}),[v,f,p,g]),(0,o.useEffect)((()=>{const e=w.current;return null==e||e.addEventListener("mouseleave",u),()=>{null==e||e.removeEventListener("mouseleave",u)}}),[u]),r().createElement("g",{ref:w},r().createElement("circle",{cx:n.x,cy:n.y,r:s,fill:"transparent"}),r().createElement("image",{x:n.x-d,y:n.y-d,width:c,height:c,xlinkHref:l,preserveAspectRatio:"none"}))}},1103:(e,t,n)=>{n.d(t,{X:()=>d});var o=n(8769),r=n.n(o),i=n(3373),a=n.n(i),l=n(8653),c=n(9978),s=n(693);function d(e){let{smartConnectLineState:t,transform:n,options:i}=e;const[d,u]=(0,o.useState)(null),{hoverState:h,setSmartConnectLineState:v}=(0,c.s)();(0,o.useEffect)((()=>{if(t)return document.addEventListener("mousemove",e),document.addEventListener("mouseup",o),r;function e(e){u([(e.clientX-n.x-t.offset[0])/n.k,(e.clientY-n.y-t.offset[1])/n.k])}function o(e){e.preventDefault(),r()}function r(){document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",o),u(null),v(null)}}),[v,t,n]);const f=(0,o.useMemo)((()=>{const e="auto"===i.type?"polyline":i.type,n=function(e,t,n){if(!e||!t&&void 0===(null==n?void 0:n.activePointIndex))return null;const o=e.source.view;if(void 0!==(null==n?void 0:n.activePointIndex))return(0,s.V)(o,n.cell.view,{exitPosition:e.exitPosition,entryPosition:n.relativePoints[n.activePointIndex]});const[r,i]=t;return i<o.y?(0,s.V)(o,{x:r,y:i,width:0,height:0},{exitPosition:e.exitPosition,entryPosition:{x:.5,y:1}}):i>o.y+o.height?(0,s.V)(o,{x:r,y:i,width:0,height:0},{exitPosition:e.exitPosition,entryPosition:{x:.5,y:0}}):r<o.x?(0,s.V)(o,{x:r,y:i,width:0,height:0},{exitPosition:e.exitPosition,entryPosition:{x:1,y:.5}}):(0,s.V)(o,{x:r,y:i,width:0,height:0},{exitPosition:e.exitPosition,entryPosition:{x:0,y:.5}})}(t,d,h);return(0,l.S)(n,"curve"===e?i.curveType:"curveLinear",0,1)}),[d,h,t,i]);return r().createElement("path",{className:a()("connect-line",{connecting:!(!t||!d)}),d:f,fill:"none",stroke:i.strokeColor,strokeWidth:i.strokeWidth,markerStart:i.showStartArrow?i.$markerUrl:"",markerEnd:i.showEndArrow?i.$markerUrl:""})}},3033:(e,t,n)=>{n.d(t,{Be:()=>g,CV:()=>o,HP:()=>i,Ie:()=>v,N8:()=>l,Ub:()=>m,VO:()=>h,XV:()=>f,Yt:()=>d,gx:()=>w,ld:()=>y,mF:()=>u,pC:()=>p,sS:()=>s,sz:()=>a,w1:()=>c,xc:()=>r});const o=Symbol.for("size-initialized"),r=Symbol.for("layout-initialized"),i=20,a=36,l=180,c=120,s=.5,d=2,u="gray",h=1,v=15,f=!1,m=!0,g=1,p=500,w=10,y=5},531:(e,t,n)=>{function o(e){return"node"===e.type}function r(e){return"decorator"===e.type}function i(e){return"node"===e.type}function a(e){return"edge"===e.type}function l(e){return"node"===e.type||"edge"===e.type}function c(e){return"node"===e.type||"decorator"===e.type&&"area"===e.decorator}function s(e){return"decorator"===e.type&&"text"===e.decorator}function d(e){return"decorator"===e.type&&"container"===e.decorator}function u(e){return!["manual",void 0].includes(e)}n.d(t,{Hs:()=>s,N:()=>o,OD:()=>u,WW:()=>a,mH:()=>r,nv:()=>l,o6:()=>c,t2:()=>d,vC:()=>i})},9386:(e,t,n)=>{n.d(t,{P:()=>r});var o=n(1030);function r(e){return"edge"===e.type?(0,o.pick)(e,["type","source","target","data"]):(0,o.pick)(e,["type","id","data"])}},227:(e,t,n)=>{n.d(t,{Y:()=>r});var o=n(4197);function r(e,t,n,r){const i=[];if(t){const n=new Set;for(const o of e)"edge"===o.type&&o.source===t.source.id&&n.add(o.target);for(const t of e)switch(t.type){case"node":n.has(t.id)&&i.push(t);break;case"decorator":r&&"text"!=t.decorator&&!n.has(t.id)||i.push(t);break;default:i.push(t)}}else switch(null==n?void 0:n.type){case"multi":{const t=new Map,r=new Set,a=new Set;for(const e of n.targets)"node"===e.type&&(r.add(e.id),a.add(e.id));for(const l of e)"node"===l.type?t.set(l.id,l):"edge"===l.type?r.has(l.source)?a.add(l.target):r.has(l.target)?a.add(l.source):(0,o.Q)(l,n)||i.push(l):(0,o.Q)(l,n)||i.push(l);for(const[e,n]of t)a.has(e)||i.push(n);break}case"node":{const t=new Map,o=new Set([n.id]);for(const r of e)"node"===r.type?t.set(r.id,r):"edge"===r.type?r.source===n.id?o.add(r.target):r.target===n.id?o.add(r.source):i.push(r):i.push(r);for(const[e,n]of t)o.has(e)||i.push(n);break}case"edge":for(const t of e)("edge"===t.type?(0,o.Q)(t,n):"node"===t.type&&(t.id===n.source||t.id===n.target))||i.push(t)}return i}},5114:(e,t,n)=>{n.d(t,{a:()=>r});var o=n(4197);function r(e,t){let{cells:n,activeTarget:r}=t;const i=n.filter((e=>(0,o.Q)(e,r)));if(0!==i.length)switch(e.key||e.keyCode||e.which){case"Backspace":case 8:case"Delete":case 46:return e.preventDefault(),e.stopPropagation(),{action:"delete-cells",cells:i}}}},2219:(e,t,n)=>{function o(e,t){let{transform:n,offset:o,onLassoing:r,onLassoed:i}=t;if(e.ctrlKey||e.button)return;e.stopPropagation();const a=[e.clientX,e.clientY],l=(e.clientX-o[0]-n.x)/n.k,c=(e.clientY-o[1]-n.y)/n.k;let s=!1;const d=(e,t)=>{const o=function(e){return[(e.clientX-a[0])/n.k,(e.clientY-a[1])/n.k]}(e);if(s||(s=o[0]**2+o[1]**2>=9),s){let[e,n]=o,a=l,s=c;e<0&&(a=l+e,e=-e),n<0&&(s=c+n,n=-n),(t?i:r)({x:a,y:s,width:e,height:n})}},u=e=>{d(e)},h=e=>{d(e,!0),s=!1,document.removeEventListener("mousemove",u),document.removeEventListener("mouseup",h)};document.addEventListener("mousemove",u),document.addEventListener("mouseup",h)}n.d(t,{F:()=>o})},1991:(e,t,n)=>{n.d(t,{_:()=>r});var o=n(531);function r(e,t,n){const r=t.filter((e=>(0,o.N)(e))),i=e.filter((e=>(0,o.t2)(e))).map((e=>e.id)),a=e.filter((e=>{const t=r.find((t=>t.id===e.id)),n=(null==t?void 0:t.containerId)&&i.includes(t.containerId);return(0,o.N)(e)&&!n}));a.forEach((e=>{const n=e.x,r=e.x+e.width,i=e.y,a=e.y+e.height,l=t.filter((e=>(0,o.t2)(e)));for(const t of l){const o=t.view.x,l=t.view.x+t.view.width,c=t.view.y,s=t.view.y+t.view.height;if(n>=o&&r<=l&&i>=c&&a<=s){e.containerCell=t;break}}}));let l=[];return l=a.filter((e=>{var t;const n=r.find((t=>t.id===e.id));return(null==n?void 0:n.containerId)!==(null===(t=e.containerCell)||void 0===t?void 0:t.id)})),l.length>0&&(null==n||n(l)),l}},3783:(e,t,n)=>{n.d(t,{C:()=>r});var o=n(531);function r(e,t){let{defaultNodeSize:n}=t;return(e??[]).map((e=>{var t,r;return!(0,o.vC)(e)||void 0!==(null===(t=e.view)||void 0===t?void 0:t.width)&&void 0!==(null===(r=e.view)||void 0===r?void 0:r.height)?e:{...e,view:{width:n[0],height:n[1],...e.view}}}))}},8185:(e,t,n)=>{function o(e,t){return e?!!t&&e.type===t.type&&("multi"===e.type?e.targets.length===t.targets.length&&e.targets.every((e=>t.targets.some((t=>o(e,t))))):"node"===e.type||"decorator"===e.type?e.id===t.id:e.source===t.source&&e.target===t.target):!t}n.d(t,{c:()=>o})},4197:(e,t,n)=>{n.d(t,{Q:()=>r});var o=n(8185);function r(e,t){return!!t&&("multi"===t.type?t.targets:[t]).some((t=>(0,o.c)(t,e)))}},908:(e,t,n)=>{n.d(t,{r:()=>r});var o=n(531);function r(e,t){let{canvasWidth:n,canvasHeight:r,scaleRange:i}=t,a=1/0,l=1/0,c=-1/0,s=-1/0,d=!0;for(const t of e)if(!(0,o.WW)(t)){d=!1;const{view:e}=t,n=e.x+e.width,o=e.y+e.height;e.x<a&&(a=e.x),n>c&&(c=n),e.y<l&&(l=e.y),o>s&&(s=o)}const u=c-a,h=s-l,v=i&&!d&&(u>n||h>r)?Math.max(Math.min(n/u,r/h,i[1]),i[0]):1;return{x:d?0:(n-u*v)/2-a*v,y:d?0:(r-h*v)/2-l*v,k:v}}},2098:(e,t,n)=>{n.d(t,{L:()=>u});var o=n(1030),r=n(3033),i=n(531),a=n(3783),l=n(908),c=n(6170),s=n(9127),d=n(8185);function u(e){let{cells:t,layout:n,previousCells:u,defaultNodeSize:h,canvasWidth:v,canvasHeight:f,scaleRange:m,transform:g,reason:p,parent:w,allowEdgeToArea:y}=e;const x="force"!==n&&"dagre"!==n,k=(0,a.C)(t,{defaultNodeSize:h}),E=[];let b=!1;const C=new Map;let z=!1;for(const e of u)(0,i.mH)(e)?z=!0:(0,i.N)(e)&&(z=!0,e[r.CV]&&C.set(e.id,e));const M=new Map;for(const e of k)if((0,i.N)(e)){M.set(e.id,e);const t=C.get(e.id);t&&(e.view.width=t.view.width,e.view.height=t.view.height,e[r.CV]=!0)}let L=!1;if("add-related-nodes"===p&&w){const e=new Set;for(const t of k)(0,i.WW)(t)&&t.source===w&&t.target!==w&&e.add(t.target);const t=M.get(w);if(void 0!==(null==t?void 0:t.view.x)&&void 0!==t.view.y){if(L=!0,x)for(const t of k)((0,i.N)(t)&&void 0===t.view.x||(0,i.N)(t)&&void 0===t.view.y)&&e.add(t.id);const n=[...e].map((e=>M.get(e))).filter(Boolean);let o;for(const e of n)void 0!==e.view.x&&void 0!==e.view.y?(!o||e.view.x>o.view.x)&&e.view.y>t.view.y&&(o=e):E.push(e);if(E.length>0&&x){let e,n;if(o)e=o.view.x+o.view.width+r.sz,n=o.view.y;else{const o=E.reduce(((e,t)=>e+t.view.width+r.sz),-r.sz);e=t.view.x-o/2+t.view.width/2,n=t.view.y+t.view.height+r.sz}for(const t of E)t.view.x=e,t.view.y=n,e+=t.view.width+r.sz}}}if(!L){let e=h[0],t=h[1];const n=[];let r=!1;for(const o of k)(0,i.N)(o)?(o.view.width>e&&(e=o.view.width),o.view.height>t&&(t=o.view.height),void 0===o.view.x||void 0===o.view.y?E.push(o):n.push(o)):(0,i.mH)(o)&&(r=!0);if(x){let e;z||(g=(0,l.r)((0,o.without)(k,...E),{canvasWidth:v,canvasHeight:f,scaleRange:m})),0===n.length||1===n.length&&!r?(E.push(...n),({getNodeView:e}=(0,s.C)({cells:k,allowEdgeToArea:y})),b=0===u.length||u.length===k.length&&u.every(((e,t)=>(0,d.c)(e,k[t])))):({getNodeView:e}=(0,c.k)({cells:k,fixedPosition:!0,allowEdgeToArea:y,center:[(v/2-g.x)/g.k,(f/2-g.y)/g.k]}));for(const t of k)if((0,i.N)(t)){const n=e(t.id);t.view.x=n.x,t.view.y=n.y}}}return{cells:k,updated:E,shouldReCenter:b}}},5748:(e,t,n)=>{n.d(t,{d:()=>a});var o=n(531),r=n(3033);function i(e,t,n){const o=e.findLastIndex(n)+1;return[...e.slice(0,o),t,...e.slice(o)]}const a=(l={cells:(e,t)=>{switch(t.type){case"drop-node":return i(e,t.payload,(e=>!("decorator"===e.type&&"text"===e.decorator)));case"drop-decorator":return"text"===t.payload.decorator?[...e,t.payload]:i(e,t.payload,(e=>"decorator"===e.type&&"area"===e.decorator));case"add-nodes":{const n=e.findLastIndex((e=>!("decorator"===e.type&&"text"===e.decorator)))+1;return[...e.slice(0,n),...t.payload,...e.slice(n)]}case"add-edge":return i(e,t.payload,(e=>"edge"===e.type||"decorator"===e.type&&"area"===e.decorator));case"move-cells":{let n=!1;const o=e.map((e=>{const o=t.payload.find((t=>e.type===t.type&&e.id===t.id));return o?(n=!0,{...e,view:{...e.view,x:o.x,y:o.y}}):e}));return n?o:e}case"resize-cell":{const{type:n,id:o,width:r,height:i}=t.payload,a=e.findIndex((e=>e.type===n&&e.id===o));if(-1!==a){const t=e[a];return[...e.slice(0,a),{...t,view:{...t.view,width:r,height:i}},...e.slice(a+1)]}return e}case"update-cells":return t.payload;case"update-node-size":return e.map((e=>(0,o.N)(e)&&e.id===t.payload.id?{...e,[r.CV]:!0,view:t.payload.size?{...e.view,width:t.payload.size[0],height:t.payload.size[1]}:e.view}:e))}return e},layoutKey:(e,t)=>"update-node-size"===t.type?t.layoutKey:e},(e,t)=>Object.fromEntries(Object.entries(l).map((n=>{let[o,r]=n;return[o,r(e[o],t)]}))));var l},7099:(e,t,n)=>{n.d(t,{Y:()=>f});var o=n(8769),r=n.n(o),i=n(2588),a=n(6768),l=n(6308),c=n(6257),s=n(8426),d=n(9575);const u=e=>o.createElement("svg",(0,d.A)({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24"},e),o.createElement("path",{d:"M12 0a.5.5 0 0 1 .5.5v2.013a9.5 9.5 0 0 1 8.987 8.988L23.5 11.5a.5.5 0 0 1 0 1h-2.013a9.5 9.5 0 0 1-8.987 8.987V23.5a.5.5 0 0 1-1 0v-2.013A9.5 9.5 0 0 1 2.514 12.5H.5a.5.5 0 0 1 0-1h2.013A9.5 9.5 0 0 1 11.5 2.514V.5A.5.5 0 0 1 12 0M3.514 11.5H7.5a.5.5 0 0 1 0 1H3.514a8.5 8.5 0 0 0 7.987 7.986L11.5 16.5a.5.5 0 0 1 1 0v3.986a8.5 8.5 0 0 0 7.986-7.986H16.5a.5.5 0 0 1 0-1h3.986A8.5 8.5 0 0 0 12.5 3.515V7.5a.5.5 0 0 1-1 0V3.514a8.5 8.5 0 0 0-7.986 7.987zm8.486-1a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3"})),h=e=>o.createElement("svg",(0,d.A)({xmlns:"http://www.w3.org/2000/svg",width:128,height:128,className:"icon",viewBox:"0 0 1024 1024"},e),o.createElement("path",{d:"M512 76.8A435.2 435.2 0 1 0 947.2 512 435.71 435.71 0 0 0 512 76.8m0 819.2a384 384 0 1 1 384-384 384 384 0 0 1-384 384"}),o.createElement("path",{d:"M744.448 486.4h-204.8V281.6a25.6 25.6 0 1 0-51.2 0v204.8h-204.8a25.6 25.6 0 0 0 0 51.2h204.8v204.8a25.6 25.6 0 0 0 51.2 0V537.6h204.8a25.6 25.6 0 0 0 0-51.2"})),v=e=>o.createElement("svg",(0,d.A)({xmlns:"http://www.w3.org/2000/svg",width:128,height:128,className:"icon",viewBox:"0 0 1024 1024"},e),o.createElement("path",{d:"M512 76.8A435.2 435.2 0 1 0 947.2 512 435.71 435.71 0 0 0 512 76.8m0 819.2a384 384 0 1 1 384-384 384 384 0 0 1-384 384"}),o.createElement("path",{d:"M744.448 486.4H280.064a25.6 25.6 0 1 0 0 51.2h464.384a25.6 25.6 0 0 0 0-51.2"}));function f(e){let{shadowRoot:t,scale:n,scaleRange:d,onZoomChange:f,onReCenter:m}=e;const g=(0,s.useCurrentTheme)(),p=(0,o.useMemo)((()=>(0,c.VC)()),[]),w=(0,o.useRef)(null),y=100*d[0],x=100*d[1],k=100*n,E=(0,o.useMemo)((()=>({formatter:e=>`${e}%`,placement:"left",getPopupContainer:()=>w.current})),[]),b=(0,o.useCallback)((()=>{f(Math.min(k+5,x))}),[x,f,k]),C=(0,o.useCallback)((()=>{f(Math.max(k-5,y))}),[y,f,k]);return r().createElement(i.Ay,{theme:{algorithm:"dark-v2"===g?a.A.darkAlgorithm:a.A.defaultAlgorithm}},r().createElement(c.N7,{container:t,autoClear:!0,cache:p,hashPriority:"high"},r().createElement("div",{className:"zoom-bar",ref:w},r().createElement("div",{className:"center-button",onClick:m,role:"button"},r().createElement(u,null)),r().createElement("div",{className:"zoom-slider"},r().createElement("div",{className:"zoom-button",role:"button",onClick:b},r().createElement(h,null)),r().createElement(l.A,{min:y,max:x,value:k,step:5,vertical:!0,included:!1,tooltip:E,onChange:f}),r().createElement("div",{className:"zoom-button",role:"button",onClick:C},r().createElement(v,null))))))}},9127:(e,t,n)=>{n.d(t,{C:()=>c});var o=n(1030),r=n(7586),i=n.n(r),a=n(8802),l=n(531);function c(e){let{cells:t,layoutOptions:n,allowEdgeToArea:r}=e;const{nodePadding:c,...s}={nodePadding:0,rankdir:"TB",ranksep:50,edgesep:10,nodesep:50,...(0,o.pick)(n,["nodePadding","rankdir","ranksep","edgesep","nodesep","align"])},d=(0,a.D)(c);if(!t.some(l.N))return{getNodeView:()=>null,nodePaddings:d};const u=new(i().graphlib.Graph);u.setGraph(s),u.setDefaultEdgeLabel((function(){return{}}));for(const e of t)r&&(0,l.o6)(e)||(0,l.N)(e)?u.setNode(e.id,{id:e.id,width:e.view.width+d[1]+d[3],height:e.view.height+d[0]+d[2]}):(0,l.WW)(e)&&u.setEdge(e.source,e.target);return i().layout(u),{getNodeView:e=>u.node(e),nodePaddings:d}}},6170:(e,t,n)=>{n.d(t,{k:()=>h});var o=n(1030),r=n(6149),i=n(4842),a=n(1945),l=n(9418),c=n(3854),s=n(7931),d=n(531),u=n(8802);function h(e){let{cells:t,layoutOptions:n,center:h,fixedPosition:v,allowEdgeToArea:f}=e;const{nodePadding:m,collide:g}={nodePadding:0,...(0,o.pick)(n,["nodePadding"]),collide:!1!==(null==n?void 0:n.collide)&&{radiusDiff:18,strength:1,iterations:1,...!0===(null==n?void 0:n.collide)?null:null==n?void 0:n.collide}},p=(0,u.D)(m),w=[],y=[],x=new Map;for(const e of t)if(f&&(0,d.o6)(e)||(0,d.N)(e)){const t={id:e.id,width:e.view.width+p[1]+p[3],height:e.view.height+p[0]+p[2],...v?{fx:e.view.x,fy:e.view.y}:null};w.push(t),x.set(t.id,t)}else(0,d.WW)(e)&&y.push({source:e.source,target:e.target});const k=(0,r.A)(y).id((e=>e.id)),E=(0,i.A)(w).force("link",k).force("x",(0,a.A)(null==h?void 0:h[0])).force("y",(0,l.A)(null==h?void 0:h[1])).force("charge",(0,c.A)());return g&&E.force("collide",(0,s.A)().radius((e=>Math.sqrt(e.width**2+e.height**2)/2+g.radiusDiff)).strength(g.strength).iterations(g.iterations)),E.stop(),function(e){e.tick(Math.ceil(Math.log(e.alphaMin())/Math.log(1-e.alphaDecay())))}(E),{getNodeView:e=>x.get(e),nodePaddings:p}}},693:(e,t,n)=>{n.d(t,{V:()=>c});var o=n(1030),r=n(8875),i=n(4059),a=n(3239);const l=["right","top","left","bottom"];function c(e,t,n){var c,s;let{exitPosition:d,entryPosition:u}=n;const h=(0,r.G)(),v=(null===(c=h.find((e=>e.x===d.x&&e.y===d.y)))||void 0===c?void 0:c.d)??l,f=(null===(s=h.find((e=>e.x===u.x&&e.y===u.y)))||void 0===s?void 0:s.d)??l,m=[...v],g=[...f],p=e.x+d.x*e.width,w=e.y+d.y*e.height,y=t.x+u.x*t.width,x=t.y+u.y*t.height;p<y?((0,o.pull)(m,"left"),(0,o.pull)(g,"right")):((0,o.pull)(m,"right"),(0,o.pull)(g,"left")),w<x?((0,o.pull)(m,"top"),(0,o.pull)(g,"bottom")):((0,o.pull)(m,"bottom"),(0,o.pull)(g,"top"));const k=m[0]??v[0],E=g[0]??f[0],b="left"===k||"right"===k?d.y:d.x,C="left"===E||"right"===E?u.y:u.x;return(0,i.o)((0,a.T)(e,0),(0,a.T)(t,0),k,E,b,C)}},3239:(e,t,n)=>{function o(e,t){return{x:e.x+e.width/2,y:e.y+e.height/2,width:e.width+t,height:e.height+t}}n.d(t,{T:()=>o})},8875:(e,t,n)=>{n.d(t,{G:()=>r});const o=[{x:0,y:0,d:["top","left"]},{x:.5,y:0,d:["top"]},{x:1,y:0,d:["top","right"]},{x:0,y:.5,d:["left"]},{x:1,y:.5,d:["right"]},{x:0,y:1,d:["bottom","left"]},{x:.5,y:1,d:["bottom"]},{x:1,y:1,d:["bottom","right"]}];function r(){return o}},1819:(e,t,n)=>{n.d(t,{J:()=>i});var o=n(8769),r=n(8185);function i(e){let{cellsRef:t,activeTarget:n,onActiveTargetChange:i}=e;const a=n??null,[l,c]=(0,o.useState)(a);(0,o.useEffect)((()=>{c((e=>(0,r.c)(e,a)?e:a))}),[a]);const s=(0,o.useRef)(!1);return(0,o.useEffect)((()=>{s.current?i(l):s.current=!0}),[l,i]),(0,o.useEffect)((()=>{if(!l)return;const e=e=>{e.composedPath().indexOf(t.current)<=0&&c(null)};return document.addEventListener("click",e),()=>{document.removeEventListener("click",e)}}),[l,t]),l}},1484:(e,t,n)=>{n.d(t,{g:()=>v});var o=n(8769),r=n(7566),i=n(9047),a=n(3033),l=n(531),c=n(908),s=n(6170),d=n(9127);const u=new Map([["center",.5],["left",0],["right",1],["top",0],["bottom",1]]);function h(e,t){if("string"==typeof e){const n=u.get(e);if(void 0!==n)return n;const o=e.match(/^(-?\d+(?:\.\d+)?)%$/);if(o)return Number(o[1])/100;console.error("Unexpected align origin %s:",t,e)}else{if("number"==typeof e)return e;console.error("Unexpected align origin %s, expected %s, received %s:",t,"string | number",typeof e,e)}return.5}function v(e){let{layout:t,layoutOptions:n,rootRef:u,cells:v,zoomable:f,zoomer:m,scaleRange:g,layoutKey:p,allowEdgeToArea:w,dispatch:y}=e;const[x,k]=(0,o.useState)("force"!==t&&"dagre"!==t),E=(0,o.useRef)(p),b=(0,o.useCallback)((()=>++E.current),[]),[C,z]=function(e){let{rootRef:t,cells:n,layoutInitialized:s,zoomable:d,zoomer:u,scaleRange:h}=e;const[v,f]=(0,o.useState)(!1);return(0,o.useEffect)((()=>{const e=t.current;if(!e||!s||v||!n.some((e=>(0,l.N)(e)||(0,l.mH)(e)))||n.some((e=>(0,l.N)(e)&&!e[a.CV])))return;const{k:o,x:m,y:g}=(0,c.r)(n,{canvasWidth:e.clientWidth,canvasHeight:e.clientHeight,scaleRange:d?h:void 0});u.transform((0,r.A)(e),new i.uV(o,m,g)),f(!0)}),[n,v,s,t,h,d,u]),(0,o.useEffect)((()=>{n.some((e=>(0,l.N)(e)||(0,l.mH)(e)))||f(!1)}),[n]),[v,f]}({rootRef:u,layoutInitialized:x,cells:v,zoomable:f,zoomer:m,scaleRange:g}),M=(0,o.useRef)(null);return(0,o.useEffect)((()=>{if(v.some((e=>(0,l.N)(e)&&!e[a.CV]))||0===v.length)return;if("force"!==t&&"dagre"!==t)return void k(!0);if(E.current!==p||(e=M.current,o=v.filter(l.nv),(null==e?void 0:e.length)===o.length&&e.every(((e,t)=>e===o[t]))))return;var e,o;let r,i;({getNodeView:r,nodePaddings:i}="force"===t?(0,s.k)({cells:v,layoutOptions:n,allowEdgeToArea:w}):(0,d.C)({cells:v,layoutOptions:n,allowEdgeToArea:w}));const c=function(e){const t=e??[.5,.5];return[h(t[0],"x"),h(t[1],"y")]}(null==n?void 0:n.alignOrigin),u=v.map((e=>{if(w&&(0,l.o6)(e)||(0,l.N)(e)){const t=r(e.id);return{...e,view:{...e.view,x:t.x-t.width*c[0]+i[3],y:t.y-t.height*c[1]+i[0]},[a.xc]:!0}}return e}));M.current=u.filter(l.nv),y({type:"update-cells",payload:u}),k(!0)}),[v,y,t,p,n]),{centered:C,setCentered:z,getNextLayoutKey:b}}},7531:(e,t,n)=>{n.d(t,{d:()=>c});var o=n(8769),r=n(8566),i=n(1030),a=n(531),l=n(3033);function c(e){let{cells:t,defaultEdgeLines:n,markerPrefix:c,lineConnector:u}=e;return(0,o.useMemo)((()=>{const e=[{strokeColor:l.mF}];let o=null;if(u){o={...d(),...(0,i.omitBy)(!0===u?{}:u,i.isUndefined)};const t=s({strokeColor:o.strokeColor},e);o.$markerUrl=`url(#${c}${t})`}const h=new WeakMap;for(const o of t)if((0,a.WW)(o)){const t=r.__secret_internals.legacyDoTransform({edge:o},null==n?void 0:n.find((e=>(0,r.checkIfByTransform)(e,{edge:o}))))??{},a={...d(),...(0,i.omitBy)(t,i.isUndefined),...(0,i.omitBy)(o.view,i.isUndefined)};void 0===a.parallelGap&&(a.parallelGap=a.interactStrokeWidth);const l=s({strokeColor:a.strokeColor},e);a.$markerUrl=`url(#${c}${l})`,h.set(o,a)}return{lineConfMap:h,lineConnectorConf:o,markers:e}}),[t,n,u,c])}function s(e,t){let n=(0,i.findIndex)(t,e);return-1===n&&(n=t.push(e)-1),n}function d(){return{type:"auto",dashed:!1,strokeColor:l.mF,strokeWidth:l.VO,interactStrokeWidth:l.Ie,showStartArrow:l.XV,showEndArrow:l.Ub,animate:{useAnimate:!1,duration:l.Be}}}},8197:(e,t,n)=>{n.d(t,{H:()=>a});var o=n(8769),r=n(531),i=n(3033);function a(e){let{cells:t,layout:n,centered:a}=e;return(0,o.useMemo)((()=>a&&t.every((e=>!(0,r.N)(e)||e[i.CV]&&("force"!==n&&"dagre"!==n||e[i.xc])))),[t,a,n])}},8091:(e,t,n)=>{n.d(t,{f:()=>l});var o=n(8769),r=n(7566),i=n(9047),a=n(3033);function l(e){let{rootRef:t,zoomable:n,scrollable:l,pannable:c,draggable:s,ctrlDraggable:d,scaleRange:u,onSwitchActiveTarget:h}=e;const[v,f]=(0,o.useState)(!1),[m,g]=(0,o.useState)({k:1,x:0,y:0}),p=(0,o.useMemo)((()=>u??[a.sS,a.Yt]),[u]),w=(0,o.useMemo)((()=>(0,i.s_)()),[]);return(0,o.useEffect)((()=>{let e=!1;w.scaleExtent(n?p:[1,1]).on("start",(()=>{e=!1,f(!0)})).on("zoom",(t=>{e=!0,g(t.transform)})).on("end",(()=>{f(!1),e||null==h||h(null)})).filter((e=>("wheel"===e.type||(d?s||e.ctrlKey:!e.ctrlKey))&&!e.button))}),[h,p,n,w,d,s]),(0,o.useEffect)((()=>{if(d){const e=e=>{e.ctrlKey&&e.preventDefault()};return document.addEventListener("contextmenu",e,!0),()=>{document.removeEventListener("contextmenu",e,!0)}}}),[d]),(0,o.useEffect)((()=>{const e=t.current;if(!e)return;const o=(0,r.A)(e),i=()=>{o.on(".zoom",null).on(".zoom.custom",null).on("wheel",null)};if(n||l||c)return(n||l)&&o.on("wheel.zoom.custom",(e=>{e.ctrlKey||(e.stopImmediatePropagation(),l&&(e.preventDefault(),w.translateBy(o,e.wheelDeltaX/5,e.wheelDeltaY/5)))})),o.call(w).on("wheel",(e=>{e.preventDefault()})).on("dblclick.zoom",null),(s||d)&&c||o.on("mousedown.zoom",null),c||o.on("touchstart.zoom",null).on("touchmove.zoom",null).on("touchend.zoom",null),i;i()}),[d,s,c,t,l,n,w]),{grabbing:v,transform:m,zoomer:w,scaleRange:p}}},6237:(e,t,n)=>{n.d(t,{A:()=>l});var o=n(6758),r=n.n(o),i=n(935),a=n.n(i)()(r());a.push([e.id,'.zoom-bar{position:absolute;bottom:20px;right:20px;width:40px;scale:0.8}.zoom-slider,\n.center-button{width:100%;display:flex;align-items:center;border:1px solid var(--antd-background-color-base);border-radius:var(--larger-border-radius);box-shadow:var(--connected-overlay-shadow);background-color:var(--color-fill-bg-container-4)}.zoom-slider{height:140px;padding:8px 0;flex-direction:column}[role="button"]{cursor:pointer}.center-button{justify-content:center;margin-bottom:8px;height:40px}.center-button:hover{border-color:var(--antd-btn-default-hover-border-color)}.center-button path{fill:var(--antd-link-hover-color)}.center-button:hover path{fill:var(--palette-blue-7)}.zoom-button{font-size:16px;line-height:0}.zoom-button svg{width:1em;height:1em;fill:var(--antd-link-hover-color)}.zoom-slider .ant-slider-vertical{padding-inline:5px}.zoom-slider .ant-slider-vertical .ant-slider-rail{width:2px}.zoom-slider .ant-slider-vertical .ant-slider-handle{width:6px;height:6px;inset-inline-start:3px}.zoom-slider .ant-slider .ant-slider-handle:hover::before,\n.zoom-slider .ant-slider .ant-slider-handle:focus::before,\n.zoom-slider .ant-slider .ant-slider-handle::before{width:10px;height:10px;inset-inline-start:-2px}.zoom-slider .ant-slider .ant-slider-handle:hover::after,\n.zoom-slider .ant-slider .ant-slider-handle:focus::after,\n.zoom-slider .ant-slider .ant-slider-handle::after{width:6px;height:6px;inset-block-start:0;inset-inline-start:0}',""]);const l=a.toString()},3012:(e,t,n)=>{n.d(t,{A:()=>l});var o=n(6758),r=n.n(o),i=n(935),a=n.n(i)()(r());a.push([e.id,"*{box-sizing:border-box}:host{display:block;position:relative;overflow:hidden;--animation-dasharray:48;--stroke-dashoffset:96;--dasharray:4}:host,\n.root{width:100%;height:100%}:host([hidden]){display:none}.root{opacity:0}.root.ready{opacity:1}.root:focus{outline:none}@keyframes dashedAnimation{0%{stroke-dashoffset:var(--stroke-dashoffset)}to{stroke-dashoffset:0}}@keyframes solidAnimation{to{stroke-dashoffset:0}}.solid-animation{stroke-dasharray:var(--solid-length);stroke-dashoffset:var(--solid-length);animation:solidAnimation var(--time) linear infinite}.dashed-animation{animation:dashedAnimation var(--time) linear infinite}.decorator-area .area,\n.decorator-container .container{fill:rgba(119,141,195,0.1);stroke:none;stroke-width:0}.node,\n.decorator-text{overflow:visible}.cell.active .decorator-area .area,\n.cell.active .decorator-container .container,\n.cell:not(.read-only) .decorator-container .container:hover,\n.allowEdgeToArea .decorator-area .area:hover,\n.cell.active .line-active-bg{stroke:var(--palette-blue-5);stroke-dasharray:var(--dasharray);stroke-width:1}.container-active .decorator-container .container{stroke:var(--palette-blue-5);stroke-width:1}.cell:not(.read-only){-webkit-user-select:none;user-select:none}.resize-handle{cursor:nwse-resize;opacity:0}.resize-handle rect{fill:transparent;stroke:none}.resize-handle path{fill:none;stroke:var(--palette-gray-5);stroke-width:1.5}.cell.active .decorator-area .resize-handle,\n.decorator-area:hover .resize-handle,\n.decorator-container:hover .resize-handle{opacity:1}.connect-line{pointer-events:none}.connect-line:not(.connecting){display:none}.line.dashed{stroke-dasharray:var(--dasharray)}.cell.active .decorator-text .text-container{outline:1px dashed var(--palette-blue-5)}.decorator-text .text-container{width:max-content;padding:0.5em}.decorator-text .text:focus{outline:none}.cell.faded{opacity:0.3}.cell.container-active{opacity:1}.cell .node{pointer-events:none}.cell .node > *{position:fixed;pointer-events:auto}.degraded{pointer-events:bounding-box}.degraded circle{fill:rgb(119,141,195)}.degraded text{text-anchor:middle;fill:var(--antd-text-color)}.cell.active .degraded circle,\n.cell.active .degraded text,\n.degraded:hover circle,\n.degraded:hover text{fill:var(--color-brand)}.decorator-container{--defaultSize:24px}.decorator-container .text-container{display:flex;align-items:center;justify-content:center;padding:0.5em;text-align:center;font-size:16px;background-color:rgba(119,141,195,0.6);overflow:hidden}.decorator-container .horizontal{height:max-content;width:100%}:is(.decorator-container .horizontal) .text{min-height:var(--defaultSize)}.decorator-container .vertical{width:max-content;height:100%;writing-mode:vertical-lr;text-orientation:upright;letter-spacing:4px}:is(.decorator-container .vertical) .text{min-width:var(--defaultSize)}",""]);const l=a.toString()}}]);
2
+ //# sourceMappingURL=3252.0a5098f4.js.map