@abi-software/map-utilities 1.1.3-beta.0 → 1.1.3-beta.1
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.
|
@@ -445,8 +445,8 @@ Licensed under The MIT License (http://opensource.org/licenses/MIT)
|
|
|
445
445
|
`),f=t.pstyle("text-max-width").pfValue,p=t.pstyle("text-overflow-wrap").value,v=p==="anywhere",h=[],g=/[\s\u200b]+|$/g,y=0;y<d.length;y++){var m=d[y],b=this.calculateLabelDimensions(t,m),w=b.width;if(v){var C=m.split("").join(c);m=C}if(w>f){var x=m.matchAll(g),E="",k=0,B=mh(x),S;try{for(B.s();!(S=B.n()).done;){var N=S.value,D=N[0],P=m.substring(k,N.index);k=N.index+D.length;var M=E.length===0?P:E+P+D,O=this.calculateLabelDimensions(t,M),A=O.width;A<=f?E+=P+D:(E&&h.push(E),E=P+D)}}catch(z){B.e(z)}finally{B.f()}E.match(/^[\s\u200b]+$/)||h.push(E)}else h.push(m)}o("labelWrapCachedLines",h),a=o("labelWrapCachedText",h.join(`
|
|
446
446
|
`)),o("labelWrapKey",u)}else if(l==="ellipsis"){var F=t.pstyle("text-max-width").pfValue,I="",L="…",R=!1;if(this.calculateLabelDimensions(t,a).width<F)return a;for(var H=0;H<a.length;H++){var V=this.calculateLabelDimensions(t,I+a[H]+L).width;if(V>F)break;I+=a[H],H===a.length-1&&(R=!0)}return R||(I+=L),I}return a},Er.getLabelJustification=function(t){var e=t.pstyle("text-justification").strValue,r=t.pstyle("text-halign").strValue;if(e==="auto")if(t.isNode())switch(r){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return e},Er.calculateLabelDimensions=function(t,e){var r=this,n=r.cy.window(),a=n.document,i=In(e,t._private.labelDimsKey),o=r.labelDimCache||(r.labelDimCache=[]),l=o[i];if(l!=null)return l;var u=0,c=t.pstyle("font-style").strValue,d=t.pstyle("font-size").pfValue,f=t.pstyle("font-family").strValue,p=t.pstyle("font-weight").strValue,v=this.labelCalcCanvas,h=this.labelCalcCanvasContext;if(!v){v=this.labelCalcCanvas=a.createElement("canvas"),h=this.labelCalcCanvasContext=v.getContext("2d");var g=v.style;g.position="absolute",g.left="-9999px",g.top="-9999px",g.zIndex="-1",g.visibility="hidden",g.pointerEvents="none"}h.font="".concat(c," ").concat(p," ").concat(d,"px ").concat(f);for(var y=0,m=0,b=e.split(`
|
|
447
447
|
`),w=0;w<b.length;w++){var C=b[w],x=h.measureText(C),E=Math.ceil(x.width),k=d;y=Math.max(E,y),m+=k}return y+=u,m+=u,o[i]={width:y,height:m}},Er.calculateLabelAngle=function(t,e){var r=t._private,n=r.rscratch,a=t.isEdge(),i=e?e+"-":"",o=t.pstyle(i+"text-rotation"),l=o.strValue;return l==="none"?0:a&&l==="autorotate"?n.labelAutoAngle:l==="autorotate"?0:o.pfValue},Er.calculateLabelAngles=function(t){var e=this,r=t.isEdge(),n=t._private,a=n.rscratch;a.labelAngle=e.calculateLabelAngle(t),r&&(a.sourceLabelAngle=e.calculateLabelAngle(t,"source"),a.targetLabelAngle=e.calculateLabelAngle(t,"target"))};var _v={},Rv=28,$v=!1;_v.getNodeShape=function(t){var e=this,r=t.pstyle("shape").value;if(r==="cutrectangle"&&(t.width()<Rv||t.height()<Rv))return $v||(_e("The `cutrectangle` node shape can not be used at small sizes so `rectangle` is used instead"),$v=!0),"rectangle";if(t.isParent())return r==="rectangle"||r==="roundrectangle"||r==="round-rectangle"||r==="cutrectangle"||r==="cut-rectangle"||r==="barrel"?r:"rectangle";if(r==="polygon"){var n=t.pstyle("shape-polygon-points").value;return e.nodeShapes.makePolygon(n).name}return r};var ws={};ws.registerCalculationListeners=function(){var t=this.cy,e=t.collection(),r=this,n=function(o){var l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(e.merge(o),l)for(var u=0;u<o.length;u++){var c=o[u],d=c._private,f=d.rstyle;f.clean=!1,f.cleanConnected=!1}};r.binder(t).on("bounds.* dirty.*",function(o){var l=o.target;n(l)}).on("style.* background.*",function(o){var l=o.target;n(l,!1)});var a=function(o){if(o){var l=r.onUpdateEleCalcsFns;e.cleanStyle();for(var u=0;u<e.length;u++){var c=e[u],d=c._private.rstyle;c.isNode()&&!d.cleanConnected&&(n(c.connectedEdges()),d.cleanConnected=!0)}if(l)for(var f=0;f<l.length;f++){var p=l[f];p(o,e)}r.recalculateRenderedStyle(e),e=t.collection()}};r.flushRenderedStyleQueue=function(){a(!0)},r.beforeRender(a,r.beforeRenderPriorities.eleCalcs)},ws.onUpdateEleCalcs=function(t){var e=this.onUpdateEleCalcsFns=this.onUpdateEleCalcsFns||[];e.push(t)},ws.recalculateRenderedStyle=function(t,e){var r=function(C){return C._private.rstyle.cleanConnected},n=[],a=[];if(!this.destroyed){e===void 0&&(e=!0);for(var i=0;i<t.length;i++){var o=t[i],l=o._private,u=l.rstyle;o.isEdge()&&(!r(o.source())||!r(o.target()))&&(u.clean=!1),!(e&&u.clean||o.removed())&&o.pstyle("display").value!=="none"&&(l.group==="nodes"?a.push(o):n.push(o),u.clean=!0)}for(var c=0;c<a.length;c++){var d=a[c],f=d._private,p=f.rstyle,v=d.position();this.recalculateNodeLabelProjection(d),p.nodeX=v.x,p.nodeY=v.y,p.nodeW=d.pstyle("width").pfValue,p.nodeH=d.pstyle("height").pfValue}this.recalculateEdgeProjections(n);for(var h=0;h<n.length;h++){var g=n[h],y=g._private,m=y.rstyle,b=y.rscratch;m.srcX=b.arrowStartX,m.srcY=b.arrowStartY,m.tgtX=b.arrowEndX,m.tgtY=b.arrowEndY,m.midX=b.midX,m.midY=b.midY,m.labelAngle=b.labelAngle,m.sourceLabelAngle=b.sourceLabelAngle,m.targetLabelAngle=b.targetLabelAngle}}};var Cs={};Cs.updateCachedGrabbedEles=function(){var t=this.cachedZSortedEles;if(t){t.drag=[],t.nondrag=[];for(var e=[],r=0;r<t.length;r++){var n=t[r],a=n._private.rscratch;n.grabbed()&&!n.isParent()?e.push(n):a.inDragLayer?t.drag.push(n):t.nondrag.push(n)}for(var r=0;r<e.length;r++){var n=e[r];t.drag.push(n)}}},Cs.invalidateCachedZSortedEles=function(){this.cachedZSortedEles=null},Cs.getCachedZSortedEles=function(t){if(t||!this.cachedZSortedEles){var e=this.cy.mutableElements().toArray();e.sort(tv),e.interactive=e.filter(function(r){return r.interactive()}),this.cachedZSortedEles=e,this.updateCachedGrabbedEles()}else e=this.cachedZSortedEles;return e};var Vv={};[Kn,ms,Pt,Vi,Nc,Er,_v,ws,Cs].forEach(function(t){xe(Vv,t)});var zv={};zv.getCachedImage=function(t,e,r){var n=this,a=n.imageCache=n.imageCache||{},i=a[t];if(i)return i.image.complete||i.image.addEventListener("load",r),i.image;i=a[t]=a[t]||{};var o=i.image=new Image;o.addEventListener("load",r),o.addEventListener("error",function(){o.error=!0});var l="data:",u=t.substring(0,l.length).toLowerCase()===l;return u||(e=e==="null"?null:e,o.crossOrigin=e),o.src=t,o};var Aa={};Aa.registerBinding=function(t,e,r,n){var a=Array.prototype.slice.apply(arguments,[1]),i=this.binder(t);return i.on.apply(i,a)},Aa.binder=function(t){var e=this,r=e.cy.window(),n=t===r||t===r.document||t===r.document.body||tT(t);if(e.supportsPassiveEvents==null){var a=!1;try{var i=Object.defineProperty({},"passive",{get:function(){return a=!0,!0}});r.addEventListener("test",null,i)}catch{}e.supportsPassiveEvents=a}var o=function(u,c,d){var f=Array.prototype.slice.call(arguments);return n&&e.supportsPassiveEvents&&(f[2]={capture:d??!1,passive:!1,once:!1}),e.bindings.push({target:t,args:f}),(t.addEventListener||t.on).apply(t,f),this};return{on:o,addEventListener:o,addListener:o,bind:o}},Aa.nodeIsDraggable=function(t){return t&&t.isNode()&&!t.locked()&&t.grabbable()},Aa.nodeIsGrabbable=function(t){return this.nodeIsDraggable(t)&&t.interactive()},Aa.load=function(){var t=this,e=t.cy.window(),r=function(T){return T.selected()},n=function(T,$,Q,G){T==null&&(T=t.cy);for(var U=0;U<$.length;U++){var ie=$[U];T.emit({originalEvent:Q,type:ie,position:G})}},a=function(T){return T.shiftKey||T.metaKey||T.ctrlKey},i=function(T,$){var Q=!0;if(t.cy.hasCompoundNodes()&&T&&T.pannable())for(var G=0;$&&G<$.length;G++){var T=$[G];if(T.isNode()&&T.isParent()&&!T.pannable()){Q=!1;break}}else Q=!0;return Q},o=function(T){T[0]._private.grabbed=!0},l=function(T){T[0]._private.grabbed=!1},u=function(T){T[0]._private.rscratch.inDragLayer=!0},c=function(T){T[0]._private.rscratch.inDragLayer=!1},d=function(T){T[0]._private.rscratch.isGrabTarget=!0},f=function(T){T[0]._private.rscratch.isGrabTarget=!1},p=function(T,$){var Q=$.addToList,G=Q.has(T);!G&&T.grabbable()&&!T.locked()&&(Q.merge(T),o(T))},v=function(T,$){if(T.cy().hasCompoundNodes()&&!($.inDragLayer==null&&$.addToList==null)){var Q=T.descendants();$.inDragLayer&&(Q.forEach(u),Q.connectedEdges().forEach(u)),$.addToList&&p(Q,$)}},h=function(T,$){$=$||{};var Q=T.cy().hasCompoundNodes();$.inDragLayer&&(T.forEach(u),T.neighborhood().stdFilter(function(G){return!Q||G.isEdge()}).forEach(u)),$.addToList&&T.forEach(function(G){p(G,$)}),v(T,$),m(T,{inDragLayer:$.inDragLayer}),t.updateCachedGrabbedEles()},g=h,y=function(T){T&&(t.getCachedZSortedEles().forEach(function($){l($),c($),f($)}),t.updateCachedGrabbedEles())},m=function(T,$){if(!($.inDragLayer==null&&$.addToList==null)&&T.cy().hasCompoundNodes()){var Q=T.ancestors().orphans();if(!Q.same(T)){var G=Q.descendants().spawnSelf().merge(Q).unmerge(T).unmerge(T.descendants()),U=G.connectedEdges();$.inDragLayer&&(U.forEach(u),G.forEach(u)),$.addToList&&G.forEach(function(ie){p(ie,$)})}}},b=function(){document.activeElement!=null&&document.activeElement.blur!=null&&document.activeElement.blur()},w=typeof MutationObserver<"u",C=typeof ResizeObserver<"u";w?(t.removeObserver=new MutationObserver(function(te){for(var T=0;T<te.length;T++){var $=te[T],Q=$.removedNodes;if(Q)for(var G=0;G<Q.length;G++){var U=Q[G];if(U===t.container){t.destroy();break}}}}),t.container.parentNode&&t.removeObserver.observe(t.container.parentNode,{childList:!0})):t.registerBinding(t.container,"DOMNodeRemoved",function(te){t.destroy()});var x=Fo(function(){t.cy.resize()},100);w&&(t.styleObserver=new MutationObserver(x),t.styleObserver.observe(t.container,{attributes:!0})),t.registerBinding(e,"resize",x),C&&(t.resizeObserver=new ResizeObserver(x),t.resizeObserver.observe(t.container));var E=function(T,$){for(;T!=null;)$(T),T=T.parentNode},k=function(){t.invalidateContainerClientCoordsCache()};E(t.container,function(te){t.registerBinding(te,"transitionend",k),t.registerBinding(te,"animationend",k),t.registerBinding(te,"scroll",k)}),t.registerBinding(t.container,"contextmenu",function(te){te.preventDefault()});var B=function(){return t.selection[4]!==0},S=function(T){for(var $=t.findContainerClientCoords(),Q=$[0],G=$[1],U=$[2],ie=$[3],X=T.touches?T.touches:[T],ae=!1,we=0;we<X.length;we++){var Ce=X[we];if(Q<=Ce.clientX&&Ce.clientX<=Q+U&&G<=Ce.clientY&&Ce.clientY<=G+ie){ae=!0;break}}if(!ae)return!1;for(var ge=t.container,Se=T.target,ve=Se.parentNode,ye=!1;ve;){if(ve===ge){ye=!0;break}ve=ve.parentNode}return!!ye};t.registerBinding(t.container,"mousedown",function(T){if(S(T)&&!(t.hoverData.which===1&&T.which!==1)){T.preventDefault(),b(),t.hoverData.capture=!0,t.hoverData.which=T.which;var $=t.cy,Q=[T.clientX,T.clientY],G=t.projectIntoViewport(Q[0],Q[1]),U=t.selection,ie=t.findNearestElements(G[0],G[1],!0,!1),X=ie[0],ae=t.dragData.possibleDragElements;t.hoverData.mdownPos=G,t.hoverData.mdownGPos=Q;var we=function(){t.hoverData.tapholdCancelled=!1,clearTimeout(t.hoverData.tapholdTimeout),t.hoverData.tapholdTimeout=setTimeout(function(){if(!t.hoverData.tapholdCancelled){var Ge=t.hoverData.down;Ge?Ge.emit({originalEvent:T,type:"taphold",position:{x:G[0],y:G[1]}}):$.emit({originalEvent:T,type:"taphold",position:{x:G[0],y:G[1]}})}},t.tapholdDuration)};if(T.which==3){t.hoverData.cxtStarted=!0;var Ce={originalEvent:T,type:"cxttapstart",position:{x:G[0],y:G[1]}};X?(X.activate(),X.emit(Ce),t.hoverData.down=X):$.emit(Ce),t.hoverData.downTime=new Date().getTime(),t.hoverData.cxtDragged=!1}else if(T.which==1){X&&X.activate();{if(X!=null&&t.nodeIsGrabbable(X)){var ge=function(Ge){return{originalEvent:T,type:Ge,position:{x:G[0],y:G[1]}}},Se=function(Ge){Ge.emit(ge("grab"))};if(d(X),!X.selected())ae=t.dragData.possibleDragElements=$.collection(),g(X,{addToList:ae}),X.emit(ge("grabon")).emit(ge("grab"));else{ae=t.dragData.possibleDragElements=$.collection();var ve=$.$(function(ye){return ye.isNode()&&ye.selected()&&t.nodeIsGrabbable(ye)});h(ve,{addToList:ae}),X.emit(ge("grabon")),ve.forEach(Se)}t.redrawHint("eles",!0),t.redrawHint("drag",!0)}t.hoverData.down=X,t.hoverData.downs=ie,t.hoverData.downTime=new Date().getTime()}n(X,["mousedown","tapstart","vmousedown"],T,{x:G[0],y:G[1]}),X==null?(U[4]=1,t.data.bgActivePosistion={x:G[0],y:G[1]},t.redrawHint("select",!0),t.redraw()):X.pannable()&&(U[4]=1),we()}U[0]=U[2]=G[0],U[1]=U[3]=G[1]}},!1),t.registerBinding(e,"mousemove",function(T){var $=t.hoverData.capture;if(!(!$&&!S(T))){var Q=!1,G=t.cy,U=G.zoom(),ie=[T.clientX,T.clientY],X=t.projectIntoViewport(ie[0],ie[1]),ae=t.hoverData.mdownPos,we=t.hoverData.mdownGPos,Ce=t.selection,ge=null;!t.hoverData.draggingEles&&!t.hoverData.dragging&&!t.hoverData.selecting&&(ge=t.findNearestElement(X[0],X[1],!0,!1));var Se=t.hoverData.last,ve=t.hoverData.down,ye=[X[0]-Ce[2],X[1]-Ce[3]],Ge=t.dragData.possibleDragElements,$e;if(we){var rt=ie[0]-we[0],nt=rt*rt,Qe=ie[1]-we[1],Ot=Qe*Qe,ut=nt+Ot;t.hoverData.isOverThresholdDrag=$e=ut>=t.desktopTapThreshold2}var ht=a(T);$e&&(t.hoverData.tapholdCancelled=!0);var Wt=function(){var q=t.hoverData.dragDelta=t.hoverData.dragDelta||[];q.length===0?(q.push(ye[0]),q.push(ye[1])):(q[0]+=ye[0],q[1]+=ye[1])};Q=!0,n(ge,["mousemove","vmousemove","tapdrag"],T,{x:X[0],y:X[1]});var Ft=function(){t.data.bgActivePosistion=void 0,t.hoverData.selecting||G.emit({originalEvent:T,type:"boxstart",position:{x:X[0],y:X[1]}}),Ce[4]=1,t.hoverData.selecting=!0,t.redrawHint("select",!0),t.redraw()};if(t.hoverData.which===3){if($e){var Mt={originalEvent:T,type:"cxtdrag",position:{x:X[0],y:X[1]}};ve?ve.emit(Mt):G.emit(Mt),t.hoverData.cxtDragged=!0,(!t.hoverData.cxtOver||ge!==t.hoverData.cxtOver)&&(t.hoverData.cxtOver&&t.hoverData.cxtOver.emit({originalEvent:T,type:"cxtdragout",position:{x:X[0],y:X[1]}}),t.hoverData.cxtOver=ge,ge&&ge.emit({originalEvent:T,type:"cxtdragover",position:{x:X[0],y:X[1]}}))}}else if(t.hoverData.dragging){if(Q=!0,G.panningEnabled()&&G.userPanningEnabled()){var tr;if(t.hoverData.justStartedPan){var dr=t.hoverData.mdownPos;tr={x:(X[0]-dr[0])*U,y:(X[1]-dr[1])*U},t.hoverData.justStartedPan=!1}else tr={x:ye[0]*U,y:ye[1]*U};G.panBy(tr),G.emit("dragpan"),t.hoverData.dragged=!0}X=t.projectIntoViewport(T.clientX,T.clientY)}else if(Ce[4]==1&&(ve==null||ve.pannable())){if($e){if(!t.hoverData.dragging&&G.boxSelectionEnabled()&&(ht||!G.panningEnabled()||!G.userPanningEnabled()))Ft();else if(!t.hoverData.selecting&&G.panningEnabled()&&G.userPanningEnabled()){var Kt=i(ve,t.hoverData.downs);Kt&&(t.hoverData.dragging=!0,t.hoverData.justStartedPan=!0,Ce[4]=0,t.data.bgActivePosistion=ma(ae),t.redrawHint("select",!0),t.redraw())}ve&&ve.pannable()&&ve.active()&&ve.unactivate()}}else{if(ve&&ve.pannable()&&ve.active()&&ve.unactivate(),(!ve||!ve.grabbed())&&ge!=Se&&(Se&&n(Se,["mouseout","tapdragout"],T,{x:X[0],y:X[1]}),ge&&n(ge,["mouseover","tapdragover"],T,{x:X[0],y:X[1]}),t.hoverData.last=ge),ve)if($e){if(G.boxSelectionEnabled()&&ht)ve&&ve.grabbed()&&(y(Ge),ve.emit("freeon"),Ge.emit("free"),t.dragData.didDrag&&(ve.emit("dragfreeon"),Ge.emit("dragfree"))),Ft();else if(ve&&ve.grabbed()&&t.nodeIsDraggable(ve)){var Je=!t.dragData.didDrag;Je&&t.redrawHint("eles",!0),t.dragData.didDrag=!0,t.hoverData.draggingEles||h(Ge,{inDragLayer:!0});var at={x:0,y:0};if(le(ye[0])&&le(ye[1])&&(at.x+=ye[0],at.y+=ye[1],Je)){var pt=t.hoverData.dragDelta;pt&&le(pt[0])&&le(pt[1])&&(at.x+=pt[0],at.y+=pt[1])}t.hoverData.draggingEles=!0,Ge.silentShift(at).emit("position drag"),t.redrawHint("drag",!0),t.redraw()}}else Wt();Q=!0}if(Ce[2]=X[0],Ce[3]=X[1],Q)return T.stopPropagation&&T.stopPropagation(),T.preventDefault&&T.preventDefault(),!1}},!1);var N,D,P;t.registerBinding(e,"mouseup",function(T){if(!(t.hoverData.which===1&&T.which!==1&&t.hoverData.capture)){var $=t.hoverData.capture;if($){t.hoverData.capture=!1;var Q=t.cy,G=t.projectIntoViewport(T.clientX,T.clientY),U=t.selection,ie=t.findNearestElement(G[0],G[1],!0,!1),X=t.dragData.possibleDragElements,ae=t.hoverData.down,we=a(T);if(t.data.bgActivePosistion&&(t.redrawHint("select",!0),t.redraw()),t.hoverData.tapholdCancelled=!0,t.data.bgActivePosistion=void 0,ae&&ae.unactivate(),t.hoverData.which===3){var Ce={originalEvent:T,type:"cxttapend",position:{x:G[0],y:G[1]}};if(ae?ae.emit(Ce):Q.emit(Ce),!t.hoverData.cxtDragged){var ge={originalEvent:T,type:"cxttap",position:{x:G[0],y:G[1]}};ae?ae.emit(ge):Q.emit(ge)}t.hoverData.cxtDragged=!1,t.hoverData.which=null}else if(t.hoverData.which===1){if(n(ie,["mouseup","tapend","vmouseup"],T,{x:G[0],y:G[1]}),!t.dragData.didDrag&&!t.hoverData.dragged&&!t.hoverData.selecting&&!t.hoverData.isOverThresholdDrag&&(n(ae,["click","tap","vclick"],T,{x:G[0],y:G[1]}),D=!1,T.timeStamp-P<=Q.multiClickDebounceTime()?(N&&clearTimeout(N),D=!0,P=null,n(ae,["dblclick","dbltap","vdblclick"],T,{x:G[0],y:G[1]})):(N=setTimeout(function(){D||n(ae,["oneclick","onetap","voneclick"],T,{x:G[0],y:G[1]})},Q.multiClickDebounceTime()),P=T.timeStamp)),ae==null&&!t.dragData.didDrag&&!t.hoverData.selecting&&!t.hoverData.dragged&&!a(T)&&(Q.$(r).unselect(["tapunselect"]),X.length>0&&t.redrawHint("eles",!0),t.dragData.possibleDragElements=X=Q.collection()),ie==ae&&!t.dragData.didDrag&&!t.hoverData.selecting&&ie!=null&&ie._private.selectable&&(t.hoverData.dragging||(Q.selectionType()==="additive"||we?ie.selected()?ie.unselect(["tapunselect"]):ie.select(["tapselect"]):we||(Q.$(r).unmerge(ie).unselect(["tapunselect"]),ie.select(["tapselect"]))),t.redrawHint("eles",!0)),t.hoverData.selecting){var Se=Q.collection(t.getAllInBox(U[0],U[1],U[2],U[3]));t.redrawHint("select",!0),Se.length>0&&t.redrawHint("eles",!0),Q.emit({type:"boxend",originalEvent:T,position:{x:G[0],y:G[1]}});var ve=function($e){return $e.selectable()&&!$e.selected()};Q.selectionType()==="additive"||we||Q.$(r).unmerge(Se).unselect(),Se.emit("box").stdFilter(ve).select().emit("boxselect"),t.redraw()}if(t.hoverData.dragging&&(t.hoverData.dragging=!1,t.redrawHint("select",!0),t.redrawHint("eles",!0),t.redraw()),!U[4]){t.redrawHint("drag",!0),t.redrawHint("eles",!0);var ye=ae&&ae.grabbed();y(X),ye&&(ae.emit("freeon"),X.emit("free"),t.dragData.didDrag&&(ae.emit("dragfreeon"),X.emit("dragfree")))}}U[4]=0,t.hoverData.down=null,t.hoverData.cxtStarted=!1,t.hoverData.draggingEles=!1,t.hoverData.selecting=!1,t.hoverData.isOverThresholdDrag=!1,t.dragData.didDrag=!1,t.hoverData.dragged=!1,t.hoverData.dragDelta=[],t.hoverData.mdownPos=null,t.hoverData.mdownGPos=null,t.hoverData.which=null}}},!1);var M=function(T){if(!t.scrollingPage){var $=t.cy,Q=$.zoom(),G=$.pan(),U=t.projectIntoViewport(T.clientX,T.clientY),ie=[U[0]*Q+G.x,U[1]*Q+G.y];if(t.hoverData.draggingEles||t.hoverData.dragging||t.hoverData.cxtStarted||B()){T.preventDefault();return}if($.panningEnabled()&&$.userPanningEnabled()&&$.zoomingEnabled()&&$.userZoomingEnabled()){T.preventDefault(),t.data.wheelZooming=!0,clearTimeout(t.data.wheelTimeout),t.data.wheelTimeout=setTimeout(function(){t.data.wheelZooming=!1,t.redrawHint("eles",!0),t.redraw()},150);var X;T.deltaY!=null?X=T.deltaY/-250:T.wheelDeltaY!=null?X=T.wheelDeltaY/1e3:X=T.wheelDelta/1e3,X=X*t.wheelSensitivity;var ae=T.deltaMode===1;ae&&(X*=33);var we=$.zoom()*Math.pow(10,X);T.type==="gesturechange"&&(we=t.gestureStartZoom*T.scale),$.zoom({level:we,renderedPosition:{x:ie[0],y:ie[1]}}),$.emit(T.type==="gesturechange"?"pinchzoom":"scrollzoom")}}};t.registerBinding(t.container,"wheel",M,!0),t.registerBinding(e,"scroll",function(T){t.scrollingPage=!0,clearTimeout(t.scrollingPageTimeout),t.scrollingPageTimeout=setTimeout(function(){t.scrollingPage=!1},250)},!0),t.registerBinding(t.container,"gesturestart",function(T){t.gestureStartZoom=t.cy.zoom(),t.hasTouchStarted||T.preventDefault()},!0),t.registerBinding(t.container,"gesturechange",function(te){t.hasTouchStarted||M(te)},!0),t.registerBinding(t.container,"mouseout",function(T){var $=t.projectIntoViewport(T.clientX,T.clientY);t.cy.emit({originalEvent:T,type:"mouseout",position:{x:$[0],y:$[1]}})},!1),t.registerBinding(t.container,"mouseover",function(T){var $=t.projectIntoViewport(T.clientX,T.clientY);t.cy.emit({originalEvent:T,type:"mouseover",position:{x:$[0],y:$[1]}})},!1);var O,A,F,I,L,R,H,V,z,j,ee,J,Z,re=function(T,$,Q,G){return Math.sqrt((Q-T)*(Q-T)+(G-$)*(G-$))},Y=function(T,$,Q,G){return(Q-T)*(Q-T)+(G-$)*(G-$)},_;t.registerBinding(t.container,"touchstart",_=function(T){if(t.hasTouchStarted=!0,!!S(T)){b(),t.touchData.capture=!0,t.data.bgActivePosistion=void 0;var $=t.cy,Q=t.touchData.now,G=t.touchData.earlier;if(T.touches[0]){var U=t.projectIntoViewport(T.touches[0].clientX,T.touches[0].clientY);Q[0]=U[0],Q[1]=U[1]}if(T.touches[1]){var U=t.projectIntoViewport(T.touches[1].clientX,T.touches[1].clientY);Q[2]=U[0],Q[3]=U[1]}if(T.touches[2]){var U=t.projectIntoViewport(T.touches[2].clientX,T.touches[2].clientY);Q[4]=U[0],Q[5]=U[1]}if(T.touches[1]){t.touchData.singleTouchMoved=!0,y(t.dragData.touchDragEles);var ie=t.findContainerClientCoords();z=ie[0],j=ie[1],ee=ie[2],J=ie[3],O=T.touches[0].clientX-z,A=T.touches[0].clientY-j,F=T.touches[1].clientX-z,I=T.touches[1].clientY-j,Z=0<=O&&O<=ee&&0<=F&&F<=ee&&0<=A&&A<=J&&0<=I&&I<=J;var X=$.pan(),ae=$.zoom();L=re(O,A,F,I),R=Y(O,A,F,I),H=[(O+F)/2,(A+I)/2],V=[(H[0]-X.x)/ae,(H[1]-X.y)/ae];var we=200,Ce=we*we;if(R<Ce&&!T.touches[2]){var ge=t.findNearestElement(Q[0],Q[1],!0,!0),Se=t.findNearestElement(Q[2],Q[3],!0,!0);ge&&ge.isNode()?(ge.activate().emit({originalEvent:T,type:"cxttapstart",position:{x:Q[0],y:Q[1]}}),t.touchData.start=ge):Se&&Se.isNode()?(Se.activate().emit({originalEvent:T,type:"cxttapstart",position:{x:Q[0],y:Q[1]}}),t.touchData.start=Se):$.emit({originalEvent:T,type:"cxttapstart",position:{x:Q[0],y:Q[1]}}),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!0,t.touchData.cxtDragged=!1,t.data.bgActivePosistion=void 0,t.redraw();return}}if(T.touches[2])$.boxSelectionEnabled()&&T.preventDefault();else if(!T.touches[1]){if(T.touches[0]){var ve=t.findNearestElements(Q[0],Q[1],!0,!0),ye=ve[0];if(ye!=null&&(ye.activate(),t.touchData.start=ye,t.touchData.starts=ve,t.nodeIsGrabbable(ye))){var Ge=t.dragData.touchDragEles=$.collection(),$e=null;t.redrawHint("eles",!0),t.redrawHint("drag",!0),ye.selected()?($e=$.$(function(ut){return ut.selected()&&t.nodeIsGrabbable(ut)}),h($e,{addToList:Ge})):g(ye,{addToList:Ge}),d(ye);var rt=function(ht){return{originalEvent:T,type:ht,position:{x:Q[0],y:Q[1]}}};ye.emit(rt("grabon")),$e?$e.forEach(function(ut){ut.emit(rt("grab"))}):ye.emit(rt("grab"))}n(ye,["touchstart","tapstart","vmousedown"],T,{x:Q[0],y:Q[1]}),ye==null&&(t.data.bgActivePosistion={x:U[0],y:U[1]},t.redrawHint("select",!0),t.redraw()),t.touchData.singleTouchMoved=!1,t.touchData.singleTouchStartTime=+new Date,clearTimeout(t.touchData.tapholdTimeout),t.touchData.tapholdTimeout=setTimeout(function(){t.touchData.singleTouchMoved===!1&&!t.pinching&&!t.touchData.selecting&&n(t.touchData.start,["taphold"],T,{x:Q[0],y:Q[1]})},t.tapholdDuration)}}if(T.touches.length>=1){for(var nt=t.touchData.startPosition=[null,null,null,null,null,null],Qe=0;Qe<Q.length;Qe++)nt[Qe]=G[Qe]=Q[Qe];var Ot=T.touches[0];t.touchData.startGPosition=[Ot.clientX,Ot.clientY]}}},!1);var K;t.registerBinding(e,"touchmove",K=function(T){var $=t.touchData.capture;if(!(!$&&!S(T))){var Q=t.selection,G=t.cy,U=t.touchData.now,ie=t.touchData.earlier,X=G.zoom();if(T.touches[0]){var ae=t.projectIntoViewport(T.touches[0].clientX,T.touches[0].clientY);U[0]=ae[0],U[1]=ae[1]}if(T.touches[1]){var ae=t.projectIntoViewport(T.touches[1].clientX,T.touches[1].clientY);U[2]=ae[0],U[3]=ae[1]}if(T.touches[2]){var ae=t.projectIntoViewport(T.touches[2].clientX,T.touches[2].clientY);U[4]=ae[0],U[5]=ae[1]}var we=t.touchData.startGPosition,Ce;if($&&T.touches[0]&&we){for(var ge=[],Se=0;Se<U.length;Se++)ge[Se]=U[Se]-ie[Se];var ve=T.touches[0].clientX-we[0],ye=ve*ve,Ge=T.touches[0].clientY-we[1],$e=Ge*Ge,rt=ye+$e;Ce=rt>=t.touchTapThreshold2}if($&&t.touchData.cxt){T.preventDefault();var nt=T.touches[0].clientX-z,Qe=T.touches[0].clientY-j,Ot=T.touches[1].clientX-z,ut=T.touches[1].clientY-j,ht=Y(nt,Qe,Ot,ut),Wt=ht/R,Ft=150,Mt=Ft*Ft,tr=1.5,dr=tr*tr;if(Wt>=dr||ht>=Mt){t.touchData.cxt=!1,t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var Kt={originalEvent:T,type:"cxttapend",position:{x:U[0],y:U[1]}};t.touchData.start?(t.touchData.start.unactivate().emit(Kt),t.touchData.start=null):G.emit(Kt)}}if($&&t.touchData.cxt){var Kt={originalEvent:T,type:"cxtdrag",position:{x:U[0],y:U[1]}};t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.touchData.start?t.touchData.start.emit(Kt):G.emit(Kt),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxtDragged=!0;var Je=t.findNearestElement(U[0],U[1],!0,!0);(!t.touchData.cxtOver||Je!==t.touchData.cxtOver)&&(t.touchData.cxtOver&&t.touchData.cxtOver.emit({originalEvent:T,type:"cxtdragout",position:{x:U[0],y:U[1]}}),t.touchData.cxtOver=Je,Je&&Je.emit({originalEvent:T,type:"cxtdragover",position:{x:U[0],y:U[1]}}))}else if($&&T.touches[2]&&G.boxSelectionEnabled())T.preventDefault(),t.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,t.touchData.selecting||G.emit({originalEvent:T,type:"boxstart",position:{x:U[0],y:U[1]}}),t.touchData.selecting=!0,t.touchData.didSelect=!0,Q[4]=1,!Q||Q.length===0||Q[0]===void 0?(Q[0]=(U[0]+U[2]+U[4])/3,Q[1]=(U[1]+U[3]+U[5])/3,Q[2]=(U[0]+U[2]+U[4])/3+1,Q[3]=(U[1]+U[3]+U[5])/3+1):(Q[2]=(U[0]+U[2]+U[4])/3,Q[3]=(U[1]+U[3]+U[5])/3),t.redrawHint("select",!0),t.redraw();else if($&&T.touches[1]&&!t.touchData.didSelect&&G.zoomingEnabled()&&G.panningEnabled()&&G.userZoomingEnabled()&&G.userPanningEnabled()){T.preventDefault(),t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var at=t.dragData.touchDragEles;if(at){t.redrawHint("drag",!0);for(var pt=0;pt<at.length;pt++){var mn=at[pt]._private;mn.grabbed=!1,mn.rscratch.inDragLayer=!1}}var q=t.touchData.start,nt=T.touches[0].clientX-z,Qe=T.touches[0].clientY-j,Ot=T.touches[1].clientX-z,ut=T.touches[1].clientY-j,ce=re(nt,Qe,Ot,ut),Oe=ce/L;if(Z){var ze=nt-O,Tr=Qe-A,yn=Ot-F,za=ut-I,Kr=(ze+yn)/2,rr=(Tr+za)/2,bn=G.zoom(),_c=bn*Oe,Ss=G.pan(),fg=V[0]*bn+Ss.x,hg=V[1]*bn+Ss.y,L3={x:-_c/bn*(fg-Ss.x-Kr)+fg,y:-_c/bn*(hg-Ss.y-rr)+hg};if(q&&q.active()){var at=t.dragData.touchDragEles;y(at),t.redrawHint("drag",!0),t.redrawHint("eles",!0),q.unactivate().emit("freeon"),at.emit("free"),t.dragData.didDrag&&(q.emit("dragfreeon"),at.emit("dragfree"))}G.viewport({zoom:_c,pan:L3,cancelOnFailedZoom:!0}),G.emit("pinchzoom"),L=ce,O=nt,A=Qe,F=Ot,I=ut,t.pinching=!0}if(T.touches[0]){var ae=t.projectIntoViewport(T.touches[0].clientX,T.touches[0].clientY);U[0]=ae[0],U[1]=ae[1]}if(T.touches[1]){var ae=t.projectIntoViewport(T.touches[1].clientX,T.touches[1].clientY);U[2]=ae[0],U[3]=ae[1]}if(T.touches[2]){var ae=t.projectIntoViewport(T.touches[2].clientX,T.touches[2].clientY);U[4]=ae[0],U[5]=ae[1]}}else if(T.touches[0]&&!t.touchData.didSelect){var fr=t.touchData.start,Rc=t.touchData.last,Je;if(!t.hoverData.draggingEles&&!t.swipePanning&&(Je=t.findNearestElement(U[0],U[1],!0,!0)),$&&fr!=null&&T.preventDefault(),$&&fr!=null&&t.nodeIsDraggable(fr))if(Ce){var at=t.dragData.touchDragEles,pg=!t.dragData.didDrag;pg&&h(at,{inDragLayer:!0}),t.dragData.didDrag=!0;var Ui={x:0,y:0};if(le(ge[0])&&le(ge[1])&&(Ui.x+=ge[0],Ui.y+=ge[1],pg)){t.redrawHint("eles",!0);var hr=t.touchData.dragDelta;hr&&le(hr[0])&&le(hr[1])&&(Ui.x+=hr[0],Ui.y+=hr[1])}t.hoverData.draggingEles=!0,at.silentShift(Ui).emit("position drag"),t.redrawHint("drag",!0),t.touchData.startPosition[0]==ie[0]&&t.touchData.startPosition[1]==ie[1]&&t.redrawHint("eles",!0),t.redraw()}else{var hr=t.touchData.dragDelta=t.touchData.dragDelta||[];hr.length===0?(hr.push(ge[0]),hr.push(ge[1])):(hr[0]+=ge[0],hr[1]+=ge[1])}if(n(fr||Je,["touchmove","tapdrag","vmousemove"],T,{x:U[0],y:U[1]}),(!fr||!fr.grabbed())&&Je!=Rc&&(Rc&&Rc.emit({originalEvent:T,type:"tapdragout",position:{x:U[0],y:U[1]}}),Je&&Je.emit({originalEvent:T,type:"tapdragover",position:{x:U[0],y:U[1]}})),t.touchData.last=Je,$)for(var pt=0;pt<U.length;pt++)U[pt]&&t.touchData.startPosition[pt]&&Ce&&(t.touchData.singleTouchMoved=!0);if($&&(fr==null||fr.pannable())&&G.panningEnabled()&&G.userPanningEnabled()){var I3=i(fr,t.touchData.starts);I3&&(T.preventDefault(),t.data.bgActivePosistion||(t.data.bgActivePosistion=ma(t.touchData.startPosition)),t.swipePanning?(G.panBy({x:ge[0]*X,y:ge[1]*X}),G.emit("dragpan")):Ce&&(t.swipePanning=!0,G.panBy({x:ve*X,y:Ge*X}),G.emit("dragpan"),fr&&(fr.unactivate(),t.redrawHint("select",!0),t.touchData.start=null)));var ae=t.projectIntoViewport(T.touches[0].clientX,T.touches[0].clientY);U[0]=ae[0],U[1]=ae[1]}}for(var Se=0;Se<U.length;Se++)ie[Se]=U[Se];$&&T.touches.length>0&&!t.hoverData.draggingEles&&!t.swipePanning&&t.data.bgActivePosistion!=null&&(t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.redraw())}},!1);var W;t.registerBinding(e,"touchcancel",W=function(T){var $=t.touchData.start;t.touchData.capture=!1,$&&$.unactivate()});var oe,he,ne,se;if(t.registerBinding(e,"touchend",oe=function(T){var $=t.touchData.start,Q=t.touchData.capture;if(Q)T.touches.length===0&&(t.touchData.capture=!1),T.preventDefault();else return;var G=t.selection;t.swipePanning=!1,t.hoverData.draggingEles=!1;var U=t.cy,ie=U.zoom(),X=t.touchData.now,ae=t.touchData.earlier;if(T.touches[0]){var we=t.projectIntoViewport(T.touches[0].clientX,T.touches[0].clientY);X[0]=we[0],X[1]=we[1]}if(T.touches[1]){var we=t.projectIntoViewport(T.touches[1].clientX,T.touches[1].clientY);X[2]=we[0],X[3]=we[1]}if(T.touches[2]){var we=t.projectIntoViewport(T.touches[2].clientX,T.touches[2].clientY);X[4]=we[0],X[5]=we[1]}$&&$.unactivate();var Ce;if(t.touchData.cxt){if(Ce={originalEvent:T,type:"cxttapend",position:{x:X[0],y:X[1]}},$?$.emit(Ce):U.emit(Ce),!t.touchData.cxtDragged){var ge={originalEvent:T,type:"cxttap",position:{x:X[0],y:X[1]}};$?$.emit(ge):U.emit(ge)}t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!1,t.touchData.start=null,t.redraw();return}if(!T.touches[2]&&U.boxSelectionEnabled()&&t.touchData.selecting){t.touchData.selecting=!1;var Se=U.collection(t.getAllInBox(G[0],G[1],G[2],G[3]));G[0]=void 0,G[1]=void 0,G[2]=void 0,G[3]=void 0,G[4]=0,t.redrawHint("select",!0),U.emit({type:"boxend",originalEvent:T,position:{x:X[0],y:X[1]}});var ve=function(Mt){return Mt.selectable()&&!Mt.selected()};Se.emit("box").stdFilter(ve).select().emit("boxselect"),Se.nonempty()&&t.redrawHint("eles",!0),t.redraw()}if($!=null&&$.unactivate(),T.touches[2])t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);else if(!T.touches[1]){if(!T.touches[0]){if(!T.touches[0]){t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var ye=t.dragData.touchDragEles;if($!=null){var Ge=$._private.grabbed;y(ye),t.redrawHint("drag",!0),t.redrawHint("eles",!0),Ge&&($.emit("freeon"),ye.emit("free"),t.dragData.didDrag&&($.emit("dragfreeon"),ye.emit("dragfree"))),n($,["touchend","tapend","vmouseup","tapdragout"],T,{x:X[0],y:X[1]}),$.unactivate(),t.touchData.start=null}else{var $e=t.findNearestElement(X[0],X[1],!0,!0);n($e,["touchend","tapend","vmouseup","tapdragout"],T,{x:X[0],y:X[1]})}var rt=t.touchData.startPosition[0]-X[0],nt=rt*rt,Qe=t.touchData.startPosition[1]-X[1],Ot=Qe*Qe,ut=nt+Ot,ht=ut*ie*ie;t.touchData.singleTouchMoved||($||U.$(":selected").unselect(["tapunselect"]),n($,["tap","vclick"],T,{x:X[0],y:X[1]}),he=!1,T.timeStamp-se<=U.multiClickDebounceTime()?(ne&&clearTimeout(ne),he=!0,se=null,n($,["dbltap","vdblclick"],T,{x:X[0],y:X[1]})):(ne=setTimeout(function(){he||n($,["onetap","voneclick"],T,{x:X[0],y:X[1]})},U.multiClickDebounceTime()),se=T.timeStamp)),$!=null&&!t.dragData.didDrag&&$._private.selectable&&ht<t.touchTapThreshold2&&!t.pinching&&(U.selectionType()==="single"?(U.$(r).unmerge($).unselect(["tapunselect"]),$.select(["tapselect"])):$.selected()?$.unselect(["tapunselect"]):$.select(["tapselect"]),t.redrawHint("eles",!0)),t.touchData.singleTouchMoved=!0}}}for(var Wt=0;Wt<X.length;Wt++)ae[Wt]=X[Wt];t.dragData.didDrag=!1,T.touches.length===0&&(t.touchData.dragDelta=[],t.touchData.startPosition=[null,null,null,null,null,null],t.touchData.startGPosition=null,t.touchData.didSelect=!1),T.touches.length<2&&(T.touches.length===1&&(t.touchData.startGPosition=[T.touches[0].clientX,T.touches[0].clientY]),t.pinching=!1,t.redrawHint("eles",!0),t.redraw())},!1),typeof TouchEvent>"u"){var ue=[],pe=function(T){return{clientX:T.clientX,clientY:T.clientY,force:1,identifier:T.pointerId,pageX:T.pageX,pageY:T.pageY,radiusX:T.width/2,radiusY:T.height/2,screenX:T.screenX,screenY:T.screenY,target:T.target}},de=function(T){return{event:T,touch:pe(T)}},me=function(T){ue.push(de(T))},Ne=function(T){for(var $=0;$<ue.length;$++){var Q=ue[$];if(Q.event.pointerId===T.pointerId){ue.splice($,1);return}}},De=function(T){var $=ue.filter(function(Q){return Q.event.pointerId===T.pointerId})[0];$.event=T,$.touch=pe(T)},Ee=function(T){T.touches=ue.map(function($){return $.touch})},Pe=function(T){return T.pointerType==="mouse"||T.pointerType===4};t.registerBinding(t.container,"pointerdown",function(te){Pe(te)||(te.preventDefault(),me(te),Ee(te),_(te))}),t.registerBinding(t.container,"pointerup",function(te){Pe(te)||(Ne(te),Ee(te),oe(te))}),t.registerBinding(t.container,"pointercancel",function(te){Pe(te)||(Ne(te),Ee(te),W(te))}),t.registerBinding(t.container,"pointermove",function(te){Pe(te)||(te.preventDefault(),De(te),Ee(te),K(te))})}};var zr={};zr.generatePolygon=function(t,e){return this.nodeShapes[t]={renderer:this,name:t,points:e,draw:function(n,a,i,o,l,u){this.renderer.nodeShapeImpl("polygon",n,a,i,o,l,this.points)},intersectLine:function(n,a,i,o,l,u,c,d){return Ti(l,u,this.points,n,a,i/2,o/2,c)},checkPoint:function(n,a,i,o,l,u,c,d){return Rr(n,a,this.points,u,c,o,l,[0,-1],i)}}},zr.generateEllipse=function(){return this.nodeShapes.ellipse={renderer:this,name:"ellipse",draw:function(e,r,n,a,i,o){this.renderer.nodeShapeImpl(this.name,e,r,n,a,i)},intersectLine:function(e,r,n,a,i,o,l,u){return jB(i,o,e,r,n/2+l,a/2+l)},checkPoint:function(e,r,n,a,i,o,l,u){return Rn(e,r,a,i,o,l,n)}}},zr.generateRoundPolygon=function(t,e){return this.nodeShapes[t]={renderer:this,name:t,points:e,getOrCreateCorners:function(n,a,i,o,l,u,c){if(u[c]!==void 0&&u[c+"-cx"]===n&&u[c+"-cy"]===a)return u[c];u[c]=new Array(e.length/2),u[c+"-cx"]=n,u[c+"-cy"]=a;var d=i/2,f=o/2;l=l==="auto"?Xh(i,o):l;for(var p=new Array(e.length/2),v=0;v<e.length/2;v++)p[v]={x:n+d*e[v*2],y:a+f*e[v*2+1]};var h,g,y,m,b=p.length;for(g=p[b-1],h=0;h<b;h++)y=p[h%b],m=p[(h+1)%b],u[c][h]=Bc(g,y,m,l),g=y,y=m;return u[c]},draw:function(n,a,i,o,l,u,c){this.renderer.nodeShapeImpl("round-polygon",n,a,i,o,l,this.points,this.getOrCreateCorners(a,i,o,l,u,c,"drawCorners"))},intersectLine:function(n,a,i,o,l,u,c,d,f){return YB(l,u,this.points,n,a,i,o,c,this.getOrCreateCorners(n,a,i,o,d,f,"corners"))},checkPoint:function(n,a,i,o,l,u,c,d,f){return WB(n,a,this.points,u,c,o,l,this.getOrCreateCorners(u,c,o,l,d,f,"corners"))}}},zr.generateRoundRectangle=function(){return this.nodeShapes["round-rectangle"]=this.nodeShapes.roundrectangle={renderer:this,name:"round-rectangle",points:It(4,0),draw:function(e,r,n,a,i,o){this.renderer.nodeShapeImpl(this.name,e,r,n,a,i,this.points,o)},intersectLine:function(e,r,n,a,i,o,l,u){return jh(i,o,e,r,n,a,l,u)},checkPoint:function(e,r,n,a,i,o,l,u){var c=a/2,d=i/2;u=u==="auto"?$n(a,i):u,u=Math.min(c,d,u);var f=u*2;return!!(Rr(e,r,this.points,o,l,a,i-f,[0,-1],n)||Rr(e,r,this.points,o,l,a-f,i,[0,-1],n)||Rn(e,r,f,f,o-c+u,l-d+u,n)||Rn(e,r,f,f,o+c-u,l-d+u,n)||Rn(e,r,f,f,o+c-u,l+d-u,n)||Rn(e,r,f,f,o-c+u,l+d-u,n))}}},zr.generateCutRectangle=function(){return this.nodeShapes["cut-rectangle"]=this.nodeShapes.cutrectangle={renderer:this,name:"cut-rectangle",cornerLength:Ql(),points:It(4,0),draw:function(e,r,n,a,i,o){this.renderer.nodeShapeImpl(this.name,e,r,n,a,i,null,o)},generateCutTrianglePts:function(e,r,n,a,i){var o=i==="auto"?this.cornerLength:i,l=r/2,u=e/2,c=n-u,d=n+u,f=a-l,p=a+l;return{topLeft:[c,f+o,c+o,f,c+o,f+o],topRight:[d-o,f,d,f+o,d-o,f+o],bottomRight:[d,p-o,d-o,p,d-o,p-o],bottomLeft:[c+o,p,c,p-o,c+o,p-o]}},intersectLine:function(e,r,n,a,i,o,l,u){var c=this.generateCutTrianglePts(n+2*l,a+2*l,e,r,u),d=[].concat.apply([],[c.topLeft.splice(0,4),c.topRight.splice(0,4),c.bottomRight.splice(0,4),c.bottomLeft.splice(0,4)]);return Ti(i,o,d,e,r)},checkPoint:function(e,r,n,a,i,o,l,u){var c=u==="auto"?this.cornerLength:u;if(Rr(e,r,this.points,o,l,a,i-2*c,[0,-1],n)||Rr(e,r,this.points,o,l,a-2*c,i,[0,-1],n))return!0;var d=this.generateCutTrianglePts(a,i,o,l);return Ht(e,r,d.topLeft)||Ht(e,r,d.topRight)||Ht(e,r,d.bottomRight)||Ht(e,r,d.bottomLeft)}}},zr.generateBarrel=function(){return this.nodeShapes.barrel={renderer:this,name:"barrel",points:It(4,0),draw:function(e,r,n,a,i,o){this.renderer.nodeShapeImpl(this.name,e,r,n,a,i)},intersectLine:function(e,r,n,a,i,o,l,u){var c=.15,d=.5,f=.85,p=this.generateBarrelBezierPts(n+2*l,a+2*l,e,r),v=function(y){var m=ya({x:y[0],y:y[1]},{x:y[2],y:y[3]},{x:y[4],y:y[5]},c),b=ya({x:y[0],y:y[1]},{x:y[2],y:y[3]},{x:y[4],y:y[5]},d),w=ya({x:y[0],y:y[1]},{x:y[2],y:y[3]},{x:y[4],y:y[5]},f);return[y[0],y[1],m.x,m.y,b.x,b.y,w.x,w.y,y[4],y[5]]},h=[].concat(v(p.topLeft),v(p.topRight),v(p.bottomRight),v(p.bottomLeft));return Ti(i,o,h,e,r)},generateBarrelBezierPts:function(e,r,n,a){var i=r/2,o=e/2,l=n-o,u=n+o,c=a-i,d=a+i,f=Jl(e,r),p=f.heightOffset,v=f.widthOffset,h=f.ctrlPtOffsetPct*e,g={topLeft:[l,c+p,l+h,c,l+v,c],topRight:[u-v,c,u-h,c,u,c+p],bottomRight:[u,d-p,u-h,d,u-v,d],bottomLeft:[l+v,d,l+h,d,l,d-p]};return g.topLeft.isTop=!0,g.topRight.isTop=!0,g.bottomLeft.isBottom=!0,g.bottomRight.isBottom=!0,g},checkPoint:function(e,r,n,a,i,o,l,u){var c=Jl(a,i),d=c.heightOffset,f=c.widthOffset;if(Rr(e,r,this.points,o,l,a,i-2*d,[0,-1],n)||Rr(e,r,this.points,o,l,a-2*f,i,[0,-1],n))return!0;for(var p=this.generateBarrelBezierPts(a,i,o,l),v=function(B,S,N){var D=N[4],P=N[2],M=N[0],O=N[5],A=N[1],F=Math.min(D,M),I=Math.max(D,M),L=Math.min(O,A),R=Math.max(O,A);if(F<=B&&B<=I&&L<=S&&S<=R){var H=XB(D,P,M),V=KB(H[0],H[1],H[2],B),z=V.filter(function(j){return 0<=j&&j<=1});if(z.length>0)return z[0]}return null},h=Object.keys(p),g=0;g<h.length;g++){var y=h[g],m=p[y],b=v(e,r,m);if(b!=null){var w=m[5],C=m[3],x=m[1],E=ft(w,C,x,b);if(m.isTop&&E<=r||m.isBottom&&r<=E)return!0}}return!1}}},zr.generateBottomRoundrectangle=function(){return this.nodeShapes["bottom-round-rectangle"]=this.nodeShapes.bottomroundrectangle={renderer:this,name:"bottom-round-rectangle",points:It(4,0),draw:function(e,r,n,a,i,o){this.renderer.nodeShapeImpl(this.name,e,r,n,a,i,this.points,o)},intersectLine:function(e,r,n,a,i,o,l,u){var c=e-(n/2+l),d=r-(a/2+l),f=d,p=e+(n/2+l),v=ln(i,o,e,r,c,d,p,f,!1);return v.length>0?v:jh(i,o,e,r,n,a,l,u)},checkPoint:function(e,r,n,a,i,o,l,u){u=u==="auto"?$n(a,i):u;var c=2*u;if(Rr(e,r,this.points,o,l,a,i-c,[0,-1],n)||Rr(e,r,this.points,o,l,a-c,i,[0,-1],n))return!0;var d=a/2+2*n,f=i/2+2*n,p=[o-d,l-f,o-d,l,o+d,l,o+d,l-f];return!!(Ht(e,r,p)||Rn(e,r,c,c,o+a/2-u,l+i/2-u,n)||Rn(e,r,c,c,o-a/2+u,l+i/2-u,n))}}},zr.registerNodeShapes=function(){var t=this.nodeShapes={},e=this;this.generateEllipse(),this.generatePolygon("triangle",It(3,0)),this.generateRoundPolygon("round-triangle",It(3,0)),this.generatePolygon("rectangle",It(4,0)),t.square=t.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var r=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",r),this.generateRoundPolygon("round-diamond",r)}this.generatePolygon("pentagon",It(5,0)),this.generateRoundPolygon("round-pentagon",It(5,0)),this.generatePolygon("hexagon",It(6,0)),this.generateRoundPolygon("round-hexagon",It(6,0)),this.generatePolygon("heptagon",It(7,0)),this.generateRoundPolygon("round-heptagon",It(7,0)),this.generatePolygon("octagon",It(8,0)),this.generateRoundPolygon("round-octagon",It(8,0));var n=new Array(20);{var a=Zl(5,0),i=Zl(5,Math.PI/5),o=.5*(3-Math.sqrt(5));o*=1.57;for(var l=0;l<i.length/2;l++)i[l*2]*=o,i[l*2+1]*=o;for(var l=0;l<20/4;l++)n[l*4]=a[l*2],n[l*4+1]=a[l*2+1],n[l*4+2]=i[l*2],n[l*4+3]=i[l*2+1]}n=Yh(n),this.generatePolygon("star",n),this.generatePolygon("vee",[-1,-1,0,-.333,1,-1,0,1]),this.generatePolygon("rhomboid",[-1,-1,.333,-1,1,1,-.333,1]),this.generatePolygon("right-rhomboid",[-.333,-1,1,-1,.333,1,-1,1]),this.nodeShapes.concavehexagon=this.generatePolygon("concave-hexagon",[-1,-.95,-.75,0,-1,.95,1,.95,.75,0,1,-.95]);{var u=[-1,-1,.25,-1,1,0,.25,1,-1,1];this.generatePolygon("tag",u),this.generateRoundPolygon("round-tag",u)}t.makePolygon=function(c){var d=c.join("$"),f="polygon-"+d,p;return(p=this[f])?p:e.generatePolygon(f,c)}};var zi={};zi.timeToRender=function(){return this.redrawTotalTime/this.redrawCount},zi.redraw=function(t){t=t||zh();var e=this;e.averageRedrawTime===void 0&&(e.averageRedrawTime=0),e.lastRedrawTime===void 0&&(e.lastRedrawTime=0),e.lastDrawTime===void 0&&(e.lastDrawTime=0),e.requestedFrame=!0,e.renderOptions=t},zi.beforeRender=function(t,e){if(!this.destroyed){e==null&&Xe("Priority is not optional for beforeRender");var r=this.beforeRenderCallbacks;r.push({fn:t,priority:e}),r.sort(function(n,a){return a.priority-n.priority})}};var Hv=function(e,r,n){for(var a=e.beforeRenderCallbacks,i=0;i<a.length;i++)a[i].fn(r,n)};zi.startRenderLoop=function(){var t=this,e=t.cy;if(!t.renderLoopStarted){t.renderLoopStarted=!0;var r=function n(a){if(!t.destroyed){if(!e.batching())if(t.requestedFrame&&!t.skipFrame){Hv(t,!0,a);var i=_r();t.render(t.renderOptions);var o=t.lastDrawTime=_r();t.averageRedrawTime===void 0&&(t.averageRedrawTime=o-i),t.redrawCount===void 0&&(t.redrawCount=0),t.redrawCount++,t.redrawTotalTime===void 0&&(t.redrawTotalTime=0);var l=o-i;t.redrawTotalTime+=l,t.lastRedrawTime=l,t.averageRedrawTime=t.averageRedrawTime/2+l/2,t.requestedFrame=!1}else Hv(t,!1,a);t.skipFrame=!1,Mo(n)}};Mo(r)}};var OP=function(e){this.init(e)},Kv=OP,_a=Kv.prototype;_a.clientFunctions=["redrawHint","render","renderTo","matchCanvasSize","nodeShapeImpl","arrowShapeImpl"],_a.init=function(t){var e=this;e.options=t,e.cy=t.cy;var r=e.container=t.cy.container(),n=e.cy.window();if(n){var a=n.document,i=a.head,o="__________cytoscape_stylesheet",l="__________cytoscape_container",u=a.getElementById(o)!=null;if(r.className.indexOf(l)<0&&(r.className=(r.className||"")+" "+l),!u){var c=a.createElement("style");c.id=o,c.textContent="."+l+" { position: relative; }",i.insertBefore(c,i.children[0])}var d=n.getComputedStyle(r),f=d.getPropertyValue("position");f==="static"&&_e("A Cytoscape container has style position:static and so can not use UI extensions properly")}e.selection=[void 0,void 0,void 0,void 0,0],e.bezierProjPcts=[.05,.225,.4,.5,.6,.775,.95],e.hoverData={down:null,last:null,downTime:null,triggerMode:null,dragging:!1,initialPan:[null,null],capture:!1},e.dragData={possibleDragElements:[]},e.touchData={start:null,capture:!1,startPosition:[null,null,null,null,null,null],singleTouchStartTime:null,singleTouchMoved:!0,now:[null,null,null,null,null,null],earlier:[null,null,null,null,null,null]},e.redraws=0,e.showFps=t.showFps,e.debug=t.debug,e.hideEdgesOnViewport=t.hideEdgesOnViewport,e.textureOnViewport=t.textureOnViewport,e.wheelSensitivity=t.wheelSensitivity,e.motionBlurEnabled=t.motionBlur,e.forcedPixelRatio=le(t.pixelRatio)?t.pixelRatio:null,e.motionBlur=t.motionBlur,e.motionBlurOpacity=t.motionBlurOpacity,e.motionBlurTransparency=1-e.motionBlurOpacity,e.motionBlurPxRatio=1,e.mbPxRBlurry=1,e.minMbLowQualFrames=4,e.fullQualityMb=!1,e.clearedForMotionBlur=[],e.desktopTapThreshold=t.desktopTapThreshold,e.desktopTapThreshold2=t.desktopTapThreshold*t.desktopTapThreshold,e.touchTapThreshold=t.touchTapThreshold,e.touchTapThreshold2=t.touchTapThreshold*t.touchTapThreshold,e.tapholdDuration=500,e.bindings=[],e.beforeRenderCallbacks=[],e.beforeRenderPriorities={animations:400,eleCalcs:300,eleTxrDeq:200,lyrTxrDeq:150,lyrTxrSkip:100},e.registerNodeShapes(),e.registerArrowShapes(),e.registerCalculationListeners()},_a.notify=function(t,e){var r=this,n=r.cy;if(!this.destroyed){if(t==="init"){r.load();return}if(t==="destroy"){r.destroy();return}(t==="add"||t==="remove"||t==="move"&&n.hasCompoundNodes()||t==="load"||t==="zorder"||t==="mount")&&r.invalidateCachedZSortedEles(),t==="viewport"&&r.redrawHint("select",!0),(t==="load"||t==="resize"||t==="mount")&&(r.invalidateContainerClientCoordsCache(),r.matchCanvasSize(r.container)),r.redrawHint("eles",!0),r.redrawHint("drag",!0),this.startRenderLoop(),this.redraw()}},_a.destroy=function(){var t=this;t.destroyed=!0,t.cy.stopAnimationLoop();for(var e=0;e<t.bindings.length;e++){var r=t.bindings[e],n=r,a=n.target;(a.off||a.removeEventListener).apply(a,n.args)}if(t.bindings=[],t.beforeRenderCallbacks=[],t.onUpdateEleCalcsFns=[],t.removeObserver&&t.removeObserver.disconnect(),t.styleObserver&&t.styleObserver.disconnect(),t.resizeObserver&&t.resizeObserver.disconnect(),t.labelCalcDiv)try{document.body.removeChild(t.labelCalcDiv)}catch{}},_a.isHeadless=function(){return!1},[kc,Vv,zv,Aa,zr,zi].forEach(function(t){xe(_a,t)});var Dc=1e3/60,qv={setupDequeueing:function(e){return function(){var n=this,a=this.renderer;if(!n.dequeueingSetup){n.dequeueingSetup=!0;var i=Fo(function(){a.redrawHint("eles",!0),a.redrawHint("drag",!0),a.redraw()},e.deqRedrawThreshold),o=function(c,d){var f=_r(),p=a.averageRedrawTime,v=a.lastRedrawTime,h=[],g=a.cy.extent(),y=a.getPixelRatio();for(c||a.flushRenderedStyleQueue();;){var m=_r(),b=m-f,w=m-d;if(v<Dc){var C=Dc-(c?p:0);if(w>=e.deqFastCost*C)break}else if(c){if(b>=e.deqCost*v||b>=e.deqAvgCost*p)break}else if(w>=e.deqNoDrawCost*Dc)break;var x=e.deq(n,y,g);if(x.length>0)for(var E=0;E<x.length;E++)h.push(x[E]);else break}h.length>0&&(e.onDeqd(n,h),!c&&e.shouldRedraw(n,h,y,g)&&i())},l=e.priority||Ul;a.beforeRender(o,l(n))}}}},FP=function(){function t(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Io;Rl(this,t),this.idsByKey=new wr,this.keyForId=new wr,this.cachesByLvl=new wr,this.lvls=[],this.getKey=e,this.doesEleInvalidateKey=r}return $l(t,[{key:"getIdsFor",value:function(r){r==null&&Xe("Can not get id list for null key");var n=this.idsByKey,a=this.idsByKey.get(r);return a||(a=new ga,n.set(r,a)),a}},{key:"addIdForKey",value:function(r,n){r!=null&&this.getIdsFor(r).add(n)}},{key:"deleteIdForKey",value:function(r,n){r!=null&&this.getIdsFor(r).delete(n)}},{key:"getNumberOfIdsForKey",value:function(r){return r==null?0:this.getIdsFor(r).size}},{key:"updateKeyMappingFor",value:function(r){var n=r.id(),a=this.keyForId.get(n),i=this.getKey(r);this.deleteIdForKey(a,n),this.addIdForKey(i,n),this.keyForId.set(n,i)}},{key:"deleteKeyMappingFor",value:function(r){var n=r.id(),a=this.keyForId.get(n);this.deleteIdForKey(a,n),this.keyForId.delete(n)}},{key:"keyHasChangedFor",value:function(r){var n=r.id(),a=this.keyForId.get(n),i=this.getKey(r);return a!==i}},{key:"isInvalid",value:function(r){return this.keyHasChangedFor(r)||this.doesEleInvalidateKey(r)}},{key:"getCachesAt",value:function(r){var n=this.cachesByLvl,a=this.lvls,i=n.get(r);return i||(i=new wr,n.set(r,i),a.push(r)),i}},{key:"getCache",value:function(r,n){return this.getCachesAt(n).get(r)}},{key:"get",value:function(r,n){var a=this.getKey(r),i=this.getCache(a,n);return i!=null&&this.updateKeyMappingFor(r),i}},{key:"getForCachedKey",value:function(r,n){var a=this.keyForId.get(r.id()),i=this.getCache(a,n);return i}},{key:"hasCache",value:function(r,n){return this.getCachesAt(n).has(r)}},{key:"has",value:function(r,n){var a=this.getKey(r);return this.hasCache(a,n)}},{key:"setCache",value:function(r,n,a){a.key=r,this.getCachesAt(n).set(r,a)}},{key:"set",value:function(r,n,a){var i=this.getKey(r);this.setCache(i,n,a),this.updateKeyMappingFor(r)}},{key:"deleteCache",value:function(r,n){this.getCachesAt(n).delete(r)}},{key:"delete",value:function(r,n){var a=this.getKey(r);this.deleteCache(a,n)}},{key:"invalidateKey",value:function(r){var n=this;this.lvls.forEach(function(a){return n.deleteCache(r,a)})}},{key:"invalidate",value:function(r){var n=r.id(),a=this.keyForId.get(n);this.deleteKeyMappingFor(r);var i=this.doesEleInvalidateKey(r);return i&&this.invalidateKey(a),i||this.getNumberOfIdsForKey(a)===0}}]),t}(),Uv=25,ks=50,xs=-4,Pc=3,MP=7.99,LP=8,IP=1024,AP=1024,_P=1024,RP=.2,$P=.8,VP=10,zP=.15,HP=.1,KP=.9,qP=.9,UP=100,GP=1,Ra={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},WP=bt({getKey:null,doesEleInvalidateKey:Io,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:_h,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),Hi=function(e,r){var n=this;n.renderer=e,n.onDequeues=[];var a=WP(r);xe(n,a),n.lookup=new FP(a.getKey,a.doesEleInvalidateKey),n.setupDequeueing()},ct=Hi.prototype;ct.reasons=Ra,ct.getTextureQueue=function(t){var e=this;return e.eleImgCaches=e.eleImgCaches||{},e.eleImgCaches[t]=e.eleImgCaches[t]||[]},ct.getRetiredTextureQueue=function(t){var e=this,r=e.eleImgCaches.retired=e.eleImgCaches.retired||{},n=r[t]=r[t]||[];return n},ct.getElementQueue=function(){var t=this,e=t.eleCacheQueue=t.eleCacheQueue||new xi(function(r,n){return n.reqs-r.reqs});return e},ct.getElementKeyToQueue=function(){var t=this,e=t.eleKeyToCacheQueue=t.eleKeyToCacheQueue||{};return e},ct.getElement=function(t,e,r,n,a){var i=this,o=this.renderer,l=o.cy.zoom(),u=this.lookup;if(!e||e.w===0||e.h===0||isNaN(e.w)||isNaN(e.h)||!t.visible()||t.removed()||!i.allowEdgeTxrCaching&&t.isEdge()||!i.allowParentTxrCaching&&t.isParent())return null;if(n==null&&(n=Math.ceil(jl(l*r))),n<xs)n=xs;else if(l>=MP||n>Pc)return null;var c=Math.pow(2,n),d=e.h*c,f=e.w*c,p=o.eleTextBiggerThanMin(t,c);if(!this.isVisible(t,p))return null;var v=u.get(t,n);if(v&&v.invalidated&&(v.invalidated=!1,v.texture.invalidatedWidth-=v.width),v)return v;var h;if(d<=Uv?h=Uv:d<=ks?h=ks:h=Math.ceil(d/ks)*ks,d>_P||f>AP)return null;var g=i.getTextureQueue(h),y=g[g.length-2],m=function(){return i.recycleTexture(h,f)||i.addTexture(h,f)};y||(y=g[g.length-1]),y||(y=m()),y.width-y.usedWidth<f&&(y=m());for(var b=function(F){return F&&F.scaledLabelShown===p},w=a&&a===Ra.dequeue,C=a&&a===Ra.highQuality,x=a&&a===Ra.downscale,E,k=n+1;k<=Pc;k++){var B=u.get(t,k);if(B){E=B;break}}var S=E&&E.level===n+1?E:null,N=function(){y.context.drawImage(S.texture.canvas,S.x,0,S.width,S.height,y.usedWidth,0,f,d)};if(y.context.setTransform(1,0,0,1,0,0),y.context.clearRect(y.usedWidth,0,f,h),b(S))N();else if(b(E))if(C){for(var D=E.level;D>n;D--)S=i.getElement(t,e,r,D,Ra.downscale);N()}else return i.queueElement(t,E.level-1),E;else{var P;if(!w&&!C&&!x)for(var M=n-1;M>=xs;M--){var O=u.get(t,M);if(O){P=O;break}}if(b(P))return i.queueElement(t,n),P;y.context.translate(y.usedWidth,0),y.context.scale(c,c),this.drawElement(y.context,t,e,p,!1),y.context.scale(1/c,1/c),y.context.translate(-y.usedWidth,0)}return v={x:y.usedWidth,texture:y,level:n,scale:c,width:f,height:d,scaledLabelShown:p},y.usedWidth+=Math.ceil(f+LP),y.eleCaches.push(v),u.set(t,n,v),i.checkTextureFullness(y),v},ct.invalidateElements=function(t){for(var e=0;e<t.length;e++)this.invalidateElement(t[e])},ct.invalidateElement=function(t){var e=this,r=e.lookup,n=[],a=r.isInvalid(t);if(a){for(var i=xs;i<=Pc;i++){var o=r.getForCachedKey(t,i);o&&n.push(o)}var l=r.invalidate(t);if(l)for(var u=0;u<n.length;u++){var c=n[u],d=c.texture;d.invalidatedWidth+=c.width,c.invalidated=!0,e.checkTextureUtility(d)}e.removeFromQueue(t)}},ct.checkTextureUtility=function(t){t.invalidatedWidth>=RP*t.width&&this.retireTexture(t)},ct.checkTextureFullness=function(t){var e=this,r=e.getTextureQueue(t.height);t.usedWidth/t.width>$P&&t.fullnessChecks>=VP?on(r,t):t.fullnessChecks++},ct.retireTexture=function(t){var e=this,r=t.height,n=e.getTextureQueue(r),a=this.lookup;on(n,t),t.retired=!0;for(var i=t.eleCaches,o=0;o<i.length;o++){var l=i[o];a.deleteCache(l.key,l.level)}Gl(i);var u=e.getRetiredTextureQueue(r);u.push(t)},ct.addTexture=function(t,e){var r=this,n=r.getTextureQueue(t),a={};return n.push(a),a.eleCaches=[],a.height=t,a.width=Math.max(IP,e),a.usedWidth=0,a.invalidatedWidth=0,a.fullnessChecks=0,a.canvas=r.renderer.makeOffscreenCanvas(a.width,a.height),a.context=a.canvas.getContext("2d"),a},ct.recycleTexture=function(t,e){for(var r=this,n=r.getTextureQueue(t),a=r.getRetiredTextureQueue(t),i=0;i<a.length;i++){var o=a[i];if(o.width>=e)return o.retired=!1,o.usedWidth=0,o.invalidatedWidth=0,o.fullnessChecks=0,Gl(o.eleCaches),o.context.setTransform(1,0,0,1,0,0),o.context.clearRect(0,0,o.width,o.height),on(a,o),n.push(o),o}},ct.queueElement=function(t,e){var r=this,n=r.getElementQueue(),a=r.getElementKeyToQueue(),i=this.getKey(t),o=a[i];if(o)o.level=Math.max(o.level,e),o.eles.merge(t),o.reqs++,n.updateItem(o);else{var l={eles:t.spawn().merge(t),level:e,reqs:1,key:i};n.push(l),a[i]=l}},ct.dequeue=function(t){for(var e=this,r=e.getElementQueue(),n=e.getElementKeyToQueue(),a=[],i=e.lookup,o=0;o<GP&&r.size()>0;o++){var l=r.pop(),u=l.key,c=l.eles[0],d=i.hasCache(c,l.level);if(n[u]=null,d)continue;a.push(l);var f=e.getBoundingBox(c);e.getElement(c,f,t,l.level,Ra.dequeue)}return a},ct.removeFromQueue=function(t){var e=this,r=e.getElementQueue(),n=e.getElementKeyToQueue(),a=this.getKey(t),i=n[a];i!=null&&(i.eles.length===1?(i.reqs=ql,r.updateItem(i),r.pop(),n[a]=null):i.eles.unmerge(t))},ct.onDequeue=function(t){this.onDequeues.push(t)},ct.offDequeue=function(t){on(this.onDequeues,t)},ct.setupDequeueing=qv.setupDequeueing({deqRedrawThreshold:UP,deqCost:zP,deqAvgCost:HP,deqNoDrawCost:KP,deqFastCost:qP,deq:function(e,r,n){return e.dequeue(r,n)},onDeqd:function(e,r){for(var n=0;n<e.onDequeues.length;n++){var a=e.onDequeues[n];a(r)}},shouldRedraw:function(e,r,n,a){for(var i=0;i<r.length;i++)for(var o=r[i].eles,l=0;l<o.length;l++){var u=o[l].boundingBox();if(Yl(u,a))return!0}return!1},priority:function(e){return e.renderer.beforeRenderPriorities.eleTxrDeq}});var jP=1,Ki=-4,Es=2,YP=3.99,XP=50,ZP=50,QP=.15,JP=.1,e3=.9,t3=.9,r3=1,Gv=250,n3=4e3*4e3,a3=!0,Wv=function(e){var r=this,n=r.renderer=e,a=n.cy;r.layersByLevel={},r.firstGet=!0,r.lastInvalidationTime=_r()-2*Gv,r.skipping=!1,r.eleTxrDeqs=a.collection(),r.scheduleElementRefinement=Fo(function(){r.refineElementTextures(r.eleTxrDeqs),r.eleTxrDeqs.unmerge(r.eleTxrDeqs)},ZP),n.beforeRender(function(o,l){l-r.lastInvalidationTime<=Gv?r.skipping=!0:r.skipping=!1},n.beforeRenderPriorities.lyrTxrSkip);var i=function(l,u){return u.reqs-l.reqs};r.layersQueue=new xi(i),r.setupDequeueing()},xt=Wv.prototype,jv=0,i3=Math.pow(2,53)-1;xt.makeLayer=function(t,e){var r=Math.pow(2,e),n=Math.ceil(t.w*r),a=Math.ceil(t.h*r),i=this.renderer.makeOffscreenCanvas(n,a),o={id:jv=++jv%i3,bb:t,level:e,width:n,height:a,canvas:i,context:i.getContext("2d"),eles:[],elesQueue:[],reqs:0},l=o.context,u=-o.bb.x1,c=-o.bb.y1;return l.scale(r,r),l.translate(u,c),o},xt.getLayers=function(t,e,r){var n=this,a=n.renderer,i=a.cy,o=i.zoom(),l=n.firstGet;if(n.firstGet=!1,r==null){if(r=Math.ceil(jl(o*e)),r<Ki)r=Ki;else if(o>=YP||r>Es)return null}n.validateLayersElesOrdering(r,t);var u=n.layersByLevel,c=Math.pow(2,r),d=u[r]=u[r]||[],f,p=n.levelIsComplete(r,t),v,h=function(){var N=function(A){if(n.validateLayersElesOrdering(A,t),n.levelIsComplete(A,t))return v=u[A],!0},D=function(A){if(!v)for(var F=r+A;Ki<=F&&F<=Es&&!N(F);F+=A);};D(1),D(-1);for(var P=d.length-1;P>=0;P--){var M=d[P];M.invalid&&on(d,M)}};if(!p)h();else return d;var g=function(){if(!f){f=zt();for(var N=0;N<t.length;N++)Uh(f,t[N].boundingBox())}return f},y=function(N){N=N||{};var D=N.after;g();var P=f.w*c*(f.h*c);if(P>n3)return null;var M=n.makeLayer(f,r);if(D!=null){var O=d.indexOf(D)+1;d.splice(O,0,M)}else(N.insert===void 0||N.insert)&&d.unshift(M);return M};if(n.skipping&&!l)return null;for(var m=null,b=t.length/jP,w=!l,C=0;C<t.length;C++){var x=t[C],E=x._private.rscratch,k=E.imgLayerCaches=E.imgLayerCaches||{},B=k[r];if(B){m=B;continue}if((!m||m.eles.length>=b||!Wh(m.bb,x.boundingBox()))&&(m=y({insert:!0,after:m}),!m))return null;v||w?n.queueLayer(m,x):n.drawEleInLayer(m,x,r,e),m.eles.push(x),k[r]=m}return v||(w?null:d)},xt.getEleLevelForLayerLevel=function(t,e){return t},xt.drawEleInLayer=function(t,e,r,n){var a=this,i=this.renderer,o=t.context,l=e.boundingBox();l.w===0||l.h===0||!e.visible()||(r=a.getEleLevelForLayerLevel(r,n),i.setImgSmoothing(o,!1),i.drawCachedElement(o,e,null,null,r,a3),i.setImgSmoothing(o,!0))},xt.levelIsComplete=function(t,e){var r=this,n=r.layersByLevel[t];if(!n||n.length===0)return!1;for(var a=0,i=0;i<n.length;i++){var o=n[i];if(o.reqs>0||o.invalid)return!1;a+=o.eles.length}return a===e.length},xt.validateLayersElesOrdering=function(t,e){var r=this.layersByLevel[t];if(r)for(var n=0;n<r.length;n++){for(var a=r[n],i=-1,o=0;o<e.length;o++)if(a.eles[0]===e[o]){i=o;break}if(i<0){this.invalidateLayer(a);continue}for(var l=i,o=0;o<a.eles.length;o++)if(a.eles[o]!==e[l+o]){this.invalidateLayer(a);break}}},xt.updateElementsInLayers=function(t,e){for(var r=this,n=pi(t[0]),a=0;a<t.length;a++)for(var i=n?null:t[a],o=n?t[a]:t[a].ele,l=o._private.rscratch,u=l.imgLayerCaches=l.imgLayerCaches||{},c=Ki;c<=Es;c++){var d=u[c];d&&(i&&r.getEleLevelForLayerLevel(d.level)!==i.level||e(d,o,i))}},xt.haveLayers=function(){for(var t=this,e=!1,r=Ki;r<=Es;r++){var n=t.layersByLevel[r];if(n&&n.length>0){e=!0;break}}return e},xt.invalidateElements=function(t){var e=this;t.length!==0&&(e.lastInvalidationTime=_r(),!(t.length===0||!e.haveLayers())&&e.updateElementsInLayers(t,function(n,a,i){e.invalidateLayer(n)}))},xt.invalidateLayer=function(t){if(this.lastInvalidationTime=_r(),!t.invalid){var e=t.level,r=t.eles,n=this.layersByLevel[e];on(n,t),t.elesQueue=[],t.invalid=!0,t.replacement&&(t.replacement.invalid=!0);for(var a=0;a<r.length;a++){var i=r[a]._private.rscratch.imgLayerCaches;i&&(i[e]=null)}}},xt.refineElementTextures=function(t){var e=this;e.updateElementsInLayers(t,function(n,a,i){var o=n.replacement;if(o||(o=n.replacement=e.makeLayer(n.bb,n.level),o.replaces=n,o.eles=n.eles),!o.reqs)for(var l=0;l<o.eles.length;l++)e.queueLayer(o,o.eles[l])})},xt.enqueueElementRefinement=function(t){this.eleTxrDeqs.merge(t),this.scheduleElementRefinement()},xt.queueLayer=function(t,e){var r=this,n=r.layersQueue,a=t.elesQueue,i=a.hasId=a.hasId||{};if(!t.replacement){if(e){if(i[e.id()])return;a.push(e),i[e.id()]=!0}t.reqs?(t.reqs++,n.updateItem(t)):(t.reqs=1,n.push(t))}},xt.dequeue=function(t){for(var e=this,r=e.layersQueue,n=[],a=0;a<r3&&r.size()!==0;){var i=r.peek();if(i.replacement){r.pop();continue}if(i.replaces&&i!==i.replaces.replacement){r.pop();continue}if(i.invalid){r.pop();continue}var o=i.elesQueue.shift();o&&(e.drawEleInLayer(i,o,i.level,t),a++),n.length===0&&n.push(!0),i.elesQueue.length===0&&(r.pop(),i.reqs=0,i.replaces&&e.applyLayerReplacement(i),e.requestRedraw())}return n},xt.applyLayerReplacement=function(t){var e=this,r=e.layersByLevel[t.level],n=t.replaces,a=r.indexOf(n);if(!(a<0||n.invalid)){r[a]=t;for(var i=0;i<t.eles.length;i++){var o=t.eles[i]._private,l=o.imgLayerCaches=o.imgLayerCaches||{};l&&(l[t.level]=t)}e.requestRedraw()}},xt.requestRedraw=Fo(function(){var t=this.renderer;t.redrawHint("eles",!0),t.redrawHint("drag",!0),t.redraw()},100),xt.setupDequeueing=qv.setupDequeueing({deqRedrawThreshold:XP,deqCost:QP,deqAvgCost:JP,deqNoDrawCost:e3,deqFastCost:t3,deq:function(e,r){return e.dequeue(r)},onDeqd:Ul,shouldRedraw:_h,priority:function(e){return e.renderer.beforeRenderPriorities.lyrTxrDeq}});var Yv={},Xv;function o3(t,e){for(var r=0;r<e.length;r++){var n=e[r];t.lineTo(n.x,n.y)}}function s3(t,e,r){for(var n,a=0;a<e.length;a++){var i=e[a];a===0&&(n=i),t.lineTo(i.x,i.y)}t.quadraticCurveTo(r.x,r.y,n.x,n.y)}function Zv(t,e,r){t.beginPath&&t.beginPath();for(var n=e,a=0;a<n.length;a++){var i=n[a];t.lineTo(i.x,i.y)}var o=r,l=r[0];t.moveTo(l.x,l.y);for(var a=1;a<o.length;a++){var i=o[a];t.lineTo(i.x,i.y)}t.closePath&&t.closePath()}function l3(t,e,r,n,a){t.beginPath&&t.beginPath(),t.arc(r,n,a,0,Math.PI*2,!1);var i=e,o=i[0];t.moveTo(o.x,o.y);for(var l=0;l<i.length;l++){var u=i[l];t.lineTo(u.x,u.y)}t.closePath&&t.closePath()}function c3(t,e,r,n){t.arc(e,r,n,0,Math.PI*2,!1)}Yv.arrowShapeImpl=function(t){return(Xv||(Xv={polygon:o3,"triangle-backcurve":s3,"triangle-tee":Zv,"circle-triangle":l3,"triangle-cross":Zv,circle:c3}))[t]};var Sr={};Sr.drawElement=function(t,e,r,n,a,i){var o=this;e.isNode()?o.drawNode(t,e,r,n,a,i):o.drawEdge(t,e,r,n,a,i)},Sr.drawElementOverlay=function(t,e){var r=this;e.isNode()?r.drawNodeOverlay(t,e):r.drawEdgeOverlay(t,e)},Sr.drawElementUnderlay=function(t,e){var r=this;e.isNode()?r.drawNodeUnderlay(t,e):r.drawEdgeUnderlay(t,e)},Sr.drawCachedElementPortion=function(t,e,r,n,a,i,o,l){var u=this,c=r.getBoundingBox(e);if(!(c.w===0||c.h===0)){var d=r.getElement(e,c,n,a,i);if(d!=null){var f=l(u,e);if(f===0)return;var p=o(u,e),v=c.x1,h=c.y1,g=c.w,y=c.h,m,b,w,C,x;if(p!==0){var E=r.getRotationPoint(e);w=E.x,C=E.y,t.translate(w,C),t.rotate(p),x=u.getImgSmoothing(t),x||u.setImgSmoothing(t,!0);var k=r.getRotationOffset(e);m=k.x,b=k.y}else m=v,b=h;var B;f!==1&&(B=t.globalAlpha,t.globalAlpha=B*f),t.drawImage(d.texture.canvas,d.x,0,d.width,d.height,m,b,g,y),f!==1&&(t.globalAlpha=B),p!==0&&(t.rotate(-p),t.translate(-w,-C),x||u.setImgSmoothing(t,!1))}else r.drawElement(t,e)}};var u3=function(){return 0},d3=function(e,r){return e.getTextAngle(r,null)},f3=function(e,r){return e.getTextAngle(r,"source")},h3=function(e,r){return e.getTextAngle(r,"target")},p3=function(e,r){return r.effectiveOpacity()},Oc=function(e,r){return r.pstyle("text-opacity").pfValue*r.effectiveOpacity()};Sr.drawCachedElement=function(t,e,r,n,a,i){var o=this,l=o.data,u=l.eleTxrCache,c=l.lblTxrCache,d=l.slbTxrCache,f=l.tlbTxrCache,p=e.boundingBox(),v=i===!0?u.reasons.highQuality:null;if(!(p.w===0||p.h===0||!e.visible())&&(!n||Yl(p,n))){var h=e.isEdge(),g=e.element()._private.rscratch.badLine;o.drawElementUnderlay(t,e),o.drawCachedElementPortion(t,e,u,r,a,v,u3,p3),(!h||!g)&&o.drawCachedElementPortion(t,e,c,r,a,v,d3,Oc),h&&!g&&(o.drawCachedElementPortion(t,e,d,r,a,v,f3,Oc),o.drawCachedElementPortion(t,e,f,r,a,v,h3,Oc)),o.drawElementOverlay(t,e)}},Sr.drawElements=function(t,e){for(var r=this,n=0;n<e.length;n++){var a=e[n];r.drawElement(t,a)}},Sr.drawCachedElements=function(t,e,r,n){for(var a=this,i=0;i<e.length;i++){var o=e[i];a.drawCachedElement(t,o,r,n)}},Sr.drawCachedNodes=function(t,e,r,n){for(var a=this,i=0;i<e.length;i++){var o=e[i];o.isNode()&&a.drawCachedElement(t,o,r,n)}},Sr.drawLayeredElements=function(t,e,r,n){var a=this,i=a.data.lyrTxrCache.getLayers(e,r);if(i)for(var o=0;o<i.length;o++){var l=i[o],u=l.bb;u.w===0||u.h===0||t.drawImage(l.canvas,u.x1,u.y1,u.w,u.h)}else a.drawCachedElements(t,e,r,n)};var Hr={};Hr.drawEdge=function(t,e,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,o=this,l=e._private.rscratch;if(!(i&&!e.visible())&&!(l.badLine||l.allpts==null||isNaN(l.allpts[0]))){var u;r&&(u=r,t.translate(-u.x1,-u.y1));var c=i?e.pstyle("opacity").value:1,d=i?e.pstyle("line-opacity").value:1,f=e.pstyle("curve-style").value,p=e.pstyle("line-style").value,v=e.pstyle("width").pfValue,h=e.pstyle("line-cap").value,g=e.pstyle("line-outline-width").value,y=e.pstyle("line-outline-color").value,m=c*d,b=c*d,w=function(){var A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:m;f==="straight-triangle"?(o.eleStrokeStyle(t,e,A),o.drawEdgeTrianglePath(e,t,l.allpts)):(t.lineWidth=v,t.lineCap=h,o.eleStrokeStyle(t,e,A),o.drawEdgePath(e,t,l.allpts,p),t.lineCap="butt")},C=function(){var A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:m;if(t.lineWidth=v+g,t.lineCap=h,g>0)o.colorStrokeStyle(t,y[0],y[1],y[2],A);else{t.lineCap="butt";return}f==="straight-triangle"?o.drawEdgeTrianglePath(e,t,l.allpts):(o.drawEdgePath(e,t,l.allpts,p),t.lineCap="butt")},x=function(){a&&o.drawEdgeOverlay(t,e)},E=function(){a&&o.drawEdgeUnderlay(t,e)},k=function(){var A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:b;o.drawArrowheads(t,e,A)},B=function(){o.drawElementText(t,e,null,n)};t.lineJoin="round";var S=e.pstyle("ghost").value==="yes";if(S){var N=e.pstyle("ghost-offset-x").pfValue,D=e.pstyle("ghost-offset-y").pfValue,P=e.pstyle("ghost-opacity").value,M=m*P;t.translate(N,D),w(M),k(M),t.translate(-N,-D)}else C();E(),w(),k(),x(),B(),r&&t.translate(u.x1,u.y1)}};var Qv=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(r,n){if(n.visible()){var a=n.pstyle("".concat(e,"-opacity")).value;if(a!==0){var i=this,o=i.usePaths(),l=n._private.rscratch,u=n.pstyle("".concat(e,"-padding")).pfValue,c=2*u,d=n.pstyle("".concat(e,"-color")).value;r.lineWidth=c,l.edgeType==="self"&&!o?r.lineCap="butt":r.lineCap="round",i.colorStrokeStyle(r,d[0],d[1],d[2],a),i.drawEdgePath(n,r,l.allpts,"solid")}}}};Hr.drawEdgeOverlay=Qv("overlay"),Hr.drawEdgeUnderlay=Qv("underlay"),Hr.drawEdgePath=function(t,e,r,n){var a=t._private.rscratch,i=e,o,l=!1,u=this.usePaths(),c=t.pstyle("line-dash-pattern").pfValue,d=t.pstyle("line-dash-offset").pfValue;if(u){var f=r.join("$"),p=a.pathCacheKey&&a.pathCacheKey===f;p?(o=e=a.pathCache,l=!0):(o=e=new Path2D,a.pathCacheKey=f,a.pathCache=o)}if(i.setLineDash)switch(n){case"dotted":i.setLineDash([1,1]);break;case"dashed":i.setLineDash(c),i.lineDashOffset=d;break;case"solid":i.setLineDash([]);break}if(!l&&!a.badLine)switch(e.beginPath&&e.beginPath(),e.moveTo(r[0],r[1]),a.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var v=2;v+3<r.length;v+=4)e.quadraticCurveTo(r[v],r[v+1],r[v+2],r[v+3]);break;case"straight":case"haystack":for(var h=2;h+1<r.length;h+=2)e.lineTo(r[h],r[h+1]);break;case"segments":if(a.isRound){var g=mh(a.roundCorners),y;try{for(g.s();!(y=g.n()).done;){var m=y.value;Mv(e,m)}}catch(w){g.e(w)}finally{g.f()}e.lineTo(r[r.length-2],r[r.length-1])}else for(var b=2;b+1<r.length;b+=2)e.lineTo(r[b],r[b+1]);break}e=i,u?e.stroke(o):e.stroke(),e.setLineDash&&e.setLineDash([])},Hr.drawEdgeTrianglePath=function(t,e,r){e.fillStyle=e.strokeStyle;for(var n=t.pstyle("width").pfValue,a=0;a+1<r.length;a+=2){var i=[r[a+2]-r[a],r[a+3]-r[a+1]],o=Math.sqrt(i[0]*i[0]+i[1]*i[1]),l=[i[1]/o,-i[0]/o],u=[l[0]*n/2,l[1]*n/2];e.beginPath(),e.moveTo(r[a]-u[0],r[a+1]-u[1]),e.lineTo(r[a]+u[0],r[a+1]+u[1]),e.lineTo(r[a+2],r[a+3]),e.closePath(),e.fill()}},Hr.drawArrowheads=function(t,e,r){var n=e._private.rscratch,a=n.edgeType==="haystack";a||this.drawArrowhead(t,e,"source",n.arrowStartX,n.arrowStartY,n.srcArrowAngle,r),this.drawArrowhead(t,e,"mid-target",n.midX,n.midY,n.midtgtArrowAngle,r),this.drawArrowhead(t,e,"mid-source",n.midX,n.midY,n.midsrcArrowAngle,r),a||this.drawArrowhead(t,e,"target",n.arrowEndX,n.arrowEndY,n.tgtArrowAngle,r)},Hr.drawArrowhead=function(t,e,r,n,a,i,o){if(!(isNaN(n)||n==null||isNaN(a)||a==null||isNaN(i)||i==null)){var l=this,u=e.pstyle(r+"-arrow-shape").value;if(u!=="none"){var c=e.pstyle(r+"-arrow-fill").value==="hollow"?"both":"filled",d=e.pstyle(r+"-arrow-fill").value,f=e.pstyle("width").pfValue,p=e.pstyle(r+"-arrow-width"),v=p.value==="match-line"?f:p.pfValue;p.units==="%"&&(v*=f);var h=e.pstyle("opacity").value;o===void 0&&(o=h);var g=t.globalCompositeOperation;(o!==1||d==="hollow")&&(t.globalCompositeOperation="destination-out",l.colorFillStyle(t,255,255,255,1),l.colorStrokeStyle(t,255,255,255,1),l.drawArrowShape(e,t,c,f,u,v,n,a,i),t.globalCompositeOperation=g);var y=e.pstyle(r+"-arrow-color").value;l.colorFillStyle(t,y[0],y[1],y[2],o),l.colorStrokeStyle(t,y[0],y[1],y[2],o),l.drawArrowShape(e,t,d,f,u,v,n,a,i)}}},Hr.drawArrowShape=function(t,e,r,n,a,i,o,l,u){var c=this,d=this.usePaths()&&a!=="triangle-cross",f=!1,p,v=e,h={x:o,y:l},g=t.pstyle("arrow-scale").value,y=this.getArrowWidth(n,g),m=c.arrowShapes[a];if(d){var b=c.arrowPathCache=c.arrowPathCache||[],w=In(a),C=b[w];C!=null?(p=e=C,f=!0):(p=e=new Path2D,b[w]=p)}f||(e.beginPath&&e.beginPath(),d?m.draw(e,1,0,{x:0,y:0},1):m.draw(e,y,u,h,n),e.closePath&&e.closePath()),e=v,d&&(e.translate(o,l),e.rotate(u),e.scale(y,y)),(r==="filled"||r==="both")&&(d?e.fill(p):e.fill()),(r==="hollow"||r==="both")&&(e.lineWidth=i/(d?y:1),e.lineJoin="miter",d?e.stroke(p):e.stroke()),d&&(e.scale(1/y,1/y),e.rotate(-u),e.translate(-o,-l))};var Fc={};Fc.safeDrawImage=function(t,e,r,n,a,i,o,l,u,c){if(!(a<=0||i<=0||u<=0||c<=0))try{t.drawImage(e,r,n,a,i,o,l,u,c)}catch(d){_e(d)}},Fc.drawInscribedImage=function(t,e,r,n,a){var i=this,o=r.position(),l=o.x,u=o.y,c=r.cy().style(),d=c.getIndexedStyle.bind(c),f=d(r,"background-fit","value",n),p=d(r,"background-repeat","value",n),v=r.width(),h=r.height(),g=r.padding()*2,y=v+(d(r,"background-width-relative-to","value",n)==="inner"?0:g),m=h+(d(r,"background-height-relative-to","value",n)==="inner"?0:g),b=r._private.rscratch,w=d(r,"background-clip","value",n),C=w==="node",x=d(r,"background-image-opacity","value",n)*a,E=d(r,"background-image-smoothing","value",n),k=r.pstyle("corner-radius").value;k!=="auto"&&(k=r.pstyle("corner-radius").pfValue);var B=e.width||e.cachedW,S=e.height||e.cachedH;(B==null||S==null)&&(document.body.appendChild(e),B=e.cachedW=e.width||e.offsetWidth,S=e.cachedH=e.height||e.offsetHeight,document.body.removeChild(e));var N=B,D=S;if(d(r,"background-width","value",n)!=="auto"&&(d(r,"background-width","units",n)==="%"?N=d(r,"background-width","pfValue",n)*y:N=d(r,"background-width","pfValue",n)),d(r,"background-height","value",n)!=="auto"&&(d(r,"background-height","units",n)==="%"?D=d(r,"background-height","pfValue",n)*m:D=d(r,"background-height","pfValue",n)),!(N===0||D===0)){if(f==="contain"){var P=Math.min(y/N,m/D);N*=P,D*=P}else if(f==="cover"){var P=Math.max(y/N,m/D);N*=P,D*=P}var M=l-y/2,O=d(r,"background-position-x","units",n),A=d(r,"background-position-x","pfValue",n);O==="%"?M+=(y-N)*A:M+=A;var F=d(r,"background-offset-x","units",n),I=d(r,"background-offset-x","pfValue",n);F==="%"?M+=(y-N)*I:M+=I;var L=u-m/2,R=d(r,"background-position-y","units",n),H=d(r,"background-position-y","pfValue",n);R==="%"?L+=(m-D)*H:L+=H;var V=d(r,"background-offset-y","units",n),z=d(r,"background-offset-y","pfValue",n);V==="%"?L+=(m-D)*z:L+=z,b.pathCache&&(M-=l,L-=u,l=0,u=0);var j=t.globalAlpha;t.globalAlpha=x;var ee=i.getImgSmoothing(t),J=!1;if(E==="no"&&ee?(i.setImgSmoothing(t,!1),J=!0):E==="yes"&&!ee&&(i.setImgSmoothing(t,!0),J=!0),p==="no-repeat")C&&(t.save(),b.pathCache?t.clip(b.pathCache):(i.nodeShapes[i.getNodeShape(r)].draw(t,l,u,y,m,k,b),t.clip())),i.safeDrawImage(t,e,0,0,B,S,M,L,N,D),C&&t.restore();else{var Z=t.createPattern(e,p);t.fillStyle=Z,i.nodeShapes[i.getNodeShape(r)].draw(t,l,u,y,m,k,b),t.translate(M,L),t.fill(),t.translate(-M,-L)}t.globalAlpha=j,J&&i.setImgSmoothing(t,ee)}};var Wn={};Wn.eleTextBiggerThanMin=function(t,e){if(!e){var r=t.cy().zoom(),n=this.getPixelRatio(),a=Math.ceil(jl(r*n));e=Math.pow(2,a)}var i=t.pstyle("font-size").pfValue*e,o=t.pstyle("min-zoomed-font-size").pfValue;return!(i<o)},Wn.drawElementText=function(t,e,r,n,a){var i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,o=this;if(n==null){if(i&&!o.eleTextBiggerThanMin(e))return}else if(n===!1)return;if(e.isNode()){var l=e.pstyle("label");if(!l||!l.value)return;var u=o.getLabelJustification(e);t.textAlign=u,t.textBaseline="bottom"}else{var c=e.element()._private.rscratch.badLine,d=e.pstyle("label"),f=e.pstyle("source-label"),p=e.pstyle("target-label");if(c||(!d||!d.value)&&(!f||!f.value)&&(!p||!p.value))return;t.textAlign="center",t.textBaseline="bottom"}var v=!r,h;r&&(h=r,t.translate(-h.x1,-h.y1)),a==null?(o.drawText(t,e,null,v,i),e.isEdge()&&(o.drawText(t,e,"source",v,i),o.drawText(t,e,"target",v,i))):o.drawText(t,e,a,v,i),r&&t.translate(h.x1,h.y1)},Wn.getFontCache=function(t){var e;this.fontCaches=this.fontCaches||[];for(var r=0;r<this.fontCaches.length;r++)if(e=this.fontCaches[r],e.context===t)return e;return e={context:t},this.fontCaches.push(e),e},Wn.setupTextStyle=function(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,n=e.pstyle("font-style").strValue,a=e.pstyle("font-size").pfValue+"px",i=e.pstyle("font-family").strValue,o=e.pstyle("font-weight").strValue,l=r?e.effectiveOpacity()*e.pstyle("text-opacity").value:1,u=e.pstyle("text-outline-opacity").value*l,c=e.pstyle("color").value,d=e.pstyle("text-outline-color").value;t.font=n+" "+o+" "+a+" "+i,t.lineJoin="round",this.colorFillStyle(t,c[0],c[1],c[2],l),this.colorStrokeStyle(t,d[0],d[1],d[2],u)};function Mc(t,e,r,n,a){var i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:5,o=arguments.length>6?arguments[6]:void 0;t.beginPath(),t.moveTo(e+i,r),t.lineTo(e+n-i,r),t.quadraticCurveTo(e+n,r,e+n,r+i),t.lineTo(e+n,r+a-i),t.quadraticCurveTo(e+n,r+a,e+n-i,r+a),t.lineTo(e+i,r+a),t.quadraticCurveTo(e,r+a,e,r+a-i),t.lineTo(e,r+i),t.quadraticCurveTo(e,r,e+i,r),t.closePath(),o?t.stroke():t.fill()}Wn.getTextAngle=function(t,e){var r,n=t._private,a=n.rscratch,i=e?e+"-":"",o=t.pstyle(i+"text-rotation"),l=lr(a,"labelAngle",e);return o.strValue==="autorotate"?r=t.isEdge()?l:0:o.strValue==="none"?r=0:r=o.pfValue,r},Wn.drawText=function(t,e,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=e._private,o=i.rscratch,l=a?e.effectiveOpacity():1;if(!(a&&(l===0||e.pstyle("text-opacity").value===0))){r==="main"&&(r=null);var u=lr(o,"labelX",r),c=lr(o,"labelY",r),d,f,p=this.getLabelText(e,r);if(p!=null&&p!==""&&!isNaN(u)&&!isNaN(c)){this.setupTextStyle(t,e,a);var v=r?r+"-":"",h=lr(o,"labelWidth",r),g=lr(o,"labelHeight",r),y=e.pstyle(v+"text-margin-x").pfValue,m=e.pstyle(v+"text-margin-y").pfValue,b=e.isEdge(),w=e.pstyle("text-halign").value,C=e.pstyle("text-valign").value;b&&(w="center",C="center"),u+=y,c+=m;var x;switch(n?x=this.getTextAngle(e,r):x=0,x!==0&&(d=u,f=c,t.translate(d,f),t.rotate(x),u=0,c=0),C){case"top":break;case"center":c+=g/2;break;case"bottom":c+=g;break}var E=e.pstyle("text-background-opacity").value,k=e.pstyle("text-border-opacity").value,B=e.pstyle("text-border-width").pfValue,S=e.pstyle("text-background-padding").pfValue,N=e.pstyle("text-background-shape").strValue,D=N.indexOf("round")===0,P=2;if(E>0||B>0&&k>0){var M=u-S;switch(w){case"left":M-=h;break;case"center":M-=h/2;break}var O=c-g-S,A=h+2*S,F=g+2*S;if(E>0){var I=t.fillStyle,L=e.pstyle("text-background-color").value;t.fillStyle="rgba("+L[0]+","+L[1]+","+L[2]+","+E*l+")",D?Mc(t,M,O,A,F,P):t.fillRect(M,O,A,F),t.fillStyle=I}if(B>0&&k>0){var R=t.strokeStyle,H=t.lineWidth,V=e.pstyle("text-border-color").value,z=e.pstyle("text-border-style").value;if(t.strokeStyle="rgba("+V[0]+","+V[1]+","+V[2]+","+k*l+")",t.lineWidth=B,t.setLineDash)switch(z){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"double":t.lineWidth=B/4,t.setLineDash([]);break;case"solid":t.setLineDash([]);break}if(D?Mc(t,M,O,A,F,P,"stroke"):t.strokeRect(M,O,A,F),z==="double"){var j=B/2;D?Mc(t,M+j,O+j,A-j*2,F-j*2,P,"stroke"):t.strokeRect(M+j,O+j,A-j*2,F-j*2)}t.setLineDash&&t.setLineDash([]),t.lineWidth=H,t.strokeStyle=R}}var ee=2*e.pstyle("text-outline-width").pfValue;if(ee>0&&(t.lineWidth=ee),e.pstyle("text-wrap").value==="wrap"){var J=lr(o,"labelWrapCachedLines",r),Z=lr(o,"labelLineHeight",r),re=h/2,Y=this.getLabelJustification(e);switch(Y==="auto"||(w==="left"?Y==="left"?u+=-h:Y==="center"&&(u+=-re):w==="center"?Y==="left"?u+=-re:Y==="right"&&(u+=re):w==="right"&&(Y==="center"?u+=re:Y==="right"&&(u+=h))),C){case"top":c-=(J.length-1)*Z;break;case"center":case"bottom":c-=(J.length-1)*Z;break}for(var _=0;_<J.length;_++)ee>0&&t.strokeText(J[_],u,c),t.fillText(J[_],u,c),c+=Z}else ee>0&&t.strokeText(p,u,c),t.fillText(p,u,c);x!==0&&(t.rotate(-x),t.translate(-d,-f))}}};var $a={};$a.drawNode=function(t,e,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,o=this,l,u,c=e._private,d=c.rscratch,f=e.position();if(!(!le(f.x)||!le(f.y))&&!(i&&!e.visible())){var p=i?e.effectiveOpacity():1,v=o.usePaths(),h,g=!1,y=e.padding();l=e.width()+2*y,u=e.height()+2*y;var m;r&&(m=r,t.translate(-m.x1,-m.y1));for(var b=e.pstyle("background-image"),w=b.value,C=new Array(w.length),x=new Array(w.length),E=0,k=0;k<w.length;k++){var B=w[k],S=C[k]=B!=null&&B!=="none";if(S){var N=e.cy().style().getIndexedStyle(e,"background-image-crossorigin","value",k);E++,x[k]=o.getCachedImage(B,N,function(){c.backgroundTimestamp=Date.now(),e.emitAndNotify("background")})}}var D=e.pstyle("background-blacken").value,P=e.pstyle("border-width").pfValue,M=e.pstyle("background-opacity").value*p,O=e.pstyle("border-color").value,A=e.pstyle("border-style").value,F=e.pstyle("border-join").value,I=e.pstyle("border-cap").value,L=e.pstyle("border-position").value,R=e.pstyle("border-dash-pattern").pfValue,H=e.pstyle("border-dash-offset").pfValue,V=e.pstyle("border-opacity").value*p,z=e.pstyle("outline-width").pfValue,j=e.pstyle("outline-color").value,ee=e.pstyle("outline-style").value,J=e.pstyle("outline-opacity").value*p,Z=e.pstyle("outline-offset").value,re=e.pstyle("corner-radius").value;re!=="auto"&&(re=e.pstyle("corner-radius").pfValue);var Y=function(){var ie=arguments.length>0&&arguments[0]!==void 0?arguments[0]:M;o.eleFillStyle(t,e,ie)},_=function(){var ie=arguments.length>0&&arguments[0]!==void 0?arguments[0]:V;o.colorStrokeStyle(t,O[0],O[1],O[2],ie)},K=function(){var ie=arguments.length>0&&arguments[0]!==void 0?arguments[0]:J;o.colorStrokeStyle(t,j[0],j[1],j[2],ie)},W=function(ie,X,ae,we){var Ce=o.nodePathCache=o.nodePathCache||[],ge=Ih(ae==="polygon"?ae+","+we.join(","):ae,""+X,""+ie,""+re),Se=Ce[ge],ve,ye=!1;return Se!=null?(ve=Se,ye=!0,d.pathCache=ve):(ve=new Path2D,Ce[ge]=d.pathCache=ve),{path:ve,cacheHit:ye}},oe=e.pstyle("shape").strValue,he=e.pstyle("shape-polygon-points").pfValue;if(v){t.translate(f.x,f.y);var ne=W(l,u,oe,he);h=ne.path,g=ne.cacheHit}var se=function(){if(!g){var ie=f;v&&(ie={x:0,y:0}),o.nodeShapes[o.getNodeShape(e)].draw(h||t,ie.x,ie.y,l,u,re,d)}v?t.fill(h):t.fill()},ue=function(){for(var ie=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,X=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,ae=c.backgrounding,we=0,Ce=0;Ce<x.length;Ce++){var ge=e.cy().style().getIndexedStyle(e,"background-image-containment","value",Ce);if(X&&ge==="over"||!X&&ge==="inside"){we++;continue}C[Ce]&&x[Ce].complete&&!x[Ce].error&&(we++,o.drawInscribedImage(t,x[Ce],e,Ce,ie))}c.backgrounding=we!==E,ae!==c.backgrounding&&e.updateStyle(!1)},pe=function(){var ie=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,X=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p;o.hasPie(e)&&(o.drawPie(t,e,X),ie&&(v||o.nodeShapes[o.getNodeShape(e)].draw(t,f.x,f.y,l,u,re,d)))},de=function(){var ie=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,X=(D>0?D:-D)*ie,ae=D>0?0:255;D!==0&&(o.colorFillStyle(t,ae,ae,ae,X),v?t.fill(h):t.fill())},me=function(){if(P>0){if(t.lineWidth=P,t.lineCap=I,t.lineJoin=F,t.setLineDash)switch(A){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash(R),t.lineDashOffset=H;break;case"solid":case"double":t.setLineDash([]);break}if(L!=="center"){if(t.save(),t.lineWidth*=2,L==="inside")v?t.clip(h):t.clip();else{var ie=new Path2D;ie.rect(-l/2-P,-u/2-P,l+2*P,u+2*P),ie.addPath(h),t.clip(ie,"evenodd")}v?t.stroke(h):t.stroke(),t.restore()}else v?t.stroke(h):t.stroke();if(A==="double"){t.lineWidth=P/3;var X=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",v?t.stroke(h):t.stroke(),t.globalCompositeOperation=X}t.setLineDash&&t.setLineDash([])}},Ne=function(){if(z>0){if(t.lineWidth=z,t.lineCap="butt",t.setLineDash)switch(ee){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"solid":case"double":t.setLineDash([]);break}var ie=f;v&&(ie={x:0,y:0});var X=o.getNodeShape(e),ae=P;L==="inside"&&(ae=0),L==="outside"&&(ae*=2);var we=(l+ae+(z+Z))/l,Ce=(u+ae+(z+Z))/u,ge=l*we,Se=u*Ce,ve=o.nodeShapes[X].points,ye;if(v){var Ge=W(ge,Se,X,ve);ye=Ge.path}if(X==="ellipse")o.drawEllipsePath(ye||t,ie.x,ie.y,ge,Se);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(X)){var $e=0,rt=0,nt=0;X==="round-diamond"?$e=(ae+Z+z)*1.4:X==="round-heptagon"?($e=(ae+Z+z)*1.075,nt=-(ae/2+Z+z)/35):X==="round-hexagon"?$e=(ae+Z+z)*1.12:X==="round-pentagon"?($e=(ae+Z+z)*1.13,nt=-(ae/2+Z+z)/15):X==="round-tag"?($e=(ae+Z+z)*1.12,rt=(ae/2+z+Z)*.07):X==="round-triangle"&&($e=(ae+Z+z)*(Math.PI/2),nt=-(ae+Z/2+z)/Math.PI),$e!==0&&(we=(l+$e)/l,ge=l*we,["round-hexagon","round-tag"].includes(X)||(Ce=(u+$e)/u,Se=u*Ce)),re=re==="auto"?Xh(ge,Se):re;for(var Qe=ge/2,Ot=Se/2,ut=re+(ae+z+Z)/2,ht=new Array(ve.length/2),Wt=new Array(ve.length/2),Ft=0;Ft<ve.length/2;Ft++)ht[Ft]={x:ie.x+rt+Qe*ve[Ft*2],y:ie.y+nt+Ot*ve[Ft*2+1]};var Mt,tr,dr,Kt,Je=ht.length;for(tr=ht[Je-1],Mt=0;Mt<Je;Mt++)dr=ht[Mt%Je],Kt=ht[(Mt+1)%Je],Wt[Mt]=Bc(tr,dr,Kt,ut),tr=dr,dr=Kt;o.drawRoundPolygonPath(ye||t,ie.x+rt,ie.y+nt,l*we,u*Ce,ve,Wt)}else if(["roundrectangle","round-rectangle"].includes(X))re=re==="auto"?$n(ge,Se):re,o.drawRoundRectanglePath(ye||t,ie.x,ie.y,ge,Se,re+(ae+z+Z)/2);else if(["cutrectangle","cut-rectangle"].includes(X))re=re==="auto"?Ql():re,o.drawCutRectanglePath(ye||t,ie.x,ie.y,ge,Se,null,re+(ae+z+Z)/4);else if(["bottomroundrectangle","bottom-round-rectangle"].includes(X))re=re==="auto"?$n(ge,Se):re,o.drawBottomRoundRectanglePath(ye||t,ie.x,ie.y,ge,Se,re+(ae+z+Z)/2);else if(X==="barrel")o.drawBarrelPath(ye||t,ie.x,ie.y,ge,Se);else if(X.startsWith("polygon")||["rhomboid","right-rhomboid","round-tag","tag","vee"].includes(X)){var at=(ae+z+Z)/l;ve=zo(Ho(ve,at)),o.drawPolygonPath(ye||t,ie.x,ie.y,l,u,ve)}else{var pt=(ae+z+Z)/l;ve=zo(Ho(ve,-pt)),o.drawPolygonPath(ye||t,ie.x,ie.y,l,u,ve)}if(v?t.stroke(ye):t.stroke(),ee==="double"){t.lineWidth=ae/3;var mn=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",v?t.stroke(ye):t.stroke(),t.globalCompositeOperation=mn}t.setLineDash&&t.setLineDash([])}},De=function(){a&&o.drawNodeOverlay(t,e,f,l,u)},Ee=function(){a&&o.drawNodeUnderlay(t,e,f,l,u)},Pe=function(){o.drawElementText(t,e,null,n)},te=e.pstyle("ghost").value==="yes";if(te){var T=e.pstyle("ghost-offset-x").pfValue,$=e.pstyle("ghost-offset-y").pfValue,Q=e.pstyle("ghost-opacity").value,G=Q*p;t.translate(T,$),K(),Ne(),Y(Q*M),se(),ue(G,!0),_(Q*V),me(),pe(D!==0||P!==0),ue(G,!1),de(G),t.translate(-T,-$)}v&&t.translate(-f.x,-f.y),Ee(),v&&t.translate(f.x,f.y),K(),Ne(),Y(),se(),ue(p,!0),_(),me(),pe(D!==0||P!==0),ue(p,!1),de(),v&&t.translate(-f.x,-f.y),Pe(),De(),r&&t.translate(m.x1,m.y1)}};var Jv=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(r,n,a,i,o){var l=this;if(n.visible()){var u=n.pstyle("".concat(e,"-padding")).pfValue,c=n.pstyle("".concat(e,"-opacity")).value,d=n.pstyle("".concat(e,"-color")).value,f=n.pstyle("".concat(e,"-shape")).value,p=n.pstyle("".concat(e,"-corner-radius")).value;if(c>0){if(a=a||n.position(),i==null||o==null){var v=n.padding();i=n.width()+2*v,o=n.height()+2*v}l.colorFillStyle(r,d[0],d[1],d[2],c),l.nodeShapes[f].draw(r,a.x,a.y,i+u*2,o+u*2,p),r.fill()}}}};$a.drawNodeOverlay=Jv("overlay"),$a.drawNodeUnderlay=Jv("underlay"),$a.hasPie=function(t){return t=t[0],t._private.hasPie},$a.drawPie=function(t,e,r,n){e=e[0],n=n||e.position();var a=e.cy().style(),i=e.pstyle("pie-size"),o=n.x,l=n.y,u=e.width(),c=e.height(),d=Math.min(u,c)/2,f=0,p=this.usePaths();p&&(o=0,l=0),i.units==="%"?d=d*i.pfValue:i.pfValue!==void 0&&(d=i.pfValue/2);for(var v=1;v<=a.pieBackgroundN;v++){var h=e.pstyle("pie-"+v+"-background-size").value,g=e.pstyle("pie-"+v+"-background-color").value,y=e.pstyle("pie-"+v+"-background-opacity").value*r,m=h/100;m+f>1&&(m=1-f);var b=1.5*Math.PI+2*Math.PI*f,w=2*Math.PI*m,C=b+w;h===0||f>=1||f+m>1||(t.beginPath(),t.moveTo(o,l),t.arc(o,l,d,b,C),t.closePath(),this.colorFillStyle(t,g[0],g[1],g[2],y),t.fill(),f+=m)}};var Gt={},v3=100;Gt.getPixelRatio=function(){var t=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var e=this.cy.window(),r=t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return(e.devicePixelRatio||1)/r},Gt.paintCache=function(t){for(var e=this.paintCaches=this.paintCaches||[],r=!0,n,a=0;a<e.length;a++)if(n=e[a],n.context===t){r=!1;break}return r&&(n={context:t},e.push(n)),n},Gt.createGradientStyleFor=function(t,e,r,n,a){var i,o=this.usePaths(),l=r.pstyle(e+"-gradient-stop-colors").value,u=r.pstyle(e+"-gradient-stop-positions").pfValue;if(n==="radial-gradient")if(r.isEdge()){var c=r.sourceEndpoint(),d=r.targetEndpoint(),f=r.midpoint(),p=An(c,f),v=An(d,f);i=t.createRadialGradient(f.x,f.y,0,f.x,f.y,Math.max(p,v))}else{var h=o?{x:0,y:0}:r.position(),g=r.paddedWidth(),y=r.paddedHeight();i=t.createRadialGradient(h.x,h.y,0,h.x,h.y,Math.max(g,y))}else if(r.isEdge()){var m=r.sourceEndpoint(),b=r.targetEndpoint();i=t.createLinearGradient(m.x,m.y,b.x,b.y)}else{var w=o?{x:0,y:0}:r.position(),C=r.paddedWidth(),x=r.paddedHeight(),E=C/2,k=x/2,B=r.pstyle("background-gradient-direction").value;switch(B){case"to-bottom":i=t.createLinearGradient(w.x,w.y-k,w.x,w.y+k);break;case"to-top":i=t.createLinearGradient(w.x,w.y+k,w.x,w.y-k);break;case"to-left":i=t.createLinearGradient(w.x+E,w.y,w.x-E,w.y);break;case"to-right":i=t.createLinearGradient(w.x-E,w.y,w.x+E,w.y);break;case"to-bottom-right":case"to-right-bottom":i=t.createLinearGradient(w.x-E,w.y-k,w.x+E,w.y+k);break;case"to-top-right":case"to-right-top":i=t.createLinearGradient(w.x-E,w.y+k,w.x+E,w.y-k);break;case"to-bottom-left":case"to-left-bottom":i=t.createLinearGradient(w.x+E,w.y-k,w.x-E,w.y+k);break;case"to-top-left":case"to-left-top":i=t.createLinearGradient(w.x+E,w.y+k,w.x-E,w.y-k);break}}if(!i)return null;for(var S=u.length===l.length,N=l.length,D=0;D<N;D++)i.addColorStop(S?u[D]:D/(N-1),"rgba("+l[D][0]+","+l[D][1]+","+l[D][2]+","+a+")");return i},Gt.gradientFillStyle=function(t,e,r,n){var a=this.createGradientStyleFor(t,"background",e,r,n);if(!a)return null;t.fillStyle=a},Gt.colorFillStyle=function(t,e,r,n,a){t.fillStyle="rgba("+e+","+r+","+n+","+a+")"},Gt.eleFillStyle=function(t,e,r){var n=e.pstyle("background-fill").value;if(n==="linear-gradient"||n==="radial-gradient")this.gradientFillStyle(t,e,n,r);else{var a=e.pstyle("background-color").value;this.colorFillStyle(t,a[0],a[1],a[2],r)}},Gt.gradientStrokeStyle=function(t,e,r,n){var a=this.createGradientStyleFor(t,"line",e,r,n);if(!a)return null;t.strokeStyle=a},Gt.colorStrokeStyle=function(t,e,r,n,a){t.strokeStyle="rgba("+e+","+r+","+n+","+a+")"},Gt.eleStrokeStyle=function(t,e,r){var n=e.pstyle("line-fill").value;if(n==="linear-gradient"||n==="radial-gradient")this.gradientStrokeStyle(t,e,n,r);else{var a=e.pstyle("line-color").value;this.colorStrokeStyle(t,a[0],a[1],a[2],r)}},Gt.matchCanvasSize=function(t){var e=this,r=e.data,n=e.findContainerClientCoords(),a=n[2],i=n[3],o=e.getPixelRatio(),l=e.motionBlurPxRatio;(t===e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_NODE]||t===e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_DRAG])&&(o=l);var u=a*o,c=i*o,d;if(!(u===e.canvasWidth&&c===e.canvasHeight)){e.fontCaches=null;var f=r.canvasContainer;f.style.width=a+"px",f.style.height=i+"px";for(var p=0;p<e.CANVAS_LAYERS;p++)d=r.canvases[p],d.width=u,d.height=c,d.style.width=a+"px",d.style.height=i+"px";for(var p=0;p<e.BUFFER_COUNT;p++)d=r.bufferCanvases[p],d.width=u,d.height=c,d.style.width=a+"px",d.style.height=i+"px";e.textureMult=1,o<=1&&(d=r.bufferCanvases[e.TEXTURE_BUFFER],e.textureMult=2,d.width=u*e.textureMult,d.height=c*e.textureMult),e.canvasWidth=u,e.canvasHeight=c}},Gt.renderTo=function(t,e,r,n){this.render({forcedContext:t,forcedZoom:e,forcedPan:r,drawAllLayers:!0,forcedPxRatio:n})},Gt.render=function(t){t=t||zh();var e=t.forcedContext,r=t.drawAllLayers,n=t.drawOnlyNodeLayer,a=t.forcedZoom,i=t.forcedPan,o=this,l=t.forcedPxRatio===void 0?this.getPixelRatio():t.forcedPxRatio,u=o.cy,c=o.data,d=c.canvasNeedsRedraw,f=o.textureOnViewport&&!e&&(o.pinching||o.hoverData.dragging||o.swipePanning||o.data.wheelZooming),p=t.motionBlur!==void 0?t.motionBlur:o.motionBlur,v=o.motionBlurPxRatio,h=u.hasCompoundNodes(),g=o.hoverData.draggingEles,y=!!(o.hoverData.selecting||o.touchData.selecting);p=p&&!e&&o.motionBlurEnabled&&!y;var m=p;e||(o.prevPxRatio!==l&&(o.invalidateContainerClientCoordsCache(),o.matchCanvasSize(o.container),o.redrawHint("eles",!0),o.redrawHint("drag",!0)),o.prevPxRatio=l),!e&&o.motionBlurTimeout&&clearTimeout(o.motionBlurTimeout),p&&(o.mbFrames==null&&(o.mbFrames=0),o.mbFrames++,o.mbFrames<3&&(m=!1),o.mbFrames>o.minMbLowQualFrames&&(o.motionBlurPxRatio=o.mbPxRBlurry)),o.clearingMotionBlur&&(o.motionBlurPxRatio=1),o.textureDrawLastFrame&&!f&&(d[o.NODE]=!0,d[o.SELECT_BOX]=!0);var b=u.style(),w=u.zoom(),C=a!==void 0?a:w,x=u.pan(),E={x:x.x,y:x.y},k={zoom:w,pan:{x:x.x,y:x.y}},B=o.prevViewport,S=B===void 0||k.zoom!==B.zoom||k.pan.x!==B.pan.x||k.pan.y!==B.pan.y;!S&&!(g&&!h)&&(o.motionBlurPxRatio=1),i&&(E=i),C*=l,E.x*=l,E.y*=l;var N=o.getCachedZSortedEles();function D(ne,se,ue,pe,de){var me=ne.globalCompositeOperation;ne.globalCompositeOperation="destination-out",o.colorFillStyle(ne,255,255,255,o.motionBlurTransparency),ne.fillRect(se,ue,pe,de),ne.globalCompositeOperation=me}function P(ne,se){var ue,pe,de,me;!o.clearingMotionBlur&&(ne===c.bufferContexts[o.MOTIONBLUR_BUFFER_NODE]||ne===c.bufferContexts[o.MOTIONBLUR_BUFFER_DRAG])?(ue={x:x.x*v,y:x.y*v},pe=w*v,de=o.canvasWidth*v,me=o.canvasHeight*v):(ue=E,pe=C,de=o.canvasWidth,me=o.canvasHeight),ne.setTransform(1,0,0,1,0,0),se==="motionBlur"?D(ne,0,0,de,me):!e&&(se===void 0||se)&&ne.clearRect(0,0,de,me),r||(ne.translate(ue.x,ue.y),ne.scale(pe,pe)),i&&ne.translate(i.x,i.y),a&&ne.scale(a,a)}if(f||(o.textureDrawLastFrame=!1),f){if(o.textureDrawLastFrame=!0,!o.textureCache){o.textureCache={},o.textureCache.bb=u.mutableElements().boundingBox(),o.textureCache.texture=o.data.bufferCanvases[o.TEXTURE_BUFFER];var M=o.data.bufferContexts[o.TEXTURE_BUFFER];M.setTransform(1,0,0,1,0,0),M.clearRect(0,0,o.canvasWidth*o.textureMult,o.canvasHeight*o.textureMult),o.render({forcedContext:M,drawOnlyNodeLayer:!0,forcedPxRatio:l*o.textureMult});var k=o.textureCache.viewport={zoom:u.zoom(),pan:u.pan(),width:o.canvasWidth,height:o.canvasHeight};k.mpan={x:(0-k.pan.x)/k.zoom,y:(0-k.pan.y)/k.zoom}}d[o.DRAG]=!1,d[o.NODE]=!1;var O=c.contexts[o.NODE],A=o.textureCache.texture,k=o.textureCache.viewport;O.setTransform(1,0,0,1,0,0),p?D(O,0,0,k.width,k.height):O.clearRect(0,0,k.width,k.height);var F=b.core("outside-texture-bg-color").value,I=b.core("outside-texture-bg-opacity").value;o.colorFillStyle(O,F[0],F[1],F[2],I),O.fillRect(0,0,k.width,k.height);var w=u.zoom();P(O,!1),O.clearRect(k.mpan.x,k.mpan.y,k.width/k.zoom/l,k.height/k.zoom/l),O.drawImage(A,k.mpan.x,k.mpan.y,k.width/k.zoom/l,k.height/k.zoom/l)}else o.textureOnViewport&&!e&&(o.textureCache=null);var L=u.extent(),R=o.pinching||o.hoverData.dragging||o.swipePanning||o.data.wheelZooming||o.hoverData.draggingEles||o.cy.animated(),H=o.hideEdgesOnViewport&&R,V=[];if(V[o.NODE]=!d[o.NODE]&&p&&!o.clearedForMotionBlur[o.NODE]||o.clearingMotionBlur,V[o.NODE]&&(o.clearedForMotionBlur[o.NODE]=!0),V[o.DRAG]=!d[o.DRAG]&&p&&!o.clearedForMotionBlur[o.DRAG]||o.clearingMotionBlur,V[o.DRAG]&&(o.clearedForMotionBlur[o.DRAG]=!0),d[o.NODE]||r||n||V[o.NODE]){var z=p&&!V[o.NODE]&&v!==1,O=e||(z?o.data.bufferContexts[o.MOTIONBLUR_BUFFER_NODE]:c.contexts[o.NODE]),j=p&&!z?"motionBlur":void 0;P(O,j),H?o.drawCachedNodes(O,N.nondrag,l,L):o.drawLayeredElements(O,N.nondrag,l,L),o.debug&&o.drawDebugPoints(O,N.nondrag),!r&&!p&&(d[o.NODE]=!1)}if(!n&&(d[o.DRAG]||r||V[o.DRAG])){var z=p&&!V[o.DRAG]&&v!==1,O=e||(z?o.data.bufferContexts[o.MOTIONBLUR_BUFFER_DRAG]:c.contexts[o.DRAG]);P(O,p&&!z?"motionBlur":void 0),H?o.drawCachedNodes(O,N.drag,l,L):o.drawCachedElements(O,N.drag,l,L),o.debug&&o.drawDebugPoints(O,N.drag),!r&&!p&&(d[o.DRAG]=!1)}if(o.showFps||!n&&d[o.SELECT_BOX]&&!r){var O=e||c.contexts[o.SELECT_BOX];if(P(O),o.selection[4]==1&&(o.hoverData.selecting||o.touchData.selecting)){var w=o.cy.zoom(),ee=b.core("selection-box-border-width").value/w;O.lineWidth=ee,O.fillStyle="rgba("+b.core("selection-box-color").value[0]+","+b.core("selection-box-color").value[1]+","+b.core("selection-box-color").value[2]+","+b.core("selection-box-opacity").value+")",O.fillRect(o.selection[0],o.selection[1],o.selection[2]-o.selection[0],o.selection[3]-o.selection[1]),ee>0&&(O.strokeStyle="rgba("+b.core("selection-box-border-color").value[0]+","+b.core("selection-box-border-color").value[1]+","+b.core("selection-box-border-color").value[2]+","+b.core("selection-box-opacity").value+")",O.strokeRect(o.selection[0],o.selection[1],o.selection[2]-o.selection[0],o.selection[3]-o.selection[1]))}if(c.bgActivePosistion&&!o.hoverData.selecting){var w=o.cy.zoom(),J=c.bgActivePosistion;O.fillStyle="rgba("+b.core("active-bg-color").value[0]+","+b.core("active-bg-color").value[1]+","+b.core("active-bg-color").value[2]+","+b.core("active-bg-opacity").value+")",O.beginPath(),O.arc(J.x,J.y,b.core("active-bg-size").pfValue/w,0,2*Math.PI),O.fill()}var Z=o.lastRedrawTime;if(o.showFps&&Z){Z=Math.round(Z);var re=Math.round(1e3/Z);O.setTransform(1,0,0,1,0,0),O.fillStyle="rgba(255, 0, 0, 0.75)",O.strokeStyle="rgba(255, 0, 0, 0.75)",O.lineWidth=1,O.fillText("1 frame = "+Z+" ms = "+re+" fps",0,20);var Y=60;O.strokeRect(0,30,250,20),O.fillRect(0,30,250*Math.min(re/Y,1),20)}r||(d[o.SELECT_BOX]=!1)}if(p&&v!==1){var _=c.contexts[o.NODE],K=o.data.bufferCanvases[o.MOTIONBLUR_BUFFER_NODE],W=c.contexts[o.DRAG],oe=o.data.bufferCanvases[o.MOTIONBLUR_BUFFER_DRAG],he=function(se,ue,pe){se.setTransform(1,0,0,1,0,0),pe||!m?se.clearRect(0,0,o.canvasWidth,o.canvasHeight):D(se,0,0,o.canvasWidth,o.canvasHeight);var de=v;se.drawImage(ue,0,0,o.canvasWidth*de,o.canvasHeight*de,0,0,o.canvasWidth,o.canvasHeight)};(d[o.NODE]||V[o.NODE])&&(he(_,K,V[o.NODE]),d[o.NODE]=!1),(d[o.DRAG]||V[o.DRAG])&&(he(W,oe,V[o.DRAG]),d[o.DRAG]=!1)}o.prevViewport=k,o.clearingMotionBlur&&(o.clearingMotionBlur=!1,o.motionBlurCleared=!0,o.motionBlur=!0),p&&(o.motionBlurTimeout=setTimeout(function(){o.motionBlurTimeout=null,o.clearedForMotionBlur[o.NODE]=!1,o.clearedForMotionBlur[o.DRAG]=!1,o.motionBlur=!1,o.clearingMotionBlur=!f,o.mbFrames=0,d[o.NODE]=!0,d[o.DRAG]=!0,o.redraw()},v3)),e||u.emit("render")};var gn={};gn.drawPolygonPath=function(t,e,r,n,a,i){var o=n/2,l=a/2;t.beginPath&&t.beginPath(),t.moveTo(e+o*i[0],r+l*i[1]);for(var u=1;u<i.length/2;u++)t.lineTo(e+o*i[u*2],r+l*i[u*2+1]);t.closePath()},gn.drawRoundPolygonPath=function(t,e,r,n,a,i,o){o.forEach(function(l){return Mv(t,l)}),t.closePath()},gn.drawRoundRectanglePath=function(t,e,r,n,a,i){var o=n/2,l=a/2,u=i==="auto"?$n(n,a):Math.min(i,l,o);t.beginPath&&t.beginPath(),t.moveTo(e,r-l),t.arcTo(e+o,r-l,e+o,r,u),t.arcTo(e+o,r+l,e,r+l,u),t.arcTo(e-o,r+l,e-o,r,u),t.arcTo(e-o,r-l,e,r-l,u),t.lineTo(e,r-l),t.closePath()},gn.drawBottomRoundRectanglePath=function(t,e,r,n,a,i){var o=n/2,l=a/2,u=i==="auto"?$n(n,a):i;t.beginPath&&t.beginPath(),t.moveTo(e,r-l),t.lineTo(e+o,r-l),t.lineTo(e+o,r),t.arcTo(e+o,r+l,e,r+l,u),t.arcTo(e-o,r+l,e-o,r,u),t.lineTo(e-o,r-l),t.lineTo(e,r-l),t.closePath()},gn.drawCutRectanglePath=function(t,e,r,n,a,i,o){var l=n/2,u=a/2,c=o==="auto"?Ql():o;t.beginPath&&t.beginPath(),t.moveTo(e-l+c,r-u),t.lineTo(e+l-c,r-u),t.lineTo(e+l,r-u+c),t.lineTo(e+l,r+u-c),t.lineTo(e+l-c,r+u),t.lineTo(e-l+c,r+u),t.lineTo(e-l,r+u-c),t.lineTo(e-l,r-u+c),t.closePath()},gn.drawBarrelPath=function(t,e,r,n,a){var i=n/2,o=a/2,l=e-i,u=e+i,c=r-o,d=r+o,f=Jl(n,a),p=f.widthOffset,v=f.heightOffset,h=f.ctrlPtOffsetPct*p;t.beginPath&&t.beginPath(),t.moveTo(l,c+v),t.lineTo(l,d-v),t.quadraticCurveTo(l+h,d,l+p,d),t.lineTo(u-p,d),t.quadraticCurveTo(u-h,d,u,d-v),t.lineTo(u,c+v),t.quadraticCurveTo(u-h,c,u-p,c),t.lineTo(l+p,c),t.quadraticCurveTo(l+h,c,l,c+v),t.closePath()};for(var eg=Math.sin(0),tg=Math.cos(0),Lc={},Ic={},rg=Math.PI/40,Va=0*Math.PI;Va<2*Math.PI;Va+=rg)Lc[Va]=Math.sin(Va),Ic[Va]=Math.cos(Va);gn.drawEllipsePath=function(t,e,r,n,a){if(t.beginPath&&t.beginPath(),t.ellipse)t.ellipse(e,r,n/2,a/2,0,0,2*Math.PI);else for(var i,o,l=n/2,u=a/2,c=0*Math.PI;c<2*Math.PI;c+=rg)i=e-l*Lc[c]*eg+l*Ic[c]*tg,o=r+u*Ic[c]*eg+u*Lc[c]*tg,c===0?t.moveTo(i,o):t.lineTo(i,o);t.closePath()};var qi={};qi.createBuffer=function(t,e){var r=document.createElement("canvas");return r.width=t,r.height=e,[r,r.getContext("2d")]},qi.bufferCanvasImage=function(t){var e=this.cy,r=e.mutableElements(),n=r.boundingBox(),a=this.findContainerClientCoords(),i=t.full?Math.ceil(n.w):a[2],o=t.full?Math.ceil(n.h):a[3],l=le(t.maxWidth)||le(t.maxHeight),u=this.getPixelRatio(),c=1;if(t.scale!==void 0)i*=t.scale,o*=t.scale,c=t.scale;else if(l){var d=1/0,f=1/0;le(t.maxWidth)&&(d=c*t.maxWidth/i),le(t.maxHeight)&&(f=c*t.maxHeight/o),c=Math.min(d,f),i*=c,o*=c}l||(i*=u,o*=u,c*=u);var p=document.createElement("canvas");p.width=i,p.height=o,p.style.width=i+"px",p.style.height=o+"px";var v=p.getContext("2d");if(i>0&&o>0){v.clearRect(0,0,i,o),v.globalCompositeOperation="source-over";var h=this.getCachedZSortedEles();if(t.full)v.translate(-n.x1*c,-n.y1*c),v.scale(c,c),this.drawElements(v,h),v.scale(1/c,1/c),v.translate(n.x1*c,n.y1*c);else{var g=e.pan(),y={x:g.x*c,y:g.y*c};c*=e.zoom(),v.translate(y.x,y.y),v.scale(c,c),this.drawElements(v,h),v.scale(1/c,1/c),v.translate(-y.x,-y.y)}t.bg&&(v.globalCompositeOperation="destination-over",v.fillStyle=t.bg,v.rect(0,0,i,o),v.fill())}return p};function g3(t,e){for(var r=atob(t),n=new ArrayBuffer(r.length),a=new Uint8Array(n),i=0;i<r.length;i++)a[i]=r.charCodeAt(i);return new Blob([n],{type:e})}function ng(t){var e=t.indexOf(",");return t.substr(e+1)}function ag(t,e,r){var n=function(){return e.toDataURL(r,t.quality)};switch(t.output){case"blob-promise":return new xa(function(a,i){try{e.toBlob(function(o){o!=null?a(o):i(new Error("`canvas.toBlob()` sent a null value in its callback"))},r,t.quality)}catch(o){i(o)}});case"blob":return g3(ng(n()),r);case"base64":return ng(n());case"base64uri":default:return n()}}qi.png=function(t){return ag(t,this.bufferCanvasImage(t),"image/png")},qi.jpg=function(t){return ag(t,this.bufferCanvasImage(t),"image/jpeg")};var ig={};ig.nodeShapeImpl=function(t,e,r,n,a,i,o,l){switch(t){case"ellipse":return this.drawEllipsePath(e,r,n,a,i);case"polygon":return this.drawPolygonPath(e,r,n,a,i,o);case"round-polygon":return this.drawRoundPolygonPath(e,r,n,a,i,o,l);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(e,r,n,a,i,l);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(e,r,n,a,i,o,l);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(e,r,n,a,i,l);case"barrel":return this.drawBarrelPath(e,r,n,a,i)}};var m3=og,Ie=og.prototype;Ie.CANVAS_LAYERS=3,Ie.SELECT_BOX=0,Ie.DRAG=1,Ie.NODE=2,Ie.BUFFER_COUNT=3,Ie.TEXTURE_BUFFER=0,Ie.MOTIONBLUR_BUFFER_NODE=1,Ie.MOTIONBLUR_BUFFER_DRAG=2;function og(t){var e=this,r=e.cy.window(),n=r.document;e.data={canvases:new Array(Ie.CANVAS_LAYERS),contexts:new Array(Ie.CANVAS_LAYERS),canvasNeedsRedraw:new Array(Ie.CANVAS_LAYERS),bufferCanvases:new Array(Ie.BUFFER_COUNT),bufferContexts:new Array(Ie.CANVAS_LAYERS)};var a="-webkit-tap-highlight-color",i="rgba(0,0,0,0)";e.data.canvasContainer=n.createElement("div");var o=e.data.canvasContainer.style;e.data.canvasContainer.style[a]=i,o.position="relative",o.zIndex="0",o.overflow="hidden";var l=t.cy.container();l.appendChild(e.data.canvasContainer),l.style[a]=i;var u={"-webkit-user-select":"none","-moz-user-select":"-moz-none","user-select":"none","-webkit-tap-highlight-color":"rgba(0,0,0,0)","outline-style":"none"};aT()&&(u["-ms-touch-action"]="none",u["touch-action"]="none");for(var c=0;c<Ie.CANVAS_LAYERS;c++){var d=e.data.canvases[c]=n.createElement("canvas");e.data.contexts[c]=d.getContext("2d"),Object.keys(u).forEach(function(Y){d.style[Y]=u[Y]}),d.style.position="absolute",d.setAttribute("data-id","layer"+c),d.style.zIndex=String(Ie.CANVAS_LAYERS-c),e.data.canvasContainer.appendChild(d),e.data.canvasNeedsRedraw[c]=!1}e.data.topCanvas=e.data.canvases[0],e.data.canvases[Ie.NODE].setAttribute("data-id","layer"+Ie.NODE+"-node"),e.data.canvases[Ie.SELECT_BOX].setAttribute("data-id","layer"+Ie.SELECT_BOX+"-selectbox"),e.data.canvases[Ie.DRAG].setAttribute("data-id","layer"+Ie.DRAG+"-drag");for(var c=0;c<Ie.BUFFER_COUNT;c++)e.data.bufferCanvases[c]=n.createElement("canvas"),e.data.bufferContexts[c]=e.data.bufferCanvases[c].getContext("2d"),e.data.bufferCanvases[c].style.position="absolute",e.data.bufferCanvases[c].setAttribute("data-id","buffer"+c),e.data.bufferCanvases[c].style.zIndex=String(-c-1),e.data.bufferCanvases[c].style.visibility="hidden";e.pathsEnabled=!0;var f=zt(),p=function(_){return{x:(_.x1+_.x2)/2,y:(_.y1+_.y2)/2}},v=function(_){return{x:-_.w/2,y:-_.h/2}},h=function(_){var K=_[0]._private,W=K.oldBackgroundTimestamp===K.backgroundTimestamp;return!W},g=function(_){return _[0]._private.nodeKey},y=function(_){return _[0]._private.labelStyleKey},m=function(_){return _[0]._private.sourceLabelStyleKey},b=function(_){return _[0]._private.targetLabelStyleKey},w=function(_,K,W,oe,he){return e.drawElement(_,K,W,!1,!1,he)},C=function(_,K,W,oe,he){return e.drawElementText(_,K,W,oe,"main",he)},x=function(_,K,W,oe,he){return e.drawElementText(_,K,W,oe,"source",he)},E=function(_,K,W,oe,he){return e.drawElementText(_,K,W,oe,"target",he)},k=function(_){return _.boundingBox(),_[0]._private.bodyBounds},B=function(_){return _.boundingBox(),_[0]._private.labelBounds.main||f},S=function(_){return _.boundingBox(),_[0]._private.labelBounds.source||f},N=function(_){return _.boundingBox(),_[0]._private.labelBounds.target||f},D=function(_,K){return K},P=function(_){return p(k(_))},M=function(_,K,W){var oe=_?_+"-":"";return{x:K.x+W.pstyle(oe+"text-margin-x").pfValue,y:K.y+W.pstyle(oe+"text-margin-y").pfValue}},O=function(_,K,W){var oe=_[0]._private.rscratch;return{x:oe[K],y:oe[W]}},A=function(_){return M("",O(_,"labelX","labelY"),_)},F=function(_){return M("source",O(_,"sourceLabelX","sourceLabelY"),_)},I=function(_){return M("target",O(_,"targetLabelX","targetLabelY"),_)},L=function(_){return v(k(_))},R=function(_){return v(S(_))},H=function(_){return v(N(_))},V=function(_){var K=B(_),W=v(B(_));if(_.isNode()){switch(_.pstyle("text-halign").value){case"left":W.x=-K.w;break;case"right":W.x=0;break}switch(_.pstyle("text-valign").value){case"top":W.y=-K.h;break;case"bottom":W.y=0;break}}return W},z=e.data.eleTxrCache=new Hi(e,{getKey:g,doesEleInvalidateKey:h,drawElement:w,getBoundingBox:k,getRotationPoint:P,getRotationOffset:L,allowEdgeTxrCaching:!1,allowParentTxrCaching:!1}),j=e.data.lblTxrCache=new Hi(e,{getKey:y,drawElement:C,getBoundingBox:B,getRotationPoint:A,getRotationOffset:V,isVisible:D}),ee=e.data.slbTxrCache=new Hi(e,{getKey:m,drawElement:x,getBoundingBox:S,getRotationPoint:F,getRotationOffset:R,isVisible:D}),J=e.data.tlbTxrCache=new Hi(e,{getKey:b,drawElement:E,getBoundingBox:N,getRotationPoint:I,getRotationOffset:H,isVisible:D}),Z=e.data.lyrTxrCache=new Wv(e);e.onUpdateEleCalcs(function(_,K){z.invalidateElements(K),j.invalidateElements(K),ee.invalidateElements(K),J.invalidateElements(K),Z.invalidateElements(K);for(var W=0;W<K.length;W++){var oe=K[W]._private;oe.oldBackgroundTimestamp=oe.backgroundTimestamp}});var re=function(_){for(var K=0;K<_.length;K++)Z.enqueueElementRefinement(_[K].ele)};z.onDequeue(re),j.onDequeue(re),ee.onDequeue(re),J.onDequeue(re)}Ie.redrawHint=function(t,e){var r=this;switch(t){case"eles":r.data.canvasNeedsRedraw[Ie.NODE]=e;break;case"drag":r.data.canvasNeedsRedraw[Ie.DRAG]=e;break;case"select":r.data.canvasNeedsRedraw[Ie.SELECT_BOX]=e;break}};var y3=typeof Path2D<"u";Ie.path2dEnabled=function(t){if(t===void 0)return this.pathsEnabled;this.pathsEnabled=!!t},Ie.usePaths=function(){return y3&&this.pathsEnabled},Ie.setImgSmoothing=function(t,e){t.imageSmoothingEnabled!=null?t.imageSmoothingEnabled=e:(t.webkitImageSmoothingEnabled=e,t.mozImageSmoothingEnabled=e,t.msImageSmoothingEnabled=e)},Ie.getImgSmoothing=function(t){return t.imageSmoothingEnabled!=null?t.imageSmoothingEnabled:t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled},Ie.makeOffscreenCanvas=function(t,e){var r;if((typeof OffscreenCanvas>"u"?"undefined":ot(OffscreenCanvas))!=="undefined")r=new OffscreenCanvas(t,e);else{var n=this.cy.window(),a=n.document;r=a.createElement("canvas"),r.width=t,r.height=e}return r},[Yv,Sr,Hr,Fc,Wn,$a,Gt,gn,qi,ig].forEach(function(t){xe(Ie,t)});var b3=[{name:"null",impl:Ev},{name:"base",impl:Kv},{name:"canvas",impl:m3}],w3=[{type:"layout",extensions:TP},{type:"renderer",extensions:b3}],sg={},lg={};function cg(t,e,r){var n=r,a=function(B){_e("Can not register `"+e+"` for `"+t+"` since `"+B+"` already exists in the prototype and can not be overridden")};if(t==="core"){if($i.prototype[e])return a(e);$i.prototype[e]=r}else if(t==="collection"){if(Ct.prototype[e])return a(e);Ct.prototype[e]=r}else if(t==="layout"){for(var i=function(B){this.options=B,r.call(this,B),Fe(this._private)||(this._private={}),this._private.cy=B.cy,this._private.listeners=[],this.createEmitter()},o=i.prototype=Object.create(r.prototype),l=[],u=0;u<l.length;u++){var c=l[u];o[c]=o[c]||function(){return this}}o.start&&!o.run?o.run=function(){return this.start(),this}:!o.start&&o.run&&(o.start=function(){return this.run(),this});var d=r.prototype.stop;o.stop=function(){var k=this.options;if(k&&k.animate){var B=this.animations;if(B)for(var S=0;S<B.length;S++)B[S].stop()}return d?d.call(this):this.emit("layoutstop"),this},o.destroy||(o.destroy=function(){return this}),o.cy=function(){return this._private.cy};var f=function(B){return B._private.cy},p={addEventFields:function(B,S){S.layout=B,S.cy=f(B),S.target=B},bubble:function(){return!0},parent:function(B){return f(B)}};xe(o,{createEmitter:function(){return this._private.emitter=new rs(p,this),this},emitter:function(){return this._private.emitter},on:function(B,S){return this.emitter().on(B,S),this},one:function(B,S){return this.emitter().one(B,S),this},once:function(B,S){return this.emitter().one(B,S),this},removeListener:function(B,S){return this.emitter().removeListener(B,S),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},emit:function(B,S){return this.emitter().emit(B,S),this}}),Re.eventAliasesOn(o),n=i}else if(t==="renderer"&&e!=="null"&&e!=="base"){var v=ug("renderer","base"),h=v.prototype,g=r,y=r.prototype,m=function(){v.apply(this,arguments),g.apply(this,arguments)},b=m.prototype;for(var w in h){var C=h[w],x=y[w]!=null;if(x)return a(w);b[w]=C}for(var E in y)b[E]=y[E];h.clientFunctions.forEach(function(k){b[k]=b[k]||function(){Xe("Renderer does not implement `renderer."+k+"()` on its prototype")}}),n=m}else if(t==="__proto__"||t==="constructor"||t==="prototype")return Xe(t+" is an illegal type to be registered, possibly lead to prototype pollutions");return Sh({map:sg,keys:[t,e],value:n})}function ug(t,e){return Th({map:sg,keys:[t,e]})}function C3(t,e,r,n,a){return Sh({map:lg,keys:[t,e,r,n],value:a})}function k3(t,e,r,n){return Th({map:lg,keys:[t,e,r,n]})}var Ac=function(){if(arguments.length===2)return ug.apply(null,arguments);if(arguments.length===3)return cg.apply(null,arguments);if(arguments.length===4)return k3.apply(null,arguments);if(arguments.length===5)return C3.apply(null,arguments);Xe("Invalid extension access syntax")};$i.prototype.extension=Ac,w3.forEach(function(t){t.extensions.forEach(function(e){cg(t.type,e.name,e.impl)})});var dg=function t(){if(!(this instanceof t))return new t;this.length=0},jn=dg.prototype;jn.instanceString=function(){return"stylesheet"},jn.selector=function(t){var e=this.length++;return this[e]={selector:t,properties:[]},this},jn.css=function(t,e){var r=this.length-1;if(be(t))this[r].properties.push({name:t,value:e});else if(Fe(t))for(var n=t,a=Object.keys(n),i=0;i<a.length;i++){var o=a[i],l=n[o];if(l!=null){var u=Nt.properties[o]||Nt.properties[Po(o)];if(u!=null){var c=u.name,d=l;this[r].properties.push({name:c,value:d})}}}return this},jn.style=jn.css,jn.generateStyle=function(t){var e=new Nt(t);return this.appendToStyle(e)},jn.appendToStyle=function(t){for(var e=0;e<this.length;e++){var r=this[e],n=r.selector,a=r.properties;t.selector(n);for(var i=0;i<a.length;i++){var o=a[i];t.css(o.name,o.value)}}return t};var x3="3.30.2",Yn=function(e){if(e===void 0&&(e={}),Fe(e))return new $i(e);if(be(e))return Ac.apply(Ac,arguments)};Yn.use=function(t){var e=Array.prototype.slice.call(arguments,1);return e.unshift(Yn),t.apply(null,e),this},Yn.warnings=function(t){return $h(t)},Yn.version=x3,Yn.stylesheet=Yn.Stylesheet=dg;let E3=class{constructor(e,r){Br(this,"cy",null);Br(this,"nodes",[]);Br(this,"edges",[]);Br(this,"axons",[]);Br(this,"dendrites",[]);Br(this,"labelCache",new Map);Br(this,"graphCanvas",null);this.labelCache=e,this.graphCanvas=r}async addConnectivity(e){if(this.axons=e.axons.map(r=>JSON.stringify(r)),this.dendrites=e.dendrites.map(r=>JSON.stringify(r)),e.connectivity.length)for(const r of e.connectivity){const n=await this.graphNode(r[0]),a=await this.graphNode(r[1]);this.nodes.push(n),this.nodes.push(a),this.edges.push({id:`${n.id}_${a.id}`,source:n.id,target:a.id})}else this.nodes.push({id:"MISSING",label:"NO PATHS"})}showConnectivity(e){this.cy=new T3(this,e)}clearConnectivity(){this.cy&&(this.cy.remove(),this.cy=null)}get elements(){return[...this.nodes.map(e=>({data:e})),...this.edges.map(e=>({data:e}))]}get roots(){return this.dendrites}async graphNode(e){const r=JSON.stringify(e),n=[e[0],...e[1]],a=[];for(const o of n){const l=this.labelCache.has(o)?this.labelCache.get(o):"";a.push(l)}n.push(...a);const i={id:r,label:n.join(`
|
|
448
|
-
`)};return this.axons.includes(r)?this.dendrites.includes(r)?i["both-a-d"]=!0:i.axon=!0:this.dendrites.includes(r)&&(i.dendrite=!0),i}};const S3=[{selector:"node",style:{label:"data(label)","background-color":"#80F0F0","text-valign":"center","text-wrap":"wrap","text-max-width":"80px","font-size":"6px"}},{selector:"node[axon]",style:{"background-color":"green"}},{selector:"node[dendrite]",style:{"background-color":"red"}},{selector:"node[both-a-d]",style:{"background-color":"gray"}},{selector:"edge",style:{width:2,"line-color":"#9dbaea","target-arrow-color":"#9dbaea","target-arrow-shape":"triangle","curve-style":"bezier"}}];class T3{constructor(e,r){Br(this,"cy");Br(this,"tooltip");var n,a;this.cy=Yn({container:r,elements:e.elements,layout:{name:"breadthfirst",circle:!1,roots:e.roots},directed:!0,style:S3}).on("mouseover","node",this.overNode.bind(this)).on("mouseout","node",this.exitNode.bind(this)).on("position","node",this.moveNode.bind(this)),this.tooltip=document.createElement("div"),this.tooltip.id="tooltip",this.tooltip.hidden=!0,(a=(n=this.graphCanvas)==null?void 0:n.lastChild)==null||a.appendChild(this.tooltip)}remove(){this.cy&&this.cy.destroy()}checkRightBoundary(e){var r;e+this.tooltip.offsetWidth>=((r=this.tooltip.parentElement)==null?void 0:r.offsetWidth)&&(this.tooltip.style.left=`${e-this.tooltip.offsetWidth}px`)}overNode(e){const r=e.target;this.tooltip.innerText=r.data().label,this.tooltip.style.left=`${e.renderedPosition.x}px`,this.tooltip.style.top=`${e.renderedPosition.y}px`,this.tooltip.hidden=!1,this.checkRightBoundary(e.renderedPosition.x)}moveNode(e){const r=e.target;this.tooltip.style.left=`${r.renderedPosition().x}px`,this.tooltip.style.top=`${r.renderedPosition().y}px`,this.checkRightBoundary(r.renderedPosition().x)}exitNode(e){this.tooltip.hidden=!0}}const B3=1.3,N3={name:"ConnectivityGraph",props:{entry:{type:String,default:""},mapServer:{type:String,default:""}},data:function(){return{cy:null,connectivityGraph:null,knowledgeByPath:new Map,labelledTerms:new Set,labelCache:new Map}},mounted(){this.run().then(t=>{this.showGraph(this.entry)})},methods:{run:async function(){if(await this.getSchemaVersion()<B3){console.warn("No Server!");return}this.showSpinner();const e=await this.setSourceList();await this.setPathList(e),this.hideSpinner()},showGraph:async function(t){const e=this.$refs.graphCanvas;this.showSpinner(),this.connectivityGraph=new E3(this.labelCache,e),await this.connectivityGraph.addConnectivity(this.knowledgeByPath.get(t)),this.hideSpinner(),this.connectivityGraph.showConnectivity(e),this.currentPath=t},query:async function(t,e){const r=`${this.mapServer}knowledge/query/`,n={sql:t,params:e};try{const a=await fetch(r,{method:"POST",headers:{Accept:"application/json; charset=utf-8","Cache-Control":"no-store","Content-Type":"application/json"},body:JSON.stringify(n)});if(!a.ok)throw new Error(`Cannot access ${r}`);return await a.json()}catch{return{values:[]}}},setSourceList:async function(){const t=await this.getJsonData(`${this.mapServer}knowledge/sources`),e=t?t.sources||[]:[];let r="";for(const n of e)n&&r===""&&(r=n);return r},setPathList:async function(t){const e=await this.query(`select entity, knowledge from knowledge
|
|
448
|
+
`)};return this.axons.includes(r)?this.dendrites.includes(r)?i["both-a-d"]=!0:i.axon=!0:this.dendrites.includes(r)&&(i.dendrite=!0),i}};const S3=[{selector:"node",style:{label:"data(label)","background-color":"#80F0F0","text-valign":"center","text-wrap":"wrap","text-max-width":"80px","font-size":"6px"}},{selector:"node[axon]",style:{"background-color":"green"}},{selector:"node[dendrite]",style:{"background-color":"red"}},{selector:"node[both-a-d]",style:{"background-color":"gray"}},{selector:"edge",style:{width:2,"line-color":"#9dbaea","target-arrow-color":"#9dbaea","target-arrow-shape":"triangle","curve-style":"bezier"}}];class T3{constructor(e,r){Br(this,"cy");Br(this,"tooltip");var n,a;this.cy=Yn({container:r,elements:e.elements,layout:{name:"breadthfirst",circle:!1,roots:e.roots},directed:!0,style:S3,minZoom:.5,maxZoom:10,wheelSensitivity:.4}).on("mouseover","node",this.overNode.bind(this)).on("mouseout","node",this.exitNode.bind(this)).on("position","node",this.moveNode.bind(this)),this.tooltip=document.createElement("div"),this.tooltip.id="tooltip",this.tooltip.hidden=!0,(a=(n=this.graphCanvas)==null?void 0:n.lastChild)==null||a.appendChild(this.tooltip)}remove(){this.cy&&this.cy.destroy()}checkRightBoundary(e){var r;e+this.tooltip.offsetWidth>=((r=this.tooltip.parentElement)==null?void 0:r.offsetWidth)&&(this.tooltip.style.left=`${e-this.tooltip.offsetWidth}px`)}overNode(e){const r=e.target;this.tooltip.innerText=r.data().label,this.tooltip.style.left=`${e.renderedPosition.x}px`,this.tooltip.style.top=`${e.renderedPosition.y}px`,this.tooltip.hidden=!1,this.checkRightBoundary(e.renderedPosition.x)}moveNode(e){const r=e.target;this.tooltip.style.left=`${r.renderedPosition().x}px`,this.tooltip.style.top=`${r.renderedPosition().y}px`,this.checkRightBoundary(r.renderedPosition().x)}exitNode(e){this.tooltip.hidden=!0}}const B3=1.3,N3={name:"ConnectivityGraph",props:{entry:{type:String,default:""},mapServer:{type:String,default:""}},data:function(){return{cy:null,connectivityGraph:null,knowledgeByPath:new Map,labelledTerms:new Set,labelCache:new Map}},mounted(){this.run().then(t=>{this.showGraph(this.entry)})},methods:{run:async function(){if(await this.getSchemaVersion()<B3){console.warn("No Server!");return}this.showSpinner();const e=await this.setSourceList();await this.setPathList(e),this.hideSpinner()},showGraph:async function(t){const e=this.$refs.graphCanvas;this.showSpinner(),this.connectivityGraph=new E3(this.labelCache,e),await this.connectivityGraph.addConnectivity(this.knowledgeByPath.get(t)),this.hideSpinner(),this.connectivityGraph.showConnectivity(e),this.currentPath=t},query:async function(t,e){const r=`${this.mapServer}knowledge/query/`,n={sql:t,params:e};try{const a=await fetch(r,{method:"POST",headers:{Accept:"application/json; charset=utf-8","Cache-Control":"no-store","Content-Type":"application/json"},body:JSON.stringify(n)});if(!a.ok)throw new Error(`Cannot access ${r}`);return await a.json()}catch{return{values:[]}}},setSourceList:async function(){const t=await this.getJsonData(`${this.mapServer}knowledge/sources`),e=t?t.sources||[]:[];let r="";for(const n of e)n&&r===""&&(r=n);return r},setPathList:async function(t){const e=await this.query(`select entity, knowledge from knowledge
|
|
449
449
|
where entity like 'ilxtr:%' and source=?
|
|
450
450
|
order by entity`,[t]);this.knowledgeByPath.clear(),this.labelledTerms=new Set;for(const[r,n]of e.values){const a=JSON.parse(n);if("connectivity"in a){const i=a.label||r;i===r.slice(6).replace("-prime","'").replaceAll("-"," ")||i.length<50||`${i.slice(0,50)}`,this.knowledgeByPath.set(r,a),this.cacheLabels(a)}}return await this.getCachedTermLabels(),""},getSchemaVersion:async function(){const t=await this.getJsonData(`${this.mapServer}knowledge/schema-version`);return t&&+t.version||0},getJsonData:async function(t){try{const e=await fetch(t,{method:"GET",headers:{Accept:"application/json; charset=utf-8","Cache-Control":"no-store","Content-Type":"application/json"}});return e.ok||console.error(`Cannot access ${t}`),await e.json()}catch{return null}},getCachedTermLabels:async function(){if(this.labelledTerms.size){const t=await this.query(`
|
|
451
451
|
select entity, label from labels
|
|
452
|
-
where entity in (?${", ?".repeat(this.labelledTerms.size-1)})`,[...this.labelledTerms.values()]);for(const e of t.values)this.labelCache.set(e[0],e[1])}},cacheNodeLabels:function(t){for(const e of[t[0],...t[1]])this.labelledTerms.add(e)},cacheLabels:async function(t){for(const e of t.connectivity)this.cacheNodeLabels(e[0]),this.cacheNodeLabels(e[1])},showSpinner:function(){},hideSpinner:function(){}}},D3={class:"connectivity-graph"},P3={ref:"graphCanvas",class:"graph-canvas"},O3=s.createStaticVNode('<div class="node-key" data-v-
|
|
452
|
+
where entity in (?${", ?".repeat(this.labelledTerms.size-1)})`,[...this.labelledTerms.values()]);for(const e of t.values)this.labelCache.set(e[0],e[1])}},cacheNodeLabels:function(t){for(const e of[t[0],...t[1]])this.labelledTerms.add(e)},cacheLabels:async function(t){for(const e of t.connectivity)this.cacheNodeLabels(e[0]),this.cacheNodeLabels(e[1])},showSpinner:function(){},hideSpinner:function(){}}},D3={class:"connectivity-graph"},P3={ref:"graphCanvas",class:"graph-canvas"},O3=s.createStaticVNode('<div class="node-key" data-v-8250fcb2><div class="key-head" data-v-8250fcb2>Node type:</div><div data-v-8250fcb2><div data-v-8250fcb2><span data-v-8250fcb2>Node:</span><span class="key-box" style="background:#80F0F0;" data-v-8250fcb2></span></div><div data-v-8250fcb2><span data-v-8250fcb2>Axon:</span><span class="key-box" style="background:green;" data-v-8250fcb2></span></div><div data-v-8250fcb2><span data-v-8250fcb2>Dendrite:</span><span class="key-box" style="background:red;" data-v-8250fcb2></span></div><div data-v-8250fcb2><span data-v-8250fcb2>Both:</span><span class="key-box" style="background:gray;" data-v-8250fcb2></span></div></div></div>',1);function F3(t,e,r,n,a,i){return s.openBlock(),s.createElementBlock("div",D3,[s.createElementVNode("div",P3,null,512),O3])}const M3=yr(N3,[["render",F3],["__scopeId","data-v-8250fcb2"]]);Ke.ConnectivityGraph=M3,Ke.CopyToClipboard=qS,Ke.DrawToolbar=CE,Ke.HelpModeDialog=BE,Ke.Tooltip=BS,Ke.TreeControls=RS,Object.defineProperty(Ke,Symbol.toStringTag,{value:"Module"})});
|