From 826f6268b58d6faaedf9b2fe7c23a7e6167399a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=91=E6=9E=97=20KELIN?= <167663109+HuangYuChuh@users.noreply.github.com> Date: Tue, 7 Apr 2026 14:27:30 +0800 Subject: [PATCH] build(ui): sync frontend assets from upstream@3faa829c (#114) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- ui/static/assets/index-BJ5B3YBY.js | 73 +++++++++++++++++++ ui/static/assets/index-D_BSx2UW.js | 73 ------------------- ...D9iCiBbj.js => versionUpgrade-Y0m-Lc1G.js} | 2 +- ui/static/index.html | 2 +- ui/static/version.json | 2 +- 5 files changed, 76 insertions(+), 76 deletions(-) create mode 100644 ui/static/assets/index-BJ5B3YBY.js delete mode 100644 ui/static/assets/index-D_BSx2UW.js rename ui/static/assets/{versionUpgrade-D9iCiBbj.js => versionUpgrade-Y0m-Lc1G.js} (83%) diff --git a/ui/static/assets/index-BJ5B3YBY.js b/ui/static/assets/index-BJ5B3YBY.js new file mode 100644 index 0000000..e316fa6 --- /dev/null +++ b/ui/static/assets/index-BJ5B3YBY.js @@ -0,0 +1,73 @@ +var Fp=Object.defineProperty;var Wp=(e,t,r)=>t in e?Fp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var Yo=(e,t,r)=>Wp(e,typeof t!="symbol"?t+"":t,r);function Ap(e,t){for(var r=0;rn[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))n(o);new MutationObserver(o=>{for(const l of o)if(l.type==="childList")for(const i of l.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&n(i)}).observe(document,{childList:!0,subtree:!0});function r(o){const l={};return o.integrity&&(l.integrity=o.integrity),o.referrerPolicy&&(l.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?l.credentials="include":o.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function n(o){if(o.ep)return;o.ep=!0;const l=r(o);fetch(o.href,l)}})();function zp(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Id={exports:{}},ui={},Rd={exports:{}},V={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Do=Symbol.for("react.element"),$p=Symbol.for("react.portal"),Bp=Symbol.for("react.fragment"),Vp=Symbol.for("react.strict_mode"),Hp=Symbol.for("react.profiler"),Kp=Symbol.for("react.provider"),qp=Symbol.for("react.context"),Qp=Symbol.for("react.forward_ref"),Jp=Symbol.for("react.suspense"),Yp=Symbol.for("react.memo"),Xp=Symbol.for("react.lazy"),Du=Symbol.iterator;function Gp(e){return e===null||typeof e!="object"?null:(e=Du&&e[Du]||e["@@iterator"],typeof e=="function"?e:null)}var Td={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Pd=Object.assign,Dd={};function En(e,t,r){this.props=e,this.context=t,this.refs=Dd,this.updater=r||Td}En.prototype.isReactComponent={};En.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};En.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Ld(){}Ld.prototype=En.prototype;function va(e,t,r){this.props=e,this.context=t,this.refs=Dd,this.updater=r||Td}var ga=va.prototype=new Ld;ga.constructor=va;Pd(ga,En.prototype);ga.isPureReactComponent=!0;var Lu=Array.isArray,Md=Object.prototype.hasOwnProperty,ya={current:null},Od={key:!0,ref:!0,__self:!0,__source:!0};function Ud(e,t,r){var n,o={},l=null,i=null;if(t!=null)for(n in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(l=""+t.key),t)Md.call(t,n)&&!Od.hasOwnProperty(n)&&(o[n]=t[n]);var a=arguments.length-2;if(a===1)o.children=r;else if(1>>1,z=T[Y];if(0>>1;Yo(st,F))Wo(at,st)?(T[Y]=at,T[W]=F,Y=W):(T[Y]=st,T[ge]=F,Y=ge);else if(Wo(at,F))T[Y]=at,T[W]=F,Y=W;else break e}}return O}function o(T,O){var F=T.sortIndex-O.sortIndex;return F!==0?F:T.id-O.id}if(typeof performance=="object"&&typeof performance.now=="function"){var l=performance;e.unstable_now=function(){return l.now()}}else{var i=Date,a=i.now();e.unstable_now=function(){return i.now()-a}}var u=[],c=[],d=1,f=null,m=3,v=!1,g=!1,y=!1,C=typeof setTimeout=="function"?setTimeout:null,w=typeof clearTimeout=="function"?clearTimeout:null,h=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function _(T){for(var O=r(c);O!==null;){if(O.callback===null)n(c);else if(O.startTime<=T)n(c),O.sortIndex=O.expirationTime,t(u,O);else break;O=r(c)}}function x(T){if(y=!1,_(T),!g)if(r(u)!==null)g=!0,Xe(k);else{var O=r(c);O!==null&&fe(x,O.startTime-T)}}function k(T,O){g=!1,y&&(y=!1,w(b),b=-1),v=!0;var F=m;try{for(_(O),f=r(u);f!==null&&(!(f.expirationTime>O)||T&&!L());){var Y=f.callback;if(typeof Y=="function"){f.callback=null,m=f.priorityLevel;var z=Y(f.expirationTime<=O);O=e.unstable_now(),typeof z=="function"?f.callback=z:f===r(u)&&n(u),_(O)}else n(u);f=r(u)}if(f!==null)var ue=!0;else{var ge=r(c);ge!==null&&fe(x,ge.startTime-O),ue=!1}return ue}finally{f=null,m=F,v=!1}}var S=!1,N=null,b=-1,j=5,E=-1;function L(){return!(e.unstable_now()-ET||125Y?(T.sortIndex=F,t(c,T),r(u)===null&&T===r(c)&&(y?(w(b),b=-1):y=!0,fe(x,F-Y))):(T.sortIndex=z,t(u,T),g||v||(g=!0,Xe(k))),T},e.unstable_shouldYield=L,e.unstable_wrapCallback=function(T){var O=m;return function(){var F=m;m=O;try{return T.apply(this,arguments)}finally{m=F}}}})($d);zd.exports=$d;var c_=zd.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var d_=p,ot=c_;function I(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),ws=Object.prototype.hasOwnProperty,f_=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Ou={},Uu={};function m_(e){return ws.call(Uu,e)?!0:ws.call(Ou,e)?!1:f_.test(e)?Uu[e]=!0:(Ou[e]=!0,!1)}function p_(e,t,r,n){if(r!==null&&r.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return n?!1:r!==null?!r.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function __(e,t,r,n){if(t===null||typeof t>"u"||p_(e,t,r,n))return!0;if(n)return!1;if(r!==null)switch(r.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Be(e,t,r,n,o,l,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=n,this.attributeNamespace=o,this.mustUseProperty=r,this.propertyName=e,this.type=t,this.sanitizeURL=l,this.removeEmptyString=i}var Ie={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Ie[e]=new Be(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Ie[t]=new Be(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Ie[e]=new Be(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Ie[e]=new Be(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Ie[e]=new Be(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Ie[e]=new Be(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Ie[e]=new Be(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Ie[e]=new Be(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Ie[e]=new Be(e,5,!1,e.toLowerCase(),null,!1,!1)});var xa=/[\-:]([a-z])/g;function Sa(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(xa,Sa);Ie[t]=new Be(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(xa,Sa);Ie[t]=new Be(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(xa,Sa);Ie[t]=new Be(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Ie[e]=new Be(e,1,!1,e.toLowerCase(),null,!1,!1)});Ie.xlinkHref=new Be("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Ie[e]=new Be(e,1,!1,e.toLowerCase(),null,!0,!0)});function ba(e,t,r,n){var o=Ie.hasOwnProperty(t)?Ie[t]:null;(o!==null?o.type!==0:n||!(2a||o[i]!==l[a]){var u=` +`+o[i].replace(" at new "," at ");return e.displayName&&u.includes("")&&(u=u.replace("",e.displayName)),u}while(1<=i&&0<=a);break}}}finally{Fi=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:"")?Kn(e):""}function h_(e){switch(e.tag){case 5:return Kn(e.type);case 16:return Kn("Lazy");case 13:return Kn("Suspense");case 19:return Kn("SuspenseList");case 0:case 2:case 15:return e=Wi(e.type,!1),e;case 11:return e=Wi(e.type.render,!1),e;case 1:return e=Wi(e.type,!0),e;default:return""}}function ks(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case rn:return"Fragment";case tn:return"Portal";case vs:return"Profiler";case Ca:return"StrictMode";case gs:return"Suspense";case ys:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Hd:return(e.displayName||"Context")+".Consumer";case Vd:return(e._context.displayName||"Context")+".Provider";case Na:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case ja:return t=e.displayName||null,t!==null?t:ks(e.type)||"Memo";case sr:t=e._payload,e=e._init;try{return ks(e(t))}catch{}}return null}function w_(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ks(t);case 8:return t===Ca?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Cr(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function qd(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function v_(e){var t=qd(e)?"checked":"value",r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),n=""+e[t];if(!e.hasOwnProperty(t)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var o=r.get,l=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(i){n=""+i,l.call(this,i)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(i){n=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Zo(e){e._valueTracker||(e._valueTracker=v_(e))}function Qd(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var r=t.getValue(),n="";return e&&(n=qd(e)?e.checked?"true":"false":e.value),e=n,e!==r?(t.setValue(e),!0):!1}function Dl(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function xs(e,t){var r=t.checked;return ae({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??e._wrapperState.initialChecked})}function Wu(e,t){var r=t.defaultValue==null?"":t.defaultValue,n=t.checked!=null?t.checked:t.defaultChecked;r=Cr(t.value!=null?t.value:r),e._wrapperState={initialChecked:n,initialValue:r,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Jd(e,t){t=t.checked,t!=null&&ba(e,"checked",t,!1)}function Ss(e,t){Jd(e,t);var r=Cr(t.value),n=t.type;if(r!=null)n==="number"?(r===0&&e.value===""||e.value!=r)&&(e.value=""+r):e.value!==""+r&&(e.value=""+r);else if(n==="submit"||n==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?bs(e,t.type,r):t.hasOwnProperty("defaultValue")&&bs(e,t.type,Cr(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Au(e,t,r){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var n=t.type;if(!(n!=="submit"&&n!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,r||t===e.value||(e.value=t),e.defaultValue=t}r=e.name,r!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,r!==""&&(e.name=r)}function bs(e,t,r){(t!=="number"||Dl(e.ownerDocument)!==e)&&(r==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+r&&(e.defaultValue=""+r))}var qn=Array.isArray;function pn(e,t,r,n){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=el.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function fo(e,t){if(t){var r=e.firstChild;if(r&&r===e.lastChild&&r.nodeType===3){r.nodeValue=t;return}}e.textContent=t}var Gn={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},g_=["Webkit","ms","Moz","O"];Object.keys(Gn).forEach(function(e){g_.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Gn[t]=Gn[e]})});function Zd(e,t,r){return t==null||typeof t=="boolean"||t===""?"":r||typeof t!="number"||t===0||Gn.hasOwnProperty(e)&&Gn[e]?(""+t).trim():t+"px"}function ef(e,t){e=e.style;for(var r in t)if(t.hasOwnProperty(r)){var n=r.indexOf("--")===0,o=Zd(r,t[r],n);r==="float"&&(r="cssFloat"),n?e.setProperty(r,o):e[r]=o}}var y_=ae({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function js(e,t){if(t){if(y_[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(I(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(I(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(I(61))}if(t.style!=null&&typeof t.style!="object")throw Error(I(62))}}function Es(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Is=null;function Ea(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Rs=null,_n=null,hn=null;function Bu(e){if(e=Oo(e)){if(typeof Rs!="function")throw Error(I(280));var t=e.stateNode;t&&(t=pi(t),Rs(e.stateNode,e.type,t))}}function tf(e){_n?hn?hn.push(e):hn=[e]:_n=e}function rf(){if(_n){var e=_n,t=hn;if(hn=_n=null,Bu(e),t)for(e=0;e>>=0,e===0?32:31-(T_(e)/P_|0)|0}var tl=64,rl=4194304;function Qn(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Ul(e,t){var r=e.pendingLanes;if(r===0)return 0;var n=0,o=e.suspendedLanes,l=e.pingedLanes,i=r&268435455;if(i!==0){var a=i&~o;a!==0?n=Qn(a):(l&=i,l!==0&&(n=Qn(l)))}else i=r&~o,i!==0?n=Qn(i):l!==0&&(n=Qn(l));if(n===0)return 0;if(t!==0&&t!==n&&!(t&o)&&(o=n&-n,l=t&-t,o>=l||o===16&&(l&4194240)!==0))return t;if(n&4&&(n|=r&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=n;0r;r++)t.push(e);return t}function Lo(e,t,r){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-It(t),e[t]=r}function O_(e,t){var r=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var n=e.eventTimes;for(e=e.expirationTimes;0=eo),Gu=" ",Zu=!1;function Sf(e,t){switch(e){case"keyup":return ch.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function bf(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var nn=!1;function fh(e,t){switch(e){case"compositionend":return bf(t);case"keypress":return t.which!==32?null:(Zu=!0,Gu);case"textInput":return e=t.data,e===Gu&&Zu?null:e;default:return null}}function mh(e,t){if(nn)return e==="compositionend"||!Oa&&Sf(e,t)?(e=kf(),kl=Da=fr=null,nn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=nc(r)}}function Ef(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Ef(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function If(){for(var e=window,t=Dl();t instanceof e.HTMLIFrameElement;){try{var r=typeof t.contentWindow.location.href=="string"}catch{r=!1}if(r)e=t.contentWindow;else break;t=Dl(e.document)}return t}function Ua(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function xh(e){var t=If(),r=e.focusedElem,n=e.selectionRange;if(t!==r&&r&&r.ownerDocument&&Ef(r.ownerDocument.documentElement,r)){if(n!==null&&Ua(r)){if(t=n.start,e=n.end,e===void 0&&(e=t),"selectionStart"in r)r.selectionStart=t,r.selectionEnd=Math.min(e,r.value.length);else if(e=(t=r.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var o=r.textContent.length,l=Math.min(n.start,o);n=n.end===void 0?l:Math.min(n.end,o),!e.extend&&l>n&&(o=n,n=l,l=o),o=oc(r,l);var i=oc(r,n);o&&i&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(o.node,o.offset),e.removeAllRanges(),l>n?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}}for(t=[],e=r;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof r.focus=="function"&&r.focus(),r=0;r=document.documentMode,on=null,Os=null,ro=null,Us=!1;function lc(e,t,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;Us||on==null||on!==Dl(n)||(n=on,"selectionStart"in n&&Ua(n)?n={start:n.selectionStart,end:n.selectionEnd}:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}),ro&&vo(ro,n)||(ro=n,n=Al(Os,"onSelect"),0an||(e.current=Bs[an],Bs[an]=null,an--)}function re(e,t){an++,Bs[an]=e.current,e.current=t}var Nr={},Me=Ir(Nr),qe=Ir(!1),$r=Nr;function xn(e,t){var r=e.type.contextTypes;if(!r)return Nr;var n=e.stateNode;if(n&&n.__reactInternalMemoizedUnmaskedChildContext===t)return n.__reactInternalMemoizedMaskedChildContext;var o={},l;for(l in r)o[l]=t[l];return n&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function Qe(e){return e=e.childContextTypes,e!=null}function $l(){oe(qe),oe(Me)}function fc(e,t,r){if(Me.current!==Nr)throw Error(I(168));re(Me,t),re(qe,r)}function Ff(e,t,r){var n=e.stateNode;if(t=t.childContextTypes,typeof n.getChildContext!="function")return r;n=n.getChildContext();for(var o in n)if(!(o in t))throw Error(I(108,w_(e)||"Unknown",o));return ae({},r,n)}function Bl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Nr,$r=Me.current,re(Me,e),re(qe,qe.current),!0}function mc(e,t,r){var n=e.stateNode;if(!n)throw Error(I(169));r?(e=Ff(e,t,$r),n.__reactInternalMemoizedMergedChildContext=e,oe(qe),oe(Me),re(Me,e)):oe(qe),re(qe,r)}var Vt=null,_i=!1,Zi=!1;function Wf(e){Vt===null?Vt=[e]:Vt.push(e)}function Lh(e){_i=!0,Wf(e)}function Rr(){if(!Zi&&Vt!==null){Zi=!0;var e=0,t=Z;try{var r=Vt;for(Z=1;e>=i,o-=i,Ht=1<<32-It(t)+o|r<b?(j=N,N=null):j=N.sibling;var E=m(w,N,_[b],x);if(E===null){N===null&&(N=j);break}e&&N&&E.alternate===null&&t(w,N),h=l(E,h,b),S===null?k=E:S.sibling=E,S=E,N=j}if(b===_.length)return r(w,N),le&&Lr(w,b),k;if(N===null){for(;b<_.length;b++)N=f(w,_[b],x),N!==null&&(h=l(N,h,b),S===null?k=N:S.sibling=N,S=N);return le&&Lr(w,b),k}for(N=n(w,N);b<_.length;b++)j=v(N,w,b,_[b],x),j!==null&&(e&&j.alternate!==null&&N.delete(j.key===null?b:j.key),h=l(j,h,b),S===null?k=j:S.sibling=j,S=j);return e&&N.forEach(function(L){return t(w,L)}),le&&Lr(w,b),k}function y(w,h,_,x){var k=Un(_);if(typeof k!="function")throw Error(I(150));if(_=k.call(_),_==null)throw Error(I(151));for(var S=k=null,N=h,b=h=0,j=null,E=_.next();N!==null&&!E.done;b++,E=_.next()){N.index>b?(j=N,N=null):j=N.sibling;var L=m(w,N,E.value,x);if(L===null){N===null&&(N=j);break}e&&N&&L.alternate===null&&t(w,N),h=l(L,h,b),S===null?k=L:S.sibling=L,S=L,N=j}if(E.done)return r(w,N),le&&Lr(w,b),k;if(N===null){for(;!E.done;b++,E=_.next())E=f(w,E.value,x),E!==null&&(h=l(E,h,b),S===null?k=E:S.sibling=E,S=E);return le&&Lr(w,b),k}for(N=n(w,N);!E.done;b++,E=_.next())E=v(N,w,b,E.value,x),E!==null&&(e&&E.alternate!==null&&N.delete(E.key===null?b:E.key),h=l(E,h,b),S===null?k=E:S.sibling=E,S=E);return e&&N.forEach(function(B){return t(w,B)}),le&&Lr(w,b),k}function C(w,h,_,x){if(typeof _=="object"&&_!==null&&_.type===rn&&_.key===null&&(_=_.props.children),typeof _=="object"&&_!==null){switch(_.$$typeof){case Go:e:{for(var k=_.key,S=h;S!==null;){if(S.key===k){if(k=_.type,k===rn){if(S.tag===7){r(w,S.sibling),h=o(S,_.props.children),h.return=w,w=h;break e}}else if(S.elementType===k||typeof k=="object"&&k!==null&&k.$$typeof===sr&&hc(k)===S.type){r(w,S.sibling),h=o(S,_.props),h.ref=$n(w,S,_),h.return=w,w=h;break e}r(w,S);break}else t(w,S);S=S.sibling}_.type===rn?(h=Ar(_.props.children,w.mode,x,_.key),h.return=w,w=h):(x=Il(_.type,_.key,_.props,null,w.mode,x),x.ref=$n(w,h,_),x.return=w,w=x)}return i(w);case tn:e:{for(S=_.key;h!==null;){if(h.key===S)if(h.tag===4&&h.stateNode.containerInfo===_.containerInfo&&h.stateNode.implementation===_.implementation){r(w,h.sibling),h=o(h,_.children||[]),h.return=w,w=h;break e}else{r(w,h);break}else t(w,h);h=h.sibling}h=ss(_,w.mode,x),h.return=w,w=h}return i(w);case sr:return S=_._init,C(w,h,S(_._payload),x)}if(qn(_))return g(w,h,_,x);if(Un(_))return y(w,h,_,x);ul(w,_)}return typeof _=="string"&&_!==""||typeof _=="number"?(_=""+_,h!==null&&h.tag===6?(r(w,h.sibling),h=o(h,_),h.return=w,w=h):(r(w,h),h=is(_,w.mode,x),h.return=w,w=h),i(w)):r(w,h)}return C}var bn=Bf(!0),Vf=Bf(!1),Kl=Ir(null),ql=null,dn=null,za=null;function $a(){za=dn=ql=null}function Ba(e){var t=Kl.current;oe(Kl),e._currentValue=t}function Ks(e,t,r){for(;e!==null;){var n=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,n!==null&&(n.childLanes|=t)):n!==null&&(n.childLanes&t)!==t&&(n.childLanes|=t),e===r)break;e=e.return}}function vn(e,t){ql=e,za=dn=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(Ke=!0),e.firstContext=null)}function wt(e){var t=e._currentValue;if(za!==e)if(e={context:e,memoizedValue:t,next:null},dn===null){if(ql===null)throw Error(I(308));dn=e,ql.dependencies={lanes:0,firstContext:e}}else dn=dn.next=e;return t}var Ur=null;function Va(e){Ur===null?Ur=[e]:Ur.push(e)}function Hf(e,t,r,n){var o=t.interleaved;return o===null?(r.next=r,Va(t)):(r.next=o.next,o.next=r),t.interleaved=r,Yt(e,n)}function Yt(e,t){e.lanes|=t;var r=e.alternate;for(r!==null&&(r.lanes|=t),r=e,e=e.return;e!==null;)e.childLanes|=t,r=e.alternate,r!==null&&(r.childLanes|=t),r=e,e=e.return;return r.tag===3?r.stateNode:null}var ar=!1;function Ha(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Kf(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function qt(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function kr(e,t,r){var n=e.updateQueue;if(n===null)return null;if(n=n.shared,Q&2){var o=n.pending;return o===null?t.next=t:(t.next=o.next,o.next=t),n.pending=t,Yt(e,r)}return o=n.interleaved,o===null?(t.next=t,Va(n)):(t.next=o.next,o.next=t),n.interleaved=t,Yt(e,r)}function Sl(e,t,r){if(t=t.updateQueue,t!==null&&(t=t.shared,(r&4194240)!==0)){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,Ra(e,r)}}function wc(e,t){var r=e.updateQueue,n=e.alternate;if(n!==null&&(n=n.updateQueue,r===n)){var o=null,l=null;if(r=r.firstBaseUpdate,r!==null){do{var i={eventTime:r.eventTime,lane:r.lane,tag:r.tag,payload:r.payload,callback:r.callback,next:null};l===null?o=l=i:l=l.next=i,r=r.next}while(r!==null);l===null?o=l=t:l=l.next=t}else o=l=t;r={baseState:n.baseState,firstBaseUpdate:o,lastBaseUpdate:l,shared:n.shared,effects:n.effects},e.updateQueue=r;return}e=r.lastBaseUpdate,e===null?r.firstBaseUpdate=t:e.next=t,r.lastBaseUpdate=t}function Ql(e,t,r,n){var o=e.updateQueue;ar=!1;var l=o.firstBaseUpdate,i=o.lastBaseUpdate,a=o.shared.pending;if(a!==null){o.shared.pending=null;var u=a,c=u.next;u.next=null,i===null?l=c:i.next=c,i=u;var d=e.alternate;d!==null&&(d=d.updateQueue,a=d.lastBaseUpdate,a!==i&&(a===null?d.firstBaseUpdate=c:a.next=c,d.lastBaseUpdate=u))}if(l!==null){var f=o.baseState;i=0,d=c=u=null,a=l;do{var m=a.lane,v=a.eventTime;if((n&m)===m){d!==null&&(d=d.next={eventTime:v,lane:0,tag:a.tag,payload:a.payload,callback:a.callback,next:null});e:{var g=e,y=a;switch(m=t,v=r,y.tag){case 1:if(g=y.payload,typeof g=="function"){f=g.call(v,f,m);break e}f=g;break e;case 3:g.flags=g.flags&-65537|128;case 0:if(g=y.payload,m=typeof g=="function"?g.call(v,f,m):g,m==null)break e;f=ae({},f,m);break e;case 2:ar=!0}}a.callback!==null&&a.lane!==0&&(e.flags|=64,m=o.effects,m===null?o.effects=[a]:m.push(a))}else v={eventTime:v,lane:m,tag:a.tag,payload:a.payload,callback:a.callback,next:null},d===null?(c=d=v,u=f):d=d.next=v,i|=m;if(a=a.next,a===null){if(a=o.shared.pending,a===null)break;m=a,a=m.next,m.next=null,o.lastBaseUpdate=m,o.shared.pending=null}}while(!0);if(d===null&&(u=f),o.baseState=u,o.firstBaseUpdate=c,o.lastBaseUpdate=d,t=o.shared.interleaved,t!==null){o=t;do i|=o.lane,o=o.next;while(o!==t)}else l===null&&(o.shared.lanes=0);Hr|=i,e.lanes=i,e.memoizedState=f}}function vc(e,t,r){if(e=t.effects,t.effects=null,e!==null)for(t=0;tr?r:4,e(!0);var n=ts.transition;ts.transition={};try{e(!1),t()}finally{Z=r,ts.transition=n}}function um(){return vt().memoizedState}function Fh(e,t,r){var n=Sr(e);if(r={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null},cm(e))dm(t,r);else if(r=Hf(e,t,r,n),r!==null){var o=ze();Rt(r,e,n,o),fm(r,t,n)}}function Wh(e,t,r){var n=Sr(e),o={lane:n,action:r,hasEagerState:!1,eagerState:null,next:null};if(cm(e))dm(t,o);else{var l=e.alternate;if(e.lanes===0&&(l===null||l.lanes===0)&&(l=t.lastRenderedReducer,l!==null))try{var i=t.lastRenderedState,a=l(i,r);if(o.hasEagerState=!0,o.eagerState=a,Tt(a,i)){var u=t.interleaved;u===null?(o.next=o,Va(t)):(o.next=u.next,u.next=o),t.interleaved=o;return}}catch{}finally{}r=Hf(e,t,o,n),r!==null&&(o=ze(),Rt(r,e,n,o),fm(r,t,n))}}function cm(e){var t=e.alternate;return e===se||t!==null&&t===se}function dm(e,t){no=Yl=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function fm(e,t,r){if(r&4194240){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,Ra(e,r)}}var Xl={readContext:wt,useCallback:Te,useContext:Te,useEffect:Te,useImperativeHandle:Te,useInsertionEffect:Te,useLayoutEffect:Te,useMemo:Te,useReducer:Te,useRef:Te,useState:Te,useDebugValue:Te,useDeferredValue:Te,useTransition:Te,useMutableSource:Te,useSyncExternalStore:Te,useId:Te,unstable_isNewReconciler:!1},Ah={readContext:wt,useCallback:function(e,t){return Ot().memoizedState=[e,t===void 0?null:t],e},useContext:wt,useEffect:yc,useImperativeHandle:function(e,t,r){return r=r!=null?r.concat([e]):null,Cl(4194308,4,om.bind(null,t,e),r)},useLayoutEffect:function(e,t){return Cl(4194308,4,e,t)},useInsertionEffect:function(e,t){return Cl(4,2,e,t)},useMemo:function(e,t){var r=Ot();return t=t===void 0?null:t,e=e(),r.memoizedState=[e,t],e},useReducer:function(e,t,r){var n=Ot();return t=r!==void 0?r(t):t,n.memoizedState=n.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},n.queue=e,e=e.dispatch=Fh.bind(null,se,e),[n.memoizedState,e]},useRef:function(e){var t=Ot();return e={current:e},t.memoizedState=e},useState:gc,useDebugValue:Za,useDeferredValue:function(e){return Ot().memoizedState=e},useTransition:function(){var e=gc(!1),t=e[0];return e=Uh.bind(null,e[1]),Ot().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,r){var n=se,o=Ot();if(le){if(r===void 0)throw Error(I(407));r=r()}else{if(r=t(),be===null)throw Error(I(349));Vr&30||Yf(n,t,r)}o.memoizedState=r;var l={value:r,getSnapshot:t};return o.queue=l,yc(Gf.bind(null,n,l,e),[e]),n.flags|=2048,No(9,Xf.bind(null,n,l,r,t),void 0,null),r},useId:function(){var e=Ot(),t=be.identifierPrefix;if(le){var r=Kt,n=Ht;r=(n&~(1<<32-It(n)-1)).toString(32)+r,t=":"+t+"R"+r,r=bo++,0<\/script>",e=e.removeChild(e.firstChild)):typeof n.is=="string"?e=i.createElement(r,{is:n.is}):(e=i.createElement(r),r==="select"&&(i=e,n.multiple?i.multiple=!0:n.size&&(i.size=n.size))):e=i.createElementNS(e,r),e[Ut]=t,e[ko]=n,xm(e,t,!1,!1),t.stateNode=e;e:{switch(i=Es(r,n),r){case"dialog":ne("cancel",e),ne("close",e),o=n;break;case"iframe":case"object":case"embed":ne("load",e),o=n;break;case"video":case"audio":for(o=0;ojn&&(t.flags|=128,n=!0,Bn(l,!1),t.lanes=4194304)}else{if(!n)if(e=Jl(i),e!==null){if(t.flags|=128,n=!0,r=e.updateQueue,r!==null&&(t.updateQueue=r,t.flags|=4),Bn(l,!0),l.tail===null&&l.tailMode==="hidden"&&!i.alternate&&!le)return Pe(t),null}else 2*de()-l.renderingStartTime>jn&&r!==1073741824&&(t.flags|=128,n=!0,Bn(l,!1),t.lanes=4194304);l.isBackwards?(i.sibling=t.child,t.child=i):(r=l.last,r!==null?r.sibling=i:t.child=i,l.last=i)}return l.tail!==null?(t=l.tail,l.rendering=t,l.tail=t.sibling,l.renderingStartTime=de(),t.sibling=null,r=ie.current,re(ie,n?r&1|2:r&1),t):(Pe(t),null);case 22:case 23:return lu(),n=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==n&&(t.flags|=8192),n&&t.mode&1?et&1073741824&&(Pe(t),t.subtreeFlags&6&&(t.flags|=8192)):Pe(t),null;case 24:return null;case 25:return null}throw Error(I(156,t.tag))}function Qh(e,t){switch(Wa(t),t.tag){case 1:return Qe(t.type)&&$l(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Cn(),oe(qe),oe(Me),Qa(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return qa(t),null;case 13:if(oe(ie),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(I(340));Sn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return oe(ie),null;case 4:return Cn(),null;case 10:return Ba(t.type._context),null;case 22:case 23:return lu(),null;case 24:return null;default:return null}}var dl=!1,Le=!1,Jh=typeof WeakSet=="function"?WeakSet:Set,D=null;function fn(e,t){var r=e.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(n){ce(e,t,n)}else r.current=null}function ta(e,t,r){try{r()}catch(n){ce(e,t,n)}}var Tc=!1;function Yh(e,t){if(Fs=Fl,e=If(),Ua(e)){if("selectionStart"in e)var r={start:e.selectionStart,end:e.selectionEnd};else e:{r=(r=e.ownerDocument)&&r.defaultView||window;var n=r.getSelection&&r.getSelection();if(n&&n.rangeCount!==0){r=n.anchorNode;var o=n.anchorOffset,l=n.focusNode;n=n.focusOffset;try{r.nodeType,l.nodeType}catch{r=null;break e}var i=0,a=-1,u=-1,c=0,d=0,f=e,m=null;t:for(;;){for(var v;f!==r||o!==0&&f.nodeType!==3||(a=i+o),f!==l||n!==0&&f.nodeType!==3||(u=i+n),f.nodeType===3&&(i+=f.nodeValue.length),(v=f.firstChild)!==null;)m=f,f=v;for(;;){if(f===e)break t;if(m===r&&++c===o&&(a=i),m===l&&++d===n&&(u=i),(v=f.nextSibling)!==null)break;f=m,m=f.parentNode}f=v}r=a===-1||u===-1?null:{start:a,end:u}}else r=null}r=r||{start:0,end:0}}else r=null;for(Ws={focusedElem:e,selectionRange:r},Fl=!1,D=t;D!==null;)if(t=D,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,D=e;else for(;D!==null;){t=D;try{var g=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(g!==null){var y=g.memoizedProps,C=g.memoizedState,w=t.stateNode,h=w.getSnapshotBeforeUpdate(t.elementType===t.type?y:Ct(t.type,y),C);w.__reactInternalSnapshotBeforeUpdate=h}break;case 3:var _=t.stateNode.containerInfo;_.nodeType===1?_.textContent="":_.nodeType===9&&_.documentElement&&_.removeChild(_.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(I(163))}}catch(x){ce(t,t.return,x)}if(e=t.sibling,e!==null){e.return=t.return,D=e;break}D=t.return}return g=Tc,Tc=!1,g}function oo(e,t,r){var n=t.updateQueue;if(n=n!==null?n.lastEffect:null,n!==null){var o=n=n.next;do{if((o.tag&e)===e){var l=o.destroy;o.destroy=void 0,l!==void 0&&ta(t,r,l)}o=o.next}while(o!==n)}}function vi(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var r=t=t.next;do{if((r.tag&e)===e){var n=r.create;r.destroy=n()}r=r.next}while(r!==t)}}function ra(e){var t=e.ref;if(t!==null){var r=e.stateNode;switch(e.tag){case 5:e=r;break;default:e=r}typeof t=="function"?t(e):t.current=e}}function Cm(e){var t=e.alternate;t!==null&&(e.alternate=null,Cm(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Ut],delete t[ko],delete t[$s],delete t[Ph],delete t[Dh])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Nm(e){return e.tag===5||e.tag===3||e.tag===4}function Pc(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Nm(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function na(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?r.nodeType===8?r.parentNode.insertBefore(e,t):r.insertBefore(e,t):(r.nodeType===8?(t=r.parentNode,t.insertBefore(e,r)):(t=r,t.appendChild(e)),r=r._reactRootContainer,r!=null||t.onclick!==null||(t.onclick=zl));else if(n!==4&&(e=e.child,e!==null))for(na(e,t,r),e=e.sibling;e!==null;)na(e,t,r),e=e.sibling}function oa(e,t,r){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?r.insertBefore(e,t):r.appendChild(e);else if(n!==4&&(e=e.child,e!==null))for(oa(e,t,r),e=e.sibling;e!==null;)oa(e,t,r),e=e.sibling}var je=null,Nt=!1;function ir(e,t,r){for(r=r.child;r!==null;)jm(e,t,r),r=r.sibling}function jm(e,t,r){if(Ft&&typeof Ft.onCommitFiberUnmount=="function")try{Ft.onCommitFiberUnmount(ci,r)}catch{}switch(r.tag){case 5:Le||fn(r,t);case 6:var n=je,o=Nt;je=null,ir(e,t,r),je=n,Nt=o,je!==null&&(Nt?(e=je,r=r.stateNode,e.nodeType===8?e.parentNode.removeChild(r):e.removeChild(r)):je.removeChild(r.stateNode));break;case 18:je!==null&&(Nt?(e=je,r=r.stateNode,e.nodeType===8?Gi(e.parentNode,r):e.nodeType===1&&Gi(e,r),ho(e)):Gi(je,r.stateNode));break;case 4:n=je,o=Nt,je=r.stateNode.containerInfo,Nt=!0,ir(e,t,r),je=n,Nt=o;break;case 0:case 11:case 14:case 15:if(!Le&&(n=r.updateQueue,n!==null&&(n=n.lastEffect,n!==null))){o=n=n.next;do{var l=o,i=l.destroy;l=l.tag,i!==void 0&&(l&2||l&4)&&ta(r,t,i),o=o.next}while(o!==n)}ir(e,t,r);break;case 1:if(!Le&&(fn(r,t),n=r.stateNode,typeof n.componentWillUnmount=="function"))try{n.props=r.memoizedProps,n.state=r.memoizedState,n.componentWillUnmount()}catch(a){ce(r,t,a)}ir(e,t,r);break;case 21:ir(e,t,r);break;case 22:r.mode&1?(Le=(n=Le)||r.memoizedState!==null,ir(e,t,r),Le=n):ir(e,t,r);break;default:ir(e,t,r)}}function Dc(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var r=e.stateNode;r===null&&(r=e.stateNode=new Jh),t.forEach(function(n){var o=lw.bind(null,e,n);r.has(n)||(r.add(n),n.then(o,o))})}}function bt(e,t){var r=t.deletions;if(r!==null)for(var n=0;no&&(o=i),n&=~l}if(n=o,n=de()-n,n=(120>n?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Gh(n/1960))-n,10e?16:e,mr===null)var n=!1;else{if(e=mr,mr=null,ei=0,Q&6)throw Error(I(331));var o=Q;for(Q|=4,D=e.current;D!==null;){var l=D,i=l.child;if(D.flags&16){var a=l.deletions;if(a!==null){for(var u=0;ude()-nu?Wr(e,0):ru|=r),Je(e,t)}function Mm(e,t){t===0&&(e.mode&1?(t=rl,rl<<=1,!(rl&130023424)&&(rl=4194304)):t=1);var r=ze();e=Yt(e,t),e!==null&&(Lo(e,t,r),Je(e,r))}function ow(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),Mm(e,r)}function lw(e,t){var r=0;switch(e.tag){case 13:var n=e.stateNode,o=e.memoizedState;o!==null&&(r=o.retryLane);break;case 19:n=e.stateNode;break;default:throw Error(I(314))}n!==null&&n.delete(t),Mm(e,r)}var Om;Om=function(e,t,r){if(e!==null)if(e.memoizedProps!==t.pendingProps||qe.current)Ke=!0;else{if(!(e.lanes&r)&&!(t.flags&128))return Ke=!1,Kh(e,t,r);Ke=!!(e.flags&131072)}else Ke=!1,le&&t.flags&1048576&&Af(t,Hl,t.index);switch(t.lanes=0,t.tag){case 2:var n=t.type;Nl(e,t),e=t.pendingProps;var o=xn(t,Me.current);vn(t,r),o=Ya(null,t,n,e,o,r);var l=Xa();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Qe(n)?(l=!0,Bl(t)):l=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,Ha(t),o.updater=wi,t.stateNode=o,o._reactInternals=t,Qs(t,n,e,r),t=Xs(null,t,n,!0,l,r)):(t.tag=0,le&&l&&Fa(t),Ae(null,t,o,r),t=t.child),t;case 16:n=t.elementType;e:{switch(Nl(e,t),e=t.pendingProps,o=n._init,n=o(n._payload),t.type=n,o=t.tag=sw(n),e=Ct(n,e),o){case 0:t=Ys(null,t,n,e,r);break e;case 1:t=Ec(null,t,n,e,r);break e;case 11:t=Nc(null,t,n,e,r);break e;case 14:t=jc(null,t,n,Ct(n.type,e),r);break e}throw Error(I(306,n,""))}return t;case 0:return n=t.type,o=t.pendingProps,o=t.elementType===n?o:Ct(n,o),Ys(e,t,n,o,r);case 1:return n=t.type,o=t.pendingProps,o=t.elementType===n?o:Ct(n,o),Ec(e,t,n,o,r);case 3:e:{if(gm(t),e===null)throw Error(I(387));n=t.pendingProps,l=t.memoizedState,o=l.element,Kf(e,t),Ql(t,n,null,r);var i=t.memoizedState;if(n=i.element,l.isDehydrated)if(l={element:n,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=l,t.memoizedState=l,t.flags&256){o=Nn(Error(I(423)),t),t=Ic(e,t,n,r,o);break e}else if(n!==o){o=Nn(Error(I(424)),t),t=Ic(e,t,n,r,o);break e}else for(rt=yr(t.stateNode.containerInfo.firstChild),nt=t,le=!0,jt=null,r=Vf(t,null,n,r),t.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(Sn(),n===o){t=Xt(e,t,r);break e}Ae(e,t,n,r)}t=t.child}return t;case 5:return qf(t),e===null&&Hs(t),n=t.type,o=t.pendingProps,l=e!==null?e.memoizedProps:null,i=o.children,As(n,o)?i=null:l!==null&&As(n,l)&&(t.flags|=32),vm(e,t),Ae(e,t,i,r),t.child;case 6:return e===null&&Hs(t),null;case 13:return ym(e,t,r);case 4:return Ka(t,t.stateNode.containerInfo),n=t.pendingProps,e===null?t.child=bn(t,null,n,r):Ae(e,t,n,r),t.child;case 11:return n=t.type,o=t.pendingProps,o=t.elementType===n?o:Ct(n,o),Nc(e,t,n,o,r);case 7:return Ae(e,t,t.pendingProps,r),t.child;case 8:return Ae(e,t,t.pendingProps.children,r),t.child;case 12:return Ae(e,t,t.pendingProps.children,r),t.child;case 10:e:{if(n=t.type._context,o=t.pendingProps,l=t.memoizedProps,i=o.value,re(Kl,n._currentValue),n._currentValue=i,l!==null)if(Tt(l.value,i)){if(l.children===o.children&&!qe.current){t=Xt(e,t,r);break e}}else for(l=t.child,l!==null&&(l.return=t);l!==null;){var a=l.dependencies;if(a!==null){i=l.child;for(var u=a.firstContext;u!==null;){if(u.context===n){if(l.tag===1){u=qt(-1,r&-r),u.tag=2;var c=l.updateQueue;if(c!==null){c=c.shared;var d=c.pending;d===null?u.next=u:(u.next=d.next,d.next=u),c.pending=u}}l.lanes|=r,u=l.alternate,u!==null&&(u.lanes|=r),Ks(l.return,r,t),a.lanes|=r;break}u=u.next}}else if(l.tag===10)i=l.type===t.type?null:l.child;else if(l.tag===18){if(i=l.return,i===null)throw Error(I(341));i.lanes|=r,a=i.alternate,a!==null&&(a.lanes|=r),Ks(i,r,t),i=l.sibling}else i=l.child;if(i!==null)i.return=l;else for(i=l;i!==null;){if(i===t){i=null;break}if(l=i.sibling,l!==null){l.return=i.return,i=l;break}i=i.return}l=i}Ae(e,t,o.children,r),t=t.child}return t;case 9:return o=t.type,n=t.pendingProps.children,vn(t,r),o=wt(o),n=n(o),t.flags|=1,Ae(e,t,n,r),t.child;case 14:return n=t.type,o=Ct(n,t.pendingProps),o=Ct(n.type,o),jc(e,t,n,o,r);case 15:return hm(e,t,t.type,t.pendingProps,r);case 17:return n=t.type,o=t.pendingProps,o=t.elementType===n?o:Ct(n,o),Nl(e,t),t.tag=1,Qe(n)?(e=!0,Bl(t)):e=!1,vn(t,r),mm(t,n,o),Qs(t,n,o,r),Xs(null,t,n,!0,e,r);case 19:return km(e,t,r);case 22:return wm(e,t,r)}throw Error(I(156,t.tag))};function Um(e,t){return cf(e,t)}function iw(e,t,r,n){this.tag=e,this.key=r,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=n,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function _t(e,t,r,n){return new iw(e,t,r,n)}function su(e){return e=e.prototype,!(!e||!e.isReactComponent)}function sw(e){if(typeof e=="function")return su(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Na)return 11;if(e===ja)return 14}return 2}function br(e,t){var r=e.alternate;return r===null?(r=_t(e.tag,t,e.key,e.mode),r.elementType=e.elementType,r.type=e.type,r.stateNode=e.stateNode,r.alternate=e,e.alternate=r):(r.pendingProps=t,r.type=e.type,r.flags=0,r.subtreeFlags=0,r.deletions=null),r.flags=e.flags&14680064,r.childLanes=e.childLanes,r.lanes=e.lanes,r.child=e.child,r.memoizedProps=e.memoizedProps,r.memoizedState=e.memoizedState,r.updateQueue=e.updateQueue,t=e.dependencies,r.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},r.sibling=e.sibling,r.index=e.index,r.ref=e.ref,r}function Il(e,t,r,n,o,l){var i=2;if(n=e,typeof e=="function")su(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case rn:return Ar(r.children,o,l,t);case Ca:i=8,o|=8;break;case vs:return e=_t(12,r,t,o|2),e.elementType=vs,e.lanes=l,e;case gs:return e=_t(13,r,t,o),e.elementType=gs,e.lanes=l,e;case ys:return e=_t(19,r,t,o),e.elementType=ys,e.lanes=l,e;case Kd:return yi(r,o,l,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Vd:i=10;break e;case Hd:i=9;break e;case Na:i=11;break e;case ja:i=14;break e;case sr:i=16,n=null;break e}throw Error(I(130,e==null?e:typeof e,""))}return t=_t(i,r,t,o),t.elementType=e,t.type=n,t.lanes=l,t}function Ar(e,t,r,n){return e=_t(7,e,n,t),e.lanes=r,e}function yi(e,t,r,n){return e=_t(22,e,n,t),e.elementType=Kd,e.lanes=r,e.stateNode={isHidden:!1},e}function is(e,t,r){return e=_t(6,e,null,t),e.lanes=r,e}function ss(e,t,r){return t=_t(4,e.children!==null?e.children:[],e.key,t),t.lanes=r,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function aw(e,t,r,n,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=zi(0),this.expirationTimes=zi(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=zi(0),this.identifierPrefix=n,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function au(e,t,r,n,o,l,i,a,u){return e=new aw(e,t,r,a,u),t===1?(t=1,l===!0&&(t|=8)):t=0,l=_t(3,null,null,t),e.current=l,l.stateNode=e,l.memoizedState={element:n,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ha(l),e}function uw(e,t,r){var n=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(zm)}catch(e){console.error(e)}}zm(),Ad.exports=lt;var pr=Ad.exports,zc=pr;hs.createRoot=zc.createRoot,hs.hydrateRoot=zc.hydrateRoot;/** + * @remix-run/router v1.23.2 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function Eo(){return Eo=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u")throw new Error(t)}function Ci(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function _w(){return Math.random().toString(36).substr(2,8)}function Bc(e,t){return{usr:e.state,key:e.key,idx:t}}function ua(e,t,r,n){return r===void 0&&(r=null),Eo({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?Yr(t):t,{state:r,key:t&&t.key||n||_w()})}function $m(e){let{pathname:t="/",search:r="",hash:n=""}=e;return r&&r!=="?"&&(t+=r.charAt(0)==="?"?r:"?"+r),n&&n!=="#"&&(t+=n.charAt(0)==="#"?n:"#"+n),t}function Yr(e){let t={};if(e){let r=e.indexOf("#");r>=0&&(t.hash=e.substr(r),e=e.substr(0,r));let n=e.indexOf("?");n>=0&&(t.search=e.substr(n),e=e.substr(0,n)),e&&(t.pathname=e)}return t}function hw(e,t,r,n){n===void 0&&(n={});let{window:o=document.defaultView,v5Compat:l=!1}=n,i=o.history,a=_r.Pop,u=null,c=d();c==null&&(c=0,i.replaceState(Eo({},i.state,{idx:c}),""));function d(){return(i.state||{idx:null}).idx}function f(){a=_r.Pop;let C=d(),w=C==null?null:C-c;c=C,u&&u({action:a,location:y.location,delta:w})}function m(C,w){a=_r.Push;let h=ua(y.location,C,w);r&&r(h,C),c=d()+1;let _=Bc(h,c),x=y.createHref(h);try{i.pushState(_,"",x)}catch(k){if(k instanceof DOMException&&k.name==="DataCloneError")throw k;o.location.assign(x)}l&&u&&u({action:a,location:y.location,delta:1})}function v(C,w){a=_r.Replace;let h=ua(y.location,C,w);r&&r(h,C),c=d();let _=Bc(h,c),x=y.createHref(h);i.replaceState(_,"",x),l&&u&&u({action:a,location:y.location,delta:0})}function g(C){let w=o.location.origin!=="null"?o.location.origin:o.location.href,h=typeof C=="string"?C:$m(C);return h=h.replace(/ $/,"%20"),_e(w,"No window.location.(origin|href) available to create URL for href: "+h),new URL(h,w)}let y={get action(){return a},get location(){return e(o,i)},listen(C){if(u)throw new Error("A history only accepts one active listener");return o.addEventListener($c,f),u=C,()=>{o.removeEventListener($c,f),u=null}},createHref(C){return t(o,C)},createURL:g,encodeLocation(C){let w=g(C);return{pathname:w.pathname,search:w.search,hash:w.hash}},push:m,replace:v,go(C){return i.go(C)}};return y}var Vc;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(Vc||(Vc={}));function ww(e,t,r){return r===void 0&&(r="/"),vw(e,t,r)}function vw(e,t,r,n){let o=typeof t=="string"?Yr(t):t,l=Hm(o.pathname||"/",r);if(l==null)return null;let i=Bm(e);gw(i);let a=null;for(let u=0;a==null&&u{let u={relativePath:a===void 0?l.path||"":a,caseSensitive:l.caseSensitive===!0,childrenIndex:i,route:l};u.relativePath.startsWith("/")&&(_e(u.relativePath.startsWith(n),'Absolute route path "'+u.relativePath+'" nested under path '+('"'+n+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),u.relativePath=u.relativePath.slice(n.length));let c=zr([n,u.relativePath]),d=r.concat(u);l.children&&l.children.length>0&&(_e(l.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+c+'".')),Bm(l.children,t,d,c)),!(l.path==null&&!l.index)&&t.push({path:c,score:Nw(c,l.index),routesMeta:d})};return e.forEach((l,i)=>{var a;if(l.path===""||!((a=l.path)!=null&&a.includes("?")))o(l,i);else for(let u of Vm(l.path))o(l,i,u)}),t}function Vm(e){let t=e.split("/");if(t.length===0)return[];let[r,...n]=t,o=r.endsWith("?"),l=r.replace(/\?$/,"");if(n.length===0)return o?[l,""]:[l];let i=Vm(n.join("/")),a=[];return a.push(...i.map(u=>u===""?l:[l,u].join("/"))),o&&a.push(...i),a.map(u=>e.startsWith("/")&&u===""?"/":u)}function gw(e){e.sort((t,r)=>t.score!==r.score?r.score-t.score:jw(t.routesMeta.map(n=>n.childrenIndex),r.routesMeta.map(n=>n.childrenIndex)))}const yw=/^:[\w-]+$/,kw=3,xw=2,Sw=1,bw=10,Cw=-2,Hc=e=>e==="*";function Nw(e,t){let r=e.split("/"),n=r.length;return r.some(Hc)&&(n+=Cw),t&&(n+=xw),r.filter(o=>!Hc(o)).reduce((o,l)=>o+(yw.test(l)?kw:l===""?Sw:bw),n)}function jw(e,t){return e.length===t.length&&e.slice(0,-1).every((n,o)=>n===t[o])?e[e.length-1]-t[t.length-1]:0}function Ew(e,t,r){let{routesMeta:n}=e,o={},l="/",i=[];for(let a=0;a{let{paramName:m,isOptional:v}=d;if(m==="*"){let y=a[f]||"";i=l.slice(0,l.length-y.length).replace(/(.)\/+$/,"$1")}const g=a[f];return v&&!g?c[m]=void 0:c[m]=(g||"").replace(/%2F/g,"/"),c},{}),pathname:l,pathnameBase:i,pattern:e}}function Rw(e,t,r){t===void 0&&(t=!1),r===void 0&&(r=!0),Ci(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let n=[],o="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(i,a,u)=>(n.push({paramName:a,isOptional:u!=null}),u?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(n.push({paramName:"*"}),o+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?o+="\\/*$":e!==""&&e!=="/"&&(o+="(?:(?=\\/|$))"),[new RegExp(o,t?void 0:"i"),n]}function Tw(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return Ci(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function Hm(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let r=t.endsWith("/")?t.length-1:t.length,n=e.charAt(r);return n&&n!=="/"?null:e.slice(r)||"/"}const Pw=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Dw=e=>Pw.test(e);function Lw(e,t){t===void 0&&(t="/");let{pathname:r,search:n="",hash:o=""}=typeof e=="string"?Yr(e):e,l;if(r)if(Dw(r))l=r;else{if(r.includes("//")){let i=r;r=r.replace(/\/\/+/g,"/"),Ci(!1,"Pathnames cannot have embedded double slashes - normalizing "+(i+" -> "+r))}r.startsWith("/")?l=Kc(r.substring(1),"/"):l=Kc(r,t)}else l=t;return{pathname:l,search:Uw(n),hash:Fw(o)}}function Kc(e,t){let r=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(o=>{o===".."?r.length>1&&r.pop():o!=="."&&r.push(o)}),r.length>1?r.join("/"):"/"}function as(e,t,r,n){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(n)+"]. Please separate it out to the ")+("`to."+r+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function Mw(e){return e.filter((t,r)=>r===0||t.route.path&&t.route.path.length>0)}function Km(e,t){let r=Mw(e);return t?r.map((n,o)=>o===r.length-1?n.pathname:n.pathnameBase):r.map(n=>n.pathnameBase)}function qm(e,t,r,n){n===void 0&&(n=!1);let o;typeof e=="string"?o=Yr(e):(o=Eo({},e),_e(!o.pathname||!o.pathname.includes("?"),as("?","pathname","search",o)),_e(!o.pathname||!o.pathname.includes("#"),as("#","pathname","hash",o)),_e(!o.search||!o.search.includes("#"),as("#","search","hash",o)));let l=e===""||o.pathname==="",i=l?"/":o.pathname,a;if(i==null)a=r;else{let f=t.length-1;if(!n&&i.startsWith("..")){let m=i.split("/");for(;m[0]==="..";)m.shift(),f-=1;o.pathname=m.join("/")}a=f>=0?t[f]:"/"}let u=Lw(o,a),c=i&&i!=="/"&&i.endsWith("/"),d=(l||i===".")&&r.endsWith("/");return!u.pathname.endsWith("/")&&(c||d)&&(u.pathname+="/"),u}const zr=e=>e.join("/").replace(/\/\/+/g,"/"),Ow=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),Uw=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,Fw=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function Ww(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const Qm=["post","put","patch","delete"];new Set(Qm);const Aw=["get",...Qm];new Set(Aw);/** + * React Router v6.30.3 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function Io(){return Io=Object.assign?Object.assign.bind():function(e){for(var t=1;t{a.current=!0}),p.useCallback(function(c,d){if(d===void 0&&(d={}),!a.current)return;if(typeof c=="number"){n.go(c);return}let f=qm(c,JSON.parse(i),l,d.relative==="path");e==null&&t!=="/"&&(f.pathname=f.pathname==="/"?t:zr([t,f.pathname])),(d.replace?n.replace:n.push)(f,d.state,d)},[t,n,i,l,e])}function Bw(){let{matches:e}=p.useContext(Tr),t=e[e.length-1];return t?t.params:{}}function Vw(e,t){return Hw(e,t)}function Hw(e,t,r,n){Tn()||_e(!1);let{navigator:o}=p.useContext(Fo),{matches:l}=p.useContext(Tr),i=l[l.length-1],a=i?i.params:{};i&&i.pathname;let u=i?i.pathnameBase:"/";i&&i.route;let c=ji(),d;if(t){var f;let C=typeof t=="string"?Yr(t):t;u==="/"||(f=C.pathname)!=null&&f.startsWith(u)||_e(!1),d=C}else d=c;let m=d.pathname||"/",v=m;if(u!=="/"){let C=u.replace(/^\//,"").split("/");v="/"+m.replace(/^\//,"").split("/").slice(C.length).join("/")}let g=ww(e,{pathname:v}),y=Yw(g&&g.map(C=>Object.assign({},C,{params:Object.assign({},a,C.params),pathname:zr([u,o.encodeLocation?o.encodeLocation(C.pathname).pathname:C.pathname]),pathnameBase:C.pathnameBase==="/"?u:zr([u,o.encodeLocation?o.encodeLocation(C.pathnameBase).pathname:C.pathnameBase])})),l,r,n);return t&&y?p.createElement(Ni.Provider,{value:{location:Io({pathname:"/",search:"",hash:"",state:null,key:"default"},d),navigationType:_r.Pop}},y):y}function Kw(){let e=ev(),t=Ww(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),r=e instanceof Error?e.stack:null,o={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return p.createElement(p.Fragment,null,p.createElement("h2",null,"Unexpected Application Error!"),p.createElement("h3",{style:{fontStyle:"italic"}},t),r?p.createElement("pre",{style:o},r):null,null)}const qw=p.createElement(Kw,null);class Qw extends p.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,r){return r.location!==t.location||r.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:r.error,location:r.location,revalidation:t.revalidation||r.revalidation}}componentDidCatch(t,r){console.error("React Router caught the following error during render",t,r)}render(){return this.state.error!==void 0?p.createElement(Tr.Provider,{value:this.props.routeContext},p.createElement(Jm.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function Jw(e){let{routeContext:t,match:r,children:n}=e,o=p.useContext(fu);return o&&o.static&&o.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=r.route.id),p.createElement(Tr.Provider,{value:t},n)}function Yw(e,t,r,n){var o;if(t===void 0&&(t=[]),r===void 0&&(r=null),n===void 0&&(n=null),e==null){var l;if(!r)return null;if(r.errors)e=r.matches;else if((l=n)!=null&&l.v7_partialHydration&&t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let i=e,a=(o=r)==null?void 0:o.errors;if(a!=null){let d=i.findIndex(f=>f.route.id&&(a==null?void 0:a[f.route.id])!==void 0);d>=0||_e(!1),i=i.slice(0,Math.min(i.length,d+1))}let u=!1,c=-1;if(r&&n&&n.v7_partialHydration)for(let d=0;d=0?i=i.slice(0,c+1):i=[i[0]];break}}}return i.reduceRight((d,f,m)=>{let v,g=!1,y=null,C=null;r&&(v=a&&f.route.id?a[f.route.id]:void 0,y=f.route.errorElement||qw,u&&(c<0&&m===0?(rv("route-fallback"),g=!0,C=null):c===m&&(g=!0,C=f.route.hydrateFallbackElement||null)));let w=t.concat(i.slice(0,m+1)),h=()=>{let _;return v?_=y:g?_=C:f.route.Component?_=p.createElement(f.route.Component,null):f.route.element?_=f.route.element:_=d,p.createElement(Jw,{match:f,routeContext:{outlet:d,matches:w,isDataRoute:r!=null},children:_})};return r&&(f.route.ErrorBoundary||f.route.errorElement||m===0)?p.createElement(Qw,{location:r.location,revalidation:r.revalidation,component:y,error:v,children:h(),routeContext:{outlet:null,matches:w,isDataRoute:!0}}):h()},null)}var Xm=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(Xm||{}),Gm=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(Gm||{});function Xw(e){let t=p.useContext(fu);return t||_e(!1),t}function Gw(e){let t=p.useContext(zw);return t||_e(!1),t}function Zw(e){let t=p.useContext(Tr);return t||_e(!1),t}function Zm(e){let t=Zw(),r=t.matches[t.matches.length-1];return r.route.id||_e(!1),r.route.id}function ev(){var e;let t=p.useContext(Jm),r=Gw(),n=Zm();return t!==void 0?t:(e=r.errors)==null?void 0:e[n]}function tv(){let{router:e}=Xw(Xm.UseNavigateStable),t=Zm(Gm.UseNavigateStable),r=p.useRef(!1);return Ym(()=>{r.current=!0}),p.useCallback(function(o,l){l===void 0&&(l={}),r.current&&(typeof o=="number"?e.navigate(o):e.navigate(o,Io({fromRouteId:t},l)))},[e,t])}const qc={};function rv(e,t,r){qc[e]||(qc[e]=!0)}function nv(e,t){e==null||e.v7_startTransition,e==null||e.v7_relativeSplatPath}function ov(e){let{to:t,replace:r,state:n,relative:o}=e;Tn()||_e(!1);let{future:l,static:i}=p.useContext(Fo),{matches:a}=p.useContext(Tr),{pathname:u}=ji(),c=mu(),d=qm(t,Km(a,l.v7_relativeSplatPath),u,o==="path"),f=JSON.stringify(d);return p.useEffect(()=>c(JSON.parse(f),{replace:r,state:n,relative:o}),[c,f,o,r,n]),null}function Yn(e){_e(!1)}function lv(e){let{basename:t="/",children:r=null,location:n,navigationType:o=_r.Pop,navigator:l,static:i=!1,future:a}=e;Tn()&&_e(!1);let u=t.replace(/^\/*/,"/"),c=p.useMemo(()=>({basename:u,navigator:l,static:i,future:Io({v7_relativeSplatPath:!1},a)}),[u,a,l,i]);typeof n=="string"&&(n=Yr(n));let{pathname:d="/",search:f="",hash:m="",state:v=null,key:g="default"}=n,y=p.useMemo(()=>{let C=Hm(d,u);return C==null?null:{location:{pathname:C,search:f,hash:m,state:v,key:g},navigationType:o}},[u,d,f,m,v,g,o]);return y==null?null:p.createElement(Fo.Provider,{value:c},p.createElement(Ni.Provider,{children:r,value:y}))}function iv(e){let{children:t,location:r}=e;return Vw(ca(t),r)}new Promise(()=>{});function ca(e,t){t===void 0&&(t=[]);let r=[];return p.Children.forEach(e,(n,o)=>{if(!p.isValidElement(n))return;let l=[...t,o];if(n.type===p.Fragment){r.push.apply(r,ca(n.props.children,l));return}n.type!==Yn&&_e(!1),!n.props.index||!n.props.children||_e(!1);let i={id:n.props.id||l.join("-"),caseSensitive:n.props.caseSensitive,element:n.props.element,Component:n.props.Component,index:n.props.index,path:n.props.path,loader:n.props.loader,action:n.props.action,errorElement:n.props.errorElement,ErrorBoundary:n.props.ErrorBoundary,hasErrorBoundary:n.props.ErrorBoundary!=null||n.props.errorElement!=null,shouldRevalidate:n.props.shouldRevalidate,handle:n.props.handle,lazy:n.props.lazy};n.props.children&&(i.children=ca(n.props.children,l)),r.push(i)}),r}/** + * React Router DOM v6.30.3 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */const sv="6";try{window.__reactRouterVersion=sv}catch{}const av="startTransition",Qc=n_[av];function ep(e){let{basename:t,children:r,future:n,window:o}=e,l=p.useRef();l.current==null&&(l.current=pw({window:o,v5Compat:!0}));let i=l.current,[a,u]=p.useState({action:i.action,location:i.location}),{v7_startTransition:c}=n||{},d=p.useCallback(f=>{c&&Qc?Qc(()=>u(f)):u(f)},[u,c]);return p.useLayoutEffect(()=>i.listen(d),[i,d]),p.useEffect(()=>nv(n),[n]),p.createElement(lv,{basename:t,children:r,location:a.location,navigationType:a.action,navigator:i,future:n})}var Jc;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(Jc||(Jc={}));var Yc;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(Yc||(Yc={}));const jr=p.forwardRef(function({id:t,label:r,description:n,indeterminate:o=!1,className:l="",disabled:i,...a},u){const c=p.useId(),d=t??c,f=p.useRef(null);p.useEffect(()=>{f.current&&(f.current.indeterminate=o)},[o]);function m(v){if(f.current=v,typeof u=="function"){u(v);return}u&&(u.current=v)}return s.jsxs("label",{htmlFor:d,className:["checkbox-field",i?"is-disabled":"",l].filter(Boolean).join(" "),children:[s.jsx("input",{...a,ref:m,id:d,type:"checkbox",disabled:i,className:"checkbox-field-input"}),s.jsx("span",{className:"checkbox-field-control","aria-hidden":"true"}),r!=null||n!=null?s.jsxs("span",{className:"checkbox-field-copy",children:[r!=null?s.jsx("span",{className:"checkbox-field-label",children:r}):null,n!=null?s.jsx("span",{className:"checkbox-field-description",children:n}):null]}):null]})});function Pr({open:e,title:t,onClose:r,actions:n,footerStart:o,width:l="normal",initialFocusRef:i,children:a}){const u=p.useRef(r),c=p.useRef(null);return p.useEffect(()=>{u.current=r},[r]),p.useEffect(()=>{if(!e)return;const d=window.requestAnimationFrame(()=>{var m,v;const f=document.activeElement;(m=c.current)!=null&&m.contains(f)||(v=i==null?void 0:i.current)==null||v.focus()});return()=>{window.cancelAnimationFrame(d)}},[i,e]),p.useEffect(()=>{if(!e)return;function d(f){f.key==="Escape"&&u.current()}return document.body.classList.add("modal-open"),document.addEventListener("keydown",d),()=>{document.body.classList.remove("modal-open"),document.removeEventListener("keydown",d)}},[e]),e?pr.createPortal(s.jsx("div",{className:"modal-overlay",onClick:d=>{d.target===d.currentTarget&&r()},children:s.jsxs("div",{ref:c,className:`modal-card ${l==="wide"?"modal-card-wide":""} ${l==="xwide"?"modal-card-xwide":""}`,role:"dialog","aria-modal":"true",children:[s.jsx("div",{className:"modal-header",children:s.jsx("h3",{className:"card-title",children:t})}),s.jsx("div",{className:"modal-body",children:a}),n||o?s.jsxs("div",{className:"modal-actions",children:[s.jsx("div",{className:"modal-actions-leading",children:o}),s.jsx("div",{className:"modal-actions-trailing",children:n})]}):null]})}),document.body):null}function uv(e){const t=p.useRef(null);return s.jsxs(Pr,{open:e.open,title:e.title,onClose:e.onCancel,initialFocusRef:t,actions:s.jsxs(s.Fragment,{children:[s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:e.onCancel,children:e.cancelLabel}),s.jsx("button",{ref:t,type:"button",className:`btn ${e.tone==="danger"?"btn-danger":"btn-primary"}`,onClick:e.onConfirm,children:e.confirmLabel})]}),children:[s.jsx("p",{className:"confirm-modal-message",children:e.message}),e.checkboxLabel?s.jsx(jr,{checked:!!e.checkboxChecked,className:"confirm-modal-checkbox",onChange:r=>{var n;return(n=e.onCheckboxChange)==null?void 0:n.call(e,r.target.checked)},label:e.checkboxLabel}):null]})}const cv={success:{icon:"✓",title:"Success"},error:{icon:"!",title:"Error"},info:{icon:"i",title:"Notice"}};function dv({toast:e,onDismiss:t}){const r=p.useRef(null),n=p.useRef(null),o=p.useRef(Date.now()),l=p.useRef(3200),i=p.useRef(()=>{}),a=p.useRef(!1),[u,c]=p.useState(!1),d=cv[e.type];p.useEffect(()=>{a.current=!1,c(!1);function v(){n.current||a.current||(a.current=!0,c(!0),n.current=window.setTimeout(()=>{t(e.id)},260))}function g(y){r.current&&window.clearTimeout(r.current),o.current=Date.now(),r.current=window.setTimeout(v,y)}return i.current=v,l.current=3200,g(l.current),()=>{r.current&&window.clearTimeout(r.current),n.current&&window.clearTimeout(n.current)}},[t,e.id]);function f(){u||(r.current&&window.clearTimeout(r.current),l.current=Math.max(0,l.current-(Date.now()-o.current)))}function m(){u||(r.current&&window.clearTimeout(r.current),o.current=Date.now(),r.current=window.setTimeout(()=>i.current(),l.current))}return s.jsxs("div",{className:`toast ${e.type} ${u?"closing":""}`.trim(),role:e.type==="error"?"alert":"status","aria-live":e.type==="error"?"assertive":"polite",onMouseEnter:f,onMouseLeave:m,children:[s.jsx("span",{className:"toast-icon","aria-hidden":"true",children:d.icon}),s.jsxs("div",{className:"toast-body",children:[s.jsx("p",{className:"toast-title",children:d.title}),s.jsx("p",{className:"toast-message",children:e.message})]}),s.jsx("button",{type:"button",className:"toast-close","aria-label":"Close notification",onClick:()=>i.current(),children:"×"})]})}function fv({toasts:e,onDismiss:t}){return s.jsx("div",{id:"toast-container","aria-live":"polite","aria-atomic":"true",children:e.map(r=>s.jsx(dv,{toast:r,onDismiss:t},r.id))})}class tp extends Error{constructor(r,n={}){super(r);Yo(this,"status");Yo(this,"detail");Yo(this,"code");this.name="ApiError",this.status=n.status,this.detail=n.detail,this.code=n.code}}function mv(e){return Array.isArray(e)&&e.map(r=>r&&typeof r=="object"?r.msg||r.message:null).filter(Boolean).join("; ")||null}async function J(e,t={}){const r=await fetch(e,{...t,headers:{...t.body?{"Content-Type":"application/json"}:{},...t.headers||{}}}),n=await r.text();let o=null;if(n)try{o=JSON.parse(n)}catch{o=n}if(!r.ok){const l=o&&typeof o=="object"?o:null,i=mv(l==null?void 0:l.detail)||(l==null?void 0:l.detail)||(l==null?void 0:l.message)||(typeof o=="string"?o:void 0)||r.statusText||"Request failed";throw new tp(i,{status:r.status,detail:l==null?void 0:l.detail,code:l==null?void 0:l.code})}return o??{}}const ni="update-banner-feedback";function pv(){return J("/api/system/check-update")}function _v(){return J("/api/system/update",{method:"POST"})}function hv(){return J("/api/system/restart",{method:"POST"})}function wv(e){sessionStorage.setItem(ni,JSON.stringify(e))}function vv(){const e=sessionStorage.getItem(ni);if(!e)return null;try{return JSON.parse(e)}catch{return sessionStorage.removeItem(ni),null}}function Rl(){sessionStorage.removeItem(ni)}const gv=45e3;function yv(e,t){return e.component==="system"&&e.commit_before&&e.commit_after?t("update_result_system",{before:e.commit_before,after:e.commit_after}):e.component==="frontend"&&e.commit_before&&e.commit_after?t("update_result_frontend",{before:e.commit_before,after:e.commit_after}):e.message||t("update_result_generic")}function Xc(e,t){return e.status==="success"?yv(e,t):e.message||t("update_failed")}function kv(e,t=Date.now()){const r=new URL(e.href);return r.searchParams.set("__ui_reload",String(t)),r.searchParams.delete("__ui_recovery"),r.toString()}function xv(e){window.location.replace(e)}function Sv(){const e=new URL(window.location.href);(e.searchParams.has("__ui_reload")||e.searchParams.has("__ui_recovery"))&&(e.searchParams.delete("__ui_reload"),e.searchParams.delete("__ui_recovery"),window.history.replaceState(null,"",e.toString()))}function bv({localCommit:e,remoteCommit:t,feedback:r,onDismiss:n,t:o}){const[l,i]=p.useState("idle"),[a,u]=p.useState("");async function c(){i("updating"),u(""),sessionStorage.removeItem("update-banner-dismissed"),Rl();try{const m=await _v();if(!m.success){u(m.message||"Unknown error"),i("error");return}wv({status:"success",component:m.component,message:m.message,commit_before:m.commit_before,commit_after:m.commit_after}),i("restarting"),await hv(),i("waiting");const v=Date.now(),g=window.setInterval(async()=>{try{if((await fetch("/api/servers")).ok){window.clearInterval(g),i("done"),setTimeout(()=>{xv(kv(window.location))},800);return}}catch{}Date.now()-v>=gv&&(window.clearInterval(g),Rl(),u(o("update_wait_timeout")),i("error"))},1500)}catch(m){Rl(),u(m instanceof Error?m.message:String(m)),i("error")}}const d=l==="error"||(r==null?void 0:r.status)==="error"?"is-error":(r==null?void 0:r.status)==="success"?"is-success":"is-info",f=l==="idle"?r:null;return s.jsxs("div",{className:`update-banner ${d}`,role:"status",children:[s.jsx("span",{className:"update-banner-icon",children:"↑"}),s.jsxs("div",{className:"update-banner-body",children:[l==="idle"&&!f&&s.jsx("p",{className:"update-banner-message",children:o("update_available",{local:e,remote:t})}),l==="idle"&&(f==null?void 0:f.status)==="success"&&s.jsxs(s.Fragment,{children:[s.jsx("p",{className:"update-banner-message",children:o("update_success")}),s.jsx("p",{className:"update-banner-detail",children:Xc(f,o)})]}),l==="idle"&&(f==null?void 0:f.status)==="error"&&s.jsxs(s.Fragment,{children:[s.jsx("p",{className:"update-banner-message update-banner-error",children:o("update_failed")}),s.jsx("p",{className:"update-banner-detail update-banner-error",children:Xc(f,o)})]}),l==="updating"&&s.jsx("p",{className:"update-banner-message",children:o("update_pulling")}),l==="restarting"&&s.jsx("p",{className:"update-banner-message",children:o("update_restarting")}),l==="waiting"&&s.jsx("p",{className:"update-banner-message",children:o("update_waiting")}),l==="done"&&s.jsx("p",{className:"update-banner-message",children:o("update_done")}),l==="error"&&s.jsxs("p",{className:"update-banner-message update-banner-error",children:[o("update_failed"),": ",a]})]}),s.jsxs("div",{className:"update-banner-actions",children:[l==="idle"&&!f&&s.jsx("button",{className:"btn btn-primary btn-sm",onClick:c,children:o("update_now")}),(l==="idle"||l==="error")&&s.jsx("button",{className:"update-banner-close",onClick:n,"aria-label":o("update_dismiss"),children:"✕"})]})]})}function Gc({warnings:e,t}){return e.length===0?null:s.jsxs("div",{className:"transfer-warning-list",children:[s.jsx("p",{className:"transfer-warning-title",children:t("transfer_warning_title")}),e.map(r=>s.jsx("p",{className:"transfer-warning-item",children:r},r))]})}function Cv({server:e,selectedWorkflowIds:t,expanded:r,onToggleServerSelection:n,onToggleWorkflowSelection:o,onToggleExpanded:l,t:i}){const a=e.workflows.length,u=t.length,c=a>0&&u===a,d=u>0&&u{f.current&&(f.current.indeterminate=d)},[d]),s.jsxs("article",{className:`transfer-export-server ${r?"is-open":""}`,children:[s.jsxs("div",{className:"transfer-export-server-head",children:[s.jsx(jr,{ref:f,checked:c,indeterminate:d,onChange:()=>n(e),className:"transfer-export-item transfer-export-item-summary",label:s.jsxs("span",{className:"transfer-export-server-title-row",children:[s.jsx("span",{children:e.name||e.server_id}),e.enabled?null:s.jsx("span",{className:"transfer-chip transfer-chip-muted",children:i("export_server_disabled")})]}),description:i("export_selected_count",{selected:u,total:a})}),s.jsx("button",{type:"button",className:"btn btn-secondary btn-icon transfer-export-toggle","aria-label":i("export_toggle_server",{server:e.name||e.server_id}),onClick:()=>l(e.server_id),children:s.jsx("span",{className:"transfer-export-chevron","aria-hidden":"true"})})]}),s.jsx("div",{className:"transfer-export-workflows-wrap",children:s.jsx("div",{className:"transfer-export-workflows",children:e.workflows.map(m=>s.jsx(jr,{checked:t.includes(m.workflow_id),className:"transfer-export-item",onChange:()=>o(e.server_id,m.workflow_id),label:s.jsxs("span",{className:"transfer-export-workflow-title-row",children:[s.jsx("span",{children:m.workflow_id}),m.enabled?null:s.jsx("span",{className:"transfer-chip transfer-chip-muted",children:i("export_workflow_disabled")})]}),description:m.description},`${e.server_id}-${m.workflow_id}`))})})]})}function Nv({title:e,items:t,t:r}){return s.jsxs("section",{className:"transfer-section",children:[s.jsx("h4",{className:"transfer-section-title",children:e}),t.length===0?s.jsx("p",{className:"transfer-empty",children:r("transfer_section_empty")}):s.jsx("ul",{className:"transfer-list",children:t.map((n,o)=>s.jsx("li",{children:n.workflow_id?`${n.server_id}/${n.workflow_id}`:n.server_id},`${n.server_id}-${n.workflow_id||"server"}-${o}`))})]})}function jv(e){var a,u,c;const t=p.useRef(null),r=e.loading?()=>{}:e.onClose,n=p.useMemo(()=>e.exportSelection.servers.reduce((d,f)=>d+f.workflow_ids.length,0),[e.exportSelection]),o=((a=e.exportPreview)==null?void 0:a.warnings.map(d=>d.message))||[],l=e.loading,i=e.loading||n===0;return s.jsx(Pr,{open:e.open,width:"wide",title:e.mode==="export"?e.t("export_bundle_title"):e.t("import_bundle_preview_title"),onClose:r,initialFocusRef:t,actions:s.jsxs(s.Fragment,{children:[s.jsx("button",{type:"button",className:"btn btn-secondary",disabled:e.loading,onClick:r,children:e.t("cancel")}),s.jsx("button",{ref:t,type:"button",className:"btn btn-primary",disabled:e.mode==="export"?i:l,onClick:e.onConfirm,children:e.mode==="export"?e.t("export_bundle_confirm"):e.t("import_bundle_confirm")})]}),children:e.mode==="export"?s.jsx("div",{className:"transfer-modal-body",children:s.jsxs("section",{className:"transfer-panel",children:[s.jsx("p",{className:"transfer-hint",children:e.t("export_panel_hint")}),s.jsx("p",{className:"confirm-modal-message",children:e.t("export_preview_summary",{servers:e.exportSelection.servers.filter(d=>d.workflow_ids.length>0).length,workflows:n,warnings:((u=e.exportPreview)==null?void 0:u.summary.warnings)||0})}),s.jsx("div",{className:"transfer-export-tree",children:(((c=e.exportPreview)==null?void 0:c.servers)||[]).map(d=>{const f=e.exportSelection.servers.find(m=>m.server_id===d.server_id);return s.jsx(Cv,{server:d,selectedWorkflowIds:(f==null?void 0:f.workflow_ids)||[],expanded:e.expandedServerIds.includes(d.server_id),onToggleServerSelection:e.onToggleServerSelection,onToggleWorkflowSelection:e.onToggleWorkflowSelection,onToggleExpanded:e.onToggleServerExpanded,t:e.t},d.server_id)})}),s.jsx(Gc,{warnings:o,t:e.t})]})}):s.jsx("div",{className:"transfer-modal-body",children:s.jsxs("section",{className:"transfer-panel",children:[s.jsx("p",{className:"confirm-modal-message",children:e.importPreviewSummary}),s.jsx("div",{className:"transfer-sections",children:e.importSections.map(d=>s.jsx(Nv,{title:d.title,items:d.items,t:e.t},d.title))}),s.jsx(jr,{id:"transfer-import-apply-environment",checked:e.applyEnvironment,className:"confirm-modal-checkbox",onChange:d=>e.onApplyEnvironmentChange(d.target.checked),label:e.t("transfer_apply_environment")}),s.jsx(Gc,{warnings:e.importWarnings,t:e.t})]})})})}function Zc(e){return e.map((t,r)=>s.jsx("li",{className:"bulk-import-item",children:s.jsxs("div",{className:"bulk-import-item-main",children:[s.jsxs("div",{className:"bulk-import-item-title-row",children:[s.jsx("span",{className:"bulk-import-item-id",children:t.final_workflow_id||t.workflow_id||"workflow"}),t.workflow_id&&t.final_workflow_id&&t.workflow_id!==t.final_workflow_id?s.jsxs("span",{className:"bulk-import-item-rename",children:[t.workflow_id," -> ",t.final_workflow_id]}):null]}),t.description?s.jsx("p",{className:"bulk-import-item-description",children:t.description}):null,s.jsx("p",{className:"bulk-import-item-source",children:t.source_label}),t.reason?s.jsx("p",{className:"bulk-import-item-reason",children:t.reason}):null]})},`${t.source_label}-${t.final_workflow_id||t.workflow_id||"item"}-${r}`))}function Ev(e){var l,i,a,u,c,d,f;const t=p.useRef(null),r=((l=e.preview)==null?void 0:l.items.filter(m=>m.status==="ready"||m.status==="renamed"))||[],n=((i=e.preview)==null?void 0:i.items.filter(m=>m.status==="failed"))||[],o=r.length>0;return s.jsxs(Pr,{open:e.open,title:e.t("editor_import_comfyui_preview_title"),onClose:e.onClose,width:"wide",initialFocusRef:t,actions:s.jsxs(s.Fragment,{children:[s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:e.onClose,children:e.t("cancel")}),s.jsx("button",{ref:t,type:"button",className:"btn btn-primary",onClick:e.onConfirm,disabled:!o||e.loading,children:e.loading?e.t("bulk_import_loading"):e.t("editor_import_comfyui_preview_confirm_action")})]}),children:[s.jsx("p",{className:"confirm-modal-message",children:e.currentServerLabel?e.t("editor_import_comfyui_preview_message_with_server",{server:e.currentServerLabel}):e.t("editor_import_comfyui_preview_message")}),s.jsxs("div",{className:"bulk-import-summary",children:[s.jsx("span",{className:"panel-meta",children:e.t("editor_import_comfyui_preview_summary_total",{count:((a=e.preview)==null?void 0:a.summary.total)||0})}),s.jsx("span",{className:"panel-meta",children:e.t("editor_import_comfyui_preview_summary_importable",{count:((u=e.preview)==null?void 0:u.summary.importable)||0})}),s.jsx("span",{className:"panel-meta",children:e.t("editor_import_comfyui_preview_summary_renamed",{count:((c=e.preview)==null?void 0:c.summary.renamed)||0})}),s.jsx("span",{className:"panel-meta",children:e.t("editor_import_comfyui_preview_summary_failed",{count:((d=e.preview)==null?void 0:d.summary.failed)||0})})]}),(f=e.preview)!=null&&f.summary.total?s.jsxs("div",{className:"bulk-import-sections",children:[s.jsxs("section",{className:"bulk-import-section","aria-labelledby":"comfyui-preview-importable",children:[s.jsxs("div",{className:"section-header",children:[s.jsx("h4",{id:"comfyui-preview-importable",className:"card-title",children:e.t("editor_import_comfyui_preview_section_importable")}),s.jsx("span",{className:"section-meta",children:e.t("bulk_import_section_count",{count:r.length})})]}),r.length?s.jsx("ul",{className:"bulk-import-list",children:Zc(r)}):s.jsx("div",{className:"empty-state",children:e.t("editor_import_comfyui_preview_empty")})]}),n.length?s.jsxs("section",{className:"bulk-import-section","aria-labelledby":"comfyui-preview-failed",children:[s.jsxs("div",{className:"section-header",children:[s.jsx("h4",{id:"comfyui-preview-failed",className:"card-title",children:e.t("editor_import_comfyui_preview_section_failed")}),s.jsx("span",{className:"section-meta",children:e.t("bulk_import_section_count",{count:n.length})})]}),s.jsx("ul",{className:"bulk-import-list",children:Zc(n)})]}):null]}):s.jsx("div",{className:"empty-state",children:e.t("editor_import_comfyui_preview_empty")})]})}function Iv(e){return e.map((t,r)=>s.jsx("li",{className:"bulk-import-item",children:s.jsxs("div",{className:"bulk-import-item-main",children:[s.jsxs("div",{className:"bulk-import-item-title-row",children:[s.jsx("span",{className:"bulk-import-item-id",children:t.final_workflow_id||t.workflow_id||"workflow"}),t.workflow_id&&t.final_workflow_id&&t.workflow_id!==t.final_workflow_id?s.jsxs("span",{className:"bulk-import-item-rename",children:[t.workflow_id," -> ",t.final_workflow_id]}):null]}),s.jsx("p",{className:"bulk-import-item-source",children:t.source_label}),t.reason?s.jsx("p",{className:"bulk-import-item-reason",children:t.reason}):null]})},`${t.source_label}-${t.final_workflow_id||t.workflow_id||"item"}-${r}`))}function Rv(e){const t=e.report,r=[{title:e.t("bulk_import_section_created"),items:(t==null?void 0:t.items.filter(n=>n.status==="created"))||[]},{title:e.t("bulk_import_section_renamed"),items:(t==null?void 0:t.items.filter(n=>n.status==="renamed"))||[]},{title:e.t("bulk_import_section_skipped"),items:(t==null?void 0:t.items.filter(n=>n.status==="skipped"))||[]},{title:e.t("bulk_import_section_failed"),items:(t==null?void 0:t.items.filter(n=>n.status==="failed"))||[]}];return s.jsxs(Pr,{open:e.open,title:e.t(e.source==="comfyui"?"bulk_import_report_title_comfyui":"bulk_import_report_title_local"),onClose:e.onClose,width:"wide",actions:s.jsx("button",{type:"button",className:"btn btn-primary",onClick:e.onClose,children:e.t("confirm")}),children:[s.jsxs("div",{className:"bulk-import-summary",children:[s.jsx("span",{className:"panel-meta",children:e.t("bulk_import_summary_created",{count:(t==null?void 0:t.summary.created)||0})}),s.jsx("span",{className:"panel-meta",children:e.t("bulk_import_summary_renamed",{count:(t==null?void 0:t.summary.renamed)||0})}),s.jsx("span",{className:"panel-meta",children:e.t("bulk_import_summary_skipped",{count:(t==null?void 0:t.summary.skipped)||0})}),s.jsx("span",{className:"panel-meta",children:e.t("bulk_import_summary_failed",{count:(t==null?void 0:t.summary.failed)||0})})]}),s.jsx("div",{className:"bulk-import-sections",children:r.map(n=>s.jsxs("section",{className:"bulk-import-section","aria-labelledby":`bulk-import-${n.title}`,children:[s.jsxs("div",{className:"section-header",children:[s.jsx("h4",{id:`bulk-import-${n.title}`,className:"card-title",children:n.title}),s.jsx("span",{className:"section-meta",children:e.t("bulk_import_section_count",{count:n.items.length})})]}),n.items.length?s.jsx("ul",{className:"bulk-import-list",children:Iv(n.items)}):s.jsx("div",{className:"empty-state",children:e.t("bulk_import_section_empty")})]},n.title))})]})}function Tv(e){const{report:t,installReport:r}=e,[n,o]=p.useState(new Set),l=(t==null?void 0:t.missing_nodes.filter(m=>m.can_auto_install&&m.source_repo).map(m=>m.source_repo))||[],i=[...new Set(l)];if(n.size===0&&i.length>0&&!r){const m=new Set(i);m.size!==n.size&&o(m)}function a(m){o(v=>{const g=new Set(v);return g.has(m)?g.delete(m):g.add(m),g})}function u(){e.onInstall([...n])}if(!t)return null;const c=r!==null,d=t.missing_nodes.filter(m=>!m.can_auto_install),f=new Map;for(const m of t.missing_nodes)if(m.source_repo){const v=f.get(m.source_repo)||[];v.push(m.class_type),f.set(m.source_repo,v)}return s.jsxs(Pr,{open:e.open,title:e.t("dep_check_title"),onClose:e.onClose,width:"wide",actions:c?s.jsx("button",{type:"button",className:"btn btn-primary",onClick:e.onClose,children:e.t("confirm")}):t.is_ready?s.jsx("button",{type:"button",className:"btn btn-primary",onClick:e.onClose,children:e.t("confirm")}):s.jsxs(s.Fragment,{children:[s.jsx("button",{type:"button",className:"btn btn-ghost",onClick:e.onClose,children:e.t("dep_check_skip")}),i.length>0&&s.jsx("button",{type:"button",className:"btn btn-primary",disabled:e.installing||n.size===0,onClick:u,children:e.installing?e.t("dep_check_installing"):e.t("dep_check_install_selected")})]}),children:[s.jsx("div",{className:"dep-check-summary",children:t.is_ready?s.jsxs("div",{className:"dep-check-ready",children:[s.jsx("span",{className:"dep-check-icon",children:"✅"}),s.jsx("span",{children:e.t("dep_check_all_ready")})]}):s.jsx("p",{className:"dep-check-warning",children:t.summary})}),c&&s.jsxs("section",{className:"dep-check-section",children:[s.jsx("div",{className:"section-header",children:s.jsx("h4",{className:"card-title",children:e.t("dep_check_install_results")})}),s.jsx("ul",{className:"dep-check-list",children:r.results.map(m=>s.jsxs("li",{className:`dep-check-item ${m.success?"dep-check-item-ok":"dep-check-item-fail"}`,children:[s.jsx("span",{className:"dep-check-item-icon",children:m.success?"✅":"❌"}),s.jsxs("div",{className:"dep-check-item-detail",children:[s.jsx("span",{className:"dep-check-item-name",children:m.package_name}),s.jsx("span",{className:"dep-check-item-msg",children:m.message})]})]},m.repo_url))}),r.needs_restart&&s.jsx("p",{className:"dep-check-restart-hint",children:e.t("dep_check_needs_restart")})]}),!c&&i.length>0&&s.jsxs("section",{className:"dep-check-section",children:[s.jsxs("div",{className:"section-header",children:[s.jsx("h4",{className:"card-title",children:e.t("dep_check_missing_nodes")}),s.jsx("span",{className:"section-meta",children:e.t("dep_check_packages_count",{count:i.length})})]}),s.jsx("ul",{className:"dep-check-list",children:i.map(m=>{const v=f.get(m)||[],g=t.missing_nodes.find(y=>y.source_repo===m);return s.jsx("li",{className:"dep-check-item dep-check-item-installable",children:s.jsxs("label",{className:"dep-check-item-label",children:[s.jsx("input",{type:"checkbox",checked:n.has(m),onChange:()=>a(m),disabled:e.installing}),s.jsxs("div",{className:"dep-check-item-detail",children:[s.jsx("span",{className:"dep-check-item-name",children:(g==null?void 0:g.package_name)||m.split("/").pop()}),s.jsx("span",{className:"dep-check-item-nodes",children:v.length<=3?v.join(", "):`${v.slice(0,3).join(", ")} +${v.length-3}`})]})]})},m)})})]}),!c&&d.length>0&&s.jsxs("section",{className:"dep-check-section",children:[s.jsx("div",{className:"section-header",children:s.jsx("h4",{className:"card-title",children:e.t("dep_check_unknown_nodes")})}),s.jsx("ul",{className:"dep-check-list",children:d.map(m=>s.jsxs("li",{className:"dep-check-item dep-check-item-unknown",children:[s.jsx("span",{className:"dep-check-item-icon",children:"⚠️"}),s.jsx("span",{className:"dep-check-item-name",children:m.class_type})]},m.class_type))})]}),!c&&t.missing_models.length>0&&s.jsxs("section",{className:"dep-check-section",children:[s.jsx("div",{className:"section-header",children:s.jsx("h4",{className:"card-title",children:e.t("dep_check_missing_models")})}),s.jsx("ul",{className:"dep-check-list",children:t.missing_models.map(m=>s.jsxs("li",{className:"dep-check-item dep-check-item-model",children:[s.jsx("span",{className:"dep-check-item-icon",children:"📦"}),s.jsxs("div",{className:"dep-check-item-detail",children:[s.jsx("span",{className:"dep-check-item-name",children:m.filename}),s.jsx("span",{className:"dep-check-item-msg",children:e.t("dep_check_model_folder",{folder:m.folder})})]})]},`${m.folder}-${m.filename}`))})]})]})}function Pv(e,t){const r=e.filter(o=>!o.disabled),n=r.findIndex(o=>o.value===t);return{enabledOptions:r,currentIndex:n>=0?n:0}}function qr({id:e,value:t,options:r,onChange:n,ariaLabel:o,ariaLabelledBy:l,className:i="",disabled:a=!1}){const[u,c]=p.useState(!1),[d,f]=p.useState(null),m=p.useRef(null),v=p.useRef(null),g=p.useId(),y=p.useMemo(()=>r.find(k=>k.value===t)??r[0]??null,[r,t]);function C(){const k=v.current;if(!k)return;const S=k.getBoundingClientRect();f({top:S.bottom+8,left:S.left,width:S.width})}function w(){c(!1)}function h(){document.querySelectorAll(".custom-select-host-open").forEach(k=>{k.classList.remove("custom-select-host-open")})}p.useLayoutEffect(()=>{var S;if(!u){h();return}C();const k=(S=m.current)==null?void 0:S.closest(".card, .app-header, .server-config-container");return k instanceof HTMLElement&&(h(),k.classList.add("custom-select-host-open")),()=>{h()}},[u]),p.useEffect(()=>{if(!u)return;function k(b){var E,L;const j=b.target;(E=m.current)!=null&&E.contains(j)||(L=j==null?void 0:j.closest)!=null&&L.call(j,`[data-custom-select-menu="${g}"]`)||w()}function S(b){var j;b.key==="Escape"&&(w(),(j=v.current)==null||j.focus())}function N(){C()}return document.addEventListener("mousedown",k),document.addEventListener("keydown",S),window.addEventListener("resize",N),window.addEventListener("scroll",N,!0),()=>{document.removeEventListener("mousedown",k),document.removeEventListener("keydown",S),window.removeEventListener("resize",N),window.removeEventListener("scroll",N,!0)}},[g,u]),p.useEffect(()=>()=>h(),[]);function _(k){const{enabledOptions:S,currentIndex:N}=Pv(r,t);if(!S.length)return;const b=(N+k+S.length)%S.length;n(S[b].value)}function x(k){if(!a){if(k.key==="ArrowDown"){k.preventDefault(),_(1);return}if(k.key==="ArrowUp"){k.preventDefault(),_(-1);return}if(k.key==="Enter"||k.key===" "){k.preventDefault(),c(S=>!S);return}k.key==="Escape"&&w()}}return s.jsxs("div",{ref:m,className:`custom-select ${u?"is-open":""} ${a?"is-disabled":""} ${i}`.trim(),children:[s.jsxs("button",{id:e,ref:v,type:"button",className:"custom-select-trigger","aria-haspopup":"listbox","aria-expanded":u,"aria-controls":g,"aria-label":o,"aria-labelledby":l,disabled:a,onClick:()=>!a&&c(k=>!k),onKeyDown:x,children:[s.jsx("span",{className:"custom-select-value",children:(y==null?void 0:y.label)??""}),s.jsx("span",{className:"custom-select-chevron","aria-hidden":"true"})]}),u&&d?pr.createPortal(s.jsx("div",{id:g,className:"custom-select-menu is-open",role:"listbox","data-custom-select-menu":g,style:{position:"fixed",top:`${d.top}px`,left:`${d.left}px`,width:`${d.width}px`},children:r.map(k=>{const S=k.value===t;return s.jsx("button",{type:"button",className:`custom-select-option ${S?"is-selected":""}`.trim(),role:"option","aria-selected":S,disabled:k.disabled,onClick:()=>{var N;n(k.value),w(),(N=v.current)==null||N.focus()},children:k.label},k.value)})}),document.body):null]})}function pt({label:e,htmlFor:t,helpText:r,required:n=!1,className:o="",labelClassName:l="",noMargin:i=!1,children:a}){return s.jsxs("div",{className:`form-group field-shell ${i?"is-no-margin":""} ${o}`.trim(),children:[e!=null?s.jsxs("label",{htmlFor:t,className:`field-label ${l}`.trim(),children:[s.jsx("span",{className:"field-label-text",children:e}),n?s.jsx("span",{className:"field-required","aria-hidden":"true",children:"*"}):null]}):null,a,r?s.jsx("p",{className:"field-help",children:r}):null]})}const Wo=p.forwardRef(function({id:t,label:r,description:n,className:o="",disabled:l,ariaLabel:i,...a},u){const c=p.useId(),d=t??c;return s.jsxs("label",{htmlFor:d,className:["switch-field",l?"is-disabled":"",o].filter(Boolean).join(" "),children:[r!=null||n!=null?s.jsxs("span",{className:"switch-field-copy",children:[r!=null?s.jsx("span",{className:"switch-field-label",children:r}):null,n!=null?s.jsx("span",{className:"switch-field-description",children:n}):null]}):null,s.jsxs("span",{className:"switch-field-control",children:[s.jsx("input",{...a,ref:u,id:d,type:"checkbox",disabled:l,"aria-label":i,className:"switch-input"}),s.jsx("span",{className:"switch-track","aria-hidden":"true",children:s.jsx("span",{className:"switch-thumb"})})]})]})}),Dv=p.forwardRef(function({fieldClassName:t="",textareaClassName:r="",disabled:n,rows:o=5,...l},i){return s.jsx("div",{className:["field-control","textarea-field",n?"is-disabled":"",t].filter(Boolean).join(" "),children:s.jsx("textarea",{...l,ref:i,rows:o,disabled:n,className:["field-textarea",r].filter(Boolean).join(" ")})})}),tt=p.forwardRef(function({fieldClassName:t="",inputClassName:r="",trailingAction:n,disabled:o,type:l="text",...i},a){return s.jsxs("div",{className:["field-control","text-field",n?"has-trailing":"",o?"is-disabled":"",t].filter(Boolean).join(" "),children:[s.jsx("input",{...i,ref:a,disabled:o,type:l,className:["field-input",r].filter(Boolean).join(" ")}),n?s.jsx("div",{className:"field-control-trailing",children:n}):null]})});function Lv(e){const[t,r]=p.useState(!1),[n,o]=p.useState(null),l=p.useRef(null);p.useEffect(()=>()=>{n&&URL.revokeObjectURL(n)},[n]);async function i(a){var c;const u=(c=a.target.files)==null?void 0:c[0];if(u){n&&URL.revokeObjectURL(n),o(URL.createObjectURL(u)),r(!0);try{const d=await e.onUploadImage(e.serverId,u);e.onChange(d)}catch{o(null)}finally{r(!1)}}}return s.jsxs("div",{className:"run-workflow-image-upload",children:[s.jsxs("div",{className:"run-workflow-image-controls",children:[s.jsx("button",{type:"button",className:"btn btn-secondary run-workflow-image-choose-btn",onClick:()=>{var a;return(a=l.current)==null?void 0:a.click()},disabled:t,children:t?e.t("run_workflow_image_uploading"):e.t("run_workflow_image_choose")}),e.value&&s.jsx("span",{className:"run-workflow-image-filename",children:e.value})]}),s.jsx("input",{ref:l,id:e.id,type:"file",accept:"image/*",onChange:i,className:"sr-only"}),n&&s.jsx("img",{src:n,alt:"preview",className:"run-workflow-image-preview"})]})}function Mv(e,t,r){return[e,t.field,t.description].join(" ").toLowerCase().includes("prompt")||typeof r=="string"&&r.length>120}function Ov(e){var n;const t=p.useRef(null),r=p.useMemo(()=>Object.entries(e.schema),[e.schema]);return s.jsxs(Pr,{open:e.open,title:e.t("run_workflow_title",{id:e.workflowId}),onClose:e.onClose,width:"wide",initialFocusRef:t,actions:s.jsxs(s.Fragment,{children:[s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:e.onClose,children:e.t("close")}),s.jsx("button",{ref:t,type:"button",className:"btn btn-primary",disabled:e.loading||e.submitting||r.length===0,onClick:e.onSubmit,children:e.submitting?e.t("run_workflow_running"):e.t("run_workflow_submit")})]}),children:[e.loading?s.jsx("div",{className:"empty-state",children:e.t("loading")}):r.length===0?s.jsx("div",{className:"empty-state",children:e.t("run_workflow_no_params")}):s.jsx("div",{className:"run-workflow-form",children:r.map(([o,l])=>{const i=e.values[o],a=l.type||"string",u=Array.isArray(l.choices)?l.choices:[],c=a==="string"&&Mv(o,l,i);return s.jsx(pt,{label:o,htmlFor:`run-param-${o}`,helpText:l.description,required:l.required,className:"run-workflow-field",children:a==="image"?s.jsx(Lv,{id:`run-param-${o}`,serverId:e.serverId,value:String(i??""),onUploadImage:e.onUploadImage,onChange:d=>e.onChange(o,d),t:e.t}):u.length>0?s.jsx(qr,{id:`run-param-${o}`,value:String(i??""),className:"is-run-workflow-select",ariaLabel:o,onChange:d=>e.onChange(o,d),options:[...l.required?[]:[{value:"",label:e.t("run_workflow_optional_empty")}],...u.map(d=>({value:String(d),label:String(d)}))]}):a==="boolean"?s.jsx(Wo,{id:`run-param-${o}`,className:"run-workflow-switch",checked:!!i,onChange:d=>e.onChange(o,d.target.checked),label:e.t("run_workflow_boolean_true")}):c?s.jsx(Dv,{id:`run-param-${o}`,fieldClassName:"run-workflow-textarea",value:String(i??""),onChange:d=>e.onChange(o,d.target.value),rows:5}):s.jsx(tt,{id:`run-param-${o}`,fieldClassName:"run-workflow-input",type:a==="int"||a==="float"?"number":"text",step:a==="float"?"any":void 0,value:String(i??""),onChange:d=>e.onChange(o,d.target.value)})},o)})}),e.result?s.jsxs("section",{className:`run-workflow-result ${e.result.status==="success"?"is-success":"is-error"}`,children:[s.jsxs("div",{className:"run-workflow-result-header",children:[s.jsx("h4",{children:e.t("run_workflow_last_result")}),s.jsx("span",{className:`status-badge ${e.result.status==="success"?"status-on":"status-off"}`,children:e.result.status==="success"?e.t("run_workflow_status_success"):e.t("run_workflow_status_error")})]}),e.result.run_id?s.jsxs("p",{className:"run-workflow-meta",children:["run_id: ",e.result.run_id]}):null,e.result.prompt_id?s.jsxs("p",{className:"run-workflow-meta",children:["prompt_id: ",e.result.prompt_id]}):null,e.result.error?s.jsxs("p",{className:"run-workflow-error",children:[s.jsx("strong",{children:e.t("run_workflow_comfyui_error_prefix")})," ",typeof e.result.error=="string"?e.result.error:((n=e.result.error)==null?void 0:n.message)??JSON.stringify(e.result.error)]}):null,Array.isArray(e.result.images)&&e.result.images.length>0?s.jsx("ul",{className:"run-workflow-paths",children:e.result.images.map(o=>s.jsx("li",{children:s.jsx("code",{children:o})},o))}):null]}):null]})}const Uv=new Intl.DateTimeFormat(void 0,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"});function pl(e){if(!e)return"—";const t=new Date(e);return Number.isNaN(t.getTime())?e:Uv.format(t)}function ed(e){return typeof e!="number"||Number.isNaN(e)?"—":e<1e3?`${e} ms`:e<6e4?`${(e/1e3).toFixed(e<1e4?2:1)} s`:`${(e/6e4).toFixed(1)} min`}function Fv(e){return JSON.stringify(e??{},null,2)}function Wv(e){return e==="success"?"status-on":e==="running"?"status-running":e==="queued"?"status-waiting":"status-off"}function Av(e,t,r,n){return`/api/servers/${encodeURIComponent(e)}/workflow/${encodeURIComponent(t)}/history/${encodeURIComponent(r)}/images/${n}`}function zv(e){var r;return e?(Array.isArray((r=e.result)==null?void 0:r.images)?e.result.images:[]).map((n,o)=>Av(e.server_id,e.workflow_id,e.run_id,o)):[]}function td(e){return e?e.length>14?`${e.slice(0,8)}…${e.slice(-4)}`:e:"—"}function $v(e){return e.replace(/^(seed|size|width|height|batch_size|num|num_images|max_images|filename_prefix)_\d+$/i,"$1")}function Bv(e){return Object.entries(e||{}).sort(([t],[r])=>t.localeCompare(r))}function Vv(e){return Array.isArray(e)?"array":e===null?"null":typeof e}function Hv(e){return typeof e=="string"?s.jsx("p",{className:"workflow-history-arg-text",children:e||"—"}):typeof e=="number"||typeof e=="boolean"||e===null?s.jsx("code",{className:"workflow-history-arg-inline",children:String(e)}):s.jsx("pre",{className:"workflow-history-arg-json",children:Fv(e)})}const Kv=p.memo(function(t){const r=p.useMemo(()=>Bv(t.data),[t.data]);return s.jsxs("section",{className:"workflow-history-args-panel",children:[s.jsxs("div",{className:"workflow-history-panel-header",children:[s.jsxs("div",{children:[s.jsx("p",{className:"workflow-history-panel-eyebrow",children:t.title}),s.jsx("h4",{children:t.title})]}),s.jsx("span",{className:"workflow-meta-tag",children:r.length})]}),r.length>0?s.jsx("div",{className:"workflow-history-arg-grid",children:r.map(([n,o])=>s.jsxs("article",{className:"workflow-history-arg-card",children:[s.jsxs("div",{className:"workflow-history-arg-card-top",children:[s.jsx("strong",{className:"workflow-history-arg-key",children:$v(n)}),s.jsx("span",{className:"workflow-history-arg-type",children:Vv(o)})]}),s.jsx("div",{className:"workflow-history-arg-value",children:Hv(o)})]},n))}):s.jsx("div",{className:"workflow-history-empty-hint",children:t.t("workflow_history_no_args")})]})});function qv(e){var u,c,d,f,m,v;const t=p.useRef(null),[r,n]=p.useState(0),o=p.useMemo(()=>e.history.find(g=>g.run_id===e.selectedRunId)||null,[e.history,e.selectedRunId]),l=p.useMemo(()=>zv(e.detail),[e.detail]),i=l[r]??null,a=((d=(c=(u=e.detail)==null?void 0:u.result)==null?void 0:c.images)==null?void 0:d[r])??null;return p.useEffect(()=>{n(0)},[e.selectedRunId]),p.useEffect(()=>{r>=l.length&&n(0)},[r,l.length]),s.jsx(Pr,{open:e.open,title:e.t("workflow_history_title",{id:e.workflowId}),onClose:e.onClose,width:"xwide",initialFocusRef:t,actions:s.jsxs(s.Fragment,{children:[s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:e.onClose,children:e.t("close")}),s.jsx("button",{ref:t,type:"button",className:"btn btn-secondary",onClick:e.onRefresh,children:e.t("refresh")}),s.jsx("button",{type:"button",className:"btn btn-danger-soft",disabled:e.loading||e.history.length===0,onClick:e.onClear,children:e.t("workflow_history_clear")})]}),children:s.jsxs("div",{className:"workflow-history-layout",children:[s.jsx("section",{className:"workflow-history-list","aria-label":e.t("workflow_history_title",{id:e.workflowId}),children:e.loading?s.jsx("div",{className:"empty-state",children:e.t("loading")}):e.history.length===0?s.jsx("div",{className:"empty-state",children:e.t("workflow_history_empty")}):e.history.map((g,y)=>s.jsxs("button",{type:"button",className:`workflow-history-item${g.run_id===e.selectedRunId?" is-active":""}`,onClick:()=>e.onSelectRun(g.run_id),children:[s.jsxs("div",{className:"workflow-history-item-top",children:[s.jsx("strong",{className:"workflow-history-item-title",children:e.t("workflow_history_run_label",{index:y+1})}),s.jsx("span",{className:`status-badge ${Wv(g.status)}`,children:g.status})]}),s.jsx("p",{className:"workflow-history-item-meta",children:pl(g.created_at)}),s.jsxs("div",{className:"workflow-history-item-tags",children:[s.jsx("span",{className:"workflow-meta-tag",children:e.t("workflow_history_image_count",{count:g.image_count})}),s.jsx("span",{className:"workflow-meta-tag",children:ed(g.duration_ms)}),g.prompt_id?s.jsxs("span",{className:"workflow-meta-tag",children:["#",td(g.prompt_id)]}):null]}),s.jsx("code",{className:"workflow-history-item-code",children:g.run_id}),g.error_message?s.jsx("p",{className:"workflow-history-item-error",children:g.error_message}):null]},g.run_id))}),s.jsx("section",{className:"workflow-history-detail",children:e.detailLoading?s.jsx("div",{className:"empty-state",children:e.t("loading")}):!e.detail&&!o?s.jsx("div",{className:"empty-state",children:e.t("workflow_history_select")}):e.detail?s.jsxs("div",{className:"workflow-history-detail-stack",children:[s.jsxs("div",{className:"workflow-history-summary-strip",children:[s.jsxs("div",{className:"workflow-history-stat",children:[s.jsx("span",{children:e.t("workflow_history_status")}),s.jsx("strong",{children:e.detail.status})]}),s.jsxs("div",{className:"workflow-history-stat",children:[s.jsx("span",{children:e.t("workflow_history_generated_images")}),s.jsx("strong",{children:((f=e.detail.result)==null?void 0:f.image_count)??l.length})]}),s.jsxs("div",{className:"workflow-history-stat",children:[s.jsx("span",{children:e.t("workflow_history_duration_label")}),s.jsx("strong",{children:ed(e.detail.duration_ms)})]}),s.jsxs("div",{className:"workflow-history-stat",children:[s.jsx("span",{children:e.t("workflow_history_prompt_id")}),s.jsx("strong",{children:td(e.detail.prompt_id)})]})]}),s.jsxs("div",{className:"workflow-history-preview-panel",children:[s.jsxs("div",{className:"workflow-history-panel-header",children:[s.jsxs("div",{children:[s.jsx("p",{className:"workflow-history-panel-eyebrow",children:e.t("workflow_history_preview")}),s.jsx("h4",{children:e.t("workflow_history_images")})]}),i?s.jsx("a",{className:"btn btn-secondary workflow-history-open-image",href:i,target:"_blank",rel:"noreferrer",children:e.t("workflow_history_open_image")}):null]}),i?s.jsx("a",{className:"workflow-history-preview-frame is-large",href:i,target:"_blank",rel:"noreferrer",children:s.jsx("img",{src:i,alt:e.t("workflow_history_image_alt",{index:r+1}),loading:"lazy"})}):s.jsxs("div",{className:"workflow-history-preview-frame is-empty is-large",children:[s.jsx("p",{children:e.t("workflow_history_preview_empty")}),(m=e.detail.error)!=null&&m.message?s.jsx("p",{className:"workflow-history-item-error",children:e.detail.error.message}):null]}),l.length>0?s.jsx("div",{className:"workflow-history-gallery is-filmstrip",children:l.map((g,y)=>s.jsxs("button",{type:"button",className:`workflow-history-thumb${y===r?" is-active":""}`,onClick:()=>n(y),children:[s.jsx("img",{src:g,alt:e.t("workflow_history_image_alt",{index:y+1}),loading:"lazy"}),s.jsx("span",{children:y+1})]},g))}):null]}),s.jsx("div",{className:"workflow-history-code-grid",children:s.jsxs("details",{className:"workflow-history-code-block",children:[s.jsx("summary",{children:e.t("workflow_history_run_summary")}),s.jsxs("div",{className:"workflow-history-meta-card",children:[s.jsxs("div",{className:"workflow-history-detail-row",children:[s.jsx("span",{children:e.t("workflow_history_run_id")}),s.jsx("code",{children:e.detail.run_id})]}),s.jsxs("div",{className:"workflow-history-detail-row",children:[s.jsx("span",{children:e.t("workflow_history_created_at")}),s.jsx("strong",{children:pl(e.detail.created_at)})]}),s.jsxs("div",{className:"workflow-history-detail-row",children:[s.jsx("span",{children:e.t("workflow_history_started_at")}),s.jsx("strong",{children:pl(e.detail.started_at)})]}),s.jsxs("div",{className:"workflow-history-detail-row",children:[s.jsx("span",{children:e.t("workflow_history_finished_at")}),s.jsx("strong",{children:pl(e.detail.finished_at)})]}),a?s.jsxs("div",{className:"workflow-history-path",children:[s.jsx("span",{children:e.t("workflow_history_image_path")}),s.jsx("code",{children:a})]}):null]})]})}),s.jsx(Kv,{title:e.t("workflow_history_resolved_args"),data:e.detail.resolved_args,t:e.t}),(v=e.detail.error)!=null&&v.message?s.jsxs("details",{className:"workflow-history-code-block is-error",open:!0,children:[s.jsx("summary",{children:e.t("workflow_history_error")}),s.jsx("pre",{children:e.detail.error.message})]}):null,s.jsx("div",{className:"workflow-history-detail-actions",children:s.jsx("button",{type:"button",className:"btn btn-danger-soft",onClick:()=>e.onDeleteRun(e.detail.run_id),children:e.t("workflow_history_delete_entry")})})]}):null})]})})}const Qv={title:"ComfyUI OpenClaw Skill",subtitle:"Parse workflows into visual parameter mappings for agents.",lang_btn:"中/EN",global_config:"Global Config",server_url:"ComfyUI Server URL",output_dir:"Image Output Directory",save_config:"Save Config",workflow_manager:"Workflow Manager",workflow_search_placeholder:"Search workflows by name or description",workflow_sort_custom:"Manual",workflow_sort_recent:"Recently Updated",workflow_sort_name:"Name",workflow_sort_name_asc:"Workflow ID (A-Z)",workflow_sort_name_desc:"Workflow ID (Z-A)",workflow_sort_enabled:"Enabled first",run_workflow_short:"Run",workflow_history_short:"History",workflow_batch_actions:"Batch workflow actions",workflow_selected_count:"{count} selected",workflow_selection_mode:"Management mode",workflow_enter_batch_mode:"Manage",workflow_management_active:"Managing",workflow_exit_batch_mode:"Done",workflow_select_all:"Select All",workflow_clear_selection:"Deselect",workflow_delete_selected:"Delete",workflow_select_workflow:"Select workflow {id}",import_local_files:"Import Local Files",import_local_folder:"Import Local Folder",import_all_from_comfyui:"Import All from ComfyUI",bulk_import_loading:"Importing...",workflow_drag_handle:"Drag to reorder workflow {id}",workflow_more_actions:"More actions for workflow {id}",no_workflows:"No workflow mappings configured yet.",no_workflows_match:"No workflows matched the current search.",register_new:"Register New Workflow (Upload & Mapping)",drag_upload:"Choose a workflow import method",after_upload:"Import a single file, a local folder, or workflows in bulk from ComfyUI.",editor_import_source_label:"Workflow import source",editor_import_source_single:"Single Upload",editor_import_source_folder:"Local Folder",editor_import_source_comfyui:"Import all workflows from current server",editor_import_action_single:"Choose File",editor_import_action_folder:"Choose Folder",editor_import_action_comfyui:"Scan Workflows",editor_import_action_comfyui_scanning:"Scanning...",editor_upload_option_single_help:"Upload a single workflow_api.json to start mapping.",editor_upload_option_folder_help:"Import all workflow_api.json files from a local folder.",editor_upload_option_comfyui_help:"Scan the selected ComfyUI server and review its saved workflows before importing them all.",editor_upload_option_comfyui_help_with_server:'Scan saved workflows on server "{server}" and review them before importing them all.',editor_import_comfyui_preview_title:"Review workflows from current server",editor_import_comfyui_preview_message:"We found these saved workflows on the selected server. Confirm to import all importable workflows into the current setup.",editor_import_comfyui_preview_message_with_server:'We found these saved workflows on server "{server}". Confirm to import all importable workflows into the current setup.',editor_import_comfyui_preview_confirm_action:"Import All",editor_import_comfyui_preview_summary_total:"{count} found",editor_import_comfyui_preview_summary_importable:"{count} importable",editor_import_comfyui_preview_summary_renamed:"{count} will be renamed",editor_import_comfyui_preview_summary_failed:"{count} unavailable",editor_import_comfyui_preview_section_importable:"Ready to import",editor_import_comfyui_preview_section_failed:"Needs attention",editor_import_comfyui_preview_empty:"No saved workflows were found on this server.",upload_reminder_title:"Upload Reminder",upload_reminder_api:"Please export the workflow as ComfyUI API format JSON (workflow_api.json), not the editor workflow JSON.",upload_reminder_how:"In ComfyUI, use the API format export option before uploading here.",upload_reminder_path:"After saving, files will be written to data///workflow.json and data///schema.json.",upload_reminder_local_path:"Browsers usually only expose the selected file name during upload, not the full local path.",wf_id_label:"Workflow ID (letters/numbers recommended)",wf_id_placeholder:"e.g. sd_basic",wf_desc_label:"Description (for agent use)",wf_desc_placeholder:"e.g. Generate anime-style base images",register_new_short:"+ New Workflow",back:"Back",wf_basic_info:"Workflow Info",parsed_input:"Parsed Input Node List",save_workflow:"Save Workflow and Mapping Schema",alias:"Alias (exposed name)",ai_desc:"AI Description",ai_desc_placeholder:"e.g. High-quality landscape prompt",type:"Type",type_str:"String",type_int:"Integer",type_float:"Float",type_bool:"Boolean",required:"Required for model",curr_val:"Current value",node_id:"Node ID",err_load_cfg:"Failed to load global config.",ok_save_cfg:"Global config saved successfully!",err_save_cfg:"Failed to save config.",del_wf_confirm:"Delete workflow {id}?",workflow_batch_delete_confirm:"Delete the selected {count} workflows on this server?",workflow_batch_delete_preview:"This will delete: {items}",ok_del_wf:'Workflow "{id}" deleted.',ok_del_wf_batch:"Deleted {count} workflows.",ok_del_wf_batch_partial:"Deleted {deleted} workflows, {missing} were not found.",err_del_wf:"Failed to delete workflow.",err_del_wf_batch:"Failed to delete selected workflows.",ok_wf_load:"Workflow loaded! Please select parameters to expose.",err_invalid_json:"Invalid JSON file.",err_no_id:"Please provide a Workflow ID.",err_no_alias:"Exposed parameter is missing an alias (Node {node} / {val})",warn_no_params:"You have not exposed any parameters. Save anyway?",warn_overwrite_wf:'Workflow ID "{id}" already exists. Overwrite it?',ok_save_wf:"Saved successfully. The agent can now call this workflow.",err_save_wf:"Failed to save workflow.",wf_enabled:"Enabled",wf_disabled:"Disabled",ok_toggle_wf:"Status updated.",ok_toggle_wf_enabled:'Workflow "{id}" enabled.',ok_toggle_wf_disabled:'Workflow "{id}" disabled.',err_toggle_wf:"Failed to update status.",err_load_workflows:"Failed to load workflow list.",err_reorder_workflows:"Failed to save workflow order.",ok_bulk_import_summary:"Import complete. Created {created}, renamed {renamed}, failed {failed}.",err_bulk_import_comfyui:"Failed to import workflows from ComfyUI.",err_bulk_import_comfyui_preview:"Failed to scan workflows from ComfyUI.",err_bulk_import_local:"Failed to import local workflow files.",workflow_count:"{count} workflows",workflow_count_one:"{count} workflow",workflow_count_filtered_one:"{visible} shown / {total} workflow",workflow_count_filtered:"{visible} shown / {total} workflows",loading:"Loading...",toggle_workflow:"Enable or disable workflow {id}",delete_workflow:"Delete workflow {id}",edit_workflow:"Edit workflow {id}",upload_new_version:"Upload New Version",more:"More",edit:"Edit",ok_load_saved_wf:"Saved workflow loaded. You can now adjust its parameter mapping.",err_load_saved_wf:"Failed to load saved workflow details.",save_workflow_edit:"Save Workflow Changes",editor_mode_editing:"Editing saved workflow",editor_mode_create:"Create new workflow mapping",empty_nodes:"Upload a workflow JSON to start mapping parameters.",err_ui_workflow_format:"This file looks like a ComfyUI editor workflow, not workflow_api.json. Please export the API format workflow JSON and upload that file.",err_no_mappable_params:"This workflow JSON was read successfully, but no configurable scalar inputs were found.",server_manager:"Server Manager",export_bundle:"Export Config",import_bundle:"Import Config",bulk_import_report_title_comfyui:"ComfyUI Import Report",bulk_import_report_title_local:"Local Import Report",bulk_import_section_created:"Created",bulk_import_section_renamed:"Renamed",bulk_import_section_skipped:"Skipped",bulk_import_section_failed:"Failed",bulk_import_section_empty:"No items in this section.",bulk_import_section_count:"{count} items",bulk_import_summary_created:"Created: {count}",bulk_import_summary_renamed:"Renamed: {count}",bulk_import_summary_skipped:"Skipped: {count}",bulk_import_summary_failed:"Failed: {count}",dep_check_title:"Dependency Check",dep_check_all_ready:"All dependencies are satisfied. The workflow is ready to run.",dep_check_skip:"Skip",dep_check_install_selected:"Install Selected",dep_check_installing:"Installing...",dep_check_missing_nodes:"Missing Custom Nodes",dep_check_unknown_nodes:"Unknown Nodes (manual install required)",dep_check_missing_models:"Missing Models (manual download required)",dep_check_packages_count:"{count} packages",dep_check_model_folder:"Folder: {folder}",dep_check_install_results:"Installation Results",dep_check_needs_restart:"ComfyUI needs to restart for changes to take effect.",dep_check_loading:"Checking dependencies...",dep_check_btn:"Check Dependencies",err_dep_check:"Failed to check dependencies.",err_dep_install:"Failed to install dependencies.",export_bundle_title:"Export Config",import_bundle_preview_title:"Import Preview",export_bundle_confirm:"Download Bundle",import_bundle_confirm:"Import Bundle",export_panel_hint:"Choose which servers and workflows to export. Everything is selected by default.",export_preview_summary:"This export will include {servers} servers and {workflows} workflows. Warnings: {warnings}.",export_server_workflow_count:"{count} workflows",export_workflow_disabled:"Disabled",export_server_disabled:"Server disabled",export_selected_count:"{selected}/{total} selected",export_toggle_server:"Toggle workflows for {server}",transfer_section_created_servers:"Servers to add",transfer_section_updated_servers:"Servers to update",transfer_section_created_workflows:"Workflows to import",transfer_section_overwritten_workflows:"Workflows to overwrite",transfer_section_skipped_items:"Items to skip",transfer_section_empty:"No items in this section.",transfer_warning_title:"Warnings",ok_transfer_export_started:"Bundle download started.",ok_transfer_import:"Import complete. Added {servers} servers, imported {created} workflows, overwritten {overwritten} workflows.",err_transfer_invalid_bundle:"This file is not a valid bundle JSON.",err_transfer_export_preview:"Failed to preview the export bundle.",err_transfer_export:"Failed to build the export bundle.",err_transfer_preview:"Failed to preview the import bundle.",err_transfer_import:"Failed to import the bundle.",transfer_apply_environment:"Also apply default server, URL, and output directory from the bundle",transfer_preview_summary:"This import will add {servers} servers, update {updated_servers} servers, import {created} workflows, overwrite {overwritten} workflows, and skip {skipped} items. Warnings: {warnings}. Continue?",add_server:"Add Server",server_name:"Server Name",server_id_label:"Server ID",server_id_help:"Optional. Leave blank to auto-generate. It cannot be changed later.",server_name_help:"Name is display-only and can be changed later.",server_type_comfyui:"ComfyUI",server_type_hint_comfyui:"Use this for local or self-hosted ComfyUI instances that expose the standard `/prompt` API.",server_unsupported_short:"(Unsupported)",server_unsupported_reason:'Server type "{type}" is not supported in this branch. Remove or migrate this server before using it.',server_url_label:"Server URL",server_url_help_comfyui:"Directly calls the standard ComfyUI endpoints: `/prompt`, `/history/{id}`, and `/view`.",server_auth_label:"Auth Token (optional)",server_auth_placeholder:"Bearer your-token",server_auth_help:"If the remote server requires authentication, enter the Authorization header value.",comfy_api_key_label:"ComfyUI API Key (optional)",comfy_api_key_placeholder:"comfyui-xxxxxxxx...",comfy_api_key_help:"Required for cloud nodes (Kling, Sora, Nano Banana, etc). Generate at platform.comfy.org.",comfy_api_key_help_prefix:"Required for cloud nodes (Kling, Sora, Nano Banana, etc). Generate at ",comfy_api_key_help_link:"platform.comfy.org",comfy_api_key_help_suffix:".",server_test_connection:"Test Connection",server_test_testing:"Testing…",server_test_ok:"Connected",server_test_fail:"Connection failed",server_output_dir:"Output Directory",no_servers:"No servers configured.",ok_add_server:"Server added successfully.",err_add_server:"Failed to add server.",ok_toggle_server:"Server status updated.",ok_toggle_server_enabled:'Server "{id}" enabled.',ok_toggle_server_disabled:'Server "{id}" disabled.',err_toggle_server:"Failed to update server status.",del_server_confirm:"Delete server {id}? Data files will NOT be removed.",ok_del_server:"Server removed.",ok_del_server_keep_data:"Server removed. Local data was kept.",ok_del_server_with_data:"Server removed. Local data was deleted.",err_del_server:"Failed to remove server.",delete_server_data_checkbox:"Also delete this server's local data in data/",server_enabled:"Enabled",server_disabled:"Disabled",server_agent_visible:"Visible to Agent",server_agent_hidden:"Hidden from Agent",server_agent_visibility_hint:"Controls whether agents can see and use this server",select_server:"Select Server",current_server_config:"Server Config",current_server_title:"Current Server",no_server_selected_short:"No server selected",add_server_toggle:"Add Server",add_server_close:"Close",cancel:"Cancel",close:"Close",confirm:"Confirm",refresh:"Refresh",confirm_action_title:"Confirm Action",delete:"Delete",overwrite:"Overwrite",leave_anyway:"Leave",save_anyway:"Save Anyway",add_server_panel_title:"Add New Server",add_server_modal_title:"Add Server",edit_server_modal_title:"Edit Server",server_import_after_create:"Import all from ComfyUI after save",save_and_connect:"Save and Connect",save_server_changes:"Save Changes",create_first_server:"Create First Server",new_server_name_placeholder:"Local Server",new_server_id_placeholder:"new-server-id",new_server_url_placeholder:"http://10.0.0.1:8188",err_server_id_url_required:"Server ID and URL are required.",err_server_name_id_url_required:"Server ID, name, and URL are required.",err_server_name_url_required:"Server name and URL are required.",err_server_name_required:"Server name is required.",err_select_server_first:"Please add/select a server first.",err_select_server_before_register:"Please add/select a server to register a workflow.",err_no_server_selected:"No server selected.",err_no_workflow_uploaded:"No workflow data uploaded. Please upload a workflow JSON.",editor_step_1:"Upload Workflow",editor_step_2:"Basic Info",editor_step_3:"Map Parameters",editor_step_1_hint:"Step 1: Upload workflow_api.json to parse parameters.",editor_step_2_hint:"Step 2: Fill workflow basic info.",editor_step_3_hint:"Step 3: Review parameter mapping and save.",mapping_search_placeholder:"Search by node, field, alias or description",mapping_sort_node_id_asc:"Node ID (asc)",mapping_sort_node_id_desc:"Node ID (desc)",mapping_sort_class_asc:"Node type (A-Z)",mapping_sort_param_default:"Parameter default",mapping_sort_param_name:"Parameter name (A-Z)",mapping_sort_param_type:"Type (A-Z)",mapping_sort_param_exposed:"Exposed first",mapping_exposed_only:"Only show exposed parameters",mapping_required_only:"Only show required parameters",mapping_apply_recommended:"Auto expose recommended",mapping_expose_visible:"Expose visible",mapping_unexpose_visible:"Unexpose visible",mapping_collapse_configs:"Collapse parameter configs",mapping_expand_configs:"Expand parameter configs",mapping_collapse_all:"Collapse all nodes",mapping_expand_all:"Expand all nodes",mapping_reset_filters:"Reset filters",mapping_summary:"Showing {visible_params}/{total_params} params in {visible_nodes} nodes, exposed: {exposed_params}",mapping_apply_recommended_ok:"Recommended parameters exposed: {count}",mapping_no_recommended_changes:"No additional recommended parameters were found.",mapping_expose_visible_ok:"Visible parameters exposed: {count}",mapping_unexpose_visible_ok:"Visible parameters unexposed: {count}",mapping_no_visible_params:"No visible parameters available for this action.",mapping_no_batch_changes:"No parameters required updates.",empty_nodes_filtered:"No parameters matched current filters.",mapping_shortcuts_hint:"Shortcuts: Ctrl/Cmd+S save, / focus search, Esc clear search",toggle_node:"Toggle node {id}",toggle_param_config:"Toggle parameter config for {field}",confirm_unsaved_leave:"You have unsaved changes in the editor. Leave anyway?",workflow_upgrade_ready:"New version loaded. Review retained, new, and changed parameters before saving.",workflow_upgrade_summary:"{retained} retained, {review} need review, {added} new, {removed} removed",run_workflow_title:"Run workflow {id}",run_workflow_submit:"Run Workflow",run_workflow_running:"Running…",run_workflow_image_choose:"Choose Image",run_workflow_image_uploading:"Uploading…",run_workflow_success:'Workflow "{id}" finished successfully.',run_workflow_error:"Workflow execution failed.",run_workflow_comfyui_error_prefix:"ComfyUI execution error:",workflow_status_running:"Running…",workflow_status_success:"Success",workflow_status_error:"Failed",workflow_status_view_history:"Click to view details",run_workflow_no_params:"This workflow does not expose any runnable parameters.",run_workflow_optional_empty:"Leave empty",run_workflow_boolean_true:"Enabled",run_workflow_last_result:"Latest execution result",run_workflow_status_success:"Success",run_workflow_status_error:"Error",workflow_history_title:"Execution history for {id}",workflow_history_empty:"No execution history yet.",workflow_history_select:"Select a run from the list to inspect its details.",workflow_history_load_error:"Failed to load execution history.",workflow_history_delete_confirm:"Delete this history entry?",workflow_history_delete_success:"History entry deleted.",workflow_history_delete_error:"Failed to delete the history entry.",workflow_history_delete_entry:"Delete Entry",workflow_history_clear:"Clear History",workflow_history_clear_confirm:'Clear all execution history for workflow "{id}"?',workflow_history_clear_success:"Execution history cleared.",workflow_history_clear_error:"Failed to clear execution history.",workflow_history_status:"Status",workflow_history_created_at:"Created",workflow_history_finished_at:"Finished",workflow_history_duration_label:"Duration",workflow_history_duration:"{ms} ms",workflow_history_image_count:"{count} image(s)",workflow_history_preview:"Preview",workflow_history_preview_empty:"No previewable output image was produced for this run.",workflow_history_overview:"Overview",workflow_history_run_summary:"Run summary",workflow_history_run_label:"Run #{index}",workflow_history_run_id:"Run ID",workflow_history_started_at:"Started",workflow_history_prompt_id:"Prompt ID",workflow_history_open_image:"Open full image",workflow_history_image_alt:"Execution result image {index}",workflow_history_image_path:"File path",workflow_history_generated_images:"Generated images",workflow_history_no_args:"No parameters to display.",workflow_history_resolved_args:"Resolved args",workflow_history_error:"Error",workflow_history_images:"Images",migration_status_retained:"Retained",migration_status_review:"Review",migration_status_new:"New",migration_review_hint:"This parameter changed and should be reviewed before saving.",server_status_online:"Online",server_status_offline:"Offline",update_available:"New version available ({local} -> {remote}). Click to update and restart.",update_dismiss:"Dismiss",update_now:"Update Now",update_pulling:"Pulling latest changes…",update_restarting:"Restarting server…",update_waiting:"Waiting for server…",update_done:"Updated! Reloading…",update_success:"Update completed",update_result_system:"Main skill updated from {before} to {after}.",update_result_frontend:"Bundled frontend updated from {before} to {after}.",update_result_generic:"The latest update has been applied.",update_wait_timeout:"The update finished, but the server did not come back in time. Please refresh or restart manually.",update_failed:"Update failed"},rp={title:"ComfyUI OpenClaw Skill",subtitle:"解析工作流,为 Agent 构建可视化参数映射。",lang_btn:"EN/中",global_config:"全局配置",server_url:"ComfyUI 服务器地址",output_dir:"图片输出目录",save_config:"保存配置",workflow_manager:"工作流管理器",workflow_search_placeholder:"按工作流名称或描述搜索",workflow_sort_custom:"手动排序",workflow_sort_recent:"最近更新",workflow_sort_name:"名称排序",workflow_sort_name_asc:"工作流 ID(A-Z)",workflow_sort_name_desc:"工作流 ID(Z-A)",workflow_sort_enabled:"已启用优先",run_workflow_short:"运行",workflow_history_short:"历史",workflow_batch_actions:"工作流批量操作",workflow_selected_count:"已选择 {count} 个工作流",workflow_selection_mode:"管理模式",workflow_enter_batch_mode:"管理",workflow_management_active:"管理中",workflow_exit_batch_mode:"完成",workflow_select_all:"全选",workflow_clear_selection:"取消选择",workflow_delete_selected:"删除",workflow_select_workflow:"选择工作流 {id}",import_local_files:"导入本地文件",import_local_folder:"导入本地目录",import_all_from_comfyui:"从 ComfyUI 全量导入",bulk_import_loading:"导入中...",workflow_drag_handle:"拖动以重新排序工作流 {id}",workflow_more_actions:"工作流 {id} 的更多操作",no_workflows:"暂未配置任何工作流映射。",no_workflows_match:"当前搜索条件下没有匹配的工作流。",register_new:"注册新工作流 (上传 & 映射)",register_new_short:"+ 新增工作流",back:"返回",wf_basic_info:"基础信息",drag_upload:"选择工作流导入方式",after_upload:"支持单个上传、本地目录导入,或从 ComfyUI 批量导入。",editor_import_source_label:"工作流导入来源",editor_import_source_single:"单个上传",editor_import_source_folder:"本地目录",editor_import_source_comfyui:"从当前服务器导入全部工作流",editor_import_action_single:"选择文件",editor_import_action_folder:"选择文件夹",editor_import_action_comfyui:"扫描工作流",editor_import_action_comfyui_scanning:"扫描中...",editor_upload_option_single_help:"上传单个 workflow_api.json 开始参数映射。",editor_upload_option_folder_help:"导入本地文件夹中的全部 workflow_api.json 工作流。",editor_upload_option_comfyui_help:"先扫描当前服务器中已保存的工作流,再确认是否全部导入。",editor_upload_option_comfyui_help_with_server:"先扫描服务器「{server}」中已保存的工作流,再确认是否全部导入。",editor_import_comfyui_preview_title:"确认导入当前服务器工作流",editor_import_comfyui_preview_message:"已扫描到当前服务器中保存的工作流。确认后,将把可导入的工作流全部导入到当前配置中。",editor_import_comfyui_preview_message_with_server:"已扫描到服务器「{server}」中保存的工作流。确认后,将把可导入的工作流全部导入到当前配置中。",editor_import_comfyui_preview_confirm_action:"全部导入",editor_import_comfyui_preview_summary_total:"共扫描到 {count} 个",editor_import_comfyui_preview_summary_importable:"可导入 {count} 个",editor_import_comfyui_preview_summary_renamed:"将重命名 {count} 个",editor_import_comfyui_preview_summary_failed:"不可导入 {count} 个",editor_import_comfyui_preview_section_importable:"待导入工作流",editor_import_comfyui_preview_section_failed:"需要处理",editor_import_comfyui_preview_empty:"当前服务器中没有找到可导入的已保存工作流。",upload_reminder_title:"上传提醒",upload_reminder_api:"请先从 ComfyUI 导出 API 格式的 JSON(workflow_api.json),不要上传编辑器工作流 JSON。",upload_reminder_how:"请在 ComfyUI 中使用 API Format 导出功能后,再上传到这里。",upload_reminder_path:"保存成功后,文件会写入 data///workflow.json 和 data///schema.json。",upload_reminder_local_path:"浏览器上传时通常只会暴露文件名,不会显示本地完整路径。",wf_id_label:"工作流 ID (建议字母/数字)",wf_id_placeholder:"例:sd_basic",wf_desc_label:"描述说明 (供 Agent 阅读)",wf_desc_placeholder:"例:生成动漫画风的基础图像",parsed_input:"已解析输入节点列表",save_workflow:"保存工作流及其映射表",alias:"别名 (暴露给 AI 的变量名)",ai_desc:"参数描述 (供 AI 理解)",ai_desc_placeholder:"例:用来控制人物造型的高质量提示词",type:"数据类型",type_str:"文本 (String)",type_int:"整数 (Integer)",type_float:"小数 (Float)",type_bool:"布尔 (Boolean)",required:"生成必须",curr_val:"当前本地缓存值",node_id:"节点标识",err_load_cfg:"加载全局配置失败。",ok_save_cfg:"全局配置保存成功!",err_save_cfg:"保存配置失败。",del_wf_confirm:"确认删除该工作流 {id} 吗?",workflow_batch_delete_confirm:"确认删除当前服务器下已选中的 {count} 个工作流吗?",workflow_batch_delete_preview:"将删除:{items}",ok_del_wf:'工作流 "{id}" 已被删除。',ok_del_wf_batch:"已删除 {count} 个工作流。",ok_del_wf_batch_partial:"已删除 {deleted} 个工作流,{missing} 个未找到。",err_del_wf:"删除工作流失败。",err_del_wf_batch:"批量删除工作流失败。",ok_wf_load:"读取成功!请勾选你想要对外暴露的参数。",err_invalid_json:"无法解析的 JSON 文件格式。",err_no_id:"必须填写一个工作流 ID 才能保存。",err_no_alias:"您勾选暴露的参数缺少别名名称 (节点 {node} / 字段 {val})",warn_no_params:"您没有暴露任何参数。仍然强行保存吗?",warn_overwrite_wf:"工作流 ID「{id}」已存在。是否覆盖它?",ok_save_wf:"已保存!Agent 当前可以调度此任务了。",err_save_wf:"保存工作流失败。",wf_enabled:"已启用",wf_disabled:"已禁用",ok_toggle_wf:"状态已更新。",ok_toggle_wf_enabled:"工作流「{id}」已启用。",ok_toggle_wf_disabled:"工作流「{id}」已禁用。",err_toggle_wf:"更新状态失败。",err_load_workflows:"加载工作流列表失败。",err_reorder_workflows:"保存工作流顺序失败。",ok_bulk_import_summary:"导入完成。新增 {created} 个,重命名 {renamed} 个,失败 {failed} 个。",err_bulk_import_comfyui:"从 ComfyUI 导入工作流失败。",err_bulk_import_comfyui_preview:"扫描 ComfyUI 工作流失败。",err_bulk_import_local:"导入本地工作流文件失败。",workflow_count:"共 {count} 个工作流",workflow_count_one:"共 {count} 个工作流",workflow_count_filtered_one:"显示 {visible} / 共 {total} 个工作流",workflow_count_filtered:"显示 {visible} / 共 {total} 个工作流",loading:"加载中...",toggle_workflow:"启用或禁用工作流 {id}",delete_workflow:"删除工作流 {id}",edit_workflow:"编辑工作流 {id}",upload_new_version:"上传新版本",more:"更多",edit:"编辑",ok_load_saved_wf:"已载入已保存工作流,你现在可以修改参数映射。",err_load_saved_wf:"加载已保存工作流详情失败。",save_workflow_edit:"保存工作流修改",editor_mode_editing:"正在编辑已保存工作流",editor_mode_create:"创建新的工作流映射",empty_nodes:"上传 workflow JSON 后,即可开始配置参数映射。",err_ui_workflow_format:"这个文件看起来是 ComfyUI 的编辑器工作流,不是 workflow_api.json。请导出 API 格式的工作流 JSON 后再上传。",err_no_mappable_params:"这个 workflow JSON 已成功读取,但没有找到可配置的标量输入参数。",server_manager:"服务器管理",export_bundle:"导出配置",import_bundle:"导入配置",bulk_import_report_title_comfyui:"ComfyUI 导入结果",bulk_import_report_title_local:"本地导入结果",bulk_import_section_created:"已新增",bulk_import_section_renamed:"已重命名",bulk_import_section_skipped:"已跳过",bulk_import_section_failed:"失败项",bulk_import_section_empty:"该分组暂无项目。",bulk_import_section_count:"{count} 项",bulk_import_summary_created:"新增:{count}",bulk_import_summary_renamed:"重命名:{count}",bulk_import_summary_skipped:"跳过:{count}",bulk_import_summary_failed:"失败:{count}",dep_check_title:"依赖检测",dep_check_all_ready:"所有依赖已满足,工作流可以运行。",dep_check_skip:"跳过",dep_check_install_selected:"安装选中项",dep_check_installing:"安装中...",dep_check_missing_nodes:"缺失的自定义节点",dep_check_unknown_nodes:"未知节点(需手动安装)",dep_check_missing_models:"缺失的模型文件(需手动下载)",dep_check_packages_count:"{count} 个节点包",dep_check_model_folder:"文件夹:{folder}",dep_check_install_results:"安装结果",dep_check_needs_restart:"需要重启 ComfyUI 才能生效。",dep_check_loading:"正在检测依赖...",dep_check_btn:"检测依赖",err_dep_check:"依赖检测失败。",err_dep_install:"依赖安装失败。",export_bundle_title:"导出配置",import_bundle_preview_title:"导入预览",export_bundle_confirm:"下载 Bundle",import_bundle_confirm:"导入 Bundle",export_panel_hint:"选择要导出的服务器和工作流。默认全部选中。",export_preview_summary:"本次导出将包含 {servers} 个服务器和 {workflows} 个工作流。警告:{warnings}。",export_server_workflow_count:"{count} 个工作流",export_workflow_disabled:"已禁用",export_server_disabled:"服务器已禁用",export_selected_count:"已选 {selected}/{total}",export_toggle_server:"展开或折叠 {server} 的工作流",transfer_section_created_servers:"将新增的服务器",transfer_section_updated_servers:"将更新的服务器",transfer_section_created_workflows:"将导入的工作流",transfer_section_overwritten_workflows:"将覆盖的工作流",transfer_section_skipped_items:"将跳过的项目",transfer_section_empty:"此分组没有项目。",transfer_warning_title:"警告",ok_transfer_export_started:"Bundle 已开始下载。",ok_transfer_import:"导入完成。新增 {servers} 个服务器,导入 {created} 个工作流,覆盖 {overwritten} 个工作流。",err_transfer_invalid_bundle:"该文件不是有效的 bundle JSON。",err_transfer_export_preview:"预检导出 bundle 失败。",err_transfer_export:"构建导出 bundle 失败。",err_transfer_preview:"预检导入 bundle 失败。",err_transfer_import:"导入 bundle 失败。",transfer_apply_environment:"同时应用 bundle 中的默认服务器、URL 和输出目录",transfer_preview_summary:"本次导入将新增 {servers} 个服务器、更新 {updated_servers} 个服务器、导入 {created} 个工作流、覆盖 {overwritten} 个工作流,并跳过 {skipped} 个项目。警告:{warnings}。是否继续?",add_server:"添加服务器",server_name:"服务器名称",server_id_label:"服务器 ID",server_id_help:"可选,不填写则自动生成,后续不可修改。",server_name_help:"名称仅用于显示,后续可以随时修改。",server_type_comfyui:"ComfyUI",server_type_hint_comfyui:"用于本地或自托管的 ComfyUI 实例,调用标准 `/prompt` API。",server_unsupported_short:"(不支持)",server_unsupported_reason:"当前分支不支持服务器类型“{type}”。请先迁移或删除该服务器配置,再继续使用。",server_url_label:"服务器地址",server_url_help_comfyui:"直接调用标准 ComfyUI 端点:`/prompt`、`/history/{id}` 和 `/view`。",server_auth_label:"鉴权令牌(可选)",server_auth_placeholder:"Bearer your-token",server_auth_help:"远程服务器如需鉴权,填入 Authorization header 的值。",comfy_api_key_label:"ComfyUI API Key(可选)",comfy_api_key_placeholder:"comfyui-xxxxxxxx...",comfy_api_key_help:"用于云节点(Kling、Sora、Nano Banana 等)。前往 platform.comfy.org 生成。",comfy_api_key_help_prefix:"用于云节点(Kling、Sora、Nano Banana 等)。前往 ",comfy_api_key_help_link:"platform.comfy.org",comfy_api_key_help_suffix:" 生成。",server_test_connection:"测试连接",server_test_testing:"测试中…",server_test_ok:"连接成功",server_test_fail:"连接失败",server_output_dir:"输出目录",no_servers:"暂无配置的服务器。",ok_add_server:"服务器添加成功。",err_add_server:"添加服务器失败。",ok_toggle_server:"服务器状态已更新。",ok_toggle_server_enabled:"服务器「{id}」已启用。",ok_toggle_server_disabled:"服务器「{id}」已禁用。",err_toggle_server:"更新服务器状态失败。",del_server_confirm:"确认删除服务器 {id}?数据文件不会被删除。",ok_del_server:"服务器已移除。",ok_del_server_keep_data:"服务器已移除,本地 data 数据已保留。",ok_del_server_with_data:"服务器已移除,本地 data 数据已删除。",err_del_server:"移除服务器失败。",delete_server_data_checkbox:"同时删除该服务器在 data/ 中的本地数据",server_enabled:"已启用",server_disabled:"已禁用",server_agent_visible:"对 Agent 可见",server_agent_hidden:"对 Agent 隐藏",server_agent_visibility_hint:"控制 Agent 是否可以发现和使用此服务器",select_server:"选择服务器",current_server_config:"服务器配置",current_server_title:"当前服务器",no_server_selected_short:"未选择服务器",add_server_toggle:"添加服务器",add_server_close:"关闭",cancel:"取消",close:"关闭",confirm:"确认",refresh:"刷新",confirm_action_title:"确认操作",delete:"删除",overwrite:"覆盖",leave_anyway:"仍然离开",save_anyway:"仍然保存",add_server_panel_title:"添加新服务器",add_server_modal_title:"添加服务器",edit_server_modal_title:"编辑服务器",server_import_after_create:"保存后从 ComfyUI 全量导入",save_and_connect:"保存并连接",save_server_changes:"保存修改",create_first_server:"创建第一个服务器",new_server_name_placeholder:"本地服务器",new_server_id_placeholder:"new-server-id",new_server_url_placeholder:"http://10.0.0.1:8188",err_server_id_url_required:"必须填写服务器 ID 和地址。",err_server_name_id_url_required:"必须填写服务器 ID、名称和地址。",err_server_name_url_required:"必须填写服务器名称和地址。",err_server_name_required:"必须填写服务器名称。",err_select_server_first:"请先添加或选择一个服务器。",err_select_server_before_register:"请先添加或选择服务器,再注册工作流。",err_no_server_selected:"当前未选择服务器。",err_no_workflow_uploaded:"未上传工作流数据,请先上传 workflow JSON。",editor_step_1:"上传工作流",editor_step_2:"基础信息",editor_step_3:"参数映射",editor_step_1_hint:"第 1 步:上传 workflow_api.json 解析参数。",editor_step_2_hint:"第 2 步:填写工作流基础信息。",editor_step_3_hint:"第 3 步:检查参数映射并保存。",mapping_search_placeholder:"按节点、字段、别名或描述搜索",mapping_sort_node_id_asc:"节点 ID(升序)",mapping_sort_node_id_desc:"节点 ID(降序)",mapping_sort_class_asc:"节点类型(A-Z)",mapping_sort_param_default:"参数默认顺序",mapping_sort_param_name:"参数名(A-Z)",mapping_sort_param_type:"类型(A-Z)",mapping_sort_param_exposed:"已暴露优先",mapping_exposed_only:"仅显示已暴露参数",mapping_required_only:"仅显示必填参数",mapping_apply_recommended:"一键暴露推荐参数",mapping_expose_visible:"暴露当前可见参数",mapping_unexpose_visible:"取消暴露当前可见参数",mapping_collapse_configs:"折叠全部参数配置",mapping_expand_configs:"展开全部参数配置",mapping_collapse_all:"折叠全部节点",mapping_expand_all:"展开全部节点",mapping_reset_filters:"重置筛选",mapping_summary:"当前显示 {visible_nodes} 个节点中的 {visible_params}/{total_params} 个参数,已暴露 {exposed_params} 个",mapping_apply_recommended_ok:"已暴露推荐参数 {count} 项",mapping_no_recommended_changes:"没有新增可暴露的推荐参数。",mapping_expose_visible_ok:"已暴露当前可见参数 {count} 项",mapping_unexpose_visible_ok:"已取消暴露当前可见参数 {count} 项",mapping_no_visible_params:"当前没有可执行此操作的可见参数。",mapping_no_batch_changes:"没有需要更新的参数。",empty_nodes_filtered:"当前筛选条件下没有匹配参数。",mapping_shortcuts_hint:"快捷键:Ctrl/Cmd+S 保存,/ 聚焦搜索,Esc 清空搜索",toggle_node:"折叠或展开节点 {id}",toggle_param_config:"折叠或展开参数配置 {field}",confirm_unsaved_leave:"编辑页有未保存更改,仍要离开吗?",workflow_upgrade_ready:"已载入新版本,请先检查保留、新增和待确认的参数后再保存。",workflow_upgrade_summary:"已保留 {retained} 个,待确认 {review} 个,新增 {added} 个,移除 {removed} 个",run_workflow_title:"运行工作流 {id}",run_workflow_submit:"运行工作流",run_workflow_running:"运行中…",run_workflow_image_choose:"选择图片",run_workflow_image_uploading:"上传中…",run_workflow_success:"工作流「{id}」运行成功。",run_workflow_error:"工作流运行失败。",run_workflow_comfyui_error_prefix:"ComfyUI 执行出错:",workflow_status_running:"运行中…",workflow_status_success:"成功",workflow_status_error:"失败",workflow_status_view_history:"点击查看详情",run_workflow_no_params:"这个工作流没有暴露可运行参数。",run_workflow_optional_empty:"留空",run_workflow_boolean_true:"启用",run_workflow_last_result:"最近一次执行结果",run_workflow_status_success:"成功",run_workflow_status_error:"失败",workflow_history_title:"工作流 {id} 的执行历史",workflow_history_empty:"暂无执行历史。",workflow_history_select:"从左侧选择一条记录查看详情。",workflow_history_load_error:"加载执行历史失败。",workflow_history_delete_confirm:"确认删除这条历史记录吗?",workflow_history_delete_success:"历史记录已删除。",workflow_history_delete_error:"删除历史记录失败。",workflow_history_delete_entry:"删除记录",workflow_history_clear:"清空历史",workflow_history_clear_confirm:"确认清空工作流「{id}」的所有执行历史吗?",workflow_history_clear_success:"执行历史已清空。",workflow_history_clear_error:"清空执行历史失败。",workflow_history_status:"状态",workflow_history_created_at:"创建时间",workflow_history_finished_at:"结束时间",workflow_history_duration_label:"耗时",workflow_history_duration:"{ms} 毫秒",workflow_history_image_count:"{count} 张图片",workflow_history_preview:"产出预览",workflow_history_preview_empty:"这次执行没有可预览的产出图片。",workflow_history_overview:"执行概览",workflow_history_run_summary:"运行摘要",workflow_history_run_label:"执行 #{index}",workflow_history_run_id:"运行 ID",workflow_history_started_at:"开始时间",workflow_history_prompt_id:"Prompt ID",workflow_history_open_image:"打开原图",workflow_history_image_alt:"执行结果图片 {index}",workflow_history_image_path:"文件路径",workflow_history_generated_images:"产出图片",workflow_history_no_args:"没有可展示的参数。",workflow_history_resolved_args:"解析后参数",workflow_history_error:"错误信息",workflow_history_images:"结果图片",migration_status_retained:"已保留",migration_status_review:"待确认",migration_status_new:"新增",migration_review_hint:"这个参数发生了变化,保存前建议重新检查。",server_status_online:"在线",server_status_offline:"离线",update_available:"发现新版本({local} -> {remote}),点击一键更新并重启。",update_dismiss:"关闭",update_now:"立即更新",update_pulling:"正在拉取最新代码…",update_restarting:"正在重启服务…",update_waiting:"等待服务恢复…",update_done:"更新完成,正在刷新…",update_success:"更新成功",update_result_system:"主程序已从 {before} 更新到 {after}。",update_result_frontend:"前端静态文件已从 {before} 更新到 {after}。",update_result_generic:"最新更新已应用。",update_wait_timeout:"更新已经完成,但服务长时间没有恢复。请手动刷新页面或重启服务。",update_failed:"更新失败"},Jv={...rp,subtitle:"解析工作流,為 Agent 構建可視化參數映射。",global_config:"全域配置",save_config:"儲存配置",workflow_manager:"工作流管理器",workflow_search_placeholder:"按工作流名稱或描述搜尋",workflow_sort_custom:"自定義順序",workflow_sort_recent:"最近更新",workflow_sort_name_asc:"工作流 ID(A-Z)",workflow_sort_name_desc:"工作流 ID(Z-A)",workflow_sort_enabled:"已啟用優先",workflow_batch_actions:"工作流批次操作",workflow_selected_count:"已選擇 {count} 個工作流",workflow_selection_mode:"管理模式",workflow_enter_batch_mode:"管理",workflow_management_active:"管理中",workflow_exit_batch_mode:"完成",workflow_select_all:"全選",workflow_clear_selection:"取消選擇",workflow_delete_selected:"刪除",workflow_select_workflow:"選擇工作流 {id}",workflow_drag_handle:"拖動以重新排序工作流 {id}",workflow_more_actions:"工作流 {id} 的更多操作",no_workflows:"暫未配置任何工作流映射。",no_workflows_match:"當前搜尋條件下沒有匹配的工作流。",register_new:"註冊新工作流 (上傳 & 映射)",register_new_short:"+ 新增工作流",back:"返回",wf_basic_info:"基礎資訊",drag_upload:"選擇工作流匯入方式",after_upload:"支援單個上傳、本地目錄匯入,或從 ComfyUI 批次匯入。",editor_import_source_label:"工作流匯入來源",editor_import_source_single:"單個上傳",editor_import_source_folder:"本地目錄",editor_import_source_comfyui:"從目前伺服器匯入全部工作流",editor_import_action_single:"選擇檔案",editor_import_action_folder:"選擇資料夾",editor_import_action_comfyui:"掃描工作流",editor_import_action_comfyui_scanning:"掃描中...",editor_upload_option_single_help:"上傳單個 workflow_api.json 開始參數映射。",editor_upload_option_folder_help:"匯入本地資料夾中的全部 workflow_api.json 工作流。",editor_upload_option_comfyui_help:"先掃描目前伺服器中已儲存的工作流,再確認是否全部匯入。",editor_upload_option_comfyui_help_with_server:"先掃描伺服器「{server}」中已儲存的工作流,再確認是否全部匯入。",editor_import_comfyui_preview_title:"確認匯入目前伺服器工作流",editor_import_comfyui_preview_message:"已掃描到目前伺服器中儲存的工作流。確認後,會把可匯入的工作流全部匯入到目前設定中。",editor_import_comfyui_preview_message_with_server:"已掃描到伺服器「{server}」中儲存的工作流。確認後,會把可匯入的工作流全部匯入到目前設定中。",editor_import_comfyui_preview_confirm_action:"全部匯入",editor_import_comfyui_preview_summary_total:"共掃描到 {count} 個",editor_import_comfyui_preview_summary_importable:"可匯入 {count} 個",editor_import_comfyui_preview_summary_renamed:"將重新命名 {count} 個",editor_import_comfyui_preview_summary_failed:"不可匯入 {count} 個",editor_import_comfyui_preview_section_importable:"待匯入工作流",editor_import_comfyui_preview_section_failed:"需要處理",editor_import_comfyui_preview_empty:"目前伺服器中沒有找到可匯入的已儲存工作流。",upload_reminder_title:"上傳提醒",upload_reminder_api:"請先從 ComfyUI 匯出 API 格式的 JSON(workflow_api.json),不要上傳編輯器工作流 JSON。",upload_reminder_how:"請在 ComfyUI 中使用 API Format 匯出功能後,再上傳到這裡。",wf_desc_label:"描述說明 (供 Agent 閱讀)",wf_desc_placeholder:"例:生成動漫畫風的基礎圖像",parsed_input:"已解析輸入節點列表",save_workflow:"儲存工作流及其映射表",alias:"別名 (暴露給 AI 的變量名)",ai_desc:"參數描述 (供 AI 理解)",type:"資料類型",type_int:"整數 (Integer)",type_float:"小數 (Float)",type_bool:"布林 (Boolean)",curr_val:"當前本地快取值",node_id:"節點標識",err_load_cfg:"載入全域配置失敗。",ok_save_cfg:"全域配置儲存成功!",err_save_cfg:"儲存配置失敗。",del_wf_confirm:"確認刪除該工作流 {id} 嗎?",workflow_batch_delete_confirm:"確認刪除目前伺服器下已選中的 {count} 個工作流嗎?",workflow_batch_delete_preview:"將刪除:{items}",ok_del_wf:'工作流 "{id}" 已被刪除。',ok_del_wf_batch:"已刪除 {count} 個工作流。",ok_del_wf_batch_partial:"已刪除 {deleted} 個工作流,{missing} 個未找到。",err_del_wf:"刪除工作流失敗。",err_del_wf_batch:"批次刪除工作流失敗。",ok_wf_load:"讀取成功!請勾選你想要對外暴露的參數。",err_invalid_json:"無法解析的 JSON 檔案格式。",err_no_id:"必須填寫一個工作流 ID 才能儲存。",err_no_alias:"您勾選暴露的參數缺少別名名稱 (節點 {node} / 欄位 {val})",warn_no_params:"您沒有暴露任何參數。仍然強制儲存嗎?",warn_overwrite_wf:"工作流 ID「{id}」已存在。是否覆蓋它?",ok_save_wf:"已儲存!Agent 現在可以調度此任務了。",err_save_wf:"儲存工作流失敗。",wf_enabled:"已啟用",wf_disabled:"已停用",ok_toggle_wf:"狀態已更新。",ok_toggle_wf_enabled:"工作流「{id}」已啟用。",ok_toggle_wf_disabled:"工作流「{id}」已停用。",err_toggle_wf:"更新狀態失敗。",err_load_workflows:"載入工作流列表失敗。",err_reorder_workflows:"儲存工作流順序失敗。",workflow_count:"共 {count} 個工作流",workflow_count_one:"共 {count} 個工作流",workflow_count_filtered_one:"顯示 {visible} / 共 {total} 個工作流",workflow_count_filtered:"顯示 {visible} / 共 {total} 個工作流",loading:"載入中...",toggle_workflow:"啟用或停用工作流 {id}",delete_workflow:"刪除工作流 {id}",edit_workflow:"編輯工作流 {id}",upload_new_version:"上傳新版本",more:"更多",edit:"編輯",ok_load_saved_wf:"已載入已儲存工作流,你現在可以修改參數映射。",err_load_saved_wf:"載入已儲存工作流詳情失敗。",save_workflow_edit:"儲存工作流修改",editor_mode_editing:"正在編輯已儲存工作流",editor_mode_create:"建立新的工作流映射",empty_nodes:"上傳 workflow JSON 後,即可開始配置參數映射。",err_ui_workflow_format:"這個檔案看起來是 ComfyUI 的編輯器工作流,不是 workflow_api.json。請匯出 API 格式的工作流 JSON 後再上傳。",err_no_mappable_params:"這個 workflow JSON 已成功讀取,但沒有找到可配置的標量輸入參數。",err_bulk_import_comfyui_preview:"掃描 ComfyUI 工作流失敗。",server_manager:"伺服器管理",add_server:"添加伺服器",server_name:"伺服器名稱",server_id_label:"伺服器 ID",server_id_help:"可選,不填寫則自動生成,後續不可修改。",server_name_help:"名稱僅用於顯示,後續可以隨時修改。",server_type_comfyui:"ComfyUI",server_type_hint_comfyui:"用於本地或自託管的 ComfyUI 實例,調用標準 `/prompt` API。",server_unsupported_short:"(不支援)",server_unsupported_reason:"目前分支不支援伺服器類型「{type}」。請先遷移或刪除該伺服器配置,再繼續使用。",server_url_label:"伺服器地址",server_url_help_comfyui:"直接調用標準 ComfyUI 端點:`/prompt`、`/history/{id}` 與 `/view`。",server_auth_label:"鑑權令牌(可選)",server_auth_placeholder:"Bearer your-token",server_auth_help:"遠端伺服器如需鑑權,填入 Authorization header 的值。",comfy_api_key_label:"ComfyUI API Key(可選)",comfy_api_key_placeholder:"comfyui-xxxxxxxx...",comfy_api_key_help:"用於雲端節點(Kling、Sora、Nano Banana 等)。前往 platform.comfy.org 生成。",comfy_api_key_help_prefix:"用於雲端節點(Kling、Sora、Nano Banana 等)。前往 ",comfy_api_key_help_link:"platform.comfy.org",comfy_api_key_help_suffix:" 生成。",server_test_connection:"測試連接",server_test_testing:"測試中…",server_test_ok:"連接成功",server_test_fail:"連接失敗",server_output_dir:"輸出目錄",no_servers:"暫無配置的伺服器。",ok_add_server:"伺服器添加成功。",err_add_server:"添加伺服器失敗。",ok_toggle_server:"伺服器狀態已更新。",ok_toggle_server_enabled:"伺服器「{id}」已啟用。",ok_toggle_server_disabled:"伺服器「{id}」已停用。",err_toggle_server:"更新伺服器狀態失敗。",del_server_confirm:"確認刪除伺服器 {id}?資料檔案不會被刪除。",ok_del_server:"伺服器已移除。",ok_del_server_keep_data:"伺服器已移除,本地 data 資料已保留。",ok_del_server_with_data:"伺服器已移除,本地 data 資料已刪除。",err_del_server:"移除伺服器失敗。",delete_server_data_checkbox:"同時刪除該伺服器在 data/ 中的本地資料",server_enabled:"已啟用",server_disabled:"已停用",server_agent_visible:"對 Agent 可見",server_agent_hidden:"對 Agent 隱藏",server_agent_visibility_hint:"控制 Agent 是否可以發現和使用此伺服器",select_server:"選擇伺服器",current_server_config:"伺服器配置",current_server_title:"當前伺服器",no_server_selected_short:"未選擇伺服器",add_server_toggle:"添加伺服器",add_server_close:"關閉",cancel:"取消",confirm:"確認",confirm_action_title:"確認操作",delete:"刪除",overwrite:"覆蓋",leave_anyway:"仍然離開",save_anyway:"仍然儲存",add_server_panel_title:"添加新伺服器",add_server_modal_title:"添加伺服器",edit_server_modal_title:"編輯伺服器",server_import_after_create:"儲存後從 ComfyUI 全量導入",save_and_connect:"儲存並連線",save_server_changes:"儲存修改",create_first_server:"建立第一個伺服器",new_server_name_placeholder:"本地伺服器",err_server_id_url_required:"必須填寫伺服器 ID 和地址。",err_server_name_id_url_required:"必須填寫伺服器 ID、名稱和地址。",err_server_name_url_required:"必須填寫伺服器名稱和地址。",err_server_name_required:"必須填寫伺服器名稱。",err_select_server_first:"請先添加或選擇一個伺服器。",err_select_server_before_register:"請先添加或選擇伺服器,再註冊工作流。",err_no_server_selected:"當前未選擇伺服器。",err_no_workflow_uploaded:"未上傳工作流資料,請先上傳 workflow JSON。",editor_step_1:"上傳工作流",editor_step_2:"基礎資訊",editor_step_3:"參數映射",editor_step_1_hint:"第 1 步:上傳 workflow_api.json 解析參數。",editor_step_2_hint:"第 2 步:填寫工作流基礎資訊。",editor_step_3_hint:"第 3 步:檢查參數映射並儲存。",mapping_search_placeholder:"按節點、欄位、別名或描述搜尋",mapping_sort_node_id_asc:"節點 ID(升序)",mapping_sort_node_id_desc:"節點 ID(降序)",mapping_sort_class_asc:"節點類型(A-Z)",mapping_sort_param_default:"參數預設順序",mapping_sort_param_name:"參數名(A-Z)",mapping_sort_param_type:"類型(A-Z)",mapping_sort_param_exposed:"已暴露優先",mapping_exposed_only:"僅顯示已暴露參數",mapping_required_only:"僅顯示必填參數",mapping_apply_recommended:"一鍵暴露推薦參數",mapping_expose_visible:"暴露當前可見參數",mapping_unexpose_visible:"取消暴露當前可見參數",mapping_collapse_configs:"摺疊全部參數配置",mapping_expand_configs:"展開全部參數配置",mapping_collapse_all:"摺疊全部節點",mapping_expand_all:"展開全部節點",mapping_reset_filters:"重置篩選",mapping_summary:"當前顯示 {visible_nodes} 個節點中的 {visible_params}/{total_params} 個參數,已暴露 {exposed_params} 個",mapping_apply_recommended_ok:"已暴露推薦參數 {count} 項",mapping_no_recommended_changes:"沒有新增可暴露的推薦參數。",mapping_expose_visible_ok:"已暴露當前可見參數 {count} 項",mapping_unexpose_visible_ok:"已取消暴露當前可見參數 {count} 項",mapping_no_visible_params:"當前沒有可執行此操作的可見參數。",mapping_no_batch_changes:"沒有需要更新的參數。",empty_nodes_filtered:"當前篩選條件下沒有匹配參數。",mapping_shortcuts_hint:"快捷鍵:Ctrl/Cmd+S 儲存,/ 聚焦搜尋,Esc 清空搜尋",toggle_node:"摺疊或展開節點 {id}",toggle_param_config:"摺疊或展開參數配置 {field}",confirm_unsaved_leave:"編輯頁有未儲存更改,仍要離開嗎?",workflow_upgrade_ready:"已載入新版本,請先檢查保留、新增與待確認的參數後再儲存。",workflow_upgrade_summary:"已保留 {retained} 個,待確認 {review} 個,新增 {added} 個,移除 {removed} 個",migration_status_retained:"已保留",migration_status_review:"待確認",migration_status_new:"新增",migration_review_hint:"這個參數已發生變化,建議儲存前重新檢查。",server_status_online:"在線",server_status_offline:"離線",update_available:"發現新版本({local} → {remote}),點擊一鍵更新並重啟。",update_dismiss:"關閉",update_now:"立即更新",update_pulling:"正在拉取最新程式碼…",update_restarting:"正在重啟服務…",update_waiting:"等待服務恢復…",update_done:"更新完成,正在重新整理…",update_success:"更新成功",update_result_system:"主程式已從 {before} 更新到 {after}。",update_result_frontend:"前端靜態檔案已從 {before} 更新到 {after}。",update_result_generic:"最新更新已套用。",update_wait_timeout:"更新已完成,但服務長時間沒有恢復。請手動重新整理頁面或重啟服務。",update_failed:"更新失敗"},Yv={title:"ComfyUI OpenClaw Skill",subtitle:"ワークフローを解析して、エージェント用の視覚的なパラメータマッピングを作成します。",lang_btn:"言語切り替え",global_config:"グローバル設定",server_url:"ComfyUI サーバー URL",output_dir:"画像出力ディレクトリ",save_config:"設定を保存",workflow_manager:"ワークフロー管理",workflow_search_placeholder:"ワークフローを名前や説明で検索",workflow_sort_custom:"手動",workflow_sort_recent:"最近の更新",workflow_sort_name:"名前",workflow_sort_name_asc:"ワークフローID (昇順)",workflow_sort_name_desc:"ワークフローID (降順)",workflow_sort_enabled:"有効を優先",run_workflow_short:"実行",workflow_history_short:"履歴",workflow_batch_actions:"一括操作",workflow_selected_count:"{count} 件選択中",workflow_selection_mode:"管理モード",workflow_enter_batch_mode:"管理",workflow_management_active:"管理中",workflow_exit_batch_mode:"完了",workflow_select_all:"すべて選択",workflow_clear_selection:"選択解除",workflow_delete_selected:"削除",workflow_select_workflow:"ワークフロー {id} を選択",import_local_files:"ローカルファイルをインポート",import_local_folder:"ローカルフォルダーをインポート",import_all_from_comfyui:"ComfyUIからすべてインポート",bulk_import_loading:"インポート中...",workflow_drag_handle:"ドラッグして {id} を並べ替え",workflow_more_actions:"ワークフロー {id} のその他のアクション",no_workflows:"設定されたワークフローマッピングがまだありません。",no_workflows_match:"現在の検索に一致するワークフローはありません。",register_new:"新しいワークフローを登録(アップロード&マッピング)",drag_upload:"ワークフローのインポート方法を選択",after_upload:"単一ファイル、ローカルフォルダー、またはComfyUIから一括でインポートします。",editor_import_source_label:"インポート元",editor_import_source_single:"単一アップロード",editor_import_source_folder:"ローカルフォルダー",editor_import_source_comfyui:"現在のサーバーからすべてインポート",editor_import_action_single:"ファイルを選択",editor_import_action_folder:"フォルダーを選択",editor_import_action_comfyui:"ワークフローをスキャン",editor_import_action_comfyui_scanning:"スキャン中...",editor_upload_option_single_help:"1つの workflow_api.json をアップロードしてマッピングを開始します。",editor_upload_option_folder_help:"ローカルフォルダー内のすべての workflow_api.json ファイルをインポートします。",editor_upload_option_comfyui_help:"選択したComfyUIサーバーをスキャンし、保存されたワークフローを確認してからすべてインポートします。",editor_upload_option_comfyui_help_with_server:'サーバー "{server}" 上の保存済みワークフローをスキャンし、すべてインポートする前に確認します。',editor_import_comfyui_preview_title:"現在のサーバーのワークフローを確認",editor_import_comfyui_preview_message:"選択したサーバーでこれらの保存済みワークフローが見つかりました。インポート可能なすべてのワークフローを現在の設定にインポートすることを確認してください。",editor_import_comfyui_preview_message_with_server:'サーバー "{server}" でこれらの保存済みワークフローが見つかりました。インポート可能なすべてのワークフローを現在の設定にインポートすることを確認してください。',editor_import_comfyui_preview_confirm_action:"すべてインポート",editor_import_comfyui_preview_summary_total:"{count} 件検出",editor_import_comfyui_preview_summary_importable:"{count} 件インポート可能",editor_import_comfyui_preview_summary_renamed:"{count} 件名前変更予定",editor_import_comfyui_preview_summary_failed:"{count} 件利用不可",editor_import_comfyui_preview_section_importable:"インポート準備完了",editor_import_comfyui_preview_section_failed:"要確認",editor_import_comfyui_preview_empty:"このサーバーには保存されたワークフローが見つかりませんでした。",upload_reminder_title:"アップロードの注意点",upload_reminder_api:"ワークフローはエディタ用のJSONではなく、ComfyUIのAPIフォーマットJSON(workflow_api.json)としてエクスポートしてください。",upload_reminder_how:"ComfyUIで、アップロード前に「Save (API Format)」を使用してください。",upload_reminder_path:"保存後、ファイルは data///workflow.json および data///schema.json に書き込まれます。",upload_reminder_local_path:"アップロード時、ブラウザは通常選択されたファイル名のみを公開し、完全なローカルパスは公開しません。",wf_id_label:"ワークフローID(英数字推奨)",wf_id_placeholder:"例:sd_basic",wf_desc_label:"説明(エージェント用)",wf_desc_placeholder:"例:アニメ風のベース画像を生成する",register_new_short:"+ 新規登録",back:"戻る",wf_basic_info:"基本情報",parsed_input:"解析された入力ノード一覧",save_workflow:"ワークフローとマッピングスキーマを保存",alias:"エイリアス(公開名)",ai_desc:"AI 用説明",ai_desc_placeholder:"例:高品質な風景のプロンプト",type:"型",type_str:"文字列 (String)",type_int:"整数 (Integer)",type_float:"小数 (Float)",type_bool:"真偽値 (Boolean)",required:"必須 (Required)",curr_val:"現在の値",node_id:"ノードID",err_load_cfg:"グローバル設定の読み込みに失敗しました。",ok_save_cfg:"グローバル設定を保存しました!",err_save_cfg:"設定の保存に失敗しました。",del_wf_confirm:"ワークフロー {id} を削除しますか?",workflow_batch_delete_confirm:"このサーバー上の選択された {count} 件のワークフローを削除しますか?",workflow_batch_delete_preview:"以下が削除されます:{items}",ok_del_wf:"ワークフロー「{id}」を削除しました。",ok_del_wf_batch:"{count} 件のワークフローを削除しました。",ok_del_wf_batch_partial:"{deleted} 件削除し、{missing} 件は見つかりませんでした。",err_del_wf:"ワークフローの削除に失敗しました。",err_del_wf_batch:"選択したワークフローの削除に失敗しました。",ok_wf_load:"ワークフローを読み込みました!公開するパラメータを選択してください。",err_invalid_json:"無効なJSONファイルです。",err_no_id:"ワークフローIDを入力してください。",err_no_alias:"公開パラメータにエイリアスがありません(ノード {node} / {val})",warn_no_params:"パラメータが1つも公開されていません。保存しますか?",warn_overwrite_wf:"ワークフローID「{id}」は既に存在します。上書きしますか?",ok_save_wf:"保存しました。エージェントがこのワークフローを呼び出せるようになりました。",err_save_wf:"ワークフローの保存に失敗しました。",wf_enabled:"有効",wf_disabled:"無効",ok_toggle_wf:"ステータスを更新しました。",ok_toggle_wf_enabled:"ワークフロー「{id}」を有効にしました。",ok_toggle_wf_disabled:"ワークフロー「{id}」を無効にしました。",err_toggle_wf:"ステータスの更新に失敗しました。",err_load_workflows:"ワークフロー一覧の読み込みに失敗しました。",err_reorder_workflows:"ワークフローの順序の保存に失敗しました。",ok_bulk_import_summary:"インポート完了。作成:{created}、名前変更:{renamed}、失敗:{failed}。",err_bulk_import_comfyui:"ComfyUIからのワークフローインポートに失敗しました。",err_bulk_import_comfyui_preview:"ComfyUIのワークフロースキャンに失敗しました。",err_bulk_import_local:"ローカルワークフローファイルのインポートに失敗しました。",workflow_count:"{count} ワークフロー",workflow_count_one:"{count} ワークフロー",workflow_count_filtered_one:"{visible} 表示 / {total} ワークフロー",workflow_count_filtered:"{visible} 表示 / {total} ワークフロー",loading:"読み込み中...",toggle_workflow:"ワークフロー {id} の有効/無効を切り替え",delete_workflow:"ワークフロー {id} を削除",edit_workflow:"ワークフロー {id} を編集",upload_new_version:"新バージョンをアップロード",more:"もっと見る",edit:"編集",ok_load_saved_wf:"保存されたワークフローを読み込みました。パラメータのマッピングを調整できます。",err_load_saved_wf:"保存されたワークフローの読み込みに失敗しました。",save_workflow_edit:"変更を保存",editor_mode_editing:"保存済みワークフローの編集",editor_mode_create:"新規ワークフローマッピングの作成",empty_nodes:"パラメータのマッピングを開始するには、ワークフローJSONをアップロードしてください。",err_ui_workflow_format:"このファイルは workflow_api.json ではなく、ComfyUIエディターのワークフローのようです。APIフォーマットでエクスポートして再度アップロードしてください。",err_no_mappable_params:"JSONファイルは読み込まれましたが、設定可能な入力が見つかりませんでした。",server_manager:"サーバー管理",export_bundle:"設定エクスポート",import_bundle:"設定インポート",bulk_import_report_title_comfyui:"ComfyUI インポートレポート",bulk_import_report_title_local:"ローカルインポートレポート",bulk_import_section_created:"作成済み",bulk_import_section_renamed:"名前変更",bulk_import_section_skipped:"スキップ",bulk_import_section_failed:"失敗",bulk_import_section_empty:"このセクションにはアイテムがありません。",bulk_import_section_count:"{count} 件",bulk_import_summary_created:"作成: {count}",bulk_import_summary_renamed:"名前変更: {count}",bulk_import_summary_skipped:"スキップ: {count}",bulk_import_summary_failed:"失敗: {count}",dep_check_title:"依存関係の確認",dep_check_all_ready:"すべての依存関係が満たされています。実行可能です。",dep_check_skip:"スキップ",dep_check_install_selected:"選択したものをインストール",dep_check_installing:"インストール中...",dep_check_missing_nodes:"不足しているカスタムノード",dep_check_unknown_nodes:"不明なノード(手動インストールが必要)",dep_check_missing_models:"不足しているモデル(手動ダウンロードが必要)",dep_check_packages_count:"{count} パッケージ",dep_check_model_folder:"フォルダー: {folder}",dep_check_install_results:"インストール結果",dep_check_needs_restart:"変更を適用するにはComfyUIの再起動が必要です。",dep_check_loading:"依存関係を確認中...",dep_check_btn:"依存関係を確認",err_dep_check:"依存関係の確認に失敗しました。",err_dep_install:"依存関係のインストールに失敗しました。",export_bundle_title:"設定エクスポート",import_bundle_preview_title:"インポートプレビュー",export_bundle_confirm:"バンドルをダウンロード",import_bundle_confirm:"バンドルをインポート",export_panel_hint:"エクスポートするサーバーとワークフローを選択してください。",export_preview_summary:"エクスポートには {servers} のサーバーと {workflows} のワークフローが含まれます。警告: {warnings}。",export_server_workflow_count:"{count} ワークフロー",export_workflow_disabled:"無効",export_server_disabled:"サーバー無効",export_selected_count:"{selected}/{total} 選択済み",export_toggle_server:"{server} のワークフローを切り替え",transfer_section_created_servers:"追加するサーバー",transfer_section_updated_servers:"更新するサーバー",transfer_section_created_workflows:"インポートするワークフロー",transfer_section_overwritten_workflows:"上書きするワークフロー",transfer_section_skipped_items:"スキップするアイテム",transfer_section_empty:"アイテムがありません。",transfer_warning_title:"警告",ok_transfer_export_started:"バンドルのダウンロードが開始されました。",ok_transfer_import:"インポートが完了しました。{servers} のサーバーと {created} のワークフローを追加し、{overwritten} のワークフローを上書きしました。",err_transfer_invalid_bundle:"無効なJSONバンドルファイルです。",err_transfer_export_preview:"エクスポートプレビューの作成に失敗しました。",err_transfer_export:"エクスポートバンドルの作成に失敗しました。",err_transfer_preview:"インポートプレビューの作成に失敗しました。",err_transfer_import:"バンドルのインポートに失敗しました。",transfer_apply_environment:"デフォルトサーバー、URL、および出力ディレクトリの設定も適用する",transfer_preview_summary:"{servers}台のサーバー追加、{updated_servers}台のサーバー更新、{created}個のワークフロー追加、{overwritten}個のワークフロー上書き、{skipped}個のアイテムスキップを行います。警告: {warnings}。続行しますか?",add_server:"サーバーを追加",server_name:"サーバー名",server_id_label:"サーバーID",server_id_help:"(任意)空白の場合は自動生成されます。後から変更できません。",server_name_help:"表示名です。後から変更可能です。",server_type_comfyui:"ComfyUI",server_type_hint_comfyui:"標準的な /prompt APIを提供するComfyUIに用います。",server_unsupported_short:"(未対応)",server_unsupported_reason:'サーバータイプ "{type}" はサポートされていません。',server_url_label:"サーバー URL",server_url_help_comfyui:"/prompt などの標準エンドポイントを直接呼び出します。",server_auth_label:"認証トークン (任意)",server_auth_placeholder:"Bearer your-token",server_auth_help:"リモートサーバーに認証が必要な場合は Authorization ヘッダーの値を入力してください。",comfy_api_key_label:"ComfyUI APIキー (任意)",comfy_api_key_placeholder:"comfyui-xxxxxxxx...",comfy_api_key_help:"Kling、Sora などのクラウドノードに必要です(platform.comfy.org で生成)。",comfy_api_key_help_prefix:"クラウドノードに必要です。生成: ",comfy_api_key_help_link:"platform.comfy.org",comfy_api_key_help_suffix:"。",server_test_connection:"接続テスト",server_test_testing:"テスト中…",server_test_ok:"接続成功",server_test_fail:"接続失敗",server_output_dir:"出力ディレクトリ",no_servers:"設定されたサーバーがありません。",ok_add_server:"サーバーを追加しました。",err_add_server:"サーバーの追加に失敗しました。",ok_toggle_server:"サーバーのステータスを更新しました。",ok_toggle_server_enabled:"サーバー「{id}」を有効にしました。",ok_toggle_server_disabled:"サーバー「{id}」を無効にしました。",err_toggle_server:"ステータスの更新に失敗しました。",del_server_confirm:"サーバー {id} を削除しますか? データファイルは削除されません。",ok_del_server:"サーバーを削除しました。",ok_del_server_keep_data:"サーバーを削除しました。(データは維持されました)",ok_del_server_with_data:"サーバーを削除しました。(データも削除されました)",err_del_server:"サーバーの削除に失敗しました。",delete_server_data_checkbox:"このサーバーの local data(data/ 内)も削除する",server_enabled:"有効",server_disabled:"無効",server_agent_visible:"エージェントに公開",server_agent_hidden:"エージェントから隠す",server_agent_visibility_hint:"エージェントがこのサーバーを使用できるか制御します",select_server:"サーバーを選択",current_server_config:"サーバー設定",current_server_title:"現在のサーバー",no_server_selected_short:"サーバー未選択",add_server_toggle:"サーバーを追加",add_server_close:"閉じる",cancel:"キャンセル",close:"閉じる",confirm:"確認",refresh:"更新",confirm_action_title:"操作の確認",delete:"削除",overwrite:"上書き",leave_anyway:"離れる",save_anyway:"保存して続行",add_server_panel_title:"新規サーバーの追加",add_server_modal_title:"サーバーを追加",edit_server_modal_title:"サーバー設定の編集",server_import_after_create:"保存後にComfyUIからすべてインポートする",save_and_connect:"保存して接続",save_server_changes:"変更を保存",create_first_server:"最初のサーバーを作成",new_server_name_placeholder:"ローカルサーバー",new_server_id_placeholder:"new-server-id",new_server_url_placeholder:"http://10.0.0.1:8188",err_server_id_url_required:"サーバーIDとURLは必須です。",err_server_name_id_url_required:"サーバー名、ID、およびURLは必須です。",err_server_name_url_required:"サーバー名とURLは必須です。",err_server_name_required:"サーバー名は必須です。",err_select_server_first:"まずはサーバーを追加・選択してください。",err_select_server_before_register:"ワークフローを登録するにはサーバーを選択してください。",err_no_server_selected:"サーバーが選択されていません。",err_no_workflow_uploaded:"ワークフローデータがありません。JSONをアップロードしてください。",editor_step_1:"アップロード",editor_step_2:"基本情報",editor_step_3:"パラメータ設定",editor_step_1_hint:"ステップ 1: workflow_api.json をアップロード",editor_step_2_hint:"ステップ 2: 基本情報を入力",editor_step_3_hint:"ステップ 3: パラメータマッピングの確認と保存",mapping_search_placeholder:"ノード、フィールド、エイリアスなどで検索",mapping_sort_node_id_asc:"ノードID (昇順)",mapping_sort_node_id_desc:"ノードID (降順)",mapping_sort_class_asc:"ノードタイプ (A-Z)",mapping_sort_param_default:"デフォルト順",mapping_sort_param_name:"パラメータ名 (A-Z)",mapping_sort_param_type:"型 (A-Z)",mapping_sort_param_exposed:"公開済みを優先",mapping_exposed_only:"公開パラメータのみ表示",mapping_required_only:"必須パラメータのみ表示",mapping_apply_recommended:"推奨設定を自動適用",mapping_expose_visible:"表示中を公開",mapping_unexpose_visible:"表示中を非公開",mapping_collapse_configs:"設定を折りたたむ",mapping_expand_configs:"設定を展開",mapping_collapse_all:"すべて折りたたむ",mapping_expand_all:"すべて展開",mapping_reset_filters:"フィルターをリセット",mapping_summary:"{visible_nodes} 個のノードに {visible_params}/{total_params} 変数表示中。公開済み: {exposed_params}",mapping_apply_recommended_ok:"推奨パラメータ {count} 件を公開しました。",mapping_no_recommended_changes:"推奨パラメータはすべて公開済みです。",mapping_expose_visible_ok:"{count} 件のパラメータを公開しました。",mapping_unexpose_visible_ok:"{count} 件のパラメータを非公開にしました。",mapping_no_visible_params:"表示中のパラメータがありません。",mapping_no_batch_changes:"変更が必要なパラメータはありませんでした。",empty_nodes_filtered:"フィルターに一致するパラメータがありません。",mapping_shortcuts_hint:"ショートカット: Ctrl/Cmd+S 保存、/ 検索、Esc 検索クリア",toggle_node:"ノード {id} の開閉",toggle_param_config:"{field} の設定を開閉",confirm_unsaved_leave:"保存されていない変更があります。エディターを離れますか?",workflow_upgrade_ready:"新バージョンが読み込まれました。",workflow_upgrade_summary:"維持:{retained}、要確認:{review}、追加:{added}、削除:{removed}",run_workflow_title:"ワークフロー {id} の実行",run_workflow_submit:"実行",run_workflow_running:"実行中…",run_workflow_image_choose:"画像を選択",run_workflow_image_uploading:"アップロード中…",run_workflow_success:"「{id}」が成功しました。",run_workflow_error:"実行に失敗しました。",run_workflow_comfyui_error_prefix:"ComfyUI エラー:",workflow_status_running:"実行中…",workflow_status_success:"成功",workflow_status_error:"エラー",workflow_status_view_history:"履歴を表示",run_workflow_no_params:"パラメータが公開されていません。",run_workflow_optional_empty:"空のままにする",run_workflow_boolean_true:"有効",run_workflow_last_result:"前回の実行結果",run_workflow_status_success:"成功",run_workflow_status_error:"エラー",workflow_history_title:"{id} の実行履歴",workflow_history_empty:"履歴はありません。",workflow_history_select:"履歴を選択して詳細を確認してください。",workflow_history_load_error:"履歴の読み込みに失敗しました。",workflow_history_delete_confirm:"この履歴を削除しますか?",workflow_history_delete_success:"履歴を削除しました。",workflow_history_delete_error:"履歴の削除に失敗しました。",workflow_history_delete_entry:"履歴を削除",workflow_history_clear:"履歴をクリア",workflow_history_clear_confirm:"「{id}」のすべての履歴を削除しますか?",workflow_history_clear_success:"履歴をクリアしました。",workflow_history_clear_error:"履歴のクリアに失敗しました。",workflow_history_status:"ステータス",workflow_history_created_at:"作成日時",workflow_history_finished_at:"終了日時",workflow_history_duration_label:"所要時間",workflow_history_duration:"{ms} ms",workflow_history_image_count:"{count} 枚の画像",workflow_history_preview:"プレビュー",workflow_history_preview_empty:"プレビュー可能な画像がありません。",workflow_history_overview:"概要",workflow_history_run_summary:"実行概要",workflow_history_run_label:"実行 #{index}",workflow_history_run_id:"実行 ID",workflow_history_started_at:"開始日時",workflow_history_prompt_id:"プロンプト ID",workflow_history_open_image:"画像を開く",workflow_history_image_alt:"実行結果画像 {index}",workflow_history_image_path:"ファイルパス",workflow_history_generated_images:"生成された画像",workflow_history_no_args:"パラメータはありません。",workflow_history_resolved_args:"解決済み引数",workflow_history_error:"エラー",workflow_history_images:"画像",migration_status_retained:"維持",migration_status_review:"要確認",migration_status_new:"新規",migration_review_hint:"パラメータが変更されました。保存の前に確認してください。",server_status_online:"オンライン",server_status_offline:"オフライン",update_available:"新バージョンが利用可能です ({local} -> {remote})。ここをクリックして更新してください。",update_dismiss:"閉じる",update_now:"今すぐ更新",update_pulling:"最新の変更を取得中…",update_restarting:"サーバーを再起動中…",update_waiting:"サーバーを待機中…",update_done:"更新しました! 再読み込み中…",update_success:"更新完了",update_result_system:"コア機能が {before} から {after} に更新されました。",update_result_frontend:"フロントエンドが {before} から {after} に更新されました。",update_result_generic:"最新の更新が適用されました。",update_wait_timeout:"更新は終了しましたが、サーバーが応答しません。手動で再起動してください。",update_failed:"更新失敗"},rd={en:Qv,zh:rp,zh_hant:Jv,ja:Yv};function nd(e){if(!e)return"en";const t=String(e).toLowerCase();return t==="zh"||t==="zh-cn"||t==="zh_hans"?"zh":t==="zh_hant"||t==="zh-tw"||t==="zh-hant"?"zh_hant":t==="ja"||t.startsWith("ja")?"ja":"en"}function Xv(e,t,r={}){var o;let n=((o=rd[e])==null?void 0:o[t])??rd.en[t]??t;for(const[l,i]of Object.entries(r))n=n.replace(`{${l}}`,String(i));return n}function np(e){try{return window.localStorage.getItem(e)}catch{return null}}function da(e,t){try{window.localStorage.setItem(e,t)}catch{}}function Gv(e){try{window.localStorage.removeItem(e)}catch{}}function Zv(e){return typeof e=="number"?Number.isInteger(e)?"int":"float":typeof e=="boolean"?"boolean":"string"}function eg(e,t,r){if(e.includes("KSampler")){if(t==="seed")return{exposed:!0,required:!1,name:t,description:"Random seed (for reproducibility)"};if(t==="steps")return{exposed:!0,required:!1,name:t,description:"Generation steps"}}if((e.includes("CLIPTextEncode")||e.includes("Text")||e.includes("Prompt"))&&(t==="text"||t==="prompt"))return{exposed:!0,required:!0,name:`prompt_${r}`,description:"Text prompt description"};if(e==="EmptyLatentImage"&&["width","height","batch_size"].includes(t))return{exposed:!0,required:!1,name:t,description:`Image ${t}`};if(e==="SaveImage"&&t==="filename_prefix")return{exposed:!0,required:!1,name:t,description:"Output file prefix"};if(e==="LightCCDoubaoImageNode"){if(t==="prompt")return{exposed:!0,required:!0,name:t,description:"Positive image prompt"};if(t==="size")return{exposed:!0,required:!1,name:t,description:"e.g., 1:1,2048x2048"};if(t==="seed")return{exposed:!0,required:!1,name:t,description:"Random seed"};if(t==="num")return{exposed:!0,required:!1,name:t,description:"Number of images to generate"}}return{exposed:!1,required:!1,name:t,description:""}}function tg(e){const t={};return Object.entries(e).forEach(([r,n])=>{const o=n;if(!(o!=null&&o.inputs))return;const l=o.class_type||"";Object.entries(o.inputs).forEach(([i,a])=>{if(Array.isArray(a))return;const u=eg(l,i,r);t[`${r}_${i}`]={exposed:u.exposed,node_id:Number.parseInt(r,10),field:i,name:u.name,type:Zv(a),required:u.required,description:u.description,default:a,example:a,choices:[],currentVal:a,nodeClass:l||"UnknownNode"}})}),t}function rg(e){return!!(e&&typeof e=="object"&&!Array.isArray(e)&&Array.isArray(e.nodes)&&Array.isArray(e.links))}function fa(e){const t=JSON.parse(e);if(rg(t)){const r=new Error("Unsupported ComfyUI editor workflow format");throw r.code="EDITOR_WORKFLOW_FORMAT",r}return{workflowData:t,schemaParams:tg(t)}}function ng(e){return!e||typeof e!="string"?"":e.replace(/\.[^.]+$/,"").trim()}function og(e){var t;if(!e||typeof e!="object"||Array.isArray(e))return"";for(const r of Object.values(e)){const n=(t=r==null?void 0:r._meta)==null?void 0:t.title;if(typeof n=="string"&&n.trim())return n.trim()}return""}function lg(e){return typeof e!="string"?"":e.trim().replace(/[./\\]+/g,"-").replace(/[^\p{L}\p{N}_-]+/gu,"-").replace(/-+/g,"-").replace(/^[-_]+|[-_]+$/g,"")}function od(e,t=""){var o,l,i,a,u,c,d;const r=e,n=[r.workflow_name,r.name,r.title,(o=r._meta)==null?void 0:o.title,(l=r.extra)==null?void 0:l.workflow_name,(i=r.extra)==null?void 0:i.name,(a=r.extra)==null?void 0:a.title,(u=r.metadata)==null?void 0:u.workflow_name,(c=r.metadata)==null?void 0:c.name,(d=r.metadata)==null?void 0:d.title,ng(t),og(e)];for(const f of n){const m=lg(f);if(m)return m}return"workflow"}function hr(e){return String(e||"").trim().toLowerCase().replace(/[\s_-]+/g,"")}function ig(e){const t={byFieldAndClass:new Map,byFieldAndType:new Map,byAliasAndType:new Map};return Object.entries(e||{}).forEach(([r,n])=>{var f,m,v;const o=hr(n.field),l=hr(n.nodeClass),i=hr(n.type),a=hr(n.name),u=`${o}|${l}`,c=`${o}|${i}`,d=`${a}|${i}`;t.byFieldAndClass.has(u)||t.byFieldAndClass.set(u,[]),(f=t.byFieldAndClass.get(u))==null||f.push([r,n]),t.byFieldAndType.has(c)||t.byFieldAndType.set(c,[]),(m=t.byFieldAndType.get(c))==null||m.push([r,n]),a&&(t.byAliasAndType.has(d)||t.byAliasAndType.set(d,[]),(v=t.byAliasAndType.get(d))==null||v.push([r,n]))}),t}function sg(e,t,r){const n=hr(e.field),o=hr(e.nodeClass),l=hr(e.type),i=hr(e.name),a=[];[t.byFieldAndClass.get(`${n}|${o}`),t.byFieldAndType.get(`${n}|${l}`),i?t.byAliasAndType.get(`${i}|${l}`):null].forEach(d=>{Array.isArray(d)&&d.forEach(f=>a.push(f))});const u=[],c=new Set;return a.filter(([d])=>!r.has(d)).forEach(([d,f])=>{c.has(d)||(c.add(d),u.push([d,f]))}),u.length!==1?null:u[0]}function ld(e,t,r,n=""){const o={...e,exposed:!!t.exposed,name:t.name||e.name,type:t.type||e.type,required:!!t.required,description:t.description||"",default:t.default??e.default,example:t.example??e.example,choices:Array.isArray(t.choices)?[...t.choices]:[...e.choices||[]],migrationStatus:r,migrationReason:n};return t.type&&e.type&&t.type!==e.type&&(o.type=e.type,o.migrationStatus="review",o.migrationReason="type_changed"),o}function ag(e,t){const r=new Set,n=ig(e),o={},l={retained:0,review:0,added:0,removed:0,matched:[],addedKeys:[],removedKeys:[]};return Object.entries(t||{}).forEach(([i,a])=>{var d,f,m;const u=e==null?void 0:e[i];if(u){r.add(i),o[i]=ld(a,u,"retained"),l.retained+=1,(d=l.matched)==null||d.push({previousKey:i,nextKey:i,status:"retained"});return}const c=sg(a,n,r);if(c){const[v,g]=c;r.add(v),o[i]=ld(a,g,"review","fallback_match"),l.review+=1,(f=l.matched)==null||f.push({previousKey:v,nextKey:i,status:"review"});return}o[i]={...a,migrationStatus:"new",migrationReason:"new_param"},l.added+=1,(m=l.addedKeys)==null||m.push(i)}),Object.keys(e||{}).forEach(i=>{var a;r.has(i)||(l.removed+=1,(a=l.removedKeys)==null||a.push(i))}),{schemaParams:o,summary:l}}function ug(e){const t=new Map;return Object.entries(e).forEach(([r,n])=>{var o;t.has(n.node_id)||t.set(n.node_id,{classType:n.nodeClass,params:[]}),(o=t.get(n.node_id))==null||o.params.push({key:r,...n})}),Array.from(t.entries()).sort((r,n)=>Number(r[0])-Number(n[0]))}function cg(e){const t={};let r=0;for(const n of Object.values(e)){if(!n.exposed)continue;if(r+=1,!n.name||!n.name.trim())return{finalSchema:null,exposedCount:r,missingAlias:n};const o=n.name.trim();t[o]={node_id:n.node_id,field:n.field,required:!!n.required,type:n.type,description:n.description||""},n.default!==void 0&&(t[o].default=n.default),n.example!==void 0&&(t[o].example=n.example),Array.isArray(n.choices)&&n.choices.length&&(t[o].choices=n.choices)}return{finalSchema:t,exposedCount:r,missingAlias:null}}function dg(e,t){const r={...fa(JSON.stringify(e)).schemaParams},n=Object.entries(t||{});return n.some(([,l])=>l&&typeof l=="object"&&"exposed"in l)?(n.forEach(([l,i])=>{if(!r[l])return;const a=i;r[l]={...r[l],exposed:!!a.exposed,name:String(a.name||r[l].name),type:String(a.type||r[l].type),required:!!a.required,description:String(a.description||""),default:a.default??r[l].default,example:a.example??r[l].example,choices:Array.isArray(a.choices)?[...a.choices]:[...r[l].choices||[]]}}),r):(n.forEach(([l,i])=>{const a=i,u=`${a.node_id}_${a.field}`;r[u]&&(r[u]={...r[u],exposed:!0,name:l,type:String(a.type||r[u].type),required:!!a.required,description:String(a.description||""),default:a.default??r[u].default,example:a.example??r[u].example,choices:Array.isArray(a.choices)?[...a.choices]:[...r[u].choices||[]]})}),r)}function fg(e){return{workflowData:e.workflow_data,schemaParams:dg(e.workflow_data,e.schema_params),workflowId:e.workflow_id,description:e.description||"",editingWorkflowId:e.workflow_id,hasUnsavedChanges:!1,upgradeSummary:null}}function mg(e){const t=new Set(["prompt","text","negative_prompt","seed","steps","cfg","denoise","width","height","batch_size","filename_prefix"]);let r=0;const n={...e};return Object.entries(n).forEach(([o,l])=>{!t.has(l.field)||l.exposed||(n[o]={...l,exposed:!0,name:l.name||l.field},r+=1)}),{nextSchemaParams:n,changedCount:r}}function Xn(e,t,r){return Math.max(t,Math.min(r,e))}function pg(e){const t=(e||"").replace("#","").trim();return/^[0-9a-fA-F]{6}$/.test(t)?{r:Number.parseInt(t.slice(0,2),16),g:Number.parseInt(t.slice(2,4),16),b:Number.parseInt(t.slice(4,6),16)}:{r:160,g:34,b:59}}function _g(e,t,r){const n=Xn((r-e)/Math.max(1e-6,t-e),0,1);return n*n*(3-2*n)}const hg=[[0,8,2,10],[12,4,14,6],[3,11,1,9],[15,7,13,5]];function wg(e,t){return(hg[t&3][e&3]+.5)/16}function vg(e={}){if(typeof window>"u"||typeof document>"u")return null;const t={variant:"circle",pixelSize:4,color:"#a0223b",patternScale:2,patternDensity:1,pixelSizeJitter:0,enableRipples:!0,rippleSpeed:.4,rippleThickness:.12,rippleIntensityScale:1.5,liquid:!1,liquidStrength:.12,liquidWobbleSpeed:5,speed:.5,edgeFade:.25,transparent:!0,...e},r=window.matchMedia("(prefers-reduced-motion: reduce)").matches,n=pg(t.color),o=document.createElement("canvas");o.id="pixel-blast-bg",o.setAttribute("aria-hidden","true"),document.body.prepend(o);const l=o.getContext("2d",{alpha:!0,desynchronized:!0});if(!l)return o.remove(),null;let i=0,a=0,u=0,c=0,d=null,f=0;const m=r?1e3/12:1e3/28,v=Array.from({length:6}).map((_,x)=>({x:Math.random(),y:Math.random(),r:.13+Math.random()*.2,vx:(Math.random()*2-1)*(22e-5+x*4e-5),vy:(Math.random()*2-1)*(22e-5+x*4e-5)}));function g(){i=Math.max(1,window.innerWidth),a=Math.max(1,window.innerHeight);const _=Xn(window.devicePixelRatio||1,1,2);o.width=Math.floor(i*_),o.height=Math.floor(a*_),o.style.width=`${i}px`,o.style.height=`${a}px`,l.setTransform(_,0,0,_,0,0),u=Math.ceil(i/t.pixelSize),c=Math.ceil(a/t.pixelSize)}function y(_){const x=t.speed*(r?.45:1);v.forEach((k,S)=>{const N=t.liquid?Math.sin(performance.now()*.001*t.liquidWobbleSpeed+S)*t.liquidStrength*5e-4:0;k.x+=(k.vx+N)*_*x,k.y+=(k.vy-N)*_*x,(k.x<-.15||k.x>1.15)&&(k.vx*=-1),(k.y<-.15||k.y>1.15)&&(k.vy*=-1)})}function C(_,x,k){let S=0;for(const b of v){const j=_-b.x,E=x-b.y,L=j*j+E*E,B=b.r*b.r;S+=Math.exp(-L/(B*(t.patternScale*.9)))}if(S=S/v.length*1.9*t.patternDensity,t.enableRipples){const b=_-.5,j=x-.5,E=Math.sqrt(b*b+j*j),L=E*17-k*(2.3*t.rippleSpeed),B=Xn(t.rippleThickness,.04,.45),U=Math.exp(-E*(4.2/Math.max(.1,B)));S+=Math.sin(L)*U*.2*t.rippleIntensityScale}const N=Math.min(_,1-_,x,1-x);return S*_g(0,Xn(t.edgeFade,.04,.49),N)}function w(_){if(_-f0?(Math.random()-.5)*t.pixelSizeJitter:0,U=b*t.pixelSize,G=N*t.pixelSize,Re=Math.max(1,t.pixelSize+B),Xe=Xn(S+L*.18,.08,.62);l.fillStyle=`rgba(${n.r}, ${n.g}, ${n.b}, ${Xe})`,t.variant==="circle"?(l.beginPath(),l.arc(U+Re*.5,G+Re*.5,Re*.38,0,Math.PI*2),l.fill()):l.fillRect(U,G,Re,Re)}d=window.requestAnimationFrame(w)}function h(){g()}return g(),d=window.requestAnimationFrame(w),window.addEventListener("resize",h),()=>{d!==null&&window.cancelAnimationFrame(d),window.removeEventListener("resize",h),o.remove()}}const gg=5e3;function yg(e){const t=p.useRef(e);return p.useEffect(()=>{t.current=e},[e]),t}function kg(e){const t=yg(e.refreshWorkflows);p.useEffect(()=>{if(!e.enabled)return;let r=!1,n=null,o=!1,l=!1;const i=()=>{n!==null&&(window.clearTimeout(n),n=null)},a=()=>{i(),!(r||document.visibilityState!=="visible")&&(n=window.setTimeout(()=>{u()},gg))},u=()=>{if(i(),!(r||document.visibilityState!=="visible")){if(o){l=!0;return}o=!0,t.current().catch(()=>{}).finally(()=>{if(o=!1,!r){if(l){l=!1,u();return}a()}})}},c=()=>{if(document.visibilityState!=="visible"){l=!1,i();return}u()};return a(),window.addEventListener("focus",c),document.addEventListener("visibilitychange",c),()=>{r=!0,l=!1,i(),window.removeEventListener("focus",c),document.removeEventListener("visibilitychange",c)}},[e.enabled,t])}const xg=3e3;function Sg(e){p.useEffect(()=>{const t=vv();if(e.setUpdateFeedback(t),t||sessionStorage.getItem("update-banner-dismissed"))return;const r=window.setTimeout(()=>{pv().then(n=>{n.has_update&&e.setUpdateInfo(n)}).catch(()=>{})},xg);return()=>window.clearTimeout(r)},[e.setUpdateFeedback,e.setUpdateInfo])}function bg(e){return!!(e&&(e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.tagName==="SELECT"||e.isContentEditable))}function Cg(e){p.useEffect(()=>{da("ui-lang",e.language)},[e.language]),p.useEffect(()=>{const t=e.toasts.map(r=>window.setTimeout(()=>e.dismissToast(r.id),3200));return()=>{t.forEach(r=>window.clearTimeout(r))}},[e.dismissToast,e.toasts]),p.useEffect(()=>{Promise.all([e.loadInitialServers(),e.refreshWorkflows()]).catch(t=>{e.pushToast("error",t instanceof Error?t.message:e.t("err_load_cfg"))})},[]),kg({enabled:!e.isEditorRoute,refreshWorkflows:e.refreshWorkflows}),Sg({setUpdateFeedback:e.setUpdateFeedback,setUpdateInfo:e.setUpdateInfo}),p.useEffect(()=>vg({variant:"circle",pixelSize:4,color:"#a0223b",patternScale:2,patternDensity:1,pixelSizeJitter:0,enableRipples:!0,rippleSpeed:.4,rippleThickness:.12,rippleIntensityScale:1.5,speed:.5,edgeFade:.25,transparent:!0})||void 0,[]),p.useEffect(()=>{e.isEditorRoute&&window.scrollTo({top:0,behavior:"smooth"})},[e.isEditorRoute]),p.useEffect(()=>{const t=r=>{e.hasUnsavedChanges&&(r.preventDefault(),r.returnValue="")};return window.addEventListener("beforeunload",t),()=>window.removeEventListener("beforeunload",t)},[e.hasUnsavedChanges]),p.useEffect(()=>{function t(r){var l;if(!e.isEditorRoute||e.confirmOpen||e.serverModalOpen||e.transferModalOpen)return;const n=r.target,o=bg(n);if((r.ctrlKey||r.metaKey)&&r.key.toLowerCase()==="s"){r.preventDefault(),e.saveWorkflow();return}if(!o&&r.key==="/"){r.preventDefault(),(l=e.mappingSearchRef.current)==null||l.focus();return}r.key==="Escape"&&document.activeElement===e.mappingSearchRef.current&&e.editorQuery&&e.clearEditorQuery()}return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e.clearEditorQuery,e.confirmOpen,e.editorQuery,e.mappingSearchRef,e.saveWorkflow,e.serverModalOpen,e.transferModalOpen,e.isEditorRoute])}function Ng(e){const t=p.useMemo(()=>{var u;return e.currentServerId&&e.servers.some(c=>c.id===e.currentServerId)?e.currentServerId:e.defaultServerId&&e.servers.some(c=>c.id===e.defaultServerId)?e.defaultServerId:((u=e.servers[0])==null?void 0:u.id)||null},[e.currentServerId,e.defaultServerId,e.servers]),r=p.useMemo(()=>e.servers.find(u=>u.id===t)||null,[t,e.servers]),n=r&&!r.unsupported?r.id:null,o=p.useMemo(()=>e.workflows.filter(u=>u.server_id===n),[n,e.workflows]),l=p.useMemo(()=>{const u=[...o];switch(e.workflowSort){case"updated_desc":u.sort((d,f)=>(f.updated_at||0)-(d.updated_at||0));break;case"name_asc":u.sort((d,f)=>d.id.localeCompare(f.id));break;case"name_desc":u.sort((d,f)=>f.id.localeCompare(d.id));break;case"enabled_first":u.sort((d,f)=>d.enabled!==f.enabled?d.enabled?-1:1:d.id.localeCompare(f.id));break}const c=e.workflowSearch.trim().toLowerCase();return c?u.filter(d=>[d.id,d.description,d.server_name,d.server_id,d.source_label,...d.tags||[]].join(" ").toLowerCase().includes(c)):u},[e.workflowSearch,e.workflowSort,o]),i=p.useMemo(()=>{const u=e.editorFilters.query.trim().toLowerCase();return[...ug(e.schemaParams)].sort((f,m)=>e.editorFilters.nodeSort==="node_id_desc"?Number(m[0])-Number(f[0]):e.editorFilters.nodeSort==="class_asc"?String(f[1].classType).localeCompare(String(m[1].classType)):Number(f[0])-Number(m[0])).map(([f,m])=>{const v=[...m.params].sort((g,y)=>{switch(e.editorFilters.paramSort){case"field_asc":return g.field.localeCompare(y.field);case"type_asc":return String(g.type).localeCompare(String(y.type));case"exposed_first":return g.exposed!==y.exposed?g.exposed?-1:1:g.field.localeCompare(y.field);default:return 0}}).filter(g=>e.editorFilters.exposedOnly&&!g.exposed||e.editorFilters.requiredOnly&&!g.required?!1:u?[m.classType,String(f),g.field,g.name,g.description,String(g.currentVal??"")].join(" ").toLowerCase().includes(u):!0);return[String(f),{classType:m.classType,params:v}]}).filter(([,f])=>f.params.length>0)},[e.editorFilters,e.schemaParams]),a=p.useMemo(()=>{const u=Object.values(e.schemaParams).length;if(!u)return"";const c=Object.values(e.schemaParams).filter(f=>f.exposed).length,d=i.reduce((f,[,m])=>f+m.params.length,0);return e.t("mapping_summary",{visible_params:d,total_params:u,exposed_params:c,visible_nodes:i.length})},[e.schemaParams,i,e.t]);return{currentServer:r,effectiveServerId:n,currentServerWorkflows:o,visibleWorkflows:l,groupedNodes:i,mappingSummaryText:a,editorEmptyStateMessageKey:Object.keys(e.schemaParams).length===0?"empty_nodes":"empty_nodes_filtered"}}function id(){return{id:"",name:"",url:"",auth:"",comfy_api_key:"",enabled:!0,output_dir:"./outputs"}}function Tl(){return{workflowData:null,schemaParams:{},workflowId:"",description:"",editingWorkflowId:null,hasUnsavedChanges:!1,upgradeSummary:null}}function sd(){return{query:"",exposedOnly:!1,requiredOnly:!1,nodeSort:"node_id_asc",paramSort:"default"}}function jg(){return{open:!1,title:"",message:"",confirmLabel:"",cancelLabel:"",tone:"primary"}}function Eg(e,t){return{id:`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,type:e,message:t}}function Ig(){const[e,t]=p.useState(jg());function r(){t(l=>({...l,open:!1,onResolve:void 0}))}function n(l){const i=e.checkboxChecked??!1,a=e.onResolve;r(),a==null||a(l,i)}async function o(l){return new Promise(i=>{t({...l,open:!0,onResolve:a=>i(a)})})}return{confirmState:e,setConfirmState:t,resolveConfirm:n,confirm:o}}function Rg(){return J("/api/servers")}function Tg(e){return J("/api/servers",{method:"POST",body:JSON.stringify(e)})}function Pg(e,t){return J(`/api/servers/${encodeURIComponent(e)}`,{method:"PUT",body:JSON.stringify(t)})}function Dg(e,t){return J(`/api/servers/${encodeURIComponent(e)}/toggle`,{method:"POST",body:JSON.stringify(t)})}function Lg(e,t){return J(`/api/servers/${encodeURIComponent(e)}?delete_data=${t?"true":"false"}`,{method:"DELETE"})}function Mg(e){return J(`/api/servers/${encodeURIComponent(e)}/status`)}function Og(e,t){return J("/api/servers/test-connection",{method:"POST",body:JSON.stringify({url:e,auth:t})})}function op(e,t){var n,o;const r=e.name.trim()||((n=e.id)==null?void 0:n.trim())||t||"";return{...e,id:((o=e.id)==null?void 0:o.trim())||"",name:r,url:e.url.trim(),output_dir:e.output_dir.trim()||"./outputs"}}function Ug(e,t,r){const n=op(e,"");return n.name?n.url?"":r(t==="edit"?"err_server_name_id_url_required":"err_server_name_url_required"):r("err_server_name_required")}function Fg(e){const[t,r]=p.useState([]),[n,o]=p.useState(null),[l,i]=p.useState(()=>np("ui-server")),[a,u]=p.useState(!1),[c,d]=p.useState("add"),[f,m]=p.useState(id()),v=p.useRef(new Set);function g(k){i(k),da("ui-server",k)}async function y(){var L,B;const k=await Rg(),S=k.servers||[],N=S.filter(U=>!U.unsupported),b=l&&S.some(U=>U.id===l)?l:k.default_server||((L=S[0])==null?void 0:L.id)||null,j=S.find(U=>U.id===b)||null,E=j!=null&&j.unsupported&&((B=N[0])==null?void 0:B.id)||b;S.filter(U=>U.unsupported).forEach(U=>{v.current.has(U.id)||(v.current.add(U.id),e.pushToast("info",e.t("server_unsupported_reason",{type:U.server_type||"unknown"})))}),r(S),o(k.default_server||null),i(E),E?da("ui-server",E):Gv("ui-server")}function C(){d("add"),m(id()),u(!0)}function w(k){d("edit"),m({id:k.id,name:k.name,url:k.url,auth:k.auth||"",comfy_api_key:k.comfy_api_key||"",enabled:k.enabled,output_dir:k.output_dir}),u(!0)}async function h(k=!1,S){const N=Ug(f,c,e.t);if(N){e.pushToast("error",N);return}const b=op(f,l||""),j=String(f.id||l||"").trim();try{if(c==="add"){const E=await Tg(b);await y(),g(E.server.id),u(!1),e.pushToast("success",e.t("ok_add_server")),k?await(S==null?void 0:S(E.server.id)):await e.refreshWorkflows()}else j&&(await Pg(j,b),await y(),await e.refreshWorkflows(),u(!1),e.pushToast("success",e.t("ok_save_cfg")))}catch(E){e.pushToast("error",E instanceof Error?E.message:e.t("err_add_server"))}}async function _(k,S){try{await Dg(k.id,{enabled:S}),await y(),await e.refreshWorkflows(),e.pushToast("success",e.t(S?"ok_toggle_server_enabled":"ok_toggle_server_disabled",{id:k.name||k.id}))}catch(N){e.pushToast("error",N instanceof Error?N.message:e.t("err_toggle_server"))}}function x(k){e.setConfirmState({open:!0,title:e.t("confirm_action_title"),message:e.t("del_server_confirm",{id:k.id}),confirmLabel:e.t("delete"),cancelLabel:e.t("cancel"),tone:"danger",checkboxLabel:e.t("delete_server_data_checkbox"),checkboxChecked:!1,onResolve:async(S,N)=>{if(S)try{await Lg(k.id,N),await y(),await e.refreshWorkflows(),e.pushToast("success",e.t(N?"ok_del_server_with_data":"ok_del_server_keep_data"))}catch(b){e.pushToast("error",b instanceof Error?b.message:e.t("err_del_server"))}}})}return{servers:t,defaultServerId:n,currentServerId:l,serverModalOpen:a,serverModalMode:c,serverForm:f,setServerForm:m,setServerModalOpen:u,setCurrentServerId:g,loadInitialServers:y,handleAddServer:C,handleEditServer:w,handleSubmitServerModal:h,handleToggleServer:_,requestDeleteServer:x}}function Wg(){const[e,t]=p.useState([]);function r(o,l){t(i=>[...i.slice(-3),Eg(o,l)])}function n(o){t(l=>l.filter(i=>i.id!==o))}return{toasts:e,dismissToast:n,pushToast:r}}const Ag="modulepreload",zg=function(e){return"/static/"+e},ad={},$g=function(t,r,n){let o=Promise.resolve();if(r&&r.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),a=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));o=Promise.allSettled(r.map(u=>{if(u=zg(u),u in ad)return;ad[u]=!0;const c=u.endsWith(".css"),d=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${u}"]${d}`))return;const f=document.createElement("link");if(f.rel=c?"stylesheet":Ag,c||(f.as="script"),f.crossOrigin="",f.href=u,a&&f.setAttribute("nonce",a),document.head.appendChild(f),c)return new Promise((m,v)=>{f.addEventListener("load",m),f.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${u}`)))})}))}function l(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return o.then(i=>{for(const a of i||[])a.status==="rejected"&&l(a.reason);return t().catch(l)})};function Bg(e,t,r,n,o){const l={...e,[r]:{...e[r],[n]:o}},i=new Set(t);return n==="exposed"&&o===!1&&i.delete(r),{schemaParams:l,expandedParamKeys:i}}function Vg(e,t,r,n){const o={...e},l=new Set(t);let i=0;return r.forEach(a=>{const u=o[a];!u||u.exposed===n||(o[a]={...u,exposed:n,name:n?u.name||u.field:u.name},n||l.delete(a),i+=1)}),{schemaParams:o,expandedParamKeys:l,changedCount:i}}function Hg(){return J("/api/workflows")}function oi(e,t){return J(`/api/servers/${encodeURIComponent(e)}/workflow/${encodeURIComponent(t)}`)}function ud(e,t){return J(`/api/servers/${encodeURIComponent(e)}/workflow/save`,{method:"POST",body:JSON.stringify(t)})}function Kg(e,t,r){return J(`/api/servers/${encodeURIComponent(e)}/workflow/${encodeURIComponent(t)}/toggle`,{method:"POST",body:JSON.stringify(r)})}function qg(e,t){return J(`/api/servers/${encodeURIComponent(e)}/workflow/${encodeURIComponent(t)}`,{method:"DELETE"})}function Qg(e,t){return J(`/api/servers/${encodeURIComponent(e)}/workflows/batch-delete`,{method:"POST",body:JSON.stringify(t)})}function Jg(e,t){return J(`/api/servers/${encodeURIComponent(e)}/workflows/reorder`,{method:"POST",body:JSON.stringify(t)})}function Yg(e,t,r){return J(`/api/servers/${encodeURIComponent(e)}/workflow/${encodeURIComponent(t)}/run`,{method:"POST",body:JSON.stringify({args:r})})}function Xg(e,t){return J(`/api/servers/${encodeURIComponent(e)}/workflow/${encodeURIComponent(t)}/history`)}function cd(e,t,r){return J(`/api/servers/${encodeURIComponent(e)}/workflow/${encodeURIComponent(t)}/history/${encodeURIComponent(r)}`)}function Gg(e,t,r){return J(`/api/servers/${encodeURIComponent(e)}/workflow/${encodeURIComponent(t)}/history/${encodeURIComponent(r)}`,{method:"DELETE"})}function Zg(e,t){return J(`/api/servers/${encodeURIComponent(e)}/workflow/${encodeURIComponent(t)}/history`,{method:"DELETE"})}function ey(e){return J(`/api/servers/${encodeURIComponent(e)}/workflows/import/comfyui`,{method:"POST"})}function ty(e){return J(`/api/servers/${encodeURIComponent(e)}/workflows/import/comfyui/preview`)}async function ry(e,t){const r=new FormData;r.append("image",t);const n=await fetch(`/api/servers/${encodeURIComponent(e)}/upload/image`,{method:"POST",body:r});if(!n.ok){const o=await n.text();throw new Error(o||"Upload failed")}return n.json()}function ny(e,t){return J(`/api/servers/${encodeURIComponent(e)}/workflows/import/local`,{method:"POST",body:JSON.stringify({files:t})})}function oy(e,t){return J(`/api/servers/${encodeURIComponent(e)}/workflows/check-dependencies`,{method:"POST",body:JSON.stringify({workflow_data:t})})}function ly(e,t){return J(`/api/servers/${encodeURIComponent(e)}/workflows/${encodeURIComponent(t)}/check-dependencies`,{method:"POST"})}function iy(e,t){return J(`/api/servers/${encodeURIComponent(e)}/install-dependencies`,{method:"POST",body:JSON.stringify({repo_urls:t})})}async function sy(e){const t={workflow_id:e.editorState.workflowId,server_id:e.effectiveServerId,original_workflow_id:e.editorState.editingWorkflowId,description:e.editorState.description,workflow_data:e.editorState.workflowData,schema_params:e.finalSchema||{},ui_schema_params:e.editorState.schemaParams};try{await ud(e.effectiveServerId,{...t,overwrite_existing:!1}),await e.refreshWorkflows(),e.setEditorState(r=>({...r,editingWorkflowId:r.workflowId,hasUnsavedChanges:!1})),e.pushToast("success",e.t("ok_save_wf"))}catch(r){if(!(r instanceof tp)||r.status!==409){e.pushToast("error",r instanceof Error?r.message:e.t("err_save_wf"));return}if(!await e.confirm({title:e.t("confirm_action_title"),message:e.t("warn_overwrite_wf",{id:e.editorState.workflowId}),confirmLabel:e.t("overwrite"),cancelLabel:e.t("cancel"),tone:"danger"}))return;try{await ud(e.effectiveServerId,{...t,overwrite_existing:!0}),await e.refreshWorkflows(),e.setEditorState(o=>({...o,editingWorkflowId:o.workflowId,hasUnsavedChanges:!1})),e.pushToast("success",e.t("ok_save_wf"))}catch(o){e.pushToast("error",o instanceof Error?o.message:e.t("err_save_wf"))}}}function ay(e){async function t(){return e.editorState.hasUnsavedChanges?e.confirm({title:e.t("confirm_action_title"),message:e.t("confirm_unsaved_leave"),confirmLabel:e.t("leave_anyway"),cancelLabel:e.t("cancel"),tone:"primary"}):!0}async function r(){return await t()?(e.resetEditor(),!0):!1}async function n(m){var g,y,C,w;const v=e.pendingVersionTargetRef.current;if(e.pendingVersionTargetRef.current=null,!(!m||!v))try{const{buildVersionUpgradeState:h}=await $g(async()=>{const{buildVersionUpgradeState:x}=await import("./versionUpgrade-Y0m-Lc1G.js");return{buildVersionUpgradeState:x}},[]),_=h(v,await m.text());e.setEditorState(_),e.resetEditorUiState(),e.pushToast("success",e.t("workflow_upgrade_summary",{retained:((g=_.upgradeSummary)==null?void 0:g.retained)||0,review:((y=_.upgradeSummary)==null?void 0:y.review)||0,added:((C=_.upgradeSummary)==null?void 0:C.added)||0,removed:((w=_.upgradeSummary)==null?void 0:w.removed)||0}))}catch(h){e.pushToast("error",h instanceof Error?h.message:e.t("err_invalid_json"))}}async function o(m){if(m){if(!e.effectiveServerId){e.pushToast("error",e.t("err_select_server_first"));return}try{const v=fa(await m.text()),g=e.editorState.editingWorkflowId?ag(e.editorState.schemaParams,v.schemaParams):null,y=od(v.workflowData,m.name);e.setEditorState(C=>({...C,workflowData:v.workflowData,schemaParams:(g==null?void 0:g.schemaParams)||v.schemaParams,workflowId:!C.workflowId||C.workflowId===e.lastAutoWorkflowId?y:C.workflowId,hasUnsavedChanges:!0,upgradeSummary:(g==null?void 0:g.summary)||null})),e.setLastAutoWorkflowId(y),e.pushToast("success",e.t("ok_wf_load"))}catch(v){const g=v instanceof Error?v.message:e.t("err_invalid_json");e.pushToast("error",g.includes("editor workflow")?e.t("err_ui_workflow_format"):g)}}}async function l(m){var v;if(!m)return!1;if((v=e.currentServer)!=null&&v.unsupported)return e.pushToast("info",e.t("server_unsupported_reason",{type:e.currentServer.server_type||"unknown"})),!1;if(!e.effectiveServerId)return e.pushToast("error",e.t("err_select_server_before_register")),!1;try{const g=fa(await m.text()),y=od(g.workflowData,m.name);return e.resetEditorUiState(),e.setEditorState({...Tl(),workflowData:g.workflowData,schemaParams:g.schemaParams,workflowId:y,hasUnsavedChanges:!0}),e.setLastAutoWorkflowId(y),e.pushToast("success",e.t("ok_wf_load")),!0}catch(g){const y=g instanceof Error?g.message:e.t("err_invalid_json");return e.pushToast("error",y.includes("editor workflow")?e.t("err_ui_workflow_format"):y),!1}}function i(m){e.setEditorState(v=>({...v,workflowId:m,hasUnsavedChanges:!0})),m.trim()!==e.lastAutoWorkflowId&&e.setLastAutoWorkflowId("")}function a(m,v,g){const y=Bg(e.editorState.schemaParams,e.expandedParamKeys,m,v,g);e.setExpandedParamKeys(y.expandedParamKeys),e.setEditorState(C=>({...C,hasUnsavedChanges:!0,schemaParams:y.schemaParams}))}function u(){const m=mg(e.editorState.schemaParams);if(!m.changedCount){e.pushToast("info",e.t("mapping_no_recommended_changes"));return}e.setEditorState(v=>({...v,schemaParams:m.nextSchemaParams,hasUnsavedChanges:!0})),e.pushToast("success",e.t("mapping_apply_recommended_ok",{count:m.changedCount}))}function c(m){const v=e.groupedNodes.flatMap(([,y])=>y.params.map(C=>C.key));if(!v.length){e.pushToast("error",e.t("mapping_no_visible_params"));return}const g=Vg(e.editorState.schemaParams,e.expandedParamKeys,v,m);if(!g.changedCount){e.pushToast("info",e.t("mapping_no_batch_changes"));return}e.setExpandedParamKeys(g.expandedParamKeys),e.setEditorState(y=>({...y,schemaParams:g.schemaParams,hasUnsavedChanges:!0})),e.pushToast("success",e.t(m?"mapping_expose_visible_ok":"mapping_unexpose_visible_ok",{count:g.changedCount}))}async function d(){if(!e.effectiveServerId){e.pushToast("error",e.t("err_no_server_selected"));return}if(!e.editorState.workflowId.trim()){e.pushToast("error",e.t("err_no_id"));return}const{finalSchema:m,exposedCount:v,missingAlias:g}=cg(e.editorState.schemaParams);if(g){e.pushToast("error",e.t("err_no_alias",{node:g.node_id,val:g.field}));return}if(!(v===0&&!await e.confirm({title:e.t("confirm_action_title"),message:e.t("warn_no_params"),confirmLabel:e.t("save_anyway"),cancelLabel:e.t("cancel"),tone:"primary"}))){if(!e.editorState.workflowData&&!e.editorState.editingWorkflowId){e.pushToast("error",e.t("err_no_workflow_uploaded"));return}await sy({effectiveServerId:e.effectiveServerId,editorState:e.editorState,finalSchema:m||{},confirm:e.confirm,refreshWorkflows:e.refreshWorkflows,setEditorState:e.setEditorState,pushToast:e.pushToast,t:e.t})}}function f(){var m;return(m=e.currentServer)!=null&&m.unsupported?(e.pushToast("info",e.t("server_unsupported_reason",{type:e.currentServer.server_type||"unknown"})),!1):e.effectiveServerId?(e.resetEditor(),!0):(e.pushToast("error",e.t("err_select_server_before_register")),!1)}return{ensureCanLeaveEditor:t,handleBackFromEditor:r,handleVersionFileChange:n,handleEditorUpload:o,createWorkflowFromFile:l,handleWorkflowIdChange:i,updateEditorParam:a,applyRecommendedExposures:u,exposeVisible:c,handleSaveWorkflow:d,createWorkflow:f}}function dd(){return{open:!1,report:null,previewOpen:!1,preview:null,source:null,loading:!1,loadingStage:null}}function uy(e){return"webkitRelativePath"in e&&typeof e.webkitRelativePath=="string"?e.webkitRelativePath:""}function _l(e,t){return e instanceof Error&&e.message?e.message:t}function cy(e){const[t,r]=p.useState(dd()),n=p.useRef(null),o=p.useRef(null),l=p.useRef(0);function i(){return l.current+=1,l.current}function a(_){return l.current===_}function u(){i(),r(dd())}function c(){r(_=>({..._,previewOpen:!1,preview:null,loading:!1,loadingStage:null,source:_.open?_.source:null}))}function d(_){var x;return _||((x=e.currentServer)!=null&&x.unsupported?(e.pushToast("info",e.t("server_unsupported_reason",{type:e.currentServer.server_type||"unknown"})),null):e.effectiveServerId?e.effectiveServerId:(e.pushToast("error",e.t("err_select_server_before_register")),null))}function f(_){e.pushToast("success",e.t("ok_bulk_import_summary",{created:_.summary.created,renamed:_.summary.renamed,failed:_.summary.failed}))}async function m(_,x,k){try{await e.refreshWorkflows()}catch(S){a(k)&&e.pushToast("error",_l(S,e.t("err_load_workflows")))}a(k)&&(r({open:!0,report:x,previewOpen:!1,preview:null,source:_,loading:!1,loadingStage:null}),f(x))}function v(){var _;(_=n.current)==null||_.click()}function g(){var _;(_=o.current)==null||_.click()}async function y(_){const x=d(_);if(!x)return;const k=i();r(S=>({...S,source:"comfyui",loading:!0,loadingStage:"preview",previewOpen:!1,preview:null}));try{const S=await ty(x);if(!a(k))return;r(N=>({...N,source:"comfyui",loading:!1,loadingStage:null,previewOpen:!0,preview:S.preview}))}catch(S){if(!a(k))return;r(N=>({...N,loading:!1,loadingStage:null})),e.pushToast("error",_l(S,e.t("err_bulk_import_comfyui_preview")))}}async function C(_){const x=d(_);if(!x)return;const k=i();r(S=>({...S,loading:!0,loadingStage:"import",source:"comfyui",previewOpen:!1}));try{const S=await ey(x);if(!a(k))return;await m("comfyui",S.report,k)}catch(S){if(!a(k))return;r(N=>({...N,loading:!1,loadingStage:null})),e.pushToast("error",_l(S,e.t("err_bulk_import_comfyui")))}}async function w(_){const x=d();if(!x||!_.length)return;const k=i();r(S=>({...S,loading:!0,loadingStage:"import",source:"local"}));try{const S=await Promise.all(_.map(async b=>({file_name:uy(b)||b.name,content:await b.text()}))),N=await ny(x,S);if(!a(k))return;await m("local",N.report,k)}catch(S){if(!a(k))return;r(N=>({...N,loading:!1,loadingStage:null})),e.pushToast("error",_l(S,e.t("err_bulk_import_local")))}}async function h(_){await w(Array.from(_||[]))}return{bulkImportState:t,localImportFilesRef:n,localImportFolderRef:o,closeBulkImportModal:u,closeComfyUiImportPreview:c,handleOpenLocalImportFiles:v,handleOpenLocalImportFolder:g,handlePreviewImportFromComfyUI:y,handleImportAllFromComfyUI:C,handleLocalImportFilesChange:h}}function fd(){return{open:!1,loading:!1,installing:!1,report:null,installReport:null}}function dy(e){const[t,r]=p.useState(fd());function n(){r(fd())}async function o(a,u){r({open:!0,loading:!0,installing:!1,report:null,installReport:null});try{const c=await oy(a,u);r(d=>({...d,loading:!1,report:c.report}))}catch(c){r(d=>({...d,loading:!1,open:!1})),e.pushToast("error",c instanceof Error?c.message:e.t("err_dep_check"))}}async function l(a,u){r({open:!0,loading:!0,installing:!1,report:null,installReport:null});try{const c=await ly(a,u);r(d=>({...d,loading:!1,report:c.report}))}catch(c){r(d=>({...d,loading:!1,open:!1})),e.pushToast("error",c instanceof Error?c.message:e.t("err_dep_check"))}}async function i(a,u){r(c=>({...c,installing:!0}));try{const c=await iy(a,u);r(m=>({...m,installing:!1,installReport:c.report}));const{succeeded:d,failed:f}=c.report.summary;f===0?e.pushToast("success",e.t("dep_check_install_results")+`: ${d} OK`):e.pushToast("error",`${d} succeeded, ${f} failed`)}catch(c){r(d=>({...d,installing:!1})),e.pushToast("error",c instanceof Error?c.message:e.t("err_dep_install"))}}return{depCheckState:t,closeDependencyCheckModal:n,handleCheckDependencies:o,handleCheckSavedWorkflow:l,handleInstallDependencies:i}}function Hn(){const e=p.useRef(0),t=p.useCallback(()=>(e.current+=1,e.current),[]),r=p.useCallback(()=>e.current,[]),n=p.useCallback(()=>(e.current+=1,e.current),[]),o=p.useCallback(l=>e.current===l,[]);return p.useMemo(()=>({begin:t,current:r,invalidate:n,isCurrent:o}),[t,r,n,o])}function md(){return{open:!1,mode:null,exportPreview:null,exportSelection:{servers:[]},expandedServerIds:[],importPreview:null,importBundle:null,applyEnvironment:!1,loading:!1}}function fy(e){return{servers:e.servers.map(t=>({server_id:t.server_id,workflow_ids:t.workflows.map(r=>r.workflow_id)}))}}function my(e){return e.servers.length===1?[e.servers[0].server_id]:[]}function py(e){if(!e||typeof e!="object")return[];const t=e;return(Array.isArray(t.errors)?t.errors:t.validation&&typeof t.validation=="object"&&Array.isArray(t.validation.errors)?t.validation.errors:[]).map(n=>n&&typeof n=="object"?n.message:"").filter(n=>typeof n=="string"&&!!n)}function us(){return{open:!1,workflow:null,schema:{},values:{},loading:!1,submitting:!1,result:null}}function cs(){return{open:!1,workflow:null,items:[],selectedRunId:null,detail:null,loading:!1,detailLoading:!1}}function _y(e){const t=e.run_schema_params&&Object.keys(e.run_schema_params).length>0?e.run_schema_params:e.schema_params,r=Object.entries(t||{}).filter(([,n])=>n&&typeof n=="object");return Object.fromEntries(r.map(([n,o])=>[n,o]))}function hy(e){const t={};return Object.entries(e).forEach(([r,n])=>{if(n.type==="boolean"){t[r]=!!(n.default??!1);return}t[r]=n.default??""}),t}function wy(e,t){return(e==null?void 0:e.server_id)===t.server_id&&e.id===t.id}function lp(e,t){return!e||e.has_history||!wy(e,t)?e:{...e,has_history:!0}}function pd(e,t){const r=lp(e.workflow,t);return r===e.workflow?e:{...e,workflow:r}}function vy(e,t,r,n,o){const l=e.filter(m=>m.server_id===t),i=l.findIndex(m=>m.id===r),a=l.findIndex(m=>m.id===n);if(i===-1||a===-1||i===a)return null;const u=[...l],[c]=u.splice(i,1),d=im.server_id!==t),...u],reorderedIds:u.map(m=>m.id),previousIds:l.map(m=>m.id)}}function gy(e,t,r){const n=e.filter(i=>i.server_id===t),o=new Map(n.map(i=>[i.id,i])),l=[];return r.forEach(i=>{const a=o.get(i);a&&(l.push(a),o.delete(i))}),n.forEach(i=>{o.has(i.id)&&(l.push(i),o.delete(i.id))}),[...e.filter(i=>i.server_id!==t),...l]}function yy(e){async function t(a,u){try{await Kg(a.server_id,a.id,{enabled:u}),await e.refreshWorkflows(),e.pushToast("success",e.t(u?"ok_toggle_wf_enabled":"ok_toggle_wf_disabled",{id:a.id}))}catch(c){e.pushToast("error",c instanceof Error?c.message:e.t("err_toggle_wf"))}}async function r(a){if(await e.confirm({title:e.t("confirm_action_title"),message:e.t("del_wf_confirm",{id:a.id}),confirmLabel:e.t("delete"),cancelLabel:e.t("cancel"),tone:"danger"}))try{await qg(a.server_id,a.id),await e.refreshWorkflows(),e.pushToast("success",e.t("ok_del_wf",{id:a.id}))}catch(u){e.pushToast("error",u instanceof Error?u.message:e.t("err_del_wf"))}}async function n(a){if(a.length===0)return;if(new Set(a.map(c=>c.server_id)).size!==1){e.pushToast("error",e.t("err_del_wf_batch"));return}if(await e.confirm({title:e.t("confirm_action_title"),message:[e.t("workflow_batch_delete_confirm",{count:a.length}),e.t("workflow_batch_delete_preview",{items:`${a.slice(0,3).map(c=>c.id).join(", ")}${a.length>3?"...":""}`})].join(` +`),confirmLabel:e.t("workflow_delete_selected"),cancelLabel:e.t("cancel"),tone:"danger"}))try{const c=await Qg(a[0].server_id,{workflow_ids:a.map(d=>d.id)});await e.refreshWorkflows(),e.pushToast("success",c.missing.length>0?e.t("ok_del_wf_batch_partial",{deleted:c.deleted.length,missing:c.missing.length}):e.t("ok_del_wf_batch",{count:c.deleted.length}))}catch(c){e.pushToast("error",c instanceof Error?c.message:e.t("err_del_wf_batch"))}}async function o(a){try{return await e.openEditor(await oi(a.server_id,a.id)),!0}catch(u){return e.pushToast("error",u instanceof Error?u.message:e.t("err_load_saved_wf")),!1}}async function l(a){var u;if(await e.ensureCanLeaveEditor())try{e.pendingVersionTargetRef.current=await oi(a.server_id,a.id),(u=e.versionUploadRef.current)==null||u.click()}catch(c){e.pushToast("error",c instanceof Error?c.message:e.t("err_load_saved_wf"))}}async function i(a,u,c){if(!e.effectiveServerId||a===u)return;const d=vy(e.workflows,e.effectiveServerId,a,u,c);if(d){e.setWorkflows(d.nextWorkflows);try{await Jg(e.effectiveServerId,{workflow_ids:d.reorderedIds})}catch(f){e.setWorkflows(m=>gy(m,e.effectiveServerId,d.previousIds)),e.pushToast("error",f instanceof Error?f.message:e.t("err_reorder_workflows"))}}}return{handleToggleWorkflow:t,handleDeleteWorkflow:r,handleBatchDeleteWorkflows:n,handleEditWorkflow:o,handleUploadWorkflowVersion:l,handleReorderWorkflows:i}}function ky(){return J("/api/transfer/export/preview")}function xy(e){return J("/api/transfer/export/build",{method:"POST",body:JSON.stringify({selection:e})})}function Sy(e,t=!1,r=!0){return J("/api/transfer/import/preview",{method:"POST",body:JSON.stringify({bundle:e,apply_environment:t,overwrite_workflows:r})})}function by(e,t=!1,r=!0){return J("/api/transfer/import",{method:"POST",body:JSON.stringify({bundle:e,apply_environment:t,overwrite_workflows:r})})}function Cy({isEditorRoute:e}){var Ge,$t,me,xt,Ze,ct,nr,or,St,lr,Zr,xu,Su,bu,Cu,Nu,ju,Eu,Iu,Ru,Tu,Pu;const[t,r]=p.useState(()=>nd(np("ui-lang"))),[n,o]=p.useState([]),[l,i]=p.useState(Tl()),[a,u]=p.useState(sd()),[c,d]=p.useState(new Set),[f,m]=p.useState(new Set),[v,g]=p.useState(""),[y,C]=p.useState("updated_desc"),[w,h]=p.useState(""),[_,x]=p.useState(md()),[k,S]=p.useState(null),[N,b]=p.useState(null),[j,E]=p.useState(us()),[L,B]=p.useState({}),[U,G]=p.useState(cs()),Re=p.useRef(null),Xe=p.useRef(null),fe=p.useRef(null),T=p.useRef(null),O=Hn(),F=Hn(),Y=Hn(),z=Hn(),ue=Hn(),{toasts:ge,dismissToast:st,pushToast:W}=Wg(),{confirmState:at,setConfirmState:gt,resolveConfirm:yt,confirm:q}=Ig(),A=(R,P)=>Xv(t,R,P),Ce=p.useCallback(async()=>{const R=await Hg();o(R.workflows||[])},[]),ee=Fg({t:A,pushToast:W,refreshWorkflows:Ce,setConfirmState:gt}),Ne=Ng({currentServerId:ee.currentServerId,defaultServerId:ee.defaultServerId,servers:ee.servers,workflows:n,workflowSearch:v,workflowSort:y,editorFilters:a,schemaParams:l.schemaParams,t:A}),ye=cy({currentServer:Ne.currentServer,effectiveServerId:Ne.effectiveServerId,refreshWorkflows:Ce,pushToast:W,t:A}),ut=dy({pushToast:W,t:A});async function Bo(R=!1){await ee.handleSubmitServerModal(R,ye.handleImportAllFromComfyUI)}function Xr(){d(new Set),m(new Set),u(sd()),h("")}function Mn(){i(Tl()),Xr()}async function kt(R){Xr(),i(R?fg(R):Tl())}function Zt(){O.begin(),x(md())}function zt(R,P){if(R&&typeof R=="object"&&"detail"in R){const M=py(R.detail);if(M.length>0)return M.join("; ")}return R instanceof Error&&R.message?R.message:A(P)}async function Vo(){const R=O.begin();try{const P=await ky();if(!O.isCurrent(R))return;x({open:!0,mode:"export",exportPreview:P,exportSelection:fy(P),expandedServerIds:my(P),importPreview:null,importBundle:null,applyEnvironment:!1,loading:!1})}catch(P){W("error",zt(P,"err_transfer_export_preview"))}}function Ho(){var R;(R=Xe.current)==null||R.click()}function Ti(R,P){x(M=>{const K=M.exportSelection.servers.find(H=>H.server_id===R),$=K&&K.workflow_ids.length===P.length?[]:P;return{...M,exportSelection:{servers:M.exportSelection.servers.map(H=>H.server_id===R?{...H,workflow_ids:$}:H)}}})}function Pi(R,P){x(M=>({...M,exportSelection:{servers:M.exportSelection.servers.map(K=>{if(K.server_id!==R)return K;const $=K.workflow_ids.includes(P)?K.workflow_ids.filter(H=>H!==P):[...K.workflow_ids,P];return{...K,workflow_ids:$}})}}))}function er(R){x(P=>({...P,expandedServerIds:P.expandedServerIds.includes(R)?P.expandedServerIds.filter(M=>M!==R):[...P.expandedServerIds,R]}))}async function tr(){if(_.mode==="export"){const P=O.current();x(M=>({...M,loading:!0}));try{const M=await xy(_.exportSelection);if(!O.isCurrent(P))return;const K=`${JSON.stringify(M.bundle,null,2)} +`,$=new Blob([K],{type:"application/json"}),H=window.URL.createObjectURL($),te=document.createElement("a");te.href=H,te.download="openclaw-skill-export.json",document.body.appendChild(te),te.click(),te.remove(),window.URL.revokeObjectURL(H),W("success",A("ok_transfer_export_started")),Zt()}catch(M){if(!O.isCurrent(P))return;x(K=>({...K,loading:!1})),W("error",zt(M,"err_transfer_export"))}return}if(!_.importBundle)return;const R=O.current();x(P=>({...P,loading:!0}));try{const P=await by(_.importBundle,_.applyEnvironment,!0);if(!O.isCurrent(R)||(await Promise.all([ee.loadInitialServers(),Ce()]),!O.isCurrent(R)))return;W("success",A("ok_transfer_import",{servers:P.plan.summary.created_servers,created:P.plan.summary.created_workflows,overwritten:P.plan.summary.overwritten_workflows})),Zt()}catch(P){if(!O.isCurrent(R))return;x(M=>({...M,loading:!1})),W("error",zt(P,"err_transfer_import"))}}async function Dr(R){if(!R)return;const P=F.begin();try{const M=await R.text();if(!F.isCurrent(P))return;const K=JSON.parse(M);if(!K||Array.isArray(K)||typeof K!="object")throw new Error(A("err_transfer_invalid_bundle"));const $=await Sy(K,!1,!0);if(!F.isCurrent(P))return;O.begin(),x({open:!0,mode:"import",exportPreview:null,exportSelection:{servers:[]},expandedServerIds:[],importPreview:$,importBundle:K,applyEnvironment:!1,loading:!1})}catch(M){if(!F.isCurrent(P))return;if(M instanceof SyntaxError||M instanceof Error&&M.message===A("err_transfer_invalid_bundle")){W("error",A("err_transfer_invalid_bundle"));return}W("error",zt(M,"err_transfer_preview"))}}const Ko=[{title:A("transfer_section_created_servers"),items:(($t=(Ge=_.importPreview)==null?void 0:Ge.plan)==null?void 0:$t.created_servers)||[]},{title:A("transfer_section_updated_servers"),items:((xt=(me=_.importPreview)==null?void 0:me.plan)==null?void 0:xt.updated_servers)||[]},{title:A("transfer_section_created_workflows"),items:((ct=(Ze=_.importPreview)==null?void 0:Ze.plan)==null?void 0:ct.created_workflows)||[]},{title:A("transfer_section_overwritten_workflows"),items:((or=(nr=_.importPreview)==null?void 0:nr.plan)==null?void 0:or.overwritten_workflows)||[]},{title:A("transfer_section_skipped_items"),items:((lr=(St=_.importPreview)==null?void 0:St.plan)==null?void 0:lr.skipped_items)||[]}],Dt=A("transfer_preview_summary",{servers:((xu=(Zr=_.importPreview)==null?void 0:Zr.plan)==null?void 0:xu.summary.created_servers)||0,updated_servers:((bu=(Su=_.importPreview)==null?void 0:Su.plan)==null?void 0:bu.summary.updated_servers)||0,created:((Nu=(Cu=_.importPreview)==null?void 0:Cu.plan)==null?void 0:Nu.summary.created_workflows)||0,overwritten:((Eu=(ju=_.importPreview)==null?void 0:ju.plan)==null?void 0:Eu.summary.overwritten_workflows)||0,skipped:((Ru=(Iu=_.importPreview)==null?void 0:Iu.plan)==null?void 0:Ru.summary.skipped_items)||0,warnings:((Pu=(Tu=_.importPreview)==null?void 0:Tu.plan)==null?void 0:Pu.summary.warnings)||0}),Oe=ay({editorState:l,setEditorState:i,expandedParamKeys:f,setExpandedParamKeys:m,groupedNodes:Ne.groupedNodes,lastAutoWorkflowId:w,setLastAutoWorkflowId:h,currentServer:Ne.currentServer,effectiveServerId:Ne.effectiveServerId,confirm:q,refreshWorkflows:Ce,pushToast:W,resetEditor:Mn,resetEditorUiState:Xr,t:A,pendingVersionTargetRef:fe}),rr=yy({workflows:n,setWorkflows:o,effectiveServerId:Ne.effectiveServerId,refreshWorkflows:Ce,pushToast:W,t:A,confirm:q,openEditor:kt,ensureCanLeaveEditor:Oe.ensureCanLeaveEditor,pendingVersionTargetRef:fe,versionUploadRef:Re});function Di(){Rl(),sessionStorage.setItem("update-banner-dismissed","1"),S(null),b(null)}function On(R){o(P=>{let M=!1;const K=P.map($=>{const H=lp($,R)??$;return M=M||H!==$,H});return M?K:P}),E(P=>pd(P,R)),G(P=>pd(P,R))}async function qo(R){const P=Y.begin();E(M=>({...M,open:!0,workflow:R,loading:!0,result:null}));try{const M=await oi(R.server_id,R.id);if(!Y.isCurrent(P))return;const K=_y(M);E({open:!0,workflow:R,schema:K,values:hy(K),loading:!1,submitting:!1,result:null})}catch(M){if(!Y.isCurrent(P))return;E(us()),W("error",M instanceof Error?M.message:A("err_load_saved_wf"))}}function Qo(){Y.invalidate(),E(us())}function Jo(R,P){E(M=>({...M,values:{...M.values,[R]:P}}))}async function Li(R,P){return(await ry(R,P)).name}async function Mi(){var K;const R=j.workflow;if(!R)return;const P={};Object.entries(j.values).forEach(([$,H])=>{const te=j.schema[$];((te==null?void 0:te.type)==="int"||(te==null?void 0:te.type)==="float")&&H===""||((te==null?void 0:te.type)==="int"?P[$]=parseInt(String(H),10):(te==null?void 0:te.type)==="float"?P[$]=parseFloat(String(H)):(te==null?void 0:te.type)==="boolean"?P[$]=H===!0||H==="true":P[$]=H)});const M=`${R.server_id}:${R.id}`;B($=>({...$,[M]:{status:"running",startedAt:Date.now()}})),Qo();try{const $=await Yg(R.server_id,R.id,P);if($.result.status==="success")On(R),B(H=>({...H,[M]:{...H[M],status:"success"}})),W("success",A("run_workflow_success",{id:R.id}));else{const H=typeof $.result.error=="string"?$.result.error:(K=$.result.error)==null?void 0:K.message;B(te=>({...te,[M]:{...te[M],status:"error"}})),W("error",H||A("run_workflow_error"))}}catch($){B(H=>({...H,[M]:{...H[M],status:"error"}})),W("error",$ instanceof Error?$.message:A("run_workflow_error"))}setTimeout(()=>{B($=>{const H={...$};return delete H[M],H})},8e3)}async function Gr(R,P){var K;const M=z.begin();ue.invalidate(),G($=>({...$,open:!0,workflow:R,loading:!0,detailLoading:!1,detail:P?$.detail:null}));try{const $=await Xg(R.server_id,R.id);if(!z.isCurrent(M))return;const H=P??((K=$.history[0])==null?void 0:K.run_id)??null;if(G({open:!0,workflow:R,items:$.history,selectedRunId:H,detail:null,loading:!1,detailLoading:!!H}),H){const te=ue.begin(),Op=await cd(R.server_id,R.id,H);if(!z.isCurrent(M)||!ue.isCurrent(te))return;G(Up=>({...Up,detail:Op,detailLoading:!1}))}}catch($){if(!z.isCurrent(M))return;G(cs()),W("error",$ instanceof Error?$.message:A("workflow_history_load_error"))}}async function ke(R){await Gr(R)}function Ue(){z.invalidate(),ue.invalidate(),G(cs())}async function Fe(){U.workflow&&await Gr(U.workflow,U.selectedRunId)}async function Lt(R){if(!U.workflow)return;const P=ue.begin();G(M=>({...M,selectedRunId:R,detailLoading:!0}));try{const M=await cd(U.workflow.server_id,U.workflow.id,R);if(!ue.isCurrent(P))return;G(K=>({...K,detail:M,detailLoading:!1}))}catch(M){if(!ue.isCurrent(P))return;G(K=>({...K,detail:null,detailLoading:!1})),W("error",M instanceof Error?M.message:A("workflow_history_load_error"))}}async function Ve(R){if(U.workflow&&await q({title:A("confirm_action_title"),message:A("workflow_history_delete_confirm"),confirmLabel:A("delete"),cancelLabel:A("cancel"),tone:"danger"}))try{await Gg(U.workflow.server_id,U.workflow.id,R),await Gr(U.workflow),W("success",A("workflow_history_delete_success"))}catch(P){W("error",P instanceof Error?P.message:A("workflow_history_delete_error"))}}async function We(){if(U.workflow&&await q({title:A("confirm_action_title"),message:A("workflow_history_clear_confirm",{id:U.workflow.id}),confirmLabel:A("workflow_history_clear"),cancelLabel:A("cancel"),tone:"danger"}))try{await Zg(U.workflow.server_id,U.workflow.id),await Gr(U.workflow,null),W("success",A("workflow_history_clear_success"))}catch(R){W("error",R instanceof Error?R.message:A("workflow_history_clear_error"))}}return Cg({language:t,toasts:ge,dismissToast:st,loadInitialServers:ee.loadInitialServers,refreshWorkflows:Ce,pushToast:W,setUpdateInfo:S,setUpdateFeedback:b,t:A,isEditorRoute:e,hasUnsavedChanges:l.hasUnsavedChanges,confirmOpen:at.open,serverModalOpen:ee.serverModalOpen,transferModalOpen:_.open,editorQuery:a.query,clearEditorQuery:()=>u(R=>({...R,query:""})),mappingSearchRef:T,saveWorkflow:Oe.handleSaveWorkflow}),{language:t,setLanguage:R=>r(nd(R)),t:A,toasts:ge,dismissToast:st,confirmState:at,setConfirmState:gt,resolveConfirm:yt,versionUploadRef:Re,transferImportRef:Xe,localImportFilesRef:ye.localImportFilesRef,localImportFolderRef:ye.localImportFolderRef,mappingSearchRef:T,editorState:l,editorFilters:a,collapsedNodeIds:c,expandedParamKeys:f,workflowSearch:v,workflowSort:y,servers:ee.servers,...Ne,serverModalOpen:ee.serverModalOpen,serverModalMode:ee.serverModalMode,serverForm:ee.serverForm,setCurrentServerId:ee.setCurrentServerId,setServerForm:ee.setServerForm,setWorkflowSearch:g,setWorkflowSort:C,setEditorFilters:u,setCollapsedNodeIds:d,setExpandedParamKeys:m,setEditorState:i,setServerModalOpen:ee.setServerModalOpen,transferState:_,bulkImportState:ye.bulkImportState,importSections:Ko,importPreviewSummary:Dt,handleAddServer:ee.handleAddServer,handleEditServer:ee.handleEditServer,handleSubmitServerModal:Bo,handleToggleServer:ee.handleToggleServer,requestDeleteServer:ee.requestDeleteServer,handleOpenTransferExport:Vo,handleOpenTransferImport:Ho,handleTransferImportFile:Dr,handleConfirmTransfer:tr,closeTransferModal:Zt,closeBulkImportModal:ye.closeBulkImportModal,closeComfyUiImportPreview:ye.closeComfyUiImportPreview,handlePreviewImportFromComfyUI:ye.handlePreviewImportFromComfyUI,handleImportAllFromComfyUI:ye.handleImportAllFromComfyUI,handleOpenLocalImportFiles:ye.handleOpenLocalImportFiles,handleOpenLocalImportFolder:ye.handleOpenLocalImportFolder,handleLocalImportFilesChange:ye.handleLocalImportFilesChange,depCheckState:ut.depCheckState,closeDependencyCheckModal:ut.closeDependencyCheckModal,handleCheckDependencies:ut.handleCheckDependencies,handleCheckSavedWorkflow:ut.handleCheckSavedWorkflow,handleInstallDependencies:ut.handleInstallDependencies,toggleTransferServerSelection:Ti,toggleTransferWorkflowSelection:Pi,toggleTransferServerExpanded:er,setTransferState:x,runModalState:j,executingWorkflows:L,historyState:U,handleOpenRunWorkflow:qo,closeRunWorkflowModal:Qo,updateRunWorkflowValue:Jo,handleRunWorkflow:Mi,handleUploadImage:Li,handleOpenWorkflowHistory:ke,closeWorkflowHistoryModal:Ue,refreshWorkflowHistory:Fe,handleSelectWorkflowHistoryEntry:Lt,handleDeleteWorkflowHistoryEntry:Ve,handleClearWorkflowHistory:We,handleBackFromEditor:Oe.handleBackFromEditor,handleEditorUpload:Oe.handleEditorUpload,createWorkflowFromFile:Oe.createWorkflowFromFile,handleSaveWorkflow:Oe.handleSaveWorkflow,handleWorkflowIdChange:Oe.handleWorkflowIdChange,updateEditorParam:Oe.updateEditorParam,applyRecommendedExposures:Oe.applyRecommendedExposures,exposeVisible:Oe.exposeVisible,handleEditWorkflow:rr.handleEditWorkflow,handleDeleteWorkflow:rr.handleDeleteWorkflow,handleBatchDeleteWorkflows:rr.handleBatchDeleteWorkflows,handleToggleWorkflow:rr.handleToggleWorkflow,handleUploadWorkflowVersion:rr.handleUploadWorkflowVersion,handleVersionFileChange:Oe.handleVersionFileChange,handleReorderWorkflows:rr.handleReorderWorkflows,createWorkflow:Oe.createWorkflow,updateInfo:k,updateFeedback:N,dismissUpdate:Di,loadEditorWorkflowByRoute:async(R,P)=>{if(ee.setCurrentServerId(R),l.editingWorkflowId===P&&l.workflowData)return!0;try{return await kt(await oi(R,P)),!0}catch(M){return W("error",M instanceof Error?M.message:A("err_load_saved_wf")),!1}}}}function ip({leading:e,badge:t,title:r,subtitle:n,actions:o,trailing:l,className:i=""}){return s.jsxs("header",{className:`app-header ${i}`.trim(),children:[s.jsxs("div",{className:"app-header-main",children:[e?s.jsx("div",{className:"app-header-leading",children:e}):null,s.jsxs("div",{className:"app-header-copy",children:[t?s.jsx("p",{className:"app-header-badge",children:t}):null,s.jsx("h1",{children:r}),n?s.jsx("p",{className:"subtitle app-header-subtitle",children:n}):null]})]}),o||l?s.jsxs("div",{className:"app-header-controls",children:[o?s.jsx("div",{className:"app-header-actions",children:o}):null,l?s.jsx("div",{className:"app-header-trailing",children:l}):null]}):null]})}function sp({header:e,children:t}){return s.jsxs("main",{className:"page shell",children:[e,t]})}function Ny({value:e,onChange:t}){return s.jsx(qr,{value:e,options:[{value:"en",label:"English"},{value:"zh",label:"简体中文"},{value:"zh_hant",label:"繁體中文"},{value:"ja",label:"日本語"}],onChange:r=>t(r),ariaLabel:"Language selector",className:"is-lang-select"})}function ap({title:e,titleId:t,meta:r,actions:n,children:o,className:l=""}){return s.jsxs("section",{className:`card section-panel ${l}`.trim(),"aria-labelledby":t,children:[s.jsxs("div",{className:"section-header panel-toolbar",children:[s.jsx("div",{className:"panel-title-wrap",children:s.jsx("h2",{id:t,className:"card-title",children:e})}),r||n?s.jsxs("div",{className:"panel-actions",children:[r,n]}):null]}),o]})}function jy(){return s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"lucide lucide-pencil",children:[s.jsx("path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"}),s.jsx("path",{d:"m15 5 4 4"})]})}function Ey(){return s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s.jsx("path",{d:"M3 6h18"}),s.jsx("path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"}),s.jsx("path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"})]})}function ds({status:e}){let t="#a3a3a3";return e==="online"?t="#22c55e":e==="offline"&&(t="#ef4444"),s.jsx("span",{title:e,style:{display:"inline-block",width:8,height:8,borderRadius:"50%",backgroundColor:t,marginRight:6,flexShrink:0,animation:e==="checking"?"pulse 1.5s infinite":void 0}})}const Iy="http://127.0.0.1:8188";function Ry(e,t){return e.map(r=>({value:r.id,label:`${r.name||r.id}${r.unsupported?` ${t("server_unsupported_short")}`:""}`}))}function Ty(e,t){return e!=null&&e.unsupported?t("server_unsupported_reason",{type:e.server_type||"unknown"}):""}function Py(e){return(e==null?void 0:e.name)||(e==null?void 0:e.id)||""}function Dy(e,t){return e==="checking"?"...":t(e==="online"?"server_status_online":"server_status_offline")}function Ly(e){var S;const t=e.servers.find(N=>N.id===e.currentServerId)||null,r=Ty(t,e.t),n=Py(t),o=Ry(e.servers,e.t),l=p.useRef(null),i=p.useRef(null),a=p.useRef(!1),[u,c]=p.useState("checking"),[d,f]=p.useState(!1),[m,v]=p.useState(!1),[g,y]=p.useState({state:"idle"}),[C,w]=p.useState(!1);p.useEffect(()=>{let N=!1;async function b(){if(e.currentServerId)try{const j=await Mg(e.currentServerId);N||c(j.status)}catch{N||c("offline")}}return c("checking"),b(),()=>{N=!0}},[e.currentServerId]),p.useEffect(()=>{if(!e.modalOpen){a.current=!1,f(!1),y({state:"idle"});return}a.current||(a.current=!0,e.modalMode==="add"&&!e.form.url&&e.onFormChange({...e.form,url:Iy}))},[e.form,e.modalMode,e.modalOpen,e.onFormChange]),p.useEffect(()=>{(!e.modalOpen||e.modalMode!=="add")&&w(!1)},[e.modalMode,e.modalOpen]);function h(N,b){e.onFormChange({...e.form,[N]:b})}function _(N){return b=>h(N,b.target.value)}const x=Dy(u,e.t);async function k(){const N=(e.form.url||"").trim();if(N){y({state:"testing"});try{const b=await Og(N,e.form.auth??"");y({state:b.status,message:b.message})}catch{y({state:"offline",message:"Request failed"})}}}return s.jsxs(ap,{title:e.t("server_manager"),titleId:"server-manager-title",actions:s.jsx("button",{type:"button",className:"btn btn-secondary panel-action-btn",onClick:e.onOpenCreate,children:e.t("add_server_toggle")}),children:[e.servers.length===0?s.jsxs("div",{className:"server-empty-state",children:[s.jsx("p",{className:"section-meta",children:e.t("no_servers")}),s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:e.onOpenCreate,children:e.t("create_first_server")})]}):s.jsx("div",{className:"server-config-container card card-nested",children:s.jsxs("div",{className:"server-main-row",children:[s.jsxs("div",{className:"server-main-left",children:[s.jsx("div",{className:"server-current-meta",children:s.jsxs("span",{className:"section-meta server-current-badge",children:[s.jsx(ds,{status:u}),e.t("current_server_title"),s.jsxs("span",{className:"server-current-status",children:["(",x,")"]})]})}),s.jsx("div",{className:"server-selector-wrapper",children:e.servers.length===1?s.jsxs("div",{className:"server-selector-static","aria-label":e.t("select_server"),children:[n,t!=null&&t.unsupported?` ${e.t("server_unsupported_short")}`:""]}):s.jsx(qr,{value:e.currentServerId||"",options:o,ariaLabel:e.t("select_server"),className:"is-server-select",onChange:e.onSelectServer})}),r?s.jsx("p",{className:"form-help",children:r}):null]}),t?s.jsxs("div",{id:"current-server-actions",className:"server-header-controls",children:[s.jsx("div",{className:"server-status-toggle server-visibility-group",children:s.jsx(Wo,{checked:t.enabled,className:"server-toggle-field",onChange:N=>e.onToggleServer(t,N.target.checked),title:e.t("server_agent_visibility_hint"),label:s.jsx("span",{className:t.enabled?"status-on":"status-off",children:t.enabled?e.t("server_agent_visible"):e.t("server_agent_hidden")})})}),s.jsxs("div",{className:"server-action-group",children:[s.jsx("button",{type:"button",className:"btn btn-secondary btn-icon server-action-btn","aria-label":e.t("edit"),onClick:()=>e.onOpenEdit(t),children:s.jsx(jy,{})}),s.jsx("button",{type:"button",className:"btn btn-secondary btn-icon server-action-btn server-delete-btn","aria-label":e.t("delete"),onClick:()=>e.onDeleteServer(t),children:s.jsx(Ey,{})})]})]}):null]})}),s.jsx(Pr,{open:e.modalOpen,title:e.modalMode==="edit"?e.t("edit_server_modal_title"):e.t("add_server_modal_title"),onClose:e.onCloseModal,initialFocusRef:e.modalMode==="edit"?i:l,footerStart:e.modalMode==="add"?s.jsx(jr,{checked:C,onChange:N=>w(N.target.checked),className:"server-modal-import-checkbox",label:e.t("server_import_after_create")}):null,actions:s.jsxs(s.Fragment,{children:[s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:e.onCloseModal,children:e.t("cancel")}),s.jsx("button",{type:"button",className:"btn btn-primary",onClick:()=>{e.onSubmitModal(e.modalMode==="add"?C:!1)},children:e.modalMode==="edit"?e.t("save_server_changes"):e.t("save_and_connect")})]}),children:s.jsxs("div",{className:"modal-grid",children:[s.jsx(pt,{label:e.t("server_id_label"),htmlFor:"modal-server-id",helpText:e.t("server_id_help"),className:"form-group-half",children:s.jsx(tt,{ref:l,id:"modal-server-id",fieldClassName:"modal-text-field",value:e.form.id??"",disabled:e.modalMode==="edit",onChange:_("id"),placeholder:e.t("new_server_id_placeholder"),autoComplete:"off"})}),s.jsx(pt,{label:e.t("server_name"),htmlFor:"modal-server-name",helpText:e.t("server_name_help"),className:"form-group-half",children:s.jsx(tt,{ref:i,id:"modal-server-name",fieldClassName:"modal-text-field",value:e.form.name,onChange:_("name"),placeholder:e.t("new_server_name_placeholder"),maxLength:32,autoComplete:"off"})}),s.jsx(pt,{label:e.t("server_url_label"),htmlFor:"modal-server-url",helpText:e.t("server_url_help_comfyui"),className:"form-group-full",children:s.jsx(tt,{id:"modal-server-url",fieldClassName:"modal-text-field",value:e.form.url,onChange:_("url"),placeholder:e.t("new_server_url_placeholder"),autoComplete:"off"})}),s.jsxs(pt,{label:e.t("server_auth_label"),htmlFor:"modal-server-auth",helpText:e.t("server_auth_help"),className:"form-group-full",children:[s.jsx(tt,{id:"modal-server-auth",type:d?"text":"password",fieldClassName:"modal-text-field",value:e.form.auth??"",onChange:_("auth"),placeholder:e.t("server_auth_placeholder"),autoComplete:"off",trailingAction:s.jsx("button",{type:"button",className:"btn-icon input-toggle-btn",onClick:()=>f(N=>!N),"aria-label":d?"Hide token":"Show token",children:s.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s.jsx("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),s.jsx("circle",{cx:"12",cy:"12",r:"3"}),!d&&s.jsx("line",{x1:"1",y1:"1",x2:"23",y2:"23"})]})})}),s.jsxs("div",{className:"form-test-connection",children:[s.jsx("button",{type:"button",className:"btn btn-secondary btn-sm",onClick:k,disabled:!((S=e.form.url)!=null&&S.trim())||g.state==="testing",children:g.state==="testing"?e.t("server_test_testing"):e.t("server_test_connection")}),g.state==="online"&&s.jsxs("span",{className:"test-result test-result-ok",children:[s.jsx(ds,{status:"online"}),e.t("server_test_ok")]}),g.state==="offline"&&s.jsxs("span",{className:"test-result test-result-fail",children:[s.jsx(ds,{status:"offline"}),e.t("server_test_fail"),g.message?` - ${g.message}`:""]})]})]}),s.jsx(pt,{label:e.t("comfy_api_key_label"),htmlFor:"modal-server-comfy-api-key",helpText:s.jsxs(s.Fragment,{children:[e.t("comfy_api_key_help_prefix"),s.jsx("a",{href:"https://platform.comfy.org/login",target:"_blank",rel:"noopener noreferrer",children:e.t("comfy_api_key_help_link")}),e.t("comfy_api_key_help_suffix")]}),className:"form-group-full",children:s.jsx(tt,{id:"modal-server-comfy-api-key",type:m?"text":"password",fieldClassName:"modal-text-field",value:e.form.comfy_api_key??"",onChange:_("comfy_api_key"),placeholder:e.t("comfy_api_key_placeholder"),autoComplete:"off",trailingAction:s.jsx("button",{type:"button",className:"btn-icon input-toggle-btn",onClick:()=>v(N=>!N),"aria-label":m?"Hide API key":"Show API key",children:s.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s.jsx("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),s.jsx("circle",{cx:"12",cy:"12",r:"3"}),!m&&s.jsx("line",{x1:"1",y1:"1",x2:"23",y2:"23"})]})})})}),s.jsx(pt,{label:e.t("server_output_dir"),htmlFor:"modal-server-output",className:"form-group-full",children:s.jsx(tt,{id:"modal-server-output",fieldClassName:"modal-text-field",value:e.form.output_dir,onChange:_("output_dir"),placeholder:"./outputs",autoComplete:"off"})})]})})]})}function My(){for(var e=arguments.length,t=new Array(e),r=0;rn=>{t.forEach(o=>o(n))},t)}const Ei=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Pn(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function pu(e){return"nodeType"in e}function Ye(e){var t,r;return e?Pn(e)?e:pu(e)&&(t=(r=e.ownerDocument)==null?void 0:r.defaultView)!=null?t:window:window}function _u(e){const{Document:t}=Ye(e);return e instanceof t}function Ao(e){return Pn(e)?!1:e instanceof Ye(e).HTMLElement}function up(e){return e instanceof Ye(e).SVGElement}function Dn(e){return e?Pn(e)?e.document:pu(e)?_u(e)?e:Ao(e)||up(e)?e.ownerDocument:document:document:document}const At=Ei?p.useLayoutEffect:p.useEffect;function hu(e){const t=p.useRef(e);return At(()=>{t.current=e}),p.useCallback(function(){for(var r=arguments.length,n=new Array(r),o=0;o{e.current=setInterval(n,o)},[]),r=p.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[t,r]}function Ro(e,t){t===void 0&&(t=[e]);const r=p.useRef(e);return At(()=>{r.current!==e&&(r.current=e)},t),r}function zo(e,t){const r=p.useRef();return p.useMemo(()=>{const n=e(r.current);return r.current=n,n},[...t])}function li(e){const t=hu(e),r=p.useRef(null),n=p.useCallback(o=>{o!==r.current&&(t==null||t(o,r.current)),r.current=o},[]);return[r,n]}function ma(e){const t=p.useRef();return p.useEffect(()=>{t.current=e},[e]),t.current}let fs={};function $o(e,t){return p.useMemo(()=>{if(t)return t;const r=fs[e]==null?0:fs[e]+1;return fs[e]=r,e+"-"+r},[e,t])}function cp(e){return function(t){for(var r=arguments.length,n=new Array(r>1?r-1:0),o=1;o{const a=Object.entries(i);for(const[u,c]of a){const d=l[u];d!=null&&(l[u]=d+e*c)}return l},{...t})}}const yn=cp(1),ii=cp(-1);function Uy(e){return"clientX"in e&&"clientY"in e}function wu(e){if(!e)return!1;const{KeyboardEvent:t}=Ye(e.target);return t&&e instanceof t}function Fy(e){if(!e)return!1;const{TouchEvent:t}=Ye(e.target);return t&&e instanceof t}function pa(e){if(Fy(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:r}=e.touches[0];return{x:t,y:r}}else if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:r}=e.changedTouches[0];return{x:t,y:r}}}return Uy(e)?{x:e.clientX,y:e.clientY}:null}const To=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:r}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(r?Math.round(r):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:r}=e;return"scaleX("+t+") scaleY("+r+")"}},Transform:{toString(e){if(e)return[To.Translate.toString(e),To.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:r,easing:n}=e;return t+" "+r+"ms "+n}}}),_d="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function Wy(e){return e.matches(_d)?e:e.querySelector(_d)}const Ay={display:"none"};function zy(e){let{id:t,value:r}=e;return De.createElement("div",{id:t,style:Ay},r)}function $y(e){let{id:t,announcement:r,ariaLiveType:n="assertive"}=e;const o={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return De.createElement("div",{id:t,style:o,role:"status","aria-live":n,"aria-atomic":!0},r)}function By(){const[e,t]=p.useState("");return{announce:p.useCallback(n=>{n!=null&&t(n)},[]),announcement:e}}const dp=p.createContext(null);function Vy(e){const t=p.useContext(dp);p.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of ");return t(e)},[e,t])}function Hy(){const[e]=p.useState(()=>new Set),t=p.useCallback(n=>(e.add(n),()=>e.delete(n)),[e]);return[p.useCallback(n=>{let{type:o,event:l}=n;e.forEach(i=>{var a;return(a=i[o])==null?void 0:a.call(i,l)})},[e]),t]}const Ky={draggable:` + To pick up a draggable item, press the space bar. + While dragging, use the arrow keys to move the item. + Press space again to drop the item in its new position, or press escape to cancel. + `},qy={onDragStart(e){let{active:t}=e;return"Picked up draggable item "+t.id+"."},onDragOver(e){let{active:t,over:r}=e;return r?"Draggable item "+t.id+" was moved over droppable area "+r.id+".":"Draggable item "+t.id+" is no longer over a droppable area."},onDragEnd(e){let{active:t,over:r}=e;return r?"Draggable item "+t.id+" was dropped over droppable area "+r.id:"Draggable item "+t.id+" was dropped."},onDragCancel(e){let{active:t}=e;return"Dragging was cancelled. Draggable item "+t.id+" was dropped."}};function Qy(e){let{announcements:t=qy,container:r,hiddenTextDescribedById:n,screenReaderInstructions:o=Ky}=e;const{announce:l,announcement:i}=By(),a=$o("DndLiveRegion"),[u,c]=p.useState(!1);if(p.useEffect(()=>{c(!0)},[]),Vy(p.useMemo(()=>({onDragStart(f){let{active:m}=f;l(t.onDragStart({active:m}))},onDragMove(f){let{active:m,over:v}=f;t.onDragMove&&l(t.onDragMove({active:m,over:v}))},onDragOver(f){let{active:m,over:v}=f;l(t.onDragOver({active:m,over:v}))},onDragEnd(f){let{active:m,over:v}=f;l(t.onDragEnd({active:m,over:v}))},onDragCancel(f){let{active:m,over:v}=f;l(t.onDragCancel({active:m,over:v}))}}),[l,t])),!u)return null;const d=De.createElement(De.Fragment,null,De.createElement(zy,{id:n,value:o.draggable}),De.createElement($y,{id:a,announcement:i}));return r?pr.createPortal(d,r):d}var we;(function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"})(we||(we={}));function si(){}function Jy(e,t){return p.useMemo(()=>({sensor:e,options:t??{}}),[e,t])}function Yy(){for(var e=arguments.length,t=new Array(e),r=0;r[...t].filter(n=>n!=null),[...t])}const Pt=Object.freeze({x:0,y:0});function Xy(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function Gy(e,t){let{data:{value:r}}=e,{data:{value:n}}=t;return r-n}function Zy(e,t){let{data:{value:r}}=e,{data:{value:n}}=t;return n-r}function ek(e,t){if(!e||e.length===0)return null;const[r]=e;return r[t]}function hd(e,t,r){return t===void 0&&(t=e.left),r===void 0&&(r=e.top),{x:t+e.width*.5,y:r+e.height*.5}}const tk=e=>{let{collisionRect:t,droppableRects:r,droppableContainers:n}=e;const o=hd(t,t.left,t.top),l=[];for(const i of n){const{id:a}=i,u=r.get(a);if(u){const c=Xy(hd(u),o);l.push({id:a,data:{droppableContainer:i,value:c}})}}return l.sort(Gy)};function rk(e,t){const r=Math.max(t.top,e.top),n=Math.max(t.left,e.left),o=Math.min(t.left+t.width,e.left+e.width),l=Math.min(t.top+t.height,e.top+e.height),i=o-n,a=l-r;if(n{let{collisionRect:t,droppableRects:r,droppableContainers:n}=e;const o=[];for(const l of n){const{id:i}=l,a=r.get(i);if(a){const u=rk(a,t);u>0&&o.push({id:i,data:{droppableContainer:l,value:u}})}}return o.sort(Zy)};function ok(e,t,r){return{...e,scaleX:t&&r?t.width/r.width:1,scaleY:t&&r?t.height/r.height:1}}function fp(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:Pt}function lk(e){return function(r){for(var n=arguments.length,o=new Array(n>1?n-1:0),l=1;l({...i,top:i.top+e*a.y,bottom:i.bottom+e*a.y,left:i.left+e*a.x,right:i.right+e*a.x}),{...r})}}const ik=lk(1);function sk(e){if(e.startsWith("matrix3d(")){const t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith("matrix(")){const t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function ak(e,t,r){const n=sk(t);if(!n)return e;const{scaleX:o,scaleY:l,x:i,y:a}=n,u=e.left-i-(1-o)*parseFloat(r),c=e.top-a-(1-l)*parseFloat(r.slice(r.indexOf(" ")+1)),d=o?e.width/o:e.width,f=l?e.height/l:e.height;return{width:d,height:f,top:c,right:u+d,bottom:c+f,left:u}}const uk={ignoreTransform:!1};function Ln(e,t){t===void 0&&(t=uk);let r=e.getBoundingClientRect();if(t.ignoreTransform){const{transform:c,transformOrigin:d}=Ye(e).getComputedStyle(e);c&&(r=ak(r,c,d))}const{top:n,left:o,width:l,height:i,bottom:a,right:u}=r;return{top:n,left:o,width:l,height:i,bottom:a,right:u}}function wd(e){return Ln(e,{ignoreTransform:!0})}function ck(e){const t=e.innerWidth,r=e.innerHeight;return{top:0,left:0,right:t,bottom:r,width:t,height:r}}function dk(e,t){return t===void 0&&(t=Ye(e).getComputedStyle(e)),t.position==="fixed"}function fk(e,t){t===void 0&&(t=Ye(e).getComputedStyle(e));const r=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(o=>{const l=t[o];return typeof l=="string"?r.test(l):!1})}function vu(e,t){const r=[];function n(o){if(t!=null&&r.length>=t||!o)return r;if(_u(o)&&o.scrollingElement!=null&&!r.includes(o.scrollingElement))return r.push(o.scrollingElement),r;if(!Ao(o)||up(o)||r.includes(o))return r;const l=Ye(e).getComputedStyle(o);return o!==e&&fk(o,l)&&r.push(o),dk(o,l)?r:n(o.parentNode)}return e?n(e):r}function mp(e){const[t]=vu(e,1);return t??null}function ms(e){return!Ei||!e?null:Pn(e)?e:pu(e)?_u(e)||e===Dn(e).scrollingElement?window:Ao(e)?e:null:null}function pp(e){return Pn(e)?e.scrollX:e.scrollLeft}function _p(e){return Pn(e)?e.scrollY:e.scrollTop}function _a(e){return{x:pp(e),y:_p(e)}}var Se;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})(Se||(Se={}));function hp(e){return!Ei||!e?!1:e===document.scrollingElement}function wp(e){const t={x:0,y:0},r=hp(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},n={x:e.scrollWidth-r.width,y:e.scrollHeight-r.height},o=e.scrollTop<=t.y,l=e.scrollLeft<=t.x,i=e.scrollTop>=n.y,a=e.scrollLeft>=n.x;return{isTop:o,isLeft:l,isBottom:i,isRight:a,maxScroll:n,minScroll:t}}const mk={x:.2,y:.2};function pk(e,t,r,n,o){let{top:l,left:i,right:a,bottom:u}=r;n===void 0&&(n=10),o===void 0&&(o=mk);const{isTop:c,isBottom:d,isLeft:f,isRight:m}=wp(e),v={x:0,y:0},g={x:0,y:0},y={height:t.height*o.y,width:t.width*o.x};return!c&&l<=t.top+y.height?(v.y=Se.Backward,g.y=n*Math.abs((t.top+y.height-l)/y.height)):!d&&u>=t.bottom-y.height&&(v.y=Se.Forward,g.y=n*Math.abs((t.bottom-y.height-u)/y.height)),!m&&a>=t.right-y.width?(v.x=Se.Forward,g.x=n*Math.abs((t.right-y.width-a)/y.width)):!f&&i<=t.left+y.width&&(v.x=Se.Backward,g.x=n*Math.abs((t.left+y.width-i)/y.width)),{direction:v,speed:g}}function _k(e){if(e===document.scrollingElement){const{innerWidth:l,innerHeight:i}=window;return{top:0,left:0,right:l,bottom:i,width:l,height:i}}const{top:t,left:r,right:n,bottom:o}=e.getBoundingClientRect();return{top:t,left:r,right:n,bottom:o,width:e.clientWidth,height:e.clientHeight}}function vp(e){return e.reduce((t,r)=>yn(t,_a(r)),Pt)}function hk(e){return e.reduce((t,r)=>t+pp(r),0)}function wk(e){return e.reduce((t,r)=>t+_p(r),0)}function vk(e,t){if(t===void 0&&(t=Ln),!e)return;const{top:r,left:n,bottom:o,right:l}=t(e);mp(e)&&(o<=0||l<=0||r>=window.innerHeight||n>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}const gk=[["x",["left","right"],hk],["y",["top","bottom"],wk]];class gu{constructor(t,r){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const n=vu(r),o=vp(n);this.rect={...t},this.width=t.width,this.height=t.height;for(const[l,i,a]of gk)for(const u of i)Object.defineProperty(this,u,{get:()=>{const c=a(n),d=o[l]-c;return this.rect[u]+d},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class so{constructor(t){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(r=>{var n;return(n=this.target)==null?void 0:n.removeEventListener(...r)})},this.target=t}add(t,r,n){var o;(o=this.target)==null||o.addEventListener(t,r,n),this.listeners.push([t,r,n])}}function yk(e){const{EventTarget:t}=Ye(e);return e instanceof t?e:Dn(e)}function ps(e,t){const r=Math.abs(e.x),n=Math.abs(e.y);return typeof t=="number"?Math.sqrt(r**2+n**2)>t:"x"in t&&"y"in t?r>t.x&&n>t.y:"x"in t?r>t.x:"y"in t?n>t.y:!1}var dt;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(dt||(dt={}));function vd(e){e.preventDefault()}function kk(e){e.stopPropagation()}var X;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter",e.Tab="Tab"})(X||(X={}));const gp={start:[X.Space,X.Enter],cancel:[X.Esc],end:[X.Space,X.Enter,X.Tab]},xk=(e,t)=>{let{currentCoordinates:r}=t;switch(e.code){case X.Right:return{...r,x:r.x+25};case X.Left:return{...r,x:r.x-25};case X.Down:return{...r,y:r.y+25};case X.Up:return{...r,y:r.y-25}}};class yp{constructor(t){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=t;const{event:{target:r}}=t;this.props=t,this.listeners=new so(Dn(r)),this.windowListeners=new so(Ye(r)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(dt.Resize,this.handleCancel),this.windowListeners.add(dt.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(dt.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:t,onStart:r}=this.props,n=t.node.current;n&&vk(n),r(Pt)}handleKeyDown(t){if(wu(t)){const{active:r,context:n,options:o}=this.props,{keyboardCodes:l=gp,coordinateGetter:i=xk,scrollBehavior:a="smooth"}=o,{code:u}=t;if(l.end.includes(u)){this.handleEnd(t);return}if(l.cancel.includes(u)){this.handleCancel(t);return}const{collisionRect:c}=n.current,d=c?{x:c.left,y:c.top}:Pt;this.referenceCoordinates||(this.referenceCoordinates=d);const f=i(t,{active:r,context:n.current,currentCoordinates:d});if(f){const m=ii(f,d),v={x:0,y:0},{scrollableAncestors:g}=n.current;for(const y of g){const C=t.code,{isTop:w,isRight:h,isLeft:_,isBottom:x,maxScroll:k,minScroll:S}=wp(y),N=_k(y),b={x:Math.min(C===X.Right?N.right-N.width/2:N.right,Math.max(C===X.Right?N.left:N.left+N.width/2,f.x)),y:Math.min(C===X.Down?N.bottom-N.height/2:N.bottom,Math.max(C===X.Down?N.top:N.top+N.height/2,f.y))},j=C===X.Right&&!h||C===X.Left&&!_,E=C===X.Down&&!x||C===X.Up&&!w;if(j&&b.x!==f.x){const L=y.scrollLeft+m.x,B=C===X.Right&&L<=k.x||C===X.Left&&L>=S.x;if(B&&!m.y){y.scrollTo({left:L,behavior:a});return}B?v.x=y.scrollLeft-L:v.x=C===X.Right?y.scrollLeft-k.x:y.scrollLeft-S.x,v.x&&y.scrollBy({left:-v.x,behavior:a});break}else if(E&&b.y!==f.y){const L=y.scrollTop+m.y,B=C===X.Down&&L<=k.y||C===X.Up&&L>=S.y;if(B&&!m.x){y.scrollTo({top:L,behavior:a});return}B?v.y=y.scrollTop-L:v.y=C===X.Down?y.scrollTop-k.y:y.scrollTop-S.y,v.y&&y.scrollBy({top:-v.y,behavior:a});break}}this.handleMove(t,yn(ii(f,this.referenceCoordinates),v))}}}handleMove(t,r){const{onMove:n}=this.props;t.preventDefault(),n(r)}handleEnd(t){const{onEnd:r}=this.props;t.preventDefault(),this.detach(),r()}handleCancel(t){const{onCancel:r}=this.props;t.preventDefault(),this.detach(),r()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}yp.activators=[{eventName:"onKeyDown",handler:(e,t,r)=>{let{keyboardCodes:n=gp,onActivation:o}=t,{active:l}=r;const{code:i}=e.nativeEvent;if(n.start.includes(i)){const a=l.activatorNode.current;return a&&e.target!==a?!1:(e.preventDefault(),o==null||o({event:e.nativeEvent}),!0)}return!1}}];function gd(e){return!!(e&&"distance"in e)}function yd(e){return!!(e&&"delay"in e)}class yu{constructor(t,r,n){var o;n===void 0&&(n=yk(t.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=t,this.events=r;const{event:l}=t,{target:i}=l;this.props=t,this.events=r,this.document=Dn(i),this.documentListeners=new so(this.document),this.listeners=new so(n),this.windowListeners=new so(Ye(i)),this.initialCoordinates=(o=pa(l))!=null?o:Pt,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:t,props:{options:{activationConstraint:r,bypassActivationConstraint:n}}}=this;if(this.listeners.add(t.move.name,this.handleMove,{passive:!1}),this.listeners.add(t.end.name,this.handleEnd),t.cancel&&this.listeners.add(t.cancel.name,this.handleCancel),this.windowListeners.add(dt.Resize,this.handleCancel),this.windowListeners.add(dt.DragStart,vd),this.windowListeners.add(dt.VisibilityChange,this.handleCancel),this.windowListeners.add(dt.ContextMenu,vd),this.documentListeners.add(dt.Keydown,this.handleKeydown),r){if(n!=null&&n({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(yd(r)){this.timeoutId=setTimeout(this.handleStart,r.delay),this.handlePending(r);return}if(gd(r)){this.handlePending(r);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(t,r){const{active:n,onPending:o}=this.props;o(n,t,this.initialCoordinates,r)}handleStart(){const{initialCoordinates:t}=this,{onStart:r}=this.props;t&&(this.activated=!0,this.documentListeners.add(dt.Click,kk,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(dt.SelectionChange,this.removeTextSelection),r(t))}handleMove(t){var r;const{activated:n,initialCoordinates:o,props:l}=this,{onMove:i,options:{activationConstraint:a}}=l;if(!o)return;const u=(r=pa(t))!=null?r:Pt,c=ii(o,u);if(!n&&a){if(gd(a)){if(a.tolerance!=null&&ps(c,a.tolerance))return this.handleCancel();if(ps(c,a.distance))return this.handleStart()}if(yd(a)&&ps(c,a.tolerance))return this.handleCancel();this.handlePending(a,c);return}t.cancelable&&t.preventDefault(),i(u)}handleEnd(){const{onAbort:t,onEnd:r}=this.props;this.detach(),this.activated||t(this.props.active),r()}handleCancel(){const{onAbort:t,onCancel:r}=this.props;this.detach(),this.activated||t(this.props.active),r()}handleKeydown(t){t.code===X.Esc&&this.handleCancel()}removeTextSelection(){var t;(t=this.document.getSelection())==null||t.removeAllRanges()}}const Sk={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class ku extends yu{constructor(t){const{event:r}=t,n=Dn(r.target);super(t,Sk,n)}}ku.activators=[{eventName:"onPointerDown",handler:(e,t)=>{let{nativeEvent:r}=e,{onActivation:n}=t;return!r.isPrimary||r.button!==0?!1:(n==null||n({event:r}),!0)}}];const bk={move:{name:"mousemove"},end:{name:"mouseup"}};var ha;(function(e){e[e.RightClick=2]="RightClick"})(ha||(ha={}));class Ck extends yu{constructor(t){super(t,bk,Dn(t.event.target))}}Ck.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:r}=e,{onActivation:n}=t;return r.button===ha.RightClick?!1:(n==null||n({event:r}),!0)}}];const _s={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class Nk extends yu{constructor(t){super(t,_s)}static setup(){return window.addEventListener(_s.move.name,t,{capture:!1,passive:!1}),function(){window.removeEventListener(_s.move.name,t)};function t(){}}}Nk.activators=[{eventName:"onTouchStart",handler:(e,t)=>{let{nativeEvent:r}=e,{onActivation:n}=t;const{touches:o}=r;return o.length>1?!1:(n==null||n({event:r}),!0)}}];var ao;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(ao||(ao={}));var ai;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(ai||(ai={}));function jk(e){let{acceleration:t,activator:r=ao.Pointer,canScroll:n,draggingRect:o,enabled:l,interval:i=5,order:a=ai.TreeOrder,pointerCoordinates:u,scrollableAncestors:c,scrollableAncestorRects:d,delta:f,threshold:m}=e;const v=Ik({delta:f,disabled:!l}),[g,y]=Oy(),C=p.useRef({x:0,y:0}),w=p.useRef({x:0,y:0}),h=p.useMemo(()=>{switch(r){case ao.Pointer:return u?{top:u.y,bottom:u.y,left:u.x,right:u.x}:null;case ao.DraggableRect:return o}},[r,o,u]),_=p.useRef(null),x=p.useCallback(()=>{const S=_.current;if(!S)return;const N=C.current.x*w.current.x,b=C.current.y*w.current.y;S.scrollBy(N,b)},[]),k=p.useMemo(()=>a===ai.TreeOrder?[...c].reverse():c,[a,c]);p.useEffect(()=>{if(!l||!c.length||!h){y();return}for(const S of k){if((n==null?void 0:n(S))===!1)continue;const N=c.indexOf(S),b=d[N];if(!b)continue;const{direction:j,speed:E}=pk(S,b,h,t,m);for(const L of["x","y"])v[L][j[L]]||(E[L]=0,j[L]=0);if(E.x>0||E.y>0){y(),_.current=S,g(x,i),C.current=E,w.current=j;return}}C.current={x:0,y:0},w.current={x:0,y:0},y()},[t,x,n,y,l,i,JSON.stringify(h),JSON.stringify(v),g,c,k,d,JSON.stringify(m)])}const Ek={x:{[Se.Backward]:!1,[Se.Forward]:!1},y:{[Se.Backward]:!1,[Se.Forward]:!1}};function Ik(e){let{delta:t,disabled:r}=e;const n=ma(t);return zo(o=>{if(r||!n||!o)return Ek;const l={x:Math.sign(t.x-n.x),y:Math.sign(t.y-n.y)};return{x:{[Se.Backward]:o.x[Se.Backward]||l.x===-1,[Se.Forward]:o.x[Se.Forward]||l.x===1},y:{[Se.Backward]:o.y[Se.Backward]||l.y===-1,[Se.Forward]:o.y[Se.Forward]||l.y===1}}},[r,t,n])}function Rk(e,t){const r=t!=null?e.get(t):void 0,n=r?r.node.current:null;return zo(o=>{var l;return t==null?null:(l=n??o)!=null?l:null},[n,t])}function Tk(e,t){return p.useMemo(()=>e.reduce((r,n)=>{const{sensor:o}=n,l=o.activators.map(i=>({eventName:i.eventName,handler:t(i.handler,n)}));return[...r,...l]},[]),[e,t])}var Po;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})(Po||(Po={}));var wa;(function(e){e.Optimized="optimized"})(wa||(wa={}));const kd=new Map;function Pk(e,t){let{dragging:r,dependencies:n,config:o}=t;const[l,i]=p.useState(null),{frequency:a,measure:u,strategy:c}=o,d=p.useRef(e),f=C(),m=Ro(f),v=p.useCallback(function(w){w===void 0&&(w=[]),!m.current&&i(h=>h===null?w:h.concat(w.filter(_=>!h.includes(_))))},[m]),g=p.useRef(null),y=zo(w=>{if(f&&!r)return kd;if(!w||w===kd||d.current!==e||l!=null){const h=new Map;for(let _ of e){if(!_)continue;if(l&&l.length>0&&!l.includes(_.id)&&_.rect.current){h.set(_.id,_.rect.current);continue}const x=_.node.current,k=x?new gu(u(x),x):null;_.rect.current=k,k&&h.set(_.id,k)}return h}return w},[e,l,r,f,u]);return p.useEffect(()=>{d.current=e},[e]),p.useEffect(()=>{f||v()},[r,f]),p.useEffect(()=>{l&&l.length>0&&i(null)},[JSON.stringify(l)]),p.useEffect(()=>{f||typeof a!="number"||g.current!==null||(g.current=setTimeout(()=>{v(),g.current=null},a))},[a,f,v,...n]),{droppableRects:y,measureDroppableContainers:v,measuringScheduled:l!=null};function C(){switch(c){case Po.Always:return!1;case Po.BeforeDragging:return r;default:return!r}}}function kp(e,t){return zo(r=>e?r||(typeof t=="function"?t(e):e):null,[t,e])}function Dk(e,t){return kp(e,t)}function Lk(e){let{callback:t,disabled:r}=e;const n=hu(t),o=p.useMemo(()=>{if(r||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:l}=window;return new l(n)},[n,r]);return p.useEffect(()=>()=>o==null?void 0:o.disconnect(),[o]),o}function Ii(e){let{callback:t,disabled:r}=e;const n=hu(t),o=p.useMemo(()=>{if(r||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:l}=window;return new l(n)},[r]);return p.useEffect(()=>()=>o==null?void 0:o.disconnect(),[o]),o}function Mk(e){return new gu(Ln(e),e)}function xd(e,t,r){t===void 0&&(t=Mk);const[n,o]=p.useState(null);function l(){o(u=>{if(!e)return null;if(e.isConnected===!1){var c;return(c=u??r)!=null?c:null}const d=t(e);return JSON.stringify(u)===JSON.stringify(d)?u:d})}const i=Lk({callback(u){if(e)for(const c of u){const{type:d,target:f}=c;if(d==="childList"&&f instanceof HTMLElement&&f.contains(e)){l();break}}}}),a=Ii({callback:l});return At(()=>{l(),e?(a==null||a.observe(e),i==null||i.observe(document.body,{childList:!0,subtree:!0})):(a==null||a.disconnect(),i==null||i.disconnect())},[e]),n}function Ok(e){const t=kp(e);return fp(e,t)}const Sd=[];function Uk(e){const t=p.useRef(e),r=zo(n=>e?n&&n!==Sd&&e&&t.current&&e.parentNode===t.current.parentNode?n:vu(e):Sd,[e]);return p.useEffect(()=>{t.current=e},[e]),r}function Fk(e){const[t,r]=p.useState(null),n=p.useRef(e),o=p.useCallback(l=>{const i=ms(l.target);i&&r(a=>a?(a.set(i,_a(i)),new Map(a)):null)},[]);return p.useEffect(()=>{const l=n.current;if(e!==l){i(l);const a=e.map(u=>{const c=ms(u);return c?(c.addEventListener("scroll",o,{passive:!0}),[c,_a(c)]):null}).filter(u=>u!=null);r(a.length?new Map(a):null),n.current=e}return()=>{i(e),i(l)};function i(a){a.forEach(u=>{const c=ms(u);c==null||c.removeEventListener("scroll",o)})}},[o,e]),p.useMemo(()=>e.length?t?Array.from(t.values()).reduce((l,i)=>yn(l,i),Pt):vp(e):Pt,[e,t])}function bd(e,t){t===void 0&&(t=[]);const r=p.useRef(null);return p.useEffect(()=>{r.current=null},t),p.useEffect(()=>{const n=e!==Pt;n&&!r.current&&(r.current=e),!n&&r.current&&(r.current=null)},[e]),r.current?ii(e,r.current):Pt}function Wk(e){p.useEffect(()=>{if(!Ei)return;const t=e.map(r=>{let{sensor:n}=r;return n.setup==null?void 0:n.setup()});return()=>{for(const r of t)r==null||r()}},e.map(t=>{let{sensor:r}=t;return r}))}function Ak(e,t){return p.useMemo(()=>e.reduce((r,n)=>{let{eventName:o,handler:l}=n;return r[o]=i=>{l(i,t)},r},{}),[e,t])}function xp(e){return p.useMemo(()=>e?ck(e):null,[e])}const Cd=[];function zk(e,t){t===void 0&&(t=Ln);const[r]=e,n=xp(r?Ye(r):null),[o,l]=p.useState(Cd);function i(){l(()=>e.length?e.map(u=>hp(u)?n:new gu(t(u),u)):Cd)}const a=Ii({callback:i});return At(()=>{a==null||a.disconnect(),i(),e.forEach(u=>a==null?void 0:a.observe(u))},[e]),o}function $k(e){if(!e)return null;if(e.children.length>1)return e;const t=e.children[0];return Ao(t)?t:e}function Bk(e){let{measure:t}=e;const[r,n]=p.useState(null),o=p.useCallback(c=>{for(const{target:d}of c)if(Ao(d)){n(f=>{const m=t(d);return f?{...f,width:m.width,height:m.height}:m});break}},[t]),l=Ii({callback:o}),i=p.useCallback(c=>{const d=$k(c);l==null||l.disconnect(),d&&(l==null||l.observe(d)),n(d?t(d):null)},[t,l]),[a,u]=li(i);return p.useMemo(()=>({nodeRef:a,rect:r,setRef:u}),[r,a,u])}const Vk=[{sensor:ku,options:{}},{sensor:yp,options:{}}],Hk={current:{}},Pl={draggable:{measure:wd},droppable:{measure:wd,strategy:Po.WhileDragging,frequency:wa.Optimized},dragOverlay:{measure:Ln}};class uo extends Map{get(t){var r;return t!=null&&(r=super.get(t))!=null?r:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(t=>{let{disabled:r}=t;return!r})}getNodeFor(t){var r,n;return(r=(n=this.get(t))==null?void 0:n.node.current)!=null?r:void 0}}const Kk={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new uo,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:si},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:Pl,measureDroppableContainers:si,windowRect:null,measuringScheduled:!1},qk={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:si,draggableNodes:new Map,over:null,measureDroppableContainers:si},Ri=p.createContext(qk),Sp=p.createContext(Kk);function Qk(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new uo}}}function Jk(e,t){switch(t.type){case we.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case we.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case we.DragEnd:case we.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case we.RegisterDroppable:{const{element:r}=t,{id:n}=r,o=new uo(e.droppable.containers);return o.set(n,r),{...e,droppable:{...e.droppable,containers:o}}}case we.SetDroppableDisabled:{const{id:r,key:n,disabled:o}=t,l=e.droppable.containers.get(r);if(!l||n!==l.key)return e;const i=new uo(e.droppable.containers);return i.set(r,{...l,disabled:o}),{...e,droppable:{...e.droppable,containers:i}}}case we.UnregisterDroppable:{const{id:r,key:n}=t,o=e.droppable.containers.get(r);if(!o||n!==o.key)return e;const l=new uo(e.droppable.containers);return l.delete(r),{...e,droppable:{...e.droppable,containers:l}}}default:return e}}function Yk(e){let{disabled:t}=e;const{active:r,activatorEvent:n,draggableNodes:o}=p.useContext(Ri),l=ma(n),i=ma(r==null?void 0:r.id);return p.useEffect(()=>{if(!t&&!n&&l&&i!=null){if(!wu(l)||document.activeElement===l.target)return;const a=o.get(i);if(!a)return;const{activatorNode:u,node:c}=a;if(!u.current&&!c.current)return;requestAnimationFrame(()=>{for(const d of[u.current,c.current]){if(!d)continue;const f=Wy(d);if(f){f.focus();break}}})}},[n,t,o,i,l]),null}function Xk(e,t){let{transform:r,...n}=t;return e!=null&&e.length?e.reduce((o,l)=>l({transform:o,...n}),r):r}function Gk(e){return p.useMemo(()=>({draggable:{...Pl.draggable,...e==null?void 0:e.draggable},droppable:{...Pl.droppable,...e==null?void 0:e.droppable},dragOverlay:{...Pl.dragOverlay,...e==null?void 0:e.dragOverlay}}),[e==null?void 0:e.draggable,e==null?void 0:e.droppable,e==null?void 0:e.dragOverlay])}function Zk(e){let{activeNode:t,measure:r,initialRect:n,config:o=!0}=e;const l=p.useRef(!1),{x:i,y:a}=typeof o=="boolean"?{x:o,y:o}:o;At(()=>{if(!i&&!a||!t){l.current=!1;return}if(l.current||!n)return;const c=t==null?void 0:t.node.current;if(!c||c.isConnected===!1)return;const d=r(c),f=fp(d,n);if(i||(f.x=0),a||(f.y=0),l.current=!0,Math.abs(f.x)>0||Math.abs(f.y)>0){const m=mp(c);m&&m.scrollBy({top:f.y,left:f.x})}},[t,i,a,n,r])}const bp=p.createContext({...Pt,scaleX:1,scaleY:1});var ur;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(ur||(ur={}));const ex=p.memo(function(t){var r,n,o,l;let{id:i,accessibility:a,autoScroll:u=!0,children:c,sensors:d=Vk,collisionDetection:f=nk,measuring:m,modifiers:v,...g}=t;const y=p.useReducer(Jk,void 0,Qk),[C,w]=y,[h,_]=Hy(),[x,k]=p.useState(ur.Uninitialized),S=x===ur.Initialized,{draggable:{active:N,nodes:b,translate:j},droppable:{containers:E}}=C,L=N!=null?b.get(N):null,B=p.useRef({initial:null,translated:null}),U=p.useMemo(()=>{var ke;return N!=null?{id:N,data:(ke=L==null?void 0:L.data)!=null?ke:Hk,rect:B}:null},[N,L]),G=p.useRef(null),[Re,Xe]=p.useState(null),[fe,T]=p.useState(null),O=Ro(g,Object.values(g)),F=$o("DndDescribedBy",i),Y=p.useMemo(()=>E.getEnabled(),[E]),z=Gk(m),{droppableRects:ue,measureDroppableContainers:ge,measuringScheduled:st}=Pk(Y,{dragging:S,dependencies:[j.x,j.y],config:z.droppable}),W=Rk(b,N),at=p.useMemo(()=>fe?pa(fe):null,[fe]),gt=Gr(),yt=Dk(W,z.draggable.measure);Zk({activeNode:N!=null?b.get(N):null,config:gt.layoutShiftCompensation,initialRect:yt,measure:z.draggable.measure});const q=xd(W,z.draggable.measure,yt),A=xd(W?W.parentElement:null),Ce=p.useRef({activatorEvent:null,active:null,activeNode:W,collisionRect:null,collisions:null,droppableRects:ue,draggableNodes:b,draggingNode:null,draggingNodeRect:null,droppableContainers:E,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),ee=E.getNodeFor((r=Ce.current.over)==null?void 0:r.id),Ne=Bk({measure:z.dragOverlay.measure}),ye=(n=Ne.nodeRef.current)!=null?n:W,ut=S?(o=Ne.rect)!=null?o:q:null,Bo=!!(Ne.nodeRef.current&&Ne.rect),Xr=Ok(Bo?null:q),Mn=xp(ye?Ye(ye):null),kt=Uk(S?ee??W:null),Zt=zk(kt),zt=Xk(v,{transform:{x:j.x-Xr.x,y:j.y-Xr.y,scaleX:1,scaleY:1},activatorEvent:fe,active:U,activeNodeRect:q,containerNodeRect:A,draggingNodeRect:ut,over:Ce.current.over,overlayNodeRect:Ne.rect,scrollableAncestors:kt,scrollableAncestorRects:Zt,windowRect:Mn}),Vo=at?yn(at,j):null,Ho=Fk(kt),Ti=bd(Ho),Pi=bd(Ho,[q]),er=yn(zt,Ti),tr=ut?ik(ut,zt):null,Dr=U&&tr?f({active:U,collisionRect:tr,droppableRects:ue,droppableContainers:Y,pointerCoordinates:Vo}):null,Ko=ek(Dr,"id"),[Dt,Oe]=p.useState(null),rr=Bo?zt:yn(zt,Pi),Di=ok(rr,(l=Dt==null?void 0:Dt.rect)!=null?l:null,q),On=p.useRef(null),qo=p.useCallback((ke,Ue)=>{let{sensor:Fe,options:Lt}=Ue;if(G.current==null)return;const Ve=b.get(G.current);if(!Ve)return;const We=ke.nativeEvent,Ge=new Fe({active:G.current,activeNode:Ve,event:We,options:Lt,context:Ce,onAbort(me){if(!b.get(me))return;const{onDragAbort:Ze}=O.current,ct={id:me};Ze==null||Ze(ct),h({type:"onDragAbort",event:ct})},onPending(me,xt,Ze,ct){if(!b.get(me))return;const{onDragPending:or}=O.current,St={id:me,constraint:xt,initialCoordinates:Ze,offset:ct};or==null||or(St),h({type:"onDragPending",event:St})},onStart(me){const xt=G.current;if(xt==null)return;const Ze=b.get(xt);if(!Ze)return;const{onDragStart:ct}=O.current,nr={activatorEvent:We,active:{id:xt,data:Ze.data,rect:B}};pr.unstable_batchedUpdates(()=>{ct==null||ct(nr),k(ur.Initializing),w({type:we.DragStart,initialCoordinates:me,active:xt}),h({type:"onDragStart",event:nr}),Xe(On.current),T(We)})},onMove(me){w({type:we.DragMove,coordinates:me})},onEnd:$t(we.DragEnd),onCancel:$t(we.DragCancel)});On.current=Ge;function $t(me){return async function(){const{active:Ze,collisions:ct,over:nr,scrollAdjustedTranslate:or}=Ce.current;let St=null;if(Ze&&or){const{cancelDrop:lr}=O.current;St={activatorEvent:We,active:Ze,collisions:ct,delta:or,over:nr},me===we.DragEnd&&typeof lr=="function"&&await Promise.resolve(lr(St))&&(me=we.DragCancel)}G.current=null,pr.unstable_batchedUpdates(()=>{w({type:me}),k(ur.Uninitialized),Oe(null),Xe(null),T(null),On.current=null;const lr=me===we.DragEnd?"onDragEnd":"onDragCancel";if(St){const Zr=O.current[lr];Zr==null||Zr(St),h({type:lr,event:St})}})}}},[b]),Qo=p.useCallback((ke,Ue)=>(Fe,Lt)=>{const Ve=Fe.nativeEvent,We=b.get(Lt);if(G.current!==null||!We||Ve.dndKit||Ve.defaultPrevented)return;const Ge={active:We};ke(Fe,Ue.options,Ge)===!0&&(Ve.dndKit={capturedBy:Ue.sensor},G.current=Lt,qo(Fe,Ue))},[b,qo]),Jo=Tk(d,Qo);Wk(d),At(()=>{q&&x===ur.Initializing&&k(ur.Initialized)},[q,x]),p.useEffect(()=>{const{onDragMove:ke}=O.current,{active:Ue,activatorEvent:Fe,collisions:Lt,over:Ve}=Ce.current;if(!Ue||!Fe)return;const We={active:Ue,activatorEvent:Fe,collisions:Lt,delta:{x:er.x,y:er.y},over:Ve};pr.unstable_batchedUpdates(()=>{ke==null||ke(We),h({type:"onDragMove",event:We})})},[er.x,er.y]),p.useEffect(()=>{const{active:ke,activatorEvent:Ue,collisions:Fe,droppableContainers:Lt,scrollAdjustedTranslate:Ve}=Ce.current;if(!ke||G.current==null||!Ue||!Ve)return;const{onDragOver:We}=O.current,Ge=Lt.get(Ko),$t=Ge&&Ge.rect.current?{id:Ge.id,rect:Ge.rect.current,data:Ge.data,disabled:Ge.disabled}:null,me={active:ke,activatorEvent:Ue,collisions:Fe,delta:{x:Ve.x,y:Ve.y},over:$t};pr.unstable_batchedUpdates(()=>{Oe($t),We==null||We(me),h({type:"onDragOver",event:me})})},[Ko]),At(()=>{Ce.current={activatorEvent:fe,active:U,activeNode:W,collisionRect:tr,collisions:Dr,droppableRects:ue,draggableNodes:b,draggingNode:ye,draggingNodeRect:ut,droppableContainers:E,over:Dt,scrollableAncestors:kt,scrollAdjustedTranslate:er},B.current={initial:ut,translated:tr}},[U,W,Dr,tr,b,ye,ut,ue,E,Dt,kt,er]),jk({...gt,delta:j,draggingRect:tr,pointerCoordinates:Vo,scrollableAncestors:kt,scrollableAncestorRects:Zt});const Li=p.useMemo(()=>({active:U,activeNode:W,activeNodeRect:q,activatorEvent:fe,collisions:Dr,containerNodeRect:A,dragOverlay:Ne,draggableNodes:b,droppableContainers:E,droppableRects:ue,over:Dt,measureDroppableContainers:ge,scrollableAncestors:kt,scrollableAncestorRects:Zt,measuringConfiguration:z,measuringScheduled:st,windowRect:Mn}),[U,W,q,fe,Dr,A,Ne,b,E,ue,Dt,ge,kt,Zt,z,st,Mn]),Mi=p.useMemo(()=>({activatorEvent:fe,activators:Jo,active:U,activeNodeRect:q,ariaDescribedById:{draggable:F},dispatch:w,draggableNodes:b,over:Dt,measureDroppableContainers:ge}),[fe,Jo,U,q,w,F,b,Dt,ge]);return De.createElement(dp.Provider,{value:_},De.createElement(Ri.Provider,{value:Mi},De.createElement(Sp.Provider,{value:Li},De.createElement(bp.Provider,{value:Di},c)),De.createElement(Yk,{disabled:(a==null?void 0:a.restoreFocus)===!1})),De.createElement(Qy,{...a,hiddenTextDescribedById:F}));function Gr(){const ke=(Re==null?void 0:Re.autoScrollEnabled)===!1,Ue=typeof u=="object"?u.enabled===!1:u===!1,Fe=S&&!ke&&!Ue;return typeof u=="object"?{...u,enabled:Fe}:{enabled:Fe}}}),tx=p.createContext(null),Nd="button",rx="Draggable";function nx(e){let{id:t,data:r,disabled:n=!1,attributes:o}=e;const l=$o(rx),{activators:i,activatorEvent:a,active:u,activeNodeRect:c,ariaDescribedById:d,draggableNodes:f,over:m}=p.useContext(Ri),{role:v=Nd,roleDescription:g="draggable",tabIndex:y=0}=o??{},C=(u==null?void 0:u.id)===t,w=p.useContext(C?bp:tx),[h,_]=li(),[x,k]=li(),S=Ak(i,t),N=Ro(r);At(()=>(f.set(t,{id:t,key:l,node:h,activatorNode:x,data:N}),()=>{const j=f.get(t);j&&j.key===l&&f.delete(t)}),[f,t]);const b=p.useMemo(()=>({role:v,tabIndex:y,"aria-disabled":n,"aria-pressed":C&&v===Nd?!0:void 0,"aria-roledescription":g,"aria-describedby":d.draggable}),[n,v,y,C,g,d.draggable]);return{active:u,activatorEvent:a,activeNodeRect:c,attributes:b,isDragging:C,listeners:n?void 0:S,node:h,over:m,setNodeRef:_,setActivatorNodeRef:k,transform:w}}function ox(){return p.useContext(Sp)}const lx="Droppable",ix={timeout:25};function sx(e){let{data:t,disabled:r=!1,id:n,resizeObserverConfig:o}=e;const l=$o(lx),{active:i,dispatch:a,over:u,measureDroppableContainers:c}=p.useContext(Ri),d=p.useRef({disabled:r}),f=p.useRef(!1),m=p.useRef(null),v=p.useRef(null),{disabled:g,updateMeasurementsFor:y,timeout:C}={...ix,...o},w=Ro(y??n),h=p.useCallback(()=>{if(!f.current){f.current=!0;return}v.current!=null&&clearTimeout(v.current),v.current=setTimeout(()=>{c(Array.isArray(w.current)?w.current:[w.current]),v.current=null},C)},[C]),_=Ii({callback:h,disabled:g||!i}),x=p.useCallback((b,j)=>{_&&(j&&(_.unobserve(j),f.current=!1),b&&_.observe(b))},[_]),[k,S]=li(x),N=Ro(t);return p.useEffect(()=>{!_||!k.current||(_.disconnect(),f.current=!1,_.observe(k.current))},[k,_]),p.useEffect(()=>(a({type:we.RegisterDroppable,element:{id:n,key:l,disabled:r,node:k,rect:m,data:N}}),()=>a({type:we.UnregisterDroppable,key:l,id:n})),[n]),p.useEffect(()=>{r!==d.current.disabled&&(a({type:we.SetDroppableDisabled,id:n,key:l,disabled:r}),d.current.disabled=r)},[n,l,r,a]),{active:i,rect:m,isOver:(u==null?void 0:u.id)===n,node:k,over:u,setNodeRef:S}}function Cp(e,t,r){const n=e.slice();return n.splice(r<0?n.length+r:r,0,n.splice(t,1)[0]),n}function ax(e,t){return e.reduce((r,n,o)=>{const l=t.get(n);return l&&(r[o]=l),r},Array(e.length))}function hl(e){return e!==null&&e>=0}function ux(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let r=0;r{let{rects:t,activeIndex:r,overIndex:n,index:o}=e;const l=Cp(t,n,r),i=t[o],a=l[o];return!a||!i?null:{x:a.left-i.left,y:a.top-i.top,scaleX:a.width/i.width,scaleY:a.height/i.height}},wl={scaleX:1,scaleY:1},dx=e=>{var t;let{activeIndex:r,activeNodeRect:n,index:o,rects:l,overIndex:i}=e;const a=(t=l[r])!=null?t:n;if(!a)return null;if(o===r){const c=l[i];return c?{x:0,y:rr&&o<=i?{x:0,y:-a.height-u,...wl}:o=i?{x:0,y:a.height+u,...wl}:{x:0,y:0,...wl}};function fx(e,t,r){const n=e[t],o=e[t-1],l=e[t+1];return n?rn.map(S=>typeof S=="object"&&"id"in S?S.id:S),[n]),g=i!=null,y=i?v.indexOf(i.id):-1,C=c?v.indexOf(c.id):-1,w=p.useRef(v),h=!ux(v,w.current),_=C!==-1&&y===-1||h,x=cx(l);At(()=>{h&&g&&d(v)},[h,v,g,d]),p.useEffect(()=>{w.current=v},[v]);const k=p.useMemo(()=>({activeIndex:y,containerId:f,disabled:x,disableTransforms:_,items:v,overIndex:C,useDragOverlay:m,sortedRects:ax(v,u),strategy:o}),[y,f,x.draggable,x.droppable,_,v,C,u,m,o]);return De.createElement(Ep.Provider,{value:k},t)}const px=e=>{let{id:t,items:r,activeIndex:n,overIndex:o}=e;return Cp(r,n,o).indexOf(t)},_x=e=>{let{containerId:t,isSorting:r,wasDragging:n,index:o,items:l,newIndex:i,previousItems:a,previousContainerId:u,transition:c}=e;return!c||!n||a!==l&&o===i?!1:r?!0:i!==o&&t===u},hx={duration:200,easing:"ease"},Ip="transform",wx=To.Transition.toString({property:Ip,duration:0,easing:"linear"}),vx={roleDescription:"sortable"};function gx(e){let{disabled:t,index:r,node:n,rect:o}=e;const[l,i]=p.useState(null),a=p.useRef(r);return At(()=>{if(!t&&r!==a.current&&n.current){const u=o.current;if(u){const c=Ln(n.current,{ignoreTransform:!0}),d={x:u.left-c.left,y:u.top-c.top,scaleX:u.width/c.width,scaleY:u.height/c.height};(d.x||d.y)&&i(d)}}r!==a.current&&(a.current=r)},[t,r,n,o]),p.useEffect(()=>{l&&i(null)},[l]),l}function yx(e){let{animateLayoutChanges:t=_x,attributes:r,disabled:n,data:o,getNewIndex:l=px,id:i,strategy:a,resizeObserverConfig:u,transition:c=hx}=e;const{items:d,containerId:f,activeIndex:m,disabled:v,disableTransforms:g,sortedRects:y,overIndex:C,useDragOverlay:w,strategy:h}=p.useContext(Ep),_=kx(n,v),x=d.indexOf(i),k=p.useMemo(()=>({sortable:{containerId:f,index:x,items:d},...o}),[f,o,x,d]),S=p.useMemo(()=>d.slice(d.indexOf(i)),[d,i]),{rect:N,node:b,isOver:j,setNodeRef:E}=sx({id:i,data:k,disabled:_.droppable,resizeObserverConfig:{updateMeasurementsFor:S,...u}}),{active:L,activatorEvent:B,activeNodeRect:U,attributes:G,setNodeRef:Re,listeners:Xe,isDragging:fe,over:T,setActivatorNodeRef:O,transform:F}=nx({id:i,data:k,attributes:{...vx,...r},disabled:_.draggable}),Y=My(E,Re),z=!!L,ue=z&&!g&&hl(m)&&hl(C),ge=!w&&fe,st=ge&&ue?F:null,at=ue?st??(a??h)({rects:y,activeNodeRect:U,activeIndex:m,overIndex:C,index:x}):null,gt=hl(m)&&hl(C)?l({id:i,items:d,activeIndex:m,overIndex:C}):x,yt=L==null?void 0:L.id,q=p.useRef({activeId:yt,items:d,newIndex:gt,containerId:f}),A=d!==q.current.items,Ce=t({active:L,containerId:f,isDragging:fe,isSorting:z,id:i,index:x,items:d,newIndex:q.current.newIndex,previousItems:q.current.items,previousContainerId:q.current.containerId,transition:c,wasDragging:q.current.activeId!=null}),ee=gx({disabled:!Ce,index:x,node:b,rect:N});return p.useEffect(()=>{z&&q.current.newIndex!==gt&&(q.current.newIndex=gt),f!==q.current.containerId&&(q.current.containerId=f),d!==q.current.items&&(q.current.items=d)},[z,gt,f,d]),p.useEffect(()=>{if(yt===q.current.activeId)return;if(yt!=null&&q.current.activeId==null){q.current.activeId=yt;return}const ye=setTimeout(()=>{q.current.activeId=yt},50);return()=>clearTimeout(ye)},[yt]),{active:L,activeIndex:m,attributes:G,data:k,rect:N,index:x,newIndex:gt,items:d,isOver:j,isSorting:z,isDragging:fe,listeners:Xe,node:b,overIndex:C,over:T,setNodeRef:Y,setActivatorNodeRef:O,setDroppableNodeRef:E,setDraggableNodeRef:Re,transform:ee??at,transition:Ne()};function Ne(){if(ee||A&&q.current.newIndex===x)return wx;if(!(ge&&!wu(B)||!c)&&(z||Ce))return To.Transition.toString({...c,property:Ip})}}function kx(e,t){var r,n;return typeof e=="boolean"?{draggable:e,droppable:!1}:{draggable:(r=e==null?void 0:e.draggable)!=null?r:t.draggable,droppable:(n=e==null?void 0:e.droppable)!=null?n:t.droppable}}X.Down,X.Right,X.Up,X.Left;const xx=e=>{let{transform:t}=e;return{...t,x:0}};function Rp(){return s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"icon icon-tabler icons-tabler-outline icon-tabler-edit",children:[s.jsx("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),s.jsx("path",{d:"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1"}),s.jsx("path",{d:"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415"}),s.jsx("path",{d:"M16 5l3 3"})]})}function Tp(){return s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"icon icon-tabler icons-tabler-outline icon-tabler-player-play",children:[s.jsx("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),s.jsx("path",{d:"M7 4v16l13 -8l-13 -8"})]})}function Pp(){return s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"icon icon-tabler icons-tabler-outline icon-tabler-dots-vertical",children:[s.jsx("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),s.jsx("path",{d:"M11 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"}),s.jsx("path",{d:"M11 19a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"}),s.jsx("path",{d:"M11 5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"})]})}function Dp(){return s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"icon icon-tabler icons-tabler-outline icon-tabler-upload",children:[s.jsx("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),s.jsx("path",{d:"M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2"}),s.jsx("path",{d:"M7 9l5 -5l5 5"}),s.jsx("path",{d:"M12 4l0 12"})]})}function Lp(){return s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"icon icon-tabler icons-tabler-outline icon-tabler-package-check",children:[s.jsx("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),s.jsx("path",{d:"M12 3l8 4.5v9l-8 4.5l-8 -4.5v-9l8 -4.5"}),s.jsx("path",{d:"M12 12l8 -4.5"}),s.jsx("path",{d:"M12 12v9"}),s.jsx("path",{d:"M12 12l-8 -4.5"}),s.jsx("path",{d:"M16 5.25l-8 4.5"}),s.jsx("path",{d:"M15 19l2 2l4 -4"})]})}function Mp(){return s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"icon icon-tabler icons-tabler-outline icon-tabler-trash",children:[s.jsx("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),s.jsx("path",{d:"M4 7l16 0"}),s.jsx("path",{d:"M10 11l0 6"}),s.jsx("path",{d:"M14 11l0 6"}),s.jsx("path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12"}),s.jsx("path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3"})]})}function Et(e){return`${e.server_id}:${e.id}`}function Sx({workflow:e,dragEnabled:t,managementMode:r,selectedWorkflowKeys:n,openMenuId:o,execStatus:l,setOpenMenuId:i,handleManagementRowClick:a,handleManagementRowKeyDown:u,toggleWorkflowSelection:c,props:d}){const{attributes:f,listeners:m,setNodeRef:v,transform:g,transition:y,isDragging:C}=yx({id:e.id}),w={transform:To.Transform.toString(g),transition:y};return s.jsxs("article",{ref:v,style:w,className:`workflow-item is-sortable ${C?"is-dragging":""} ${r?"is-management-mode":""} ${n.includes(Et(e))?"is-selected":""}`.trim(),"data-workflow-id":e.id,"data-server-id":e.server_id,children:[t?s.jsx("div",{className:"workflow-grip",...f,...m,style:{cursor:"grab"},children:s.jsxs("svg",{width:"6",height:"18",viewBox:"0 0 6 18",fill:"currentColor","aria-hidden":"true",children:[s.jsx("circle",{cx:"1.5",cy:"2",r:"1.2"}),s.jsx("circle",{cx:"4.5",cy:"2",r:"1.2"}),s.jsx("circle",{cx:"1.5",cy:"7",r:"1.2"}),s.jsx("circle",{cx:"4.5",cy:"7",r:"1.2"}),s.jsx("circle",{cx:"1.5",cy:"12",r:"1.2"}),s.jsx("circle",{cx:"4.5",cy:"12",r:"1.2"}),s.jsx("circle",{cx:"1.5",cy:"17",r:"1.2"}),s.jsx("circle",{cx:"4.5",cy:"17",r:"1.2"})]})}):null,s.jsxs("div",{className:"workflow-main-group",role:r?"button":void 0,tabIndex:r?0:void 0,"aria-pressed":r?n.includes(Et(e)):void 0,onClick:h=>a(e,h),onKeyDown:h=>u(e,h),children:[r?s.jsxs("label",{className:"workflow-select workflow-select-leading",onClick:h=>h.stopPropagation(),children:[s.jsx("input",{type:"checkbox",className:"workflow-select-toggle",checked:n.includes(Et(e)),"aria-label":d.t("workflow_select_workflow",{id:e.id}),onChange:h=>c(e,h.target.checked)}),s.jsx("span",{className:"sr-only",children:d.t("workflow_select_workflow",{id:e.id})})]}):null,s.jsxs("div",{className:"workflow-main",children:[s.jsxs("div",{className:"workflow-name-row",children:[s.jsx("span",{className:`status-dot ${e.enabled?"":"is-disabled"}`,"aria-hidden":"true",children:"●"}),s.jsx("span",{className:"workflow-name",title:e.id,children:e.id}),s.jsx("span",{className:"workflow-server-tag",children:e.server_name||e.server_id}),l?l.status==="running"?s.jsx("span",{className:"workflow-exec-status is-running",children:d.t("workflow_status_running")}):s.jsx("button",{type:"button",className:`workflow-exec-status is-${l.status}`,title:d.t("workflow_status_view_history"),onClick:h=>{h.stopPropagation(),d.onViewHistory(e)},children:l.status==="success"?d.t("workflow_status_success"):d.t("workflow_status_error")}):null]}),e.description?s.jsx("p",{className:"workflow-desc",title:e.description,children:e.description}):null]})]}),s.jsxs("div",{className:"workflow-actions",children:[s.jsx("div",{className:"workflow-status-toggle",children:s.jsx(Wo,{ariaLabel:d.t("toggle_workflow",{id:e.id}),checked:e.enabled,className:"workflow-toggle-field",label:s.jsx("span",{className:`workflow-enabled-label ${e.enabled?"status-on":"status-off"}`,children:e.enabled?d.t("wf_enabled"):d.t("wf_disabled")}),onChange:h=>{i(null),d.onToggleWorkflow(e,h.target.checked)}})}),s.jsxs("div",{className:"workflow-secondary-actions",children:[s.jsx("button",{type:"button",className:"btn btn-secondary btn-icon workflow-action-btn workflow-action-edit","aria-label":d.t("edit_workflow",{id:e.id}),onClick:()=>{i(null),d.onEditWorkflow(e)},children:s.jsx(Rp,{})}),s.jsxs("div",{className:`workflow-more ${o===e.id?"is-open":""}`,children:[s.jsx("button",{type:"button",className:"btn btn-secondary btn-icon workflow-action-btn workflow-more-trigger","aria-haspopup":"menu","aria-expanded":o===e.id,"aria-label":d.t("workflow_more_actions",{id:e.id}),onClick:h=>{h.stopPropagation(),i(_=>_===e.id?null:e.id)},children:s.jsx(Pp,{})}),s.jsxs("div",{className:`workflow-more-menu ${o===e.id?"":"hidden"}`,role:"menu",children:[s.jsxs("button",{type:"button",className:"workflow-more-item",role:"menuitem",onClick:()=>{i(null),d.onRunWorkflow(e)},children:[s.jsx(Tp,{}),s.jsx("span",{children:d.t("run_workflow_short")})]}),s.jsxs("button",{type:"button",className:"workflow-more-item",role:"menuitem",onClick:()=>{var h;i(null),(h=d.onCheckDependencies)==null||h.call(d,e)},children:[s.jsx(Lp,{}),s.jsx("span",{children:d.t("dep_check_btn")})]}),s.jsxs("button",{type:"button",className:"workflow-more-item",role:"menuitem",onClick:()=>{i(null),d.onUploadWorkflowVersion(e)},children:[s.jsx(Dp,{}),s.jsx("span",{children:d.t("upload_new_version")})]}),s.jsxs("button",{type:"button",className:"workflow-more-item workflow-more-item-danger",role:"menuitem",onClick:()=>{i(null),d.onDeleteWorkflow(e)},children:[s.jsx(Mp,{}),s.jsx("span",{children:d.t("delete")})]})]})]})]})]})]},`${e.server_id}-${e.id}`)}function bx({workflow:e,managementMode:t,selectedWorkflowKeys:r,openMenuId:n,execStatus:o,setOpenMenuId:l,handleManagementRowClick:i,handleManagementRowKeyDown:a,toggleWorkflowSelection:u,props:c}){return s.jsxs("article",{className:`workflow-item ${t?"is-management-mode":""} ${r.includes(Et(e))?"is-selected":""}`.trim(),"data-workflow-id":e.id,"data-server-id":e.server_id,children:[s.jsxs("div",{className:"workflow-main-group",role:t?"button":void 0,tabIndex:t?0:void 0,"aria-pressed":t?r.includes(Et(e)):void 0,onClick:d=>i(e,d),onKeyDown:d=>a(e,d),children:[t?s.jsxs("label",{className:"workflow-select workflow-select-leading",onClick:d=>d.stopPropagation(),children:[s.jsx("input",{type:"checkbox",className:"workflow-select-toggle",checked:r.includes(Et(e)),"aria-label":c.t("workflow_select_workflow",{id:e.id}),onChange:d=>u(e,d.target.checked)}),s.jsx("span",{className:"sr-only",children:c.t("workflow_select_workflow",{id:e.id})})]}):null,s.jsxs("div",{className:"workflow-main",children:[s.jsxs("div",{className:"workflow-name-row",children:[s.jsx("span",{className:`status-dot ${e.enabled?"":"is-disabled"}`,"aria-hidden":"true",children:"●"}),s.jsx("span",{className:"workflow-name",title:e.id,children:e.id}),s.jsx("span",{className:"workflow-server-tag",children:e.server_name||e.server_id}),o?o.status==="running"?s.jsx("span",{className:"workflow-exec-status is-running",children:c.t("workflow_status_running")}):s.jsx("button",{type:"button",className:`workflow-exec-status is-${o.status}`,title:c.t("workflow_status_view_history"),onClick:d=>{d.stopPropagation(),c.onViewHistory(e)},children:o.status==="success"?c.t("workflow_status_success"):c.t("workflow_status_error")}):null]}),e.description?s.jsx("p",{className:"workflow-desc",title:e.description,children:e.description}):null]})]}),s.jsxs("div",{className:"workflow-actions",children:[s.jsx("div",{className:"workflow-status-toggle",children:s.jsx(Wo,{ariaLabel:c.t("toggle_workflow",{id:e.id}),checked:e.enabled,className:"workflow-toggle-field",label:s.jsx("span",{className:`workflow-enabled-label ${e.enabled?"status-on":"status-off"}`,children:e.enabled?c.t("wf_enabled"):c.t("wf_disabled")}),onChange:d=>{l(null),c.onToggleWorkflow(e,d.target.checked)}})}),s.jsxs("div",{className:"workflow-secondary-actions",children:[s.jsx("button",{type:"button",className:"btn btn-secondary btn-icon workflow-action-btn workflow-action-edit","aria-label":c.t("edit_workflow",{id:e.id}),onClick:()=>{l(null),c.onEditWorkflow(e)},children:s.jsx(Rp,{})}),s.jsxs("div",{className:`workflow-more ${n===e.id?"is-open":""}`,children:[s.jsx("button",{type:"button",className:"btn btn-secondary btn-icon workflow-action-btn workflow-more-trigger","aria-haspopup":"menu","aria-expanded":n===e.id,"aria-label":c.t("workflow_more_actions",{id:e.id}),onClick:d=>{d.stopPropagation(),l(f=>f===e.id?null:e.id)},children:s.jsx(Pp,{})}),s.jsxs("div",{className:`workflow-more-menu ${n===e.id?"":"hidden"}`,role:"menu",children:[s.jsxs("button",{type:"button",className:"workflow-more-item",role:"menuitem",onClick:()=>{l(null),c.onRunWorkflow(e)},children:[s.jsx(Tp,{}),s.jsx("span",{children:c.t("run_workflow_short")})]}),s.jsxs("button",{type:"button",className:"workflow-more-item",role:"menuitem",onClick:()=>{var d;l(null),(d=c.onCheckDependencies)==null||d.call(c,e)},children:[s.jsx(Lp,{}),s.jsx("span",{children:c.t("dep_check_btn")})]}),s.jsxs("button",{type:"button",className:"workflow-more-item",role:"menuitem",onClick:()=>{l(null),c.onUploadWorkflowVersion(e)},children:[s.jsx(Dp,{}),s.jsx("span",{children:c.t("upload_new_version")})]}),s.jsxs("button",{type:"button",className:"workflow-more-item workflow-more-item-danger",role:"menuitem",onClick:()=>{l(null),c.onDeleteWorkflow(e)},children:[s.jsx(Mp,{}),s.jsx("span",{children:c.t("delete")})]})]})]})]})]})]},`${e.server_id}-${e.id}`)}function Cx(e){const[t,r]=p.useState(null),[n,o]=p.useState(!1),[l,i]=p.useState(!1),[a,u]=p.useState([]),c=e.sort==="custom"&&!e.search.trim()&&!l,d=Yy(Jy(ku,{activationConstraint:{distance:5}}));function f(b){var j;e.onCreateWorkflowFromFile(((j=b.target.files)==null?void 0:j[0])||null),b.target.value=""}p.useEffect(()=>{function b(E){const L=E.target;L!=null&&L.closest(".workflow-more")||r(null)}function j(E){E.key==="Escape"&&r(null)}return document.addEventListener("click",b),document.addEventListener("keydown",j),()=>{document.removeEventListener("click",b),document.removeEventListener("keydown",j)}},[]),p.useEffect(()=>{const b=new Set(e.workflows.map(Et));u(j=>j.filter(E=>b.has(E)))},[e.workflows]),p.useEffect(()=>{e.workflows.length===0&&l&&(i(!1),u([]))},[l,e.workflows.length]);const m=e.allWorkflowsForCurrentServer===e.workflows.length?e.t(e.workflows.length===1?"workflow_count_one":"workflow_count",{count:e.workflows.length}):e.t(e.allWorkflowsForCurrentServer===1?"workflow_count_filtered_one":"workflow_count_filtered",{visible:e.workflows.length,total:e.allWorkflowsForCurrentServer}),v=p.useMemo(()=>[{value:"updated_desc",label:e.t("workflow_sort_recent")},{value:"name_asc",label:e.t("workflow_sort_name")},{value:"custom",label:e.t("workflow_sort_custom")}],[e.t]),g=p.useMemo(()=>e.workflows.filter(b=>a.includes(Et(b))),[e.workflows,a]);function y(b,j){const E=Et(b);u(L=>j?L.includes(E)?L:[...L,E]:L.filter(B=>B!==E))}function C(b){const j=Et(b);u(E=>E.includes(j)?E.filter(L=>L!==j):[...E,j])}function w(b,j){const E=j.target;!l||E!=null&&E.closest(".workflow-select")||C(b)}function h(b,j){!l||j.key!=="Enter"&&j.key!==" "||(j.preventDefault(),C(b))}function _(){r(null),i(!0)}function x(){i(!1),u([])}function k(b){const{active:j,over:E}=b;if(!E||j.id===E.id)return;const L=e.workflows.findIndex(G=>G.id===j.id),B=e.workflows.findIndex(G=>G.id===E.id);if(L===-1||B===-1)return;const U=Le.workflows.map(b=>b.id),[e.workflows]);function N(){if(e.workflows.length===0)return e.allWorkflowsForCurrentServer?s.jsx("div",{className:"empty-state",children:e.t("no_workflows_match")}):s.jsxs("label",{className:`upload-zone workflow-empty-upload${n?" is-dragging":""}`,htmlFor:"workflow-empty-upload",tabIndex:0,onDragEnter:j=>{j.preventDefault(),o(!0)},onDragOver:j=>{j.preventDefault(),o(!0)},onDragLeave:j=>{j.preventDefault(),o(!1)},onDrop:j=>{var E;j.preventDefault(),o(!1),e.onCreateWorkflowFromFile(((E=j.dataTransfer.files)==null?void 0:E[0])||null)},onKeyDown:j=>{if(j.key==="Enter"||j.key===" "){j.preventDefault();const E=document.getElementById("workflow-empty-upload");E instanceof HTMLInputElement&&E.click()}},children:[s.jsx("input",{id:"workflow-empty-upload",type:"file",accept:".json",onChange:f}),s.jsx("span",{className:"upload-title",children:e.t("drag_upload")}),s.jsx("span",{className:"upload-subtitle",children:e.t("after_upload")})]});const b=j=>({workflow:j,managementMode:l,selectedWorkflowKeys:a,openMenuId:t,execStatus:e.executingWorkflows[`${j.server_id}:${j.id}`],setOpenMenuId:r,handleManagementRowClick:w,handleManagementRowKeyDown:h,toggleWorkflowSelection:y,props:e});return c?s.jsx(ex,{sensors:d,collisionDetection:tk,modifiers:[xx],onDragEnd:k,children:s.jsx(mx,{items:S,strategy:dx,children:e.workflows.map(j=>s.jsx(Sx,{dragEnabled:c,...b(j)},`${j.server_id}-${j.id}`))})}):e.workflows.map(j=>s.jsx(bx,{...b(j)},`${j.server_id}-${j.id}`))}return s.jsxs(ap,{title:e.t("workflow_manager"),titleId:"workflow-manager-title",actions:s.jsx("button",{type:"button",className:"btn btn-secondary panel-action-btn",onClick:e.onCreateWorkflow,children:e.t("register_new_short")}),children:[s.jsxs("div",{className:"workflow-toolbar",children:[s.jsx(tt,{id:"workflow-search",fieldClassName:"workflow-search-field",value:e.search,onChange:b=>e.onSearchChange(b.target.value),placeholder:e.t("workflow_search_placeholder")}),s.jsxs("div",{className:"workflow-toolbar-side",children:[e.allWorkflowsForCurrentServer?s.jsx("p",{className:"section-meta panel-meta workflow-summary-chip",children:m}):null,s.jsx(qr,{value:e.sort,options:v,ariaLabel:e.t("workflow_sort_custom"),className:"is-server-select",onChange:e.onSortChange}),e.workflows.length>0?s.jsx("button",{type:"button",className:`btn btn-secondary workflow-batch-toggle-btn ${l?"is-active":""}`.trim(),"aria-pressed":l,onClick:()=>l?x():_(),children:l?e.t("workflow_management_active"):e.t("workflow_enter_batch_mode")}):null]})]}),l?s.jsxs("div",{className:"workflow-management-bar",role:"group","aria-label":e.t("workflow_batch_actions"),children:[s.jsx("div",{className:"workflow-management-status",children:s.jsx("p",{className:"section-meta panel-meta workflow-summary-chip workflow-batch-selection-chip",children:e.t("workflow_selected_count",{count:g.length})})}),s.jsxs("div",{className:"workflow-management-actions",children:[s.jsx("button",{type:"button",className:"btn btn-secondary workflow-batch-inline-btn",onClick:()=>u(e.workflows.map(Et)),children:e.t("workflow_select_all")}),s.jsx("button",{type:"button",className:"btn btn-secondary workflow-batch-inline-btn",onClick:()=>u([]),disabled:g.length===0,children:e.t("workflow_clear_selection")}),s.jsx("button",{type:"button",className:"btn btn-danger-soft workflow-batch-inline-btn",onClick:()=>{r(null),e.onBatchDeleteWorkflows(g)},disabled:g.length===0,children:e.t("workflow_delete_selected")}),s.jsx("button",{type:"button",className:"btn btn-secondary workflow-batch-inline-btn",onClick:x,children:e.t("workflow_exit_batch_mode")})]})]}):null,s.jsx("div",{className:"workflow-list","aria-live":"polite",children:N()})]})}function Nx(e){var t;return s.jsxs(s.Fragment,{children:[s.jsx(Ly,{servers:e.servers,currentServerId:((t=e.currentServer)==null?void 0:t.id)||null,onSelectServer:e.onSelectServer,onToggleServer:e.onToggleServer,onDeleteServer:e.onDeleteServer,onOpenCreate:e.onOpenCreateServer,onOpenEdit:e.onOpenEditServer,modalOpen:e.serverModalOpen,modalMode:e.serverModalMode,form:e.serverForm,onFormChange:e.onServerFormChange,onCloseModal:e.onCloseServerModal,onSubmitModal:e.onSubmitServerModal,t:e.t}),s.jsx(Cx,{workflows:e.visibleWorkflows,allWorkflowsForCurrentServer:e.currentServerWorkflowsCount,search:e.workflowSearch,sort:e.workflowSort,onSearchChange:e.onWorkflowSearchChange,onSortChange:e.onWorkflowSortChange,onCreateWorkflow:e.onCreateWorkflow,onCreateWorkflowFromFile:e.onCreateWorkflowFromFile,onEditWorkflow:e.onEditWorkflow,onRunWorkflow:e.onRunWorkflow,onCheckDependencies:e.onCheckDependencies,onBatchDeleteWorkflows:e.onBatchDeleteWorkflows,onDeleteWorkflow:e.onDeleteWorkflow,onToggleWorkflow:e.onToggleWorkflow,onUploadWorkflowVersion:e.onUploadWorkflowVersion,onReorderWorkflows:e.onReorderWorkflows,executingWorkflows:e.executingWorkflows,onViewHistory:e.onViewHistory,t:e.t})]})}function jx(e){return`/editor/${encodeURIComponent(e.server_id)}/${encodeURIComponent(e.id)}`}function Ex({controller:e}){const t=mu();async function r(){e.createWorkflow()&&t("/editor/new")}async function n(l){await e.createWorkflowFromFile(l)&&t("/editor/new")}async function o(l){e.setCurrentServerId(l.server_id),await e.handleEditWorkflow(l)&&t(jx(l))}return s.jsx(sp,{header:s.jsx(ip,{className:"dashboard-header",leading:s.jsx("div",{className:"logo-frame","aria-hidden":"true",children:s.jsx("img",{className:"logo-image",src:"/static/logo.png",alt:"ComfyUI OpenClaw logo"})}),title:e.t("title"),subtitle:e.t("subtitle"),actions:s.jsxs(s.Fragment,{children:[s.jsx("button",{type:"button",className:"btn btn-secondary panel-action-btn",onClick:e.handleOpenTransferExport,children:e.t("export_bundle")}),s.jsx("button",{type:"button",className:"btn btn-secondary panel-action-btn",onClick:e.handleOpenTransferImport,children:e.t("import_bundle")})]}),trailing:s.jsx(Ny,{value:e.language,onChange:e.setLanguage})}),children:s.jsx(Nx,{servers:e.servers,currentServer:e.currentServer,visibleWorkflows:e.visibleWorkflows,currentServerWorkflowsCount:e.currentServerWorkflows.length,serverModalOpen:e.serverModalOpen,serverModalMode:e.serverModalMode,serverForm:e.serverForm,workflowSearch:e.workflowSearch,workflowSort:e.workflowSort,onSelectServer:e.setCurrentServerId,onToggleServer:e.handleToggleServer,onDeleteServer:e.requestDeleteServer,onOpenCreateServer:e.handleAddServer,onOpenEditServer:e.handleEditServer,onServerFormChange:e.setServerForm,onCloseServerModal:()=>e.setServerModalOpen(!1),onSubmitServerModal:e.handleSubmitServerModal,onWorkflowSearchChange:e.setWorkflowSearch,onWorkflowSortChange:e.setWorkflowSort,onCreateWorkflow:r,onCreateWorkflowFromFile:n,onEditWorkflow:o,onRunWorkflow:e.handleOpenRunWorkflow,onCheckDependencies:l=>void e.handleCheckSavedWorkflow(l.server_id,l.id),onBatchDeleteWorkflows:e.handleBatchDeleteWorkflows,onDeleteWorkflow:e.handleDeleteWorkflow,onToggleWorkflow:e.handleToggleWorkflow,onUploadWorkflowVersion:e.handleUploadWorkflowVersion,onReorderWorkflows:e.handleReorderWorkflows,executingWorkflows:e.executingWorkflows,onViewHistory:e.handleOpenWorkflowHistory,t:e.t})})}function Ix(e){return[{value:"string",label:e("type_str")},{value:"int",label:e("type_int")},{value:"float",label:e("type_float")},{value:"boolean",label:e("type_bool")}]}function Rx(e){return s.jsxs("article",{className:`node-card${e.collapsed?" is-collapsed":""}`,children:[s.jsxs("div",{className:"node-header",children:[s.jsxs("div",{className:"node-title",children:[s.jsx("span",{className:"status-dot","aria-hidden":"true",children:"●"}),s.jsx("span",{children:e.classType})]}),s.jsxs("div",{className:"node-header-right",children:[s.jsxs("span",{className:"status-badge",children:[e.t("node_id"),": ",e.nodeId]}),s.jsx("button",{type:"button",className:"btn btn-secondary btn-icon small node-collapse-btn","aria-label":e.t("toggle_node",{id:e.nodeId}),onClick:()=>e.onToggleNode(e.nodeId),children:e.collapsed?"▸":"▾"})]})]}),e.collapsed?null:s.jsx("div",{className:"node-body",children:e.params.map(t=>{const r=t.exposed&&e.expandedParamKeys.has(t.key);return s.jsxs("div",{className:`param-row${t.exposed?" active":""}`,children:[s.jsxs("div",{className:"param-main",children:[s.jsx(Wo,{ariaLabel:t.field,checked:t.exposed,className:"param-expose-switch",onChange:n=>e.onUpdateParam(t.key,"exposed",n.target.checked)}),s.jsxs("div",{className:"param-main-copy",children:[s.jsxs("div",{className:`param-title${t.exposed?" active":""}`,children:[s.jsx("span",{children:t.field}),t.migrationStatus?s.jsx("span",{className:`param-status-badge is-${t.migrationStatus}`,children:e.t(`migration_status_${t.migrationStatus}`)}):null]}),s.jsxs("div",{className:"param-meta",children:[e.t("curr_val"),": ",String(t.currentVal??"")]}),t.migrationStatus==="review"?s.jsx("div",{className:"param-meta param-meta-emphasis",children:e.t("migration_review_hint")}):null]}),t.exposed?s.jsx("button",{type:"button",className:"btn btn-secondary btn-icon small param-config-toggle","aria-label":e.t("toggle_param_config",{field:t.field}),onClick:()=>e.onToggleParamConfig(t.key),children:r?"▾":"▸"}):null]}),t.exposed&&r?s.jsxs("div",{className:"param-config is-expanded",children:[s.jsx(pt,{label:e.t("alias"),htmlFor:`mapping-name-${t.key}`,className:"param-config-field",noMargin:!0,children:s.jsx(tt,{id:`mapping-name-${t.key}`,fieldClassName:"param-config-input",value:t.name,onChange:n=>e.onUpdateParam(t.key,"name",n.target.value)})}),s.jsx(pt,{label:e.t("ai_desc"),htmlFor:`mapping-description-${t.key}`,className:"param-config-field",noMargin:!0,children:s.jsx(tt,{id:`mapping-description-${t.key}`,fieldClassName:"param-config-input",value:t.description,onChange:n=>e.onUpdateParam(t.key,"description",n.target.value)})}),s.jsx(pt,{label:e.t("type"),className:"param-config-field param-config-field-stack",noMargin:!0,children:s.jsxs("div",{className:"param-config-stack",children:[s.jsx(qr,{value:t.type,options:Ix(e.t),onChange:n=>e.onUpdateParam(t.key,"type",n),ariaLabel:e.t("type"),className:"is-mapping-sort-select"}),s.jsx(jr,{id:`mapping-required-${t.key}`,checked:t.required,className:"param-config-checkbox",onChange:n=>e.onUpdateParam(t.key,"required",n.target.checked),label:e.t("required")})]})})]}):null]},t.key)})})]})}function Tx(e){return s.jsxs("section",{id:"mapping-section",className:`card${e.hasWorkflow?"":" hidden"}`,"aria-labelledby":"mapping-title",children:[s.jsxs("div",{className:"editor-section-heading",children:[s.jsx("h2",{id:"mapping-title",className:"card-title",children:e.t("editor_step_3")}),s.jsx("p",{className:"subtitle editor-section-hint",children:e.t("editor_step_3_hint")})]}),e.upgradeSummary?s.jsxs("div",{className:"upgrade-summary-banner",children:[s.jsx("div",{className:"upgrade-summary-title",children:e.t("workflow_upgrade_ready")}),s.jsx("div",{className:"upgrade-summary-meta",children:e.t("workflow_upgrade_summary",{retained:e.upgradeSummary.retained,review:e.upgradeSummary.review,added:e.upgradeSummary.added,removed:e.upgradeSummary.removed})})]}):null,s.jsxs("div",{className:"mapping-toolbar",children:[s.jsxs("div",{className:"mapping-toolbar-top",children:[s.jsx(tt,{ref:e.searchInputRef,id:"mapping-search",fieldClassName:"mapping-search-field",value:e.filters.query,onChange:t=>e.onFilterChange({query:t.target.value}),placeholder:e.t("mapping_search_placeholder")}),s.jsx(qr,{value:e.filters.nodeSort,options:[{value:"node_id_asc",label:e.t("mapping_sort_node_id_asc")},{value:"node_id_desc",label:e.t("mapping_sort_node_id_desc")},{value:"class_asc",label:e.t("mapping_sort_class_asc")}],onChange:t=>e.onFilterChange({nodeSort:t}),ariaLabel:e.t("mapping_sort_node_id_asc"),className:"is-mapping-sort-select"}),s.jsx(qr,{value:e.filters.paramSort,options:[{value:"default",label:e.t("mapping_sort_param_default")},{value:"field_asc",label:e.t("mapping_sort_param_name")},{value:"type_asc",label:e.t("mapping_sort_param_type")},{value:"exposed_first",label:e.t("mapping_sort_param_exposed")}],onChange:t=>e.onFilterChange({paramSort:t}),ariaLabel:e.t("mapping_sort_param_default"),className:"is-mapping-sort-select"})]}),s.jsxs("div",{className:"mapping-toolbar-bottom",children:[s.jsx(jr,{id:"mapping-exposed-only",className:"mapping-exposed-only-label",checked:e.filters.exposedOnly,onChange:t=>e.onFilterChange({exposedOnly:t.target.checked}),label:e.t("mapping_exposed_only")}),s.jsx(jr,{id:"mapping-required-only",className:"mapping-exposed-only-label",checked:e.filters.requiredOnly,onChange:t=>e.onFilterChange({requiredOnly:t.target.checked}),label:e.t("mapping_required_only")}),s.jsxs("div",{className:"mapping-toolbar-actions",children:[s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:e.onApplyRecommended,children:e.t("mapping_apply_recommended")}),s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:()=>e.onExposeVisible(!0),children:e.t("mapping_expose_visible")}),s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:()=>e.onExposeVisible(!1),children:e.t("mapping_unexpose_visible")}),s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:()=>e.onCollapseAll(!0),children:e.t("mapping_collapse_all")}),s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:()=>e.onCollapseAll(!1),children:e.t("mapping_expand_all")}),s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:e.onResetFilters,children:e.t("mapping_reset_filters")})]})]})]}),s.jsx("p",{id:"mapping-summary",className:"section-meta",children:e.summaryText}),s.jsx("div",{id:"nodes-container",className:"nodes-container","aria-live":"polite",children:e.groupedNodes.length===0?s.jsx("div",{className:"empty-state",children:e.t(e.emptyStateMessageKey)}):e.groupedNodes.map(([t,r])=>s.jsx(Rx,{nodeId:t,classType:r.classType,params:r.params,collapsed:e.collapsedNodeIds.has(t),expandedParamKeys:e.expandedParamKeys,onToggleNode:e.onToggleNode,onToggleParamConfig:e.onToggleParamConfig,onUpdateParam:e.onUpdateParam,t:e.t},t))}),s.jsxs("div",{className:"mapping-savebar",children:[s.jsx("p",{className:"mapping-shortcut-hint",children:e.t("mapping_shortcuts_hint")}),s.jsx("button",{type:"button",className:"btn btn-wide btn-accent",onClick:e.onSave,children:e.mode==="edit"?e.t("save_workflow_edit"):e.t("save_workflow")})]})]})}function Px(e){const[t,r]=p.useState(!1);function n(l){var i;e.onUploadFile(((i=l.target.files)==null?void 0:i[0])||null),l.target.value=""}function o(){const l=document.getElementById("file-upload");l instanceof HTMLInputElement&&l.click()}return s.jsxs(s.Fragment,{children:[e.hasWorkflow?null:s.jsxs("section",{className:"card editor-upload-card","aria-labelledby":"editor-upload-title",children:[s.jsxs("div",{className:"editor-section-heading",children:[s.jsx("h2",{id:"editor-upload-title",className:"card-title",children:e.t("editor_step_1")}),s.jsx("p",{className:"subtitle editor-section-hint",children:e.t("editor_step_1_hint")})]}),s.jsxs("div",{id:"upload-zone",className:"editor-upload-selector",children:[s.jsx("input",{id:"file-upload",type:"file",accept:".json",onChange:n}),s.jsxs("div",{className:"editor-upload-selector-copy",children:[s.jsx("span",{className:"upload-title",children:e.t("drag_upload")}),s.jsx("span",{className:"upload-subtitle",children:e.t("after_upload")})]}),s.jsxs("div",{className:"editor-upload-grid","aria-label":e.t("editor_import_source_label"),children:[s.jsxs("article",{className:`editor-upload-option is-primary${t?" is-dragging":""}`,onDragEnter:l=>{l.preventDefault(),r(!0)},onDragOver:l=>{l.preventDefault(),r(!0)},onDragLeave:l=>{l.preventDefault(),r(!1)},onDrop:l=>{var i;l.preventDefault(),r(!1),e.onUploadFile(((i=l.dataTransfer.files)==null?void 0:i[0])||null)},children:[s.jsxs("div",{className:"editor-upload-option-copy",children:[s.jsx("h3",{className:"editor-upload-option-title",children:e.t("editor_import_source_single")}),s.jsx("p",{className:"editor-upload-option-text",children:e.t("editor_upload_option_single_help")})]}),s.jsx("button",{type:"button",className:"editor-upload-card-button is-primary",onClick:o,children:e.t("editor_import_action_single")})]}),s.jsxs("article",{className:"editor-upload-option",children:[s.jsxs("div",{className:"editor-upload-option-copy",children:[s.jsx("h3",{className:"editor-upload-option-title",children:e.t("editor_import_source_folder")}),s.jsx("p",{className:"editor-upload-option-text",children:e.t("editor_upload_option_folder_help")})]}),s.jsx("button",{type:"button",className:"editor-upload-card-button",onClick:e.onOpenFolderImport,disabled:e.bulkImportBusy,children:e.t("editor_import_action_folder")})]}),s.jsxs("article",{className:"editor-upload-option is-caution",children:[s.jsxs("div",{className:"editor-upload-option-copy",children:[s.jsx("h3",{className:"editor-upload-option-title",children:e.t("editor_import_source_comfyui")}),s.jsx("p",{className:"editor-upload-option-text",children:e.currentServerLabel?e.t("editor_upload_option_comfyui_help_with_server",{server:e.currentServerLabel}):e.t("editor_upload_option_comfyui_help")})]}),s.jsx("button",{type:"button",className:"editor-upload-card-button",onClick:e.onPreviewImportFromComfyUI,disabled:e.bulkImportBusy,children:e.bulkImportBusy?e.t(e.bulkImportStage==="preview"?"editor_import_action_comfyui_scanning":"bulk_import_loading"):e.t("editor_import_action_comfyui")})]})]})]}),s.jsxs("aside",{className:"upload-note","aria-live":"polite",children:[s.jsx("h3",{className:"upload-note-title",children:e.t("upload_reminder_title")}),s.jsxs("ul",{className:"upload-note-list",children:[s.jsx("li",{children:e.t("upload_reminder_api")}),s.jsx("li",{children:e.t("upload_reminder_how")})]})]})]}),e.hasWorkflow?s.jsxs("section",{className:"card","aria-labelledby":"editor-info-title",children:[s.jsxs("div",{className:"editor-section-heading",children:[s.jsx("h2",{id:"editor-info-title",className:"card-title",children:e.t("editor_step_2")}),s.jsx("p",{className:"subtitle editor-section-hint",children:e.t("editor_step_2_hint")})]}),s.jsxs("div",{className:"editor-info-grid",children:[s.jsx(pt,{label:e.t("wf_id_label"),htmlFor:"wf-id",className:"editor-info-field no-margin",noMargin:!0,children:s.jsx(tt,{id:"wf-id",fieldClassName:"editor-info-input",value:e.workflowId,onChange:l=>e.onWorkflowIdChange(l.target.value),placeholder:e.t("wf_id_placeholder"),autoComplete:"off",spellCheck:!1})}),s.jsx(pt,{label:e.t("wf_desc_label"),htmlFor:"wf-desc",className:"editor-info-field no-margin",noMargin:!0,children:s.jsx(tt,{id:"wf-desc",fieldClassName:"editor-info-input",value:e.description,onChange:l=>e.onDescriptionChange(l.target.value),placeholder:e.t("wf_desc_placeholder"),autoComplete:"off"})})]})]}):null]})}function Dx(e){const t=!!e.workflowId.trim(),r=e.hasWorkflow?t?3:2:1;return s.jsxs(s.Fragment,{children:[s.jsxs("ol",{className:"editor-stepper","aria-label":"Workflow setup steps",children:[s.jsxs("li",{className:`editor-step ${r===1?"is-active":r>1?"is-done":""}`,children:[s.jsx("span",{className:"editor-step-index",children:"1"}),s.jsx("span",{className:"editor-step-label",children:e.t("editor_step_1")})]}),s.jsxs("li",{className:`editor-step ${r===2?"is-active":r>2?"is-done":""}`,children:[s.jsx("span",{className:"editor-step-index",children:"2"}),s.jsx("span",{className:"editor-step-label",children:e.t("editor_step_2")})]}),s.jsxs("li",{className:`editor-step ${r===3?"is-active":""}`,children:[s.jsx("span",{className:"editor-step-index",children:"3"}),s.jsx("span",{className:"editor-step-label",children:e.t("editor_step_3")})]})]}),s.jsx(Px,{workflowId:e.workflowId,description:e.description,hasWorkflow:e.hasWorkflow,currentServerLabel:e.currentServerLabel,bulkImportBusy:e.bulkImportBusy,bulkImportStage:e.bulkImportStage,onWorkflowIdChange:e.onWorkflowIdChange,onDescriptionChange:e.onDescriptionChange,onUploadFile:e.onUploadFile,onOpenFolderImport:e.onOpenFolderImport,onPreviewImportFromComfyUI:e.onPreviewImportFromComfyUI,t:e.t}),s.jsx(Tx,{...e})]})}function jd({controller:e}){var v,g,y;const t=mu(),r=Bw(),[n,o]=p.useState(!1),l=!!(r.serverId&&r.workflowId),i=r.serverId?decodeURIComponent(r.serverId):null,a=r.workflowId?decodeURIComponent(r.workflowId):null,u=!!e.editorState.workflowId.trim(),c=e.editorState.workflowData?u?3:2:1;p.useEffect(()=>{if(!l||!i||!a){o(!1);return}let C=!1;if(e.editorState.editingWorkflowId===a&&e.editorState.workflowData){o(!1),e.setCurrentServerId(i);return}return o(!0),e.loadEditorWorkflowByRoute(i,a).then(w=>{C||(o(!1),w||t("/",{replace:!0}))}),()=>{C=!0}},[e.editorState.editingWorkflowId,e.editorState.workflowData,l,t,i,a]);async function d(){await e.handleBackFromEditor()&&t("/")}const f=e.editorState.editingWorkflowId?`${e.t("editor_mode_editing")}: ${e.editorState.editingWorkflowId||e.editorState.workflowId}`:e.t("editor_mode_create"),m=c===1?e.t("editor_step_1_hint"):c===2?e.t("editor_step_2_hint"):e.t("editor_step_3_hint");return s.jsx(sp,{header:s.jsx(ip,{leading:s.jsxs("button",{type:"button",className:"btn btn-secondary editor-back-btn",onClick:d,children:[s.jsx("span",{"aria-hidden":"true",children:"←"})," ",s.jsx("span",{children:e.t("back")})]}),title:f,subtitle:m}),children:n?s.jsx("section",{className:"card","aria-live":"polite",children:s.jsx("p",{className:"section-meta",children:e.t("loading")})}):s.jsx(Dx,{workflowId:e.editorState.workflowId,description:e.editorState.description,schemaParams:e.editorState.schemaParams,hasWorkflow:!!e.editorState.workflowData,currentServerLabel:((g=(v=e.currentServer)==null?void 0:v.name)==null?void 0:g.trim())||((y=e.currentServer)==null?void 0:y.id)||null,bulkImportBusy:e.bulkImportState.loading,bulkImportStage:e.bulkImportState.loadingStage,emptyStateMessageKey:e.editorEmptyStateMessageKey,mode:e.editorState.editingWorkflowId?"edit":"create",editingWorkflowId:e.editorState.editingWorkflowId,upgradeSummary:e.editorState.upgradeSummary,filters:e.editorFilters,collapsedNodeIds:e.collapsedNodeIds,expandedParamKeys:e.expandedParamKeys,groupedNodes:e.groupedNodes,summaryText:e.mappingSummaryText,searchInputRef:e.mappingSearchRef,onBack:d,onWorkflowIdChange:e.handleWorkflowIdChange,onDescriptionChange:C=>e.setEditorState(w=>({...w,description:C,hasUnsavedChanges:!0})),onUploadFile:e.handleEditorUpload,onOpenFolderImport:e.handleOpenLocalImportFolder,onPreviewImportFromComfyUI:()=>void e.handlePreviewImportFromComfyUI(),onSave:e.handleSaveWorkflow,onFilterChange:C=>e.setEditorFilters(w=>({...w,...C})),onResetFilters:()=>e.setEditorFilters({query:"",exposedOnly:!1,requiredOnly:!1,nodeSort:"node_id_asc",paramSort:"default"}),onToggleNode:C=>e.setCollapsedNodeIds(w=>{const h=new Set(w);return h.has(C)?h.delete(C):h.add(C),h}),onToggleParamConfig:C=>e.setExpandedParamKeys(w=>{const h=new Set(w);return h.has(C)?h.delete(C):h.add(C),h}),onUpdateParam:e.updateEditorParam,onApplyRecommended:e.applyRecommendedExposures,onExposeVisible:e.exposeVisible,onCollapseAll:C=>{C?e.setCollapsedNodeIds(new Set(e.groupedNodes.map(([w])=>w))):e.setCollapsedNodeIds(new Set)},t:e.t})})}function Lx({controller:e}){return s.jsxs(iv,{children:[s.jsx(Yn,{path:"/",element:s.jsx(Ex,{controller:e})}),s.jsx(Yn,{path:"/editor/new",element:s.jsx(jd,{controller:e})}),s.jsx(Yn,{path:"/editor/:serverId/:workflowId",element:s.jsx(jd,{controller:e})}),s.jsx(Yn,{path:"*",element:s.jsx(ov,{to:"/",replace:!0})})]})}function Ed(){var r,n,o,l,i,a,u,c,d;const e=ji(),t=Cy({isEditorRoute:e.pathname.startsWith("/editor")});return s.jsxs(s.Fragment,{children:[(((r=t.updateInfo)==null?void 0:r.has_update)||t.updateFeedback)&&s.jsx(bv,{localCommit:t.updateInfo.local_commit||"",remoteCommit:t.updateInfo.remote_commit||"",feedback:t.updateFeedback,onDismiss:t.dismissUpdate,t:t.t}),s.jsx(fv,{toasts:t.toasts,onDismiss:t.dismissToast}),s.jsx(Lx,{controller:t}),s.jsx(uv,{open:t.confirmState.open,title:t.confirmState.title,message:t.confirmState.message,confirmLabel:t.confirmState.confirmLabel,cancelLabel:t.confirmState.cancelLabel,tone:t.confirmState.tone,checkboxLabel:t.confirmState.checkboxLabel,checkboxChecked:t.confirmState.checkboxChecked,onCheckboxChange:f=>t.setConfirmState(m=>({...m,checkboxChecked:f})),onCancel:()=>t.resolveConfirm(!1),onConfirm:()=>t.resolveConfirm(!0)}),s.jsx(jv,{open:t.transferState.open,mode:t.transferState.mode,exportPreview:t.transferState.exportPreview,exportSelection:t.transferState.exportSelection,expandedServerIds:t.transferState.expandedServerIds,importPreviewSummary:t.importPreviewSummary,importSections:t.importSections,importWarnings:(((o=(n=t.transferState.importPreview)==null?void 0:n.plan)==null?void 0:o.warnings)||[]).map(f=>f.message),applyEnvironment:t.transferState.applyEnvironment,loading:t.transferState.loading,onClose:t.closeTransferModal,onConfirm:t.handleConfirmTransfer,onToggleServerSelection:f=>t.toggleTransferServerSelection(f.server_id,f.workflows.map(m=>m.workflow_id)),onToggleWorkflowSelection:t.toggleTransferWorkflowSelection,onToggleServerExpanded:t.toggleTransferServerExpanded,onApplyEnvironmentChange:f=>t.setTransferState(m=>({...m,applyEnvironment:f})),t:t.t}),s.jsx(Rv,{open:t.bulkImportState.open,report:t.bulkImportState.report,source:t.bulkImportState.source,onClose:t.closeBulkImportModal,t:t.t}),s.jsx(Tv,{open:t.depCheckState.open,report:t.depCheckState.report,loading:t.depCheckState.loading,installing:t.depCheckState.installing,installReport:t.depCheckState.installReport,onClose:t.closeDependencyCheckModal,onInstall:f=>{var v;const m=(v=t.currentServer)==null?void 0:v.id;m&&t.handleInstallDependencies(m,f)},t:t.t}),s.jsx(Ev,{open:t.bulkImportState.previewOpen,preview:t.bulkImportState.preview,currentServerLabel:((i=(l=t.currentServer)==null?void 0:l.name)==null?void 0:i.trim())||((a=t.currentServer)==null?void 0:a.id)||null,loading:t.bulkImportState.loading&&t.bulkImportState.loadingStage==="import",onClose:t.closeComfyUiImportPreview,onConfirm:()=>void t.handleImportAllFromComfyUI(),t:t.t}),s.jsx(Ov,{open:t.runModalState.open,workflowId:((u=t.runModalState.workflow)==null?void 0:u.id)||"",serverId:((c=t.runModalState.workflow)==null?void 0:c.server_id)||"",schema:t.runModalState.schema,values:t.runModalState.values,loading:t.runModalState.loading,submitting:t.runModalState.submitting,result:t.runModalState.result,onClose:t.closeRunWorkflowModal,onChange:t.updateRunWorkflowValue,onSubmit:t.handleRunWorkflow,onUploadImage:t.handleUploadImage,t:t.t}),s.jsx(qv,{open:t.historyState.open,workflowId:((d=t.historyState.workflow)==null?void 0:d.id)||"",loading:t.historyState.loading,detailLoading:t.historyState.detailLoading,history:t.historyState.items,selectedRunId:t.historyState.selectedRunId,detail:t.historyState.detail,onClose:t.closeWorkflowHistoryModal,onRefresh:t.refreshWorkflowHistory,onSelectRun:t.handleSelectWorkflowHistoryEntry,onDeleteRun:t.handleDeleteWorkflowHistoryEntry,onClear:t.handleClearWorkflowHistory,t:t.t}),s.jsx("input",{ref:t.versionUploadRef,type:"file",accept:".json",className:"sr-only",onChange:f=>{var m;t.handleVersionFileChange(((m=f.target.files)==null?void 0:m[0])||null),f.currentTarget.value=""}}),s.jsx("input",{id:"transfer-import-file",ref:t.transferImportRef,type:"file",accept:".json",className:"sr-only",onChange:f=>{var m;t.handleTransferImportFile(((m=f.target.files)==null?void 0:m[0])||null),f.currentTarget.value=""}}),s.jsx("input",{id:"bulk-import-files",ref:t.localImportFilesRef,type:"file",accept:".json,application/json",multiple:!0,className:"sr-only",onChange:f=>{t.handleLocalImportFilesChange(f.target.files),f.currentTarget.value=""}}),s.jsx("input",{id:"bulk-import-folder",ref:t.localImportFolderRef,type:"file",accept:".json,application/json",multiple:!0,className:"sr-only",webkitdirectory:"",directory:"",onChange:f=>{t.handleLocalImportFilesChange(f.target.files),f.currentTarget.value=""}})]})}function Mx(){return Tn()?s.jsx(Ed,{}):s.jsx(ep,{future:{v7_startTransition:!0,v7_relativeSplatPath:!0},children:s.jsx(Ed,{})})}Sv();hs.createRoot(document.getElementById("root")).render(s.jsx(De.StrictMode,{children:s.jsx(ep,{future:{v7_startTransition:!0,v7_relativeSplatPath:!0},children:s.jsx(Mx,{})})}));export{dg as h,ag as m,fa as p}; diff --git a/ui/static/assets/index-D_BSx2UW.js b/ui/static/assets/index-D_BSx2UW.js deleted file mode 100644 index 98d7be0..0000000 --- a/ui/static/assets/index-D_BSx2UW.js +++ /dev/null @@ -1,73 +0,0 @@ -var Wp=Object.defineProperty;var Up=(e,t,n)=>t in e?Wp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Yo=(e,t,n)=>Up(e,typeof t!="symbol"?t+"":t,n);function Ap(e,t){for(var n=0;nr[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const l of o)if(l.type==="childList")for(const i of l.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const l={};return o.integrity&&(l.integrity=o.integrity),o.referrerPolicy&&(l.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?l.credentials="include":o.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function r(o){if(o.ep)return;o.ep=!0;const l=n(o);fetch(o.href,l)}})();function zp(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Id={exports:{}},ui={},Rd={exports:{}},V={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Do=Symbol.for("react.element"),$p=Symbol.for("react.portal"),Bp=Symbol.for("react.fragment"),Vp=Symbol.for("react.strict_mode"),Hp=Symbol.for("react.profiler"),Kp=Symbol.for("react.provider"),qp=Symbol.for("react.context"),Qp=Symbol.for("react.forward_ref"),Jp=Symbol.for("react.suspense"),Yp=Symbol.for("react.memo"),Xp=Symbol.for("react.lazy"),Du=Symbol.iterator;function Gp(e){return e===null||typeof e!="object"?null:(e=Du&&e[Du]||e["@@iterator"],typeof e=="function"?e:null)}var Td={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Pd=Object.assign,Dd={};function Er(e,t,n){this.props=e,this.context=t,this.refs=Dd,this.updater=n||Td}Er.prototype.isReactComponent={};Er.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};Er.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Ld(){}Ld.prototype=Er.prototype;function wa(e,t,n){this.props=e,this.context=t,this.refs=Dd,this.updater=n||Td}var ga=wa.prototype=new Ld;ga.constructor=wa;Pd(ga,Er.prototype);ga.isPureReactComponent=!0;var Lu=Array.isArray,Md=Object.prototype.hasOwnProperty,ya={current:null},Od={key:!0,ref:!0,__self:!0,__source:!0};function Fd(e,t,n){var r,o={},l=null,i=null;if(t!=null)for(r in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(l=""+t.key),t)Md.call(t,r)&&!Od.hasOwnProperty(r)&&(o[r]=t[r]);var a=arguments.length-2;if(a===1)o.children=n;else if(1>>1,z=T[Y];if(0>>1;Yo(st,W))Uo(at,st)?(T[Y]=at,T[U]=W,Y=U):(T[Y]=st,T[ge]=W,Y=ge);else if(Uo(at,W))T[Y]=at,T[U]=W,Y=U;else break e}}return O}function o(T,O){var W=T.sortIndex-O.sortIndex;return W!==0?W:T.id-O.id}if(typeof performance=="object"&&typeof performance.now=="function"){var l=performance;e.unstable_now=function(){return l.now()}}else{var i=Date,a=i.now();e.unstable_now=function(){return i.now()-a}}var u=[],c=[],d=1,f=null,m=3,w=!1,g=!1,y=!1,b=typeof setTimeout=="function"?setTimeout:null,v=typeof clearTimeout=="function"?clearTimeout:null,_=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function h(T){for(var O=n(c);O!==null;){if(O.callback===null)r(c);else if(O.startTime<=T)r(c),O.sortIndex=O.expirationTime,t(u,O);else break;O=n(c)}}function x(T){if(y=!1,h(T),!g)if(n(u)!==null)g=!0,Xe(k);else{var O=n(c);O!==null&&fe(x,O.startTime-T)}}function k(T,O){g=!1,y&&(y=!1,v(C),C=-1),w=!0;var W=m;try{for(h(O),f=n(u);f!==null&&(!(f.expirationTime>O)||T&&!L());){var Y=f.callback;if(typeof Y=="function"){f.callback=null,m=f.priorityLevel;var z=Y(f.expirationTime<=O);O=e.unstable_now(),typeof z=="function"?f.callback=z:f===n(u)&&r(u),h(O)}else r(u);f=n(u)}if(f!==null)var ue=!0;else{var ge=n(c);ge!==null&&fe(x,ge.startTime-O),ue=!1}return ue}finally{f=null,m=W,w=!1}}var S=!1,N=null,C=-1,j=5,E=-1;function L(){return!(e.unstable_now()-ET||125Y?(T.sortIndex=W,t(c,T),n(u)===null&&T===n(c)&&(y?(v(C),C=-1):y=!0,fe(x,W-Y))):(T.sortIndex=z,t(u,T),g||w||(g=!0,Xe(k))),T},e.unstable_shouldYield=L,e.unstable_wrapCallback=function(T){var O=m;return function(){var W=m;m=O;try{return T.apply(this,arguments)}finally{m=W}}}})($d);zd.exports=$d;var ch=zd.exports;/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var dh=p,ot=ch;function I(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),vs=Object.prototype.hasOwnProperty,fh=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Ou={},Fu={};function mh(e){return vs.call(Fu,e)?!0:vs.call(Ou,e)?!1:fh.test(e)?Fu[e]=!0:(Ou[e]=!0,!1)}function ph(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function hh(e,t,n,r){if(t===null||typeof t>"u"||ph(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Be(e,t,n,r,o,l,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=l,this.removeEmptyString=i}var Ie={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Ie[e]=new Be(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Ie[t]=new Be(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Ie[e]=new Be(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Ie[e]=new Be(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Ie[e]=new Be(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Ie[e]=new Be(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Ie[e]=new Be(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Ie[e]=new Be(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Ie[e]=new Be(e,5,!1,e.toLowerCase(),null,!1,!1)});var xa=/[\-:]([a-z])/g;function Sa(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(xa,Sa);Ie[t]=new Be(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(xa,Sa);Ie[t]=new Be(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(xa,Sa);Ie[t]=new Be(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Ie[e]=new Be(e,1,!1,e.toLowerCase(),null,!1,!1)});Ie.xlinkHref=new Be("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Ie[e]=new Be(e,1,!1,e.toLowerCase(),null,!0,!0)});function Ca(e,t,n,r){var o=Ie.hasOwnProperty(t)?Ie[t]:null;(o!==null?o.type!==0:r||!(2a||o[i]!==l[a]){var u=` -`+o[i].replace(" at new "," at ");return e.displayName&&u.includes("")&&(u=u.replace("",e.displayName)),u}while(1<=i&&0<=a);break}}}finally{Wi=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Kr(e):""}function _h(e){switch(e.tag){case 5:return Kr(e.type);case 16:return Kr("Lazy");case 13:return Kr("Suspense");case 19:return Kr("SuspenseList");case 0:case 2:case 15:return e=Ui(e.type,!1),e;case 11:return e=Ui(e.type.render,!1),e;case 1:return e=Ui(e.type,!0),e;default:return""}}function ks(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case rr:return"Fragment";case nr:return"Portal";case ws:return"Profiler";case ba:return"StrictMode";case gs:return"Suspense";case ys:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Hd:return(e.displayName||"Context")+".Consumer";case Vd:return(e._context.displayName||"Context")+".Provider";case Na:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case ja:return t=e.displayName||null,t!==null?t:ks(e.type)||"Memo";case an:t=e._payload,e=e._init;try{return ks(e(t))}catch{}}return null}function vh(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ks(t);case 8:return t===ba?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Nn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function qd(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function wh(e){var t=qd(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var o=n.get,l=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(i){r=""+i,l.call(this,i)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(i){r=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Zo(e){e._valueTracker||(e._valueTracker=wh(e))}function Qd(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=qd(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Dl(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function xs(e,t){var n=t.checked;return ae({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Uu(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Nn(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Jd(e,t){t=t.checked,t!=null&&Ca(e,"checked",t,!1)}function Ss(e,t){Jd(e,t);var n=Nn(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Cs(e,t.type,n):t.hasOwnProperty("defaultValue")&&Cs(e,t.type,Nn(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Au(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Cs(e,t,n){(t!=="number"||Dl(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var qr=Array.isArray;function pr(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=el.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function fo(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Gr={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},gh=["Webkit","ms","Moz","O"];Object.keys(Gr).forEach(function(e){gh.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Gr[t]=Gr[e]})});function Zd(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Gr.hasOwnProperty(e)&&Gr[e]?(""+t).trim():t+"px"}function ef(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,o=Zd(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}var yh=ae({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function js(e,t){if(t){if(yh[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(I(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(I(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(I(61))}if(t.style!=null&&typeof t.style!="object")throw Error(I(62))}}function Es(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Is=null;function Ea(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Rs=null,hr=null,_r=null;function Bu(e){if(e=Oo(e)){if(typeof Rs!="function")throw Error(I(280));var t=e.stateNode;t&&(t=pi(t),Rs(e.stateNode,e.type,t))}}function tf(e){hr?_r?_r.push(e):_r=[e]:hr=e}function nf(){if(hr){var e=hr,t=_r;if(_r=hr=null,Bu(e),t)for(e=0;e>>=0,e===0?32:31-(Th(e)/Ph|0)|0}var tl=64,nl=4194304;function Qr(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Fl(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,o=e.suspendedLanes,l=e.pingedLanes,i=n&268435455;if(i!==0){var a=i&~o;a!==0?r=Qr(a):(l&=i,l!==0&&(r=Qr(l)))}else i=n&~o,i!==0?r=Qr(i):l!==0&&(r=Qr(l));if(r===0)return 0;if(t!==0&&t!==r&&!(t&o)&&(o=r&-r,l=t&-t,o>=l||o===16&&(l&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Lo(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-It(t),e[t]=n}function Oh(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=eo),Gu=" ",Zu=!1;function Sf(e,t){switch(e){case"keyup":return c_.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Cf(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var or=!1;function f_(e,t){switch(e){case"compositionend":return Cf(t);case"keypress":return t.which!==32?null:(Zu=!0,Gu);case"textInput":return e=t.data,e===Gu&&Zu?null:e;default:return null}}function m_(e,t){if(or)return e==="compositionend"||!Oa&&Sf(e,t)?(e=kf(),kl=Da=mn=null,or=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=rc(n)}}function Ef(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Ef(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function If(){for(var e=window,t=Dl();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Dl(e.document)}return t}function Fa(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function x_(e){var t=If(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Ef(n.ownerDocument.documentElement,n)){if(r!==null&&Fa(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var o=n.textContent.length,l=Math.min(r.start,o);r=r.end===void 0?l:Math.min(r.end,o),!e.extend&&l>r&&(o=r,r=l,l=o),o=oc(n,l);var i=oc(n,r);o&&i&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(o.node,o.offset),e.removeAllRanges(),l>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,lr=null,Os=null,no=null,Fs=!1;function lc(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Fs||lr==null||lr!==Dl(r)||(r=lr,"selectionStart"in r&&Fa(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),no&&wo(no,r)||(no=r,r=Al(Os,"onSelect"),0ar||(e.current=Bs[ar],Bs[ar]=null,ar--)}function ne(e,t){ar++,Bs[ar]=e.current,e.current=t}var jn={},Me=Rn(jn),qe=Rn(!1),Bn=jn;function xr(e,t){var n=e.type.contextTypes;if(!n)return jn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o={},l;for(l in n)o[l]=t[l];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function Qe(e){return e=e.childContextTypes,e!=null}function $l(){oe(qe),oe(Me)}function fc(e,t,n){if(Me.current!==jn)throw Error(I(168));ne(Me,t),ne(qe,n)}function Wf(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var o in r)if(!(o in t))throw Error(I(108,vh(e)||"Unknown",o));return ae({},n,r)}function Bl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||jn,Bn=Me.current,ne(Me,e),ne(qe,qe.current),!0}function mc(e,t,n){var r=e.stateNode;if(!r)throw Error(I(169));n?(e=Wf(e,t,Bn),r.__reactInternalMemoizedMergedChildContext=e,oe(qe),oe(Me),ne(Me,e)):oe(qe),ne(qe,n)}var Vt=null,hi=!1,Zi=!1;function Uf(e){Vt===null?Vt=[e]:Vt.push(e)}function L_(e){hi=!0,Uf(e)}function Tn(){if(!Zi&&Vt!==null){Zi=!0;var e=0,t=Z;try{var n=Vt;for(Z=1;e>=i,o-=i,Ht=1<<32-It(t)+o|n<C?(j=N,N=null):j=N.sibling;var E=m(v,N,h[C],x);if(E===null){N===null&&(N=j);break}e&&N&&E.alternate===null&&t(v,N),_=l(E,_,C),S===null?k=E:S.sibling=E,S=E,N=j}if(C===h.length)return n(v,N),le&&Mn(v,C),k;if(N===null){for(;CC?(j=N,N=null):j=N.sibling;var L=m(v,N,E.value,x);if(L===null){N===null&&(N=j);break}e&&N&&L.alternate===null&&t(v,N),_=l(L,_,C),S===null?k=L:S.sibling=L,S=L,N=j}if(E.done)return n(v,N),le&&Mn(v,C),k;if(N===null){for(;!E.done;C++,E=h.next())E=f(v,E.value,x),E!==null&&(_=l(E,_,C),S===null?k=E:S.sibling=E,S=E);return le&&Mn(v,C),k}for(N=r(v,N);!E.done;C++,E=h.next())E=w(N,v,C,E.value,x),E!==null&&(e&&E.alternate!==null&&N.delete(E.key===null?C:E.key),_=l(E,_,C),S===null?k=E:S.sibling=E,S=E);return e&&N.forEach(function(B){return t(v,B)}),le&&Mn(v,C),k}function b(v,_,h,x){if(typeof h=="object"&&h!==null&&h.type===rr&&h.key===null&&(h=h.props.children),typeof h=="object"&&h!==null){switch(h.$$typeof){case Go:e:{for(var k=h.key,S=_;S!==null;){if(S.key===k){if(k=h.type,k===rr){if(S.tag===7){n(v,S.sibling),_=o(S,h.props.children),_.return=v,v=_;break e}}else if(S.elementType===k||typeof k=="object"&&k!==null&&k.$$typeof===an&&_c(k)===S.type){n(v,S.sibling),_=o(S,h.props),_.ref=$r(v,S,h),_.return=v,v=_;break e}n(v,S);break}else t(v,S);S=S.sibling}h.type===rr?(_=zn(h.props.children,v.mode,x,h.key),_.return=v,v=_):(x=Il(h.type,h.key,h.props,null,v.mode,x),x.ref=$r(v,_,h),x.return=v,v=x)}return i(v);case nr:e:{for(S=h.key;_!==null;){if(_.key===S)if(_.tag===4&&_.stateNode.containerInfo===h.containerInfo&&_.stateNode.implementation===h.implementation){n(v,_.sibling),_=o(_,h.children||[]),_.return=v,v=_;break e}else{n(v,_);break}else t(v,_);_=_.sibling}_=ss(h,v.mode,x),_.return=v,v=_}return i(v);case an:return S=h._init,b(v,_,S(h._payload),x)}if(qr(h))return g(v,_,h,x);if(Fr(h))return y(v,_,h,x);ul(v,h)}return typeof h=="string"&&h!==""||typeof h=="number"?(h=""+h,_!==null&&_.tag===6?(n(v,_.sibling),_=o(_,h),_.return=v,v=_):(n(v,_),_=is(h,v.mode,x),_.return=v,v=_),i(v)):n(v,_)}return b}var Cr=Bf(!0),Vf=Bf(!1),Kl=Rn(null),ql=null,dr=null,za=null;function $a(){za=dr=ql=null}function Ba(e){var t=Kl.current;oe(Kl),e._currentValue=t}function Ks(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function wr(e,t){ql=e,za=dr=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(Ke=!0),e.firstContext=null)}function vt(e){var t=e._currentValue;if(za!==e)if(e={context:e,memoizedValue:t,next:null},dr===null){if(ql===null)throw Error(I(308));dr=e,ql.dependencies={lanes:0,firstContext:e}}else dr=dr.next=e;return t}var Wn=null;function Va(e){Wn===null?Wn=[e]:Wn.push(e)}function Hf(e,t,n,r){var o=t.interleaved;return o===null?(n.next=n,Va(t)):(n.next=o.next,o.next=n),t.interleaved=n,Yt(e,r)}function Yt(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var un=!1;function Ha(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Kf(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function qt(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function xn(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,Q&2){var o=r.pending;return o===null?t.next=t:(t.next=o.next,o.next=t),r.pending=t,Yt(e,n)}return o=r.interleaved,o===null?(t.next=t,Va(r)):(t.next=o.next,o.next=t),r.interleaved=t,Yt(e,n)}function Sl(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Ra(e,n)}}function vc(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var o=null,l=null;if(n=n.firstBaseUpdate,n!==null){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};l===null?o=l=i:l=l.next=i,n=n.next}while(n!==null);l===null?o=l=t:l=l.next=t}else o=l=t;n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:l,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Ql(e,t,n,r){var o=e.updateQueue;un=!1;var l=o.firstBaseUpdate,i=o.lastBaseUpdate,a=o.shared.pending;if(a!==null){o.shared.pending=null;var u=a,c=u.next;u.next=null,i===null?l=c:i.next=c,i=u;var d=e.alternate;d!==null&&(d=d.updateQueue,a=d.lastBaseUpdate,a!==i&&(a===null?d.firstBaseUpdate=c:a.next=c,d.lastBaseUpdate=u))}if(l!==null){var f=o.baseState;i=0,d=c=u=null,a=l;do{var m=a.lane,w=a.eventTime;if((r&m)===m){d!==null&&(d=d.next={eventTime:w,lane:0,tag:a.tag,payload:a.payload,callback:a.callback,next:null});e:{var g=e,y=a;switch(m=t,w=n,y.tag){case 1:if(g=y.payload,typeof g=="function"){f=g.call(w,f,m);break e}f=g;break e;case 3:g.flags=g.flags&-65537|128;case 0:if(g=y.payload,m=typeof g=="function"?g.call(w,f,m):g,m==null)break e;f=ae({},f,m);break e;case 2:un=!0}}a.callback!==null&&a.lane!==0&&(e.flags|=64,m=o.effects,m===null?o.effects=[a]:m.push(a))}else w={eventTime:w,lane:m,tag:a.tag,payload:a.payload,callback:a.callback,next:null},d===null?(c=d=w,u=f):d=d.next=w,i|=m;if(a=a.next,a===null){if(a=o.shared.pending,a===null)break;m=a,a=m.next,m.next=null,o.lastBaseUpdate=m,o.shared.pending=null}}while(!0);if(d===null&&(u=f),o.baseState=u,o.firstBaseUpdate=c,o.lastBaseUpdate=d,t=o.shared.interleaved,t!==null){o=t;do i|=o.lane,o=o.next;while(o!==t)}else l===null&&(o.shared.lanes=0);Kn|=i,e.lanes=i,e.memoizedState=f}}function wc(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=ts.transition;ts.transition={};try{e(!1),t()}finally{Z=n,ts.transition=r}}function um(){return wt().memoizedState}function W_(e,t,n){var r=Cn(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},cm(e))dm(t,n);else if(n=Hf(e,t,n,r),n!==null){var o=ze();Rt(n,e,r,o),fm(n,t,r)}}function U_(e,t,n){var r=Cn(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(cm(e))dm(t,o);else{var l=e.alternate;if(e.lanes===0&&(l===null||l.lanes===0)&&(l=t.lastRenderedReducer,l!==null))try{var i=t.lastRenderedState,a=l(i,n);if(o.hasEagerState=!0,o.eagerState=a,Tt(a,i)){var u=t.interleaved;u===null?(o.next=o,Va(t)):(o.next=u.next,u.next=o),t.interleaved=o;return}}catch{}finally{}n=Hf(e,t,o,r),n!==null&&(o=ze(),Rt(n,e,r,o),fm(n,t,r))}}function cm(e){var t=e.alternate;return e===se||t!==null&&t===se}function dm(e,t){ro=Yl=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function fm(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Ra(e,n)}}var Xl={readContext:vt,useCallback:Te,useContext:Te,useEffect:Te,useImperativeHandle:Te,useInsertionEffect:Te,useLayoutEffect:Te,useMemo:Te,useReducer:Te,useRef:Te,useState:Te,useDebugValue:Te,useDeferredValue:Te,useTransition:Te,useMutableSource:Te,useSyncExternalStore:Te,useId:Te,unstable_isNewReconciler:!1},A_={readContext:vt,useCallback:function(e,t){return Ot().memoizedState=[e,t===void 0?null:t],e},useContext:vt,useEffect:yc,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,bl(4194308,4,om.bind(null,t,e),n)},useLayoutEffect:function(e,t){return bl(4194308,4,e,t)},useInsertionEffect:function(e,t){return bl(4,2,e,t)},useMemo:function(e,t){var n=Ot();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ot();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=W_.bind(null,se,e),[r.memoizedState,e]},useRef:function(e){var t=Ot();return e={current:e},t.memoizedState=e},useState:gc,useDebugValue:Za,useDeferredValue:function(e){return Ot().memoizedState=e},useTransition:function(){var e=gc(!1),t=e[0];return e=F_.bind(null,e[1]),Ot().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=se,o=Ot();if(le){if(n===void 0)throw Error(I(407));n=n()}else{if(n=t(),Ce===null)throw Error(I(349));Hn&30||Yf(r,t,n)}o.memoizedState=n;var l={value:n,getSnapshot:t};return o.queue=l,yc(Gf.bind(null,r,l,e),[e]),r.flags|=2048,No(9,Xf.bind(null,r,l,n,t),void 0,null),n},useId:function(){var e=Ot(),t=Ce.identifierPrefix;if(le){var n=Kt,r=Ht;n=(r&~(1<<32-It(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Co++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[Ft]=t,e[ko]=r,xm(e,t,!1,!1),t.stateNode=e;e:{switch(i=Es(n,r),n){case"dialog":re("cancel",e),re("close",e),o=r;break;case"iframe":case"object":case"embed":re("load",e),o=r;break;case"video":case"audio":for(o=0;ojr&&(t.flags|=128,r=!0,Br(l,!1),t.lanes=4194304)}else{if(!r)if(e=Jl(i),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Br(l,!0),l.tail===null&&l.tailMode==="hidden"&&!i.alternate&&!le)return Pe(t),null}else 2*de()-l.renderingStartTime>jr&&n!==1073741824&&(t.flags|=128,r=!0,Br(l,!1),t.lanes=4194304);l.isBackwards?(i.sibling=t.child,t.child=i):(n=l.last,n!==null?n.sibling=i:t.child=i,l.last=i)}return l.tail!==null?(t=l.tail,l.rendering=t,l.tail=t.sibling,l.renderingStartTime=de(),t.sibling=null,n=ie.current,ne(ie,r?n&1|2:n&1),t):(Pe(t),null);case 22:case 23:return lu(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?et&1073741824&&(Pe(t),t.subtreeFlags&6&&(t.flags|=8192)):Pe(t),null;case 24:return null;case 25:return null}throw Error(I(156,t.tag))}function Q_(e,t){switch(Ua(t),t.tag){case 1:return Qe(t.type)&&$l(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return br(),oe(qe),oe(Me),Qa(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return qa(t),null;case 13:if(oe(ie),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(I(340));Sr()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return oe(ie),null;case 4:return br(),null;case 10:return Ba(t.type._context),null;case 22:case 23:return lu(),null;case 24:return null;default:return null}}var dl=!1,Le=!1,J_=typeof WeakSet=="function"?WeakSet:Set,D=null;function fr(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){ce(e,t,r)}else n.current=null}function ta(e,t,n){try{n()}catch(r){ce(e,t,r)}}var Tc=!1;function Y_(e,t){if(Ws=Wl,e=If(),Fa(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var o=r.anchorOffset,l=r.focusNode;r=r.focusOffset;try{n.nodeType,l.nodeType}catch{n=null;break e}var i=0,a=-1,u=-1,c=0,d=0,f=e,m=null;t:for(;;){for(var w;f!==n||o!==0&&f.nodeType!==3||(a=i+o),f!==l||r!==0&&f.nodeType!==3||(u=i+r),f.nodeType===3&&(i+=f.nodeValue.length),(w=f.firstChild)!==null;)m=f,f=w;for(;;){if(f===e)break t;if(m===n&&++c===o&&(a=i),m===l&&++d===r&&(u=i),(w=f.nextSibling)!==null)break;f=m,m=f.parentNode}f=w}n=a===-1||u===-1?null:{start:a,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(Us={focusedElem:e,selectionRange:n},Wl=!1,D=t;D!==null;)if(t=D,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,D=e;else for(;D!==null;){t=D;try{var g=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(g!==null){var y=g.memoizedProps,b=g.memoizedState,v=t.stateNode,_=v.getSnapshotBeforeUpdate(t.elementType===t.type?y:bt(t.type,y),b);v.__reactInternalSnapshotBeforeUpdate=_}break;case 3:var h=t.stateNode.containerInfo;h.nodeType===1?h.textContent="":h.nodeType===9&&h.documentElement&&h.removeChild(h.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(I(163))}}catch(x){ce(t,t.return,x)}if(e=t.sibling,e!==null){e.return=t.return,D=e;break}D=t.return}return g=Tc,Tc=!1,g}function oo(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var o=r=r.next;do{if((o.tag&e)===e){var l=o.destroy;o.destroy=void 0,l!==void 0&&ta(t,n,l)}o=o.next}while(o!==r)}}function wi(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function na(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function bm(e){var t=e.alternate;t!==null&&(e.alternate=null,bm(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Ft],delete t[ko],delete t[$s],delete t[P_],delete t[D_])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Nm(e){return e.tag===5||e.tag===3||e.tag===4}function Pc(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Nm(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function ra(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=zl));else if(r!==4&&(e=e.child,e!==null))for(ra(e,t,n),e=e.sibling;e!==null;)ra(e,t,n),e=e.sibling}function oa(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(oa(e,t,n),e=e.sibling;e!==null;)oa(e,t,n),e=e.sibling}var je=null,Nt=!1;function sn(e,t,n){for(n=n.child;n!==null;)jm(e,t,n),n=n.sibling}function jm(e,t,n){if(Wt&&typeof Wt.onCommitFiberUnmount=="function")try{Wt.onCommitFiberUnmount(ci,n)}catch{}switch(n.tag){case 5:Le||fr(n,t);case 6:var r=je,o=Nt;je=null,sn(e,t,n),je=r,Nt=o,je!==null&&(Nt?(e=je,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):je.removeChild(n.stateNode));break;case 18:je!==null&&(Nt?(e=je,n=n.stateNode,e.nodeType===8?Gi(e.parentNode,n):e.nodeType===1&&Gi(e,n),_o(e)):Gi(je,n.stateNode));break;case 4:r=je,o=Nt,je=n.stateNode.containerInfo,Nt=!0,sn(e,t,n),je=r,Nt=o;break;case 0:case 11:case 14:case 15:if(!Le&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){o=r=r.next;do{var l=o,i=l.destroy;l=l.tag,i!==void 0&&(l&2||l&4)&&ta(n,t,i),o=o.next}while(o!==r)}sn(e,t,n);break;case 1:if(!Le&&(fr(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(a){ce(n,t,a)}sn(e,t,n);break;case 21:sn(e,t,n);break;case 22:n.mode&1?(Le=(r=Le)||n.memoizedState!==null,sn(e,t,n),Le=r):sn(e,t,n);break;default:sn(e,t,n)}}function Dc(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new J_),t.forEach(function(r){var o=lv.bind(null,e,r);n.has(r)||(n.add(r),r.then(o,o))})}}function Ct(e,t){var n=t.deletions;if(n!==null)for(var r=0;ro&&(o=i),r&=~l}if(r=o,r=de()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*G_(r/1960))-r,10e?16:e,pn===null)var r=!1;else{if(e=pn,pn=null,ei=0,Q&6)throw Error(I(331));var o=Q;for(Q|=4,D=e.current;D!==null;){var l=D,i=l.child;if(D.flags&16){var a=l.deletions;if(a!==null){for(var u=0;ude()-ru?An(e,0):nu|=n),Je(e,t)}function Mm(e,t){t===0&&(e.mode&1?(t=nl,nl<<=1,!(nl&130023424)&&(nl=4194304)):t=1);var n=ze();e=Yt(e,t),e!==null&&(Lo(e,t,n),Je(e,n))}function ov(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Mm(e,n)}function lv(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;o!==null&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(I(314))}r!==null&&r.delete(t),Mm(e,n)}var Om;Om=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||qe.current)Ke=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return Ke=!1,K_(e,t,n);Ke=!!(e.flags&131072)}else Ke=!1,le&&t.flags&1048576&&Af(t,Hl,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Nl(e,t),e=t.pendingProps;var o=xr(t,Me.current);wr(t,n),o=Ya(null,t,r,e,o,n);var l=Xa();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Qe(r)?(l=!0,Bl(t)):l=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,Ha(t),o.updater=vi,t.stateNode=o,o._reactInternals=t,Qs(t,r,e,n),t=Xs(null,t,r,!0,l,n)):(t.tag=0,le&&l&&Wa(t),Ae(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Nl(e,t),e=t.pendingProps,o=r._init,r=o(r._payload),t.type=r,o=t.tag=sv(r),e=bt(r,e),o){case 0:t=Ys(null,t,r,e,n);break e;case 1:t=Ec(null,t,r,e,n);break e;case 11:t=Nc(null,t,r,e,n);break e;case 14:t=jc(null,t,r,bt(r.type,e),n);break e}throw Error(I(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:bt(r,o),Ys(e,t,r,o,n);case 1:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:bt(r,o),Ec(e,t,r,o,n);case 3:e:{if(gm(t),e===null)throw Error(I(387));r=t.pendingProps,l=t.memoizedState,o=l.element,Kf(e,t),Ql(t,r,null,n);var i=t.memoizedState;if(r=i.element,l.isDehydrated)if(l={element:r,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=l,t.memoizedState=l,t.flags&256){o=Nr(Error(I(423)),t),t=Ic(e,t,r,n,o);break e}else if(r!==o){o=Nr(Error(I(424)),t),t=Ic(e,t,r,n,o);break e}else for(nt=kn(t.stateNode.containerInfo.firstChild),rt=t,le=!0,jt=null,n=Vf(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Sr(),r===o){t=Xt(e,t,n);break e}Ae(e,t,r,n)}t=t.child}return t;case 5:return qf(t),e===null&&Hs(t),r=t.type,o=t.pendingProps,l=e!==null?e.memoizedProps:null,i=o.children,As(r,o)?i=null:l!==null&&As(r,l)&&(t.flags|=32),wm(e,t),Ae(e,t,i,n),t.child;case 6:return e===null&&Hs(t),null;case 13:return ym(e,t,n);case 4:return Ka(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Cr(t,null,r,n):Ae(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:bt(r,o),Nc(e,t,r,o,n);case 7:return Ae(e,t,t.pendingProps,n),t.child;case 8:return Ae(e,t,t.pendingProps.children,n),t.child;case 12:return Ae(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,l=t.memoizedProps,i=o.value,ne(Kl,r._currentValue),r._currentValue=i,l!==null)if(Tt(l.value,i)){if(l.children===o.children&&!qe.current){t=Xt(e,t,n);break e}}else for(l=t.child,l!==null&&(l.return=t);l!==null;){var a=l.dependencies;if(a!==null){i=l.child;for(var u=a.firstContext;u!==null;){if(u.context===r){if(l.tag===1){u=qt(-1,n&-n),u.tag=2;var c=l.updateQueue;if(c!==null){c=c.shared;var d=c.pending;d===null?u.next=u:(u.next=d.next,d.next=u),c.pending=u}}l.lanes|=n,u=l.alternate,u!==null&&(u.lanes|=n),Ks(l.return,n,t),a.lanes|=n;break}u=u.next}}else if(l.tag===10)i=l.type===t.type?null:l.child;else if(l.tag===18){if(i=l.return,i===null)throw Error(I(341));i.lanes|=n,a=i.alternate,a!==null&&(a.lanes|=n),Ks(i,n,t),i=l.sibling}else i=l.child;if(i!==null)i.return=l;else for(i=l;i!==null;){if(i===t){i=null;break}if(l=i.sibling,l!==null){l.return=i.return,i=l;break}i=i.return}l=i}Ae(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,wr(t,n),o=vt(o),r=r(o),t.flags|=1,Ae(e,t,r,n),t.child;case 14:return r=t.type,o=bt(r,t.pendingProps),o=bt(r.type,o),jc(e,t,r,o,n);case 15:return _m(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:bt(r,o),Nl(e,t),t.tag=1,Qe(r)?(e=!0,Bl(t)):e=!1,wr(t,n),mm(t,r,o),Qs(t,r,o,n),Xs(null,t,r,!0,e,n);case 19:return km(e,t,n);case 22:return vm(e,t,n)}throw Error(I(156,t.tag))};function Fm(e,t){return cf(e,t)}function iv(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ht(e,t,n,r){return new iv(e,t,n,r)}function su(e){return e=e.prototype,!(!e||!e.isReactComponent)}function sv(e){if(typeof e=="function")return su(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Na)return 11;if(e===ja)return 14}return 2}function bn(e,t){var n=e.alternate;return n===null?(n=ht(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Il(e,t,n,r,o,l){var i=2;if(r=e,typeof e=="function")su(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case rr:return zn(n.children,o,l,t);case ba:i=8,o|=8;break;case ws:return e=ht(12,n,t,o|2),e.elementType=ws,e.lanes=l,e;case gs:return e=ht(13,n,t,o),e.elementType=gs,e.lanes=l,e;case ys:return e=ht(19,n,t,o),e.elementType=ys,e.lanes=l,e;case Kd:return yi(n,o,l,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Vd:i=10;break e;case Hd:i=9;break e;case Na:i=11;break e;case ja:i=14;break e;case an:i=16,r=null;break e}throw Error(I(130,e==null?e:typeof e,""))}return t=ht(i,n,t,o),t.elementType=e,t.type=r,t.lanes=l,t}function zn(e,t,n,r){return e=ht(7,e,r,t),e.lanes=n,e}function yi(e,t,n,r){return e=ht(22,e,r,t),e.elementType=Kd,e.lanes=n,e.stateNode={isHidden:!1},e}function is(e,t,n){return e=ht(6,e,null,t),e.lanes=n,e}function ss(e,t,n){return t=ht(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function av(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=zi(0),this.expirationTimes=zi(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=zi(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function au(e,t,n,r,o,l,i,a,u){return e=new av(e,t,n,a,u),t===1?(t=1,l===!0&&(t|=8)):t=0,l=ht(3,null,null,t),e.current=l,l.stateNode=e,l.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ha(l),e}function uv(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(zm)}catch(e){console.error(e)}}zm(),Ad.exports=lt;var hn=Ad.exports,zc=hn;_s.createRoot=zc.createRoot,_s.hydrateRoot=zc.hydrateRoot;/** - * @remix-run/router v1.23.2 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function Eo(){return Eo=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u")throw new Error(t)}function bi(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function hv(){return Math.random().toString(36).substr(2,8)}function Bc(e,t){return{usr:e.state,key:e.key,idx:t}}function ua(e,t,n,r){return n===void 0&&(n=null),Eo({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?Xn(t):t,{state:n,key:t&&t.key||r||hv()})}function $m(e){let{pathname:t="/",search:n="",hash:r=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function Xn(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function _v(e,t,n,r){r===void 0&&(r={});let{window:o=document.defaultView,v5Compat:l=!1}=r,i=o.history,a=_n.Pop,u=null,c=d();c==null&&(c=0,i.replaceState(Eo({},i.state,{idx:c}),""));function d(){return(i.state||{idx:null}).idx}function f(){a=_n.Pop;let b=d(),v=b==null?null:b-c;c=b,u&&u({action:a,location:y.location,delta:v})}function m(b,v){a=_n.Push;let _=ua(y.location,b,v);n&&n(_,b),c=d()+1;let h=Bc(_,c),x=y.createHref(_);try{i.pushState(h,"",x)}catch(k){if(k instanceof DOMException&&k.name==="DataCloneError")throw k;o.location.assign(x)}l&&u&&u({action:a,location:y.location,delta:1})}function w(b,v){a=_n.Replace;let _=ua(y.location,b,v);n&&n(_,b),c=d();let h=Bc(_,c),x=y.createHref(_);i.replaceState(h,"",x),l&&u&&u({action:a,location:y.location,delta:0})}function g(b){let v=o.location.origin!=="null"?o.location.origin:o.location.href,_=typeof b=="string"?b:$m(b);return _=_.replace(/ $/,"%20"),he(v,"No window.location.(origin|href) available to create URL for href: "+_),new URL(_,v)}let y={get action(){return a},get location(){return e(o,i)},listen(b){if(u)throw new Error("A history only accepts one active listener");return o.addEventListener($c,f),u=b,()=>{o.removeEventListener($c,f),u=null}},createHref(b){return t(o,b)},createURL:g,encodeLocation(b){let v=g(b);return{pathname:v.pathname,search:v.search,hash:v.hash}},push:m,replace:w,go(b){return i.go(b)}};return y}var Vc;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(Vc||(Vc={}));function vv(e,t,n){return n===void 0&&(n="/"),wv(e,t,n)}function wv(e,t,n,r){let o=typeof t=="string"?Xn(t):t,l=Hm(o.pathname||"/",n);if(l==null)return null;let i=Bm(e);gv(i);let a=null;for(let u=0;a==null&&u{let u={relativePath:a===void 0?l.path||"":a,caseSensitive:l.caseSensitive===!0,childrenIndex:i,route:l};u.relativePath.startsWith("/")&&(he(u.relativePath.startsWith(r),'Absolute route path "'+u.relativePath+'" nested under path '+('"'+r+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),u.relativePath=u.relativePath.slice(r.length));let c=$n([r,u.relativePath]),d=n.concat(u);l.children&&l.children.length>0&&(he(l.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+c+'".')),Bm(l.children,t,d,c)),!(l.path==null&&!l.index)&&t.push({path:c,score:Nv(c,l.index),routesMeta:d})};return e.forEach((l,i)=>{var a;if(l.path===""||!((a=l.path)!=null&&a.includes("?")))o(l,i);else for(let u of Vm(l.path))o(l,i,u)}),t}function Vm(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,o=n.endsWith("?"),l=n.replace(/\?$/,"");if(r.length===0)return o?[l,""]:[l];let i=Vm(r.join("/")),a=[];return a.push(...i.map(u=>u===""?l:[l,u].join("/"))),o&&a.push(...i),a.map(u=>e.startsWith("/")&&u===""?"/":u)}function gv(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:jv(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const yv=/^:[\w-]+$/,kv=3,xv=2,Sv=1,Cv=10,bv=-2,Hc=e=>e==="*";function Nv(e,t){let n=e.split("/"),r=n.length;return n.some(Hc)&&(r+=bv),t&&(r+=xv),n.filter(o=>!Hc(o)).reduce((o,l)=>o+(yv.test(l)?kv:l===""?Sv:Cv),r)}function jv(e,t){return e.length===t.length&&e.slice(0,-1).every((r,o)=>r===t[o])?e[e.length-1]-t[t.length-1]:0}function Ev(e,t,n){let{routesMeta:r}=e,o={},l="/",i=[];for(let a=0;a{let{paramName:m,isOptional:w}=d;if(m==="*"){let y=a[f]||"";i=l.slice(0,l.length-y.length).replace(/(.)\/+$/,"$1")}const g=a[f];return w&&!g?c[m]=void 0:c[m]=(g||"").replace(/%2F/g,"/"),c},{}),pathname:l,pathnameBase:i,pattern:e}}function Rv(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),bi(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let r=[],o="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(i,a,u)=>(r.push({paramName:a,isOptional:u!=null}),u?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(r.push({paramName:"*"}),o+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?o+="\\/*$":e!==""&&e!=="/"&&(o+="(?:(?=\\/|$))"),[new RegExp(o,t?void 0:"i"),r]}function Tv(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return bi(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function Hm(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}const Pv=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Dv=e=>Pv.test(e);function Lv(e,t){t===void 0&&(t="/");let{pathname:n,search:r="",hash:o=""}=typeof e=="string"?Xn(e):e,l;if(n)if(Dv(n))l=n;else{if(n.includes("//")){let i=n;n=n.replace(/\/\/+/g,"/"),bi(!1,"Pathnames cannot have embedded double slashes - normalizing "+(i+" -> "+n))}n.startsWith("/")?l=Kc(n.substring(1),"/"):l=Kc(n,t)}else l=t;return{pathname:l,search:Fv(r),hash:Wv(o)}}function Kc(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(o=>{o===".."?n.length>1&&n.pop():o!=="."&&n.push(o)}),n.length>1?n.join("/"):"/"}function as(e,t,n,r){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the ")+("`to."+n+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function Mv(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function Km(e,t){let n=Mv(e);return t?n.map((r,o)=>o===n.length-1?r.pathname:r.pathnameBase):n.map(r=>r.pathnameBase)}function qm(e,t,n,r){r===void 0&&(r=!1);let o;typeof e=="string"?o=Xn(e):(o=Eo({},e),he(!o.pathname||!o.pathname.includes("?"),as("?","pathname","search",o)),he(!o.pathname||!o.pathname.includes("#"),as("#","pathname","hash",o)),he(!o.search||!o.search.includes("#"),as("#","search","hash",o)));let l=e===""||o.pathname==="",i=l?"/":o.pathname,a;if(i==null)a=n;else{let f=t.length-1;if(!r&&i.startsWith("..")){let m=i.split("/");for(;m[0]==="..";)m.shift(),f-=1;o.pathname=m.join("/")}a=f>=0?t[f]:"/"}let u=Lv(o,a),c=i&&i!=="/"&&i.endsWith("/"),d=(l||i===".")&&n.endsWith("/");return!u.pathname.endsWith("/")&&(c||d)&&(u.pathname+="/"),u}const $n=e=>e.join("/").replace(/\/\/+/g,"/"),Ov=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),Fv=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,Wv=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function Uv(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const Qm=["post","put","patch","delete"];new Set(Qm);const Av=["get",...Qm];new Set(Av);/** - * React Router v6.30.3 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function Io(){return Io=Object.assign?Object.assign.bind():function(e){for(var t=1;t{a.current=!0}),p.useCallback(function(c,d){if(d===void 0&&(d={}),!a.current)return;if(typeof c=="number"){r.go(c);return}let f=qm(c,JSON.parse(i),l,d.relative==="path");e==null&&t!=="/"&&(f.pathname=f.pathname==="/"?t:$n([t,f.pathname])),(d.replace?r.replace:r.push)(f,d.state,d)},[t,r,i,l,e])}function Bv(){let{matches:e}=p.useContext(Pn),t=e[e.length-1];return t?t.params:{}}function Vv(e,t){return Hv(e,t)}function Hv(e,t,n,r){Tr()||he(!1);let{navigator:o}=p.useContext(Wo),{matches:l}=p.useContext(Pn),i=l[l.length-1],a=i?i.params:{};i&&i.pathname;let u=i?i.pathnameBase:"/";i&&i.route;let c=ji(),d;if(t){var f;let b=typeof t=="string"?Xn(t):t;u==="/"||(f=b.pathname)!=null&&f.startsWith(u)||he(!1),d=b}else d=c;let m=d.pathname||"/",w=m;if(u!=="/"){let b=u.replace(/^\//,"").split("/");w="/"+m.replace(/^\//,"").split("/").slice(b.length).join("/")}let g=vv(e,{pathname:w}),y=Yv(g&&g.map(b=>Object.assign({},b,{params:Object.assign({},a,b.params),pathname:$n([u,o.encodeLocation?o.encodeLocation(b.pathname).pathname:b.pathname]),pathnameBase:b.pathnameBase==="/"?u:$n([u,o.encodeLocation?o.encodeLocation(b.pathnameBase).pathname:b.pathnameBase])})),l,n,r);return t&&y?p.createElement(Ni.Provider,{value:{location:Io({pathname:"/",search:"",hash:"",state:null,key:"default"},d),navigationType:_n.Pop}},y):y}function Kv(){let e=ew(),t=Uv(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,o={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return p.createElement(p.Fragment,null,p.createElement("h2",null,"Unexpected Application Error!"),p.createElement("h3",{style:{fontStyle:"italic"}},t),n?p.createElement("pre",{style:o},n):null,null)}const qv=p.createElement(Kv,null);class Qv extends p.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?p.createElement(Pn.Provider,{value:this.props.routeContext},p.createElement(Jm.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function Jv(e){let{routeContext:t,match:n,children:r}=e,o=p.useContext(fu);return o&&o.static&&o.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=n.route.id),p.createElement(Pn.Provider,{value:t},r)}function Yv(e,t,n,r){var o;if(t===void 0&&(t=[]),n===void 0&&(n=null),r===void 0&&(r=null),e==null){var l;if(!n)return null;if(n.errors)e=n.matches;else if((l=r)!=null&&l.v7_partialHydration&&t.length===0&&!n.initialized&&n.matches.length>0)e=n.matches;else return null}let i=e,a=(o=n)==null?void 0:o.errors;if(a!=null){let d=i.findIndex(f=>f.route.id&&(a==null?void 0:a[f.route.id])!==void 0);d>=0||he(!1),i=i.slice(0,Math.min(i.length,d+1))}let u=!1,c=-1;if(n&&r&&r.v7_partialHydration)for(let d=0;d=0?i=i.slice(0,c+1):i=[i[0]];break}}}return i.reduceRight((d,f,m)=>{let w,g=!1,y=null,b=null;n&&(w=a&&f.route.id?a[f.route.id]:void 0,y=f.route.errorElement||qv,u&&(c<0&&m===0?(nw("route-fallback"),g=!0,b=null):c===m&&(g=!0,b=f.route.hydrateFallbackElement||null)));let v=t.concat(i.slice(0,m+1)),_=()=>{let h;return w?h=y:g?h=b:f.route.Component?h=p.createElement(f.route.Component,null):f.route.element?h=f.route.element:h=d,p.createElement(Jv,{match:f,routeContext:{outlet:d,matches:v,isDataRoute:n!=null},children:h})};return n&&(f.route.ErrorBoundary||f.route.errorElement||m===0)?p.createElement(Qv,{location:n.location,revalidation:n.revalidation,component:y,error:w,children:_(),routeContext:{outlet:null,matches:v,isDataRoute:!0}}):_()},null)}var Xm=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(Xm||{}),Gm=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(Gm||{});function Xv(e){let t=p.useContext(fu);return t||he(!1),t}function Gv(e){let t=p.useContext(zv);return t||he(!1),t}function Zv(e){let t=p.useContext(Pn);return t||he(!1),t}function Zm(e){let t=Zv(),n=t.matches[t.matches.length-1];return n.route.id||he(!1),n.route.id}function ew(){var e;let t=p.useContext(Jm),n=Gv(),r=Zm();return t!==void 0?t:(e=n.errors)==null?void 0:e[r]}function tw(){let{router:e}=Xv(Xm.UseNavigateStable),t=Zm(Gm.UseNavigateStable),n=p.useRef(!1);return Ym(()=>{n.current=!0}),p.useCallback(function(o,l){l===void 0&&(l={}),n.current&&(typeof o=="number"?e.navigate(o):e.navigate(o,Io({fromRouteId:t},l)))},[e,t])}const qc={};function nw(e,t,n){qc[e]||(qc[e]=!0)}function rw(e,t){e==null||e.v7_startTransition,e==null||e.v7_relativeSplatPath}function ow(e){let{to:t,replace:n,state:r,relative:o}=e;Tr()||he(!1);let{future:l,static:i}=p.useContext(Wo),{matches:a}=p.useContext(Pn),{pathname:u}=ji(),c=mu(),d=qm(t,Km(a,l.v7_relativeSplatPath),u,o==="path"),f=JSON.stringify(d);return p.useEffect(()=>c(JSON.parse(f),{replace:n,state:r,relative:o}),[c,f,o,n,r]),null}function Yr(e){he(!1)}function lw(e){let{basename:t="/",children:n=null,location:r,navigationType:o=_n.Pop,navigator:l,static:i=!1,future:a}=e;Tr()&&he(!1);let u=t.replace(/^\/*/,"/"),c=p.useMemo(()=>({basename:u,navigator:l,static:i,future:Io({v7_relativeSplatPath:!1},a)}),[u,a,l,i]);typeof r=="string"&&(r=Xn(r));let{pathname:d="/",search:f="",hash:m="",state:w=null,key:g="default"}=r,y=p.useMemo(()=>{let b=Hm(d,u);return b==null?null:{location:{pathname:b,search:f,hash:m,state:w,key:g},navigationType:o}},[u,d,f,m,w,g,o]);return y==null?null:p.createElement(Wo.Provider,{value:c},p.createElement(Ni.Provider,{children:n,value:y}))}function iw(e){let{children:t,location:n}=e;return Vv(ca(t),n)}new Promise(()=>{});function ca(e,t){t===void 0&&(t=[]);let n=[];return p.Children.forEach(e,(r,o)=>{if(!p.isValidElement(r))return;let l=[...t,o];if(r.type===p.Fragment){n.push.apply(n,ca(r.props.children,l));return}r.type!==Yr&&he(!1),!r.props.index||!r.props.children||he(!1);let i={id:r.props.id||l.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,loader:r.props.loader,action:r.props.action,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(i.children=ca(r.props.children,l)),n.push(i)}),n}/** - * React Router DOM v6.30.3 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */const sw="6";try{window.__reactRouterVersion=sw}catch{}const aw="startTransition",Qc=rh[aw];function ep(e){let{basename:t,children:n,future:r,window:o}=e,l=p.useRef();l.current==null&&(l.current=pv({window:o,v5Compat:!0}));let i=l.current,[a,u]=p.useState({action:i.action,location:i.location}),{v7_startTransition:c}=r||{},d=p.useCallback(f=>{c&&Qc?Qc(()=>u(f)):u(f)},[u,c]);return p.useLayoutEffect(()=>i.listen(d),[i,d]),p.useEffect(()=>rw(r),[r]),p.createElement(lw,{basename:t,children:n,location:a.location,navigationType:a.action,navigator:i,future:r})}var Jc;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(Jc||(Jc={}));var Yc;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(Yc||(Yc={}));const En=p.forwardRef(function({id:t,label:n,description:r,indeterminate:o=!1,className:l="",disabled:i,...a},u){const c=p.useId(),d=t??c,f=p.useRef(null);p.useEffect(()=>{f.current&&(f.current.indeterminate=o)},[o]);function m(w){if(f.current=w,typeof u=="function"){u(w);return}u&&(u.current=w)}return s.jsxs("label",{htmlFor:d,className:["checkbox-field",i?"is-disabled":"",l].filter(Boolean).join(" "),children:[s.jsx("input",{...a,ref:m,id:d,type:"checkbox",disabled:i,className:"checkbox-field-input"}),s.jsx("span",{className:"checkbox-field-control","aria-hidden":"true"}),n!=null||r!=null?s.jsxs("span",{className:"checkbox-field-copy",children:[n!=null?s.jsx("span",{className:"checkbox-field-label",children:n}):null,r!=null?s.jsx("span",{className:"checkbox-field-description",children:r}):null]}):null]})});function Dn({open:e,title:t,onClose:n,actions:r,footerStart:o,width:l="normal",initialFocusRef:i,children:a}){const u=p.useRef(n),c=p.useRef(null);return p.useEffect(()=>{u.current=n},[n]),p.useEffect(()=>{if(!e)return;const d=window.requestAnimationFrame(()=>{var m,w;const f=document.activeElement;(m=c.current)!=null&&m.contains(f)||(w=i==null?void 0:i.current)==null||w.focus()});return()=>{window.cancelAnimationFrame(d)}},[i,e]),p.useEffect(()=>{if(!e)return;function d(f){f.key==="Escape"&&u.current()}return document.body.classList.add("modal-open"),document.addEventListener("keydown",d),()=>{document.body.classList.remove("modal-open"),document.removeEventListener("keydown",d)}},[e]),e?hn.createPortal(s.jsx("div",{className:"modal-overlay",onClick:d=>{d.target===d.currentTarget&&n()},children:s.jsxs("div",{ref:c,className:`modal-card ${l==="wide"?"modal-card-wide":""} ${l==="xwide"?"modal-card-xwide":""}`,role:"dialog","aria-modal":"true",children:[s.jsx("div",{className:"modal-header",children:s.jsx("h3",{className:"card-title",children:t})}),s.jsx("div",{className:"modal-body",children:a}),r||o?s.jsxs("div",{className:"modal-actions",children:[s.jsx("div",{className:"modal-actions-leading",children:o}),s.jsx("div",{className:"modal-actions-trailing",children:r})]}):null]})}),document.body):null}function uw(e){const t=p.useRef(null);return s.jsxs(Dn,{open:e.open,title:e.title,onClose:e.onCancel,initialFocusRef:t,actions:s.jsxs(s.Fragment,{children:[s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:e.onCancel,children:e.cancelLabel}),s.jsx("button",{ref:t,type:"button",className:`btn ${e.tone==="danger"?"btn-danger":"btn-primary"}`,onClick:e.onConfirm,children:e.confirmLabel})]}),children:[s.jsx("p",{className:"confirm-modal-message",children:e.message}),e.checkboxLabel?s.jsx(En,{checked:!!e.checkboxChecked,className:"confirm-modal-checkbox",onChange:n=>{var r;return(r=e.onCheckboxChange)==null?void 0:r.call(e,n.target.checked)},label:e.checkboxLabel}):null]})}const cw={success:{icon:"✓",title:"Success"},error:{icon:"!",title:"Error"},info:{icon:"i",title:"Notice"}};function dw({toast:e,onDismiss:t}){const n=p.useRef(null),r=p.useRef(null),o=p.useRef(Date.now()),l=p.useRef(3200),i=p.useRef(()=>{}),a=p.useRef(!1),[u,c]=p.useState(!1),d=cw[e.type];p.useEffect(()=>{a.current=!1,c(!1);function w(){r.current||a.current||(a.current=!0,c(!0),r.current=window.setTimeout(()=>{t(e.id)},260))}function g(y){n.current&&window.clearTimeout(n.current),o.current=Date.now(),n.current=window.setTimeout(w,y)}return i.current=w,l.current=3200,g(l.current),()=>{n.current&&window.clearTimeout(n.current),r.current&&window.clearTimeout(r.current)}},[t,e.id]);function f(){u||(n.current&&window.clearTimeout(n.current),l.current=Math.max(0,l.current-(Date.now()-o.current)))}function m(){u||(n.current&&window.clearTimeout(n.current),o.current=Date.now(),n.current=window.setTimeout(()=>i.current(),l.current))}return s.jsxs("div",{className:`toast ${e.type} ${u?"closing":""}`.trim(),role:e.type==="error"?"alert":"status","aria-live":e.type==="error"?"assertive":"polite",onMouseEnter:f,onMouseLeave:m,children:[s.jsx("span",{className:"toast-icon","aria-hidden":"true",children:d.icon}),s.jsxs("div",{className:"toast-body",children:[s.jsx("p",{className:"toast-title",children:d.title}),s.jsx("p",{className:"toast-message",children:e.message})]}),s.jsx("button",{type:"button",className:"toast-close","aria-label":"Close notification",onClick:()=>i.current(),children:"×"})]})}function fw({toasts:e,onDismiss:t}){return s.jsx("div",{id:"toast-container","aria-live":"polite","aria-atomic":"true",children:e.map(n=>s.jsx(dw,{toast:n,onDismiss:t},n.id))})}class tp extends Error{constructor(n,r={}){super(n);Yo(this,"status");Yo(this,"detail");Yo(this,"code");this.name="ApiError",this.status=r.status,this.detail=r.detail,this.code=r.code}}function mw(e){return Array.isArray(e)&&e.map(n=>n&&typeof n=="object"?n.msg||n.message:null).filter(Boolean).join("; ")||null}async function J(e,t={}){const n=await fetch(e,{...t,headers:{...t.body?{"Content-Type":"application/json"}:{},...t.headers||{}}}),r=await n.text();let o=null;if(r)try{o=JSON.parse(r)}catch{o=r}if(!n.ok){const l=o&&typeof o=="object"?o:null,i=mw(l==null?void 0:l.detail)||(l==null?void 0:l.detail)||(l==null?void 0:l.message)||(typeof o=="string"?o:void 0)||n.statusText||"Request failed";throw new tp(i,{status:n.status,detail:l==null?void 0:l.detail,code:l==null?void 0:l.code})}return o??{}}const ri="update-banner-feedback";function pw(){return J("/api/system/check-update")}function hw(){return J("/api/system/update",{method:"POST"})}function _w(){return J("/api/system/restart",{method:"POST"})}function vw(e){sessionStorage.setItem(ri,JSON.stringify(e))}function ww(){const e=sessionStorage.getItem(ri);if(!e)return null;try{return JSON.parse(e)}catch{return sessionStorage.removeItem(ri),null}}function Rl(){sessionStorage.removeItem(ri)}const gw=45e3;function yw(e,t){return e.component==="system"&&e.commit_before&&e.commit_after?t("update_result_system",{before:e.commit_before,after:e.commit_after}):e.component==="frontend"&&e.commit_before&&e.commit_after?t("update_result_frontend",{before:e.commit_before,after:e.commit_after}):e.message||t("update_result_generic")}function Xc(e,t){return e.status==="success"?yw(e,t):e.message||t("update_failed")}function kw(e,t=Date.now()){const n=new URL(e.href);return n.searchParams.set("__ui_reload",String(t)),n.searchParams.delete("__ui_recovery"),n.toString()}function xw(e){window.location.replace(e)}function Sw(){const e=new URL(window.location.href);(e.searchParams.has("__ui_reload")||e.searchParams.has("__ui_recovery"))&&(e.searchParams.delete("__ui_reload"),e.searchParams.delete("__ui_recovery"),window.history.replaceState(null,"",e.toString()))}function Cw({localCommit:e,remoteCommit:t,feedback:n,onDismiss:r,t:o}){const[l,i]=p.useState("idle"),[a,u]=p.useState("");async function c(){i("updating"),u(""),sessionStorage.removeItem("update-banner-dismissed"),Rl();try{const m=await hw();if(!m.success){u(m.message||"Unknown error"),i("error");return}vw({status:"success",component:m.component,message:m.message,commit_before:m.commit_before,commit_after:m.commit_after}),i("restarting"),await _w(),i("waiting");const w=Date.now(),g=window.setInterval(async()=>{try{if((await fetch("/api/servers")).ok){window.clearInterval(g),i("done"),setTimeout(()=>{xw(kw(window.location))},800);return}}catch{}Date.now()-w>=gw&&(window.clearInterval(g),Rl(),u(o("update_wait_timeout")),i("error"))},1500)}catch(m){Rl(),u(m instanceof Error?m.message:String(m)),i("error")}}const d=l==="error"||(n==null?void 0:n.status)==="error"?"is-error":(n==null?void 0:n.status)==="success"?"is-success":"is-info",f=l==="idle"?n:null;return s.jsxs("div",{className:`update-banner ${d}`,role:"status",children:[s.jsx("span",{className:"update-banner-icon",children:"↑"}),s.jsxs("div",{className:"update-banner-body",children:[l==="idle"&&!f&&s.jsx("p",{className:"update-banner-message",children:o("update_available",{local:e,remote:t})}),l==="idle"&&(f==null?void 0:f.status)==="success"&&s.jsxs(s.Fragment,{children:[s.jsx("p",{className:"update-banner-message",children:o("update_success")}),s.jsx("p",{className:"update-banner-detail",children:Xc(f,o)})]}),l==="idle"&&(f==null?void 0:f.status)==="error"&&s.jsxs(s.Fragment,{children:[s.jsx("p",{className:"update-banner-message update-banner-error",children:o("update_failed")}),s.jsx("p",{className:"update-banner-detail update-banner-error",children:Xc(f,o)})]}),l==="updating"&&s.jsx("p",{className:"update-banner-message",children:o("update_pulling")}),l==="restarting"&&s.jsx("p",{className:"update-banner-message",children:o("update_restarting")}),l==="waiting"&&s.jsx("p",{className:"update-banner-message",children:o("update_waiting")}),l==="done"&&s.jsx("p",{className:"update-banner-message",children:o("update_done")}),l==="error"&&s.jsxs("p",{className:"update-banner-message update-banner-error",children:[o("update_failed"),": ",a]})]}),s.jsxs("div",{className:"update-banner-actions",children:[l==="idle"&&!f&&s.jsx("button",{className:"btn btn-primary btn-sm",onClick:c,children:o("update_now")}),(l==="idle"||l==="error")&&s.jsx("button",{className:"update-banner-close",onClick:r,"aria-label":o("update_dismiss"),children:"✕"})]})]})}function Gc({warnings:e,t}){return e.length===0?null:s.jsxs("div",{className:"transfer-warning-list",children:[s.jsx("p",{className:"transfer-warning-title",children:t("transfer_warning_title")}),e.map(n=>s.jsx("p",{className:"transfer-warning-item",children:n},n))]})}function bw({server:e,selectedWorkflowIds:t,expanded:n,onToggleServerSelection:r,onToggleWorkflowSelection:o,onToggleExpanded:l,t:i}){const a=e.workflows.length,u=t.length,c=a>0&&u===a,d=u>0&&u{f.current&&(f.current.indeterminate=d)},[d]),s.jsxs("article",{className:`transfer-export-server ${n?"is-open":""}`,children:[s.jsxs("div",{className:"transfer-export-server-head",children:[s.jsx(En,{ref:f,checked:c,indeterminate:d,onChange:()=>r(e),className:"transfer-export-item transfer-export-item-summary",label:s.jsxs("span",{className:"transfer-export-server-title-row",children:[s.jsx("span",{children:e.name||e.server_id}),e.enabled?null:s.jsx("span",{className:"transfer-chip transfer-chip-muted",children:i("export_server_disabled")})]}),description:i("export_selected_count",{selected:u,total:a})}),s.jsx("button",{type:"button",className:"btn btn-secondary btn-icon transfer-export-toggle","aria-label":i("export_toggle_server",{server:e.name||e.server_id}),onClick:()=>l(e.server_id),children:s.jsx("span",{className:"transfer-export-chevron","aria-hidden":"true"})})]}),s.jsx("div",{className:"transfer-export-workflows-wrap",children:s.jsx("div",{className:"transfer-export-workflows",children:e.workflows.map(m=>s.jsx(En,{checked:t.includes(m.workflow_id),className:"transfer-export-item",onChange:()=>o(e.server_id,m.workflow_id),label:s.jsxs("span",{className:"transfer-export-workflow-title-row",children:[s.jsx("span",{children:m.workflow_id}),m.enabled?null:s.jsx("span",{className:"transfer-chip transfer-chip-muted",children:i("export_workflow_disabled")})]}),description:m.description},`${e.server_id}-${m.workflow_id}`))})})]})}function Nw({title:e,items:t,t:n}){return s.jsxs("section",{className:"transfer-section",children:[s.jsx("h4",{className:"transfer-section-title",children:e}),t.length===0?s.jsx("p",{className:"transfer-empty",children:n("transfer_section_empty")}):s.jsx("ul",{className:"transfer-list",children:t.map((r,o)=>s.jsx("li",{children:r.workflow_id?`${r.server_id}/${r.workflow_id}`:r.server_id},`${r.server_id}-${r.workflow_id||"server"}-${o}`))})]})}function jw(e){var a,u,c;const t=p.useRef(null),n=e.loading?()=>{}:e.onClose,r=p.useMemo(()=>e.exportSelection.servers.reduce((d,f)=>d+f.workflow_ids.length,0),[e.exportSelection]),o=((a=e.exportPreview)==null?void 0:a.warnings.map(d=>d.message))||[],l=e.loading,i=e.loading||r===0;return s.jsx(Dn,{open:e.open,width:"wide",title:e.mode==="export"?e.t("export_bundle_title"):e.t("import_bundle_preview_title"),onClose:n,initialFocusRef:t,actions:s.jsxs(s.Fragment,{children:[s.jsx("button",{type:"button",className:"btn btn-secondary",disabled:e.loading,onClick:n,children:e.t("cancel")}),s.jsx("button",{ref:t,type:"button",className:"btn btn-primary",disabled:e.mode==="export"?i:l,onClick:e.onConfirm,children:e.mode==="export"?e.t("export_bundle_confirm"):e.t("import_bundle_confirm")})]}),children:e.mode==="export"?s.jsx("div",{className:"transfer-modal-body",children:s.jsxs("section",{className:"transfer-panel",children:[s.jsx("p",{className:"transfer-hint",children:e.t("export_panel_hint")}),s.jsx("p",{className:"confirm-modal-message",children:e.t("export_preview_summary",{servers:e.exportSelection.servers.filter(d=>d.workflow_ids.length>0).length,workflows:r,warnings:((u=e.exportPreview)==null?void 0:u.summary.warnings)||0})}),s.jsx("div",{className:"transfer-export-tree",children:(((c=e.exportPreview)==null?void 0:c.servers)||[]).map(d=>{const f=e.exportSelection.servers.find(m=>m.server_id===d.server_id);return s.jsx(bw,{server:d,selectedWorkflowIds:(f==null?void 0:f.workflow_ids)||[],expanded:e.expandedServerIds.includes(d.server_id),onToggleServerSelection:e.onToggleServerSelection,onToggleWorkflowSelection:e.onToggleWorkflowSelection,onToggleExpanded:e.onToggleServerExpanded,t:e.t},d.server_id)})}),s.jsx(Gc,{warnings:o,t:e.t})]})}):s.jsx("div",{className:"transfer-modal-body",children:s.jsxs("section",{className:"transfer-panel",children:[s.jsx("p",{className:"confirm-modal-message",children:e.importPreviewSummary}),s.jsx("div",{className:"transfer-sections",children:e.importSections.map(d=>s.jsx(Nw,{title:d.title,items:d.items,t:e.t},d.title))}),s.jsx(En,{id:"transfer-import-apply-environment",checked:e.applyEnvironment,className:"confirm-modal-checkbox",onChange:d=>e.onApplyEnvironmentChange(d.target.checked),label:e.t("transfer_apply_environment")}),s.jsx(Gc,{warnings:e.importWarnings,t:e.t})]})})})}function Zc(e){return e.map((t,n)=>s.jsx("li",{className:"bulk-import-item",children:s.jsxs("div",{className:"bulk-import-item-main",children:[s.jsxs("div",{className:"bulk-import-item-title-row",children:[s.jsx("span",{className:"bulk-import-item-id",children:t.final_workflow_id||t.workflow_id||"workflow"}),t.workflow_id&&t.final_workflow_id&&t.workflow_id!==t.final_workflow_id?s.jsxs("span",{className:"bulk-import-item-rename",children:[t.workflow_id," -> ",t.final_workflow_id]}):null]}),t.description?s.jsx("p",{className:"bulk-import-item-description",children:t.description}):null,s.jsx("p",{className:"bulk-import-item-source",children:t.source_label}),t.reason?s.jsx("p",{className:"bulk-import-item-reason",children:t.reason}):null]})},`${t.source_label}-${t.final_workflow_id||t.workflow_id||"item"}-${n}`))}function Ew(e){var l,i,a,u,c,d,f;const t=p.useRef(null),n=((l=e.preview)==null?void 0:l.items.filter(m=>m.status==="ready"||m.status==="renamed"))||[],r=((i=e.preview)==null?void 0:i.items.filter(m=>m.status==="failed"))||[],o=n.length>0;return s.jsxs(Dn,{open:e.open,title:e.t("editor_import_comfyui_preview_title"),onClose:e.onClose,width:"wide",initialFocusRef:t,actions:s.jsxs(s.Fragment,{children:[s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:e.onClose,children:e.t("cancel")}),s.jsx("button",{ref:t,type:"button",className:"btn btn-primary",onClick:e.onConfirm,disabled:!o||e.loading,children:e.loading?e.t("bulk_import_loading"):e.t("editor_import_comfyui_preview_confirm_action")})]}),children:[s.jsx("p",{className:"confirm-modal-message",children:e.currentServerLabel?e.t("editor_import_comfyui_preview_message_with_server",{server:e.currentServerLabel}):e.t("editor_import_comfyui_preview_message")}),s.jsxs("div",{className:"bulk-import-summary",children:[s.jsx("span",{className:"panel-meta",children:e.t("editor_import_comfyui_preview_summary_total",{count:((a=e.preview)==null?void 0:a.summary.total)||0})}),s.jsx("span",{className:"panel-meta",children:e.t("editor_import_comfyui_preview_summary_importable",{count:((u=e.preview)==null?void 0:u.summary.importable)||0})}),s.jsx("span",{className:"panel-meta",children:e.t("editor_import_comfyui_preview_summary_renamed",{count:((c=e.preview)==null?void 0:c.summary.renamed)||0})}),s.jsx("span",{className:"panel-meta",children:e.t("editor_import_comfyui_preview_summary_failed",{count:((d=e.preview)==null?void 0:d.summary.failed)||0})})]}),(f=e.preview)!=null&&f.summary.total?s.jsxs("div",{className:"bulk-import-sections",children:[s.jsxs("section",{className:"bulk-import-section","aria-labelledby":"comfyui-preview-importable",children:[s.jsxs("div",{className:"section-header",children:[s.jsx("h4",{id:"comfyui-preview-importable",className:"card-title",children:e.t("editor_import_comfyui_preview_section_importable")}),s.jsx("span",{className:"section-meta",children:e.t("bulk_import_section_count",{count:n.length})})]}),n.length?s.jsx("ul",{className:"bulk-import-list",children:Zc(n)}):s.jsx("div",{className:"empty-state",children:e.t("editor_import_comfyui_preview_empty")})]}),r.length?s.jsxs("section",{className:"bulk-import-section","aria-labelledby":"comfyui-preview-failed",children:[s.jsxs("div",{className:"section-header",children:[s.jsx("h4",{id:"comfyui-preview-failed",className:"card-title",children:e.t("editor_import_comfyui_preview_section_failed")}),s.jsx("span",{className:"section-meta",children:e.t("bulk_import_section_count",{count:r.length})})]}),s.jsx("ul",{className:"bulk-import-list",children:Zc(r)})]}):null]}):s.jsx("div",{className:"empty-state",children:e.t("editor_import_comfyui_preview_empty")})]})}function Iw(e){return e.map((t,n)=>s.jsx("li",{className:"bulk-import-item",children:s.jsxs("div",{className:"bulk-import-item-main",children:[s.jsxs("div",{className:"bulk-import-item-title-row",children:[s.jsx("span",{className:"bulk-import-item-id",children:t.final_workflow_id||t.workflow_id||"workflow"}),t.workflow_id&&t.final_workflow_id&&t.workflow_id!==t.final_workflow_id?s.jsxs("span",{className:"bulk-import-item-rename",children:[t.workflow_id," -> ",t.final_workflow_id]}):null]}),s.jsx("p",{className:"bulk-import-item-source",children:t.source_label}),t.reason?s.jsx("p",{className:"bulk-import-item-reason",children:t.reason}):null]})},`${t.source_label}-${t.final_workflow_id||t.workflow_id||"item"}-${n}`))}function Rw(e){const t=e.report,n=[{title:e.t("bulk_import_section_created"),items:(t==null?void 0:t.items.filter(r=>r.status==="created"))||[]},{title:e.t("bulk_import_section_renamed"),items:(t==null?void 0:t.items.filter(r=>r.status==="renamed"))||[]},{title:e.t("bulk_import_section_skipped"),items:(t==null?void 0:t.items.filter(r=>r.status==="skipped"))||[]},{title:e.t("bulk_import_section_failed"),items:(t==null?void 0:t.items.filter(r=>r.status==="failed"))||[]}];return s.jsxs(Dn,{open:e.open,title:e.t(e.source==="comfyui"?"bulk_import_report_title_comfyui":"bulk_import_report_title_local"),onClose:e.onClose,width:"wide",actions:s.jsx("button",{type:"button",className:"btn btn-primary",onClick:e.onClose,children:e.t("confirm")}),children:[s.jsxs("div",{className:"bulk-import-summary",children:[s.jsx("span",{className:"panel-meta",children:e.t("bulk_import_summary_created",{count:(t==null?void 0:t.summary.created)||0})}),s.jsx("span",{className:"panel-meta",children:e.t("bulk_import_summary_renamed",{count:(t==null?void 0:t.summary.renamed)||0})}),s.jsx("span",{className:"panel-meta",children:e.t("bulk_import_summary_skipped",{count:(t==null?void 0:t.summary.skipped)||0})}),s.jsx("span",{className:"panel-meta",children:e.t("bulk_import_summary_failed",{count:(t==null?void 0:t.summary.failed)||0})})]}),s.jsx("div",{className:"bulk-import-sections",children:n.map(r=>s.jsxs("section",{className:"bulk-import-section","aria-labelledby":`bulk-import-${r.title}`,children:[s.jsxs("div",{className:"section-header",children:[s.jsx("h4",{id:`bulk-import-${r.title}`,className:"card-title",children:r.title}),s.jsx("span",{className:"section-meta",children:e.t("bulk_import_section_count",{count:r.items.length})})]}),r.items.length?s.jsx("ul",{className:"bulk-import-list",children:Iw(r.items)}):s.jsx("div",{className:"empty-state",children:e.t("bulk_import_section_empty")})]},r.title))})]})}function Tw(e){const{report:t,installReport:n}=e,[r,o]=p.useState(new Set),l=(t==null?void 0:t.missing_nodes.filter(m=>m.can_auto_install&&m.source_repo).map(m=>m.source_repo))||[],i=[...new Set(l)];if(r.size===0&&i.length>0&&!n){const m=new Set(i);m.size!==r.size&&o(m)}function a(m){o(w=>{const g=new Set(w);return g.has(m)?g.delete(m):g.add(m),g})}function u(){e.onInstall([...r])}if(!t)return null;const c=n!==null,d=t.missing_nodes.filter(m=>!m.can_auto_install),f=new Map;for(const m of t.missing_nodes)if(m.source_repo){const w=f.get(m.source_repo)||[];w.push(m.class_type),f.set(m.source_repo,w)}return s.jsxs(Dn,{open:e.open,title:e.t("dep_check_title"),onClose:e.onClose,width:"wide",actions:c?s.jsx("button",{type:"button",className:"btn btn-primary",onClick:e.onClose,children:e.t("confirm")}):t.is_ready?s.jsx("button",{type:"button",className:"btn btn-primary",onClick:e.onClose,children:e.t("confirm")}):s.jsxs(s.Fragment,{children:[s.jsx("button",{type:"button",className:"btn btn-ghost",onClick:e.onClose,children:e.t("dep_check_skip")}),i.length>0&&s.jsx("button",{type:"button",className:"btn btn-primary",disabled:e.installing||r.size===0,onClick:u,children:e.installing?e.t("dep_check_installing"):e.t("dep_check_install_selected")})]}),children:[s.jsx("div",{className:"dep-check-summary",children:t.is_ready?s.jsxs("div",{className:"dep-check-ready",children:[s.jsx("span",{className:"dep-check-icon",children:"✅"}),s.jsx("span",{children:e.t("dep_check_all_ready")})]}):s.jsx("p",{className:"dep-check-warning",children:t.summary})}),c&&s.jsxs("section",{className:"dep-check-section",children:[s.jsx("div",{className:"section-header",children:s.jsx("h4",{className:"card-title",children:e.t("dep_check_install_results")})}),s.jsx("ul",{className:"dep-check-list",children:n.results.map(m=>s.jsxs("li",{className:`dep-check-item ${m.success?"dep-check-item-ok":"dep-check-item-fail"}`,children:[s.jsx("span",{className:"dep-check-item-icon",children:m.success?"✅":"❌"}),s.jsxs("div",{className:"dep-check-item-detail",children:[s.jsx("span",{className:"dep-check-item-name",children:m.package_name}),s.jsx("span",{className:"dep-check-item-msg",children:m.message})]})]},m.repo_url))}),n.needs_restart&&s.jsx("p",{className:"dep-check-restart-hint",children:e.t("dep_check_needs_restart")})]}),!c&&i.length>0&&s.jsxs("section",{className:"dep-check-section",children:[s.jsxs("div",{className:"section-header",children:[s.jsx("h4",{className:"card-title",children:e.t("dep_check_missing_nodes")}),s.jsx("span",{className:"section-meta",children:e.t("dep_check_packages_count",{count:i.length})})]}),s.jsx("ul",{className:"dep-check-list",children:i.map(m=>{const w=f.get(m)||[],g=t.missing_nodes.find(y=>y.source_repo===m);return s.jsx("li",{className:"dep-check-item dep-check-item-installable",children:s.jsxs("label",{className:"dep-check-item-label",children:[s.jsx("input",{type:"checkbox",checked:r.has(m),onChange:()=>a(m),disabled:e.installing}),s.jsxs("div",{className:"dep-check-item-detail",children:[s.jsx("span",{className:"dep-check-item-name",children:(g==null?void 0:g.package_name)||m.split("/").pop()}),s.jsx("span",{className:"dep-check-item-nodes",children:w.length<=3?w.join(", "):`${w.slice(0,3).join(", ")} +${w.length-3}`})]})]})},m)})})]}),!c&&d.length>0&&s.jsxs("section",{className:"dep-check-section",children:[s.jsx("div",{className:"section-header",children:s.jsx("h4",{className:"card-title",children:e.t("dep_check_unknown_nodes")})}),s.jsx("ul",{className:"dep-check-list",children:d.map(m=>s.jsxs("li",{className:"dep-check-item dep-check-item-unknown",children:[s.jsx("span",{className:"dep-check-item-icon",children:"⚠️"}),s.jsx("span",{className:"dep-check-item-name",children:m.class_type})]},m.class_type))})]}),!c&&t.missing_models.length>0&&s.jsxs("section",{className:"dep-check-section",children:[s.jsx("div",{className:"section-header",children:s.jsx("h4",{className:"card-title",children:e.t("dep_check_missing_models")})}),s.jsx("ul",{className:"dep-check-list",children:t.missing_models.map(m=>s.jsxs("li",{className:"dep-check-item dep-check-item-model",children:[s.jsx("span",{className:"dep-check-item-icon",children:"📦"}),s.jsxs("div",{className:"dep-check-item-detail",children:[s.jsx("span",{className:"dep-check-item-name",children:m.filename}),s.jsx("span",{className:"dep-check-item-msg",children:e.t("dep_check_model_folder",{folder:m.folder})})]})]},`${m.folder}-${m.filename}`))})]})]})}function Pw(e,t){const n=e.filter(o=>!o.disabled),r=n.findIndex(o=>o.value===t);return{enabledOptions:n,currentIndex:r>=0?r:0}}function Qn({id:e,value:t,options:n,onChange:r,ariaLabel:o,ariaLabelledBy:l,className:i="",disabled:a=!1}){const[u,c]=p.useState(!1),[d,f]=p.useState(null),m=p.useRef(null),w=p.useRef(null),g=p.useId(),y=p.useMemo(()=>n.find(k=>k.value===t)??n[0]??null,[n,t]);function b(){const k=w.current;if(!k)return;const S=k.getBoundingClientRect();f({top:S.bottom+8,left:S.left,width:S.width})}function v(){c(!1)}function _(){document.querySelectorAll(".custom-select-host-open").forEach(k=>{k.classList.remove("custom-select-host-open")})}p.useLayoutEffect(()=>{var S;if(!u){_();return}b();const k=(S=m.current)==null?void 0:S.closest(".card, .app-header, .server-config-container");return k instanceof HTMLElement&&(_(),k.classList.add("custom-select-host-open")),()=>{_()}},[u]),p.useEffect(()=>{if(!u)return;function k(C){var E,L;const j=C.target;(E=m.current)!=null&&E.contains(j)||(L=j==null?void 0:j.closest)!=null&&L.call(j,`[data-custom-select-menu="${g}"]`)||v()}function S(C){var j;C.key==="Escape"&&(v(),(j=w.current)==null||j.focus())}function N(){b()}return document.addEventListener("mousedown",k),document.addEventListener("keydown",S),window.addEventListener("resize",N),window.addEventListener("scroll",N,!0),()=>{document.removeEventListener("mousedown",k),document.removeEventListener("keydown",S),window.removeEventListener("resize",N),window.removeEventListener("scroll",N,!0)}},[g,u]),p.useEffect(()=>()=>_(),[]);function h(k){const{enabledOptions:S,currentIndex:N}=Pw(n,t);if(!S.length)return;const C=(N+k+S.length)%S.length;r(S[C].value)}function x(k){if(!a){if(k.key==="ArrowDown"){k.preventDefault(),h(1);return}if(k.key==="ArrowUp"){k.preventDefault(),h(-1);return}if(k.key==="Enter"||k.key===" "){k.preventDefault(),c(S=>!S);return}k.key==="Escape"&&v()}}return s.jsxs("div",{ref:m,className:`custom-select ${u?"is-open":""} ${a?"is-disabled":""} ${i}`.trim(),children:[s.jsxs("button",{id:e,ref:w,type:"button",className:"custom-select-trigger","aria-haspopup":"listbox","aria-expanded":u,"aria-controls":g,"aria-label":o,"aria-labelledby":l,disabled:a,onClick:()=>!a&&c(k=>!k),onKeyDown:x,children:[s.jsx("span",{className:"custom-select-value",children:(y==null?void 0:y.label)??""}),s.jsx("span",{className:"custom-select-chevron","aria-hidden":"true"})]}),u&&d?hn.createPortal(s.jsx("div",{id:g,className:"custom-select-menu is-open",role:"listbox","data-custom-select-menu":g,style:{position:"fixed",top:`${d.top}px`,left:`${d.left}px`,width:`${d.width}px`},children:n.map(k=>{const S=k.value===t;return s.jsx("button",{type:"button",className:`custom-select-option ${S?"is-selected":""}`.trim(),role:"option","aria-selected":S,disabled:k.disabled,onClick:()=>{var N;r(k.value),v(),(N=w.current)==null||N.focus()},children:k.label},k.value)})}),document.body):null]})}function pt({label:e,htmlFor:t,helpText:n,required:r=!1,className:o="",labelClassName:l="",noMargin:i=!1,children:a}){return s.jsxs("div",{className:`form-group field-shell ${i?"is-no-margin":""} ${o}`.trim(),children:[e!=null?s.jsxs("label",{htmlFor:t,className:`field-label ${l}`.trim(),children:[s.jsx("span",{className:"field-label-text",children:e}),r?s.jsx("span",{className:"field-required","aria-hidden":"true",children:"*"}):null]}):null,a,n?s.jsx("p",{className:"field-help",children:n}):null]})}const Uo=p.forwardRef(function({id:t,label:n,description:r,className:o="",disabled:l,ariaLabel:i,...a},u){const c=p.useId(),d=t??c;return s.jsxs("label",{htmlFor:d,className:["switch-field",l?"is-disabled":"",o].filter(Boolean).join(" "),children:[n!=null||r!=null?s.jsxs("span",{className:"switch-field-copy",children:[n!=null?s.jsx("span",{className:"switch-field-label",children:n}):null,r!=null?s.jsx("span",{className:"switch-field-description",children:r}):null]}):null,s.jsxs("span",{className:"switch-field-control",children:[s.jsx("input",{...a,ref:u,id:d,type:"checkbox",disabled:l,"aria-label":i,className:"switch-input"}),s.jsx("span",{className:"switch-track","aria-hidden":"true",children:s.jsx("span",{className:"switch-thumb"})})]})]})}),Dw=p.forwardRef(function({fieldClassName:t="",textareaClassName:n="",disabled:r,rows:o=5,...l},i){return s.jsx("div",{className:["field-control","textarea-field",r?"is-disabled":"",t].filter(Boolean).join(" "),children:s.jsx("textarea",{...l,ref:i,rows:o,disabled:r,className:["field-textarea",n].filter(Boolean).join(" ")})})}),tt=p.forwardRef(function({fieldClassName:t="",inputClassName:n="",trailingAction:r,disabled:o,type:l="text",...i},a){return s.jsxs("div",{className:["field-control","text-field",r?"has-trailing":"",o?"is-disabled":"",t].filter(Boolean).join(" "),children:[s.jsx("input",{...i,ref:a,disabled:o,type:l,className:["field-input",n].filter(Boolean).join(" ")}),r?s.jsx("div",{className:"field-control-trailing",children:r}):null]})});function Lw(e){const[t,n]=p.useState(!1),[r,o]=p.useState(null),l=p.useRef(null);p.useEffect(()=>()=>{r&&URL.revokeObjectURL(r)},[r]);async function i(a){var c;const u=(c=a.target.files)==null?void 0:c[0];if(u){r&&URL.revokeObjectURL(r),o(URL.createObjectURL(u)),n(!0);try{const d=await e.onUploadImage(e.serverId,u);e.onChange(d)}catch{o(null)}finally{n(!1)}}}return s.jsxs("div",{className:"run-workflow-image-upload",children:[s.jsxs("div",{className:"run-workflow-image-controls",children:[s.jsx("button",{type:"button",className:"btn btn-secondary run-workflow-image-choose-btn",onClick:()=>{var a;return(a=l.current)==null?void 0:a.click()},disabled:t,children:t?e.t("run_workflow_image_uploading"):e.t("run_workflow_image_choose")}),e.value&&s.jsx("span",{className:"run-workflow-image-filename",children:e.value})]}),s.jsx("input",{ref:l,id:e.id,type:"file",accept:"image/*",onChange:i,className:"sr-only"}),r&&s.jsx("img",{src:r,alt:"preview",className:"run-workflow-image-preview"})]})}function Mw(e,t,n){return[e,t.field,t.description].join(" ").toLowerCase().includes("prompt")||typeof n=="string"&&n.length>120}function Ow(e){var r;const t=p.useRef(null),n=p.useMemo(()=>Object.entries(e.schema),[e.schema]);return s.jsxs(Dn,{open:e.open,title:e.t("run_workflow_title",{id:e.workflowId}),onClose:e.onClose,width:"wide",initialFocusRef:t,actions:s.jsxs(s.Fragment,{children:[s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:e.onClose,children:e.t("close")}),s.jsx("button",{ref:t,type:"button",className:"btn btn-primary",disabled:e.loading||e.submitting||n.length===0,onClick:e.onSubmit,children:e.submitting?e.t("run_workflow_running"):e.t("run_workflow_submit")})]}),children:[e.loading?s.jsx("div",{className:"empty-state",children:e.t("loading")}):n.length===0?s.jsx("div",{className:"empty-state",children:e.t("run_workflow_no_params")}):s.jsx("div",{className:"run-workflow-form",children:n.map(([o,l])=>{const i=e.values[o],a=l.type||"string",u=Array.isArray(l.choices)?l.choices:[],c=a==="string"&&Mw(o,l,i);return s.jsx(pt,{label:o,htmlFor:`run-param-${o}`,helpText:l.description,required:l.required,className:"run-workflow-field",children:a==="image"?s.jsx(Lw,{id:`run-param-${o}`,serverId:e.serverId,value:String(i??""),onUploadImage:e.onUploadImage,onChange:d=>e.onChange(o,d),t:e.t}):u.length>0?s.jsx(Qn,{id:`run-param-${o}`,value:String(i??""),className:"is-run-workflow-select",ariaLabel:o,onChange:d=>e.onChange(o,d),options:[...l.required?[]:[{value:"",label:e.t("run_workflow_optional_empty")}],...u.map(d=>({value:String(d),label:String(d)}))]}):a==="boolean"?s.jsx(Uo,{id:`run-param-${o}`,className:"run-workflow-switch",checked:!!i,onChange:d=>e.onChange(o,d.target.checked),label:e.t("run_workflow_boolean_true")}):c?s.jsx(Dw,{id:`run-param-${o}`,fieldClassName:"run-workflow-textarea",value:String(i??""),onChange:d=>e.onChange(o,d.target.value),rows:5}):s.jsx(tt,{id:`run-param-${o}`,fieldClassName:"run-workflow-input",type:a==="int"||a==="float"?"number":"text",step:a==="float"?"any":void 0,value:String(i??""),onChange:d=>e.onChange(o,d.target.value)})},o)})}),e.result?s.jsxs("section",{className:`run-workflow-result ${e.result.status==="success"?"is-success":"is-error"}`,children:[s.jsxs("div",{className:"run-workflow-result-header",children:[s.jsx("h4",{children:e.t("run_workflow_last_result")}),s.jsx("span",{className:`status-badge ${e.result.status==="success"?"status-on":"status-off"}`,children:e.result.status==="success"?e.t("run_workflow_status_success"):e.t("run_workflow_status_error")})]}),e.result.run_id?s.jsxs("p",{className:"run-workflow-meta",children:["run_id: ",e.result.run_id]}):null,e.result.prompt_id?s.jsxs("p",{className:"run-workflow-meta",children:["prompt_id: ",e.result.prompt_id]}):null,e.result.error?s.jsxs("p",{className:"run-workflow-error",children:[s.jsx("strong",{children:e.t("run_workflow_comfyui_error_prefix")})," ",typeof e.result.error=="string"?e.result.error:((r=e.result.error)==null?void 0:r.message)??JSON.stringify(e.result.error)]}):null,Array.isArray(e.result.images)&&e.result.images.length>0?s.jsx("ul",{className:"run-workflow-paths",children:e.result.images.map(o=>s.jsx("li",{children:s.jsx("code",{children:o})},o))}):null]}):null]})}const Fw=new Intl.DateTimeFormat(void 0,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"});function pl(e){if(!e)return"—";const t=new Date(e);return Number.isNaN(t.getTime())?e:Fw.format(t)}function ed(e){return typeof e!="number"||Number.isNaN(e)?"—":e<1e3?`${e} ms`:e<6e4?`${(e/1e3).toFixed(e<1e4?2:1)} s`:`${(e/6e4).toFixed(1)} min`}function Ww(e){return JSON.stringify(e??{},null,2)}function Uw(e){return e==="success"?"status-on":e==="running"?"status-running":e==="queued"?"status-waiting":"status-off"}function Aw(e,t,n,r){return`/api/servers/${encodeURIComponent(e)}/workflow/${encodeURIComponent(t)}/history/${encodeURIComponent(n)}/images/${r}`}function zw(e){var n;return e?(Array.isArray((n=e.result)==null?void 0:n.images)?e.result.images:[]).map((r,o)=>Aw(e.server_id,e.workflow_id,e.run_id,o)):[]}function td(e){return e?e.length>14?`${e.slice(0,8)}…${e.slice(-4)}`:e:"—"}function $w(e){return e.replace(/^(seed|size|width|height|batch_size|num|num_images|max_images|filename_prefix)_\d+$/i,"$1")}function Bw(e){return Object.entries(e||{}).sort(([t],[n])=>t.localeCompare(n))}function Vw(e){return Array.isArray(e)?"array":e===null?"null":typeof e}function Hw(e){return typeof e=="string"?s.jsx("p",{className:"workflow-history-arg-text",children:e||"—"}):typeof e=="number"||typeof e=="boolean"||e===null?s.jsx("code",{className:"workflow-history-arg-inline",children:String(e)}):s.jsx("pre",{className:"workflow-history-arg-json",children:Ww(e)})}const Kw=p.memo(function(t){const n=p.useMemo(()=>Bw(t.data),[t.data]);return s.jsxs("section",{className:"workflow-history-args-panel",children:[s.jsxs("div",{className:"workflow-history-panel-header",children:[s.jsxs("div",{children:[s.jsx("p",{className:"workflow-history-panel-eyebrow",children:t.title}),s.jsx("h4",{children:t.title})]}),s.jsx("span",{className:"workflow-meta-tag",children:n.length})]}),n.length>0?s.jsx("div",{className:"workflow-history-arg-grid",children:n.map(([r,o])=>s.jsxs("article",{className:"workflow-history-arg-card",children:[s.jsxs("div",{className:"workflow-history-arg-card-top",children:[s.jsx("strong",{className:"workflow-history-arg-key",children:$w(r)}),s.jsx("span",{className:"workflow-history-arg-type",children:Vw(o)})]}),s.jsx("div",{className:"workflow-history-arg-value",children:Hw(o)})]},r))}):s.jsx("div",{className:"workflow-history-empty-hint",children:t.t("workflow_history_no_args")})]})});function qw(e){var u,c,d,f,m,w;const t=p.useRef(null),[n,r]=p.useState(0),o=p.useMemo(()=>e.history.find(g=>g.run_id===e.selectedRunId)||null,[e.history,e.selectedRunId]),l=p.useMemo(()=>zw(e.detail),[e.detail]),i=l[n]??null,a=((d=(c=(u=e.detail)==null?void 0:u.result)==null?void 0:c.images)==null?void 0:d[n])??null;return p.useEffect(()=>{r(0)},[e.selectedRunId]),p.useEffect(()=>{n>=l.length&&r(0)},[n,l.length]),s.jsx(Dn,{open:e.open,title:e.t("workflow_history_title",{id:e.workflowId}),onClose:e.onClose,width:"xwide",initialFocusRef:t,actions:s.jsxs(s.Fragment,{children:[s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:e.onClose,children:e.t("close")}),s.jsx("button",{ref:t,type:"button",className:"btn btn-secondary",onClick:e.onRefresh,children:e.t("refresh")}),s.jsx("button",{type:"button",className:"btn btn-danger-soft",disabled:e.loading||e.history.length===0,onClick:e.onClear,children:e.t("workflow_history_clear")})]}),children:s.jsxs("div",{className:"workflow-history-layout",children:[s.jsx("section",{className:"workflow-history-list","aria-label":e.t("workflow_history_title",{id:e.workflowId}),children:e.loading?s.jsx("div",{className:"empty-state",children:e.t("loading")}):e.history.length===0?s.jsx("div",{className:"empty-state",children:e.t("workflow_history_empty")}):e.history.map((g,y)=>s.jsxs("button",{type:"button",className:`workflow-history-item${g.run_id===e.selectedRunId?" is-active":""}`,onClick:()=>e.onSelectRun(g.run_id),children:[s.jsxs("div",{className:"workflow-history-item-top",children:[s.jsx("strong",{className:"workflow-history-item-title",children:e.t("workflow_history_run_label",{index:y+1})}),s.jsx("span",{className:`status-badge ${Uw(g.status)}`,children:g.status})]}),s.jsx("p",{className:"workflow-history-item-meta",children:pl(g.created_at)}),s.jsxs("div",{className:"workflow-history-item-tags",children:[s.jsx("span",{className:"workflow-meta-tag",children:e.t("workflow_history_image_count",{count:g.image_count})}),s.jsx("span",{className:"workflow-meta-tag",children:ed(g.duration_ms)}),g.prompt_id?s.jsxs("span",{className:"workflow-meta-tag",children:["#",td(g.prompt_id)]}):null]}),s.jsx("code",{className:"workflow-history-item-code",children:g.run_id}),g.error_message?s.jsx("p",{className:"workflow-history-item-error",children:g.error_message}):null]},g.run_id))}),s.jsx("section",{className:"workflow-history-detail",children:e.detailLoading?s.jsx("div",{className:"empty-state",children:e.t("loading")}):!e.detail&&!o?s.jsx("div",{className:"empty-state",children:e.t("workflow_history_select")}):e.detail?s.jsxs("div",{className:"workflow-history-detail-stack",children:[s.jsxs("div",{className:"workflow-history-summary-strip",children:[s.jsxs("div",{className:"workflow-history-stat",children:[s.jsx("span",{children:e.t("workflow_history_status")}),s.jsx("strong",{children:e.detail.status})]}),s.jsxs("div",{className:"workflow-history-stat",children:[s.jsx("span",{children:e.t("workflow_history_generated_images")}),s.jsx("strong",{children:((f=e.detail.result)==null?void 0:f.image_count)??l.length})]}),s.jsxs("div",{className:"workflow-history-stat",children:[s.jsx("span",{children:e.t("workflow_history_duration_label")}),s.jsx("strong",{children:ed(e.detail.duration_ms)})]}),s.jsxs("div",{className:"workflow-history-stat",children:[s.jsx("span",{children:e.t("workflow_history_prompt_id")}),s.jsx("strong",{children:td(e.detail.prompt_id)})]})]}),s.jsxs("div",{className:"workflow-history-preview-panel",children:[s.jsxs("div",{className:"workflow-history-panel-header",children:[s.jsxs("div",{children:[s.jsx("p",{className:"workflow-history-panel-eyebrow",children:e.t("workflow_history_preview")}),s.jsx("h4",{children:e.t("workflow_history_images")})]}),i?s.jsx("a",{className:"btn btn-secondary workflow-history-open-image",href:i,target:"_blank",rel:"noreferrer",children:e.t("workflow_history_open_image")}):null]}),i?s.jsx("a",{className:"workflow-history-preview-frame is-large",href:i,target:"_blank",rel:"noreferrer",children:s.jsx("img",{src:i,alt:e.t("workflow_history_image_alt",{index:n+1}),loading:"lazy"})}):s.jsxs("div",{className:"workflow-history-preview-frame is-empty is-large",children:[s.jsx("p",{children:e.t("workflow_history_preview_empty")}),(m=e.detail.error)!=null&&m.message?s.jsx("p",{className:"workflow-history-item-error",children:e.detail.error.message}):null]}),l.length>0?s.jsx("div",{className:"workflow-history-gallery is-filmstrip",children:l.map((g,y)=>s.jsxs("button",{type:"button",className:`workflow-history-thumb${y===n?" is-active":""}`,onClick:()=>r(y),children:[s.jsx("img",{src:g,alt:e.t("workflow_history_image_alt",{index:y+1}),loading:"lazy"}),s.jsx("span",{children:y+1})]},g))}):null]}),s.jsx("div",{className:"workflow-history-code-grid",children:s.jsxs("details",{className:"workflow-history-code-block",children:[s.jsx("summary",{children:e.t("workflow_history_run_summary")}),s.jsxs("div",{className:"workflow-history-meta-card",children:[s.jsxs("div",{className:"workflow-history-detail-row",children:[s.jsx("span",{children:e.t("workflow_history_run_id")}),s.jsx("code",{children:e.detail.run_id})]}),s.jsxs("div",{className:"workflow-history-detail-row",children:[s.jsx("span",{children:e.t("workflow_history_created_at")}),s.jsx("strong",{children:pl(e.detail.created_at)})]}),s.jsxs("div",{className:"workflow-history-detail-row",children:[s.jsx("span",{children:e.t("workflow_history_started_at")}),s.jsx("strong",{children:pl(e.detail.started_at)})]}),s.jsxs("div",{className:"workflow-history-detail-row",children:[s.jsx("span",{children:e.t("workflow_history_finished_at")}),s.jsx("strong",{children:pl(e.detail.finished_at)})]}),a?s.jsxs("div",{className:"workflow-history-path",children:[s.jsx("span",{children:e.t("workflow_history_image_path")}),s.jsx("code",{children:a})]}):null]})]})}),s.jsx(Kw,{title:e.t("workflow_history_resolved_args"),data:e.detail.resolved_args,t:e.t}),(w=e.detail.error)!=null&&w.message?s.jsxs("details",{className:"workflow-history-code-block is-error",open:!0,children:[s.jsx("summary",{children:e.t("workflow_history_error")}),s.jsx("pre",{children:e.detail.error.message})]}):null,s.jsx("div",{className:"workflow-history-detail-actions",children:s.jsx("button",{type:"button",className:"btn btn-danger-soft",onClick:()=>e.onDeleteRun(e.detail.run_id),children:e.t("workflow_history_delete_entry")})})]}):null})]})})}const Qw={title:"ComfyUI OpenClaw Skill",subtitle:"Parse workflows into visual parameter mappings for agents.",lang_btn:"中/EN",global_config:"Global Config",server_url:"ComfyUI Server URL",output_dir:"Image Output Directory",save_config:"Save Config",workflow_manager:"Workflow Manager",workflow_search_placeholder:"Search workflows by name or description",workflow_sort_custom:"Manual",workflow_sort_recent:"Recently Updated",workflow_sort_name:"Name",workflow_sort_name_asc:"Workflow ID (A-Z)",workflow_sort_name_desc:"Workflow ID (Z-A)",workflow_sort_enabled:"Enabled first",run_workflow_short:"Run",workflow_history_short:"History",workflow_batch_actions:"Batch workflow actions",workflow_selected_count:"{count} selected",workflow_selection_mode:"Management mode",workflow_enter_batch_mode:"Manage",workflow_management_active:"Managing",workflow_exit_batch_mode:"Done",workflow_select_all:"Select All",workflow_clear_selection:"Deselect",workflow_delete_selected:"Delete",workflow_select_workflow:"Select workflow {id}",import_local_files:"Import Local Files",import_local_folder:"Import Local Folder",import_all_from_comfyui:"Import All from ComfyUI",bulk_import_loading:"Importing...",workflow_drag_handle:"Drag to reorder workflow {id}",workflow_more_actions:"More actions for workflow {id}",no_workflows:"No workflow mappings configured yet.",no_workflows_match:"No workflows matched the current search.",register_new:"Register New Workflow (Upload & Mapping)",drag_upload:"Choose a workflow import method",after_upload:"Import a single file, a local folder, or workflows in bulk from ComfyUI.",editor_import_source_label:"Workflow import source",editor_import_source_single:"Single Upload",editor_import_source_folder:"Local Folder",editor_import_source_comfyui:"Import all workflows from current server",editor_import_action_single:"Choose File",editor_import_action_folder:"Choose Folder",editor_import_action_comfyui:"Scan Workflows",editor_import_action_comfyui_scanning:"Scanning...",editor_upload_option_single_help:"Upload a single workflow_api.json to start mapping.",editor_upload_option_folder_help:"Import all workflow_api.json files from a local folder.",editor_upload_option_comfyui_help:"Scan the selected ComfyUI server and review its saved workflows before importing them all.",editor_upload_option_comfyui_help_with_server:'Scan saved workflows on server "{server}" and review them before importing them all.',editor_import_comfyui_preview_title:"Review workflows from current server",editor_import_comfyui_preview_message:"We found these saved workflows on the selected server. Confirm to import all importable workflows into the current setup.",editor_import_comfyui_preview_message_with_server:'We found these saved workflows on server "{server}". Confirm to import all importable workflows into the current setup.',editor_import_comfyui_preview_confirm_action:"Import All",editor_import_comfyui_preview_summary_total:"{count} found",editor_import_comfyui_preview_summary_importable:"{count} importable",editor_import_comfyui_preview_summary_renamed:"{count} will be renamed",editor_import_comfyui_preview_summary_failed:"{count} unavailable",editor_import_comfyui_preview_section_importable:"Ready to import",editor_import_comfyui_preview_section_failed:"Needs attention",editor_import_comfyui_preview_empty:"No saved workflows were found on this server.",upload_reminder_title:"Upload Reminder",upload_reminder_api:"Please export the workflow as ComfyUI API format JSON (workflow_api.json), not the editor workflow JSON.",upload_reminder_how:"In ComfyUI, use the API format export option before uploading here.",upload_reminder_path:"After saving, files will be written to data///workflow.json and data///schema.json.",upload_reminder_local_path:"Browsers usually only expose the selected file name during upload, not the full local path.",wf_id_label:"Workflow ID (letters/numbers recommended)",wf_id_placeholder:"e.g. sd_basic",wf_desc_label:"Description (for agent use)",wf_desc_placeholder:"e.g. Generate anime-style base images",register_new_short:"+ New Workflow",back:"Back",wf_basic_info:"Workflow Info",parsed_input:"Parsed Input Node List",save_workflow:"Save Workflow and Mapping Schema",alias:"Alias (exposed name)",ai_desc:"AI Description",ai_desc_placeholder:"e.g. High-quality landscape prompt",type:"Type",type_str:"String",type_int:"Integer",type_float:"Float",type_bool:"Boolean",required:"Required for model",curr_val:"Current value",node_id:"Node ID",err_load_cfg:"Failed to load global config.",ok_save_cfg:"Global config saved successfully!",err_save_cfg:"Failed to save config.",del_wf_confirm:"Delete workflow {id}?",workflow_batch_delete_confirm:"Delete the selected {count} workflows on this server?",workflow_batch_delete_preview:"This will delete: {items}",ok_del_wf:'Workflow "{id}" deleted.',ok_del_wf_batch:"Deleted {count} workflows.",ok_del_wf_batch_partial:"Deleted {deleted} workflows, {missing} were not found.",err_del_wf:"Failed to delete workflow.",err_del_wf_batch:"Failed to delete selected workflows.",ok_wf_load:"Workflow loaded! Please select parameters to expose.",err_invalid_json:"Invalid JSON file.",err_no_id:"Please provide a Workflow ID.",err_no_alias:"Exposed parameter is missing an alias (Node {node} / {val})",warn_no_params:"You have not exposed any parameters. Save anyway?",warn_overwrite_wf:'Workflow ID "{id}" already exists. Overwrite it?',ok_save_wf:"Saved successfully. The agent can now call this workflow.",err_save_wf:"Failed to save workflow.",wf_enabled:"Enabled",wf_disabled:"Disabled",ok_toggle_wf:"Status updated.",ok_toggle_wf_enabled:'Workflow "{id}" enabled.',ok_toggle_wf_disabled:'Workflow "{id}" disabled.',err_toggle_wf:"Failed to update status.",err_load_workflows:"Failed to load workflow list.",err_reorder_workflows:"Failed to save workflow order.",ok_bulk_import_summary:"Import complete. Created {created}, renamed {renamed}, failed {failed}.",err_bulk_import_comfyui:"Failed to import workflows from ComfyUI.",err_bulk_import_comfyui_preview:"Failed to scan workflows from ComfyUI.",err_bulk_import_local:"Failed to import local workflow files.",workflow_count:"{count} workflows",workflow_count_one:"{count} workflow",workflow_count_filtered_one:"{visible} shown / {total} workflow",workflow_count_filtered:"{visible} shown / {total} workflows",loading:"Loading...",toggle_workflow:"Enable or disable workflow {id}",delete_workflow:"Delete workflow {id}",edit_workflow:"Edit workflow {id}",upload_new_version:"Upload New Version",more:"More",edit:"Edit",ok_load_saved_wf:"Saved workflow loaded. You can now adjust its parameter mapping.",err_load_saved_wf:"Failed to load saved workflow details.",save_workflow_edit:"Save Workflow Changes",editor_mode_editing:"Editing saved workflow",editor_mode_create:"Create new workflow mapping",empty_nodes:"Upload a workflow JSON to start mapping parameters.",err_ui_workflow_format:"This file looks like a ComfyUI editor workflow, not workflow_api.json. Please export the API format workflow JSON and upload that file.",err_no_mappable_params:"This workflow JSON was read successfully, but no configurable scalar inputs were found.",server_manager:"Server Manager",export_bundle:"Export Config",import_bundle:"Import Config",bulk_import_report_title_comfyui:"ComfyUI Import Report",bulk_import_report_title_local:"Local Import Report",bulk_import_section_created:"Created",bulk_import_section_renamed:"Renamed",bulk_import_section_skipped:"Skipped",bulk_import_section_failed:"Failed",bulk_import_section_empty:"No items in this section.",bulk_import_section_count:"{count} items",bulk_import_summary_created:"Created: {count}",bulk_import_summary_renamed:"Renamed: {count}",bulk_import_summary_skipped:"Skipped: {count}",bulk_import_summary_failed:"Failed: {count}",dep_check_title:"Dependency Check",dep_check_all_ready:"All dependencies are satisfied. The workflow is ready to run.",dep_check_skip:"Skip",dep_check_install_selected:"Install Selected",dep_check_installing:"Installing...",dep_check_missing_nodes:"Missing Custom Nodes",dep_check_unknown_nodes:"Unknown Nodes (manual install required)",dep_check_missing_models:"Missing Models (manual download required)",dep_check_packages_count:"{count} packages",dep_check_model_folder:"Folder: {folder}",dep_check_install_results:"Installation Results",dep_check_needs_restart:"ComfyUI needs to restart for changes to take effect.",dep_check_loading:"Checking dependencies...",dep_check_btn:"Check Dependencies",err_dep_check:"Failed to check dependencies.",err_dep_install:"Failed to install dependencies.",export_bundle_title:"Export Config",import_bundle_preview_title:"Import Preview",export_bundle_confirm:"Download Bundle",import_bundle_confirm:"Import Bundle",export_panel_hint:"Choose which servers and workflows to export. Everything is selected by default.",export_preview_summary:"This export will include {servers} servers and {workflows} workflows. Warnings: {warnings}.",export_server_workflow_count:"{count} workflows",export_workflow_disabled:"Disabled",export_server_disabled:"Server disabled",export_selected_count:"{selected}/{total} selected",export_toggle_server:"Toggle workflows for {server}",transfer_section_created_servers:"Servers to add",transfer_section_updated_servers:"Servers to update",transfer_section_created_workflows:"Workflows to import",transfer_section_overwritten_workflows:"Workflows to overwrite",transfer_section_skipped_items:"Items to skip",transfer_section_empty:"No items in this section.",transfer_warning_title:"Warnings",ok_transfer_export_started:"Bundle download started.",ok_transfer_import:"Import complete. Added {servers} servers, imported {created} workflows, overwritten {overwritten} workflows.",err_transfer_invalid_bundle:"This file is not a valid bundle JSON.",err_transfer_export_preview:"Failed to preview the export bundle.",err_transfer_export:"Failed to build the export bundle.",err_transfer_preview:"Failed to preview the import bundle.",err_transfer_import:"Failed to import the bundle.",transfer_apply_environment:"Also apply default server, URL, and output directory from the bundle",transfer_preview_summary:"This import will add {servers} servers, update {updated_servers} servers, import {created} workflows, overwrite {overwritten} workflows, and skip {skipped} items. Warnings: {warnings}. Continue?",add_server:"Add Server",server_name:"Server Name",server_id_label:"Server ID",server_id_help:"Optional. Leave blank to auto-generate. It cannot be changed later.",server_name_help:"Name is display-only and can be changed later.",server_type_comfyui:"ComfyUI",server_type_hint_comfyui:"Use this for local or self-hosted ComfyUI instances that expose the standard `/prompt` API.",server_unsupported_short:"(Unsupported)",server_unsupported_reason:'Server type "{type}" is not supported in this branch. Remove or migrate this server before using it.',server_url_label:"Server URL",server_url_help_comfyui:"Directly calls the standard ComfyUI endpoints: `/prompt`, `/history/{id}`, and `/view`.",server_auth_label:"Auth Token (optional)",server_auth_placeholder:"Bearer your-token",server_auth_help:"If the remote server requires authentication, enter the Authorization header value.",comfy_api_key_label:"ComfyUI API Key (optional)",comfy_api_key_placeholder:"comfyui-xxxxxxxx...",comfy_api_key_help:"Required for cloud nodes (Kling, Sora, Nano Banana, etc). Generate at platform.comfy.org.",comfy_api_key_help_prefix:"Required for cloud nodes (Kling, Sora, Nano Banana, etc). Generate at ",comfy_api_key_help_link:"platform.comfy.org",comfy_api_key_help_suffix:".",server_test_connection:"Test Connection",server_test_testing:"Testing…",server_test_ok:"Connected",server_test_fail:"Connection failed",server_output_dir:"Output Directory",no_servers:"No servers configured.",ok_add_server:"Server added successfully.",err_add_server:"Failed to add server.",ok_toggle_server:"Server status updated.",ok_toggle_server_enabled:'Server "{id}" enabled.',ok_toggle_server_disabled:'Server "{id}" disabled.',err_toggle_server:"Failed to update server status.",del_server_confirm:"Delete server {id}? Data files will NOT be removed.",ok_del_server:"Server removed.",ok_del_server_keep_data:"Server removed. Local data was kept.",ok_del_server_with_data:"Server removed. Local data was deleted.",err_del_server:"Failed to remove server.",delete_server_data_checkbox:"Also delete this server's local data in data/",server_enabled:"Enabled",server_disabled:"Disabled",server_agent_visible:"Visible to Agent",server_agent_hidden:"Hidden from Agent",server_agent_visibility_hint:"Controls whether agents can see and use this server",select_server:"Select Server",current_server_config:"Server Config",current_server_title:"Current Server",no_server_selected_short:"No server selected",add_server_toggle:"Add Server",add_server_close:"Close",cancel:"Cancel",close:"Close",confirm:"Confirm",refresh:"Refresh",confirm_action_title:"Confirm Action",delete:"Delete",overwrite:"Overwrite",leave_anyway:"Leave",save_anyway:"Save Anyway",add_server_panel_title:"Add New Server",add_server_modal_title:"Add Server",edit_server_modal_title:"Edit Server",server_import_after_create:"Import all from ComfyUI after save",save_and_connect:"Save and Connect",save_server_changes:"Save Changes",create_first_server:"Create First Server",new_server_name_placeholder:"Local Server",new_server_id_placeholder:"new-server-id",new_server_url_placeholder:"http://10.0.0.1:8188",err_server_id_url_required:"Server ID and URL are required.",err_server_name_id_url_required:"Server ID, name, and URL are required.",err_server_name_url_required:"Server name and URL are required.",err_server_name_required:"Server name is required.",err_select_server_first:"Please add/select a server first.",err_select_server_before_register:"Please add/select a server to register a workflow.",err_no_server_selected:"No server selected.",err_no_workflow_uploaded:"No workflow data uploaded. Please upload a workflow JSON.",editor_step_1:"Upload Workflow",editor_step_2:"Basic Info",editor_step_3:"Map Parameters",editor_step_1_hint:"Step 1: Upload workflow_api.json to parse parameters.",editor_step_2_hint:"Step 2: Fill workflow basic info.",editor_step_3_hint:"Step 3: Review parameter mapping and save.",mapping_search_placeholder:"Search by node, field, alias or description",mapping_sort_node_id_asc:"Node ID (asc)",mapping_sort_node_id_desc:"Node ID (desc)",mapping_sort_class_asc:"Node type (A-Z)",mapping_sort_param_default:"Parameter default",mapping_sort_param_name:"Parameter name (A-Z)",mapping_sort_param_type:"Type (A-Z)",mapping_sort_param_exposed:"Exposed first",mapping_exposed_only:"Only show exposed parameters",mapping_required_only:"Only show required parameters",mapping_apply_recommended:"Auto expose recommended",mapping_expose_visible:"Expose visible",mapping_unexpose_visible:"Unexpose visible",mapping_collapse_configs:"Collapse parameter configs",mapping_expand_configs:"Expand parameter configs",mapping_collapse_all:"Collapse all nodes",mapping_expand_all:"Expand all nodes",mapping_reset_filters:"Reset filters",mapping_summary:"Showing {visible_params}/{total_params} params in {visible_nodes} nodes, exposed: {exposed_params}",mapping_apply_recommended_ok:"Recommended parameters exposed: {count}",mapping_no_recommended_changes:"No additional recommended parameters were found.",mapping_expose_visible_ok:"Visible parameters exposed: {count}",mapping_unexpose_visible_ok:"Visible parameters unexposed: {count}",mapping_no_visible_params:"No visible parameters available for this action.",mapping_no_batch_changes:"No parameters required updates.",empty_nodes_filtered:"No parameters matched current filters.",mapping_shortcuts_hint:"Shortcuts: Ctrl/Cmd+S save, / focus search, Esc clear search",toggle_node:"Toggle node {id}",toggle_param_config:"Toggle parameter config for {field}",confirm_unsaved_leave:"You have unsaved changes in the editor. Leave anyway?",workflow_upgrade_ready:"New version loaded. Review retained, new, and changed parameters before saving.",workflow_upgrade_summary:"{retained} retained, {review} need review, {added} new, {removed} removed",run_workflow_title:"Run workflow {id}",run_workflow_submit:"Run Workflow",run_workflow_running:"Running…",run_workflow_image_choose:"Choose Image",run_workflow_image_uploading:"Uploading…",run_workflow_success:'Workflow "{id}" finished successfully.',run_workflow_error:"Workflow execution failed.",run_workflow_comfyui_error_prefix:"ComfyUI execution error:",workflow_status_running:"Running…",workflow_status_success:"Success",workflow_status_error:"Failed",workflow_status_view_history:"Click to view details",run_workflow_no_params:"This workflow does not expose any runnable parameters.",run_workflow_optional_empty:"Leave empty",run_workflow_boolean_true:"Enabled",run_workflow_last_result:"Latest execution result",run_workflow_status_success:"Success",run_workflow_status_error:"Error",workflow_history_title:"Execution history for {id}",workflow_history_empty:"No execution history yet.",workflow_history_select:"Select a run from the list to inspect its details.",workflow_history_load_error:"Failed to load execution history.",workflow_history_delete_confirm:"Delete this history entry?",workflow_history_delete_success:"History entry deleted.",workflow_history_delete_error:"Failed to delete the history entry.",workflow_history_delete_entry:"Delete Entry",workflow_history_clear:"Clear History",workflow_history_clear_confirm:'Clear all execution history for workflow "{id}"?',workflow_history_clear_success:"Execution history cleared.",workflow_history_clear_error:"Failed to clear execution history.",workflow_history_status:"Status",workflow_history_created_at:"Created",workflow_history_finished_at:"Finished",workflow_history_duration_label:"Duration",workflow_history_duration:"{ms} ms",workflow_history_image_count:"{count} image(s)",workflow_history_preview:"Preview",workflow_history_preview_empty:"No previewable output image was produced for this run.",workflow_history_overview:"Overview",workflow_history_run_summary:"Run summary",workflow_history_run_label:"Run #{index}",workflow_history_run_id:"Run ID",workflow_history_started_at:"Started",workflow_history_prompt_id:"Prompt ID",workflow_history_open_image:"Open full image",workflow_history_image_alt:"Execution result image {index}",workflow_history_image_path:"File path",workflow_history_generated_images:"Generated images",workflow_history_no_args:"No parameters to display.",workflow_history_resolved_args:"Resolved args",workflow_history_error:"Error",workflow_history_images:"Images",migration_status_retained:"Retained",migration_status_review:"Review",migration_status_new:"New",migration_review_hint:"This parameter changed and should be reviewed before saving.",server_status_online:"Online",server_status_offline:"Offline",update_available:"New version available ({local} -> {remote}). Click to update and restart.",update_dismiss:"Dismiss",update_now:"Update Now",update_pulling:"Pulling latest changes…",update_restarting:"Restarting server…",update_waiting:"Waiting for server…",update_done:"Updated! Reloading…",update_success:"Update completed",update_result_system:"Main skill updated from {before} to {after}.",update_result_frontend:"Bundled frontend updated from {before} to {after}.",update_result_generic:"The latest update has been applied.",update_wait_timeout:"The update finished, but the server did not come back in time. Please refresh or restart manually.",update_failed:"Update failed"},np={title:"ComfyUI OpenClaw Skill",subtitle:"解析工作流,为 Agent 构建可视化参数映射。",lang_btn:"EN/中",global_config:"全局配置",server_url:"ComfyUI 服务器地址",output_dir:"图片输出目录",save_config:"保存配置",workflow_manager:"工作流管理器",workflow_search_placeholder:"按工作流名称或描述搜索",workflow_sort_custom:"手动排序",workflow_sort_recent:"最近更新",workflow_sort_name:"名称排序",workflow_sort_name_asc:"工作流 ID(A-Z)",workflow_sort_name_desc:"工作流 ID(Z-A)",workflow_sort_enabled:"已启用优先",run_workflow_short:"运行",workflow_history_short:"历史",workflow_batch_actions:"工作流批量操作",workflow_selected_count:"已选择 {count} 个工作流",workflow_selection_mode:"管理模式",workflow_enter_batch_mode:"管理",workflow_management_active:"管理中",workflow_exit_batch_mode:"完成",workflow_select_all:"全选",workflow_clear_selection:"取消选择",workflow_delete_selected:"删除",workflow_select_workflow:"选择工作流 {id}",import_local_files:"导入本地文件",import_local_folder:"导入本地目录",import_all_from_comfyui:"从 ComfyUI 全量导入",bulk_import_loading:"导入中...",workflow_drag_handle:"拖动以重新排序工作流 {id}",workflow_more_actions:"工作流 {id} 的更多操作",no_workflows:"暂未配置任何工作流映射。",no_workflows_match:"当前搜索条件下没有匹配的工作流。",register_new:"注册新工作流 (上传 & 映射)",register_new_short:"+ 新增工作流",back:"返回",wf_basic_info:"基础信息",drag_upload:"选择工作流导入方式",after_upload:"支持单个上传、本地目录导入,或从 ComfyUI 批量导入。",editor_import_source_label:"工作流导入来源",editor_import_source_single:"单个上传",editor_import_source_folder:"本地目录",editor_import_source_comfyui:"从当前服务器导入全部工作流",editor_import_action_single:"选择文件",editor_import_action_folder:"选择文件夹",editor_import_action_comfyui:"扫描工作流",editor_import_action_comfyui_scanning:"扫描中...",editor_upload_option_single_help:"上传单个 workflow_api.json 开始参数映射。",editor_upload_option_folder_help:"导入本地文件夹中的全部 workflow_api.json 工作流。",editor_upload_option_comfyui_help:"先扫描当前服务器中已保存的工作流,再确认是否全部导入。",editor_upload_option_comfyui_help_with_server:"先扫描服务器「{server}」中已保存的工作流,再确认是否全部导入。",editor_import_comfyui_preview_title:"确认导入当前服务器工作流",editor_import_comfyui_preview_message:"已扫描到当前服务器中保存的工作流。确认后,将把可导入的工作流全部导入到当前配置中。",editor_import_comfyui_preview_message_with_server:"已扫描到服务器「{server}」中保存的工作流。确认后,将把可导入的工作流全部导入到当前配置中。",editor_import_comfyui_preview_confirm_action:"全部导入",editor_import_comfyui_preview_summary_total:"共扫描到 {count} 个",editor_import_comfyui_preview_summary_importable:"可导入 {count} 个",editor_import_comfyui_preview_summary_renamed:"将重命名 {count} 个",editor_import_comfyui_preview_summary_failed:"不可导入 {count} 个",editor_import_comfyui_preview_section_importable:"待导入工作流",editor_import_comfyui_preview_section_failed:"需要处理",editor_import_comfyui_preview_empty:"当前服务器中没有找到可导入的已保存工作流。",upload_reminder_title:"上传提醒",upload_reminder_api:"请先从 ComfyUI 导出 API 格式的 JSON(workflow_api.json),不要上传编辑器工作流 JSON。",upload_reminder_how:"请在 ComfyUI 中使用 API Format 导出功能后,再上传到这里。",upload_reminder_path:"保存成功后,文件会写入 data///workflow.json 和 data///schema.json。",upload_reminder_local_path:"浏览器上传时通常只会暴露文件名,不会显示本地完整路径。",wf_id_label:"工作流 ID (建议字母/数字)",wf_id_placeholder:"例:sd_basic",wf_desc_label:"描述说明 (供 Agent 阅读)",wf_desc_placeholder:"例:生成动漫画风的基础图像",parsed_input:"已解析输入节点列表",save_workflow:"保存工作流及其映射表",alias:"别名 (暴露给 AI 的变量名)",ai_desc:"参数描述 (供 AI 理解)",ai_desc_placeholder:"例:用来控制人物造型的高质量提示词",type:"数据类型",type_str:"文本 (String)",type_int:"整数 (Integer)",type_float:"小数 (Float)",type_bool:"布尔 (Boolean)",required:"生成必须",curr_val:"当前本地缓存值",node_id:"节点标识",err_load_cfg:"加载全局配置失败。",ok_save_cfg:"全局配置保存成功!",err_save_cfg:"保存配置失败。",del_wf_confirm:"确认删除该工作流 {id} 吗?",workflow_batch_delete_confirm:"确认删除当前服务器下已选中的 {count} 个工作流吗?",workflow_batch_delete_preview:"将删除:{items}",ok_del_wf:'工作流 "{id}" 已被删除。',ok_del_wf_batch:"已删除 {count} 个工作流。",ok_del_wf_batch_partial:"已删除 {deleted} 个工作流,{missing} 个未找到。",err_del_wf:"删除工作流失败。",err_del_wf_batch:"批量删除工作流失败。",ok_wf_load:"读取成功!请勾选你想要对外暴露的参数。",err_invalid_json:"无法解析的 JSON 文件格式。",err_no_id:"必须填写一个工作流 ID 才能保存。",err_no_alias:"您勾选暴露的参数缺少别名名称 (节点 {node} / 字段 {val})",warn_no_params:"您没有暴露任何参数。仍然强行保存吗?",warn_overwrite_wf:"工作流 ID「{id}」已存在。是否覆盖它?",ok_save_wf:"已保存!Agent 当前可以调度此任务了。",err_save_wf:"保存工作流失败。",wf_enabled:"已启用",wf_disabled:"已禁用",ok_toggle_wf:"状态已更新。",ok_toggle_wf_enabled:"工作流「{id}」已启用。",ok_toggle_wf_disabled:"工作流「{id}」已禁用。",err_toggle_wf:"更新状态失败。",err_load_workflows:"加载工作流列表失败。",err_reorder_workflows:"保存工作流顺序失败。",ok_bulk_import_summary:"导入完成。新增 {created} 个,重命名 {renamed} 个,失败 {failed} 个。",err_bulk_import_comfyui:"从 ComfyUI 导入工作流失败。",err_bulk_import_comfyui_preview:"扫描 ComfyUI 工作流失败。",err_bulk_import_local:"导入本地工作流文件失败。",workflow_count:"共 {count} 个工作流",workflow_count_one:"共 {count} 个工作流",workflow_count_filtered_one:"显示 {visible} / 共 {total} 个工作流",workflow_count_filtered:"显示 {visible} / 共 {total} 个工作流",loading:"加载中...",toggle_workflow:"启用或禁用工作流 {id}",delete_workflow:"删除工作流 {id}",edit_workflow:"编辑工作流 {id}",upload_new_version:"上传新版本",more:"更多",edit:"编辑",ok_load_saved_wf:"已载入已保存工作流,你现在可以修改参数映射。",err_load_saved_wf:"加载已保存工作流详情失败。",save_workflow_edit:"保存工作流修改",editor_mode_editing:"正在编辑已保存工作流",editor_mode_create:"创建新的工作流映射",empty_nodes:"上传 workflow JSON 后,即可开始配置参数映射。",err_ui_workflow_format:"这个文件看起来是 ComfyUI 的编辑器工作流,不是 workflow_api.json。请导出 API 格式的工作流 JSON 后再上传。",err_no_mappable_params:"这个 workflow JSON 已成功读取,但没有找到可配置的标量输入参数。",server_manager:"服务器管理",export_bundle:"导出配置",import_bundle:"导入配置",bulk_import_report_title_comfyui:"ComfyUI 导入结果",bulk_import_report_title_local:"本地导入结果",bulk_import_section_created:"已新增",bulk_import_section_renamed:"已重命名",bulk_import_section_skipped:"已跳过",bulk_import_section_failed:"失败项",bulk_import_section_empty:"该分组暂无项目。",bulk_import_section_count:"{count} 项",bulk_import_summary_created:"新增:{count}",bulk_import_summary_renamed:"重命名:{count}",bulk_import_summary_skipped:"跳过:{count}",bulk_import_summary_failed:"失败:{count}",dep_check_title:"依赖检测",dep_check_all_ready:"所有依赖已满足,工作流可以运行。",dep_check_skip:"跳过",dep_check_install_selected:"安装选中项",dep_check_installing:"安装中...",dep_check_missing_nodes:"缺失的自定义节点",dep_check_unknown_nodes:"未知节点(需手动安装)",dep_check_missing_models:"缺失的模型文件(需手动下载)",dep_check_packages_count:"{count} 个节点包",dep_check_model_folder:"文件夹:{folder}",dep_check_install_results:"安装结果",dep_check_needs_restart:"需要重启 ComfyUI 才能生效。",dep_check_loading:"正在检测依赖...",dep_check_btn:"检测依赖",err_dep_check:"依赖检测失败。",err_dep_install:"依赖安装失败。",export_bundle_title:"导出配置",import_bundle_preview_title:"导入预览",export_bundle_confirm:"下载 Bundle",import_bundle_confirm:"导入 Bundle",export_panel_hint:"选择要导出的服务器和工作流。默认全部选中。",export_preview_summary:"本次导出将包含 {servers} 个服务器和 {workflows} 个工作流。警告:{warnings}。",export_server_workflow_count:"{count} 个工作流",export_workflow_disabled:"已禁用",export_server_disabled:"服务器已禁用",export_selected_count:"已选 {selected}/{total}",export_toggle_server:"展开或折叠 {server} 的工作流",transfer_section_created_servers:"将新增的服务器",transfer_section_updated_servers:"将更新的服务器",transfer_section_created_workflows:"将导入的工作流",transfer_section_overwritten_workflows:"将覆盖的工作流",transfer_section_skipped_items:"将跳过的项目",transfer_section_empty:"此分组没有项目。",transfer_warning_title:"警告",ok_transfer_export_started:"Bundle 已开始下载。",ok_transfer_import:"导入完成。新增 {servers} 个服务器,导入 {created} 个工作流,覆盖 {overwritten} 个工作流。",err_transfer_invalid_bundle:"该文件不是有效的 bundle JSON。",err_transfer_export_preview:"预检导出 bundle 失败。",err_transfer_export:"构建导出 bundle 失败。",err_transfer_preview:"预检导入 bundle 失败。",err_transfer_import:"导入 bundle 失败。",transfer_apply_environment:"同时应用 bundle 中的默认服务器、URL 和输出目录",transfer_preview_summary:"本次导入将新增 {servers} 个服务器、更新 {updated_servers} 个服务器、导入 {created} 个工作流、覆盖 {overwritten} 个工作流,并跳过 {skipped} 个项目。警告:{warnings}。是否继续?",add_server:"添加服务器",server_name:"服务器名称",server_id_label:"服务器 ID",server_id_help:"可选,不填写则自动生成,后续不可修改。",server_name_help:"名称仅用于显示,后续可以随时修改。",server_type_comfyui:"ComfyUI",server_type_hint_comfyui:"用于本地或自托管的 ComfyUI 实例,调用标准 `/prompt` API。",server_unsupported_short:"(不支持)",server_unsupported_reason:"当前分支不支持服务器类型“{type}”。请先迁移或删除该服务器配置,再继续使用。",server_url_label:"服务器地址",server_url_help_comfyui:"直接调用标准 ComfyUI 端点:`/prompt`、`/history/{id}` 和 `/view`。",server_auth_label:"鉴权令牌(可选)",server_auth_placeholder:"Bearer your-token",server_auth_help:"远程服务器如需鉴权,填入 Authorization header 的值。",comfy_api_key_label:"ComfyUI API Key(可选)",comfy_api_key_placeholder:"comfyui-xxxxxxxx...",comfy_api_key_help:"用于云节点(Kling、Sora、Nano Banana 等)。前往 platform.comfy.org 生成。",comfy_api_key_help_prefix:"用于云节点(Kling、Sora、Nano Banana 等)。前往 ",comfy_api_key_help_link:"platform.comfy.org",comfy_api_key_help_suffix:" 生成。",server_test_connection:"测试连接",server_test_testing:"测试中…",server_test_ok:"连接成功",server_test_fail:"连接失败",server_output_dir:"输出目录",no_servers:"暂无配置的服务器。",ok_add_server:"服务器添加成功。",err_add_server:"添加服务器失败。",ok_toggle_server:"服务器状态已更新。",ok_toggle_server_enabled:"服务器「{id}」已启用。",ok_toggle_server_disabled:"服务器「{id}」已禁用。",err_toggle_server:"更新服务器状态失败。",del_server_confirm:"确认删除服务器 {id}?数据文件不会被删除。",ok_del_server:"服务器已移除。",ok_del_server_keep_data:"服务器已移除,本地 data 数据已保留。",ok_del_server_with_data:"服务器已移除,本地 data 数据已删除。",err_del_server:"移除服务器失败。",delete_server_data_checkbox:"同时删除该服务器在 data/ 中的本地数据",server_enabled:"已启用",server_disabled:"已禁用",server_agent_visible:"对 Agent 可见",server_agent_hidden:"对 Agent 隐藏",server_agent_visibility_hint:"控制 Agent 是否可以发现和使用此服务器",select_server:"选择服务器",current_server_config:"服务器配置",current_server_title:"当前服务器",no_server_selected_short:"未选择服务器",add_server_toggle:"添加服务器",add_server_close:"关闭",cancel:"取消",close:"关闭",confirm:"确认",refresh:"刷新",confirm_action_title:"确认操作",delete:"删除",overwrite:"覆盖",leave_anyway:"仍然离开",save_anyway:"仍然保存",add_server_panel_title:"添加新服务器",add_server_modal_title:"添加服务器",edit_server_modal_title:"编辑服务器",server_import_after_create:"保存后从 ComfyUI 全量导入",save_and_connect:"保存并连接",save_server_changes:"保存修改",create_first_server:"创建第一个服务器",new_server_name_placeholder:"本地服务器",new_server_id_placeholder:"new-server-id",new_server_url_placeholder:"http://10.0.0.1:8188",err_server_id_url_required:"必须填写服务器 ID 和地址。",err_server_name_id_url_required:"必须填写服务器 ID、名称和地址。",err_server_name_url_required:"必须填写服务器名称和地址。",err_server_name_required:"必须填写服务器名称。",err_select_server_first:"请先添加或选择一个服务器。",err_select_server_before_register:"请先添加或选择服务器,再注册工作流。",err_no_server_selected:"当前未选择服务器。",err_no_workflow_uploaded:"未上传工作流数据,请先上传 workflow JSON。",editor_step_1:"上传工作流",editor_step_2:"基础信息",editor_step_3:"参数映射",editor_step_1_hint:"第 1 步:上传 workflow_api.json 解析参数。",editor_step_2_hint:"第 2 步:填写工作流基础信息。",editor_step_3_hint:"第 3 步:检查参数映射并保存。",mapping_search_placeholder:"按节点、字段、别名或描述搜索",mapping_sort_node_id_asc:"节点 ID(升序)",mapping_sort_node_id_desc:"节点 ID(降序)",mapping_sort_class_asc:"节点类型(A-Z)",mapping_sort_param_default:"参数默认顺序",mapping_sort_param_name:"参数名(A-Z)",mapping_sort_param_type:"类型(A-Z)",mapping_sort_param_exposed:"已暴露优先",mapping_exposed_only:"仅显示已暴露参数",mapping_required_only:"仅显示必填参数",mapping_apply_recommended:"一键暴露推荐参数",mapping_expose_visible:"暴露当前可见参数",mapping_unexpose_visible:"取消暴露当前可见参数",mapping_collapse_configs:"折叠全部参数配置",mapping_expand_configs:"展开全部参数配置",mapping_collapse_all:"折叠全部节点",mapping_expand_all:"展开全部节点",mapping_reset_filters:"重置筛选",mapping_summary:"当前显示 {visible_nodes} 个节点中的 {visible_params}/{total_params} 个参数,已暴露 {exposed_params} 个",mapping_apply_recommended_ok:"已暴露推荐参数 {count} 项",mapping_no_recommended_changes:"没有新增可暴露的推荐参数。",mapping_expose_visible_ok:"已暴露当前可见参数 {count} 项",mapping_unexpose_visible_ok:"已取消暴露当前可见参数 {count} 项",mapping_no_visible_params:"当前没有可执行此操作的可见参数。",mapping_no_batch_changes:"没有需要更新的参数。",empty_nodes_filtered:"当前筛选条件下没有匹配参数。",mapping_shortcuts_hint:"快捷键:Ctrl/Cmd+S 保存,/ 聚焦搜索,Esc 清空搜索",toggle_node:"折叠或展开节点 {id}",toggle_param_config:"折叠或展开参数配置 {field}",confirm_unsaved_leave:"编辑页有未保存更改,仍要离开吗?",workflow_upgrade_ready:"已载入新版本,请先检查保留、新增和待确认的参数后再保存。",workflow_upgrade_summary:"已保留 {retained} 个,待确认 {review} 个,新增 {added} 个,移除 {removed} 个",run_workflow_title:"运行工作流 {id}",run_workflow_submit:"运行工作流",run_workflow_running:"运行中…",run_workflow_image_choose:"选择图片",run_workflow_image_uploading:"上传中…",run_workflow_success:"工作流「{id}」运行成功。",run_workflow_error:"工作流运行失败。",run_workflow_comfyui_error_prefix:"ComfyUI 执行出错:",workflow_status_running:"运行中…",workflow_status_success:"成功",workflow_status_error:"失败",workflow_status_view_history:"点击查看详情",run_workflow_no_params:"这个工作流没有暴露可运行参数。",run_workflow_optional_empty:"留空",run_workflow_boolean_true:"启用",run_workflow_last_result:"最近一次执行结果",run_workflow_status_success:"成功",run_workflow_status_error:"失败",workflow_history_title:"工作流 {id} 的执行历史",workflow_history_empty:"暂无执行历史。",workflow_history_select:"从左侧选择一条记录查看详情。",workflow_history_load_error:"加载执行历史失败。",workflow_history_delete_confirm:"确认删除这条历史记录吗?",workflow_history_delete_success:"历史记录已删除。",workflow_history_delete_error:"删除历史记录失败。",workflow_history_delete_entry:"删除记录",workflow_history_clear:"清空历史",workflow_history_clear_confirm:"确认清空工作流「{id}」的所有执行历史吗?",workflow_history_clear_success:"执行历史已清空。",workflow_history_clear_error:"清空执行历史失败。",workflow_history_status:"状态",workflow_history_created_at:"创建时间",workflow_history_finished_at:"结束时间",workflow_history_duration_label:"耗时",workflow_history_duration:"{ms} 毫秒",workflow_history_image_count:"{count} 张图片",workflow_history_preview:"产出预览",workflow_history_preview_empty:"这次执行没有可预览的产出图片。",workflow_history_overview:"执行概览",workflow_history_run_summary:"运行摘要",workflow_history_run_label:"执行 #{index}",workflow_history_run_id:"运行 ID",workflow_history_started_at:"开始时间",workflow_history_prompt_id:"Prompt ID",workflow_history_open_image:"打开原图",workflow_history_image_alt:"执行结果图片 {index}",workflow_history_image_path:"文件路径",workflow_history_generated_images:"产出图片",workflow_history_no_args:"没有可展示的参数。",workflow_history_resolved_args:"解析后参数",workflow_history_error:"错误信息",workflow_history_images:"结果图片",migration_status_retained:"已保留",migration_status_review:"待确认",migration_status_new:"新增",migration_review_hint:"这个参数发生了变化,保存前建议重新检查。",server_status_online:"在线",server_status_offline:"离线",update_available:"发现新版本({local} -> {remote}),点击一键更新并重启。",update_dismiss:"关闭",update_now:"立即更新",update_pulling:"正在拉取最新代码…",update_restarting:"正在重启服务…",update_waiting:"等待服务恢复…",update_done:"更新完成,正在刷新…",update_success:"更新成功",update_result_system:"主程序已从 {before} 更新到 {after}。",update_result_frontend:"前端静态文件已从 {before} 更新到 {after}。",update_result_generic:"最新更新已应用。",update_wait_timeout:"更新已经完成,但服务长时间没有恢复。请手动刷新页面或重启服务。",update_failed:"更新失败"},Jw={...np,subtitle:"解析工作流,為 Agent 構建可視化參數映射。",global_config:"全域配置",save_config:"儲存配置",workflow_manager:"工作流管理器",workflow_search_placeholder:"按工作流名稱或描述搜尋",workflow_sort_custom:"自定義順序",workflow_sort_recent:"最近更新",workflow_sort_name_asc:"工作流 ID(A-Z)",workflow_sort_name_desc:"工作流 ID(Z-A)",workflow_sort_enabled:"已啟用優先",workflow_batch_actions:"工作流批次操作",workflow_selected_count:"已選擇 {count} 個工作流",workflow_selection_mode:"管理模式",workflow_enter_batch_mode:"管理",workflow_management_active:"管理中",workflow_exit_batch_mode:"完成",workflow_select_all:"全選",workflow_clear_selection:"取消選擇",workflow_delete_selected:"刪除",workflow_select_workflow:"選擇工作流 {id}",workflow_drag_handle:"拖動以重新排序工作流 {id}",workflow_more_actions:"工作流 {id} 的更多操作",no_workflows:"暫未配置任何工作流映射。",no_workflows_match:"當前搜尋條件下沒有匹配的工作流。",register_new:"註冊新工作流 (上傳 & 映射)",register_new_short:"+ 新增工作流",back:"返回",wf_basic_info:"基礎資訊",drag_upload:"選擇工作流匯入方式",after_upload:"支援單個上傳、本地目錄匯入,或從 ComfyUI 批次匯入。",editor_import_source_label:"工作流匯入來源",editor_import_source_single:"單個上傳",editor_import_source_folder:"本地目錄",editor_import_source_comfyui:"從目前伺服器匯入全部工作流",editor_import_action_single:"選擇檔案",editor_import_action_folder:"選擇資料夾",editor_import_action_comfyui:"掃描工作流",editor_import_action_comfyui_scanning:"掃描中...",editor_upload_option_single_help:"上傳單個 workflow_api.json 開始參數映射。",editor_upload_option_folder_help:"匯入本地資料夾中的全部 workflow_api.json 工作流。",editor_upload_option_comfyui_help:"先掃描目前伺服器中已儲存的工作流,再確認是否全部匯入。",editor_upload_option_comfyui_help_with_server:"先掃描伺服器「{server}」中已儲存的工作流,再確認是否全部匯入。",editor_import_comfyui_preview_title:"確認匯入目前伺服器工作流",editor_import_comfyui_preview_message:"已掃描到目前伺服器中儲存的工作流。確認後,會把可匯入的工作流全部匯入到目前設定中。",editor_import_comfyui_preview_message_with_server:"已掃描到伺服器「{server}」中儲存的工作流。確認後,會把可匯入的工作流全部匯入到目前設定中。",editor_import_comfyui_preview_confirm_action:"全部匯入",editor_import_comfyui_preview_summary_total:"共掃描到 {count} 個",editor_import_comfyui_preview_summary_importable:"可匯入 {count} 個",editor_import_comfyui_preview_summary_renamed:"將重新命名 {count} 個",editor_import_comfyui_preview_summary_failed:"不可匯入 {count} 個",editor_import_comfyui_preview_section_importable:"待匯入工作流",editor_import_comfyui_preview_section_failed:"需要處理",editor_import_comfyui_preview_empty:"目前伺服器中沒有找到可匯入的已儲存工作流。",upload_reminder_title:"上傳提醒",upload_reminder_api:"請先從 ComfyUI 匯出 API 格式的 JSON(workflow_api.json),不要上傳編輯器工作流 JSON。",upload_reminder_how:"請在 ComfyUI 中使用 API Format 匯出功能後,再上傳到這裡。",wf_desc_label:"描述說明 (供 Agent 閱讀)",wf_desc_placeholder:"例:生成動漫畫風的基礎圖像",parsed_input:"已解析輸入節點列表",save_workflow:"儲存工作流及其映射表",alias:"別名 (暴露給 AI 的變量名)",ai_desc:"參數描述 (供 AI 理解)",type:"資料類型",type_int:"整數 (Integer)",type_float:"小數 (Float)",type_bool:"布林 (Boolean)",curr_val:"當前本地快取值",node_id:"節點標識",err_load_cfg:"載入全域配置失敗。",ok_save_cfg:"全域配置儲存成功!",err_save_cfg:"儲存配置失敗。",del_wf_confirm:"確認刪除該工作流 {id} 嗎?",workflow_batch_delete_confirm:"確認刪除目前伺服器下已選中的 {count} 個工作流嗎?",workflow_batch_delete_preview:"將刪除:{items}",ok_del_wf:'工作流 "{id}" 已被刪除。',ok_del_wf_batch:"已刪除 {count} 個工作流。",ok_del_wf_batch_partial:"已刪除 {deleted} 個工作流,{missing} 個未找到。",err_del_wf:"刪除工作流失敗。",err_del_wf_batch:"批次刪除工作流失敗。",ok_wf_load:"讀取成功!請勾選你想要對外暴露的參數。",err_invalid_json:"無法解析的 JSON 檔案格式。",err_no_id:"必須填寫一個工作流 ID 才能儲存。",err_no_alias:"您勾選暴露的參數缺少別名名稱 (節點 {node} / 欄位 {val})",warn_no_params:"您沒有暴露任何參數。仍然強制儲存嗎?",warn_overwrite_wf:"工作流 ID「{id}」已存在。是否覆蓋它?",ok_save_wf:"已儲存!Agent 現在可以調度此任務了。",err_save_wf:"儲存工作流失敗。",wf_enabled:"已啟用",wf_disabled:"已停用",ok_toggle_wf:"狀態已更新。",ok_toggle_wf_enabled:"工作流「{id}」已啟用。",ok_toggle_wf_disabled:"工作流「{id}」已停用。",err_toggle_wf:"更新狀態失敗。",err_load_workflows:"載入工作流列表失敗。",err_reorder_workflows:"儲存工作流順序失敗。",workflow_count:"共 {count} 個工作流",workflow_count_one:"共 {count} 個工作流",workflow_count_filtered_one:"顯示 {visible} / 共 {total} 個工作流",workflow_count_filtered:"顯示 {visible} / 共 {total} 個工作流",loading:"載入中...",toggle_workflow:"啟用或停用工作流 {id}",delete_workflow:"刪除工作流 {id}",edit_workflow:"編輯工作流 {id}",upload_new_version:"上傳新版本",more:"更多",edit:"編輯",ok_load_saved_wf:"已載入已儲存工作流,你現在可以修改參數映射。",err_load_saved_wf:"載入已儲存工作流詳情失敗。",save_workflow_edit:"儲存工作流修改",editor_mode_editing:"正在編輯已儲存工作流",editor_mode_create:"建立新的工作流映射",empty_nodes:"上傳 workflow JSON 後,即可開始配置參數映射。",err_ui_workflow_format:"這個檔案看起來是 ComfyUI 的編輯器工作流,不是 workflow_api.json。請匯出 API 格式的工作流 JSON 後再上傳。",err_no_mappable_params:"這個 workflow JSON 已成功讀取,但沒有找到可配置的標量輸入參數。",err_bulk_import_comfyui_preview:"掃描 ComfyUI 工作流失敗。",server_manager:"伺服器管理",add_server:"添加伺服器",server_name:"伺服器名稱",server_id_label:"伺服器 ID",server_id_help:"可選,不填寫則自動生成,後續不可修改。",server_name_help:"名稱僅用於顯示,後續可以隨時修改。",server_type_comfyui:"ComfyUI",server_type_hint_comfyui:"用於本地或自託管的 ComfyUI 實例,調用標準 `/prompt` API。",server_unsupported_short:"(不支援)",server_unsupported_reason:"目前分支不支援伺服器類型「{type}」。請先遷移或刪除該伺服器配置,再繼續使用。",server_url_label:"伺服器地址",server_url_help_comfyui:"直接調用標準 ComfyUI 端點:`/prompt`、`/history/{id}` 與 `/view`。",server_auth_label:"鑑權令牌(可選)",server_auth_placeholder:"Bearer your-token",server_auth_help:"遠端伺服器如需鑑權,填入 Authorization header 的值。",comfy_api_key_label:"ComfyUI API Key(可選)",comfy_api_key_placeholder:"comfyui-xxxxxxxx...",comfy_api_key_help:"用於雲端節點(Kling、Sora、Nano Banana 等)。前往 platform.comfy.org 生成。",comfy_api_key_help_prefix:"用於雲端節點(Kling、Sora、Nano Banana 等)。前往 ",comfy_api_key_help_link:"platform.comfy.org",comfy_api_key_help_suffix:" 生成。",server_test_connection:"測試連接",server_test_testing:"測試中…",server_test_ok:"連接成功",server_test_fail:"連接失敗",server_output_dir:"輸出目錄",no_servers:"暫無配置的伺服器。",ok_add_server:"伺服器添加成功。",err_add_server:"添加伺服器失敗。",ok_toggle_server:"伺服器狀態已更新。",ok_toggle_server_enabled:"伺服器「{id}」已啟用。",ok_toggle_server_disabled:"伺服器「{id}」已停用。",err_toggle_server:"更新伺服器狀態失敗。",del_server_confirm:"確認刪除伺服器 {id}?資料檔案不會被刪除。",ok_del_server:"伺服器已移除。",ok_del_server_keep_data:"伺服器已移除,本地 data 資料已保留。",ok_del_server_with_data:"伺服器已移除,本地 data 資料已刪除。",err_del_server:"移除伺服器失敗。",delete_server_data_checkbox:"同時刪除該伺服器在 data/ 中的本地資料",server_enabled:"已啟用",server_disabled:"已停用",server_agent_visible:"對 Agent 可見",server_agent_hidden:"對 Agent 隱藏",server_agent_visibility_hint:"控制 Agent 是否可以發現和使用此伺服器",select_server:"選擇伺服器",current_server_config:"伺服器配置",current_server_title:"當前伺服器",no_server_selected_short:"未選擇伺服器",add_server_toggle:"添加伺服器",add_server_close:"關閉",cancel:"取消",confirm:"確認",confirm_action_title:"確認操作",delete:"刪除",overwrite:"覆蓋",leave_anyway:"仍然離開",save_anyway:"仍然儲存",add_server_panel_title:"添加新伺服器",add_server_modal_title:"添加伺服器",edit_server_modal_title:"編輯伺服器",server_import_after_create:"儲存後從 ComfyUI 全量導入",save_and_connect:"儲存並連線",save_server_changes:"儲存修改",create_first_server:"建立第一個伺服器",new_server_name_placeholder:"本地伺服器",err_server_id_url_required:"必須填寫伺服器 ID 和地址。",err_server_name_id_url_required:"必須填寫伺服器 ID、名稱和地址。",err_server_name_url_required:"必須填寫伺服器名稱和地址。",err_server_name_required:"必須填寫伺服器名稱。",err_select_server_first:"請先添加或選擇一個伺服器。",err_select_server_before_register:"請先添加或選擇伺服器,再註冊工作流。",err_no_server_selected:"當前未選擇伺服器。",err_no_workflow_uploaded:"未上傳工作流資料,請先上傳 workflow JSON。",editor_step_1:"上傳工作流",editor_step_2:"基礎資訊",editor_step_3:"參數映射",editor_step_1_hint:"第 1 步:上傳 workflow_api.json 解析參數。",editor_step_2_hint:"第 2 步:填寫工作流基礎資訊。",editor_step_3_hint:"第 3 步:檢查參數映射並儲存。",mapping_search_placeholder:"按節點、欄位、別名或描述搜尋",mapping_sort_node_id_asc:"節點 ID(升序)",mapping_sort_node_id_desc:"節點 ID(降序)",mapping_sort_class_asc:"節點類型(A-Z)",mapping_sort_param_default:"參數預設順序",mapping_sort_param_name:"參數名(A-Z)",mapping_sort_param_type:"類型(A-Z)",mapping_sort_param_exposed:"已暴露優先",mapping_exposed_only:"僅顯示已暴露參數",mapping_required_only:"僅顯示必填參數",mapping_apply_recommended:"一鍵暴露推薦參數",mapping_expose_visible:"暴露當前可見參數",mapping_unexpose_visible:"取消暴露當前可見參數",mapping_collapse_configs:"摺疊全部參數配置",mapping_expand_configs:"展開全部參數配置",mapping_collapse_all:"摺疊全部節點",mapping_expand_all:"展開全部節點",mapping_reset_filters:"重置篩選",mapping_summary:"當前顯示 {visible_nodes} 個節點中的 {visible_params}/{total_params} 個參數,已暴露 {exposed_params} 個",mapping_apply_recommended_ok:"已暴露推薦參數 {count} 項",mapping_no_recommended_changes:"沒有新增可暴露的推薦參數。",mapping_expose_visible_ok:"已暴露當前可見參數 {count} 項",mapping_unexpose_visible_ok:"已取消暴露當前可見參數 {count} 項",mapping_no_visible_params:"當前沒有可執行此操作的可見參數。",mapping_no_batch_changes:"沒有需要更新的參數。",empty_nodes_filtered:"當前篩選條件下沒有匹配參數。",mapping_shortcuts_hint:"快捷鍵:Ctrl/Cmd+S 儲存,/ 聚焦搜尋,Esc 清空搜尋",toggle_node:"摺疊或展開節點 {id}",toggle_param_config:"摺疊或展開參數配置 {field}",confirm_unsaved_leave:"編輯頁有未儲存更改,仍要離開嗎?",workflow_upgrade_ready:"已載入新版本,請先檢查保留、新增與待確認的參數後再儲存。",workflow_upgrade_summary:"已保留 {retained} 個,待確認 {review} 個,新增 {added} 個,移除 {removed} 個",migration_status_retained:"已保留",migration_status_review:"待確認",migration_status_new:"新增",migration_review_hint:"這個參數已發生變化,建議儲存前重新檢查。",server_status_online:"在線",server_status_offline:"離線",update_available:"發現新版本({local} → {remote}),點擊一鍵更新並重啟。",update_dismiss:"關閉",update_now:"立即更新",update_pulling:"正在拉取最新程式碼…",update_restarting:"正在重啟服務…",update_waiting:"等待服務恢復…",update_done:"更新完成,正在重新整理…",update_success:"更新成功",update_result_system:"主程式已從 {before} 更新到 {after}。",update_result_frontend:"前端靜態檔案已從 {before} 更新到 {after}。",update_result_generic:"最新更新已套用。",update_wait_timeout:"更新已完成,但服務長時間沒有恢復。請手動重新整理頁面或重啟服務。",update_failed:"更新失敗"},nd={en:Qw,zh:np,zh_hant:Jw};function rd(e){if(!e)return"en";const t=String(e).toLowerCase();return t==="zh"||t==="zh-cn"||t==="zh_hans"?"zh":t==="zh_hant"||t==="zh-tw"||t==="zh-hant"?"zh_hant":"en"}function Yw(e,t,n={}){var o;let r=((o=nd[e])==null?void 0:o[t])??nd.en[t]??t;for(const[l,i]of Object.entries(n))r=r.replace(`{${l}}`,String(i));return r}function rp(e){try{return window.localStorage.getItem(e)}catch{return null}}function da(e,t){try{window.localStorage.setItem(e,t)}catch{}}function Xw(e){try{window.localStorage.removeItem(e)}catch{}}function Gw(e){return typeof e=="number"?Number.isInteger(e)?"int":"float":typeof e=="boolean"?"boolean":"string"}function Zw(e,t,n){if(e.includes("KSampler")){if(t==="seed")return{exposed:!0,required:!1,name:t,description:"Random seed (for reproducibility)"};if(t==="steps")return{exposed:!0,required:!1,name:t,description:"Generation steps"}}if((e.includes("CLIPTextEncode")||e.includes("Text")||e.includes("Prompt"))&&(t==="text"||t==="prompt"))return{exposed:!0,required:!0,name:`prompt_${n}`,description:"Text prompt description"};if(e==="EmptyLatentImage"&&["width","height","batch_size"].includes(t))return{exposed:!0,required:!1,name:t,description:`Image ${t}`};if(e==="SaveImage"&&t==="filename_prefix")return{exposed:!0,required:!1,name:t,description:"Output file prefix"};if(e==="LightCCDoubaoImageNode"){if(t==="prompt")return{exposed:!0,required:!0,name:t,description:"Positive image prompt"};if(t==="size")return{exposed:!0,required:!1,name:t,description:"e.g., 1:1,2048x2048"};if(t==="seed")return{exposed:!0,required:!1,name:t,description:"Random seed"};if(t==="num")return{exposed:!0,required:!1,name:t,description:"Number of images to generate"}}return{exposed:!1,required:!1,name:t,description:""}}function eg(e){const t={};return Object.entries(e).forEach(([n,r])=>{const o=r;if(!(o!=null&&o.inputs))return;const l=o.class_type||"";Object.entries(o.inputs).forEach(([i,a])=>{if(Array.isArray(a))return;const u=Zw(l,i,n);t[`${n}_${i}`]={exposed:u.exposed,node_id:Number.parseInt(n,10),field:i,name:u.name,type:Gw(a),required:u.required,description:u.description,default:a,example:a,choices:[],currentVal:a,nodeClass:l||"UnknownNode"}})}),t}function tg(e){return!!(e&&typeof e=="object"&&!Array.isArray(e)&&Array.isArray(e.nodes)&&Array.isArray(e.links))}function fa(e){const t=JSON.parse(e);if(tg(t)){const n=new Error("Unsupported ComfyUI editor workflow format");throw n.code="EDITOR_WORKFLOW_FORMAT",n}return{workflowData:t,schemaParams:eg(t)}}function ng(e){return!e||typeof e!="string"?"":e.replace(/\.[^.]+$/,"").trim()}function rg(e){var t;if(!e||typeof e!="object"||Array.isArray(e))return"";for(const n of Object.values(e)){const r=(t=n==null?void 0:n._meta)==null?void 0:t.title;if(typeof r=="string"&&r.trim())return r.trim()}return""}function og(e){return typeof e!="string"?"":e.trim().replace(/[./\\]+/g,"-").replace(/[^\p{L}\p{N}_-]+/gu,"-").replace(/-+/g,"-").replace(/^[-_]+|[-_]+$/g,"")}function od(e,t=""){var o,l,i,a,u,c,d;const n=e,r=[n.workflow_name,n.name,n.title,(o=n._meta)==null?void 0:o.title,(l=n.extra)==null?void 0:l.workflow_name,(i=n.extra)==null?void 0:i.name,(a=n.extra)==null?void 0:a.title,(u=n.metadata)==null?void 0:u.workflow_name,(c=n.metadata)==null?void 0:c.name,(d=n.metadata)==null?void 0:d.title,ng(t),rg(e)];for(const f of r){const m=og(f);if(m)return m}return"workflow"}function vn(e){return String(e||"").trim().toLowerCase().replace(/[\s_-]+/g,"")}function lg(e){const t={byFieldAndClass:new Map,byFieldAndType:new Map,byAliasAndType:new Map};return Object.entries(e||{}).forEach(([n,r])=>{var f,m,w;const o=vn(r.field),l=vn(r.nodeClass),i=vn(r.type),a=vn(r.name),u=`${o}|${l}`,c=`${o}|${i}`,d=`${a}|${i}`;t.byFieldAndClass.has(u)||t.byFieldAndClass.set(u,[]),(f=t.byFieldAndClass.get(u))==null||f.push([n,r]),t.byFieldAndType.has(c)||t.byFieldAndType.set(c,[]),(m=t.byFieldAndType.get(c))==null||m.push([n,r]),a&&(t.byAliasAndType.has(d)||t.byAliasAndType.set(d,[]),(w=t.byAliasAndType.get(d))==null||w.push([n,r]))}),t}function ig(e,t,n){const r=vn(e.field),o=vn(e.nodeClass),l=vn(e.type),i=vn(e.name),a=[];[t.byFieldAndClass.get(`${r}|${o}`),t.byFieldAndType.get(`${r}|${l}`),i?t.byAliasAndType.get(`${i}|${l}`):null].forEach(d=>{Array.isArray(d)&&d.forEach(f=>a.push(f))});const u=[],c=new Set;return a.filter(([d])=>!n.has(d)).forEach(([d,f])=>{c.has(d)||(c.add(d),u.push([d,f]))}),u.length!==1?null:u[0]}function ld(e,t,n,r=""){const o={...e,exposed:!!t.exposed,name:t.name||e.name,type:t.type||e.type,required:!!t.required,description:t.description||"",default:t.default??e.default,example:t.example??e.example,choices:Array.isArray(t.choices)?[...t.choices]:[...e.choices||[]],migrationStatus:n,migrationReason:r};return t.type&&e.type&&t.type!==e.type&&(o.type=e.type,o.migrationStatus="review",o.migrationReason="type_changed"),o}function sg(e,t){const n=new Set,r=lg(e),o={},l={retained:0,review:0,added:0,removed:0,matched:[],addedKeys:[],removedKeys:[]};return Object.entries(t||{}).forEach(([i,a])=>{var d,f,m;const u=e==null?void 0:e[i];if(u){n.add(i),o[i]=ld(a,u,"retained"),l.retained+=1,(d=l.matched)==null||d.push({previousKey:i,nextKey:i,status:"retained"});return}const c=ig(a,r,n);if(c){const[w,g]=c;n.add(w),o[i]=ld(a,g,"review","fallback_match"),l.review+=1,(f=l.matched)==null||f.push({previousKey:w,nextKey:i,status:"review"});return}o[i]={...a,migrationStatus:"new",migrationReason:"new_param"},l.added+=1,(m=l.addedKeys)==null||m.push(i)}),Object.keys(e||{}).forEach(i=>{var a;n.has(i)||(l.removed+=1,(a=l.removedKeys)==null||a.push(i))}),{schemaParams:o,summary:l}}function ag(e){const t=new Map;return Object.entries(e).forEach(([n,r])=>{var o;t.has(r.node_id)||t.set(r.node_id,{classType:r.nodeClass,params:[]}),(o=t.get(r.node_id))==null||o.params.push({key:n,...r})}),Array.from(t.entries()).sort((n,r)=>Number(n[0])-Number(r[0]))}function ug(e){const t={};let n=0;for(const r of Object.values(e)){if(!r.exposed)continue;if(n+=1,!r.name||!r.name.trim())return{finalSchema:null,exposedCount:n,missingAlias:r};const o=r.name.trim();t[o]={node_id:r.node_id,field:r.field,required:!!r.required,type:r.type,description:r.description||""},r.default!==void 0&&(t[o].default=r.default),r.example!==void 0&&(t[o].example=r.example),Array.isArray(r.choices)&&r.choices.length&&(t[o].choices=r.choices)}return{finalSchema:t,exposedCount:n,missingAlias:null}}function cg(e,t){const n={...fa(JSON.stringify(e)).schemaParams},r=Object.entries(t||{});return r.some(([,l])=>l&&typeof l=="object"&&"exposed"in l)?(r.forEach(([l,i])=>{if(!n[l])return;const a=i;n[l]={...n[l],exposed:!!a.exposed,name:String(a.name||n[l].name),type:String(a.type||n[l].type),required:!!a.required,description:String(a.description||""),default:a.default??n[l].default,example:a.example??n[l].example,choices:Array.isArray(a.choices)?[...a.choices]:[...n[l].choices||[]]}}),n):(r.forEach(([l,i])=>{const a=i,u=`${a.node_id}_${a.field}`;n[u]&&(n[u]={...n[u],exposed:!0,name:l,type:String(a.type||n[u].type),required:!!a.required,description:String(a.description||""),default:a.default??n[u].default,example:a.example??n[u].example,choices:Array.isArray(a.choices)?[...a.choices]:[...n[u].choices||[]]})}),n)}function dg(e){return{workflowData:e.workflow_data,schemaParams:cg(e.workflow_data,e.schema_params),workflowId:e.workflow_id,description:e.description||"",editingWorkflowId:e.workflow_id,hasUnsavedChanges:!1,upgradeSummary:null}}function fg(e){const t=new Set(["prompt","text","negative_prompt","seed","steps","cfg","denoise","width","height","batch_size","filename_prefix"]);let n=0;const r={...e};return Object.entries(r).forEach(([o,l])=>{!t.has(l.field)||l.exposed||(r[o]={...l,exposed:!0,name:l.name||l.field},n+=1)}),{nextSchemaParams:r,changedCount:n}}function Xr(e,t,n){return Math.max(t,Math.min(n,e))}function mg(e){const t=(e||"").replace("#","").trim();return/^[0-9a-fA-F]{6}$/.test(t)?{r:Number.parseInt(t.slice(0,2),16),g:Number.parseInt(t.slice(2,4),16),b:Number.parseInt(t.slice(4,6),16)}:{r:160,g:34,b:59}}function pg(e,t,n){const r=Xr((n-e)/Math.max(1e-6,t-e),0,1);return r*r*(3-2*r)}const hg=[[0,8,2,10],[12,4,14,6],[3,11,1,9],[15,7,13,5]];function _g(e,t){return(hg[t&3][e&3]+.5)/16}function vg(e={}){if(typeof window>"u"||typeof document>"u")return null;const t={variant:"circle",pixelSize:4,color:"#a0223b",patternScale:2,patternDensity:1,pixelSizeJitter:0,enableRipples:!0,rippleSpeed:.4,rippleThickness:.12,rippleIntensityScale:1.5,liquid:!1,liquidStrength:.12,liquidWobbleSpeed:5,speed:.5,edgeFade:.25,transparent:!0,...e},n=window.matchMedia("(prefers-reduced-motion: reduce)").matches,r=mg(t.color),o=document.createElement("canvas");o.id="pixel-blast-bg",o.setAttribute("aria-hidden","true"),document.body.prepend(o);const l=o.getContext("2d",{alpha:!0,desynchronized:!0});if(!l)return o.remove(),null;let i=0,a=0,u=0,c=0,d=null,f=0;const m=n?1e3/12:1e3/28,w=Array.from({length:6}).map((h,x)=>({x:Math.random(),y:Math.random(),r:.13+Math.random()*.2,vx:(Math.random()*2-1)*(22e-5+x*4e-5),vy:(Math.random()*2-1)*(22e-5+x*4e-5)}));function g(){i=Math.max(1,window.innerWidth),a=Math.max(1,window.innerHeight);const h=Xr(window.devicePixelRatio||1,1,2);o.width=Math.floor(i*h),o.height=Math.floor(a*h),o.style.width=`${i}px`,o.style.height=`${a}px`,l.setTransform(h,0,0,h,0,0),u=Math.ceil(i/t.pixelSize),c=Math.ceil(a/t.pixelSize)}function y(h){const x=t.speed*(n?.45:1);w.forEach((k,S)=>{const N=t.liquid?Math.sin(performance.now()*.001*t.liquidWobbleSpeed+S)*t.liquidStrength*5e-4:0;k.x+=(k.vx+N)*h*x,k.y+=(k.vy-N)*h*x,(k.x<-.15||k.x>1.15)&&(k.vx*=-1),(k.y<-.15||k.y>1.15)&&(k.vy*=-1)})}function b(h,x,k){let S=0;for(const C of w){const j=h-C.x,E=x-C.y,L=j*j+E*E,B=C.r*C.r;S+=Math.exp(-L/(B*(t.patternScale*.9)))}if(S=S/w.length*1.9*t.patternDensity,t.enableRipples){const C=h-.5,j=x-.5,E=Math.sqrt(C*C+j*j),L=E*17-k*(2.3*t.rippleSpeed),B=Xr(t.rippleThickness,.04,.45),F=Math.exp(-E*(4.2/Math.max(.1,B)));S+=Math.sin(L)*F*.2*t.rippleIntensityScale}const N=Math.min(h,1-h,x,1-x);return S*pg(0,Xr(t.edgeFade,.04,.49),N)}function v(h){if(h-f0?(Math.random()-.5)*t.pixelSizeJitter:0,F=C*t.pixelSize,G=N*t.pixelSize,Re=Math.max(1,t.pixelSize+B),Xe=Xr(S+L*.18,.08,.62);l.fillStyle=`rgba(${r.r}, ${r.g}, ${r.b}, ${Xe})`,t.variant==="circle"?(l.beginPath(),l.arc(F+Re*.5,G+Re*.5,Re*.38,0,Math.PI*2),l.fill()):l.fillRect(F,G,Re,Re)}d=window.requestAnimationFrame(v)}function _(){g()}return g(),d=window.requestAnimationFrame(v),window.addEventListener("resize",_),()=>{d!==null&&window.cancelAnimationFrame(d),window.removeEventListener("resize",_),o.remove()}}const wg=5e3;function gg(e){const t=p.useRef(e);return p.useEffect(()=>{t.current=e},[e]),t}function yg(e){const t=gg(e.refreshWorkflows);p.useEffect(()=>{if(!e.enabled)return;let n=!1,r=null,o=!1,l=!1;const i=()=>{r!==null&&(window.clearTimeout(r),r=null)},a=()=>{i(),!(n||document.visibilityState!=="visible")&&(r=window.setTimeout(()=>{u()},wg))},u=()=>{if(i(),!(n||document.visibilityState!=="visible")){if(o){l=!0;return}o=!0,t.current().catch(()=>{}).finally(()=>{if(o=!1,!n){if(l){l=!1,u();return}a()}})}},c=()=>{if(document.visibilityState!=="visible"){l=!1,i();return}u()};return a(),window.addEventListener("focus",c),document.addEventListener("visibilitychange",c),()=>{n=!0,l=!1,i(),window.removeEventListener("focus",c),document.removeEventListener("visibilitychange",c)}},[e.enabled,t])}const kg=3e3;function xg(e){p.useEffect(()=>{const t=ww();if(e.setUpdateFeedback(t),t||sessionStorage.getItem("update-banner-dismissed"))return;const n=window.setTimeout(()=>{pw().then(r=>{r.has_update&&e.setUpdateInfo(r)}).catch(()=>{})},kg);return()=>window.clearTimeout(n)},[e.setUpdateFeedback,e.setUpdateInfo])}function Sg(e){return!!(e&&(e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.tagName==="SELECT"||e.isContentEditable))}function Cg(e){p.useEffect(()=>{da("ui-lang",e.language)},[e.language]),p.useEffect(()=>{const t=e.toasts.map(n=>window.setTimeout(()=>e.dismissToast(n.id),3200));return()=>{t.forEach(n=>window.clearTimeout(n))}},[e.dismissToast,e.toasts]),p.useEffect(()=>{Promise.all([e.loadInitialServers(),e.refreshWorkflows()]).catch(t=>{e.pushToast("error",t instanceof Error?t.message:e.t("err_load_cfg"))})},[]),yg({enabled:!e.isEditorRoute,refreshWorkflows:e.refreshWorkflows}),xg({setUpdateFeedback:e.setUpdateFeedback,setUpdateInfo:e.setUpdateInfo}),p.useEffect(()=>vg({variant:"circle",pixelSize:4,color:"#a0223b",patternScale:2,patternDensity:1,pixelSizeJitter:0,enableRipples:!0,rippleSpeed:.4,rippleThickness:.12,rippleIntensityScale:1.5,speed:.5,edgeFade:.25,transparent:!0})||void 0,[]),p.useEffect(()=>{e.isEditorRoute&&window.scrollTo({top:0,behavior:"smooth"})},[e.isEditorRoute]),p.useEffect(()=>{const t=n=>{e.hasUnsavedChanges&&(n.preventDefault(),n.returnValue="")};return window.addEventListener("beforeunload",t),()=>window.removeEventListener("beforeunload",t)},[e.hasUnsavedChanges]),p.useEffect(()=>{function t(n){var l;if(!e.isEditorRoute||e.confirmOpen||e.serverModalOpen||e.transferModalOpen)return;const r=n.target,o=Sg(r);if((n.ctrlKey||n.metaKey)&&n.key.toLowerCase()==="s"){n.preventDefault(),e.saveWorkflow();return}if(!o&&n.key==="/"){n.preventDefault(),(l=e.mappingSearchRef.current)==null||l.focus();return}n.key==="Escape"&&document.activeElement===e.mappingSearchRef.current&&e.editorQuery&&e.clearEditorQuery()}return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e.clearEditorQuery,e.confirmOpen,e.editorQuery,e.mappingSearchRef,e.saveWorkflow,e.serverModalOpen,e.transferModalOpen,e.isEditorRoute])}function bg(e){const t=p.useMemo(()=>{var u;return e.currentServerId&&e.servers.some(c=>c.id===e.currentServerId)?e.currentServerId:e.defaultServerId&&e.servers.some(c=>c.id===e.defaultServerId)?e.defaultServerId:((u=e.servers[0])==null?void 0:u.id)||null},[e.currentServerId,e.defaultServerId,e.servers]),n=p.useMemo(()=>e.servers.find(u=>u.id===t)||null,[t,e.servers]),r=n&&!n.unsupported?n.id:null,o=p.useMemo(()=>e.workflows.filter(u=>u.server_id===r),[r,e.workflows]),l=p.useMemo(()=>{const u=[...o];switch(e.workflowSort){case"updated_desc":u.sort((d,f)=>(f.updated_at||0)-(d.updated_at||0));break;case"name_asc":u.sort((d,f)=>d.id.localeCompare(f.id));break;case"name_desc":u.sort((d,f)=>f.id.localeCompare(d.id));break;case"enabled_first":u.sort((d,f)=>d.enabled!==f.enabled?d.enabled?-1:1:d.id.localeCompare(f.id));break}const c=e.workflowSearch.trim().toLowerCase();return c?u.filter(d=>[d.id,d.description,d.server_name,d.server_id,d.source_label,...d.tags||[]].join(" ").toLowerCase().includes(c)):u},[e.workflowSearch,e.workflowSort,o]),i=p.useMemo(()=>{const u=e.editorFilters.query.trim().toLowerCase();return[...ag(e.schemaParams)].sort((f,m)=>e.editorFilters.nodeSort==="node_id_desc"?Number(m[0])-Number(f[0]):e.editorFilters.nodeSort==="class_asc"?String(f[1].classType).localeCompare(String(m[1].classType)):Number(f[0])-Number(m[0])).map(([f,m])=>{const w=[...m.params].sort((g,y)=>{switch(e.editorFilters.paramSort){case"field_asc":return g.field.localeCompare(y.field);case"type_asc":return String(g.type).localeCompare(String(y.type));case"exposed_first":return g.exposed!==y.exposed?g.exposed?-1:1:g.field.localeCompare(y.field);default:return 0}}).filter(g=>e.editorFilters.exposedOnly&&!g.exposed||e.editorFilters.requiredOnly&&!g.required?!1:u?[m.classType,String(f),g.field,g.name,g.description,String(g.currentVal??"")].join(" ").toLowerCase().includes(u):!0);return[String(f),{classType:m.classType,params:w}]}).filter(([,f])=>f.params.length>0)},[e.editorFilters,e.schemaParams]),a=p.useMemo(()=>{const u=Object.values(e.schemaParams).length;if(!u)return"";const c=Object.values(e.schemaParams).filter(f=>f.exposed).length,d=i.reduce((f,[,m])=>f+m.params.length,0);return e.t("mapping_summary",{visible_params:d,total_params:u,exposed_params:c,visible_nodes:i.length})},[e.schemaParams,i,e.t]);return{currentServer:n,effectiveServerId:r,currentServerWorkflows:o,visibleWorkflows:l,groupedNodes:i,mappingSummaryText:a,editorEmptyStateMessageKey:Object.keys(e.schemaParams).length===0?"empty_nodes":"empty_nodes_filtered"}}function id(){return{id:"",name:"",url:"",auth:"",comfy_api_key:"",enabled:!0,output_dir:"./outputs"}}function Tl(){return{workflowData:null,schemaParams:{},workflowId:"",description:"",editingWorkflowId:null,hasUnsavedChanges:!1,upgradeSummary:null}}function sd(){return{query:"",exposedOnly:!1,requiredOnly:!1,nodeSort:"node_id_asc",paramSort:"default"}}function Ng(){return{open:!1,title:"",message:"",confirmLabel:"",cancelLabel:"",tone:"primary"}}function jg(e,t){return{id:`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,type:e,message:t}}function Eg(){const[e,t]=p.useState(Ng());function n(){t(l=>({...l,open:!1,onResolve:void 0}))}function r(l){const i=e.checkboxChecked??!1,a=e.onResolve;n(),a==null||a(l,i)}async function o(l){return new Promise(i=>{t({...l,open:!0,onResolve:a=>i(a)})})}return{confirmState:e,setConfirmState:t,resolveConfirm:r,confirm:o}}function Ig(){return J("/api/servers")}function Rg(e){return J("/api/servers",{method:"POST",body:JSON.stringify(e)})}function Tg(e,t){return J(`/api/servers/${encodeURIComponent(e)}`,{method:"PUT",body:JSON.stringify(t)})}function Pg(e,t){return J(`/api/servers/${encodeURIComponent(e)}/toggle`,{method:"POST",body:JSON.stringify(t)})}function Dg(e,t){return J(`/api/servers/${encodeURIComponent(e)}?delete_data=${t?"true":"false"}`,{method:"DELETE"})}function Lg(e){return J(`/api/servers/${encodeURIComponent(e)}/status`)}function Mg(e,t){return J("/api/servers/test-connection",{method:"POST",body:JSON.stringify({url:e,auth:t})})}function op(e,t){var r,o;const n=e.name.trim()||((r=e.id)==null?void 0:r.trim())||t||"";return{...e,id:((o=e.id)==null?void 0:o.trim())||"",name:n,url:e.url.trim(),output_dir:e.output_dir.trim()||"./outputs"}}function Og(e,t,n){const r=op(e,"");return r.name?r.url?"":n(t==="edit"?"err_server_name_id_url_required":"err_server_name_url_required"):n("err_server_name_required")}function Fg(e){const[t,n]=p.useState([]),[r,o]=p.useState(null),[l,i]=p.useState(()=>rp("ui-server")),[a,u]=p.useState(!1),[c,d]=p.useState("add"),[f,m]=p.useState(id()),w=p.useRef(new Set);function g(k){i(k),da("ui-server",k)}async function y(){var L,B;const k=await Ig(),S=k.servers||[],N=S.filter(F=>!F.unsupported),C=l&&S.some(F=>F.id===l)?l:k.default_server||((L=S[0])==null?void 0:L.id)||null,j=S.find(F=>F.id===C)||null,E=j!=null&&j.unsupported&&((B=N[0])==null?void 0:B.id)||C;S.filter(F=>F.unsupported).forEach(F=>{w.current.has(F.id)||(w.current.add(F.id),e.pushToast("info",e.t("server_unsupported_reason",{type:F.server_type||"unknown"})))}),n(S),o(k.default_server||null),i(E),E?da("ui-server",E):Xw("ui-server")}function b(){d("add"),m(id()),u(!0)}function v(k){d("edit"),m({id:k.id,name:k.name,url:k.url,auth:k.auth||"",comfy_api_key:k.comfy_api_key||"",enabled:k.enabled,output_dir:k.output_dir}),u(!0)}async function _(k=!1,S){const N=Og(f,c,e.t);if(N){e.pushToast("error",N);return}const C=op(f,l||""),j=String(f.id||l||"").trim();try{if(c==="add"){const E=await Rg(C);await y(),g(E.server.id),u(!1),e.pushToast("success",e.t("ok_add_server")),k?await(S==null?void 0:S(E.server.id)):await e.refreshWorkflows()}else j&&(await Tg(j,C),await y(),await e.refreshWorkflows(),u(!1),e.pushToast("success",e.t("ok_save_cfg")))}catch(E){e.pushToast("error",E instanceof Error?E.message:e.t("err_add_server"))}}async function h(k,S){try{await Pg(k.id,{enabled:S}),await y(),await e.refreshWorkflows(),e.pushToast("success",e.t(S?"ok_toggle_server_enabled":"ok_toggle_server_disabled",{id:k.name||k.id}))}catch(N){e.pushToast("error",N instanceof Error?N.message:e.t("err_toggle_server"))}}function x(k){e.setConfirmState({open:!0,title:e.t("confirm_action_title"),message:e.t("del_server_confirm",{id:k.id}),confirmLabel:e.t("delete"),cancelLabel:e.t("cancel"),tone:"danger",checkboxLabel:e.t("delete_server_data_checkbox"),checkboxChecked:!1,onResolve:async(S,N)=>{if(S)try{await Dg(k.id,N),await y(),await e.refreshWorkflows(),e.pushToast("success",e.t(N?"ok_del_server_with_data":"ok_del_server_keep_data"))}catch(C){e.pushToast("error",C instanceof Error?C.message:e.t("err_del_server"))}}})}return{servers:t,defaultServerId:r,currentServerId:l,serverModalOpen:a,serverModalMode:c,serverForm:f,setServerForm:m,setServerModalOpen:u,setCurrentServerId:g,loadInitialServers:y,handleAddServer:b,handleEditServer:v,handleSubmitServerModal:_,handleToggleServer:h,requestDeleteServer:x}}function Wg(){const[e,t]=p.useState([]);function n(o,l){t(i=>[...i.slice(-3),jg(o,l)])}function r(o){t(l=>l.filter(i=>i.id!==o))}return{toasts:e,dismissToast:r,pushToast:n}}const Ug="modulepreload",Ag=function(e){return"/static/"+e},ad={},zg=function(t,n,r){let o=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),a=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));o=Promise.allSettled(n.map(u=>{if(u=Ag(u),u in ad)return;ad[u]=!0;const c=u.endsWith(".css"),d=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${u}"]${d}`))return;const f=document.createElement("link");if(f.rel=c?"stylesheet":Ug,c||(f.as="script"),f.crossOrigin="",f.href=u,a&&f.setAttribute("nonce",a),document.head.appendChild(f),c)return new Promise((m,w)=>{f.addEventListener("load",m),f.addEventListener("error",()=>w(new Error(`Unable to preload CSS for ${u}`)))})}))}function l(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return o.then(i=>{for(const a of i||[])a.status==="rejected"&&l(a.reason);return t().catch(l)})};function $g(e,t,n,r,o){const l={...e,[n]:{...e[n],[r]:o}},i=new Set(t);return r==="exposed"&&o===!1&&i.delete(n),{schemaParams:l,expandedParamKeys:i}}function Bg(e,t,n,r){const o={...e},l=new Set(t);let i=0;return n.forEach(a=>{const u=o[a];!u||u.exposed===r||(o[a]={...u,exposed:r,name:r?u.name||u.field:u.name},r||l.delete(a),i+=1)}),{schemaParams:o,expandedParamKeys:l,changedCount:i}}function Vg(){return J("/api/workflows")}function oi(e,t){return J(`/api/servers/${encodeURIComponent(e)}/workflow/${encodeURIComponent(t)}`)}function ud(e,t){return J(`/api/servers/${encodeURIComponent(e)}/workflow/save`,{method:"POST",body:JSON.stringify(t)})}function Hg(e,t,n){return J(`/api/servers/${encodeURIComponent(e)}/workflow/${encodeURIComponent(t)}/toggle`,{method:"POST",body:JSON.stringify(n)})}function Kg(e,t){return J(`/api/servers/${encodeURIComponent(e)}/workflow/${encodeURIComponent(t)}`,{method:"DELETE"})}function qg(e,t){return J(`/api/servers/${encodeURIComponent(e)}/workflows/batch-delete`,{method:"POST",body:JSON.stringify(t)})}function Qg(e,t){return J(`/api/servers/${encodeURIComponent(e)}/workflows/reorder`,{method:"POST",body:JSON.stringify(t)})}function Jg(e,t,n){return J(`/api/servers/${encodeURIComponent(e)}/workflow/${encodeURIComponent(t)}/run`,{method:"POST",body:JSON.stringify({args:n})})}function Yg(e,t){return J(`/api/servers/${encodeURIComponent(e)}/workflow/${encodeURIComponent(t)}/history`)}function cd(e,t,n){return J(`/api/servers/${encodeURIComponent(e)}/workflow/${encodeURIComponent(t)}/history/${encodeURIComponent(n)}`)}function Xg(e,t,n){return J(`/api/servers/${encodeURIComponent(e)}/workflow/${encodeURIComponent(t)}/history/${encodeURIComponent(n)}`,{method:"DELETE"})}function Gg(e,t){return J(`/api/servers/${encodeURIComponent(e)}/workflow/${encodeURIComponent(t)}/history`,{method:"DELETE"})}function Zg(e){return J(`/api/servers/${encodeURIComponent(e)}/workflows/import/comfyui`,{method:"POST"})}function ey(e){return J(`/api/servers/${encodeURIComponent(e)}/workflows/import/comfyui/preview`)}async function ty(e,t){const n=new FormData;n.append("image",t);const r=await fetch(`/api/servers/${encodeURIComponent(e)}/upload/image`,{method:"POST",body:n});if(!r.ok){const o=await r.text();throw new Error(o||"Upload failed")}return r.json()}function ny(e,t){return J(`/api/servers/${encodeURIComponent(e)}/workflows/import/local`,{method:"POST",body:JSON.stringify({files:t})})}function ry(e,t){return J(`/api/servers/${encodeURIComponent(e)}/workflows/check-dependencies`,{method:"POST",body:JSON.stringify({workflow_data:t})})}function oy(e,t){return J(`/api/servers/${encodeURIComponent(e)}/workflows/${encodeURIComponent(t)}/check-dependencies`,{method:"POST"})}function ly(e,t){return J(`/api/servers/${encodeURIComponent(e)}/install-dependencies`,{method:"POST",body:JSON.stringify({repo_urls:t})})}async function iy(e){const t={workflow_id:e.editorState.workflowId,server_id:e.effectiveServerId,original_workflow_id:e.editorState.editingWorkflowId,description:e.editorState.description,workflow_data:e.editorState.workflowData,schema_params:e.finalSchema||{},ui_schema_params:e.editorState.schemaParams};try{await ud(e.effectiveServerId,{...t,overwrite_existing:!1}),await e.refreshWorkflows(),e.setEditorState(n=>({...n,editingWorkflowId:n.workflowId,hasUnsavedChanges:!1})),e.pushToast("success",e.t("ok_save_wf"))}catch(n){if(!(n instanceof tp)||n.status!==409){e.pushToast("error",n instanceof Error?n.message:e.t("err_save_wf"));return}if(!await e.confirm({title:e.t("confirm_action_title"),message:e.t("warn_overwrite_wf",{id:e.editorState.workflowId}),confirmLabel:e.t("overwrite"),cancelLabel:e.t("cancel"),tone:"danger"}))return;try{await ud(e.effectiveServerId,{...t,overwrite_existing:!0}),await e.refreshWorkflows(),e.setEditorState(o=>({...o,editingWorkflowId:o.workflowId,hasUnsavedChanges:!1})),e.pushToast("success",e.t("ok_save_wf"))}catch(o){e.pushToast("error",o instanceof Error?o.message:e.t("err_save_wf"))}}}function sy(e){async function t(){return e.editorState.hasUnsavedChanges?e.confirm({title:e.t("confirm_action_title"),message:e.t("confirm_unsaved_leave"),confirmLabel:e.t("leave_anyway"),cancelLabel:e.t("cancel"),tone:"primary"}):!0}async function n(){return await t()?(e.resetEditor(),!0):!1}async function r(m){var g,y,b,v;const w=e.pendingVersionTargetRef.current;if(e.pendingVersionTargetRef.current=null,!(!m||!w))try{const{buildVersionUpgradeState:_}=await zg(async()=>{const{buildVersionUpgradeState:x}=await import("./versionUpgrade-D9iCiBbj.js");return{buildVersionUpgradeState:x}},[]),h=_(w,await m.text());e.setEditorState(h),e.resetEditorUiState(),e.pushToast("success",e.t("workflow_upgrade_summary",{retained:((g=h.upgradeSummary)==null?void 0:g.retained)||0,review:((y=h.upgradeSummary)==null?void 0:y.review)||0,added:((b=h.upgradeSummary)==null?void 0:b.added)||0,removed:((v=h.upgradeSummary)==null?void 0:v.removed)||0}))}catch(_){e.pushToast("error",_ instanceof Error?_.message:e.t("err_invalid_json"))}}async function o(m){if(m){if(!e.effectiveServerId){e.pushToast("error",e.t("err_select_server_first"));return}try{const w=fa(await m.text()),g=e.editorState.editingWorkflowId?sg(e.editorState.schemaParams,w.schemaParams):null,y=od(w.workflowData,m.name);e.setEditorState(b=>({...b,workflowData:w.workflowData,schemaParams:(g==null?void 0:g.schemaParams)||w.schemaParams,workflowId:!b.workflowId||b.workflowId===e.lastAutoWorkflowId?y:b.workflowId,hasUnsavedChanges:!0,upgradeSummary:(g==null?void 0:g.summary)||null})),e.setLastAutoWorkflowId(y),e.pushToast("success",e.t("ok_wf_load"))}catch(w){const g=w instanceof Error?w.message:e.t("err_invalid_json");e.pushToast("error",g.includes("editor workflow")?e.t("err_ui_workflow_format"):g)}}}async function l(m){var w;if(!m)return!1;if((w=e.currentServer)!=null&&w.unsupported)return e.pushToast("info",e.t("server_unsupported_reason",{type:e.currentServer.server_type||"unknown"})),!1;if(!e.effectiveServerId)return e.pushToast("error",e.t("err_select_server_before_register")),!1;try{const g=fa(await m.text()),y=od(g.workflowData,m.name);return e.resetEditorUiState(),e.setEditorState({...Tl(),workflowData:g.workflowData,schemaParams:g.schemaParams,workflowId:y,hasUnsavedChanges:!0}),e.setLastAutoWorkflowId(y),e.pushToast("success",e.t("ok_wf_load")),!0}catch(g){const y=g instanceof Error?g.message:e.t("err_invalid_json");return e.pushToast("error",y.includes("editor workflow")?e.t("err_ui_workflow_format"):y),!1}}function i(m){e.setEditorState(w=>({...w,workflowId:m,hasUnsavedChanges:!0})),m.trim()!==e.lastAutoWorkflowId&&e.setLastAutoWorkflowId("")}function a(m,w,g){const y=$g(e.editorState.schemaParams,e.expandedParamKeys,m,w,g);e.setExpandedParamKeys(y.expandedParamKeys),e.setEditorState(b=>({...b,hasUnsavedChanges:!0,schemaParams:y.schemaParams}))}function u(){const m=fg(e.editorState.schemaParams);if(!m.changedCount){e.pushToast("info",e.t("mapping_no_recommended_changes"));return}e.setEditorState(w=>({...w,schemaParams:m.nextSchemaParams,hasUnsavedChanges:!0})),e.pushToast("success",e.t("mapping_apply_recommended_ok",{count:m.changedCount}))}function c(m){const w=e.groupedNodes.flatMap(([,y])=>y.params.map(b=>b.key));if(!w.length){e.pushToast("error",e.t("mapping_no_visible_params"));return}const g=Bg(e.editorState.schemaParams,e.expandedParamKeys,w,m);if(!g.changedCount){e.pushToast("info",e.t("mapping_no_batch_changes"));return}e.setExpandedParamKeys(g.expandedParamKeys),e.setEditorState(y=>({...y,schemaParams:g.schemaParams,hasUnsavedChanges:!0})),e.pushToast("success",e.t(m?"mapping_expose_visible_ok":"mapping_unexpose_visible_ok",{count:g.changedCount}))}async function d(){if(!e.effectiveServerId){e.pushToast("error",e.t("err_no_server_selected"));return}if(!e.editorState.workflowId.trim()){e.pushToast("error",e.t("err_no_id"));return}const{finalSchema:m,exposedCount:w,missingAlias:g}=ug(e.editorState.schemaParams);if(g){e.pushToast("error",e.t("err_no_alias",{node:g.node_id,val:g.field}));return}if(!(w===0&&!await e.confirm({title:e.t("confirm_action_title"),message:e.t("warn_no_params"),confirmLabel:e.t("save_anyway"),cancelLabel:e.t("cancel"),tone:"primary"}))){if(!e.editorState.workflowData&&!e.editorState.editingWorkflowId){e.pushToast("error",e.t("err_no_workflow_uploaded"));return}await iy({effectiveServerId:e.effectiveServerId,editorState:e.editorState,finalSchema:m||{},confirm:e.confirm,refreshWorkflows:e.refreshWorkflows,setEditorState:e.setEditorState,pushToast:e.pushToast,t:e.t})}}function f(){var m;return(m=e.currentServer)!=null&&m.unsupported?(e.pushToast("info",e.t("server_unsupported_reason",{type:e.currentServer.server_type||"unknown"})),!1):e.effectiveServerId?(e.resetEditor(),!0):(e.pushToast("error",e.t("err_select_server_before_register")),!1)}return{ensureCanLeaveEditor:t,handleBackFromEditor:n,handleVersionFileChange:r,handleEditorUpload:o,createWorkflowFromFile:l,handleWorkflowIdChange:i,updateEditorParam:a,applyRecommendedExposures:u,exposeVisible:c,handleSaveWorkflow:d,createWorkflow:f}}function dd(){return{open:!1,report:null,previewOpen:!1,preview:null,source:null,loading:!1,loadingStage:null}}function ay(e){return"webkitRelativePath"in e&&typeof e.webkitRelativePath=="string"?e.webkitRelativePath:""}function hl(e,t){return e instanceof Error&&e.message?e.message:t}function uy(e){const[t,n]=p.useState(dd()),r=p.useRef(null),o=p.useRef(null),l=p.useRef(0);function i(){return l.current+=1,l.current}function a(h){return l.current===h}function u(){i(),n(dd())}function c(){n(h=>({...h,previewOpen:!1,preview:null,loading:!1,loadingStage:null,source:h.open?h.source:null}))}function d(h){var x;return h||((x=e.currentServer)!=null&&x.unsupported?(e.pushToast("info",e.t("server_unsupported_reason",{type:e.currentServer.server_type||"unknown"})),null):e.effectiveServerId?e.effectiveServerId:(e.pushToast("error",e.t("err_select_server_before_register")),null))}function f(h){e.pushToast("success",e.t("ok_bulk_import_summary",{created:h.summary.created,renamed:h.summary.renamed,failed:h.summary.failed}))}async function m(h,x,k){try{await e.refreshWorkflows()}catch(S){a(k)&&e.pushToast("error",hl(S,e.t("err_load_workflows")))}a(k)&&(n({open:!0,report:x,previewOpen:!1,preview:null,source:h,loading:!1,loadingStage:null}),f(x))}function w(){var h;(h=r.current)==null||h.click()}function g(){var h;(h=o.current)==null||h.click()}async function y(h){const x=d(h);if(!x)return;const k=i();n(S=>({...S,source:"comfyui",loading:!0,loadingStage:"preview",previewOpen:!1,preview:null}));try{const S=await ey(x);if(!a(k))return;n(N=>({...N,source:"comfyui",loading:!1,loadingStage:null,previewOpen:!0,preview:S.preview}))}catch(S){if(!a(k))return;n(N=>({...N,loading:!1,loadingStage:null})),e.pushToast("error",hl(S,e.t("err_bulk_import_comfyui_preview")))}}async function b(h){const x=d(h);if(!x)return;const k=i();n(S=>({...S,loading:!0,loadingStage:"import",source:"comfyui",previewOpen:!1}));try{const S=await Zg(x);if(!a(k))return;await m("comfyui",S.report,k)}catch(S){if(!a(k))return;n(N=>({...N,loading:!1,loadingStage:null})),e.pushToast("error",hl(S,e.t("err_bulk_import_comfyui")))}}async function v(h){const x=d();if(!x||!h.length)return;const k=i();n(S=>({...S,loading:!0,loadingStage:"import",source:"local"}));try{const S=await Promise.all(h.map(async C=>({file_name:ay(C)||C.name,content:await C.text()}))),N=await ny(x,S);if(!a(k))return;await m("local",N.report,k)}catch(S){if(!a(k))return;n(N=>({...N,loading:!1,loadingStage:null})),e.pushToast("error",hl(S,e.t("err_bulk_import_local")))}}async function _(h){await v(Array.from(h||[]))}return{bulkImportState:t,localImportFilesRef:r,localImportFolderRef:o,closeBulkImportModal:u,closeComfyUiImportPreview:c,handleOpenLocalImportFiles:w,handleOpenLocalImportFolder:g,handlePreviewImportFromComfyUI:y,handleImportAllFromComfyUI:b,handleLocalImportFilesChange:_}}function fd(){return{open:!1,loading:!1,installing:!1,report:null,installReport:null}}function cy(e){const[t,n]=p.useState(fd());function r(){n(fd())}async function o(a,u){n({open:!0,loading:!0,installing:!1,report:null,installReport:null});try{const c=await ry(a,u);n(d=>({...d,loading:!1,report:c.report}))}catch(c){n(d=>({...d,loading:!1,open:!1})),e.pushToast("error",c instanceof Error?c.message:e.t("err_dep_check"))}}async function l(a,u){n({open:!0,loading:!0,installing:!1,report:null,installReport:null});try{const c=await oy(a,u);n(d=>({...d,loading:!1,report:c.report}))}catch(c){n(d=>({...d,loading:!1,open:!1})),e.pushToast("error",c instanceof Error?c.message:e.t("err_dep_check"))}}async function i(a,u){n(c=>({...c,installing:!0}));try{const c=await ly(a,u);n(m=>({...m,installing:!1,installReport:c.report}));const{succeeded:d,failed:f}=c.report.summary;f===0?e.pushToast("success",e.t("dep_check_install_results")+`: ${d} OK`):e.pushToast("error",`${d} succeeded, ${f} failed`)}catch(c){n(d=>({...d,installing:!1})),e.pushToast("error",c instanceof Error?c.message:e.t("err_dep_install"))}}return{depCheckState:t,closeDependencyCheckModal:r,handleCheckDependencies:o,handleCheckSavedWorkflow:l,handleInstallDependencies:i}}function Hr(){const e=p.useRef(0),t=p.useCallback(()=>(e.current+=1,e.current),[]),n=p.useCallback(()=>e.current,[]),r=p.useCallback(()=>(e.current+=1,e.current),[]),o=p.useCallback(l=>e.current===l,[]);return p.useMemo(()=>({begin:t,current:n,invalidate:r,isCurrent:o}),[t,n,r,o])}function md(){return{open:!1,mode:null,exportPreview:null,exportSelection:{servers:[]},expandedServerIds:[],importPreview:null,importBundle:null,applyEnvironment:!1,loading:!1}}function dy(e){return{servers:e.servers.map(t=>({server_id:t.server_id,workflow_ids:t.workflows.map(n=>n.workflow_id)}))}}function fy(e){return e.servers.length===1?[e.servers[0].server_id]:[]}function my(e){if(!e||typeof e!="object")return[];const t=e;return(Array.isArray(t.errors)?t.errors:t.validation&&typeof t.validation=="object"&&Array.isArray(t.validation.errors)?t.validation.errors:[]).map(r=>r&&typeof r=="object"?r.message:"").filter(r=>typeof r=="string"&&!!r)}function us(){return{open:!1,workflow:null,schema:{},values:{},loading:!1,submitting:!1,result:null}}function cs(){return{open:!1,workflow:null,items:[],selectedRunId:null,detail:null,loading:!1,detailLoading:!1}}function py(e){const t=e.run_schema_params&&Object.keys(e.run_schema_params).length>0?e.run_schema_params:e.schema_params,n=Object.entries(t||{}).filter(([,r])=>r&&typeof r=="object");return Object.fromEntries(n.map(([r,o])=>[r,o]))}function hy(e){const t={};return Object.entries(e).forEach(([n,r])=>{if(r.type==="boolean"){t[n]=!!(r.default??!1);return}t[n]=r.default??""}),t}function _y(e,t){return(e==null?void 0:e.server_id)===t.server_id&&e.id===t.id}function lp(e,t){return!e||e.has_history||!_y(e,t)?e:{...e,has_history:!0}}function pd(e,t){const n=lp(e.workflow,t);return n===e.workflow?e:{...e,workflow:n}}function vy(e,t,n,r,o){const l=e.filter(m=>m.server_id===t),i=l.findIndex(m=>m.id===n),a=l.findIndex(m=>m.id===r);if(i===-1||a===-1||i===a)return null;const u=[...l],[c]=u.splice(i,1),d=im.server_id!==t),...u],reorderedIds:u.map(m=>m.id),previousIds:l.map(m=>m.id)}}function wy(e,t,n){const r=e.filter(i=>i.server_id===t),o=new Map(r.map(i=>[i.id,i])),l=[];return n.forEach(i=>{const a=o.get(i);a&&(l.push(a),o.delete(i))}),r.forEach(i=>{o.has(i.id)&&(l.push(i),o.delete(i.id))}),[...e.filter(i=>i.server_id!==t),...l]}function gy(e){async function t(a,u){try{await Hg(a.server_id,a.id,{enabled:u}),await e.refreshWorkflows(),e.pushToast("success",e.t(u?"ok_toggle_wf_enabled":"ok_toggle_wf_disabled",{id:a.id}))}catch(c){e.pushToast("error",c instanceof Error?c.message:e.t("err_toggle_wf"))}}async function n(a){if(await e.confirm({title:e.t("confirm_action_title"),message:e.t("del_wf_confirm",{id:a.id}),confirmLabel:e.t("delete"),cancelLabel:e.t("cancel"),tone:"danger"}))try{await Kg(a.server_id,a.id),await e.refreshWorkflows(),e.pushToast("success",e.t("ok_del_wf",{id:a.id}))}catch(u){e.pushToast("error",u instanceof Error?u.message:e.t("err_del_wf"))}}async function r(a){if(a.length===0)return;if(new Set(a.map(c=>c.server_id)).size!==1){e.pushToast("error",e.t("err_del_wf_batch"));return}if(await e.confirm({title:e.t("confirm_action_title"),message:[e.t("workflow_batch_delete_confirm",{count:a.length}),e.t("workflow_batch_delete_preview",{items:`${a.slice(0,3).map(c=>c.id).join(", ")}${a.length>3?"...":""}`})].join(` -`),confirmLabel:e.t("workflow_delete_selected"),cancelLabel:e.t("cancel"),tone:"danger"}))try{const c=await qg(a[0].server_id,{workflow_ids:a.map(d=>d.id)});await e.refreshWorkflows(),e.pushToast("success",c.missing.length>0?e.t("ok_del_wf_batch_partial",{deleted:c.deleted.length,missing:c.missing.length}):e.t("ok_del_wf_batch",{count:c.deleted.length}))}catch(c){e.pushToast("error",c instanceof Error?c.message:e.t("err_del_wf_batch"))}}async function o(a){try{return await e.openEditor(await oi(a.server_id,a.id)),!0}catch(u){return e.pushToast("error",u instanceof Error?u.message:e.t("err_load_saved_wf")),!1}}async function l(a){var u;if(await e.ensureCanLeaveEditor())try{e.pendingVersionTargetRef.current=await oi(a.server_id,a.id),(u=e.versionUploadRef.current)==null||u.click()}catch(c){e.pushToast("error",c instanceof Error?c.message:e.t("err_load_saved_wf"))}}async function i(a,u,c){if(!e.effectiveServerId||a===u)return;const d=vy(e.workflows,e.effectiveServerId,a,u,c);if(d){e.setWorkflows(d.nextWorkflows);try{await Qg(e.effectiveServerId,{workflow_ids:d.reorderedIds})}catch(f){e.setWorkflows(m=>wy(m,e.effectiveServerId,d.previousIds)),e.pushToast("error",f instanceof Error?f.message:e.t("err_reorder_workflows"))}}}return{handleToggleWorkflow:t,handleDeleteWorkflow:n,handleBatchDeleteWorkflows:r,handleEditWorkflow:o,handleUploadWorkflowVersion:l,handleReorderWorkflows:i}}function yy(){return J("/api/transfer/export/preview")}function ky(e){return J("/api/transfer/export/build",{method:"POST",body:JSON.stringify({selection:e})})}function xy(e,t=!1,n=!0){return J("/api/transfer/import/preview",{method:"POST",body:JSON.stringify({bundle:e,apply_environment:t,overwrite_workflows:n})})}function Sy(e,t=!1,n=!0){return J("/api/transfer/import",{method:"POST",body:JSON.stringify({bundle:e,apply_environment:t,overwrite_workflows:n})})}function Cy({isEditorRoute:e}){var Ge,$t,me,xt,Ze,ct,rn,on,St,ln,er,xu,Su,Cu,bu,Nu,ju,Eu,Iu,Ru,Tu,Pu;const[t,n]=p.useState(()=>rd(rp("ui-lang"))),[r,o]=p.useState([]),[l,i]=p.useState(Tl()),[a,u]=p.useState(sd()),[c,d]=p.useState(new Set),[f,m]=p.useState(new Set),[w,g]=p.useState(""),[y,b]=p.useState("updated_desc"),[v,_]=p.useState(""),[h,x]=p.useState(md()),[k,S]=p.useState(null),[N,C]=p.useState(null),[j,E]=p.useState(us()),[L,B]=p.useState({}),[F,G]=p.useState(cs()),Re=p.useRef(null),Xe=p.useRef(null),fe=p.useRef(null),T=p.useRef(null),O=Hr(),W=Hr(),Y=Hr(),z=Hr(),ue=Hr(),{toasts:ge,dismissToast:st,pushToast:U}=Wg(),{confirmState:at,setConfirmState:gt,resolveConfirm:yt,confirm:q}=Eg(),A=(R,P)=>Yw(t,R,P),be=p.useCallback(async()=>{const R=await Vg();o(R.workflows||[])},[]),ee=Fg({t:A,pushToast:U,refreshWorkflows:be,setConfirmState:gt}),Ne=bg({currentServerId:ee.currentServerId,defaultServerId:ee.defaultServerId,servers:ee.servers,workflows:r,workflowSearch:w,workflowSort:y,editorFilters:a,schemaParams:l.schemaParams,t:A}),ye=uy({currentServer:Ne.currentServer,effectiveServerId:Ne.effectiveServerId,refreshWorkflows:be,pushToast:U,t:A}),ut=cy({pushToast:U,t:A});async function Bo(R=!1){await ee.handleSubmitServerModal(R,ye.handleImportAllFromComfyUI)}function Gn(){d(new Set),m(new Set),u(sd()),_("")}function Mr(){i(Tl()),Gn()}async function kt(R){Gn(),i(R?dg(R):Tl())}function Zt(){O.begin(),x(md())}function zt(R,P){if(R&&typeof R=="object"&&"detail"in R){const M=my(R.detail);if(M.length>0)return M.join("; ")}return R instanceof Error&&R.message?R.message:A(P)}async function Vo(){const R=O.begin();try{const P=await yy();if(!O.isCurrent(R))return;x({open:!0,mode:"export",exportPreview:P,exportSelection:dy(P),expandedServerIds:fy(P),importPreview:null,importBundle:null,applyEnvironment:!1,loading:!1})}catch(P){U("error",zt(P,"err_transfer_export_preview"))}}function Ho(){var R;(R=Xe.current)==null||R.click()}function Ti(R,P){x(M=>{const K=M.exportSelection.servers.find(H=>H.server_id===R),$=K&&K.workflow_ids.length===P.length?[]:P;return{...M,exportSelection:{servers:M.exportSelection.servers.map(H=>H.server_id===R?{...H,workflow_ids:$}:H)}}})}function Pi(R,P){x(M=>({...M,exportSelection:{servers:M.exportSelection.servers.map(K=>{if(K.server_id!==R)return K;const $=K.workflow_ids.includes(P)?K.workflow_ids.filter(H=>H!==P):[...K.workflow_ids,P];return{...K,workflow_ids:$}})}}))}function en(R){x(P=>({...P,expandedServerIds:P.expandedServerIds.includes(R)?P.expandedServerIds.filter(M=>M!==R):[...P.expandedServerIds,R]}))}async function tn(){if(h.mode==="export"){const P=O.current();x(M=>({...M,loading:!0}));try{const M=await ky(h.exportSelection);if(!O.isCurrent(P))return;const K=`${JSON.stringify(M.bundle,null,2)} -`,$=new Blob([K],{type:"application/json"}),H=window.URL.createObjectURL($),te=document.createElement("a");te.href=H,te.download="openclaw-skill-export.json",document.body.appendChild(te),te.click(),te.remove(),window.URL.revokeObjectURL(H),U("success",A("ok_transfer_export_started")),Zt()}catch(M){if(!O.isCurrent(P))return;x(K=>({...K,loading:!1})),U("error",zt(M,"err_transfer_export"))}return}if(!h.importBundle)return;const R=O.current();x(P=>({...P,loading:!0}));try{const P=await Sy(h.importBundle,h.applyEnvironment,!0);if(!O.isCurrent(R)||(await Promise.all([ee.loadInitialServers(),be()]),!O.isCurrent(R)))return;U("success",A("ok_transfer_import",{servers:P.plan.summary.created_servers,created:P.plan.summary.created_workflows,overwritten:P.plan.summary.overwritten_workflows})),Zt()}catch(P){if(!O.isCurrent(R))return;x(M=>({...M,loading:!1})),U("error",zt(P,"err_transfer_import"))}}async function Ln(R){if(!R)return;const P=W.begin();try{const M=await R.text();if(!W.isCurrent(P))return;const K=JSON.parse(M);if(!K||Array.isArray(K)||typeof K!="object")throw new Error(A("err_transfer_invalid_bundle"));const $=await xy(K,!1,!0);if(!W.isCurrent(P))return;O.begin(),x({open:!0,mode:"import",exportPreview:null,exportSelection:{servers:[]},expandedServerIds:[],importPreview:$,importBundle:K,applyEnvironment:!1,loading:!1})}catch(M){if(!W.isCurrent(P))return;if(M instanceof SyntaxError||M instanceof Error&&M.message===A("err_transfer_invalid_bundle")){U("error",A("err_transfer_invalid_bundle"));return}U("error",zt(M,"err_transfer_preview"))}}const Ko=[{title:A("transfer_section_created_servers"),items:(($t=(Ge=h.importPreview)==null?void 0:Ge.plan)==null?void 0:$t.created_servers)||[]},{title:A("transfer_section_updated_servers"),items:((xt=(me=h.importPreview)==null?void 0:me.plan)==null?void 0:xt.updated_servers)||[]},{title:A("transfer_section_created_workflows"),items:((ct=(Ze=h.importPreview)==null?void 0:Ze.plan)==null?void 0:ct.created_workflows)||[]},{title:A("transfer_section_overwritten_workflows"),items:((on=(rn=h.importPreview)==null?void 0:rn.plan)==null?void 0:on.overwritten_workflows)||[]},{title:A("transfer_section_skipped_items"),items:((ln=(St=h.importPreview)==null?void 0:St.plan)==null?void 0:ln.skipped_items)||[]}],Dt=A("transfer_preview_summary",{servers:((xu=(er=h.importPreview)==null?void 0:er.plan)==null?void 0:xu.summary.created_servers)||0,updated_servers:((Cu=(Su=h.importPreview)==null?void 0:Su.plan)==null?void 0:Cu.summary.updated_servers)||0,created:((Nu=(bu=h.importPreview)==null?void 0:bu.plan)==null?void 0:Nu.summary.created_workflows)||0,overwritten:((Eu=(ju=h.importPreview)==null?void 0:ju.plan)==null?void 0:Eu.summary.overwritten_workflows)||0,skipped:((Ru=(Iu=h.importPreview)==null?void 0:Iu.plan)==null?void 0:Ru.summary.skipped_items)||0,warnings:((Pu=(Tu=h.importPreview)==null?void 0:Tu.plan)==null?void 0:Pu.summary.warnings)||0}),Oe=sy({editorState:l,setEditorState:i,expandedParamKeys:f,setExpandedParamKeys:m,groupedNodes:Ne.groupedNodes,lastAutoWorkflowId:v,setLastAutoWorkflowId:_,currentServer:Ne.currentServer,effectiveServerId:Ne.effectiveServerId,confirm:q,refreshWorkflows:be,pushToast:U,resetEditor:Mr,resetEditorUiState:Gn,t:A,pendingVersionTargetRef:fe}),nn=gy({workflows:r,setWorkflows:o,effectiveServerId:Ne.effectiveServerId,refreshWorkflows:be,pushToast:U,t:A,confirm:q,openEditor:kt,ensureCanLeaveEditor:Oe.ensureCanLeaveEditor,pendingVersionTargetRef:fe,versionUploadRef:Re});function Di(){Rl(),sessionStorage.setItem("update-banner-dismissed","1"),S(null),C(null)}function Or(R){o(P=>{let M=!1;const K=P.map($=>{const H=lp($,R)??$;return M=M||H!==$,H});return M?K:P}),E(P=>pd(P,R)),G(P=>pd(P,R))}async function qo(R){const P=Y.begin();E(M=>({...M,open:!0,workflow:R,loading:!0,result:null}));try{const M=await oi(R.server_id,R.id);if(!Y.isCurrent(P))return;const K=py(M);E({open:!0,workflow:R,schema:K,values:hy(K),loading:!1,submitting:!1,result:null})}catch(M){if(!Y.isCurrent(P))return;E(us()),U("error",M instanceof Error?M.message:A("err_load_saved_wf"))}}function Qo(){Y.invalidate(),E(us())}function Jo(R,P){E(M=>({...M,values:{...M.values,[R]:P}}))}async function Li(R,P){return(await ty(R,P)).name}async function Mi(){var K;const R=j.workflow;if(!R)return;const P={};Object.entries(j.values).forEach(([$,H])=>{const te=j.schema[$];((te==null?void 0:te.type)==="int"||(te==null?void 0:te.type)==="float")&&H===""||((te==null?void 0:te.type)==="int"?P[$]=parseInt(String(H),10):(te==null?void 0:te.type)==="float"?P[$]=parseFloat(String(H)):(te==null?void 0:te.type)==="boolean"?P[$]=H===!0||H==="true":P[$]=H)});const M=`${R.server_id}:${R.id}`;B($=>({...$,[M]:{status:"running",startedAt:Date.now()}})),Qo();try{const $=await Jg(R.server_id,R.id,P);if($.result.status==="success")Or(R),B(H=>({...H,[M]:{...H[M],status:"success"}})),U("success",A("run_workflow_success",{id:R.id}));else{const H=typeof $.result.error=="string"?$.result.error:(K=$.result.error)==null?void 0:K.message;B(te=>({...te,[M]:{...te[M],status:"error"}})),U("error",H||A("run_workflow_error"))}}catch($){B(H=>({...H,[M]:{...H[M],status:"error"}})),U("error",$ instanceof Error?$.message:A("run_workflow_error"))}setTimeout(()=>{B($=>{const H={...$};return delete H[M],H})},8e3)}async function Zn(R,P){var K;const M=z.begin();ue.invalidate(),G($=>({...$,open:!0,workflow:R,loading:!0,detailLoading:!1,detail:P?$.detail:null}));try{const $=await Yg(R.server_id,R.id);if(!z.isCurrent(M))return;const H=P??((K=$.history[0])==null?void 0:K.run_id)??null;if(G({open:!0,workflow:R,items:$.history,selectedRunId:H,detail:null,loading:!1,detailLoading:!!H}),H){const te=ue.begin(),Op=await cd(R.server_id,R.id,H);if(!z.isCurrent(M)||!ue.isCurrent(te))return;G(Fp=>({...Fp,detail:Op,detailLoading:!1}))}}catch($){if(!z.isCurrent(M))return;G(cs()),U("error",$ instanceof Error?$.message:A("workflow_history_load_error"))}}async function ke(R){await Zn(R)}function Fe(){z.invalidate(),ue.invalidate(),G(cs())}async function We(){F.workflow&&await Zn(F.workflow,F.selectedRunId)}async function Lt(R){if(!F.workflow)return;const P=ue.begin();G(M=>({...M,selectedRunId:R,detailLoading:!0}));try{const M=await cd(F.workflow.server_id,F.workflow.id,R);if(!ue.isCurrent(P))return;G(K=>({...K,detail:M,detailLoading:!1}))}catch(M){if(!ue.isCurrent(P))return;G(K=>({...K,detail:null,detailLoading:!1})),U("error",M instanceof Error?M.message:A("workflow_history_load_error"))}}async function Ve(R){if(F.workflow&&await q({title:A("confirm_action_title"),message:A("workflow_history_delete_confirm"),confirmLabel:A("delete"),cancelLabel:A("cancel"),tone:"danger"}))try{await Xg(F.workflow.server_id,F.workflow.id,R),await Zn(F.workflow),U("success",A("workflow_history_delete_success"))}catch(P){U("error",P instanceof Error?P.message:A("workflow_history_delete_error"))}}async function Ue(){if(F.workflow&&await q({title:A("confirm_action_title"),message:A("workflow_history_clear_confirm",{id:F.workflow.id}),confirmLabel:A("workflow_history_clear"),cancelLabel:A("cancel"),tone:"danger"}))try{await Gg(F.workflow.server_id,F.workflow.id),await Zn(F.workflow,null),U("success",A("workflow_history_clear_success"))}catch(R){U("error",R instanceof Error?R.message:A("workflow_history_clear_error"))}}return Cg({language:t,toasts:ge,dismissToast:st,loadInitialServers:ee.loadInitialServers,refreshWorkflows:be,pushToast:U,setUpdateInfo:S,setUpdateFeedback:C,t:A,isEditorRoute:e,hasUnsavedChanges:l.hasUnsavedChanges,confirmOpen:at.open,serverModalOpen:ee.serverModalOpen,transferModalOpen:h.open,editorQuery:a.query,clearEditorQuery:()=>u(R=>({...R,query:""})),mappingSearchRef:T,saveWorkflow:Oe.handleSaveWorkflow}),{language:t,setLanguage:R=>n(rd(R)),t:A,toasts:ge,dismissToast:st,confirmState:at,setConfirmState:gt,resolveConfirm:yt,versionUploadRef:Re,transferImportRef:Xe,localImportFilesRef:ye.localImportFilesRef,localImportFolderRef:ye.localImportFolderRef,mappingSearchRef:T,editorState:l,editorFilters:a,collapsedNodeIds:c,expandedParamKeys:f,workflowSearch:w,workflowSort:y,servers:ee.servers,...Ne,serverModalOpen:ee.serverModalOpen,serverModalMode:ee.serverModalMode,serverForm:ee.serverForm,setCurrentServerId:ee.setCurrentServerId,setServerForm:ee.setServerForm,setWorkflowSearch:g,setWorkflowSort:b,setEditorFilters:u,setCollapsedNodeIds:d,setExpandedParamKeys:m,setEditorState:i,setServerModalOpen:ee.setServerModalOpen,transferState:h,bulkImportState:ye.bulkImportState,importSections:Ko,importPreviewSummary:Dt,handleAddServer:ee.handleAddServer,handleEditServer:ee.handleEditServer,handleSubmitServerModal:Bo,handleToggleServer:ee.handleToggleServer,requestDeleteServer:ee.requestDeleteServer,handleOpenTransferExport:Vo,handleOpenTransferImport:Ho,handleTransferImportFile:Ln,handleConfirmTransfer:tn,closeTransferModal:Zt,closeBulkImportModal:ye.closeBulkImportModal,closeComfyUiImportPreview:ye.closeComfyUiImportPreview,handlePreviewImportFromComfyUI:ye.handlePreviewImportFromComfyUI,handleImportAllFromComfyUI:ye.handleImportAllFromComfyUI,handleOpenLocalImportFiles:ye.handleOpenLocalImportFiles,handleOpenLocalImportFolder:ye.handleOpenLocalImportFolder,handleLocalImportFilesChange:ye.handleLocalImportFilesChange,depCheckState:ut.depCheckState,closeDependencyCheckModal:ut.closeDependencyCheckModal,handleCheckDependencies:ut.handleCheckDependencies,handleCheckSavedWorkflow:ut.handleCheckSavedWorkflow,handleInstallDependencies:ut.handleInstallDependencies,toggleTransferServerSelection:Ti,toggleTransferWorkflowSelection:Pi,toggleTransferServerExpanded:en,setTransferState:x,runModalState:j,executingWorkflows:L,historyState:F,handleOpenRunWorkflow:qo,closeRunWorkflowModal:Qo,updateRunWorkflowValue:Jo,handleRunWorkflow:Mi,handleUploadImage:Li,handleOpenWorkflowHistory:ke,closeWorkflowHistoryModal:Fe,refreshWorkflowHistory:We,handleSelectWorkflowHistoryEntry:Lt,handleDeleteWorkflowHistoryEntry:Ve,handleClearWorkflowHistory:Ue,handleBackFromEditor:Oe.handleBackFromEditor,handleEditorUpload:Oe.handleEditorUpload,createWorkflowFromFile:Oe.createWorkflowFromFile,handleSaveWorkflow:Oe.handleSaveWorkflow,handleWorkflowIdChange:Oe.handleWorkflowIdChange,updateEditorParam:Oe.updateEditorParam,applyRecommendedExposures:Oe.applyRecommendedExposures,exposeVisible:Oe.exposeVisible,handleEditWorkflow:nn.handleEditWorkflow,handleDeleteWorkflow:nn.handleDeleteWorkflow,handleBatchDeleteWorkflows:nn.handleBatchDeleteWorkflows,handleToggleWorkflow:nn.handleToggleWorkflow,handleUploadWorkflowVersion:nn.handleUploadWorkflowVersion,handleVersionFileChange:Oe.handleVersionFileChange,handleReorderWorkflows:nn.handleReorderWorkflows,createWorkflow:Oe.createWorkflow,updateInfo:k,updateFeedback:N,dismissUpdate:Di,loadEditorWorkflowByRoute:async(R,P)=>{if(ee.setCurrentServerId(R),l.editingWorkflowId===P&&l.workflowData)return!0;try{return await kt(await oi(R,P)),!0}catch(M){return U("error",M instanceof Error?M.message:A("err_load_saved_wf")),!1}}}}function ip({leading:e,badge:t,title:n,subtitle:r,actions:o,trailing:l,className:i=""}){return s.jsxs("header",{className:`app-header ${i}`.trim(),children:[s.jsxs("div",{className:"app-header-main",children:[e?s.jsx("div",{className:"app-header-leading",children:e}):null,s.jsxs("div",{className:"app-header-copy",children:[t?s.jsx("p",{className:"app-header-badge",children:t}):null,s.jsx("h1",{children:n}),r?s.jsx("p",{className:"subtitle app-header-subtitle",children:r}):null]})]}),o||l?s.jsxs("div",{className:"app-header-controls",children:[o?s.jsx("div",{className:"app-header-actions",children:o}):null,l?s.jsx("div",{className:"app-header-trailing",children:l}):null]}):null]})}function sp({header:e,children:t}){return s.jsxs("main",{className:"page shell",children:[e,t]})}function by({value:e,onChange:t}){return s.jsx(Qn,{value:e,options:[{value:"en",label:"English"},{value:"zh",label:"简体中文"},{value:"zh_hant",label:"繁體中文"}],onChange:n=>t(n),ariaLabel:"Language selector",className:"is-lang-select"})}function ap({title:e,titleId:t,meta:n,actions:r,children:o,className:l=""}){return s.jsxs("section",{className:`card section-panel ${l}`.trim(),"aria-labelledby":t,children:[s.jsxs("div",{className:"section-header panel-toolbar",children:[s.jsx("div",{className:"panel-title-wrap",children:s.jsx("h2",{id:t,className:"card-title",children:e})}),n||r?s.jsxs("div",{className:"panel-actions",children:[n,r]}):null]}),o]})}function Ny(){return s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"lucide lucide-pencil",children:[s.jsx("path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"}),s.jsx("path",{d:"m15 5 4 4"})]})}function jy(){return s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s.jsx("path",{d:"M3 6h18"}),s.jsx("path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"}),s.jsx("path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"})]})}function ds({status:e}){let t="#a3a3a3";return e==="online"?t="#22c55e":e==="offline"&&(t="#ef4444"),s.jsx("span",{title:e,style:{display:"inline-block",width:8,height:8,borderRadius:"50%",backgroundColor:t,marginRight:6,flexShrink:0,animation:e==="checking"?"pulse 1.5s infinite":void 0}})}const Ey="http://127.0.0.1:8188";function Iy(e,t){return e.map(n=>({value:n.id,label:`${n.name||n.id}${n.unsupported?` ${t("server_unsupported_short")}`:""}`}))}function Ry(e,t){return e!=null&&e.unsupported?t("server_unsupported_reason",{type:e.server_type||"unknown"}):""}function Ty(e){return(e==null?void 0:e.name)||(e==null?void 0:e.id)||""}function Py(e,t){return e==="checking"?"...":t(e==="online"?"server_status_online":"server_status_offline")}function Dy(e){var S;const t=e.servers.find(N=>N.id===e.currentServerId)||null,n=Ry(t,e.t),r=Ty(t),o=Iy(e.servers,e.t),l=p.useRef(null),i=p.useRef(null),a=p.useRef(!1),[u,c]=p.useState("checking"),[d,f]=p.useState(!1),[m,w]=p.useState(!1),[g,y]=p.useState({state:"idle"}),[b,v]=p.useState(!1);p.useEffect(()=>{let N=!1;async function C(){if(e.currentServerId)try{const j=await Lg(e.currentServerId);N||c(j.status)}catch{N||c("offline")}}return c("checking"),C(),()=>{N=!0}},[e.currentServerId]),p.useEffect(()=>{if(!e.modalOpen){a.current=!1,f(!1),y({state:"idle"});return}a.current||(a.current=!0,e.modalMode==="add"&&!e.form.url&&e.onFormChange({...e.form,url:Ey}))},[e.form,e.modalMode,e.modalOpen,e.onFormChange]),p.useEffect(()=>{(!e.modalOpen||e.modalMode!=="add")&&v(!1)},[e.modalMode,e.modalOpen]);function _(N,C){e.onFormChange({...e.form,[N]:C})}function h(N){return C=>_(N,C.target.value)}const x=Py(u,e.t);async function k(){const N=(e.form.url||"").trim();if(N){y({state:"testing"});try{const C=await Mg(N,e.form.auth??"");y({state:C.status,message:C.message})}catch{y({state:"offline",message:"Request failed"})}}}return s.jsxs(ap,{title:e.t("server_manager"),titleId:"server-manager-title",actions:s.jsx("button",{type:"button",className:"btn btn-secondary panel-action-btn",onClick:e.onOpenCreate,children:e.t("add_server_toggle")}),children:[e.servers.length===0?s.jsxs("div",{className:"server-empty-state",children:[s.jsx("p",{className:"section-meta",children:e.t("no_servers")}),s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:e.onOpenCreate,children:e.t("create_first_server")})]}):s.jsx("div",{className:"server-config-container card card-nested",children:s.jsxs("div",{className:"server-main-row",children:[s.jsxs("div",{className:"server-main-left",children:[s.jsx("div",{className:"server-current-meta",children:s.jsxs("span",{className:"section-meta server-current-badge",children:[s.jsx(ds,{status:u}),e.t("current_server_title"),s.jsxs("span",{className:"server-current-status",children:["(",x,")"]})]})}),s.jsx("div",{className:"server-selector-wrapper",children:e.servers.length===1?s.jsxs("div",{className:"server-selector-static","aria-label":e.t("select_server"),children:[r,t!=null&&t.unsupported?` ${e.t("server_unsupported_short")}`:""]}):s.jsx(Qn,{value:e.currentServerId||"",options:o,ariaLabel:e.t("select_server"),className:"is-server-select",onChange:e.onSelectServer})}),n?s.jsx("p",{className:"form-help",children:n}):null]}),t?s.jsxs("div",{id:"current-server-actions",className:"server-header-controls",children:[s.jsx("div",{className:"server-status-toggle server-visibility-group",children:s.jsx(Uo,{checked:t.enabled,className:"server-toggle-field",onChange:N=>e.onToggleServer(t,N.target.checked),title:e.t("server_agent_visibility_hint"),label:s.jsx("span",{className:t.enabled?"status-on":"status-off",children:t.enabled?e.t("server_agent_visible"):e.t("server_agent_hidden")})})}),s.jsxs("div",{className:"server-action-group",children:[s.jsx("button",{type:"button",className:"btn btn-secondary btn-icon server-action-btn","aria-label":e.t("edit"),onClick:()=>e.onOpenEdit(t),children:s.jsx(Ny,{})}),s.jsx("button",{type:"button",className:"btn btn-secondary btn-icon server-action-btn server-delete-btn","aria-label":e.t("delete"),onClick:()=>e.onDeleteServer(t),children:s.jsx(jy,{})})]})]}):null]})}),s.jsx(Dn,{open:e.modalOpen,title:e.modalMode==="edit"?e.t("edit_server_modal_title"):e.t("add_server_modal_title"),onClose:e.onCloseModal,initialFocusRef:e.modalMode==="edit"?i:l,footerStart:e.modalMode==="add"?s.jsx(En,{checked:b,onChange:N=>v(N.target.checked),className:"server-modal-import-checkbox",label:e.t("server_import_after_create")}):null,actions:s.jsxs(s.Fragment,{children:[s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:e.onCloseModal,children:e.t("cancel")}),s.jsx("button",{type:"button",className:"btn btn-primary",onClick:()=>{e.onSubmitModal(e.modalMode==="add"?b:!1)},children:e.modalMode==="edit"?e.t("save_server_changes"):e.t("save_and_connect")})]}),children:s.jsxs("div",{className:"modal-grid",children:[s.jsx(pt,{label:e.t("server_id_label"),htmlFor:"modal-server-id",helpText:e.t("server_id_help"),className:"form-group-half",children:s.jsx(tt,{ref:l,id:"modal-server-id",fieldClassName:"modal-text-field",value:e.form.id??"",disabled:e.modalMode==="edit",onChange:h("id"),placeholder:e.t("new_server_id_placeholder"),autoComplete:"off"})}),s.jsx(pt,{label:e.t("server_name"),htmlFor:"modal-server-name",helpText:e.t("server_name_help"),className:"form-group-half",children:s.jsx(tt,{ref:i,id:"modal-server-name",fieldClassName:"modal-text-field",value:e.form.name,onChange:h("name"),placeholder:e.t("new_server_name_placeholder"),maxLength:32,autoComplete:"off"})}),s.jsx(pt,{label:e.t("server_url_label"),htmlFor:"modal-server-url",helpText:e.t("server_url_help_comfyui"),className:"form-group-full",children:s.jsx(tt,{id:"modal-server-url",fieldClassName:"modal-text-field",value:e.form.url,onChange:h("url"),placeholder:e.t("new_server_url_placeholder"),autoComplete:"off"})}),s.jsxs(pt,{label:e.t("server_auth_label"),htmlFor:"modal-server-auth",helpText:e.t("server_auth_help"),className:"form-group-full",children:[s.jsx(tt,{id:"modal-server-auth",type:d?"text":"password",fieldClassName:"modal-text-field",value:e.form.auth??"",onChange:h("auth"),placeholder:e.t("server_auth_placeholder"),autoComplete:"off",trailingAction:s.jsx("button",{type:"button",className:"btn-icon input-toggle-btn",onClick:()=>f(N=>!N),"aria-label":d?"Hide token":"Show token",children:s.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s.jsx("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),s.jsx("circle",{cx:"12",cy:"12",r:"3"}),!d&&s.jsx("line",{x1:"1",y1:"1",x2:"23",y2:"23"})]})})}),s.jsxs("div",{className:"form-test-connection",children:[s.jsx("button",{type:"button",className:"btn btn-secondary btn-sm",onClick:k,disabled:!((S=e.form.url)!=null&&S.trim())||g.state==="testing",children:g.state==="testing"?e.t("server_test_testing"):e.t("server_test_connection")}),g.state==="online"&&s.jsxs("span",{className:"test-result test-result-ok",children:[s.jsx(ds,{status:"online"}),e.t("server_test_ok")]}),g.state==="offline"&&s.jsxs("span",{className:"test-result test-result-fail",children:[s.jsx(ds,{status:"offline"}),e.t("server_test_fail"),g.message?` - ${g.message}`:""]})]})]}),s.jsx(pt,{label:e.t("comfy_api_key_label"),htmlFor:"modal-server-comfy-api-key",helpText:s.jsxs(s.Fragment,{children:[e.t("comfy_api_key_help_prefix"),s.jsx("a",{href:"https://platform.comfy.org/login",target:"_blank",rel:"noopener noreferrer",children:e.t("comfy_api_key_help_link")}),e.t("comfy_api_key_help_suffix")]}),className:"form-group-full",children:s.jsx(tt,{id:"modal-server-comfy-api-key",type:m?"text":"password",fieldClassName:"modal-text-field",value:e.form.comfy_api_key??"",onChange:h("comfy_api_key"),placeholder:e.t("comfy_api_key_placeholder"),autoComplete:"off",trailingAction:s.jsx("button",{type:"button",className:"btn-icon input-toggle-btn",onClick:()=>w(N=>!N),"aria-label":m?"Hide API key":"Show API key",children:s.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s.jsx("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),s.jsx("circle",{cx:"12",cy:"12",r:"3"}),!m&&s.jsx("line",{x1:"1",y1:"1",x2:"23",y2:"23"})]})})})}),s.jsx(pt,{label:e.t("server_output_dir"),htmlFor:"modal-server-output",className:"form-group-full",children:s.jsx(tt,{id:"modal-server-output",fieldClassName:"modal-text-field",value:e.form.output_dir,onChange:h("output_dir"),placeholder:"./outputs",autoComplete:"off"})})]})})]})}function Ly(){for(var e=arguments.length,t=new Array(e),n=0;nr=>{t.forEach(o=>o(r))},t)}const Ei=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Pr(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function pu(e){return"nodeType"in e}function Ye(e){var t,n;return e?Pr(e)?e:pu(e)&&(t=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?t:window:window}function hu(e){const{Document:t}=Ye(e);return e instanceof t}function Ao(e){return Pr(e)?!1:e instanceof Ye(e).HTMLElement}function up(e){return e instanceof Ye(e).SVGElement}function Dr(e){return e?Pr(e)?e.document:pu(e)?hu(e)?e:Ao(e)||up(e)?e.ownerDocument:document:document:document}const At=Ei?p.useLayoutEffect:p.useEffect;function _u(e){const t=p.useRef(e);return At(()=>{t.current=e}),p.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;o{e.current=setInterval(r,o)},[]),n=p.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[t,n]}function Ro(e,t){t===void 0&&(t=[e]);const n=p.useRef(e);return At(()=>{n.current!==e&&(n.current=e)},t),n}function zo(e,t){const n=p.useRef();return p.useMemo(()=>{const r=e(n.current);return n.current=r,r},[...t])}function li(e){const t=_u(e),n=p.useRef(null),r=p.useCallback(o=>{o!==n.current&&(t==null||t(o,n.current)),n.current=o},[]);return[n,r]}function ma(e){const t=p.useRef();return p.useEffect(()=>{t.current=e},[e]),t.current}let fs={};function $o(e,t){return p.useMemo(()=>{if(t)return t;const n=fs[e]==null?0:fs[e]+1;return fs[e]=n,e+"-"+n},[e,t])}function cp(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o{const a=Object.entries(i);for(const[u,c]of a){const d=l[u];d!=null&&(l[u]=d+e*c)}return l},{...t})}}const yr=cp(1),ii=cp(-1);function Oy(e){return"clientX"in e&&"clientY"in e}function vu(e){if(!e)return!1;const{KeyboardEvent:t}=Ye(e.target);return t&&e instanceof t}function Fy(e){if(!e)return!1;const{TouchEvent:t}=Ye(e.target);return t&&e instanceof t}function pa(e){if(Fy(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return Oy(e)?{x:e.clientX,y:e.clientY}:null}const To=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[To.Translate.toString(e),To.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),hd="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function Wy(e){return e.matches(hd)?e:e.querySelector(hd)}const Uy={display:"none"};function Ay(e){let{id:t,value:n}=e;return De.createElement("div",{id:t,style:Uy},n)}function zy(e){let{id:t,announcement:n,ariaLiveType:r="assertive"}=e;const o={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return De.createElement("div",{id:t,style:o,role:"status","aria-live":r,"aria-atomic":!0},n)}function $y(){const[e,t]=p.useState("");return{announce:p.useCallback(r=>{r!=null&&t(r)},[]),announcement:e}}const dp=p.createContext(null);function By(e){const t=p.useContext(dp);p.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of ");return t(e)},[e,t])}function Vy(){const[e]=p.useState(()=>new Set),t=p.useCallback(r=>(e.add(r),()=>e.delete(r)),[e]);return[p.useCallback(r=>{let{type:o,event:l}=r;e.forEach(i=>{var a;return(a=i[o])==null?void 0:a.call(i,l)})},[e]),t]}const Hy={draggable:` - To pick up a draggable item, press the space bar. - While dragging, use the arrow keys to move the item. - Press space again to drop the item in its new position, or press escape to cancel. - `},Ky={onDragStart(e){let{active:t}=e;return"Picked up draggable item "+t.id+"."},onDragOver(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was moved over droppable area "+n.id+".":"Draggable item "+t.id+" is no longer over a droppable area."},onDragEnd(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was dropped over droppable area "+n.id:"Draggable item "+t.id+" was dropped."},onDragCancel(e){let{active:t}=e;return"Dragging was cancelled. Draggable item "+t.id+" was dropped."}};function qy(e){let{announcements:t=Ky,container:n,hiddenTextDescribedById:r,screenReaderInstructions:o=Hy}=e;const{announce:l,announcement:i}=$y(),a=$o("DndLiveRegion"),[u,c]=p.useState(!1);if(p.useEffect(()=>{c(!0)},[]),By(p.useMemo(()=>({onDragStart(f){let{active:m}=f;l(t.onDragStart({active:m}))},onDragMove(f){let{active:m,over:w}=f;t.onDragMove&&l(t.onDragMove({active:m,over:w}))},onDragOver(f){let{active:m,over:w}=f;l(t.onDragOver({active:m,over:w}))},onDragEnd(f){let{active:m,over:w}=f;l(t.onDragEnd({active:m,over:w}))},onDragCancel(f){let{active:m,over:w}=f;l(t.onDragCancel({active:m,over:w}))}}),[l,t])),!u)return null;const d=De.createElement(De.Fragment,null,De.createElement(Ay,{id:r,value:o.draggable}),De.createElement(zy,{id:a,announcement:i}));return n?hn.createPortal(d,n):d}var ve;(function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"})(ve||(ve={}));function si(){}function Qy(e,t){return p.useMemo(()=>({sensor:e,options:t??{}}),[e,t])}function Jy(){for(var e=arguments.length,t=new Array(e),n=0;n[...t].filter(r=>r!=null),[...t])}const Pt=Object.freeze({x:0,y:0});function Yy(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function Xy(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function Gy(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function Zy(e,t){if(!e||e.length===0)return null;const[n]=e;return n[t]}function _d(e,t,n){return t===void 0&&(t=e.left),n===void 0&&(n=e.top),{x:t+e.width*.5,y:n+e.height*.5}}const ek=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const o=_d(t,t.left,t.top),l=[];for(const i of r){const{id:a}=i,u=n.get(a);if(u){const c=Yy(_d(u),o);l.push({id:a,data:{droppableContainer:i,value:c}})}}return l.sort(Xy)};function tk(e,t){const n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),o=Math.min(t.left+t.width,e.left+e.width),l=Math.min(t.top+t.height,e.top+e.height),i=o-r,a=l-n;if(r{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const o=[];for(const l of r){const{id:i}=l,a=n.get(i);if(a){const u=tk(a,t);u>0&&o.push({id:i,data:{droppableContainer:l,value:u}})}}return o.sort(Gy)};function rk(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function fp(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:Pt}function ok(e){return function(n){for(var r=arguments.length,o=new Array(r>1?r-1:0),l=1;l({...i,top:i.top+e*a.y,bottom:i.bottom+e*a.y,left:i.left+e*a.x,right:i.right+e*a.x}),{...n})}}const lk=ok(1);function ik(e){if(e.startsWith("matrix3d(")){const t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith("matrix(")){const t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function sk(e,t,n){const r=ik(t);if(!r)return e;const{scaleX:o,scaleY:l,x:i,y:a}=r,u=e.left-i-(1-o)*parseFloat(n),c=e.top-a-(1-l)*parseFloat(n.slice(n.indexOf(" ")+1)),d=o?e.width/o:e.width,f=l?e.height/l:e.height;return{width:d,height:f,top:c,right:u+d,bottom:c+f,left:u}}const ak={ignoreTransform:!1};function Lr(e,t){t===void 0&&(t=ak);let n=e.getBoundingClientRect();if(t.ignoreTransform){const{transform:c,transformOrigin:d}=Ye(e).getComputedStyle(e);c&&(n=sk(n,c,d))}const{top:r,left:o,width:l,height:i,bottom:a,right:u}=n;return{top:r,left:o,width:l,height:i,bottom:a,right:u}}function vd(e){return Lr(e,{ignoreTransform:!0})}function uk(e){const t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function ck(e,t){return t===void 0&&(t=Ye(e).getComputedStyle(e)),t.position==="fixed"}function dk(e,t){t===void 0&&(t=Ye(e).getComputedStyle(e));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(o=>{const l=t[o];return typeof l=="string"?n.test(l):!1})}function wu(e,t){const n=[];function r(o){if(t!=null&&n.length>=t||!o)return n;if(hu(o)&&o.scrollingElement!=null&&!n.includes(o.scrollingElement))return n.push(o.scrollingElement),n;if(!Ao(o)||up(o)||n.includes(o))return n;const l=Ye(e).getComputedStyle(o);return o!==e&&dk(o,l)&&n.push(o),ck(o,l)?n:r(o.parentNode)}return e?r(e):n}function mp(e){const[t]=wu(e,1);return t??null}function ms(e){return!Ei||!e?null:Pr(e)?e:pu(e)?hu(e)||e===Dr(e).scrollingElement?window:Ao(e)?e:null:null}function pp(e){return Pr(e)?e.scrollX:e.scrollLeft}function hp(e){return Pr(e)?e.scrollY:e.scrollTop}function ha(e){return{x:pp(e),y:hp(e)}}var Se;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})(Se||(Se={}));function _p(e){return!Ei||!e?!1:e===document.scrollingElement}function vp(e){const t={x:0,y:0},n=_p(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height},o=e.scrollTop<=t.y,l=e.scrollLeft<=t.x,i=e.scrollTop>=r.y,a=e.scrollLeft>=r.x;return{isTop:o,isLeft:l,isBottom:i,isRight:a,maxScroll:r,minScroll:t}}const fk={x:.2,y:.2};function mk(e,t,n,r,o){let{top:l,left:i,right:a,bottom:u}=n;r===void 0&&(r=10),o===void 0&&(o=fk);const{isTop:c,isBottom:d,isLeft:f,isRight:m}=vp(e),w={x:0,y:0},g={x:0,y:0},y={height:t.height*o.y,width:t.width*o.x};return!c&&l<=t.top+y.height?(w.y=Se.Backward,g.y=r*Math.abs((t.top+y.height-l)/y.height)):!d&&u>=t.bottom-y.height&&(w.y=Se.Forward,g.y=r*Math.abs((t.bottom-y.height-u)/y.height)),!m&&a>=t.right-y.width?(w.x=Se.Forward,g.x=r*Math.abs((t.right-y.width-a)/y.width)):!f&&i<=t.left+y.width&&(w.x=Se.Backward,g.x=r*Math.abs((t.left+y.width-i)/y.width)),{direction:w,speed:g}}function pk(e){if(e===document.scrollingElement){const{innerWidth:l,innerHeight:i}=window;return{top:0,left:0,right:l,bottom:i,width:l,height:i}}const{top:t,left:n,right:r,bottom:o}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:o,width:e.clientWidth,height:e.clientHeight}}function wp(e){return e.reduce((t,n)=>yr(t,ha(n)),Pt)}function hk(e){return e.reduce((t,n)=>t+pp(n),0)}function _k(e){return e.reduce((t,n)=>t+hp(n),0)}function vk(e,t){if(t===void 0&&(t=Lr),!e)return;const{top:n,left:r,bottom:o,right:l}=t(e);mp(e)&&(o<=0||l<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}const wk=[["x",["left","right"],hk],["y",["top","bottom"],_k]];class gu{constructor(t,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=wu(n),o=wp(r);this.rect={...t},this.width=t.width,this.height=t.height;for(const[l,i,a]of wk)for(const u of i)Object.defineProperty(this,u,{get:()=>{const c=a(r),d=o[l]-c;return this.rect[u]+d},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class so{constructor(t){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=t}add(t,n,r){var o;(o=this.target)==null||o.addEventListener(t,n,r),this.listeners.push([t,n,r])}}function gk(e){const{EventTarget:t}=Ye(e);return e instanceof t?e:Dr(e)}function ps(e,t){const n=Math.abs(e.x),r=Math.abs(e.y);return typeof t=="number"?Math.sqrt(n**2+r**2)>t:"x"in t&&"y"in t?n>t.x&&r>t.y:"x"in t?n>t.x:"y"in t?r>t.y:!1}var dt;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(dt||(dt={}));function wd(e){e.preventDefault()}function yk(e){e.stopPropagation()}var X;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter",e.Tab="Tab"})(X||(X={}));const gp={start:[X.Space,X.Enter],cancel:[X.Esc],end:[X.Space,X.Enter,X.Tab]},kk=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case X.Right:return{...n,x:n.x+25};case X.Left:return{...n,x:n.x-25};case X.Down:return{...n,y:n.y+25};case X.Up:return{...n,y:n.y-25}}};class yp{constructor(t){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=t;const{event:{target:n}}=t;this.props=t,this.listeners=new so(Dr(n)),this.windowListeners=new so(Ye(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(dt.Resize,this.handleCancel),this.windowListeners.add(dt.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(dt.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:t,onStart:n}=this.props,r=t.node.current;r&&vk(r),n(Pt)}handleKeyDown(t){if(vu(t)){const{active:n,context:r,options:o}=this.props,{keyboardCodes:l=gp,coordinateGetter:i=kk,scrollBehavior:a="smooth"}=o,{code:u}=t;if(l.end.includes(u)){this.handleEnd(t);return}if(l.cancel.includes(u)){this.handleCancel(t);return}const{collisionRect:c}=r.current,d=c?{x:c.left,y:c.top}:Pt;this.referenceCoordinates||(this.referenceCoordinates=d);const f=i(t,{active:n,context:r.current,currentCoordinates:d});if(f){const m=ii(f,d),w={x:0,y:0},{scrollableAncestors:g}=r.current;for(const y of g){const b=t.code,{isTop:v,isRight:_,isLeft:h,isBottom:x,maxScroll:k,minScroll:S}=vp(y),N=pk(y),C={x:Math.min(b===X.Right?N.right-N.width/2:N.right,Math.max(b===X.Right?N.left:N.left+N.width/2,f.x)),y:Math.min(b===X.Down?N.bottom-N.height/2:N.bottom,Math.max(b===X.Down?N.top:N.top+N.height/2,f.y))},j=b===X.Right&&!_||b===X.Left&&!h,E=b===X.Down&&!x||b===X.Up&&!v;if(j&&C.x!==f.x){const L=y.scrollLeft+m.x,B=b===X.Right&&L<=k.x||b===X.Left&&L>=S.x;if(B&&!m.y){y.scrollTo({left:L,behavior:a});return}B?w.x=y.scrollLeft-L:w.x=b===X.Right?y.scrollLeft-k.x:y.scrollLeft-S.x,w.x&&y.scrollBy({left:-w.x,behavior:a});break}else if(E&&C.y!==f.y){const L=y.scrollTop+m.y,B=b===X.Down&&L<=k.y||b===X.Up&&L>=S.y;if(B&&!m.x){y.scrollTo({top:L,behavior:a});return}B?w.y=y.scrollTop-L:w.y=b===X.Down?y.scrollTop-k.y:y.scrollTop-S.y,w.y&&y.scrollBy({top:-w.y,behavior:a});break}}this.handleMove(t,yr(ii(f,this.referenceCoordinates),w))}}}handleMove(t,n){const{onMove:r}=this.props;t.preventDefault(),r(n)}handleEnd(t){const{onEnd:n}=this.props;t.preventDefault(),this.detach(),n()}handleCancel(t){const{onCancel:n}=this.props;t.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}yp.activators=[{eventName:"onKeyDown",handler:(e,t,n)=>{let{keyboardCodes:r=gp,onActivation:o}=t,{active:l}=n;const{code:i}=e.nativeEvent;if(r.start.includes(i)){const a=l.activatorNode.current;return a&&e.target!==a?!1:(e.preventDefault(),o==null||o({event:e.nativeEvent}),!0)}return!1}}];function gd(e){return!!(e&&"distance"in e)}function yd(e){return!!(e&&"delay"in e)}class yu{constructor(t,n,r){var o;r===void 0&&(r=gk(t.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=t,this.events=n;const{event:l}=t,{target:i}=l;this.props=t,this.events=n,this.document=Dr(i),this.documentListeners=new so(this.document),this.listeners=new so(r),this.windowListeners=new so(Ye(i)),this.initialCoordinates=(o=pa(l))!=null?o:Pt,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:t,props:{options:{activationConstraint:n,bypassActivationConstraint:r}}}=this;if(this.listeners.add(t.move.name,this.handleMove,{passive:!1}),this.listeners.add(t.end.name,this.handleEnd),t.cancel&&this.listeners.add(t.cancel.name,this.handleCancel),this.windowListeners.add(dt.Resize,this.handleCancel),this.windowListeners.add(dt.DragStart,wd),this.windowListeners.add(dt.VisibilityChange,this.handleCancel),this.windowListeners.add(dt.ContextMenu,wd),this.documentListeners.add(dt.Keydown,this.handleKeydown),n){if(r!=null&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(yd(n)){this.timeoutId=setTimeout(this.handleStart,n.delay),this.handlePending(n);return}if(gd(n)){this.handlePending(n);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(t,n){const{active:r,onPending:o}=this.props;o(r,t,this.initialCoordinates,n)}handleStart(){const{initialCoordinates:t}=this,{onStart:n}=this.props;t&&(this.activated=!0,this.documentListeners.add(dt.Click,yk,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(dt.SelectionChange,this.removeTextSelection),n(t))}handleMove(t){var n;const{activated:r,initialCoordinates:o,props:l}=this,{onMove:i,options:{activationConstraint:a}}=l;if(!o)return;const u=(n=pa(t))!=null?n:Pt,c=ii(o,u);if(!r&&a){if(gd(a)){if(a.tolerance!=null&&ps(c,a.tolerance))return this.handleCancel();if(ps(c,a.distance))return this.handleStart()}if(yd(a)&&ps(c,a.tolerance))return this.handleCancel();this.handlePending(a,c);return}t.cancelable&&t.preventDefault(),i(u)}handleEnd(){const{onAbort:t,onEnd:n}=this.props;this.detach(),this.activated||t(this.props.active),n()}handleCancel(){const{onAbort:t,onCancel:n}=this.props;this.detach(),this.activated||t(this.props.active),n()}handleKeydown(t){t.code===X.Esc&&this.handleCancel()}removeTextSelection(){var t;(t=this.document.getSelection())==null||t.removeAllRanges()}}const xk={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class ku extends yu{constructor(t){const{event:n}=t,r=Dr(n.target);super(t,xk,r)}}ku.activators=[{eventName:"onPointerDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r==null||r({event:n}),!0)}}];const Sk={move:{name:"mousemove"},end:{name:"mouseup"}};var _a;(function(e){e[e.RightClick=2]="RightClick"})(_a||(_a={}));class Ck extends yu{constructor(t){super(t,Sk,Dr(t.event.target))}}Ck.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===_a.RightClick?!1:(r==null||r({event:n}),!0)}}];const hs={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class bk extends yu{constructor(t){super(t,hs)}static setup(){return window.addEventListener(hs.move.name,t,{capture:!1,passive:!1}),function(){window.removeEventListener(hs.move.name,t)};function t(){}}}bk.activators=[{eventName:"onTouchStart",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;const{touches:o}=n;return o.length>1?!1:(r==null||r({event:n}),!0)}}];var ao;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(ao||(ao={}));var ai;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(ai||(ai={}));function Nk(e){let{acceleration:t,activator:n=ao.Pointer,canScroll:r,draggingRect:o,enabled:l,interval:i=5,order:a=ai.TreeOrder,pointerCoordinates:u,scrollableAncestors:c,scrollableAncestorRects:d,delta:f,threshold:m}=e;const w=Ek({delta:f,disabled:!l}),[g,y]=My(),b=p.useRef({x:0,y:0}),v=p.useRef({x:0,y:0}),_=p.useMemo(()=>{switch(n){case ao.Pointer:return u?{top:u.y,bottom:u.y,left:u.x,right:u.x}:null;case ao.DraggableRect:return o}},[n,o,u]),h=p.useRef(null),x=p.useCallback(()=>{const S=h.current;if(!S)return;const N=b.current.x*v.current.x,C=b.current.y*v.current.y;S.scrollBy(N,C)},[]),k=p.useMemo(()=>a===ai.TreeOrder?[...c].reverse():c,[a,c]);p.useEffect(()=>{if(!l||!c.length||!_){y();return}for(const S of k){if((r==null?void 0:r(S))===!1)continue;const N=c.indexOf(S),C=d[N];if(!C)continue;const{direction:j,speed:E}=mk(S,C,_,t,m);for(const L of["x","y"])w[L][j[L]]||(E[L]=0,j[L]=0);if(E.x>0||E.y>0){y(),h.current=S,g(x,i),b.current=E,v.current=j;return}}b.current={x:0,y:0},v.current={x:0,y:0},y()},[t,x,r,y,l,i,JSON.stringify(_),JSON.stringify(w),g,c,k,d,JSON.stringify(m)])}const jk={x:{[Se.Backward]:!1,[Se.Forward]:!1},y:{[Se.Backward]:!1,[Se.Forward]:!1}};function Ek(e){let{delta:t,disabled:n}=e;const r=ma(t);return zo(o=>{if(n||!r||!o)return jk;const l={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[Se.Backward]:o.x[Se.Backward]||l.x===-1,[Se.Forward]:o.x[Se.Forward]||l.x===1},y:{[Se.Backward]:o.y[Se.Backward]||l.y===-1,[Se.Forward]:o.y[Se.Forward]||l.y===1}}},[n,t,r])}function Ik(e,t){const n=t!=null?e.get(t):void 0,r=n?n.node.current:null;return zo(o=>{var l;return t==null?null:(l=r??o)!=null?l:null},[r,t])}function Rk(e,t){return p.useMemo(()=>e.reduce((n,r)=>{const{sensor:o}=r,l=o.activators.map(i=>({eventName:i.eventName,handler:t(i.handler,r)}));return[...n,...l]},[]),[e,t])}var Po;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})(Po||(Po={}));var va;(function(e){e.Optimized="optimized"})(va||(va={}));const kd=new Map;function Tk(e,t){let{dragging:n,dependencies:r,config:o}=t;const[l,i]=p.useState(null),{frequency:a,measure:u,strategy:c}=o,d=p.useRef(e),f=b(),m=Ro(f),w=p.useCallback(function(v){v===void 0&&(v=[]),!m.current&&i(_=>_===null?v:_.concat(v.filter(h=>!_.includes(h))))},[m]),g=p.useRef(null),y=zo(v=>{if(f&&!n)return kd;if(!v||v===kd||d.current!==e||l!=null){const _=new Map;for(let h of e){if(!h)continue;if(l&&l.length>0&&!l.includes(h.id)&&h.rect.current){_.set(h.id,h.rect.current);continue}const x=h.node.current,k=x?new gu(u(x),x):null;h.rect.current=k,k&&_.set(h.id,k)}return _}return v},[e,l,n,f,u]);return p.useEffect(()=>{d.current=e},[e]),p.useEffect(()=>{f||w()},[n,f]),p.useEffect(()=>{l&&l.length>0&&i(null)},[JSON.stringify(l)]),p.useEffect(()=>{f||typeof a!="number"||g.current!==null||(g.current=setTimeout(()=>{w(),g.current=null},a))},[a,f,w,...r]),{droppableRects:y,measureDroppableContainers:w,measuringScheduled:l!=null};function b(){switch(c){case Po.Always:return!1;case Po.BeforeDragging:return n;default:return!n}}}function kp(e,t){return zo(n=>e?n||(typeof t=="function"?t(e):e):null,[t,e])}function Pk(e,t){return kp(e,t)}function Dk(e){let{callback:t,disabled:n}=e;const r=_u(t),o=p.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:l}=window;return new l(r)},[r,n]);return p.useEffect(()=>()=>o==null?void 0:o.disconnect(),[o]),o}function Ii(e){let{callback:t,disabled:n}=e;const r=_u(t),o=p.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:l}=window;return new l(r)},[n]);return p.useEffect(()=>()=>o==null?void 0:o.disconnect(),[o]),o}function Lk(e){return new gu(Lr(e),e)}function xd(e,t,n){t===void 0&&(t=Lk);const[r,o]=p.useState(null);function l(){o(u=>{if(!e)return null;if(e.isConnected===!1){var c;return(c=u??n)!=null?c:null}const d=t(e);return JSON.stringify(u)===JSON.stringify(d)?u:d})}const i=Dk({callback(u){if(e)for(const c of u){const{type:d,target:f}=c;if(d==="childList"&&f instanceof HTMLElement&&f.contains(e)){l();break}}}}),a=Ii({callback:l});return At(()=>{l(),e?(a==null||a.observe(e),i==null||i.observe(document.body,{childList:!0,subtree:!0})):(a==null||a.disconnect(),i==null||i.disconnect())},[e]),r}function Mk(e){const t=kp(e);return fp(e,t)}const Sd=[];function Ok(e){const t=p.useRef(e),n=zo(r=>e?r&&r!==Sd&&e&&t.current&&e.parentNode===t.current.parentNode?r:wu(e):Sd,[e]);return p.useEffect(()=>{t.current=e},[e]),n}function Fk(e){const[t,n]=p.useState(null),r=p.useRef(e),o=p.useCallback(l=>{const i=ms(l.target);i&&n(a=>a?(a.set(i,ha(i)),new Map(a)):null)},[]);return p.useEffect(()=>{const l=r.current;if(e!==l){i(l);const a=e.map(u=>{const c=ms(u);return c?(c.addEventListener("scroll",o,{passive:!0}),[c,ha(c)]):null}).filter(u=>u!=null);n(a.length?new Map(a):null),r.current=e}return()=>{i(e),i(l)};function i(a){a.forEach(u=>{const c=ms(u);c==null||c.removeEventListener("scroll",o)})}},[o,e]),p.useMemo(()=>e.length?t?Array.from(t.values()).reduce((l,i)=>yr(l,i),Pt):wp(e):Pt,[e,t])}function Cd(e,t){t===void 0&&(t=[]);const n=p.useRef(null);return p.useEffect(()=>{n.current=null},t),p.useEffect(()=>{const r=e!==Pt;r&&!n.current&&(n.current=e),!r&&n.current&&(n.current=null)},[e]),n.current?ii(e,n.current):Pt}function Wk(e){p.useEffect(()=>{if(!Ei)return;const t=e.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of t)n==null||n()}},e.map(t=>{let{sensor:n}=t;return n}))}function Uk(e,t){return p.useMemo(()=>e.reduce((n,r)=>{let{eventName:o,handler:l}=r;return n[o]=i=>{l(i,t)},n},{}),[e,t])}function xp(e){return p.useMemo(()=>e?uk(e):null,[e])}const bd=[];function Ak(e,t){t===void 0&&(t=Lr);const[n]=e,r=xp(n?Ye(n):null),[o,l]=p.useState(bd);function i(){l(()=>e.length?e.map(u=>_p(u)?r:new gu(t(u),u)):bd)}const a=Ii({callback:i});return At(()=>{a==null||a.disconnect(),i(),e.forEach(u=>a==null?void 0:a.observe(u))},[e]),o}function zk(e){if(!e)return null;if(e.children.length>1)return e;const t=e.children[0];return Ao(t)?t:e}function $k(e){let{measure:t}=e;const[n,r]=p.useState(null),o=p.useCallback(c=>{for(const{target:d}of c)if(Ao(d)){r(f=>{const m=t(d);return f?{...f,width:m.width,height:m.height}:m});break}},[t]),l=Ii({callback:o}),i=p.useCallback(c=>{const d=zk(c);l==null||l.disconnect(),d&&(l==null||l.observe(d)),r(d?t(d):null)},[t,l]),[a,u]=li(i);return p.useMemo(()=>({nodeRef:a,rect:n,setRef:u}),[n,a,u])}const Bk=[{sensor:ku,options:{}},{sensor:yp,options:{}}],Vk={current:{}},Pl={draggable:{measure:vd},droppable:{measure:vd,strategy:Po.WhileDragging,frequency:va.Optimized},dragOverlay:{measure:Lr}};class uo extends Map{get(t){var n;return t!=null&&(n=super.get(t))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(t=>{let{disabled:n}=t;return!n})}getNodeFor(t){var n,r;return(n=(r=this.get(t))==null?void 0:r.node.current)!=null?n:void 0}}const Hk={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new uo,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:si},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:Pl,measureDroppableContainers:si,windowRect:null,measuringScheduled:!1},Kk={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:si,draggableNodes:new Map,over:null,measureDroppableContainers:si},Ri=p.createContext(Kk),Sp=p.createContext(Hk);function qk(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new uo}}}function Qk(e,t){switch(t.type){case ve.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case ve.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case ve.DragEnd:case ve.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case ve.RegisterDroppable:{const{element:n}=t,{id:r}=n,o=new uo(e.droppable.containers);return o.set(r,n),{...e,droppable:{...e.droppable,containers:o}}}case ve.SetDroppableDisabled:{const{id:n,key:r,disabled:o}=t,l=e.droppable.containers.get(n);if(!l||r!==l.key)return e;const i=new uo(e.droppable.containers);return i.set(n,{...l,disabled:o}),{...e,droppable:{...e.droppable,containers:i}}}case ve.UnregisterDroppable:{const{id:n,key:r}=t,o=e.droppable.containers.get(n);if(!o||r!==o.key)return e;const l=new uo(e.droppable.containers);return l.delete(n),{...e,droppable:{...e.droppable,containers:l}}}default:return e}}function Jk(e){let{disabled:t}=e;const{active:n,activatorEvent:r,draggableNodes:o}=p.useContext(Ri),l=ma(r),i=ma(n==null?void 0:n.id);return p.useEffect(()=>{if(!t&&!r&&l&&i!=null){if(!vu(l)||document.activeElement===l.target)return;const a=o.get(i);if(!a)return;const{activatorNode:u,node:c}=a;if(!u.current&&!c.current)return;requestAnimationFrame(()=>{for(const d of[u.current,c.current]){if(!d)continue;const f=Wy(d);if(f){f.focus();break}}})}},[r,t,o,i,l]),null}function Yk(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((o,l)=>l({transform:o,...r}),n):n}function Xk(e){return p.useMemo(()=>({draggable:{...Pl.draggable,...e==null?void 0:e.draggable},droppable:{...Pl.droppable,...e==null?void 0:e.droppable},dragOverlay:{...Pl.dragOverlay,...e==null?void 0:e.dragOverlay}}),[e==null?void 0:e.draggable,e==null?void 0:e.droppable,e==null?void 0:e.dragOverlay])}function Gk(e){let{activeNode:t,measure:n,initialRect:r,config:o=!0}=e;const l=p.useRef(!1),{x:i,y:a}=typeof o=="boolean"?{x:o,y:o}:o;At(()=>{if(!i&&!a||!t){l.current=!1;return}if(l.current||!r)return;const c=t==null?void 0:t.node.current;if(!c||c.isConnected===!1)return;const d=n(c),f=fp(d,r);if(i||(f.x=0),a||(f.y=0),l.current=!0,Math.abs(f.x)>0||Math.abs(f.y)>0){const m=mp(c);m&&m.scrollBy({top:f.y,left:f.x})}},[t,i,a,r,n])}const Cp=p.createContext({...Pt,scaleX:1,scaleY:1});var cn;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(cn||(cn={}));const Zk=p.memo(function(t){var n,r,o,l;let{id:i,accessibility:a,autoScroll:u=!0,children:c,sensors:d=Bk,collisionDetection:f=nk,measuring:m,modifiers:w,...g}=t;const y=p.useReducer(Qk,void 0,qk),[b,v]=y,[_,h]=Vy(),[x,k]=p.useState(cn.Uninitialized),S=x===cn.Initialized,{draggable:{active:N,nodes:C,translate:j},droppable:{containers:E}}=b,L=N!=null?C.get(N):null,B=p.useRef({initial:null,translated:null}),F=p.useMemo(()=>{var ke;return N!=null?{id:N,data:(ke=L==null?void 0:L.data)!=null?ke:Vk,rect:B}:null},[N,L]),G=p.useRef(null),[Re,Xe]=p.useState(null),[fe,T]=p.useState(null),O=Ro(g,Object.values(g)),W=$o("DndDescribedBy",i),Y=p.useMemo(()=>E.getEnabled(),[E]),z=Xk(m),{droppableRects:ue,measureDroppableContainers:ge,measuringScheduled:st}=Tk(Y,{dragging:S,dependencies:[j.x,j.y],config:z.droppable}),U=Ik(C,N),at=p.useMemo(()=>fe?pa(fe):null,[fe]),gt=Zn(),yt=Pk(U,z.draggable.measure);Gk({activeNode:N!=null?C.get(N):null,config:gt.layoutShiftCompensation,initialRect:yt,measure:z.draggable.measure});const q=xd(U,z.draggable.measure,yt),A=xd(U?U.parentElement:null),be=p.useRef({activatorEvent:null,active:null,activeNode:U,collisionRect:null,collisions:null,droppableRects:ue,draggableNodes:C,draggingNode:null,draggingNodeRect:null,droppableContainers:E,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),ee=E.getNodeFor((n=be.current.over)==null?void 0:n.id),Ne=$k({measure:z.dragOverlay.measure}),ye=(r=Ne.nodeRef.current)!=null?r:U,ut=S?(o=Ne.rect)!=null?o:q:null,Bo=!!(Ne.nodeRef.current&&Ne.rect),Gn=Mk(Bo?null:q),Mr=xp(ye?Ye(ye):null),kt=Ok(S?ee??U:null),Zt=Ak(kt),zt=Yk(w,{transform:{x:j.x-Gn.x,y:j.y-Gn.y,scaleX:1,scaleY:1},activatorEvent:fe,active:F,activeNodeRect:q,containerNodeRect:A,draggingNodeRect:ut,over:be.current.over,overlayNodeRect:Ne.rect,scrollableAncestors:kt,scrollableAncestorRects:Zt,windowRect:Mr}),Vo=at?yr(at,j):null,Ho=Fk(kt),Ti=Cd(Ho),Pi=Cd(Ho,[q]),en=yr(zt,Ti),tn=ut?lk(ut,zt):null,Ln=F&&tn?f({active:F,collisionRect:tn,droppableRects:ue,droppableContainers:Y,pointerCoordinates:Vo}):null,Ko=Zy(Ln,"id"),[Dt,Oe]=p.useState(null),nn=Bo?zt:yr(zt,Pi),Di=rk(nn,(l=Dt==null?void 0:Dt.rect)!=null?l:null,q),Or=p.useRef(null),qo=p.useCallback((ke,Fe)=>{let{sensor:We,options:Lt}=Fe;if(G.current==null)return;const Ve=C.get(G.current);if(!Ve)return;const Ue=ke.nativeEvent,Ge=new We({active:G.current,activeNode:Ve,event:Ue,options:Lt,context:be,onAbort(me){if(!C.get(me))return;const{onDragAbort:Ze}=O.current,ct={id:me};Ze==null||Ze(ct),_({type:"onDragAbort",event:ct})},onPending(me,xt,Ze,ct){if(!C.get(me))return;const{onDragPending:on}=O.current,St={id:me,constraint:xt,initialCoordinates:Ze,offset:ct};on==null||on(St),_({type:"onDragPending",event:St})},onStart(me){const xt=G.current;if(xt==null)return;const Ze=C.get(xt);if(!Ze)return;const{onDragStart:ct}=O.current,rn={activatorEvent:Ue,active:{id:xt,data:Ze.data,rect:B}};hn.unstable_batchedUpdates(()=>{ct==null||ct(rn),k(cn.Initializing),v({type:ve.DragStart,initialCoordinates:me,active:xt}),_({type:"onDragStart",event:rn}),Xe(Or.current),T(Ue)})},onMove(me){v({type:ve.DragMove,coordinates:me})},onEnd:$t(ve.DragEnd),onCancel:$t(ve.DragCancel)});Or.current=Ge;function $t(me){return async function(){const{active:Ze,collisions:ct,over:rn,scrollAdjustedTranslate:on}=be.current;let St=null;if(Ze&&on){const{cancelDrop:ln}=O.current;St={activatorEvent:Ue,active:Ze,collisions:ct,delta:on,over:rn},me===ve.DragEnd&&typeof ln=="function"&&await Promise.resolve(ln(St))&&(me=ve.DragCancel)}G.current=null,hn.unstable_batchedUpdates(()=>{v({type:me}),k(cn.Uninitialized),Oe(null),Xe(null),T(null),Or.current=null;const ln=me===ve.DragEnd?"onDragEnd":"onDragCancel";if(St){const er=O.current[ln];er==null||er(St),_({type:ln,event:St})}})}}},[C]),Qo=p.useCallback((ke,Fe)=>(We,Lt)=>{const Ve=We.nativeEvent,Ue=C.get(Lt);if(G.current!==null||!Ue||Ve.dndKit||Ve.defaultPrevented)return;const Ge={active:Ue};ke(We,Fe.options,Ge)===!0&&(Ve.dndKit={capturedBy:Fe.sensor},G.current=Lt,qo(We,Fe))},[C,qo]),Jo=Rk(d,Qo);Wk(d),At(()=>{q&&x===cn.Initializing&&k(cn.Initialized)},[q,x]),p.useEffect(()=>{const{onDragMove:ke}=O.current,{active:Fe,activatorEvent:We,collisions:Lt,over:Ve}=be.current;if(!Fe||!We)return;const Ue={active:Fe,activatorEvent:We,collisions:Lt,delta:{x:en.x,y:en.y},over:Ve};hn.unstable_batchedUpdates(()=>{ke==null||ke(Ue),_({type:"onDragMove",event:Ue})})},[en.x,en.y]),p.useEffect(()=>{const{active:ke,activatorEvent:Fe,collisions:We,droppableContainers:Lt,scrollAdjustedTranslate:Ve}=be.current;if(!ke||G.current==null||!Fe||!Ve)return;const{onDragOver:Ue}=O.current,Ge=Lt.get(Ko),$t=Ge&&Ge.rect.current?{id:Ge.id,rect:Ge.rect.current,data:Ge.data,disabled:Ge.disabled}:null,me={active:ke,activatorEvent:Fe,collisions:We,delta:{x:Ve.x,y:Ve.y},over:$t};hn.unstable_batchedUpdates(()=>{Oe($t),Ue==null||Ue(me),_({type:"onDragOver",event:me})})},[Ko]),At(()=>{be.current={activatorEvent:fe,active:F,activeNode:U,collisionRect:tn,collisions:Ln,droppableRects:ue,draggableNodes:C,draggingNode:ye,draggingNodeRect:ut,droppableContainers:E,over:Dt,scrollableAncestors:kt,scrollAdjustedTranslate:en},B.current={initial:ut,translated:tn}},[F,U,Ln,tn,C,ye,ut,ue,E,Dt,kt,en]),Nk({...gt,delta:j,draggingRect:tn,pointerCoordinates:Vo,scrollableAncestors:kt,scrollableAncestorRects:Zt});const Li=p.useMemo(()=>({active:F,activeNode:U,activeNodeRect:q,activatorEvent:fe,collisions:Ln,containerNodeRect:A,dragOverlay:Ne,draggableNodes:C,droppableContainers:E,droppableRects:ue,over:Dt,measureDroppableContainers:ge,scrollableAncestors:kt,scrollableAncestorRects:Zt,measuringConfiguration:z,measuringScheduled:st,windowRect:Mr}),[F,U,q,fe,Ln,A,Ne,C,E,ue,Dt,ge,kt,Zt,z,st,Mr]),Mi=p.useMemo(()=>({activatorEvent:fe,activators:Jo,active:F,activeNodeRect:q,ariaDescribedById:{draggable:W},dispatch:v,draggableNodes:C,over:Dt,measureDroppableContainers:ge}),[fe,Jo,F,q,v,W,C,Dt,ge]);return De.createElement(dp.Provider,{value:h},De.createElement(Ri.Provider,{value:Mi},De.createElement(Sp.Provider,{value:Li},De.createElement(Cp.Provider,{value:Di},c)),De.createElement(Jk,{disabled:(a==null?void 0:a.restoreFocus)===!1})),De.createElement(qy,{...a,hiddenTextDescribedById:W}));function Zn(){const ke=(Re==null?void 0:Re.autoScrollEnabled)===!1,Fe=typeof u=="object"?u.enabled===!1:u===!1,We=S&&!ke&&!Fe;return typeof u=="object"?{...u,enabled:We}:{enabled:We}}}),ex=p.createContext(null),Nd="button",tx="Draggable";function nx(e){let{id:t,data:n,disabled:r=!1,attributes:o}=e;const l=$o(tx),{activators:i,activatorEvent:a,active:u,activeNodeRect:c,ariaDescribedById:d,draggableNodes:f,over:m}=p.useContext(Ri),{role:w=Nd,roleDescription:g="draggable",tabIndex:y=0}=o??{},b=(u==null?void 0:u.id)===t,v=p.useContext(b?Cp:ex),[_,h]=li(),[x,k]=li(),S=Uk(i,t),N=Ro(n);At(()=>(f.set(t,{id:t,key:l,node:_,activatorNode:x,data:N}),()=>{const j=f.get(t);j&&j.key===l&&f.delete(t)}),[f,t]);const C=p.useMemo(()=>({role:w,tabIndex:y,"aria-disabled":r,"aria-pressed":b&&w===Nd?!0:void 0,"aria-roledescription":g,"aria-describedby":d.draggable}),[r,w,y,b,g,d.draggable]);return{active:u,activatorEvent:a,activeNodeRect:c,attributes:C,isDragging:b,listeners:r?void 0:S,node:_,over:m,setNodeRef:h,setActivatorNodeRef:k,transform:v}}function rx(){return p.useContext(Sp)}const ox="Droppable",lx={timeout:25};function ix(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:o}=e;const l=$o(ox),{active:i,dispatch:a,over:u,measureDroppableContainers:c}=p.useContext(Ri),d=p.useRef({disabled:n}),f=p.useRef(!1),m=p.useRef(null),w=p.useRef(null),{disabled:g,updateMeasurementsFor:y,timeout:b}={...lx,...o},v=Ro(y??r),_=p.useCallback(()=>{if(!f.current){f.current=!0;return}w.current!=null&&clearTimeout(w.current),w.current=setTimeout(()=>{c(Array.isArray(v.current)?v.current:[v.current]),w.current=null},b)},[b]),h=Ii({callback:_,disabled:g||!i}),x=p.useCallback((C,j)=>{h&&(j&&(h.unobserve(j),f.current=!1),C&&h.observe(C))},[h]),[k,S]=li(x),N=Ro(t);return p.useEffect(()=>{!h||!k.current||(h.disconnect(),f.current=!1,h.observe(k.current))},[k,h]),p.useEffect(()=>(a({type:ve.RegisterDroppable,element:{id:r,key:l,disabled:n,node:k,rect:m,data:N}}),()=>a({type:ve.UnregisterDroppable,key:l,id:r})),[r]),p.useEffect(()=>{n!==d.current.disabled&&(a({type:ve.SetDroppableDisabled,id:r,key:l,disabled:n}),d.current.disabled=n)},[r,l,n,a]),{active:i,rect:m,isOver:(u==null?void 0:u.id)===r,node:k,over:u,setNodeRef:S}}function bp(e,t,n){const r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function sx(e,t){return e.reduce((n,r,o)=>{const l=t.get(r);return l&&(n[o]=l),n},Array(e.length))}function _l(e){return e!==null&&e>=0}function ax(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n{let{rects:t,activeIndex:n,overIndex:r,index:o}=e;const l=bp(t,r,n),i=t[o],a=l[o];return!a||!i?null:{x:a.left-i.left,y:a.top-i.top,scaleX:a.width/i.width,scaleY:a.height/i.height}},vl={scaleX:1,scaleY:1},cx=e=>{var t;let{activeIndex:n,activeNodeRect:r,index:o,rects:l,overIndex:i}=e;const a=(t=l[n])!=null?t:r;if(!a)return null;if(o===n){const c=l[i];return c?{x:0,y:nn&&o<=i?{x:0,y:-a.height-u,...vl}:o=i?{x:0,y:a.height+u,...vl}:{x:0,y:0,...vl}};function dx(e,t,n){const r=e[t],o=e[t-1],l=e[t+1];return r?nr.map(S=>typeof S=="object"&&"id"in S?S.id:S),[r]),g=i!=null,y=i?w.indexOf(i.id):-1,b=c?w.indexOf(c.id):-1,v=p.useRef(w),_=!ax(w,v.current),h=b!==-1&&y===-1||_,x=ux(l);At(()=>{_&&g&&d(w)},[_,w,g,d]),p.useEffect(()=>{v.current=w},[w]);const k=p.useMemo(()=>({activeIndex:y,containerId:f,disabled:x,disableTransforms:h,items:w,overIndex:b,useDragOverlay:m,sortedRects:sx(w,u),strategy:o}),[y,f,x.draggable,x.droppable,h,w,b,u,m,o]);return De.createElement(Ep.Provider,{value:k},t)}const mx=e=>{let{id:t,items:n,activeIndex:r,overIndex:o}=e;return bp(n,r,o).indexOf(t)},px=e=>{let{containerId:t,isSorting:n,wasDragging:r,index:o,items:l,newIndex:i,previousItems:a,previousContainerId:u,transition:c}=e;return!c||!r||a!==l&&o===i?!1:n?!0:i!==o&&t===u},hx={duration:200,easing:"ease"},Ip="transform",_x=To.Transition.toString({property:Ip,duration:0,easing:"linear"}),vx={roleDescription:"sortable"};function wx(e){let{disabled:t,index:n,node:r,rect:o}=e;const[l,i]=p.useState(null),a=p.useRef(n);return At(()=>{if(!t&&n!==a.current&&r.current){const u=o.current;if(u){const c=Lr(r.current,{ignoreTransform:!0}),d={x:u.left-c.left,y:u.top-c.top,scaleX:u.width/c.width,scaleY:u.height/c.height};(d.x||d.y)&&i(d)}}n!==a.current&&(a.current=n)},[t,n,r,o]),p.useEffect(()=>{l&&i(null)},[l]),l}function gx(e){let{animateLayoutChanges:t=px,attributes:n,disabled:r,data:o,getNewIndex:l=mx,id:i,strategy:a,resizeObserverConfig:u,transition:c=hx}=e;const{items:d,containerId:f,activeIndex:m,disabled:w,disableTransforms:g,sortedRects:y,overIndex:b,useDragOverlay:v,strategy:_}=p.useContext(Ep),h=yx(r,w),x=d.indexOf(i),k=p.useMemo(()=>({sortable:{containerId:f,index:x,items:d},...o}),[f,o,x,d]),S=p.useMemo(()=>d.slice(d.indexOf(i)),[d,i]),{rect:N,node:C,isOver:j,setNodeRef:E}=ix({id:i,data:k,disabled:h.droppable,resizeObserverConfig:{updateMeasurementsFor:S,...u}}),{active:L,activatorEvent:B,activeNodeRect:F,attributes:G,setNodeRef:Re,listeners:Xe,isDragging:fe,over:T,setActivatorNodeRef:O,transform:W}=nx({id:i,data:k,attributes:{...vx,...n},disabled:h.draggable}),Y=Ly(E,Re),z=!!L,ue=z&&!g&&_l(m)&&_l(b),ge=!v&&fe,st=ge&&ue?W:null,at=ue?st??(a??_)({rects:y,activeNodeRect:F,activeIndex:m,overIndex:b,index:x}):null,gt=_l(m)&&_l(b)?l({id:i,items:d,activeIndex:m,overIndex:b}):x,yt=L==null?void 0:L.id,q=p.useRef({activeId:yt,items:d,newIndex:gt,containerId:f}),A=d!==q.current.items,be=t({active:L,containerId:f,isDragging:fe,isSorting:z,id:i,index:x,items:d,newIndex:q.current.newIndex,previousItems:q.current.items,previousContainerId:q.current.containerId,transition:c,wasDragging:q.current.activeId!=null}),ee=wx({disabled:!be,index:x,node:C,rect:N});return p.useEffect(()=>{z&&q.current.newIndex!==gt&&(q.current.newIndex=gt),f!==q.current.containerId&&(q.current.containerId=f),d!==q.current.items&&(q.current.items=d)},[z,gt,f,d]),p.useEffect(()=>{if(yt===q.current.activeId)return;if(yt!=null&&q.current.activeId==null){q.current.activeId=yt;return}const ye=setTimeout(()=>{q.current.activeId=yt},50);return()=>clearTimeout(ye)},[yt]),{active:L,activeIndex:m,attributes:G,data:k,rect:N,index:x,newIndex:gt,items:d,isOver:j,isSorting:z,isDragging:fe,listeners:Xe,node:C,overIndex:b,over:T,setNodeRef:Y,setActivatorNodeRef:O,setDroppableNodeRef:E,setDraggableNodeRef:Re,transform:ee??at,transition:Ne()};function Ne(){if(ee||A&&q.current.newIndex===x)return _x;if(!(ge&&!vu(B)||!c)&&(z||be))return To.Transition.toString({...c,property:Ip})}}function yx(e,t){var n,r;return typeof e=="boolean"?{draggable:e,droppable:!1}:{draggable:(n=e==null?void 0:e.draggable)!=null?n:t.draggable,droppable:(r=e==null?void 0:e.droppable)!=null?r:t.droppable}}X.Down,X.Right,X.Up,X.Left;const kx=e=>{let{transform:t}=e;return{...t,x:0}};function Rp(){return s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"icon icon-tabler icons-tabler-outline icon-tabler-edit",children:[s.jsx("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),s.jsx("path",{d:"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1"}),s.jsx("path",{d:"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415"}),s.jsx("path",{d:"M16 5l3 3"})]})}function Tp(){return s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"icon icon-tabler icons-tabler-outline icon-tabler-player-play",children:[s.jsx("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),s.jsx("path",{d:"M7 4v16l13 -8l-13 -8"})]})}function Pp(){return s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"icon icon-tabler icons-tabler-outline icon-tabler-dots-vertical",children:[s.jsx("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),s.jsx("path",{d:"M11 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"}),s.jsx("path",{d:"M11 19a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"}),s.jsx("path",{d:"M11 5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"})]})}function Dp(){return s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"icon icon-tabler icons-tabler-outline icon-tabler-upload",children:[s.jsx("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),s.jsx("path",{d:"M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2"}),s.jsx("path",{d:"M7 9l5 -5l5 5"}),s.jsx("path",{d:"M12 4l0 12"})]})}function Lp(){return s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"icon icon-tabler icons-tabler-outline icon-tabler-package-check",children:[s.jsx("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),s.jsx("path",{d:"M12 3l8 4.5v9l-8 4.5l-8 -4.5v-9l8 -4.5"}),s.jsx("path",{d:"M12 12l8 -4.5"}),s.jsx("path",{d:"M12 12v9"}),s.jsx("path",{d:"M12 12l-8 -4.5"}),s.jsx("path",{d:"M16 5.25l-8 4.5"}),s.jsx("path",{d:"M15 19l2 2l4 -4"})]})}function Mp(){return s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"icon icon-tabler icons-tabler-outline icon-tabler-trash",children:[s.jsx("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),s.jsx("path",{d:"M4 7l16 0"}),s.jsx("path",{d:"M10 11l0 6"}),s.jsx("path",{d:"M14 11l0 6"}),s.jsx("path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12"}),s.jsx("path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3"})]})}function Et(e){return`${e.server_id}:${e.id}`}function xx({workflow:e,dragEnabled:t,managementMode:n,selectedWorkflowKeys:r,openMenuId:o,execStatus:l,setOpenMenuId:i,handleManagementRowClick:a,handleManagementRowKeyDown:u,toggleWorkflowSelection:c,props:d}){const{attributes:f,listeners:m,setNodeRef:w,transform:g,transition:y,isDragging:b}=gx({id:e.id}),v={transform:To.Transform.toString(g),transition:y};return s.jsxs("article",{ref:w,style:v,className:`workflow-item is-sortable ${b?"is-dragging":""} ${n?"is-management-mode":""} ${r.includes(Et(e))?"is-selected":""}`.trim(),"data-workflow-id":e.id,"data-server-id":e.server_id,children:[t?s.jsx("div",{className:"workflow-grip",...f,...m,style:{cursor:"grab"},children:s.jsxs("svg",{width:"6",height:"18",viewBox:"0 0 6 18",fill:"currentColor","aria-hidden":"true",children:[s.jsx("circle",{cx:"1.5",cy:"2",r:"1.2"}),s.jsx("circle",{cx:"4.5",cy:"2",r:"1.2"}),s.jsx("circle",{cx:"1.5",cy:"7",r:"1.2"}),s.jsx("circle",{cx:"4.5",cy:"7",r:"1.2"}),s.jsx("circle",{cx:"1.5",cy:"12",r:"1.2"}),s.jsx("circle",{cx:"4.5",cy:"12",r:"1.2"}),s.jsx("circle",{cx:"1.5",cy:"17",r:"1.2"}),s.jsx("circle",{cx:"4.5",cy:"17",r:"1.2"})]})}):null,s.jsxs("div",{className:"workflow-main-group",role:n?"button":void 0,tabIndex:n?0:void 0,"aria-pressed":n?r.includes(Et(e)):void 0,onClick:_=>a(e,_),onKeyDown:_=>u(e,_),children:[n?s.jsxs("label",{className:"workflow-select workflow-select-leading",onClick:_=>_.stopPropagation(),children:[s.jsx("input",{type:"checkbox",className:"workflow-select-toggle",checked:r.includes(Et(e)),"aria-label":d.t("workflow_select_workflow",{id:e.id}),onChange:_=>c(e,_.target.checked)}),s.jsx("span",{className:"sr-only",children:d.t("workflow_select_workflow",{id:e.id})})]}):null,s.jsxs("div",{className:"workflow-main",children:[s.jsxs("div",{className:"workflow-name-row",children:[s.jsx("span",{className:`status-dot ${e.enabled?"":"is-disabled"}`,"aria-hidden":"true",children:"●"}),s.jsx("span",{className:"workflow-name",title:e.id,children:e.id}),s.jsx("span",{className:"workflow-server-tag",children:e.server_name||e.server_id}),l?l.status==="running"?s.jsx("span",{className:"workflow-exec-status is-running",children:d.t("workflow_status_running")}):s.jsx("button",{type:"button",className:`workflow-exec-status is-${l.status}`,title:d.t("workflow_status_view_history"),onClick:_=>{_.stopPropagation(),d.onViewHistory(e)},children:l.status==="success"?d.t("workflow_status_success"):d.t("workflow_status_error")}):null]}),e.description?s.jsx("p",{className:"workflow-desc",title:e.description,children:e.description}):null]})]}),s.jsxs("div",{className:"workflow-actions",children:[s.jsx("div",{className:"workflow-status-toggle",children:s.jsx(Uo,{ariaLabel:d.t("toggle_workflow",{id:e.id}),checked:e.enabled,className:"workflow-toggle-field",label:s.jsx("span",{className:`workflow-enabled-label ${e.enabled?"status-on":"status-off"}`,children:e.enabled?d.t("wf_enabled"):d.t("wf_disabled")}),onChange:_=>{i(null),d.onToggleWorkflow(e,_.target.checked)}})}),s.jsxs("div",{className:"workflow-secondary-actions",children:[s.jsx("button",{type:"button",className:"btn btn-secondary btn-icon workflow-action-btn workflow-action-edit","aria-label":d.t("edit_workflow",{id:e.id}),onClick:()=>{i(null),d.onEditWorkflow(e)},children:s.jsx(Rp,{})}),s.jsxs("div",{className:`workflow-more ${o===e.id?"is-open":""}`,children:[s.jsx("button",{type:"button",className:"btn btn-secondary btn-icon workflow-action-btn workflow-more-trigger","aria-haspopup":"menu","aria-expanded":o===e.id,"aria-label":d.t("workflow_more_actions",{id:e.id}),onClick:_=>{_.stopPropagation(),i(h=>h===e.id?null:e.id)},children:s.jsx(Pp,{})}),s.jsxs("div",{className:`workflow-more-menu ${o===e.id?"":"hidden"}`,role:"menu",children:[s.jsxs("button",{type:"button",className:"workflow-more-item",role:"menuitem",onClick:()=>{i(null),d.onRunWorkflow(e)},children:[s.jsx(Tp,{}),s.jsx("span",{children:d.t("run_workflow_short")})]}),s.jsxs("button",{type:"button",className:"workflow-more-item",role:"menuitem",onClick:()=>{var _;i(null),(_=d.onCheckDependencies)==null||_.call(d,e)},children:[s.jsx(Lp,{}),s.jsx("span",{children:d.t("dep_check_btn")})]}),s.jsxs("button",{type:"button",className:"workflow-more-item",role:"menuitem",onClick:()=>{i(null),d.onUploadWorkflowVersion(e)},children:[s.jsx(Dp,{}),s.jsx("span",{children:d.t("upload_new_version")})]}),s.jsxs("button",{type:"button",className:"workflow-more-item workflow-more-item-danger",role:"menuitem",onClick:()=>{i(null),d.onDeleteWorkflow(e)},children:[s.jsx(Mp,{}),s.jsx("span",{children:d.t("delete")})]})]})]})]})]})]},`${e.server_id}-${e.id}`)}function Sx({workflow:e,managementMode:t,selectedWorkflowKeys:n,openMenuId:r,execStatus:o,setOpenMenuId:l,handleManagementRowClick:i,handleManagementRowKeyDown:a,toggleWorkflowSelection:u,props:c}){return s.jsxs("article",{className:`workflow-item ${t?"is-management-mode":""} ${n.includes(Et(e))?"is-selected":""}`.trim(),"data-workflow-id":e.id,"data-server-id":e.server_id,children:[s.jsxs("div",{className:"workflow-main-group",role:t?"button":void 0,tabIndex:t?0:void 0,"aria-pressed":t?n.includes(Et(e)):void 0,onClick:d=>i(e,d),onKeyDown:d=>a(e,d),children:[t?s.jsxs("label",{className:"workflow-select workflow-select-leading",onClick:d=>d.stopPropagation(),children:[s.jsx("input",{type:"checkbox",className:"workflow-select-toggle",checked:n.includes(Et(e)),"aria-label":c.t("workflow_select_workflow",{id:e.id}),onChange:d=>u(e,d.target.checked)}),s.jsx("span",{className:"sr-only",children:c.t("workflow_select_workflow",{id:e.id})})]}):null,s.jsxs("div",{className:"workflow-main",children:[s.jsxs("div",{className:"workflow-name-row",children:[s.jsx("span",{className:`status-dot ${e.enabled?"":"is-disabled"}`,"aria-hidden":"true",children:"●"}),s.jsx("span",{className:"workflow-name",title:e.id,children:e.id}),s.jsx("span",{className:"workflow-server-tag",children:e.server_name||e.server_id}),o?o.status==="running"?s.jsx("span",{className:"workflow-exec-status is-running",children:c.t("workflow_status_running")}):s.jsx("button",{type:"button",className:`workflow-exec-status is-${o.status}`,title:c.t("workflow_status_view_history"),onClick:d=>{d.stopPropagation(),c.onViewHistory(e)},children:o.status==="success"?c.t("workflow_status_success"):c.t("workflow_status_error")}):null]}),e.description?s.jsx("p",{className:"workflow-desc",title:e.description,children:e.description}):null]})]}),s.jsxs("div",{className:"workflow-actions",children:[s.jsx("div",{className:"workflow-status-toggle",children:s.jsx(Uo,{ariaLabel:c.t("toggle_workflow",{id:e.id}),checked:e.enabled,className:"workflow-toggle-field",label:s.jsx("span",{className:`workflow-enabled-label ${e.enabled?"status-on":"status-off"}`,children:e.enabled?c.t("wf_enabled"):c.t("wf_disabled")}),onChange:d=>{l(null),c.onToggleWorkflow(e,d.target.checked)}})}),s.jsxs("div",{className:"workflow-secondary-actions",children:[s.jsx("button",{type:"button",className:"btn btn-secondary btn-icon workflow-action-btn workflow-action-edit","aria-label":c.t("edit_workflow",{id:e.id}),onClick:()=>{l(null),c.onEditWorkflow(e)},children:s.jsx(Rp,{})}),s.jsxs("div",{className:`workflow-more ${r===e.id?"is-open":""}`,children:[s.jsx("button",{type:"button",className:"btn btn-secondary btn-icon workflow-action-btn workflow-more-trigger","aria-haspopup":"menu","aria-expanded":r===e.id,"aria-label":c.t("workflow_more_actions",{id:e.id}),onClick:d=>{d.stopPropagation(),l(f=>f===e.id?null:e.id)},children:s.jsx(Pp,{})}),s.jsxs("div",{className:`workflow-more-menu ${r===e.id?"":"hidden"}`,role:"menu",children:[s.jsxs("button",{type:"button",className:"workflow-more-item",role:"menuitem",onClick:()=>{l(null),c.onRunWorkflow(e)},children:[s.jsx(Tp,{}),s.jsx("span",{children:c.t("run_workflow_short")})]}),s.jsxs("button",{type:"button",className:"workflow-more-item",role:"menuitem",onClick:()=>{var d;l(null),(d=c.onCheckDependencies)==null||d.call(c,e)},children:[s.jsx(Lp,{}),s.jsx("span",{children:c.t("dep_check_btn")})]}),s.jsxs("button",{type:"button",className:"workflow-more-item",role:"menuitem",onClick:()=>{l(null),c.onUploadWorkflowVersion(e)},children:[s.jsx(Dp,{}),s.jsx("span",{children:c.t("upload_new_version")})]}),s.jsxs("button",{type:"button",className:"workflow-more-item workflow-more-item-danger",role:"menuitem",onClick:()=>{l(null),c.onDeleteWorkflow(e)},children:[s.jsx(Mp,{}),s.jsx("span",{children:c.t("delete")})]})]})]})]})]})]},`${e.server_id}-${e.id}`)}function Cx(e){const[t,n]=p.useState(null),[r,o]=p.useState(!1),[l,i]=p.useState(!1),[a,u]=p.useState([]),c=e.sort==="custom"&&!e.search.trim()&&!l,d=Jy(Qy(ku,{activationConstraint:{distance:5}}));function f(C){var j;e.onCreateWorkflowFromFile(((j=C.target.files)==null?void 0:j[0])||null),C.target.value=""}p.useEffect(()=>{function C(E){const L=E.target;L!=null&&L.closest(".workflow-more")||n(null)}function j(E){E.key==="Escape"&&n(null)}return document.addEventListener("click",C),document.addEventListener("keydown",j),()=>{document.removeEventListener("click",C),document.removeEventListener("keydown",j)}},[]),p.useEffect(()=>{const C=new Set(e.workflows.map(Et));u(j=>j.filter(E=>C.has(E)))},[e.workflows]),p.useEffect(()=>{e.workflows.length===0&&l&&(i(!1),u([]))},[l,e.workflows.length]);const m=e.allWorkflowsForCurrentServer===e.workflows.length?e.t(e.workflows.length===1?"workflow_count_one":"workflow_count",{count:e.workflows.length}):e.t(e.allWorkflowsForCurrentServer===1?"workflow_count_filtered_one":"workflow_count_filtered",{visible:e.workflows.length,total:e.allWorkflowsForCurrentServer}),w=p.useMemo(()=>[{value:"updated_desc",label:e.t("workflow_sort_recent")},{value:"name_asc",label:e.t("workflow_sort_name")},{value:"custom",label:e.t("workflow_sort_custom")}],[e.t]),g=p.useMemo(()=>e.workflows.filter(C=>a.includes(Et(C))),[e.workflows,a]);function y(C,j){const E=Et(C);u(L=>j?L.includes(E)?L:[...L,E]:L.filter(B=>B!==E))}function b(C){const j=Et(C);u(E=>E.includes(j)?E.filter(L=>L!==j):[...E,j])}function v(C,j){const E=j.target;!l||E!=null&&E.closest(".workflow-select")||b(C)}function _(C,j){!l||j.key!=="Enter"&&j.key!==" "||(j.preventDefault(),b(C))}function h(){n(null),i(!0)}function x(){i(!1),u([])}function k(C){const{active:j,over:E}=C;if(!E||j.id===E.id)return;const L=e.workflows.findIndex(G=>G.id===j.id),B=e.workflows.findIndex(G=>G.id===E.id);if(L===-1||B===-1)return;const F=Le.workflows.map(C=>C.id),[e.workflows]);function N(){if(e.workflows.length===0)return e.allWorkflowsForCurrentServer?s.jsx("div",{className:"empty-state",children:e.t("no_workflows_match")}):s.jsxs("label",{className:`upload-zone workflow-empty-upload${r?" is-dragging":""}`,htmlFor:"workflow-empty-upload",tabIndex:0,onDragEnter:j=>{j.preventDefault(),o(!0)},onDragOver:j=>{j.preventDefault(),o(!0)},onDragLeave:j=>{j.preventDefault(),o(!1)},onDrop:j=>{var E;j.preventDefault(),o(!1),e.onCreateWorkflowFromFile(((E=j.dataTransfer.files)==null?void 0:E[0])||null)},onKeyDown:j=>{if(j.key==="Enter"||j.key===" "){j.preventDefault();const E=document.getElementById("workflow-empty-upload");E instanceof HTMLInputElement&&E.click()}},children:[s.jsx("input",{id:"workflow-empty-upload",type:"file",accept:".json",onChange:f}),s.jsx("span",{className:"upload-title",children:e.t("drag_upload")}),s.jsx("span",{className:"upload-subtitle",children:e.t("after_upload")})]});const C=j=>({workflow:j,managementMode:l,selectedWorkflowKeys:a,openMenuId:t,execStatus:e.executingWorkflows[`${j.server_id}:${j.id}`],setOpenMenuId:n,handleManagementRowClick:v,handleManagementRowKeyDown:_,toggleWorkflowSelection:y,props:e});return c?s.jsx(Zk,{sensors:d,collisionDetection:ek,modifiers:[kx],onDragEnd:k,children:s.jsx(fx,{items:S,strategy:cx,children:e.workflows.map(j=>s.jsx(xx,{dragEnabled:c,...C(j)},`${j.server_id}-${j.id}`))})}):e.workflows.map(j=>s.jsx(Sx,{...C(j)},`${j.server_id}-${j.id}`))}return s.jsxs(ap,{title:e.t("workflow_manager"),titleId:"workflow-manager-title",actions:s.jsx("button",{type:"button",className:"btn btn-secondary panel-action-btn",onClick:e.onCreateWorkflow,children:e.t("register_new_short")}),children:[s.jsxs("div",{className:"workflow-toolbar",children:[s.jsx(tt,{id:"workflow-search",fieldClassName:"workflow-search-field",value:e.search,onChange:C=>e.onSearchChange(C.target.value),placeholder:e.t("workflow_search_placeholder")}),s.jsxs("div",{className:"workflow-toolbar-side",children:[e.allWorkflowsForCurrentServer?s.jsx("p",{className:"section-meta panel-meta workflow-summary-chip",children:m}):null,s.jsx(Qn,{value:e.sort,options:w,ariaLabel:e.t("workflow_sort_custom"),className:"is-server-select",onChange:e.onSortChange}),e.workflows.length>0?s.jsx("button",{type:"button",className:`btn btn-secondary workflow-batch-toggle-btn ${l?"is-active":""}`.trim(),"aria-pressed":l,onClick:()=>l?x():h(),children:l?e.t("workflow_management_active"):e.t("workflow_enter_batch_mode")}):null]})]}),l?s.jsxs("div",{className:"workflow-management-bar",role:"group","aria-label":e.t("workflow_batch_actions"),children:[s.jsx("div",{className:"workflow-management-status",children:s.jsx("p",{className:"section-meta panel-meta workflow-summary-chip workflow-batch-selection-chip",children:e.t("workflow_selected_count",{count:g.length})})}),s.jsxs("div",{className:"workflow-management-actions",children:[s.jsx("button",{type:"button",className:"btn btn-secondary workflow-batch-inline-btn",onClick:()=>u(e.workflows.map(Et)),children:e.t("workflow_select_all")}),s.jsx("button",{type:"button",className:"btn btn-secondary workflow-batch-inline-btn",onClick:()=>u([]),disabled:g.length===0,children:e.t("workflow_clear_selection")}),s.jsx("button",{type:"button",className:"btn btn-danger-soft workflow-batch-inline-btn",onClick:()=>{n(null),e.onBatchDeleteWorkflows(g)},disabled:g.length===0,children:e.t("workflow_delete_selected")}),s.jsx("button",{type:"button",className:"btn btn-secondary workflow-batch-inline-btn",onClick:x,children:e.t("workflow_exit_batch_mode")})]})]}):null,s.jsx("div",{className:"workflow-list","aria-live":"polite",children:N()})]})}function bx(e){var t;return s.jsxs(s.Fragment,{children:[s.jsx(Dy,{servers:e.servers,currentServerId:((t=e.currentServer)==null?void 0:t.id)||null,onSelectServer:e.onSelectServer,onToggleServer:e.onToggleServer,onDeleteServer:e.onDeleteServer,onOpenCreate:e.onOpenCreateServer,onOpenEdit:e.onOpenEditServer,modalOpen:e.serverModalOpen,modalMode:e.serverModalMode,form:e.serverForm,onFormChange:e.onServerFormChange,onCloseModal:e.onCloseServerModal,onSubmitModal:e.onSubmitServerModal,t:e.t}),s.jsx(Cx,{workflows:e.visibleWorkflows,allWorkflowsForCurrentServer:e.currentServerWorkflowsCount,search:e.workflowSearch,sort:e.workflowSort,onSearchChange:e.onWorkflowSearchChange,onSortChange:e.onWorkflowSortChange,onCreateWorkflow:e.onCreateWorkflow,onCreateWorkflowFromFile:e.onCreateWorkflowFromFile,onEditWorkflow:e.onEditWorkflow,onRunWorkflow:e.onRunWorkflow,onCheckDependencies:e.onCheckDependencies,onBatchDeleteWorkflows:e.onBatchDeleteWorkflows,onDeleteWorkflow:e.onDeleteWorkflow,onToggleWorkflow:e.onToggleWorkflow,onUploadWorkflowVersion:e.onUploadWorkflowVersion,onReorderWorkflows:e.onReorderWorkflows,executingWorkflows:e.executingWorkflows,onViewHistory:e.onViewHistory,t:e.t})]})}function Nx(e){return`/editor/${encodeURIComponent(e.server_id)}/${encodeURIComponent(e.id)}`}function jx({controller:e}){const t=mu();async function n(){e.createWorkflow()&&t("/editor/new")}async function r(l){await e.createWorkflowFromFile(l)&&t("/editor/new")}async function o(l){e.setCurrentServerId(l.server_id),await e.handleEditWorkflow(l)&&t(Nx(l))}return s.jsx(sp,{header:s.jsx(ip,{className:"dashboard-header",leading:s.jsx("div",{className:"logo-frame","aria-hidden":"true",children:s.jsx("img",{className:"logo-image",src:"/static/logo.png",alt:"ComfyUI OpenClaw logo"})}),title:e.t("title"),subtitle:e.t("subtitle"),actions:s.jsxs(s.Fragment,{children:[s.jsx("button",{type:"button",className:"btn btn-secondary panel-action-btn",onClick:e.handleOpenTransferExport,children:e.t("export_bundle")}),s.jsx("button",{type:"button",className:"btn btn-secondary panel-action-btn",onClick:e.handleOpenTransferImport,children:e.t("import_bundle")})]}),trailing:s.jsx(by,{value:e.language,onChange:e.setLanguage})}),children:s.jsx(bx,{servers:e.servers,currentServer:e.currentServer,visibleWorkflows:e.visibleWorkflows,currentServerWorkflowsCount:e.currentServerWorkflows.length,serverModalOpen:e.serverModalOpen,serverModalMode:e.serverModalMode,serverForm:e.serverForm,workflowSearch:e.workflowSearch,workflowSort:e.workflowSort,onSelectServer:e.setCurrentServerId,onToggleServer:e.handleToggleServer,onDeleteServer:e.requestDeleteServer,onOpenCreateServer:e.handleAddServer,onOpenEditServer:e.handleEditServer,onServerFormChange:e.setServerForm,onCloseServerModal:()=>e.setServerModalOpen(!1),onSubmitServerModal:e.handleSubmitServerModal,onWorkflowSearchChange:e.setWorkflowSearch,onWorkflowSortChange:e.setWorkflowSort,onCreateWorkflow:n,onCreateWorkflowFromFile:r,onEditWorkflow:o,onRunWorkflow:e.handleOpenRunWorkflow,onCheckDependencies:l=>void e.handleCheckSavedWorkflow(l.server_id,l.id),onBatchDeleteWorkflows:e.handleBatchDeleteWorkflows,onDeleteWorkflow:e.handleDeleteWorkflow,onToggleWorkflow:e.handleToggleWorkflow,onUploadWorkflowVersion:e.handleUploadWorkflowVersion,onReorderWorkflows:e.handleReorderWorkflows,executingWorkflows:e.executingWorkflows,onViewHistory:e.handleOpenWorkflowHistory,t:e.t})})}function Ex(e){return[{value:"string",label:e("type_str")},{value:"int",label:e("type_int")},{value:"float",label:e("type_float")},{value:"boolean",label:e("type_bool")}]}function Ix(e){return s.jsxs("article",{className:`node-card${e.collapsed?" is-collapsed":""}`,children:[s.jsxs("div",{className:"node-header",children:[s.jsxs("div",{className:"node-title",children:[s.jsx("span",{className:"status-dot","aria-hidden":"true",children:"●"}),s.jsx("span",{children:e.classType})]}),s.jsxs("div",{className:"node-header-right",children:[s.jsxs("span",{className:"status-badge",children:[e.t("node_id"),": ",e.nodeId]}),s.jsx("button",{type:"button",className:"btn btn-secondary btn-icon small node-collapse-btn","aria-label":e.t("toggle_node",{id:e.nodeId}),onClick:()=>e.onToggleNode(e.nodeId),children:e.collapsed?"▸":"▾"})]})]}),e.collapsed?null:s.jsx("div",{className:"node-body",children:e.params.map(t=>{const n=t.exposed&&e.expandedParamKeys.has(t.key);return s.jsxs("div",{className:`param-row${t.exposed?" active":""}`,children:[s.jsxs("div",{className:"param-main",children:[s.jsx(Uo,{ariaLabel:t.field,checked:t.exposed,className:"param-expose-switch",onChange:r=>e.onUpdateParam(t.key,"exposed",r.target.checked)}),s.jsxs("div",{className:"param-main-copy",children:[s.jsxs("div",{className:`param-title${t.exposed?" active":""}`,children:[s.jsx("span",{children:t.field}),t.migrationStatus?s.jsx("span",{className:`param-status-badge is-${t.migrationStatus}`,children:e.t(`migration_status_${t.migrationStatus}`)}):null]}),s.jsxs("div",{className:"param-meta",children:[e.t("curr_val"),": ",String(t.currentVal??"")]}),t.migrationStatus==="review"?s.jsx("div",{className:"param-meta param-meta-emphasis",children:e.t("migration_review_hint")}):null]}),t.exposed?s.jsx("button",{type:"button",className:"btn btn-secondary btn-icon small param-config-toggle","aria-label":e.t("toggle_param_config",{field:t.field}),onClick:()=>e.onToggleParamConfig(t.key),children:n?"▾":"▸"}):null]}),t.exposed&&n?s.jsxs("div",{className:"param-config is-expanded",children:[s.jsx(pt,{label:e.t("alias"),htmlFor:`mapping-name-${t.key}`,className:"param-config-field",noMargin:!0,children:s.jsx(tt,{id:`mapping-name-${t.key}`,fieldClassName:"param-config-input",value:t.name,onChange:r=>e.onUpdateParam(t.key,"name",r.target.value)})}),s.jsx(pt,{label:e.t("ai_desc"),htmlFor:`mapping-description-${t.key}`,className:"param-config-field",noMargin:!0,children:s.jsx(tt,{id:`mapping-description-${t.key}`,fieldClassName:"param-config-input",value:t.description,onChange:r=>e.onUpdateParam(t.key,"description",r.target.value)})}),s.jsx(pt,{label:e.t("type"),className:"param-config-field param-config-field-stack",noMargin:!0,children:s.jsxs("div",{className:"param-config-stack",children:[s.jsx(Qn,{value:t.type,options:Ex(e.t),onChange:r=>e.onUpdateParam(t.key,"type",r),ariaLabel:e.t("type"),className:"is-mapping-sort-select"}),s.jsx(En,{id:`mapping-required-${t.key}`,checked:t.required,className:"param-config-checkbox",onChange:r=>e.onUpdateParam(t.key,"required",r.target.checked),label:e.t("required")})]})})]}):null]},t.key)})})]})}function Rx(e){return s.jsxs("section",{id:"mapping-section",className:`card${e.hasWorkflow?"":" hidden"}`,"aria-labelledby":"mapping-title",children:[s.jsxs("div",{className:"editor-section-heading",children:[s.jsx("h2",{id:"mapping-title",className:"card-title",children:e.t("editor_step_3")}),s.jsx("p",{className:"subtitle editor-section-hint",children:e.t("editor_step_3_hint")})]}),e.upgradeSummary?s.jsxs("div",{className:"upgrade-summary-banner",children:[s.jsx("div",{className:"upgrade-summary-title",children:e.t("workflow_upgrade_ready")}),s.jsx("div",{className:"upgrade-summary-meta",children:e.t("workflow_upgrade_summary",{retained:e.upgradeSummary.retained,review:e.upgradeSummary.review,added:e.upgradeSummary.added,removed:e.upgradeSummary.removed})})]}):null,s.jsxs("div",{className:"mapping-toolbar",children:[s.jsxs("div",{className:"mapping-toolbar-top",children:[s.jsx(tt,{ref:e.searchInputRef,id:"mapping-search",fieldClassName:"mapping-search-field",value:e.filters.query,onChange:t=>e.onFilterChange({query:t.target.value}),placeholder:e.t("mapping_search_placeholder")}),s.jsx(Qn,{value:e.filters.nodeSort,options:[{value:"node_id_asc",label:e.t("mapping_sort_node_id_asc")},{value:"node_id_desc",label:e.t("mapping_sort_node_id_desc")},{value:"class_asc",label:e.t("mapping_sort_class_asc")}],onChange:t=>e.onFilterChange({nodeSort:t}),ariaLabel:e.t("mapping_sort_node_id_asc"),className:"is-mapping-sort-select"}),s.jsx(Qn,{value:e.filters.paramSort,options:[{value:"default",label:e.t("mapping_sort_param_default")},{value:"field_asc",label:e.t("mapping_sort_param_name")},{value:"type_asc",label:e.t("mapping_sort_param_type")},{value:"exposed_first",label:e.t("mapping_sort_param_exposed")}],onChange:t=>e.onFilterChange({paramSort:t}),ariaLabel:e.t("mapping_sort_param_default"),className:"is-mapping-sort-select"})]}),s.jsxs("div",{className:"mapping-toolbar-bottom",children:[s.jsx(En,{id:"mapping-exposed-only",className:"mapping-exposed-only-label",checked:e.filters.exposedOnly,onChange:t=>e.onFilterChange({exposedOnly:t.target.checked}),label:e.t("mapping_exposed_only")}),s.jsx(En,{id:"mapping-required-only",className:"mapping-exposed-only-label",checked:e.filters.requiredOnly,onChange:t=>e.onFilterChange({requiredOnly:t.target.checked}),label:e.t("mapping_required_only")}),s.jsxs("div",{className:"mapping-toolbar-actions",children:[s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:e.onApplyRecommended,children:e.t("mapping_apply_recommended")}),s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:()=>e.onExposeVisible(!0),children:e.t("mapping_expose_visible")}),s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:()=>e.onExposeVisible(!1),children:e.t("mapping_unexpose_visible")}),s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:()=>e.onCollapseAll(!0),children:e.t("mapping_collapse_all")}),s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:()=>e.onCollapseAll(!1),children:e.t("mapping_expand_all")}),s.jsx("button",{type:"button",className:"btn btn-secondary",onClick:e.onResetFilters,children:e.t("mapping_reset_filters")})]})]})]}),s.jsx("p",{id:"mapping-summary",className:"section-meta",children:e.summaryText}),s.jsx("div",{id:"nodes-container",className:"nodes-container","aria-live":"polite",children:e.groupedNodes.length===0?s.jsx("div",{className:"empty-state",children:e.t(e.emptyStateMessageKey)}):e.groupedNodes.map(([t,n])=>s.jsx(Ix,{nodeId:t,classType:n.classType,params:n.params,collapsed:e.collapsedNodeIds.has(t),expandedParamKeys:e.expandedParamKeys,onToggleNode:e.onToggleNode,onToggleParamConfig:e.onToggleParamConfig,onUpdateParam:e.onUpdateParam,t:e.t},t))}),s.jsxs("div",{className:"mapping-savebar",children:[s.jsx("p",{className:"mapping-shortcut-hint",children:e.t("mapping_shortcuts_hint")}),s.jsx("button",{type:"button",className:"btn btn-wide btn-accent",onClick:e.onSave,children:e.mode==="edit"?e.t("save_workflow_edit"):e.t("save_workflow")})]})]})}function Tx(e){const[t,n]=p.useState(!1);function r(l){var i;e.onUploadFile(((i=l.target.files)==null?void 0:i[0])||null),l.target.value=""}function o(){const l=document.getElementById("file-upload");l instanceof HTMLInputElement&&l.click()}return s.jsxs(s.Fragment,{children:[e.hasWorkflow?null:s.jsxs("section",{className:"card editor-upload-card","aria-labelledby":"editor-upload-title",children:[s.jsxs("div",{className:"editor-section-heading",children:[s.jsx("h2",{id:"editor-upload-title",className:"card-title",children:e.t("editor_step_1")}),s.jsx("p",{className:"subtitle editor-section-hint",children:e.t("editor_step_1_hint")})]}),s.jsxs("div",{id:"upload-zone",className:"editor-upload-selector",children:[s.jsx("input",{id:"file-upload",type:"file",accept:".json",onChange:r}),s.jsxs("div",{className:"editor-upload-selector-copy",children:[s.jsx("span",{className:"upload-title",children:e.t("drag_upload")}),s.jsx("span",{className:"upload-subtitle",children:e.t("after_upload")})]}),s.jsxs("div",{className:"editor-upload-grid","aria-label":e.t("editor_import_source_label"),children:[s.jsxs("article",{className:`editor-upload-option is-primary${t?" is-dragging":""}`,onDragEnter:l=>{l.preventDefault(),n(!0)},onDragOver:l=>{l.preventDefault(),n(!0)},onDragLeave:l=>{l.preventDefault(),n(!1)},onDrop:l=>{var i;l.preventDefault(),n(!1),e.onUploadFile(((i=l.dataTransfer.files)==null?void 0:i[0])||null)},children:[s.jsxs("div",{className:"editor-upload-option-copy",children:[s.jsx("h3",{className:"editor-upload-option-title",children:e.t("editor_import_source_single")}),s.jsx("p",{className:"editor-upload-option-text",children:e.t("editor_upload_option_single_help")})]}),s.jsx("button",{type:"button",className:"editor-upload-card-button is-primary",onClick:o,children:e.t("editor_import_action_single")})]}),s.jsxs("article",{className:"editor-upload-option",children:[s.jsxs("div",{className:"editor-upload-option-copy",children:[s.jsx("h3",{className:"editor-upload-option-title",children:e.t("editor_import_source_folder")}),s.jsx("p",{className:"editor-upload-option-text",children:e.t("editor_upload_option_folder_help")})]}),s.jsx("button",{type:"button",className:"editor-upload-card-button",onClick:e.onOpenFolderImport,disabled:e.bulkImportBusy,children:e.t("editor_import_action_folder")})]}),s.jsxs("article",{className:"editor-upload-option is-caution",children:[s.jsxs("div",{className:"editor-upload-option-copy",children:[s.jsx("h3",{className:"editor-upload-option-title",children:e.t("editor_import_source_comfyui")}),s.jsx("p",{className:"editor-upload-option-text",children:e.currentServerLabel?e.t("editor_upload_option_comfyui_help_with_server",{server:e.currentServerLabel}):e.t("editor_upload_option_comfyui_help")})]}),s.jsx("button",{type:"button",className:"editor-upload-card-button",onClick:e.onPreviewImportFromComfyUI,disabled:e.bulkImportBusy,children:e.bulkImportBusy?e.t(e.bulkImportStage==="preview"?"editor_import_action_comfyui_scanning":"bulk_import_loading"):e.t("editor_import_action_comfyui")})]})]})]}),s.jsxs("aside",{className:"upload-note","aria-live":"polite",children:[s.jsx("h3",{className:"upload-note-title",children:e.t("upload_reminder_title")}),s.jsxs("ul",{className:"upload-note-list",children:[s.jsx("li",{children:e.t("upload_reminder_api")}),s.jsx("li",{children:e.t("upload_reminder_how")})]})]})]}),e.hasWorkflow?s.jsxs("section",{className:"card","aria-labelledby":"editor-info-title",children:[s.jsxs("div",{className:"editor-section-heading",children:[s.jsx("h2",{id:"editor-info-title",className:"card-title",children:e.t("editor_step_2")}),s.jsx("p",{className:"subtitle editor-section-hint",children:e.t("editor_step_2_hint")})]}),s.jsxs("div",{className:"editor-info-grid",children:[s.jsx(pt,{label:e.t("wf_id_label"),htmlFor:"wf-id",className:"editor-info-field no-margin",noMargin:!0,children:s.jsx(tt,{id:"wf-id",fieldClassName:"editor-info-input",value:e.workflowId,onChange:l=>e.onWorkflowIdChange(l.target.value),placeholder:e.t("wf_id_placeholder"),autoComplete:"off",spellCheck:!1})}),s.jsx(pt,{label:e.t("wf_desc_label"),htmlFor:"wf-desc",className:"editor-info-field no-margin",noMargin:!0,children:s.jsx(tt,{id:"wf-desc",fieldClassName:"editor-info-input",value:e.description,onChange:l=>e.onDescriptionChange(l.target.value),placeholder:e.t("wf_desc_placeholder"),autoComplete:"off"})})]})]}):null]})}function Px(e){const t=!!e.workflowId.trim(),n=e.hasWorkflow?t?3:2:1;return s.jsxs(s.Fragment,{children:[s.jsxs("ol",{className:"editor-stepper","aria-label":"Workflow setup steps",children:[s.jsxs("li",{className:`editor-step ${n===1?"is-active":n>1?"is-done":""}`,children:[s.jsx("span",{className:"editor-step-index",children:"1"}),s.jsx("span",{className:"editor-step-label",children:e.t("editor_step_1")})]}),s.jsxs("li",{className:`editor-step ${n===2?"is-active":n>2?"is-done":""}`,children:[s.jsx("span",{className:"editor-step-index",children:"2"}),s.jsx("span",{className:"editor-step-label",children:e.t("editor_step_2")})]}),s.jsxs("li",{className:`editor-step ${n===3?"is-active":""}`,children:[s.jsx("span",{className:"editor-step-index",children:"3"}),s.jsx("span",{className:"editor-step-label",children:e.t("editor_step_3")})]})]}),s.jsx(Tx,{workflowId:e.workflowId,description:e.description,hasWorkflow:e.hasWorkflow,currentServerLabel:e.currentServerLabel,bulkImportBusy:e.bulkImportBusy,bulkImportStage:e.bulkImportStage,onWorkflowIdChange:e.onWorkflowIdChange,onDescriptionChange:e.onDescriptionChange,onUploadFile:e.onUploadFile,onOpenFolderImport:e.onOpenFolderImport,onPreviewImportFromComfyUI:e.onPreviewImportFromComfyUI,t:e.t}),s.jsx(Rx,{...e})]})}function jd({controller:e}){var w,g,y;const t=mu(),n=Bv(),[r,o]=p.useState(!1),l=!!(n.serverId&&n.workflowId),i=n.serverId?decodeURIComponent(n.serverId):null,a=n.workflowId?decodeURIComponent(n.workflowId):null,u=!!e.editorState.workflowId.trim(),c=e.editorState.workflowData?u?3:2:1;p.useEffect(()=>{if(!l||!i||!a){o(!1);return}let b=!1;if(e.editorState.editingWorkflowId===a&&e.editorState.workflowData){o(!1),e.setCurrentServerId(i);return}return o(!0),e.loadEditorWorkflowByRoute(i,a).then(v=>{b||(o(!1),v||t("/",{replace:!0}))}),()=>{b=!0}},[e.editorState.editingWorkflowId,e.editorState.workflowData,l,t,i,a]);async function d(){await e.handleBackFromEditor()&&t("/")}const f=e.editorState.editingWorkflowId?`${e.t("editor_mode_editing")}: ${e.editorState.editingWorkflowId||e.editorState.workflowId}`:e.t("editor_mode_create"),m=c===1?e.t("editor_step_1_hint"):c===2?e.t("editor_step_2_hint"):e.t("editor_step_3_hint");return s.jsx(sp,{header:s.jsx(ip,{leading:s.jsxs("button",{type:"button",className:"btn btn-secondary editor-back-btn",onClick:d,children:[s.jsx("span",{"aria-hidden":"true",children:"←"})," ",s.jsx("span",{children:e.t("back")})]}),title:f,subtitle:m}),children:r?s.jsx("section",{className:"card","aria-live":"polite",children:s.jsx("p",{className:"section-meta",children:e.t("loading")})}):s.jsx(Px,{workflowId:e.editorState.workflowId,description:e.editorState.description,schemaParams:e.editorState.schemaParams,hasWorkflow:!!e.editorState.workflowData,currentServerLabel:((g=(w=e.currentServer)==null?void 0:w.name)==null?void 0:g.trim())||((y=e.currentServer)==null?void 0:y.id)||null,bulkImportBusy:e.bulkImportState.loading,bulkImportStage:e.bulkImportState.loadingStage,emptyStateMessageKey:e.editorEmptyStateMessageKey,mode:e.editorState.editingWorkflowId?"edit":"create",editingWorkflowId:e.editorState.editingWorkflowId,upgradeSummary:e.editorState.upgradeSummary,filters:e.editorFilters,collapsedNodeIds:e.collapsedNodeIds,expandedParamKeys:e.expandedParamKeys,groupedNodes:e.groupedNodes,summaryText:e.mappingSummaryText,searchInputRef:e.mappingSearchRef,onBack:d,onWorkflowIdChange:e.handleWorkflowIdChange,onDescriptionChange:b=>e.setEditorState(v=>({...v,description:b,hasUnsavedChanges:!0})),onUploadFile:e.handleEditorUpload,onOpenFolderImport:e.handleOpenLocalImportFolder,onPreviewImportFromComfyUI:()=>void e.handlePreviewImportFromComfyUI(),onSave:e.handleSaveWorkflow,onFilterChange:b=>e.setEditorFilters(v=>({...v,...b})),onResetFilters:()=>e.setEditorFilters({query:"",exposedOnly:!1,requiredOnly:!1,nodeSort:"node_id_asc",paramSort:"default"}),onToggleNode:b=>e.setCollapsedNodeIds(v=>{const _=new Set(v);return _.has(b)?_.delete(b):_.add(b),_}),onToggleParamConfig:b=>e.setExpandedParamKeys(v=>{const _=new Set(v);return _.has(b)?_.delete(b):_.add(b),_}),onUpdateParam:e.updateEditorParam,onApplyRecommended:e.applyRecommendedExposures,onExposeVisible:e.exposeVisible,onCollapseAll:b=>{b?e.setCollapsedNodeIds(new Set(e.groupedNodes.map(([v])=>v))):e.setCollapsedNodeIds(new Set)},t:e.t})})}function Dx({controller:e}){return s.jsxs(iw,{children:[s.jsx(Yr,{path:"/",element:s.jsx(jx,{controller:e})}),s.jsx(Yr,{path:"/editor/new",element:s.jsx(jd,{controller:e})}),s.jsx(Yr,{path:"/editor/:serverId/:workflowId",element:s.jsx(jd,{controller:e})}),s.jsx(Yr,{path:"*",element:s.jsx(ow,{to:"/",replace:!0})})]})}function Ed(){var n,r,o,l,i,a,u,c,d;const e=ji(),t=Cy({isEditorRoute:e.pathname.startsWith("/editor")});return s.jsxs(s.Fragment,{children:[(((n=t.updateInfo)==null?void 0:n.has_update)||t.updateFeedback)&&s.jsx(Cw,{localCommit:t.updateInfo.local_commit||"",remoteCommit:t.updateInfo.remote_commit||"",feedback:t.updateFeedback,onDismiss:t.dismissUpdate,t:t.t}),s.jsx(fw,{toasts:t.toasts,onDismiss:t.dismissToast}),s.jsx(Dx,{controller:t}),s.jsx(uw,{open:t.confirmState.open,title:t.confirmState.title,message:t.confirmState.message,confirmLabel:t.confirmState.confirmLabel,cancelLabel:t.confirmState.cancelLabel,tone:t.confirmState.tone,checkboxLabel:t.confirmState.checkboxLabel,checkboxChecked:t.confirmState.checkboxChecked,onCheckboxChange:f=>t.setConfirmState(m=>({...m,checkboxChecked:f})),onCancel:()=>t.resolveConfirm(!1),onConfirm:()=>t.resolveConfirm(!0)}),s.jsx(jw,{open:t.transferState.open,mode:t.transferState.mode,exportPreview:t.transferState.exportPreview,exportSelection:t.transferState.exportSelection,expandedServerIds:t.transferState.expandedServerIds,importPreviewSummary:t.importPreviewSummary,importSections:t.importSections,importWarnings:(((o=(r=t.transferState.importPreview)==null?void 0:r.plan)==null?void 0:o.warnings)||[]).map(f=>f.message),applyEnvironment:t.transferState.applyEnvironment,loading:t.transferState.loading,onClose:t.closeTransferModal,onConfirm:t.handleConfirmTransfer,onToggleServerSelection:f=>t.toggleTransferServerSelection(f.server_id,f.workflows.map(m=>m.workflow_id)),onToggleWorkflowSelection:t.toggleTransferWorkflowSelection,onToggleServerExpanded:t.toggleTransferServerExpanded,onApplyEnvironmentChange:f=>t.setTransferState(m=>({...m,applyEnvironment:f})),t:t.t}),s.jsx(Rw,{open:t.bulkImportState.open,report:t.bulkImportState.report,source:t.bulkImportState.source,onClose:t.closeBulkImportModal,t:t.t}),s.jsx(Tw,{open:t.depCheckState.open,report:t.depCheckState.report,loading:t.depCheckState.loading,installing:t.depCheckState.installing,installReport:t.depCheckState.installReport,onClose:t.closeDependencyCheckModal,onInstall:f=>{var w;const m=(w=t.currentServer)==null?void 0:w.id;m&&t.handleInstallDependencies(m,f)},t:t.t}),s.jsx(Ew,{open:t.bulkImportState.previewOpen,preview:t.bulkImportState.preview,currentServerLabel:((i=(l=t.currentServer)==null?void 0:l.name)==null?void 0:i.trim())||((a=t.currentServer)==null?void 0:a.id)||null,loading:t.bulkImportState.loading&&t.bulkImportState.loadingStage==="import",onClose:t.closeComfyUiImportPreview,onConfirm:()=>void t.handleImportAllFromComfyUI(),t:t.t}),s.jsx(Ow,{open:t.runModalState.open,workflowId:((u=t.runModalState.workflow)==null?void 0:u.id)||"",serverId:((c=t.runModalState.workflow)==null?void 0:c.server_id)||"",schema:t.runModalState.schema,values:t.runModalState.values,loading:t.runModalState.loading,submitting:t.runModalState.submitting,result:t.runModalState.result,onClose:t.closeRunWorkflowModal,onChange:t.updateRunWorkflowValue,onSubmit:t.handleRunWorkflow,onUploadImage:t.handleUploadImage,t:t.t}),s.jsx(qw,{open:t.historyState.open,workflowId:((d=t.historyState.workflow)==null?void 0:d.id)||"",loading:t.historyState.loading,detailLoading:t.historyState.detailLoading,history:t.historyState.items,selectedRunId:t.historyState.selectedRunId,detail:t.historyState.detail,onClose:t.closeWorkflowHistoryModal,onRefresh:t.refreshWorkflowHistory,onSelectRun:t.handleSelectWorkflowHistoryEntry,onDeleteRun:t.handleDeleteWorkflowHistoryEntry,onClear:t.handleClearWorkflowHistory,t:t.t}),s.jsx("input",{ref:t.versionUploadRef,type:"file",accept:".json",className:"sr-only",onChange:f=>{var m;t.handleVersionFileChange(((m=f.target.files)==null?void 0:m[0])||null),f.currentTarget.value=""}}),s.jsx("input",{id:"transfer-import-file",ref:t.transferImportRef,type:"file",accept:".json",className:"sr-only",onChange:f=>{var m;t.handleTransferImportFile(((m=f.target.files)==null?void 0:m[0])||null),f.currentTarget.value=""}}),s.jsx("input",{id:"bulk-import-files",ref:t.localImportFilesRef,type:"file",accept:".json,application/json",multiple:!0,className:"sr-only",onChange:f=>{t.handleLocalImportFilesChange(f.target.files),f.currentTarget.value=""}}),s.jsx("input",{id:"bulk-import-folder",ref:t.localImportFolderRef,type:"file",accept:".json,application/json",multiple:!0,className:"sr-only",webkitdirectory:"",directory:"",onChange:f=>{t.handleLocalImportFilesChange(f.target.files),f.currentTarget.value=""}})]})}function Lx(){return Tr()?s.jsx(Ed,{}):s.jsx(ep,{future:{v7_startTransition:!0,v7_relativeSplatPath:!0},children:s.jsx(Ed,{})})}Sw();_s.createRoot(document.getElementById("root")).render(s.jsx(De.StrictMode,{children:s.jsx(ep,{future:{v7_startTransition:!0,v7_relativeSplatPath:!0},children:s.jsx(Lx,{})})}));export{cg as h,sg as m,fa as p}; diff --git a/ui/static/assets/versionUpgrade-D9iCiBbj.js b/ui/static/assets/versionUpgrade-Y0m-Lc1G.js similarity index 83% rename from ui/static/assets/versionUpgrade-D9iCiBbj.js rename to ui/static/assets/versionUpgrade-Y0m-Lc1G.js index dc9da05..309acb8 100644 --- a/ui/static/assets/versionUpgrade-D9iCiBbj.js +++ b/ui/static/assets/versionUpgrade-Y0m-Lc1G.js @@ -1 +1 @@ -import{p as e,h as i,m as d}from"./index-D_BSx2UW.js";function c(a,s){const r=e(s),m=i(a.workflow_data,a.schema_params),o=d(m,r.schemaParams);return{workflowData:r.workflowData,schemaParams:o.schemaParams,workflowId:a.workflow_id,description:a.description||"",editingWorkflowId:a.workflow_id,hasUnsavedChanges:!0,upgradeSummary:o.summary}}export{c as buildVersionUpgradeState}; +import{p as e,h as i,m as d}from"./index-BJ5B3YBY.js";function c(a,s){const r=e(s),m=i(a.workflow_data,a.schema_params),o=d(m,r.schemaParams);return{workflowData:r.workflowData,schemaParams:o.schemaParams,workflowId:a.workflow_id,description:a.description||"",editingWorkflowId:a.workflow_id,hasUnsavedChanges:!0,upgradeSummary:o.summary}}export{c as buildVersionUpgradeState}; diff --git a/ui/static/index.html b/ui/static/index.html index 6f0cf37..1d4efb2 100644 --- a/ui/static/index.html +++ b/ui/static/index.html @@ -6,7 +6,7 @@ ComfyUI OpenClaw Skill UI - + diff --git a/ui/static/version.json b/ui/static/version.json index 9092f1f..61bbdac 100644 --- a/ui/static/version.json +++ b/ui/static/version.json @@ -1 +1 @@ -{"commit":"c60bdee4d5123a522a1b82082568deddc81445ee","date":"2026-03-30T05:26:33Z"} +{"commit":"3faa829c5f7fdb353df0b559e77727239307fd33","date":"2026-04-07T06:27:02Z"}