libpetri 2.1.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,5 @@
1
1
  /*! libpetri viewer (IIFE) — generated, do not edit; source: typescript/src/viewer/ */
2
- "use strict";(()=>{var zn=Object.create;var Le=Object.defineProperty;var _n=Object.getOwnPropertyDescriptor;var In=Object.getOwnPropertyNames;var Bn=Object.getPrototypeOf,qn=Object.prototype.hasOwnProperty;var Dn=(t,e)=>()=>(t&&(e=t(t=0)),e);var q=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),st=(t,e)=>{for(var n in e)Le(t,n,{get:e[n],enumerable:!0})},Pn=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of In(e))!qn.call(t,a)&&a!==n&&Le(t,a,{get:()=>e[a],enumerable:!(o=_n(e,a))||o.enumerable});return t};var Rn=(t,e,n)=>(n=t!=null?zn(Bn(t)):{},Pn(e||!t||!t.__esModule?Le(n,"default",{value:t,enumerable:!0}):n,t));var ct=q((_r,ce)=>{ce.exports=lt;ce.exports.addWheelListener=lt;ce.exports.removeWheelListener=Zn;function lt(t,e,n){t.addEventListener("wheel",e,n)}function Zn(t,e,n){t.removeEventListener("wheel",e,n)}});var ht=q((Ir,mt)=>{var Hn=4,Wn=.001,jn=1e-7,$n=10,Q=11,ue=1/(Q-1),Yn=typeof Float32Array=="function";function ut(t,e){return 1-3*e+3*t}function dt(t,e){return 3*e-6*t}function ft(t){return 3*t}function de(t,e,n){return((ut(e,n)*t+dt(e,n))*t+ft(e))*t}function pt(t,e,n){return 3*ut(e,n)*t*t+2*dt(e,n)*t+ft(e)}function Kn(t,e,n,o,a){var s,r,d=0;do r=e+(n-e)/2,s=de(r,o,a)-t,s>0?n=r:e=r;while(Math.abs(s)>jn&&++d<$n);return r}function Un(t,e,n,o){for(var a=0;a<Hn;++a){var s=pt(e,n,o);if(s===0)return e;var r=de(e,n,o)-t;e-=r/s}return e}function Jn(t){return t}mt.exports=function(e,n,o,a){if(!(0<=e&&e<=1&&0<=o&&o<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===n&&o===a)return Jn;for(var s=Yn?new Float32Array(Q):new Array(Q),r=0;r<Q;++r)s[r]=de(r*ue,e,o);function d(p){for(var l=0,f=1,h=Q-1;f!==h&&s[f]<=p;++f)l+=ue;--f;var y=(p-s[f])/(s[f+1]-s[f]),g=l+y*ue,b=pt(g,e,o);return b>=Wn?Un(p,g,e,o):b===0?g:Kn(p,l,l+ue,e,o)}return function(l){return l===0?0:l===1?1:de(d(l),n,a)}}});var bt=q((Br,fe)=>{var X=ht(),gt={ease:X(.25,.1,.25,1),easeIn:X(.42,0,1,1),easeOut:X(0,0,.58,1),easeInOut:X(.42,0,.58,1),linear:X(0,0,1,1)};fe.exports=Qn;fe.exports.makeAggregateRaf=yt;fe.exports.sharedScheduler=yt();function Qn(t,e,n){var o=Object.create(null),a=Object.create(null);n=n||{};var s=typeof n.easing=="function"?n.easing:gt[n.easing];s||(n.easing&&console.warn("Unknown easing function in amator: "+n.easing),s=gt.ease);var r=typeof n.step=="function"?n.step:vt,d=typeof n.done=="function"?n.done:vt,p=Xn(n.scheduler),l=Object.keys(e);l.forEach(function(C){o[C]=t[C],a[C]=e[C]-t[C]});var f=typeof n.duration=="number"?n.duration:400,h=Math.max(1,f*.06),y,g=0;return y=p.next(S),{cancel:b};function b(){p.cancel(y),y=0}function S(){var C=s(g/h);g+=1,T(C),g<=h?(y=p.next(S),r(t)):(y=0,setTimeout(function(){d(t)},0))}function T(C){l.forEach(function(N){t[N]=a[N]*C+o[N]})}}function vt(){}function Xn(t){if(!t){var e=typeof window<"u"&&window.requestAnimationFrame;return e?er():tr()}if(typeof t.next!="function")throw new Error("Scheduler is supposed to have next(cb) function");if(typeof t.cancel!="function")throw new Error("Scheduler is supposed to have cancel(handle) function");return t}function er(){return{next:window.requestAnimationFrame.bind(window),cancel:window.cancelAnimationFrame.bind(window)}}function tr(){return{next:function(t){return setTimeout(t,1e3/60)},cancel:function(t){return clearTimeout(t)}}}function yt(){var t=new Set,e=new Set,n=0;return{next:a,cancel:a,clearAll:o};function o(){t.clear(),e.clear(),cancelAnimationFrame(n),n=0}function a(p){e.add(p),s()}function s(){n||(n=requestAnimationFrame(r))}function r(){n=0;var p=e;e=t,t=p,t.forEach(function(l){l()}),t.clear()}function d(p){e.delete(p)}}});var xt=q((qr,St)=>{"use strict";function nr(t){or(t);let e=rr(t);return t.on=e.on,t.off=e.off,t.fire=e.fire,t}function rr(t){let e=Object.create(null);return{on:function(n,o,a){if(typeof o!="function")throw new Error("callback is expected to be a function");let s=e[n];return s||(s=e[n]=[]),s.push({callback:o,ctx:a}),t},off:function(n,o){if(typeof n>"u")return e=Object.create(null),t;if(e[n])if(typeof o!="function")delete e[n];else{let a=e[n];for(let s=0;s<a.length;++s)a[s].callback===o&&a.splice(s,1)}return t},fire:function(n){let o=e[n];if(!o)return t;let a;arguments.length>1&&(a=Array.prototype.slice.call(arguments,1));for(let s=0;s<o.length;++s){let r=o[s];r.callback.apply(r.ctx,a)}return t}}}function or(t){if(!t)throw new Error("Eventify cannot use falsy object as events subject");let e=["on","fire","off"];for(let n=0;n<e.length;++n)if(t.hasOwnProperty(e[n]))throw new Error("Subject cannot be eventified, since it already has property '"+e[n]+"'")}St.exports=nr});var Ct=q((Dr,wt)=>{wt.exports=ir;function ir(t,e,n){typeof n!="object"&&(n={});var o=typeof n.minVelocity=="number"?n.minVelocity:5,a=typeof n.amplitude=="number"?n.amplitude:.25,s=typeof n.cancelAnimationFrame=="function"?n.cancelAnimationFrame:ar(),r=typeof n.requestAnimationFrame=="function"?n.requestAnimationFrame:sr(),d,p,l=342,f,h,y,g,b,S,T,C;return{start:z,stop:v,cancel:N};function N(){s(f),s(C)}function z(){d=t(),g=T=h=b=0,p=new Date,s(f),s(C),f=r(A)}function A(){var E=Date.now(),M=E-p;p=E;var F=t(),G=F.x-d.x,B=F.y-d.y;d=F;var k=1e3/(1+M);h=.8*G*k+.2*h,b=.8*B*k+.2*b,f=r(A)}function v(){s(f),s(C);var E=t();y=E.x,S=E.y,p=Date.now(),(h<-o||h>o)&&(g=a*h,y+=g),(b<-o||b>o)&&(T=a*b,S+=T),C=r(x)}function x(){var E=Date.now()-p,M=!1,F=0,G=0;g&&(F=-g*Math.exp(-E/l),F>.5||F<-.5?M=!0:F=g=0),T&&(G=-T*Math.exp(-E/l),G>.5||G<-.5?M=!0:G=T=0),M&&(e(y+F,S+G),C=r(x))}}function ar(){return typeof cancelAnimationFrame=="function"?cancelAnimationFrame:clearTimeout}function sr(){return typeof requestAnimationFrame=="function"?requestAnimationFrame:function(t){return setTimeout(t,16)}}});var Lt=q((Pr,Vt)=>{Vt.exports=lr;function lr(t){if(t)return{capture:Et,release:Et};var e,n,o,a=!1;return{capture:s,release:r};function s(d){a=!0,n=window.document.onselectstart,o=window.document.ondragstart,window.document.onselectstart=At,e=d,e.ondragstart=At}function r(){a&&(a=!1,window.document.onselectstart=n,e&&(e.ondragstart=o))}}function At(t){return t.stopPropagation(),!1}function Et(){}});var Gt=q((Rr,Tt)=>{Tt.exports=cr;function cr(){this.x=0,this.y=0,this.scale=1}});var Mt=q((Zr,Te)=>{Te.exports=ur;Te.exports.canAttach=kt;function ur(t,e){if(!kt(t))throw new Error("svg element is required for svg.panzoom to work");var n=t.ownerSVGElement;if(!n)throw new Error("Do not apply panzoom to the root <svg> element. Use its child instead (e.g. <g></g>). As of March 2016 only FireFox supported transform on the root element");e.disableKeyboardInteraction||n.setAttribute("tabindex",0);var o={getBBox:s,getScreenCTM:r,getOwner:a,applyTransform:p,initTransform:d};return o;function a(){return n}function s(){var l=t.getBBox();return{left:l.x,top:l.y,width:l.width,height:l.height}}function r(){var l=n.getCTM();return l||n.getScreenCTM()}function d(l){var f=t.getCTM();f===null&&(f=document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGMatrix()),l.x=f.e,l.y=f.f,l.scale=f.a,n.removeAttributeNS(null,"viewBox")}function p(l){t.setAttribute("transform","matrix("+l.scale+" 0 0 "+l.scale+" "+l.x+" "+l.y+")")}}function kt(t){return t&&t.ownerSVGElement&&t.getCTM}});var Ot=q((Hr,Ge)=>{Ge.exports=dr;Ge.exports.canAttach=Ft;function dr(t,e){var n=Ft(t);if(!n)throw new Error("panzoom requires DOM element to be attached to the DOM tree");var o=t.parentElement;t.scrollTop=0,e.disableKeyboardInteraction||o.setAttribute("tabindex",0);var a={getBBox:r,getOwner:s,applyTransform:d};return a;function s(){return o}function r(){return{left:0,top:0,width:t.clientWidth,height:t.clientHeight}}function d(p){t.style.transformOrigin="0 0 0",t.style.transform="matrix("+p.scale+", 0, 0, "+p.scale+", "+p.x+", "+p.y+")"}}function Ft(t){return t&&t.parentElement&&t.style}});var Ht=q((Wr,Zt)=>{"use strict";var Nt=ct(),ke=bt(),fr=xt(),pr=Ct(),Pt=Lt(),mr=Pt(),hr=Pt(!0),gr=Gt(),zt=Mt(),_t=Ot(),vr=1,yr=1.75,It=300,Bt=200;Zt.exports=Rt;function Rt(t,e){e=e||{};var n=e.controller;if(n||(zt.canAttach(t)?n=zt(t,e):_t.canAttach(t)&&(n=_t(t,e))),!n)throw new Error("Cannot create panzoom for the current type of dom element");var o=n.getOwner(),a={x:0,y:0},s=!1,r=new gr;n.initTransform&&n.initTransform(r);var d=typeof e.filterKey=="function"?e.filterKey:Y,p=typeof e.pinchSpeed=="number"?e.pinchSpeed:1,l=e.bounds,f=typeof e.maxZoom=="number"?e.maxZoom:Number.POSITIVE_INFINITY,h=typeof e.minZoom=="number"?e.minZoom:0,y=typeof e.boundsPadding=="number"?e.boundsPadding:.05,g=typeof e.zoomDoubleClickSpeed=="number"?e.zoomDoubleClickSpeed:yr,b=e.beforeWheel||Y,S=e.beforeMouseDown||Y,T=typeof e.zoomSpeed=="number"?e.zoomSpeed:vr,C=qt(e.transformOrigin),N=e.enableTextSelection?hr:mr;br(l),e.autocenter&&dn();var z,A=0,v=0,x=0,E=null,M=new Date,F,G=!1,B=!1,k,_,be,Se,xe,I;"smoothScroll"in e&&!e.smoothScroll?I=Sr():I=pr(xn,Vn,e.smoothScroll);var we,K,te,ne=!1;Pe();var re={dispose:Ln,moveBy:H,moveTo:Ce,smoothMoveTo:En,centerOn:An,zoomTo:se,zoomAbs:oe,smoothZoom:ae,smoothZoomAbs:Nn,showRectangle:un,pause:sn,resume:ln,isPaused:cn,getTransform:fn,getMinZoom:pn,setMinZoom:mn,getMaxZoom:hn,setMaxZoom:gn,getTransformOrigin:vn,setTransformOrigin:yn,getZoomSpeed:bn,setZoomSpeed:Sn};fr(re);var ze=typeof e.initialX=="number"?e.initialX:r.x,_e=typeof e.initialY=="number"?e.initialY:r.y,Ie=typeof e.initialZoom=="number"?e.initialZoom:r.scale;return(ze!=r.x||_e!=r.y||Ie!=r.scale)&&oe(ze,_e,Ie),re;function sn(){Re(),ne=!0}function ln(){ne&&(Pe(),ne=!1)}function cn(){return ne}function un(i){var c=o.getBoundingClientRect(),u=P(c.width,c.height),m=i.right-i.left,w=i.bottom-i.top;if(!Number.isFinite(m)||!Number.isFinite(w))throw new Error("Invalid rectangle");var V=u.x/m,L=u.y/w,O=Math.min(V,L);r.x=-(i.left+m/2)*O+u.x/2,r.y=-(i.top+w/2)*O+u.y/2,r.scale=O}function P(i,c){if(n.getScreenCTM){var u=n.getScreenCTM(),m=u.a,w=u.d,V=u.e,L=u.f;a.x=i*m-V,a.y=c*w-L}else a.x=i,a.y=c;return a}function dn(){var i,c,u=0,m=0,w=qe();if(w)u=w.left,m=w.top,i=w.right-w.left,c=w.bottom-w.top;else{var V=o.getBoundingClientRect();i=V.width,c=V.height}var L=n.getBBox();if(!(L.width===0||L.height===0)){var O=c/L.height,j=i/L.width,R=Math.min(j,O);r.x=-(L.left+L.width/2)*R+i/2+u,r.y=-(L.top+L.height/2)*R+c/2+m,r.scale=R}}function fn(){return r}function pn(){return h}function mn(i){h=i}function hn(){return f}function gn(i){f=i}function vn(){return C}function yn(i){C=qt(i)}function bn(){return T}function Sn(i){if(!Number.isFinite(i))throw new Error("Zoom speed should be a number");T=i}function xn(){return{x:r.x,y:r.y}}function Ce(i,c){r.x=i,r.y=c,Ae(),W("pan"),Ee()}function Be(i,c){Ce(r.x+i,r.y+c)}function Ae(){var i=qe();if(i){var c=!1,u=wn(),m=i.left-u.right;return m>0&&(r.x+=m,c=!0),m=i.right-u.left,m<0&&(r.x+=m,c=!0),m=i.top-u.bottom,m>0&&(r.y+=m,c=!0),m=i.bottom-u.top,m<0&&(r.y+=m,c=!0),c}}function qe(){if(l){if(typeof l=="boolean"){var i=o.getBoundingClientRect(),c=i.width,u=i.height;return{left:c*y,top:u*y,right:c*(1-y),bottom:u*(1-y)}}return l}}function wn(){var i=n.getBBox(),c=Cn(i.left,i.top);return{left:c.x,top:c.y,right:i.width*r.scale+c.x,bottom:i.height*r.scale+c.y}}function Cn(i,c){return{x:i*r.scale+r.x,y:c*r.scale+r.y}}function Ee(){s=!0,z=window.requestAnimationFrame(Tn)}function De(i,c,u){if(Me(i)||Me(c)||Me(u))throw new Error("zoom requires valid numbers");var m=r.scale*u;if(m<h){if(r.scale===h)return;u=h/r.scale}if(m>f){if(r.scale===f)return;u=f/r.scale}var w=P(i,c);if(r.x=w.x-u*(w.x-r.x),r.y=w.y-u*(w.y-r.y),l&&y===1&&h===1)r.scale*=u,Ae();else{var V=Ae();V||(r.scale*=u)}W("zoom"),Ee()}function oe(i,c,u){var m=u/r.scale;De(i,c,m)}function An(i){var c=i.ownerSVGElement;if(!c)throw new Error("ui element is required to be within the scene");var u=i.getBoundingClientRect(),m=u.left+u.width/2,w=u.top+u.height/2,V=c.getBoundingClientRect(),L=V.width/2-m,O=V.height/2-w;H(L,O,!0)}function En(i,c){H(i-r.x,c-r.y,!0)}function H(i,c,u){if(!u)return Be(i,c);we&&we.cancel();var m={x:0,y:0},w={x:i,y:c},V=0,L=0;we=ke(m,w,{step:function(O){Be(O.x-V,O.y-L),V=O.x,L=O.y}})}function Vn(i,c){le(),Ce(i,c)}function Ln(){Re()}function Pe(){o.addEventListener("mousedown",Ue,{passive:!1}),o.addEventListener("dblclick",Ke,{passive:!1}),o.addEventListener("touchstart",He,{passive:!1}),o.addEventListener("keydown",Ze,{passive:!1}),Nt.addWheelListener(o,tt,{passive:!1}),Ee()}function Re(){Nt.removeWheelListener(o,tt),o.removeEventListener("mousedown",Ue),o.removeEventListener("keydown",Ze),o.removeEventListener("dblclick",Ke),o.removeEventListener("touchstart",He),z&&(window.cancelAnimationFrame(z),z=0),I.cancel(),Xe(),et(),N.release(),Ve()}function Tn(){s&&Gn()}function Gn(){s=!1,n.applyTransform(r),W("transform"),z=0}function Ze(i){var c=0,u=0,m=0;if(i.keyCode===38?u=1:i.keyCode===40?u=-1:i.keyCode===37?c=1:i.keyCode===39?c=-1:i.keyCode===189||i.keyCode===109?m=1:(i.keyCode===187||i.keyCode===107)&&(m=-1),!d(i,c,u,m)){if(c||u){i.preventDefault(),i.stopPropagation();var w=o.getBoundingClientRect(),V=Math.min(w.width,w.height),L=.05,O=V*L*c,j=V*L*u;H(O,j)}if(m){var R=nt(m*100),V=C?J():kn();se(V.x,V.y,R)}}}function kn(){var i=o.getBoundingClientRect();return{x:i.width/2,y:i.height/2}}function He(i){if(Mn(i),U(),i.touches.length===1)return On(i,i.touches[0]);i.touches.length===2&&(xe=Ye(i.touches[0],i.touches[1]),te=!0,We())}function Mn(i){e.onTouch&&!e.onTouch(i)||(i.stopPropagation(),i.preventDefault())}function Fn(i){U(),!(e.onDoubleClick&&!e.onDoubleClick(i))&&(i.preventDefault(),i.stopPropagation())}function On(i){v=new Date;var c=i.touches[0],u=D(c);F=u;var m=P(u.x,u.y);k=m.x,_=m.y,be=k,Se=_,I.cancel(),We()}function We(){G||(G=!0,document.addEventListener("touchmove",je),document.addEventListener("touchend",ie),document.addEventListener("touchcancel",ie))}function je(i){if(i.touches.length===1){i.stopPropagation();var c=i.touches[0],u=D(c),m=P(u.x,u.y),w=m.x-k,V=m.y-_;w!==0&&V!==0&&rt(),k=m.x,_=m.y,H(w,V)}else if(i.touches.length===2){te=!0;var L=i.touches[0],O=i.touches[1],j=Ye(L,O),R=1+(j/xe-1)*p,it=D(L),at=D(O);if(k=(it.x+at.x)/2,_=(it.y+at.y)/2,C){var u=J();k=u.x,_=u.y}se(k,_,R),xe=j,i.stopPropagation(),i.preventDefault()}}function U(){x&&(clearTimeout(x),x=0)}function $e(i){if(e.onClick){U();var c=k-be,u=_-Se,m=Math.sqrt(c*c+u*u);m>5||(x=setTimeout(function(){x=0,e.onClick(i)},It))}}function ie(i){if(U(),i.touches.length>0){var c=D(i.touches[0]),u=P(c.x,c.y);k=u.x,_=u.y}else{var m=new Date;if(m-A<It)if(C){var c=J();ae(c.x,c.y,g)}else ae(F.x,F.y,g);else m-v<Bt&&$e(i);A=m,Ve(),et()}}function Ye(i,c){var u=i.clientX-c.clientX,m=i.clientY-c.clientY;return Math.sqrt(u*u+m*m)}function Ke(i){Fn(i);var c=D(i);C&&(c=J()),ae(c.x,c.y,g)}function Ue(i){if(U(),!S(i)){if(E=i,M=new Date,G)return i.stopPropagation(),!1;var c=i.button===1&&window.event!==null||i.button===0;if(c){I.cancel();var u=D(i),m=P(u.x,u.y);return be=k=m.x,Se=_=m.y,document.addEventListener("mousemove",Je),document.addEventListener("mouseup",Qe),N.capture(i.target||i.srcElement),!1}}}function Je(i){if(!G){rt();var c=D(i),u=P(c.x,c.y),m=u.x-k,w=u.y-_;k=u.x,_=u.y,H(m,w)}}function Qe(){var i=new Date;i-M<Bt&&$e(E),N.release(),Ve(),Xe()}function Xe(){document.removeEventListener("mousemove",Je),document.removeEventListener("mouseup",Qe),B=!1}function et(){document.removeEventListener("touchmove",je),document.removeEventListener("touchend",ie),document.removeEventListener("touchcancel",ie),B=!1,te=!1,G=!1}function tt(i){if(!b(i)){I.cancel();var c=i.deltaY;i.deltaMode>0&&(c*=100);var u=nt(c);if(u!==1){var m=C?J():D(i);se(m.x,m.y,u),i.preventDefault()}}}function D(i){var c,u,m=o.getBoundingClientRect();return c=i.clientX-m.left,u=i.clientY-m.top,{x:c,y:u}}function ae(i,c,u){var m=r.scale,w={scale:m},V={scale:u*m};I.cancel(),le(),K=ke(w,V,{step:function(L){oe(i,c,L.scale)},done:ot})}function Nn(i,c,u){var m=r.scale,w={scale:m},V={scale:u};I.cancel(),le(),K=ke(w,V,{step:function(L){oe(i,c,L.scale)},done:ot})}function J(){var i=o.getBoundingClientRect();return{x:i.width*C.x,y:i.height*C.y}}function se(i,c,u){return I.cancel(),le(),De(i,c,u)}function le(){K&&(K.cancel(),K=null)}function nt(i){var c=Math.sign(i),u=Math.min(.25,Math.abs(T*i/128));return 1-c*u}function rt(){B||(W("panstart"),B=!0,I.start())}function Ve(){B&&(te||I.stop(),W("panend"))}function ot(){W("zoomend")}function W(i){re.fire(i,re)}}function qt(t){if(t){if(typeof t=="object")return(!$(t.x)||!$(t.y))&&Dt(t),t;Dt()}}function Dt(t){throw console.error(t),new Error(["Cannot parse transform origin.","Some good examples:",' "center center" can be achieved with {x: 0.5, y: 0.5}',' "top center" can be achieved with {x: 0.5, y: 0}',' "bottom right" can be achieved with {x: 1, y: 1}'].join(`
3
- `))}function Y(){}function br(t){var e=typeof t;if(!(e==="undefined"||e==="boolean")){var n=$(t.left)&&$(t.top)&&$(t.bottom)&&$(t.right);if(!n)throw new Error("Bounds object is not valid. It can be: undefined, boolean (true|false) or an object {left, top, right, bottom}")}}function $(t){return Number.isFinite(t)}function Me(t){return Number.isNaN?Number.isNaN(t):t!==t}function Sr(){return{start:Y,stop:Y,cancel:Y}}function xr(){if(typeof document>"u")return;var t=document.getElementsByTagName("script");if(!t)return;for(var e,n=0;n<t.length;++n){var o=t[n];if(o.src&&o.src.match(/\bpanzoom(\.min)?\.js/)){e=o;break}}if(!e)return;var a=e.getAttribute("query");if(!a)return;var s=e.getAttribute("name")||"pz",r=Date.now();d();function d(){var f=document.querySelector(a);if(!f){var h=Date.now(),y=h-r;if(y<2e3){setTimeout(d,100);return}console.error("Cannot find the panzoom element",s);return}var g=p(e);console.log(g),window[s]=Rt(f,g)}function p(f){for(var h=f.attributes,y={},g=0;g<h.length;++g){var b=h[g],S=l(b);S&&(y[S.name]=S.value)}return y}function l(f){if(f.name){var h=f.name[0]==="p"&&f.name[1]==="z"&&f.name[2]==="-";if(h){var y=f.name.substr(3),g=JSON.parse(f.value);return{name:y,value:g}}}}}xr()});var rn={};st(rn,{getViz:()=>Nr,renderDotToSvg:()=>Or});async function Or(t){throw new Error("libpetri viewer: static bundle has no DOT renderer. Either ship the pre-rendered SVG in the host (mount(null, container, opts)) or load the full viewer.iife.js bundle.")}function Nr(){throw new Error("libpetri viewer: static bundle has no Viz instance.")}var on=Dn(()=>{});var Ne={};st(Ne,{DEFAULT_PANZOOM_OPTS:()=>pe,VIEWER_CSS_VARIABLES:()=>Oe,colorForPrefix:()=>ge,discoverClusters:()=>he,mount:()=>an});var Wt=Rn(Ht(),1),pe={smoothScroll:!1,zoomDoubleClickSpeed:1,maxZoom:1e3,minZoom:.02};function jt(t,e,n){if(n)try{n.dispose()}catch{}let o={...pe,...e};return(0,Wt.default)(t,o)}function he(t){let e=new Map,n=t.querySelectorAll("g.cluster");if(!n.length)return e;let o=Array.from(t.querySelectorAll("g.node"));for(let a of Array.from(n)){let s=Z(a,"title");if(!s)continue;let r=s.textContent??"";if(!r.startsWith("cluster_"))continue;let d=r.slice(8);if(e.has(d))continue;let p=0;for(let l of o){if(l.getAttribute("data-instance"))continue;let f=Z(l,"title");if(!f)continue;let h=(f.textContent??"").trim();me(h,d)&&(l.setAttribute("data-instance",d),p++)}e.set(d,{prefix:d,group:a,nodeCount:p,color:ge(d)})}return e}function me(t,e){return t===e||t.startsWith(`${e}/`)||t.startsWith(`p_${e}_`)||t.startsWith(`t_${e}_`)||t.startsWith(`j_${e}_`)}function ge(t){let e=2166136261;for(let o=0;o<t.length;o++)e^=t.charCodeAt(o),e=e*16777619>>>0;let n=Math.floor((e/4294967296*360+e%360*.61803)%360);return n<0&&(n+=360),`hsl(${n}, 60%, 45%)`}function $t(t){for(let e of t.values()){let n=Z(e.group,"polygon")??Z(e.group,"path");n&&(n.setAttribute("stroke",e.color),n.setAttribute("stroke-width","2.2"))}}function ee(t,e){let n=t.group,o=n.classList.contains("cluster-collapsed"),a=n.ownerSVGElement;if(a)if(e&&!o){n.classList.add("cluster-collapsed");let s=[];if(a.querySelectorAll(`g.node[data-instance="${wr(t.prefix)}"]`).forEach(r=>{r.classList.add("petri-collapsed-inside"),s.push(r)}),a.querySelectorAll("g.edge").forEach(r=>{let d=Z(r,"title");if(!d)return;let p=(d.textContent??"").trim(),l=p.indexOf("->");if(l<0)return;let f=p.slice(0,l),h=p.slice(l+2);me(f,t.prefix)&&me(h,t.prefix)&&(r.classList.add("petri-collapsed-inside"),s.push(r))}),n._petriHiddenSiblings=s,!n._petriCollapsedBadge){let r=Z(n,"text");if(r){let d=document.createElementNS("http://www.w3.org/2000/svg","text");d.setAttribute("x",r.getAttribute("x")??"0");let p=parseFloat(r.getAttribute("y")??"0");d.setAttribute("y",String(p+16)),d.setAttribute("text-anchor",r.getAttribute("text-anchor")??"middle"),d.setAttribute("font-size","11"),d.setAttribute("fill","#9ca3af"),d.setAttribute("class","cluster-collapsed-badge"),d.textContent=`(${t.nodeCount} internal node${t.nodeCount===1?"":"s"})`,n.appendChild(d),n._petriCollapsedBadge=d}}}else!e&&o&&(n.classList.remove("cluster-collapsed"),n._petriHiddenSiblings&&(n._petriHiddenSiblings.forEach(s=>s.classList.remove("petri-collapsed-inside")),n._petriHiddenSiblings=void 0),n._petriCollapsedBadge&&n._petriCollapsedBadge.parentNode===n&&(n.removeChild(n._petriCollapsedBadge),n._petriCollapsedBadge=null))}function Yt(t,e){if(e==null){t.removeAttribute("data-active-filter"),t.classList.remove("has-active-filter"),t.querySelectorAll("g.node, g.edge").forEach(n=>n.classList.remove("petri-dimmed"));return}t.setAttribute("data-active-filter",e),t.classList.add("has-active-filter"),t.querySelectorAll("g.node").forEach(n=>{let o=n.getAttribute("data-instance");!!o&&(o===e||o.indexOf(e+"_")===0||o.indexOf(e+"/")===0)?n.classList.remove("petri-dimmed"):n.classList.add("petri-dimmed")}),t.querySelectorAll("g.edge").forEach(n=>{let o=Z(n,"title");if(!o)return;let a=o.textContent??"",s=a.indexOf("->");if(s<0){n.classList.remove("petri-dimmed");return}let r=a.slice(0,s),d=a.slice(s+2),p=l=>l.indexOf(e+"/")>=0||l.indexOf(e+"_")>=0||l===e;p(r)||p(d)?n.classList.remove("petri-dimmed"):n.classList.add("petri-dimmed")})}function Kt(t,e,n,o){if(n.size===0||!t)return!1;for(let a of n)if(e.has(a)&&me(o,a))return!0;return!1}function wr(t){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(t):t.replace(/[^a-zA-Z0-9_-]/g,e=>`\\${e}`)}function Z(t,e){let n=e.toLowerCase();for(let o of Array.from(t.children))if(o.tagName.toLowerCase()===n)return o;return null}function Fe(t){for(let e of Array.from(t.children))if(e.tagName==="title")return e.textContent??"";return""}function Cr(t){let e=t.parentElement?.closest("g.cluster");return e?Fe(e).replace(/^cluster_/,""):""}function ve(t){let e=Array.from(t.querySelectorAll("g.node"));for(let o of e){let a=Fe(o);if(!a)continue;o.setAttribute("data-id",a);let s=/__rep__([A-Za-z0-9_]+)$/.exec(a);if(s)o.setAttribute("data-instance",s[1]);else if(!o.hasAttribute("data-instance")){let r=Cr(o);r&&o.setAttribute("data-instance",r)}}let n=new Map;for(let o of e){let a=o.getAttribute("data-id");a&&n.set(a,o)}for(let o of Array.from(t.querySelectorAll("g.edge"))){let a=Fe(o),s=a.indexOf("->");if(s<=0)continue;let r=a.slice(0,s).trim(),d=a.slice(s+2).trim();o.setAttribute("data-src",r),o.setAttribute("data-dst",d);let p=n.get(r)?.getAttribute("data-instance")??"",l=n.get(d)?.getAttribute("data-instance")??"";o.setAttribute("data-src-cluster",p),o.setAttribute("data-dst-cluster",l),o.classList.remove("intra-cluster","cross-cluster"),p!==""&&p===l?(o.classList.add("intra-cluster"),o.setAttribute("data-cluster",p)):(o.classList.add("cross-cluster"),o.removeAttribute("data-cluster"))}}var Ar="libpetri-sidebar",Er="libpetri-sidebar-chip",Vr="is-off";function Ut(t,e,n){let o=new Set;for(let A of e.keys())o.add(A);let a=!0,s=!0,r=()=>{n.onVisibilityChange({visibleClusters:new Set(o),includeSharedPlaces:a})},d=document.createElement("aside");d.className=Ar;let p=document.createElement("h4");p.className="libpetri-sidebar-title",p.textContent=`Subnets (${e.size})`,d.appendChild(p);let l=document.createElement("div");l.className="libpetri-sidebar-actions";let f=document.createElement("button");f.type="button",f.textContent="show all";let h=document.createElement("button");h.type="button",h.textContent="hide all",l.appendChild(f),l.appendChild(h),d.appendChild(l);let y=document.createElement("label");y.className="libpetri-sidebar-checkbox";let g=document.createElement("input");g.type="checkbox",g.checked=a,y.appendChild(g),y.appendChild(document.createTextNode(" Shared places")),g.addEventListener("change",()=>{a=g.checked,r()}),d.appendChild(y);let b=document.createElement("label");b.className="libpetri-sidebar-checkbox";let S=document.createElement("input");S.type="checkbox",S.checked=s,b.appendChild(S),b.appendChild(document.createTextNode(" Click node \u2192 highlight")),S.addEventListener("change",()=>{s=S.checked,n.onHighlightModeChange(s)}),d.appendChild(b);let T=document.createElement("div");T.className="libpetri-sidebar-hint",T.innerHTML="Click chip: toggle.<br>Shift-click: isolate.<br>Cmd/Ctrl-click: multi-select.<br>Click empty: clear highlight.",d.appendChild(T);let C=document.createElement("ul");C.className="libpetri-sidebar-chips";let N=new Map;for(let A of e.values()){let v=document.createElement("li");v.className=Er,v.style.borderLeftColor=A.color,v.dataset.prefix=A.prefix;let x=document.createElement("span");x.className="libpetri-sidebar-chip-dot",x.style.background=A.color;let E=document.createElement("span");E.className="libpetri-sidebar-chip-name",E.textContent=A.prefix;let M=document.createElement("span");M.className="libpetri-sidebar-chip-count",M.textContent=String(A.nodeCount),v.appendChild(x),v.appendChild(E),v.appendChild(M),v.addEventListener("click",F=>{let G=A.prefix;if(F.shiftKey){let B=[...e.keys()].every(k=>k===G?o.has(k):!o.has(k));if(o.clear(),B)for(let k of e.keys())o.add(k);else o.add(G)}else F.ctrlKey||F.metaKey?[...e.keys()].some(k=>!o.has(k))?o.has(G)?o.delete(G):o.add(G):(o.clear(),o.add(G)):o.has(G)?o.delete(G):o.add(G);z(),r()}),C.appendChild(v),N.set(A.prefix,v)}d.appendChild(C);function z(){for(let[A,v]of N)v.classList.toggle(Vr,!o.has(A))}return f.addEventListener("click",()=>{o.clear();for(let A of e.keys())o.add(A);a=!0,g.checked=!0,z(),r()}),h.addEventListener("click",()=>{o.clear(),a=!1,g.checked=!1,z(),r()}),t.appendChild(d),r(),{root:d,dispose(){d.parentNode===t&&t.removeChild(d)}}}var Lr=["is-highlight","is-neighbor","is-faded"];function Tr(t){for(let e of Lr)for(let n of Array.from(t.querySelectorAll("."+e)))n.classList.remove(e)}function Gr(t,e){let n=t.querySelector(`g.node[data-id="${ye(e)}"]`);if(!n)return new Set([e]);let o=new Set([e]),a=n.getAttribute("data-replica-of")??(e.startsWith("p_")?e.slice(2):null);if(a){let s=t.querySelector(`g.node[data-id="${ye("p_"+a)}"]`);if(s){let r=s.getAttribute("data-id");r&&o.add(r)}for(let r of Array.from(t.querySelectorAll(`g.node[data-replica-of="${ye(a)}"]`))){let d=r.getAttribute("data-id");d&&o.add(d)}}return o}function Jt(t,e){if(Tr(t),e===null)return;let n=Gr(t,e);for(let l of n){let f=t.querySelector(`g.node[data-id="${ye(l)}"]`);f&&!f.classList.contains("is-hidden")&&f.classList.add("is-highlight")}let o=new Set,a=new Set,s=[],r=Array.from(n),d=new Set(n),p=Array.from(t.querySelectorAll("g.edge"));for(;r.length>0;){let l=r.shift();for(let f of p){if(f.classList.contains("is-hidden"))continue;let h=f.getAttribute("data-src"),y=f.getAttribute("data-dst");if(h!==l&&y!==l)continue;let g=h===l?y:h;g&&(s.push(f),!d.has(g)&&(d.add(g),g.startsWith("j_")?(a.add(g),r.push(g)):o.add(g)))}}for(let l of s)l.classList.add("is-highlight");for(let l of p)l.classList.contains("is-hidden")||l.classList.contains("is-highlight")||l.classList.add("is-faded");for(let l of Array.from(t.querySelectorAll("g.node"))){if(l.classList.contains("is-hidden"))continue;let f=l.getAttribute("data-id")??"";if(!n.has(f))if(o.has(f))l.classList.add("is-neighbor");else{if(a.has(f))continue;l.classList.add("is-faded")}}for(let l of Array.from(t.querySelectorAll("g.cluster:not(.cluster-orchestrator)")))l.classList.contains("is-hidden")||l.classList.add("is-faded")}function ye(t){return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}var Qt=/^(p_[A-Za-z0-9_]+)__rep__/;function Xt(t){return t.replace(/^p_/,"")}function tn(t){let e=new Set,n=Array.from(t.querySelectorAll("g.node"));for(let o of n){let a=o.querySelector("title")?.textContent??"",s=Qt.exec(a);s&&e.add(s[1])}for(let o of n){let a=o.querySelector("title")?.textContent??"",s=Qt.exec(a),r=null;s?r=Xt(s[1]):e.has(a)&&(r=Xt(a)),r!==null&&(o.classList.add("petri-replica"),o.setAttribute("data-replica-of",r),Mr(o))}}var kr="http://www.w3.org/2000/svg",en="libpetri-replica-glyph";function Mr(t){if(t.querySelector(`text.${en}`))return;let e=t.querySelector("ellipse, circle");if(!e)return;let n=0,o=0,a=0,s=0;e.tagName==="ellipse"?(n=parseFloat(e.getAttribute("cx")??"0"),o=parseFloat(e.getAttribute("cy")??"0"),a=parseFloat(e.getAttribute("rx")??"0"),s=parseFloat(e.getAttribute("ry")??"0")):(n=parseFloat(e.getAttribute("cx")??"0"),o=parseFloat(e.getAttribute("cy")??"0"),a=parseFloat(e.getAttribute("r")??"0"),s=a);let r=document.createElementNS(kr,"text");r.setAttribute("class",en),r.setAttribute("x",(n+a+2).toFixed(2)),r.setAttribute("y",(o-s+2).toFixed(2)),r.setAttribute("text-anchor","start"),r.setAttribute("font-size","9"),r.textContent="\u21C4",t.appendChild(r)}function Fr(t,e){if(e.size===0)return new Set;let n=Array.from(t.querySelectorAll("g.node:not([data-instance])")),o=new Set;for(let h of n){let y=h.getAttribute("data-id");y&&o.add(y)}let a=new Map,s=new Map,r=(h,y,g)=>{let b=h.get(y);b||(b=new Set,h.set(y,b)),b.add(g)};for(let h of Array.from(t.querySelectorAll("g.edge"))){let y=h.getAttribute("data-src")??"",g=h.getAttribute("data-dst")??"";o.has(y)&&o.has(g)&&(r(a,y,g),r(s,g,y))}let d=new Set,p=new Set;for(let h of Array.from(t.querySelectorAll("g.edge.cross-cluster"))){let y=h.getAttribute("data-src")??"",g=h.getAttribute("data-dst")??"",b=h.getAttribute("data-src-cluster")??"",S=h.getAttribute("data-dst-cluster")??"";o.has(y)&&e.has(S)&&d.add(y),o.has(g)&&e.has(b)&&p.add(g)}let l=new Set,f=(h,y)=>{let g=[];for(let b of h)l.add(b),g.push(b);for(;g.length;){let b=g.shift(),S=y.get(b);if(S)for(let T of S)l.has(T)||(l.add(T),g.push(T))}};return f(d,s),f(p,a),l}function nn(t,e){ve(t);let{visibleClusters:n,includeSharedPlaces:o}=e;for(let r of Array.from(t.querySelectorAll("g.cluster:not(.cluster-orchestrator)"))){let p=(r.querySelector(":scope > title")?.textContent??"").replace(/^cluster_/,"");r.classList.toggle("is-hidden",!n.has(p))}for(let r of Array.from(t.querySelectorAll("g.node[data-instance]"))){let d=r.getAttribute("data-instance")??"";r.classList.toggle("is-hidden",!n.has(d))}let a=Fr(t,n);for(let r of Array.from(t.querySelectorAll("g.node:not([data-instance])"))){let d=r.getAttribute("data-id")??"";r.classList.toggle("is-hidden",!a.has(d))}if(!o)for(let r of Array.from(t.querySelectorAll("g.node.petri-replica")))r.classList.add("is-hidden");let s=new Map;for(let r of Array.from(t.querySelectorAll("g.node"))){let d=r.getAttribute("data-id");d&&s.set(d,r)}for(let r of Array.from(t.querySelectorAll("g.edge"))){let d=r.getAttribute("data-src")??"",p=r.getAttribute("data-dst")??"",l=s.get(d)?.classList.contains("is-hidden")??!1,f=s.get(p)?.classList.contains("is-hidden")??!1;r.classList.toggle("is-hidden",l||f)}}var Oe=["--lpv-bg","--lpv-header-bg","--lpv-border","--lpv-text","--lpv-muted","--lpv-cluster-bg","--lpv-cluster-bg-collapsed","--lpv-cluster-stroke-width","--lpv-cluster-stroke-dash","--lpv-cluster-fill-tint","--lpv-dim-opacity","--lpv-active-filter-outline","--lpv-legend-bg","--lpv-chip-bg","--lpv-chip-active-bg","--lpv-sidebar-bg","--lpv-sidebar-border","--lpv-sidebar-text","--lpv-sidebar-muted","--lpv-sidebar-chip-bg","--lpv-sidebar-chip-hover-bg","--lpv-sidebar-chip-off-opacity","--lpv-shared-glyph-color","--lpv-replica-fill","--lpv-replica-stroke","--lpv-highlight-stroke","--lpv-highlight-glow","--lpv-neighbor-stroke","--lpv-faded-node-opacity","--lpv-faded-edge-opacity","--lpv-faded-cluster-opacity"];async function an(t,e,n={}){let o=n.previousHandle??null,a=o?new Set(o.collapsedPrefixes):new Set,s=o?.activeFilter??null;o&&o.dispose();let r,d=e.querySelector(":scope > svg");if(t==null){if(!(d instanceof SVGSVGElement))throw new Error("mount: no DOT source and no pre-rendered SVG");r=d}else{let v=await Promise.resolve().then(()=>(on(),rn));r=(n.layout??"elk")==="elk"?await v.renderDotToSvgWithElkLayout(t):await v.renderDotToSvg(t),e.innerHTML="",e.appendChild(r)}e.classList.add("libpetri-viewer");let p=jt(r,n.panzoom),l=he(r);$t(l);let f=n.layout??"elk";f==="elk"&&(tn(r),ve(r));let h=new Set,y=null,g=null,b=!1,S=null,T=null,C=!0;function N(){if(!n.chrome||S&&S.parentNode===e)return;S=document.createElement("div"),S.className="libpetri-viewer-chrome",S.style.position="absolute",S.style.inset="0",S.style.pointerEvents="none";let v=document.createElement("div");v.className="diagram-controls",v.style.pointerEvents="auto";let x=document.createElement("button");x.type="button",x.className="diagram-btn btn-reset",x.title="Reset view",x.textContent="Reset",x.addEventListener("click",()=>A.fit());let E=document.createElement("button");E.type="button",E.className="diagram-btn btn-fullscreen",E.title="Toggle fullscreen",E.textContent="Fullscreen",E.addEventListener("click",()=>z(e,E)),v.appendChild(x),v.appendChild(E),S.appendChild(v),getComputedStyle(e).position==="static"&&(e.style.position="relative"),e.appendChild(S),f==="elk"&&l.size>0&&(T=Ut(e,l,{onVisibilityChange:M=>A.setVisibility(M),onHighlightModeChange:M=>{C=M,M||A.highlight(null)}}))}function z(v,x){let E=v.classList.toggle("diagram-fullscreen");x.textContent=E?"Exit fullscreen":"Fullscreen",requestAnimationFrame(()=>A.fit())}let A={svg:r,panzoom:p,clusters:l,get collapsedPrefixes(){return h},get activeFilter(){return y},collapse(v){if(b)return;let x=l.get(v);x&&(h.has(v)||(ee(x,!0),h.add(v),n.onClusterCollapse?.(v,!0)))},expand(v){if(b)return;let x=l.get(v);x&&h.has(v)&&(ee(x,!1),h.delete(v),n.onClusterCollapse?.(v,!1))},collapseAll(){if(!b)for(let v of l.values())h.has(v.prefix)||(ee(v,!0),h.add(v.prefix),n.onClusterCollapse?.(v.prefix,!0))},expandAll(){if(!b)for(let v of Array.from(h)){let x=l.get(v);x&&(ee(x,!1),h.delete(v),n.onClusterCollapse?.(v,!1))}},filter(v){b||(y=v,Yt(r,v),n.onClusterFilter?.(v))},resetZoom(){if(!b)try{p.moveTo(0,0),p.zoomAbs(0,0,1)}catch{}},fit(){if(!b)try{p.zoomAbs(0,0,1),p.moveTo(0,0)}catch{}},isInsideCollapsedCluster(v){return Kt(r,l,h,v)},get highlightedNodeId(){return g},highlight(v){b||f==="elk"&&(g=v,Jt(r,v))},setVisibility(v){b||f==="elk"&&nn(r,v)},dispose(){if(!b){b=!0;try{p.dispose()}catch{}T?.dispose(),T=null,S&&S.parentNode===e&&e.removeChild(S),S=null}}};for(let v of a)A.collapse(v);return s!==null&&A.filter(s),f==="elk"&&r.addEventListener("click",v=>{if(!C)return;let x=v.target;if(!(x instanceof Element))return;let E=x.closest("g.node");if(!E){A.highlight(null);return}let M=E.getAttribute("data-id");M&&A.highlight(M===g?null:M)}),N(),requestAnimationFrame(()=>A.fit()),A}globalThis.LibpetriViewer=Ne;})();
2
+ "use strict";(()=>{var Pn=Object.create;var Le=Object.defineProperty;var Bn=Object.getOwnPropertyDescriptor;var In=Object.getOwnPropertyNames;var Dn=Object.getPrototypeOf,qn=Object.prototype.hasOwnProperty;var Hn=(t,e)=>()=>(t&&(e=t(t=0)),e);var I=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),lt=(t,e)=>{for(var n in e)Le(t,n,{get:e[n],enumerable:!0})},Rn=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of In(e))!qn.call(t,a)&&a!==n&&Le(t,a,{get:()=>e[a],enumerable:!(r=Bn(e,a))||r.enumerable});return t};var Zn=(t,e,n)=>(n=t!=null?Pn(Dn(t)):{},Rn(e||!t||!t.__esModule?Le(n,"default",{value:t,enumerable:!0}):n,t));var ut=I((Dr,ce)=>{ce.exports=ct;ce.exports.addWheelListener=ct;ce.exports.removeWheelListener=Wn;function ct(t,e,n){t.addEventListener("wheel",e,n)}function Wn(t,e,n){t.removeEventListener("wheel",e,n)}});var gt=I((qr,ht)=>{var jn=4,$n=.001,Yn=1e-7,Un=10,Q=11,ue=1/(Q-1),Kn=typeof Float32Array=="function";function dt(t,e){return 1-3*e+3*t}function ft(t,e){return 3*e-6*t}function pt(t){return 3*t}function de(t,e,n){return((dt(e,n)*t+ft(e,n))*t+pt(e))*t}function mt(t,e,n){return 3*dt(e,n)*t*t+2*ft(e,n)*t+pt(e)}function Jn(t,e,n,r,a){var s,i,c=0;do i=e+(n-e)/2,s=de(i,r,a)-t,s>0?n=i:e=i;while(Math.abs(s)>Yn&&++c<Un);return i}function Qn(t,e,n,r){for(var a=0;a<jn;++a){var s=mt(e,n,r);if(s===0)return e;var i=de(e,n,r)-t;e-=i/s}return e}function Xn(t){return t}ht.exports=function(e,n,r,a){if(!(0<=e&&e<=1&&0<=r&&r<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===n&&r===a)return Xn;for(var s=Kn?new Float32Array(Q):new Array(Q),i=0;i<Q;++i)s[i]=de(i*ue,e,r);function c(m){for(var l=0,f=1,v=Q-1;f!==v&&s[f]<=m;++f)l+=ue;--f;var b=(m-s[f])/(s[f+1]-s[f]),g=l+b*ue,S=mt(g,e,r);return S>=$n?Qn(m,g,e,r):S===0?g:Jn(m,l,l+ue,e,r)}return function(l){return l===0?0:l===1?1:de(c(l),n,a)}}});var St=I((Hr,fe)=>{var X=gt(),vt={ease:X(.25,.1,.25,1),easeIn:X(.42,0,1,1),easeOut:X(0,0,.58,1),easeInOut:X(.42,0,.58,1),linear:X(0,0,1,1)};fe.exports=er;fe.exports.makeAggregateRaf=yt;fe.exports.sharedScheduler=yt();function er(t,e,n){var r=Object.create(null),a=Object.create(null);n=n||{};var s=typeof n.easing=="function"?n.easing:vt[n.easing];s||(n.easing&&console.warn("Unknown easing function in amator: "+n.easing),s=vt.ease);var i=typeof n.step=="function"?n.step:bt,c=typeof n.done=="function"?n.done:bt,m=tr(n.scheduler),l=Object.keys(e);l.forEach(function(E){r[E]=t[E],a[E]=e[E]-t[E]});var f=typeof n.duration=="number"?n.duration:400,v=Math.max(1,f*.06),b,g=0;return b=m.next(x),{cancel:S};function S(){m.cancel(b),b=0}function x(){var E=s(g/v);g+=1,w(E),g<=v?(b=m.next(x),i(t)):(b=0,setTimeout(function(){c(t)},0))}function w(E){l.forEach(function(N){t[N]=a[N]*E+r[N]})}}function bt(){}function tr(t){if(!t){var e=typeof window<"u"&&window.requestAnimationFrame;return e?nr():rr()}if(typeof t.next!="function")throw new Error("Scheduler is supposed to have next(cb) function");if(typeof t.cancel!="function")throw new Error("Scheduler is supposed to have cancel(handle) function");return t}function nr(){return{next:window.requestAnimationFrame.bind(window),cancel:window.cancelAnimationFrame.bind(window)}}function rr(){return{next:function(t){return setTimeout(t,1e3/60)},cancel:function(t){return clearTimeout(t)}}}function yt(){var t=new Set,e=new Set,n=0;return{next:a,cancel:a,clearAll:r};function r(){t.clear(),e.clear(),cancelAnimationFrame(n),n=0}function a(m){e.add(m),s()}function s(){n||(n=requestAnimationFrame(i))}function i(){n=0;var m=e;e=t,t=m,t.forEach(function(l){l()}),t.clear()}function c(m){e.delete(m)}}});var wt=I((Rr,xt)=>{"use strict";function ir(t){ar(t);let e=or(t);return t.on=e.on,t.off=e.off,t.fire=e.fire,t}function or(t){let e=Object.create(null);return{on:function(n,r,a){if(typeof r!="function")throw new Error("callback is expected to be a function");let s=e[n];return s||(s=e[n]=[]),s.push({callback:r,ctx:a}),t},off:function(n,r){if(typeof n>"u")return e=Object.create(null),t;if(e[n])if(typeof r!="function")delete e[n];else{let a=e[n];for(let s=0;s<a.length;++s)a[s].callback===r&&a.splice(s,1)}return t},fire:function(n){let r=e[n];if(!r)return t;let a;arguments.length>1&&(a=Array.prototype.slice.call(arguments,1));for(let s=0;s<r.length;++s){let i=r[s];i.callback.apply(i.ctx,a)}return t}}}function ar(t){if(!t)throw new Error("Eventify cannot use falsy object as events subject");let e=["on","fire","off"];for(let n=0;n<e.length;++n)if(t.hasOwnProperty(e[n]))throw new Error("Subject cannot be eventified, since it already has property '"+e[n]+"'")}xt.exports=ir});var Et=I((Zr,Ct)=>{Ct.exports=sr;function sr(t,e,n){typeof n!="object"&&(n={});var r=typeof n.minVelocity=="number"?n.minVelocity:5,a=typeof n.amplitude=="number"?n.amplitude:.25,s=typeof n.cancelAnimationFrame=="function"?n.cancelAnimationFrame:lr(),i=typeof n.requestAnimationFrame=="function"?n.requestAnimationFrame:cr(),c,m,l=342,f,v,b,g,S,x,w,E;return{start:F,stop:A,cancel:N};function N(){s(f),s(E)}function F(){c=t(),g=w=v=S=0,m=new Date,s(f),s(E),f=i(_)}function _(){var y=Date.now(),L=y-m;m=y;var V=t(),T=V.x-c.x,B=V.y-c.y;c=V;var M=1e3/(1+L);v=.8*T*M+.2*v,S=.8*B*M+.2*S,f=i(_)}function A(){s(f),s(E);var y=t();b=y.x,x=y.y,m=Date.now(),(v<-r||v>r)&&(g=a*v,b+=g),(S<-r||S>r)&&(w=a*S,x+=w),E=i(h)}function h(){var y=Date.now()-m,L=!1,V=0,T=0;g&&(V=-g*Math.exp(-y/l),V>.5||V<-.5?L=!0:V=g=0),w&&(T=-w*Math.exp(-y/l),T>.5||T<-.5?L=!0:T=w=0),L&&(e(b+V,x+T),E=i(h))}}function lr(){return typeof cancelAnimationFrame=="function"?cancelAnimationFrame:clearTimeout}function cr(){return typeof requestAnimationFrame=="function"?requestAnimationFrame:function(t){return setTimeout(t,16)}}});var Tt=I((Wr,Lt)=>{Lt.exports=ur;function ur(t){if(t)return{capture:Vt,release:Vt};var e,n,r,a=!1;return{capture:s,release:i};function s(c){a=!0,n=window.document.onselectstart,r=window.document.ondragstart,window.document.onselectstart=At,e=c,e.ondragstart=At}function i(){a&&(a=!1,window.document.onselectstart=n,e&&(e.ondragstart=r))}}function At(t){return t.stopPropagation(),!1}function Vt(){}});var kt=I((jr,Gt)=>{Gt.exports=dr;function dr(){this.x=0,this.y=0,this.scale=1}});var _t=I(($r,Te)=>{Te.exports=fr;Te.exports.canAttach=Mt;function fr(t,e){if(!Mt(t))throw new Error("svg element is required for svg.panzoom to work");var n=t.ownerSVGElement;if(!n)throw new Error("Do not apply panzoom to the root <svg> element. Use its child instead (e.g. <g></g>). As of March 2016 only FireFox supported transform on the root element");e.disableKeyboardInteraction||n.setAttribute("tabindex",0);var r={getBBox:s,getScreenCTM:i,getOwner:a,applyTransform:m,initTransform:c};return r;function a(){return n}function s(){var l=t.getBBox();return{left:l.x,top:l.y,width:l.width,height:l.height}}function i(){var l=n.getCTM();return l||n.getScreenCTM()}function c(l){var f=t.getCTM();f===null&&(f=document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGMatrix()),l.x=f.e,l.y=f.f,l.scale=f.a,n.removeAttributeNS(null,"viewBox")}function m(l){t.setAttribute("transform","matrix("+l.scale+" 0 0 "+l.scale+" "+l.x+" "+l.y+")")}}function Mt(t){return t&&t.ownerSVGElement&&t.getCTM}});var Nt=I((Yr,Ge)=>{Ge.exports=pr;Ge.exports.canAttach=Ot;function pr(t,e){var n=Ot(t);if(!n)throw new Error("panzoom requires DOM element to be attached to the DOM tree");var r=t.parentElement;t.scrollTop=0,e.disableKeyboardInteraction||r.setAttribute("tabindex",0);var a={getBBox:i,getOwner:s,applyTransform:c};return a;function s(){return r}function i(){return{left:0,top:0,width:t.clientWidth,height:t.clientHeight}}function c(m){t.style.transformOrigin="0 0 0",t.style.transform="matrix("+m.scale+", 0, 0, "+m.scale+", "+m.x+", "+m.y+")"}}function Ot(t){return t&&t.parentElement&&t.style}});var Wt=I((Ur,Zt)=>{"use strict";var Ft=ut(),ke=St(),mr=wt(),hr=Et(),Ht=Tt(),gr=Ht(),vr=Ht(!0),br=kt(),zt=_t(),Pt=Nt(),yr=1,Sr=1.75,Bt=300,It=200;Zt.exports=Rt;function Rt(t,e){e=e||{};var n=e.controller;if(n||(zt.canAttach(t)?n=zt(t,e):Pt.canAttach(t)&&(n=Pt(t,e))),!n)throw new Error("Cannot create panzoom for the current type of dom element");var r=n.getOwner(),a={x:0,y:0},s=!1,i=new br;n.initTransform&&n.initTransform(i);var c=typeof e.filterKey=="function"?e.filterKey:Y,m=typeof e.pinchSpeed=="number"?e.pinchSpeed:1,l=e.bounds,f=typeof e.maxZoom=="number"?e.maxZoom:Number.POSITIVE_INFINITY,v=typeof e.minZoom=="number"?e.minZoom:0,b=typeof e.boundsPadding=="number"?e.boundsPadding:.05,g=typeof e.zoomDoubleClickSpeed=="number"?e.zoomDoubleClickSpeed:Sr,S=e.beforeWheel||Y,x=e.beforeMouseDown||Y,w=typeof e.zoomSpeed=="number"?e.zoomSpeed:yr,E=Dt(e.transformOrigin),N=e.enableTextSelection?vr:gr;xr(l),e.autocenter&&pn();var F,_=0,A=0,h=0,y=null,L=new Date,V,T=!1,B=!1,M,z,ye,Se,xe,P;"smoothScroll"in e&&!e.smoothScroll?P=wr():P=hr(Cn,Tn,e.smoothScroll);var we,U,te,ne=!1;He();var re={dispose:Gn,moveBy:Z,moveTo:Ce,smoothMoveTo:Ln,centerOn:Vn,zoomTo:se,zoomAbs:ie,smoothZoom:ae,smoothZoomAbs:zn,showRectangle:fn,pause:cn,resume:un,isPaused:dn,getTransform:mn,getMinZoom:hn,setMinZoom:gn,getMaxZoom:vn,setMaxZoom:bn,getTransformOrigin:yn,setTransformOrigin:Sn,getZoomSpeed:xn,setZoomSpeed:wn};mr(re);var ze=typeof e.initialX=="number"?e.initialX:i.x,Pe=typeof e.initialY=="number"?e.initialY:i.y,Be=typeof e.initialZoom=="number"?e.initialZoom:i.scale;return(ze!=i.x||Pe!=i.y||Be!=i.scale)&&ie(ze,Pe,Be),re;function cn(){Re(),ne=!0}function un(){ne&&(He(),ne=!1)}function dn(){return ne}function fn(o){var u=r.getBoundingClientRect(),d=q(u.width,u.height),p=o.right-o.left,C=o.bottom-o.top;if(!Number.isFinite(p)||!Number.isFinite(C))throw new Error("Invalid rectangle");var G=d.x/p,k=d.y/C,O=Math.min(G,k);i.x=-(o.left+p/2)*O+d.x/2,i.y=-(o.top+C/2)*O+d.y/2,i.scale=O}function q(o,u){if(n.getScreenCTM){var d=n.getScreenCTM(),p=d.a,C=d.d,G=d.e,k=d.f;a.x=o*p-G,a.y=u*C-k}else a.x=o,a.y=u;return a}function pn(){var o,u,d=0,p=0,C=De();if(C)d=C.left,p=C.top,o=C.right-C.left,u=C.bottom-C.top;else{var G=r.getBoundingClientRect();o=G.width,u=G.height}var k=n.getBBox();if(!(k.width===0||k.height===0)){var O=u/k.height,j=o/k.width,H=Math.min(j,O);i.x=-(k.left+k.width/2)*H+o/2+d,i.y=-(k.top+k.height/2)*H+u/2+p,i.scale=H}}function mn(){return i}function hn(){return v}function gn(o){v=o}function vn(){return f}function bn(o){f=o}function yn(){return E}function Sn(o){E=Dt(o)}function xn(){return w}function wn(o){if(!Number.isFinite(o))throw new Error("Zoom speed should be a number");w=o}function Cn(){return{x:i.x,y:i.y}}function Ce(o,u){i.x=o,i.y=u,Ee(),W("pan"),Ae()}function Ie(o,u){Ce(i.x+o,i.y+u)}function Ee(){var o=De();if(o){var u=!1,d=En(),p=o.left-d.right;return p>0&&(i.x+=p,u=!0),p=o.right-d.left,p<0&&(i.x+=p,u=!0),p=o.top-d.bottom,p>0&&(i.y+=p,u=!0),p=o.bottom-d.top,p<0&&(i.y+=p,u=!0),u}}function De(){if(l){if(typeof l=="boolean"){var o=r.getBoundingClientRect(),u=o.width,d=o.height;return{left:u*b,top:d*b,right:u*(1-b),bottom:d*(1-b)}}return l}}function En(){var o=n.getBBox(),u=An(o.left,o.top);return{left:u.x,top:u.y,right:o.width*i.scale+u.x,bottom:o.height*i.scale+u.y}}function An(o,u){return{x:o*i.scale+i.x,y:u*i.scale+i.y}}function Ae(){s=!0,F=window.requestAnimationFrame(kn)}function qe(o,u,d){if(Me(o)||Me(u)||Me(d))throw new Error("zoom requires valid numbers");var p=i.scale*d;if(p<v){if(i.scale===v)return;d=v/i.scale}if(p>f){if(i.scale===f)return;d=f/i.scale}var C=q(o,u);if(i.x=C.x-d*(C.x-i.x),i.y=C.y-d*(C.y-i.y),l&&b===1&&v===1)i.scale*=d,Ee();else{var G=Ee();G||(i.scale*=d)}W("zoom"),Ae()}function ie(o,u,d){var p=d/i.scale;qe(o,u,p)}function Vn(o){var u=o.ownerSVGElement;if(!u)throw new Error("ui element is required to be within the scene");var d=o.getBoundingClientRect(),p=d.left+d.width/2,C=d.top+d.height/2,G=u.getBoundingClientRect(),k=G.width/2-p,O=G.height/2-C;Z(k,O,!0)}function Ln(o,u){Z(o-i.x,u-i.y,!0)}function Z(o,u,d){if(!d)return Ie(o,u);we&&we.cancel();var p={x:0,y:0},C={x:o,y:u},G=0,k=0;we=ke(p,C,{step:function(O){Ie(O.x-G,O.y-k),G=O.x,k=O.y}})}function Tn(o,u){le(),Ce(o,u)}function Gn(){Re()}function He(){r.addEventListener("mousedown",Je,{passive:!1}),r.addEventListener("dblclick",Ke,{passive:!1}),r.addEventListener("touchstart",We,{passive:!1}),r.addEventListener("keydown",Ze,{passive:!1}),Ft.addWheelListener(r,nt,{passive:!1}),Ae()}function Re(){Ft.removeWheelListener(r,nt),r.removeEventListener("mousedown",Je),r.removeEventListener("keydown",Ze),r.removeEventListener("dblclick",Ke),r.removeEventListener("touchstart",We),F&&(window.cancelAnimationFrame(F),F=0),P.cancel(),et(),tt(),N.release(),Ve()}function kn(){s&&Mn()}function Mn(){s=!1,n.applyTransform(i),W("transform"),F=0}function Ze(o){var u=0,d=0,p=0;if(o.keyCode===38?d=1:o.keyCode===40?d=-1:o.keyCode===37?u=1:o.keyCode===39?u=-1:o.keyCode===189||o.keyCode===109?p=1:(o.keyCode===187||o.keyCode===107)&&(p=-1),!c(o,u,d,p)){if(u||d){o.preventDefault(),o.stopPropagation();var C=r.getBoundingClientRect(),G=Math.min(C.width,C.height),k=.05,O=G*k*u,j=G*k*d;Z(O,j)}if(p){var H=rt(p*100),G=E?J():_n();se(G.x,G.y,H)}}}function _n(){var o=r.getBoundingClientRect();return{x:o.width/2,y:o.height/2}}function We(o){if(On(o),K(),o.touches.length===1)return Fn(o,o.touches[0]);o.touches.length===2&&(xe=Ue(o.touches[0],o.touches[1]),te=!0,je())}function On(o){e.onTouch&&!e.onTouch(o)||(o.stopPropagation(),o.preventDefault())}function Nn(o){K(),!(e.onDoubleClick&&!e.onDoubleClick(o))&&(o.preventDefault(),o.stopPropagation())}function Fn(o){A=new Date;var u=o.touches[0],d=D(u);V=d;var p=q(d.x,d.y);M=p.x,z=p.y,ye=M,Se=z,P.cancel(),je()}function je(){T||(T=!0,document.addEventListener("touchmove",$e),document.addEventListener("touchend",oe),document.addEventListener("touchcancel",oe))}function $e(o){if(o.touches.length===1){o.stopPropagation();var u=o.touches[0],d=D(u),p=q(d.x,d.y),C=p.x-M,G=p.y-z;C!==0&&G!==0&&it(),M=p.x,z=p.y,Z(C,G)}else if(o.touches.length===2){te=!0;var k=o.touches[0],O=o.touches[1],j=Ue(k,O),H=1+(j/xe-1)*m,at=D(k),st=D(O);if(M=(at.x+st.x)/2,z=(at.y+st.y)/2,E){var d=J();M=d.x,z=d.y}se(M,z,H),xe=j,o.stopPropagation(),o.preventDefault()}}function K(){h&&(clearTimeout(h),h=0)}function Ye(o){if(e.onClick){K();var u=M-ye,d=z-Se,p=Math.sqrt(u*u+d*d);p>5||(h=setTimeout(function(){h=0,e.onClick(o)},Bt))}}function oe(o){if(K(),o.touches.length>0){var u=D(o.touches[0]),d=q(u.x,u.y);M=d.x,z=d.y}else{var p=new Date;if(p-_<Bt)if(E){var u=J();ae(u.x,u.y,g)}else ae(V.x,V.y,g);else p-A<It&&Ye(o);_=p,Ve(),tt()}}function Ue(o,u){var d=o.clientX-u.clientX,p=o.clientY-u.clientY;return Math.sqrt(d*d+p*p)}function Ke(o){Nn(o);var u=D(o);E&&(u=J()),ae(u.x,u.y,g)}function Je(o){if(K(),!x(o)){if(y=o,L=new Date,T)return o.stopPropagation(),!1;var u=o.button===1&&window.event!==null||o.button===0;if(u){P.cancel();var d=D(o),p=q(d.x,d.y);return ye=M=p.x,Se=z=p.y,document.addEventListener("mousemove",Qe),document.addEventListener("mouseup",Xe),N.capture(o.target||o.srcElement),!1}}}function Qe(o){if(!T){it();var u=D(o),d=q(u.x,u.y),p=d.x-M,C=d.y-z;M=d.x,z=d.y,Z(p,C)}}function Xe(){var o=new Date;o-L<It&&Ye(y),N.release(),Ve(),et()}function et(){document.removeEventListener("mousemove",Qe),document.removeEventListener("mouseup",Xe),B=!1}function tt(){document.removeEventListener("touchmove",$e),document.removeEventListener("touchend",oe),document.removeEventListener("touchcancel",oe),B=!1,te=!1,T=!1}function nt(o){if(!S(o)){P.cancel();var u=o.deltaY;o.deltaMode>0&&(u*=100);var d=rt(u);if(d!==1){var p=E?J():D(o);se(p.x,p.y,d),o.preventDefault()}}}function D(o){var u,d,p=r.getBoundingClientRect();return u=o.clientX-p.left,d=o.clientY-p.top,{x:u,y:d}}function ae(o,u,d){var p=i.scale,C={scale:p},G={scale:d*p};P.cancel(),le(),U=ke(C,G,{step:function(k){ie(o,u,k.scale)},done:ot})}function zn(o,u,d){var p=i.scale,C={scale:p},G={scale:d};P.cancel(),le(),U=ke(C,G,{step:function(k){ie(o,u,k.scale)},done:ot})}function J(){var o=r.getBoundingClientRect();return{x:o.width*E.x,y:o.height*E.y}}function se(o,u,d){return P.cancel(),le(),qe(o,u,d)}function le(){U&&(U.cancel(),U=null)}function rt(o){var u=Math.sign(o),d=Math.min(.25,Math.abs(w*o/128));return 1-u*d}function it(){B||(W("panstart"),B=!0,P.start())}function Ve(){B&&(te||P.stop(),W("panend"))}function ot(){W("zoomend")}function W(o){re.fire(o,re)}}function Dt(t){if(t){if(typeof t=="object")return(!$(t.x)||!$(t.y))&&qt(t),t;qt()}}function qt(t){throw console.error(t),new Error(["Cannot parse transform origin.","Some good examples:",' "center center" can be achieved with {x: 0.5, y: 0.5}',' "top center" can be achieved with {x: 0.5, y: 0}',' "bottom right" can be achieved with {x: 1, y: 1}'].join(`
3
+ `))}function Y(){}function xr(t){var e=typeof t;if(!(e==="undefined"||e==="boolean")){var n=$(t.left)&&$(t.top)&&$(t.bottom)&&$(t.right);if(!n)throw new Error("Bounds object is not valid. It can be: undefined, boolean (true|false) or an object {left, top, right, bottom}")}}function $(t){return Number.isFinite(t)}function Me(t){return Number.isNaN?Number.isNaN(t):t!==t}function wr(){return{start:Y,stop:Y,cancel:Y}}function Cr(){if(typeof document>"u")return;var t=document.getElementsByTagName("script");if(!t)return;for(var e,n=0;n<t.length;++n){var r=t[n];if(r.src&&r.src.match(/\bpanzoom(\.min)?\.js/)){e=r;break}}if(!e)return;var a=e.getAttribute("query");if(!a)return;var s=e.getAttribute("name")||"pz",i=Date.now();c();function c(){var f=document.querySelector(a);if(!f){var v=Date.now(),b=v-i;if(b<2e3){setTimeout(c,100);return}console.error("Cannot find the panzoom element",s);return}var g=m(e);console.log(g),window[s]=Rt(f,g)}function m(f){for(var v=f.attributes,b={},g=0;g<v.length;++g){var S=v[g],x=l(S);x&&(b[x.name]=x.value)}return b}function l(f){if(f.name){var v=f.name[0]==="p"&&f.name[1]==="z"&&f.name[2]==="-";if(v){var b=f.name.substr(3),g=JSON.parse(f.value);return{name:b,value:g}}}}}Cr()});var sn={};lt(sn,{getViz:()=>Br,renderDotToSvg:()=>Pr});async function Pr(t){throw new Error("libpetri viewer: static bundle has no DOT renderer. Either ship the pre-rendered SVG in the host (mount(null, container, opts)) or load the full viewer.iife.js bundle.")}function Br(){throw new Error("libpetri viewer: static bundle has no Viz instance.")}var ln=Hn(()=>{});var Fe={};lt(Fe,{DEFAULT_PANZOOM_OPTS:()=>pe,VIEWER_CSS_VARIABLES:()=>Oe,colorForPrefix:()=>ge,discoverClusters:()=>he,mount:()=>Ne});var jt=Zn(Wt(),1),pe={smoothScroll:!1,zoomDoubleClickSpeed:1,maxZoom:1e3,minZoom:.02};function $t(t,e,n){if(n)try{n.dispose()}catch{}let r={...pe,...e};return(0,jt.default)(t,r)}function he(t){let e=new Map,n=t.querySelectorAll("g.cluster");if(!n.length)return e;let r=Array.from(t.querySelectorAll("g.node"));for(let a of Array.from(n)){let s=R(a,"title");if(!s)continue;let i=s.textContent??"";if(!i.startsWith("cluster_"))continue;let c=i.slice(8);if(e.has(c))continue;let m=0;for(let l of r){if(l.getAttribute("data-instance"))continue;let f=R(l,"title");if(!f)continue;let v=(f.textContent??"").trim();me(v,c)&&(l.setAttribute("data-instance",c),m++)}e.set(c,{prefix:c,group:a,nodeCount:m,color:ge(c)})}return e}function me(t,e){return t===e||t.startsWith(`${e}/`)||t.startsWith(`p_${e}_`)||t.startsWith(`t_${e}_`)||t.startsWith(`j_${e}_`)}function ge(t){let e=2166136261;for(let r=0;r<t.length;r++)e^=t.charCodeAt(r),e=e*16777619>>>0;let n=Math.floor((e/4294967296*360+e%360*.61803)%360);return n<0&&(n+=360),`hsl(${n}, 60%, 45%)`}function Yt(t){for(let e of t.values()){let n=R(e.group,"polygon")??R(e.group,"path");n&&(n.setAttribute("stroke",e.color),n.setAttribute("stroke-width","2.2"))}}function ee(t,e){let n=t.group,r=n.classList.contains("cluster-collapsed"),a=n.ownerSVGElement;if(a)if(e&&!r){n.classList.add("cluster-collapsed");let s=[];if(a.querySelectorAll(`g.node[data-instance="${Er(t.prefix)}"]`).forEach(i=>{i.classList.add("petri-collapsed-inside"),s.push(i)}),a.querySelectorAll("g.edge").forEach(i=>{let c=R(i,"title");if(!c)return;let m=(c.textContent??"").trim(),l=m.indexOf("->");if(l<0)return;let f=m.slice(0,l),v=m.slice(l+2);me(f,t.prefix)&&me(v,t.prefix)&&(i.classList.add("petri-collapsed-inside"),s.push(i))}),n._petriHiddenSiblings=s,!n._petriCollapsedBadge){let i=R(n,"text");if(i){let c=document.createElementNS("http://www.w3.org/2000/svg","text");c.setAttribute("x",i.getAttribute("x")??"0");let m=parseFloat(i.getAttribute("y")??"0");c.setAttribute("y",String(m+16)),c.setAttribute("text-anchor",i.getAttribute("text-anchor")??"middle"),c.setAttribute("font-size","11"),c.setAttribute("fill","#9ca3af"),c.setAttribute("class","cluster-collapsed-badge"),c.textContent=`(${t.nodeCount} internal node${t.nodeCount===1?"":"s"})`,n.appendChild(c),n._petriCollapsedBadge=c}}}else!e&&r&&(n.classList.remove("cluster-collapsed"),n._petriHiddenSiblings&&(n._petriHiddenSiblings.forEach(s=>s.classList.remove("petri-collapsed-inside")),n._petriHiddenSiblings=void 0),n._petriCollapsedBadge&&n._petriCollapsedBadge.parentNode===n&&(n.removeChild(n._petriCollapsedBadge),n._petriCollapsedBadge=null))}function Ut(t,e){if(e==null){t.removeAttribute("data-active-filter"),t.classList.remove("has-active-filter"),t.querySelectorAll("g.node, g.edge").forEach(n=>n.classList.remove("petri-dimmed"));return}t.setAttribute("data-active-filter",e),t.classList.add("has-active-filter"),t.querySelectorAll("g.node").forEach(n=>{let r=n.getAttribute("data-instance");!!r&&(r===e||r.indexOf(e+"_")===0||r.indexOf(e+"/")===0)?n.classList.remove("petri-dimmed"):n.classList.add("petri-dimmed")}),t.querySelectorAll("g.edge").forEach(n=>{let r=R(n,"title");if(!r)return;let a=r.textContent??"",s=a.indexOf("->");if(s<0){n.classList.remove("petri-dimmed");return}let i=a.slice(0,s),c=a.slice(s+2),m=l=>l.indexOf(e+"/")>=0||l.indexOf(e+"_")>=0||l===e;m(i)||m(c)?n.classList.remove("petri-dimmed"):n.classList.add("petri-dimmed")})}function Kt(t,e,n,r){if(n.size===0||!t)return!1;for(let a of n)if(e.has(a)&&me(r,a))return!0;return!1}function Er(t){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(t):t.replace(/[^a-zA-Z0-9_-]/g,e=>`\\${e}`)}function R(t,e){let n=e.toLowerCase();for(let r of Array.from(t.children))if(r.tagName.toLowerCase()===n)return r;return null}function _e(t){for(let e of Array.from(t.children))if(e.tagName==="title")return e.textContent??"";return""}function Ar(t){let e=t.parentElement?.closest("g.cluster");return e?_e(e).replace(/^cluster_/,""):""}function ve(t){let e=Array.from(t.querySelectorAll("g.node"));for(let r of e){let a=_e(r);if(!a)continue;r.setAttribute("data-id",a);let s=/__rep__([A-Za-z0-9_]+)$/.exec(a);if(s)r.setAttribute("data-instance",s[1]);else if(!r.hasAttribute("data-instance")){let i=Ar(r);i&&r.setAttribute("data-instance",i)}}let n=new Map;for(let r of e){let a=r.getAttribute("data-id");a&&n.set(a,r)}for(let r of Array.from(t.querySelectorAll("g.edge"))){let a=_e(r),s=a.indexOf("->");if(s<=0)continue;let i=a.slice(0,s).trim(),c=a.slice(s+2).trim();r.setAttribute("data-src",i),r.setAttribute("data-dst",c);let m=n.get(i)?.getAttribute("data-instance")??"",l=n.get(c)?.getAttribute("data-instance")??"";r.setAttribute("data-src-cluster",m),r.setAttribute("data-dst-cluster",l),r.classList.remove("intra-cluster","cross-cluster"),m!==""&&m===l?(r.classList.add("intra-cluster"),r.setAttribute("data-cluster",m)):(r.classList.add("cross-cluster"),r.removeAttribute("data-cluster"))}}var Vr="libpetri-sidebar",Lr="libpetri-sidebar-chip",Tr="is-off";function Jt(t,e,n){let r=new Set;for(let _ of e.keys())r.add(_);let a=!0,s=!0,i=()=>{n.onVisibilityChange({visibleClusters:new Set(r),includeSharedPlaces:a})},c=document.createElement("aside");c.className=Vr;let m=document.createElement("h4");m.className="libpetri-sidebar-title",m.textContent=`Subnets (${e.size})`,c.appendChild(m);let l=document.createElement("div");l.className="libpetri-sidebar-actions";let f=document.createElement("button");f.type="button",f.textContent="show all";let v=document.createElement("button");v.type="button",v.textContent="hide all",l.appendChild(f),l.appendChild(v),c.appendChild(l);let b=document.createElement("label");b.className="libpetri-sidebar-checkbox";let g=document.createElement("input");g.type="checkbox",g.checked=a,b.appendChild(g),b.appendChild(document.createTextNode(" Shared places")),g.addEventListener("change",()=>{a=g.checked,i()}),c.appendChild(b);let S=document.createElement("label");S.className="libpetri-sidebar-checkbox";let x=document.createElement("input");x.type="checkbox",x.checked=s,S.appendChild(x),S.appendChild(document.createTextNode(" Click node \u2192 highlight")),x.addEventListener("change",()=>{s=x.checked,n.onHighlightModeChange(s)}),c.appendChild(S);let w=document.createElement("div");w.className="libpetri-sidebar-hint",w.innerHTML="Click chip: toggle.<br>Shift-click: isolate.<br>Cmd/Ctrl-click: multi-select.<br>Click empty: clear highlight.",c.appendChild(w);let E=document.createElement("ul");E.className="libpetri-sidebar-chips";let N=new Map;for(let _ of e.values()){let A=document.createElement("li");A.className=Lr,A.style.borderLeftColor=_.color,A.dataset.prefix=_.prefix;let h=document.createElement("span");h.className="libpetri-sidebar-chip-dot",h.style.background=_.color;let y=document.createElement("span");y.className="libpetri-sidebar-chip-name",y.textContent=_.prefix;let L=document.createElement("span");L.className="libpetri-sidebar-chip-count",L.textContent=String(_.nodeCount),A.appendChild(h),A.appendChild(y),A.appendChild(L),A.addEventListener("click",V=>{let T=_.prefix;if(V.shiftKey){let B=[...e.keys()].every(M=>M===T?r.has(M):!r.has(M));if(r.clear(),B)for(let M of e.keys())r.add(M);else r.add(T)}else V.ctrlKey||V.metaKey?[...e.keys()].some(M=>!r.has(M))?r.has(T)?r.delete(T):r.add(T):(r.clear(),r.add(T)):r.has(T)?r.delete(T):r.add(T);F(),i()}),E.appendChild(A),N.set(_.prefix,A)}c.appendChild(E);function F(){for(let[_,A]of N)A.classList.toggle(Tr,!r.has(_))}return f.addEventListener("click",()=>{r.clear();for(let _ of e.keys())r.add(_);a=!0,g.checked=!0,F(),i()}),v.addEventListener("click",()=>{r.clear(),a=!1,g.checked=!1,F(),i()}),t.appendChild(c),i(),{root:c,dispose(){c.parentNode===t&&t.removeChild(c)}}}var Gr=["is-highlight","is-neighbor","is-faded"];function kr(t){for(let e of Gr)for(let n of Array.from(t.querySelectorAll("."+e)))n.classList.remove(e)}function Mr(t,e){let n=t.querySelector(`g.node[data-id="${be(e)}"]`);if(!n)return new Set([e]);let r=new Set([e]),a=n.getAttribute("data-replica-of")??(e.startsWith("p_")?e.slice(2):null);if(a){let s=t.querySelector(`g.node[data-id="${be("p_"+a)}"]`);if(s){let i=s.getAttribute("data-id");i&&r.add(i)}for(let i of Array.from(t.querySelectorAll(`g.node[data-replica-of="${be(a)}"]`))){let c=i.getAttribute("data-id");c&&r.add(c)}}return r}function Qt(t,e){if(kr(t),e===null)return;let n=Mr(t,e);for(let l of n){let f=t.querySelector(`g.node[data-id="${be(l)}"]`);f&&!f.classList.contains("is-hidden")&&f.classList.add("is-highlight")}let r=new Set,a=new Set,s=[],i=Array.from(n),c=new Set(n),m=Array.from(t.querySelectorAll("g.edge"));for(;i.length>0;){let l=i.shift();for(let f of m){if(f.classList.contains("is-hidden"))continue;let v=f.getAttribute("data-src"),b=f.getAttribute("data-dst");if(v!==l&&b!==l)continue;let g=v===l?b:v;g&&(s.push(f),!c.has(g)&&(c.add(g),g.startsWith("j_")?(a.add(g),i.push(g)):r.add(g)))}}for(let l of s)l.classList.add("is-highlight");for(let l of m)l.classList.contains("is-hidden")||l.classList.contains("is-highlight")||l.classList.add("is-faded");for(let l of Array.from(t.querySelectorAll("g.node"))){if(l.classList.contains("is-hidden"))continue;let f=l.getAttribute("data-id")??"";if(!n.has(f))if(r.has(f))l.classList.add("is-neighbor");else{if(a.has(f))continue;l.classList.add("is-faded")}}for(let l of Array.from(t.querySelectorAll("g.cluster:not(.cluster-orchestrator)")))l.classList.contains("is-hidden")||l.classList.add("is-faded")}function be(t){return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}var Xt=/^(p_[A-Za-z0-9_]+)__rep__/;function en(t){return t.replace(/^p_/,"")}function nn(t){let e=new Set,n=Array.from(t.querySelectorAll("g.node"));for(let r of n){let a=r.querySelector("title")?.textContent??"",s=Xt.exec(a);s&&e.add(s[1])}for(let r of n){let a=r.querySelector("title")?.textContent??"",s=Xt.exec(a),i=null;s?i=en(s[1]):e.has(a)&&(i=en(a)),i!==null&&(r.classList.add("petri-replica"),r.setAttribute("data-replica-of",i),Or(r))}}var _r="http://www.w3.org/2000/svg",tn="libpetri-replica-glyph";function Or(t){if(t.querySelector(`text.${tn}`))return;let e=t.querySelector("ellipse, circle");if(!e)return;let n=0,r=0,a=0,s=0;e.tagName==="ellipse"?(n=parseFloat(e.getAttribute("cx")??"0"),r=parseFloat(e.getAttribute("cy")??"0"),a=parseFloat(e.getAttribute("rx")??"0"),s=parseFloat(e.getAttribute("ry")??"0")):(n=parseFloat(e.getAttribute("cx")??"0"),r=parseFloat(e.getAttribute("cy")??"0"),a=parseFloat(e.getAttribute("r")??"0"),s=a);let i=document.createElementNS(_r,"text");i.setAttribute("class",tn),i.setAttribute("x",(n+a+2).toFixed(2)),i.setAttribute("y",(r-s+2).toFixed(2)),i.setAttribute("text-anchor","start"),i.setAttribute("font-size","9"),i.textContent="\u21C4",t.appendChild(i)}function Nr(t,e){if(e.size===0)return new Set;let n=Array.from(t.querySelectorAll("g.node:not([data-instance])")),r=new Set;for(let v of n){let b=v.getAttribute("data-id");b&&r.add(b)}let a=new Map,s=new Map,i=(v,b,g)=>{let S=v.get(b);S||(S=new Set,v.set(b,S)),S.add(g)};for(let v of Array.from(t.querySelectorAll("g.edge"))){let b=v.getAttribute("data-src")??"",g=v.getAttribute("data-dst")??"";r.has(b)&&r.has(g)&&(i(a,b,g),i(s,g,b))}let c=new Set,m=new Set;for(let v of Array.from(t.querySelectorAll("g.edge.cross-cluster"))){let b=v.getAttribute("data-src")??"",g=v.getAttribute("data-dst")??"",S=v.getAttribute("data-src-cluster")??"",x=v.getAttribute("data-dst-cluster")??"";r.has(b)&&e.has(x)&&c.add(b),r.has(g)&&e.has(S)&&m.add(g)}let l=new Set,f=(v,b)=>{let g=[];for(let S of v)l.add(S),g.push(S);for(;g.length;){let S=g.shift(),x=b.get(S);if(x)for(let w of x)l.has(w)||(l.add(w),g.push(w))}};return f(c,s),f(m,a),l}function rn(t,e){ve(t);let{visibleClusters:n,includeSharedPlaces:r}=e;for(let i of Array.from(t.querySelectorAll("g.cluster:not(.cluster-orchestrator)"))){let m=(i.querySelector(":scope > title")?.textContent??"").replace(/^cluster_/,"");i.classList.toggle("is-hidden",!n.has(m))}for(let i of Array.from(t.querySelectorAll("g.node[data-instance]"))){let c=i.getAttribute("data-instance")??"";i.classList.toggle("is-hidden",!n.has(c))}let a=Nr(t,n);for(let i of Array.from(t.querySelectorAll("g.node:not([data-instance])"))){let c=i.getAttribute("data-id")??"";i.classList.toggle("is-hidden",!a.has(c))}if(!r)for(let i of Array.from(t.querySelectorAll("g.node.petri-replica")))i.classList.add("is-hidden");let s=new Map;for(let i of Array.from(t.querySelectorAll("g.node"))){let c=i.getAttribute("data-id");c&&s.set(c,i)}for(let i of Array.from(t.querySelectorAll("g.edge"))){let c=i.getAttribute("data-src")??"",m=i.getAttribute("data-dst")??"",l=s.get(c)?.classList.contains("is-hidden")??!1,f=s.get(m)?.classList.contains("is-hidden")??!1;i.classList.toggle("is-hidden",l||f)}}var Oe=["--lpv-bg","--lpv-header-bg","--lpv-border","--lpv-text","--lpv-muted","--lpv-cluster-bg","--lpv-cluster-bg-collapsed","--lpv-cluster-stroke-width","--lpv-cluster-stroke-dash","--lpv-cluster-fill-tint","--lpv-dim-opacity","--lpv-active-filter-outline","--lpv-legend-bg","--lpv-chip-bg","--lpv-chip-active-bg","--lpv-sidebar-bg","--lpv-sidebar-border","--lpv-sidebar-text","--lpv-sidebar-muted","--lpv-sidebar-chip-bg","--lpv-sidebar-chip-hover-bg","--lpv-sidebar-chip-off-opacity","--lpv-shared-glyph-color","--lpv-replica-fill","--lpv-replica-stroke","--lpv-highlight-stroke","--lpv-highlight-glow","--lpv-neighbor-stroke","--lpv-faded-node-opacity","--lpv-faded-edge-opacity","--lpv-faded-cluster-opacity"];var Fr=/^\s*subgraph\s+cluster_[A-Za-z0-9_]+\s*\{\s*$/,zr=/^\s*\}\s*$/;function an(t){let e=t.split(`
4
+ `),n=[],r=0;for(let a of e){if(Fr.test(a)){r++;continue}if(r>0){if(zr.test(a)){r--;continue}(a.includes("[")||a.includes("->"))&&n.push(on(a));continue}if(a.includes("->")&&(a.includes("ltail=")||a.includes("lhead="))){n.push(on(a));continue}n.push(a)}return n.join(`
5
+ `)}function on(t){return t.replace(/,\s*ltail="cluster_[^"]*"/g,"").replace(/,\s*lhead="cluster_[^"]*"/g,"").replace(/\[\s*ltail="cluster_[^"]*"\s*,\s*/g,"[").replace(/\[\s*lhead="cluster_[^"]*"\s*,\s*/g,"[").replace(/\[\s*ltail="cluster_[^"]*"\s*\]/g,"[]").replace(/\[\s*lhead="cluster_[^"]*"\s*\]/g,"[]")}async function Ne(t,e,n={}){let r=n.previousHandle??null,a=r?new Set(r.collapsedPrefixes):new Set,s=r?.activeFilter??null,i=n.subnets??r?.subnets??"show";r&&r.dispose();let c,m=e.querySelector(":scope > svg");if(t==null){if(!(m instanceof SVGSVGElement))throw new Error("mount: no DOT source and no pre-rendered SVG");c=m}else{let h=await Promise.resolve().then(()=>(ln(),sn)),y=(n.layout??"elk")==="elk",L=i==="hide"?an(t):t;c=y?await h.renderDotToSvgWithElkLayout(L):await h.renderDotToSvg(L),e.innerHTML="",e.appendChild(c)}e.classList.add("libpetri-viewer");let l=$t(c,n.panzoom),f=he(c);Yt(f);let v=n.layout??"elk";v==="elk"&&(nn(c),ve(c));let b=new Set,g=null,S=null,x=!1,w=null,E=null,N=!0;function F(){if(!n.chrome||w&&w.parentNode===e)return;w=document.createElement("div"),w.className="libpetri-viewer-chrome",w.style.position="absolute",w.style.inset="0",w.style.pointerEvents="none";let h=document.createElement("div");h.className="diagram-controls",h.style.pointerEvents="auto";let y=document.createElement("button");y.type="button",y.className="diagram-btn btn-reset",y.title="Reset view",y.textContent="Reset",y.addEventListener("click",()=>A.fit());let L=document.createElement("button");L.type="button",L.className="diagram-btn btn-fullscreen",L.title="Toggle fullscreen",L.textContent="Fullscreen",L.addEventListener("click",()=>_(e,L));let V=document.createElement("button");V.type="button",V.className="diagram-btn btn-subnets",V.title=i==="show"?"Hide subnet groupings":"Show subnet groupings",V.textContent=i==="show"?"Flat view":"Subnets view",t==null&&(V.disabled=!0,V.title="Subnet toggle unavailable for pre-rendered SVG"),V.addEventListener("click",()=>{A.toggleSubnets()}),h.appendChild(V),h.appendChild(y),h.appendChild(L),w.appendChild(h),getComputedStyle(e).position==="static"&&(e.style.position="relative"),e.appendChild(w),v==="elk"&&i==="show"&&f.size>0&&(E=Jt(e,f,{onVisibilityChange:T=>A.setVisibility(T),onHighlightModeChange:T=>{N=T,T||A.highlight(null)}}))}function _(h,y){let L=h.classList.toggle("diagram-fullscreen");y.textContent=L?"Exit fullscreen":"Fullscreen",requestAnimationFrame(()=>A.fit())}let A={svg:c,panzoom:l,clusters:f,get collapsedPrefixes(){return b},get activeFilter(){return g},get subnets(){return i},setSubnets(h){return t==null||h===i?Promise.resolve(A):Ne(t,e,{...n,previousHandle:A,subnets:h}).then(y=>(e.dispatchEvent(new CustomEvent("libpetri-viewer:remount",{bubbles:!0,detail:{handle:y,subnets:h}})),y))},toggleSubnets(){return A.setSubnets(i==="show"?"hide":"show")},collapse(h){if(x)return;let y=f.get(h);y&&(b.has(h)||(ee(y,!0),b.add(h),n.onClusterCollapse?.(h,!0)))},expand(h){if(x)return;let y=f.get(h);y&&b.has(h)&&(ee(y,!1),b.delete(h),n.onClusterCollapse?.(h,!1))},collapseAll(){if(!x)for(let h of f.values())b.has(h.prefix)||(ee(h,!0),b.add(h.prefix),n.onClusterCollapse?.(h.prefix,!0))},expandAll(){if(!x)for(let h of Array.from(b)){let y=f.get(h);y&&(ee(y,!1),b.delete(h),n.onClusterCollapse?.(h,!1))}},filter(h){x||(g=h,Ut(c,h),n.onClusterFilter?.(h))},resetZoom(){if(!x)try{l.moveTo(0,0),l.zoomAbs(0,0,1)}catch{}},fit(){if(!x)try{l.zoomAbs(0,0,1),l.moveTo(0,0)}catch{}},isInsideCollapsedCluster(h){return Kt(c,f,b,h)},get highlightedNodeId(){return S},highlight(h){x||v==="elk"&&(S=h,Qt(c,h))},setVisibility(h){x||v==="elk"&&rn(c,h)},dispose(){if(!x){x=!0;try{l.dispose()}catch{}E?.dispose(),E=null,w&&w.parentNode===e&&e.removeChild(w),w=null}}};for(let h of a)A.collapse(h);return s!==null&&A.filter(s),v==="elk"&&c.addEventListener("click",h=>{if(!N)return;let y=h.target;if(!(y instanceof Element))return;let L=y.closest("g.node");if(!L){A.highlight(null);return}let V=L.getAttribute("data-id");V&&A.highlight(V===S?null:V)}),F(),requestAnimationFrame(()=>A.fit()),A}globalThis.LibpetriViewer=Fe;})();
@@ -136,6 +136,13 @@
136
136
  background: #e8e8e8;
137
137
  }
138
138
 
139
+ .petrinet-diagram .diagram-btn:disabled,
140
+ .libpetri-viewer .diagram-btn:disabled {
141
+ opacity: 0.5;
142
+ cursor: not-allowed;
143
+ background: white;
144
+ }
145
+
139
146
  .petrinet-diagram details {
140
147
  padding: 0 16px 16px;
141
148
  }