@miadi/stateloom-web 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/server/.next/BUILD_ID +1 -1
- package/server/.next/build-manifest.json +2 -2
- package/server/.next/prerender-manifest.json +3 -3
- package/server/.next/server/app/_global-error.html +2 -2
- package/server/.next/server/app/_global-error.rsc +1 -1
- package/server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/server/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/server/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/server/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/server/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/server/.next/server/app/_not-found.html +1 -1
- package/server/.next/server/app/_not-found.rsc +2 -2
- package/server/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/server/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/server/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/server/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/server/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/server/.next/server/app/api/docs/route.js.nft.json +1 -1
- package/server/.next/server/app/api/file/route.js.nft.json +1 -1
- package/server/.next/server/app/api/rispec/route.js.nft.json +1 -1
- package/server/.next/server/app/api/watch/route.js.nft.json +1 -1
- package/server/.next/server/app/index.html +1 -1
- package/server/.next/server/app/index.rsc +3 -3
- package/server/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/server/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/server/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/server/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/server/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/server/.next/server/app/page.js.nft.json +1 -1
- package/server/.next/server/app/page_client-reference-manifest.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__13c3d2a8._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__2046b812._.js +2 -2
- package/server/.next/server/chunks/[root-of-the-server]__87bf4b91._.js +1 -1
- package/server/.next/server/chunks/[root-of-the-server]__95b05635._.js +2 -2
- package/server/.next/server/chunks/ssr/{[root-of-the-server]__2b35b711._.js → [root-of-the-server]__df915e74._.js} +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__edbb995c._.js +3 -3
- package/server/.next/server/pages/404.html +1 -1
- package/server/.next/server/pages/500.html +2 -2
- package/server/.next/server/server-reference-manifest.js +1 -1
- package/server/.next/server/server-reference-manifest.json +1 -1
- package/server/.next/static/chunks/3dc2436b75e43174.css +2 -0
- package/server/.next/static/chunks/e7adb06692216348.js +10 -0
- package/server/package-lock.json +2 -2
- package/server/package.json +1 -1
- package/server/src/app/page.tsx +31 -1
- package/server/src/components/erd/ErdWorkspace.tsx +502 -0
- package/server/src/lib/projectFile.ts +5 -7
- package/server/stateloom-web.json +2 -2
- package/server/tsconfig.tsbuildinfo +1 -1
- package/server/.next/static/chunks/1cbe108679f9af04.css +0 -2
- package/server/.next/static/chunks/8ff30b68acab2d20.js +0 -10
- /package/server/.next/static/{MpwR1y8jNIjcY-QAij3pD → 6GrzDGxArqw_jZoajUQwk}/_buildManifest.js +0 -0
- /package/server/.next/static/{MpwR1y8jNIjcY-QAij3pD → 6GrzDGxArqw_jZoajUQwk}/_clientMiddlewareManifest.json +0 -0
- /package/server/.next/static/{MpwR1y8jNIjcY-QAij3pD → 6GrzDGxArqw_jZoajUQwk}/_ssgManifest.js +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
module.exports=[92509,(a,b,c)=>{b.exports=a.x("url",()=>require("url"))},21517,(a,b,c)=>{b.exports=a.x("http",()=>require("http"))},24836,(a,b,c)=>{b.exports=a.x("https",()=>require("https"))},53681,(a,b,c)=>{var d=a.r(22734),e=a.r(92509),f=a.r(33405).spawn;function g(b){"use strict";b=b||{};var c,g,h=this,i=a.r(21517),j=a.r(24836),k={},l=!1,m={"User-Agent":"node-XMLHttpRequest",Accept:"*/*"},n=Object.assign({},m),o=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","content-transfer-encoding","cookie","cookie2","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","via"],p=["TRACE","TRACK","CONNECT"],q=!1,r=!1,s=!1,t={};this.UNSENT=0,this.OPENED=1,this.HEADERS_RECEIVED=2,this.LOADING=3,this.DONE=4,this.readyState=this.UNSENT,this.onreadystatechange=null,this.responseText="",this.responseXML="",this.response=Buffer.alloc(0),this.status=null,this.statusText=null,this.open=function(a,b,c,d,e){if(this.abort(),r=!1,s=!1,!(a&&-1===p.indexOf(a)))throw Error("SecurityError: Request method not allowed");k={method:a,url:b.toString(),async:"boolean"!=typeof c||c,user:d||null,password:e||null},u(this.OPENED)},this.setDisableHeaderCheck=function(a){l=a},this.setRequestHeader=function(a,b){if(this.readyState!=this.OPENED)throw Error("INVALID_STATE_ERR: setRequestHeader can only be called when state is OPEN");if(!l&&(!a||-1!==o.indexOf(a.toLowerCase())))return console.warn('Refused to set unsafe header "'+a+'"'),!1;if(q)throw Error("INVALID_STATE_ERR: send flag is true");return n[a]=b,!0},this.getResponseHeader=function(a){return"string"==typeof a&&this.readyState>this.OPENED&&g.headers[a.toLowerCase()]&&!r?g.headers[a.toLowerCase()]:null},this.getAllResponseHeaders=function(){if(this.readyState<this.HEADERS_RECEIVED||r)return"";var a="";for(var b in g.headers)"set-cookie"!==b&&"set-cookie2"!==b&&(a+=b+": "+g.headers[b]+"\r\n");return a.substr(0,a.length-2)},this.getRequestHeader=function(a){return"string"==typeof a&&n[a]?n[a]:""},this.send=function(a){if(this.readyState!=this.OPENED)throw Error("INVALID_STATE_ERR: connection must be opened before send() is called");if(q)throw Error("INVALID_STATE_ERR: send has already been called");var l,m=!1,o=!1,p=e.parse(k.url);switch(p.protocol){case"https:":m=!0;case"http:":l=p.hostname;break;case"file:":o=!0;break;case void 0:case"":l="localhost";break;default:throw Error("Protocol not supported.")}if(o){if("GET"!==k.method)throw Error("XMLHttpRequest: Only GET method is supported");if(k.async)d.readFile(unescape(p.pathname),function(a,b){a?h.handleError(a,a.errno||-1):(h.status=200,h.responseText=b.toString("utf8"),h.response=b,u(h.DONE))});else try{this.response=d.readFileSync(unescape(p.pathname)),this.responseText=this.response.toString("utf8"),this.status=200,u(h.DONE)}catch(a){this.handleError(a,a.errno||-1)}return}var s=p.port||(m?443:80),t=p.pathname+(p.search?p.search:"");if(n.Host=l,m&&443===s||80===s||(n.Host+=":"+p.port),k.user){void 0===k.password&&(k.password="");var v=new Buffer(k.user+":"+k.password);n.Authorization="Basic "+v.toString("base64")}"GET"===k.method||"HEAD"===k.method?a=null:a?(n["Content-Length"]=Buffer.isBuffer(a)?a.length:Buffer.byteLength(a),Object.keys(n).some(function(a){return"content-type"===a.toLowerCase()})||(n["Content-Type"]="text/plain;charset=UTF-8")):"POST"===k.method&&(n["Content-Length"]=0);var w=b.agent||!1,x={host:l,port:s,path:t,method:k.method,headers:n,agent:w};if(m&&(x.pfx=b.pfx,x.key=b.key,x.passphrase=b.passphrase,x.cert=b.cert,x.ca=b.ca,x.ciphers=b.ciphers,x.rejectUnauthorized=!1!==b.rejectUnauthorized),r=!1,k.async){var y=m?j.request:i.request;q=!0,h.dispatchEvent("readystatechange");var z=function(a){if(302===(g=a).statusCode||303===g.statusCode||307===g.statusCode){k.url=g.headers.location;var d=e.parse(k.url);l=d.hostname;var f={hostname:d.hostname,port:d.port,path:d.path,method:303===g.statusCode?"GET":k.method,headers:n};m&&(f.pfx=b.pfx,f.key=b.key,f.passphrase=b.passphrase,f.cert=b.cert,f.ca=b.ca,f.ciphers=b.ciphers,f.rejectUnauthorized=!1!==b.rejectUnauthorized),(c=y(f,z).on("error",A)).end();return}u(h.HEADERS_RECEIVED),h.status=g.statusCode,g.on("data",function(a){if(a){var b=Buffer.from(a);h.response=Buffer.concat([h.response,b])}q&&u(h.LOADING)}),g.on("end",function(){q&&(q=!1,u(h.DONE),h.responseText=h.response.toString("utf8"))}),g.on("error",function(a){h.handleError(a)})},A=function(a){if(c.reusedSocket&&"ECONNRESET"===a.code)return y(x,z).on("error",A);h.handleError(a)};c=y(x,z).on("error",A),b.autoUnref&&c.on("socket",a=>{a.unref()}),a&&c.write(a),c.end(),h.dispatchEvent("loadstart")}else{var B=".node-xmlhttprequest-content-"+process.pid,C=".node-xmlhttprequest-sync-"+process.pid;d.writeFileSync(C,"","utf8");for(var D="var http = require('http'), https = require('https'), fs = require('fs');var doRequest = http"+(m?"s":"")+".request;var options = "+JSON.stringify(x)+";var responseText = '';var responseData = Buffer.alloc(0);var req = doRequest(options, function(response) {response.on('data', function(chunk) { var data = Buffer.from(chunk); responseText += data.toString('utf8'); responseData = Buffer.concat([responseData, data]);});response.on('end', function() {fs.writeFileSync('"+B+"', JSON.stringify({err: null, data: {statusCode: response.statusCode, headers: response.headers, text: responseText, data: responseData.toString('base64')}}), 'utf8');fs.unlinkSync('"+C+"');});response.on('error', function(error) {fs.writeFileSync('"+B+"', 'NODE-XMLHTTPREQUEST-ERROR:' + JSON.stringify(error), 'utf8');fs.unlinkSync('"+C+"');});}).on('error', function(error) {fs.writeFileSync('"+B+"', 'NODE-XMLHTTPREQUEST-ERROR:' + JSON.stringify(error), 'utf8');fs.unlinkSync('"+C+"');});"+(a?"req.write('"+JSON.stringify(a).slice(1,-1).replace(/'/g,"\\'")+"');":"")+"req.end();",E=f(process.argv[0],["-e",D]);d.existsSync(C););if(h.responseText=d.readFileSync(B,"utf8"),E.stdin.end(),d.unlinkSync(B),h.responseText.match(/^NODE-XMLHTTPREQUEST-ERROR:/)){var F=JSON.parse(h.responseText.replace(/^NODE-XMLHTTPREQUEST-ERROR:/,""));h.handleError(F,503)}else{h.status=h.responseText.replace(/^NODE-XMLHTTPREQUEST-STATUS:([0-9]*),.*/,"$1");var G=JSON.parse(h.responseText.replace(/^NODE-XMLHTTPREQUEST-STATUS:[0-9]*,(.*)/,"$1"));g={statusCode:h.status,headers:G.data.headers},h.responseText=G.data.text,h.response=Buffer.from(G.data.data,"base64"),u(h.DONE,!0)}}},this.handleError=function(a,b){this.status=b||0,this.statusText=a,this.responseText=a.stack,r=!0,u(this.DONE)},this.abort=function(){c&&(c.abort(),c=null),n=Object.assign({},m),this.responseText="",this.responseXML="",this.response=Buffer.alloc(0),r=s=!0,this.readyState!==this.UNSENT&&(this.readyState!==this.OPENED||q)&&this.readyState!==this.DONE&&(q=!1,u(this.DONE)),this.readyState=this.UNSENT},this.addEventListener=function(a,b){a in t||(t[a]=[]),t[a].push(b)},this.removeEventListener=function(a,b){a in t&&(t[a]=t[a].filter(function(a){return a!==b}))},this.dispatchEvent=function(a){if("function"==typeof h["on"+a]&&(this.readyState===this.DONE&&k.async?setTimeout(function(){h["on"+a]()},0):h["on"+a]()),a in t)for(let b=0,c=t[a].length;b<c;b++)this.readyState===this.DONE?setTimeout(function(){t[a][b].call(h)},0):t[a][b].call(h)};var u=function(a){if(h.readyState!==a&&(h.readyState!==h.UNSENT||!s)&&(h.readyState=a,(k.async||h.readyState<h.OPENED||h.readyState===h.DONE)&&h.dispatchEvent("readystatechange"),h.readyState===h.DONE)){let a;a=s?"abort":r?"error":"load",h.dispatchEvent(a),h.dispatchEvent("loadend")}}}b.exports=g,g.XMLHttpRequest=g},90538,(a,b,c)=>{function d(a,b,c,d){return Math.round(a/c)+" "+d+(b>=1.5*c?"s":"")}b.exports=function(a,b){b=b||{};var c,e,f,g,h=typeof a;if("string"===h&&a.length>0){var i=a;if(!((i=String(i)).length>100)){var j=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(i);if(j){var k=parseFloat(j[1]);switch((j[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*k;case"weeks":case"week":case"w":return 6048e5*k;case"days":case"day":case"d":return 864e5*k;case"hours":case"hour":case"hrs":case"hr":case"h":return 36e5*k;case"minutes":case"minute":case"mins":case"min":case"m":return 6e4*k;case"seconds":case"second":case"secs":case"sec":case"s":return 1e3*k;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return k;default:break}}}return}if("number"===h&&isFinite(a)){return b.long?(e=Math.abs(c=a))>=864e5?d(c,e,864e5,"day"):e>=36e5?d(c,e,36e5,"hour"):e>=6e4?d(c,e,6e4,"minute"):e>=1e3?d(c,e,1e3,"second"):c+" ms":(g=Math.abs(f=a))>=864e5?Math.round(f/864e5)+"d":g>=36e5?Math.round(f/36e5)+"h":g>=6e4?Math.round(f/6e4)+"m":g>=1e3?Math.round(f/1e3)+"s":f+"ms"}throw Error("val is not a non-empty string or a valid number. val="+JSON.stringify(a))}},58449,(a,b,c)=>{b.exports=function(b){function c(a){let b,e,f,g=null;function h(...a){if(!h.enabled)return;let d=Number(new Date);h.diff=d-(b||d),h.prev=b,h.curr=d,b=d,a[0]=c.coerce(a[0]),"string"!=typeof a[0]&&a.unshift("%O");let e=0;a[0]=a[0].replace(/%([a-zA-Z%])/g,(b,d)=>{if("%%"===b)return"%";e++;let f=c.formatters[d];if("function"==typeof f){let c=a[e];b=f.call(h,c),a.splice(e,1),e--}return b}),c.formatArgs.call(h,a),(h.log||c.log).apply(h,a)}return h.namespace=a,h.useColors=c.useColors(),h.color=c.selectColor(a),h.extend=d,h.destroy=c.destroy,Object.defineProperty(h,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==g?g:(e!==c.namespaces&&(e=c.namespaces,f=c.enabled(a)),f),set:a=>{g=a}}),"function"==typeof c.init&&c.init(h),h}function d(a,b){let d=c(this.namespace+(void 0===b?":":b)+a);return d.log=this.log,d}function e(a,b){let c=0,d=0,e=-1,f=0;for(;c<a.length;)if(d<b.length&&(b[d]===a[c]||"*"===b[d]))"*"===b[d]?(e=d,f=c):c++,d++;else{if(-1===e)return!1;d=e+1,c=++f}for(;d<b.length&&"*"===b[d];)d++;return d===b.length}return c.debug=c,c.default=c,c.coerce=function(a){return a instanceof Error?a.stack||a.message:a},c.disable=function(){let a=[...c.names,...c.skips.map(a=>"-"+a)].join(",");return c.enable(""),a},c.enable=function(a){for(let b of(c.save(a),c.namespaces=a,c.names=[],c.skips=[],("string"==typeof a?a:"").trim().replace(/\s+/g,",").split(",").filter(Boolean)))"-"===b[0]?c.skips.push(b.slice(1)):c.names.push(b)},c.enabled=function(a){for(let b of c.skips)if(e(a,b))return!1;for(let b of c.names)if(e(a,b))return!0;return!1},c.humanize=a.r(90538),c.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(b).forEach(a=>{c[a]=b[a]}),c.names=[],c.skips=[],c.formatters={},c.selectColor=function(a){let b=0;for(let c=0;c<a.length;c++)b=(b<<5)-b+a.charCodeAt(c)|0;return c.colors[Math.abs(b)%c.colors.length]},c.enable(c.load()),c}},70722,(a,b,c)=>{b.exports=a.x("tty",()=>require("tty"))},9031,(a,b,c)=>{let d=a.r(70722),e=a.r(24361);c.init=function(a){a.inspectOpts={};let b=Object.keys(c.inspectOpts);for(let d=0;d<b.length;d++)a.inspectOpts[b[d]]=c.inspectOpts[b[d]]},c.log=function(...a){return process.stderr.write(e.formatWithOptions(c.inspectOpts,...a)+"\n")},c.formatArgs=function(a){let{namespace:d,useColors:e}=this;if(e){let c=this.color,e="\x1b[3"+(c<8?c:"8;5;"+c),f=` ${e};1m${d} \u001B[0m`;a[0]=f+a[0].split("\n").join("\n"+f),a.push(e+"m+"+b.exports.humanize(this.diff)+"\x1b[0m")}else a[0]=(c.inspectOpts.hideDate?"":new Date().toISOString()+" ")+d+" "+a[0]},c.save=function(a){a?process.env.DEBUG=a:delete process.env.DEBUG},c.load=function(){return process.env.DEBUG},c.useColors=function(){return"colors"in c.inspectOpts?!!c.inspectOpts.colors:d.isatty(process.stderr.fd)},c.destroy=e.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),c.colors=[6,2,3,4,5,1];try{let a=(()=>{let a=Error("Cannot find module 'supports-color'");throw a.code="MODULE_NOT_FOUND",a})();a&&(a.stderr||a).level>=2&&(c.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(a){}c.inspectOpts=Object.keys(process.env).filter(a=>/^debug_/i.test(a)).reduce((a,b)=>{let c=b.substring(6).toLowerCase().replace(/_([a-z])/g,(a,b)=>b.toUpperCase()),d=process.env[b];return d=!!/^(yes|on|true|enabled)$/i.test(d)||!/^(no|off|false|disabled)$/i.test(d)&&("null"===d?null:Number(d)),a[c]=d,a},{}),b.exports=a.r(58449)(c);let{formatters:f}=b.exports;f.o=function(a){return this.inspectOpts.colors=this.useColors,e.inspect(a,this.inspectOpts).split("\n").map(a=>a.trim()).join(" ")},f.O=function(a){return this.inspectOpts.colors=this.useColors,e.inspect(a,this.inspectOpts)}},83021,(a,b,c)=>{let d;c.formatArgs=function(a){if(a[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+a[0]+(this.useColors?"%c ":" ")+"+"+b.exports.humanize(this.diff),!this.useColors)return;let c="color: "+this.color;a.splice(1,0,c,"color: inherit");let d=0,e=0;a[0].replace(/%[a-zA-Z%]/g,a=>{"%%"!==a&&(d++,"%c"===a&&(e=d))}),a.splice(e,0,c)},c.save=function(a){try{a?c.storage.setItem("debug",a):c.storage.removeItem("debug")}catch(a){}},c.load=function(){let a;try{a=c.storage.getItem("debug")||c.storage.getItem("DEBUG")}catch(a){}return!a&&"u">typeof process&&"env"in process&&(a=process.env.DEBUG),a},c.useColors=function(){let a;return!("u">typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("u">typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"u">typeof navigator&&navigator.userAgent&&(a=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(a[1],10)>=31||"u">typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},c.storage=function(){try{return localStorage}catch(a){}}(),d=!1,c.destroy=()=>{d||(d=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))},c.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],c.log=console.debug||console.log||(()=>{}),b.exports=a.r(58449)(c);let{formatters:e}=b.exports;e.j=function(a){try{return JSON.stringify(a)}catch(a){return"[UnexpectedJSONParseError]: "+a.message}}},72724,(a,b,c)=>{"u"<typeof process||"renderer"===process.type||process.__nwjs?b.exports=a.r(83021):b.exports=a.r(9031)},27699,(a,b,c)=>{b.exports=a.x("events",()=>require("events"))},4446,(a,b,c)=>{b.exports=a.x("net",()=>require("net"))},55004,(a,b,c)=>{b.exports=a.x("tls",()=>require("tls"))},54799,(a,b,c)=>{b.exports=a.x("crypto",()=>require("crypto"))},88947,(a,b,c)=>{b.exports=a.x("stream",()=>require("stream"))},6461,(a,b,c)=>{b.exports=a.x("zlib",()=>require("zlib"))},63046,(a,b,c)=>{"use strict";let d=["nodebuffer","arraybuffer","fragments"],e="u">typeof Blob;e&&d.push("blob"),b.exports={BINARY_TYPES:d,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:e,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}},40338,(a,b,c)=>{"use strict";let{EMPTY_BUFFER:d}=a.r(63046),e=Buffer[Symbol.species];function f(a,b,c,d,e){for(let f=0;f<e;f++)c[d+f]=a[f]^b[3&f]}function g(a,b){for(let c=0;c<a.length;c++)a[c]^=b[3&c]}function h(a){let b;return(h.readOnly=!0,Buffer.isBuffer(a))?a:(a instanceof ArrayBuffer?b=new e(a):ArrayBuffer.isView(a)?b=new e(a.buffer,a.byteOffset,a.byteLength):(b=Buffer.from(a),h.readOnly=!1),b)}if(b.exports={concat:function(a,b){if(0===a.length)return d;if(1===a.length)return a[0];let c=Buffer.allocUnsafe(b),f=0;for(let b=0;b<a.length;b++){let d=a[b];c.set(d,f),f+=d.length}return f<b?new e(c.buffer,c.byteOffset,f):c},mask:f,toArrayBuffer:function(a){return a.length===a.buffer.byteLength?a.buffer:a.buffer.slice(a.byteOffset,a.byteOffset+a.length)},toBuffer:h,unmask:g},!process.env.WS_NO_BUFFER_UTIL)try{let a=(()=>{let a=Error("Cannot find module 'bufferutil'");throw a.code="MODULE_NOT_FOUND",a})();b.exports.mask=function(b,c,d,e,g){g<48?f(b,c,d,e,g):a.mask(b,c,d,e,g)},b.exports.unmask=function(b,c){b.length<32?g(b,c):a.unmask(b,c)}}catch(a){}},14025,(a,b,c)=>{"use strict";let d=Symbol("kDone"),e=Symbol("kRun");b.exports=class{constructor(a){this[d]=()=>{this.pending--,this[e]()},this.concurrency=a||1/0,this.jobs=[],this.pending=0}add(a){this.jobs.push(a),this[e]()}[e](){if(this.pending!==this.concurrency&&this.jobs.length){let a=this.jobs.shift();this.pending++,a(this[d])}}}},31276,(a,b,c)=>{"use strict";let d,e=a.r(6461),f=a.r(40338),g=a.r(14025),{kStatusCode:h}=a.r(63046),i=Buffer[Symbol.species],j=Buffer.from([0,0,255,255]),k=Symbol("permessage-deflate"),l=Symbol("total-length"),m=Symbol("callback"),n=Symbol("buffers"),o=Symbol("error");function p(a){this[n].push(a),this[l]+=a.length}function q(a){(this[l]+=a.length,this[k]._maxPayload<1||this[l]<=this[k]._maxPayload)?this[n].push(a):(this[o]=RangeError("Max payload size exceeded"),this[o].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[o][h]=1009,this.removeListener("data",q),this.reset())}function r(a){(this[k]._inflate=null,this[o])?this[m](this[o]):(a[h]=1007,this[m](a))}b.exports=class{constructor(a){this._options=a||{},this._threshold=void 0!==this._options.threshold?this._options.threshold:1024,this._maxPayload=0|this._options.maxPayload,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,d||(d=new g(void 0!==this._options.concurrencyLimit?this._options.concurrencyLimit:10))}static get extensionName(){return"permessage-deflate"}offer(){let a={};return this._options.serverNoContextTakeover&&(a.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(a.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(a.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?a.client_max_window_bits=this._options.clientMaxWindowBits:null==this._options.clientMaxWindowBits&&(a.client_max_window_bits=!0),a}accept(a){return a=this.normalizeParams(a),this.params=this._isServer?this.acceptAsServer(a):this.acceptAsClient(a),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let a=this._deflate[m];this._deflate.close(),this._deflate=null,a&&a(Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(a){let b=this._options,c=a.find(a=>(!1!==b.serverNoContextTakeover||!a.server_no_context_takeover)&&(!a.server_max_window_bits||!1!==b.serverMaxWindowBits&&("number"!=typeof b.serverMaxWindowBits||!(b.serverMaxWindowBits>a.server_max_window_bits)))&&("number"!=typeof b.clientMaxWindowBits||!!a.client_max_window_bits));if(!c)throw Error("None of the extension offers can be accepted");return b.serverNoContextTakeover&&(c.server_no_context_takeover=!0),b.clientNoContextTakeover&&(c.client_no_context_takeover=!0),"number"==typeof b.serverMaxWindowBits&&(c.server_max_window_bits=b.serverMaxWindowBits),"number"==typeof b.clientMaxWindowBits?c.client_max_window_bits=b.clientMaxWindowBits:(!0===c.client_max_window_bits||!1===b.clientMaxWindowBits)&&delete c.client_max_window_bits,c}acceptAsClient(a){let b=a[0];if(!1===this._options.clientNoContextTakeover&&b.client_no_context_takeover)throw Error('Unexpected parameter "client_no_context_takeover"');if(b.client_max_window_bits){if(!1===this._options.clientMaxWindowBits||"number"==typeof this._options.clientMaxWindowBits&&b.client_max_window_bits>this._options.clientMaxWindowBits)throw Error('Unexpected or invalid parameter "client_max_window_bits"')}else"number"==typeof this._options.clientMaxWindowBits&&(b.client_max_window_bits=this._options.clientMaxWindowBits);return b}normalizeParams(a){return a.forEach(a=>{Object.keys(a).forEach(b=>{let c=a[b];if(c.length>1)throw Error(`Parameter "${b}" must have only a single value`);if(c=c[0],"client_max_window_bits"===b){if(!0!==c){let a=+c;if(!Number.isInteger(a)||a<8||a>15)throw TypeError(`Invalid value for parameter "${b}": ${c}`);c=a}else if(!this._isServer)throw TypeError(`Invalid value for parameter "${b}": ${c}`)}else if("server_max_window_bits"===b){let a=+c;if(!Number.isInteger(a)||a<8||a>15)throw TypeError(`Invalid value for parameter "${b}": ${c}`);c=a}else if("client_no_context_takeover"===b||"server_no_context_takeover"===b){if(!0!==c)throw TypeError(`Invalid value for parameter "${b}": ${c}`)}else throw Error(`Unknown parameter "${b}"`);a[b]=c})}),a}decompress(a,b,c){d.add(d=>{this._decompress(a,b,(a,b)=>{d(),c(a,b)})})}compress(a,b,c){d.add(d=>{this._compress(a,b,(a,b)=>{d(),c(a,b)})})}_decompress(a,b,c){let d=this._isServer?"client":"server";if(!this._inflate){let a=`${d}_max_window_bits`,b="number"!=typeof this.params[a]?e.Z_DEFAULT_WINDOWBITS:this.params[a];this._inflate=e.createInflateRaw({...this._options.zlibInflateOptions,windowBits:b}),this._inflate[k]=this,this._inflate[l]=0,this._inflate[n]=[],this._inflate.on("error",r),this._inflate.on("data",q)}this._inflate[m]=c,this._inflate.write(a),b&&this._inflate.write(j),this._inflate.flush(()=>{let a=this._inflate[o];if(a){this._inflate.close(),this._inflate=null,c(a);return}let e=f.concat(this._inflate[n],this._inflate[l]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[l]=0,this._inflate[n]=[],b&&this.params[`${d}_no_context_takeover`]&&this._inflate.reset()),c(null,e)})}_compress(a,b,c){let d=this._isServer?"server":"client";if(!this._deflate){let a=`${d}_max_window_bits`,b="number"!=typeof this.params[a]?e.Z_DEFAULT_WINDOWBITS:this.params[a];this._deflate=e.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:b}),this._deflate[l]=0,this._deflate[n]=[],this._deflate.on("data",p)}this._deflate[m]=c,this._deflate.write(a),this._deflate.flush(e.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let a=f.concat(this._deflate[n],this._deflate[l]);b&&(a=new i(a.buffer,a.byteOffset,a.length-4)),this._deflate[m]=null,this._deflate[l]=0,this._deflate[n]=[],b&&this.params[`${d}_no_context_takeover`]&&this._deflate.reset(),c(null,a)})}}},874,(a,b,c)=>{b.exports=a.x("buffer",()=>require("buffer"))},42673,(a,b,c)=>{"use strict";let{isUtf8:d}=a.r(874),{hasBlob:e}=a.r(63046);function f(a){let b=a.length,c=0;for(;c<b;)if((128&a[c])==0)c++;else if((224&a[c])==192){if(c+1===b||(192&a[c+1])!=128||(254&a[c])==192)return!1;c+=2}else if((240&a[c])==224){if(c+2>=b||(192&a[c+1])!=128||(192&a[c+2])!=128||224===a[c]&&(224&a[c+1])==128||237===a[c]&&(224&a[c+1])==160)return!1;c+=3}else{if((248&a[c])!=240||c+3>=b||(192&a[c+1])!=128||(192&a[c+2])!=128||(192&a[c+3])!=128||240===a[c]&&(240&a[c+1])==128||244===a[c]&&a[c+1]>143||a[c]>244)return!1;c+=4}return!0}if(b.exports={isBlob:function(a){return e&&"object"==typeof a&&"function"==typeof a.arrayBuffer&&"string"==typeof a.type&&"function"==typeof a.stream&&("Blob"===a[Symbol.toStringTag]||"File"===a[Symbol.toStringTag])},isValidStatusCode:function(a){return a>=1e3&&a<=1014&&1004!==a&&1005!==a&&1006!==a||a>=3e3&&a<=4999},isValidUTF8:f,tokenChars:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0]},d)b.exports.isValidUTF8=function(a){return a.length<24?f(a):d(a)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let a=(()=>{let a=Error("Cannot find module 'utf-8-validate'");throw a.code="MODULE_NOT_FOUND",a})();b.exports.isValidUTF8=function(b){return b.length<32?f(b):a(b)}}catch(a){}},28719,(a,b,c)=>{"use strict";let{Writable:d}=a.r(88947),e=a.r(31276),{BINARY_TYPES:f,EMPTY_BUFFER:g,kStatusCode:h,kWebSocket:i}=a.r(63046),{concat:j,toArrayBuffer:k,unmask:l}=a.r(40338),{isValidStatusCode:m,isValidUTF8:n}=a.r(42673),o=Buffer[Symbol.species];b.exports=class extends d{constructor(a={}){super(),this._allowSynchronousEvents=void 0===a.allowSynchronousEvents||a.allowSynchronousEvents,this._binaryType=a.binaryType||f[0],this._extensions=a.extensions||{},this._isServer=!!a.isServer,this._maxBufferedChunks=0|a.maxBufferedChunks,this._maxFragments=0|a.maxFragments,this._maxPayload=0|a.maxPayload,this._skipUTF8Validation=!!a.skipUTF8Validation,this[i]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._numFragments=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=0}_write(a,b,c){return 8===this._opcode&&0==this._state?c():this._maxBufferedChunks>0&&this._buffers.length>=this._maxBufferedChunks?void c(this.createError(RangeError,"Too many buffered chunks",!1,1008,"WS_ERR_TOO_MANY_BUFFERED_PARTS")):void(this._bufferedBytes+=a.length,this._buffers.push(a),this.startLoop(c))}consume(a){if(this._bufferedBytes-=a,a===this._buffers[0].length)return this._buffers.shift();if(a<this._buffers[0].length){let b=this._buffers[0];return this._buffers[0]=new o(b.buffer,b.byteOffset+a,b.length-a),new o(b.buffer,b.byteOffset,a)}let b=Buffer.allocUnsafe(a);do{let c=this._buffers[0],d=b.length-a;a>=c.length?b.set(this._buffers.shift(),d):(b.set(new Uint8Array(c.buffer,c.byteOffset,a),d),this._buffers[0]=new o(c.buffer,c.byteOffset+a,c.length-a)),a-=c.length}while(a>0)return b}startLoop(a){this._loop=!0;do switch(this._state){case 0:this.getInfo(a);break;case 1:this.getPayloadLength16(a);break;case 2:this.getPayloadLength64(a);break;case 3:this.getMask();break;case 4:this.getData(a);break;case 5:case 6:this._loop=!1;return}while(this._loop)this._errored||a()}getInfo(a){if(this._bufferedBytes<2){this._loop=!1;return}let b=this.consume(2);if((48&b[0])!=0)return void a(this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3"));let c=(64&b[0])==64;if(c&&!this._extensions[e.extensionName])return void a(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"));if(this._fin=(128&b[0])==128,this._opcode=15&b[0],this._payloadLength=127&b[1],0===this._opcode){if(c)return void a(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"));if(!this._fragmented)return void a(this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE"));this._opcode=this._fragmented}else if(1===this._opcode||2===this._opcode){if(this._fragmented)return void a(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE"));this._compressed=c}else{if(!(this._opcode>7)||!(this._opcode<11))return void a(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE"));if(!this._fin)return void a(this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN"));if(c)return void a(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"));if(this._payloadLength>125||8===this._opcode&&1===this._payloadLength)return void a(this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH"))}if(this._fin||this._fragmented||(this._fragmented=this._opcode),this._masked=(128&b[1])==128,this._isServer){if(!this._masked)return void a(this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK"))}else if(this._masked)return void a(this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK"));126===this._payloadLength?this._state=1:127===this._payloadLength?this._state=2:this.haveLength(a)}getPayloadLength16(a){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(a)}getPayloadLength64(a){if(this._bufferedBytes<8){this._loop=!1;return}let b=this.consume(8),c=b.readUInt32BE(0);c>2097151?a(this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH")):(this._payloadLength=0x100000000*c+b.readUInt32BE(4),this.haveLength(a))}haveLength(a){this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)?a(this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH")):this._masked?this._state=3:this._state=4}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=4}getData(a){let b=g;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}b=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!=0&&l(b,this._mask)}if(this._opcode>7)return void this.controlMessage(b,a);if(this._maxFragments>0&&++this._numFragments>this._maxFragments)return void a(this.createError(RangeError,"Too many message fragments",!1,1008,"WS_ERR_TOO_MANY_BUFFERED_PARTS"));if(this._compressed){this._state=5,this.decompress(b,a);return}b.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(b)),this.dataMessage(a)}decompress(a,b){this._extensions[e.extensionName].decompress(a,this._fin,(a,c)=>{if(a)return b(a);if(c.length){if(this._messageLength+=c.length,this._messageLength>this._maxPayload&&this._maxPayload>0)return void b(this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"));this._fragments.push(c)}this.dataMessage(b),0===this._state&&this.startLoop(b)})}dataMessage(a){if(!this._fin){this._state=0;return}let b=this._messageLength,c=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._numFragments=0,this._fragments=[],2===this._opcode){let d;d="nodebuffer"===this._binaryType?j(c,b):"arraybuffer"===this._binaryType?k(j(c,b)):"blob"===this._binaryType?new Blob(c):c,this._allowSynchronousEvents?(this.emit("message",d,!0),this._state=0):(this._state=6,setImmediate(()=>{this.emit("message",d,!0),this._state=0,this.startLoop(a)}))}else{let d=j(c,b);if(!this._skipUTF8Validation&&!n(d))return void a(this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8"));5===this._state||this._allowSynchronousEvents?(this.emit("message",d,!1),this._state=0):(this._state=6,setImmediate(()=>{this.emit("message",d,!1),this._state=0,this.startLoop(a)}))}}controlMessage(a,b){if(8===this._opcode){if(0===a.length)this._loop=!1,this.emit("conclude",1005,g),this.end();else{let c=a.readUInt16BE(0);if(!m(c))return void b(this.createError(RangeError,`invalid status code ${c}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE"));let d=new o(a.buffer,a.byteOffset+2,a.length-2);if(!this._skipUTF8Validation&&!n(d))return void b(this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8"));this._loop=!1,this.emit("conclude",c,d),this.end()}this._state=0;return}this._allowSynchronousEvents?(this.emit(9===this._opcode?"ping":"pong",a),this._state=0):(this._state=6,setImmediate(()=>{this.emit(9===this._opcode?"ping":"pong",a),this._state=0,this.startLoop(b)}))}createError(a,b,c,d,e){this._loop=!1,this._errored=!0;let f=new a(c?`Invalid WebSocket frame: ${b}`:b);return Error.captureStackTrace(f,this.createError),f.code=e,f[h]=d,f}}},63349,(a,b,c)=>{"use strict";let d,{Duplex:e}=a.r(88947),{randomFillSync:f}=a.r(54799),{types:{isUint8Array:g}}=a.r(24361),h=a.r(31276),{EMPTY_BUFFER:i,kWebSocket:j,NOOP:k}=a.r(63046),{isBlob:l,isValidStatusCode:m}=a.r(42673),{mask:n,toBuffer:o}=a.r(40338),p=Symbol("kByteLength"),q=Buffer.alloc(4),r=8192;class s{constructor(a,b,c){this._extensions=b||{},c&&(this._generateMask=c,this._maskBuffer=Buffer.alloc(4)),this._socket=a,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=0,this.onerror=k,this[j]=void 0}static frame(a,b){let c,e,g=!1,h=2,i=!1;b.mask&&(c=b.maskBuffer||q,b.generateMask?b.generateMask(c):(8192===r&&(void 0===d&&(d=Buffer.alloc(8192)),f(d,0,8192),r=0),c[0]=d[r++],c[1]=d[r++],c[2]=d[r++],c[3]=d[r++]),i=(c[0]|c[1]|c[2]|c[3])==0,h=6),"string"==typeof a?e=(!b.mask||i)&&void 0!==b[p]?b[p]:(a=Buffer.from(a)).length:(e=a.length,g=b.mask&&b.readOnly&&!i);let j=e;e>=65536?(h+=8,j=127):e>125&&(h+=2,j=126);let k=Buffer.allocUnsafe(g?e+h:h);return(k[0]=b.fin?128|b.opcode:b.opcode,b.rsv1&&(k[0]|=64),k[1]=j,126===j?k.writeUInt16BE(e,2):127===j&&(k[2]=k[3]=0,k.writeUIntBE(e,4,6)),b.mask)?(k[1]|=128,k[h-4]=c[0],k[h-3]=c[1],k[h-2]=c[2],k[h-1]=c[3],i)?[k,a]:g?(n(a,c,k,h,e),[k]):(n(a,c,a,0,e),[k,a]):[k,a]}close(a,b,c,d){let e;if(void 0===a)e=i;else if("number"==typeof a&&m(a))if(void 0!==b&&b.length){let c=Buffer.byteLength(b);if(c>123)throw RangeError("The message must not be greater than 123 bytes");if((e=Buffer.allocUnsafe(2+c)).writeUInt16BE(a,0),"string"==typeof b)e.write(b,2);else if(g(b))e.set(b,2);else throw TypeError("Second argument must be a string or a Uint8Array")}else(e=Buffer.allocUnsafe(2)).writeUInt16BE(a,0);else throw TypeError("First argument must be a valid error code number");let f={[p]:e.length,fin:!0,generateMask:this._generateMask,mask:c,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};0!==this._state?this.enqueue([this.dispatch,e,!1,f,d]):this.sendFrame(s.frame(e,f),d)}ping(a,b,c){let d,e;if("string"==typeof a?(d=Buffer.byteLength(a),e=!1):l(a)?(d=a.size,e=!1):(d=(a=o(a)).length,e=o.readOnly),d>125)throw RangeError("The data size must not be greater than 125 bytes");let f={[p]:d,fin:!0,generateMask:this._generateMask,mask:b,maskBuffer:this._maskBuffer,opcode:9,readOnly:e,rsv1:!1};l(a)?0!==this._state?this.enqueue([this.getBlobData,a,!1,f,c]):this.getBlobData(a,!1,f,c):0!==this._state?this.enqueue([this.dispatch,a,!1,f,c]):this.sendFrame(s.frame(a,f),c)}pong(a,b,c){let d,e;if("string"==typeof a?(d=Buffer.byteLength(a),e=!1):l(a)?(d=a.size,e=!1):(d=(a=o(a)).length,e=o.readOnly),d>125)throw RangeError("The data size must not be greater than 125 bytes");let f={[p]:d,fin:!0,generateMask:this._generateMask,mask:b,maskBuffer:this._maskBuffer,opcode:10,readOnly:e,rsv1:!1};l(a)?0!==this._state?this.enqueue([this.getBlobData,a,!1,f,c]):this.getBlobData(a,!1,f,c):0!==this._state?this.enqueue([this.dispatch,a,!1,f,c]):this.sendFrame(s.frame(a,f),c)}send(a,b,c){let d,e,f=this._extensions[h.extensionName],g=b.binary?2:1,i=b.compress;"string"==typeof a?(d=Buffer.byteLength(a),e=!1):l(a)?(d=a.size,e=!1):(d=(a=o(a)).length,e=o.readOnly),this._firstFragment?(this._firstFragment=!1,i&&f&&f.params[f._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(i=d>=f._threshold),this._compress=i):(i=!1,g=0),b.fin&&(this._firstFragment=!0);let j={[p]:d,fin:b.fin,generateMask:this._generateMask,mask:b.mask,maskBuffer:this._maskBuffer,opcode:g,readOnly:e,rsv1:i};l(a)?0!==this._state?this.enqueue([this.getBlobData,a,this._compress,j,c]):this.getBlobData(a,this._compress,j,c):0!==this._state?this.enqueue([this.dispatch,a,this._compress,j,c]):this.dispatch(a,this._compress,j,c)}getBlobData(a,b,c,d){this._bufferedBytes+=c[p],this._state=2,a.arrayBuffer().then(a=>{if(this._socket.destroyed){let a=Error("The socket was closed while the blob was being read");process.nextTick(t,this,a,d);return}this._bufferedBytes-=c[p];let e=o(a);b?this.dispatch(e,b,c,d):(this._state=0,this.sendFrame(s.frame(e,c),d),this.dequeue())}).catch(a=>{process.nextTick(u,this,a,d)})}dispatch(a,b,c,d){if(!b)return void this.sendFrame(s.frame(a,c),d);let e=this._extensions[h.extensionName];this._bufferedBytes+=c[p],this._state=1,e.compress(a,c.fin,(a,b)=>{this._socket.destroyed?t(this,Error("The socket was closed while data was being compressed"),d):(this._bufferedBytes-=c[p],this._state=0,c.readOnly=!1,this.sendFrame(s.frame(b,c),d),this.dequeue())})}dequeue(){for(;0===this._state&&this._queue.length;){let a=this._queue.shift();this._bufferedBytes-=a[3][p],Reflect.apply(a[0],this,a.slice(1))}}enqueue(a){this._bufferedBytes+=a[3][p],this._queue.push(a)}sendFrame(a,b){2===a.length?(this._socket.cork(),this._socket.write(a[0]),this._socket.write(a[1],b),this._socket.uncork()):this._socket.write(a[0],b)}}function t(a,b,c){"function"==typeof c&&c(b);for(let c=0;c<a._queue.length;c++){let d=a._queue[c],e=d[d.length-1];"function"==typeof e&&e(b)}}function u(a,b,c){t(a,b,c),a.onerror(b)}b.exports=s},25841,(a,b,c)=>{"use strict";let{kForOnEventAttribute:d,kListener:e}=a.r(63046),f=Symbol("kCode"),g=Symbol("kData"),h=Symbol("kError"),i=Symbol("kMessage"),j=Symbol("kReason"),k=Symbol("kTarget"),l=Symbol("kType"),m=Symbol("kWasClean");class n{constructor(a){this[k]=null,this[l]=a}get target(){return this[k]}get type(){return this[l]}}Object.defineProperty(n.prototype,"target",{enumerable:!0}),Object.defineProperty(n.prototype,"type",{enumerable:!0});class o extends n{constructor(a,b={}){super(a),this[f]=void 0===b.code?0:b.code,this[j]=void 0===b.reason?"":b.reason,this[m]=void 0!==b.wasClean&&b.wasClean}get code(){return this[f]}get reason(){return this[j]}get wasClean(){return this[m]}}Object.defineProperty(o.prototype,"code",{enumerable:!0}),Object.defineProperty(o.prototype,"reason",{enumerable:!0}),Object.defineProperty(o.prototype,"wasClean",{enumerable:!0});class p extends n{constructor(a,b={}){super(a),this[h]=void 0===b.error?null:b.error,this[i]=void 0===b.message?"":b.message}get error(){return this[h]}get message(){return this[i]}}Object.defineProperty(p.prototype,"error",{enumerable:!0}),Object.defineProperty(p.prototype,"message",{enumerable:!0});class q extends n{constructor(a,b={}){super(a),this[g]=void 0===b.data?null:b.data}get data(){return this[g]}}function r(a,b,c){"object"==typeof a&&a.handleEvent?a.handleEvent.call(a,c):a.call(b,c)}Object.defineProperty(q.prototype,"data",{enumerable:!0}),b.exports={CloseEvent:o,ErrorEvent:p,Event:n,EventTarget:{addEventListener(a,b,c={}){let f;for(let f of this.listeners(a))if(!c[d]&&f[e]===b&&!f[d])return;if("message"===a)f=function(a,c){let d=new q("message",{data:c?a:a.toString()});d[k]=this,r(b,this,d)};else if("close"===a)f=function(a,c){let d=new o("close",{code:a,reason:c.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});d[k]=this,r(b,this,d)};else if("error"===a)f=function(a){let c=new p("error",{error:a,message:a.message});c[k]=this,r(b,this,c)};else{if("open"!==a)return;f=function(){let a=new n("open");a[k]=this,r(b,this,a)}}f[d]=!!c[d],f[e]=b,c.once?this.once(a,f):this.on(a,f)},removeEventListener(a,b){for(let c of this.listeners(a))if(c[e]===b&&!c[d]){this.removeListener(a,c);break}}},MessageEvent:q}},15251,(a,b,c)=>{"use strict";let{tokenChars:d}=a.r(42673);function e(a,b,c){void 0===a[b]?a[b]=[c]:a[b].push(c)}b.exports={format:function(a){return Object.keys(a).map(b=>{let c=a[b];return Array.isArray(c)||(c=[c]),c.map(a=>[b].concat(Object.keys(a).map(b=>{let c=a[b];return Array.isArray(c)||(c=[c]),c.map(a=>!0===a?b:`${b}=${a}`).join("; ")})).join("; ")).join(", ")}).join(", ")},parse:function(a){let b,c,f=Object.create(null),g=Object.create(null),h=!1,i=!1,j=!1,k=-1,l=-1,m=-1,n=0;for(;n<a.length;n++)if(l=a.charCodeAt(n),void 0===b)if(-1===m&&1===d[l])-1===k&&(k=n);else if(0!==n&&(32===l||9===l))-1===m&&-1!==k&&(m=n);else if(59===l||44===l){if(-1===k)throw SyntaxError(`Unexpected character at index ${n}`);-1===m&&(m=n);let c=a.slice(k,m);44===l?(e(f,c,g),g=Object.create(null)):b=c,k=m=-1}else throw SyntaxError(`Unexpected character at index ${n}`);else if(void 0===c)if(-1===m&&1===d[l])-1===k&&(k=n);else if(32===l||9===l)-1===m&&-1!==k&&(m=n);else if(59===l||44===l){if(-1===k)throw SyntaxError(`Unexpected character at index ${n}`);-1===m&&(m=n),e(g,a.slice(k,m),!0),44===l&&(e(f,b,g),g=Object.create(null),b=void 0),k=m=-1}else if(61===l&&-1!==k&&-1===m)c=a.slice(k,n),k=m=-1;else throw SyntaxError(`Unexpected character at index ${n}`);else if(i){if(1!==d[l])throw SyntaxError(`Unexpected character at index ${n}`);-1===k?k=n:h||(h=!0),i=!1}else if(j)if(1===d[l])-1===k&&(k=n);else if(34===l&&-1!==k)j=!1,m=n;else if(92===l)i=!0;else throw SyntaxError(`Unexpected character at index ${n}`);else if(34===l&&61===a.charCodeAt(n-1))j=!0;else if(-1===m&&1===d[l])-1===k&&(k=n);else if(-1!==k&&(32===l||9===l))-1===m&&(m=n);else if(59===l||44===l){if(-1===k)throw SyntaxError(`Unexpected character at index ${n}`);-1===m&&(m=n);let d=a.slice(k,m);h&&(d=d.replace(/\\/g,""),h=!1),e(g,c,d),44===l&&(e(f,b,g),g=Object.create(null),b=void 0),c=void 0,k=m=-1}else throw SyntaxError(`Unexpected character at index ${n}`);if(-1===k||j||32===l||9===l)throw SyntaxError("Unexpected end of input");-1===m&&(m=n);let o=a.slice(k,m);return void 0===b?e(f,o,g):(void 0===c?e(g,o,!0):h?e(g,c,o.replace(/\\/g,"")):e(g,c,o),e(f,b,g)),f}}},50842,(a,b,c)=>{"use strict";let d=a.r(27699),e=a.r(24836),f=a.r(21517),g=a.r(4446),h=a.r(55004),{randomBytes:i,createHash:j}=a.r(54799),{Duplex:k,Readable:l}=a.r(88947),{URL:m}=a.r(92509),n=a.r(31276),o=a.r(28719),p=a.r(63349),{isBlob:q}=a.r(42673),{BINARY_TYPES:r,CLOSE_TIMEOUT:s,EMPTY_BUFFER:t,GUID:u,kForOnEventAttribute:v,kListener:w,kStatusCode:x,kWebSocket:y,NOOP:z}=a.r(63046),{EventTarget:{addEventListener:A,removeEventListener:B}}=a.r(25841),{format:C,parse:D}=a.r(15251),{toBuffer:E}=a.r(40338),F=Symbol("kAborted"),G=[8,13],H=["CONNECTING","OPEN","CLOSING","CLOSED"],I=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;class J extends d{constructor(a,b,c){super(),this._binaryType=r[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=t,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=J.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,null!==a?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,void 0===b?b=[]:Array.isArray(b)||("object"==typeof b&&null!==b?(c=b,b=[]):b=[b]),function a(b,c,d,g){let h,k,l,o,p={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:s,protocolVersion:G[1],maxBufferedChunks:262144,maxFragments:16384,maxPayload:0x6400000,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...g,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(b._autoPong=p.autoPong,b._closeTimeout=p.closeTimeout,!G.includes(p.protocolVersion))throw RangeError(`Unsupported protocol version: ${p.protocolVersion} (supported versions: ${G.join(", ")})`);if(c instanceof m)h=c;else try{h=new m(c)}catch{throw SyntaxError(`Invalid URL: ${c}`)}"http:"===h.protocol?h.protocol="ws:":"https:"===h.protocol&&(h.protocol="wss:"),b._url=h.href;let q="wss:"===h.protocol,r="ws+unix:"===h.protocol;if("ws:"===h.protocol||q||r?r&&!h.pathname?k="The URL's pathname is empty":h.hash&&(k="The URL contains a fragment identifier"):k='The URL\'s protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"',k){let a=SyntaxError(k);if(0!==b._redirects)return void K(b,a);throw a}let t=q?443:80,v=i(16).toString("base64"),w=q?e.request:f.request,x=new Set;if(p.createConnection=p.createConnection||(q?M:L),p.defaultPort=p.defaultPort||t,p.port=h.port||t,p.host=h.hostname.startsWith("[")?h.hostname.slice(1,-1):h.hostname,p.headers={...p.headers,"Sec-WebSocket-Version":p.protocolVersion,"Sec-WebSocket-Key":v,Connection:"Upgrade",Upgrade:"websocket"},p.path=h.pathname+h.search,p.timeout=p.handshakeTimeout,p.perMessageDeflate&&(l=new n({...p.perMessageDeflate,isServer:!1,maxPayload:p.maxPayload}),p.headers["Sec-WebSocket-Extensions"]=C({[n.extensionName]:l.offer()})),d.length){for(let a of d){if("string"!=typeof a||!I.test(a)||x.has(a))throw SyntaxError("An invalid or duplicated subprotocol was specified");x.add(a)}p.headers["Sec-WebSocket-Protocol"]=d.join(",")}if(p.origin&&(p.protocolVersion<13?p.headers["Sec-WebSocket-Origin"]=p.origin:p.headers.Origin=p.origin),(h.username||h.password)&&(p.auth=`${h.username}:${h.password}`),r){let a=p.path.split(":");p.socketPath=a[0],p.path=a[1]}if(p.followRedirects){if(0===b._redirects){b._originalIpc=r,b._originalSecure=q,b._originalHostOrSocketPath=r?p.socketPath:h.host;let a=g&&g.headers;if(g={...g,headers:{}},a)for(let[b,c]of Object.entries(a))g.headers[b.toLowerCase()]=c}else if(0===b.listenerCount("redirect")){let a=r?!!b._originalIpc&&p.socketPath===b._originalHostOrSocketPath:!b._originalIpc&&h.host===b._originalHostOrSocketPath;a&&(!b._originalSecure||q)||(delete p.headers.authorization,delete p.headers.cookie,a||delete p.headers.host,p.auth=void 0)}p.auth&&!g.headers.authorization&&(g.headers.authorization="Basic "+Buffer.from(p.auth).toString("base64")),o=b._req=w(p),b._redirects&&b.emit("redirect",b.url,o)}else o=b._req=w(p);p.timeout&&o.on("timeout",()=>{N(b,o,"Opening handshake has timed out")}),o.on("error",a=>{null===o||o[F]||(o=b._req=null,K(b,a))}),o.on("response",e=>{let f=e.headers.location,h=e.statusCode;if(f&&p.followRedirects&&h>=300&&h<400){let e;if(++b._redirects>p.maxRedirects)return void N(b,o,"Maximum redirects exceeded");o.abort();try{e=new m(f,c)}catch(a){K(b,SyntaxError(`Invalid URL: ${f}`));return}a(b,e,d,g)}else b.emit("unexpected-response",o,e)||N(b,o,`Unexpected server response: ${e.statusCode}`)}),o.on("upgrade",(a,c,d)=>{let e;if(b.emit("upgrade",a),b.readyState!==J.CONNECTING)return;o=b._req=null;let f=a.headers.upgrade;if(void 0===f||"websocket"!==f.toLowerCase())return void N(b,c,"Invalid Upgrade header");let g=j("sha1").update(v+u).digest("base64");if(a.headers["sec-websocket-accept"]!==g)return void N(b,c,"Invalid Sec-WebSocket-Accept header");let h=a.headers["sec-websocket-protocol"];if(void 0!==h?x.size?x.has(h)||(e="Server sent an invalid subprotocol"):e="Server sent a subprotocol but none was requested":x.size&&(e="Server sent no subprotocol"),e)return void N(b,c,e);h&&(b._protocol=h);let i=a.headers["sec-websocket-extensions"];if(void 0!==i){let a;if(!l)return void N(b,c,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");try{a=D(i)}catch(a){N(b,c,"Invalid Sec-WebSocket-Extensions header");return}let d=Object.keys(a);if(1!==d.length||d[0]!==n.extensionName)return void N(b,c,"Server indicated an extension that was not requested");try{l.accept(a[n.extensionName])}catch(a){N(b,c,"Invalid Sec-WebSocket-Extensions header");return}b._extensions[n.extensionName]=l}b.setSocket(c,d,{allowSynchronousEvents:p.allowSynchronousEvents,generateMask:p.generateMask,maxBufferedChunks:p.maxBufferedChunks,maxFragments:p.maxFragments,maxPayload:p.maxPayload,skipUTF8Validation:p.skipUTF8Validation})}),p.finishRequest?p.finishRequest(o,b):o.end()}(this,a,b,c)):(this._autoPong=c.autoPong,this._closeTimeout=c.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(a){r.includes(a)&&(this._binaryType=a,this._receiver&&(this._receiver._binaryType=a))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(a,b,c){let d=new o({allowSynchronousEvents:c.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxBufferedChunks:c.maxBufferedChunks,maxFragments:c.maxFragments,maxPayload:c.maxPayload,skipUTF8Validation:c.skipUTF8Validation}),e=new p(a,this._extensions,c.generateMask);this._receiver=d,this._sender=e,this._socket=a,d[y]=this,e[y]=this,a[y]=this,d.on("conclude",P),d.on("drain",Q),d.on("error",R),d.on("message",T),d.on("ping",U),d.on("pong",V),e.onerror=X,a.setTimeout&&a.setTimeout(0),a.setNoDelay&&a.setNoDelay(),b.length>0&&a.unshift(b),a.on("close",Z),a.on("data",$),a.on("end",_),a.on("error",aa),this._readyState=J.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=J.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[n.extensionName]&&this._extensions[n.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=J.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(a,b){if(this.readyState!==J.CLOSED){if(this.readyState===J.CONNECTING)return void N(this,this._req,"WebSocket was closed before the connection was established");if(this.readyState===J.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=J.CLOSING,this._sender.close(a,b,!this._isServer,a=>{!a&&(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Y(this)}}pause(){this.readyState!==J.CONNECTING&&this.readyState!==J.CLOSED&&(this._paused=!0,this._socket.pause())}ping(a,b,c){if(this.readyState===J.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");("function"==typeof a?(c=a,a=b=void 0):"function"==typeof b&&(c=b,b=void 0),"number"==typeof a&&(a=a.toString()),this.readyState!==J.OPEN)?O(this,a,c):(void 0===b&&(b=!this._isServer),this._sender.ping(a||t,b,c))}pong(a,b,c){if(this.readyState===J.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");("function"==typeof a?(c=a,a=b=void 0):"function"==typeof b&&(c=b,b=void 0),"number"==typeof a&&(a=a.toString()),this.readyState!==J.OPEN)?O(this,a,c):(void 0===b&&(b=!this._isServer),this._sender.pong(a||t,b,c))}resume(){this.readyState!==J.CONNECTING&&this.readyState!==J.CLOSED&&(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(a,b,c){if(this.readyState===J.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof b&&(c=b,b={}),"number"==typeof a&&(a=a.toString()),this.readyState!==J.OPEN)return void O(this,a,c);let d={binary:"string"!=typeof a,mask:!this._isServer,compress:!0,fin:!0,...b};this._extensions[n.extensionName]||(d.compress=!1),this._sender.send(a||t,d,c)}terminate(){if(this.readyState!==J.CLOSED){if(this.readyState===J.CONNECTING)return void N(this,this._req,"WebSocket was closed before the connection was established");this._socket&&(this._readyState=J.CLOSING,this._socket.destroy())}}}function K(a,b){a._readyState=J.CLOSING,a._errorEmitted=!0,a.emit("error",b),a.emitClose()}function L(a){return a.path=a.socketPath,g.connect(a)}function M(a){return a.path=void 0,a.servername||""===a.servername||(a.servername=g.isIP(a.host)?"":a.host),h.connect(a)}function N(a,b,c){a._readyState=J.CLOSING;let d=Error(c);Error.captureStackTrace(d,N),b.setHeader?(b[F]=!0,b.abort(),b.socket&&!b.socket.destroyed&&b.socket.destroy(),process.nextTick(K,a,d)):(b.destroy(d),b.once("error",a.emit.bind(a,"error")),b.once("close",a.emitClose.bind(a)))}function O(a,b,c){if(b){let c=q(b)?b.size:E(b).length;a._socket?a._sender._bufferedBytes+=c:a._bufferedAmount+=c}if(c){let b=Error(`WebSocket is not open: readyState ${a.readyState} (${H[a.readyState]})`);process.nextTick(c,b)}}function P(a,b){let c=this[y];c._closeFrameReceived=!0,c._closeMessage=b,c._closeCode=a,void 0!==c._socket[y]&&(c._socket.removeListener("data",$),process.nextTick(W,c._socket),1005===a?c.close():c.close(a,b))}function Q(){let a=this[y];a.isPaused||a._socket.resume()}function R(a){let b=this[y];void 0!==b._socket[y]&&(b._socket.removeListener("data",$),process.nextTick(W,b._socket),b.close(a[x])),b._errorEmitted||(b._errorEmitted=!0,b.emit("error",a))}function S(){this[y].emitClose()}function T(a,b){this[y].emit("message",a,b)}function U(a){let b=this[y];b._autoPong&&b.pong(a,!this._isServer,z),b.emit("ping",a)}function V(a){this[y].emit("pong",a)}function W(a){a.resume()}function X(a){let b=this[y];b.readyState!==J.CLOSED&&(b.readyState===J.OPEN&&(b._readyState=J.CLOSING,Y(b)),this._socket.end(),b._errorEmitted||(b._errorEmitted=!0,b.emit("error",a)))}function Y(a){a._closeTimer=setTimeout(a._socket.destroy.bind(a._socket),a._closeTimeout)}function Z(){let a=this[y];if(this.removeListener("close",Z),this.removeListener("data",$),this.removeListener("end",_),a._readyState=J.CLOSING,!this._readableState.endEmitted&&!a._closeFrameReceived&&!a._receiver._writableState.errorEmitted&&0!==this._readableState.length){let b=this.read(this._readableState.length);a._receiver.write(b)}a._receiver.end(),this[y]=void 0,clearTimeout(a._closeTimer),a._receiver._writableState.finished||a._receiver._writableState.errorEmitted?a.emitClose():(a._receiver.on("error",S),a._receiver.on("finish",S))}function $(a){this[y]._receiver.write(a)||this.pause()}function _(){let a=this[y];a._readyState=J.CLOSING,a._receiver.end(),this.end()}function aa(){let a=this[y];this.removeListener("error",aa),this.on("error",z),a&&(a._readyState=J.CLOSING,this.destroy())}Object.defineProperty(J,"CONNECTING",{enumerable:!0,value:H.indexOf("CONNECTING")}),Object.defineProperty(J.prototype,"CONNECTING",{enumerable:!0,value:H.indexOf("CONNECTING")}),Object.defineProperty(J,"OPEN",{enumerable:!0,value:H.indexOf("OPEN")}),Object.defineProperty(J.prototype,"OPEN",{enumerable:!0,value:H.indexOf("OPEN")}),Object.defineProperty(J,"CLOSING",{enumerable:!0,value:H.indexOf("CLOSING")}),Object.defineProperty(J.prototype,"CLOSING",{enumerable:!0,value:H.indexOf("CLOSING")}),Object.defineProperty(J,"CLOSED",{enumerable:!0,value:H.indexOf("CLOSED")}),Object.defineProperty(J.prototype,"CLOSED",{enumerable:!0,value:H.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(a=>{Object.defineProperty(J.prototype,a,{enumerable:!0})}),["open","error","close","message"].forEach(a=>{Object.defineProperty(J.prototype,`on${a}`,{enumerable:!0,get(){for(let b of this.listeners(a))if(b[v])return b[w];return null},set(b){for(let b of this.listeners(a))if(b[v]){this.removeListener(a,b);break}"function"==typeof b&&this.addEventListener(a,b,{[v]:!0})}})}),J.prototype.addEventListener=A,J.prototype.removeEventListener=B,b.exports=J},31594,(a,b,c)=>{"use strict";a.r(50842);let{Duplex:d}=a.r(88947);function e(a){a.emit("close")}function f(){!this.destroyed&&this._writableState.finished&&this.destroy()}function g(a){this.removeListener("error",g),this.destroy(),0===this.listenerCount("error")&&this.emit("error",a)}b.exports=function(a,b){let c=!0,h=new d({...b,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return a.on("message",function(b,c){let d=!c&&h._readableState.objectMode?b.toString():b;h.push(d)||a.pause()}),a.once("error",function(a){h.destroyed||(c=!1,h.destroy(a))}),a.once("close",function(){h.destroyed||h.push(null)}),h._destroy=function(b,d){if(a.readyState===a.CLOSED){d(b),process.nextTick(e,h);return}let f=!1;a.once("error",function(a){f=!0,d(a)}),a.once("close",function(){f||d(b),process.nextTick(e,h)}),c&&a.terminate()},h._final=function(b){a.readyState===a.CONNECTING?a.once("open",function(){h._final(b)}):null!==a._socket&&(a._socket._writableState.finished?(b(),h._readableState.endEmitted&&h.destroy()):(a._socket.once("finish",function(){b()}),a.close()))},h._read=function(){a.isPaused&&a.resume()},h._write=function(b,c,d){a.readyState===a.CONNECTING?a.once("open",function(){h._write(b,c,d)}):a.send(b,d)},h.on("end",f),h.on("error",g),h}},54129,(a,b,c)=>{"use strict";let{tokenChars:d}=a.r(42673);b.exports={parse:function(a){let b=new Set,c=-1,e=-1,f=0;for(;f<a.length;f++){let g=a.charCodeAt(f);if(-1===e&&1===d[g])-1===c&&(c=f);else if(0!==f&&(32===g||9===g))-1===e&&-1!==c&&(e=f);else if(44===g){if(-1===c)throw SyntaxError(`Unexpected character at index ${f}`);-1===e&&(e=f);let d=a.slice(c,e);if(b.has(d))throw SyntaxError(`The "${d}" subprotocol is duplicated`);b.add(d),c=e=-1}else throw SyntaxError(`Unexpected character at index ${f}`)}if(-1===c||-1!==e)throw SyntaxError("Unexpected end of input");let g=a.slice(c,f);if(b.has(g))throw SyntaxError(`The "${g}" subprotocol is duplicated`);return b.add(g),b}}},36972,(a,b,c)=>{"use strict";let d=a.r(27699),e=a.r(21517),{Duplex:f}=a.r(88947),{createHash:g}=a.r(54799),h=a.r(15251),i=a.r(31276),j=a.r(54129),k=a.r(50842),{CLOSE_TIMEOUT:l,GUID:m,kWebSocket:n}=a.r(63046),o=/^[+/0-9A-Za-z]{22}==$/;function p(a){a._state=2,a.emit("close")}function q(){this.destroy()}function r(a,b,c,d){c=c||e.STATUS_CODES[b],d={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(c),...d},a.once("finish",a.destroy),a.end(`HTTP/1.1 ${b} ${e.STATUS_CODES[b]}\r
|
|
2
|
-
`+Object.keys(d).map(a=>`${a}: ${d[a]}`).join("\r\n")+"\r\n\r\n"+c)}function s(a,b,c,d,e,f){if(a.listenerCount("wsClientError")){let d=Error(e);Error.captureStackTrace(d,s),a.emit("wsClientError",d,c,b)}else r(c,d,e,f)}b.exports=class extends d{constructor(a,b){if(super(),null==(a={allowSynchronousEvents:!0,autoPong:!0,maxBufferedChunks:262144,maxFragments:16384,maxPayload:0x6400000,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:l,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:k,...a}).port&&!a.server&&!a.noServer||null!=a.port&&(a.server||a.noServer)||a.server&&a.noServer)throw TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(null!=a.port?(this._server=e.createServer((a,b)=>{let c=e.STATUS_CODES[426];b.writeHead(426,{"Content-Length":c.length,"Content-Type":"text/plain"}),b.end(c)}),this._server.listen(a.port,a.host,a.backlog,b)):a.server&&(this._server=a.server),this._server){const a=this.emit.bind(this,"connection");this._removeListeners=function(a,b){for(let c of Object.keys(b))a.on(c,b[c]);return function(){for(let c of Object.keys(b))a.removeListener(c,b[c])}}(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(b,c,d)=>{this.handleUpgrade(b,c,d,a)}})}!0===a.perMessageDeflate&&(a.perMessageDeflate={}),a.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=a,this._state=0}address(){if(this.options.noServer)throw Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(a){if(2===this._state){a&&this.once("close",()=>{a(Error("The server is not running"))}),process.nextTick(p,this);return}if(a&&this.once("close",a),1!==this._state)if(this._state=1,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients&&this.clients.size?this._shouldEmitClose=!0:process.nextTick(p,this);else{let a=this._server;this._removeListeners(),this._removeListeners=this._server=null,a.close(()=>{p(this)})}}shouldHandle(a){if(this.options.path){let b=a.url.indexOf("?");if((-1!==b?a.url.slice(0,b):a.url)!==this.options.path)return!1}return!0}handleUpgrade(a,b,c,d){b.on("error",q);let e=a.headers["sec-websocket-key"],f=a.headers.upgrade,g=+a.headers["sec-websocket-version"];if("GET"!==a.method)return void s(this,a,b,405,"Invalid HTTP method");if(void 0===f||"websocket"!==f.toLowerCase())return void s(this,a,b,400,"Invalid Upgrade header");if(void 0===e||!o.test(e))return void s(this,a,b,400,"Missing or invalid Sec-WebSocket-Key header");if(13!==g&&8!==g)return void s(this,a,b,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});if(!this.shouldHandle(a))return void r(b,400);let k=a.headers["sec-websocket-protocol"],l=new Set;if(void 0!==k)try{l=j.parse(k)}catch(c){s(this,a,b,400,"Invalid Sec-WebSocket-Protocol header");return}let m=a.headers["sec-websocket-extensions"],n={};if(this.options.perMessageDeflate&&void 0!==m){let c=new i({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let a=h.parse(m);a[i.extensionName]&&(c.accept(a[i.extensionName]),n[i.extensionName]=c)}catch(c){s(this,a,b,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let f={origin:a.headers[`${8===g?"sec-websocket-origin":"origin"}`],secure:!!(a.socket.authorized||a.socket.encrypted),req:a};if(2===this.options.verifyClient.length)return void this.options.verifyClient(f,(f,g,h,i)=>{if(!f)return r(b,g||401,h,i);this.completeUpgrade(n,e,l,a,b,c,d)});if(!this.options.verifyClient(f))return r(b,401)}this.completeUpgrade(n,e,l,a,b,c,d)}completeUpgrade(a,b,c,d,e,f,j){if(!e.readable||!e.writable)return e.destroy();if(e[n])throw Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>0)return r(e,503);let k=g("sha1").update(b+m).digest("base64"),l=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${k}`],o=new this.options.WebSocket(null,void 0,this.options);if(c.size){let a=this.options.handleProtocols?this.options.handleProtocols(c,d):c.values().next().value;a&&(l.push(`Sec-WebSocket-Protocol: ${a}`),o._protocol=a)}if(a[i.extensionName]){let b=a[i.extensionName].params,c=h.format({[i.extensionName]:[b]});l.push(`Sec-WebSocket-Extensions: ${c}`),o._extensions=a}this.emit("headers",l,d),e.write(l.concat("\r\n").join("\r\n")),e.removeListener("error",q),o.setSocket(e,f,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxBufferedChunks:this.options.maxBufferedChunks,maxFragments:this.options.maxFragments,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(o),o.on("close",()=>{this.clients.delete(o),this._shouldEmitClose&&!this.clients.size&&process.nextTick(p,this)})),j(o,d)}}},95421,a=>{"use strict";let b,c,d,e;var f,g,h=a.i(56856),i=a.i(55132);function j(a){return JSON.parse(JSON.stringify(a))}function k(a,b){for(let c of a.states??[]){if(c.name===b)return a;let d=k(c,b);if(d)return d}return null}function l(a,b,c){let d=function a(b,c){if(b.name===c)return b;for(let d of b.states??[]){let b=a(d,c);if(b)return b}return null}(a,b);if(!d)throw Error(`applyPatchOps: ${c} references missing state "${b}"`);return d}function m(a,b,c){let d=function(a,b){for(let c of a.events){let a=c.events??[];for(let d=0;d<a.length;d++)if(a[d].id===b)return{source:c,event:a[d],index:d}}return null}(a,b);if(!d)throw Error(`applyPatchOps: ${c} references missing event "${b}"`);return d}function n(a,b){let c=j(a);for(let a of b)switch(a.op){case"settings.update":c.settings={...c.settings,...a.patch};break;case"state.add":{let b=null===a.parent?c.state:l(c.state,a.parent,"state.add");b.states||(b.states=[]);let d=a.index??b.states.length;b.states.splice(d,0,j(a.state));break}case"state.update":Object.assign(l(c.state,a.name,"state.update"),a.patch);break;case"state.remove":{if(c.state.name===a.name)throw Error(`applyPatchOps: cannot remove root state "${a.name}"`);let b=k(c.state,a.name);if(!b||!b.states)throw Error(`applyPatchOps: state.remove references missing state "${a.name}"`);let d=b.states.findIndex(b=>b.name===a.name);if(d<0)throw Error(`applyPatchOps: state.remove references missing state "${a.name}"`);b.states.splice(d,1),0===b.states.length&&delete b.states;break}case"state.nest":{let b=l(c.state,a.child,"state.nest"),d=l(c.state,a.newParent,"state.nest"),e=k(c.state,a.child);if(!e||!e.states)throw Error(`applyPatchOps: state.nest cannot detach root or missing state "${a.child}"`);let f=e.states.findIndex(b=>b.name===a.child),[g]=e.states.splice(f,1);0===e.states.length&&delete e.states,d.states||(d.states=[]),d.states.push(g??j(b));break}case"eventSource.add":{let b=a.index??c.events.length;c.events.splice(b,0,j(a.source));break}case"eventSource.update":{let b=c.events[a.index];if(!b)throw Error(`applyPatchOps: eventSource.update index ${a.index} out of range`);c.events[a.index]={...b,...a.patch};break}case"eventSource.remove":if(!c.events[a.index])throw Error(`applyPatchOps: eventSource.remove index ${a.index} out of range`);c.events.splice(a.index,1);break;case"event.add":{let b=c.events[a.sourceIndex];if(!b)throw Error(`applyPatchOps: event.add sourceIndex ${a.sourceIndex} out of range`);b.events||(b.events=[]);let d=a.index??b.events.length;b.events.splice(d,0,j(a.event));break}case"event.update":Object.assign(m(c,a.id,"event.update").event,a.patch);break;case"event.remove":{let b=m(c,a.id,"event.remove");b.source.events.splice(b.index,1),0===b.source.events.length&&delete b.source.events;break}case"parameter.add":{let b=m(c,a.eventId,"parameter.add");b.event.parameters||(b.event.parameters=[]);let d=a.index??b.event.parameters.length;b.event.parameters.splice(d,0,j(a.parameter));break}case"parameter.update":{let b=m(c,a.eventId,"parameter.update").event.parameters??[];if(!b[a.index])throw Error(`applyPatchOps: parameter.update index ${a.index} out of range for event "${a.eventId}"`);b[a.index]={...b[a.index],...a.patch};break}case"parameter.remove":{let b=m(c,a.eventId,"parameter.remove"),d=b.event.parameters;if(!d||!d[a.index])throw Error(`applyPatchOps: parameter.remove index ${a.index} out of range for event "${a.eventId}"`);d.splice(a.index,1),0===d.length&&delete b.event.parameters;break}case"transition.add":{let b=l(c.state,a.state,"transition.add");b.transitions||(b.transitions=[]);let d=a.index??b.transitions.length;b.transitions.splice(d,0,j(a.transition));break}case"transition.update":{let b=l(c.state,a.state,"transition.update").transitions??[];if(!b[a.index])throw Error(`applyPatchOps: transition.update index ${a.index} out of range for state "${a.state}"`);b[a.index]={...b[a.index],...a.patch};break}case"transition.remove":{let b=l(c.state,a.state,"transition.remove"),d=b.transitions;if(!d||!d[a.index])throw Error(`applyPatchOps: transition.remove index ${a.index} out of range for state "${a.state}"`);d.splice(a.index,1),0===d.length&&delete b.transitions;break}case"action.add":{let b=l(c.state,a.state,"action.add"),d=b[a.hook]??(b[a.hook]={actions:[]}),e=a.index??d.actions.length;d.actions.splice(e,0,j(a.action));break}case"action.update":{let b=l(c.state,a.state,"action.update")[a.hook];if(!b||!b.actions[a.index])throw Error(`applyPatchOps: action.update index ${a.index} out of range for state "${a.state}" ${a.hook}`);b.actions[a.index]=j(a.action);break}case"action.remove":{let b=l(c.state,a.state,"action.remove"),d=b[a.hook];if(!d||!d.actions[a.index])throw Error(`applyPatchOps: action.remove index ${a.index} out of range for state "${a.state}" ${a.hook}`);d.actions.splice(a.index,1),0===d.actions.length&&delete b[a.hook];break}case"runtime.enter":case"runtime.exit":break;default:throw Error(`applyPatchOps: unknown op ${JSON.stringify(a)}`)}return c}function o(a){let b=[a];for(let c of a.states??[])b.push(...o(c));return b}function p(a){let b=new Map;b.set(a.name,null);let c=a=>{for(let d of a.states??[])b.set(d.name,a.name),c(d)};return c(a),b}function q(a,b){return JSON.stringify(a)===JSON.stringify(b)}function r(a,b,c,d,e){let f=Math.min(c.length,d.length);for(let g=0;g<f;g++)q(c[g],d[g])||e.push({op:"action.update",state:a,hook:b,index:g,action:d[g]});for(let c=f;c<d.length;c++)e.push({op:"action.add",state:a,hook:b,action:d[c],index:c});for(let f=c.length-1;f>=d.length;f--)e.push({op:"action.remove",state:a,hook:b,index:f})}function s(a){let b=0;for(let c=0;c<a.length;c++)b=Math.imul(b,31)+a.charCodeAt(c)|0;let c=(b%360+360)%360;return`hsl(${c}, 65%, 55%)`}let t={hSpacing:220,vSpacing:140,nodeWidth:160,nodeHeight:60,compositeWidth:300,compositeHeight:200,originX:100,originY:120,sweeps:2,includeRoot:!0},u=(a,b)=>`${a}\u0000${b}`;function v(a){let b=new Set,c=[];for(let d of a.states??[])b.has(d.name)||(b.add(d.name),c.push(d));return c}function w(a,b){let c=new Map(a.map(a=>[a,[]]));for(let a of b)c.get(a.from).push(a.to);return c}function x(a,b={}){let c={...t,...b},d="state"in a?a.state:a,e={};if(!d)return e;if(!function a(b,c,d,e,f){let g=v(b);if(0===g.length)return;let h=g.map(a=>a.name),i=new Map(g.map(a=>[a.name,a])),j=function(a){let b=new Set(a.map(a=>a.name)),c=new Set,d=[];for(let e of a)for(let a of e.transitions??[]){let f=a.nextState;if(!f||f===e.name||!b.has(f))continue;let g=u(e.name,f);c.has(g)||(c.add(g),d.push({from:e.name,to:f}))}return d}(g),k=function(a,b){let c=w(a,b),d=new Map(a.map(a=>[a,0])),e=new Set;for(let b of a){if(0!==d.get(b))continue;d.set(b,1);let a=[{node:b,i:0}];for(;a.length>0;){let b=a[a.length-1],f=c.get(b.node);if(b.i<f.length){let c=f[b.i++],g=d.get(c);1===g?e.add(u(b.node,c)):0===g&&(d.set(c,1),a.push({node:c,i:0}))}else d.set(b.node,2),a.pop()}}return e}(h,j),l=j.filter(a=>!k.has(u(a.from,a.to))),m=function(a,b){let c=w(a,b),d=new Map(a.map(a=>[a,0]));for(let a of b)d.set(a.to,(d.get(a.to)??0)+1);let e=new Map(a.map(a=>[a,0])),f=a.filter(a=>0===d.get(a));for(let a=0;a<f.length;a++){let b=f[a];for(let a of c.get(b)){e.set(a,Math.max(e.get(a),e.get(b)+1));let c=d.get(a)-1;d.set(a,c),0===c&&f.push(a)}}return e}(h,l),n=function(a,b,c){let d=new Map(a.map(a=>[a,[]]));for(let a of b)d.get(a.from).push(a.to),d.get(a.to).push(a.from);let e=new Set([c]),f=[c];for(;f.length>0;){let a=f.pop();for(let b of d.get(a)??[])e.has(b)||(e.add(b),f.push(b))}return e}(h,j,h[0]),o=0;for(let a of h)n.has(a)&&(o=Math.max(o,m.get(a)));for(let a of h)n.has(a)||m.set(a,m.get(a)+o+1);let p=Array.from({length:Math.max(...h.map(a=>m.get(a)))+1},()=>[]);for(let a of h)p[m.get(a)].push(a);!function(a,b,c){let d=new Map,e=new Map,f=(a,b,c)=>{let d=a.get(b);d?d.push(c):a.set(b,[c])};for(let a of b)f(d,a.to,a.from),f(e,a.from,a.to);let g=new Map,h=()=>{a.forEach(a=>a.forEach((a,b)=>g.set(a,b)))};h();let i=(a,b)=>{let c=a.map((a,c)=>{let d=(b.get(a)??[]).filter(a=>g.has(a));return{name:a,key:d.length?d.reduce((a,b)=>a+g.get(b),0)/d.length:c,i:c}});c.sort((a,b)=>a.key===b.key?a.i-b.i:a.key-b.key);for(let b=0;b<c.length;b++)a[b]=c[b].name};for(let b=0;b<c;b++){for(let b=1;b<a.length;b++)i(a[b],d),h();for(let b=a.length-2;b>=0;b--)i(a[b],e),h()}}(p,l,e.sweeps);let q=e.hSpacing-e.nodeWidth,r=e.vSpacing-e.nodeHeight,s=a=>Math.max(e.hSpacing,a+q),t=new Map(h.map(a=>{var b;return[a,(b=i.get(a),(b.states?.length??0)>0?{width:e.compositeWidth,height:e.compositeHeight}:{width:e.nodeWidth,height:e.nodeHeight})]})),x=p.map(a=>a.reduce((a,b)=>a+s(t.get(b).width),0)),y=c+Math.max(...x,0)/2,z=d;for(let b of(p.forEach((a,b)=>{let c=y-x[b]/2,d=e.nodeHeight;for(let b of a){let a=t.get(b),e=s(a.width);f[b]={x:Math.round(c+(e-a.width)/2),y:Math.round(z),width:a.width,height:a.height},c+=e,d=Math.max(d,a.height)}z+=d+r}),g)){if((b.states?.length??0)===0)continue;let c=f[b.name];a(b,c.x+20,c.y+40,e,f)}}(d,c.originX,c.originY,c,e),c.includeRoot){let a=v(d).map(a=>e[a.name]).filter(Boolean);if(0===a.length)e[d.name]={x:20,y:20,width:400,height:350};else{let b=Math.min(...a.map(a=>a.x)),c=Math.min(...a.map(a=>a.y)),f=Math.max(...a.map(a=>a.x+a.width)),g=Math.max(...a.map(a=>a.y+a.height));e[d.name]={x:Math.round(b-40),y:Math.round(c-40),width:Math.round(f-b+80),height:Math.round(g-c+80)}}}return e}let y=(a,b)=>a.length*b*.55,z=a=>`[${a.length>32?`${a.slice(0,31).trimEnd()}…`:a}]`,A=a=>({width:Math.max(56,Math.max(y(a.event,11),a.condition?y(z(a.condition),9):0)+16)+16*!!a.glyph,height:a.condition?28:18}),B=a=>({x:a.x+5,y:a.cy-12-3}),C=(a,b)=>a.x<b.x+b.width&&b.x<a.x+a.width&&a.y<b.y+b.height&&b.y<a.y+a.height,D={along:[.5,.36,.64,.24,.76,.14,.86],aside:[0,.6,-.6],across:[0,-1.3,1.3,-2.6,2.6]},E=(a,b,c=2.2,d)=>({id:a,paths:b,strokeWidth:c,circles:d}),F=E("signal",["M3 12h10","m13 6 6 6-6 6Z"]),G=[{glyph:E("confirm",["m4 13 5.5 5.5L20 6"],2.4),words:["confirm","approve","accept","commit"]},{glyph:E("complete",["m8 12 3 3 5-6"],2.2,[{cx:12,cy:12,r:8.5}]),words:["complete","finish","done","close"]},{glyph:E("skip",["M4 17c0-6 4.5-9 9-9h6","m15 4 4.5 4-4.5 4"]),words:["skip","ignore","bypass"]},{glyph:E("flag",["M6 21V4","M6 4h12l-3 4.5 3 4.5H6Z"]),words:["flag","mark","revisit","review"]},{glyph:E("advance",["M4 6l8 6-8 6Z","M13 6l7 6-7 6Z"]),words:["advance","next","forward","step"]},{glyph:E("pause",["M9 5v14M15 5v14"],2.6),words:["pause","hold","suspend","stop"]},{glyph:E("play",["M7 4.5 19 12 7 19.5Z"]),words:["resume","start","begin","play","run"]},{glyph:E("clock",["M12 7.5V12l3.5 2.5"],2.2,[{cx:12,cy:12,r:8.5}]),words:["timeout","expire","tick","delay","after","elapse"]},{glyph:E("change",["M3 14c3-6 6-6 9 0s6 6 9 0"]),words:["change","update","edit","modify","set"]}];[...G.map(a=>a.glyph)];let H=a=>Math.round(100*a)/100;function I(a,b,c,d){return{p0:a,p1:b,p2:c,p3:d,path:`M ${H(a.x)} ${H(a.y)} C ${H(b.x)} ${H(b.y)}, ${H(c.x)} ${H(c.y)}, ${H(d.x)} ${H(d.y)}`,at:e=>{let f=1-e,g=f*f*f,h=3*f*f*e,i=3*f*e*e,j=e*e*e;return{x:g*a.x+h*b.x+i*c.x+j*d.x,y:g*a.y+h*b.y+i*c.y+j*d.y}}}}let J={min:.2,max:2.5},K={x:0,y:0,scale:1};function L(a,b=J){return Number.isFinite(a)?Math.min(b.max,Math.max(b.min,a)):1}function M(a,b,c){return{x:a.x+b,y:a.y+c,scale:a.scale}}function N(a,b,c,d=J){return O(a,a.scale*b,c,d)}function O(a,b,c,d=J){let e=L(b,d);if(e===a.scale)return a;let f={x:(c.x-a.x)/a.scale,y:(c.y-a.y)/a.scale};return{x:c.x-f.x*e,y:c.y-f.y*e,scale:e}}function P(a){let b=new Set,c=[];for(let d of a.states??[])b.has(d.name)||(b.add(d.name),c.push(d));return c}function Q(a){return a.trim().replace(/[\s_]+/g,"-").replace(/[^A-Za-z0-9.-]/g,"").replace(/-{2,}/g,"-").replace(/^[-.]+|[-.]+$/g,"").slice(0,60)}function R(a){return a.parallel?a.parallel.states:a.states??[]}function S(a,b){return R(a).find(a=>a.name===b)??null}let T={surface:"--slc-surface",nodeFill:"--slc-node-fill",nodeStroke:"--slc-node-stroke",compositeFill:"--slc-composite-fill",finalFill:"--slc-final-fill",accent:"--slc-accent",accentFill:"--slc-accent-fill",accentInk:"--slc-accent-ink",danger:"--slc-danger",drawSource:"--slc-draw-source",edge:"--slc-edge",chipFill:"--slc-chip-fill",chipStroke:"--slc-chip-stroke",label:"--slc-label",muted:"--slc-muted",faint:"--slc-faint",entry:"--slc-entry",exit:"--slc-exit",composite:"--slc-composite",active:"--slc-active",panelBg:"--slc-panel-bg",panelBorder:"--slc-panel-border",panelHover:"--slc-panel-hover"},U={x:100,y:100,width:160,height:60};function V(a,b){return 1===b?16*a:2===b?400*a:a}function W(a){return!!a&&"string"==typeof a.tagName&&(!!a.isContentEditable||["INPUT","TEXTAREA","SELECT","BUTTON","OPTION"].includes(a.tagName))}function X(a){return(a.states?.length??0)>0||(a.parallel?.states.length??0)>0}function Y({mark:a,x:b,y:c,selected:d}){return(0,h.jsxs)("g",{transform:`translate(${b} ${c}) scale(0.5)`,strokeWidth:a.strokeWidth,className:`slc-glyph${d?" slc-glyph--selected":""}`,children:[(a.circles??[]).map((a,b)=>(0,h.jsx)("circle",{cx:a.cx,cy:a.cy,r:a.r,className:a.filled?"slc-glyph-dot":void 0},`c${b}`)),a.paths.map((a,b)=>(0,h.jsx)("path",{d:a},`p${b}`))]})}let Z={kind:null,id:null},$=(0,i.forwardRef)(function(a,b){let{definition:c,positions:d,path:e=[],rootLabel:f,viewport:g,onViewportChange:j,selection:k=Z,activeStates:l,errorElements:m,drawMode:n="select",drawSource:o=null,readOnly:p=!1,showBreadcrumb:q=!0,showHud:r=!0,fitKey:s,onSelect:t,onClearSelection:u,onStateMove:v,onNavigateInto:w,onNavigateTo:x,onContextMenu:y,onCreateTransition:E,onCancelDraw:H,onDeleteState:P,onUndo:Q,onRedo:$,hudExtras:_,emptyHint:aa,theme:ab,className:ac,style:ad,svgId:ae,pinchOwner:af="canvas"}=a,ag=(0,i.useRef)(null),ah=(0,i.useId)().replace(/:/g,""),ai=(0,i.useRef)(g);ai.current=g;let[aj,ak]=(0,i.useState)(null),al=(0,i.useRef)(null),am=(0,i.useCallback)(a=>{al.current=a,ak(a)},[]),[an,ao]=(0,i.useState)(null),ap=(0,i.useRef)(!1),[aq,ar]=(0,i.useState)(!1),as=(0,i.useRef)(null),[at,au]=(0,i.useState)(!1),av=(0,i.useRef)(!1),aw=(0,i.useRef)(new Map),ax=(0,i.useRef)(new Map),ay=(0,i.useRef)(null),[az,aA]=(0,i.useState)(!1),aB=(0,i.useRef)(null),aC=(0,i.useRef)(!1),[aD,aE]=(0,i.useState)(!1),aF=c.state,aG=(0,i.useMemo)(()=>{let a=function(a,b){let c=[],d=a;for(let a of b){let b=S(d,a);if(!b)break;c.push(a),d=b}return c}(aF,e);return[f??aF?.name??"Root",...a]},[aF,e,f]),aH=(0,i.useMemo)(()=>aF?R(function(a,b){let c=a;for(let a of b){let b=S(c,a);if(!b)break;c=b}return c}(aF,e)):[],[aF,e]),aI=aG[aG.length-1],aJ=(0,i.useMemo)(()=>(function(a){let b=new Set,c=[];for(let d of a.events??[])for(let a of d.events??[])b.has(a.id)||(b.add(a.id),c.push(a.id));return c})(c),[c]),aK=(0,i.useMemo)(()=>new Set(l??[]),[l]),aL=(0,i.useMemo)(()=>new Set(m??[]),[m]),aM=(0,i.useCallback)((a,b)=>{let c=ag.current?.getBoundingClientRect();return{x:a-(c?.left??0),y:b-(c?.top??0)}},[]),aN=(0,i.useCallback)(a=>{let b=aw.current.get(a);aw.current.delete(a),b?.hasPointerCapture?.(a)&&b.releasePointerCapture?.(a)},[]),aO=(0,i.useCallback)(a=>{let b=aB.current;b&&(void 0===a||b.pointerId===a)&&(clearTimeout(b.timer),aB.current=null)},[]),aP=(0,i.useCallback)((a,b)=>{if("touch"!==a.pointerType||!y)return;aO();let{pointerId:c,clientX:d,clientY:e}=a,f=setTimeout(()=>{aB.current=null,am(null),as.current=null,au(!1),aC.current=!0,navigator.vibrate?.(10),y(d,e,b)},500);aB.current={pointerId:c,x:d,y:e,target:b,timer:f}},[aO,y,am]);(0,i.useEffect)(()=>{},[]),(0,i.useEffect)(()=>{let a=a=>{ax.current.delete(a.pointerId)};return window.addEventListener("pointerup",a),window.addEventListener("pointercancel",a),()=>{window.removeEventListener("pointerup",a),window.removeEventListener("pointercancel",a)}},[]),(0,i.useEffect)(()=>()=>aO(),[aO]);let aQ=(0,i.useRef)(new Set),aR=(0,i.useRef)(new Map),aS=(0,i.useRef)(aI),aT=(0,i.useRef)(new Set),[aU,aV]=(0,i.useState)(new Set),[aW,aX]=(0,i.useState)(new Set),[aY,aZ]=(0,i.useState)(new Map),a$=aD?10/g.scale:0,a_=aD?28/g.scale:0,a0=(0,i.useCallback)(a=>d[a]??U,[d]);(0,i.useEffect)(()=>{let a=a=>{(a.ctrlKey||a.metaKey)&&"z"===a.key&&Q&&(a.preventDefault(),Q()),(a.ctrlKey||a.metaKey)&&("y"===a.key||a.shiftKey&&"z"===a.key)&&$&&(a.preventDefault(),$()),"Escape"===a.key&&(ao(null),H?.()),"Delete"===a.key&&"state"===k.kind&&k.id&&P&&P(k.id)};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[Q,$,H,P,k]);let a1=(0,i.useCallback)(a=>{let b=ai.current;as.current={pointerId:a.pointerId,startX:a.clientX,startY:a.clientY,origX:b.x,origY:b.y},av.current=!1,au(!0);let c=ag.current;c&&(aw.current.set(a.pointerId,c),c.setPointerCapture(a.pointerId))},[]),a2=(0,i.useCallback)(()=>{let a=[...ax.current.entries()];if(a.length<2)return;let[[b,c],[d,e]]=a;aO(),am(null),as.current=null;let f=Math.max(1,Math.hypot(e.x-c.x,e.y-c.y)),g=aM((c.x+e.x)/2,(c.y+e.y)/2);ay.current={a:b,b:d,startDist:f,startMidX:g.x,startMidY:g.y,start:ai.current},av.current=!0,aA(!0);let h=ag.current;if(h){for(let a of[b,d])if(!aw.current.has(a))try{h.setPointerCapture(a),aw.current.set(a,h)}catch{}}},[aO,aM,am]),a3=(0,i.useCallback)(a=>{if(aC.current=!1,"touch"!==a.pointerType)return;aE(!0),ax.current.set(a.pointerId,{x:a.clientX,y:a.clientY});let b=ax.current.size;b<2||(a.stopPropagation(),2===b&&a2())},[a2]),a4=(0,i.useCallback)((a,b)=>{if(0!==a.button||ap.current)return;if(a.stopPropagation(),aP(a,{kind:"state",id:b}),!p&&"transition"===n)return void(o?o!==b&&ao({stateName:o,targetName:b,x:a.clientX,y:a.clientY}):t?.("state",b));if(t?.("state",b),p||!v)return;let c=a0(b);am({name:b,pointerId:a.pointerId,startX:a.clientX,startY:a.clientY,origX:c.x,origY:c.y});let d=a.currentTarget;aw.current.set(a.pointerId,d),d.setPointerCapture?.(a.pointerId)},[t,a0,n,o,aP,am,p,v]),a5=(0,i.useCallback)(a=>{if("touch"===a.pointerType){aP(a,{kind:"canvas"}),a1(a);return}(1===a.button||0===a.button&&ap.current)&&(a.preventDefault(),a1(a))},[aP,a1]),a6=(0,i.useCallback)(a=>{ax.current.has(a.pointerId)&&ax.current.set(a.pointerId,{x:a.clientX,y:a.clientY});let b=aB.current;b&&b.pointerId===a.pointerId&&Math.hypot(a.clientX-b.x,a.clientY-b.y)>8&&aO(a.pointerId);let c=ay.current;if(c){if(a.pointerId!==c.a&&a.pointerId!==c.b)return;let b=ax.current.get(c.a),d=ax.current.get(c.b);if(!b||!d)return;let e=Math.hypot(d.x-b.x,d.y-b.y),f=aM((b.x+d.x)/2,(b.y+d.y)/2);j(M(O(c.start,c.start.scale*(e/c.startDist),{x:c.startMidX,y:c.startMidY}),f.x-c.startMidX,f.y-c.startMidY));return}let d=as.current;if(d){if(d.pointerId!==a.pointerId)return;let b=a.clientX-d.startX,c=a.clientY-d.startY,e=8*("touch"===a.pointerType);(Math.abs(b)>e||Math.abs(c)>e)&&(av.current=!0),j({x:d.origX+b,y:d.origY+c,scale:ai.current.scale});return}if(!aj||aj.pointerId!==a.pointerId||!v)return;let e=ai.current.scale,f=(a.clientX-aj.startX)/e,g=(a.clientY-aj.startY)/e,h=a0(aj.name);v(aj.name,{...h,x:Math.max(0,aj.origX+f),y:Math.max(0,aj.origY+g)})},[aj,a0,v,j,aO,aM]),a7=(0,i.useCallback)(a=>{ax.current.delete(a.pointerId),aO(a.pointerId),aN(a.pointerId);let b=ay.current;if(b&&(b.a===a.pointerId||b.b===a.pointerId)){ay.current=null,aA(!1);let c=b.a===a.pointerId?b.b:b.a,d=ax.current.get(c);if(d){let a=ai.current;as.current={pointerId:c,startX:d.x,startY:d.y,origX:a.x,origY:a.y},av.current=!0,au(!0)}}as.current?.pointerId===a.pointerId&&(as.current=null),al.current?.pointerId===a.pointerId&&am(null),as.current||au(!1),ay.current||aA(!1)},[aO,aN,am]);(0,i.useEffect)(()=>{let a=ag.current;if(!a)return;let b=a=>{a.preventDefault();let b=ai.current,c=V(a.deltaX,a.deltaMode),d=V(a.deltaY,a.deltaMode);if(a.ctrlKey||a.metaKey){let c=N(b,Math.exp(-(.0025*d)),aM(a.clientX,a.clientY));c!==b&&j(c);return}let e=a.shiftKey?-(c||d):-c,f=a.shiftKey?0:-d;(0!==e||0!==f)&&j(M(b,e,f))};return a.addEventListener("wheel",b,{passive:!1}),()=>a.removeEventListener("wheel",b)},[j,aM]),(0,i.useEffect)(()=>{let a=a=>{"Space"!==a.code||a.repeat||W(a.target)||W(document.activeElement)||(a.preventDefault(),ap.current=!0,ar(!0))},b=a=>{"Space"===a.code&&(ap.current=!1,ar(!1))},c=()=>{ap.current=!1,ar(!1)};return window.addEventListener("keydown",a),window.addEventListener("keyup",b),window.addEventListener("blur",c),()=>{window.removeEventListener("keydown",a),window.removeEventListener("keyup",b),window.removeEventListener("blur",c)}},[]);let a8=(0,i.useCallback)(a=>{let b=ag.current?.getBoundingClientRect(),c={x:(b?.width??0)/2,y:(b?.height??0)/2},d=ai.current,e=N(d,a,c);e!==d&&j(e)},[j]),a9=(0,i.useCallback)(()=>{let a=ag.current?.getBoundingClientRect(),b={x:(a?.width??0)/2,y:(a?.height??0)/2};j(O(ai.current,1,b))},[j]),ba=(0,i.useCallback)(()=>{let a=ag.current?.getBoundingClientRect();if(!a)return;let b=aH.map(a=>a0(a.name));j(b.length?function(a,b,c,d={}){let e=d.padding??48,f=d.maxScale??1,g=d.limits??J;if(0===a.length||b<=0||c<=0)return{...K};let h=1/0,i=1/0,j=-1/0,k=-1/0;for(let b of a)h=Math.min(h,b.x),i=Math.min(i,b.y),j=Math.max(j,b.x+b.width),k=Math.max(k,b.y+b.height);let l=Math.max(1,j-h),m=Math.max(1,k-i),n=L(Math.min(f,Math.min(Math.max(1,b-2*e)/l,Math.max(1,c-2*e)/m)),g);return{x:(b-l*n)/2-h*n,y:(c-m*n)/2-i*n,scale:n}}(b,a.width,a.height):{...K})},[aH,a0,j]);(0,i.useImperativeHandle)(b,()=>({fit:ba,zoomIn:()=>a8(1.25),zoomOut:()=>a8(.8),resetZoom:a9,element:()=>ag.current}),[ba,a8,a9]);let bb=(0,i.useRef)(ba);bb.current=ba,(0,i.useEffect)(()=>{if(void 0===s)return;let a=requestAnimationFrame(()=>bb.current());return()=>cancelAnimationFrame(a)},[s]);let bc=(0,i.useCallback)((a,b)=>{y&&(a.preventDefault(),a.stopPropagation(),y(a.clientX,a.clientY,b?{kind:"state",id:b}:{kind:"canvas"}))},[y]),bd=(0,i.useMemo)(()=>{let a=new Set(aH.map(a=>a.name)),b=[];for(let c of aH)for(let[d,e]of(c.transitions??[]).entries())e.nextState&&a.has(e.nextState)&&b.push({from:c.name,to:e.nextState,event:e.event,stateName:c.name,index:d,condition:e.condition});return b},[aH]),be=(0,i.useMemo)(()=>{let a=function(a,b){let c=a.map(({from:a,to:c})=>{var d,e;return a===c?null:(d=b(a),(e=b(c)).y>=d.y+d.height?["bottom","top"]:e.y+e.height<=d.y?["top","bottom"]:e.x>=d.x+d.width?["right","left"]:e.x+e.width<=d.x?["left","right"]:["bottom","top"])}),d=new Map,e=(a,b,c)=>{let e=`${a}\0${b}`,f=d.get(e);f?f.push(c):d.set(e,[c])},f=(a,b)=>"top"===b||"bottom"===b?a.x+a.width/2:a.y+a.height/2;a.forEach((a,d)=>{let g=c[d];if(!g)return;let[h,i]=g;e(a.from,h,{edge:d,toward:f(b(a.to),h),role:"out"}),e(a.to,i,{edge:d,toward:f(b(a.from),i),role:"in"})});let g=new Map;for(let[a,c]of d){let[d,e]=a.split("\0"),f=b(d),h=[...c].sort((a,b)=>a.toward===b.toward?a.edge-b.edge:a.toward-b.toward);h.forEach((a,b)=>{g.set(`${a.edge}\0${a.role}`,function(a,b,c,d){let e="top"===b||"bottom"===b,f=e?a.width:a.height,g=e?a.x+a.width/2:a.y+a.height/2,h=d>1?Math.min(.72*f,40*(d-1)):0,i=d>1?g-h/2+h*c/(d-1):g;return"top"===b?{x:i,y:a.y}:"bottom"===b?{x:i,y:a.y+a.height}:"left"===b?{x:a.x,y:i}:{x:a.x+a.width,y:i}}(f,e,b,h.length))})}return a.map((a,d)=>{let e=c[d];if(!e){var f;let c,d,e;return c=(f=b(a.from)).x+f.width,d=f.y+.35*f.height,I({x:c,y:d},{x:c+44,y:d-12},{x:c+44,y:(e=f.y+.65*f.height)+12},{x:c,y:e})}let h=g.get(`${d}\0out`),i=g.get(`${d}\0in`);var j=e[0];if("top"===j||"bottom"===j){let a=(h.y+i.y)/2;return I(h,{x:h.x,y:a},{x:i.x,y:a},i)}let k=(h.x+i.x)/2;return I(h,{x:k,y:h.y},{x:k,y:i.y},i)})}(bd,a0),b=new Map((function(a,b,c={}){let{along:d,aside:e,across:f}={...D,...c},g=a.map((a,b)=>({label:a,i:b,width:A(a).width})).sort((a,b)=>a.width===b.width?a.i-b.i:b.width-a.width),h=[];for(let{label:a}of g){let{width:c,height:g}=A(a),i=8*!!a.glyph,j=null,k=1/0;a:for(let l of f)for(let f of e)for(let e of d){let d=a.at(e),m=d.x+f*c,n=d.y+l*g,o={x:m-c/2,y:n-18,width:c,height:g},p=[...h,...b].filter(a=>C(o,a)).length,q={...o,cx:m+i,cy:n,label:a};if(0===p){j=q;break a}p<k&&(k=p,j=q)}j&&h.push(j)}return h})(bd.map((b,c)=>{let d=a0(b.from);return{id:`${b.stateName}:${b.index}`,event:b.event,condition:b.condition,glyph:!0,at:b.from===b.to?()=>({x:d.x+d.width+44+30,y:d.y+d.height/2+4}):a[c].at}}),aH.map(a=>a0(a.name))).map(a=>[a.label.id,a]));return bd.flatMap((c,d)=>{let e=`${c.stateName}:${c.index}`,f=b.get(e);return f?[{arrow:c,id:e,curve:a[d],spot:f}]:[]})},[bd,aH,a0]);(0,i.useEffect)(()=>{let a=new Set(aH.map(a=>a.name)),b=new Set(bd.map(a=>`${a.stateName}:${a.index}`)),c=aS.current===aI,d=[...a].filter(a=>!aQ.current.has(a));d.length&&aV(a=>{let b=new Set(a);return d.forEach(a=>b.add(a)),b});let e=[...b].filter(a=>!aT.current.has(a));e.length&&aX(a=>{let b=new Set(a);return e.forEach(a=>b.add(a)),b}),aV(b=>{let c=!1,d=new Set(b);return b.forEach(b=>{a.has(b)||(d.delete(b),c=!0)}),c?d:b}),aX(a=>{let c=!1,d=new Set(a);return a.forEach(a=>{b.has(a)||(d.delete(a),c=!0)}),c?d:a}),c?aZ(b=>{let c=new Map(b),d=!1;return aR.current.forEach((b,e)=>{a.has(e)||c.has(e)||(c.set(e,b),d=!0)}),a.forEach(a=>{c.delete(a)&&(d=!0)}),d?c:b}):aZ(a=>a.size?new Map:a),aQ.current=a,aR.current=new Map(aH.map(a=>[a.name,{state:a,pos:a0(a.name)}])),aT.current=b,aS.current=aI},[aH,aI,bd,a0]);let bf={...function(a){let b={};if(!a)return b;for(let[c,d]of Object.entries(a)){let a=T[c];a&&"string"==typeof d&&(b[a]=d)}return b}(ab),...ad},bg=aD?" slc-hud--coarse":"";return(0,h.jsxs)("div",{className:`slc-pane${ac?` ${ac}`:""}`,style:bf,"data-pinch-owner":af,children:[q&&aG.length>1&&(0,h.jsx)("div",{className:"slc-crumbs",children:aG.map((a,b)=>(0,h.jsxs)("span",{className:"slc-crumb-item",children:[b>0&&(0,h.jsx)("span",{className:"slc-crumb-sep",children:"›"}),(0,h.jsx)("button",{type:"button",className:`slc-crumb${b===aG.length-1?" slc-crumb--current":""}`,onClick:()=>x?.(b),children:a})]},`${a}-${b}`))}),(0,h.jsxs)("svg",{ref:ag,id:ae,className:"slc-surface",style:{cursor:at?"grabbing":aq?"grab":void 0,touchAction:"none",...aD?{WebkitUserSelect:"none",userSelect:"none",WebkitTouchCallout:"none"}:{}},onPointerDownCapture:a3,onPointerDown:a5,onPointerMove:a6,onPointerUp:a7,onPointerCancel:a7,onAuxClick:a=>a.preventDefault(),onClick:a=>{if(aC.current){aC.current=!1,a.stopPropagation();return}if(av.current){av.current=!1;return}a.target?.tagName==="svg"&&(u?.(),ao(null))},onContextMenu:a=>bc(a),children:[(0,h.jsxs)("defs",{children:[(0,h.jsx)("marker",{id:`slc-arrow-${ah}`,markerWidth:"10",markerHeight:"7",refX:"10",refY:"3.5",orient:"auto",children:(0,h.jsx)("polygon",{points:"0 0, 10 3.5, 0 7",className:"slc-arrowhead"})}),(0,h.jsx)("marker",{id:`slc-arrow-sel-${ah}`,markerWidth:"10",markerHeight:"7",refX:"10",refY:"3.5",orient:"auto",children:(0,h.jsx)("polygon",{points:"0 0, 10 3.5, 0 7",className:"slc-arrowhead slc-arrowhead--selected"})})]}),"transition"===n&&o&&(0,h.jsxs)("text",{x:"50%",y:"30",textAnchor:"middle",className:"slc-draw-hint",children:['Click target state to create transition from "',o,'"']}),(0,h.jsxs)("g",{transform:`translate(${g.x} ${g.y}) scale(${g.scale})`,style:at||az?{pointerEvents:"none"}:void 0,children:[be.map(({arrow:a,id:b,curve:c,spot:d})=>{let e="transition"===k.kind&&k.id===b,f=aW.has(b),g=c.at(.5),i=Math.hypot(g.x-d.cx,g.y-d.cy)>4;return(0,h.jsxs)("g",{children:[aD&&(0,h.jsx)("path",{d:c.path,fill:"none",stroke:"transparent",strokeWidth:a_,strokeLinecap:"round",pointerEvents:"stroke",onClick:a=>{a.stopPropagation(),t?.("transition",b)}}),(0,h.jsx)("path",{d:c.path,pathLength:1,markerEnd:`url(#slc-arrow${e?"-sel":""}-${ah})`,className:`slc-edge${e?" slc-edge--selected":""}${f?" slc-edge-enter":""}`,onClick:a=>{a.stopPropagation(),t?.("transition",b)}}),(0,h.jsxs)("g",{className:"slc-chip",onClick:a=>{a.stopPropagation(),t?.("transition",b)},children:[i&&(0,h.jsx)("line",{x1:g.x,y1:g.y,x2:d.cx,y2:d.cy-5,className:`slc-chip-leader${e?" slc-chip-leader--selected":""}`}),aD&&(0,h.jsx)("rect",{x:d.x-a$,y:d.y-a$,width:d.width+2*a$,height:d.height+2*a$,fill:"transparent",pointerEvents:"all"}),(0,h.jsx)("rect",{x:d.x,y:d.y,width:d.width,height:d.height,rx:4,className:`slc-chip-plate${e?" slc-chip-plate--selected":""}`}),(0,h.jsx)(Y,{mark:function(a){let b=a.toLowerCase();for(let{glyph:a,words:c}of G)if(c.some(a=>b.includes(a)))return a;return F}(a.event),x:B(d).x,y:B(d).y,selected:e}),(0,h.jsx)("text",{x:d.cx,y:d.cy-5,textAnchor:"middle",className:`slc-chip-text${e?" slc-chip-text--selected":""}`,children:a.event}),a.condition&&(0,h.jsxs)("text",{x:d.cx,y:d.cy+7,textAnchor:"middle",className:"slc-chip-guard",children:[(0,h.jsx)("title",{children:a.condition}),z(a.condition)]})]})]},`arrow-${b}`)}),aH.map(a=>{let b=a0(a.name),c="state"===k.kind&&k.id===a.name,d="final"===a.kind,e="history"===a.kind,f=X(a),g=o===a.name,i=aL.has(a.name),j=(a.onEntry?.actions?.length??0)>0,l=(a.onExit?.actions?.length??0)>0,m=aK.has(a.name),q=aU.has(a.name),r=aq?void 0:"transition"!==n||p?f?"slc-node--drillable":p||!v?"slc-node--static":"slc-node--draggable":"slc-node--drawing";return(0,h.jsxs)("g",{className:r,onPointerDown:b=>a4(b,a.name),onDoubleClick:b=>{b.stopPropagation(),f&&w?.(a.name)},onContextMenu:b=>bc(b,a.name),children:[aD&&(0,h.jsx)("rect",{x:b.x-a$,y:b.y-a$,width:b.width+2*a$,height:b.height+2*a$,rx:12,fill:"transparent",pointerEvents:"all"}),(0,h.jsxs)("g",{className:q?"slc-node-enter":void 0,children:[(0,h.jsx)("rect",{x:b.x,y:b.y,width:b.width,height:b.height,rx:e?30:d?4:8,strokeDasharray:d?"6 3":f?"4 2":void 0,className:["slc-node",d?"slc-node--final":f?"slc-node--composite":"",g?"slc-node--source":"",i?"slc-node--error":"",c?"slc-node--selected":"",m?"slc-node--active":""].filter(Boolean).join(" ")}),(0,h.jsx)("text",{x:b.x+b.width/2,y:b.y+(j||l?b.height/2:b.height/2+5),textAnchor:"middle",className:"slc-node-name",children:a.name}),a.kind&&"normal"!==a.kind&&(0,h.jsx)("text",{x:b.x+b.width-8,y:b.y+14,textAnchor:"end",className:"slc-node-kind",children:a.kind}),j&&(0,h.jsx)("text",{x:b.x+6,y:b.y+b.height-6,className:"slc-node-entry",children:"▸entry"}),l&&(0,h.jsx)("text",{x:b.x+b.width-6,y:b.y+b.height-6,textAnchor:"end",className:"slc-node-exit",children:"exit◂"}),i&&(0,h.jsx)("text",{x:b.x+6,y:b.y+14,className:"slc-node-warn",children:"⚠"}),f&&(0,h.jsxs)("text",{x:b.x+b.width/2,y:b.y+b.height-6,textAnchor:"middle",className:"slc-node-drill",children:["▼ ",(a.states?.length??0)+(a.parallel?.states.length??0)," children — ",aD?"double-tap":"double-click"," to enter"]})]})]},a.name)}),Array.from(aY.entries()).map(([a,{state:b,pos:c}])=>{let d="final"===b.kind,e=X(b);return(0,h.jsxs)("g",{className:"slc-node-exit-group",onAnimationEnd:b=>{"slc-node-out"===b.animationName&&aZ(b=>{if(!b.has(a))return b;let c=new Map(b);return c.delete(a),c})},children:[(0,h.jsx)("rect",{x:c.x,y:c.y,width:c.width,height:c.height,rx:"history"===b.kind?30:d?4:8,strokeDasharray:d?"6 3":e?"4 2":void 0,className:`slc-node${d?" slc-node--final":e?" slc-node--composite":""}`}),(0,h.jsx)("text",{x:c.x+c.width/2,y:c.y+c.height/2+5,textAnchor:"middle",className:"slc-node-name",children:a})]},`exit-${a}`)})]}),0===aH.length&&(0,h.jsx)("text",{x:"50%",y:"50%",textAnchor:"middle",className:"slc-empty",children:aa??"This level has no states."})]}),r&&(0,h.jsxs)("div",{className:`slc-hud${bg}`,children:[(0,h.jsx)("button",{type:"button",className:"slc-hud-btn",title:"Zoom out (Ctrl + wheel down, or pinch in)",disabled:g.scale<=J.min,onClick:()=>a8(.8),children:"−"}),(0,h.jsxs)("button",{type:"button",className:"slc-hud-btn slc-hud-btn--scale",title:"Reset zoom to 100%",onClick:a9,children:[Math.round(100*g.scale),"%"]}),(0,h.jsx)("button",{type:"button",className:"slc-hud-btn",title:"Zoom in (Ctrl + wheel up, or pinch out)",disabled:g.scale>=J.max,onClick:()=>a8(1.25),children:"+"}),(0,h.jsx)("span",{className:"slc-hud-sep",children:"|"}),(0,h.jsx)("button",{type:"button",className:"slc-hud-btn",title:"Fit the whole machine in view",onClick:ba,children:"⤢ Fit"}),_&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("span",{className:"slc-hud-sep",children:"|"}),_]}),(0,h.jsx)("span",{className:"slc-hud-sep",children:"|"}),(0,h.jsx)("span",{className:"slc-hud-hint",title:aD?"Drag to pan · pinch with two fingers to zoom · press and hold for the menu · double-tap a composite to enter it":"Wheel scrolls · Shift+wheel scrolls sideways · Ctrl+wheel zooms at the cursor · middle-drag or Space+drag pans",children:az?"pinching":at?"panning":aD?"drag · pinch · hold":aq?"space to pan":"wheel · ⌃wheel · space"})]}),an&&(0,h.jsxs)("div",{className:"slc-picker",style:{left:an.x,top:an.y-80},onClick:a=>a.stopPropagation(),children:[(0,h.jsxs)("div",{className:"slc-picker-title",children:[an.stateName," → ",an.targetName]}),(0,h.jsx)("div",{className:"slc-picker-sub",children:"Select event:"}),0===aJ.length?(0,h.jsx)("div",{className:"slc-picker-empty",children:"No events defined. Add events first."}):aJ.map(a=>(0,h.jsx)("button",{type:"button",className:"slc-picker-item",onClick:()=>{an&&(E?.(an.stateName,an.targetName,a),ao(null),H?.())},children:a},a)),(0,h.jsx)("button",{type:"button",className:"slc-picker-cancel",onClick:()=>{ao(null),H?.()},children:"Cancel"})]})]})}),_=a=>{let b,c=new Set,d=(a,d)=>{let e="function"==typeof a?a(b):a;if(!Object.is(e,b)){let a=b;b=(null!=d?d:"object"!=typeof e||null===e)?e:Object.assign({},b,e),c.forEach(c=>c(b,a))}},e=()=>b,f={setState:d,getState:e,getInitialState:()=>g,subscribe:a=>(c.add(a),()=>c.delete(a))},g=b=a(d,e,f);return f},aa=a=>{let b=a?_(a):_,c=a=>(function(a,b=a=>a){let c=i.default.useSyncExternalStore(a.subscribe,i.default.useCallback(()=>b(a.getState()),[a,b]),i.default.useCallback(()=>b(a.getInitialState()),[a,b]));return i.default.useDebugValue(c),c})(b,a);return Object.assign(c,b),c};var ab=a.i(53681);let ac=Object.create(null);ac.open="0",ac.close="1",ac.ping="2",ac.pong="3",ac.message="4",ac.upgrade="5",ac.noop="6";let ad=Object.create(null);Object.keys(ac).forEach(a=>{ad[ac[a]]=a});let ae={type:"error",data:"parser error"},af=({type:a,data:b},c,d)=>d(b instanceof ArrayBuffer||ArrayBuffer.isView(b)?c?b:"b"+ag(b,!0).toString("base64"):ac[a]+(b||"")),ag=(a,b)=>Buffer.isBuffer(a)||a instanceof Uint8Array&&!b?a:a instanceof ArrayBuffer?Buffer.from(a):Buffer.from(a.buffer,a.byteOffset,a.byteLength),ah=(a,b)=>{if("string"!=typeof a)return{type:"message",data:ai(a,b)};let c=a.charAt(0);return"b"===c?{type:"message",data:ai(Buffer.from(a.substring(1),"base64"),b)}:ad[c]?a.length>1?{type:ad[c],data:a.substring(1)}:{type:ad[c]}:ae},ai=(a,b)=>"arraybuffer"===b?a instanceof ArrayBuffer?a:Buffer.isBuffer(a)?a.buffer.slice(a.byteOffset,a.byteOffset+a.byteLength):a.buffer:Buffer.isBuffer(a)?a:Buffer.from(a);function aj(a){return a.reduce((a,b)=>a+b.length,0)}function ak(a,b){if(a[0].length===b)return a.shift();let c=new Uint8Array(b),d=0;for(let e=0;e<b;e++)c[e]=a[0][d++],d===a[0].length&&(a.shift(),d=0);return a.length&&d<a[0].length&&(a[0]=a[0].slice(d)),c}function al(a){if(a){var b=a;for(var c in al.prototype)b[c]=al.prototype[c];return b}}al.prototype.on=al.prototype.addEventListener=function(a,b){return this._callbacks=this._callbacks||{},(this._callbacks["$"+a]=this._callbacks["$"+a]||[]).push(b),this},al.prototype.once=function(a,b){function c(){this.off(a,c),b.apply(this,arguments)}return c.fn=b,this.on(a,c),this},al.prototype.off=al.prototype.removeListener=al.prototype.removeAllListeners=al.prototype.removeEventListener=function(a,b){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var c,d=this._callbacks["$"+a];if(!d)return this;if(1==arguments.length)return delete this._callbacks["$"+a],this;for(var e=0;e<d.length;e++)if((c=d[e])===b||c.fn===b){d.splice(e,1);break}return 0===d.length&&delete this._callbacks["$"+a],this},al.prototype.emit=function(a){this._callbacks=this._callbacks||{};for(var b=Array(arguments.length-1),c=this._callbacks["$"+a],d=1;d<arguments.length;d++)b[d-1]=arguments[d];if(c){c=c.slice(0);for(var d=0,e=c.length;d<e;++d)c[d].apply(this,b)}return this},al.prototype.emitReserved=al.prototype.emit,al.prototype.listeners=function(a){return this._callbacks=this._callbacks||{},this._callbacks["$"+a]||[]},al.prototype.hasListeners=function(a){return!!this.listeners(a).length};let am=process.nextTick,an=a.g;class ao{constructor(){this._cookies=new Map}parseCookies(a){a&&a.forEach(a=>{let b=function(a){let b=a.split("; "),c=b[0].indexOf("=");if(-1===c)return;let d=b[0].substring(0,c).trim();if(!d.length)return;let e=b[0].substring(c+1).trim();34===e.charCodeAt(0)&&(e=e.slice(1,-1));let f={name:d,value:e};for(let a=1;a<b.length;a++){let c=b[a].split("=");if(2!==c.length)continue;let d=c[0].trim(),e=c[1].trim();switch(d){case"Expires":f.expires=new Date(e);break;case"Max-Age":let g=new Date;g.setUTCSeconds(g.getUTCSeconds()+parseInt(e,10)),f.expires=g}}return f}(a);b&&this._cookies.set(b.name,b)})}get cookies(){let a=Date.now();return this._cookies.forEach((b,c)=>{var d;(null==(d=b.expires)?void 0:d.getTime())<a&&this._cookies.delete(c)}),this._cookies.entries()}addCookies(a){let b=[];for(let[a,c]of this.cookies)b.push(`${a}=${c.value}`);b.length&&(a.setDisableHeaderCheck(!0),a.setRequestHeader("cookie",b.join("; ")))}appendCookies(a){for(let[b,c]of this.cookies)a.append("cookie",`${b}=${c.value}`)}}function ap(a,...b){return b.reduce((b,c)=>(a.hasOwnProperty(c)&&(b[c]=a[c]),b),{})}let aq=an.setTimeout,ar=an.clearTimeout;function as(a,b){b.useNativeTimers?(a.setTimeoutFn=aq.bind(an),a.clearTimeoutFn=ar.bind(an)):(a.setTimeoutFn=an.setTimeout.bind(an),a.clearTimeoutFn=an.clearTimeout.bind(an))}function at(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}var au=a.i(72724);let av=(0,au.default)("engine.io-client:transport");class aw extends Error{constructor(a,b,c){super(a),this.description=b,this.context=c,this.type="TransportError"}}class ax extends al{constructor(a){super(),this.writable=!1,as(this,a),this.opts=a,this.query=a.query,this.socket=a.socket,this.supportsBinary=!a.forceBase64}onError(a,b,c){return super.emitReserved("error",new aw(a,b,c)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return("opening"===this.readyState||"open"===this.readyState)&&(this.doClose(),this.onClose()),this}send(a){"open"===this.readyState?this.write(a):av("transport is not open, discarding packets")}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(a){let b=ah(a,this.socket.binaryType);this.onPacket(b)}onPacket(a){super.emitReserved("packet",a)}onClose(a){this.readyState="closed",super.emitReserved("close",a)}pause(a){}createUri(a,b={}){return a+"://"+this._hostname()+this._port()+this.opts.path+this._query(b)}_hostname(){let a=this.opts.hostname;return -1===a.indexOf(":")?a:"["+a+"]"}_port(){return this.opts.port&&(this.opts.secure&&443!==Number(this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(a){let b=function(a){let b="";for(let c in a)a.hasOwnProperty(c)&&(b.length&&(b+="&"),b+=encodeURIComponent(c)+"="+encodeURIComponent(a[c]));return b}(a);return b.length?"?"+b:""}}let ay=(0,au.default)("engine.io-client:polling");class az extends ax{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(a){this.readyState="pausing";let b=()=>{ay("paused"),this.readyState="paused",a()};if(this._polling||!this.writable){let a=0;this._polling&&(ay("we are currently polling - waiting to pause"),a++,this.once("pollComplete",function(){ay("pre-pause polling complete"),--a||b()})),this.writable||(ay("we are currently writing - waiting to pause"),a++,this.once("drain",function(){ay("pre-pause writing complete"),--a||b()}))}else b()}_poll(){ay("polling"),this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(a){ay("polling got data %s",a);let b=a=>{if("opening"===this.readyState&&"open"===a.type&&this.onOpen(),"close"===a.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(a)};((a,b)=>{let c=a.split("\x1e"),d=[];for(let a=0;a<c.length;a++){let e=ah(c[a],b);if(d.push(e),"error"===e.type)break}return d})(a,this.socket.binaryType).forEach(b),"closed"!==this.readyState&&(this._polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState?this._poll():ay('ignoring poll - transport state "%s"',this.readyState))}doClose(){let a=()=>{ay("writing close packet"),this.write([{type:"close"}])};"open"===this.readyState?(ay("transport open - closing"),a()):(ay("transport not open - deferring close"),this.once("open",a))}write(a){var b;let c,d,e;this.writable=!1,b=a=>{this.doWrite(a,()=>{this.writable=!0,this.emitReserved("drain")})},d=Array(c=a.length),e=0,a.forEach((a,f)=>{af(a,!1,a=>{d[f]=a,++e===c&&b(d.join("\x1e"))})})}uri(){let a=this.opts.secure?"https":"http",b=this.query||{};return!1!==this.opts.timestampRequests&&(b[this.opts.timestampParam]=at()),this.supportsBinary||b.sid||(b.b64=1),this.createUri(a,b)}}let aA=!1;try{aA="u">typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(a){}let aB=aA,aC=(0,au.default)("engine.io-client:polling");function aD(){}class aE extends az{constructor(a){if(super(a),"u">typeof location){const b="https:"===location.protocol;let c=location.port;c||(c=b?"443":"80"),this.xd="u">typeof location&&a.hostname!==location.hostname||c!==a.port}}doWrite(a,b){let c=this.request({method:"POST",data:a});c.on("success",b),c.on("error",(a,b)=>{this.onError("xhr post error",a,b)})}doPoll(){aC("xhr poll");let a=this.request();a.on("data",this.onData.bind(this)),a.on("error",(a,b)=>{this.onError("xhr poll error",a,b)}),this.pollXhr=a}}class aF extends al{constructor(a,b,c){super(),this.createRequest=a,as(this,c),this._opts=c,this._method=c.method||"GET",this._uri=b,this._data=void 0!==c.data?c.data:null,this._create()}_create(){var a;let b=ap(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");b.xdomain=!!this._opts.xd;let c=this._xhr=this.createRequest(b);try{aC("xhr open %s: %s",this._method,this._uri),c.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders)for(let a in c.setDisableHeaderCheck&&c.setDisableHeaderCheck(!0),this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(a)&&c.setRequestHeader(a,this._opts.extraHeaders[a])}catch(a){}if("POST"===this._method)try{c.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(a){}try{c.setRequestHeader("Accept","*/*")}catch(a){}null==(a=this._opts.cookieJar)||a.addCookies(c),"withCredentials"in c&&(c.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(c.timeout=this._opts.requestTimeout),c.onreadystatechange=()=>{var a;3===c.readyState&&(null==(a=this._opts.cookieJar)||a.parseCookies(c.getResponseHeader("set-cookie"))),4===c.readyState&&(200===c.status||1223===c.status?this._onLoad():this.setTimeoutFn(()=>{this._onError("number"==typeof c.status?c.status:0)},0))},aC("xhr data %s",this._data),c.send(this._data)}catch(a){this.setTimeoutFn(()=>{this._onError(a)},0);return}"u">typeof document&&(this._index=aF.requestsCount++,aF.requests[this._index]=this)}_onError(a){this.emitReserved("error",a,this._xhr),this._cleanup(!0)}_cleanup(a){if(void 0!==this._xhr&&null!==this._xhr){if(this._xhr.onreadystatechange=aD,a)try{this._xhr.abort()}catch(a){}"u">typeof document&&delete aF.requests[this._index],this._xhr=null}}_onLoad(){let a=this._xhr.responseText;null!==a&&(this.emitReserved("data",a),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}}function aG(){for(let a in aF.requests)aF.requests.hasOwnProperty(a)&&aF.requests[a].abort()}aF.requestsCount=0,aF.requests={},"u">typeof document&&("function"==typeof attachEvent?attachEvent("onunload",aG):"function"==typeof addEventListener&&addEventListener("onpagehide"in an?"pagehide":"unload",aG,!1)),(d=function(a){let b=a.xdomain;try{if("u">typeof XMLHttpRequest&&(!b||aB))return new XMLHttpRequest}catch(a){}if(!b)try{return new an[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch(a){}}({xdomain:!1}))&&d.responseType;let aH=ab.default||ab;a.i(31594),a.i(15251),a.i(31276),a.i(28719),a.i(63349),a.i(54129);var aI=a.i(50842);a.i(36972),aI.default;let aJ=(0,au.default)("engine.io-client:websocket"),aK="u">typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class aL extends ax{get name(){return"websocket"}doOpen(){let a=this.uri(),b=this.opts.protocols,c=aK?{}:ap(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(c.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(a,b,c)}catch(a){return this.emitReserved("error",a)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=a=>this.onClose({description:"websocket connection closed",context:a}),this.ws.onmessage=a=>this.onData(a.data),this.ws.onerror=a=>this.onError("websocket error",a)}write(a){this.writable=!1;for(let b=0;b<a.length;b++){let c=a[b],d=b===a.length-1;af(c,this.supportsBinary,a=>{try{this.doWrite(c,a)}catch(a){aJ("websocket closed before onclose event")}d&&am(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){void 0!==this.ws&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){let a=this.opts.secure?"wss":"ws",b=this.query||{};return this.opts.timestampRequests&&(b[this.opts.timestampParam]=at()),this.supportsBinary||(b.b64=1),this.createUri(a,b)}}an.WebSocket||an.MozWebSocket;let aM=(0,au.default)("engine.io-client:webtransport"),aN={websocket:class extends aL{createSocket(a,b,c){var d;if(null==(d=this.socket)?void 0:d._cookieJar)for(let[a,b]of(c.headers=c.headers||{},c.headers.cookie="string"==typeof c.headers.cookie?[c.headers.cookie]:c.headers.cookie||[],this.socket._cookieJar.cookies))c.headers.cookie.push(`${a}=${b.value}`);return new aI.default(a,b,c)}doWrite(a,b){let c={};a.options&&(c.compress=a.options.compress),this.opts.perMessageDeflate&&("string"==typeof b?Buffer.byteLength(b):b.length)<this.opts.perMessageDeflate.threshold&&(c.compress=!1),this.ws.send(b,c)}},webtransport:class extends ax{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(a){return this.emitReserved("error",a)}this._transport.closed.then(()=>{aM("transport closed gracefully"),this.onClose()}).catch(a=>{aM("transport closed due to %s",a),this.onError("webtransport error",a)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(a=>{var d,e;let f,g,h,i,j=(d=Number.MAX_SAFE_INTEGER,e=this.socket.binaryType,c||(c=new TextDecoder),f=[],g=0,h=-1,i=!1,new TransformStream({transform(a,b){for(f.push(a);;){if(0===g){if(1>aj(f))break;let a=ak(f,1);i=(128&a[0])==128,g=(h=127&a[0])<126?3:126===h?1:2}else if(1===g){if(2>aj(f))break;let a=ak(f,2);h=new DataView(a.buffer,a.byteOffset,a.length).getUint16(0),g=3}else if(2===g){if(8>aj(f))break;let a=ak(f,8),c=new DataView(a.buffer,a.byteOffset,a.length),d=c.getUint32(0);if(d>2097151){b.enqueue(ae);break}h=0x100000000*d+c.getUint32(4),g=3}else{if(aj(f)<h)break;let a=ak(f,h);b.enqueue(ah(i?a:c.decode(a),e)),g=0}if(0===h||h>d){b.enqueue(ae);break}}}})),k=a.readable.pipeThrough(j).getReader(),l=new TransformStream({transform(a,c){!function(a,c){if(a.data instanceof ArrayBuffer||ArrayBuffer.isView(a.data))return c(ag(a.data,!1));af(a,!0,a=>{b||(b=new TextEncoder),c(b.encode(a))})}(a,b=>{let d,e=b.length;if(e<126)new DataView((d=new Uint8Array(1)).buffer).setUint8(0,e);else if(e<65536){let a=new DataView((d=new Uint8Array(3)).buffer);a.setUint8(0,126),a.setUint16(1,e)}else{let a=new DataView((d=new Uint8Array(9)).buffer);a.setUint8(0,127),a.setBigUint64(1,BigInt(e))}a.data&&"string"!=typeof a.data&&(d[0]|=128),c.enqueue(d),c.enqueue(b)})}});l.readable.pipeTo(a.writable),this._writer=l.writable.getWriter();let m=()=>{k.read().then(({done:a,value:b})=>{a?aM("session is closed"):(aM("received chunk: %o",b),this.onPacket(b),m())}).catch(a=>{aM("an error occurred while reading: %s",a)})};m();let n={type:"open"};this.query.sid&&(n.data=`{"sid":"${this.query.sid}"}`),this._writer.write(n).then(()=>this.onOpen())})})}write(a){this.writable=!1;for(let b=0;b<a.length;b++){let c=a[b],d=b===a.length-1;this._writer.write(c).then(()=>{d&&am(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var a;null==(a=this._transport)||a.close()}},polling:class extends aE{request(a={}){var b;return Object.assign(a,{xd:this.xd,cookieJar:null==(b=this.socket)?void 0:b._cookieJar},this.opts),new aF(a=>new aH(a),this.uri(),a)}}},aO=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,aP=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function aQ(a){var b,c;let d,e;if(a.length>8e3)throw"URI too long";let f=a,g=a.indexOf("["),h=a.indexOf("]");-1!=g&&-1!=h&&(a=a.substring(0,g)+a.substring(g,h).replace(/:/g,";")+a.substring(h,a.length));let i=aO.exec(a||""),j={},k=14;for(;k--;)j[aP[k]]=i[k]||"";return -1!=g&&-1!=h&&(j.source=f,j.host=j.host.substring(1,j.host.length-1).replace(/;/g,":"),j.authority=j.authority.replace("[","").replace("]","").replace(/;/g,":"),j.ipv6uri=!0),d=(b=j.path).replace(/\/{2,9}/g,"/").split("/"),("/"==b.slice(0,1)||0===b.length)&&d.splice(0,1),"/"==b.slice(-1)&&d.splice(d.length-1,1),j.pathNames=d,c=j.query,e={},c.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(a,b,c){b&&(e[b]=c)}),j.queryKey=e,j}let aR=(0,au.default)("engine.io-client:socket"),aS="function"==typeof addEventListener&&"function"==typeof removeEventListener,aT=[];aS&&addEventListener("offline",()=>{aR("closing %d connection(s) because the network was lost",aT.length),aT.forEach(a=>a())},!1);class aU extends al{constructor(a,b){if(super(),this.binaryType="nodebuffer",this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,a&&"object"==typeof a&&(b=a,a=null),a){const c=aQ(a);b.hostname=c.host,b.secure="https"===c.protocol||"wss"===c.protocol,b.port=c.port,c.query&&(b.query=c.query)}else b.host&&(b.hostname=aQ(b.host).host);as(this,b),this.secure=null!=b.secure?b.secure:"u">typeof location&&"https:"===location.protocol,b.hostname&&!b.port&&(b.port=this.secure?"443":"80"),this.hostname=b.hostname||("u">typeof location?location.hostname:"localhost"),this.port=b.port||("u">typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},b.transports.forEach(a=>{let b=a.prototype.name;this.transports.push(b),this._transportsByName[b]=a}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},b),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(a){let b={},c=a.split("&");for(let a=0,d=c.length;a<d;a++){let d=c[a].split("=");b[decodeURIComponent(d[0])]=decodeURIComponent(d[1])}return b}(this.opts.query)),aS&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(aR("adding listener for the 'offline' event"),this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},aT.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=new ao),this._open()}createTransport(a){aR('creating transport "%s"',a);let b=Object.assign({},this.opts.query);b.EIO=4,b.transport=a,this.id&&(b.sid=this.id);let c=Object.assign({},this.opts,{query:b,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[a]);return aR("options: %j",c),new this._transportsByName[a](c)}_open(){if(0===this.transports.length)return void this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);let a=this.opts.rememberUpgrade&&aU.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket")?"websocket":this.transports[0];this.readyState="opening";let b=this.createTransport(a);b.open(),this.setTransport(b)}setTransport(a){aR("setting transport %s",a.name),this.transport&&(aR("clearing existing transport %s",this.transport.name),this.transport.removeAllListeners()),this.transport=a,a.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",a=>this._onClose("transport close",a))}onOpen(){aR("socket open"),this.readyState="open",aU.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush()}_onPacket(a){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(aR('socket receive: type "%s", data "%s"',a.type,a.data),this.emitReserved("packet",a),this.emitReserved("heartbeat"),a.type){case"open":this.onHandshake(JSON.parse(a.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":let b=Error("server error");b.code=a.data,this._onError(b);break;case"message":this.emitReserved("data",a.data),this.emitReserved("message",a.data)}else aR('packet received with socket readyState "%s"',this.readyState)}onHandshake(a){this.emitReserved("handshake",a),this.id=a.sid,this.transport.query.sid=a.sid,this._pingInterval=a.pingInterval,this._pingTimeout=a.pingTimeout,this._maxPayload=a.maxPayload,this.onOpen(),"closed"!==this.readyState&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);let a=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+a,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},a),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){let a=this._getWritablePackets();aR("flushing %d packets in socket",a.length),this.transport.send(a),this._prevBufferLen=a.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let a=1;for(let b=0;b<this.writeBuffer.length;b++){let c=this.writeBuffer[b].data;if(c&&(a+="string"==typeof c?function(a){let b=0,c=0;for(let d=0,e=a.length;d<e;d++)(b=a.charCodeAt(d))<128?c+=1:b<2048?c+=2:b<55296||b>=57344?c+=3:(d++,c+=4);return c}(c):Math.ceil(1.33*(c.byteLength||c.size))),b>0&&a>this._maxPayload)return aR("only send %d out of %d packets",b,this.writeBuffer.length),this.writeBuffer.slice(0,b);a+=2}return aR("payload size is %d (max: %d)",a,this._maxPayload),this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;let a=Date.now()>this._pingTimeoutTime;return a&&(aR("throttled timer detected, scheduling connection close"),this._pingTimeoutTime=0,am(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),a}write(a,b,c){return this._sendPacket("message",a,b,c),this}send(a,b,c){return this._sendPacket("message",a,b,c),this}_sendPacket(a,b,c,d){if("function"==typeof b&&(d=b,b=void 0),"function"==typeof c&&(d=c,c=null),"closing"===this.readyState||"closed"===this.readyState)return;(c=c||{}).compress=!1!==c.compress;let e={type:a,data:b,options:c};this.emitReserved("packetCreate",e),this.writeBuffer.push(e),d&&this.once("flush",d),this.flush()}close(){let a=()=>{this._onClose("forced close"),aR("socket closing - telling transport to close"),this.transport.close()},b=()=>{this.off("upgrade",b),this.off("upgradeError",b),a()},c=()=>{this.once("upgrade",b),this.once("upgradeError",b)};return("opening"===this.readyState||"open"===this.readyState)&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?c():a()}):this.upgrading?c():a()),this}_onError(a){if(aR("socket error %j",a),aU.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&"opening"===this.readyState)return aR("trying next transport"),this.transports.shift(),this._open();this.emitReserved("error",a),this._onClose("transport error",a)}_onClose(a,b){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState){if(aR('socket close with reason: "%s"',a),this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),aS&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){let a=aT.indexOf(this._offlineEventListener);-1!==a&&(aR("removing listener for the 'offline' event"),aT.splice(a,1))}this.readyState="closed",this.id=null,this.emitReserved("close",a,b),this.writeBuffer=[],this._prevBufferLen=0}}}aU.protocol=4;class aV extends aU{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),"open"===this.readyState&&this.opts.upgrade){aR("starting upgrade probes");for(let a=0;a<this._upgrades.length;a++)this._probe(this._upgrades[a])}}_probe(a){aR('probing transport "%s"',a);let b=this.createTransport(a),c=!1;aU.priorWebsocketSuccess=!1;let d=()=>{c||(aR('probe transport "%s" opened',a),b.send([{type:"ping",data:"probe"}]),b.once("packet",d=>{if(!c)if("pong"===d.type&&"probe"===d.data){if(aR('probe transport "%s" pong',a),this.upgrading=!0,this.emitReserved("upgrading",b),!b)return;aU.priorWebsocketSuccess="websocket"===b.name,aR('pausing current transport "%s"',this.transport.name),this.transport.pause(()=>{c||"closed"!==this.readyState&&(aR("changing transport and sending upgrade packet"),j(),this.setTransport(b),b.send([{type:"upgrade"}]),this.emitReserved("upgrade",b),b=null,this.upgrading=!1,this.flush())})}else{aR('probe transport "%s" failed',a);let c=Error("probe error");c.transport=b.name,this.emitReserved("upgradeError",c)}}))};function e(){c||(c=!0,j(),b.close(),b=null)}let f=c=>{let d=Error("probe error: "+c);d.transport=b.name,e(),aR('probe transport "%s" failed because of error: %s',a,c),this.emitReserved("upgradeError",d)};function g(){f("transport closed")}function h(){f("socket closed")}function i(a){b&&a.name!==b.name&&(aR('"%s" works - aborting "%s"',a.name,b.name),e())}let j=()=>{b.removeListener("open",d),b.removeListener("error",f),b.removeListener("close",g),this.off("close",h),this.off("upgrading",i)};b.once("open",d),b.once("error",f),b.once("close",g),this.once("close",h),this.once("upgrading",i),-1!==this._upgrades.indexOf("webtransport")&&"webtransport"!==a?this.setTimeoutFn(()=>{c||b.open()},200):b.open()}onHandshake(a){this._upgrades=this._filterUpgrades(a.upgrades),super.onHandshake(a)}_filterUpgrades(a){let b=[];for(let c=0;c<a.length;c++)~this.transports.indexOf(a[c])&&b.push(a[c]);return b}}class aW extends aV{constructor(a,b={}){const c="object"==typeof a,d=c?{...a}:{...b};(!d.transports||d.transports&&"string"==typeof d.transports[0])&&(d.transports=(d.transports||["polling","websocket","webtransport"]).map(a=>aN[a]).filter(a=>!!a)),super(c?d:a,d)}}aW.protocol;let aX=(0,au.default)("socket.io-client:url"),aY="function"==typeof ArrayBuffer,aZ=Object.prototype.toString,a$="function"==typeof Blob||"u">typeof Blob&&"[object BlobConstructor]"===aZ.call(Blob),a_="function"==typeof File||"u">typeof File&&"[object FileConstructor]"===aZ.call(File);function a0(a){return aY&&(a instanceof ArrayBuffer||("function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(a):a.buffer instanceof ArrayBuffer))||a$&&a instanceof Blob||a_&&a instanceof File}let a1=(0,au.default)("socket.io-parser"),a2=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];(f=g||(g={}))[f.CONNECT=0]="CONNECT",f[f.DISCONNECT=1]="DISCONNECT",f[f.EVENT=2]="EVENT",f[f.ACK=3]="ACK",f[f.CONNECT_ERROR=4]="CONNECT_ERROR",f[f.BINARY_EVENT=5]="BINARY_EVENT",f[f.BINARY_ACK=6]="BINARY_ACK";class a3{constructor(a){this.replacer=a}encode(a){return(a1("encoding packet %j",a),(a.type===g.EVENT||a.type===g.ACK)&&function a(b,c){if(!b||"object"!=typeof b)return!1;if(Array.isArray(b)){for(let c=0,d=b.length;c<d;c++)if(a(b[c]))return!0;return!1}if(a0(b))return!0;if(b.toJSON&&"function"==typeof b.toJSON&&1==arguments.length)return a(b.toJSON(),!0);for(let c in b)if(Object.prototype.hasOwnProperty.call(b,c)&&a(b[c]))return!0;return!1}(a))?this.encodeAsBinary({type:a.type===g.EVENT?g.BINARY_EVENT:g.BINARY_ACK,nsp:a.nsp,data:a.data,id:a.id}):[this.encodeAsString(a)]}encodeAsString(a){let b=""+a.type;return(a.type===g.BINARY_EVENT||a.type===g.BINARY_ACK)&&(b+=a.attachments+"-"),a.nsp&&"/"!==a.nsp&&(b+=a.nsp+","),null!=a.id&&(b+=a.id),null!=a.data&&(b+=JSON.stringify(a.data,this.replacer)),a1("encoded %j as %s",a,b),b}encodeAsBinary(a){let b,c,d=(b=[],c=a.data,a.data=function a(b,c,d){if(!b)return b;if(a0(b)){let a={_placeholder:!0,num:c.length};return c.push(b),a}if(Array.isArray(b)){let d=Array(b.length);for(let e=0;e<b.length;e++)d[e]=a(b[e],c);return d}if("object"==typeof b&&!(b instanceof Date)){if(b.toJSON&&"function"==typeof b.toJSON&&!d)return a(b.toJSON(),c,!0);let e={};for(let d in b)Object.prototype.hasOwnProperty.call(b,d)&&(e[d]=a(b[d],c));return e}return b}(c,b),a.attachments=b.length,{packet:a,buffers:b}),e=this.encodeAsString(d.packet),f=d.buffers;return f.unshift(e),f}}class a4 extends al{constructor(a){super(),this.opts=Object.assign({reviver:void 0,maxAttachments:10},"function"==typeof a?{reviver:a}:a)}add(a){let b;if("string"==typeof a){if(this.reconstructor)throw Error("got plaintext data when reconstructing a packet");let c=(b=this.decodeString(a)).type===g.BINARY_EVENT;c||b.type===g.BINARY_ACK?(b.type=c?g.EVENT:g.ACK,this.reconstructor=new a5(b)):super.emitReserved("decoded",b)}else if(a0(a)||a.base64)if(this.reconstructor)(b=this.reconstructor.takeBinaryData(a))&&(this.reconstructor=null,super.emitReserved("decoded",b));else throw Error("got binary data when not reconstructing a packet");else throw Error("Unknown type: "+a)}decodeString(a){let b=0,c={type:Number(a.charAt(0))};if(void 0===g[c.type])throw Error("unknown packet type "+c.type);if(c.type===g.BINARY_EVENT||c.type===g.BINARY_ACK){let d=b+1;for(;"-"!==a.charAt(++b)&&b!=a.length;);let e=a.substring(d,b);if(e!=Number(e)||"-"!==a.charAt(b))throw Error("Illegal attachments");let f=Number(e);if(!a6(f)||f<1)throw Error("Illegal attachments");if(f>this.opts.maxAttachments)throw Error("too many attachments");c.attachments=f}if("/"===a.charAt(b+1)){let d=b+1;for(;++b&&","!==a.charAt(b)&&b!==a.length;);c.nsp=a.substring(d,b)}else c.nsp="/";let d=a.charAt(b+1);if(""!==d&&Number(d)==d){let d=b+1;for(;++b;){let c=a.charAt(b);if(null==c||Number(c)!=c){--b;break}if(b===a.length)break}c.id=Number(a.substring(d,b+1))}if(a.charAt(++b)){let d=this.tryParse(a.substr(b));if(a4.isPayloadValid(c.type,d))c.data=d;else throw Error("invalid payload")}return a1("decoded %s as %j",a,c),c}tryParse(a){try{return JSON.parse(a,this.opts.reviver)}catch(a){return!1}}static isPayloadValid(a,b){switch(a){case g.CONNECT:return a7(b);case g.DISCONNECT:return void 0===b;case g.CONNECT_ERROR:return"string"==typeof b||a7(b);case g.EVENT:case g.BINARY_EVENT:return Array.isArray(b)&&("number"==typeof b[0]||"string"==typeof b[0]&&-1===a2.indexOf(b[0]));case g.ACK:case g.BINARY_ACK:return Array.isArray(b)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class a5{constructor(a){this.packet=a,this.buffers=[],this.reconPack=a}takeBinaryData(a){if(this.buffers.push(a),this.buffers.length===this.reconPack.attachments){var b,c;let a=(b=this.reconPack,c=this.buffers,b.data=function a(b,c){if(!b)return b;if(b&&!0===b._placeholder){if("number"==typeof b.num&&b.num>=0&&b.num<c.length)return c[b.num];throw Error("illegal attachments")}if(Array.isArray(b))for(let d=0;d<b.length;d++)b[d]=a(b[d],c);else if("object"==typeof b)for(let d in b)Object.prototype.hasOwnProperty.call(b,d)&&(b[d]=a(b[d],c));return b}(b.data,c),delete b.attachments,b);return this.finishedReconstruction(),a}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}let a6=Number.isInteger||function(a){return"number"==typeof a&&isFinite(a)&&Math.floor(a)===a};function a7(a){return"[object Object]"===Object.prototype.toString.call(a)}function a8(a){var b;return"string"==typeof a.nsp&&(void 0===(b=a.id)||a6(b))&&function(a,b){switch(a){case g.CONNECT:return void 0===b||a7(b);case g.DISCONNECT:return void 0===b;case g.EVENT:return Array.isArray(b)&&("number"==typeof b[0]||"string"==typeof b[0]&&-1===a2.indexOf(b[0]));case g.ACK:return Array.isArray(b);case g.CONNECT_ERROR:return"string"==typeof b||a7(b);default:return!1}}(a.type,a.data)}function a9(a,b,c){return a.on(b,c),function(){a.off(b,c)}}a.s(["Decoder",()=>a4,"Encoder",()=>a3,"PacketType",()=>g,"isPacketValid",()=>a8,"protocol",0,5],10419);let ba=(0,au.default)("socket.io-client:socket"),bb=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class bc extends al{constructor(a,b,c){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=a,this.nsp=b,c&&c.auth&&(this.auth=c.auth),this._opts=Object.assign({},c),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;let a=this.io;this.subs=[a9(a,"open",this.onopen.bind(this)),a9(a,"packet",this.onpacket.bind(this)),a9(a,"error",this.onerror.bind(this)),a9(a,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...a){return a.unshift("message"),this.emit.apply(this,a),this}emit(a,...b){var c,d,e;if(bb.hasOwnProperty(a))throw Error('"'+a.toString()+'" is a reserved event name');if(b.unshift(a),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(b),this;let f={type:g.EVENT,data:b};if(f.options={},f.options.compress=!1!==this.flags.compress,"function"==typeof b[b.length-1]){let a=this.ids++;ba("emitting packet with ack id %d",a);let c=b.pop();this._registerAckCallback(a,c),f.id=a}let h=null==(d=null==(c=this.io.engine)?void 0:c.transport)?void 0:d.writable,i=this.connected&&!(null==(e=this.io.engine)?void 0:e._hasPingExpired());return this.flags.volatile&&!h?ba("discard packet as the transport is not currently writable"):i?(this.notifyOutgoingListeners(f),this.packet(f)):this.sendBuffer.push(f),this.flags={},this}_registerAckCallback(a,b){var c;let d=null!=(c=this.flags.timeout)?c:this._opts.ackTimeout;if(void 0===d){this.acks[a]=b;return}let e=this.io.setTimeoutFn(()=>{delete this.acks[a];for(let b=0;b<this.sendBuffer.length;b++)this.sendBuffer[b].id===a&&(ba("removing packet with ack id %d from the buffer",a),this.sendBuffer.splice(b,1));ba("event with ack id %d has timed out after %d ms",a,d),b.call(this,Error("operation has timed out"))},d),f=(...a)=>{this.io.clearTimeoutFn(e),b.apply(this,a)};f.withError=!0,this.acks[a]=f}emitWithAck(a,...b){return new Promise((c,d)=>{let e=(a,b)=>a?d(a):c(b);e.withError=!0,b.push(e),this.emit(a,...b)})}_addToQueue(a){let b;"function"==typeof a[a.length-1]&&(b=a.pop());let c={id:this._queueSeq++,tryCount:0,pending:!1,args:a,flags:Object.assign({fromQueue:!0},this.flags)};a.push((a,...d)=>c!==this._queue[0]?ba("packet [%d] already acknowledged",c.id):(null!==a?c.tryCount>this._opts.retries&&(ba("packet [%d] is discarded after %d tries",c.id,c.tryCount),this._queue.shift(),b&&b(a)):(ba("packet [%d] was successfully sent",c.id),this._queue.shift(),b&&b(null,...d)),c.pending=!1,this._drainQueue())),this._queue.push(c),this._drainQueue()}_drainQueue(a=!1){if(ba("draining queue"),!this.connected||0===this._queue.length)return;let b=this._queue[0];b.pending&&!a?ba("packet [%d] has already been sent and is waiting for an ack",b.id):(b.pending=!0,b.tryCount++,ba("sending packet [%d] (try n°%d)",b.id,b.tryCount),this.flags=b.flags,this.emit.apply(this,b.args))}packet(a){a.nsp=this.nsp,this.io._packet(a)}onopen(){ba("transport is open - connecting"),"function"==typeof this.auth?this.auth(a=>{this._sendConnectPacket(a)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(a){this.packet({type:g.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},a):a})}onerror(a){this.connected||this.emitReserved("connect_error",a)}onclose(a,b){ba("close (%s)",a),this.connected=!1,delete this.id,this.emitReserved("disconnect",a,b),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(a=>{if(!this.sendBuffer.some(b=>String(b.id)===a)){let b=this.acks[a];delete this.acks[a],b.withError&&b.call(this,Error("socket has been disconnected"))}})}onpacket(a){if(a.nsp===this.nsp)switch(a.type){case g.CONNECT:a.data&&a.data.sid?this.onconnect(a.data.sid,a.data.pid):this.emitReserved("connect_error",Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case g.EVENT:case g.BINARY_EVENT:this.onevent(a);break;case g.ACK:case g.BINARY_ACK:this.onack(a);break;case g.DISCONNECT:this.ondisconnect();break;case g.CONNECT_ERROR:this.destroy();let b=Error(a.data.message);b.data=a.data.data,this.emitReserved("connect_error",b)}}onevent(a){let b=a.data||[];ba("emitting event %j",b),null!=a.id&&(ba("attaching ack callback to event"),b.push(this.ack(a.id))),this.connected?this.emitEvent(b):this.receiveBuffer.push(Object.freeze(b))}emitEvent(a){if(this._anyListeners&&this._anyListeners.length)for(let b of this._anyListeners.slice())b.apply(this,a);super.emit.apply(this,a),this._pid&&a.length&&"string"==typeof a[a.length-1]&&(this._lastOffset=a[a.length-1])}ack(a){let b=this,c=!1;return function(...d){c||(c=!0,ba("sending ack %j",d),b.packet({type:g.ACK,id:a,data:d}))}}onack(a){let b=this.acks[a.id];"function"!=typeof b?ba("bad ack %s",a.id):(delete this.acks[a.id],ba("calling ack %s with %j",a.id,a.data),b.withError&&a.data.unshift(null),b.apply(this,a.data))}onconnect(a,b){ba("socket connected with id %s",a),this.id=a,this.recovered=b&&this._pid===b,this._pid=b,this.connected=!0,this.emitBuffered(),this._drainQueue(!0),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach(a=>this.emitEvent(a)),this.receiveBuffer=[],this.sendBuffer.forEach(a=>{this.notifyOutgoingListeners(a),this.packet(a)}),this.sendBuffer=[]}ondisconnect(){ba("server disconnect (%s)",this.nsp),this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(a=>a()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&(ba("performing disconnect (%s)",this.nsp),this.packet({type:g.DISCONNECT})),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(a){return this.flags.compress=a,this}get volatile(){return this.flags.volatile=!0,this}timeout(a){return this.flags.timeout=a,this}onAny(a){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(a),this}prependAny(a){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(a),this}offAny(a){if(!this._anyListeners)return this;if(a){let b=this._anyListeners;for(let c=0;c<b.length;c++)if(a===b[c]){b.splice(c,1);break}}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(a){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(a),this}prependAnyOutgoing(a){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(a),this}offAnyOutgoing(a){if(!this._anyOutgoingListeners)return this;if(a){let b=this._anyOutgoingListeners;for(let c=0;c<b.length;c++)if(a===b[c]){b.splice(c,1);break}}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(a){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length)for(let b of this._anyOutgoingListeners.slice())b.apply(this,a.data)}}var bd=a.i(10419);function be(a){a=a||{},this.ms=a.min||100,this.max=a.max||1e4,this.factor=a.factor||2,this.jitter=a.jitter>0&&a.jitter<=1?a.jitter:0,this.attempts=0}be.prototype.duration=function(){var a=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var b=Math.random(),c=Math.floor(b*this.jitter*a);a=(1&Math.floor(10*b))==0?a-c:a+c}return 0|Math.min(a,this.max)},be.prototype.reset=function(){this.attempts=0},be.prototype.setMin=function(a){this.ms=a},be.prototype.setMax=function(a){this.max=a},be.prototype.setJitter=function(a){this.jitter=a};let bf=(0,au.default)("socket.io-client:manager");class bg extends al{constructor(a,b){var c;super(),this.nsps={},this.subs=[],a&&"object"==typeof a&&(b=a,a=void 0),(b=b||{}).path=b.path||"/socket.io",this.opts=b,as(this,b),this.reconnection(!1!==b.reconnection),this.reconnectionAttempts(b.reconnectionAttempts||1/0),this.reconnectionDelay(b.reconnectionDelay||1e3),this.reconnectionDelayMax(b.reconnectionDelayMax||5e3),this.randomizationFactor(null!=(c=b.randomizationFactor)?c:.5),this.backoff=new be({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==b.timeout?2e4:b.timeout),this._readyState="closed",this.uri=a;const d=b.parser||bd;this.encoder=new d.Encoder,this.decoder=new d.Decoder,this._autoConnect=!1!==b.autoConnect,this._autoConnect&&this.open()}reconnection(a){return arguments.length?(this._reconnection=!!a,a||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(a){return void 0===a?this._reconnectionAttempts:(this._reconnectionAttempts=a,this)}reconnectionDelay(a){var b;return void 0===a?this._reconnectionDelay:(this._reconnectionDelay=a,null==(b=this.backoff)||b.setMin(a),this)}randomizationFactor(a){var b;return void 0===a?this._randomizationFactor:(this._randomizationFactor=a,null==(b=this.backoff)||b.setJitter(a),this)}reconnectionDelayMax(a){var b;return void 0===a?this._reconnectionDelayMax:(this._reconnectionDelayMax=a,null==(b=this.backoff)||b.setMax(a),this)}timeout(a){return arguments.length?(this._timeout=a,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(a){if(bf("readyState %s",this._readyState),~this._readyState.indexOf("open"))return this;bf("opening %s",this.uri),this.engine=new aW(this.uri,this.opts);let b=this.engine,c=this;this._readyState="opening",this.skipReconnect=!1;let d=a9(b,"open",function(){c.onopen(),a&&a()}),e=b=>{bf("error"),this.cleanup(),this._readyState="closed",this.emitReserved("error",b),a?a(b):this.maybeReconnectOnOpen()},f=a9(b,"error",e);if(!1!==this._timeout){let a=this._timeout;bf("connect attempt will timeout after %d",a);let c=this.setTimeoutFn(()=>{bf("connect attempt timed out after %d",a),d(),e(Error("timeout")),b.close()},a);this.opts.autoUnref&&c.unref(),this.subs.push(()=>{this.clearTimeoutFn(c)})}return this.subs.push(d),this.subs.push(f),this}connect(a){return this.open(a)}onopen(){bf("open"),this.cleanup(),this._readyState="open",this.emitReserved("open");let a=this.engine;this.subs.push(a9(a,"ping",this.onping.bind(this)),a9(a,"data",this.ondata.bind(this)),a9(a,"error",this.onerror.bind(this)),a9(a,"close",this.onclose.bind(this)),a9(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(a){try{this.decoder.add(a)}catch(a){this.onclose("parse error",a)}}ondecoded(a){am(()=>{this.emitReserved("packet",a)},this.setTimeoutFn)}onerror(a){bf("error",a),this.emitReserved("error",a)}socket(a,b){let c=this.nsps[a];return c?this._autoConnect&&!c.active&&c.connect():(c=new bc(this,a,b),this.nsps[a]=c),c}_destroy(a){for(let a of Object.keys(this.nsps))if(this.nsps[a].active)return void bf("socket %s is still active, skipping close",a);this._close()}_packet(a){bf("writing packet %j",a);let b=this.encoder.encode(a);for(let c=0;c<b.length;c++)this.engine.write(b[c],a.options)}cleanup(){bf("cleanup"),this.subs.forEach(a=>a()),this.subs.length=0,this.decoder.destroy()}_close(){bf("disconnect"),this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(a,b){var c;bf("closed due to %s",a),this.cleanup(),null==(c=this.engine)||c.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",a,b),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;let a=this;if(this.backoff.attempts>=this._reconnectionAttempts)bf("reconnect failed"),this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{let b=this.backoff.duration();bf("will wait %dms before reconnect attempt",b),this._reconnecting=!0;let c=this.setTimeoutFn(()=>{a.skipReconnect||(bf("attempting reconnect"),this.emitReserved("reconnect_attempt",a.backoff.attempts),a.skipReconnect||a.open(b=>{b?(bf("reconnect attempt error"),a._reconnecting=!1,a.reconnect(),this.emitReserved("reconnect_error",b)):(bf("reconnect success"),a.onreconnect())}))},b);this.opts.autoUnref&&c.unref(),this.subs.push(()=>{this.clearTimeoutFn(c)})}}onreconnect(){let a=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",a)}}let bh=(0,au.default)("socket.io-client"),bi={};function bj(a,b){let c;"object"==typeof a&&(b=a,a=void 0);let d=function(a,b="",c){let d=a;c=c||"u">typeof location&&location,null==a&&(a=c.protocol+"//"+c.host),"string"==typeof a&&("/"===a.charAt(0)&&(a="/"===a.charAt(1)?c.protocol+a:c.host+a),/^(https?|wss?):\/\//.test(a)||(aX("protocol-less url %s",a),a=void 0!==c?c.protocol+"//"+a:"https://"+a),aX("parse %s",a),d=aQ(a)),!d.port&&(/^(http|ws)$/.test(d.protocol)?d.port="80":/^(http|ws)s$/.test(d.protocol)&&(d.port="443")),d.path=d.path||"/";let e=-1!==d.host.indexOf(":")?"["+d.host+"]":d.host;return d.id=d.protocol+"://"+e+":"+d.port+b,d.href=d.protocol+"://"+e+(c&&c.port===d.port?"":":"+d.port),d}(a,(b=b||{}).path||"/socket.io"),e=d.source,f=d.id,g=d.path,h=bi[f]&&g in bi[f].nsps;return b.forceNew||b["force new connection"]||!1===b.multiplex||h?(bh("ignoring socket cache for %s",e),c=new bg(e,b)):(bi[f]||(bh("new io instance for %s",e),bi[f]=new bg(e,b)),c=bi[f]),d.query&&!b.query&&(b.query=d.queryKey),c.socket(d.path,b)}function bk(a){if(a&&"object"==typeof a&&"clientId"in a){let b=a.clientId;if("string"==typeof b)return b}}function bl(a){return"runtime.enter"===a.op||"runtime.exit"===a.op}function bm(){return{settings:{namespace:"MyApp",name:"MyStateMachine",asynchronous:!1},events:[{name:"Internal",events:[]}],state:{name:"Root",states:[{name:"Idle",kind:"normal"},{name:"End",kind:"final"}]}}}function bn(){return{positions:{}}}function bo(a,b){if(a.name===b)return a;for(let c of a.states??[]){let a=bo(c,b);if(a)return a}return null}function bp(a,b,c){return a.name===b?c(a)??a:{...a,states:a.states?.map(a=>bp(a,b,c))}}function bq(a,b){return{...a,states:a.states?.filter(a=>a.name!==b).map(a=>bq(a,b))}}function br(a){let b=[a.name];for(let c of a.states??[])b.push(...br(c));return b}function bs(a){return a.events.flatMap(a=>(a.events??[]).map(a=>a.id))}function bt(a){let b=[],c=br(a.state),d=bs(a);0===d.length&&b.push({ruleId:"V001",message:"No events defined"});let e=new Set;for(let a of c)e.has(a)&&b.push({ruleId:"V002",message:`Duplicate state name: ${a}`,element:a}),e.add(a);!function a(e){for(let a of e.transitions??[])d.includes(a.event)||b.push({ruleId:"V003",message:`Transition in '${e.name}' references unknown event '${a.event}'`,element:e.name}),a.nextState&&!c.includes(a.nextState)&&b.push({ruleId:"V004",message:`Transition in '${e.name}' targets unknown state '${a.nextState}'`,element:e.name});for(let c of("final"===e.kind&&(e.transitions?.length??0)>0&&b.push({ruleId:"V007",message:`Final state '${e.name}' must not have outgoing transitions`,element:e.name}),"final"===e.kind&&(e.states?.length??0)>0&&b.push({ruleId:"V008",message:`Final state '${e.name}' must not have child states`,element:e.name}),e.states??[]))a(c)}(a.state),a.state.states&&0!==a.state.states.length||b.push({ruleId:"V005",message:"Root state must have at least one child state",element:a.state.name});let f=new Set;for(let a of d)f.has(a)&&b.push({ruleId:"V003",message:`Duplicate event ID: ${a}`,element:a}),f.add(a);return b}function bu(a,b){return{positions:{...x(a),...b.positions}}}Object.assign(bj,{Manager:bg,Socket:bc,io:bj,connect:bj});let bv=(e=(a,b)=>({definition:bm(),layout:bu(bm(),bn()),viewport:{...K},fileName:null,docPath:null,dirty:!1,remoteMtime:null,remoteStatus:"idle",remoteMessage:null,activeStates:[],presence:[],_applyingRemote:!1,selection:{kind:null,id:null},drawMode:"select",drawSource:null,contextMenu:{visible:!1,x:0,y:0,target:null},undoStack:[],redoStack:[],activeTab:"properties",errors:[],showCodePreview:!1,generatedCode:null,navigationPath:["Root"],currentParent:"Root",_pushHistory:()=>{let{definition:c,layout:d,undoStack:e}=b(),f={definition:JSON.parse(JSON.stringify(c)),layout:JSON.parse(JSON.stringify(d))};a({undoStack:[...e.slice(-50),f],redoStack:[]})},setDefinition:c=>{b()._pushHistory();let d=bu(c,b().layout);a({definition:c,layout:d,dirty:!0,errors:bt(c)})},updateSettings:c=>{b()._pushHistory(),a({definition:{...b().definition,settings:{...b().definition.settings,...c}},dirty:!0})},addState:(c,d)=>{b()._pushHistory();let e={...b().definition},f=c??e.state.name;e.state=bp(e.state,f,a=>({...a,states:[...a.states??[],d]}));let g=bu(e,b().layout);a({definition:e,layout:g,dirty:!0,errors:bt(e)})},updateState:(c,d)=>{b()._pushHistory();let e={...b().definition};e.state=bp(e.state,c,a=>({...a,...d})),a({definition:e,dirty:!0,errors:bt(e)})},removeState:c=>{b()._pushHistory();let d={...b().definition};d.state=bq(d.state,c);let e={positions:{...b().layout.positions}};delete e.positions[c],a({definition:d,layout:e,dirty:!0,errors:bt(d)})},nestState:(c,d)=>{b()._pushHistory();let e={...b().definition},f=bo(e.state,c);if(!f||c===d)return;let g=JSON.parse(JSON.stringify(f));e.state=bq(e.state,c),e.state=bp(e.state,d,a=>({...a,states:[...a.states??[],g]})),a({definition:e,dirty:!0,errors:bt(e)})},addEventSource:c=>{b()._pushHistory(),a({definition:{...b().definition,events:[...b().definition.events,c]},dirty:!0})},updateEventSource:(c,d)=>{b()._pushHistory();let e={...b().definition};e.events=e.events.map((a,b)=>b===c?{...a,...d}:a),a({definition:e,dirty:!0})},removeEventSource:c=>{b()._pushHistory();let d={...b().definition};d.events=d.events.filter((a,b)=>b!==c),a({definition:d,dirty:!0,errors:bt(d)})},addEvent:(c,d=0)=>{b()._pushHistory();let e={...b().definition},f=e.events[d]??{name:"Internal",events:[]};f.events=[...f.events??[],c],e.events=e.events.map((a,b)=>b===d?f:a),a({definition:e,dirty:!0,errors:bt(e)})},updateEvent:(c,d)=>{b()._pushHistory();let e={...b().definition};e.events=e.events.map(a=>({...a,events:a.events?.map(a=>a.id===c?{...a,...d}:a)})),a({definition:e,dirty:!0})},removeEvent:c=>{b()._pushHistory();let d={...b().definition};d.events=d.events.map(a=>({...a,events:a.events?.filter(a=>a.id!==c)})),a({definition:d,dirty:!0,errors:bt(d)})},addParameter:(c,d)=>{b()._pushHistory();let e={...b().definition};e.events=e.events.map(a=>({...a,events:a.events?.map(a=>a.id===c?{...a,parameters:[...a.parameters??[],d]}:a)})),a({definition:e,dirty:!0})},removeParameter:(c,d)=>{b()._pushHistory();let e={...b().definition};e.events=e.events.map(a=>({...a,events:a.events?.map(a=>a.id===c?{...a,parameters:a.parameters?.filter((a,b)=>b!==d)}:a)})),a({definition:e,dirty:!0})},updateParameter:(c,d,e)=>{b()._pushHistory();let f={...b().definition};f.events=f.events.map(a=>({...a,events:a.events?.map(a=>a.id===c?{...a,parameters:a.parameters?.map((a,b)=>b===d?{...a,...e}:a)}:a)})),a({definition:f,dirty:!0})},addAction:(c,d,e)=>{b()._pushHistory();let f={...b().definition};f.state=bp(f.state,c,a=>{let b=a[d]??{actions:[]};return{...a,[d]:{actions:[...b.actions,e]}}}),a({definition:f,dirty:!0})},removeAction:(c,d,e)=>{b()._pushHistory();let f={...b().definition};f.state=bp(f.state,c,a=>{let b=a[d];return b?{...a,[d]:{actions:b.actions.filter((a,b)=>b!==e)}}:a}),a({definition:f,dirty:!0})},updateAction:(c,d,e,f)=>{b()._pushHistory();let g={...b().definition};g.state=bp(g.state,c,a=>{let b=a[d];return b?{...a,[d]:{actions:b.actions.map((a,b)=>b===e?f:a)}}:a}),a({definition:g,dirty:!0})},addTransition:(c,d)=>{b()._pushHistory();let e={...b().definition};e.state=bp(e.state,c,a=>({...a,transitions:[...a.transitions??[],d]})),a({definition:e,dirty:!0,errors:bt(e)})},updateTransition:(c,d,e)=>{b()._pushHistory();let f={...b().definition};f.state=bp(f.state,c,a=>({...a,transitions:a.transitions?.map((a,b)=>b===d?{...a,...e}:a)})),a({definition:f,dirty:!0})},removeTransition:(c,d)=>{b()._pushHistory();let e={...b().definition};e.state=bp(e.state,c,a=>({...a,transitions:a.transitions?.filter((a,b)=>b!==d)})),a({definition:e,dirty:!0,errors:bt(e)})},setStatePosition:(c,d)=>{a({layout:{positions:{...b().layout.positions,[c]:d}}})},arrangeLayout:()=>{b()._pushHistory(),a({layout:{positions:x(b().definition)}})},hydrateLayout:(c,d)=>{a({layout:{positions:{...b().layout.positions,...c}},...d?{viewport:d}:{}})},setViewport:b=>a({viewport:b}),select:(b,c)=>a({selection:{kind:b,id:c}}),clearSelection:()=>a({selection:{kind:null,id:null}}),setDrawMode:b=>a({drawMode:b,drawSource:null}),setDrawSource:b=>a({drawSource:b}),showContextMenu:(b,c,d)=>a({contextMenu:{visible:!0,x:b,y:c,target:d}}),hideContextMenu:()=>a({contextMenu:{visible:!1,x:0,y:0,target:null}}),undo:()=>{let{undoStack:c,definition:d,layout:e}=b();if(0===c.length)return;let f=c[c.length-1],g={definition:JSON.parse(JSON.stringify(d)),layout:JSON.parse(JSON.stringify(e))};a({definition:f.definition,layout:f.layout,undoStack:c.slice(0,-1),redoStack:[...b().redoStack,g],dirty:!0,errors:bt(f.definition)})},redo:()=>{let{redoStack:c,definition:d,layout:e}=b();if(0===c.length)return;let f=c[c.length-1],g={definition:JSON.parse(JSON.stringify(d)),layout:JSON.parse(JSON.stringify(e))};a({definition:f.definition,layout:f.layout,undoStack:[...b().undoStack,g],redoStack:c.slice(0,-1),dirty:!0,errors:bt(f.definition)})},canUndo:()=>b().undoStack.length>0,canRedo:()=>b().redoStack.length>0,setActiveTab:b=>a({activeTab:b}),loadFromJson:(b,c)=>{try{let d=JSON.parse(b),e=d.stateMachine??d.StateMachine??d,f=bu(e,bn()),g=e.state?.name??"Root";a({definition:e,layout:f,fileName:c??null,dirty:!1,errors:bt(e),selection:{kind:null,id:null},undoStack:[],redoStack:[],navigationPath:[g],currentParent:g})}catch(a){console.error("Failed to parse definition:",a)}},exportJson:()=>{let{definition:a}=b();return JSON.stringify({stateMachine:a},null,2)},applyRemote:(c,d,e)=>{try{let f=JSON.parse(c),g=f.stateMachine??f.StateMachine??f,h=bu(g,b().layout),i=g.state?.name??"Root",j=b(),k=new Set(br(g.state)),l=j.navigationPath.filter(a=>k.has(a)),m=l.length?l:[i],n=m[m.length-1],o=j.selection,p=("state"===o.kind?!!o.id&&k.has(o.id):"transition"===o.kind?!!o.id&&k.has(o.id.split(":")[0]):"event"===o.kind&&!!o.id&&bs(g).includes(o.id))?o:{kind:null,id:null};a({definition:g,layout:h,fileName:e??b().fileName,dirty:!1,remoteMtime:d,remoteStatus:"synced",remoteMessage:null,errors:bt(g),selection:p,navigationPath:m,currentParent:n})}catch(b){a({remoteStatus:"error",remoteMessage:String(b)})}},setRemoteStatus:(b,c=null)=>a({remoteStatus:b,remoteMessage:c}),setRemoteMtime:b=>a({remoteMtime:b}),setDocPath:b=>a({docPath:b||null}),enterState:c=>{let d=b().activeStates;d.includes(c)||a({activeStates:[...d,c]})},exitState:c=>{let d=b().activeStates;d.includes(c)&&a({activeStates:d.filter(a=>a!==c)})},setPresence:b=>a({presence:b}),applyRemoteOps:(c,d,e)=>{a({_applyingRemote:!0});try{let e=b(),f=c.filter(a=>"runtime.enter"!==a.op&&"runtime.exit"!==a.op),g=f.length?n(e.definition,f):e.definition,h=e.activeStates;for(let a of c)"runtime.enter"===a.op?h.includes(a.state)||(h=[...h,a.state]):"runtime.exit"===a.op&&h.includes(a.state)&&(h=h.filter(b=>b!==a.state));let i=bu(g,e.layout),j=g.state?.name??"Root",k=new Set(br(g.state)),l=e.navigationPath.filter(a=>k.has(a)),m=l.length?l:[j],o=m[m.length-1],p=e.selection,q=("state"===p.kind?!!p.id&&k.has(p.id):"transition"===p.kind?!!p.id&&k.has(p.id.split(":")[0]):"event"===p.kind&&!!p.id&&bs(g).includes(p.id))?p:{kind:null,id:null};a({definition:g,layout:i,activeStates:h,dirty:!1,remoteMtime:d,remoteStatus:"synced",remoteMessage:null,errors:bt(g),selection:q,navigationPath:m,currentParent:o})}catch(b){a({remoteStatus:"error",remoteMessage:String(b)})}finally{a({_applyingRemote:!1})}},validate:()=>{let c=bt(b().definition);return a({errors:c}),c},setGeneratedCode:b=>a({generatedCode:b}),setShowCodePreview:b=>a({showCodePreview:b}),navigateInto:c=>{let{definition:d,navigationPath:e}=b(),f=bo(d.state,c);f&&(f.states?.length??0)>0&&a({navigationPath:[...e,c],currentParent:c,selection:{kind:null,id:null}})},navigateUp:c=>{let{navigationPath:d}=b();if(d.length<=1)return;let e=c??d.length-2,f=d.slice(0,e+1);a({navigationPath:f,currentParent:f[f.length-1],selection:{kind:null,id:null}})},getCurrentChildren:()=>{let{definition:a,currentParent:c}=b(),d=bo(a.state,c);return d?.states??[]}}))?aa(e):aa,bw="canvas",bx=`[data-pinch-owner="${bw}"]`;function by(a){return!!a&&"function"==typeof a.closest&&null!==a.closest(bx)}let bz="stateloom-canvas",bA="#030712",bB=["png","jpeg","svg","mermaid","markdown"],bC={png:"PNG",jpeg:"JPEG",svg:"SVG",mermaid:"Mermaid",markdown:"Markdown"},bD={png:"image/png",jpeg:"image/jpeg",svg:"image/svg+xml",mermaid:"text/vnd.mermaid",markdown:"text/markdown"},bE={png:"png",jpeg:"jpg",svg:"svg",mermaid:"mmd",markdown:"md"};async function bF(a,b,c={}){var d,e,f;let g;if("mermaid"===a||"markdown"===a){let c,f;g=new Blob([(d=b.definition,e="markdown"===a,c=["stateDiagram-v2"],d.state&&function a(b,c,d){let e=P(b);if(0===e.length)return;let f=" ".repeat(c+1),g=new Set;for(let a of e)for(let b of a.transitions??[]){if(!b.nextState)continue;let c=b.condition?`${b.event} [${b.condition}]`:b.event;d.push(`${f}${a.name} --> ${b.nextState} : ${c}`),g.add(a.name),g.add(b.nextState)}for(let a of e)g.has(a.name)||d.push(`${f}${a.name}`);for(let b of e)0!==P(b).length&&(d.push(`${f}state ${b.name} {`),a(b,c+1,d),d.push(`${f}}`))}(d.state,0,c),f=c.join("\n"),e?`\`\`\`mermaid
|
|
2
|
+
`+Object.keys(d).map(a=>`${a}: ${d[a]}`).join("\r\n")+"\r\n\r\n"+c)}function s(a,b,c,d,e,f){if(a.listenerCount("wsClientError")){let d=Error(e);Error.captureStackTrace(d,s),a.emit("wsClientError",d,c,b)}else r(c,d,e,f)}b.exports=class extends d{constructor(a,b){if(super(),null==(a={allowSynchronousEvents:!0,autoPong:!0,maxBufferedChunks:262144,maxFragments:16384,maxPayload:0x6400000,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:l,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:k,...a}).port&&!a.server&&!a.noServer||null!=a.port&&(a.server||a.noServer)||a.server&&a.noServer)throw TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(null!=a.port?(this._server=e.createServer((a,b)=>{let c=e.STATUS_CODES[426];b.writeHead(426,{"Content-Length":c.length,"Content-Type":"text/plain"}),b.end(c)}),this._server.listen(a.port,a.host,a.backlog,b)):a.server&&(this._server=a.server),this._server){const a=this.emit.bind(this,"connection");this._removeListeners=function(a,b){for(let c of Object.keys(b))a.on(c,b[c]);return function(){for(let c of Object.keys(b))a.removeListener(c,b[c])}}(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(b,c,d)=>{this.handleUpgrade(b,c,d,a)}})}!0===a.perMessageDeflate&&(a.perMessageDeflate={}),a.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=a,this._state=0}address(){if(this.options.noServer)throw Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(a){if(2===this._state){a&&this.once("close",()=>{a(Error("The server is not running"))}),process.nextTick(p,this);return}if(a&&this.once("close",a),1!==this._state)if(this._state=1,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients&&this.clients.size?this._shouldEmitClose=!0:process.nextTick(p,this);else{let a=this._server;this._removeListeners(),this._removeListeners=this._server=null,a.close(()=>{p(this)})}}shouldHandle(a){if(this.options.path){let b=a.url.indexOf("?");if((-1!==b?a.url.slice(0,b):a.url)!==this.options.path)return!1}return!0}handleUpgrade(a,b,c,d){b.on("error",q);let e=a.headers["sec-websocket-key"],f=a.headers.upgrade,g=+a.headers["sec-websocket-version"];if("GET"!==a.method)return void s(this,a,b,405,"Invalid HTTP method");if(void 0===f||"websocket"!==f.toLowerCase())return void s(this,a,b,400,"Invalid Upgrade header");if(void 0===e||!o.test(e))return void s(this,a,b,400,"Missing or invalid Sec-WebSocket-Key header");if(13!==g&&8!==g)return void s(this,a,b,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});if(!this.shouldHandle(a))return void r(b,400);let k=a.headers["sec-websocket-protocol"],l=new Set;if(void 0!==k)try{l=j.parse(k)}catch(c){s(this,a,b,400,"Invalid Sec-WebSocket-Protocol header");return}let m=a.headers["sec-websocket-extensions"],n={};if(this.options.perMessageDeflate&&void 0!==m){let c=new i({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let a=h.parse(m);a[i.extensionName]&&(c.accept(a[i.extensionName]),n[i.extensionName]=c)}catch(c){s(this,a,b,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let f={origin:a.headers[`${8===g?"sec-websocket-origin":"origin"}`],secure:!!(a.socket.authorized||a.socket.encrypted),req:a};if(2===this.options.verifyClient.length)return void this.options.verifyClient(f,(f,g,h,i)=>{if(!f)return r(b,g||401,h,i);this.completeUpgrade(n,e,l,a,b,c,d)});if(!this.options.verifyClient(f))return r(b,401)}this.completeUpgrade(n,e,l,a,b,c,d)}completeUpgrade(a,b,c,d,e,f,j){if(!e.readable||!e.writable)return e.destroy();if(e[n])throw Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>0)return r(e,503);let k=g("sha1").update(b+m).digest("base64"),l=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${k}`],o=new this.options.WebSocket(null,void 0,this.options);if(c.size){let a=this.options.handleProtocols?this.options.handleProtocols(c,d):c.values().next().value;a&&(l.push(`Sec-WebSocket-Protocol: ${a}`),o._protocol=a)}if(a[i.extensionName]){let b=a[i.extensionName].params,c=h.format({[i.extensionName]:[b]});l.push(`Sec-WebSocket-Extensions: ${c}`),o._extensions=a}this.emit("headers",l,d),e.write(l.concat("\r\n").join("\r\n")),e.removeListener("error",q),o.setSocket(e,f,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxBufferedChunks:this.options.maxBufferedChunks,maxFragments:this.options.maxFragments,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(o),o.on("close",()=>{this.clients.delete(o),this._shouldEmitClose&&!this.clients.size&&process.nextTick(p,this)})),j(o,d)}}},95421,a=>{"use strict";let b,c,d,e;var f,g,h=a.i(56856),i=a.i(55132);function j(a){return JSON.parse(JSON.stringify(a))}function k(a,b){for(let c of a.states??[]){if(c.name===b)return a;let d=k(c,b);if(d)return d}return null}function l(a,b,c){let d=function a(b,c){if(b.name===c)return b;for(let d of b.states??[]){let b=a(d,c);if(b)return b}return null}(a,b);if(!d)throw Error(`applyPatchOps: ${c} references missing state "${b}"`);return d}function m(a,b,c){let d=function(a,b){for(let c of a.events){let a=c.events??[];for(let d=0;d<a.length;d++)if(a[d].id===b)return{source:c,event:a[d],index:d}}return null}(a,b);if(!d)throw Error(`applyPatchOps: ${c} references missing event "${b}"`);return d}function n(a,b){let c=j(a);for(let a of b)switch(a.op){case"settings.update":c.settings={...c.settings,...a.patch};break;case"state.add":{let b=null===a.parent?c.state:l(c.state,a.parent,"state.add");b.states||(b.states=[]);let d=a.index??b.states.length;b.states.splice(d,0,j(a.state));break}case"state.update":Object.assign(l(c.state,a.name,"state.update"),a.patch);break;case"state.remove":{if(c.state.name===a.name)throw Error(`applyPatchOps: cannot remove root state "${a.name}"`);let b=k(c.state,a.name);if(!b||!b.states)throw Error(`applyPatchOps: state.remove references missing state "${a.name}"`);let d=b.states.findIndex(b=>b.name===a.name);if(d<0)throw Error(`applyPatchOps: state.remove references missing state "${a.name}"`);b.states.splice(d,1),0===b.states.length&&delete b.states;break}case"state.nest":{let b=l(c.state,a.child,"state.nest"),d=l(c.state,a.newParent,"state.nest"),e=k(c.state,a.child);if(!e||!e.states)throw Error(`applyPatchOps: state.nest cannot detach root or missing state "${a.child}"`);let f=e.states.findIndex(b=>b.name===a.child),[g]=e.states.splice(f,1);0===e.states.length&&delete e.states,d.states||(d.states=[]),d.states.push(g??j(b));break}case"eventSource.add":{let b=a.index??c.events.length;c.events.splice(b,0,j(a.source));break}case"eventSource.update":{let b=c.events[a.index];if(!b)throw Error(`applyPatchOps: eventSource.update index ${a.index} out of range`);c.events[a.index]={...b,...a.patch};break}case"eventSource.remove":if(!c.events[a.index])throw Error(`applyPatchOps: eventSource.remove index ${a.index} out of range`);c.events.splice(a.index,1);break;case"event.add":{let b=c.events[a.sourceIndex];if(!b)throw Error(`applyPatchOps: event.add sourceIndex ${a.sourceIndex} out of range`);b.events||(b.events=[]);let d=a.index??b.events.length;b.events.splice(d,0,j(a.event));break}case"event.update":Object.assign(m(c,a.id,"event.update").event,a.patch);break;case"event.remove":{let b=m(c,a.id,"event.remove");b.source.events.splice(b.index,1),0===b.source.events.length&&delete b.source.events;break}case"parameter.add":{let b=m(c,a.eventId,"parameter.add");b.event.parameters||(b.event.parameters=[]);let d=a.index??b.event.parameters.length;b.event.parameters.splice(d,0,j(a.parameter));break}case"parameter.update":{let b=m(c,a.eventId,"parameter.update").event.parameters??[];if(!b[a.index])throw Error(`applyPatchOps: parameter.update index ${a.index} out of range for event "${a.eventId}"`);b[a.index]={...b[a.index],...a.patch};break}case"parameter.remove":{let b=m(c,a.eventId,"parameter.remove"),d=b.event.parameters;if(!d||!d[a.index])throw Error(`applyPatchOps: parameter.remove index ${a.index} out of range for event "${a.eventId}"`);d.splice(a.index,1),0===d.length&&delete b.event.parameters;break}case"transition.add":{let b=l(c.state,a.state,"transition.add");b.transitions||(b.transitions=[]);let d=a.index??b.transitions.length;b.transitions.splice(d,0,j(a.transition));break}case"transition.update":{let b=l(c.state,a.state,"transition.update").transitions??[];if(!b[a.index])throw Error(`applyPatchOps: transition.update index ${a.index} out of range for state "${a.state}"`);b[a.index]={...b[a.index],...a.patch};break}case"transition.remove":{let b=l(c.state,a.state,"transition.remove"),d=b.transitions;if(!d||!d[a.index])throw Error(`applyPatchOps: transition.remove index ${a.index} out of range for state "${a.state}"`);d.splice(a.index,1),0===d.length&&delete b.transitions;break}case"action.add":{let b=l(c.state,a.state,"action.add"),d=b[a.hook]??(b[a.hook]={actions:[]}),e=a.index??d.actions.length;d.actions.splice(e,0,j(a.action));break}case"action.update":{let b=l(c.state,a.state,"action.update")[a.hook];if(!b||!b.actions[a.index])throw Error(`applyPatchOps: action.update index ${a.index} out of range for state "${a.state}" ${a.hook}`);b.actions[a.index]=j(a.action);break}case"action.remove":{let b=l(c.state,a.state,"action.remove"),d=b[a.hook];if(!d||!d.actions[a.index])throw Error(`applyPatchOps: action.remove index ${a.index} out of range for state "${a.state}" ${a.hook}`);d.actions.splice(a.index,1),0===d.actions.length&&delete b[a.hook];break}case"runtime.enter":case"runtime.exit":break;default:throw Error(`applyPatchOps: unknown op ${JSON.stringify(a)}`)}return c}function o(a){let b=[a];for(let c of a.states??[])b.push(...o(c));return b}function p(a){let b=new Map;b.set(a.name,null);let c=a=>{for(let d of a.states??[])b.set(d.name,a.name),c(d)};return c(a),b}function q(a,b){return JSON.stringify(a)===JSON.stringify(b)}function r(a,b,c,d,e){let f=Math.min(c.length,d.length);for(let g=0;g<f;g++)q(c[g],d[g])||e.push({op:"action.update",state:a,hook:b,index:g,action:d[g]});for(let c=f;c<d.length;c++)e.push({op:"action.add",state:a,hook:b,action:d[c],index:c});for(let f=c.length-1;f>=d.length;f--)e.push({op:"action.remove",state:a,hook:b,index:f})}function s(a){let b=0;for(let c=0;c<a.length;c++)b=Math.imul(b,31)+a.charCodeAt(c)|0;let c=(b%360+360)%360;return`hsl(${c}, 65%, 55%)`}let t={hSpacing:220,vSpacing:140,nodeWidth:160,nodeHeight:60,compositeWidth:300,compositeHeight:200,originX:100,originY:120,sweeps:2,includeRoot:!0},u=(a,b)=>`${a}\u0000${b}`;function v(a){let b=new Set,c=[];for(let d of a.states??[])b.has(d.name)||(b.add(d.name),c.push(d));return c}function w(a,b){let c=new Map(a.map(a=>[a,[]]));for(let a of b)c.get(a.from).push(a.to);return c}function x(a,b={}){let c={...t,...b},d="state"in a?a.state:a,e={};if(!d)return e;if(!function a(b,c,d,e,f){let g=v(b);if(0===g.length)return;let h=g.map(a=>a.name),i=new Map(g.map(a=>[a.name,a])),j=function(a){let b=new Set(a.map(a=>a.name)),c=new Set,d=[];for(let e of a)for(let a of e.transitions??[]){let f=a.nextState;if(!f||f===e.name||!b.has(f))continue;let g=u(e.name,f);c.has(g)||(c.add(g),d.push({from:e.name,to:f}))}return d}(g),k=function(a,b){let c=w(a,b),d=new Map(a.map(a=>[a,0])),e=new Set;for(let b of a){if(0!==d.get(b))continue;d.set(b,1);let a=[{node:b,i:0}];for(;a.length>0;){let b=a[a.length-1],f=c.get(b.node);if(b.i<f.length){let c=f[b.i++],g=d.get(c);1===g?e.add(u(b.node,c)):0===g&&(d.set(c,1),a.push({node:c,i:0}))}else d.set(b.node,2),a.pop()}}return e}(h,j),l=j.filter(a=>!k.has(u(a.from,a.to))),m=function(a,b){let c=w(a,b),d=new Map(a.map(a=>[a,0]));for(let a of b)d.set(a.to,(d.get(a.to)??0)+1);let e=new Map(a.map(a=>[a,0])),f=a.filter(a=>0===d.get(a));for(let a=0;a<f.length;a++){let b=f[a];for(let a of c.get(b)){e.set(a,Math.max(e.get(a),e.get(b)+1));let c=d.get(a)-1;d.set(a,c),0===c&&f.push(a)}}return e}(h,l),n=function(a,b,c){let d=new Map(a.map(a=>[a,[]]));for(let a of b)d.get(a.from).push(a.to),d.get(a.to).push(a.from);let e=new Set([c]),f=[c];for(;f.length>0;){let a=f.pop();for(let b of d.get(a)??[])e.has(b)||(e.add(b),f.push(b))}return e}(h,j,h[0]),o=0;for(let a of h)n.has(a)&&(o=Math.max(o,m.get(a)));for(let a of h)n.has(a)||m.set(a,m.get(a)+o+1);let p=Array.from({length:Math.max(...h.map(a=>m.get(a)))+1},()=>[]);for(let a of h)p[m.get(a)].push(a);!function(a,b,c){let d=new Map,e=new Map,f=(a,b,c)=>{let d=a.get(b);d?d.push(c):a.set(b,[c])};for(let a of b)f(d,a.to,a.from),f(e,a.from,a.to);let g=new Map,h=()=>{a.forEach(a=>a.forEach((a,b)=>g.set(a,b)))};h();let i=(a,b)=>{let c=a.map((a,c)=>{let d=(b.get(a)??[]).filter(a=>g.has(a));return{name:a,key:d.length?d.reduce((a,b)=>a+g.get(b),0)/d.length:c,i:c}});c.sort((a,b)=>a.key===b.key?a.i-b.i:a.key-b.key);for(let b=0;b<c.length;b++)a[b]=c[b].name};for(let b=0;b<c;b++){for(let b=1;b<a.length;b++)i(a[b],d),h();for(let b=a.length-2;b>=0;b--)i(a[b],e),h()}}(p,l,e.sweeps);let q=e.hSpacing-e.nodeWidth,r=e.vSpacing-e.nodeHeight,s=a=>Math.max(e.hSpacing,a+q),t=new Map(h.map(a=>{var b;return[a,(b=i.get(a),(b.states?.length??0)>0?{width:e.compositeWidth,height:e.compositeHeight}:{width:e.nodeWidth,height:e.nodeHeight})]})),x=p.map(a=>a.reduce((a,b)=>a+s(t.get(b).width),0)),y=c+Math.max(...x,0)/2,z=d;for(let b of(p.forEach((a,b)=>{let c=y-x[b]/2,d=e.nodeHeight;for(let b of a){let a=t.get(b),e=s(a.width);f[b]={x:Math.round(c+(e-a.width)/2),y:Math.round(z),width:a.width,height:a.height},c+=e,d=Math.max(d,a.height)}z+=d+r}),g)){if((b.states?.length??0)===0)continue;let c=f[b.name];a(b,c.x+20,c.y+40,e,f)}}(d,c.originX,c.originY,c,e),c.includeRoot){let a=v(d).map(a=>e[a.name]).filter(Boolean);if(0===a.length)e[d.name]={x:20,y:20,width:400,height:350};else{let b=Math.min(...a.map(a=>a.x)),c=Math.min(...a.map(a=>a.y)),f=Math.max(...a.map(a=>a.x+a.width)),g=Math.max(...a.map(a=>a.y+a.height));e[d.name]={x:Math.round(b-40),y:Math.round(c-40),width:Math.round(f-b+80),height:Math.round(g-c+80)}}}return e}let y=(a,b)=>a.length*b*.55,z=a=>`[${a.length>32?`${a.slice(0,31).trimEnd()}…`:a}]`,A=a=>({width:Math.max(56,Math.max(y(a.event,11),a.condition?y(z(a.condition),9):0)+16)+16*!!a.glyph,height:a.condition?28:18}),B=a=>({x:a.x+5,y:a.cy-12-3}),C=(a,b)=>a.x<b.x+b.width&&b.x<a.x+a.width&&a.y<b.y+b.height&&b.y<a.y+a.height,D={along:[.5,.36,.64,.24,.76,.14,.86],aside:[0,.6,-.6],across:[0,-1.3,1.3,-2.6,2.6]};function E(a,b,c={}){let{along:d,aside:e,across:f}={...D,...c},g=a.map((a,b)=>({label:a,i:b,width:A(a).width})).sort((a,b)=>a.width===b.width?a.i-b.i:b.width-a.width),h=[];for(let{label:a}of g){let{width:c,height:g}=A(a),i=8*!!a.glyph,j=null,k=1/0;a:for(let l of f)for(let f of e)for(let e of d){let d=a.at(e),m=d.x+f*c,n=d.y+l*g,o={x:m-c/2,y:n-18,width:c,height:g},p=[...h,...b].filter(a=>C(o,a)).length,q={...o,cx:m+i,cy:n,label:a};if(0===p){j=q;break a}p<k&&(k=p,j=q)}j&&h.push(j)}return h}let F=(a,b,c=2.2,d)=>({id:a,paths:b,strokeWidth:c,circles:d}),G=F("signal",["M3 12h10","m13 6 6 6-6 6Z"]),H=[{glyph:F("confirm",["m4 13 5.5 5.5L20 6"],2.4),words:["confirm","approve","accept","commit"]},{glyph:F("complete",["m8 12 3 3 5-6"],2.2,[{cx:12,cy:12,r:8.5}]),words:["complete","finish","done","close"]},{glyph:F("skip",["M4 17c0-6 4.5-9 9-9h6","m15 4 4.5 4-4.5 4"]),words:["skip","ignore","bypass"]},{glyph:F("flag",["M6 21V4","M6 4h12l-3 4.5 3 4.5H6Z"]),words:["flag","mark","revisit","review"]},{glyph:F("advance",["M4 6l8 6-8 6Z","M13 6l7 6-7 6Z"]),words:["advance","next","forward","step"]},{glyph:F("pause",["M9 5v14M15 5v14"],2.6),words:["pause","hold","suspend","stop"]},{glyph:F("play",["M7 4.5 19 12 7 19.5Z"]),words:["resume","start","begin","play","run"]},{glyph:F("clock",["M12 7.5V12l3.5 2.5"],2.2,[{cx:12,cy:12,r:8.5}]),words:["timeout","expire","tick","delay","after","elapse"]},{glyph:F("change",["M3 14c3-6 6-6 9 0s6 6 9 0"]),words:["change","update","edit","modify","set"]}];[...H.map(a=>a.glyph)];let I=a=>Math.round(100*a)/100;function J(a,b,c,d){return{p0:a,p1:b,p2:c,p3:d,path:`M ${I(a.x)} ${I(a.y)} C ${I(b.x)} ${I(b.y)}, ${I(c.x)} ${I(c.y)}, ${I(d.x)} ${I(d.y)}`,at:e=>{let f=1-e,g=f*f*f,h=3*f*f*e,i=3*f*e*e,j=e*e*e;return{x:g*a.x+h*b.x+i*c.x+j*d.x,y:g*a.y+h*b.y+i*c.y+j*d.y}}}}function K(a,b){let c=a.map(({from:a,to:c})=>{var d,e;return a===c?null:(d=b(a),(e=b(c)).y>=d.y+d.height?["bottom","top"]:e.y+e.height<=d.y?["top","bottom"]:e.x>=d.x+d.width?["right","left"]:e.x+e.width<=d.x?["left","right"]:["bottom","top"])}),d=new Map,e=(a,b,c)=>{let e=`${a}\0${b}`,f=d.get(e);f?f.push(c):d.set(e,[c])},f=(a,b)=>"top"===b||"bottom"===b?a.x+a.width/2:a.y+a.height/2;a.forEach((a,d)=>{let g=c[d];if(!g)return;let[h,i]=g;e(a.from,h,{edge:d,toward:f(b(a.to),h),role:"out"}),e(a.to,i,{edge:d,toward:f(b(a.from),i),role:"in"})});let g=new Map;for(let[a,c]of d){let[d,e]=a.split("\0"),f=b(d),h=[...c].sort((a,b)=>a.toward===b.toward?a.edge-b.edge:a.toward-b.toward);h.forEach((a,b)=>{g.set(`${a.edge}\0${a.role}`,function(a,b,c,d){let e="top"===b||"bottom"===b,f=e?a.width:a.height,g=e?a.x+a.width/2:a.y+a.height/2,h=d>1?Math.min(.72*f,40*(d-1)):0,i=d>1?g-h/2+h*c/(d-1):g;return"top"===b?{x:i,y:a.y}:"bottom"===b?{x:i,y:a.y+a.height}:"left"===b?{x:a.x,y:i}:{x:a.x+a.width,y:i}}(f,e,b,h.length))})}return a.map((a,d)=>{let e=c[d];if(!e){var f;let c,d,e;return c=(f=b(a.from)).x+f.width,d=f.y+.35*f.height,J({x:c,y:d},{x:c+44,y:d-12},{x:c+44,y:(e=f.y+.65*f.height)+12},{x:c,y:e})}let h=g.get(`${d}\0out`),i=g.get(`${d}\0in`);var j=e[0];if("top"===j||"bottom"===j){let a=(h.y+i.y)/2;return J(h,{x:h.x,y:a},{x:i.x,y:a},i)}let k=(h.x+i.x)/2;return J(h,{x:k,y:h.y},{x:k,y:i.y},i)})}let L={min:.2,max:2.5},M={x:0,y:0,scale:1};function N(a,b=L){return Number.isFinite(a)?Math.min(b.max,Math.max(b.min,a)):1}function O(a,b,c){return{x:a.x+b,y:a.y+c,scale:a.scale}}function P(a,b,c,d=L){return Q(a,a.scale*b,c,d)}function Q(a,b,c,d=L){let e=N(b,d);if(e===a.scale)return a;let f={x:(c.x-a.x)/a.scale,y:(c.y-a.y)/a.scale};return{x:c.x-f.x*e,y:c.y-f.y*e,scale:e}}function R(a,b,c,d={}){let e=d.padding??48,f=d.maxScale??1,g=d.limits??L;if(0===a.length||b<=0||c<=0)return{...M};let h=1/0,i=1/0,j=-1/0,k=-1/0;for(let b of a)h=Math.min(h,b.x),i=Math.min(i,b.y),j=Math.max(j,b.x+b.width),k=Math.max(k,b.y+b.height);let l=Math.max(1,j-h),m=Math.max(1,k-i),n=N(Math.min(f,Math.min(Math.max(1,b-2*e)/l,Math.max(1,c-2*e)/m)),g);return{x:(b-l*n)/2-h*n,y:(c-m*n)/2-i*n,scale:n}}function S(a){return`translate(${a.x} ${a.y}) scale(${a.scale})`}function T(a){let b=new Set,c=[];for(let d of a.states??[])b.has(d.name)||(b.add(d.name),c.push(d));return c}function U(a){return a.stateOf?Array.isArray(a.stateOf)?a.stateOf:[a.stateOf]:[]}let V=["1:1","1:N","N:1","N:M"];function W(a){return a.toLowerCase().endsWith(".erdf.json")}function X(a){return!!a&&"object"==typeof a&&Array.isArray(a.entities)&&!("state"in a)}function Y(a,b){let c=RegExp(`(?<![\\w.])${b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\.([A-Za-z_]\\w*)\\b(?!\\s*\\()`,"g"),d=[];for(let b of a.matchAll(c))d.includes(b[1])||d.push(b[1]);return d}let Z=a=>({settings:{...a.settings},entities:(a.entities??[]).map(a=>({...a,attributes:(a.attributes??[]).map(a=>({...a}))})),relationships:(a.relationships??[]).map(a=>({...a}))});function $(a,b){let c=a.entities.find(a=>a.name===b);if(!c){let c=a.entities.map(a=>a.name).join(", ")||"none";throw Error(`Entity '${b}' not found. Entities: ${c}.`)}return c}function _(a){return Object.fromEntries(Object.entries(a).filter(([,a])=>void 0!==a))}let aa={"1:1":"||--||","1:N":"||--o{","N:1":"}o--||","N:M":"}o--o{"},ab=/^[A-Za-z_][A-Za-z0-9_-]*$/,ac=a=>ab.test(a)?a:`"${a.replace(/"/g,"'")}"`,ad=(a,b)=>{let c=a.trim().replace(/[^A-Za-z0-9_()[\]-]+/g,"_").replace(/^_+|_+$/g,"");return/^[A-Za-z_]/.test(c)?c:c?`_${c}`:b},ae=a=>`"${a.replace(/"/g,"'")}"`,af={hSpacing:70,vSpacing:90};function ag(a){return`${a.name} : ${a.type}`}function ah(a){return a.trim().replace(/[\s_]+/g,"-").replace(/[^A-Za-z0-9.-]/g,"").replace(/-{2,}/g,"-").replace(/^[-.]+|[-.]+$/g,"").slice(0,60)}function ai(a){return a.parallel?a.parallel.states:a.states??[]}function aj(a,b){return ai(a).find(a=>a.name===b)??null}let ak={surface:"--slc-surface",nodeFill:"--slc-node-fill",nodeStroke:"--slc-node-stroke",compositeFill:"--slc-composite-fill",finalFill:"--slc-final-fill",accent:"--slc-accent",accentFill:"--slc-accent-fill",accentInk:"--slc-accent-ink",danger:"--slc-danger",drawSource:"--slc-draw-source",edge:"--slc-edge",chipFill:"--slc-chip-fill",chipStroke:"--slc-chip-stroke",label:"--slc-label",muted:"--slc-muted",faint:"--slc-faint",entry:"--slc-entry",exit:"--slc-exit",composite:"--slc-composite",active:"--slc-active",panelBg:"--slc-panel-bg",panelBorder:"--slc-panel-border",panelHover:"--slc-panel-hover"};function al(a){let b={};if(!a)return b;for(let[c,d]of Object.entries(a)){let a=ak[c];a&&"string"==typeof d&&(b[a]=d)}return b}let am={x:100,y:100,width:160,height:60};function an(a,b){return 1===b?16*a:2===b?400*a:a}function ao(a){return!!a&&"string"==typeof a.tagName&&(!!a.isContentEditable||["INPUT","TEXTAREA","SELECT","BUTTON","OPTION"].includes(a.tagName))}function ap(a){return(a.states?.length??0)>0||(a.parallel?.states.length??0)>0}function aq({mark:a,x:b,y:c,selected:d}){return(0,h.jsxs)("g",{transform:`translate(${b} ${c}) scale(0.5)`,strokeWidth:a.strokeWidth,className:`slc-glyph${d?" slc-glyph--selected":""}`,children:[(a.circles??[]).map((a,b)=>(0,h.jsx)("circle",{cx:a.cx,cy:a.cy,r:a.r,className:a.filled?"slc-glyph-dot":void 0},`c${b}`)),a.paths.map((a,b)=>(0,h.jsx)("path",{d:a},`p${b}`))]})}let ar={kind:null,id:null},as=(0,i.forwardRef)(function(a,b){let{definition:c,positions:d,path:e=[],rootLabel:f,viewport:g,onViewportChange:j,selection:k=ar,activeStates:l,errorElements:m,drawMode:n="select",drawSource:o=null,readOnly:p=!1,showBreadcrumb:q=!0,showHud:r=!0,fitKey:s,onSelect:t,onClearSelection:u,onStateMove:v,onNavigateInto:w,onNavigateTo:x,onContextMenu:y,onCreateTransition:A,onCancelDraw:C,onDeleteState:D,onUndo:F,onRedo:I,hudExtras:J,emptyHint:N,theme:T,className:U,style:V,svgId:W,pinchOwner:X="canvas"}=a,Y=(0,i.useRef)(null),Z=(0,i.useId)().replace(/:/g,""),$=(0,i.useRef)(g);$.current=g;let[_,aa]=(0,i.useState)(null),ab=(0,i.useRef)(null),ac=(0,i.useCallback)(a=>{ab.current=a,aa(a)},[]),[ad,ae]=(0,i.useState)(null),af=(0,i.useRef)(!1),[ag,ah]=(0,i.useState)(!1),ak=(0,i.useRef)(null),[as,at]=(0,i.useState)(!1),au=(0,i.useRef)(!1),av=(0,i.useRef)(new Map),aw=(0,i.useRef)(new Map),ax=(0,i.useRef)(null),[ay,az]=(0,i.useState)(!1),aA=(0,i.useRef)(null),aB=(0,i.useRef)(!1),[aC,aD]=(0,i.useState)(!1),aE=c.state,aF=(0,i.useMemo)(()=>{let a=function(a,b){let c=[],d=a;for(let a of b){let b=aj(d,a);if(!b)break;c.push(a),d=b}return c}(aE,e);return[f??aE?.name??"Root",...a]},[aE,e,f]),aG=(0,i.useMemo)(()=>aE?ai(function(a,b){let c=a;for(let a of b){let b=aj(c,a);if(!b)break;c=b}return c}(aE,e)):[],[aE,e]),aH=aF[aF.length-1],aI=(0,i.useMemo)(()=>(function(a){let b=new Set,c=[];for(let d of a.events??[])for(let a of d.events??[])b.has(a.id)||(b.add(a.id),c.push(a.id));return c})(c),[c]),aJ=(0,i.useMemo)(()=>new Set(l??[]),[l]),aK=(0,i.useMemo)(()=>new Set(m??[]),[m]),aL=(0,i.useCallback)((a,b)=>{let c=Y.current?.getBoundingClientRect();return{x:a-(c?.left??0),y:b-(c?.top??0)}},[]),aM=(0,i.useCallback)(a=>{let b=av.current.get(a);av.current.delete(a),b?.hasPointerCapture?.(a)&&b.releasePointerCapture?.(a)},[]),aN=(0,i.useCallback)(a=>{let b=aA.current;b&&(void 0===a||b.pointerId===a)&&(clearTimeout(b.timer),aA.current=null)},[]),aO=(0,i.useCallback)((a,b)=>{if("touch"!==a.pointerType||!y)return;aN();let{pointerId:c,clientX:d,clientY:e}=a,f=setTimeout(()=>{aA.current=null,ac(null),ak.current=null,at(!1),aB.current=!0,navigator.vibrate?.(10),y(d,e,b)},500);aA.current={pointerId:c,x:d,y:e,target:b,timer:f}},[aN,y,ac]);(0,i.useEffect)(()=>{},[]),(0,i.useEffect)(()=>{let a=a=>{aw.current.delete(a.pointerId)};return window.addEventListener("pointerup",a),window.addEventListener("pointercancel",a),()=>{window.removeEventListener("pointerup",a),window.removeEventListener("pointercancel",a)}},[]),(0,i.useEffect)(()=>()=>aN(),[aN]);let aP=(0,i.useRef)(new Set),aQ=(0,i.useRef)(new Map),aR=(0,i.useRef)(aH),aS=(0,i.useRef)(new Set),[aT,aU]=(0,i.useState)(new Set),[aV,aW]=(0,i.useState)(new Set),[aX,aY]=(0,i.useState)(new Map),aZ=aC?10/g.scale:0,a$=aC?28/g.scale:0,a_=(0,i.useCallback)(a=>d[a]??am,[d]);(0,i.useEffect)(()=>{let a=a=>{(a.ctrlKey||a.metaKey)&&"z"===a.key&&F&&(a.preventDefault(),F()),(a.ctrlKey||a.metaKey)&&("y"===a.key||a.shiftKey&&"z"===a.key)&&I&&(a.preventDefault(),I()),"Escape"===a.key&&(ae(null),C?.()),"Delete"===a.key&&"state"===k.kind&&k.id&&D&&D(k.id)};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[F,I,C,D,k]);let a0=(0,i.useCallback)(a=>{let b=$.current;ak.current={pointerId:a.pointerId,startX:a.clientX,startY:a.clientY,origX:b.x,origY:b.y},au.current=!1,at(!0);let c=Y.current;c&&(av.current.set(a.pointerId,c),c.setPointerCapture(a.pointerId))},[]),a1=(0,i.useCallback)(()=>{let a=[...aw.current.entries()];if(a.length<2)return;let[[b,c],[d,e]]=a;aN(),ac(null),ak.current=null;let f=Math.max(1,Math.hypot(e.x-c.x,e.y-c.y)),g=aL((c.x+e.x)/2,(c.y+e.y)/2);ax.current={a:b,b:d,startDist:f,startMidX:g.x,startMidY:g.y,start:$.current},au.current=!0,az(!0);let h=Y.current;if(h){for(let a of[b,d])if(!av.current.has(a))try{h.setPointerCapture(a),av.current.set(a,h)}catch{}}},[aN,aL,ac]),a2=(0,i.useCallback)(a=>{if(aB.current=!1,"touch"!==a.pointerType)return;aD(!0),aw.current.set(a.pointerId,{x:a.clientX,y:a.clientY});let b=aw.current.size;b<2||(a.stopPropagation(),2===b&&a1())},[a1]),a3=(0,i.useCallback)((a,b)=>{if(0!==a.button||af.current)return;if(a.stopPropagation(),aO(a,{kind:"state",id:b}),!p&&"transition"===n)return void(o?o!==b&&ae({stateName:o,targetName:b,x:a.clientX,y:a.clientY}):t?.("state",b));if(t?.("state",b),p||!v)return;let c=a_(b);ac({name:b,pointerId:a.pointerId,startX:a.clientX,startY:a.clientY,origX:c.x,origY:c.y});let d=a.currentTarget;av.current.set(a.pointerId,d),d.setPointerCapture?.(a.pointerId)},[t,a_,n,o,aO,ac,p,v]),a4=(0,i.useCallback)(a=>{if("touch"===a.pointerType){aO(a,{kind:"canvas"}),a0(a);return}(1===a.button||0===a.button&&af.current)&&(a.preventDefault(),a0(a))},[aO,a0]),a5=(0,i.useCallback)(a=>{aw.current.has(a.pointerId)&&aw.current.set(a.pointerId,{x:a.clientX,y:a.clientY});let b=aA.current;b&&b.pointerId===a.pointerId&&Math.hypot(a.clientX-b.x,a.clientY-b.y)>8&&aN(a.pointerId);let c=ax.current;if(c){if(a.pointerId!==c.a&&a.pointerId!==c.b)return;let b=aw.current.get(c.a),d=aw.current.get(c.b);if(!b||!d)return;let e=Math.hypot(d.x-b.x,d.y-b.y),f=aL((b.x+d.x)/2,(b.y+d.y)/2);j(O(Q(c.start,c.start.scale*(e/c.startDist),{x:c.startMidX,y:c.startMidY}),f.x-c.startMidX,f.y-c.startMidY));return}let d=ak.current;if(d){if(d.pointerId!==a.pointerId)return;let b=a.clientX-d.startX,c=a.clientY-d.startY,e=8*("touch"===a.pointerType);(Math.abs(b)>e||Math.abs(c)>e)&&(au.current=!0),j({x:d.origX+b,y:d.origY+c,scale:$.current.scale});return}if(!_||_.pointerId!==a.pointerId||!v)return;let e=$.current.scale,f=(a.clientX-_.startX)/e,g=(a.clientY-_.startY)/e,h=a_(_.name);v(_.name,{...h,x:Math.max(0,_.origX+f),y:Math.max(0,_.origY+g)})},[_,a_,v,j,aN,aL]),a6=(0,i.useCallback)(a=>{aw.current.delete(a.pointerId),aN(a.pointerId),aM(a.pointerId);let b=ax.current;if(b&&(b.a===a.pointerId||b.b===a.pointerId)){ax.current=null,az(!1);let c=b.a===a.pointerId?b.b:b.a,d=aw.current.get(c);if(d){let a=$.current;ak.current={pointerId:c,startX:d.x,startY:d.y,origX:a.x,origY:a.y},au.current=!0,at(!0)}}ak.current?.pointerId===a.pointerId&&(ak.current=null),ab.current?.pointerId===a.pointerId&&ac(null),ak.current||at(!1),ax.current||az(!1)},[aN,aM,ac]);(0,i.useEffect)(()=>{let a=Y.current;if(!a)return;let b=a=>{a.preventDefault();let b=$.current,c=an(a.deltaX,a.deltaMode),d=an(a.deltaY,a.deltaMode);if(a.ctrlKey||a.metaKey){let c=P(b,Math.exp(-(.0025*d)),aL(a.clientX,a.clientY));c!==b&&j(c);return}let e=a.shiftKey?-(c||d):-c,f=a.shiftKey?0:-d;(0!==e||0!==f)&&j(O(b,e,f))};return a.addEventListener("wheel",b,{passive:!1}),()=>a.removeEventListener("wheel",b)},[j,aL]),(0,i.useEffect)(()=>{let a=a=>{"Space"!==a.code||a.repeat||ao(a.target)||ao(document.activeElement)||(a.preventDefault(),af.current=!0,ah(!0))},b=a=>{"Space"===a.code&&(af.current=!1,ah(!1))},c=()=>{af.current=!1,ah(!1)};return window.addEventListener("keydown",a),window.addEventListener("keyup",b),window.addEventListener("blur",c),()=>{window.removeEventListener("keydown",a),window.removeEventListener("keyup",b),window.removeEventListener("blur",c)}},[]);let a7=(0,i.useCallback)(a=>{let b=Y.current?.getBoundingClientRect(),c={x:(b?.width??0)/2,y:(b?.height??0)/2},d=$.current,e=P(d,a,c);e!==d&&j(e)},[j]),a8=(0,i.useCallback)(()=>{let a=Y.current?.getBoundingClientRect(),b={x:(a?.width??0)/2,y:(a?.height??0)/2};j(Q($.current,1,b))},[j]),a9=(0,i.useCallback)(()=>{let a=Y.current?.getBoundingClientRect();if(!a)return;let b=aG.map(a=>a_(a.name));j(b.length?R(b,a.width,a.height):{...M})},[aG,a_,j]);(0,i.useImperativeHandle)(b,()=>({fit:a9,zoomIn:()=>a7(1.25),zoomOut:()=>a7(.8),resetZoom:a8,element:()=>Y.current}),[a9,a7,a8]);let ba=(0,i.useRef)(a9);ba.current=a9,(0,i.useEffect)(()=>{if(void 0===s)return;let a=requestAnimationFrame(()=>ba.current());return()=>cancelAnimationFrame(a)},[s]);let bb=(0,i.useCallback)((a,b)=>{y&&(a.preventDefault(),a.stopPropagation(),y(a.clientX,a.clientY,b?{kind:"state",id:b}:{kind:"canvas"}))},[y]),bc=(0,i.useMemo)(()=>{let a=new Set(aG.map(a=>a.name)),b=[];for(let c of aG)for(let[d,e]of(c.transitions??[]).entries())e.nextState&&a.has(e.nextState)&&b.push({from:c.name,to:e.nextState,event:e.event,stateName:c.name,index:d,condition:e.condition});return b},[aG]),bd=(0,i.useMemo)(()=>{let a=K(bc,a_),b=new Map(E(bc.map((b,c)=>{let d=a_(b.from);return{id:`${b.stateName}:${b.index}`,event:b.event,condition:b.condition,glyph:!0,at:b.from===b.to?()=>({x:d.x+d.width+44+30,y:d.y+d.height/2+4}):a[c].at}}),aG.map(a=>a_(a.name))).map(a=>[a.label.id,a]));return bc.flatMap((c,d)=>{let e=`${c.stateName}:${c.index}`,f=b.get(e);return f?[{arrow:c,id:e,curve:a[d],spot:f}]:[]})},[bc,aG,a_]);(0,i.useEffect)(()=>{let a=new Set(aG.map(a=>a.name)),b=new Set(bc.map(a=>`${a.stateName}:${a.index}`)),c=aR.current===aH,d=[...a].filter(a=>!aP.current.has(a));d.length&&aU(a=>{let b=new Set(a);return d.forEach(a=>b.add(a)),b});let e=[...b].filter(a=>!aS.current.has(a));e.length&&aW(a=>{let b=new Set(a);return e.forEach(a=>b.add(a)),b}),aU(b=>{let c=!1,d=new Set(b);return b.forEach(b=>{a.has(b)||(d.delete(b),c=!0)}),c?d:b}),aW(a=>{let c=!1,d=new Set(a);return a.forEach(a=>{b.has(a)||(d.delete(a),c=!0)}),c?d:a}),c?aY(b=>{let c=new Map(b),d=!1;return aQ.current.forEach((b,e)=>{a.has(e)||c.has(e)||(c.set(e,b),d=!0)}),a.forEach(a=>{c.delete(a)&&(d=!0)}),d?c:b}):aY(a=>a.size?new Map:a),aP.current=a,aQ.current=new Map(aG.map(a=>[a.name,{state:a,pos:a_(a.name)}])),aS.current=b,aR.current=aH},[aG,aH,bc,a_]);let be={...al(T),...V},bf=aC?" slc-hud--coarse":"";return(0,h.jsxs)("div",{className:`slc-pane${U?` ${U}`:""}`,style:be,"data-pinch-owner":X,children:[q&&aF.length>1&&(0,h.jsx)("div",{className:"slc-crumbs",children:aF.map((a,b)=>(0,h.jsxs)("span",{className:"slc-crumb-item",children:[b>0&&(0,h.jsx)("span",{className:"slc-crumb-sep",children:"›"}),(0,h.jsx)("button",{type:"button",className:`slc-crumb${b===aF.length-1?" slc-crumb--current":""}`,onClick:()=>x?.(b),children:a})]},`${a}-${b}`))}),(0,h.jsxs)("svg",{ref:Y,id:W,className:"slc-surface",style:{cursor:as?"grabbing":ag?"grab":void 0,touchAction:"none",...aC?{WebkitUserSelect:"none",userSelect:"none",WebkitTouchCallout:"none"}:{}},onPointerDownCapture:a2,onPointerDown:a4,onPointerMove:a5,onPointerUp:a6,onPointerCancel:a6,onAuxClick:a=>a.preventDefault(),onClick:a=>{if(aB.current){aB.current=!1,a.stopPropagation();return}if(au.current){au.current=!1;return}a.target?.tagName==="svg"&&(u?.(),ae(null))},onContextMenu:a=>bb(a),children:[(0,h.jsxs)("defs",{children:[(0,h.jsx)("marker",{id:`slc-arrow-${Z}`,markerWidth:"10",markerHeight:"7",refX:"10",refY:"3.5",orient:"auto",children:(0,h.jsx)("polygon",{points:"0 0, 10 3.5, 0 7",className:"slc-arrowhead"})}),(0,h.jsx)("marker",{id:`slc-arrow-sel-${Z}`,markerWidth:"10",markerHeight:"7",refX:"10",refY:"3.5",orient:"auto",children:(0,h.jsx)("polygon",{points:"0 0, 10 3.5, 0 7",className:"slc-arrowhead slc-arrowhead--selected"})})]}),"transition"===n&&o&&(0,h.jsxs)("text",{x:"50%",y:"30",textAnchor:"middle",className:"slc-draw-hint",children:['Click target state to create transition from "',o,'"']}),(0,h.jsxs)("g",{transform:S(g),style:as||ay?{pointerEvents:"none"}:void 0,children:[bd.map(({arrow:a,id:b,curve:c,spot:d})=>{let e="transition"===k.kind&&k.id===b,f=aV.has(b),g=c.at(.5),i=Math.hypot(g.x-d.cx,g.y-d.cy)>4;return(0,h.jsxs)("g",{children:[aC&&(0,h.jsx)("path",{d:c.path,fill:"none",stroke:"transparent",strokeWidth:a$,strokeLinecap:"round",pointerEvents:"stroke",onClick:a=>{a.stopPropagation(),t?.("transition",b)}}),(0,h.jsx)("path",{d:c.path,pathLength:1,markerEnd:`url(#slc-arrow${e?"-sel":""}-${Z})`,className:`slc-edge${e?" slc-edge--selected":""}${f?" slc-edge-enter":""}`,onClick:a=>{a.stopPropagation(),t?.("transition",b)}}),(0,h.jsxs)("g",{className:"slc-chip",onClick:a=>{a.stopPropagation(),t?.("transition",b)},children:[i&&(0,h.jsx)("line",{x1:g.x,y1:g.y,x2:d.cx,y2:d.cy-5,className:`slc-chip-leader${e?" slc-chip-leader--selected":""}`}),aC&&(0,h.jsx)("rect",{x:d.x-aZ,y:d.y-aZ,width:d.width+2*aZ,height:d.height+2*aZ,fill:"transparent",pointerEvents:"all"}),(0,h.jsx)("rect",{x:d.x,y:d.y,width:d.width,height:d.height,rx:4,className:`slc-chip-plate${e?" slc-chip-plate--selected":""}`}),(0,h.jsx)(aq,{mark:function(a){let b=a.toLowerCase();for(let{glyph:a,words:c}of H)if(c.some(a=>b.includes(a)))return a;return G}(a.event),x:B(d).x,y:B(d).y,selected:e}),(0,h.jsx)("text",{x:d.cx,y:d.cy-5,textAnchor:"middle",className:`slc-chip-text${e?" slc-chip-text--selected":""}`,children:a.event}),a.condition&&(0,h.jsxs)("text",{x:d.cx,y:d.cy+7,textAnchor:"middle",className:"slc-chip-guard",children:[(0,h.jsx)("title",{children:a.condition}),z(a.condition)]})]})]},`arrow-${b}`)}),aG.map(a=>{let b=a_(a.name),c="state"===k.kind&&k.id===a.name,d="final"===a.kind,e="history"===a.kind,f=ap(a),g=o===a.name,i=aK.has(a.name),j=(a.onEntry?.actions?.length??0)>0,l=(a.onExit?.actions?.length??0)>0,m=aJ.has(a.name),q=aT.has(a.name),r=ag?void 0:"transition"!==n||p?f?"slc-node--drillable":p||!v?"slc-node--static":"slc-node--draggable":"slc-node--drawing";return(0,h.jsxs)("g",{className:r,onPointerDown:b=>a3(b,a.name),onDoubleClick:b=>{b.stopPropagation(),f&&w?.(a.name)},onContextMenu:b=>bb(b,a.name),children:[aC&&(0,h.jsx)("rect",{x:b.x-aZ,y:b.y-aZ,width:b.width+2*aZ,height:b.height+2*aZ,rx:12,fill:"transparent",pointerEvents:"all"}),(0,h.jsxs)("g",{className:q?"slc-node-enter":void 0,children:[(0,h.jsx)("rect",{x:b.x,y:b.y,width:b.width,height:b.height,rx:e?30:d?4:8,strokeDasharray:d?"6 3":f?"4 2":void 0,className:["slc-node",d?"slc-node--final":f?"slc-node--composite":"",g?"slc-node--source":"",i?"slc-node--error":"",c?"slc-node--selected":"",m?"slc-node--active":""].filter(Boolean).join(" ")}),(0,h.jsx)("text",{x:b.x+b.width/2,y:b.y+(j||l?b.height/2:b.height/2+5),textAnchor:"middle",className:"slc-node-name",children:a.name}),a.kind&&"normal"!==a.kind&&(0,h.jsx)("text",{x:b.x+b.width-8,y:b.y+14,textAnchor:"end",className:"slc-node-kind",children:a.kind}),j&&(0,h.jsx)("text",{x:b.x+6,y:b.y+b.height-6,className:"slc-node-entry",children:"▸entry"}),l&&(0,h.jsx)("text",{x:b.x+b.width-6,y:b.y+b.height-6,textAnchor:"end",className:"slc-node-exit",children:"exit◂"}),i&&(0,h.jsx)("text",{x:b.x+6,y:b.y+14,className:"slc-node-warn",children:"⚠"}),f&&(0,h.jsxs)("text",{x:b.x+b.width/2,y:b.y+b.height-6,textAnchor:"middle",className:"slc-node-drill",children:["▼ ",(a.states?.length??0)+(a.parallel?.states.length??0)," children — ",aC?"double-tap":"double-click"," to enter"]})]})]},a.name)}),Array.from(aX.entries()).map(([a,{state:b,pos:c}])=>{let d="final"===b.kind,e=ap(b);return(0,h.jsxs)("g",{className:"slc-node-exit-group",onAnimationEnd:b=>{"slc-node-out"===b.animationName&&aY(b=>{if(!b.has(a))return b;let c=new Map(b);return c.delete(a),c})},children:[(0,h.jsx)("rect",{x:c.x,y:c.y,width:c.width,height:c.height,rx:"history"===b.kind?30:d?4:8,strokeDasharray:d?"6 3":e?"4 2":void 0,className:`slc-node${d?" slc-node--final":e?" slc-node--composite":""}`}),(0,h.jsx)("text",{x:c.x+c.width/2,y:c.y+c.height/2+5,textAnchor:"middle",className:"slc-node-name",children:a})]},`exit-${a}`)})]}),0===aG.length&&(0,h.jsx)("text",{x:"50%",y:"50%",textAnchor:"middle",className:"slc-empty",children:N??"This level has no states."})]}),r&&(0,h.jsxs)("div",{className:`slc-hud${bf}`,children:[(0,h.jsx)("button",{type:"button",className:"slc-hud-btn",title:"Zoom out (Ctrl + wheel down, or pinch in)",disabled:g.scale<=L.min,onClick:()=>a7(.8),children:"−"}),(0,h.jsxs)("button",{type:"button",className:"slc-hud-btn slc-hud-btn--scale",title:"Reset zoom to 100%",onClick:a8,children:[Math.round(100*g.scale),"%"]}),(0,h.jsx)("button",{type:"button",className:"slc-hud-btn",title:"Zoom in (Ctrl + wheel up, or pinch out)",disabled:g.scale>=L.max,onClick:()=>a7(1.25),children:"+"}),(0,h.jsx)("span",{className:"slc-hud-sep",children:"|"}),(0,h.jsx)("button",{type:"button",className:"slc-hud-btn",title:"Fit the whole machine in view",onClick:a9,children:"⤢ Fit"}),J&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("span",{className:"slc-hud-sep",children:"|"}),J]}),(0,h.jsx)("span",{className:"slc-hud-sep",children:"|"}),(0,h.jsx)("span",{className:"slc-hud-hint",title:aC?"Drag to pan · pinch with two fingers to zoom · press and hold for the menu · double-tap a composite to enter it":"Wheel scrolls · Shift+wheel scrolls sideways · Ctrl+wheel zooms at the cursor · middle-drag or Space+drag pans",children:ay?"pinching":as?"panning":aC?"drag · pinch · hold":ag?"space to pan":"wheel · ⌃wheel · space"})]}),ad&&(0,h.jsxs)("div",{className:"slc-picker",style:{left:ad.x,top:ad.y-80},onClick:a=>a.stopPropagation(),children:[(0,h.jsxs)("div",{className:"slc-picker-title",children:[ad.stateName," → ",ad.targetName]}),(0,h.jsx)("div",{className:"slc-picker-sub",children:"Select event:"}),0===aI.length?(0,h.jsx)("div",{className:"slc-picker-empty",children:"No events defined. Add events first."}):aI.map(a=>(0,h.jsx)("button",{type:"button",className:"slc-picker-item",onClick:()=>{ad&&(A?.(ad.stateName,ad.targetName,a),ae(null),C?.())},children:a},a)),(0,h.jsx)("button",{type:"button",className:"slc-picker-cancel",onClick:()=>{ae(null),C?.()},children:"Cancel"})]})]})});function at(a,b){return 1===b?16*a:2===b?400*a:a}let au={"1:1":["one","one"],"1:N":["one","many"],"N:1":["many","one"],"N:M":["many","many"]};function av(a,b,c){let d=b.x-a.x,e=b.y-a.y,f=Math.hypot(d,e)||1,g=d/f,h=e/f,i=-h,j=(b,c)=>`${(a.x+g*b+i*c).toFixed(1)} ${(a.y+h*b+g*c).toFixed(1)}`;return"one"===c?`M ${j(9,6)} L ${j(9,-6)}`:`M ${j(13,0)} L ${j(0,7)} M ${j(13,0)} L ${j(0,-7)} M ${j(13,0)} L ${j(0,0)}`}function aw({definition:a,positions:b,viewport:c,onViewportChange:d,selection:e=null,errorElements:f,readOnly:g=!1,fitKey:j,onSelect:k,onClearSelection:l,onEntityMove:m,onOpenMachine:n,onContextMenu:o,emptyHint:p,theme:q,className:r,style:s,svgId:t}){let u=(0,i.useRef)(null),v=(0,i.useRef)(c);v.current=c;let w=(0,i.useRef)(null),x=(0,i.useRef)(new Map),y=(0,i.useRef)(null),z=(0,i.useMemo)(()=>{let c=new Set;return(a.entities??[]).filter(a=>!(!a?.name||c.has(a.name))&&!!b[a.name]&&(c.add(a.name),!0))},[a.entities,b]),A=(0,i.useMemo)(()=>{let c=new Map(z.map((a,b)=>[a.name,`e${b}`])),d=(a.relationships??[]).filter(a=>a&&c.has(a.from)&&c.has(a.to)),e=K(d.map(a=>({from:c.get(a.from),to:c.get(a.to)})),a=>b[z[Number(a.slice(1))].name]);return d.map((a,b)=>({rel:a,curve:e[b]}))},[a.relationships,z,b]),B=(0,i.useMemo)(()=>E(A.filter(({rel:a})=>a.label).map(({rel:a,curve:b})=>({event:a.label,at:b.at})),z.map(a=>b[a.name])),[A,z,b]),C=(0,i.useCallback)((a,b)=>{let c=u.current?.getBoundingClientRect();return{x:a-(c?.left??0),y:b-(c?.top??0)}},[]);(0,i.useEffect)(()=>{if(void 0===j)return;let a=u.current?.getBoundingClientRect(),c=Object.values(b);a&&0!==c.length&&d(R(c,a.width,a.height))},[j]),(0,i.useEffect)(()=>{let a=u.current;if(!a)return;let b=a=>{a.preventDefault();let b=v.current,c=at(a.deltaX,a.deltaMode),e=at(a.deltaY,a.deltaMode);if(a.ctrlKey||a.metaKey)return void d(P(b,Math.exp(-(.0025*e)),C(a.clientX,a.clientY)));let f=a.shiftKey?-(c||e):-c,g=a.shiftKey?0:-e;(0!==f||0!==g)&&d(O(b,f,g))};return a.addEventListener("wheel",b,{passive:!1}),()=>a.removeEventListener("wheel",b)},[d,C]);let D=()=>{let a=[...x.current.values()];if(a.length<2)return null;let[b,c]=a;return{distance:Math.hypot(c.x-b.x,c.y-b.y)||1,mid:{x:(b.x+c.x)/2,y:(b.y+c.y)/2}}},F=(a,c)=>{if(0!==a.button&&"mouse"===a.pointerType)return;if(a.stopPropagation(),u.current?.setPointerCapture(a.pointerId),x.current.set(a.pointerId,C(a.clientX,a.clientY)),x.current.size>=2){w.current=null,y.current=D();return}let d=void 0!==c&&!g;w.current={kind:d?"move":"pan",pointerId:a.pointerId,startX:a.clientX,startY:a.clientY,lastX:a.clientX,lastY:a.clientY,name:c,origin:d?b[c]:void 0,moved:!1}},G=a=>{if(x.current.delete(a.pointerId),y.current){x.current.size<2&&(y.current=null);return}let b=w.current;!b||b.pointerId!==a.pointerId||(w.current=null,b.moved||(b.name?k?.(b.name):l?.()))},H=new Set(f??[]);return(0,h.jsxs)("div",{className:`slc-pane${r?` ${r}`:""}`,style:{...al(q),...s},children:[(0,h.jsx)("svg",{ref:u,id:t,className:"slc-surface",onPointerDown:a=>F(a),onPointerMove:a=>{if(x.current.has(a.pointerId)&&x.current.set(a.pointerId,C(a.clientX,a.clientY)),y.current){let a=D();if(!a)return;let b=y.current;d(P(O(v.current,a.mid.x-b.mid.x,a.mid.y-b.mid.y),a.distance/b.distance,a.mid)),y.current=a;return}let b=w.current;if(b&&b.pointerId===a.pointerId&&!(!b.moved&&4>Math.hypot(a.clientX-b.startX,a.clientY-b.startY))){if(b.moved=!0,"pan"===b.kind)d(O(v.current,a.clientX-b.lastX,a.clientY-b.lastY));else if(b.name&&b.origin){var c,e,f;let d=(c=v.current,e=a.clientX-b.startX,f=a.clientY-b.startY,{x:e/c.scale,y:f/c.scale});m?.(b.name,{...b.origin,x:b.origin.x+d.x,y:b.origin.y+d.y})}b.lastX=a.clientX,b.lastY=a.clientY}},onPointerUp:G,onPointerCancel:G,onContextMenu:a=>{o&&(a.preventDefault(),o(a.clientX,a.clientY,{kind:"canvas"}))},children:(0,h.jsxs)("g",{transform:S(c),children:[A.map(({rel:a,curve:b},c)=>{let[d,e]=au[a.cardinality]??au["1:N"];return(0,h.jsxs)("g",{className:"slc-erd-rel",children:[(0,h.jsx)("path",{d:b.path,className:"slc-erd-line"}),(0,h.jsx)("path",{d:av(b.p0,b.p1,d),className:"slc-erd-mark"}),(0,h.jsx)("path",{d:av(b.p3,b.p2,e),className:"slc-erd-mark"})]},`r${c}`)}),z.map(a=>{let c=b[a.name],d=(a.attributes??[]).filter(a=>a?.name),f=["slc-node",e===a.name?"slc-node--selected":"",H.has(a.name)?"slc-node--error":""].filter(Boolean).join(" ");return(0,h.jsxs)("g",{className:g?"slc-node--static":"slc-node--draggable",onPointerDown:b=>F(b,a.name),onContextMenu:b=>{o&&(b.preventDefault(),b.stopPropagation(),o(b.clientX,b.clientY,{kind:"entity",id:a.name}))},children:[a.description&&(0,h.jsx)("title",{children:a.description}),(0,h.jsx)("rect",{x:c.x,y:c.y,width:c.width,height:c.height,rx:6,className:f}),(0,h.jsx)("path",{d:`M ${c.x} ${c.y+30} h ${c.width}`,className:"slc-erd-rule"}),(0,h.jsx)("text",{x:c.x+c.width/2,y:c.y+15+5,textAnchor:"middle",className:"slc-node-name",children:a.name}),0===d.length&&(0,h.jsx)("text",{x:c.x+14,y:c.y+30+15,className:"slc-erd-row slc-erd-row--empty",children:"no attributes"}),d.map((a,b)=>{let d=c.y+30+20*b+15,e=U(a),f=["pk"===a.key?"PK":"uk"===a.key?"UK":"",a.references?"FK":""].filter(Boolean).join(" ");return(0,h.jsxs)("g",{className:e.length&&n?"slc-erd-state":void 0,onPointerDown:e.length&&n?a=>a.stopPropagation():void 0,onClick:e.length&&n?()=>n(e[0]):void 0,children:[(e.length>0||a.description)&&(0,h.jsx)("title",{children:[e.length?`stores the state of ${e.join(", ")}`:"",a.description??""].filter(Boolean).join(" — ")}),(0,h.jsxs)("text",{x:c.x+14,y:d,className:`slc-erd-row${e.length?" slc-erd-row--state":""}${"pk"===a.key?" slc-erd-row--pk":""}`,children:[e.length?"◉ ":"",ag(a),a.nullable?" ?":""]}),f&&(0,h.jsx)("text",{x:c.x+c.width-14,y:d,textAnchor:"end",className:"slc-erd-badge",children:f})]},a.name)})]},a.name)}),B.map((a,b)=>(0,h.jsxs)("g",{pointerEvents:"none",children:[(0,h.jsx)("rect",{x:a.x,y:a.y,width:a.width,height:a.height,rx:4,className:"slc-chip-plate"}),(0,h.jsx)("text",{x:a.cx,y:a.cy-5,textAnchor:"middle",className:"slc-erd-rel-label",children:a.label.event})]},`l${b}`))]})}),0===z.length&&p&&(0,h.jsx)("div",{className:"slc-erd-empty",children:p})]})}let ax=a=>{let b,c=new Set,d=(a,d)=>{let e="function"==typeof a?a(b):a;if(!Object.is(e,b)){let a=b;b=(null!=d?d:"object"!=typeof e||null===e)?e:Object.assign({},b,e),c.forEach(c=>c(b,a))}},e=()=>b,f={setState:d,getState:e,getInitialState:()=>g,subscribe:a=>(c.add(a),()=>c.delete(a))},g=b=a(d,e,f);return f},ay=a=>{let b=a?ax(a):ax,c=a=>(function(a,b=a=>a){let c=i.default.useSyncExternalStore(a.subscribe,i.default.useCallback(()=>b(a.getState()),[a,b]),i.default.useCallback(()=>b(a.getInitialState()),[a,b]));return i.default.useDebugValue(c),c})(b,a);return Object.assign(c,b),c};var az=a.i(53681);let aA=Object.create(null);aA.open="0",aA.close="1",aA.ping="2",aA.pong="3",aA.message="4",aA.upgrade="5",aA.noop="6";let aB=Object.create(null);Object.keys(aA).forEach(a=>{aB[aA[a]]=a});let aC={type:"error",data:"parser error"},aD=({type:a,data:b},c,d)=>d(b instanceof ArrayBuffer||ArrayBuffer.isView(b)?c?b:"b"+aE(b,!0).toString("base64"):aA[a]+(b||"")),aE=(a,b)=>Buffer.isBuffer(a)||a instanceof Uint8Array&&!b?a:a instanceof ArrayBuffer?Buffer.from(a):Buffer.from(a.buffer,a.byteOffset,a.byteLength),aF=(a,b)=>{if("string"!=typeof a)return{type:"message",data:aG(a,b)};let c=a.charAt(0);return"b"===c?{type:"message",data:aG(Buffer.from(a.substring(1),"base64"),b)}:aB[c]?a.length>1?{type:aB[c],data:a.substring(1)}:{type:aB[c]}:aC},aG=(a,b)=>"arraybuffer"===b?a instanceof ArrayBuffer?a:Buffer.isBuffer(a)?a.buffer.slice(a.byteOffset,a.byteOffset+a.byteLength):a.buffer:Buffer.isBuffer(a)?a:Buffer.from(a);function aH(a){return a.reduce((a,b)=>a+b.length,0)}function aI(a,b){if(a[0].length===b)return a.shift();let c=new Uint8Array(b),d=0;for(let e=0;e<b;e++)c[e]=a[0][d++],d===a[0].length&&(a.shift(),d=0);return a.length&&d<a[0].length&&(a[0]=a[0].slice(d)),c}function aJ(a){if(a){var b=a;for(var c in aJ.prototype)b[c]=aJ.prototype[c];return b}}aJ.prototype.on=aJ.prototype.addEventListener=function(a,b){return this._callbacks=this._callbacks||{},(this._callbacks["$"+a]=this._callbacks["$"+a]||[]).push(b),this},aJ.prototype.once=function(a,b){function c(){this.off(a,c),b.apply(this,arguments)}return c.fn=b,this.on(a,c),this},aJ.prototype.off=aJ.prototype.removeListener=aJ.prototype.removeAllListeners=aJ.prototype.removeEventListener=function(a,b){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var c,d=this._callbacks["$"+a];if(!d)return this;if(1==arguments.length)return delete this._callbacks["$"+a],this;for(var e=0;e<d.length;e++)if((c=d[e])===b||c.fn===b){d.splice(e,1);break}return 0===d.length&&delete this._callbacks["$"+a],this},aJ.prototype.emit=function(a){this._callbacks=this._callbacks||{};for(var b=Array(arguments.length-1),c=this._callbacks["$"+a],d=1;d<arguments.length;d++)b[d-1]=arguments[d];if(c){c=c.slice(0);for(var d=0,e=c.length;d<e;++d)c[d].apply(this,b)}return this},aJ.prototype.emitReserved=aJ.prototype.emit,aJ.prototype.listeners=function(a){return this._callbacks=this._callbacks||{},this._callbacks["$"+a]||[]},aJ.prototype.hasListeners=function(a){return!!this.listeners(a).length};let aK=process.nextTick,aL=a.g;class aM{constructor(){this._cookies=new Map}parseCookies(a){a&&a.forEach(a=>{let b=function(a){let b=a.split("; "),c=b[0].indexOf("=");if(-1===c)return;let d=b[0].substring(0,c).trim();if(!d.length)return;let e=b[0].substring(c+1).trim();34===e.charCodeAt(0)&&(e=e.slice(1,-1));let f={name:d,value:e};for(let a=1;a<b.length;a++){let c=b[a].split("=");if(2!==c.length)continue;let d=c[0].trim(),e=c[1].trim();switch(d){case"Expires":f.expires=new Date(e);break;case"Max-Age":let g=new Date;g.setUTCSeconds(g.getUTCSeconds()+parseInt(e,10)),f.expires=g}}return f}(a);b&&this._cookies.set(b.name,b)})}get cookies(){let a=Date.now();return this._cookies.forEach((b,c)=>{var d;(null==(d=b.expires)?void 0:d.getTime())<a&&this._cookies.delete(c)}),this._cookies.entries()}addCookies(a){let b=[];for(let[a,c]of this.cookies)b.push(`${a}=${c.value}`);b.length&&(a.setDisableHeaderCheck(!0),a.setRequestHeader("cookie",b.join("; ")))}appendCookies(a){for(let[b,c]of this.cookies)a.append("cookie",`${b}=${c.value}`)}}function aN(a,...b){return b.reduce((b,c)=>(a.hasOwnProperty(c)&&(b[c]=a[c]),b),{})}let aO=aL.setTimeout,aP=aL.clearTimeout;function aQ(a,b){b.useNativeTimers?(a.setTimeoutFn=aO.bind(aL),a.clearTimeoutFn=aP.bind(aL)):(a.setTimeoutFn=aL.setTimeout.bind(aL),a.clearTimeoutFn=aL.clearTimeout.bind(aL))}function aR(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}var aS=a.i(72724);let aT=(0,aS.default)("engine.io-client:transport");class aU extends Error{constructor(a,b,c){super(a),this.description=b,this.context=c,this.type="TransportError"}}class aV extends aJ{constructor(a){super(),this.writable=!1,aQ(this,a),this.opts=a,this.query=a.query,this.socket=a.socket,this.supportsBinary=!a.forceBase64}onError(a,b,c){return super.emitReserved("error",new aU(a,b,c)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return("opening"===this.readyState||"open"===this.readyState)&&(this.doClose(),this.onClose()),this}send(a){"open"===this.readyState?this.write(a):aT("transport is not open, discarding packets")}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(a){let b=aF(a,this.socket.binaryType);this.onPacket(b)}onPacket(a){super.emitReserved("packet",a)}onClose(a){this.readyState="closed",super.emitReserved("close",a)}pause(a){}createUri(a,b={}){return a+"://"+this._hostname()+this._port()+this.opts.path+this._query(b)}_hostname(){let a=this.opts.hostname;return -1===a.indexOf(":")?a:"["+a+"]"}_port(){return this.opts.port&&(this.opts.secure&&443!==Number(this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(a){let b=function(a){let b="";for(let c in a)a.hasOwnProperty(c)&&(b.length&&(b+="&"),b+=encodeURIComponent(c)+"="+encodeURIComponent(a[c]));return b}(a);return b.length?"?"+b:""}}let aW=(0,aS.default)("engine.io-client:polling");class aX extends aV{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(a){this.readyState="pausing";let b=()=>{aW("paused"),this.readyState="paused",a()};if(this._polling||!this.writable){let a=0;this._polling&&(aW("we are currently polling - waiting to pause"),a++,this.once("pollComplete",function(){aW("pre-pause polling complete"),--a||b()})),this.writable||(aW("we are currently writing - waiting to pause"),a++,this.once("drain",function(){aW("pre-pause writing complete"),--a||b()}))}else b()}_poll(){aW("polling"),this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(a){aW("polling got data %s",a);let b=a=>{if("opening"===this.readyState&&"open"===a.type&&this.onOpen(),"close"===a.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(a)};((a,b)=>{let c=a.split("\x1e"),d=[];for(let a=0;a<c.length;a++){let e=aF(c[a],b);if(d.push(e),"error"===e.type)break}return d})(a,this.socket.binaryType).forEach(b),"closed"!==this.readyState&&(this._polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState?this._poll():aW('ignoring poll - transport state "%s"',this.readyState))}doClose(){let a=()=>{aW("writing close packet"),this.write([{type:"close"}])};"open"===this.readyState?(aW("transport open - closing"),a()):(aW("transport not open - deferring close"),this.once("open",a))}write(a){var b;let c,d,e;this.writable=!1,b=a=>{this.doWrite(a,()=>{this.writable=!0,this.emitReserved("drain")})},d=Array(c=a.length),e=0,a.forEach((a,f)=>{aD(a,!1,a=>{d[f]=a,++e===c&&b(d.join("\x1e"))})})}uri(){let a=this.opts.secure?"https":"http",b=this.query||{};return!1!==this.opts.timestampRequests&&(b[this.opts.timestampParam]=aR()),this.supportsBinary||b.sid||(b.b64=1),this.createUri(a,b)}}let aY=!1;try{aY="u">typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(a){}let aZ=aY,a$=(0,aS.default)("engine.io-client:polling");function a_(){}class a0 extends aX{constructor(a){if(super(a),"u">typeof location){const b="https:"===location.protocol;let c=location.port;c||(c=b?"443":"80"),this.xd="u">typeof location&&a.hostname!==location.hostname||c!==a.port}}doWrite(a,b){let c=this.request({method:"POST",data:a});c.on("success",b),c.on("error",(a,b)=>{this.onError("xhr post error",a,b)})}doPoll(){a$("xhr poll");let a=this.request();a.on("data",this.onData.bind(this)),a.on("error",(a,b)=>{this.onError("xhr poll error",a,b)}),this.pollXhr=a}}class a1 extends aJ{constructor(a,b,c){super(),this.createRequest=a,aQ(this,c),this._opts=c,this._method=c.method||"GET",this._uri=b,this._data=void 0!==c.data?c.data:null,this._create()}_create(){var a;let b=aN(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");b.xdomain=!!this._opts.xd;let c=this._xhr=this.createRequest(b);try{a$("xhr open %s: %s",this._method,this._uri),c.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders)for(let a in c.setDisableHeaderCheck&&c.setDisableHeaderCheck(!0),this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(a)&&c.setRequestHeader(a,this._opts.extraHeaders[a])}catch(a){}if("POST"===this._method)try{c.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(a){}try{c.setRequestHeader("Accept","*/*")}catch(a){}null==(a=this._opts.cookieJar)||a.addCookies(c),"withCredentials"in c&&(c.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(c.timeout=this._opts.requestTimeout),c.onreadystatechange=()=>{var a;3===c.readyState&&(null==(a=this._opts.cookieJar)||a.parseCookies(c.getResponseHeader("set-cookie"))),4===c.readyState&&(200===c.status||1223===c.status?this._onLoad():this.setTimeoutFn(()=>{this._onError("number"==typeof c.status?c.status:0)},0))},a$("xhr data %s",this._data),c.send(this._data)}catch(a){this.setTimeoutFn(()=>{this._onError(a)},0);return}"u">typeof document&&(this._index=a1.requestsCount++,a1.requests[this._index]=this)}_onError(a){this.emitReserved("error",a,this._xhr),this._cleanup(!0)}_cleanup(a){if(void 0!==this._xhr&&null!==this._xhr){if(this._xhr.onreadystatechange=a_,a)try{this._xhr.abort()}catch(a){}"u">typeof document&&delete a1.requests[this._index],this._xhr=null}}_onLoad(){let a=this._xhr.responseText;null!==a&&(this.emitReserved("data",a),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}}function a2(){for(let a in a1.requests)a1.requests.hasOwnProperty(a)&&a1.requests[a].abort()}a1.requestsCount=0,a1.requests={},"u">typeof document&&("function"==typeof attachEvent?attachEvent("onunload",a2):"function"==typeof addEventListener&&addEventListener("onpagehide"in aL?"pagehide":"unload",a2,!1)),(d=function(a){let b=a.xdomain;try{if("u">typeof XMLHttpRequest&&(!b||aZ))return new XMLHttpRequest}catch(a){}if(!b)try{return new aL[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch(a){}}({xdomain:!1}))&&d.responseType;let a3=az.default||az;a.i(31594),a.i(15251),a.i(31276),a.i(28719),a.i(63349),a.i(54129);var a4=a.i(50842);a.i(36972),a4.default;let a5=(0,aS.default)("engine.io-client:websocket"),a6="u">typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class a7 extends aV{get name(){return"websocket"}doOpen(){let a=this.uri(),b=this.opts.protocols,c=a6?{}:aN(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(c.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(a,b,c)}catch(a){return this.emitReserved("error",a)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=a=>this.onClose({description:"websocket connection closed",context:a}),this.ws.onmessage=a=>this.onData(a.data),this.ws.onerror=a=>this.onError("websocket error",a)}write(a){this.writable=!1;for(let b=0;b<a.length;b++){let c=a[b],d=b===a.length-1;aD(c,this.supportsBinary,a=>{try{this.doWrite(c,a)}catch(a){a5("websocket closed before onclose event")}d&&aK(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){void 0!==this.ws&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){let a=this.opts.secure?"wss":"ws",b=this.query||{};return this.opts.timestampRequests&&(b[this.opts.timestampParam]=aR()),this.supportsBinary||(b.b64=1),this.createUri(a,b)}}aL.WebSocket||aL.MozWebSocket;let a8=(0,aS.default)("engine.io-client:webtransport"),a9={websocket:class extends a7{createSocket(a,b,c){var d;if(null==(d=this.socket)?void 0:d._cookieJar)for(let[a,b]of(c.headers=c.headers||{},c.headers.cookie="string"==typeof c.headers.cookie?[c.headers.cookie]:c.headers.cookie||[],this.socket._cookieJar.cookies))c.headers.cookie.push(`${a}=${b.value}`);return new a4.default(a,b,c)}doWrite(a,b){let c={};a.options&&(c.compress=a.options.compress),this.opts.perMessageDeflate&&("string"==typeof b?Buffer.byteLength(b):b.length)<this.opts.perMessageDeflate.threshold&&(c.compress=!1),this.ws.send(b,c)}},webtransport:class extends aV{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(a){return this.emitReserved("error",a)}this._transport.closed.then(()=>{a8("transport closed gracefully"),this.onClose()}).catch(a=>{a8("transport closed due to %s",a),this.onError("webtransport error",a)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(a=>{var d,e;let f,g,h,i,j=(d=Number.MAX_SAFE_INTEGER,e=this.socket.binaryType,c||(c=new TextDecoder),f=[],g=0,h=-1,i=!1,new TransformStream({transform(a,b){for(f.push(a);;){if(0===g){if(1>aH(f))break;let a=aI(f,1);i=(128&a[0])==128,g=(h=127&a[0])<126?3:126===h?1:2}else if(1===g){if(2>aH(f))break;let a=aI(f,2);h=new DataView(a.buffer,a.byteOffset,a.length).getUint16(0),g=3}else if(2===g){if(8>aH(f))break;let a=aI(f,8),c=new DataView(a.buffer,a.byteOffset,a.length),d=c.getUint32(0);if(d>2097151){b.enqueue(aC);break}h=0x100000000*d+c.getUint32(4),g=3}else{if(aH(f)<h)break;let a=aI(f,h);b.enqueue(aF(i?a:c.decode(a),e)),g=0}if(0===h||h>d){b.enqueue(aC);break}}}})),k=a.readable.pipeThrough(j).getReader(),l=new TransformStream({transform(a,c){!function(a,c){if(a.data instanceof ArrayBuffer||ArrayBuffer.isView(a.data))return c(aE(a.data,!1));aD(a,!0,a=>{b||(b=new TextEncoder),c(b.encode(a))})}(a,b=>{let d,e=b.length;if(e<126)new DataView((d=new Uint8Array(1)).buffer).setUint8(0,e);else if(e<65536){let a=new DataView((d=new Uint8Array(3)).buffer);a.setUint8(0,126),a.setUint16(1,e)}else{let a=new DataView((d=new Uint8Array(9)).buffer);a.setUint8(0,127),a.setBigUint64(1,BigInt(e))}a.data&&"string"!=typeof a.data&&(d[0]|=128),c.enqueue(d),c.enqueue(b)})}});l.readable.pipeTo(a.writable),this._writer=l.writable.getWriter();let m=()=>{k.read().then(({done:a,value:b})=>{a?a8("session is closed"):(a8("received chunk: %o",b),this.onPacket(b),m())}).catch(a=>{a8("an error occurred while reading: %s",a)})};m();let n={type:"open"};this.query.sid&&(n.data=`{"sid":"${this.query.sid}"}`),this._writer.write(n).then(()=>this.onOpen())})})}write(a){this.writable=!1;for(let b=0;b<a.length;b++){let c=a[b],d=b===a.length-1;this._writer.write(c).then(()=>{d&&aK(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var a;null==(a=this._transport)||a.close()}},polling:class extends a0{request(a={}){var b;return Object.assign(a,{xd:this.xd,cookieJar:null==(b=this.socket)?void 0:b._cookieJar},this.opts),new a1(a=>new a3(a),this.uri(),a)}}},ba=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,bb=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function bc(a){var b,c;let d,e;if(a.length>8e3)throw"URI too long";let f=a,g=a.indexOf("["),h=a.indexOf("]");-1!=g&&-1!=h&&(a=a.substring(0,g)+a.substring(g,h).replace(/:/g,";")+a.substring(h,a.length));let i=ba.exec(a||""),j={},k=14;for(;k--;)j[bb[k]]=i[k]||"";return -1!=g&&-1!=h&&(j.source=f,j.host=j.host.substring(1,j.host.length-1).replace(/;/g,":"),j.authority=j.authority.replace("[","").replace("]","").replace(/;/g,":"),j.ipv6uri=!0),d=(b=j.path).replace(/\/{2,9}/g,"/").split("/"),("/"==b.slice(0,1)||0===b.length)&&d.splice(0,1),"/"==b.slice(-1)&&d.splice(d.length-1,1),j.pathNames=d,c=j.query,e={},c.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(a,b,c){b&&(e[b]=c)}),j.queryKey=e,j}let bd=(0,aS.default)("engine.io-client:socket"),be="function"==typeof addEventListener&&"function"==typeof removeEventListener,bf=[];be&&addEventListener("offline",()=>{bd("closing %d connection(s) because the network was lost",bf.length),bf.forEach(a=>a())},!1);class bg extends aJ{constructor(a,b){if(super(),this.binaryType="nodebuffer",this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,a&&"object"==typeof a&&(b=a,a=null),a){const c=bc(a);b.hostname=c.host,b.secure="https"===c.protocol||"wss"===c.protocol,b.port=c.port,c.query&&(b.query=c.query)}else b.host&&(b.hostname=bc(b.host).host);aQ(this,b),this.secure=null!=b.secure?b.secure:"u">typeof location&&"https:"===location.protocol,b.hostname&&!b.port&&(b.port=this.secure?"443":"80"),this.hostname=b.hostname||("u">typeof location?location.hostname:"localhost"),this.port=b.port||("u">typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},b.transports.forEach(a=>{let b=a.prototype.name;this.transports.push(b),this._transportsByName[b]=a}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},b),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(a){let b={},c=a.split("&");for(let a=0,d=c.length;a<d;a++){let d=c[a].split("=");b[decodeURIComponent(d[0])]=decodeURIComponent(d[1])}return b}(this.opts.query)),be&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(bd("adding listener for the 'offline' event"),this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},bf.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=new aM),this._open()}createTransport(a){bd('creating transport "%s"',a);let b=Object.assign({},this.opts.query);b.EIO=4,b.transport=a,this.id&&(b.sid=this.id);let c=Object.assign({},this.opts,{query:b,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[a]);return bd("options: %j",c),new this._transportsByName[a](c)}_open(){if(0===this.transports.length)return void this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);let a=this.opts.rememberUpgrade&&bg.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket")?"websocket":this.transports[0];this.readyState="opening";let b=this.createTransport(a);b.open(),this.setTransport(b)}setTransport(a){bd("setting transport %s",a.name),this.transport&&(bd("clearing existing transport %s",this.transport.name),this.transport.removeAllListeners()),this.transport=a,a.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",a=>this._onClose("transport close",a))}onOpen(){bd("socket open"),this.readyState="open",bg.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush()}_onPacket(a){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(bd('socket receive: type "%s", data "%s"',a.type,a.data),this.emitReserved("packet",a),this.emitReserved("heartbeat"),a.type){case"open":this.onHandshake(JSON.parse(a.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":let b=Error("server error");b.code=a.data,this._onError(b);break;case"message":this.emitReserved("data",a.data),this.emitReserved("message",a.data)}else bd('packet received with socket readyState "%s"',this.readyState)}onHandshake(a){this.emitReserved("handshake",a),this.id=a.sid,this.transport.query.sid=a.sid,this._pingInterval=a.pingInterval,this._pingTimeout=a.pingTimeout,this._maxPayload=a.maxPayload,this.onOpen(),"closed"!==this.readyState&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);let a=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+a,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},a),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){let a=this._getWritablePackets();bd("flushing %d packets in socket",a.length),this.transport.send(a),this._prevBufferLen=a.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let a=1;for(let b=0;b<this.writeBuffer.length;b++){let c=this.writeBuffer[b].data;if(c&&(a+="string"==typeof c?function(a){let b=0,c=0;for(let d=0,e=a.length;d<e;d++)(b=a.charCodeAt(d))<128?c+=1:b<2048?c+=2:b<55296||b>=57344?c+=3:(d++,c+=4);return c}(c):Math.ceil(1.33*(c.byteLength||c.size))),b>0&&a>this._maxPayload)return bd("only send %d out of %d packets",b,this.writeBuffer.length),this.writeBuffer.slice(0,b);a+=2}return bd("payload size is %d (max: %d)",a,this._maxPayload),this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;let a=Date.now()>this._pingTimeoutTime;return a&&(bd("throttled timer detected, scheduling connection close"),this._pingTimeoutTime=0,aK(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),a}write(a,b,c){return this._sendPacket("message",a,b,c),this}send(a,b,c){return this._sendPacket("message",a,b,c),this}_sendPacket(a,b,c,d){if("function"==typeof b&&(d=b,b=void 0),"function"==typeof c&&(d=c,c=null),"closing"===this.readyState||"closed"===this.readyState)return;(c=c||{}).compress=!1!==c.compress;let e={type:a,data:b,options:c};this.emitReserved("packetCreate",e),this.writeBuffer.push(e),d&&this.once("flush",d),this.flush()}close(){let a=()=>{this._onClose("forced close"),bd("socket closing - telling transport to close"),this.transport.close()},b=()=>{this.off("upgrade",b),this.off("upgradeError",b),a()},c=()=>{this.once("upgrade",b),this.once("upgradeError",b)};return("opening"===this.readyState||"open"===this.readyState)&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?c():a()}):this.upgrading?c():a()),this}_onError(a){if(bd("socket error %j",a),bg.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&"opening"===this.readyState)return bd("trying next transport"),this.transports.shift(),this._open();this.emitReserved("error",a),this._onClose("transport error",a)}_onClose(a,b){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState){if(bd('socket close with reason: "%s"',a),this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),be&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){let a=bf.indexOf(this._offlineEventListener);-1!==a&&(bd("removing listener for the 'offline' event"),bf.splice(a,1))}this.readyState="closed",this.id=null,this.emitReserved("close",a,b),this.writeBuffer=[],this._prevBufferLen=0}}}bg.protocol=4;class bh extends bg{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),"open"===this.readyState&&this.opts.upgrade){bd("starting upgrade probes");for(let a=0;a<this._upgrades.length;a++)this._probe(this._upgrades[a])}}_probe(a){bd('probing transport "%s"',a);let b=this.createTransport(a),c=!1;bg.priorWebsocketSuccess=!1;let d=()=>{c||(bd('probe transport "%s" opened',a),b.send([{type:"ping",data:"probe"}]),b.once("packet",d=>{if(!c)if("pong"===d.type&&"probe"===d.data){if(bd('probe transport "%s" pong',a),this.upgrading=!0,this.emitReserved("upgrading",b),!b)return;bg.priorWebsocketSuccess="websocket"===b.name,bd('pausing current transport "%s"',this.transport.name),this.transport.pause(()=>{c||"closed"!==this.readyState&&(bd("changing transport and sending upgrade packet"),j(),this.setTransport(b),b.send([{type:"upgrade"}]),this.emitReserved("upgrade",b),b=null,this.upgrading=!1,this.flush())})}else{bd('probe transport "%s" failed',a);let c=Error("probe error");c.transport=b.name,this.emitReserved("upgradeError",c)}}))};function e(){c||(c=!0,j(),b.close(),b=null)}let f=c=>{let d=Error("probe error: "+c);d.transport=b.name,e(),bd('probe transport "%s" failed because of error: %s',a,c),this.emitReserved("upgradeError",d)};function g(){f("transport closed")}function h(){f("socket closed")}function i(a){b&&a.name!==b.name&&(bd('"%s" works - aborting "%s"',a.name,b.name),e())}let j=()=>{b.removeListener("open",d),b.removeListener("error",f),b.removeListener("close",g),this.off("close",h),this.off("upgrading",i)};b.once("open",d),b.once("error",f),b.once("close",g),this.once("close",h),this.once("upgrading",i),-1!==this._upgrades.indexOf("webtransport")&&"webtransport"!==a?this.setTimeoutFn(()=>{c||b.open()},200):b.open()}onHandshake(a){this._upgrades=this._filterUpgrades(a.upgrades),super.onHandshake(a)}_filterUpgrades(a){let b=[];for(let c=0;c<a.length;c++)~this.transports.indexOf(a[c])&&b.push(a[c]);return b}}class bi extends bh{constructor(a,b={}){const c="object"==typeof a,d=c?{...a}:{...b};(!d.transports||d.transports&&"string"==typeof d.transports[0])&&(d.transports=(d.transports||["polling","websocket","webtransport"]).map(a=>a9[a]).filter(a=>!!a)),super(c?d:a,d)}}bi.protocol;let bj=(0,aS.default)("socket.io-client:url"),bk="function"==typeof ArrayBuffer,bl=Object.prototype.toString,bm="function"==typeof Blob||"u">typeof Blob&&"[object BlobConstructor]"===bl.call(Blob),bn="function"==typeof File||"u">typeof File&&"[object FileConstructor]"===bl.call(File);function bo(a){return bk&&(a instanceof ArrayBuffer||("function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(a):a.buffer instanceof ArrayBuffer))||bm&&a instanceof Blob||bn&&a instanceof File}let bp=(0,aS.default)("socket.io-parser"),bq=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];(f=g||(g={}))[f.CONNECT=0]="CONNECT",f[f.DISCONNECT=1]="DISCONNECT",f[f.EVENT=2]="EVENT",f[f.ACK=3]="ACK",f[f.CONNECT_ERROR=4]="CONNECT_ERROR",f[f.BINARY_EVENT=5]="BINARY_EVENT",f[f.BINARY_ACK=6]="BINARY_ACK";class br{constructor(a){this.replacer=a}encode(a){return(bp("encoding packet %j",a),(a.type===g.EVENT||a.type===g.ACK)&&function a(b,c){if(!b||"object"!=typeof b)return!1;if(Array.isArray(b)){for(let c=0,d=b.length;c<d;c++)if(a(b[c]))return!0;return!1}if(bo(b))return!0;if(b.toJSON&&"function"==typeof b.toJSON&&1==arguments.length)return a(b.toJSON(),!0);for(let c in b)if(Object.prototype.hasOwnProperty.call(b,c)&&a(b[c]))return!0;return!1}(a))?this.encodeAsBinary({type:a.type===g.EVENT?g.BINARY_EVENT:g.BINARY_ACK,nsp:a.nsp,data:a.data,id:a.id}):[this.encodeAsString(a)]}encodeAsString(a){let b=""+a.type;return(a.type===g.BINARY_EVENT||a.type===g.BINARY_ACK)&&(b+=a.attachments+"-"),a.nsp&&"/"!==a.nsp&&(b+=a.nsp+","),null!=a.id&&(b+=a.id),null!=a.data&&(b+=JSON.stringify(a.data,this.replacer)),bp("encoded %j as %s",a,b),b}encodeAsBinary(a){let b,c,d=(b=[],c=a.data,a.data=function a(b,c,d){if(!b)return b;if(bo(b)){let a={_placeholder:!0,num:c.length};return c.push(b),a}if(Array.isArray(b)){let d=Array(b.length);for(let e=0;e<b.length;e++)d[e]=a(b[e],c);return d}if("object"==typeof b&&!(b instanceof Date)){if(b.toJSON&&"function"==typeof b.toJSON&&!d)return a(b.toJSON(),c,!0);let e={};for(let d in b)Object.prototype.hasOwnProperty.call(b,d)&&(e[d]=a(b[d],c));return e}return b}(c,b),a.attachments=b.length,{packet:a,buffers:b}),e=this.encodeAsString(d.packet),f=d.buffers;return f.unshift(e),f}}class bs extends aJ{constructor(a){super(),this.opts=Object.assign({reviver:void 0,maxAttachments:10},"function"==typeof a?{reviver:a}:a)}add(a){let b;if("string"==typeof a){if(this.reconstructor)throw Error("got plaintext data when reconstructing a packet");let c=(b=this.decodeString(a)).type===g.BINARY_EVENT;c||b.type===g.BINARY_ACK?(b.type=c?g.EVENT:g.ACK,this.reconstructor=new bt(b)):super.emitReserved("decoded",b)}else if(bo(a)||a.base64)if(this.reconstructor)(b=this.reconstructor.takeBinaryData(a))&&(this.reconstructor=null,super.emitReserved("decoded",b));else throw Error("got binary data when not reconstructing a packet");else throw Error("Unknown type: "+a)}decodeString(a){let b=0,c={type:Number(a.charAt(0))};if(void 0===g[c.type])throw Error("unknown packet type "+c.type);if(c.type===g.BINARY_EVENT||c.type===g.BINARY_ACK){let d=b+1;for(;"-"!==a.charAt(++b)&&b!=a.length;);let e=a.substring(d,b);if(e!=Number(e)||"-"!==a.charAt(b))throw Error("Illegal attachments");let f=Number(e);if(!bu(f)||f<1)throw Error("Illegal attachments");if(f>this.opts.maxAttachments)throw Error("too many attachments");c.attachments=f}if("/"===a.charAt(b+1)){let d=b+1;for(;++b&&","!==a.charAt(b)&&b!==a.length;);c.nsp=a.substring(d,b)}else c.nsp="/";let d=a.charAt(b+1);if(""!==d&&Number(d)==d){let d=b+1;for(;++b;){let c=a.charAt(b);if(null==c||Number(c)!=c){--b;break}if(b===a.length)break}c.id=Number(a.substring(d,b+1))}if(a.charAt(++b)){let d=this.tryParse(a.substr(b));if(bs.isPayloadValid(c.type,d))c.data=d;else throw Error("invalid payload")}return bp("decoded %s as %j",a,c),c}tryParse(a){try{return JSON.parse(a,this.opts.reviver)}catch(a){return!1}}static isPayloadValid(a,b){switch(a){case g.CONNECT:return bv(b);case g.DISCONNECT:return void 0===b;case g.CONNECT_ERROR:return"string"==typeof b||bv(b);case g.EVENT:case g.BINARY_EVENT:return Array.isArray(b)&&("number"==typeof b[0]||"string"==typeof b[0]&&-1===bq.indexOf(b[0]));case g.ACK:case g.BINARY_ACK:return Array.isArray(b)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class bt{constructor(a){this.packet=a,this.buffers=[],this.reconPack=a}takeBinaryData(a){if(this.buffers.push(a),this.buffers.length===this.reconPack.attachments){var b,c;let a=(b=this.reconPack,c=this.buffers,b.data=function a(b,c){if(!b)return b;if(b&&!0===b._placeholder){if("number"==typeof b.num&&b.num>=0&&b.num<c.length)return c[b.num];throw Error("illegal attachments")}if(Array.isArray(b))for(let d=0;d<b.length;d++)b[d]=a(b[d],c);else if("object"==typeof b)for(let d in b)Object.prototype.hasOwnProperty.call(b,d)&&(b[d]=a(b[d],c));return b}(b.data,c),delete b.attachments,b);return this.finishedReconstruction(),a}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}let bu=Number.isInteger||function(a){return"number"==typeof a&&isFinite(a)&&Math.floor(a)===a};function bv(a){return"[object Object]"===Object.prototype.toString.call(a)}function bw(a){var b;return"string"==typeof a.nsp&&(void 0===(b=a.id)||bu(b))&&function(a,b){switch(a){case g.CONNECT:return void 0===b||bv(b);case g.DISCONNECT:return void 0===b;case g.EVENT:return Array.isArray(b)&&("number"==typeof b[0]||"string"==typeof b[0]&&-1===bq.indexOf(b[0]));case g.ACK:return Array.isArray(b);case g.CONNECT_ERROR:return"string"==typeof b||bv(b);default:return!1}}(a.type,a.data)}function bx(a,b,c){return a.on(b,c),function(){a.off(b,c)}}a.s(["Decoder",()=>bs,"Encoder",()=>br,"PacketType",()=>g,"isPacketValid",()=>bw,"protocol",0,5],10419);let by=(0,aS.default)("socket.io-client:socket"),bz=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class bA extends aJ{constructor(a,b,c){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=a,this.nsp=b,c&&c.auth&&(this.auth=c.auth),this._opts=Object.assign({},c),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;let a=this.io;this.subs=[bx(a,"open",this.onopen.bind(this)),bx(a,"packet",this.onpacket.bind(this)),bx(a,"error",this.onerror.bind(this)),bx(a,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...a){return a.unshift("message"),this.emit.apply(this,a),this}emit(a,...b){var c,d,e;if(bz.hasOwnProperty(a))throw Error('"'+a.toString()+'" is a reserved event name');if(b.unshift(a),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(b),this;let f={type:g.EVENT,data:b};if(f.options={},f.options.compress=!1!==this.flags.compress,"function"==typeof b[b.length-1]){let a=this.ids++;by("emitting packet with ack id %d",a);let c=b.pop();this._registerAckCallback(a,c),f.id=a}let h=null==(d=null==(c=this.io.engine)?void 0:c.transport)?void 0:d.writable,i=this.connected&&!(null==(e=this.io.engine)?void 0:e._hasPingExpired());return this.flags.volatile&&!h?by("discard packet as the transport is not currently writable"):i?(this.notifyOutgoingListeners(f),this.packet(f)):this.sendBuffer.push(f),this.flags={},this}_registerAckCallback(a,b){var c;let d=null!=(c=this.flags.timeout)?c:this._opts.ackTimeout;if(void 0===d){this.acks[a]=b;return}let e=this.io.setTimeoutFn(()=>{delete this.acks[a];for(let b=0;b<this.sendBuffer.length;b++)this.sendBuffer[b].id===a&&(by("removing packet with ack id %d from the buffer",a),this.sendBuffer.splice(b,1));by("event with ack id %d has timed out after %d ms",a,d),b.call(this,Error("operation has timed out"))},d),f=(...a)=>{this.io.clearTimeoutFn(e),b.apply(this,a)};f.withError=!0,this.acks[a]=f}emitWithAck(a,...b){return new Promise((c,d)=>{let e=(a,b)=>a?d(a):c(b);e.withError=!0,b.push(e),this.emit(a,...b)})}_addToQueue(a){let b;"function"==typeof a[a.length-1]&&(b=a.pop());let c={id:this._queueSeq++,tryCount:0,pending:!1,args:a,flags:Object.assign({fromQueue:!0},this.flags)};a.push((a,...d)=>c!==this._queue[0]?by("packet [%d] already acknowledged",c.id):(null!==a?c.tryCount>this._opts.retries&&(by("packet [%d] is discarded after %d tries",c.id,c.tryCount),this._queue.shift(),b&&b(a)):(by("packet [%d] was successfully sent",c.id),this._queue.shift(),b&&b(null,...d)),c.pending=!1,this._drainQueue())),this._queue.push(c),this._drainQueue()}_drainQueue(a=!1){if(by("draining queue"),!this.connected||0===this._queue.length)return;let b=this._queue[0];b.pending&&!a?by("packet [%d] has already been sent and is waiting for an ack",b.id):(b.pending=!0,b.tryCount++,by("sending packet [%d] (try n°%d)",b.id,b.tryCount),this.flags=b.flags,this.emit.apply(this,b.args))}packet(a){a.nsp=this.nsp,this.io._packet(a)}onopen(){by("transport is open - connecting"),"function"==typeof this.auth?this.auth(a=>{this._sendConnectPacket(a)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(a){this.packet({type:g.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},a):a})}onerror(a){this.connected||this.emitReserved("connect_error",a)}onclose(a,b){by("close (%s)",a),this.connected=!1,delete this.id,this.emitReserved("disconnect",a,b),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(a=>{if(!this.sendBuffer.some(b=>String(b.id)===a)){let b=this.acks[a];delete this.acks[a],b.withError&&b.call(this,Error("socket has been disconnected"))}})}onpacket(a){if(a.nsp===this.nsp)switch(a.type){case g.CONNECT:a.data&&a.data.sid?this.onconnect(a.data.sid,a.data.pid):this.emitReserved("connect_error",Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case g.EVENT:case g.BINARY_EVENT:this.onevent(a);break;case g.ACK:case g.BINARY_ACK:this.onack(a);break;case g.DISCONNECT:this.ondisconnect();break;case g.CONNECT_ERROR:this.destroy();let b=Error(a.data.message);b.data=a.data.data,this.emitReserved("connect_error",b)}}onevent(a){let b=a.data||[];by("emitting event %j",b),null!=a.id&&(by("attaching ack callback to event"),b.push(this.ack(a.id))),this.connected?this.emitEvent(b):this.receiveBuffer.push(Object.freeze(b))}emitEvent(a){if(this._anyListeners&&this._anyListeners.length)for(let b of this._anyListeners.slice())b.apply(this,a);super.emit.apply(this,a),this._pid&&a.length&&"string"==typeof a[a.length-1]&&(this._lastOffset=a[a.length-1])}ack(a){let b=this,c=!1;return function(...d){c||(c=!0,by("sending ack %j",d),b.packet({type:g.ACK,id:a,data:d}))}}onack(a){let b=this.acks[a.id];"function"!=typeof b?by("bad ack %s",a.id):(delete this.acks[a.id],by("calling ack %s with %j",a.id,a.data),b.withError&&a.data.unshift(null),b.apply(this,a.data))}onconnect(a,b){by("socket connected with id %s",a),this.id=a,this.recovered=b&&this._pid===b,this._pid=b,this.connected=!0,this.emitBuffered(),this._drainQueue(!0),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach(a=>this.emitEvent(a)),this.receiveBuffer=[],this.sendBuffer.forEach(a=>{this.notifyOutgoingListeners(a),this.packet(a)}),this.sendBuffer=[]}ondisconnect(){by("server disconnect (%s)",this.nsp),this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(a=>a()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&(by("performing disconnect (%s)",this.nsp),this.packet({type:g.DISCONNECT})),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(a){return this.flags.compress=a,this}get volatile(){return this.flags.volatile=!0,this}timeout(a){return this.flags.timeout=a,this}onAny(a){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(a),this}prependAny(a){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(a),this}offAny(a){if(!this._anyListeners)return this;if(a){let b=this._anyListeners;for(let c=0;c<b.length;c++)if(a===b[c]){b.splice(c,1);break}}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(a){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(a),this}prependAnyOutgoing(a){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(a),this}offAnyOutgoing(a){if(!this._anyOutgoingListeners)return this;if(a){let b=this._anyOutgoingListeners;for(let c=0;c<b.length;c++)if(a===b[c]){b.splice(c,1);break}}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(a){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length)for(let b of this._anyOutgoingListeners.slice())b.apply(this,a.data)}}var bB=a.i(10419);function bC(a){a=a||{},this.ms=a.min||100,this.max=a.max||1e4,this.factor=a.factor||2,this.jitter=a.jitter>0&&a.jitter<=1?a.jitter:0,this.attempts=0}bC.prototype.duration=function(){var a=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var b=Math.random(),c=Math.floor(b*this.jitter*a);a=(1&Math.floor(10*b))==0?a-c:a+c}return 0|Math.min(a,this.max)},bC.prototype.reset=function(){this.attempts=0},bC.prototype.setMin=function(a){this.ms=a},bC.prototype.setMax=function(a){this.max=a},bC.prototype.setJitter=function(a){this.jitter=a};let bD=(0,aS.default)("socket.io-client:manager");class bE extends aJ{constructor(a,b){var c;super(),this.nsps={},this.subs=[],a&&"object"==typeof a&&(b=a,a=void 0),(b=b||{}).path=b.path||"/socket.io",this.opts=b,aQ(this,b),this.reconnection(!1!==b.reconnection),this.reconnectionAttempts(b.reconnectionAttempts||1/0),this.reconnectionDelay(b.reconnectionDelay||1e3),this.reconnectionDelayMax(b.reconnectionDelayMax||5e3),this.randomizationFactor(null!=(c=b.randomizationFactor)?c:.5),this.backoff=new bC({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==b.timeout?2e4:b.timeout),this._readyState="closed",this.uri=a;const d=b.parser||bB;this.encoder=new d.Encoder,this.decoder=new d.Decoder,this._autoConnect=!1!==b.autoConnect,this._autoConnect&&this.open()}reconnection(a){return arguments.length?(this._reconnection=!!a,a||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(a){return void 0===a?this._reconnectionAttempts:(this._reconnectionAttempts=a,this)}reconnectionDelay(a){var b;return void 0===a?this._reconnectionDelay:(this._reconnectionDelay=a,null==(b=this.backoff)||b.setMin(a),this)}randomizationFactor(a){var b;return void 0===a?this._randomizationFactor:(this._randomizationFactor=a,null==(b=this.backoff)||b.setJitter(a),this)}reconnectionDelayMax(a){var b;return void 0===a?this._reconnectionDelayMax:(this._reconnectionDelayMax=a,null==(b=this.backoff)||b.setMax(a),this)}timeout(a){return arguments.length?(this._timeout=a,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(a){if(bD("readyState %s",this._readyState),~this._readyState.indexOf("open"))return this;bD("opening %s",this.uri),this.engine=new bi(this.uri,this.opts);let b=this.engine,c=this;this._readyState="opening",this.skipReconnect=!1;let d=bx(b,"open",function(){c.onopen(),a&&a()}),e=b=>{bD("error"),this.cleanup(),this._readyState="closed",this.emitReserved("error",b),a?a(b):this.maybeReconnectOnOpen()},f=bx(b,"error",e);if(!1!==this._timeout){let a=this._timeout;bD("connect attempt will timeout after %d",a);let c=this.setTimeoutFn(()=>{bD("connect attempt timed out after %d",a),d(),e(Error("timeout")),b.close()},a);this.opts.autoUnref&&c.unref(),this.subs.push(()=>{this.clearTimeoutFn(c)})}return this.subs.push(d),this.subs.push(f),this}connect(a){return this.open(a)}onopen(){bD("open"),this.cleanup(),this._readyState="open",this.emitReserved("open");let a=this.engine;this.subs.push(bx(a,"ping",this.onping.bind(this)),bx(a,"data",this.ondata.bind(this)),bx(a,"error",this.onerror.bind(this)),bx(a,"close",this.onclose.bind(this)),bx(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(a){try{this.decoder.add(a)}catch(a){this.onclose("parse error",a)}}ondecoded(a){aK(()=>{this.emitReserved("packet",a)},this.setTimeoutFn)}onerror(a){bD("error",a),this.emitReserved("error",a)}socket(a,b){let c=this.nsps[a];return c?this._autoConnect&&!c.active&&c.connect():(c=new bA(this,a,b),this.nsps[a]=c),c}_destroy(a){for(let a of Object.keys(this.nsps))if(this.nsps[a].active)return void bD("socket %s is still active, skipping close",a);this._close()}_packet(a){bD("writing packet %j",a);let b=this.encoder.encode(a);for(let c=0;c<b.length;c++)this.engine.write(b[c],a.options)}cleanup(){bD("cleanup"),this.subs.forEach(a=>a()),this.subs.length=0,this.decoder.destroy()}_close(){bD("disconnect"),this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(a,b){var c;bD("closed due to %s",a),this.cleanup(),null==(c=this.engine)||c.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",a,b),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;let a=this;if(this.backoff.attempts>=this._reconnectionAttempts)bD("reconnect failed"),this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{let b=this.backoff.duration();bD("will wait %dms before reconnect attempt",b),this._reconnecting=!0;let c=this.setTimeoutFn(()=>{a.skipReconnect||(bD("attempting reconnect"),this.emitReserved("reconnect_attempt",a.backoff.attempts),a.skipReconnect||a.open(b=>{b?(bD("reconnect attempt error"),a._reconnecting=!1,a.reconnect(),this.emitReserved("reconnect_error",b)):(bD("reconnect success"),a.onreconnect())}))},b);this.opts.autoUnref&&c.unref(),this.subs.push(()=>{this.clearTimeoutFn(c)})}}onreconnect(){let a=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",a)}}let bF=(0,aS.default)("socket.io-client"),bG={};function bH(a,b){let c;"object"==typeof a&&(b=a,a=void 0);let d=function(a,b="",c){let d=a;c=c||"u">typeof location&&location,null==a&&(a=c.protocol+"//"+c.host),"string"==typeof a&&("/"===a.charAt(0)&&(a="/"===a.charAt(1)?c.protocol+a:c.host+a),/^(https?|wss?):\/\//.test(a)||(bj("protocol-less url %s",a),a=void 0!==c?c.protocol+"//"+a:"https://"+a),bj("parse %s",a),d=bc(a)),!d.port&&(/^(http|ws)$/.test(d.protocol)?d.port="80":/^(http|ws)s$/.test(d.protocol)&&(d.port="443")),d.path=d.path||"/";let e=-1!==d.host.indexOf(":")?"["+d.host+"]":d.host;return d.id=d.protocol+"://"+e+":"+d.port+b,d.href=d.protocol+"://"+e+(c&&c.port===d.port?"":":"+d.port),d}(a,(b=b||{}).path||"/socket.io"),e=d.source,f=d.id,g=d.path,h=bG[f]&&g in bG[f].nsps;return b.forceNew||b["force new connection"]||!1===b.multiplex||h?(bF("ignoring socket cache for %s",e),c=new bE(e,b)):(bG[f]||(bF("new io instance for %s",e),bG[f]=new bE(e,b)),c=bG[f]),d.query&&!b.query&&(b.query=d.queryKey),c.socket(d.path,b)}function bI(a){if(a&&"object"==typeof a&&"clientId"in a){let b=a.clientId;if("string"==typeof b)return b}}function bJ(a){return"runtime.enter"===a.op||"runtime.exit"===a.op}function bK(a){let{onFull:b,onPatch:c,onPresence:d,...e}=a,f=function(a){let{url:b,role:c,docId:d,name:e,token:f}=a,g=!1!==a.autoResync,h=bH(b,{auth:{token:f},autoConnect:!1}),i="disconnected",j=0,k="",l=[],m={patch:new Set,full:new Set,ack:new Set,presence:new Set,error:new Set,status:new Set};function n(a,b){for(let c of[...m[a]])c(b)}function o(a){i!==a&&(i=a,n("status",a))}function p(a){h.emit("def:request",{docId:d,sinceSeq:a})}function q(a){"number"==typeof a&&(g&&a>j+1&&p(j),j=Math.max(j,a))}function r(){n("presence",[...l])}function s(){return h.connected?Promise.resolve():new Promise((a,b)=>{o("connecting");let c=()=>{e(),a()},d=a=>{e(),b(a)},e=()=>{h.off("connect",c),h.off("connect_error",d)};h.once("connect",c),h.once("connect_error",d),h.connect()})}async function t(){return await s(),new Promise((a,b)=>{h.emit("bridge:join",{docId:d,role:c,name:e},c=>{if(!c||c.error){let a=c?.error??{code:"join_failed",message:"no join ack"};n("error",a),b(Error(`${a.code}: ${a.message}`));return}k=c.selfId,l=c.presence?[...c.presence]:[],j=c.snapshot?.seq??0,r(),a({selfId:k,snapshot:c.snapshot,presence:[...l]})})})}return h.on("connect",()=>o("connected")),h.on("disconnect",()=>o("disconnected")),h.on("connect_error",a=>{o("error"),n("error",{code:"connect_error",message:a?.message??String(a)})}),h.on("def:patch",a=>{q(a?.seq),a?.origin&&a.origin===k||n("patch",a)}),h.on("def:full",a=>{q(a?.seq),a?.origin&&a.origin===k||n("full",a)}),h.on("def:ack",a=>{n("ack",a)}),h.on("bridge:error",a=>{n("error",{code:a?.code??"error",message:a?.message??""})}),h.on("presence:list",a=>{l=Array.isArray(a)?[...a]:[],r()}),h.on("presence:join",a=>{let b=bI(a);b&&(l=[...l.filter(a=>a.clientId!==b),a],r())}),h.on("presence:leave",a=>{let b=bI(a);b&&(l=l.filter(a=>a.clientId!==b),r())}),h.on("presence:update",a=>{let b=bI(a);if(!b)return;let c=l.findIndex(a=>a.clientId===b);if(-1===c)l=[...l,a];else{let b={...l[c],...a};l=l.map((a,d)=>d===c?b:a)}r()}),{connect:s,join:t,emitPatch:function(a,b,c){h.emit("def:patch",{docId:d,ops:a,origin:k,baseSeq:c,mtime:b})},emitFull:function(a,b){h.emit("def:full",{docId:d,def:a,origin:k,mtime:b})},request:p,updatePresence:function(a){h.emit("presence:update",{docId:d,clientId:k,cursor:a.cursor,selection:a.selection})},on:function(a,b){let c=m[a];return c.add(b),()=>c.delete(b)},disconnect:function(){h.connected&&k&&h.emit("bridge:leave",{docId:d,clientId:k}),h.disconnect(),o("disconnected")},get status(){return i},get lastSeq(){return j},get presence(){return[...l]}}}(e),g=null,h=0,i=[],j=[],k={status:f.status,def:null,seq:0,presence:[],activeStates:[]},l=new Set;function m(){for(let a of(k={status:f.status,def:g,seq:h,presence:i,activeStates:j},[...l]))a()}return f.on("status",()=>m()),f.on("full",a=>{g=a.def,"number"==typeof a.seq&&(h=a.seq),b?.(a),m()}),f.on("patch",a=>{"number"==typeof a.seq&&(h=a.seq);let b=a.ops??[],d=b.filter(bJ),e=b.filter(a=>!bJ(a));e.length>0&&g&&(g=n(g,e));for(let a of d)"runtime.enter"===a.op?j.includes(a.state)||(j=[...j,a.state]):"runtime.exit"===a.op&&j.includes(a.state)&&(j=j.filter(b=>b!==a.state));c?.(a),m()}),f.on("presence",a=>{i=a,d?.(a),m()}),{getSnapshot:function(){return k},subscribe:function(a){return l.add(a),()=>{l.delete(a)}},emitPatch:function(a){f.emitPatch(a)},emitFull:function(a){f.emitFull(a)},enter:function(a,b,c){let d={op:"runtime.enter",state:a,...void 0!==b?{from:b}:{},...void 0!==c?{eventId:c}:{}};f.emitPatch([d])},exit:function(a){f.emitPatch([{op:"runtime.exit",state:a}])},connect:function(){f.join().then(a=>{g=a.snapshot.def,h=a.snapshot.seq,i=a.presence,null!==g&&b?.({docId:a.snapshot.docId,def:g,seq:h,mtime:a.snapshot.mtime,origin:"join"}),m()}).catch(()=>{m()})},disconnect:function(){f.disconnect()}}}function bL(){return{settings:{namespace:"MyApp",name:"MyStateMachine",asynchronous:!1},events:[{name:"Internal",events:[]}],state:{name:"Root",states:[{name:"Idle",kind:"normal"},{name:"End",kind:"final"}]}}}function bM(){return{positions:{}}}function bN(a,b){if(a.name===b)return a;for(let c of a.states??[]){let a=bN(c,b);if(a)return a}return null}function bO(a,b,c){return a.name===b?c(a)??a:{...a,states:a.states?.map(a=>bO(a,b,c))}}function bP(a,b){return{...a,states:a.states?.filter(a=>a.name!==b).map(a=>bP(a,b))}}function bQ(a){let b=[a.name];for(let c of a.states??[])b.push(...bQ(c));return b}function bR(a){return a.events.flatMap(a=>(a.events??[]).map(a=>a.id))}function bS(a){let b=[],c=bQ(a.state),d=bR(a);0===d.length&&b.push({ruleId:"V001",message:"No events defined"});let e=new Set;for(let a of c)e.has(a)&&b.push({ruleId:"V002",message:`Duplicate state name: ${a}`,element:a}),e.add(a);!function a(e){for(let a of e.transitions??[])d.includes(a.event)||b.push({ruleId:"V003",message:`Transition in '${e.name}' references unknown event '${a.event}'`,element:e.name}),a.nextState&&!c.includes(a.nextState)&&b.push({ruleId:"V004",message:`Transition in '${e.name}' targets unknown state '${a.nextState}'`,element:e.name});for(let c of("final"===e.kind&&(e.transitions?.length??0)>0&&b.push({ruleId:"V007",message:`Final state '${e.name}' must not have outgoing transitions`,element:e.name}),"final"===e.kind&&(e.states?.length??0)>0&&b.push({ruleId:"V008",message:`Final state '${e.name}' must not have child states`,element:e.name}),e.states??[]))a(c)}(a.state),a.state.states&&0!==a.state.states.length||b.push({ruleId:"V005",message:"Root state must have at least one child state",element:a.state.name});let f=new Set;for(let a of d)f.has(a)&&b.push({ruleId:"V003",message:`Duplicate event ID: ${a}`,element:a}),f.add(a);return b}function bT(a,b){return{positions:{...x(a),...b.positions}}}Object.assign(bH,{Manager:bE,Socket:bA,io:bH,connect:bH});let bU=(e=(a,b)=>({definition:bL(),layout:bT(bL(),bM()),viewport:{...M},fileName:null,docPath:null,dirty:!1,remoteMtime:null,remoteStatus:"idle",remoteMessage:null,activeStates:[],presence:[],_applyingRemote:!1,selection:{kind:null,id:null},drawMode:"select",drawSource:null,contextMenu:{visible:!1,x:0,y:0,target:null},undoStack:[],redoStack:[],activeTab:"properties",errors:[],showCodePreview:!1,generatedCode:null,navigationPath:["Root"],currentParent:"Root",_pushHistory:()=>{let{definition:c,layout:d,undoStack:e}=b(),f={definition:JSON.parse(JSON.stringify(c)),layout:JSON.parse(JSON.stringify(d))};a({undoStack:[...e.slice(-50),f],redoStack:[]})},setDefinition:c=>{b()._pushHistory();let d=bT(c,b().layout);a({definition:c,layout:d,dirty:!0,errors:bS(c)})},updateSettings:c=>{b()._pushHistory(),a({definition:{...b().definition,settings:{...b().definition.settings,...c}},dirty:!0})},addState:(c,d)=>{b()._pushHistory();let e={...b().definition},f=c??e.state.name;e.state=bO(e.state,f,a=>({...a,states:[...a.states??[],d]}));let g=bT(e,b().layout);a({definition:e,layout:g,dirty:!0,errors:bS(e)})},updateState:(c,d)=>{b()._pushHistory();let e={...b().definition};e.state=bO(e.state,c,a=>({...a,...d})),a({definition:e,dirty:!0,errors:bS(e)})},removeState:c=>{b()._pushHistory();let d={...b().definition};d.state=bP(d.state,c);let e={positions:{...b().layout.positions}};delete e.positions[c],a({definition:d,layout:e,dirty:!0,errors:bS(d)})},nestState:(c,d)=>{b()._pushHistory();let e={...b().definition},f=bN(e.state,c);if(!f||c===d)return;let g=JSON.parse(JSON.stringify(f));e.state=bP(e.state,c),e.state=bO(e.state,d,a=>({...a,states:[...a.states??[],g]})),a({definition:e,dirty:!0,errors:bS(e)})},addEventSource:c=>{b()._pushHistory(),a({definition:{...b().definition,events:[...b().definition.events,c]},dirty:!0})},updateEventSource:(c,d)=>{b()._pushHistory();let e={...b().definition};e.events=e.events.map((a,b)=>b===c?{...a,...d}:a),a({definition:e,dirty:!0})},removeEventSource:c=>{b()._pushHistory();let d={...b().definition};d.events=d.events.filter((a,b)=>b!==c),a({definition:d,dirty:!0,errors:bS(d)})},addEvent:(c,d=0)=>{b()._pushHistory();let e={...b().definition},f=e.events[d]??{name:"Internal",events:[]};f.events=[...f.events??[],c],e.events=e.events.map((a,b)=>b===d?f:a),a({definition:e,dirty:!0,errors:bS(e)})},updateEvent:(c,d)=>{b()._pushHistory();let e={...b().definition};e.events=e.events.map(a=>({...a,events:a.events?.map(a=>a.id===c?{...a,...d}:a)})),a({definition:e,dirty:!0})},removeEvent:c=>{b()._pushHistory();let d={...b().definition};d.events=d.events.map(a=>({...a,events:a.events?.filter(a=>a.id!==c)})),a({definition:d,dirty:!0,errors:bS(d)})},addParameter:(c,d)=>{b()._pushHistory();let e={...b().definition};e.events=e.events.map(a=>({...a,events:a.events?.map(a=>a.id===c?{...a,parameters:[...a.parameters??[],d]}:a)})),a({definition:e,dirty:!0})},removeParameter:(c,d)=>{b()._pushHistory();let e={...b().definition};e.events=e.events.map(a=>({...a,events:a.events?.map(a=>a.id===c?{...a,parameters:a.parameters?.filter((a,b)=>b!==d)}:a)})),a({definition:e,dirty:!0})},updateParameter:(c,d,e)=>{b()._pushHistory();let f={...b().definition};f.events=f.events.map(a=>({...a,events:a.events?.map(a=>a.id===c?{...a,parameters:a.parameters?.map((a,b)=>b===d?{...a,...e}:a)}:a)})),a({definition:f,dirty:!0})},addAction:(c,d,e)=>{b()._pushHistory();let f={...b().definition};f.state=bO(f.state,c,a=>{let b=a[d]??{actions:[]};return{...a,[d]:{actions:[...b.actions,e]}}}),a({definition:f,dirty:!0})},removeAction:(c,d,e)=>{b()._pushHistory();let f={...b().definition};f.state=bO(f.state,c,a=>{let b=a[d];return b?{...a,[d]:{actions:b.actions.filter((a,b)=>b!==e)}}:a}),a({definition:f,dirty:!0})},updateAction:(c,d,e,f)=>{b()._pushHistory();let g={...b().definition};g.state=bO(g.state,c,a=>{let b=a[d];return b?{...a,[d]:{actions:b.actions.map((a,b)=>b===e?f:a)}}:a}),a({definition:g,dirty:!0})},addTransition:(c,d)=>{b()._pushHistory();let e={...b().definition};e.state=bO(e.state,c,a=>({...a,transitions:[...a.transitions??[],d]})),a({definition:e,dirty:!0,errors:bS(e)})},updateTransition:(c,d,e)=>{b()._pushHistory();let f={...b().definition};f.state=bO(f.state,c,a=>({...a,transitions:a.transitions?.map((a,b)=>b===d?{...a,...e}:a)})),a({definition:f,dirty:!0})},removeTransition:(c,d)=>{b()._pushHistory();let e={...b().definition};e.state=bO(e.state,c,a=>({...a,transitions:a.transitions?.filter((a,b)=>b!==d)})),a({definition:e,dirty:!0,errors:bS(e)})},setStatePosition:(c,d)=>{a({layout:{positions:{...b().layout.positions,[c]:d}}})},arrangeLayout:()=>{b()._pushHistory(),a({layout:{positions:x(b().definition)}})},hydrateLayout:(c,d)=>{a({layout:{positions:{...b().layout.positions,...c}},...d?{viewport:d}:{}})},setViewport:b=>a({viewport:b}),select:(b,c)=>a({selection:{kind:b,id:c}}),clearSelection:()=>a({selection:{kind:null,id:null}}),setDrawMode:b=>a({drawMode:b,drawSource:null}),setDrawSource:b=>a({drawSource:b}),showContextMenu:(b,c,d)=>a({contextMenu:{visible:!0,x:b,y:c,target:d}}),hideContextMenu:()=>a({contextMenu:{visible:!1,x:0,y:0,target:null}}),undo:()=>{let{undoStack:c,definition:d,layout:e}=b();if(0===c.length)return;let f=c[c.length-1],g={definition:JSON.parse(JSON.stringify(d)),layout:JSON.parse(JSON.stringify(e))};a({definition:f.definition,layout:f.layout,undoStack:c.slice(0,-1),redoStack:[...b().redoStack,g],dirty:!0,errors:bS(f.definition)})},redo:()=>{let{redoStack:c,definition:d,layout:e}=b();if(0===c.length)return;let f=c[c.length-1],g={definition:JSON.parse(JSON.stringify(d)),layout:JSON.parse(JSON.stringify(e))};a({definition:f.definition,layout:f.layout,undoStack:[...b().undoStack,g],redoStack:c.slice(0,-1),dirty:!0,errors:bS(f.definition)})},canUndo:()=>b().undoStack.length>0,canRedo:()=>b().redoStack.length>0,setActiveTab:b=>a({activeTab:b}),loadFromJson:(b,c)=>{try{let d=JSON.parse(b),e=d.stateMachine??d.StateMachine??d,f=bT(e,bM()),g=e.state?.name??"Root";a({definition:e,layout:f,fileName:c??null,dirty:!1,errors:bS(e),selection:{kind:null,id:null},undoStack:[],redoStack:[],navigationPath:[g],currentParent:g})}catch(a){console.error("Failed to parse definition:",a)}},exportJson:()=>{let{definition:a}=b();return JSON.stringify({stateMachine:a},null,2)},applyRemote:(c,d,e)=>{try{let f=JSON.parse(c),g=f.stateMachine??f.StateMachine??f,h=bT(g,b().layout),i=g.state?.name??"Root",j=b(),k=new Set(bQ(g.state)),l=j.navigationPath.filter(a=>k.has(a)),m=l.length?l:[i],n=m[m.length-1],o=j.selection,p=("state"===o.kind?!!o.id&&k.has(o.id):"transition"===o.kind?!!o.id&&k.has(o.id.split(":")[0]):"event"===o.kind&&!!o.id&&bR(g).includes(o.id))?o:{kind:null,id:null};a({definition:g,layout:h,fileName:e??b().fileName,dirty:!1,remoteMtime:d,remoteStatus:"synced",remoteMessage:null,errors:bS(g),selection:p,navigationPath:m,currentParent:n})}catch(b){a({remoteStatus:"error",remoteMessage:String(b)})}},setRemoteStatus:(b,c=null)=>a({remoteStatus:b,remoteMessage:c}),setRemoteMtime:b=>a({remoteMtime:b}),setDocPath:b=>a({docPath:b||null}),enterState:c=>{let d=b().activeStates;d.includes(c)||a({activeStates:[...d,c]})},exitState:c=>{let d=b().activeStates;d.includes(c)&&a({activeStates:d.filter(a=>a!==c)})},setPresence:b=>a({presence:b}),applyRemoteOps:(c,d,e)=>{a({_applyingRemote:!0});try{let e=b(),f=c.filter(a=>"runtime.enter"!==a.op&&"runtime.exit"!==a.op),g=f.length?n(e.definition,f):e.definition,h=e.activeStates;for(let a of c)"runtime.enter"===a.op?h.includes(a.state)||(h=[...h,a.state]):"runtime.exit"===a.op&&h.includes(a.state)&&(h=h.filter(b=>b!==a.state));let i=bT(g,e.layout),j=g.state?.name??"Root",k=new Set(bQ(g.state)),l=e.navigationPath.filter(a=>k.has(a)),m=l.length?l:[j],o=m[m.length-1],p=e.selection,q=("state"===p.kind?!!p.id&&k.has(p.id):"transition"===p.kind?!!p.id&&k.has(p.id.split(":")[0]):"event"===p.kind&&!!p.id&&bR(g).includes(p.id))?p:{kind:null,id:null};a({definition:g,layout:i,activeStates:h,dirty:!1,remoteMtime:d,remoteStatus:"synced",remoteMessage:null,errors:bS(g),selection:q,navigationPath:m,currentParent:o})}catch(b){a({remoteStatus:"error",remoteMessage:String(b)})}finally{a({_applyingRemote:!1})}},validate:()=>{let c=bS(b().definition);return a({errors:c}),c},setGeneratedCode:b=>a({generatedCode:b}),setShowCodePreview:b=>a({showCodePreview:b}),navigateInto:c=>{let{definition:d,navigationPath:e}=b(),f=bN(d.state,c);f&&(f.states?.length??0)>0&&a({navigationPath:[...e,c],currentParent:c,selection:{kind:null,id:null}})},navigateUp:c=>{let{navigationPath:d}=b();if(d.length<=1)return;let e=c??d.length-2,f=d.slice(0,e+1);a({navigationPath:f,currentParent:f[f.length-1],selection:{kind:null,id:null}})},getCurrentChildren:()=>{let{definition:a,currentParent:c}=b(),d=bN(a.state,c);return d?.states??[]}}))?ay(e):ay,bV="canvas",bW=`[data-pinch-owner="${bV}"]`;function bX(a){return!!a&&"function"==typeof a.closest&&null!==a.closest(bW)}let bY="stateloom-canvas",bZ="#030712",b$=["png","jpeg","svg","mermaid","markdown"],b_={png:"PNG",jpeg:"JPEG",svg:"SVG",mermaid:"Mermaid",markdown:"Markdown"},b0={png:"image/png",jpeg:"image/jpeg",svg:"image/svg+xml",mermaid:"text/vnd.mermaid",markdown:"text/markdown"},b1={png:"png",jpeg:"jpg",svg:"svg",mermaid:"mmd",markdown:"md"};async function b2(a,b,c={}){var d,e,f;let g;if("mermaid"===a||"markdown"===a){let c,f;g=new Blob([(d=b.definition,e="markdown"===a,c=["stateDiagram-v2"],d.state&&function a(b,c,d){let e=T(b);if(0===e.length)return;let f=" ".repeat(c+1),g=new Set;for(let a of e)for(let b of a.transitions??[]){if(!b.nextState)continue;let c=b.condition?`${b.event} [${b.condition}]`:b.event;d.push(`${f}${a.name} --> ${b.nextState} : ${c}`),g.add(a.name),g.add(b.nextState)}for(let a of e)g.has(a.name)||d.push(`${f}${a.name}`);for(let b of e)0!==T(b).length&&(d.push(`${f}state ${b.name} {`),a(b,c+1,d),d.push(`${f}}`))}(d.state,0,c),f=c.join("\n"),e?`\`\`\`mermaid
|
|
3
3
|
${f}
|
|
4
4
|
\`\`\`
|
|
5
5
|
`:`${f}
|
|
6
|
-
`)],{type:`${bD[a]};charset=utf-8`})}else{let b=function(a={}){let b="u"<typeof document?null:document.getElementById(bz);if(!b)return null;let c=function(a){let b=a.querySelector(":scope > g");if(!b)return null;try{let a=b.getBBox();return a.width>0&&a.height>0?a:null}catch{return null}}(b);if(!c)return null;let d=a.padding??48,e=a.background??bA,f=Math.round(c.x-d),g=Math.round(c.y-d),h=Math.round(c.width+2*d),i=Math.round(c.height+2*d),j=b.cloneNode(!0);j.removeAttribute("id"),j.removeAttribute("class"),j.removeAttribute("style"),j.setAttribute("xmlns","http://www.w3.org/2000/svg"),j.setAttribute("width",String(h)),j.setAttribute("height",String(i)),j.setAttribute("viewBox",`${f} ${g} ${h} ${i}`),j.setAttribute("font-family","ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif"),function a(b){for(let c of Array.from(b.children)){if("transparent"===c.getAttribute("fill")||"transparent"===c.getAttribute("stroke")){c.remove();continue}c.removeAttribute("class"),c.removeAttribute("style"),a(c)}}(j);let k=j.querySelector(":scope > g");k?.removeAttribute("transform");let l=document.createElementNS("http://www.w3.org/2000/svg","rect");return l.setAttribute("x",String(f)),l.setAttribute("y",String(g)),l.setAttribute("width",String(h)),l.setAttribute("height",String(i)),l.setAttribute("fill",e),j.insertBefore(l,j.firstChild),new XMLSerializer().serializeToString(j)}(c);if(!b)throw Error("nothing on the board to export yet");g="svg"===a?new Blob([b],{type:`${bD.svg};charset=utf-8`}):await (f=c.scale??2,new Promise((c,d)=>{let e=b.match(/width="(\d+)"\s+height="(\d+)"/),g=e?Number(e[1]):1200,h=e?Number(e[2]):800,i=URL.createObjectURL(new Blob([b],{type:"image/svg+xml;charset=utf-8"})),j=new Image;j.onload=()=>{URL.revokeObjectURL(i);let b=document.createElement("canvas");b.width=Math.max(1,Math.round(g*f)),b.height=Math.max(1,Math.round(h*f));let e=b.getContext("2d");e?(e.fillStyle=bA,e.fillRect(0,0,b.width,b.height),e.drawImage(j,0,0,b.width,b.height),b.toBlob(a=>a?c(a):d(Error("the canvas produced no image")),bD[a],"jpeg"===a?.92:void 0)):d(Error("this browser gave no 2d context to draw into"))},j.onerror=()=>{URL.revokeObjectURL(i),d(Error("the browser could not read the serialized board"))},j.src=i}))}let h=function({doc:a,machine:b,format:c,at:d}){let e,f,g=Q(b??"")||Q(a?(a.split(/[/\\]/).pop()??a).replace(/\.smdf\.json$/i,"").replace(/\.json$/i,""):"")||"statemachine",h=a&&(e=a.match(/(?:^|[/\\-])ep(?:isode)?-?(\d{2,4})(?:[/\\-]|$)/i))?`ep${e[1]}`:null,i=h?`${h}--`:"";return`${i}${g}--${(f=a=>String(a).padStart(2,"0"))(d.getFullYear()%100)+f(d.getMonth()+1)+f(d.getDate())+f(d.getHours())+f(d.getMinutes())+f(d.getSeconds())}.${c}`}({doc:b.docPath??b.fileName??null,machine:b.definition?.settings?.name??null,format:bE[a]??String(a),at:(void 0)??new Date}),i=URL.createObjectURL(g),j=document.createElement("a");return j.href=i,j.download=h,j.click(),URL.revokeObjectURL(i),h}let bG="stateloom.layout.v1:";async function bH(){try{let{requestedDoc:b,docQuery:c}=await a.A(65614),d=await fetch(`/api/file${c(b())}`,{cache:"no-store"});if(d.ok){let a=(await d.json())?.path;if("string"==typeof a&&a.length>0)return a}}catch{}return bv.getState().fileName??"untitled"}function bI(){let a,b,c=bv(a=>a.definition),d=bv(a=>a.layout),e=bv(a=>a.selection),f=bv(a=>a.select),g=bv(a=>a.clearSelection),j=bv(a=>a.setStatePosition),k=bv(a=>a.drawMode),l=bv(a=>a.drawSource),m=bv(a=>a.setDrawSource),n=bv(a=>a.setDrawMode),o=bv(a=>a.addTransition),p=bv(a=>a.showContextMenu),q=bv(a=>a.removeState),r=bv(a=>a.undo),s=bv(a=>a.redo),t=bv(a=>a.errors),u=bv(a=>a.navigationPath),v=bv(a=>a.navigateInto),w=bv(a=>a.navigateUp),y=bv(a=>a.activeStates),z=bv(a=>a.viewport),A=bv(a=>a.setViewport);a=(0,i.useRef)(!1),b=(0,i.useRef)(null),(0,i.useEffect)(()=>{let c=!1,d=null;(async()=>{let d=await bH();if(c)return;b.current=d;let e=null;e&&bv.getState().hydrateLayout(e.positions,e.viewport),a.current=!0})();let e=bv.subscribe((c,e)=>{a.current&&b.current&&(c.layout!==e.layout||c.viewport!==e.viewport)&&(d&&clearTimeout(d),d=setTimeout(()=>{let a=bv.getState();b.current,function(a,b){let c={};for(let[d,e]of Object.entries(a)){let a=b[d];a&&(e.x!==a.x||e.y!==a.y||e.width!==a.width||e.height!==a.height)&&(c[d]=e)};}(a.layout.positions,x(a.definition)),a.viewport},300))});return()=>{c=!0,d&&clearTimeout(d),e()}},[]);let B=u.slice(1);return(0,h.jsx)($,{definition:c,positions:d.positions,path:B,rootLabel:u[0],viewport:z,onViewportChange:A,selection:{kind:"state"===e.kind||"transition"===e.kind?e.kind:null,id:e.id},activeStates:y,errorElements:t.flatMap(a=>a.element?[a.element]:[]),drawMode:"transition"===k?"transition":"select",drawSource:l,svgId:bz,pinchOwner:bw,emptyHint:"Right-click to add a state, or load a .smdf.json file",onSelect:(a,b)=>{"state"!==a||"transition"!==k||l?f(a,b):m(b)},onClearSelection:g,onStateMove:j,onNavigateInto:v,onNavigateTo:a=>w(a),onContextMenu:(a,b,c)=>p(a,b,"state"===c.kind?{kind:"state",id:c.id}:{kind:"canvas"}),onCreateTransition:(a,b,c)=>{o(a,{event:c,nextState:b}),m(null),n("select")},onCancelDraw:()=>{n("select"),m(null)},onDeleteState:a=>{q(a),g()},onUndo:r,onRedo:s})}function bJ({label:a,actions:b,onChange:c}){let d=(a,d)=>c(b.map((b,c)=>c===a?{...b,...d}:b));return(0,h.jsxs)("div",{children:[(0,h.jsxs)("div",{className:"flex items-center justify-between",children:[(0,h.jsx)("span",{className:"text-xs font-medium text-gray-500",children:a}),(0,h.jsx)("button",{onClick:()=>c([...b,{action:"code",code:""}]),className:"text-xs text-blue-500 hover:text-blue-400",children:"+ action"})]}),b.map((a,e)=>(0,h.jsxs)("div",{className:"flex items-start gap-1 mt-1",children:[(0,h.jsxs)("select",{className:"bg-gray-800 border border-gray-700 rounded px-1 py-0.5 text-xs text-gray-200",value:a.action,onChange:a=>d(e,{action:a.target.value}),children:[(0,h.jsx)("option",{value:"code",children:"Code"}),(0,h.jsx)("option",{value:"timerStart",children:"Timer Start"}),(0,h.jsx)("option",{value:"timerStop",children:"Timer Stop"})]}),"code"===a.action?(0,h.jsx)("textarea",{className:"flex-1 bg-gray-800 border border-gray-700 rounded px-1 py-0.5 text-xs text-gray-200 h-10 font-mono",value:a.code??"",placeholder:"// action code...",onChange:a=>d(e,{code:a.target.value})}):(0,h.jsx)("input",{className:"flex-1 bg-gray-800 border border-gray-700 rounded px-1 py-0.5 text-xs text-gray-200",value:a.name??"",placeholder:"Timer name",onChange:a=>d(e,{name:a.target.value})}),(0,h.jsx)("button",{onClick:()=>c(b.filter((a,b)=>b!==e)),className:"text-red-600 hover:text-red-400 text-xs mt-0.5",children:"✕"})]},e)),0===b.length&&(0,h.jsx)("span",{className:"text-xs text-gray-700 italic",children:"none"})]})}function bK(){let a=bv(a=>a.definition),b=bv(a=>a.selection),c=bv(a=>a.updateState),d=bv(a=>a.removeState);bv(a=>a.addAction),bv(a=>a.removeAction);let e=bv(a=>a.updateTransition),f=bv(a=>a.removeTransition);if(!b.kind||!b.id)return(0,h.jsx)("div",{className:"p-3 text-xs text-gray-500",children:"Select a state or transition to edit its properties."});let g=(a,b)=>{if(a.name===b)return a;for(let c of a.states??[]){let a=g(c,b);if(a)return a}return null};if("state"===b.kind){let e=g(a.state,b.id);if(!e)return(0,h.jsx)("div",{className:"p-3 text-gray-500 text-xs",children:"State not found"});let i=e.onEntry?.actions??[],j=e.onExit?.actions??[];return(0,h.jsxs)("div",{className:"p-3 space-y-3 text-sm md:overflow-y-auto md:max-h-[calc(100vh-160px)]",children:[(0,h.jsxs)("h3",{className:"text-xs font-semibold text-gray-400",children:["State: ",e.name]}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Name"}),(0,h.jsx)("input",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-sm text-gray-200",value:e.name,onChange:a=>c(b.id,{name:a.target.value})})]}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Kind"}),(0,h.jsxs)("select",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-sm text-gray-200",value:e.kind??"normal",onChange:a=>c(b.id,{kind:a.target.value}),children:[(0,h.jsx)("option",{value:"normal",children:"Normal"}),(0,h.jsx)("option",{value:"final",children:"Final"}),(0,h.jsx)("option",{value:"history",children:"History"})]})]}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Description"}),(0,h.jsx)("textarea",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-xs text-gray-200 h-12",value:e.description??"",onChange:a=>c(b.id,{description:a.target.value||void 0})})]}),(0,h.jsx)(bJ,{label:"▸ onEntry Actions",actions:i,onChange:a=>c(b.id,{onEntry:{actions:a}})}),(0,h.jsx)(bJ,{label:"◂ onExit Actions",actions:j,onChange:a=>c(b.id,{onExit:{actions:a}})}),(0,h.jsxs)("div",{children:[(0,h.jsx)("span",{className:"text-xs font-medium text-gray-500",children:"Transitions"}),(e.transitions??[]).map((a,c)=>(0,h.jsxs)("div",{className:"flex items-center gap-1 text-xs text-gray-400 py-1 border-b border-gray-800/50",children:[(0,h.jsxs)("span",{className:"flex-1",children:[a.event," → ",a.nextState??"(internal)"]}),a.condition&&(0,h.jsxs)("span",{className:"text-gray-600",children:["[",a.condition,"]"]}),(0,h.jsx)("button",{onClick:()=>f(b.id,c),className:"text-red-600 hover:text-red-400",children:"✕"})]},c)),(e.transitions?.length??0)===0&&(0,h.jsx)("span",{className:"text-xs text-gray-700 italic",children:"none"})]}),(0,h.jsx)("button",{onClick:()=>d(b.id),className:"text-red-500 hover:text-red-400 text-xs mt-2",children:"🗑 Delete State"})]})}if("transition"===b.kind){let[c,d]=b.id.split(":"),i=parseInt(d,10),j=g(a.state,c),k=j?.transitions?.[i];if(!k)return(0,h.jsx)("div",{className:"p-3 text-gray-500 text-xs",children:"Transition not found"});let l=bs(a),m=(function a(b){let c=[b];for(let d of b.states??[])c.push(...a(d));return c})(a.state).map(a=>a.name).filter(a=>"Root"!==a);return(0,h.jsxs)("div",{className:"p-3 space-y-3 text-sm",children:[(0,h.jsx)("h3",{className:"text-xs font-semibold text-gray-400",children:"Transition"}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Event"}),(0,h.jsx)("select",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-sm text-gray-200",value:k.event,onChange:a=>e(c,i,{event:a.target.value}),children:l.map(a=>(0,h.jsx)("option",{value:a,children:a},a))})]}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Target State"}),(0,h.jsxs)("select",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-sm text-gray-200",value:k.nextState??"",onChange:a=>e(c,i,{nextState:a.target.value||void 0}),children:[(0,h.jsx)("option",{value:"",children:"(internal transition)"}),m.map(a=>(0,h.jsx)("option",{value:a,children:a},a))]})]}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Condition (guard)"}),(0,h.jsx)("textarea",{rows:3,className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-sm text-gray-200 resize-y leading-snug",value:k.condition??"",onChange:a=>e(c,i,{condition:a.target.value||void 0})})]}),(0,h.jsx)("button",{onClick:()=>f(c,i),className:"text-red-500 hover:text-red-400 text-xs",children:"🗑 Delete Transition"})]})}return null}let bL=["string","int","float","bool","object"];function bM(){let a=bv(a=>a.definition),b=bv(a=>a.addEvent),c=bv(a=>a.updateEvent),d=bv(a=>a.removeEvent),e=bv(a=>a.addParameter),f=bv(a=>a.removeParameter),g=bv(a=>a.updateParameter),j=bv(a=>a.updateEventSource),k=bv(a=>a.select),l=bv(a=>a.selection),[m,n]=(0,i.useState)(""),[o,p]=(0,i.useState)(null),[q,r]=(0,i.useState)(null);return(0,h.jsxs)("div",{className:"p-3 text-sm",children:[a.events.map((a,b)=>(0,h.jsxs)("div",{className:"mb-3",children:[(0,h.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,h.jsx)("span",{className:"text-xs font-semibold text-gray-500",children:"Source:"}),(0,h.jsx)("input",{className:"flex-1 bg-transparent border-b border-gray-700 text-xs text-gray-300 px-1 py-0.5 focus:border-blue-500 outline-none",value:a.name,onChange:a=>j(b,{name:a.target.value})}),void 0!==a.feeder&&(0,h.jsx)("input",{className:"w-24 bg-transparent border-b border-gray-700 text-xs text-gray-400 px-1 py-0.5 focus:border-blue-500 outline-none",value:a.feeder??"",placeholder:"Feeder...",onChange:a=>j(b,{feeder:a.target.value||void 0})}),void 0===a.feeder&&(0,h.jsx)("button",{className:"text-xs text-gray-600 hover:text-gray-400",title:"Add feeder class",onClick:()=>j(b,{feeder:`${a.name}Feeder`}),children:"+feeder"})]}),(0,h.jsx)("div",{className:"-mx-1 overflow-x-auto px-1",children:(0,h.jsxs)("table",{className:"w-full text-xs",children:[(0,h.jsx)("thead",{children:(0,h.jsxs)("tr",{className:"text-gray-600 border-b border-gray-800",children:[(0,h.jsx)("th",{className:"text-left py-1 font-medium",children:"ID"}),(0,h.jsx)("th",{className:"text-left py-1 font-medium",children:"Description"}),(0,h.jsx)("th",{className:"text-left py-1 font-medium",children:"Params"}),(0,h.jsx)("th",{className:"w-6"})]})}),(0,h.jsx)("tbody",{children:(a.events??[]).map(a=>(0,h.jsxs)(i.Fragment,{children:[(0,h.jsxs)("tr",{className:`border-b border-gray-800/50 hover:bg-gray-800/30 cursor-pointer ${"event"===l.kind&&l.id===a.id?"bg-blue-900/30":""}`,onClick:()=>{k("event",a.id),p(o===a.id?null:a.id)},children:[(0,h.jsx)("td",{className:"py-1 pr-1",children:q===a.id?(0,h.jsx)("input",{autoFocus:!0,className:"w-full bg-gray-800 border border-gray-700 rounded px-1 text-gray-200",value:a.id,onChange:b=>c(a.id,{id:b.target.value}),onBlur:()=>r(null),onKeyDown:a=>"Enter"===a.key&&r(null),onClick:a=>a.stopPropagation()}):(0,h.jsx)("span",{className:"text-gray-300",onDoubleClick:b=>{b.stopPropagation(),r(a.id)},children:a.id})}),(0,h.jsx)("td",{className:"py-1 pr-1 text-gray-500 truncate max-w-[80px]",children:a.description??"—"}),(0,h.jsx)("td",{className:"py-1 text-gray-500",children:(a.parameters?.length??0)>0?a.parameters.map(a=>`${a.name}:${a.type}`).join(", "):"—"}),(0,h.jsx)("td",{className:"py-1",children:(0,h.jsx)("button",{onClick:b=>{b.stopPropagation(),d(a.id)},className:"text-red-600 hover:text-red-400",children:"✕"})})]}),o===a.id&&(0,h.jsx)("tr",{children:(0,h.jsx)("td",{colSpan:4,className:"py-2 px-1 bg-gray-900/50",children:(0,h.jsxs)("div",{className:"space-y-2",children:[(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-gray-600",children:"Description"}),(0,h.jsx)("input",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-0.5 text-gray-200 mt-0.5",value:a.description??"",onChange:b=>c(a.id,{description:b.target.value||void 0})})]}),(0,h.jsxs)("div",{children:[(0,h.jsx)("span",{className:"text-gray-600",children:"Parameters"}),(a.parameters??[]).map((b,c)=>(0,h.jsxs)("div",{className:"flex items-center gap-1 mt-1",children:[(0,h.jsx)("input",{className:"flex-1 bg-gray-800 border border-gray-700 rounded px-1 py-0.5 text-gray-200",value:b.name,placeholder:"name",onChange:b=>g(a.id,c,{name:b.target.value})}),(0,h.jsx)("select",{className:"bg-gray-800 border border-gray-700 rounded px-1 py-0.5 text-gray-200",value:b.type,onChange:b=>g(a.id,c,{type:b.target.value}),children:bL.map(a=>(0,h.jsx)("option",{value:a,children:a},a))}),(0,h.jsx)("button",{onClick:()=>f(a.id,c),className:"text-red-600 hover:text-red-400",children:"✕"})]},c)),(0,h.jsx)("button",{className:"text-blue-500 hover:text-blue-400 mt-1",onClick:()=>e(a.id,{name:"param",type:"string"}),children:"+ parameter"})]}),(0,h.jsxs)("div",{className:"mt-1",children:[(0,h.jsx)("span",{className:"text-gray-600",children:"Generated method:"}),(0,h.jsxs)("code",{className:"block bg-gray-800 rounded px-2 py-1 text-green-400 mt-0.5 font-mono",children:["on_",a.id.toLowerCase(),"(context",(a.parameters??[]).map(a=>`, ${a.name}: ${a.type}`).join(""),")"]})]})]})})})]},a.id))})]})})]},b)),(0,h.jsxs)("div",{className:"flex gap-1 mt-2",children:[(0,h.jsx)("input",{className:"flex-1 bg-gray-800 border border-gray-700 rounded px-2 py-1 text-gray-200",placeholder:"New event ID...",value:m,onChange:a=>n(a.target.value),onKeyDown:a=>{"Enter"===a.key&&m.trim()&&(b({id:m.trim()}),n(""))}}),(0,h.jsx)("button",{onClick:()=>{m.trim()&&(b({id:m.trim()}),n(""))},className:"bg-blue-600 hover:bg-blue-500 text-white px-2 py-1 rounded",children:"+"})]})]})}function bN(){let a=bv(a=>a.definition.settings),b=bv(a=>a.definition.settings.context),c=bv(a=>a.updateSettings);return(0,h.jsxs)("div",{className:"p-3 space-y-3 text-sm",children:[(0,h.jsx)("h3",{className:"text-xs font-semibold text-gray-400",children:"Machine Settings"}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Namespace"}),(0,h.jsx)("input",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-sm text-gray-200",value:a.namespace,onChange:a=>c({namespace:a.target.value})})]}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Name"}),(0,h.jsx)("input",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-sm text-gray-200",value:a.name??"",onChange:a=>c({name:a.target.value||void 0})})]}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Description"}),(0,h.jsx)("textarea",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-xs text-gray-200 h-12",value:a.description??"",onChange:a=>c({description:a.target.value||void 0})})]}),(0,h.jsxs)("label",{className:"flex items-center gap-2 text-sm text-gray-300",children:[(0,h.jsx)("input",{type:"checkbox",checked:a.asynchronous,onChange:a=>c({asynchronous:a.target.checked}),className:"rounded bg-gray-800 border-gray-600"}),"Asynchronous"]}),(0,h.jsx)("hr",{className:"border-gray-800"}),(0,h.jsx)("h4",{className:"text-xs font-semibold text-gray-500",children:"Context"}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Context Class"}),(0,h.jsx)("input",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-xs text-gray-200",value:b?.class??"",placeholder:"e.g. MyStateMachineContext",onChange:a=>c({context:{...b,class:a.target.value||void 0}})})]}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Base Class"}),(0,h.jsx)("input",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-xs text-gray-200",value:b?.baseClass??"",placeholder:"e.g. Context",onChange:a=>c({context:{...b,baseClass:a.target.value||void 0}})})]}),(0,h.jsx)("hr",{className:"border-gray-800"}),(0,h.jsx)("h4",{className:"text-xs font-semibold text-gray-500",children:"Imports"}),(0,h.jsx)("textarea",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-xs text-gray-200 h-16 font-mono",value:(a.imports??[]).join("\n"),placeholder:"One import per line",onChange:a=>c({imports:a.target.value?a.target.value.split("\n"):[]})}),(0,h.jsx)("hr",{className:"border-gray-800"}),(0,h.jsx)("h4",{className:"text-xs font-semibold text-gray-500",children:"Object References"}),(0,h.jsx)("textarea",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-xs text-gray-200 h-12 font-mono",value:(a.objects??[]).map(a=>`${a.instance}: ${a.class}`).join("\n"),placeholder:"instance: Class (one per line)",onChange:a=>{c({objects:a.target.value.split("\n").filter(a=>a.includes(":")).map(a=>{let[b,c]=a.split(":").map(a=>a.trim());return{instance:b,class:c}})})}}),(0,h.jsx)("hr",{className:"border-gray-800"}),(0,h.jsx)("h4",{className:"text-xs font-semibold text-gray-500",children:"Code Generation"}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Target Language"}),(0,h.jsxs)("select",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-xs text-gray-200",value:a.targetLanguage??"python",onChange:a=>c({targetLanguage:a.target.value}),children:[(0,h.jsx)("option",{value:"python",children:"Python"}),(0,h.jsx)("option",{value:"typescript",children:"TypeScript"}),(0,h.jsx)("option",{value:"csharp",children:"C#"})]})]})]})}function bO(){let a=bv(a=>a.errors),b=bv(a=>a.validate),c=bv(a=>a.select);return(0,h.jsxs)("div",{className:"p-3",children:[(0,h.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,h.jsxs)("h3",{className:"text-xs font-semibold text-gray-400",children:["Validation ",a.length>0&&(0,h.jsxs)("span",{className:"text-red-500",children:["(",a.length,")"]})]}),(0,h.jsx)("button",{onClick:()=>b(),className:"text-xs bg-gray-700 hover:bg-gray-600 text-gray-300 px-2 py-0.5 rounded",children:"Re-check"})]}),0===a.length?(0,h.jsxs)("div",{className:"flex items-center gap-2 text-green-500 text-xs",children:[(0,h.jsx)("span",{children:"✓"}),(0,h.jsx)("span",{children:"Definition is valid"})]}):(0,h.jsx)("div",{className:"space-y-0.5",children:a.map((a,b)=>(0,h.jsxs)("div",{className:`flex items-start gap-1.5 text-[13px] py-2.5 border-b border-gray-800/50 md:text-xs md:py-1 ${a.element?"cursor-pointer hover:bg-gray-800/30":""}`,onClick:()=>{a.element&&c("state",a.element)},title:a.element?`Click to select "${a.element}"`:void 0,children:[(0,h.jsx)("span",{className:`font-mono text-[10px] mt-0.5 ${"error"===a.severity?"text-red-600":"text-yellow-600"}`,children:a.ruleId}),(0,h.jsx)("span",{className:`flex-1 ${"error"===a.severity?"text-red-400":"text-yellow-400"}`,children:a.message}),a.element&&(0,h.jsxs)("span",{className:"text-gray-600 text-[10px]",children:["→ ",a.element]})]},b))})]})}var bP=a.i(41455);function bQ(){let a=(0,bP.useRequestedDoc)(),[b,c]=(0,i.useState)(!1),[d,e]=(0,i.useState)(""),[f,g]=(0,i.useState)(null),[j,k]=(0,i.useState)([]),[l,m]=(0,i.useState)(null),[n,o]=(0,i.useState)(null);(0,i.useEffect)(()=>{if(!b)return;let a=!0;return o(null),fetch("/api/docs",{cache:"no-store"}).then(a=>a.ok?a.json():Promise.reject(Error(`HTTP ${a.status}`))).then(b=>{a&&(g(b.docs??[]),k(b.roots??[]),m(b.current??null))}).catch(b=>{a&&(g([]),o(b.message))}),()=>{a=!1}},[b]);let p=a=>{c(!1),e(""),(0,bP.navigateToDoc)(a)},q=new Set((f??[]).map(a=>a.path)),r=b?(function(){try{let a=[];for(let b=0;b<window.localStorage.length;b++){let c=window.localStorage.key(b);c?.startsWith(bG)&&a.push(c.slice(bG.length))}return a.sort()}catch{return[]}})().filter(b=>b.startsWith("/")&&b!==a&&!q.has(b)):[],s=a??l,t=(f??[]).filter(a=>a.path!==s),u=d.trim().toLowerCase(),v=u?t.filter(a=>a.path.toLowerCase().includes(u)):t,w="block w-full truncate rounded px-1.5 py-1 text-left text-xs text-gray-300 hover:bg-gray-800";return(0,h.jsxs)("span",{className:"relative inline-flex",children:[(0,h.jsx)("button",{onClick:()=>c(a=>!a),className:"toolbar-btn",title:a?`Document: ${a}`:"Switch document",children:"⇄"}),b&&(0,h.jsxs)("div",{className:"absolute left-0 top-full z-50 mt-1 w-80 rounded border border-gray-700 bg-gray-900 p-2 shadow-lg",children:[(0,h.jsx)("div",{className:"mb-1 text-[10px] uppercase tracking-wide text-gray-500",children:"switch document"}),(0,h.jsxs)("form",{onSubmit:a=>{a.preventDefault();let b=d.trim();if(b){if(1===v.length)return p(v[0].path);if(b.startsWith("/"))return p(b)}},className:"mb-1 flex gap-1",children:[(0,h.jsx)("input",{value:d,onChange:a=>e(a.target.value),placeholder:null===f?"loading…":"filter, or /absolute/path.json",className:"min-w-0 flex-1 rounded border border-gray-700 bg-gray-950 px-1.5 py-1 text-xs text-gray-200 placeholder:text-gray-600"}),(0,h.jsx)("button",{type:"submit",className:"toolbar-btn",title:"Open",children:"→"})]}),(0,h.jsxs)("div",{className:"max-h-64 overflow-y-auto",children:[a&&(0,h.jsx)("button",{onClick:()=>p(null),className:w,title:"Return to the default project file",children:"⌂ default document"}),v.map(a=>(0,h.jsxs)("button",{onClick:()=>p(a.path),className:w,title:a.path,children:[a.name,(0,h.jsx)("span",{className:"ml-1 text-[10px] text-gray-600",children:a.dir})]},a.path)),r.length>0&&(0,h.jsxs)("div",{className:"mt-1 border-t border-gray-800 pt-1",children:[(0,h.jsx)("div",{className:"px-1.5 pb-0.5 text-[10px] uppercase tracking-wide text-gray-600",children:"recent"}),r.map(a=>(0,h.jsxs)("button",{onClick:()=>p(a),className:w,title:a,children:[a.split("/").pop(),(0,h.jsx)("span",{className:"ml-1 text-[10px] text-gray-600",children:a})]},a))]}),null!==f&&0===v.length&&0===r.length&&(0,h.jsx)("div",{className:"px-1.5 py-1 text-[11px] text-gray-500",children:u?"nothing matches":"no other documents here"})]}),j.length>0&&(0,h.jsxs)("div",{className:"mt-1 truncate border-t border-gray-800 pt-1 text-[10px] text-gray-600",children:["paths are as the server sees them: ",j.join(", ")]}),n&&(0,h.jsxs)("div",{className:"mt-1 text-[10px] text-gray-600",children:["this server does not list documents (",n,") — type a path"]})]})]})}function bR(){let a=bv(a=>a.presence),[b,c]=(0,i.useState)(!1);if(0===a.length)return null;let d=new Map;for(let b of a)d.set(b.role,(d.get(b.role)??0)+1);let e=[...d].map(([a,b])=>b>1?`${a} \xd7${b}`:a).join(" · ");return(0,h.jsxs)("span",{className:"relative inline-flex",children:[(0,h.jsxs)("button",{onClick:()=>c(a=>!a),className:"toolbar-btn inline-flex items-center gap-1.5",title:`Connected: ${e}`,"aria-expanded":b,"aria-label":`${a.length} connected: ${e}`,children:[(0,h.jsx)("span",{className:"flex -space-x-1",children:a.slice(0,4).map(a=>(0,h.jsx)("span",{className:"inline-block h-2 w-2 rounded-full ring-1 ring-gray-900",style:{backgroundColor:a.color??s(a.clientId)}},a.clientId))}),(0,h.jsx)("span",{className:"tabular-nums",children:a.length})]}),b&&(0,h.jsxs)("div",{className:"absolute left-0 top-full z-50 mt-1 max-h-64 w-56 overflow-y-auto rounded border border-gray-700 bg-gray-900 p-2 shadow-lg",children:[(0,h.jsxs)("div",{className:"mb-1 text-[10px] uppercase tracking-wide text-gray-500",children:["connected · ",e]}),a.map(a=>(0,h.jsxs)("div",{className:"flex items-center gap-1.5 rounded px-1 py-1 text-xs text-gray-300",title:a.clientId,children:[(0,h.jsx)("span",{className:"inline-block h-2 w-2 shrink-0 rounded-full",style:{backgroundColor:a.color??s(a.clientId)}}),(0,h.jsx)("span",{className:"shrink-0",children:a.role}),a.name&&(0,h.jsx)("span",{className:"truncate text-gray-500",children:a.name})]},a.clientId))]})]})}function bS(){let a=bv(a=>a.definition),b=bv(a=>a.fileName),c=bv(a=>a.docPath),d=bv(a=>a.dirty),e=bv(a=>a.loadFromJson),f=bv(a=>a.exportJson),g=bv(a=>a.addState),j=bv(a=>a.validate),k=bv(a=>a.showCodePreview),l=bv(a=>a.setShowCodePreview),m=bv(a=>a.setGeneratedCode),n=bv(a=>a.drawMode),o=bv(a=>a.setDrawMode),p=bv(a=>a.arrangeLayout),q=bv(a=>a.undo),r=bv(a=>a.redo),s=bv(a=>a.undoStack),t=bv(a=>a.redoStack),u=bv(a=>a.remoteStatus),v=bv(a=>a.remoteMessage),w=bv(a=>a.setRemoteStatus),x=bv(a=>a.setRemoteMtime),y=bv(a=>a.applyRemote),z=(0,bP.useRequestedDoc)(),A=(0,i.useRef)(null),[B,C]=(0,i.useState)(!1),[D,E]=(0,i.useState)(""),[F,G]=(0,i.useState)(!1),[H,I]=(0,i.useState)("png"),[J,K]=(0,i.useState)(!1),[L,M]=(0,i.useState)(null),[N,O]=(0,i.useState)(null),P=async()=>{let a=f();G(!0);try{let b=await fetch(`/api/file${(0,bP.docQuery)(z)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:a})});if(b.ok){let a=await b.json();x(a.mtime),bv.setState({dirty:!1}),w("synced",null)}else{let a=await b.json().catch(()=>({error:"unknown"}));w("error",`Save failed: ${a.error??b.statusText}`)}}catch(a){w("error",`Save failed: ${a}`)}finally{G(!1)}},Q=async()=>{K(!0),M(null);try{let d=await bF(H,{definition:a,docPath:c,fileName:b});O(d)}catch(a){M(a instanceof Error?a.message:String(a))}finally{K(!1)}},R=async()=>{try{let a=await fetch(`/api/file${(0,bP.docQuery)(z)}`,{cache:"no-store"});if(!a.ok)return void w("error","Reload failed");let b=await a.json();b.exists&&b.content?y(b.content,b.mtime,b.path.split("/").pop()):w("idle",`No file at ${b.path}`)}catch(a){w("error",`Reload failed: ${a}`)}},S=()=>{D.trim()&&(g(null,{name:D.trim(),kind:"normal"}),E(""),C(!1))},[T,U]=(0,i.useState)("python"),V=async()=>{try{let a=await fetch("/api/rispec",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})});if(a.ok){let b=await a.json();m(b.rispec)}else{let b=await a.json().catch(()=>({error:"Unknown"}));m(`# RISE rispec generation failed
|
|
6
|
+
`)],{type:`${b0[a]};charset=utf-8`})}else{let b=function(a={}){let b="u"<typeof document?null:document.getElementById(bY);if(!b)return null;let c=function(a){let b=a.querySelector(":scope > g");if(!b)return null;try{let a=b.getBBox();return a.width>0&&a.height>0?a:null}catch{return null}}(b);if(!c)return null;let d=a.padding??48,e=a.background??bZ,f=Math.round(c.x-d),g=Math.round(c.y-d),h=Math.round(c.width+2*d),i=Math.round(c.height+2*d),j=b.cloneNode(!0);j.removeAttribute("id"),j.removeAttribute("class"),j.removeAttribute("style"),j.setAttribute("xmlns","http://www.w3.org/2000/svg"),j.setAttribute("width",String(h)),j.setAttribute("height",String(i)),j.setAttribute("viewBox",`${f} ${g} ${h} ${i}`),j.setAttribute("font-family","ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif"),function a(b){for(let c of Array.from(b.children)){if("transparent"===c.getAttribute("fill")||"transparent"===c.getAttribute("stroke")){c.remove();continue}c.removeAttribute("class"),c.removeAttribute("style"),a(c)}}(j);let k=j.querySelector(":scope > g");k?.removeAttribute("transform");let l=document.createElementNS("http://www.w3.org/2000/svg","rect");return l.setAttribute("x",String(f)),l.setAttribute("y",String(g)),l.setAttribute("width",String(h)),l.setAttribute("height",String(i)),l.setAttribute("fill",e),j.insertBefore(l,j.firstChild),new XMLSerializer().serializeToString(j)}(c);if(!b)throw Error("nothing on the board to export yet");g="svg"===a?new Blob([b],{type:`${b0.svg};charset=utf-8`}):await (f=c.scale??2,new Promise((c,d)=>{let e=b.match(/width="(\d+)"\s+height="(\d+)"/),g=e?Number(e[1]):1200,h=e?Number(e[2]):800,i=URL.createObjectURL(new Blob([b],{type:"image/svg+xml;charset=utf-8"})),j=new Image;j.onload=()=>{URL.revokeObjectURL(i);let b=document.createElement("canvas");b.width=Math.max(1,Math.round(g*f)),b.height=Math.max(1,Math.round(h*f));let e=b.getContext("2d");e?(e.fillStyle=bZ,e.fillRect(0,0,b.width,b.height),e.drawImage(j,0,0,b.width,b.height),b.toBlob(a=>a?c(a):d(Error("the canvas produced no image")),b0[a],"jpeg"===a?.92:void 0)):d(Error("this browser gave no 2d context to draw into"))},j.onerror=()=>{URL.revokeObjectURL(i),d(Error("the browser could not read the serialized board"))},j.src=i}))}let h=function({doc:a,machine:b,format:c,at:d}){let e,f,g=ah(b??"")||ah(a?(a.split(/[/\\]/).pop()??a).replace(/\.smdf\.json$/i,"").replace(/\.json$/i,""):"")||"statemachine",h=a&&(e=a.match(/(?:^|[/\\-])ep(?:isode)?-?(\d{2,4})(?:[/\\-]|$)/i))?`ep${e[1]}`:null,i=h?`${h}--`:"";return`${i}${g}--${(f=a=>String(a).padStart(2,"0"))(d.getFullYear()%100)+f(d.getMonth()+1)+f(d.getDate())+f(d.getHours())+f(d.getMinutes())+f(d.getSeconds())}.${c}`}({doc:b.docPath??b.fileName??null,machine:b.definition?.settings?.name??null,format:b1[a]??String(a),at:(void 0)??new Date}),i=URL.createObjectURL(g),j=document.createElement("a");return j.href=i,j.download=h,j.click(),URL.revokeObjectURL(i),h}let b3="stateloom.layout.v1:";async function b4(){try{let{requestedDoc:b,docQuery:c}=await a.A(65614),d=await fetch(`/api/file${c(b())}`,{cache:"no-store"});if(d.ok){let a=(await d.json())?.path;if("string"==typeof a&&a.length>0)return a}}catch{}return bU.getState().fileName??"untitled"}function b5(){let a,b,c=bU(a=>a.definition),d=bU(a=>a.layout),e=bU(a=>a.selection),f=bU(a=>a.select),g=bU(a=>a.clearSelection),j=bU(a=>a.setStatePosition),k=bU(a=>a.drawMode),l=bU(a=>a.drawSource),m=bU(a=>a.setDrawSource),n=bU(a=>a.setDrawMode),o=bU(a=>a.addTransition),p=bU(a=>a.showContextMenu),q=bU(a=>a.removeState),r=bU(a=>a.undo),s=bU(a=>a.redo),t=bU(a=>a.errors),u=bU(a=>a.navigationPath),v=bU(a=>a.navigateInto),w=bU(a=>a.navigateUp),y=bU(a=>a.activeStates),z=bU(a=>a.viewport),A=bU(a=>a.setViewport);a=(0,i.useRef)(!1),b=(0,i.useRef)(null),(0,i.useEffect)(()=>{let c=!1,d=null;(async()=>{let d=await b4();if(c)return;b.current=d;let e=null;e&&bU.getState().hydrateLayout(e.positions,e.viewport),a.current=!0})();let e=bU.subscribe((c,e)=>{a.current&&b.current&&(c.layout!==e.layout||c.viewport!==e.viewport)&&(d&&clearTimeout(d),d=setTimeout(()=>{let a=bU.getState();b.current,function(a,b){let c={};for(let[d,e]of Object.entries(a)){let a=b[d];a&&(e.x!==a.x||e.y!==a.y||e.width!==a.width||e.height!==a.height)&&(c[d]=e)};}(a.layout.positions,x(a.definition)),a.viewport},300))});return()=>{c=!0,d&&clearTimeout(d),e()}},[]);let B=u.slice(1);return(0,h.jsx)(as,{definition:c,positions:d.positions,path:B,rootLabel:u[0],viewport:z,onViewportChange:A,selection:{kind:"state"===e.kind||"transition"===e.kind?e.kind:null,id:e.id},activeStates:y,errorElements:t.flatMap(a=>a.element?[a.element]:[]),drawMode:"transition"===k?"transition":"select",drawSource:l,svgId:bY,pinchOwner:bV,emptyHint:"Right-click to add a state, or load a .smdf.json file",onSelect:(a,b)=>{"state"!==a||"transition"!==k||l?f(a,b):m(b)},onClearSelection:g,onStateMove:j,onNavigateInto:v,onNavigateTo:a=>w(a),onContextMenu:(a,b,c)=>p(a,b,"state"===c.kind?{kind:"state",id:c.id}:{kind:"canvas"}),onCreateTransition:(a,b,c)=>{o(a,{event:c,nextState:b}),m(null),n("select")},onCancelDraw:()=>{n("select"),m(null)},onDeleteState:a=>{q(a),g()},onUndo:r,onRedo:s})}function b6({label:a,actions:b,onChange:c}){let d=(a,d)=>c(b.map((b,c)=>c===a?{...b,...d}:b));return(0,h.jsxs)("div",{children:[(0,h.jsxs)("div",{className:"flex items-center justify-between",children:[(0,h.jsx)("span",{className:"text-xs font-medium text-gray-500",children:a}),(0,h.jsx)("button",{onClick:()=>c([...b,{action:"code",code:""}]),className:"text-xs text-blue-500 hover:text-blue-400",children:"+ action"})]}),b.map((a,e)=>(0,h.jsxs)("div",{className:"flex items-start gap-1 mt-1",children:[(0,h.jsxs)("select",{className:"bg-gray-800 border border-gray-700 rounded px-1 py-0.5 text-xs text-gray-200",value:a.action,onChange:a=>d(e,{action:a.target.value}),children:[(0,h.jsx)("option",{value:"code",children:"Code"}),(0,h.jsx)("option",{value:"timerStart",children:"Timer Start"}),(0,h.jsx)("option",{value:"timerStop",children:"Timer Stop"})]}),"code"===a.action?(0,h.jsx)("textarea",{className:"flex-1 bg-gray-800 border border-gray-700 rounded px-1 py-0.5 text-xs text-gray-200 h-10 font-mono",value:a.code??"",placeholder:"// action code...",onChange:a=>d(e,{code:a.target.value})}):(0,h.jsx)("input",{className:"flex-1 bg-gray-800 border border-gray-700 rounded px-1 py-0.5 text-xs text-gray-200",value:a.name??"",placeholder:"Timer name",onChange:a=>d(e,{name:a.target.value})}),(0,h.jsx)("button",{onClick:()=>c(b.filter((a,b)=>b!==e)),className:"text-red-600 hover:text-red-400 text-xs mt-0.5",children:"✕"})]},e)),0===b.length&&(0,h.jsx)("span",{className:"text-xs text-gray-700 italic",children:"none"})]})}function b7(){let a=bU(a=>a.definition),b=bU(a=>a.selection),c=bU(a=>a.updateState),d=bU(a=>a.removeState);bU(a=>a.addAction),bU(a=>a.removeAction);let e=bU(a=>a.updateTransition),f=bU(a=>a.removeTransition);if(!b.kind||!b.id)return(0,h.jsx)("div",{className:"p-3 text-xs text-gray-500",children:"Select a state or transition to edit its properties."});let g=(a,b)=>{if(a.name===b)return a;for(let c of a.states??[]){let a=g(c,b);if(a)return a}return null};if("state"===b.kind){let e=g(a.state,b.id);if(!e)return(0,h.jsx)("div",{className:"p-3 text-gray-500 text-xs",children:"State not found"});let i=e.onEntry?.actions??[],j=e.onExit?.actions??[];return(0,h.jsxs)("div",{className:"p-3 space-y-3 text-sm md:overflow-y-auto md:max-h-[calc(100vh-160px)]",children:[(0,h.jsxs)("h3",{className:"text-xs font-semibold text-gray-400",children:["State: ",e.name]}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Name"}),(0,h.jsx)("input",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-sm text-gray-200",value:e.name,onChange:a=>c(b.id,{name:a.target.value})})]}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Kind"}),(0,h.jsxs)("select",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-sm text-gray-200",value:e.kind??"normal",onChange:a=>c(b.id,{kind:a.target.value}),children:[(0,h.jsx)("option",{value:"normal",children:"Normal"}),(0,h.jsx)("option",{value:"final",children:"Final"}),(0,h.jsx)("option",{value:"history",children:"History"})]})]}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Description"}),(0,h.jsx)("textarea",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-xs text-gray-200 h-12",value:e.description??"",onChange:a=>c(b.id,{description:a.target.value||void 0})})]}),(0,h.jsx)(b6,{label:"▸ onEntry Actions",actions:i,onChange:a=>c(b.id,{onEntry:{actions:a}})}),(0,h.jsx)(b6,{label:"◂ onExit Actions",actions:j,onChange:a=>c(b.id,{onExit:{actions:a}})}),(0,h.jsxs)("div",{children:[(0,h.jsx)("span",{className:"text-xs font-medium text-gray-500",children:"Transitions"}),(e.transitions??[]).map((a,c)=>(0,h.jsxs)("div",{className:"flex items-center gap-1 text-xs text-gray-400 py-1 border-b border-gray-800/50",children:[(0,h.jsxs)("span",{className:"flex-1",children:[a.event," → ",a.nextState??"(internal)"]}),a.condition&&(0,h.jsxs)("span",{className:"text-gray-600",children:["[",a.condition,"]"]}),(0,h.jsx)("button",{onClick:()=>f(b.id,c),className:"text-red-600 hover:text-red-400",children:"✕"})]},c)),(e.transitions?.length??0)===0&&(0,h.jsx)("span",{className:"text-xs text-gray-700 italic",children:"none"})]}),(0,h.jsx)("button",{onClick:()=>d(b.id),className:"text-red-500 hover:text-red-400 text-xs mt-2",children:"🗑 Delete State"})]})}if("transition"===b.kind){let[c,d]=b.id.split(":"),i=parseInt(d,10),j=g(a.state,c),k=j?.transitions?.[i];if(!k)return(0,h.jsx)("div",{className:"p-3 text-gray-500 text-xs",children:"Transition not found"});let l=bR(a),m=(function a(b){let c=[b];for(let d of b.states??[])c.push(...a(d));return c})(a.state).map(a=>a.name).filter(a=>"Root"!==a);return(0,h.jsxs)("div",{className:"p-3 space-y-3 text-sm",children:[(0,h.jsx)("h3",{className:"text-xs font-semibold text-gray-400",children:"Transition"}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Event"}),(0,h.jsx)("select",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-sm text-gray-200",value:k.event,onChange:a=>e(c,i,{event:a.target.value}),children:l.map(a=>(0,h.jsx)("option",{value:a,children:a},a))})]}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Target State"}),(0,h.jsxs)("select",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-sm text-gray-200",value:k.nextState??"",onChange:a=>e(c,i,{nextState:a.target.value||void 0}),children:[(0,h.jsx)("option",{value:"",children:"(internal transition)"}),m.map(a=>(0,h.jsx)("option",{value:a,children:a},a))]})]}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Condition (guard)"}),(0,h.jsx)("textarea",{rows:3,className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-sm text-gray-200 resize-y leading-snug",value:k.condition??"",onChange:a=>e(c,i,{condition:a.target.value||void 0})})]}),(0,h.jsx)("button",{onClick:()=>f(c,i),className:"text-red-500 hover:text-red-400 text-xs",children:"🗑 Delete Transition"})]})}return null}let b8=["string","int","float","bool","object"];function b9(){let a=bU(a=>a.definition),b=bU(a=>a.addEvent),c=bU(a=>a.updateEvent),d=bU(a=>a.removeEvent),e=bU(a=>a.addParameter),f=bU(a=>a.removeParameter),g=bU(a=>a.updateParameter),j=bU(a=>a.updateEventSource),k=bU(a=>a.select),l=bU(a=>a.selection),[m,n]=(0,i.useState)(""),[o,p]=(0,i.useState)(null),[q,r]=(0,i.useState)(null);return(0,h.jsxs)("div",{className:"p-3 text-sm",children:[a.events.map((a,b)=>(0,h.jsxs)("div",{className:"mb-3",children:[(0,h.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,h.jsx)("span",{className:"text-xs font-semibold text-gray-500",children:"Source:"}),(0,h.jsx)("input",{className:"flex-1 bg-transparent border-b border-gray-700 text-xs text-gray-300 px-1 py-0.5 focus:border-blue-500 outline-none",value:a.name,onChange:a=>j(b,{name:a.target.value})}),void 0!==a.feeder&&(0,h.jsx)("input",{className:"w-24 bg-transparent border-b border-gray-700 text-xs text-gray-400 px-1 py-0.5 focus:border-blue-500 outline-none",value:a.feeder??"",placeholder:"Feeder...",onChange:a=>j(b,{feeder:a.target.value||void 0})}),void 0===a.feeder&&(0,h.jsx)("button",{className:"text-xs text-gray-600 hover:text-gray-400",title:"Add feeder class",onClick:()=>j(b,{feeder:`${a.name}Feeder`}),children:"+feeder"})]}),(0,h.jsx)("div",{className:"-mx-1 overflow-x-auto px-1",children:(0,h.jsxs)("table",{className:"w-full text-xs",children:[(0,h.jsx)("thead",{children:(0,h.jsxs)("tr",{className:"text-gray-600 border-b border-gray-800",children:[(0,h.jsx)("th",{className:"text-left py-1 font-medium",children:"ID"}),(0,h.jsx)("th",{className:"text-left py-1 font-medium",children:"Description"}),(0,h.jsx)("th",{className:"text-left py-1 font-medium",children:"Params"}),(0,h.jsx)("th",{className:"w-6"})]})}),(0,h.jsx)("tbody",{children:(a.events??[]).map(a=>(0,h.jsxs)(i.Fragment,{children:[(0,h.jsxs)("tr",{className:`border-b border-gray-800/50 hover:bg-gray-800/30 cursor-pointer ${"event"===l.kind&&l.id===a.id?"bg-blue-900/30":""}`,onClick:()=>{k("event",a.id),p(o===a.id?null:a.id)},children:[(0,h.jsx)("td",{className:"py-1 pr-1",children:q===a.id?(0,h.jsx)("input",{autoFocus:!0,className:"w-full bg-gray-800 border border-gray-700 rounded px-1 text-gray-200",value:a.id,onChange:b=>c(a.id,{id:b.target.value}),onBlur:()=>r(null),onKeyDown:a=>"Enter"===a.key&&r(null),onClick:a=>a.stopPropagation()}):(0,h.jsx)("span",{className:"text-gray-300",onDoubleClick:b=>{b.stopPropagation(),r(a.id)},children:a.id})}),(0,h.jsx)("td",{className:"py-1 pr-1 text-gray-500 truncate max-w-[80px]",children:a.description??"—"}),(0,h.jsx)("td",{className:"py-1 text-gray-500",children:(a.parameters?.length??0)>0?a.parameters.map(a=>`${a.name}:${a.type}`).join(", "):"—"}),(0,h.jsx)("td",{className:"py-1",children:(0,h.jsx)("button",{onClick:b=>{b.stopPropagation(),d(a.id)},className:"text-red-600 hover:text-red-400",children:"✕"})})]}),o===a.id&&(0,h.jsx)("tr",{children:(0,h.jsx)("td",{colSpan:4,className:"py-2 px-1 bg-gray-900/50",children:(0,h.jsxs)("div",{className:"space-y-2",children:[(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-gray-600",children:"Description"}),(0,h.jsx)("input",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-0.5 text-gray-200 mt-0.5",value:a.description??"",onChange:b=>c(a.id,{description:b.target.value||void 0})})]}),(0,h.jsxs)("div",{children:[(0,h.jsx)("span",{className:"text-gray-600",children:"Parameters"}),(a.parameters??[]).map((b,c)=>(0,h.jsxs)("div",{className:"flex items-center gap-1 mt-1",children:[(0,h.jsx)("input",{className:"flex-1 bg-gray-800 border border-gray-700 rounded px-1 py-0.5 text-gray-200",value:b.name,placeholder:"name",onChange:b=>g(a.id,c,{name:b.target.value})}),(0,h.jsx)("select",{className:"bg-gray-800 border border-gray-700 rounded px-1 py-0.5 text-gray-200",value:b.type,onChange:b=>g(a.id,c,{type:b.target.value}),children:b8.map(a=>(0,h.jsx)("option",{value:a,children:a},a))}),(0,h.jsx)("button",{onClick:()=>f(a.id,c),className:"text-red-600 hover:text-red-400",children:"✕"})]},c)),(0,h.jsx)("button",{className:"text-blue-500 hover:text-blue-400 mt-1",onClick:()=>e(a.id,{name:"param",type:"string"}),children:"+ parameter"})]}),(0,h.jsxs)("div",{className:"mt-1",children:[(0,h.jsx)("span",{className:"text-gray-600",children:"Generated method:"}),(0,h.jsxs)("code",{className:"block bg-gray-800 rounded px-2 py-1 text-green-400 mt-0.5 font-mono",children:["on_",a.id.toLowerCase(),"(context",(a.parameters??[]).map(a=>`, ${a.name}: ${a.type}`).join(""),")"]})]})]})})})]},a.id))})]})})]},b)),(0,h.jsxs)("div",{className:"flex gap-1 mt-2",children:[(0,h.jsx)("input",{className:"flex-1 bg-gray-800 border border-gray-700 rounded px-2 py-1 text-gray-200",placeholder:"New event ID...",value:m,onChange:a=>n(a.target.value),onKeyDown:a=>{"Enter"===a.key&&m.trim()&&(b({id:m.trim()}),n(""))}}),(0,h.jsx)("button",{onClick:()=>{m.trim()&&(b({id:m.trim()}),n(""))},className:"bg-blue-600 hover:bg-blue-500 text-white px-2 py-1 rounded",children:"+"})]})]})}function ca(){let a=bU(a=>a.definition.settings),b=bU(a=>a.definition.settings.context),c=bU(a=>a.updateSettings);return(0,h.jsxs)("div",{className:"p-3 space-y-3 text-sm",children:[(0,h.jsx)("h3",{className:"text-xs font-semibold text-gray-400",children:"Machine Settings"}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Namespace"}),(0,h.jsx)("input",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-sm text-gray-200",value:a.namespace,onChange:a=>c({namespace:a.target.value})})]}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Name"}),(0,h.jsx)("input",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-sm text-gray-200",value:a.name??"",onChange:a=>c({name:a.target.value||void 0})})]}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Description"}),(0,h.jsx)("textarea",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-xs text-gray-200 h-12",value:a.description??"",onChange:a=>c({description:a.target.value||void 0})})]}),(0,h.jsxs)("label",{className:"flex items-center gap-2 text-sm text-gray-300",children:[(0,h.jsx)("input",{type:"checkbox",checked:a.asynchronous,onChange:a=>c({asynchronous:a.target.checked}),className:"rounded bg-gray-800 border-gray-600"}),"Asynchronous"]}),(0,h.jsx)("hr",{className:"border-gray-800"}),(0,h.jsx)("h4",{className:"text-xs font-semibold text-gray-500",children:"Context"}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Context Class"}),(0,h.jsx)("input",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-xs text-gray-200",value:b?.class??"",placeholder:"e.g. MyStateMachineContext",onChange:a=>c({context:{...b,class:a.target.value||void 0}})})]}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Base Class"}),(0,h.jsx)("input",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-xs text-gray-200",value:b?.baseClass??"",placeholder:"e.g. Context",onChange:a=>c({context:{...b,baseClass:a.target.value||void 0}})})]}),(0,h.jsx)("hr",{className:"border-gray-800"}),(0,h.jsx)("h4",{className:"text-xs font-semibold text-gray-500",children:"Imports"}),(0,h.jsx)("textarea",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-xs text-gray-200 h-16 font-mono",value:(a.imports??[]).join("\n"),placeholder:"One import per line",onChange:a=>c({imports:a.target.value?a.target.value.split("\n"):[]})}),(0,h.jsx)("hr",{className:"border-gray-800"}),(0,h.jsx)("h4",{className:"text-xs font-semibold text-gray-500",children:"Object References"}),(0,h.jsx)("textarea",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-xs text-gray-200 h-12 font-mono",value:(a.objects??[]).map(a=>`${a.instance}: ${a.class}`).join("\n"),placeholder:"instance: Class (one per line)",onChange:a=>{c({objects:a.target.value.split("\n").filter(a=>a.includes(":")).map(a=>{let[b,c]=a.split(":").map(a=>a.trim());return{instance:b,class:c}})})}}),(0,h.jsx)("hr",{className:"border-gray-800"}),(0,h.jsx)("h4",{className:"text-xs font-semibold text-gray-500",children:"Code Generation"}),(0,h.jsxs)("label",{className:"block",children:[(0,h.jsx)("span",{className:"text-xs text-gray-500",children:"Target Language"}),(0,h.jsxs)("select",{className:"w-full bg-gray-800 border border-gray-700 rounded px-2 py-1 text-xs text-gray-200",value:a.targetLanguage??"python",onChange:a=>c({targetLanguage:a.target.value}),children:[(0,h.jsx)("option",{value:"python",children:"Python"}),(0,h.jsx)("option",{value:"typescript",children:"TypeScript"}),(0,h.jsx)("option",{value:"csharp",children:"C#"})]})]})]})}function cb(){let a=bU(a=>a.errors),b=bU(a=>a.validate),c=bU(a=>a.select);return(0,h.jsxs)("div",{className:"p-3",children:[(0,h.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,h.jsxs)("h3",{className:"text-xs font-semibold text-gray-400",children:["Validation ",a.length>0&&(0,h.jsxs)("span",{className:"text-red-500",children:["(",a.length,")"]})]}),(0,h.jsx)("button",{onClick:()=>b(),className:"text-xs bg-gray-700 hover:bg-gray-600 text-gray-300 px-2 py-0.5 rounded",children:"Re-check"})]}),0===a.length?(0,h.jsxs)("div",{className:"flex items-center gap-2 text-green-500 text-xs",children:[(0,h.jsx)("span",{children:"✓"}),(0,h.jsx)("span",{children:"Definition is valid"})]}):(0,h.jsx)("div",{className:"space-y-0.5",children:a.map((a,b)=>(0,h.jsxs)("div",{className:`flex items-start gap-1.5 text-[13px] py-2.5 border-b border-gray-800/50 md:text-xs md:py-1 ${a.element?"cursor-pointer hover:bg-gray-800/30":""}`,onClick:()=>{a.element&&c("state",a.element)},title:a.element?`Click to select "${a.element}"`:void 0,children:[(0,h.jsx)("span",{className:`font-mono text-[10px] mt-0.5 ${"error"===a.severity?"text-red-600":"text-yellow-600"}`,children:a.ruleId}),(0,h.jsx)("span",{className:`flex-1 ${"error"===a.severity?"text-red-400":"text-yellow-400"}`,children:a.message}),a.element&&(0,h.jsxs)("span",{className:"text-gray-600 text-[10px]",children:["→ ",a.element]})]},b))})]})}var cc=a.i(41455);function cd(){let a=(0,cc.useRequestedDoc)(),[b,c]=(0,i.useState)(!1),[d,e]=(0,i.useState)(""),[f,g]=(0,i.useState)(null),[j,k]=(0,i.useState)([]),[l,m]=(0,i.useState)(null),[n,o]=(0,i.useState)(null);(0,i.useEffect)(()=>{if(!b)return;let a=!0;return o(null),fetch("/api/docs",{cache:"no-store"}).then(a=>a.ok?a.json():Promise.reject(Error(`HTTP ${a.status}`))).then(b=>{a&&(g(b.docs??[]),k(b.roots??[]),m(b.current??null))}).catch(b=>{a&&(g([]),o(b.message))}),()=>{a=!1}},[b]);let p=a=>{c(!1),e(""),(0,cc.navigateToDoc)(a)},q=new Set((f??[]).map(a=>a.path)),r=b?(function(){try{let a=[];for(let b=0;b<window.localStorage.length;b++){let c=window.localStorage.key(b);c?.startsWith(b3)&&a.push(c.slice(b3.length))}return a.sort()}catch{return[]}})().filter(b=>b.startsWith("/")&&b!==a&&!q.has(b)):[],s=a??l,t=(f??[]).filter(a=>a.path!==s),u=d.trim().toLowerCase(),v=u?t.filter(a=>a.path.toLowerCase().includes(u)):t,w="block w-full truncate rounded px-1.5 py-1 text-left text-xs text-gray-300 hover:bg-gray-800";return(0,h.jsxs)("span",{className:"relative inline-flex",children:[(0,h.jsx)("button",{onClick:()=>c(a=>!a),className:"toolbar-btn",title:a?`Document: ${a}`:"Switch document",children:"⇄"}),b&&(0,h.jsxs)("div",{className:"absolute left-0 top-full z-50 mt-1 w-80 rounded border border-gray-700 bg-gray-900 p-2 shadow-lg",children:[(0,h.jsx)("div",{className:"mb-1 text-[10px] uppercase tracking-wide text-gray-500",children:"switch document"}),(0,h.jsxs)("form",{onSubmit:a=>{a.preventDefault();let b=d.trim();if(b){if(1===v.length)return p(v[0].path);if(b.startsWith("/"))return p(b)}},className:"mb-1 flex gap-1",children:[(0,h.jsx)("input",{value:d,onChange:a=>e(a.target.value),placeholder:null===f?"loading…":"filter, or /absolute/path.json",className:"min-w-0 flex-1 rounded border border-gray-700 bg-gray-950 px-1.5 py-1 text-xs text-gray-200 placeholder:text-gray-600"}),(0,h.jsx)("button",{type:"submit",className:"toolbar-btn",title:"Open",children:"→"})]}),(0,h.jsxs)("div",{className:"max-h-64 overflow-y-auto",children:[a&&(0,h.jsx)("button",{onClick:()=>p(null),className:w,title:"Return to the default project file",children:"⌂ default document"}),v.map(a=>(0,h.jsxs)("button",{onClick:()=>p(a.path),className:w,title:a.path,children:[a.name,(0,h.jsx)("span",{className:"ml-1 text-[10px] text-gray-600",children:a.dir})]},a.path)),r.length>0&&(0,h.jsxs)("div",{className:"mt-1 border-t border-gray-800 pt-1",children:[(0,h.jsx)("div",{className:"px-1.5 pb-0.5 text-[10px] uppercase tracking-wide text-gray-600",children:"recent"}),r.map(a=>(0,h.jsxs)("button",{onClick:()=>p(a),className:w,title:a,children:[a.split("/").pop(),(0,h.jsx)("span",{className:"ml-1 text-[10px] text-gray-600",children:a})]},a))]}),null!==f&&0===v.length&&0===r.length&&(0,h.jsx)("div",{className:"px-1.5 py-1 text-[11px] text-gray-500",children:u?"nothing matches":"no other documents here"})]}),j.length>0&&(0,h.jsxs)("div",{className:"mt-1 truncate border-t border-gray-800 pt-1 text-[10px] text-gray-600",children:["paths are as the server sees them: ",j.join(", ")]}),n&&(0,h.jsxs)("div",{className:"mt-1 text-[10px] text-gray-600",children:["this server does not list documents (",n,") — type a path"]})]})]})}function ce(){let a=bU(a=>a.presence),[b,c]=(0,i.useState)(!1);if(0===a.length)return null;let d=new Map;for(let b of a)d.set(b.role,(d.get(b.role)??0)+1);let e=[...d].map(([a,b])=>b>1?`${a} \xd7${b}`:a).join(" · ");return(0,h.jsxs)("span",{className:"relative inline-flex",children:[(0,h.jsxs)("button",{onClick:()=>c(a=>!a),className:"toolbar-btn inline-flex items-center gap-1.5",title:`Connected: ${e}`,"aria-expanded":b,"aria-label":`${a.length} connected: ${e}`,children:[(0,h.jsx)("span",{className:"flex -space-x-1",children:a.slice(0,4).map(a=>(0,h.jsx)("span",{className:"inline-block h-2 w-2 rounded-full ring-1 ring-gray-900",style:{backgroundColor:a.color??s(a.clientId)}},a.clientId))}),(0,h.jsx)("span",{className:"tabular-nums",children:a.length})]}),b&&(0,h.jsxs)("div",{className:"absolute left-0 top-full z-50 mt-1 max-h-64 w-56 overflow-y-auto rounded border border-gray-700 bg-gray-900 p-2 shadow-lg",children:[(0,h.jsxs)("div",{className:"mb-1 text-[10px] uppercase tracking-wide text-gray-500",children:["connected · ",e]}),a.map(a=>(0,h.jsxs)("div",{className:"flex items-center gap-1.5 rounded px-1 py-1 text-xs text-gray-300",title:a.clientId,children:[(0,h.jsx)("span",{className:"inline-block h-2 w-2 shrink-0 rounded-full",style:{backgroundColor:a.color??s(a.clientId)}}),(0,h.jsx)("span",{className:"shrink-0",children:a.role}),a.name&&(0,h.jsx)("span",{className:"truncate text-gray-500",children:a.name})]},a.clientId))]})]})}function cf(){let a=bU(a=>a.definition),b=bU(a=>a.fileName),c=bU(a=>a.docPath),d=bU(a=>a.dirty),e=bU(a=>a.loadFromJson),f=bU(a=>a.exportJson),g=bU(a=>a.addState),j=bU(a=>a.validate),k=bU(a=>a.showCodePreview),l=bU(a=>a.setShowCodePreview),m=bU(a=>a.setGeneratedCode),n=bU(a=>a.drawMode),o=bU(a=>a.setDrawMode),p=bU(a=>a.arrangeLayout),q=bU(a=>a.undo),r=bU(a=>a.redo),s=bU(a=>a.undoStack),t=bU(a=>a.redoStack),u=bU(a=>a.remoteStatus),v=bU(a=>a.remoteMessage),w=bU(a=>a.setRemoteStatus),x=bU(a=>a.setRemoteMtime),y=bU(a=>a.applyRemote),z=(0,cc.useRequestedDoc)(),A=(0,i.useRef)(null),[B,C]=(0,i.useState)(!1),[D,E]=(0,i.useState)(""),[F,G]=(0,i.useState)(!1),[H,I]=(0,i.useState)("png"),[J,K]=(0,i.useState)(!1),[L,M]=(0,i.useState)(null),[N,O]=(0,i.useState)(null),P=async()=>{let a=f();G(!0);try{let b=await fetch(`/api/file${(0,cc.docQuery)(z)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:a})});if(b.ok){let a=await b.json();x(a.mtime),bU.setState({dirty:!1}),w("synced",null)}else{let a=await b.json().catch(()=>({error:"unknown"}));w("error",`Save failed: ${a.error??b.statusText}`)}}catch(a){w("error",`Save failed: ${a}`)}finally{G(!1)}},Q=async()=>{K(!0),M(null);try{let d=await b2(H,{definition:a,docPath:c,fileName:b});O(d)}catch(a){M(a instanceof Error?a.message:String(a))}finally{K(!1)}},R=async()=>{try{let a=await fetch(`/api/file${(0,cc.docQuery)(z)}`,{cache:"no-store"});if(!a.ok)return void w("error","Reload failed");let b=await a.json();b.exists&&b.content?y(b.content,b.mtime,b.path.split("/").pop()):w("idle",`No file at ${b.path}`)}catch(a){w("error",`Reload failed: ${a}`)}},S=()=>{D.trim()&&(g(null,{name:D.trim(),kind:"normal"}),E(""),C(!1))},[T,U]=(0,i.useState)("python"),V=async()=>{try{let a=await fetch("/api/rispec",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})});if(a.ok){let b=await a.json();m(b.rispec)}else{let b=await a.json().catch(()=>({error:"Unknown"}));m(`# RISE rispec generation failed
|
|
7
7
|
${b.error}`)}}catch(a){m(`# RISE rispec generation failed
|
|
8
8
|
${a}`)}l(!0)},W=async()=>{let a=f();try{let b=await fetch("/api/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({definition:a,language:T})});if(b.ok){let a=await b.json();m(a.code)}else{let c=await b.json().catch(()=>({error:"Unknown error"}));m(`// Code generation failed: ${c.error}
|
|
9
9
|
// Showing definition JSON as fallback:
|
|
10
10
|
${a}`)}}catch{m(`// Backend unavailable — showing definition JSON
|
|
11
|
-
${a}`)}l(!0)};return(0,h.jsxs)("div",{className:"flex flex-col gap-1.5 px-2 py-1.5 bg-gray-900 border-b border-gray-800 md:flex-row md:flex-wrap md:items-center md:px-3",children:[(0,h.jsxs)("div",{className:"toolbar-ident",children:[(0,h.jsx)("input",{ref:A,type:"file",accept:".json,.smdf.json",onChange:a=>{let b=a.target.files?.[0];if(!b)return;let c=new FileReader;c.onload=a=>{e(a.target?.result,b.name)},c.readAsText(b),a.target.value=""},className:"hidden"}),(0,h.jsxs)("span",{className:"text-xs text-gray-400 mr-1 truncate max-w-[50vw] md:max-w-none",children:[b??"untitled.smdf.json",d&&(0,h.jsx)("span",{className:"text-yellow-500 ml-0.5",children:"●"})]}),(0,h.jsx)(bQ,{}),"synced"===u&&(0,h.jsx)("span",{className:"text-[10px] text-emerald-500",title:"In sync with disk",children:"⌁ synced"}),"remote-changed"===u&&(0,h.jsx)("span",{className:"text-[10px] text-amber-400",title:v??"",children:"↻ remote changed"}),"error"===u&&(0,h.jsx)("span",{className:"text-[10px] text-red-400",title:v??"",children:"⚠ disk error"}),"idle"===u&&(0,h.jsx)("span",{className:"text-[10px] text-gray-600",title:v??"No file bound",children:"○ no disk"}),(0,h.jsx)(bR,{}),(0,h.jsx)("div",{className:"flex-1"})]}),(0,h.jsxs)("div",{className:"toolbar-strip",children:[(0,h.jsx)("button",{onClick:q,disabled:0===s.length,className:"toolbar-btn disabled:opacity-30",title:"Undo (Ctrl+Z)",children:"↩"}),(0,h.jsx)("button",{onClick:r,disabled:0===t.length,className:"toolbar-btn disabled:opacity-30",title:"Redo (Ctrl+Y)",children:"↪"}),(0,h.jsx)("div",{className:"w-px h-4 bg-gray-700"}),(0,h.jsx)("button",{onClick:p,className:"toolbar-btn",title:"Arrange states into layers (auto-layout)",children:"⤢ Arrange"}),(0,h.jsx)("div",{className:"w-px h-4 bg-gray-700"}),(0,h.jsx)("button",{onClick:()=>o("select"===n?"transition":"select"),className:`toolbar-btn ${"transition"===n?"!bg-amber-700 !text-white":""}`,title:"transition"===n?"Exit draw mode (Esc)":"Draw transition mode",children:"transition"===n?"✏️ Drawing":"↗ Draw"}),(0,h.jsx)("div",{className:"w-px h-4 bg-gray-700"}),(0,h.jsx)("button",{onClick:()=>A.current?.click(),className:"toolbar-btn",title:"Open local .smdf.json (browser)",children:"📂"}),(0,h.jsx)("button",{onClick:P,disabled:F,className:"toolbar-btn disabled:opacity-40",title:"Save to disk (STATELOOM_PROJECT_FILE)",children:"💾 Disk"}),(0,h.jsx)("button",{onClick:R,className:"toolbar-btn",title:"Reload from disk",children:"🔄"}),(0,h.jsx)("button",{onClick:()=>{let a=new Blob([f()],{type:"application/json"}),c=URL.createObjectURL(a),d=document.createElement("a");d.href=c,d.download=b??"statemachine.smdf.json",d.click(),URL.revokeObjectURL(c)},className:"toolbar-btn",title:"Download as file",children:"📥"}),(0,h.jsx)("select",{value:H,onChange:a=>{I(a.target.value),O(null),M(null)},className:"bg-gray-800 border border-gray-700 rounded text-xs text-gray-300 px-1 py-0.5",title:"Export format",children:bB.map(a=>(0,h.jsx)("option",{value:a,children:bC[a]},a))}),(0,h.jsx)("button",{onClick:Q,disabled:J,className:`toolbar-btn disabled:opacity-40 ${L?"!text-red-400":""}`,title:L??`Export the board as ${bC[H]}`,children:J?"…":"🖼 Export"}),N&&!L&&(0,h.jsxs)("span",{className:"text-[10px] text-emerald-500 truncate max-w-[40vw] md:max-w-[16rem]",title:N,children:["⤓ ",N]}),(0,h.jsx)("div",{className:"w-px h-4 bg-gray-700"}),B?(0,h.jsxs)("div",{className:"flex items-center gap-1",children:[(0,h.jsx)("input",{autoFocus:!0,className:"bg-gray-800 border border-gray-700 rounded px-2 py-0.5 text-xs text-gray-200 w-32 md:w-24",placeholder:"State name...",value:D,onChange:a=>E(a.target.value),onKeyDown:a=>{"Enter"===a.key&&S(),"Escape"===a.key&&C(!1)}}),(0,h.jsx)("button",{onClick:S,className:"toolbar-btn-sm",children:"✓"}),(0,h.jsx)("button",{onClick:()=>C(!1),className:"toolbar-btn-sm",children:"✕"})]}):(0,h.jsx)("button",{onClick:()=>C(!0),className:"toolbar-btn",children:"+State"}),(0,h.jsx)("div",{className:"w-px h-4 bg-gray-700"}),(0,h.jsx)("button",{onClick:()=>j(),className:"toolbar-btn",children:"✓ Validate"}),(0,h.jsxs)("select",{value:T,onChange:a=>U(a.target.value),className:"bg-gray-800 border border-gray-700 rounded text-xs text-gray-300 px-1 py-0.5",children:[(0,h.jsx)("option",{value:"python",children:"Python"}),(0,h.jsx)("option",{value:"typescript",children:"TypeScript"})]}),(0,h.jsx)("button",{onClick:W,className:"toolbar-btn",children:"⚡ Generate"}),(0,h.jsx)("button",{onClick:V,className:"toolbar-btn",title:"Generate RISE rispec markdown",children:"📜 RISE"}),(0,h.jsxs)("button",{onClick:()=>l(!k),className:`toolbar-btn ${k?"text-blue-400":""}`,children:["</>"," Code"]})]})]})}function bT(){let a=bv(a=>a.generatedCode),b=bv(a=>a.showCodePreview),c=bv(a=>a.setShowCodePreview);return b?(0,h.jsx)("div",{className:"absolute inset-0 z-50 flex items-center justify-center bg-black/60 p-2 md:p-0",children:(0,h.jsxs)("div",{className:"bg-gray-900 border border-gray-700 rounded-lg shadow-xl w-full max-h-[85dvh] md:w-[80%] md:max-w-3xl md:max-h-[80dvh] flex flex-col",children:[(0,h.jsxs)("div",{className:"flex items-center justify-between px-4 py-2 border-b border-gray-800",children:[(0,h.jsx)("h3",{className:"text-sm font-semibold text-gray-300",children:"Generated Definition (JSON)"}),(0,h.jsx)("button",{onClick:()=>c(!1),className:"text-gray-500 hover:text-gray-300 text-lg min-h-11 min-w-11 md:min-h-0 md:min-w-0","aria-label":"Close preview",children:"✕"})]}),(0,h.jsx)("pre",{className:"flex-1 overflow-auto overscroll-contain p-4 text-[11px] leading-relaxed text-green-400 font-mono md:text-sm",children:a??"No code generated yet"}),(0,h.jsx)("div",{className:"flex justify-end px-4 py-2 border-t border-gray-800",children:(0,h.jsx)("button",{onClick:()=>{a&&navigator.clipboard.writeText(a)},className:"text-xs bg-gray-700 hover:bg-gray-600 text-gray-300 px-4 py-3 rounded md:px-3 md:py-1",children:"Copy to Clipboard"})})]})}):null}function bU(){let a=bv(a=>a.applyRemote),b=bv(a=>a.setRemoteStatus),c=bv(a=>a.setRemoteMtime),d=(0,bP.useRequestedDoc)();return(0,i.useEffect)(()=>{let e=!1,f=(0,bP.docQuery)(d);async function g(){try{let a=await fetch(`/api/file${f}`,{cache:"no-store"});if(!a.ok)return null;return await a.json()}catch{return null}}(async()=>{let c=await g();e||(c?.path&&bv.getState().setDocPath(c.path),c?.exists&&c.content?a(c.content,c.mtime,c.path.split("/").pop()):b("idle",c?`No file at ${c.path}`:null))})();let h=new EventSource(`/api/watch${f}`);return h.addEventListener("hello",a=>{try{let b=JSON.parse(a.data);"number"==typeof b?.mtime&&c(b.mtime)}catch{}}),h.addEventListener("change",async d=>{let e=0;try{e=JSON.parse(d.data)?.mtime??0}catch{}if(e<=(bv.getState().remoteMtime??0))return;let f=await g();f?.exists&&f.content&&(bv.getState().dirty?(b("remote-changed",`Disk changed at ${new Date(f.mtime).toLocaleTimeString()} — local has unsaved edits`),c(f.mtime)):a(f.content,f.mtime,f.path.split("/").pop()))}),h.addEventListener("error",()=>{b("error","Watch stream disconnected")}),()=>{e=!0,h.close()}},[a,b,c,d]),null}function bV({url:a}){let b=(0,bP.useRequestedDoc)();return(0,i.useEffect)(()=>{if(!a)return;let c=!1,d=null,e=null,f=null,g=null;return(async()=>{let h="";try{let a=await fetch(`/api/file${(0,bP.docQuery)(b)}`,{cache:"no-store"});a.ok&&(h=(await a.json())?.path??"")}catch{}c||(h&&bv.getState().setDocPath(h),(d=function(a){let{onFull:b,onPatch:c,onPresence:d,...e}=a,f=function(a){let{url:b,role:c,docId:d,name:e,token:f}=a,g=!1!==a.autoResync,h=bj(b,{auth:{token:f},autoConnect:!1}),i="disconnected",j=0,k="",l=[],m={patch:new Set,full:new Set,ack:new Set,presence:new Set,error:new Set,status:new Set};function n(a,b){for(let c of[...m[a]])c(b)}function o(a){i!==a&&(i=a,n("status",a))}function p(a){h.emit("def:request",{docId:d,sinceSeq:a})}function q(a){"number"==typeof a&&(g&&a>j+1&&p(j),j=Math.max(j,a))}function r(){n("presence",[...l])}function s(){return h.connected?Promise.resolve():new Promise((a,b)=>{o("connecting");let c=()=>{e(),a()},d=a=>{e(),b(a)},e=()=>{h.off("connect",c),h.off("connect_error",d)};h.once("connect",c),h.once("connect_error",d),h.connect()})}async function t(){return await s(),new Promise((a,b)=>{h.emit("bridge:join",{docId:d,role:c,name:e},c=>{if(!c||c.error){let a=c?.error??{code:"join_failed",message:"no join ack"};n("error",a),b(Error(`${a.code}: ${a.message}`));return}k=c.selfId,l=c.presence?[...c.presence]:[],j=c.snapshot?.seq??0,r(),a({selfId:k,snapshot:c.snapshot,presence:[...l]})})})}return h.on("connect",()=>o("connected")),h.on("disconnect",()=>o("disconnected")),h.on("connect_error",a=>{o("error"),n("error",{code:"connect_error",message:a?.message??String(a)})}),h.on("def:patch",a=>{q(a?.seq),a?.origin&&a.origin===k||n("patch",a)}),h.on("def:full",a=>{q(a?.seq),a?.origin&&a.origin===k||n("full",a)}),h.on("def:ack",a=>{n("ack",a)}),h.on("bridge:error",a=>{n("error",{code:a?.code??"error",message:a?.message??""})}),h.on("presence:list",a=>{l=Array.isArray(a)?[...a]:[],r()}),h.on("presence:join",a=>{let b=bk(a);b&&(l=[...l.filter(a=>a.clientId!==b),a],r())}),h.on("presence:leave",a=>{let b=bk(a);b&&(l=l.filter(a=>a.clientId!==b),r())}),h.on("presence:update",a=>{let b=bk(a);if(!b)return;let c=l.findIndex(a=>a.clientId===b);if(-1===c)l=[...l,a];else{let b={...l[c],...a};l=l.map((a,d)=>d===c?b:a)}r()}),{connect:s,join:t,emitPatch:function(a,b,c){h.emit("def:patch",{docId:d,ops:a,origin:k,baseSeq:c,mtime:b})},emitFull:function(a,b){h.emit("def:full",{docId:d,def:a,origin:k,mtime:b})},request:p,updatePresence:function(a){h.emit("presence:update",{docId:d,clientId:k,cursor:a.cursor,selection:a.selection})},on:function(a,b){let c=m[a];return c.add(b),()=>c.delete(b)},disconnect:function(){h.connected&&k&&h.emit("bridge:leave",{docId:d,clientId:k}),h.disconnect(),o("disconnected")},get status(){return i},get lastSeq(){return j},get presence(){return[...l]}}}(e),g=null,h=0,i=[],j=[],k={status:f.status,def:null,seq:0,presence:[],activeStates:[]},l=new Set;function m(){for(let a of(k={status:f.status,def:g,seq:h,presence:i,activeStates:j},[...l]))a()}return f.on("status",()=>m()),f.on("full",a=>{g=a.def,"number"==typeof a.seq&&(h=a.seq),b?.(a),m()}),f.on("patch",a=>{"number"==typeof a.seq&&(h=a.seq);let b=a.ops??[],d=b.filter(bl),e=b.filter(a=>!bl(a));e.length>0&&g&&(g=n(g,e));for(let a of d)"runtime.enter"===a.op?j.includes(a.state)||(j=[...j,a.state]):"runtime.exit"===a.op&&j.includes(a.state)&&(j=j.filter(b=>b!==a.state));c?.(a),m()}),f.on("presence",a=>{i=a,d?.(a),m()}),{getSnapshot:function(){return k},subscribe:function(a){return l.add(a),()=>{l.delete(a)}},emitPatch:function(a){f.emitPatch(a)},emitFull:function(a){f.emitFull(a)},enter:function(a,b,c){let d={op:"runtime.enter",state:a,...void 0!==b?{from:b}:{},...void 0!==c?{eventId:c}:{}};f.emitPatch([d])},exit:function(a){f.emitPatch([{op:"runtime.exit",state:a}])},connect:function(){f.join().then(a=>{g=a.snapshot.def,h=a.snapshot.seq,i=a.presence,null!==g&&b?.({docId:a.snapshot.docId,def:g,seq:h,mtime:a.snapshot.mtime,origin:"join"}),m()}).catch(()=>{m()})},disconnect:function(){f.disconnect()}}}({url:a,role:"web",docId:h,name:"web-designer",onFull:a=>{bv.getState().applyRemote(JSON.stringify({stateMachine:a.def}),a.mtime??Date.now(),h&&h.split("/").pop()||void 0),g=a.def},onPatch:a=>{bv.getState().applyRemoteOps(a.ops,a.mtime??Date.now(),a.seq),g=bv.getState().definition},onPresence:a=>{bv.getState().setPresence(a)}})).connect(),e=bv.subscribe((a,b)=>{a.definition===b.definition||a._applyingRemote||(f&&clearTimeout(f),f=setTimeout(()=>{var a,b;let c,e;if(!d||"connected"!==d.getSnapshot().status)return;let f=bv.getState().definition;if(null===g){d.emitFull(f),g=f;return}let h=(a=g,b=f,c=a??{settings:{namespace:"",asynchronous:!1},events:[],state:{name:b.state.name,states:[]}},function(a,b,c){let d={},e=!1,f=new Set([...Object.keys(a.settings),...Object.keys(b.settings)]),g=a.settings,h=b.settings;for(let a of f)q(g[a],h[a])||void 0===h[a]||(d[a]=h[a],e=!0);e&&c.push({op:"settings.update",patch:d})}(c,b,e=[]),function(a,b,c){let d=a.events,e=b.events,f=Math.min(d.length,e.length);for(let a=0;a<f;a++)!function(a,b,c,d){let e={},f=!1;for(let a of["name","file","feeder","description","timers"])q(b[a],c[a])||void 0===c[a]||(e[a]=c[a],f=!0);f&&d.push({op:"eventSource.update",index:a,patch:e});let g=b.events??[],h=c.events??[],i=new Set(h.map(a=>a.id));for(let a of g)i.has(a.id)||d.push({op:"event.remove",id:a.id});let j=g.filter(a=>i.has(a.id)),k=0;for(;k<h.length;){let b=h[k];k<j.length&&j[k].id===b.id?(function(a,b,c){let d={},e=!1;for(let c of["name","description","preAction","postAction"])q(a[c],b[c])||void 0===b[c]||(d[c]=b[c],e=!0);e&&c.push({op:"event.update",id:b.id,patch:d})}(j[k],b,d),function(a,b,c,d){let e=Math.min(b.length,c.length);for(let f=0;f<e;f++)if(!q(b[f],c[f])){let e={};b[f].name!==c[f].name&&(e.name=c[f].name),b[f].type!==c[f].type&&(e.type=c[f].type),d.push({op:"parameter.update",eventId:a,index:f,patch:e})}for(let b=e;b<c.length;b++)d.push({op:"parameter.add",eventId:a,parameter:c[b],index:b});for(let e=b.length-1;e>=c.length;e--)d.push({op:"parameter.remove",eventId:a,index:e})}(b.id,j[k].parameters??[],b.parameters??[],d)):(d.push({op:"event.add",sourceIndex:a,event:b,index:k}),j.splice(k,0,b)),k++}}(a,d[a],e[a],c);for(let a=d.length;a<e.length;a++)c.push({op:"eventSource.add",source:e[a]});for(let a=d.length-1;a>=e.length;a--)c.push({op:"eventSource.remove",index:a})}(c,b,e),function(a,b,c){let d=o(a.state),e=o(b.state),f=new Map(d.map(a=>[a.name,a])),g=new Map(e.map(a=>[a.name,a])),h=p(a.state),i=p(b.state),j=[];for(let a of e){if(f.has(a.name))continue;let b=i.get(a.name)??null,{states:d,transitions:e,...g}=a;c.push({op:"state.add",parent:b,state:{...g}}),e&&e.length>0&&j.push({state:a.name,transitions:e})}for(let a of e){if(!f.has(a.name))continue;let b=h.get(a.name)??null,d=i.get(a.name)??null;b!==d&&null!==d&&c.push({op:"state.nest",child:a.name,newParent:d})}for(let a of e){let b=f.get(a.name);if(!b)continue;let d={},e=!1;q(b.kind,a.kind)||void 0===a.kind||(d.kind=a.kind,e=!0),q(b.description,a.description)||void 0===a.description||(d.description=a.description,e=!0),e&&c.push({op:"state.update",name:a.name,patch:d}),r(a.name,"onEntry",b.onEntry?.actions??[],a.onEntry?.actions??[],c),r(a.name,"onExit",b.onExit?.actions??[],a.onExit?.actions??[],c)}for(let a of j)a.transitions.forEach((b,d)=>{c.push({op:"transition.add",state:a.state,transition:b,index:d})});for(let a of e){let b=f.get(a.name);b&&function(a,b,c,d){let e=Math.min(b.length,c.length);for(let f=0;f<e;f++){if(q(b[f],c[f]))continue;let e={};for(let a of["event","nextState","condition","description","actions"])q(b[f][a],c[f][a])||void 0===c[f][a]||(e[a]=c[f][a]);Object.keys(e).length>0&&d.push({op:"transition.update",state:a,index:f,patch:e})}for(let b=e;b<c.length;b++)d.push({op:"transition.add",state:a,transition:c[b],index:b});for(let e=b.length-1;e>=c.length;e--)d.push({op:"transition.remove",state:a,index:e})}(a.name,b.transitions??[],a.transitions??[],c)}for(let a=d.length-1;a>=0;a--){let b=d[a];if(g.has(b.name))continue;let e=b.transitions??[];for(let a=e.length-1;a>=0;a--)c.push({op:"transition.remove",state:b.name,index:a});c.push({op:"state.remove",name:b.name})}}(c,b,e),e);0!==h.length&&(d.emitPatch(h),g=f)},60))}))})(),()=>{c=!0,f&&clearTimeout(f),e&&e(),d&&d.disconnect()}},[a,b]),null}function bW(){let a=process.env.NEXT_PUBLIC_STATELOOM_BRIDGE_URL??process.env.NEXT_PUBLIC_SMCRAFT_BRIDGE_URL;return"string"==typeof a&&a.length>0?a:void 0}let bX=null;function bY(){let a=bW(),[b,c]=(0,i.useState)(a);return((0,i.useEffect)(()=>{let a=!0;return(bX||(bX=(async()=>{let a=bW()??null;try{let b=await fetch("/api/config",{cache:"no-store"});if(b.ok){let c=await b.json();return{bridgeUrl:c.bridgeUrl||a,projectFile:c.projectFile??null}}}catch{}return{bridgeUrl:a,projectFile:null}})())).then(b=>{a&&b.bridgeUrl&&c(b.bridgeUrl)}),()=>{a=!1}},[]),"string"==typeof b&&b.length>0)?(0,h.jsx)(bV,{url:b}):(0,h.jsx)(bU,{})}function bZ(a){return Number.isFinite(a)?Math.min(1.75,Math.max(.75,a)):1}function b$(a){"u">typeof document&&(document.documentElement.style.fontSize=`${16*bZ(a)}px`)}let b_=1,b0=!1,b1=new Set;function b2(){return b0||(b0=!0,b_=1),b_}function b3(){return 1}function b4(a){return b1.add(a),()=>{b1.delete(a)}}function b5(a,b){let c=bZ(a);if(b$(c),b,b0=!0,c!==b_)for(let a of(b_=c,b1))a()}function b6(a,b){return Math.max(1,Math.hypot(b.clientX-a.clientX,b.clientY-a.clientY))}function b7(a,b){for(let c=0;c<a.length;c++)if(a[c].identifier===b)return a[c];return null}function b8(){let a=(0,i.useSyncExternalStore)(b4,b2,b3),b=(0,i.useRef)(null),c=(0,i.useRef)(null),d=(0,i.useRef)(null);(0,i.useEffect)(()=>{b$(a)},[a]);let e=(0,i.useCallback)(a=>{c.current=a,null===d.current&&(d.current=requestAnimationFrame(()=>{d.current=null,null!==c.current&&b5(c.current,!1)}))},[]),f=(0,i.useCallback)(()=>{c.current=null,b5(1,!0)},[]);return((0,i.useEffect)(()=>{let a=()=>{let a=b.current;if(b.current=null,!a?.engaged)return;null!==d.current&&(cancelAnimationFrame(d.current),d.current=null);let e=c.current??b2();c.current=null,b5(bZ(e),!0)},f=c=>{if(2!==c.touches.length){b.current&&a();return}let[d,e]=[c.touches[0],c.touches[1]];by(d.target)||by(e.target)||(b.current={a:d.identifier,b:e.identifier,startScale:b2(),startDist:b6(d,e),engaged:!1})},g=a=>{let c=b.current;if(!c)return;let d=b7(a.touches,c.a),f=b7(a.touches,c.b);if(!d||!f)return;a.preventDefault();let g=b6(d,f);if(!c.engaged){if(12>Math.abs(g-c.startDist))return;c.engaged=!0,c.startDist=g;return}e(bZ(c.startScale*(g/c.startDist)))},h=c=>{let d=b.current;d&&(b7(c.touches,d.a)&&b7(c.touches,d.b)||a())};return document.addEventListener("touchstart",f,{passive:!0,capture:!0}),document.addEventListener("touchmove",g,{passive:!1,capture:!0}),document.addEventListener("touchend",h,{passive:!0,capture:!0}),document.addEventListener("touchcancel",h,{passive:!0,capture:!0}),()=>{document.removeEventListener("touchstart",f,{capture:!0}),document.removeEventListener("touchmove",g,{capture:!0}),document.removeEventListener("touchend",h,{capture:!0}),document.removeEventListener("touchcancel",h,{capture:!0}),null!==d.current&&cancelAnimationFrame(d.current)}},[e]),1===a)?null:(0,h.jsxs)("div",{className:"ui-scale-pill",role:"status","aria-live":"polite",children:[(0,h.jsxs)("span",{children:["UI ",Math.round(100*a),"%"]}),(0,h.jsx)("button",{type:"button",onClick:f,"aria-label":"Reset interface size to 100 percent",children:"Reset"})]})}function b9(){let[a,b]=(0,i.useState)("properties"),[c,d]=(0,i.useState)(!1),e=bv(a=>a.errors),f=bv(a=>a.contextMenu),g=bv(a=>a.hideContextMenu),j=bv(a=>a.addState),k=bv(a=>a.removeState),l=bv(a=>a.setDrawMode),m=bv(a=>a.setDrawSource),n=[{id:"properties",label:"Properties",icon:"🎛"},{id:"events",label:"Events",icon:"⚡"},{id:"settings",label:"Settings",icon:"⚙"},{id:"validation",label:"Errors",icon:"⚠",badge:e.length||void 0}],o=n.find(b=>b.id===a)?.label??"";return(0,h.jsxs)("div",{className:"app-shell dock-offset flex flex-col overflow-hidden",onClick:()=>f.visible&&g(),children:[(0,h.jsx)(bY,{}),(0,h.jsx)(b8,{}),(0,h.jsx)(bS,{}),(0,h.jsxs)("div",{className:"flex flex-1 min-h-0 overflow-hidden relative",children:[(0,h.jsx)("div",{className:"flex-1 overflow-hidden",children:(0,h.jsx)(bI,{})}),c&&(0,h.jsx)("div",{className:"fixed inset-0 z-20 bg-black/50 md:hidden",onClick:()=>d(!1),"aria-hidden":"true"}),(0,h.jsxs)("aside",{className:`safe-x fixed inset-x-0 bottom-0 z-30 h-[70dvh] flex flex-col overflow-hidden rounded-t-2xl border-t border-gray-800 bg-gray-900 shadow-2xl transition-transform duration-200 ease-out ${c?"translate-y-0":"translate-y-full pointer-events-none"} md:static md:z-auto md:h-auto md:w-80 md:translate-y-0 md:pointer-events-auto md:rounded-none md:border-t-0 md:border-l md:shadow-none md:transition-none`,children:[(0,h.jsxs)("div",{className:"md:hidden",children:[(0,h.jsx)("div",{className:"flex justify-center pt-2 pb-1",children:(0,h.jsx)("span",{className:"h-1 w-10 rounded-full bg-gray-700"})}),(0,h.jsxs)("div",{className:"flex items-center justify-between border-b border-gray-800 px-4 pb-2",children:[(0,h.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:o}),(0,h.jsx)("button",{onClick:()=>d(!1),className:"-mr-2 px-3 py-2 text-lg text-gray-400","aria-label":"Close panel",children:"✕"})]})]}),(0,h.jsx)("div",{className:"hidden border-b border-gray-800 md:flex",children:n.map(c=>(0,h.jsxs)("button",{onClick:()=>b(c.id),className:`flex-1 text-xs py-2 px-1 text-center transition-colors relative ${a===c.id?"text-blue-400 border-b-2 border-blue-400 bg-gray-800/50":"text-gray-500 hover:text-gray-300"}`,children:[c.label,void 0!==c.badge&&c.badge>0&&(0,h.jsx)("span",{className:"absolute top-1 right-1 bg-red-600 text-white text-[9px] rounded-full px-1 min-w-[14px]",children:c.badge})]},c.id))}),(0,h.jsxs)("div",{className:"touch-targets dock-offset flex-1 overflow-y-auto overscroll-contain",children:["properties"===a&&(0,h.jsx)(bK,{}),"events"===a&&(0,h.jsx)(bM,{}),"settings"===a&&(0,h.jsx)(bN,{}),"validation"===a&&(0,h.jsx)(bO,{})]})]}),(0,h.jsx)(bT,{})]}),(0,h.jsx)("nav",{className:"dock-safe safe-x fixed inset-x-0 bottom-0 z-40 flex border-t border-gray-800 bg-gray-900/95 backdrop-blur-md md:hidden",children:n.map(e=>{let f=c&&a===e.id;return(0,h.jsxs)("button",{onClick:()=>{var c;return c=e.id,void(d(b=>!(b&&a===c)),b(c))},"aria-pressed":f,className:`relative flex h-14 flex-1 flex-col items-center justify-center gap-0.5 text-[11px] transition-colors ${f?"text-blue-400":"text-gray-500"}`,children:[(0,h.jsx)("span",{className:"text-base leading-none",children:e.icon}),(0,h.jsx)("span",{children:e.label}),void 0!==e.badge&&e.badge>0&&(0,h.jsx)("span",{className:"absolute top-1 right-1/2 translate-x-4 rounded-full bg-red-600 px-1 text-[10px] leading-4 text-white min-w-[16px]",children:e.badge}),f&&(0,h.jsx)("span",{className:"absolute inset-x-4 top-0 h-0.5 rounded-full bg-blue-400"})]},e.id)})}),f.visible&&(0,h.jsx)("div",{className:"fixed z-50 bg-gray-900 border border-gray-700 rounded-lg shadow-xl py-1 min-w-[180px] md:min-w-[140px]",style:{left:f.x,top:f.y,maxWidth:"calc(100vw - 1rem)",maxHeight:"calc(100dvh - 1rem)",overflowY:"auto",transform:"translate(0, 0)"},onClick:a=>a.stopPropagation(),children:f.target?.kind==="state"?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("button",{className:"block w-full text-left text-sm text-gray-300 hover:bg-gray-800 px-4 py-3 md:text-xs md:px-3 md:py-1.5",onClick:()=>{l("transition"),m(f.target.id),g()},children:"↗ Draw transition from here"}),(0,h.jsx)("button",{className:"block w-full text-left text-sm text-red-400 hover:bg-gray-800 px-4 py-3 md:text-xs md:px-3 md:py-1.5",onClick:()=>{f.target?.id&&k(f.target.id),g()},children:"🗑 Delete state"})]}):(0,h.jsx)(h.Fragment,{children:(0,h.jsx)("button",{className:"block w-full text-left text-sm text-gray-300 hover:bg-gray-800 px-4 py-3 md:text-xs md:px-3 md:py-1.5",onClick:()=>{let a=prompt("State name:");a&&j(null,{name:a,kind:"normal"}),g()},children:"+ Add state here"})})})]})}a.s(["default",()=>b9],95421)}];
|
|
11
|
+
${a}`)}l(!0)};return(0,h.jsxs)("div",{className:"flex flex-col gap-1.5 px-2 py-1.5 bg-gray-900 border-b border-gray-800 md:flex-row md:flex-wrap md:items-center md:px-3",children:[(0,h.jsxs)("div",{className:"toolbar-ident",children:[(0,h.jsx)("input",{ref:A,type:"file",accept:".json,.smdf.json",onChange:a=>{let b=a.target.files?.[0];if(!b)return;let c=new FileReader;c.onload=a=>{e(a.target?.result,b.name)},c.readAsText(b),a.target.value=""},className:"hidden"}),(0,h.jsxs)("span",{className:"text-xs text-gray-400 mr-1 truncate max-w-[50vw] md:max-w-none",children:[b??"untitled.smdf.json",d&&(0,h.jsx)("span",{className:"text-yellow-500 ml-0.5",children:"●"})]}),(0,h.jsx)(cd,{}),"synced"===u&&(0,h.jsx)("span",{className:"text-[10px] text-emerald-500",title:"In sync with disk",children:"⌁ synced"}),"remote-changed"===u&&(0,h.jsx)("span",{className:"text-[10px] text-amber-400",title:v??"",children:"↻ remote changed"}),"error"===u&&(0,h.jsx)("span",{className:"text-[10px] text-red-400",title:v??"",children:"⚠ disk error"}),"idle"===u&&(0,h.jsx)("span",{className:"text-[10px] text-gray-600",title:v??"No file bound",children:"○ no disk"}),(0,h.jsx)(ce,{}),(0,h.jsx)("div",{className:"flex-1"})]}),(0,h.jsxs)("div",{className:"toolbar-strip",children:[(0,h.jsx)("button",{onClick:q,disabled:0===s.length,className:"toolbar-btn disabled:opacity-30",title:"Undo (Ctrl+Z)",children:"↩"}),(0,h.jsx)("button",{onClick:r,disabled:0===t.length,className:"toolbar-btn disabled:opacity-30",title:"Redo (Ctrl+Y)",children:"↪"}),(0,h.jsx)("div",{className:"w-px h-4 bg-gray-700"}),(0,h.jsx)("button",{onClick:p,className:"toolbar-btn",title:"Arrange states into layers (auto-layout)",children:"⤢ Arrange"}),(0,h.jsx)("div",{className:"w-px h-4 bg-gray-700"}),(0,h.jsx)("button",{onClick:()=>o("select"===n?"transition":"select"),className:`toolbar-btn ${"transition"===n?"!bg-amber-700 !text-white":""}`,title:"transition"===n?"Exit draw mode (Esc)":"Draw transition mode",children:"transition"===n?"✏️ Drawing":"↗ Draw"}),(0,h.jsx)("div",{className:"w-px h-4 bg-gray-700"}),(0,h.jsx)("button",{onClick:()=>A.current?.click(),className:"toolbar-btn",title:"Open local .smdf.json (browser)",children:"📂"}),(0,h.jsx)("button",{onClick:P,disabled:F,className:"toolbar-btn disabled:opacity-40",title:"Save to disk (STATELOOM_PROJECT_FILE)",children:"💾 Disk"}),(0,h.jsx)("button",{onClick:R,className:"toolbar-btn",title:"Reload from disk",children:"🔄"}),(0,h.jsx)("button",{onClick:()=>{let a=new Blob([f()],{type:"application/json"}),c=URL.createObjectURL(a),d=document.createElement("a");d.href=c,d.download=b??"statemachine.smdf.json",d.click(),URL.revokeObjectURL(c)},className:"toolbar-btn",title:"Download as file",children:"📥"}),(0,h.jsx)("select",{value:H,onChange:a=>{I(a.target.value),O(null),M(null)},className:"bg-gray-800 border border-gray-700 rounded text-xs text-gray-300 px-1 py-0.5",title:"Export format",children:b$.map(a=>(0,h.jsx)("option",{value:a,children:b_[a]},a))}),(0,h.jsx)("button",{onClick:Q,disabled:J,className:`toolbar-btn disabled:opacity-40 ${L?"!text-red-400":""}`,title:L??`Export the board as ${b_[H]}`,children:J?"…":"🖼 Export"}),N&&!L&&(0,h.jsxs)("span",{className:"text-[10px] text-emerald-500 truncate max-w-[40vw] md:max-w-[16rem]",title:N,children:["⤓ ",N]}),(0,h.jsx)("div",{className:"w-px h-4 bg-gray-700"}),B?(0,h.jsxs)("div",{className:"flex items-center gap-1",children:[(0,h.jsx)("input",{autoFocus:!0,className:"bg-gray-800 border border-gray-700 rounded px-2 py-0.5 text-xs text-gray-200 w-32 md:w-24",placeholder:"State name...",value:D,onChange:a=>E(a.target.value),onKeyDown:a=>{"Enter"===a.key&&S(),"Escape"===a.key&&C(!1)}}),(0,h.jsx)("button",{onClick:S,className:"toolbar-btn-sm",children:"✓"}),(0,h.jsx)("button",{onClick:()=>C(!1),className:"toolbar-btn-sm",children:"✕"})]}):(0,h.jsx)("button",{onClick:()=>C(!0),className:"toolbar-btn",children:"+State"}),(0,h.jsx)("div",{className:"w-px h-4 bg-gray-700"}),(0,h.jsx)("button",{onClick:()=>j(),className:"toolbar-btn",children:"✓ Validate"}),(0,h.jsxs)("select",{value:T,onChange:a=>U(a.target.value),className:"bg-gray-800 border border-gray-700 rounded text-xs text-gray-300 px-1 py-0.5",children:[(0,h.jsx)("option",{value:"python",children:"Python"}),(0,h.jsx)("option",{value:"typescript",children:"TypeScript"})]}),(0,h.jsx)("button",{onClick:W,className:"toolbar-btn",children:"⚡ Generate"}),(0,h.jsx)("button",{onClick:V,className:"toolbar-btn",title:"Generate RISE rispec markdown",children:"📜 RISE"}),(0,h.jsxs)("button",{onClick:()=>l(!k),className:`toolbar-btn ${k?"text-blue-400":""}`,children:["</>"," Code"]})]})]})}function cg(){let a=bU(a=>a.generatedCode),b=bU(a=>a.showCodePreview),c=bU(a=>a.setShowCodePreview);return b?(0,h.jsx)("div",{className:"absolute inset-0 z-50 flex items-center justify-center bg-black/60 p-2 md:p-0",children:(0,h.jsxs)("div",{className:"bg-gray-900 border border-gray-700 rounded-lg shadow-xl w-full max-h-[85dvh] md:w-[80%] md:max-w-3xl md:max-h-[80dvh] flex flex-col",children:[(0,h.jsxs)("div",{className:"flex items-center justify-between px-4 py-2 border-b border-gray-800",children:[(0,h.jsx)("h3",{className:"text-sm font-semibold text-gray-300",children:"Generated Definition (JSON)"}),(0,h.jsx)("button",{onClick:()=>c(!1),className:"text-gray-500 hover:text-gray-300 text-lg min-h-11 min-w-11 md:min-h-0 md:min-w-0","aria-label":"Close preview",children:"✕"})]}),(0,h.jsx)("pre",{className:"flex-1 overflow-auto overscroll-contain p-4 text-[11px] leading-relaxed text-green-400 font-mono md:text-sm",children:a??"No code generated yet"}),(0,h.jsx)("div",{className:"flex justify-end px-4 py-2 border-t border-gray-800",children:(0,h.jsx)("button",{onClick:()=>{a&&navigator.clipboard.writeText(a)},className:"text-xs bg-gray-700 hover:bg-gray-600 text-gray-300 px-4 py-3 rounded md:px-3 md:py-1",children:"Copy to Clipboard"})})]})}):null}function ch(){let a=bU(a=>a.applyRemote),b=bU(a=>a.setRemoteStatus),c=bU(a=>a.setRemoteMtime),d=(0,cc.useRequestedDoc)();return(0,i.useEffect)(()=>{let e=!1,f=(0,cc.docQuery)(d);async function g(){try{let a=await fetch(`/api/file${f}`,{cache:"no-store"});if(!a.ok)return null;return await a.json()}catch{return null}}(async()=>{let c=await g();e||(c?.path&&bU.getState().setDocPath(c.path),c?.exists&&c.content?a(c.content,c.mtime,c.path.split("/").pop()):b("idle",c?`No file at ${c.path}`:null))})();let h=new EventSource(`/api/watch${f}`);return h.addEventListener("hello",a=>{try{let b=JSON.parse(a.data);"number"==typeof b?.mtime&&c(b.mtime)}catch{}}),h.addEventListener("change",async d=>{let e=0;try{e=JSON.parse(d.data)?.mtime??0}catch{}if(e<=(bU.getState().remoteMtime??0))return;let f=await g();f?.exists&&f.content&&(bU.getState().dirty?(b("remote-changed",`Disk changed at ${new Date(f.mtime).toLocaleTimeString()} — local has unsaved edits`),c(f.mtime)):a(f.content,f.mtime,f.path.split("/").pop()))}),h.addEventListener("error",()=>{b("error","Watch stream disconnected")}),()=>{e=!0,h.close()}},[a,b,c,d]),null}function ci({url:a}){let b=(0,cc.useRequestedDoc)();return(0,i.useEffect)(()=>{if(!a)return;let c=!1,d=null,e=null,f=null,g=null;return(async()=>{let h="";try{let a=await fetch(`/api/file${(0,cc.docQuery)(b)}`,{cache:"no-store"});a.ok&&(h=(await a.json())?.path??"")}catch{}c||(h&&bU.getState().setDocPath(h),(d=bK({url:a,role:"web",docId:h,name:"web-designer",onFull:a=>{bU.getState().applyRemote(JSON.stringify({stateMachine:a.def}),a.mtime??Date.now(),h&&h.split("/").pop()||void 0),g=a.def},onPatch:a=>{bU.getState().applyRemoteOps(a.ops,a.mtime??Date.now(),a.seq),g=bU.getState().definition},onPresence:a=>{bU.getState().setPresence(a)}})).connect(),e=bU.subscribe((a,b)=>{a.definition===b.definition||a._applyingRemote||(f&&clearTimeout(f),f=setTimeout(()=>{var a,b;let c,e;if(!d||"connected"!==d.getSnapshot().status)return;let f=bU.getState().definition;if(null===g){d.emitFull(f),g=f;return}let h=(a=g,b=f,c=a??{settings:{namespace:"",asynchronous:!1},events:[],state:{name:b.state.name,states:[]}},function(a,b,c){let d={},e=!1,f=new Set([...Object.keys(a.settings),...Object.keys(b.settings)]),g=a.settings,h=b.settings;for(let a of f)q(g[a],h[a])||void 0===h[a]||(d[a]=h[a],e=!0);e&&c.push({op:"settings.update",patch:d})}(c,b,e=[]),function(a,b,c){let d=a.events,e=b.events,f=Math.min(d.length,e.length);for(let a=0;a<f;a++)!function(a,b,c,d){let e={},f=!1;for(let a of["name","file","feeder","description","timers"])q(b[a],c[a])||void 0===c[a]||(e[a]=c[a],f=!0);f&&d.push({op:"eventSource.update",index:a,patch:e});let g=b.events??[],h=c.events??[],i=new Set(h.map(a=>a.id));for(let a of g)i.has(a.id)||d.push({op:"event.remove",id:a.id});let j=g.filter(a=>i.has(a.id)),k=0;for(;k<h.length;){let b=h[k];k<j.length&&j[k].id===b.id?(function(a,b,c){let d={},e=!1;for(let c of["name","description","preAction","postAction"])q(a[c],b[c])||void 0===b[c]||(d[c]=b[c],e=!0);e&&c.push({op:"event.update",id:b.id,patch:d})}(j[k],b,d),function(a,b,c,d){let e=Math.min(b.length,c.length);for(let f=0;f<e;f++)if(!q(b[f],c[f])){let e={};b[f].name!==c[f].name&&(e.name=c[f].name),b[f].type!==c[f].type&&(e.type=c[f].type),d.push({op:"parameter.update",eventId:a,index:f,patch:e})}for(let b=e;b<c.length;b++)d.push({op:"parameter.add",eventId:a,parameter:c[b],index:b});for(let e=b.length-1;e>=c.length;e--)d.push({op:"parameter.remove",eventId:a,index:e})}(b.id,j[k].parameters??[],b.parameters??[],d)):(d.push({op:"event.add",sourceIndex:a,event:b,index:k}),j.splice(k,0,b)),k++}}(a,d[a],e[a],c);for(let a=d.length;a<e.length;a++)c.push({op:"eventSource.add",source:e[a]});for(let a=d.length-1;a>=e.length;a--)c.push({op:"eventSource.remove",index:a})}(c,b,e),function(a,b,c){let d=o(a.state),e=o(b.state),f=new Map(d.map(a=>[a.name,a])),g=new Map(e.map(a=>[a.name,a])),h=p(a.state),i=p(b.state),j=[];for(let a of e){if(f.has(a.name))continue;let b=i.get(a.name)??null,{states:d,transitions:e,...g}=a;c.push({op:"state.add",parent:b,state:{...g}}),e&&e.length>0&&j.push({state:a.name,transitions:e})}for(let a of e){if(!f.has(a.name))continue;let b=h.get(a.name)??null,d=i.get(a.name)??null;b!==d&&null!==d&&c.push({op:"state.nest",child:a.name,newParent:d})}for(let a of e){let b=f.get(a.name);if(!b)continue;let d={},e=!1;q(b.kind,a.kind)||void 0===a.kind||(d.kind=a.kind,e=!0),q(b.description,a.description)||void 0===a.description||(d.description=a.description,e=!0),e&&c.push({op:"state.update",name:a.name,patch:d}),r(a.name,"onEntry",b.onEntry?.actions??[],a.onEntry?.actions??[],c),r(a.name,"onExit",b.onExit?.actions??[],a.onExit?.actions??[],c)}for(let a of j)a.transitions.forEach((b,d)=>{c.push({op:"transition.add",state:a.state,transition:b,index:d})});for(let a of e){let b=f.get(a.name);b&&function(a,b,c,d){let e=Math.min(b.length,c.length);for(let f=0;f<e;f++){if(q(b[f],c[f]))continue;let e={};for(let a of["event","nextState","condition","description","actions"])q(b[f][a],c[f][a])||void 0===c[f][a]||(e[a]=c[f][a]);Object.keys(e).length>0&&d.push({op:"transition.update",state:a,index:f,patch:e})}for(let b=e;b<c.length;b++)d.push({op:"transition.add",state:a,transition:c[b],index:b});for(let e=b.length-1;e>=c.length;e--)d.push({op:"transition.remove",state:a,index:e})}(a.name,b.transitions??[],a.transitions??[],c)}for(let a=d.length-1;a>=0;a--){let b=d[a];if(g.has(b.name))continue;let e=b.transitions??[];for(let a=e.length-1;a>=0;a--)c.push({op:"transition.remove",state:b.name,index:a});c.push({op:"state.remove",name:b.name})}}(c,b,e),e);0!==h.length&&(d.emitPatch(h),g=f)},60))}))})(),()=>{c=!0,f&&clearTimeout(f),e&&e(),d&&d.disconnect()}},[a,b]),null}function cj(){let a=process.env.NEXT_PUBLIC_STATELOOM_BRIDGE_URL??process.env.NEXT_PUBLIC_SMCRAFT_BRIDGE_URL;return"string"==typeof a&&a.length>0?a:void 0}let ck=null;function cl(){return ck||(ck=(async()=>{let a=cj()??null;try{let b=await fetch("/api/config",{cache:"no-store"});if(b.ok){let c=await b.json();return{bridgeUrl:c.bridgeUrl||a,projectFile:c.projectFile??null}}}catch{}return{bridgeUrl:a,projectFile:null}})())}function cm(){let a=cj(),[b,c]=(0,i.useState)(a);return((0,i.useEffect)(()=>{let a=!0;return cl().then(b=>{a&&b.bridgeUrl&&c(b.bridgeUrl)}),()=>{a=!1}},[]),"string"==typeof b&&b.length>0)?(0,h.jsx)(ci,{url:b}):(0,h.jsx)(ch,{})}function cn(a){return Number.isFinite(a)?Math.min(1.75,Math.max(.75,a)):1}function co(a){"u">typeof document&&(document.documentElement.style.fontSize=`${16*cn(a)}px`)}let cp=1,cq=!1,cr=new Set;function cs(){return cq||(cq=!0,cp=1),cp}function ct(){return 1}function cu(a){return cr.add(a),()=>{cr.delete(a)}}function cv(a,b){let c=cn(a);if(co(c),b,cq=!0,c!==cp)for(let a of(cp=c,cr))a()}function cw(a,b){return Math.max(1,Math.hypot(b.clientX-a.clientX,b.clientY-a.clientY))}function cx(a,b){for(let c=0;c<a.length;c++)if(a[c].identifier===b)return a[c];return null}function cy(){let a=(0,i.useSyncExternalStore)(cu,cs,ct),b=(0,i.useRef)(null),c=(0,i.useRef)(null),d=(0,i.useRef)(null);(0,i.useEffect)(()=>{co(a)},[a]);let e=(0,i.useCallback)(a=>{c.current=a,null===d.current&&(d.current=requestAnimationFrame(()=>{d.current=null,null!==c.current&&cv(c.current,!1)}))},[]),f=(0,i.useCallback)(()=>{c.current=null,cv(1,!0)},[]);return((0,i.useEffect)(()=>{let a=()=>{let a=b.current;if(b.current=null,!a?.engaged)return;null!==d.current&&(cancelAnimationFrame(d.current),d.current=null);let e=c.current??cs();c.current=null,cv(cn(e),!0)},f=c=>{if(2!==c.touches.length){b.current&&a();return}let[d,e]=[c.touches[0],c.touches[1]];bX(d.target)||bX(e.target)||(b.current={a:d.identifier,b:e.identifier,startScale:cs(),startDist:cw(d,e),engaged:!1})},g=a=>{let c=b.current;if(!c)return;let d=cx(a.touches,c.a),f=cx(a.touches,c.b);if(!d||!f)return;a.preventDefault();let g=cw(d,f);if(!c.engaged){if(12>Math.abs(g-c.startDist))return;c.engaged=!0,c.startDist=g;return}e(cn(c.startScale*(g/c.startDist)))},h=c=>{let d=b.current;d&&(cx(c.touches,d.a)&&cx(c.touches,d.b)||a())};return document.addEventListener("touchstart",f,{passive:!0,capture:!0}),document.addEventListener("touchmove",g,{passive:!1,capture:!0}),document.addEventListener("touchend",h,{passive:!0,capture:!0}),document.addEventListener("touchcancel",h,{passive:!0,capture:!0}),()=>{document.removeEventListener("touchstart",f,{capture:!0}),document.removeEventListener("touchmove",g,{capture:!0}),document.removeEventListener("touchend",h,{capture:!0}),document.removeEventListener("touchcancel",h,{capture:!0}),null!==d.current&&cancelAnimationFrame(d.current)}},[e]),1===a)?null:(0,h.jsxs)("div",{className:"ui-scale-pill",role:"status","aria-live":"polite",children:[(0,h.jsxs)("span",{children:["UI ",Math.round(100*a),"%"]}),(0,h.jsx)("button",{type:"button",onClick:f,"aria-label":"Reset interface size to 100 percent",children:"Reset"})]})}let cz=a=>`stateloom:erd-layout:${a}`;async function cA(a){let b=a.slice(0,a.lastIndexOf("/")),c=((await (await fetch("/api/docs",{cache:"no-store"})).json()).docs??[]).map(a=>a.path).filter(a=>a.endsWith(".smdf.json")&&a.slice(0,a.lastIndexOf("/"))===b),d=[];for(let a of c)try{let b=await (await fetch(`/api/file${(0,cc.docQuery)(a)}`,{cache:"no-store"})).json(),c=JSON.parse(b.content??"null"),e=c?.stateMachine??c?.StateMachine??c;e?.state&&d.push({path:a,def:e})}catch{}return d}let cB="w-full rounded border border-gray-700 bg-gray-950 px-2 py-1 text-xs text-gray-200 placeholder:text-gray-600",cC="rounded border border-gray-700 bg-gray-800 px-2 py-1 text-xs text-gray-200 hover:bg-gray-700",cD="mb-1 mt-3 text-[11px] font-semibold uppercase tracking-wide text-gray-500";function cE(){let a=(0,cc.useRequestedDoc)(),[b,c]=(0,i.useState)(""),[d,e]=(0,i.useState)(null),[f,g]=(0,i.useState)({}),[j,k]=(0,i.useState)({...M}),[l,m]=(0,i.useState)(0),[n,o]=(0,i.useState)(null),[p,q]=(0,i.useState)("loading…"),[r,s]=(0,i.useState)(0),[t,u]=(0,i.useState)(null),v=(0,i.useRef)(null);(0,i.useEffect)(()=>{let b=!1,d=null;return(async()=>{let f=await (await fetch(`/api/file${(0,cc.docQuery)(a)}`,{cache:"no-store"})).json();if(b)return;if(f.error)return q(f.error);let h=f.path??"",i=null;try{let a=f.content?JSON.parse(f.content):null;X(a)&&(i={...a,relationships:a.relationships??[]})}catch{}if(f.exists&&!i)return q(`${h} is not a readable ERD definition`);let j=(h.split("/").pop()??"Untitled").replace(/\.erdf\.json$/i,"");c(h),e(i??{settings:{namespace:"Default",name:j},entities:[],relationships:[]}),g(function(a){try{return JSON.parse(localStorage.getItem(cz(a))??"{}")}catch{return{}}}(h)),o(null),u(null),m(a=>a+1),q(f.exists?"loaded":"new document — the first edit writes it");let{bridgeUrl:k}=await cl();!b&&k&&(v.current=d=bK({url:k,role:"web",docId:h,name:"web-designer",onFull:a=>{let b=a.def;X(b)&&(e({...b,relationships:b.relationships??[]}),q("updated live"))},onPatch:()=>{},onPresence:a=>s(a.length)}),d.connect())})().catch(a=>!b&&q(String(a))),()=>{b=!0,v.current=null,d?.disconnect()}},[a]);let w=(0,i.useMemo)(()=>{if(!d)return{};let a=function(a,b={}){let{hSpacing:c,vSpacing:d}={...af,...b},e=[],f=new Set;for(let b of a.entities??[])!b?.name||f.has(b.name)||(f.add(b.name),e.push(b));let g=new Map,h=(a,b,c=new Set)=>a===b||!c.has(a)&&(c.add(a),(g.get(a)??[]).some(a=>h(a,b,c)));for(let b of a.relationships??[]){if(!b||!f.has(b.from)||!f.has(b.to)||b.from===b.to)continue;let[a,c]="N:1"===b.cardinality?[b.to,b.from]:[b.from,b.to];if((g.get(a)??[]).includes(c)||h(c,a))continue;let d=g.get(a);d?d.push(c):g.set(a,[c])}let i=new Map,j=(a,b)=>{if(!((i.get(a)??-1)>=b))for(let c of(i.set(a,b),g.get(a)??[]))j(c,b+1)},k=new Set([...g.values()].flat());for(let a of e)k.has(a.name)||j(a.name,0);for(let a of e)i.has(a.name)||j(a.name,0);for(let a of[...e].sort((a,b)=>i.get(b.name)-i.get(a.name))){let b=g.get(a.name)??[];b.length&&i.set(a.name,Math.min(...b.map(a=>i.get(a)))-1)}let l=[],m=new Map,n=(a,b)=>((l[b]??=[]).push(a),m.set(a.id,a),a);for(let a of e)n({id:a.name,entity:a.name,...function(a){let b=(a.attributes??[]).filter(a=>a?.name);return{width:Math.min(340,Math.max(170,Math.ceil(6.6*Math.max(1.15*(a.name??"").length,...b.map(a=>ag(a).length+6.96969696969697))+28))),height:30+20*Math.max(1,b.length)+8}}(a),upper:[],lower:[],x:0},i.get(a.name)??0);let o=0;for(let[a,b]of g)for(let c of b){let b=a;for(let d=i.get(a)+1;d<i.get(c);d++){let a=n({id:`\u0000lane${o++}`,width:28,height:0,upper:[],lower:[],x:0},d);m.get(b).lower.push(a.id),a.upper.push(b),b=a.id}m.get(b).lower.push(c),m.get(c).upper.push(b)}for(let a=l.length-1;a>=0;a--)l[a]?.length||l.splice(a,1);let p=(a,b)=>a.length?a.reduce((a,c)=>a+b(m.get(c)),0)/a.length:null,q=(a,b)=>{let c=new Map;for(let a of l)a.forEach((a,b)=>c.set(a.id,b));let d=new Map(a.map((a,d)=>[a.id,p(a[b],a=>c.get(a.id))??d]));a.sort((a,b)=>d.get(a.id)-d.get(b.id))};for(let a=0;a<2;a++){for(let a=1;a<l.length;a++)q(l[a],"upper");for(let a=l.length-2;a>=0;a--)q(l[a],"lower")}let r=a=>a.x+a.width/2,s=(a,b)=>{let d=0;for(let e of a){let a=p(e[b],r);e.x=Math.max(d,null===a?d:a-e.width/2),d=e.x+e.width+c}};for(let a of l)s(a,"upper");for(let a=l.length-2;a>=0;a--)s(l[a],"lower");let t=Math.min(0,...[...m.values()].map(a=>a.x)),u={},v=40;for(let a of l){for(let b of a)b.entity&&(u[b.entity]={x:Math.round(b.x-t)+40,y:v,width:b.width,height:b.height});v+=Math.max(0,...a.map(a=>a.height))+d}return u}(d);for(let[b,c]of Object.entries(f))a[b]&&(a[b]={...a[b],...c});return a},[d,f]),x=(0,i.useMemo)(()=>d?function(a){let b=[],c=function(a){let b=new Map;for(let c of a.entities??[])c?.name&&!b.has(c.name)&&b.set(c.name,c);return b}(a),d=new Set;for(let[e,f]of(a.entities??[]).entries()){if(!f?.name){b.push({ruleId:"E001",message:`Entity at index ${e} has no name`,element:`entities[${e}]`});continue}d.has(f.name)&&b.push({ruleId:"E001",message:`Duplicate entity name "${f.name}"`,element:f.name}),d.add(f.name);let a=new Set;for(let[d,e]of(f.attributes??[]).entries()){if(!e?.name){b.push({ruleId:"E002",message:`Attribute at index ${d} of "${f.name}" has no name`,element:`${f.name}[${d}]`});continue}let g=`${f.name}.${e.name}`;if(a.has(e.name)&&b.push({ruleId:"E002",message:`Duplicate attribute "${g}"`,element:g}),a.add(e.name),e.references){let a=function(a){let b=a.indexOf(".");return b<0?{entity:a}:{entity:a.slice(0,b),attribute:a.slice(b+1)}}(e.references),d=c.get(a.entity);d?a.attribute&&!(d.attributes??[]).some(b=>b?.name===a.attribute)&&b.push({ruleId:"E005",message:`"${g}" references undefined attribute "${e.references}"`,element:g}):b.push({ruleId:"E005",message:`"${g}" references undefined entity "${a.entity}"`,element:g})}}}for(let[d,e]of(a.relationships??[]).entries()){let a=`relationships[${d}]`;for(let f of["from","to"]){let g=e?.[f];g&&c.has(g)||b.push({ruleId:"E003",message:`Relationship ${d} ${f} names undefined entity "${g??""}"`,element:a})}V.includes(e?.cardinality)||b.push({ruleId:"E004",message:`Relationship ${d} cardinality "${e?.cardinality??""}" is not one of ${V.join(", ")}`,element:a})}return b}(d):[],[d]),y=(0,i.useMemo)(()=>x.map(a=>(a.element??"").split(/[.[]/)[0]).filter(Boolean),[x]),z=(0,i.useCallback)(async a=>{let c;if(d&&b){try{c=a(d)}catch(a){return q(a instanceof Error?a.message:String(a))}e(c),u(null);try{let a=await fetch(`/api/file${(0,cc.docQuery)(b)}`,{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({content:JSON.stringify(c,null,2)+"\n"})});if(!a.ok)throw Error((await a.json())?.error??`HTTP ${a.status}`);v.current?.emitFull(c),q("saved")}catch(a){q(`not saved: ${a instanceof Error?a.message:String(a)}`)}}},[d,b]),A=(0,i.useCallback)((a,c)=>{g(d=>{let e={...d,[a]:{x:Math.round(c.x),y:Math.round(c.y)}};try{localStorage.setItem(cz(b),JSON.stringify(e))}catch{}return e})},[b]),B=async()=>{if(!d)return;q("checking links…");let a=await cA(b);if(0===a.length)return u([]),q("no .smdf.json beside this document to check against");let c=a.flatMap(a=>(function(a,b){let c=[],d=new Map;for(let a of b.entities??[])a?.name&&!d.has(a.name)&&d.set(a.name,a);let e=a.settings?.name??"",f=a.settings?.objects??[],g=a.state?function a(b){let c=[b];for(let d of b.states??[])c.push(...a(d));for(let d of b.parallel?.states??[])c.push(...a(d));return c}(a.state):[],h=g.flatMap(a=>(a.transitions??[]).map(a=>a.condition??"")),i=new Map;for(let a of f){let e=d.get(a.class);if(e){i.set(a.instance,e);continue}h.some(b=>Y(b,a.instance).length>0)&&c.push({ruleId:"L001",message:`Object "${a.instance}" has class "${a.class}", which is not an entity in "${b.settings?.name??""}", and a guard reads its fields`,element:a.instance})}for(let a of g)for(let b of a.transitions??[])if(b.condition)for(let[d,e]of i)for(let f of Y(b.condition,d))(e.attributes??[]).some(a=>a?.name===f)||c.push({ruleId:"L002",message:`Guard on ${a.name} [${b.event}] reads "${d}.${f}", which is not an attribute of "${e.name}"`,element:a.name});if(e){let a=new Set([...i.values()].map(a=>a.name));for(let d of b.entities??[])for(let b of d?.attributes??[])b&&U(b).includes(e)&&(a.has(d.name)||c.push({ruleId:"L003",message:`"${d.name}.${b.name}" stores the state of "${e}", but "${d.name}" is not the class of any of that machine's objects`,element:`${d.name}.${b.name}`}))}return c})(a.def,d).map(b=>({...b,message:`${a.def.settings?.name??a.path}: ${b.message}`})));c.push(...function(a,b){let c=[];for(let d of a.entities??[])for(let a of d?.attributes??[])if(a)for(let e of U(a))b.includes(e)||c.push({ruleId:"L004",message:`"${d.name}.${a.name}" stores the state of "${e}", which is not among the machines checked (${b.join(", ")||"none"})`,element:`${d.name}.${a.name}`});return c}(d,a.map(a=>a.def.settings?.name??""))),u(c),q(`checked ${a.length} machine(s): ${c.length} problem(s)`)},C=async a=>{let c=(await cA(b)).find(b=>b.def.settings?.name===a);c?(0,cc.navigateToDoc)(c.path):q(`no .smdf.json beside this document defines '${a}'`)},D=d?.entities.find(a=>a.name===n)??null,E=b.split("/").pop()||"…";return(0,h.jsxs)("div",{className:"app-shell flex flex-col overflow-hidden bg-gray-950 text-gray-200",children:[(0,h.jsxs)("header",{className:"flex flex-wrap items-center gap-2 border-b border-gray-800 bg-gray-900 px-3 py-2 text-xs",children:[(0,h.jsx)("span",{className:"font-semibold text-blue-300",children:"ERD"}),(0,h.jsx)(cd,{}),(0,h.jsxs)("span",{className:"text-gray-400",title:b,children:[d?.settings.name??""," · ",E]}),(0,h.jsxs)("span",{className:"ml-auto text-gray-500",children:[p,r>1?` \xb7 ${r} in the room`:""]}),(0,h.jsx)("button",{className:cC,onClick:()=>{g({});try{localStorage.removeItem(cz(b))}catch{}m(a=>a+1)},title:"Forget the dragged positions and lay the board out again",children:"⤢ Arrange"}),(0,h.jsx)("button",{className:cC,onClick:()=>m(a=>a+1),children:"Fit"}),(0,h.jsx)("button",{className:cC,onClick:B,title:"Check the state machines beside this document against it",children:"Check links"}),(0,h.jsx)("button",{className:cC,onClick:()=>d&&navigator.clipboard?.writeText(function(a){let b=["erDiagram"],c=" ",d=new Set;for(let e of a.relationships??[]){if(!e?.from||!e?.to)continue;let a=aa[e.cardinality]??aa["1:N"];b.push(`${c}${ac(e.from)} ${a} ${ac(e.to)} : ${ae(e.label??"")}`),d.add(e.from),d.add(e.to)}let e=new Set;for(let f of a.entities??[]){if(!f?.name||e.has(f.name))continue;e.add(f.name);let a=(f.attributes??[]).filter(a=>a?.name);if(0===a.length){d.has(f.name)||b.push(`${c}${ac(f.name)}`);continue}for(let d of(b.push(`${c}${ac(f.name)} {`),a))b.push(`${c}${c}${function(a){let b=[];"pk"===a.key&&b.push("PK"),"uk"===a.key&&b.push("UK"),a.references&&b.push("FK");let c=[],d=U(a);d.length&&c.push(`stateOf ${d.join(", ")}`),a.description&&c.push(a.description);let e=[ad(a.type??"","unknown"),ad(a.name,"unnamed")];return b.length&&e.push(b.join(", ")),c.length&&e.push(ae(c.join(" — "))),e.join(" ")}(d)}`);b.push(`${c}}`)}return b.join("\n")}(d)).then(()=>q("mermaid copied")),children:"Copy mermaid"})]}),(0,h.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col md:flex-row",children:[(0,h.jsx)("div",{className:"min-h-[45dvh] flex-1 overflow-hidden",children:d&&(0,h.jsx)(aw,{definition:d,positions:w,viewport:j,onViewportChange:k,selection:n,errorElements:y,fitKey:l,onSelect:o,onClearSelection:()=>o(null),onEntityMove:A,onOpenMachine:C,emptyHint:"No entities yet — add one in the panel, or let an agent call add_entity."})}),d&&(0,h.jsxs)("aside",{className:"touch-targets w-full overflow-y-auto border-t border-gray-800 bg-gray-900 p-3 md:w-80 md:border-l md:border-t-0",children:[(0,h.jsx)("div",{className:cD,style:{marginTop:0},children:"Entities"}),(0,h.jsx)("div",{className:"flex flex-wrap gap-1",children:d.entities.map(a=>(0,h.jsx)("button",{className:`${cC} ${n===a.name?"border-blue-500 text-blue-300":""}`,onClick:()=>o(a.name),children:a.name},a.name))}),(0,h.jsx)(cF,{fields:[{name:"name",placeholder:"new entity"}],submit:"+ Entity",onSubmit:a=>{z(b=>(function(a,b){if(!b.name?.trim())throw Error("An entity needs a name.");let c=Z(a);if(c.entities.some(a=>a.name===b.name))throw Error(`Entity '${b.name}' already exists.`);return c.entities.push(_({...b,attributes:b.attributes??[]})),c})(b,{name:a.name.trim()})),o(a.name.trim())}}),D&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("div",{className:cD,children:D.name}),(D.attributes??[]).map(a=>(0,h.jsxs)("div",{className:"flex items-center justify-between gap-2 py-0.5 font-mono text-[11px]",children:[(0,h.jsxs)("span",{className:a.stateOf?"text-blue-300":"text-gray-300",children:[a.name," : ",a.type,(0,h.jsxs)("span",{className:"text-gray-500",children:[a.key?` ${a.key.toUpperCase()}`:"",a.references?` → ${a.references}`:"",a.stateOf?` ◉ ${[a.stateOf].flat().join(", ")}`:""]})]}),(0,h.jsx)("button",{className:"text-gray-500 hover:text-red-400","aria-label":`Remove ${a.name}`,onClick:()=>z(b=>(function(a,b,c){let d=Z(a),e=$(d,b),f=e.attributes?.length??0;if(e.attributes=(e.attributes??[]).filter(a=>a.name!==c),e.attributes.length===f)throw Error(`Attribute '${b}.${c}' not found.`);return d})(b,D.name,a.name)),children:"✕"})]},a.name)),(0,h.jsx)(cF,{fields:[{name:"name",placeholder:"attribute"},{name:"type",placeholder:"type",initial:"string"},{name:"key",options:["","pk","uk"]},{name:"references",placeholder:"references Entity.attr"},{name:"stateOf",placeholder:"stateOf Machine"}],submit:"+ Attribute",onSubmit:a=>z(b=>(function(a,b,c){if(!c.name?.trim())throw Error("An attribute needs a name.");let d=Z(a),e=$(d,b);if(e.attributes??=[],e.attributes.some(a=>a.name===c.name))throw Error(`Attribute '${b}.${c.name}' already exists.`);return e.attributes.push(_({...c})),d})(b,D.name,{name:a.name.trim(),type:a.type.trim()||"string",key:"pk"===a.key||"uk"===a.key?a.key:void 0,references:a.references.trim()||void 0,stateOf:a.stateOf.trim()||void 0}))}),(0,h.jsxs)("button",{className:`${cC} mt-2 text-red-300`,onClick:()=>{z(a=>{var b;let c;return b=D.name,$(c=Z(a),b),c.entities=c.entities.filter(a=>a.name!==b),c.relationships=c.relationships.filter(a=>a.from!==b&&a.to!==b),c}),o(null)},children:["🗑 Delete ",D.name]})]}),(0,h.jsx)("div",{className:cD,children:"Relationships"}),d.relationships.map((a,b)=>(0,h.jsxs)("div",{className:"flex items-center justify-between gap-2 py-0.5 text-[11px] text-gray-300",children:[(0,h.jsxs)("span",{children:[a.from," ",(0,h.jsx)("span",{className:"text-gray-500",children:a.cardinality})," ",a.to,a.label?(0,h.jsxs)("span",{className:"text-gray-500",children:[" : ",a.label]}):null]}),(0,h.jsx)("button",{className:"text-gray-500 hover:text-red-400","aria-label":"Remove relationship",onClick:()=>z(b=>(function(a,b,c,d){let e=Z(a),f=e.relationships.length;if(e.relationships=e.relationships.filter(a=>a.from!==b||a.to!==c||void 0!==d&&a.label!==d),e.relationships.length===f)throw Error(`No relationship from '${b}' to '${c}'${void 0===d?"":` labelled '${d}'`}.`);return e})(b,a.from,a.to,a.label)),children:"✕"})]},b)),d.entities.length>0&&(0,h.jsx)(cF,{fields:[{name:"from",options:d.entities.map(a=>a.name)},{name:"cardinality",options:[...V],initial:"1:N"},{name:"to",options:d.entities.map(a=>a.name)},{name:"label",placeholder:"label (a verb)"}],submit:"+ Relationship",onSubmit:a=>z(b=>(function(a,b){let c=Z(a);if($(c,b.from),$(c,b.to),!V.includes(b.cardinality))throw Error(`Cardinality '${b.cardinality}' is not one of ${V.join(", ")}.`);return c.relationships.push(_({...b})),c})(b,{from:a.from,to:a.to,cardinality:a.cardinality,label:a.label.trim()||void 0}))}),(x.length>0||t)&&(0,h.jsx)("div",{className:cD,children:"Problems"}),x.map((a,b)=>(0,h.jsxs)("div",{className:"py-0.5 text-[11px] text-red-300",children:["[",a.ruleId,"] ",a.message]},`p${b}`)),t?.length===0&&0===x.length&&(0,h.jsx)("div",{className:"py-0.5 text-[11px] text-green-400",children:"Every name the machines use resolves."}),t?.map((a,b)=>(0,h.jsxs)("div",{className:"py-0.5 text-[11px] text-amber-300",children:["[",a.ruleId,"] ",a.message]},`l${b}`))]})]})]})}function cF({fields:a,submit:b,onSubmit:c}){let d=()=>Object.fromEntries(a.map(a=>[a.name,a.initial??a.options?.[0]??""])),[e,f]=(0,i.useState)(d),g=a[0];return(0,h.jsxs)("form",{className:"mt-1 grid grid-cols-2 gap-1",onSubmit:b=>{b.preventDefault();let h={...d(),...e};h[g.name]?.trim()&&(c(h),f(b=>Object.fromEntries(a.map(a=>[a.name,a.options?b[a.name]??"":a.initial??""]))))},children:[a.map(a=>a.options?(0,h.jsx)("select",{className:cB,"aria-label":a.name,value:e[a.name]??"",onChange:b=>f(c=>({...c,[a.name]:b.target.value})),children:a.options.map(b=>(0,h.jsx)("option",{value:b,children:b||`(${a.name})`},b))},a.name):(0,h.jsx)("input",{className:cB,"aria-label":a.name,placeholder:a.placeholder,value:e[a.name]??"",onChange:b=>f(c=>({...c,[a.name]:b.target.value}))},a.name)),(0,h.jsx)("button",{type:"submit",className:`${cC} col-span-2`,children:b})]})}function cG(){let a=(0,cc.useRequestedDoc)(),[b,c]=(0,i.useState)(null);(0,i.useEffect)(()=>{let a=!0;return cl().then(b=>{a&&c(b.projectFile&&W(b.projectFile)?"erd":"machine")}),()=>{a=!1}},[]);let d=a?W(a)?"erd":"machine":b;return null===d?(0,h.jsx)("div",{className:"app-shell bg-gray-950"}):"erd"===d?(0,h.jsx)(cE,{}):(0,h.jsx)(cH,{})}function cH(){let[a,b]=(0,i.useState)("properties"),[c,d]=(0,i.useState)(!1),e=bU(a=>a.errors),f=bU(a=>a.contextMenu),g=bU(a=>a.hideContextMenu),j=bU(a=>a.addState),k=bU(a=>a.removeState),l=bU(a=>a.setDrawMode),m=bU(a=>a.setDrawSource),n=[{id:"properties",label:"Properties",icon:"🎛"},{id:"events",label:"Events",icon:"⚡"},{id:"settings",label:"Settings",icon:"⚙"},{id:"validation",label:"Errors",icon:"⚠",badge:e.length||void 0}],o=n.find(b=>b.id===a)?.label??"";return(0,h.jsxs)("div",{className:"app-shell dock-offset flex flex-col overflow-hidden",onClick:()=>f.visible&&g(),children:[(0,h.jsx)(cm,{}),(0,h.jsx)(cy,{}),(0,h.jsx)(cf,{}),(0,h.jsxs)("div",{className:"flex flex-1 min-h-0 overflow-hidden relative",children:[(0,h.jsx)("div",{className:"flex-1 overflow-hidden",children:(0,h.jsx)(b5,{})}),c&&(0,h.jsx)("div",{className:"fixed inset-0 z-20 bg-black/50 md:hidden",onClick:()=>d(!1),"aria-hidden":"true"}),(0,h.jsxs)("aside",{className:`safe-x fixed inset-x-0 bottom-0 z-30 h-[70dvh] flex flex-col overflow-hidden rounded-t-2xl border-t border-gray-800 bg-gray-900 shadow-2xl transition-transform duration-200 ease-out ${c?"translate-y-0":"translate-y-full pointer-events-none"} md:static md:z-auto md:h-auto md:w-80 md:translate-y-0 md:pointer-events-auto md:rounded-none md:border-t-0 md:border-l md:shadow-none md:transition-none`,children:[(0,h.jsxs)("div",{className:"md:hidden",children:[(0,h.jsx)("div",{className:"flex justify-center pt-2 pb-1",children:(0,h.jsx)("span",{className:"h-1 w-10 rounded-full bg-gray-700"})}),(0,h.jsxs)("div",{className:"flex items-center justify-between border-b border-gray-800 px-4 pb-2",children:[(0,h.jsx)("h2",{className:"text-sm font-semibold text-gray-300",children:o}),(0,h.jsx)("button",{onClick:()=>d(!1),className:"-mr-2 px-3 py-2 text-lg text-gray-400","aria-label":"Close panel",children:"✕"})]})]}),(0,h.jsx)("div",{className:"hidden border-b border-gray-800 md:flex",children:n.map(c=>(0,h.jsxs)("button",{onClick:()=>b(c.id),className:`flex-1 text-xs py-2 px-1 text-center transition-colors relative ${a===c.id?"text-blue-400 border-b-2 border-blue-400 bg-gray-800/50":"text-gray-500 hover:text-gray-300"}`,children:[c.label,void 0!==c.badge&&c.badge>0&&(0,h.jsx)("span",{className:"absolute top-1 right-1 bg-red-600 text-white text-[9px] rounded-full px-1 min-w-[14px]",children:c.badge})]},c.id))}),(0,h.jsxs)("div",{className:"touch-targets dock-offset flex-1 overflow-y-auto overscroll-contain",children:["properties"===a&&(0,h.jsx)(b7,{}),"events"===a&&(0,h.jsx)(b9,{}),"settings"===a&&(0,h.jsx)(ca,{}),"validation"===a&&(0,h.jsx)(cb,{})]})]}),(0,h.jsx)(cg,{})]}),(0,h.jsx)("nav",{className:"dock-safe safe-x fixed inset-x-0 bottom-0 z-40 flex border-t border-gray-800 bg-gray-900/95 backdrop-blur-md md:hidden",children:n.map(e=>{let f=c&&a===e.id;return(0,h.jsxs)("button",{onClick:()=>{var c;return c=e.id,void(d(b=>!(b&&a===c)),b(c))},"aria-pressed":f,className:`relative flex h-14 flex-1 flex-col items-center justify-center gap-0.5 text-[11px] transition-colors ${f?"text-blue-400":"text-gray-500"}`,children:[(0,h.jsx)("span",{className:"text-base leading-none",children:e.icon}),(0,h.jsx)("span",{children:e.label}),void 0!==e.badge&&e.badge>0&&(0,h.jsx)("span",{className:"absolute top-1 right-1/2 translate-x-4 rounded-full bg-red-600 px-1 text-[10px] leading-4 text-white min-w-[16px]",children:e.badge}),f&&(0,h.jsx)("span",{className:"absolute inset-x-4 top-0 h-0.5 rounded-full bg-blue-400"})]},e.id)})}),f.visible&&(0,h.jsx)("div",{className:"fixed z-50 bg-gray-900 border border-gray-700 rounded-lg shadow-xl py-1 min-w-[180px] md:min-w-[140px]",style:{left:f.x,top:f.y,maxWidth:"calc(100vw - 1rem)",maxHeight:"calc(100dvh - 1rem)",overflowY:"auto",transform:"translate(0, 0)"},onClick:a=>a.stopPropagation(),children:f.target?.kind==="state"?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("button",{className:"block w-full text-left text-sm text-gray-300 hover:bg-gray-800 px-4 py-3 md:text-xs md:px-3 md:py-1.5",onClick:()=>{l("transition"),m(f.target.id),g()},children:"↗ Draw transition from here"}),(0,h.jsx)("button",{className:"block w-full text-left text-sm text-red-400 hover:bg-gray-800 px-4 py-3 md:text-xs md:px-3 md:py-1.5",onClick:()=>{f.target?.id&&k(f.target.id),g()},children:"🗑 Delete state"})]}):(0,h.jsx)(h.Fragment,{children:(0,h.jsx)("button",{className:"block w-full text-left text-sm text-gray-300 hover:bg-gray-800 px-4 py-3 md:text-xs md:px-3 md:py-1.5",onClick:()=>{let a=prompt("State name:");a&&j(null,{name:a,kind:"normal"}),g()},children:"+ Add state here"})})})]})}a.s(["default",()=>cG],95421)}];
|
|
12
12
|
|
|
13
13
|
//# sourceMappingURL=%5Broot-of-the-server%5D__edbb995c._.js.map
|